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 ».Ckx(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)DHCData(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)∈DH(k||x||Data(k,x))<C
Voyons maintenant comment le problème satisfait aux exigences 1-4.Ψ(C)
- Nous devons supposer que est déjà randomisé pour que le SLT satisfasse cette propriété.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)CCΨ(C)(k,x)∈D2nCCΨ(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)∈DH(k||x||Data(k,x))<CData(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)∈DH(k||x||Data(k,x))<C(k,x)∈DH(k||x||Data(k,x))<C(k,x)(k,x)∈Dpar 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)
- Ψ(C) peut ou non satisfaire la condition fonction du problème spécifique.4
Other Advantages of this technique:
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èmeCCCCA .
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 .APCPC
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.PCPC
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ésoudreCCCC (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)∈DH(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.Pe−λxλP