Die scheinbare Sinnlosigkeit des Cryptocurrency Mining warf die Frage nach nützlichen Alternativen auf, siehe diese Fragen zu Bitcoin , CST , MO . Ich frage mich, ob es einen Algorithmus gibt, der praktisch jede rechnerische Herausforderung (deren Lösung effizient verifiziert werden kann) in eine andere solche Herausforderung (die zum Nachweis der Arbeit verwendet wird) umwandeln kann, so dass Ψ ( C )
- Die Funktion wird mit einer (öffentlichen) Zufallsfolge randomisiert .r
- Lösen ist typischerweise so hart wie die Lösung .C
- Wenn eine Lösung für , kann eine Lösung für die ursprüngliche Herausforderung effizient berechnet werden .
- Die Kenntnis einer Lösung für hilft nicht, eine Lösung für .
4 '(Update). Wie Noah in einem Kommentar hervorhob, sollte die vorherige Bedingung dahingehend verschärft werden, dass die Vorverarbeitung von auch bei der Lösung von keinen Vorteil bringen sollte .
Diese letzte Bedingung ist erforderlich, damit niemand in eine vorteilhafte Position gebracht werden kann, nur weil er eine Lösung von kennt . Mit dieser Methode können Benutzer zu lösende Rechenprobleme einreichen, und eine zentrale Behörde kann solche auswählen, die es wert sind, gelöst zu werden (z. B. Ausländer zu finden oder Passwörter zu knacken). Beachten Sie, dass es kein Problem zu sein scheint, wenn das Problem nur eine Woche dauert (ich denke, diese Aliens können sich nicht so gut verstecken;), da dies zu einer höheren Belohnung für eine Lösung führen könnte. Wie auch immer, diese Themen haben nichts mit der Lösung meines theoretischen Problems zu tun, aber ich diskutiere sie natürlich gerne in den Kommentaren / im Forum.
Eine mögliche Lösung wäre der folgende: abbildet C in ( C , H A S H r ) , das, zu lösen , ist C , und eine andere, rechnerisch schwer Herausforderung. Ein Problem dabei ist , dass eine Lösung zu wissen , C macht die Lösung Ψ ( C ) etwas leichter (wie viel einfacher ist abhängig von der Schwierigkeit von H A S H r ). Ein weiteres Problem ist , dass Ψ ( C ) wurde schwieriger als C .
Antworten:
( Anmerkung : Andreas Björklund schlug in den Kommentaren eine Lösung vor, die meines Erachtens besser ist als die unten beschriebene. Siehe http://eprint.iacr.org/2017/203 von Ball, Rosen, Sabin und Vasudevan. Kurz gesagt: sie geben Beweise für Arbeit basiert auf Probleme wie Orthogonal - Vektoren , deren Härte gut verstanden und auf die viele Probleme (zB k-SAT) können relativ effizient reduziert werden. Die PoW Beispiel ist so hart wie ein Worst-case - Orthogonal Vektoren, auch wenn die Eingabeinstanz C einfach ist, so dass sie einen wesentlichen Nachteil der nachfolgend beschriebenen Lösung vermeiden.Ψ(C) C
Die nachfolgend beschriebene Lösung könnte von ihrer Einfachheit profitieren - sie kann einem Nichtfachmann beschrieben werden -, aber theoretisch scheint sie mir viel weniger interessant zu sein.)
Eine Lösung ist möglich, wenn man stark davon ausgeht, dass "der schnellste Algorithmus für grundsätzlich zufällig ist" (und wenn wir eine kryptographische Hash-Funktion als zufälliges Orakel modellieren). Eine Möglichkeit, dies zu formalisieren, besteht darin, dies zu sagenC
Beachten Sie, dass die Annahme, dassk≈log2T bedeutet, dass die Brute-Force-Suche von im Wesentlichen der optimale Algorithmus für C ist . Das ist also eine ziemlich starke Annahme. Wenn C diese Eigenschaften jedoch nicht erfüllt, kann ich mir nur schwer vorstellen, beide Bedingungen (2) und (4) zu erfüllen.{0,1}k C C
Dann definieren wir mit einer gegebenen Hash-Funktion , die wir als zufälliges Orakel modellieren, Ψ H ( C ; r ) wie folgt, wobei r ∈ { 0 , 1 } l für einig l » kH:{0,1}∗→{0,1}k ΨH(C;r) r∈{0,1}ℓ ℓ≫k ist die zufällige Eingabe zu . Das Ziel ist es, x ∈ { 0 , 1 } ∗ so auszugeben , dassΨH x∈{0,1}∗ ist eine Lösung für C . Mit anderen Worten, ( r , x ) sollte für den obigen Algorithmus zu "guten Zufallsmünzen" gehasht werden.f(H(r,x)) C (r,x)
Lassen Sie uns sehen, dass dies alle Ihre Bedingungen erfüllt.
quelle
Die folgende einfache Technik, die ich als Lösungslotterietechnik (SLT) bezeichne, kann in Verbindung mit anderen Techniken (z. B. mit mehreren POW-Problemen, der in der Antwort von Noah Stephens-Davidowitz genannten Technik usw.) verwendet werden, um die Umwandlung von rechnerischen Herausforderungen in brauchbare Beweise zu unterstützen von Arbeitsproblemen. Mit dem SLT können Probleme mit dem Cryptocurrency-Mining behoben werden, die nicht die Bedingungen 1 bis 4 betreffen.
Angenommen, ist eine Rechenaufgabe der Form „finde einen geeigneten Hash k zusammen mit einer Zeichenkette x, so dass ( kC k x ."(k,x)∈D
Problem Setup: Angenommen, D ist eine Menge, H ist eine kryptografische Hash-Funktion und C ist eine Konstante. Nehmen wir weiterhin an, dass Daten ( k , x ) eine Information sind, die leicht zu erhalten ist, nachdem man bestimmt hat, dass ( k , x ) ∈ D ist , die aber auf andere Weise nicht erhalten werden kann.Ψ(C) D H C Data(k,x) (k,x)∈D
Aufgabe Ziel: Finde ein Paar ( k , x ), so dass k ein geeigneter Hash ist und wo ( k , x ) ∈ D und wo H ( k | | x | | Daten ( k , x) istΨ(C) (k,x) k (k,x)∈D .H(k||x||Data(k,x))<C
Lassen Sie uns nun untersuchen, wie das Problem die Anforderungen 1-4 erfüllt.Ψ(C)
2-3. wird normalerweise schwieriger als C und das ist eine gute Sache. Die Schwierigkeit eines Proof-of-Work-Problems muss genau einstellbar sein, aber das ursprüngliche Problem C kann einen genau einstellbaren Schwierigkeitsgrad haben oder auch nicht (denken Sie daran, dass die Schwierigkeit beim Mining von Bitcoin alle zwei Wochen angepasst wird). Die Schwierigkeit des Problems Ψ ( C ) ist gleich der Schwierigkeit, ein geeignetes ( k , x ) ∈ D multipliziert mit 2 n zu findenΨ(C) C C Ψ(C) (k,x)∈D . Da die KonstanteCfein einstellbar ist, ist daher auch die Schwierigkeit vonΨ(C)fein einstellbar.2nC C Ψ(C)
Auch wenn das Problem schwieriger ist als das ursprüngliche Problem C , wird fast die gesamte Arbeit zur Lösung des Problems Ψ ( C ) darauf verwendet, einfach ein Paar ( k , x ) mit ( k , x ) ∈ zu finden D anstatt Hashes zu berechnen (man kann nicht berechnen, ob H ( k | | x | | Daten ( k , x ) ) < C ist)Ψ(C) C Ψ(C) (k,x) (k,x)∈D H(k||x||Data(k,x))<C oder nicht), bis man Daten berechnet hat ( , und man kann nicht berechnen Daten ( k , x ) , es sei dennman überprüftdass Daten ( k , x ) ∈ D ).Data(k,x) Data(k,x) Data(k,x)∈D
Die Tatsache, dass schwieriger ist als C, wirft natürlich einige neue Bedenken auf. Für ein nützliches Problem ist es sehr wahrscheinlich, dass man die Paare ( k , x ), bei denen ( k , x ) ∈ D ist, in einer Datenbank speichern möchte . Um die Blockbelohnung zu erhalten, muss der Bergmann jedoch nur ein Paar ( k , x ) aufdecken , bei dem ( k , x ) ∈ D und H ( k | |Ψ(C) C (k,x) (k,x)∈D (k,x) (k,x)∈D H(k||x||Data(k,x))<C instead of all the pairs (k,x)∈D regardless of whether H(k||x||Data(k,x))<C or not. One possible solution to this problem is for the miners to simply reveal all pairs (k,x) where (k,x)∈D out of courtesy. Miners will also have the ability to reject chains if the miners have not posted their fair share of pairs (k,x)∈D . Perhaps, one should count the number of pairs (k,x)∈D for the calculation as to who has the longest valid chain as well. If most of the miners post their solutions, then the process of solving Ψ(C) will produce just as many solutions as the process of solving C .
In the scenario where the miners post all of the pairs(k,x)∈D , Ψ(C) would satisfy the spirit of conditions 2-3.
The SLT offers other advantages than conditions 1-4 which are desirable or necessary for a proof-of-work problem.
Verbesserung des Gleichgewichts zwischen Sicherheit und Effizienz: Das SLT hilft in dem Fall, dass möglicherweise zu leicht zu lösen oder zu schwer zu überprüfen ist. Im Allgemeinen ist Ψ ( C ) viel schwieriger zu lösen als C , aber Ψ ( C ) ist ungefähr so einfach zu verifizieren wie CC Ψ(C) C Ψ(C) C .
Removal of a broken/insecure problem: The SLT could be used to algorithmically remove bad POW problems in a cryptocurrency with a backup POW-problem and multiple POW problems. Suppose that an entity finds a very quick algorithm for solving problemC . Then such a problem is no longer a suitable proof-of-work problem and it should be removed from the cryptocurrency. The cryptocurrency must therefore have an algorithm that removes C from the cryptocurrency whenever someone has posted an algorithm that solves problem C too quickly but which never removes problem C otherwise. Here is an outline of such a problem removal algorithm being used to remove a problem which we shall call Problem A .
a. Alice pays a large fee (the fee will cover the costs that the miners incur for verifying the algorithm) and then posts the algorithm which we shall call Algorithm K that breaks ProblemA to the blockchain. If Algorithm K relies upon a large quantity of pre-computed data PC , then Alice posts the Merkle root of this pre-computed data PC .
Dieses Verfahren zum Entfernen von Problemen ist für die Bergleute und Prüfer rechenintensiv. Das SLT beseitigt jedoch den größten Teil der Rechenschwierigkeiten dieser Technik, sodass es bei Bedarf in einer Kryptowährung verwendet werden kann (Fälle, in denen diese Technik verwendet wird, sind wahrscheinlich recht selten).
Mining pools are more feasible: In cryptocurrencies, it is often very difficult to win the block reward. Since the block rewards are very difficult to win, miners often mine in things called mining pools in which the miners combine their resources in solving a problem and in which they share the block reward in proportion to the amount of “near misses” they have found. A possible issue forC is that it may be difficult to produce a qualitative notion of what constitutes as a “near miss” for the problem C and the algorithm for finding a near miss may be different from the algorithm for solving C . Since the pool miners will be looking for near misses, they may not be very efficient at solving C (and hence, few people will join mining pools). However, for Ψ(C) , there is a clear cut notion of a near miss, namely, a near miss is a pair (k,x) where (k,x)∈D but where H(k||x||Data(k,x))≥C , and the algorithm for finding near misses for Ψ(C) will be the same as the algorithm for finding solutions to Ψ(C) .
Progress freeness: A proof-of-work problemP is said to be progress free if the amount of time it takes for an entity or group of entities to find next block on the blockchain follows the exponential distribution e−λx where the constant λ is directly proportional to the amount of computational power that entity is using to solve Problem P . Progress freeness is required for cryptocurrency mining problems in order for the miners to receive a block reward in proportion to their mining power to achieve decentralization. The SLT certainly helps mining problems achieve progress freeness.
quelle