L'apparence apparemment inutile de l'extraction de crypto-monnaie a soulevé la question d'alternatives utiles, voir ces questions sur Bitcoin , CST , MO . Je me demande s'il existe un algorithme qui peut convertir pratiquement n'importe quel défi de calcul (dont la solution peut être vérifiée efficacement) en un autre tel défi (qui est utilisé pour la preuve de travail) de telle sorte que
- La fonction est randomisée, en utilisant une séquence aléatoire (publique) .
- Résoudre est généralement aussi dur que la résolution de .
- Si une solution est trouvée pour , puis une solution peut être efficacement calculé pour le défi d' origine .
- Connaître une solution pour n'aide pas à trouver une solution pour .
4 '(mise à jour). Comme l'a souligné Noah dans un commentaire, la condition précédente doit être renforcée pour exiger que le prétraitement ne donne également aucun avantage dans la résolution de .
Cette dernière condition est nécessaire pour que personne ne peut être mis dans une position avantageuse simplement parce qu'ils savent une solution de . En utilisant cette méthode, les gens pourraient soumettre des problèmes de calcul qu'ils souhaitent résoudre et une autorité centrale pourrait en choisir quelques-uns dignes d'être résolus (comme trouver des étrangers ou casser des mots de passe). Notez que cela ne semble pas être un problème si le problème prend même une semaine à résoudre (je suppose que ces extraterrestres ne peuvent pas être aussi bons à se cacher;), car cela pourrait entraîner une plus grande récompense pour une solution. Quoi qu'il en soit, ces sujets ne sont pas liés à la solution de mon problème théorique, mais bien sûr, je suis heureux d'en discuter dans les commentaires / sur le forum.
Une solution possible serait la suivante: mappe en , c'est-à-dire pour résoudre et un autre défi difficile à calculer. Un problème avec ceci est que connaître une solution à rend la résolution de un peu plus facile (combien plus facile dépend de la difficulté de ). Un autre problème est que est devenu plus difficile que .
Réponses:
( Remarque : Andreas Björklund a suggéré une solution dans les commentaires qui, je pense, est meilleure que celle décrite ci-dessous. Voir http://eprint.iacr.org/2017/203 , par Ball, Rosen, Sabin et Vasudevan. En bref, ils fournissent des preuves de travail basées sur des problèmes tels que les vecteurs orthogonaux dont la dureté est bien comprise et auxquels de nombreux problèmes (par exemple, k-SAT) peuvent être réduits de manière relativement efficace. Leur instance PoW est aussi difficile que un vecteur orthogonal dans le pire des cas, même si l'instance d'entrée est facile, de sorte qu'ils évitent un inconvénient majeur de la solution décrite ci-dessous.Ψ(C) C
La solution décrite ci-dessous pourrait bénéficier de sa simplicité --- elle peut être décrite à un non-expert --- mais elle me semble beaucoup moins intéressante théoriquement.)
Une solution est possible si l'on fait l'hypothèse forte que "l'algorithme le plus rapide pour est fondamentalement aléatoire" (et si nous modélisons une fonction de hachage cryptographique comme un oracle aléatoire). Une façon de formaliser cela est de dire queC
Notez que l'hypothèse que implique que la recherche par force brute de est essentiellement l'algorithme optimal pour . C'est donc une hypothèse assez forte. D'un autre côté, si ne satisfait pas ces propriétés, alors il m'est difficile d'imaginer satisfaire à la fois vos conditions (2) et (4).k≈log2T {0,1}k C C
Puis, étant donné une fonction de hachage , que nous modélisons comme un oracle aléatoire, nous définissons comme suit, où pour certains est l'entrée aléatoire de . Le but est de sortir telle sorte que soit une solution à . En d'autres termes, devrait hacher à "bonnes pièces aléatoires" pour l'algorithme ci-dessus.H:{0,1}∗→{0,1}k ΨH(C;r) r∈{0,1}ℓ ℓ≫k ΨH x∈{0,1}∗ f(H(r,x)) C (r,x)
Voyons que cela satisfait toutes vos conditions.
la source
La technique simple suivante que j'appelle la technique de loterie en solution (SLT) peut être utilisée en conjonction avec d'autres techniques (comme avoir plusieurs problèmes de prisonnier de guerre, la technique mentionnée dans la réponse de Noah Stephens-Davidowitz, etc.) pour aider à transformer les défis informatiques en preuves viables des problèmes de travail. Le SLT aide à atténuer les problèmes liés aux problèmes d'extraction de crypto-monnaie autres que les conditions 1-4.
Supposons que soit un défi de calcul de la forme «trouver un hachage approprié avec une chaîne telle que ».C k x (k,x)∈D
Problème Configuration : Supposons que est un ensemble, est une fonction de hachage cryptographique et est une constante. Supposons en outre que est une information facile à obtenir après avoir déterminé que mais qui ne peut pas être obtenue autrement.Ψ(C) D H C Data(k,x) (k,x)∈D
Problème Objectif : Trouver une paire telle que est un hachage approprié et où , et où .Ψ(C) (k,x) k (k,x)∈D H(k||x||Data(k,x))<C
Voyons maintenant comment le problème satisfait aux exigences 1-4.Ψ(C)
2-3. deviendra généralement plus difficile que et c'est une bonne chose. La difficulté d'un problème de preuve de travail doit être finement ajustable, mais le problème d'origine peut ou peut ne pas avoir un niveau de difficulté finement ajustable (rappelez-vous que la difficulté à extraire Bitcoin est ajustée toutes les deux semaines) . La difficulté du problème est égale à la difficulté de trouver un certain multiplié par . Par conséquent, comme la constante est finement réglable, la difficulté de est également finement réglable.Ψ(C) C C Ψ(C) (k,x)∈D 2nC C Ψ(C)
Même si le problème est plus difficile que le problème d'origine , presque tout le travail pour résoudre le problème sera consacré à la simple recherche une paire avec plutôt que de calculer des hachages (on ne peut pas calculer si ou pas avant un a calculé et on ne peut pas calculer moins de vérifier que ).Ψ(C) C Ψ(C) (k,x) (k,x)∈D H(k||x||Data(k,x))<C Data(k,x) Data(k,x) Data(k,x)∈D
Bien sûr, le fait que soit plus difficile que présente de nouvelles préoccupations. Pour un problème utile, il est très probable que l'on veuille stocker les paires où dans une base de données. Cependant, pour recevoir la récompense en bloc, le mineur ne doit révéler qu'une paire où et au lieu de toutes les paires indépendamment du fait que ou non. Une solution possible à ce problème est que les mineurs révèlent simplement toutes les paires oùΨ(C) C (k,x) (k,x)∈D (k,x) (k,x)∈D H(k||x||Data(k,x))<C (k,x)∈D H(k||x||Data(k,x))<C (k,x) (k,x)∈D par courtoisie. Les mineurs auront également la possibilité de rejeter les chaînes si les mineurs ont pas posté leur juste part de paires . Peut-être, on devrait compter le nombre de paires pour le calcul de qui a également la chaîne valide la plus longue. Si la plupart des mineurs publient leurs solutions, alors le processus de résolution de produira autant de solutions que le processus de résolution de .(k,x)∈D (k,x)∈D Ψ(C) C
Dans le scénario où les mineurs affichent toutes les paires , satisferaient l'esprit des conditions 2-3.(k,x)∈D Ψ(C)
Le SLT offre d'autres avantages que les conditions 1 à 4 qui sont souhaitables ou nécessaires pour un problème de preuve de travail.
Améliorer l'équilibre sécurité / efficacité: le SLT aidera dans le cas où peut être trop facile à résoudre ou trop difficile à vérifier. En général, est beaucoup plus difficile à résoudre que , mais est à peu près aussi facile à vérifier que .C Ψ(C) C Ψ(C) C
Suppression d'un problème cassé / non sécurisé: le SLT pourrait être utilisé pour éliminer par algorithme les mauvais problèmes de POW dans une crypto-monnaie avec un problème de POW de sauvegarde et plusieurs problèmes de POW. Supposons qu'une entité trouve un algorithme très rapide pour résoudre le problème . Ensuite, un tel problème n'est plus un problème de preuve de travail approprié et devrait être supprimé de la crypto-monnaie. La crypto-monnaie doit donc avoir un algorithme qui supprime de la crypto-monnaie chaque fois que quelqu'un a publié un algorithme qui résout le problème trop rapidement mais qui ne supprime jamais le problème sinon. Voici un aperçu d'un tel algorithme de suppression de problème utilisé pour supprimer un problème que nous appellerons ProblèmeC C C C A .
une. Alice paie des frais importants (les frais couvriront les coûts que les mineurs encourent pour vérifier l'algorithme) puis publient l'algorithme que nous appellerons l'algorithme K qui brise le problème dans la blockchain. Si l'algorithme K repose sur une grande quantité de données précalculées , Alice publie la racine Merkle de ce données précalculées .A PC PC
b. Des instances aléatoires du problème A sont produites par la Blockchain. Alice publie ensuite les parties des données précalculées qui sont nécessaires pour que l'algorithme K fonctionne correctement avec leur branche Merkle afin de prouver que les données proviennent réellement du . Si l'algorithme d'Alice s'est alimenté rapidement avec le données précalculé , le problème est supprimé et Alice reçoit une récompense pour avoir publié l'algorithme qui supprime le problème de la blockchain.PC PC
Cette procédure de suppression des problèmes coûte cher en calcul aux mineurs et aux valideurs. Cependant, le SLT supprime la plupart des difficultés de calcul de cette technique afin qu'elle puisse être utilisée si nécessaire dans une crypto-monnaie (les instances où cette technique est utilisée seront probablement assez rares).
Les pools miniers sont plus réalisables: dans les crypto-monnaies, il est souvent très difficile de gagner la récompense du bloc. Étant donné que les récompenses en bloc sont très difficiles à gagner, les mineurs exploitent souvent des choses appelées pools de minage dans lesquels les mineurs combinent leurs ressources pour résoudre un problème et dans lesquels ils partagent la récompense en bloc proportionnellement au nombre de «quasi-accidents» qu'ils ont trouvés. . Un problème possible pour est qu'il peut être difficile de produire une notion qualitative de ce qui constitue un «quasi-accident» pour le problème et l'algorithme pour trouver un quasi-accident peut être différent de la algorithme pour résoudre . Étant donné que les mineurs de la piscine rechercheront des quasi-accidents, ils peuvent ne pas être très efficaces pour résoudreC C C C (et donc, peu de personnes rejoindront les pools de minage). Cependant, pour , il existe une notion claire d'un quasi-accident, à savoir, un quasi-accident est une paire où mais où , et l'algorithme de recherche des quasi-accidents pour sera le même que l'algorithme de recherche de solutions à .Ψ(C) (k,x) (k,x)∈D H(k||x||Data(k,x))≥C Ψ(C) Ψ(C)
Non-progrès: un problème de preuve de travail est dit sans progrès si le temps qu'il faut à une entité ou un groupe d'entités pour trouver le bloc suivant sur la blockchain suit la distribution exponentielle où la constante est directement proportionnelle à la quantité de puissance de calcul que l' entité utilise pour résoudre un problème . L'absence de progrès est nécessaire pour les problèmes d'extraction de crypto-monnaie afin que les mineurs reçoivent une récompense de bloc proportionnelle à leur puissance d'extraction pour réaliser la décentralisation. Le SLT aide certainement les problèmes miniers à atteindre la liberté de progrès.P e−λx λ P
la source