Zufallszahlen und dezentrale Netzwerke: Implementierungen

EinfĂŒhrung


function getAbsolutelyRandomNumer() { return 4; // returns absolutely random number! } 

Wie im Fall des Konzepts einer absolut sicheren Kryptographie-VerschlĂŒsselung versuchen die echten öffentlich verifizierbaren Random Beacon-Protokolle (im Folgenden: PVRB) nur, dem idealen Schema so nahe wie möglich zu kommen. In realen Netzwerken in seiner reinen Form ist es nicht anwendbar: Es ist notwendig, sich strikt auf ein Bit zu einigen, es sollte viele Runden geben und alle Nachrichten sollten perfekt schnell sein und immer zugestellt werden. In realen Netzwerken ist dies natĂŒrlich nicht der Fall. Daher treten beim Entwerfen von PVRB fĂŒr bestimmte Aufgaben in modernen Blockchains neben der UnfĂ€higkeit, die resultierende ZufĂ€lligkeit und kryptografische StĂ€rke zu steuern, viele rein architektonische und technische Probleme auf.


Die Blockchain selbst ist fĂŒr PVRB im Wesentlichen ein Kommunikationsmedium, in dem Nachrichten = Transaktionen sind. Auf diese Weise können Sie Netzwerkprobleme, NachrichtenĂŒbermittlung und Middleware-Probleme teilweise ignorieren. All diese Risiken werden von einem dezentralen Netzwerk getragen. Der Hauptwert fĂŒr PVRB ist die UnfĂ€higkeit, eine bereits gesendete Transaktion zurĂŒckzuziehen oder zu ruinieren. Dadurch können die Teilnehmer die Teilnahme am Protokoll nicht verweigern. es sei denn, sie hatten einen erfolgreichen Konsensangriff. Dieses Sicherheitsniveau ist akzeptabel, daher sollte PVRB genau wie die Blockchain-Hauptkette gegen Absprachen zwischen den Teilnehmern resistent sein. Dies deutet auch darauf hin, dass PVRB Teil des Konsenses sein sollte. Wenn sich das Netzwerk auf die Hauptblockkette geeinigt hat, sollte es sich gleichzeitig auf den einzigen ehrlich resultierenden Zufall einigen. Oder PVRB ist nur ein eigenstĂ€ndiges Protokoll, das von einem intelligenten Vertrag implementiert wird und in Bezug auf Blockchain und Blöcke asynchron arbeitet. Beide Methoden haben ihre Vor- und Nachteile, und die Wahl zwischen ihnen ist Ă€ußerst trivial.


Zwei Möglichkeiten zur Implementierung von PVRB


Lassen Sie uns zwei Optionen fĂŒr die Implementierung von PVRB genauer beschreiben: die eigenstĂ€ndige Version, die mit einem von der Blockchain unabhĂ€ngigen intelligenten Vertrag arbeitet, und die konsensintegrierte Version, die in das Protokoll integriert ist, nach dem sich das Netzwerk auf eine Kette von Blöcken und eingeschlossenen Transaktionen einigt. In allen FĂ€llen werde ich die beliebten Blockchain-Engines berĂŒcksichtigen: Ethereum, EOS und alle Ă€hnlichen, die bei der Platzierung und Verarbeitung intelligenter VertrĂ€ge Ă€hnlich sind.


Standalone-Vertrag


In dieser AusfĂŒhrungsform ist PVRB ein intelligenter Vertrag, der Transaktionen mit zufĂ€lligen Produzenten (im Folgenden: RP) akzeptiert, verarbeitet, die Ergebnisse kombiniert und als Ergebnis einen Wert erreicht, den jeder Benutzer aus diesem Vertrag erhalten kann. Dieser Wert darf nicht direkt im Vertrag gespeichert werden, sondern wird nur durch Daten dargestellt, aus denen ein und nur ein Wert der resultierenden ZufĂ€lligkeit deterministisch erhalten werden kann. In diesem Schema sind RPs Blockchain-Benutzer, und jeder kann am Generierungsprozess teilnehmen.


Die Option fĂŒr einen eigenstĂ€ndigen Vertrag ist gut:


  • PortabilitĂ€t (VertrĂ€ge können von Blockchain zu Blockchain gezogen werden)
  • Einfachheit bei Implementierung und Test (VertrĂ€ge sind bequem zu schreiben und zu testen)
  • Bequemlichkeit bei der Implementierung von Wirtschaftssystemen (es ist einfach, ein eigenes Token zu erstellen, dessen Logik den Zielen von PVRB dient)
  • die FĂ€higkeit, in vorhandenen Blockchains zu laufen

Es hat auch Nachteile:


  • Starke EinschrĂ€nkungen der Ressourcen bei Berechnungen, Transaktionsvolumen und Speicher (mit anderen Worten: CPU / Mem / Io)
  • BetriebsbeschrĂ€nkungen innerhalb des Vertrags (nicht alle Anweisungen sind verfĂŒgbar, es ist schwierig, externe Bibliotheken zu verbinden)
  • Die UnfĂ€higkeit, Nachrichten schneller als Transaktionen zu organisieren, ist in der Blockchain enthalten

Diese Option eignet sich fĂŒr die Implementierung von PVRB, das in einem vorhandenen Netzwerk ausgefĂŒhrt werden muss, das keine komplexe Kryptografie enthĂ€lt und keine große Anzahl von Interaktionen erfordert.


Konsens integriert


In dieser AusfĂŒhrungsform ist PVRB im Blockchain-Knotencode implementiert, ist eingebaut oder arbeitet parallel zum Austausch von Nachrichten zwischen Blockchain-Knoten. Die Protokollergebnisse werden direkt in die erzeugten Blöcke geschrieben, und die Protokollnachrichten werden ĂŒber das p2p-Netzwerk zwischen den Knoten gesendet. Da das Protokoll dazu fĂŒhrt, dass die Zahlen in Blöcken geschrieben werden, muss das Netzwerk einen Konsens darĂŒber erzielen. Dies bedeutet, dass PVRB-Nachrichten sowie Transaktionen von Knoten validiert und in Blöcken enthalten sein mĂŒssen, damit jeder Netzwerkteilnehmer die Einhaltung des PVRB-Protokolls ĂŒberprĂŒfen kann. Dies fĂŒhrt uns automatisch zu der offensichtlichen Entscheidung: Wenn das Netzwerk einen Konsens ĂŒber den Block und die darin enthaltenen Transaktionen aushandelt, sollte PVRB Teil des Konsenses sein und kein eigenstĂ€ndiges Protokoll. Andernfalls ist eine Situation möglich, in der der Block unter dem Gesichtspunkt des Konsenses gĂŒltig ist, das PVRB-Protokoll jedoch nicht eingehalten wird und der Block aus Sicht des PVRB nicht akzeptiert werden kann. Wenn also die Option „Konsens integriert“ gewĂ€hlt wird, wird PVRB ein wichtiger Bestandteil des Konsenses.


Wenn Sie die Implementierung von PVRB auf der Ebene des Konsenses im Netzwerk beschreiben, können Sie in keinem Fall die Fragen der EndgĂŒltigkeit umgehen. FinalitĂ€t ist ein Mechanismus, der im deterministischen Konsens verwendet wird, ein Verriegelungsblock (und eine dazu fĂŒhrende Kette), der endgĂŒltig ist und niemals weggeworfen wird, selbst wenn eine parallele Gabel erscheint. Zum Beispiel gibt es in Bitcoin keinen solchen Mechanismus. Wenn Sie eine Kette mit grĂ¶ĂŸerer KomplexitĂ€t veröffentlichen, wird diese unabhĂ€ngig von der LĂ€nge der Kette durch eine weniger komplexe ersetzt. In EOS sind die letzten beispielsweise die sogenannten Last Irreversible Blocks, die durchschnittlich alle 432 Blöcke erscheinen (12 * 21 + 12 * 15, Pre-Vote + Pre-Commit). Dieser Prozess wartet im Wesentlichen auf 2/3 der Signaturen der Blockproduzenten (im Folgenden: BP). Wenn Gabeln angezeigt werden, die Ă€lter als die letzte LIB sind, werden sie einfach verworfen. Mit diesem Mechanismus können Sie sicherstellen, dass die Transaktion in der Blockchain enthalten ist und niemals abgepumpt wird, unabhĂ€ngig davon, ĂŒber welche Ressourcen der Angreifer verfĂŒgt. Außerdem sind die letzten Blöcke Blöcke, die von 2/3 BP in Hyperledger, Tendermint und anderen pBFT-basierten Konsensen signiert sind. Ein Protokoll zur GewĂ€hrleistung der EndgĂŒltigkeit ist auch sinnvoll, um ein Add-On zum Konsens zu erstellen, da es asynchron mit der Erstellung und Veröffentlichung von Blöcken arbeiten kann. Hier ist ein guter Artikel zum Abschluss von Ethereum.


Die EndgĂŒltigkeit ist Ă€ußerst wichtig fĂŒr Benutzer, die ohne sie möglicherweise Opfer des Angriffs mit doppelten Ausgaben werden, wenn BP die Blöcke „hĂ€lt“ und veröffentlicht, nachdem das Netzwerk eine gute Transaktion „gesehen“ hat. Wenn es keine EndgĂŒltigkeit gibt, ersetzt die veröffentlichte Abzweigung den Block durch die "gute" Transaktion durch eine andere von der "schlechten" Abzweigung, bei der das gleiche Geld an die Adresse des Angreifers ĂŒberwiesen wird. Im Fall von PVRB werden die Anforderungen an die EndgĂŒltigkeit immer noch verschĂ€rft, da der Bau von Gabeln fĂŒr PVRB bedeutet, dass ein Angreifer mehrere Optionen fĂŒr ein zufĂ€lliges Haus vorbereiten kann, um die fĂŒr ihn rentabelsten zu veröffentlichen, und die Zeit eines möglichen Angriffs zu begrenzen, ist eine gute Lösung.


Daher ist die beste Option, PVRB und FinalitĂ€t in einem Protokoll zu kombinieren - dann ist der finalisierte Block = zufĂ€llig finalisiert, und genau das mussten Sie bekommen. Jetzt erhalten die Spieler in N Sekunden eine garantierte ZufĂ€lligkeit und können sicher sein, dass es unmöglich ist, einen Rollback oder eine Wiederholung durchzufĂŒhren.


Die konsensintegrierte Option ist gut:


  • die Möglichkeit einer asynchronen Implementierung in Bezug auf die Herstellung von Blöcken - Blöcke werden wie gewohnt erzeugt, aber parallel dazu kann das PVRB-Protokoll funktionieren, das nicht jeden Block zufĂ€llig macht
  • die FĂ€higkeit, auch schwere Kryptografie ohne die EinschrĂ€nkungen fĂŒr intelligente VertrĂ€ge zu implementieren
  • Die Möglichkeit, Nachrichten schneller zu organisieren, als Transaktionen in der Blockchain enthalten sind. Beispielsweise kann ein Teil des Protokolls zwischen Knoten arbeiten, ohne Nachrichten ĂŒber das Netzwerk zu verbreiten

Es hat auch Nachteile:


  • Schwierigkeiten beim Testen und Entwickeln - Sie mĂŒssen Netzwerkfehler, fehlende Knoten und harte Netzwerkgabeln emulieren
  • Implementierungsfehler erfordern ein Hard-Fork-Netzwerk

Beide Methoden der PVRB-Implementierung haben das Recht auf Leben, aber die Implementierung intelligenter VertrĂ€ge in modernen Blockchains ist bei den Rechenressourcen immer noch recht begrenzt, und ein Übergang zu seriöser Kryptografie ist oft einfach unmöglich. Wir werden ernsthafte Kryptographie brauchen, wie spĂ€ter gezeigt wird. Obwohl dieses Problem eindeutig nur vorĂŒbergehend ist, ist eine ernsthafte Kryptografie in VertrĂ€gen erforderlich, um viele Probleme zu lösen, und es tritt allmĂ€hlich auf (z. B. SystemvertrĂ€ge fĂŒr zkSNARKs in Ethereum).


Die Blockchain, die einen transparenten und zuverlĂ€ssigen Protokollnachrichtenkanal bereitstellt, tut dies aus einem bestimmten Grund. Jedes dezentrale Protokoll muss die Möglichkeit eines Sybil-Angriffs berĂŒcksichtigen. Jede Aktion kann von den koordinierten KrĂ€ften vieler Konten ausgefĂŒhrt werden. Daher ist es beim Entwerfen erforderlich, die FĂ€higkeiten von Angreifern zu berĂŒcksichtigen, um eine beliebige Anzahl von Protokollteilnehmern zu erstellen, die in Absprache handeln.


PVRB- und Blockvariablen.


Ich habe nicht gelogen, als ich sagte, dass bisher niemand einen guten PVRB in Blockchains implementiert hat, der von vielen GlĂŒcksspielanwendungen verifiziert wurde. Woher also so viele GlĂŒcksspielanwendungen in Ethereum und EOS? Es ĂŒberrascht mich genauso wie Sie. Woher haben Sie in einer vollstĂ€ndig deterministischen Umgebung so viele „bestĂ€ndige“ Zufallszahlen?


Der bevorzugte Weg, um in der Blockchain zufĂ€llig zu werden, besteht darin, eine Art „unvorhersehbarer“ Informationen aus dem Block zu entnehmen und darauf basierend zufĂ€llig zu arbeiten - einfach einen oder mehrere Werte zwischenzuspeichern. Ein guter Artikel ĂŒber die Probleme solcher Systeme hier . Sie können einige der „unvorhersehbaren“ Werte im Block verwenden, z. B. den Hash des Blocks, die Anzahl der Transaktionen, die KomplexitĂ€t des Netzwerks und andere im Voraus unbekannte Werte. Dann zwischenspeichern Sie sie, eine oder mehrere, und theoretisch sollten Sie einen echten Zufall erhalten. Sie können wihitepaper sogar hinzufĂŒgen, dass Ihr Schema "postquantensicher" ist (da es quantensichere Hash-Funktionen gibt :)).


Aber selbst postquantensichere Hashes reichen leider nicht aus. Das Geheimnis liegt in den Anforderungen an PVRB, ich erinnere mich an sie aus einem frĂŒheren Artikel:


  1. Das Ergebnis sollte eine nachweislich gleichmĂ€ĂŸige Verteilung aufweisen, d. H. Basierend auf einer nachweislich starken Kryptographie.
  2. Es ist nicht möglich, eines der Bits des Ergebnisses zu steuern. Infolgedessen kann das Ergebnis nicht im Voraus vorhergesagt werden.
  3. Sie können das Generierungsprotokoll nicht sabotieren, indem Sie nicht am Protokoll teilnehmen oder das Netzwerk mit Angriffsnachrichten ĂŒberlasten
  4. Alle oben genannten Punkte sollten gegen Absprachen der zulÀssigen Anzahl unehrlicher Teilnehmer am Protokoll (z. B. 1/3 der Teilnehmer) resistent sein.

In diesem Fall ist nur die Anforderung 1 erfĂŒllt und 2. ist nicht erfĂŒllt. Wenn unvorhersehbare Werte aus dem Block entfernt werden, erhalten wir eine gleichmĂ€ĂŸige Verteilung und eine gute ZufĂ€lligkeit. Aber BP hat zumindest die Möglichkeit, "einen Block zu veröffentlichen oder nicht". Somit kann BP mindestens aus ZWEI Zufallsoptionen auswĂ€hlen: "unsere" und eine, die sich herausstellt, wenn jemand anderes den Block macht. BP kann im Voraus „ausspionieren“, was passiert, wenn ein Block veröffentlicht wird, und entscheidet sich einfach dafĂŒr oder nicht. Wenn er beispielsweise beim Roulette „ungerade-gerade“ oder „rot / schwarz“ spielt, kann er einen Block nur veröffentlichen, wenn er einen Gewinn sieht. Es macht auch eine unoperative Strategie, um zum Beispiel einen Hash eines Blocks aus der Zukunft zu verwenden. In diesem Fall heißt es: „Es wird ein Zufall verwendet, der durch Hashing der aktuellen Daten und des Hash des zukĂŒnftigen Blocks mit einer Höhe von beispielsweise N + 42 erhalten wird, wobei N die aktuelle Blockhöhe ist. Dies stĂ€rkt das Schema ein wenig, ermöglicht es BP jedoch, wenn auch in Zukunft, den Block auszuwĂ€hlen, zu halten oder zu veröffentlichen.


Soft BP ist in diesem Fall kompliziert, aber nicht viel. Es ist nur so, dass bei der Validierung und Aufnahme einer Transaktion in den Block schnell ĂŒberprĂŒft wird, ob ein Gewinn erzielt wird, und möglicherweise die Auswahl eines Transaktionsparameters, um eine hohe Gewinnwahrscheinlichkeit zu erzielen. Gleichzeitig ist es fast unmöglich, einen intelligenten BP fĂŒr solche Manipulationen zu finden, jedes Mal, wenn Sie neue Adressen verwenden und ein wenig gewinnen können, ohne Verdacht zu erregen.


Daher sind die Methoden, die Informationen aus dem Block verwenden, nicht fĂŒr die Rolle der universellen Implementierung von PVRB geeignet. In einer eingeschrĂ€nkten Version mit EinschrĂ€nkungen bei der GrĂ¶ĂŸe der Wetten, EinschrĂ€nkungen bei der Anzahl der Spieler und / oder der KYC-Registrierung (um zu verhindern, dass ein Spieler mehrere Adressen verwendet) können diese Schemata fĂŒr kleine Spiele verwendet werden, mehr jedoch nicht.


PVRB und Commit-EnthĂŒllung.


Okay, dank Hashing und zumindest der relativen Unvorhersehbarkeit des Block-Hash und anderer Variablen. Wenn Sie das Problem der Front-Running-Bergleute lösen, sollten Sie sich etwas Passenderes zulegen. FĂŒgen wir diesem Schema Benutzer hinzu - obwohl sie auch die ZufĂ€lligkeit beeinflussen: Jede Person des technischen Supports wird Ihnen sagen, dass Benutzeraktionen in IT-Systemen am zufĂ€lligsten sind :)


Das naive Schema, bei dem Benutzer einfach Zufallszahlen senden und das Ergebnis beispielsweise als Hash ihrer Summe berechnet wird, ist nicht geeignet. In diesem Fall kann der letzte Spieler seine eigene zufĂ€llige Kontrolle ĂŒber das Ergebnis wĂ€hlen. Daher wird das sehr weit verbreitete Commit-EnthĂŒllungsmuster verwendet. Die Teilnehmer senden zuerst Hashes von ihren Zufallszahlen (Commits) und öffnen dann die Zufallszahlen selbst. Die "EnthĂŒllungs" -Phase beginnt erst, nachdem das erforderliche Commit gesammelt wurde, sodass die Teilnehmer genau den Zufall senden können, von dem sie zuvor einen Hash gesendet haben. Jetzt blenden wir das alles mit den Parametern des Blocks und es ist besser als das aus der Zukunft (Sie können die ZufĂ€lligkeit nur in einem der zukĂŒnftigen Blöcke herausfinden) und voila - der Zufall ist fertig! Jetzt beeinflusst jeder Spieler die resultierende ZufĂ€lligkeit und kann den böswilligen BP „besiegen“, indem er ihn mit seinem eigenen, zuvor unbekannten Zufall blockiert. Sie können auch Schutz vor Sabotage des Protokolls hinzufĂŒgen, indem Sie es nicht in der EnthĂŒllungsphase öffnen - Sie mĂŒssen lediglich einen bestimmten Betrag auf die Transaktion anwenden - Versicherungskaution, die nur wĂ€hrend des Offenlegungsverfahrens zurĂŒckerstattet wird. In diesem Fall ist es nachteilig, Commit zu machen und nicht zu enthĂŒllen.


Es war ein guter Versuch, und solche Schemata sind auch in Spiel-DApps enthalten, aber leider reicht dies wiederum nicht aus. Jetzt kann nicht nur der Bergmann, sondern jeder Teilnehmer am Protokoll das Ergebnis beeinflussen. Es ist weiterhin möglich, den Wert selbst mit einem geringeren Grad an VariabilitĂ€t und fĂŒr Geld zu kontrollieren. Wenn jedoch wie im Fall des Bergmanns die Ergebnisse der Ziehung wertvoller sind als die TeilnahmegebĂŒhr am PVRB-Protokoll, kann der Zufallsproduzent (RP) entscheiden, ob er sie preisgibt und kann immer noch aus mindestens zwei zufĂ€lligen Optionen wĂ€hlen.
Aber es gab die Möglichkeit, diejenigen zu bestrafen, die sich verpflichten und nicht preisgeben, und dieses Schema ist immer noch nĂŒtzlich. Die Einfachheit ist ein großer Vorteil - ernstere Protokolle erfordern viel leistungsfĂ€higere Computer.


PVRB und deterministische Signaturen.


Es gibt eine andere Möglichkeit, ein RP dazu zu bringen, eine Pseudozufallszahl bereitzustellen, die nicht beeinflusst werden kann, wenn es mit einem „Prototyp“ versehen ist - dies ist eine deterministische Signatur. Eine solche Signatur ist beispielsweise RSA und kein ECS. Wenn RP ein SchlĂŒsselpaar hat: RSA und ECC, und er einen Wert mit seinem privaten SchlĂŒssel signiert, erhĂ€lt er im Fall von RSA EINE UND NUR EINE Signatur, und im Fall von ECS kann er eine beliebige Anzahl verschiedener gĂŒltiger Signaturen generieren. Dies liegt an der Tatsache, dass beim Erstellen einer ECS-Signatur eine Zufallszahl verwendet wird, die von den Unterzeichnern ausgewĂ€hlt wird und nach Wunsch ausgewĂ€hlt werden kann, sodass der Unterzeichner die Möglichkeit hat, eine von mehreren Signaturen auszuwĂ€hlen. Im Fall von RSA: "ein Eingabewert" + "ein SchlĂŒsselpaar" = "eine Signatur". Es ist unmöglich vorherzusagen, wie die Signatur des anderen RP aussehen wird, daher kann PVRB mit deterministischen Signaturen organisiert werden, indem RSA-Signaturen mehrerer Teilnehmer kombiniert werden, die denselben Wert signiert haben. Zum Beispiel - der vorherige Zufall. In diesem Schema werden viele Ressourcen gespart, weil Signaturen sind sowohl eine BestĂ€tigung der Richtigkeit des Protokollverhaltens als auch eine Quelle der ZufĂ€lligkeit.


Selbst bei deterministischen Signaturen ist das Schema jedoch immer noch anfĂ€llig fĂŒr das Problem des „letzten Akteurs“. Der letzte Teilnehmer kann weiterhin entscheiden, ob er seine Unterschrift veröffentlicht oder nicht, und so das Ergebnis kontrollieren. Sie können das Schema verfeinern, Block-Hashes hinzufĂŒgen, Runden erstellen, sodass das Ergebnis nicht im Voraus vorhergesagt werden kann. Alle diese Methoden lassen jedoch auch unter BerĂŒcksichtigung vieler Verbesserungen das Problem des Einflusses eines Teilnehmers auf das kollektive Ergebnis in einer nicht vertrauenswĂŒrdigen Umgebung ungelöst und können nur funktionieren unter wirtschaftlichen und zeitlichen Bedingungen. DarĂŒber hinaus ist die GrĂ¶ĂŸe von RSA-SchlĂŒsseln (1024 und 2048 Bit) ziemlich groß, und die GrĂ¶ĂŸe fĂŒr Blockchain-Transaktionen ist ein Ă€ußerst wichtiger Parameter. Anscheinend wird es auf einfache Weise nicht funktionieren, wir gehen weiter.


PVRB- und geheime Austauschprogramme


In der Kryptographie gibt es Schemata, mit denen sich das Netzwerk auf einen und nur einen Wert von PVRB einigen kann, wĂ€hrend solche Schemata gegen böswillige Handlungen eines Teils der Teilnehmer resistent sind. Ein nĂŒtzliches Protokoll zum Kennenlernen ist Shamirs geheimes Freigabeschema. Es dient dazu, ein Geheimnis (zum Beispiel einen geheimen SchlĂŒssel) in mehrere Teile aufzuteilen und diese Teile an N Teilnehmer zu verteilen. Das Geheimnis ist so verteilt, dass M Teile von N fĂŒr seine Wiederherstellung ausreichen, wĂ€hrend es beliebige M Teile sein können. Wenn sich die Teilnehmer an den Fingern befinden und ein Diagramm einer unbekannten Funktion haben, tauschen sie Punkte auf dem Diagramm aus, und nachdem sie M Punkte erhalten haben, kann die gesamte Funktion wiederhergestellt werden.
Eine gute ErklÀrung finden Sie im Wiki. Auf der Demoseite ist es hilfreich, praktisch damit zu spielen, um das Protokoll in Ihrem Kopf zu verlieren.


Wenn das FSSS-System (Fiat-Shamir Secret Sharing) in seiner reinen Form anwendbar wĂ€re, wĂ€re es ein nicht tötbarer PVRB. In der einfachsten Version sieht das Protokoll möglicherweise folgendermaßen aus:


  • Jeder Teilnehmer generiert seinen eigenen Zufall und verteilt daraus Anteile an die anderen Teilnehmer
  • M shares, , ,
  • random- PVRB

, , threshold- . , RP , , “last actor”.


, PVRB secret sharing - , , . , , , . - EOS — share : . , proof- , . , verify , block-producer , , verify . , (0.5 ).


— - . proof-, — off-chain , — PVRB.


PVRB threshold signatures


secret sharing, , “threshold”. M N, N, “threshold” . “last actor”, , , . , .


threshold- PVRB — threshold-. threshold-, longread Dash.


BLS (BLS Boneh-Lynn-Shacham, ), — , , BLS , , . . , BLS , , M N , , publicly verifiable, , M- .


threshold BLS signatures BLS - ( ), threshold- . BLS , threshold- “last-actor”, , , , .


, PVRB , BLS threshold signatures, . , DFinity ( , , verifiable secret sharing), Keep.network ( random beacon yellowpaper , -, ).


PVRB


, , PVRB , . , , . PVRB , : CPU, memory, storage, I/O. PVRB — , , . , RP, , proof- , .


, PVRB:


  • . PVRB unbiasable, . ,
  • “last actor” . PVRB , , RP .
  • . PVRB , , RP , ,
  • . RP “ , ”. p2p , ,
  • . PVRB on-chain , . -,
  • liveness . PVRB , RP
  • trusted setup . PVRB setup , . . - — ,
  • . , , , ..

threshold BLS — , , , threshold. , , , , , , , realtime, , , threshold . , threshold-, , (slashing) , . , BLS , , EOS Ethereum — . — WebAssembly EVM, . (), . , 1024 2048 bit RSA, 4-8 , Bitcoin Ethereum.


— , . , Go geth, Rust Parity, C++ EOS. JavaScript , JavaScript , WebAssembly, -.


Fazit


, , , , , . , , setup- , whitepaper- , - “ , ”.


, PVRB Haya , threshold BLS signatures, PVRB , - . , : secret sharing random_seed, threshold BLS , . , , , , , , — , , . — , , governance .


PVRB, , , , , , , , , , - . , , .


, , , , :)

Source: https://habr.com/ru/post/de452340/


All Articles