Algorand: масштабирование византийских соглашений для криптовалют

Von Jing Chen and Silvio Micali · 2017

Zusammenfassung

Ein öffentliches Hauptbuch ist eine manipulationssichere Datenfolge, die von jedem gelesen und ergänzt werden kann. Öffentliche Hauptbücher haben unzählige und überzeugende Verwendungsmöglichkeiten. Sie können alle Arten vor aller Augen sichern von Transaktionen – wie Titeln, Verkäufen und Zahlungen – in der genauen Reihenfolge, in der sie stattfinden. Öffentliche Hauptbücher dämmen nicht nur Korruption ein, sondern ermöglichen auch hochentwickelte Anwendungen – wie z Kryptowährungen und smart contracts. Sie werden die Art und Weise einer demokratischen Gesellschaft revolutionieren betreibt. In der derzeit implementierten Form sind sie jedoch schlecht skalierbar und können ihr Potenzial nicht ausschöpfen. Algorand ist eine wirklich demokratische und effiziente Möglichkeit, ein öffentliches Hauptbuch zu implementieren. Im Gegensatz zu früher Implementierungen, die auf Arbeitsnachweisen basieren, erfordern einen vernachlässigbaren Rechenaufwand und generiert einen Transaktionsverlauf, der mit überwältigend hoher Wahrscheinlichkeit nicht „verzweigt“ wird. Algorand basiert auf einer (neuen und superschnellen) byzantinischen Vereinbarung zur Nachrichtenübermittlung. Der Konkretheit halber beschreiben wir Algorand nur als Geldplattform.

Аннотация

Публичный реестр — это защищенная от несанкционированного доступа последовательность данных, которую может прочитать и дополнить каждый. Публичные реестры имеют бесчисленное множество интересных применений. Они могут обеспечить на виду все виды транзакций — таких как права собственности, продажи и платежи — в том порядке, в котором они происходят. Публичные реестры не только сдерживают коррупцию, но и позволяют использовать очень сложные приложения, такие как криптовалюты и smart contracts. Они намерены революционизировать способ построения демократического общества. действует. Однако в нынешнем виде они плохо масштабируются и не могут реализовать свой потенциал. Algorand — это действительно демократичный и эффективный способ внедрения публичного реестра. В отличие от предыдущего реализации, основанные на доказательстве работы, требуют незначительного объема вычислений и генерирует историю транзакций, которая не будет «разветвляться» с чрезвычайно высокой вероятностью. Algorand основан на (новом и сверхбыстром) византийском соглашении о передаче сообщений. Для конкретики мы будем описывать Algorand только как денежную платформу.

Einführung

Geld wird immer virtueller. Es wurde geschätzt, dass etwa 80 % der Vereinigten Staaten Dollar existieren heute nur noch als Hauptbucheinträge [5]. Andere Finanzinstrumente ziehen nach. In einer idealen Welt, in der wir auf eine allgemein vertrauenswürdige zentrale Instanz zählen könnten, wären wir immun Um allen möglichen Cyber-Angriffen standzuhalten, könnten Geld- und andere Finanztransaktionen ausschließlich elektronisch abgewickelt werden. Leider leben wir nicht in einer solchen Welt. Dementsprechend sind dezentrale Kryptowährungen, wie z als Bitcoin [29] und „smart contract“-Systeme wie Ethereum wurden [4] vorgeschlagen. Bei Das Herzstück dieser Systeme ist ein gemeinsames Hauptbuch, das eine Abfolge von Transaktionen zuverlässig aufzeichnet. ∗Dies ist die formellere (und asynchronere) Version des ArXiv-Artikels des zweiten Autors [24], eines Artikels basiert auf dem von Gorbunov und Micali [18]. Die Technologien von Algorand sind Gegenstand des Folgenden Patentanmeldungen: US62/117.138 US62/120.916 US62/142.318 US62/218.817 US62/314.601 PCT/US2016/018300 US62/326.865 62/331.654 US62/333.340 US62/343.369 US62/344.667 US62/346.775 US62/351.011 US62/653.482 US62/352.195 US62/363.970 US62/369.447 US62/378.753 US62/383.299 US62/394.091 US62/400.361 US62/403.403 US62/410.721 US62/416.959 US62/422.883 US62/455.444 US62/458.746 US62/459.652 US62/460.928 US62/465.931so vielfältig wie Zahlungen und Verträge, und zwar auf manipulationssichere Weise. Die Technologie der Wahl Die Gewährleistung dieser Manipulationssicherheit ist blockchain. Blockchains stecken hinter Anwendungen wie Kryptowährungen [29], Finanzanwendungen [4] und das Internet der Dinge [3]. Mehrere Techniken Zur Verwaltung blockchain-basierter Ledger wurden vorgeschlagen: Proof of Work [29], Proof of Stake [2], praktische byzantinische Fehlertoleranz [8] oder eine Kombination davon. Derzeit kann die Verwaltung von Hauptbüchern jedoch ineffizient sein. Zum Beispiel proof-of-work von Bitcoin Der Ansatz (basierend auf dem ursprünglichen Konzept von [14]) erfordert einen großen Rechenaufwand und ist verschwenderisch und skaliert schlecht [1]. Darüber hinaus konzentriert es de facto die Macht in sehr wenigen Händen. Wir möchten daher eine neue Methode zur Implementierung eines öffentlichen Hauptbuchs vorschlagen, das Folgendes bietet: Bequemlichkeit und Effizienz eines zentralisierten Systems, das von einer vertrauenswürdigen und unantastbaren Autorität betrieben wird, ohne die Ineffizienzen und Schwächen aktueller dezentraler Implementierungen. Wir nennen unseren Ansatz Algorand, weil wir algorithmische Zufälligkeit verwenden, um basierend auf dem bisher erstellten Hauptbuch auszuwählen, eine Gruppe von Verifizierern, die für die Erstellung des nächsten Blocks gültiger Transaktionen verantwortlich sind. Natürlich, Wir stellen sicher, dass solche Auswahlen nachweislich vor Manipulationen geschützt und bis dahin unvorhersehbar sind in letzter Minute, sondern auch, dass sie letztendlich allgemein klar sind. Der Ansatz von Algorand ist durchaus demokratisch, weder im Prinzip noch de facto erstellt verschiedene Klassen von Benutzern (als „Miner“ und „normale Benutzer“ in Bitcoin). In Algorand „alle Die Macht liegt bei der Menge aller Benutzer.“ Eine bemerkenswerte Eigenschaft von Algorand ist, dass sein Transaktionsverlauf nur mit sehr kleinen Teilen möglich ist Wahrscheinlichkeit (z. B. eins zu einer Billion oder sogar 10−18). Algorand kann auch einige rechtliche Aspekte ansprechen und politische Bedenken. Der Algorand-Ansatz gilt für blockchains und allgemeiner für jede Generierungsmethode eine manipulationssichere Folge von Blöcken. Wir haben tatsächlich eine neue Methode vorgeschlagen – eine Alternative zu und effizienter als blockchains – das kann von unabhängigem Interesse sein. 1.1 Annahme und technische Probleme von Bitcoin Bitcoin ist ein sehr ausgeklügeltes System und hat viele weitere Forschungen inspiriert. Doch es ist auch problematisch. Fassen wir die zugrunde liegende Annahme und die technischen Probleme zusammen – welche werden tatsächlich von praktisch allen Kryptowährungen geteilt, die, wie Bitcoin, auf proof-of-work basieren. Für diese Zusammenfassung genügt es, sich daran zu erinnern, dass ein Benutzer in Bitcoin mehrere öffentliche Schlüssel besitzen kann eines digitalen Signatursystems, dass Geld mit öffentlichen Schlüsseln verknüpft ist und dass eine Zahlung eine ist Digitale Signatur, die einen Geldbetrag von einem öffentlichen Schlüssel auf einen anderen überträgt. Im Wesentlichen, Bitcoin organisiert alle verarbeiteten Zahlungen in einer Kette von Blöcken, B1, B2, . . ., jeweils bestehend aus mehreren Zahlungen, so dass alle Zahlungen von B1, in beliebiger Reihenfolge, gefolgt von denen von B2, in beliebiger Reihenfolge, usw. stellen eine Folge gültiger Zahlungen dar. Jeder Block wird im Durchschnitt alle 10 Minuten generiert. Bei dieser Abfolge von Blöcken handelt es sich um eine Kette, da sie so strukturiert ist, dass jede Änderung auch möglich ist in einem einzelnen Block, dringt in alle nachfolgenden Blöcke ein und erleichtert so das Erkennen von Änderungen die Zahlungshistorie. (Wie wir sehen werden, wird dies dadurch erreicht, dass in jeden Block ein kryptografischer Code eingefügt wird hash des vorherigen.) Eine solche Blockstruktur wird als blockchain bezeichnet. Annahme: Ehrliche Mehrheit der Rechenleistung Bitcoin geht davon aus, dass keine böswillige Absicht vorliegt Eine Entität (noch eine Koalition koordinierter böswilliger Entitäten) kontrolliert den Großteil der Rechenleistung Macht, die der Blockgenerierung gewidmet ist. Eine solche Entität wäre tatsächlich in der Lage, blockchain zu ändern,und so die Zahlungshistorie nach Belieben umschreiben. Es könnte insbesondere eine Zahlung \(\wp\) leisten, Erhalten Sie die bezahlten Leistungen und „löschen“ Sie dann jede Spur von \(\wp\). Technisches Problem 1: Rechenverschwendung Bitcoins proof-of-work-Ansatz zum Blockieren Die Generierung erfordert einen außerordentlichen Rechenaufwand. Derzeit sind es nur ein paar Hundert Tausende öffentliche Schlüssel im System können die 500 leistungsstärksten Supercomputer nur aufbringen lediglich 12,8 % der gesamten Rechenleistung, die von den Bitcoin-Spielern benötigt wird. Dies Der Rechenaufwand würde erheblich zunehmen, wenn deutlich mehr Benutzer dem System beitreten würden. Technisches Problem 2: Machtkonzentration Heute aufgrund der exorbitanten Menge an Berechnung erforderlich, ein Benutzer, der versucht, einen neuen Block mithilfe eines normalen Desktops zu generieren (geschweige denn a Handy), rechnet damit, Geld zu verlieren. Um einen neuen Block mit einem gewöhnlichen Computer zu berechnen, Die erwarteten Kosten für den für die Berechnung erforderlichen Strom übersteigen die erwartete Belohnung. Nur die Verwendung von Pools speziell gebauter Computer (die nichts anderes tun als „neue Blöcke abbauen“), einer könnte erwarten, durch die Generierung neuer Blöcke einen Gewinn zu erzielen. Dementsprechend sind es heute de facto zwei disjunkte Benutzerklassen: normale Benutzer, die nur Zahlungen leisten, und spezialisierte Mining-Pools, die nur nach neuen Blöcken suchen. Es sollte daher nicht überraschen, dass seit kurzem die gesamte Rechenleistung für Block Generation liegt in nur fünf Pools. Unter solchen Bedingungen ist die Annahme, dass eine Mehrheit der Rechenleistung ist ehrlich, wird weniger glaubwürdig. Technisches Problem 3: Mehrdeutigkeit In Bitcoin ist blockchain nicht unbedingt eindeutig. Tatsächlich sein letzter Teil verzweigt sich oft: Der blockchain kann – sagen wir – B1 sein, . . . , Bk, B′ k+1, B′ k+2, gem ein Benutzer und B1, . . . , Bk, B'' k+1, B'' k+2, B'' k+3 laut einem anderen Benutzer. Erst nach mehreren Blöcken Kann man einigermaßen sicher sein, dass die ersten k + 3 Blöcke gleich sind, wenn sie zur Kette hinzugefügt wurden? für alle Benutzer. Daher kann man sich nicht sofort auf die im letzten Block enthaltenen Zahlungen verlassen die Kette. Es ist sinnvoller abzuwarten und zu sehen, ob der Block ausreichend tief im Inneren sitzt blockchain und somit ausreichend stabil. Unabhängig davon wurden auch Bedenken hinsichtlich der Strafverfolgung und der Geldpolitik in Bezug auf Bitcoin.1 geäußert 1.2 Algorand, kurz und bündig Einstellung Algorand arbeitet in einer sehr schwierigen Umgebung. Kurz gesagt, (a) Erlaubnisfreie und erlaubte Umgebungen. Algorand funktioniert effizient und sicher in einer völlig erlaubnisfreien Umgebung, in der beliebig viele Benutzer dem beitreten dürfen System jederzeit und ohne jegliche Überprüfung oder Erlaubnis jeglicher Art zu öffnen. Natürlich funktioniert Algorand noch besser in einer zugelassenen Umgebung. 1Die durch Bitcoin-Zahlungen gebotene (Pseudo-)Anonymität kann zur Geldwäsche und/oder Finanzierung missbraucht werden von kriminellen Personen oder terroristischen Organisationen. Traditionelle Banknoten oder Goldbarren, die im Prinzip perfekt sind Anonymität sollte die gleiche Herausforderung darstellen, aber die Physizität dieser Währungen verlangsamt das Geld erheblich Übermittlungen, um ein gewisses Maß an Überwachung durch Strafverfolgungsbehörden zu ermöglichen. Die Fähigkeit, „Geld zu drucken“, ist eine der grundlegendsten Befugnisse eines Nationalstaats. Im Prinzip also das Massive Die Einführung einer unabhängig schwankenden Währung könnte diese Macht einschränken. Derzeit ist Bitcoin jedoch noch lange nicht da Es stellt eine Bedrohung für die staatliche Geldpolitik dar und wird es aufgrund seiner Skalierbarkeitsprobleme möglicherweise nie sein.(b) Sehr kontroverse Umgebungen. Algorand widersteht einem sehr mächtigen Gegner, der es kann (1) jeden Benutzer, den er möchte, zu jeder Zeit, die er möchte, sofort korrumpieren, vorausgesetzt, dass in a In einer erlaubnisfreien Umgebung gehören zwei Drittel des Geldes im System ehrlichen Benutzern. (In einem (In einer genehmigten Umgebung, unabhängig vom Geld, reicht es aus, dass 2/3 der Benutzer ehrlich sind.) (2) vollständige Kontrolle und perfekte Koordinierung aller beschädigten Benutzer; und (3) Planen Sie die Zustellung aller Nachrichten, vorausgesetzt, dass jede Nachricht von einem ehrlichen Benutzer gesendet wird erreicht 95 % der ehrlichen Nutzer innerhalb einer Zeit \(\lambda\)m, die allein von der Größe von m abhängt. Haupteigenschaften Trotz der Anwesenheit unseres mächtigen Gegners in Algorand • Der Rechenaufwand ist minimal. Im Wesentlichen egal, wie viele Benutzer es gibt Im System vorhanden, muss jeder der fünfzehnhundert Benutzer höchstens einige Sekunden ausführen Berechnung. • Ein neuer Block wird in weniger als 10 Minuten generiert und verlässt de facto nie den blockchain. Beispielsweise ist zu erwarten, dass die Zeit zum Generieren eines Blocks in der ersten Ausführungsform kürzer ist als Λ + 12,4\(\lambda\), wobei Λ die Zeit ist, die erforderlich ist, um einen Block in einem Peer-to-Peer-Klatsch zu verbreiten Mode, egal welche Blockgröße man wählt, und \(\lambda\) ist die Zeit, um 1.500 200B lange Nachrichten zu verbreiten. (Da in einem wirklich dezentralisierten System Λ im Wesentlichen eine intrinsische Latenz ist, in Algorand Der begrenzende Faktor bei der Blockgenerierung ist die Netzwerkgeschwindigkeit.) Die zweite Ausführungsform hat tatsächlich experimentell getestet (von?), was darauf hindeutet, dass ein Block in weniger als 40 generiert wird Sekunden. Darüber hinaus darf blockchain von Algorand nur mit vernachlässigbarer Wahrscheinlichkeit (d. h. weniger als eins) gegabelt werden in einer Billion), und so können Benutzer die in einem neuen Block enthaltenen Zahlungen weiterleiten, sobald die Block erscheint. • Die gesamte Macht liegt bei den Benutzern selbst. Algorand ist ein wirklich verteiltes System. Insbesondere Es gibt keine exogenen Einheiten (wie die „Miner“ in Bitcoin), die welche Transaktionen kontrollieren können werden anerkannt. Algorands Techniken. 1. Ein neues und schnelles Byzantinisches Abkommensprotokoll. Algorand generiert einen neuen Block über ein neues kryptografisches, nachrichtenweitergebendes, binäres Byzantine Agreement (BA)-Protokoll, BA⋆. Protokoll BA⋆erfüllt nicht nur einige zusätzliche Eigenschaften (auf die wir gleich noch eingehen werden), sondern ist auch sehr schnell. Grob gesagt besteht die Version mit Binäreingabe aus einer dreistufigen Schleife, in der ein Spieler eine Single sendet Nachricht mi an alle anderen Spieler. Ausgeführt in einem vollständigen und synchronen Netzwerk, mit mehr Wenn mehr als 2/3 der Spieler ehrlich sind, mit einer Wahrscheinlichkeit von > 1/3, endet das Protokoll nach jeder Schleife Vereinbarung. (Wir betonen, dass das Protokoll BA⋆der ursprünglichen Definition der byzantinischen Vereinbarung entspricht von Pease, Shostak und Lamport [31], ohne Abschwächungen.) Algorand nutzt dieses binäre BA-Protokoll, um in unserer unterschiedlichen Kommunikation eine Einigung zu erzielen Modell, auf jedem neuen Block. Der vereinbarte Block wird dann über eine vorgeschriebene Anzahl zertifiziert Digitale Signatur der entsprechenden Prüfer erstellt und über das Netzwerk verbreitet. 2. Kryptografische Sortierung. Obwohl es sehr schnell ist, würde das Protokoll BA⋆ von weiteren Vorteilen profitieren Geschwindigkeit, wenn sie von Millionen von Benutzern gespielt wird. Dementsprechend wählt Algorand die künftigen Spieler von BA⋆ auseine viel kleinere Teilmenge der Menge aller Benutzer. Um eine andere Art von Machtkonzentration zu vermeiden Problem, jeder neue Block Br wird durch eine neue Ausführung von BA⋆ konstruiert und vereinbart, durch einen separaten Satz ausgewählter Prüfer, SV r. Im Prinzip kann die Auswahl eines solchen Sets genauso schwierig sein wie Br direkt auswählen. Wir begegnen diesem potenziellen Problem mit einem Ansatz, den wir „umfassend“ nennen der aufschlussreiche Vorschlag von Maurice Herlihy, kryptografische Sortierung. Sortierung ist die Praxis von Auswahl von Beamten nach dem Zufallsprinzip aus einer großen Gruppe berechtigter Personen [6]. (Sortierung wurde geübt über Jahrhunderte hinweg: zum Beispiel durch die Republiken Athen, Florenz und Venedig. In der modernen Justiz Systeme werden bei der Auswahl der Jurys häufig Zufallsauswahlverfahren eingesetzt. In letzter Zeit gibt es auch Zufallsstichproben für Wahlen befürwortet von David Chaum [9].) In einem dezentralen System natürlich die Wahl der Es ist problematisch, zufällige Münzen zu verwenden, um die Mitglieder jedes Verifizierersatzes SV r zufällig auszuwählen. Wir greifen daher auf Kryptographie zurück, um jeden Verifizierersatz aus der Population aller Benutzer auszuwählen. auf eine Weise, die garantiert automatisch (d. h. ohne Nachrichtenaustausch) und zufällig erfolgt. Im Wesentlichen verwenden wir eine kryptografische Funktion, um den vorherigen Block automatisch zu ermitteln Br−1, ein Benutzer, der Leiter, der dafür verantwortlich ist, den neuen Block Br vorzuschlagen, und der Verifizierer SV r, in Aufgabe ist es, eine Einigung über den vom Vorsitzenden vorgeschlagenen Block zu erzielen. Da böswillige Benutzer Einfluss nehmen können Die Zusammensetzung von Br−1 (z. B. durch Auswahl einiger seiner Zahlungen) konstruieren und verwenden wir speziell Zusätzliche Eingaben, um zu beweisen, dass der Anführer für den r-ten Block und der Verifizierersatz SV r tatsächlich vorhanden sind zufällig ausgewählt. 3. Die Menge (Samen) Qr. Wir verwenden dazu den letzten Block Br−1 im blockchain Bestimmen Sie automatisch den nächsten Verifizierersatz und den Leiter, der für den Aufbau des neuen Blocks verantwortlich ist Br. Die Herausforderung bei diesem Ansatz besteht darin, dass durch die einfache Auswahl einer etwas anderen Zahlung im In der letzten Runde erlangt unser mächtiger Gegner eine enorme Kontrolle über den nächsten Anführer. Auch wenn er Obwohl er nur 1/1000 der Spieler/Gelder im System kontrollierte, konnte er sicherstellen, dass alle Anführer dies tun bösartig. (Siehe Abschnitt 4.1 zur Intuition.) Diese Herausforderung ist für alle proof-of-stake-Ansätze von zentraler Bedeutung. und nach unserem besten Wissen wurde es bis jetzt noch nicht zufriedenstellend gelöst. Um dieser Herausforderung gerecht zu werden, bauen wir gezielt und sorgfältig ein separates und kontinuierlich aktualisiertes System auf definierte Größe Qr, die nachweislich nicht nur unvorhersehbar, sondern auch nicht beeinflussbar ist mächtiger Gegner. Wir können Qr als den r-ten Samen bezeichnen, da Algorand von Qr auswählt, Über eine geheime kryptografische Sortierung werden alle Benutzer, die bei der Generierung eine besondere Rolle spielen, ermittelt rter Block. 4. Geheime krytografische Sortierung und geheime Anmeldeinformationen. Zufällige und eindeutige Verwendung des aktuellen letzten Blocks, Br−1, um den Verifizierersatz und den verantwortlichen Leiter auszuwählen Der Bau des neuen Blocks Br reicht nicht aus. Da Br−1 bekannt sein muss, bevor Br erzeugt wird, Auch die letzte in Br−1 enthaltene, nicht beeinflussbare Größe Qr−1 muss bekannt sein. Dementsprechend also sind die Verifizierer und der Leiter, der für die Berechnung des Blocks Br verantwortlich ist. Also unser mächtiger Gegner könnte sie alle sofort korrumpieren, bevor sie sich auf eine Diskussion über Br einlassen, um zu bekommen volle Kontrolle über den von ihnen zertifizierten Block. Um diesem Problem vorzubeugen, erfahren Führungskräfte (und eigentlich auch Prüfer) heimlich von ihrer Rolle, können es aber Berechnen Sie einen ordnungsgemäßen Berechtigungsnachweis, der in der Lage ist, jedem nachzuweisen, der diese Rolle tatsächlich innehat. Wann Ein Benutzer erkennt privat, dass er der Anführer für den nächsten Block ist, und baut zunächst heimlich seinen Block zusammen Er erstellt einen eigenen vorgeschlagenen neuen Block und verbreitet ihn dann zusammen mit seinem eigenen (damit er zertifiziert werden kann). Berechtigung. Auf diese Weise erkennt der Gegner jedoch sofort, wer der Anführer des nächsten ist Block ist, und obwohl er ihn sofort korrumpieren kann, wird es für den Gegner zu spät sein Einfluss auf die Wahl eines neuen Blocks haben. Tatsächlich kann er die Botschaft des Anführers nicht mehr „zurückrufen“.als eine mächtige Regierung eine von WikiLeaks viral verbreitete Botschaft zurück in die Flasche stecken kann. Wie wir sehen werden, können wir weder die Einzigartigkeit eines Anführers garantieren, noch dafür, dass jeder sicher ist, wer der Anführer ist ist, einschließlich des Anführers selbst! Aber in Algorand ist ein eindeutiger Fortschritt garantiert. 5. Spieleraustauschbarkeit. Nachdem er einen neuen Block vorgeschlagen hat, könnte der Anführer genauso gut „sterben“ (oder sterben). vom Gegner korrumpiert), weil seine Arbeit erledigt ist. Für die Verifizierer in SV r sind die Dinge jedoch weniger einfach. Da ich für die Beglaubigung des neuen Blocks Br mit ausreichend vielen Unterschriften verantwortlich bin, Sie müssen zunächst eine byzantinische Einigung über den vom Führer vorgeschlagenen Block herbeiführen. Das Problem ist, dass Egal wie effizient es ist, BA⋆erfordert mehrere Schritte und die Ehrlichkeit von > 2/3 seiner Spieler. Dies stellt ein Problem dar, da die Spielermenge von BA⋆aus Effizienzgründen aus der kleinen Menge SV r besteht wird zufällig aus der Menge aller Benutzer ausgewählt. So ist unser mächtiger Gegner zwar unfähig korrupt 1/3 aller Benutzer, kann sicherlich alle Mitglieder von SV r korrumpieren! Glücklicherweise werden wir beweisen, dass das Protokoll BA⋆, das durch die Verbreitung von Nachrichten auf Peer-to-Peer-Art ausgeführt wird, vom Spieler austauschbar ist. Diese neuartige Anforderung bedeutet, dass das Protokoll korrekt und korrekt ist erreicht effizient einen Konsens, auch wenn jeder seiner Schritte völlig neu und zufällig ausgeführt wird und unabhängig ausgewählter Satz von Spielern. Somit gibt es bei Millionen von Benutzern jeweils eine kleine Gruppe von Spielern einem Schritt von BA⋆ zugeordnet, hat höchstwahrscheinlich einen leeren Schnittpunkt mit der nächsten Menge. Darüber hinaus werden die Spielermengen verschiedener Schritte von BA⋆ wahrscheinlich völlig unterschiedlich sein Kardinalitäten. Darüber hinaus wissen die Mitglieder jeder Gruppe nicht, wer die nächste Spielergruppe sein wird sein und keinen inneren Zustand heimlich passieren. Die Eigenschaft des austauschbaren Spielers ist tatsächlich entscheidend, um den dynamischen und sehr mächtigen Spieler zu besiegen Gegner, den wir uns vorstellen. Wir glauben, dass sich Protokolle mit austauschbaren Playern in vielen Fällen als entscheidend erweisen werden Kontexte und Anwendungen. Sie werden insbesondere für die sichere Ausführung kleiner Unterprotokolle von entscheidender Bedeutung sein Eingebettet in ein größeres Spieleruniversum mit einem dynamischen Gegner, der selbst korrumpieren kann Ein kleiner Bruchteil der Gesamtzahl der Spieler hat keine Schwierigkeiten, alle Spieler in den kleineren zu korrumpieren Unterprotokoll. Eine zusätzliche Eigenschaft/Technik: Faule Ehrlichkeit Ein ehrlicher Benutzer befolgt seine Vorschriften Anweisungen, zu denen auch gehört, online zu sein und das Protokoll auszuführen. Seitdem ist Algorand nur bescheiden Rechen- und Kommunikationsanforderungen, Online-Sein und Ausführung des Protokolls „im Hintergrund“ ist kein großes Opfer. Natürlich gibt es auch ein paar „Abwesenheiten“ unter ehrlichen Spielern, wie z aufgrund eines plötzlichen Verbindungsverlusts oder der Notwendigkeit eines Neustarts werden automatisch toleriert (weil Wir können so wenige Spieler immer als vorübergehend böswillig betrachten. Wir weisen jedoch darauf hin, dass Algorand einfach angepasst werden kann, um in einem neuen Modell zu funktionieren, in dem ehrliche Benutzer vorhanden sind Die meiste Zeit offline. Unser neues Modell kann wie folgt informell vorgestellt werden. Faule Ehrlichkeit. Grob gesagt ist ein Benutzer faul, aber ehrlich, wenn er (1) alle seine Vorschriften befolgt Anweisungen, wenn er zur Teilnahme am Protokoll aufgefordert wird, und (2) er zur Teilnahme aufgefordert wird nur selten und mit entsprechender Vorankündigung auf das Protokoll eingehen. Mit einer so entspannten Vorstellung von Ehrlichkeit sind wir möglicherweise noch zuversichtlicher, dass ehrliche Menschen es sein werden zur Hand, wenn wir sie brauchen, und Algorand garantieren, dass, wenn dies der Fall ist, Das System arbeitet auch dann sicher, wenn zu einem bestimmten Zeitpunkt Die Mehrheit der teilnehmenden Spieler ist böswillig.1.3 Eng verwandte Arbeit Proof-of-Work-Ansätze (wie die zitierten [29] und [4]) sind ziemlich orthogonal zu unserem. So sind die Ansätze, die auf byzantinischer Vereinbarung zur Nachrichtenübermittlung oder praktischer byzantinischer Fehlertoleranz basieren (wie das zitierte [8]). Tatsächlich können diese Protokolle nicht von allen Benutzern ausgeführt werden und können auch nicht in unserem Modell auf eine entsprechend kleine Gruppe von Benutzern beschränkt sein. Tatsächlich ist unser mächtiger Gegner mein beschädigt sofort alle beteiligten Benutzer einer kleinen Gruppe, die tatsächlich ein BA-Protokoll ausführen soll. Unser Ansatz könnte als mit dem Proof of Stake [2] verknüpft betrachtet werden, in dem Sinne, dass die „Macht“ der Benutzer beim Blockaufbau ist proportional zu dem Geld, das sie im System besitzen (im Gegensatz zu – sagen wir – zu das Geld, das sie in ein „Treuhandkonto“ eingezahlt haben). Das Papier, das unserem am nächsten kommt, ist das Sleepy Consensus Model von Pass und Shi [30]. Um das zu vermeiden Der proof-of-work-Ansatz erfordert umfangreiche Berechnungen, auf die sich ihr Artikel (und freundlicherweise) stützt Credits) Algorands geheime kryptografische Sortierung. Mit diesem entscheidenden Aspekt haben mehrere gemeinsam Es bestehen erhebliche Unterschiede zwischen unseren Papieren. Insbesondere (1) Ihre Einstellung ist nur erlaubt. Im Gegensatz dazu ist Algorand auch ein erlaubnisloses System. (2) Sie verwenden ein Protokoll im Nakamoto-Stil, weshalb ihre blockchain häufig gegabelt werden. Obwohl Unter Verzicht auf proof-of-work wird in ihrem Protokoll ein heimlich ausgewählter Anführer gebeten, das zu verlängern längste gültige (in einem umfassenderen Sinne) blockchain. Gabelungen sind daher unvermeidlich und man muss darauf warten Der Block ist ausreichend „tief“ in der Kette. Tatsächlich, um ihre Ziele mit einem Gegner zu erreichen Da sie zu adaptiven Verfälschungen fähig sind, erfordern sie, dass ein Block poly(N) tief ist, wobei N das darstellt Gesamtzahl der Benutzer im System. Beachten Sie das, selbst wenn man davon ausgeht, dass ein Block erzeugt werden könnte Wenn es in einer Minute N = 1 Mio. Benutzer gäbe, müsste man etwa 2 Mio. Jahre darauf warten dass ein Block N-tief wird, und etwa zwei Jahre lang, bis ein Block N-tief wird. Im Gegensatz dazu Algorands blockchain gabelt sich nur mit vernachlässigbarer Wahrscheinlichkeit, auch wenn der Gegner korrupt ist Benutzer können sich sofort und anpassungsfähig an die neuen Blöcke wenden, auf die man sich sofort verlassen kann. (3) Sie behandeln keine einzelnen byzantinischen Verträge. In gewissem Sinne garantieren sie nur „letzterer Konsens über eine wachsende Reihe von Werten“. Es handelt sich vielmehr um ein Zustandsreplikationsprotokoll als ein BA-Wert und kann nicht verwendet werden, um eine byzantinische Einigung über einen individuellen Interessenwert zu erzielen. Im Gegensatz dazu kann Algorand bei Bedarf auch nur einmal verwendet werden, um Millionen von Benutzern schnell zu ermöglichen byzantinische Einigung über einen bestimmten Zinswert erzielen. (4) Sie erfordern schwach synchronisierte Uhren. Das heißt, die Uhren aller Benutzer sind um eine kleine Zeit verschoben δ. Im Gegensatz dazu müssen Uhren in Algorand nur (im Wesentlichen) die gleiche „Geschwindigkeit“ haben. (5) Ihr Protokoll funktioniert mit faulen, aber ehrlichen Benutzern oder mit der ehrlichen Mehrheit der Online-Benutzer. Sie danken Algorand dafür, dass er das Problem angesprochen hat, dass ehrliche Benutzer massenhaft offline gehen, und zwar dafür Als Antwort darauf wurde das Modell der faulen Ehrlichkeit vorgeschlagen. Ihr Protokoll funktioniert nicht nur bei Faulenzern Ehrlichkeitsmodell, aber auch in ihrem kontradiktorischen Sleepy-Modell, bei dem ein Gegner auswählt, welche Benutzer online sind und die offline sind, vorausgesetzt, dass die Mehrheit der Online-Nutzer jederzeit ehrlich ist.2 2Die ursprüngliche Version ihres Artikels betrachtete in ihrem kontradiktorischen, schläfrigen Modell tatsächlich nur Sicherheit. Die Die ursprüngliche Version von Algorand, die ihrer Vorgängerversion vorausgeht, sah auch ausdrücklich die Annahme vor, dass eine bestimmte Mehrheit der Online-Spieler sind immer ehrlich, haben dies jedoch zugunsten des Modells der faulen Ehrlichkeit ausdrücklich von der Betrachtung ausgeschlossen. (Wenn sich zum Beispiel irgendwann die Hälfte der ehrlichen Benutzer dafür entscheidet, offline zu gehen, dann die Mehrheit der Benutzer online kann sehr wohl bösartig sein. Um dies zu verhindern, sollte der Gegner die meisten seiner Kräfte erzwingen (Er hat auch korrupte Spieler dazu gebracht, offline zu gehen, was eindeutig seinem eigenen Interesse zuwiderläuft.) Beachten Sie, dass es sich um ein Protokoll mit einer Mehrheit handelt von faulen, aber ehrlichen Spielern funktioniert gut, wenn die Mehrheit der Online-Benutzer immer böswillig ist. Das ist so, weil Eine ausreichende Anzahl ehrlicher Spieler, die wissen, dass sie zu einem seltenen Zeitpunkt von entscheidender Bedeutung sein werden, werden wählen In diesen Momenten nicht offline zu gehen, noch kann der Gegner sie dazu zwingen, offline zu gehen, da er nicht weiß, wer das ist Entscheidend könnten ehrliche Spieler sein.(6) Sie erfordern eine einfache ehrliche Mehrheit. Im Gegensatz dazu erfordert die aktuelle Version von Algorand eine 2/3 ehrliche Mehrheit. Ein weiteres Papier in unserer Nähe ist Ouroboros: A Provably Secure Proof-of-Stake Blockchain Protocol, von Kiayias, Russell, David und Oliynykov [20]. Auch ihr System erschien nach unserem. Es auch nutzt kryptografische Sortierung, um auf nachweisbare Weise auf einen Arbeitsnachweis zu verzichten. Allerdings sind ihre Das System ist wiederum ein Protokoll im Nakamoto-Stil, bei dem Gabelungen sowohl unvermeidbar als auch häufig sind. (In ihrem Modell müssen die Blöcke jedoch nicht so tief sein wie im Sleepy-Consensus-Modell.) Darüber hinaus Ihr System basiert auf den folgenden Annahmen: In den Worten der Autoren selbst: „(1) die Das Netzwerk ist hochgradig synchron, (2) die Mehrheit der ausgewählten Stakeholder ist bei Bedarf verfügbar an jeder Epoche teilzunehmen, (3) die Stakeholder bleiben nicht für längere Zeit offline, (4) Die Adaptivität von Verfälschungen unterliegt einer kleinen Verzögerung, die in Runden linear gemessen wird der Sicherheitsparameter.“ Im Gegensatz dazu ist Algorand mit überwältigender Wahrscheinlichkeit forkfrei und stützt sich auf keine dieser vier Annahmen. Insbesondere in Algorand ist der Gegner dazu in der Lage die Benutzer, die er kontrollieren möchte, sofort korrumpieren.

Введение

Деньги становятся все более виртуальными. Подсчитано, что около 80% населения США долларов сегодня существуют только в виде записей в бухгалтерской книге [5]. Другие финансовые инструменты следуют этому примеру. В идеальном мире, в котором мы могли бы рассчитывать на универсальную центральную структуру, неуязвимую для Несмотря на все возможные кибератаки, деньги и другие финансовые операции могут осуществляться исключительно электронно. К сожалению, мы живем не в таком мире. Соответственно, децентрализованные криптовалюты, такие как как Bitcoin [29] и системы «smart contract», такие как Ethereum, были предложены [4]. В сердцем этих систем является общий реестр, в котором надежно фиксируется последовательность транзакций. ∗Это более формальная (и асинхронная) версия статьи ArXiv второго автора [24], статьи сам основан на версии Горбунова и Микали [18]. Технологии Algorand являются объектом следующих патентные заявки: US62/117,138, US62/120,916, US62/142,318, US62/218,817, US62/314,601, PCT/US2016/018300. US62/326,865 62/331,654 US62/333,340 US62/343,369 US62/344,667 US62/346,775 US62/351,011 US62/653,482 US62/352,195 US62/363,970 US62/369,447 US62/378,753 US62/383,299 US62/394,091 US62/400,361 US62/403,403 US62/410,721 US62/416,959 US62/422,883 US62/455,444 US62/458,746 US62/459,652 US62/460,928 US62/465,931так же разнообразны, как платежи и контракты, и защищены от несанкционированного доступа. Технология выбора, гарантией такой защиты от несанкционированного доступа является blockchain. Блокчейны лежат в основе таких приложений, как криптовалюты [29], финансовые приложения [4] и Интернет вещей [3]. Несколько техник для управления реестрами на основе blockchain были предложены: доказательство работы [29], доказательство доли [2], практическая византийская отказоустойчивость [8] или какая-то комбинация. Однако в настоящее время управление реестрами может оказаться неэффективным. Например, proof-of-work Bitcoin. подход (основанный на исходной концепции [14]) требует огромного количества вычислений и является расточительным и плохо масштабируется [1]. Кроме того, она де-факто концентрирует власть в очень немногих руках. Поэтому мы хотим предложить новый метод реализации публичного реестра, который предлагает удобство и эффективность централизованной системы, управляемой доверенным и неприкосновенным органом, без неэффективность и слабости текущих децентрализованных реализаций. Мы называем наш подход Algorand, потому что мы используем алгоритмическую случайность для выбора на основе построенного на данный момент реестра, набор проверяющих, которые отвечают за создание следующего блока действительных транзакций. Естественно, мы гарантируем, что такие выборы будут доказуемо защищены от манипуляций и непредсказуемы до тех пор, пока в последнюю минуту, но также и то, что в конечном итоге они общеизвестны. Подход Algorand вполне демократичен в том смысле, что ни в принципе, ни де-факто он создает разные классы пользователей (как «майнеры» и «обычные пользователи» в Bitcoin). В Algorand «все власть принадлежит группе всех пользователей». Одним из примечательных свойств Algorand является то, что его история транзакций может разветвляться только при очень небольших вероятность (например, один на триллион, то есть или даже 10−18). Algorand также может касаться некоторых юридических вопросов. и политические проблемы. Подход Algorand применим к blockchain и, в более общем плане, к любому методу генерации защищенная от несанкционированного доступа последовательность блоков. Мы фактически предложили новый метод — альтернативный и более эффективен, чем blockchains — это может представлять независимый интерес. 1.1 Предположение Bitcoin и технические проблемы Bitcoin — очень изобретательная система, вдохновившая на большое количество последующих исследований. Тем не менее, это также проблематично. Давайте суммируем лежащее в его основе предположение и технические проблемы, которые фактически используются практически всеми криптовалютами, которые, например Bitcoin, основаны на proof-of-work. Для этого резюме достаточно вспомнить, что в Bitcoin пользователь может владеть несколькими открытыми ключами. схемы цифровой подписи, что деньги связаны с открытыми ключами и что платеж представляет собой цифровая подпись, которая переводит некоторую сумму денег с одного открытого ключа на другой. По сути, Bitcoin организует все обработанные платежи в цепочку блоков B1, B2, . . ., каждый из которых состоит из нескольких платежи, такие, что все платежи B1, взятые в любом порядке, за которыми следуют платежи B2 в любом порядке, и т. д. представляют собой последовательность действительных платежей. Каждый блок генерируется в среднем каждые 10 минут. Эта последовательность блоков представляет собой цепочку, поскольку она построена так, чтобы гарантировать, что любое изменение, даже в одном блоке, проникает во все последующие блоки, что облегчает обнаружение любых изменений история платежей. (Как мы увидим, это достигается за счет включения в каждый блок криптографического hash предыдущего.) Такая блочная структура называется blockchain. Предположение: честное большинство вычислительной мощности Bitcoin предполагает, что никакой злонамеренный организация (а не коалиция скоординированных злоумышленников) контролирует большую часть вычислительных ресурсов. мощность, предназначенная для генерации блоков. Фактически, такой объект сможет изменить blockchain,и таким образом переписать историю платежей, как угодно. В частности, он мог совершить платеж \(\wp\), получить оплаченные льготы, а затем «стирать» любые следы \(\wp\). Техническая проблема 1: Вычислительные отходы Подход Bitcoin proof-of-work к блокированию генерация требует огромного количества вычислений. В настоящее время насчитывается всего несколько сотен тысячи открытых ключей в системе, 500 самых мощных суперкомпьютеров могут только собрать всего 12,8% от общей вычислительной мощности, требуемой от игроков Bitcoin. Это объем вычислений значительно увеличится, если к системе присоединится значительно больше пользователей. Техническая проблема 2: Концентрация власти Сегодня из-за огромного количества требуется вычисление, пользователь, пытающийся сгенерировать новый блок, используя обычный рабочий стол (не говоря уже о сотовый телефон), рассчитывает потерять деньги. Действительно, для вычисления нового блока на обычном компьютере ожидаемая стоимость электроэнергии, необходимой для питания вычислений, превышает ожидаемое вознаграждение. Только используя пулы специально созданных компьютеров (которые не делают ничего, кроме «добычи новых блоков»), один может рассчитывать на получение прибыли за счет создания новых блоков. Соответственно, сегодня де-факто существует два разрозненные классы пользователей: обычные пользователи, которые только совершают платежи, и специализированные майнинговые пулы, которые ищут только новые блоки. Поэтому неудивительно, что с недавнего времени общая вычислительная мощность для блоков поколение находится всего в пяти пулах. В таких условиях предположение о том, что большинство Честная вычислительная мощность становится менее достоверной. Техническая проблема 3: Неясность В Bitcoin blockchain не обязательно уникален. действительно его последняя часть часто разветвляется: blockchain может быть, скажем, B1, . . . , Бк, Б' к+1, Б' k+2, согласно один пользователь и B1, . . . , Бк, Б'' к+1, Б'' к+2, Б'' k+3 по словам другого пользователя. Только после того, как пройдет несколько блоков добавлены в цепочку, можно ли быть достаточно уверенным, что первые k + 3 блока будут одинаковыми? для всех пользователей. Таким образом, нельзя сразу полагаться на выплаты, содержащиеся в последнем блоке цепь. Разумнее подождать и посмотреть, станет ли блок достаточно глубоким в blockchain и, таким образом, достаточно стабилен. Отдельно были высказаны опасения со стороны правоохранительных органов и денежно-кредитной политики в отношении Bitcoin.1. 1.2 Algorand, в двух словах Настройка Algorand работает в очень жестких условиях. Вкратце, (a) Неразрешенные и разрешенные среды. Algorand работает эффективно и безопасно даже в полностью закрытой среде, где сколь угодно много пользователей могут присоединиться к системе в любое время, без какой-либо проверки или разрешения любого рода. Конечно, Algorand работает. еще лучше в разрешенной среде. 1(Псевдо) анонимность, обеспечиваемая платежами Bitcoin, может быть использована неправомерно для отмывания денег и/или финансирования. преступников или террористических организаций. Традиционные банкноты или золотые слитки, которые в принципе предлагают идеальные анонимность должна представлять собой ту же проблему, но физическая форма этих валют существенно замедляет движение денег. переводы, чтобы обеспечить определенную степень контроля со стороны правоохранительных органов. Способность «печатать деньги» является одной из основных полномочий национального государства. Поэтому в принципе массовое принятие независимо плавающей валюты может ограничить эту власть. Однако в настоящее время Bitcoin далек от представляет собой угрозу правительственной денежно-кредитной политике и из-за проблем с масштабируемостью, возможно, никогда ею не станет.(б) Очень враждебная среда. Algorand противостоит очень сильному противнику, который может (1) мгновенно испортить любого пользователя, которого он хочет, в любое время, когда он хочет, при условии, что в неразрешенная среда, 2/3 денег в системе принадлежит честному пользователю. (В разрешенная среда, независимо от денег, достаточно, чтобы 2/3 пользователей были честными.) (2) полностью контролировать и идеально координировать всех коррумпированных пользователей; и (3) запланировать доставку всех сообщений при условии, что каждое сообщение m отправлено честным пользователем. достигает 95% честных пользователей за время \(\lambda\)m, которое зависит исключительно от размера m. Основные свойства Несмотря на присутствие нашего мощного противника, в Algorand • Требуемый объем вычислений минимален. По сути, независимо от того, сколько пользователей присутствующих в системе, каждый из полутора сотен пользователей должен выполнить не более нескольких секунд расчет. • Новый блок создается менее чем за 10 минут и фактически никогда не покидает blockchain. Например, ожидаемое время генерации блока в первом варианте меньше чем Λ + 12,4\(\lambda\), где Λ — время, необходимое для распространения блока в одноранговой сплетне независимо от того, какой размер блока вы выберете, а \(\lambda\) — это время для распространения 1500 сообщений 200Blong. (Поскольку в действительно децентрализованной системе Λ по существу является внутренней задержкой, в Algorand ограничивающим фактором при генерации блоков является скорость сети.) Второй вариант осуществления имеет фактически был протестирован экспериментально (?), что указывает на то, что блок генерируется менее чем за 40 секунды. Кроме того, blockchain из Algorand может разветвляться только с пренебрежимо малой вероятностью (т. е. менее одной в триллионе), и, таким образом, пользователи могут рассчитывать на платежи, содержащиеся в новом блоке, как только появляется блок. • Вся власть принадлежит самим пользователям. Algorand — это настоящая распределенная система. В частности, нет экзогенных объектов (таких как «майнеры» в Bitcoin), которые могли бы контролировать, какие транзакции признаны. Техники Algorand. 1. Новый и быстрый протокол Византийского соглашения. Algorand генерирует новый блок через новый криптографический протокол передачи сообщений двоичного византийского соглашения (BA), BA⋆. Протокол BA⋆не только обладает некоторыми дополнительными свойствами (которые мы вскоре обсудим), но и очень быстр. Грубо говоря, его версия с двоичным вводом состоит из трехэтапного цикла, в котором игрок i отправляет одиночный сигнал. сообщение mi всем остальным игрокам. Выполняется в полной и синхронной сети с более чем 2/3 игроков честны, с вероятностью > 1/3, после каждого цикла протокол заканчивается соглашение. (Мы подчеркиваем, что протокол BA⋆ удовлетворяет первоначальному определению византийского соглашения. Пиза, Шостака и Лэмпорта [31] без каких-либо ослаблений.) Algorand использует этот двоичный протокол BA для достижения соглашения в наших различных коммуникациях. модель, на каждом новом блоке. Согласованный блок затем сертифицируется через заданное количество цифровую подпись соответствующих проверяющих лиц и распространяется по сети. 2. Криптографическая сортировка. Несмотря на то, что протокол BA⋆ очень быстрый, его дальнейшее развитие могло бы принести пользу. скорость, когда в нее играют миллионы пользователей. Соответственно, Algorand выбирает игроков BA⋆, которые будутгораздо меньшее подмножество всех пользователей. Во избежание различного рода концентрации власти проблема, каждый новый блок Br будет построен и согласован посредством нового выполнения BA⋆, отдельным набором выбранных проверяющих, SV r. В принципе, подобрать такой набор может быть так же сложно, как и выбрав Br напрямую. Мы решаем эту потенциальную проблему с помощью подхода, который мы называем проницательное предложение Мориса Херлихи — криптографическая сортировка. Сортировка – это практика выбор должностных лиц случайным образом из большого числа подходящих лиц [6]. (практиковалась сортировка на протяжении веков: например, республиками Афин, Флоренции и Венеции. В современном судебном В системах присяжных часто используется случайный отбор. Случайная выборка также была недавно за выборы выступал Дэвид Чаум [9].) В децентрализованной системе, конечно, выбор случайные монеты, необходимые для случайного выбора членов каждого набора проверяющих SV r, проблематичны. Таким образом, мы прибегаем к криптографии, чтобы выбрать каждый набор проверяющих из совокупности всех пользователей. таким образом, который гарантированно будет автоматическим (т. е. не требующим обмена сообщениями) и случайным. По сути, мы используем криптографическую функцию для автоматического определения по предыдущему блоку Br-1, пользователь, лидер, отвечающий за предложение нового блока Br, и набор верификаторов SV r, в поручить достичь согласия по предложенному лидером блоку. Поскольку злонамеренные пользователи могут повлиять состав Br−1 (например, выбрав некоторые из его платежей) мы специально строим и используем дополнительные входные данные, чтобы доказать, что лидер r-го блока и набор проверяющих SV r действительно являются выбран случайно. 3. Количество (семя) Qr. Мы используем последний блок Br-1 в blockchain, чтобы автоматически определяет следующий набор верификаторов и лидера, отвечающего за построение нового блока Бр. Проблема с этим подходом заключается в том, что, просто выбрав немного другой платеж в В предыдущем раунде наш могущественный противник получает огромный контроль над следующим лидером. Даже если он контролировал только 1/1000 игроков/денег в системе, он мог гарантировать, что все лидеры злонамеренный. (См. раздел «Интуиция» 4.1.) Эта проблема является центральной для всех подходов proof-of-stake, и, насколько нам известно, она до сих пор не решена удовлетворительно. Чтобы решить эту задачу, мы намеренно создаем и постоянно обновляем отдельный и тщательно определенную величину Qr, которая, как доказуемо, не только непредсказуема, но и не поддается влиянию с точки зрения наших мощный противник. Мы можем называть Qr r-м семенем, поскольку именно из Qr выбирает Algorand, посредством секретной криптографической сортировки все пользователи, которые будут играть особую роль в создании й блок. 4. Секретная криптографическая сортировка и секретные учетные данные. Случайным образом и однозначно используя текущий последний блок, Br-1, для выбора набора проверяющих и ответственного лидера. строительства нового блока Бр недостаточно. Поскольку Br−1 должно быть известно до генерации Br, должна быть также известна последняя независимая величина Qr−1, содержащаяся в Br−1. Соответственно, так являются проверяющими и лидером, отвечающим за вычисление блока Br. Таким образом, наш могущественный Противник могли бы немедленно развратить их всех, прежде чем они вступят в какую-либо дискуссию о Бр, чтобы получить полный контроль над блоком, который они сертифицируют. Чтобы предотвратить эту проблему, лидеры (а фактически и проверяющие тоже) тайно узнают о своей роли, но могут вычислить правильные учетные данные, способные доказать всем, кто действительно выполняет эту роль. Когда пользователь тайно осознает, что является лидером следующего блока, сначала он тайно собирает свой самостоятельно предложенный новый блок, а затем распространяет его (чтобы его можно было сертифицировать) вместе со своим собственным учетные данные. Таким образом, хотя Противник сразу поймет, кто лидер следующего блок есть, и хотя он может развратить его сразу, Противнику будет уже слишком поздно повлиять на выбор нового блока. Действительно, он больше не может «перезвонить» посланию лидера.чем могущественное правительство сможет положить обратно в бутылку сообщение, вирусно распространенное WikiLeaks. Как мы увидим, мы не можем гарантировать ни уникальность лидера, ни то, что все точно знают, кто лидер. есть, включая самого лидера! Но в Algorand однозначный прогресс будет гарантирован. 5. Заменяемость игроков. После того, как он предложит новый блок, лидер может с тем же успехом «умереть» (или быть испорчен Противником), потому что его работа выполнена. Но для проверяющих в SV r дела обстоят сложнее. простой. Действительно, отвечая за сертификацию нового блока Br с достаточным количеством подписей, они должны сначала провести византийское соглашение по предложенному вождем блоку. Проблема в том, что независимо от того, насколько он эффективен, BA⋆ требует нескольких шагов и честности > 2/3 своих игроков. Это проблема, поскольку из соображений эффективности набор игроков BA⋆ состоит из небольшого набора SV r случайно выбранный среди множества всех пользователей. Таким образом, наш могущественный Противник, хотя и неспособный испортил 1/3 всех пользователей, безусловно, может испортить всех членов SV r! К счастью, мы докажем, что протокол BA⋆, выполняющийся путем распространения сообщений в одноранговой сети, может быть заменен игроком. Это новое требование означает, что протокол правильно и эффективно достигает консенсуса, даже если каждый его шаг выполняется совершенно новым и случайным образом и независимо выбранный набор игроков. Таким образом, при миллионах пользователей каждая небольшая группа игроков связанный с шагом BA⋆, скорее всего, имеет пустое пересечение со следующим множеством. Кроме того, наборы игроков разных ступеней BA⋆, вероятно, будут иметь совершенно разные мощности. Более того, члены каждой группы не знают, кто будет следующей группой игроков. быть, и не передавать тайно никакого внутреннего состояния. Свойство сменного игрока на самом деле имеет решающее значение для победы над динамичным и очень мощным игроком. Противника мы видим. Мы считаем, что протоколы сменных игроков окажутся решающими во многих контексты и приложения. В частности, они будут иметь решающее значение для безопасного выполнения небольших подпротоколов. встроен в большую вселенную игроков с динамичным противником, который, будучи в состоянии развратить даже небольшая часть от общего числа игроков, не имеет труда развратить всех игроков в меньших субпротокол. Дополнительное свойство/техника: ленивая честность Честный пользователь следует своим предписаниям инструкции, которые включают в себя пребывание в сети и запуск протокола. Поскольку Algorand имеет лишь скромные требования к вычислениям и связи, нахождение в сети и запуск протокола «в фон» не является большой жертвой. Конечно, некоторые «отсутствия» среди честных игроков, как те, из-за внезапной потери соединения или необходимости перезагрузки автоматически допускаются (поскольку мы всегда можем считать таких немногих игроков временно злонамеренными). Отметим, однако, что Algorand можно просто адаптировать для работы в новой модели, в которой будут честные пользователи большую часть времени офлайн. Нашу новую модель можно неформально представить следующим образом. Ленивая честность. Грубо говоря, пользователь i является ленивым, но честным, если (1) он следует всем предписанным ему правилам. инструкции, когда его просят принять участие в протоколе, и (2) его просят принять участие протоколу лишь в редких случаях и с соответствующим предварительным уведомлением. При таком смягченном представлении о честности мы можем быть еще более уверены в том, что честные люди будут под рукой, когда они нам понадобятся, и Algorand гарантирует, что в этом случае Система работает безопасно, даже если в определенный момент времени большинство участвующих игроков являются злонамеренными.1.3 Тесно связанные работы Подходы Proof-of-Work (например, упомянутые [29] и [4]) вполне ортогональны нашим. Как и подходы, основанные на византийском соглашении о передаче сообщений или практической византийской отказоустойчивости (например, процитированный [8]). Действительно, эти протоколы не могут быть запущены среди множества всех пользователей и не могут, в нашей модели быть ограничены достаточно небольшим набором пользователей. Фактически, наш могущественный противник мой немедленно испортить всех пользователей, участвующих в небольшой группе, обвиненной в фактическом запуске протокола BA. Наш подход можно считать связанным с доказательством доли [2] в том смысле, что «власть» пользователей в блочном строительстве пропорциональна деньгам, которыми они владеют в системе (в отличие, скажем, от деньги, которые они положили на «эскроу»). Наиболее близкой к нашей статье является Модель сонного консенсуса Пасса и Ши [30]. Чтобы избежать тяжелые вычисления, необходимые в подходе proof-of-work, на которые опирается их статья (и любезно кредиты) секретная криптографическая сортировка Algorand. Этот решающий аспект является общим для нескольких Между нашими статьями существуют существенные различия. В частности, (1) Их установка разрешена. Напротив, Algorand также является системой без разрешений. (2) Они используют протокол в стиле Накамото, поэтому их blockchain часто разветвляется. Хотя обходясь без proof-of-work, в их протоколе тайно выбранному лидеру предлагается удлинить самый длинный действительный (в более широком смысле) blockchain. Таким образом, вилки неизбежны и приходится ждать, чтобы блок находится достаточно «глубоко» в цепи. Ведь для достижения своих целей с противником способные к адаптивным повреждениям, они требуют, чтобы блок имел глубину поли(N), где N представляет собой общее количество пользователей в системе. Обратите внимание, что даже если предположить, что блок может быть создан в минуту, если бы было N = 1M пользователей, то пришлось бы ждать около 2M лет блок станет глубиной N 2, и в течение примерно 2 лет блок станет глубиной N. Напротив, blockchain Algorand разветвляется с незначительной вероятностью, даже несмотря на то, что Противник повредил пользователи сразу и адаптивно, и на его новые блоки можно сразу же положиться. (3) Они не занимаются отдельными византийскими соглашениями. В каком-то смысле они лишь гарантируют «возможный консенсус в отношении растущей последовательности ценностей». Это протокол репликации состояния, а не чем BA, и не может использоваться для достижения византийского соглашения об индивидуальной ценности интересов. Напротив, Algorand при желании можно использовать только один раз, чтобы позволить миллионам пользователей быстро достичь византийского соглашения о конкретной стоимости процентов. (4) Они требуют слабо синхронизированных часов. То есть часы всех пользователей смещены на небольшое время. δ. Напротив, в Algorand часы должны иметь только (по сути) одинаковую «скорость». (5) Их протокол работает с ленивыми, но честными пользователями или с честным большинством онлайн-пользователей. Они выражают благодарность Algorand за то, что он поднял вопрос о массовом выходе честных пользователей из сети, а также за в ответ выдвигая модель ленивой честности. Их протокол работает не только для ленивых модель честности, но и в их состязательной сонной модели, где противник выбирает, каких пользователей находятся онлайн, а какие оффлайн, при условии, что большинство онлайн-пользователей всегда честны.2 2Первоначальная версия их статьи фактически рассматривала только безопасность в их состязательной сонной модели.

исходная версия Algorand, которая предшествует их версии, также явно предполагала, что определенное большинство онлайн-игроки всегда честны, но явно исключили это из рассмотрения в пользу модели ленивой честности. (Например, если в какой-то момент половина честных пользователей решит выйти из сети, то большинство пользователей on-line вполне может быть вредоносным. Таким образом, чтобы этого не произошло, Противник должен форсировать большую часть своих сил. испорченные игроки тоже выходят из игры, что явно противоречит его собственным интересам.) Обратите внимание, что протокол с большинством голосов ленивых, но честных игроков прекрасно работает, если большинство онлайн-пользователей всегда являются злонамеренными. Это так, потому что достаточное количество честных игроков, зная, что они будут иметь решающее значение в какой-то редкий момент времени, выберут не выходить из сети в эти моменты, и при этом Противник не может заставить их отключиться от сети, поскольку он не знает, кто решающими могут оказаться честные игроки.(6) Они требуют простого честного большинства. Напротив, текущая версия Algorand требует честное большинство в 2/3. Еще одна близкая нам статья — «Уроборос: доказуемо безопасный протокол блокчейна с доказательством доли», Киайяс, Рассел, Дэвид и Олейников [20]. И их система появилась после нашей. Это также использует криптографическую сортировку, чтобы обойтись без доказательства работы доказуемым образом. Однако их Система, опять же, представляет собой протокол в стиле Накамото, в котором разветвления неизбежны и часты. (Однако в их модели блоки не должны быть такими глубокими, как в модели сонного консенсуса.) Более того, их система опирается на следующие предположения: по словам самих авторов, «(1) сеть высокосинхронна, (2) большинство выбранных заинтересованных сторон доступны по мере необходимости участвовать в каждой эпохе, (3) заинтересованные стороны не остаются в автономном режиме в течение длительных периодов времени, (4) адаптивность коррупции подвержена небольшой задержке, которая измеряется в раундах, линейных по параметр безопасности». Напротив, Algorand с подавляющей вероятностью не имеет вилки и не опирается ни на одно из этих 4 предположений. В частности, в Algorand Противник имеет возможность мгновенно развратить пользователей, которых он хочет контролировать.

Grundlagen

2.1 Kryptografische Primitive Ideales Hashing. Wir werden uns auf eine effizient berechenbare kryptografische hash-Funktion H verlassen, die ordnet beliebig lange Strings binären Strings fester Länge zu. Wir modeln einer langen Tradition folgend H als zufälliges oracle, im Wesentlichen eine Funktion, die jede mögliche Zeichenfolge s einem zufälligen und zuordnet unabhängig ausgewählte (und dann festgelegte) Binärzeichenfolge H(s) der gewählten Länge. In diesem Artikel hat H 256 Bit lange Ausgänge. Tatsächlich ist diese Länge kurz genug, um dies zu ermöglichen systemeffizient und lang genug, um das System sicher zu machen. Wir wollen zum Beispiel, dass H kollisionsresistent ist. Das heißt, es sollte schwierig sein, zwei verschiedene Zeichenfolgen x und y zu finden, sodass H(x) = H(y). Wenn H ein zufälliger oracle mit 256 Bit langen Ausgaben ist, ist das Finden eines solchen Zeichenfolgenpaars tatsächlich möglich schwierig. (Bei einem zufälligen Versuch und unter Berufung auf das Geburtstagsparadoxon wäre 2256/2 = 2128 erforderlich Versuche.) Digitales Signieren. Mithilfe digitaler Signaturen können Benutzer Informationen untereinander authentifizieren ohne irgendwelche geheimen Schlüssel weiterzugeben. Ein digitales Signaturschema besteht aus drei schnellen Algorithmen: ein probabilistischer Schlüsselgenerator G, ein Signierungsalgorithmus S und ein Verifizierungsalgorithmus V. Bei einem Sicherheitsparameter k, einer ausreichend hohen Ganzzahl, verwendet ein Benutzer i G, um ein Paar zu erzeugen k-Bit-Schlüssel (d. h. Zeichenfolgen): ein „öffentlicher“ Schlüssel PKI und ein passender „geheimer“ Signaturschlüssel Ski. Entscheidend ist, a Der öffentliche Schlüssel „verrät“ seinen entsprechenden geheimen Schlüssel nicht. Das heißt, selbst wenn man Kenntnisse über PKI hat, nein Jemand anderes als ich ist in der Lage, Ski in weniger als astronomischer Zeit zu berechnen. Benutzer i nutzt Ski, um Nachrichten digital zu signieren. Für jede mögliche Nachricht (Binärzeichenfolge) m, i zuerst hashes m und führt dann den Algorithmus S auf den Eingängen H(m) und Ski aus, um die k-Bit-Zeichenfolge zu erzeugen sigpki(m) \(\triangleq\)S(H(m), ski) .3 3Da H kollisionsresistent ist, ist es praktisch unmöglich, dass man durch das Signieren von m versehentlich etwas anderes „signiert“. Nachricht m′.Die Binärzeichenfolge sigpki(m) wird als digitale Signatur von m (relativ zu pki) von i bezeichnet und kann es sein einfacher mit sigi(m) bezeichnet, wenn der öffentliche Schlüssel pki aus dem Kontext klar hervorgeht. Jeder, der pki kennt, kann damit die von i erstellten digitalen Signaturen überprüfen. Konkret: auf gibt (a) den öffentlichen Schlüssel pki eines Spielers i, (b) eine Nachricht m und (c) eine Zeichenfolge s ein, d. h. i ist angeblich Wenn die digitale Signatur der Nachricht m vorliegt, gibt der Verifizierungsalgorithmus V entweder JA oder NEIN aus. Die Eigenschaften, die wir von einem digitalen Signaturschema benötigen, sind: 1. Legitime Signaturen werden immer verifiziert: Wenn s = sigi(m), dann V (pki, m, s) = Y ES; und 2. Digitale Signaturen sind schwer zu fälschen: Ohne Wissen über die Zeit, um eine solche Zeichenfolge zu finden dass V (pki, m, s) = Y ES für eine Nachricht m, die nie von i signiert wurde, astronomisch lang ist. (Aufgrund der strengen Sicherheitsanforderungen von Goldwasser, Micali und Rivest [17] ist dies wahr selbst wenn man die Signatur einer anderen Nachricht erhalten kann.) Um zu verhindern, dass jemand anderes Nachrichten in seinem Namen signiert, muss ein Spieler seinen behalten Der Signaturschlüssel ist geheim (daher der Begriff „geheimer Schlüssel“) und ermöglicht es jedem, die Nachrichten zu überprüfen Er unterschreibt, ich habe ein Interesse daran, seinen Schlüssel-PKI zu veröffentlichen (daher der Begriff „öffentlicher Schlüssel“). Im Allgemeinen ist eine Nachricht m nicht aus ihrer Signatur sigi(m) abrufbar. Um virtuell zu handeln mit digitalen Signaturen, die die konzeptionell praktische Eigenschaft „Abrufbarkeit“ erfüllen (d. h. zu garantieren, dass der Unterzeichner und die Nachricht aus einer Signatur leicht errechenbar sind, definieren wir SIGpki(m) = (i, m, sigpki(m)) und SIGi(m) = (i, m, sigi(m)), wenn pki klar ist. Einzigartiges digitales Signieren. Wir berücksichtigen auch digitale Signaturschemata (G, S, V), die die Anforderungen erfüllen folgende zusätzliche Eigenschaft. 3. Einzigartigkeit. Es ist schwierig, solche Zeichenfolgen pk′, m, s und s′ zu finden s ̸= s′ und V (pk′, m, s) = V (pk′, m, s′) = 1. (Beachten Sie, dass die Eindeutigkeitseigenschaft auch für Zeichenfolgen pk′ gilt, die nicht legitim generiert wurden öffentliche Schlüssel. Insbesondere impliziert die Einzigartigkeitseigenschaft jedoch, dass, wenn man die verwendet spezifizierter Schlüsselgenerator G, um einen öffentlichen Schlüssel pk zusammen mit einem passenden geheimen Schlüssel sk zu berechnen, Und so wusste Sk, dass es auch für ihn im Grunde unmöglich sein würde, zwei verschiedene digitale zu finden Signaturen derselben Nachricht relativ zu pk.) Bemerkungen • Von eindeutigen Signaturen bis hin zu überprüfbaren Zufallsfunktionen. Relativ zu einem digitalen Signaturschema mit der Eindeutigkeitseigenschaft, dem die Zuordnung m \(\to\) H(sigi(m)) zugeordnet ist jede mögliche Zeichenfolge m, eine eindeutige, zufällig ausgewählte 256-Bit-Zeichenfolge, und deren Richtigkeit Die Zuordnung kann anhand der Signatur sigi(m) nachgewiesen werden. Das heißt, ein ideales hashing- und digitales Signaturschema, das die Eindeutigkeitseigenschaft im Wesentlichen erfüllt stellen eine elementare Implementierung einer überprüfbaren Zufallsfunktion bereit, wie sie eingeführt wurde und von Micali, Rabin und Vadhan [27]. (Ihre ursprüngliche Implementierung war zwangsläufig komplexer, da sie sich nicht auf ideale hashing verlassen haben.)• Drei unterschiedliche Anforderungen an digitale Signaturen. In Algorand verlässt sich ein Benutzer auf digital Unterschriften für (1) Authentifizierung meiner eigenen Zahlungen. In dieser Anwendung können Schlüssel „langfristig“ (d. h. gewohnt) sein signieren viele Nachrichten über einen langen Zeitraum) und stammen aus einem gewöhnlichen Signaturschema. (2) Generieren von Anmeldeinformationen, die beweisen, dass i berechtigt ist, bei einigen Schritten einer Runde r zu handeln. Hier, Schlüssel können langfristig sein, müssen aber aus einem Schema stammen, das die Eindeutigkeitseigenschaft erfüllt. (3) Authentifizieren der Nachricht, die ich in jedem Schritt sendet, in dem er handelt. Hier müssen Schlüssel sein ephemer (d. h. nach der ersten Verwendung zerstört), können aber aus einem gewöhnlichen Signaturschema stammen. • Eine Vereinfachung mit geringem Aufwand. Der Einfachheit halber stellen wir uns vor, dass jeder Benutzer einen einzigen Langzeitschlüssel hat. Dementsprechend muss ein solcher Schlüssel aus einem Signaturschema mit Eindeutigkeit stammen Eigentum. Eine solche Einfachheit hat einen geringen Rechenaufwand. Normalerweise tatsächlich einzigartig digital Die Erstellung und Überprüfung von Signaturen ist etwas teurer als bei gewöhnlichen Signaturen. 2.2 Das idealisierte öffentliche Hauptbuch Algorand versucht, das folgende Zahlungssystem nachzuahmen, basierend auf einem idealisierten öffentlichen Hauptbuch. 1. Der Anfangsstatus. Geld ist mit einzelnen öffentlichen Schlüsseln verknüpft (privat generierte und Eigentum der Benutzer). Lassen Sie pk1, . . . , pkj seien die anfänglichen öffentlichen Schlüssel und a1, . . . , aj ihre jeweiligen Anfangsbeträge an Geldeinheiten, dann ist der Anfangsstatus S0 = (pk1, a1), . . . , (pkj, aj) , von dem angenommen wird, dass es im System allgemein bekannt ist. 2. Zahlungen. Sei pk ein öffentlicher Schlüssel, der derzeit \(\geq\)0 Geldeinheiten hat, und pk′ ein anderer öffentlicher Schlüssel Schlüssel und a′ eine nicht negative Zahl, die nicht größer als a ist. Dann ist eine (gültige) Zahlung \(\wp\)eine digitale Unterschrift, bezogen auf PK, die zusammen die Übertragung von a′-Geldeinheiten von PK auf PK′ angibt mit einigen Zusatzinformationen. In Symbolen, \(\wp\)= SIGpk(pk, pk′, a′, I, H(I)), Dabei steht „I“ für alle zusätzlichen Informationen, die als nützlich, aber nicht sensibel erachtet werden (z. B. Zeit). Informationen und eine Zahlungskennung) und ich alle zusätzlichen Informationen, die als vertraulich gelten (z. B. der Grund der Zahlung, möglicherweise die Identität der Eigentümer von pk und pk′ usw.). Wir bezeichnen pk (oder seinen Besitzer) als Zahler, jeden pk′ (oder seinen Besitzer) als Zahlungsempfänger und a′ als die Höhe der Zahlung \(\wp\). Kostenloser Beitritt über Zahlungen. Beachten Sie, dass Benutzer jederzeit dem System beitreten können Generieren ihrer eigenen öffentlichen/geheimen Schlüsselpaare. Dementsprechend ist der öffentliche Schlüssel pk′, der in erscheint Bei der oben genannten Zahlung kann es sich um einen neu generierten öffentlichen Schlüssel handeln, der noch nie Geld „besessen“ hat vor. 3. Das magische Hauptbuch. Im Idealized System sind alle Zahlungen gültig und manipulationssicher Liste L der Zahlungssätze, die „am Himmel veröffentlicht“ sind, damit jeder sie sehen kann: L = 1 ZAHLEN, 2 ZAHLEN, . . . ,Jeder Block PAY r+1 besteht aus der Menge aller Zahlungen, die seit dem Erscheinen des Blocks getätigt wurden ZAHLEN r. Im idealen System erscheint ein neuer Block nach einer festen (oder endlichen) Zeitspanne. Diskussion. • Allgemeinere Zahlungen und nicht ausgegebene Transaktionsausgabe. Allgemeiner gesagt, wenn es sich um einen öffentlichen Schlüssel handelt Besitzt pk einen Betrag a, so darf eine gültige Zahlung \(\wp\)von pk die Beträge a′ übertragen 1, ein‘ 2, . . ., jeweils zu den Tasten pk′ 1, Pk′ 2, . . ., solange P j a′ j \(\leq\)a. In Bitcoin und ähnlichen Systemen wird das Geld, das einem öffentlichen Schlüssel gehört, getrennt aufgeteilt Beträge und eine Zahlung \(\wp\)der pk müssen einen solchen abgesonderten Betrag in voller Höhe überweisen. Wenn pk nur einen Bruchteil a′ < a von a auf einen anderen Schlüssel übertragen möchte, muss er auch den übertragen Balance, die nicht ausgegebene Transaktionsausgabe, an einen anderen Schlüssel, möglicherweise pk selbst. Algorand funktioniert auch mit Schlüsseln mit getrennten Beträgen. Um sich jedoch auf die zu konzentrieren Aufgrund der neuen Aspekte von Algorand ist es konzeptionell einfacher, bei unseren einfacheren Zahlungsformen zu bleiben und Schlüssel, denen ein einzelner Betrag zugeordnet ist. • Aktueller Status. Das Idealisierte Schema liefert keine direkten Informationen über den Strom Status des Systems (d. h. ungefähr, wie viele Geldeinheiten jeder öffentliche Schlüssel hat). Diese Informationen ist aus dem Magic Ledger ableitbar. Im idealen System speichert und aktualisiert ein aktiver Benutzer kontinuierlich die neuesten Statusinformationen. oder er müsste es sonst rekonstruieren, entweder von Grund auf oder vom letzten Mal an habe es berechnet. (In der nächsten Version dieses Dokuments werden wir Algorand erweitern, um es zu ermöglichen Benutzer können den aktuellen Status effizient rekonstruieren.) • Sicherheit und „Privatsphäre“. Digitale Signaturen garantieren, dass niemand eine Zahlung fälschen kann ein anderer Benutzer. Bei einer Zahlung \(\wp\) sind nicht die öffentlichen Schlüssel und der Betrag verborgen, sondern die Sensiblen Informationen, die ich habe. Tatsächlich erscheint nur H(I) in \(\wp\), und da H eine ideale hash-Funktion ist, ist H(I) ist ein zufälliger 256-Bit-Wert, und daher gibt es keine Möglichkeit herauszufinden, um was ich besser war als um einfach nur erraten. Doch um zu beweisen, was ich getan habe (z. B. um den Grund für die Zahlung zu beweisen), war der Der Zahler kann nur I offenbaren. Die Richtigkeit des offenbarten I kann durch Berechnen von H(I) überprüft werden. und Vergleichen des resultierenden Werts mit dem letzten Element von \(\wp\). Da H tatsächlich stoßfest ist, Es ist schwierig, einen zweiten Wert I′ zu finden, so dass H(I) = H(I′). 2.3 Grundbegriffe und Notationen Schlüssel, Benutzer und Besitzer Sofern nicht anders angegeben, ist jeder öffentliche Schlüssel (kurz „Schlüssel“) langfristig und relativ zu einem digitalen Signaturschema mit der Eindeutigkeitseigenschaft. Ein öffentlicher Schlüssel, den ich hinzufüge das System, wenn ein anderer öffentlicher Schlüssel j, der sich bereits im System befindet, eine Zahlung an i vornimmt. Für die Farbe personifizieren wir Schlüssel. Wir bezeichnen einen Schlüssel i als „er“, sagen, dass ich ehrlich ist, dass ich sende und empfängt Nachrichten usw. Benutzer ist ein Synonym für Schlüssel. Wenn wir einen Schlüssel unterscheiden wollen von die Person, der es gehört, wir verwenden jeweils die Begriffe „digitaler Schlüssel“ und „Eigentümer“. Erlaubnislose und erlaubte Systeme. Ein System ist erlaubnislos, wenn ein digitaler Schlüssel frei ist jederzeit beitreten und ein Eigentümer kann mehrere digitale Schlüssel besitzen; und es ist erlaubt, sonst.Einzigartige Darstellung Jedes Objekt in Algorand hat eine eindeutige Darstellung. Insbesondere jede Menge {(x, y, z, . . .) : x \(\in\)X, y \(\in\)Y, z \(\in\)Z, . . .} wird auf eine vorab festgelegte Weise geordnet: z. B. zuerst lexikografisch in x, dann in y usw. Uhren mit gleicher Geschwindigkeit Es gibt keine globale Uhr, sondern jeder Benutzer hat seine eigene Uhr. Benutzeruhren müssen in keiner Weise synchronisiert werden. Wir gehen jedoch davon aus, dass sie alle die gleiche Geschwindigkeit haben. Wenn es beispielsweise laut der Uhr eines Benutzers i 12:00 Uhr ist, kann es entsprechend 14:30 Uhr sein die Uhr eines anderen Benutzers j, aber wenn es laut der Uhr von i 12:01 ist, ist es laut i 2:31 zu js Uhr. Das heißt: „Eine Minute ist für jeden Benutzer gleich (ausreichend, im Wesentlichen gleich).“ Runden Algorand ist in logischen Einheiten organisiert, r = 0, 1, . . ., sogenannte Runden. Wir verwenden konsequent hochgestellte Zeichen, um Runden anzuzeigen. Um anzuzeigen, dass eine nicht numerische Größe Q (z. B. eine Zeichenfolge, ein öffentlicher Schlüssel, ein Satz, eine digitale Signatur usw.) auf ein rundes r bezieht, schreiben wir einfach Qr. Nur wenn Q eine echte Zahl ist (im Gegensatz zu einer als Zahl interpretierbaren Binärzeichenfolge), tun Sie dies wir schreiben Q(r), sodass das Symbol r nicht als Exponent von Q interpretiert werden kann. Zu Beginn einer Runde r > 0 ist die Menge aller öffentlichen Schlüssel PKr und der Systemstatus ist Sr = n ich, ein(r) ich , . . .  : i \(\in\)PKro , wo a(r) ich ist der Geldbetrag, der dem öffentlichen Schlüssel i zur Verfügung steht. Beachten Sie, dass PKr daraus abgeleitet werden kann Sr, und dass Sr auch andere Komponenten für jeden öffentlichen Schlüssel i angeben kann. Für Runde 0 ist PK0 der Satz der anfänglichen öffentlichen Schlüssel und S0 der Anfangsstatus. Sowohl PK0 als auch Es wird davon ausgegangen, dass S0 im System allgemein bekannt sind. Der Einfachheit halber zu Beginn der Runde r, also sind PK1, . . . , PKr und S1, . . . , Sr. In einer Runde r geht der Systemstatus von Sr zu Sr+1 über: symbolisch, Runde r: Sr −→Sr+1. Zahlungen In Algorand führen die Benutzer kontinuierlich Zahlungen durch (und verbreiten diese auf diese Weise). beschrieben in Abschnitt 2.7). Eine Zahlung \(\wp\)eines Benutzers i \(\in\)PKr hat das gleiche Format und die gleiche Semantik wie im Idealen System. Nämlich, \(\wp\)= SIGi(i, i′, a, I, H(I)) . Die Zahlung \(\wp\)ist bei einer Runde r einzeln gültig (ist kurz eine Runde-R-Zahlung), wenn (1) ihr Betrag a ist kleiner oder gleich a(r) i , und (2) es erscheint in keinem offiziellen Gehaltssatz PAY r′ für r′ < r. (Wie unten erläutert, bedeutet die zweite Bedingung, dass \(\wp\) noch nicht wirksam geworden ist. Eine Menge von Rund-r-Zahlungen von i ist insgesamt gültig, wenn die Summe ihrer Beträge höchstens a(r) ist. ich . Gehaltssätze Ein Round-r-Zahlungssatz P ist ein Satz von Round-r-Zahlungen, sodass für jeden Benutzer i die Zahlungen erfolgen von i in P (möglicherweise keine) sind kollektiv gültig. Die Menge aller Round-r-Gehaltssätze ist PAY(r). Ein Rund-r Die Auszahlungsmenge P ist maximal, wenn keine Obermenge von P eine Round-R-Auszahlungsmenge ist. Wir schlagen tatsächlich vor, dass eine Zahlung \(\wp\)auch eine Runde \(\rho\) angibt, \(\wp\)= SIGi(\(\rho\), i, i′, a, I, H(I)) , und kann in keiner Runde außerhalb von [\(\rho\), \(\rho\) + k] für eine feste nichtnegative ganze Zahl k gültig sein.4 4Dies vereinfacht die Überprüfung, ob \(\wp\) „wirksam“ geworden ist (d. h. es vereinfacht die Bestimmung, ob ein Gehaltssatz vorliegt). PAY r enthält \(\wp\). Wenn k = 0, wenn \(\wp\)= SIGi(r, i, i′, a, I, H(I)) und \(\wp\)/\(\in\)PAY r, dann muss ich \(\wp\) erneut einreichen.Offizielle Gehaltssätze Für jede Runde r wählt Algorand öffentlich aus (auf eine später beschriebene Weise). ein einzelner (möglicherweise leerer) Payset, PAY r, der offizielle Payset der Runde. (Im Wesentlichen stellt PAY r dar die Round-R-Zahlungen, die „tatsächlich“ stattgefunden haben.) Wie im Idealen System (und Bitcoin) ist (1) die einzige Möglichkeit für einen neuen Benutzer, j das System zu betreten soll der Empfänger einer Zahlung sein, die zum offiziellen Gehaltssatz PAY r einer bestimmten Runde r gehört; und (2) PAY r bestimmt den Status der nächsten Runde, Sr+1, aus dem der aktuellen Runde, Sr. Symbolisch, PAY r : Sr −→Sr+1. Konkret: 1. Die Menge der öffentlichen Schlüssel der Runde r + 1, PKr+1, besteht aus der Vereinigung von PKr und der Menge aller Zahlungsempfängerschlüssel, die erstmals in den Zahlungen von PAY r auftauchen; und 2. der Geldbetrag a(r+1) ich dass ein Benutzer i in Runde r + 1 besitzt, ist die Summe von ai(r) – d. h. die Geldbetrag, den ich in der vorherigen Runde besaß (0, wenn i ̸\(\in\)PKr) – und die Summe der Beträge an i entsprechend den Zahlungen von PAY r gezahlt. Zusammenfassend ist, wie im Idealsystem, jeder Status Sr+1 aus der vorherigen Zahlungshistorie ableitbar: ZAHLEN 0, . . . , ZAHLEN r. 2.4 Blöcke und bewährte Blöcke In Algorand0 gibt der Block Br, der einem runden r entspricht, Folgendes an: r selbst; die Menge der Zahlungen von runde r, ZAHLE r; eine zu erklärende Größe Qr und der hash des vorherigen Blocks, H(Br−1). Ausgehend von einem festen Block B0 haben wir also ein traditionelles blockchain: B1 = (1, PAY 1, Q0, H(B0)), B2 = (2, PAY 2, Q1, H(B1)), B3 = (3, PAY 3, Q2, H(B2)), . . . In Algorand wird die Authentizität eines Blocks tatsächlich durch eine separate Information bestätigt, ein „Blockzertifikat“ CERT r, das Br in einen bewährten Block, Br, verwandelt. Das Magic Ledger ist daher wird durch die Reihenfolge der bewährten Blöcke umgesetzt, B1, B2, . . . Diskussion Wie wir sehen werden, besteht CERT r aus einem Satz digitaler Signaturen für H(Br), denen von a Mehrheit der Mitglieder des SV r, zusammen mit einem Nachweis, dass jedes dieser Mitglieder tatsächlich dazugehört zu SV r. Wir könnten natürlich die Zertifikate CERT r in die Blöcke selbst einbauen, aber wir werden es finden konzeptionell sauberer, um es getrennt zu halten.) In Bitcoin muss jeder Block eine spezielle Eigenschaft erfüllen, das heißt, er muss „eine Lösung von a enthalten Krypto-Puzzle“, was die Blockgenerierung rechenintensiv macht und beides unvermeidlich verzweigt und nicht selten. Im Gegensatz dazu hat blockchain von Algorand zwei Hauptvorteile: Es wird mit generiert minimaler Rechenaufwand, und es wird nicht mit überwältigend hoher Wahrscheinlichkeit gegabelt. Jeder Block Bi ist sicher endgültig, sobald es den blockchain betritt.2.5 Akzeptable Ausfallwahrscheinlichkeit Um die Sicherheit von Algorand zu analysieren, geben wir die Wahrscheinlichkeit F an, mit der wir dazu bereit sind Akzeptieren Sie, dass etwas schief geht (z. B. dass ein Verifizierersatz SV r keine ehrliche Mehrheit hat). Wie bei der Ausgabelänge der kryptografischen Funktion hash H ist auch F ein Parameter. Aber wie in diesem Fall finden wir es nützlich, F auf einen konkreten Wert zu setzen, um eine intuitivere Darstellung zu erhalten begreifen, dass es in Algorand tatsächlich möglich ist, gleichzeitig ausreichende Sicherheit zu genießen und ausreichende Effizienz. Zunächst möchte ich betonen, dass F ein Parameter ist, der beliebig eingestellt werden kann und zweite Ausführungsformen haben wir jeweils festgelegt F = 10−12 und F = 10−18 . Diskussion Beachten Sie, dass 10−12 tatsächlich weniger als eine von einer Billion ist, und wir glauben, dass dies der Fall ist Die Wahl von F ist für unsere Anwendung ausreichend. Wir möchten betonen, dass 10−12 nicht die Wahrscheinlichkeit ist mit dem der Gegner die Zahlungen eines ehrlichen Benutzers fälschen kann. Alle Zahlungen erfolgen digital signiert, und wenn die richtigen digitalen Signaturen verwendet werden, besteht daher eine hohe Wahrscheinlichkeit, dass eine Zahlung gefälscht wird weit niedriger als 10−12 und tatsächlich im Wesentlichen 0. Das schlimme Ereignis, das wir bereit sind zu tolerieren mit der Wahrscheinlichkeit F ist, dass sich blockchain von Algorand verzweigt. Beachten Sie, dass mit unserer Einstellung von F und Bei einminütigen Runden wird erwartet, dass eine Gabelung in blockchain von Algorand so selten wie möglich auftritt (ungefähr) einmal in 1,9 Millionen Jahren. Im Gegensatz dazu kommt es in Bitcoin recht häufig zu einer Verzweigung. Eine anspruchsvollere Person kann F auf einen niedrigeren Wert einstellen. Zu diesem Zweck in unserer zweiten Ausführungsform Wir überlegen, F auf 10−18 zu setzen. Beachten Sie, dass unter der Annahme, dass jede Sekunde ein Block generiert wird, 1018 ist die geschätzte Anzahl an Sekunden, die das Universum bisher benötigt hat: vom Urknall bis heute Zeit. Wenn also mit F = 10−18 ein Block in einer Sekunde erzeugt wird, sollte man mit dem Alter von rechnen Das Universum sieht eine Gabelung. 2.6 Das kontradiktorische Modell Algorand ist so konzipiert, dass es in einem sehr kontroversen Modell sicher ist. Lassen Sie es uns erklären. Ehrliche und böswillige Benutzer Ein Benutzer ist ehrlich, wenn er alle seine Protokollanweisungen befolgt und ist durchaus in der Lage, Nachrichten zu senden und zu empfangen. Ein Benutzer ist böswillig (d. h. byzantinisch). (Sprache des verteilten Rechnens), wenn er willkürlich von seinen vorgeschriebenen Anweisungen abweichen kann. Der Gegner Der Gegner ist ein effizienter (technisch gesehen polynomialer) Algorithmus, personifiziert durch Farbe, der jeden Benutzer, den er möchte, jederzeit und jederzeit böswillig machen kann (Subjekt nur bis zu einer Obergrenze der Anzahl der Benutzer, die er korrumpieren kann). Der Gegner kontrolliert und koordiniert alle böswilligen Benutzer vollständig. Er ergreift alle Maßnahmen in ihrem Namen, einschließlich des Empfangens und Versendens aller ihrer Nachrichten, und kann zulassen, dass sie davon abweichen ihre vorgeschriebenen Anweisungen auf willkürliche Weise. Oder er kann einfach einen beschädigten Benutzerversand isolieren und Empfangen von Nachrichten. Lassen Sie uns klarstellen, dass niemand sonst automatisch erfährt, dass ein Benutzer böswillig ist. Allerdings kann sich meine Böswilligkeit durch die Handlungen bemerkbar machen, die der Gegner von ihm verlangt. Dieser mächtige Gegner jedoch, • Verfügt über keine unbegrenzte Rechenleistung und kann das Digitale nicht erfolgreich fälschen Unterschrift eines ehrlichen Benutzers, außer mit vernachlässigbarer Wahrscheinlichkeit; Und• Darf in keiner Weise den Nachrichtenaustausch zwischen ehrlichen Benutzern beeinträchtigen. Darüber hinaus wird seine Fähigkeit, ehrliche Benutzer anzugreifen, durch eine der folgenden Annahmen eingeschränkt. Ehrlichkeit, Mehrheit des Geldes Wir betrachten ein Kontinuum der ehrlichen Mehrheit des Geldes (HMM). Annahmen: nämlich für jede nicht negative ganze Zahl k und reelles h > 1/2, HHMk > h: Die ehrlichen Benutzer in jeder Runde r besaßen einen Bruchteil größer als h des gesamten Geldes in das System bei Runde r −k. Diskussion. Vorausgesetzt, dass alle böswilligen Benutzer ihre Aktionen perfekt koordinieren (als ob sie kontrolliert würden). durch eine einzelne Entität, den Gegner) ist eine eher pessimistische Hypothese. Perfekte Koordination auch untereinander Für viele Menschen ist es schwierig, dies zu erreichen. Vielleicht findet die Koordination nur innerhalb separater Gruppen statt von böswilligen Spielern. Da man jedoch nicht sicher sein kann, wie gut die Koordination böswilliger Benutzer ist Vielleicht genießen Sie es, wir gehen besser auf Nummer sicher. Auch die Annahme, dass der Gegner Benutzer heimlich, dynamisch und sofort korrumpieren kann, ist möglich pessimistisch. Schließlich dürfte es realistisch gesehen einige Zeit dauern, bis man die vollständige Kontrolle über die Vorgänge eines Benutzers erlangt. Die Annahme HMMk > h impliziert beispielsweise, dass eine Runde (im Durchschnitt) durchgeführt wird In einer Minute bleibt dann der Großteil des Geldes einer bestimmten Runde in ehrlichen Händen mindestens zwei Stunden, wenn k = 120, und mindestens eine Woche, wenn k = 10.000. Beachten Sie die HMM-Annahmen und die vorherige ehrliche Mehrheit der Rechenleistung Annahmen hängen in dem Sinne zusammen, dass Rechenleistung mit Geld gekauft werden kann, Wenn böswillige Benutzer das meiste Geld besitzen, können sie auch den Großteil der Rechenleistung erhalten. 2.7 Das Kommunikationsmodell Wir gehen davon aus, dass die Verbreitung von Nachrichten – d. h. „Peer-to-Peer-Klatsch“5 – das einzige Mittel dafür ist Kommunikation. Vorübergehende Annahme: Rechtzeitige Zustellung von Nachrichten im gesamten Netzwerk. Für In den meisten Teilen dieses Artikels gehen wir davon aus, dass jede verbreitete Nachricht fast alle ehrlichen Benutzer erreicht rechtzeitig. Wir werden diese Annahme in Abschnitt 10 entfernen, wo wir uns mit Netzwerken befassen Partitionen, die entweder natürlich vorkommen oder durch Angriffe herbeigeführt werden. (Wie wir sehen werden, nehmen wir nur an rechtzeitige Zustellung von Nachrichten innerhalb jeder verbundenen Komponente des Netzwerks.) Eine konkrete Möglichkeit, die rechtzeitige Zustellung verbreiteter Nachrichten (im gesamten Netzwerk) zu erfassen, ist Folgendes: Für alle Erreichbarkeiten \(\rho\) > 95 % und Nachrichtengröße \(\mu\) \(\in\)Z+ gibt es \(\lambda\) \(\rho\),\(\mu\), so dass Wenn ein ehrlicher Benutzer zum Zeitpunkt t eine \(\mu\)-Byte-Nachricht m weiterleitet, dann erreicht m zum Zeitpunkt t + \(\lambda\) \(\rho\),\(\mu\) mindestens einen Bruchteil \(\rho\) der ehrlichen Benutzer. 5Im Wesentlichen, wie in Bitcoin, wenn ein Benutzer eine Nachricht m verbreitet, empfängt jeder aktive Benutzer m zum ersten Mal, wählt zufällig und unabhängig eine entsprechend kleine Anzahl aktiver Benutzer, seine „Nachbarn“, aus, an die er m weiterleitet, möglicherweise bis er eine Bestätigung von ihnen erhält. Die Weitergabe von m endet, wenn kein Benutzer empfängt Ich bin zum ersten Mal dabei.Die obige Eigenschaft kann jedoch unser Algorand-Protokoll nicht unterstützen, ohne explizit und separat einen Mechanismus vorzusehen, um die neueste blockchain zu erhalten – von einem anderen Benutzer/Depot usw. Um einen neuen Block Br zu konstruieren, muss nicht nur ein geeigneter Satz von Verifizierern die Runde r rechtzeitig erhalten Nachrichten, sondern auch die Nachrichten früherer Runden, um Br−1 und alle anderen vorherigen zu kennen Blöcke, die notwendig sind, um festzustellen, ob die Zahlungen in Br gültig sind. Folgendes Stattdessen reicht die Annahme aus. Annahme der Nachrichtenweitergabe (MP): Für alle \(\rho\) > 95 % und \(\mu\) \(\in\)Z+ gibt es \(\lambda\) \(\rho\),\(\mu\) so dass für alle Zeiten t und alle \(\mu\)-Byte-Nachrichten m, die von einem ehrlichen Benutzer vor t verbreitet wurden −\(\lambda\) \(\rho\),\(\mu\), m wird zum Zeitpunkt t von mindestens einem Bruchteil \(\rho\) der ehrlichen Benutzer empfangen. Das Protokoll Algorand weist tatsächlich jeden einer kleinen Anzahl von Benutzern (d. h. die Prüfer eines) an gegebener Schritt einer Runde in Algorand ′, um eine separate Nachricht einer (kleinen) vorgeschriebenen Größe zu verbreiten, und wir müssen die Zeit begrenzen, die zur Erfüllung dieser Anweisungen erforderlich ist. Wir tun dies, indem wir den MP bereichern Annahme wie folgt. Für alle n, \(\rho\) > 95 % und \(\mu\) \(\in\)Z+ gibt es \(\lambda\)n,\(\rho\),\(\mu\), so dass für alle Zeiten t und alle \(\mu\)-Byte gilt Nachrichten m1, . . . , mn, jeweils von einem ehrlichen Benutzer vor t −\(\lambda\)n,\(\rho\),\(\mu\), m1, . propagiert. . . , mn werden empfangen, bis zur Zeit t um mindestens einen Bruchteil \(\rho\) der ehrlichen Benutzer. Hinweis • Die obige Annahme ist bewusst einfach, aber auch stärker als in unserer Arbeit erforderlich.6 • Der Einfachheit halber gehen wir von \(\rho\) = 1 aus und verzichten daher auf die Erwähnung von \(\rho\). • Wir gehen pessimistisch davon aus, dass er, sofern er nicht gegen die MP-Annahme verstößt, der Gegner ist kontrolliert vollständig die Zustellung aller Nachrichten. Insbesondere ohne dass es von den Ehrlichen bemerkt wird Benutzer können den Gegner willkürlich entscheiden, welcher ehrliche Spieler wann welche Nachricht erhält, und die Zustellung jeder gewünschten Nachricht willkürlich beschleunigen.7

Предварительные сведения

2.1 Криптографические примитивы Идеальное хеширование. Мы будем полагаться на эффективно вычислимую криптографическую hash функцию H, которая отображает строки произвольной длины в двоичные строки фиксированной длины. Следуя давней традиции, мы моделируем H как случайное oracle, по существу функция, отображающая каждую возможную строку s в случайную и независимо выбранная (а затем фиксированная) двоичная строка H(s) выбранной длины. В этой статье H имеет выходные данные длиной 256 бит. Действительно, такая длина достаточно коротка, чтобы сделать эффективность системы и достаточно длительный срок, чтобы сделать систему безопасной. Например, мы хотим, чтобы H был устойчив к столкновениям. То есть должно быть сложно найти две разные строки x и y такие, что H(x) = H(y). Когда H представляет собой случайное число oracle с выходными данными длиной 256 бит, найти любую такую пару строк действительно сложно. сложно. (Для случайной попытки и использования парадокса дня рождения потребуется 2256/2 = 2128. испытания.) Цифровая подпись. Цифровые подписи позволяют пользователям удостоверять подлинность информации друг друга. не разглашая никаких секретных ключей. Схема цифровой подписи состоит из трех быстрых Алгоритмы: вероятностный генератор ключей G, алгоритм подписи S и алгоритм проверки V. Учитывая параметр безопасности k, достаточно большое целое число, пользователь i использует G для создания пары k-битные ключи (т. е. строки): «открытый» ключ pki и соответствующий «секретный» ключ подписи Ski. Крайне важно, открытый ключ не «выдает» соответствующий секретный ключ. То есть, даже учитывая знание pki, нет еще один человек, кроме меня, способен рассчитать лыжи менее чем за астрономическое время. Пользователь i использует лыжи для цифровой подписи сообщений. Для каждого возможного сообщения (двоичной строки) m я сначала hashes m, а затем запускает алгоритм S на входах H(m) и на лыжах, чтобы создать k-битную строку sigpki(м) \(\triangleq\)S(H(м), лыжи) .3 3Поскольку H устойчив к коллизиям, практически невозможно, чтобы, подписав m, кто-то «случайно подписал» другой сообщение м'.Двоичная строка sigpki(m) называется цифровой подписью i m (относительно pki) и может быть проще обозначается sigi(m), когда открытый ключ pki ясен из контекста. Каждый, кто знает pki, может использовать его для проверки цифровых подписей, созданных i. В частности, на вводит (a) открытый ключ pki игрока i, (b) сообщение m и (c) строку s, то есть предполагаемый i цифровую подпись сообщения m, алгоритм проверки V выдает либо ДА, либо НЕТ. Свойства, которые нам необходимы от схемы цифровой подписи: 1. Легитимность подписей всегда проверяется: если s = sigi(m), то V (pki, m, s) = Y ES; и 2. Цифровые подписи сложно подделать: без знания лыж время найти такую строку что V (pki, m, s) = Y ES для сообщения m, никогда не подписанного i, является астрономически длинным. (Следуя строгим требованиям безопасности Голдвассера, Микали и Ривеста [17], это правда. даже если можно получить подпись любого другого сообщения.) Соответственно, чтобы никто другой не мог подписывать сообщения от его имени, игрок i должен сохранить подписывание секретного ключа (отсюда и термин «секретный ключ») и предоставление возможности любому человеку проверять сообщения. он подписывает, и я заинтересован в обнародовании его ключа PKI (отсюда и термин «открытый ключ»). В общем, сообщение m невозможно получить по его сигнатуре sigi(m). Чтобы виртуально разобраться с цифровыми подписями, которые удовлетворяют концептуально удобному свойству «извлекаемости» (т.е. гарантировать, что подписывающее лицо и сообщение легко вычислимы по подписи, мы определяем SIGpki(m) = (i, m, sigpki(m)) и SIGi(m) = (i, m, sigi(m)), если pki ясен. Уникальная цифровая подпись. Мы также рассматриваем схемы цифровой подписи (G, S, V), удовлетворяющие следующее дополнительное имущество. 3. Уникальность. Трудно найти строки pk', m, s и s' такие, что s ̸= s′ и V (pk′,m,s) = V (pk′,m,s′) = 1. (Обратите внимание, что свойство уникальности справедливо и для строк pk', которые не были сгенерированы законным образом. открытые ключи. Однако, в частности, свойство уникальности подразумевает, что если использовать указанный генератор ключей G для вычисления открытого ключа pk вместе с соответствующим секретным ключом sk, и, таким образом, зная sk, для него было бы практически невозможно найти два разных цифровых подписи одного и того же сообщения относительно pk.) Примечания • От уникальных подписей до проверяемых случайных функций. По отношению к цифровому схеме подписи со свойством единственности отображение m \(\to\) H(sigi(m)) соответствует каждая возможная строка m, уникальная, случайно выбранная 256-битная строка, и правильность этого отображение можно доказать с помощью сигнатуры sigi(m). То есть идеальная hashing и схема цифровой подписи, по существу удовлетворяющая свойству уникальности. обеспечить элементарную реализацию проверяемой случайной функции, как это было введено и Микали, Рабин и Вадхан [27]. (Их первоначальная реализация была обязательно более сложной, поскольку они не полагались на идеальное hashing.)• Три различных потребности в цифровых подписях. В Algorand пользователь i полагается на цифровые подписи для (1) Аутентификация собственных платежей. В этом приложении ключи могут быть «долгосрочными» (т.е. использоваться для подписывать множество сообщений в течение длительного периода времени) и исходят из обычной схемы подписи. (2) Генерация учетных данных, доказывающих, что i имеет право действовать на каком-то этапе s раунда r. Здесь, ключи могут быть долгосрочными, но должны исходить из схемы, удовлетворяющей свойству уникальности. (3) Аутентификация сообщения, которое я отправляю на каждом этапе своих действий. Здесь ключи должны быть эфемерны (т. е. уничтожаются после первого использования), но могут исходить из обычной схемы подписи. • Небольшое упрощение. Для простоты мы предполагаем, что у каждого пользователя i будет один долгосрочный ключ. Соответственно, такой ключ должен исходить из схемы подписи с уникальностью собственность. Такая простота требует небольших вычислительных затрат. Обычно, по сути, уникальные цифровые Изготовление и проверка подписей немного дороже, чем обычные подписи. 2.2 Идеализированный публичный реестр Algorand пытается имитировать следующую платежную систему, основанную на идеализированном публичном реестре. 1. Исходное состояние. Деньги связаны с отдельными открытыми ключами (генерируемыми частным образом и принадлежат пользователям). Сдача pk1, . . . , pkj — начальные открытые ключи и a1, . . . , адж их соответствующие начальные суммы денежных единиц, то начальный статус S0 = (pk1, a1), . . . , (pkj, aj) , которая считается общеизвестной в системе. 2. Платежи. Пусть pk — открытый ключ, имеющий в данный момент \(\geq\)0 денежных единиц, pk’ — другой открытый ключ. ключ и a' - неотрицательное число, не превышающее a. Тогда (действительный) платеж \(\wp\) является цифровым подпись относительно pk, определяющая перевод a' денежных единиц из pk в pk' вместе с некоторой дополнительной информацией. В символах, \(\wp\)= SIGpk(pk, pk′, a′, I, H(I)), где я представляю любую дополнительную информацию, которая считается полезной, но не конфиденциальной (например, время информацию и идентификатор платежа), а также любую дополнительную информацию, которая считается конфиденциальной (например, причина платежа, возможно, личности владельцев ПК и ПК' и так далее). Мы называем pk (или его владельца) плательщиком, каждого pk' (или его владельца) - получателем платежа, а a' - сумма платежа \(\wp\). Бесплатное присоединение через платежи. Обратите внимание, что пользователи могут присоединиться к системе, когда захотят. генерация собственных пар открытого/секретного ключей. Соответственно, открытый ключ pk', который появляется в платеж \(\wp\)выше может быть недавно сгенерированным открытым ключом, который никогда не «владел» деньгами раньше. 3. Волшебная книга. В идеализированной системе все платежи действительны и отображаются в защищенном от несанкционированного доступа виде. список L наборов платежей, «размещенных на небе» на всеобщее обозрение: L = ПЛАТИТЕ 1, ПЛАТИТЕ 2, . . . ,Каждый блок PAY r+1 состоит из совокупности всех платежей, совершенных с момента появления блока ПЛАТИТЬ р. В идеальной системе новый блок появляется через фиксированное (или конечное) время. Обсуждение. • Больше общих платежей и неизрасходованных выходных транзакций. В более общем смысле, если открытый ключ pk владеет суммой a, то действительный платеж \(\wp\)pk может перевести суммы a' 1, а' 2, . . ., соответственно клавишам pk' 1, пк' 2, . . ., пока P джа' j \(\leq\)а. В Bitcoin и подобных системах деньги, принадлежащие ПК с открытым ключом, разделены на отдельные суммы, и платеж \(\wp\), произведенный pk, должен передать такую отдельную сумму a полностью. Если pk хочет передать на другой ключ только часть a' < a, то он должен также передать баланс, неизрасходованный вывод транзакции, на другой ключ, возможно, на сам ПК. Algorand также работает с ключами, имеющими отдельные суммы. Однако для того, чтобы сосредоточиться на новые аспекты Algorand, концептуально проще придерживаться наших более простых форм платежей и ключи, имеющие одну связанную с ними сумму. • Текущий статус. Идеализированная схема не предоставляет напрямую информацию о текущем состоянии. статус системы (т. е. сколько денежных единиц имеет каждый открытый ключ). Эта информация выводится из Magic Ledger. В идеальной системе активный пользователь постоянно сохраняет и обновляет самую свежую информацию о состоянии. иначе ему пришлось бы восстанавливать его либо с нуля, либо с того момента, когда он в последний раз вычислил это. (В следующей версии этой статьи мы дополним Algorand, чтобы сделать его пользователи могут эффективно восстановить текущий статус.) • Безопасность и «Конфиденциальность». Цифровые подписи гарантируют, что никто не сможет подделать платеж другой пользователь. При платеже \(\wp\) открытые ключи и сумма не скрыты, а конфиденциальные информация я есть. Действительно, в \(\wp\) появляется только H(I), и поскольку H — идеальная hash функция, H(I) — это случайное 256-битное значение, и поэтому нет способа выяснить, в чем я был лучше, чем с помощью просто догадываюсь об этом. Тем не менее, чтобы доказать, кем я был (например, доказать причину выплаты), плательщик может просто раскрыть I. Правильность раскрытого I можно проверить, вычислив H(I) и сравниваем полученное значение с последним элементом \(\wp\). Фактически, поскольку H устойчив к столкновениям, трудно найти второе значение I′ такое, что H(I) = H(I′). 2.3 Основные понятия и обозначения Ключи, пользователи и владельцы Если не указано иное, каждый открытый ключ («ключ» для краткости) является долгосрочным и относится к схеме цифровой подписи со свойством уникальности. Открытый ключ, к которому я присоединяюсь системе, когда другой открытый ключ j, уже находящийся в системе, производит платеж i. Для цвета мы персонифицируем ключи. Мы называем ключ i «он», говорим, что я честен, что я посылаю и получает сообщения и т. д. Пользователь — синоним ключа. Когда мы хотим отличить ключ от лицу, которому он принадлежит, мы соответственно используем термины «цифровой ключ» и «владелец». Безразрешительные и разрешенные системы. Система является недоступной, если цифровой ключ свободен. присоединиться в любое время, и владелец может владеть несколькими цифровыми ключами; и это разрешено, в противном случае.Уникальное представление Каждый объект в Algorand имеет уникальное представление. В частности, каждое множество {(x, y, z, . . .) : x \(\in\)X, y \(\in\)Y, z \(\in\)Z, . . .} упорядочивается заранее заданным образом: например, сначала лексикографически по x, затем по y и т. д. Односкоростные часы Глобальных часов нет: у каждого пользователя свои часы. Пользовательские часы ни в коем случае не нужно синхронизировать. Однако мы предполагаем, что все они имеют одинаковую скорость. Например, если по часам пользователя i сейчас 12:00, по часам пользователя i это может быть 14:30. часы другого пользователя j, но когда по часам i будет 12:01, по часам i будет 2:31 на часы Джей. То есть «одна минута одинакова (достаточно, по сути одинакова) для каждого пользователя». Раунды Algorand организован в логических единицах, r = 0, 1, . . ., называемые раундами. Мы постоянно используем верхние индексы для обозначения раундов. Чтобы указать, что нечисловая величина Q (например, строка, открытый ключ, набор, цифровая подпись и т. д.) относится к раунду r, мы просто пишем Qr. Только когда Q является настоящим числом (в отличие от двоичной строки, интерпретируемой как число), выполните мы пишем Q(r), так что символ r нельзя интерпретировать как показатель степени Q. В (начале a) раунда r > 0 набор всех открытых ключей равен PKr, а состояние системы равно Ср = н я, а(р) я, . . .  : я €PKro , где а(г) я это сумма денег, доступная для открытого ключа i. Заметим, что PKr выводится из Sr, и что Sr может также указывать другие компоненты для каждого открытого ключа i. Для раунда 0 PK0 — это набор начальных открытых ключей, а S0 — начальный статус. И ПК0, и Предполагается, что S0 являются общеизвестными в системе. Для простоты в начале раунда r, так что ПК1, . . . , ПКр и S1, . . . , сэр. В раунде r статус системы меняется с Sr на Sr+1: символически, Раунд r: Sr −→Sr+1. Платежи В Algorand пользователи постоянно совершают платежи (и распространяют их описано в подразделе 2.7). Платеж \(\wp\) пользователя i \(\in\)PKr имеет тот же формат и семантику. как в идеальной системе. А именно, \(\wp\)= SIGi(i, i′, a, I, H(I)) . Платеж \(\wp\) индивидуально действителен в раунде r (для краткости это платеж в раунде r), если (1) его сумма a меньше или равно a(r) i , и (2) он не появляется ни в одном официальном наборе выплат PAY r' для r' < r. (Как поясняется ниже, второе условие означает, что \(\wp\) еще не вступило в силу. Набор раундов r платежей i является коллективно действительным, если сумма их сумм не превышает a(r) я. Платёжные системы Набор выплат P в раунде r — это набор платежей в раунде r, такой, что для каждого пользователя i платежи из i в P (возможно, ни одного) являются коллективно действительными. Набор всех наборов выплат раунда r равен PAY(r). Раунд-р набор выплат P является максимальным, если ни один надмножество P не является набором выплат раунда r. Фактически мы предполагаем, что платеж \(\wp\)также определяет раунд \(\rho\), \(\wp\)= SIGi(\(\rho\), i, i′, a, I, H(I)) , и не может быть действительным ни в одном раунде за пределами [\(\rho\), \(\rho\) + k] для некоторого фиксированного неотрицательного целого числа k.4 4Это упрощает проверку того, стал ли \(\wp\) «эффективным» (т. е. упрощает определение того, является ли некоторый набор выплат PAY r содержит \(\wp\). Когда k = 0, если \(\wp\)= SIGi(r, i, i′, a, I, H(I)) и \(\wp\)/\(\varepsilon\)PAY r, то я должен повторно отправить \(\wp\).Официальные платежные системы В каждом раунде r Algorand публично выбирает (способом, описанным ниже) один (возможно, пустой) набор выплат, PAY r, официальный набор выплат раунда. (По сути, PAY r представляет собой платежи раунда R, которые «на самом деле» произошли.) Как и в идеальной системе (и Bitcoin), (1) единственный способ для нового пользователя j войти в систему должен быть получателем платежа, принадлежащего официальному набору платежей PAY r данного раунда r; и (2) PAY r определяет статус следующего раунда Sr+1 на основе статуса текущего раунда Sr. Символически, ПЛАТА r : Sr −→Sr+1. В частности, 1. набор открытых ключей раунда r+1, PKr+1, состоит из объединения PKr и множества всех ключи получателя платежа, которые впервые появляются в платежах PAY r; и 2. количество денег a(r+1) я которым владеет пользователь i в раунде r + 1, представляет собой сумму ai(r) — т. е. сумма денег, которой я владел в предыдущем раунде (0, если i ̸\(\varepsilon\)PKr) — и сумма сумм выплачивается i согласно выплатам PAY р. В целом, как и в идеальной системе, каждый статус Sr+1 выводится из предыдущей истории платежей: ПЛАТИТЬ 0, . . . , ПЛАТИТЕ р. 2.4 Блоки и проверенные блоки В Algorand0 блок Br, соответствующий раунду r, определяет: сам r; набор платежей круглый r, ЗАПЛАТИТЕ r; количество Qr, которое необходимо объяснить, и hash предыдущего блока, H(Br-1). Таким образом, начиная с некоторого фиксированного блока B0, мы имеем традиционный blockchain: B1 = (1, ПЛАТИТЬ 1, Q0, H(B0)), B2 = (2, ПЛАТИТЬ 2, Q1, H(B1)), B3 = (3, ПЛАТИТЬ 3, Q2, H(B2)), . . . В Algorand подлинность блока фактически подтверждается отдельной информацией, «сертификат блока» CERT r, который превращает Br в проверенный блок, Br. Таким образом, Волшебная книга реализуется последовательностью проверенных блоков, Б1, Б2, . . . Обсуждение Как мы увидим, CERT r состоит из набора цифровых подписей для H(Br), большинства членов SV r вместе с доказательством того, что каждый из этих членов действительно принадлежит до СВ р. Мы могли бы, конечно, включить сертификаты CERT r в сами блоки, но обнаружили бы, что концептуально чище, если держать его отдельно.) В Bitcoin каждый блок должен удовлетворять специальному свойству, то есть должен «содержать решение задачи». крипто-головоломка», что делает генерацию блоков вычислительно интенсивной и форки неизбежны. и не редкость. Напротив, Algorand blockchain имеет два основных преимущества: он генерируется с помощью минимальные вычисления, и он не будет разделяться с чрезвычайно высокой вероятностью. Каждый блок Bi безопасным финалом, как только он войдет в blockchain.2,5 Приемлемая вероятность отказа Чтобы проанализировать безопасность Algorand, мы указываем вероятность F, с которой мы готовы признать, что что-то идет не так (например, что набор проверяющих SV r не имеет честного большинства). Как и в случае с выходной длиной криптографической hash функции H, F также является параметром. Но, как и в этом случае, мы считаем полезным присвоить F конкретное значение, чтобы получить более интуитивное представление. понимание того факта, что в Algorand действительно возможно одновременно наслаждаться достаточной безопасностью и достаточная эффективность. Чтобы подчеркнуть, что F — это параметр, который можно установить по желанию, в первом и второй варианты осуществления мы соответственно установили Ф = 10−12 и Ф = 10−18 . Обсуждение Обратите внимание, что 10−12 на самом деле меньше одного на триллион, и мы считаем, что такое выбор F является адекватным для нашего приложения. Подчеркнем, что 10−12 — это не вероятность с помощью которого Злоумышленник может подделать платежи честного пользователя. Все платежи в цифровом формате подписано, и, таким образом, если используются надлежащие цифровые подписи, вероятность подделки платежа намного ниже, чем 10−12, и фактически равно 0. Плохое событие, которое мы готовы терпеть с вероятностью F то, что blockchain Algorand разветвляется. Обратите внимание, что с нашими настройками F и продолжительностью в одну минуту, ожидается, что вилка будет происходить в blockchain Algorand так редко, как (примерно) раз в 1,9 миллиона лет. Напротив, в Bitcoin вилки возникают довольно часто. Более требовательный человек может установить F на более низкое значение. Для этого в нашем втором варианте мы рассматриваем установку F равным 10−18. Обратите внимание: если предположить, что блок генерируется каждую секунду, 1018 — приблизительное количество секунд, затраченное Вселенной на данный момент: от Большого взрыва до настоящего времени. время. Таким образом, при F = 10−18, если блок генерируется за секунду, следует ожидать возраста Вселенная, чтобы увидеть развилку. 2.6 Состязательная модель Algorand предназначен для обеспечения безопасности в очень состязательной модели. Давайте объясним. Честные и злонамеренные пользователи Пользователь честен, если он следует всем инструкциям протокола и прекрасно способен отправлять и получать сообщения. Пользователь является злонамеренным (т.е. византийским, в на языке распределенных вычислений), если он может произвольно отклоняться от предписанных инструкций. Противник Противник — это эффективный (технически полиномиальный) алгоритм, олицетворяемый цветом, который может немедленно сделать злонамеренным любого пользователя, которого он хочет, в любое время, когда он захочет (субъект только до верхнего предела числа пользователей, которых он может испортить). Злоумышленник полностью контролирует и прекрасно координирует всех злоумышленников. Он предпринимает все действия от их имени, включая получение и отправку всех их сообщений, и может позволить им отклоняться от предписанные им инструкции произвольным образом. Или он может просто изолировать отправку поврежденного пользователя и получение сообщений. Уточним, что никто больше автоматически не узнает, что пользователь i является злонамеренным, хотя моя злонамеренность может проявиться в действиях, которые Противник заставляет его предпринять. Однако этот могущественный противник • Не обладает неограниченной вычислительной мощностью и не может успешно создавать цифровые подпись добросовестного пользователя, за исключением случаев с незначительной вероятностью; и• Не может каким-либо образом вмешиваться в обмен сообщениями между честными пользователями. Более того, его способность атаковать честных пользователей ограничена одним из следующих предположений. Честность Большинство денег Мы рассматриваем континуум честного большинства денег (HMM). предположения: а именно, для каждого неотрицательного целого числа k и действительного h > 1/2, HHMk > h: честные пользователи в каждом раунде r владели долей, большей, чем h, от всех денег в система на раунде r −k. Обсуждение. Если предположить, что все злоумышленники прекрасно координируют свои действия (как будто контролируют одним существом, Противником) — довольно пессимистическая гипотеза. Идеальная координация между собой многим людям трудно достичь. Возможно, координация происходит только внутри отдельных групп. злонамеренных игроков. Но, поскольку нельзя быть уверенным в уровне координации злоумышленников может понравится, лучше перестраховаться, чем потом сожалеть. Предполагать, что Злоумышленник может тайно, динамически и немедленно развращать пользователей, также является неверным. пессимистичный. В конце концов, на самом деле получение полного контроля над действиями пользователя должно занять некоторое время. Предположение HMMk > h подразумевает, например, что если раунд (в среднем) реализуется в одну минуту, то большая часть денег в данном раунде останется в честных руках на не менее двух часов, если k = 120, и не менее одной недели, если k = 10 000. Обратите внимание, что предположения HMM и предыдущее «Честное большинство вычислительных мощностей» предположения связаны в том смысле, что, поскольку вычислительную мощность можно купить за деньги, если злоумышленники владеют большей частью денег, то они могут получить большую часть вычислительной мощности. 2,7 Коммуникационная модель Мы считаем, что распространение сообщений — то есть «одноранговые сплетни»5 — будет единственным средством общение. Временное предположение: своевременная доставка сообщений по всей сети. Для Большую часть этой статьи мы предполагаем, что каждое распространяемое сообщение достигает почти всех честных пользователей. своевременно. Мы устраним это предположение в разделе 10, где будем иметь дело с сетью перегородки, возникающие естественным путем или вызванные враждебностью. (Как мы увидим, мы только предполагаем своевременная доставка сообщений внутри каждого подключенного компонента сети.) Одним из конкретных способов обеспечения своевременной доставки распространяемых сообщений (во всей сети) является следующее: Для любой достижимости \(\rho\) > 95% и размера сообщения \(\mu\) \(\in\)Z+ существует \(\lambda\) \(\rho\),\(\mu\) такое, что если честный пользователь распространяет микробайтовое сообщение m в момент времени t, тогда m к моменту времени t + \(\lambda\) \(\rho\),\(\mu\) достигнет, по крайней мере, части \(\rho\) честных пользователей. 5По сути, как и в Bitcoin, когда пользователь распространяет сообщение m, каждый активный пользователь i получает m впервые, случайным образом и независимо выбирает достаточно небольшое количество активных пользователей, своих «соседей», которым он пересылает m, возможно, пока он не получит от них подтверждение. Распространение m прекращается, когда ни один пользователь не получает м впервые.Однако указанное выше свойство не может поддерживать наш протокол Algorand без явного и отдельного обеспечения механизма получения последней версии blockchain другим пользователем/хранилищем/и т. д. Фактически, чтобы построить новый блок Br, необходимо не только правильное множество верификаторов своевременно получить round-r сообщения, но и сообщения предыдущих раундов, чтобы знать Br-1 и все остальные предыдущие раунды. блоков, что необходимо для определения достоверности платежей в рублях. Следующие вместо этого достаточно предположения. Допущение о распространении сообщений (MP): Для всех \(\rho\) > 95% и \(\mu\) \(\in\)Z+ существует \(\lambda\) \(\rho\),\(\mu\) такие, что для всех моментов времени t и всех \(\mu\)-байтовых сообщений m, переданных честным пользователем до t −\(\lambda\) \(\rho\),\(\mu\), m к моменту времени t получает по крайней мере часть \(\rho\) честных пользователей. Протокол Algorand ’ фактически инструктирует каждого из небольшого числа пользователей (т. е. проверяющих заданный шаг раунда в Algorand ′, чтобы распространить отдельное сообщение (маленького) заданного размера, и нам нужно ограничить время, необходимое для выполнения этих инструкций. Мы делаем это, обогащая депутата предположение следующим образом. Для всех n, \(\rho\) > 95% и \(\mu\) \(\in\)Z+ существует \(\lambda\)n,\(\rho\),\(\mu\) такие, что для всех моментов времени t и всех \(\mu\)-байт сообщения m1, . . . , mn, каждый из которых был распространен честным пользователем до t −\(\lambda\)n,\(\rho\),\(\mu\), m1, . . . , млн получено, к моменту времени t, по крайней мере, долей \(\rho\) честных пользователей. Примечание • Вышеупомянутое предположение намеренно простое, но в то же время более сильное, чем необходимо в нашей статье.6 • Для простоты мы предполагаем \(\rho\) = 1 и поэтому оставляем упоминание \(\rho\). • Мы пессимистично предполагаем, что, если он не нарушит предположение МП, Противник полностью контролирует доставку всех сообщений. В частности, незаметно для честных пользователей, Противник может произвольно решить, какой честный игрок какое сообщение получит, когда, и произвольно ускорять доставку любого сообщения, которое он хочет.7

Das BA-Protokoll BA⋆in einer traditionellen Umgebung

Wie bereits betont, ist das byzantinische Abkommen ein wesentlicher Bestandteil von Algorand. Tatsächlich ist es durch die Verwendung eines solchen BA-Protokolls, dass Algorand von Forks nicht beeinflusst wird. Um jedoch sicher vor unserem zu sein Der mächtige Gegner Algorand muss sich auf ein BA-Protokoll verlassen, das die Ersetzbarkeit neuer Spieler erfüllt Einschränkung. Damit Algorand effizient ist, muss ein solches BA-Protokoll außerdem sehr effizient sein. BA-Protokolle wurden zunächst für ein idealisiertes Kommunikationsmodell, synchrone Vollständigkeit, definiert Netzwerke (SC-Netzwerke). Ein solches Modell ermöglicht einen einfacheren Entwurf und eine einfachere Analyse von BA-Protokollen. 6Anhand des ehrlichen Prozentsatzes h und der akzeptablen Ausfallwahrscheinlichkeit F berechnet Algorand eine Obergrenze N, auf die maximale Anzahl von Prüfern in einem Schritt. Daher muss die MP-Annahme nur für n \(\leq\) N gelten. Darüber hinaus gilt die MP-Annahme, wie bereits erwähnt, unabhängig davon, wie viele andere Nachrichten gleichzeitig verbreitet werden die mjs. Wie wir jedoch sehen werden, werden Nachrichten in Algorand in im Wesentlichen nicht überlappender Zeit verbreitet Intervalle, in denen entweder ein einzelner Block propagiert wird oder höchstens N Verifizierer einen kleinen (z. B. 200B) propagieren Nachricht. Somit könnten wir die MP-Annahme auf eine schwächere, aber auch komplexere Weise umformulieren. 7Zum Beispiel kann er die Nachrichten, die ehrliche Spieler senden, sofort erfahren. Somit ist ein böswilliger Benutzer i′, wer ist Wenn ein ehrlicher Benutzer i aufgefordert wird, gleichzeitig eine Nachricht zu verbreiten, kann er immer seine eigene Nachricht m′ basierend darauf auswählen die Nachricht, die m tatsächlich von i verbreitet wurde. Diese Fähigkeit steht im Zusammenhang mit Rushing, im Sprachgebrauch verteilter Berechnungen Literatur.Dementsprechend stellen wir in diesem Abschnitt ein neues BA-Protokoll, BA⋆, für SC-Netzwerke und Ignorieren vor die Frage der Spielerersetzbarkeit insgesamt. Das Protokoll BA⋆ist ein Beitrag von gesondertem Wert. Tatsächlich ist es das bisher effizienteste kryptografische BA-Protokoll für SC-Netzwerke. Um es in unserem Algorand-Protokoll zu verwenden, modifizieren wir BA⋆ein wenig, um unseren Unterschieden Rechnung zu tragen Kommunikationsmodell und -kontext, aber achten Sie darauf, in Abschnitt X hervorzuheben, wie BA⋆ verwendet wird innerhalb unseres aktuellen Protokolls Algorand ′. Wir erinnern uns zunächst an das Modell, nach dem BA⋆ operiert, und an die Vorstellung einer byzantinischen Vereinbarung. 3.1 Synchrone vollständige Netzwerke und passende Gegner In einem SC-Netzwerk gibt es eine gemeinsame Uhr, die jeweils zu ganzzahligen Zeiten r = 1, 2, . tickt. . . Bei jedem geraden Klick auf r sendet jeder Spieler sofort und gleichzeitig eine Single Nachricht an Herrn i,j (möglicherweise die leere Nachricht) an jeden Spieler j, einschließlich sich selbst. Jeder Herr i,j wird empfangen Zu diesem Zeitpunkt klicken Sie auf r + 1 von Spieler j, zusammen mit der Identität des Absenders i. Auch in einem Kommunikationsprotokoll ist ein Spieler ehrlich, wenn er alle seine Anweisungen befolgt Anweisungen und sonst böswillig. Alle böswilligen Spieler werden vollständig und perfekt kontrolliert koordiniert durch den Gegner, der insbesondere alle an ihn gerichteten Nachrichten sofort erhält böswillige Spieler und wählt die Nachrichten aus, die sie senden. Der Angreifer kann jeden ehrlichen Benutzer, den er möchte, jederzeit bösartig machen Er will, vorbehaltlich nur einer möglichen Obergrenze t für die Anzahl böswilliger Spieler. Das heißt, Der Gegner „kann nicht in die Nachrichten eingreifen, die bereits von einem ehrlichen Benutzer i gesendet wurden“, was der Fall sein wird wie gewohnt geliefert. Der Gegner hat außerdem die zusätzliche Fähigkeit, in jeder geraden Runde sofort zu sehen, was Nachrichten, die die derzeit ehrlichen Spieler senden, und verwenden diese Informationen sofort zur Auswahl Die Nachrichten, die die böswilligen Spieler gleichzeitig senden, ticken. Bemerkungen • Gegnerische Macht. Die obige Einstellung ist sehr kontrovers. Tatsächlich im byzantinischen Abkommen In der Literatur sind viele Situationen weniger kontrovers. Es gibt jedoch einige kontroversere Einstellungen Es wurde auch in Betracht gezogen, dass der Gegner, nachdem er die von einem ehrlichen Spieler gesendeten Nachrichten gesehen hat, i Wenn Sie zu einem bestimmten Zeitpunkt auf r klicken, können Sie alle diese Nachrichten sofort aus dem Netzwerk löschen korruptes i, wählen Sie die Nachricht aus, die das jetzt böswillige i sendet, klicken Sie auf r und lassen Sie sie wie gewohnt geliefert. Die erwartete Macht des Gegners entspricht der, die er in unserer Umgebung hat. • Physikalische Abstraktion. Das geplante Kommunikationsmodell abstrahiert ein eher physisches Modell, bei dem jedes Spielerpaar (i, j) durch eine separate und private Kommunikationsleitung li,j verbunden ist. Das heißt, niemand sonst kann die übermittelten Nachrichten einschleusen, stören oder Informationen über sie erhalten li,j. Die einzige Möglichkeit für den Gegner, Zugriff auf li,j zu erhalten, besteht darin, entweder i oder j zu beschädigen. • Datenschutz und Authentifizierung. In SC-Netzwerken sind Nachrichtenvertraulichkeit und Authentifizierung gewährleistet durch Annahme. Im Gegensatz dazu in unserem Kommunikationsnetzwerk, wo Nachrichten verbreitet werden Von Peer zu Peer wird die Authentifizierung durch digitale Signaturen garantiert und es gibt keinen Datenschutz. Um das Protokoll BA⋆an unsere Umgebung anzupassen, sollte daher jede ausgetauschte Nachricht digital signiert sein (zur weiteren Identifizierung des Staates, in dem es gesendet wurde). Glücklicherweise sind die BA-Protokolle, die wir haben Erwägen Sie die Verwendung in Algorand erfordern keinen Datenschutz für Nachrichten.3.2 Die Idee eines byzantinischen Abkommens Der Begriff der byzantinischen Vereinbarung wurde von Pease Shostak und Lamport [31] für die eingeführt binärer Fall, das heißt, wenn jeder Anfangswert aus einem Bit besteht. Es wurde jedoch schnell erweitert auf beliebige Anfangswerte. (Siehe die Umfragen von Fischer [16] und Chor and Dwork [10].) Von einem BA Protokoll, wir meinen ein Protokoll mit beliebigem Wert. Definition 3.1. In einem synchronen Netzwerk sei P ein N-Spieler-Protokoll, dessen Spielersatz gemeinsam ist Wissen unter den Spielern, t eine positive ganze Zahl, so dass n \(\geq\)2t + 1. Wir sagen, dass P ein ist beliebiger Wert (bzw. binär) (n, t)-Byzantinisches Vereinbarungsprotokoll mit Solidität \(\sigma\) \(\in\)(0, 1) wenn für jede Menge von Werten V, die nicht das Sonderzeichen \(\bot\) enthält (bzw. für V = {0, 1}), in an Ausführung, bei der höchstens t der Spieler böswillig sind und bei der jeder Spieler mit einem beginnt Anfangswert vi \(\in\)V , jeder ehrliche Spieler j hält mit Wahrscheinlichkeit 1 an und gibt einen Wert outi \(\in\)V \(\cup\){\(\bot\)} aus um mit einer Wahrscheinlichkeit von mindestens \(\sigma\) die folgenden zwei Bedingungen zu erfüllen: 1. Übereinstimmung: Es existiert out \(\in\)V \(\cup\){\(\bot\)} mit outi = out für alle ehrlichen Spieler i. 2. Konsistenz: Wenn für einen Wert v \(\in\)V vi = v für alle ehrlichen Spieler ist, dann gilt out = v. Wir bezeichnen out als P-Output und jedes Outi als Player-i-Output. 3.3 Die BA-Notation # In unseren BA-Protokollen muss ein Spieler zählen, wie viele Spieler ihm eine bestimmte Nachricht gesendet haben einen bestimmten Schritt. Dementsprechend gilt für jeden möglichen Wert v, der gesendet werden könnte:

s

ich(v) (oder einfach #i(v), wenn s klar ist) ist die Anzahl der Spieler j, von denen i v in Schritt s erhalten hat. Denken Sie daran, dass ein Spieler i von jedem Spieler j genau eine Nachricht erhält, wenn die Anzahl der Spieler ist n, dann ist für alle i und s P v #s i(v) = n. 3.4 Das binäre BA-Protokoll BBA⋆ In diesem Abschnitt stellen wir ein neues binäres BA-Protokoll vor, BBA⋆, das auf der Ehrlichkeit von mehr basiert als zwei Drittel der Spieler und ist sehr schnell: Egal, was die böswilligen Spieler tun, Jede Ausführung der Hauptschleife bringt die Spieler mit einer Wahrscheinlichkeit von 1/3 zur Übereinstimmung. Jeder Spieler verfügt über seinen eigenen öffentlichen Schlüssel eines digitalen Signaturschemas, das der eindeutigen Signatur entspricht Eigentum. Da dieses Protokoll für die Ausführung in einem synchronen Gesamtnetzwerk vorgesehen ist, ist dies nicht der Fall Ich brauche einen Spieler, der jede seiner Nachrichten signiert. Digitale Signaturen werden verwendet, um in Schritt 3 ein ausreichend häufiges Zufallsbit zu generieren. (In Algorand, Digitale Signaturen werden auch zur Authentifizierung aller anderen Nachrichten verwendet.) Das Protokoll erfordert eine minimale Einrichtung: eine gemeinsame Zufallszeichenfolge r, unabhängig von den Spielern. Schlüssel. (In Algorand wird r tatsächlich durch die Größe Qr ersetzt.) Das Protokoll BBA⋆ist eine dreistufige Schleife, in der die Spieler wiederholt boolesche Werte austauschen Verschiedene Spieler können diese Schleife zu unterschiedlichen Zeiten verlassen. Ein Spieler verlässt diese Schleife durch Weitergabe, irgendwann entweder einen Sonderwert 0∗ oder einen Sonderwert 1∗ und weist damit alle Spieler an „Stellen Sie sich vor“, dass sie in allen zukünftigen Schritten jeweils 0 und 1 von i erhalten. (Alternativ gesagt: annehmendass die letzte Nachricht, die ein Spieler j von einem anderen Spieler i erhalten hat, ein bisschen b war. Dann, in jedem Schritt in dem er keine Nachricht von i erhält, verhält sich j so, als ob ich ihm das Bit b geschickt hätte.) Das Protokoll verwendet einen Zähler \(\gamma\), der angibt, wie oft seine dreistufige Schleife ausgeführt wurde. Zu Beginn von BBA⋆ ist \(\gamma\) = 0. (Man könnte sich \(\gamma\) als einen globalen Zähler vorstellen, aber er wird tatsächlich erhöht von jedem einzelnen Spieler jedes Mal, wenn die Schleife ausgeführt wird.) Es gibt n \(\geq\)3t + 1, wobei t die maximal mögliche Anzahl böswilliger Spieler ist. Eine Binärdatei Zeichenfolge x wird mit der Ganzzahl identifiziert, deren binäre Darstellung (mit möglichen führenden Nullen) x ist; und lsb(x) bezeichnet das niedrigstwertige Bit von x. Protokoll BBA⋆ (Kommunikation) Schritt 1. [Coin-Fixed-To-0-Schritt] Jeder Spieler sendet bi. 1.1 Wenn #1 i (0) \(\geq\)2t + 1, dann setzt i bi = 0, sendet 0∗, gibt outi = 0 aus, und HALTS. 1.2 Wenn #1 i (1) \(\geq\)2t + 1, dann setzt i bi = 1. 1.3 Ansonsten setzt i bi = 0. (Kommunikation) Schritt 2. [Coin-Fixed-To-1-Schritt] Jeder Spieler sendet Bi. 2.1 Wenn #2 i (1) \(\geq\)2t + 1, dann setzt i bi = 1, sendet 1∗, Ausgänge outi = 1, und HALTS. 2.2 Wenn #2 i (0) \(\geq\)2t + 1, dann setze ich bi = 0. 2.3 Ansonsten setzt i bi = 1. (Kommunikation) Schritt 3. [Münzen-echt umgedrehter Schritt] Jeder Spieler i sendet bi und SIGi(r, \(\gamma\)). 3.1 Wenn #3 i (0) \(\geq\)2t + 1, dann setzt i bi = 0. 3.2 Wenn #3 i (1) \(\geq\)2t + 1, dann setzt i bi = 1. 3.3 Ansonsten sei Si = {j \(\in\)N, die i in diesem Schritt 3 eine richtige Nachricht gesendet haben }, i setzt bi = c \(\triangleq\)lsb(minj\(\in\)Si H(SIGi(r, \(\gamma\)))); erhöht \(\gamma\)i um 1; und kehrt zu Schritt 1 zurück. Satz 3.1. Immer wenn n \(\geq\)3t + 1, ist BBA⋆ein binäres (n, t)-BA-Protokoll mit der Solidität 1. Ein Beweis von Satz 3.1 ist in [26] gegeben. Seine Anpassung an unsere Umgebung und seine Austauschbarkeit durch Spieler Eigentum sind neu. Historische Bemerkung Probabilistische binäre BA-Protokolle wurden erstmals von Ben-Or vorgeschlagen asynchrone Einstellungen [7]. Das Protokoll BBA⋆ist eine neuartige Anpassung des binäres BA-Protokoll von Feldman und Micali [15]. Ihr Protokoll war das erste, das wie erwartet funktionierte konstante Anzahl von Schritten. Es funktionierte dadurch, dass die Spieler selbst eine gemeinsame Münze einführten, eine von Rabin vorgeschlagene Idee, die sie über eine externe vertrauenswürdige Partei [32] implementierte.3.5 Abgestufter Konsens und das Protokoll GC Erinnern wir uns für willkürliche Werte an einen Konsensbegriff, der viel schwächer ist als die byzantinische Vereinbarung. Definition 3.2. Sei P ein Protokoll, in dem die Menge aller Spieler allgemein bekannt ist, und zwar jeder Spieler i kennt privat einen beliebigen Anfangswert v′ ich. Wir sagen, dass P ein (n, t)-gestuftes Konsensprotokoll ist, wenn bei jeder Ausführung mit n Spielern at Die meisten davon sind böswillig. Jeder ehrliche Spieler hört auf, ein Wert-Grade-Paar (vi, gi) auszugeben. wobei gi \(\in\){0, 1, 2}, um die folgenden drei Bedingungen zu erfüllen: 1. Für alle ehrlichen Spieler i und j gilt |gi −gj| \(\leq\)1. 2. Für alle ehrlichen Spieler i und j, gi, gj > 0 ⇒vi = vj. 3. Wenn v′ 1 = \(\cdots\) = v′ n = v für einen Wert v, dann ist vi = v und gi = 2 für alle ehrlichen Spieler i. Historische Anmerkung Der Begriff eines abgestuften Konsenses leitet sich einfach von dem eines abgestuften Konsenses ab Sendung, vorgebracht von Feldman und Micali in [15], indem sie die Vorstellung eines Kreuzfahrers stärkt Vereinbarung, eingeführt von Dolev [12] und verfeinert von Turpin und Coan [33].8 In [15] stellten die Autoren auch ein dreistufiges (n, t)-bewertetes Rundfunkprotokoll bereit, Gradecast, für n \(\geq\)3t+1. Später wurde ein komplexeres (n, t)-Graded-Broadcasting-Protokoll für n > 2t+1 gefunden von Katz und Koo [19]. Das folgende zweistufige Protokoll GC besteht aus den letzten beiden Schritten des Gradecasts, ausgedrückt in unserem Notation. Um diese Tatsache hervorzuheben und die Schritte des Protokolls Algorand ′ in Abschnitt 4.1 anzupassen, haben wir Nennen Sie jeweils 2 und 3 die Schritte von GC. Protokoll GC Schritt 2. Jeder Spieler i sendet v′ Ich an alle Spieler. Schritt 3. Jeder Spieler i sendet genau dann an alle Spieler die Zeichenfolge x, wenn #2 i (x) \(\geq\)2t + 1. Ausgabeermittlung. Jeder Spieler i gibt das wie folgt berechnete Paar (vi, gi) aus: • Wenn für ein x, #3 i (x) \(\geq\)2t + 1, dann gilt vi = x und gi = 2. • Wenn für ein x, #3 i (x) \(\geq\)t + 1, dann gilt vi = x und gi = 1. • Sonst gilt vi = \(\bot\)und gi = 0. Satz 3.2. Wenn n \(\geq\)3t + 1, dann ist GC ein (n, t)-abgestuftes Broadcast-Protokoll. Der Beweis folgt unmittelbar aus dem des Protokoll-Gradecasts in [15] und wird daher weggelassen.9 8Im Wesentlichen ist in einem abgestuften Rundfunkprotokoll (a) die Eingabe jedes Spielers die Identität eines Distinguished Spieler, der Absender, der einen beliebigen Wert v als zusätzliche private Eingabe hat, und (b) die Ausgaben müssen die erfüllen gleiche Eigenschaften 1 und 2 des abgestuften Konsenses, plus die folgende Eigenschaft 3′: Wenn der Absender ehrlich ist, dann gilt vi = v und gi = 2 für alle ehrlichen Spieler i. 9Tatsächlich sendet der Absender in seinem Protokoll in Schritt 1 seinen eigenen privaten Wert v an alle Spieler, und jeder Spieler i lässt zu v′ i besteht aus dem Wert, den er in Schritt 1 tatsächlich vom Absender erhalten hat.3.6 Das Protokoll BA⋆ Wir beschreiben nun das Arbiträrwert-BA-Protokoll BA⋆über das binäre BA-Protokoll BBA⋆und das Protokoll mit abgestuftem Konsens GC. Unten ist der Anfangswert jedes Spielers i v′ ich. Protokoll BA⋆ Schritte 1 und 2. Jeder Spieler i führt GC bei der Eingabe v′ aus i, um ein Paar (vi, gi) zu berechnen. Schritt 3, . . . Jeder Spieler i führt BBA⋆ aus – mit der anfänglichen Eingabe 0, wenn gi = 2, und 1 andernfalls – also um das Bit outi zu berechnen. Ausgabeermittlung. Jeder Spieler i gibt vi aus, wenn outi = 0, andernfalls \(\bot\). Satz 3.3. Immer wenn n \(\geq\)3t + 1, ist BA⋆ein (n, t)-BA-Protokoll mit der Solidität 1. Beweis. Wir beweisen zunächst die Konsistenz und dann die Übereinstimmung. Konsistenznachweis. Nehmen Sie an, dass für einen Wert v \(\in\)V v′ i = v. Dann, nach Eigenschaft 3 von Abgestufter Konsens, nach der GC-Ausführung geben alle ehrlichen Spieler aus (v, 2). Dementsprechend ist 0 das erste Stück aller ehrlichen Spieler am Ende der Ausführung von BBA⋆. Also durch die Vereinbarung Eigenschaft der binären byzantinischen Vereinbarung, am Ende der Ausführung von BA⋆, outi = 0 für alle ehrlich Spieler. Dies impliziert, dass die Ausgabe jedes ehrlichen Spielers i in BA⋆vi = v ist. ✷ Nachweis der Vereinbarung. Da BBA⋆ auch ein binäres BA-Protokoll ist (A) outi = 1 für alle ehrlichen Spieler i, oder (B) outi = 0 für alle ehrlichen Spieler i. Im Fall A geben alle ehrlichen Spieler \(\bot\)in BA⋆ aus, und somit gilt die Vereinbarung. Betrachten Sie nun Fall B. In In diesem Fall ist bei der Ausführung von BBA⋆ das Anfangsbit von mindestens einem ehrlichen Spieler i 0. (In der Tat, wenn Das anfängliche Bit aller ehrlichen Spieler war 1, dann hätten wir es aufgrund der Konsistenzeigenschaft von BBA⋆ outj = 1 für alle ehrlichen j.) Dementsprechend gibt i nach der Ausführung von GC das Paar (v, 2) für einige aus Wert v. Somit ist nach Eigenschaft 1 des abgestuften Konsenses gj > 0 für alle ehrlichen Spieler j. Dementsprechend von Eigenschaft 2 des abgestuften Konsenses, vj = v für alle ehrlichen Spieler j. Dies impliziert, dass am Ende BA⋆, jeder ehrliche Spieler j gibt v aus. Somit gilt Übereinstimmung auch im Fall B. ✷ Da sowohl Konsistenz als auch Übereinstimmung gelten, ist BA⋆ein BA-Protokoll mit beliebigem Wert. Historische Anmerkung Turpin und Coan waren die ersten, die zeigten, dass für n \(\geq\)3t+1 jedes binäre (n, t)-BA gilt Das Protokoll kann in ein (n, t)-BA-Protokoll mit beliebigem Wert umgewandelt werden. Die Reduzierung auf einen beliebigen Wert Die byzantinische Vereinbarung zur binären byzantinischen Vereinbarung über einen abgestuften Konsens ist modularer und sauberer und vereinfacht die Analyse unseres Algorand-Protokolls Algorand ′. Verallgemeinerung von BA⋆zur Verwendung in Algorand Algorand funktioniert auch dann, wenn die gesamte Kommunikation über erfolgt Klatschen. Allerdings, obwohl in einem traditionellen und vertrauten Kommunikationsnetzwerk präsentiert, so Um einen besseren Vergleich mit dem Stand der Technik und ein leichteres Verständnis zu ermöglichen, funktioniert das Protokoll BA⋆works auch in Klatschnetzwerken. Tatsächlich werden wir es in unseren detaillierten Ausführungsformen von Algorand vorstellen direkt für Klatschnetzwerke. Wir weisen auch darauf hin, dass es der Austauschbarkeit des Spielers gerecht wird Eigentum, das für die Sicherheit von Algorand im geplanten sehr kontradiktorischen Modell von entscheidender Bedeutung ist.

Jedes durch einen BA-Spieler austauschbare Protokoll, das in einem klatschenden Kommunikationsnetzwerk funktioniert, kann sein sicher im erfinderischen Algorand-System eingesetzt. Insbesondere Micali und Vaikunthanatan haben BA⋆ erweitert, um auch mit einer einfachen Mehrheit ehrlicher Spieler sehr effizient zu arbeiten. Das Auch das Protokoll könnte in Algorand verwendet werden.

Протокол BA BA⋆ в традиционной обстановке

Как уже подчеркивалось, византийское соглашение является ключевым ингредиентом Algorand. Действительно, это через использование такого протокола BA, на который Algorand не влияет вилка. Однако, чтобы быть в безопасности от наших Могущественный противник, Algorand должен полагаться на протокол BA, который удовлетворяет новой возможности замены игроков. ограничение. Кроме того, чтобы Algorand был эффективным, такой протокол BA должен быть очень эффективным. Протоколы BA были впервые определены для идеализированной модели связи, синхронной полной сети (сети SC). Такая модель позволяет упростить разработку и анализ протоколов БА. 6 Учитывая честный процент h и приемлемую вероятность отказа F, Algorand вычисляет верхнюю границу N, максимальному числу членов проверяющих на шаге. Таким образом, предположение MP должно выполняться только при n \(\leq\)N. Кроме того, как уже говорилось, предположение MP сохраняется независимо от того, сколько других сообщений может распространяться одновременно с MJ's. Однако, как мы увидим, в Algorand сообщения at распространяются практически за неперекрывающееся время. интервалы, в течение которых либо распространяется один блок, либо не более N верификаторов распространяются небольшой (например, 200B) сообщение. Таким образом, мы могли бы переформулировать предположение MP в более слабом, но и более сложном виде. 7Например, он может сразу узнать сообщения, отправленные честными игроками. Таким образом, злонамеренный пользователь i', который которого попросили распространить сообщение одновременно с честным пользователем i, всегда может выбрать свое собственное сообщение m' на основе сообщение m фактически распространяется i. Эта способность связана с спешкой, на языке распределенных вычислений. литература.Соответственно, в этом разделе мы вводим новый протокол BA, BA⋆, для сетей SC и игнорируя вообще вопрос взаимозаменяемости игроков. Протокол BA⋆ представляет собой вклад отдельной ценности. Действительно, это наиболее эффективный из известных на сегодняшний день криптографических протоколов BA для сетей SC. Чтобы использовать его в нашем протоколе Algorand, мы немного модифицируем BA⋆, чтобы учесть наши различные модель и контекст общения, но не забудьте в разделе X указать, как используется BA⋆. в рамках нашего фактического протокола Algorand ′. Начнем с напоминания о модели, в которой действует BA⋆, и о понятии византийского соглашения. 3.1 Синхронные полные сети и соответствующие противники В сети SC имеются общие часы, отсчитывающие время каждого целого числа r = 1, 2, . . . При каждом четном нажатии r каждый игрок i мгновенно и одновременно отправляет один сообщение мистеру i,j (возможно, пустое сообщение) каждому игроку j, включая себя. Каждый мистер я, j получен в момент времени щелкните r + 1 игроком j вместе с личностью отправителя i. Опять же, в протоколе связи игрок честен, если он следует всем предписанным ему правилам. инструкции и злонамеренные в противном случае. Все злонамеренные игроки полностью контролируются и прекрасно координируется Противником, который, в частности, немедленно получает все сообщения, адресованные злонамеренные игроки и выбирает сообщения, которые они отправляют. Злоумышленник может немедленно сделать злонамеренным любого честного пользователя, которого он захочет, в любое нечетное время. он хочет, с учетом только возможного верхнего предела числа злонамеренных игроков. То есть, Противник «не может вмешиваться в сообщения, уже отправленные честным пользователем i», которые будут доставили как обычно. Противник также имеет дополнительную возможность мгновенно, в каждом четном раунде, видеть сообщения, которые отправляют честные на данный момент игроки, и мгновенно использовать эту информацию для выбора сообщения, которые злоумышленники отправляют одновременно, отмечаются галочкой. Примечания • Сила противника. Вышеуказанная установка является очень враждебной. Действительно, в Византийском договоре литературе, многие параметры менее враждебны. Однако есть еще некоторые состязательные настройки. также рассматривалось, где Противник, увидев сообщения, отправленные честным игроком, в данный момент нажмите r, есть возможность стереть все эти сообщения из сети, сразу поврежденный i, выберите сообщение, которое теперь отправляет вредоносный i, нажмите r и получите его доставили как обычно. Предполагаемая сила Противника соответствует той, которую он имеет в наших условиях. • Физическая абстракция. Предполагаемая модель коммуникации абстрагирует более физическую модель, в котором каждая пара игроков (i, j) связана отдельной частной линией связи li,j. То есть никто другой не может внедрять сообщения, вмешиваться в них или получать информацию о них. Ли, Дж. Единственный способ для злоумышленника получить доступ к li,j — это повредить i или j. • Конфиденциальность и аутентификация. В сетях SC гарантируется конфиденциальность и аутентификация сообщений. по предположению. Напротив, в нашей сети связи, где распространяются сообщения между узлами аутентификация гарантируется цифровыми подписями, а конфиденциальность отсутствует. Таким образом, чтобы адаптировать протокол BA⋆ к нашим условиям, каждое обмениваемое сообщение должно быть подписано цифровой подписью. (дальнейшее определение состояния, в котором оно было отправлено). К счастью, протоколы БА, которые мы рассмотрите возможность использования в Algorand не требующих конфиденциальности сообщений.3.2 Понятие византийского соглашения Понятие византийского соглашения было введено Пизом Шостаком и Лэмпортом [31] для двоичный случай, то есть когда каждое начальное значение состоит из бита. Однако его быстро продлили. произвольным начальным значениям. (См. обзоры Фишера [16] и Чора и Дворка [10].) Бакалавр протокол, мы имеем в виду протокол произвольного значения. Определение 3.1. В синхронной сети пусть P — протокол для n игроков, набор игроков которого общий. знаний среди игроков, t — положительное целое число такое, что n \(\geq\)2t + 1. Мы говорим, что P является произвольного (соответственно двоичного) (n, t)-византийского протокола согласования с корректностью \(\sigma\) \(\in\)(0, 1) если для любого набора значений V, не содержащего специального символа \(\bot\) (соответственно, для V = {0, 1}), в исполнение, в котором не более t игроков являются злонамеренными и в котором каждый игрок i начинает с начальное значение vi \(\in\)V , каждый честный игрок j останавливается с вероятностью 1, выдавая значение outi \(\in\)V \(\cup\){\(\bot\)} так, чтобы с вероятностью не менее \(\sigma\) удовлетворить следующим двум условиям: 1. Соглашение: существует out \(\in\)V \(\cup\){\(\bot\)} такой, что outi = out для всех честных игроков i. 2. Непротиворечивость: если для некоторого значения v \(\in\)V vi = v для всех честных игроков, то out = v. Мы называем out выходом P, а каждый outi — выходом игрока i. 3.3 Обозначение BA В наших протоколах БА игрок обязан посчитать, сколько игроков отправили ему заданное сообщение в заданный шаг. Соответственно, для каждого возможного значения v, которое может быть отправлено,

с

я (в) (или просто #i(v), если s ясно) — это количество игроков j, от которых я получил v на шаге s. Вспоминая, что игрок i получает ровно одно сообщение от каждого игрока j, если число игроков равно n, то для всех i и s P в #с я(v) = п. 3.4 Бинарный протокол BA BBA⋆ В этом разделе мы представляем новый бинарный протокол BA, BBA⋆, который опирается на честность большего количества чем две трети игроков и очень быстро: что бы ни делали злонамеренные игроки, каждое выполнение основного цикла приводит игроков к соглашению с вероятностью 1/3. Каждый игрок имеет свой открытый ключ схемы цифровой подписи, удовлетворяющий требованиям уникальной подписи. собственность. Поскольку этот протокол предназначен для работы в полной синхронной сети, нет нужно, чтобы игрок подписывал каждое свое сообщение. Цифровые подписи используются для генерации достаточно распространенного случайного бита на этапе 3. (В Algorand цифровые подписи также используются для аутентификации всех остальных сообщений.) Протокол требует минимальной настройки: общая случайная строка r, независимая от игроков. ключи. (В Algorand r фактически заменяется величиной Qr.) Протокол BBA⋆ представляет собой трехэтапный цикл, в котором игроки неоднократно обмениваются логическими значениями, а разные игроки могут выйти из этого цикла в разное время. Игрок i выходит из этого цикла, распространяя на каком-то этапе либо специальное значение 0∗, либо специальное значение 1∗, тем самым инструктируя всех игроков «представьте», что они получают соответственно 0 и 1 от i на всех последующих шагах. (В качестве альтернативы: предположимчто последнее сообщение, полученное игроком j от другого игрока i, было битом b. Тогда на любом шаге в котором он не получает никакого сообщения от i, j действует так, как если бы я отправил ему бит b.) В протоколе используется счетчик \(\gamma\), показывающий, сколько раз был выполнен трехэтапный цикл. В начале BBA⋆ \(\gamma\) = 0. (Можно думать о \(\gamma\) как о глобальном счетчике, но на самом деле он увеличен каждым отдельным игроком каждый раз при выполнении цикла.) Их n \(\geq\)3t + 1, где t — максимально возможное количество злоумышленников. Бинарный файл строка x идентифицируется с целым числом, двоичное представление которого (с возможными начальными нулями) равно x; а lsb(x) обозначает младший значащий бит числа x. Протокол BBA⋆ (Связь) Шаг 1. [Шаг фиксирования монеты до 0] Каждый игрок i отправляет bi. 1.1 Если №1 i (0) \(\geq\)2t + 1, затем я устанавливает bi = 0, отправляет 0∗, выводит outi = 0, и ОСТАНАВЛИВАЕТСЯ. 1.2 Если №1 i (1) \(\geq\)2t + 1, то тогда я устанавливаю bi = 1. 1.3 В противном случае я устанавливаю bi = 0. (Связь) Шаг 2. [Шаг фиксированной монеты-1] Каждый игрок i отправляет bi. 2.1 Если №2 i (1) \(\geq\)2t + 1, то я устанавливаю bi = 1, отправляет 1∗, выходы outi = 1, и ОСТАНАВЛИВАЕТСЯ. 2.2 Если №2 i (0) \(\geq\)2t + 1, то я устанавливаю bi = 0. 2.3 В противном случае я устанавливаю bi = 1. (Общение) Шаг 3. [Шаг истинного подбрасывания монеты] Каждый игрок i отправляет bi и SIGi(r, \(\gamma\)). 3.1 Если №3 i (0) \(\geq\)2t + 1, то я устанавливаю bi = 0. 3.2 Если №3 i (1) \(\geq\)2t + 1, то я устанавливаю bi = 1. 3.3 Иначе, полагая Si = {j \(\in\)N, который отправил i правильное сообщение на этом шаге 3 }, я устанавливаю bi = c \(\triangleq\)lsb(minj\(\varepsilon\)Si H(SIGi(r, \(\gamma\)))); увеличивает \(\gamma\)i на 1; и возвращается к шагу 1. Теорема 3.1. Всякий раз, когда n \(\geq\)3t + 1, BBA⋆ является бинарным (n, t)-протоколом BA с надежностью 1. Доказательство теоремы 3.1 приведено в [26]. Его адаптация к нашим условиям и возможность замены игроков. свойства являются новыми. Историческое замечание Вероятностные бинарные протоколы БА были впервые предложены Бен-Ором в асинхронные настройки [7]. Протокол BBA⋆ — это новая адаптация к нашим условиям открытого ключа двоичный протокол BA Фельдмана и Микали [15]. Их протокол был первым, который сработал ожидаемым образом. постоянное количество шагов. Это сработало благодаря тому, что игроки сами реализовали общую монету. идея, предложенная Рабином, который реализовал ее через внешнюю доверенную сторону [32].3,5 Градуированный консенсус и Протокол GC Давайте вспомним, что касается произвольных ценностей, понятие консенсуса, гораздо более слабое, чем византийское соглашение. Определение 3.2. Пусть P — протокол, в котором множество всех игроков общеизвестно, и каждый игрок i лично знает произвольное начальное значение v' я. Мы говорим, что P является (n, t)-градуированным протоколом консенсуса, если в каждом исполнении с n игроками в большинство из которых являются вредоносными, каждый честный игрок i прекращает выводить пару ценных значений (vi, gi), где gi \(\in\){0, 1, 2}, чтобы удовлетворить следующим трем условиям: 1. Для всех честных игроков i и j |gi −gj| \(\leq\)1. 2. Для всех честных игроков i и j gi, gj > 0 ⇒vi = vj. 3. Если v' 1 = \(\cdots\) = v′ n = v для некоторого значения v, тогда vi = v и gi = 2 для всех честных игроков i. Историческая справка Понятие дифференцированного консенсуса просто вытекает из понятия дифференцированного консенсуса. трансляция, выдвинутая Фельдманом и Микали в [15], путем укрепления понятия крестоносца соглашение, представленное Долевым [12] и уточненное Терпином и Коаном [33].8 В [15] авторы также предоставили трехэтапный (n, t) протокол вещания Gradecast для n \(\geq\)3t+1. Позже был найден более сложный (n, t)-градуированный протокол вещания для n > 2t+1. Кац и Ку [19]. Следующий двухэтапный протокол GC состоит из двух последних этапов Gradecast, выраженных в нашем обозначения. Чтобы подчеркнуть этот факт и соответствовать шагам протокола Algorand ′ раздела 4.1, мы соответственно назовите 2 и 3 шаги GC. Протокол GC Шаг 2. Каждый игрок i отправляет v' я всем игрокам. Шаг 3. Каждый игрок i отправляет всем игрокам строку x тогда и только тогда, когда #2 я (х) \(\geq\)2t + 1. Определение выхода. Каждый игрок i выводит пару (vi, gi), рассчитанную следующим образом: • Если для некоторого x, #3 i (x) \(\geq\)2t + 1, тогда vi = x и gi = 2. • Если для некоторого x, #3 i (x) \(\geq\)t + 1, тогда vi = x и gi = 1. • В противном случае vi = \(\bot\) и gi = 0. Теорема 3.2. Если n \(\geq\)3t + 1, то GC является (n, t)-градуированным широковещательным протоколом. Доказательство непосредственно следует из протокола Gradecast в [15] и поэтому опускается9. 8По сути, в протоколе дифференцированного вещания (а) вклад каждого игрока представляет собой личность выдающегося игрок, отправитель, который имеет произвольное значение v в качестве дополнительных частных входных данных, и (б) выходные данные должны удовлетворять те же свойства 1 и 2 градуированного консенсуса, плюс следующее свойство 3': если отправитель честен, то vi = v и gi = 2 для всех честных игроков i. 9Действительно, в их протоколе на шаге 1 отправитель отправляет свое личное значение v всем игрокам, и каждый игрок i позволяет v' я состою из значения, которое он фактически получил от отправителя на шаге 1.3.6 Протокол BA⋆ Теперь мы опишем протокол BA с произвольными значениями BA⋆ через двоичный протокол BA BBA⋆ и протокол постепенного консенсуса GC. Ниже начальная стоимость каждого игрока i равна v' я. Протокол BA⋆ Шаги 1 и 2. Каждый игрок i выполняет GC на входе v' i, чтобы вычислить пару (vi, gi). Шаг 3, . . . Каждый игрок i выполняет BBA⋆ — с начальным вводом 0, если gi = 2, и 1 в противном случае — так что как вычислить бит outi. Определение выхода. Каждый игрок i выводит vi, если outi = 0, и \(\bot\) в противном случае. Теорема 3.3. Всякий раз, когда n \(\geq\)3t + 1, BA⋆ представляет собой (n, t)-BA-протокол с надежностью 1. Доказательство. Сначала мы доказываем непротиворечивость, а затем согласие. Доказательство согласованности. Предположим, что для некоторого значения v \(\in\)V , v′ i = v. Тогда по свойству 3 градуированный консенсус, после выполнения GC, все честные игроки выводят (v, 2). Соответственно, 0 начальный бит всех честных игроков в конце исполнения BBA⋆. Таким образом, Соглашением свойство бинарного византийского соглашения, в конце исполнения BA⋆, outi = 0 для всех честных игроки. Это означает, что результат каждого честного игрока i в BA⋆ равен vi = v. ✷ Доказательство соглашения. Поскольку BBA⋆ — это двоичный протокол BA, либо (A) outi = 1 для всех честных игроков i, или (B) outi = 0 для всех честных игроков i. В случае А все честные игроки выводят \(\bot\)в BA⋆, и, таким образом, Соглашение выполняется. Рассмотрим теперь случай Б. В в этом случае при выполнении BBA⋆ начальный бит хотя бы одного честного игрока i равен 0. (Действительно, если начальный бит всех честных игроков был равен 1, то, согласно свойству согласованности BBA⋆, мы бы имели outj = 1 для всех честных j.) Соответственно, после выполнения GC i выводит пару (v, 2) для некоторых значение v. Таким образом, по свойству 1 градуированного консенсуса gj > 0 для всех честных игроков j. Соответственно, по свойство 2 градуированного консенсуса: vj = v для всех честных игроков j. Это означает, что в конце BA⋆, каждый честный игрок j выводит v. Таким образом, Соглашение справедливо и в случае B. ✷ Поскольку соблюдаются как согласованность, так и согласованность, BA⋆ является протоколом BA с произвольным значением. Историческая справка Терпин и Коан первыми показали, что при n \(\geq\)3t+1 любой бинарный (n, t)-BA протокол может быть преобразован в протокол произвольного значения (n, t)-BA. Приведение произвольного значения Византийское соглашение к бинарному Византийское соглашение посредством ступенчатого консенсуса является более модульным и чище и упрощает анализ нашего Algorand протокола Algorand ′. Обобщающий BA⋆для использования в Algorand Algorand работает, даже если вся связь осуществляется через сплетни. Однако, несмотря на то, что они представлены в традиционной и знакомой сети связи, так как Чтобы обеспечить лучшее сравнение с предшествующим уровнем техники и облегчить понимание, работает протокол BA⋆. также в сетях сплетен. Фактически, в наших детальных вариантах реализации Algorand мы представим его непосредственно для сетей сплетен. Отметим также, что оно удовлетворяет заменимости игроков свойство, которое имеет решающее значение для безопасности Algorand в предусмотренной очень состязательной модели.

Любой заменяемый игроком BA протокол, работающий в сети сплетничающей связи, может быть надежно используется в системе Algorand изобретения. В частности, Микали и Вайкунтханатан. расширили BA⋆, чтобы он мог очень эффективно работать и с простым большинством честных игроков. Это протокол тоже можно использовать в Algorand.

Zwei Ausführungsformen von Algorand

Wie bereits erwähnt, läuft eine Runde Algorand auf sehr hohem Niveau idealerweise wie folgt ab. Zuerst ein Zufall Der ausgewählte Benutzer, der Leiter, schlägt einen neuen Block vor und verteilt ihn. (Dieser Prozess umfasst zunächst Wählen Sie einige potenzielle Führungskräfte aus und stellen Sie dann sicher, dass zumindest in einem guten Teil der Zeit a es entsteht ein einziger gemeinsamer Anführer.) Zweitens wird ein zufällig ausgewähltes Komitee von Benutzern ausgewählt, und erreicht eine byzantinische Einigung über den vom Führer vorgeschlagenen Block. (Dieser Prozess beinhaltet das Jeder Schritt des BA-Protokolls wird von einem separat ausgewählten Ausschuss geleitet.) Der vereinbarte Block wird dann von einer bestimmten Schwelle (TH) an Ausschussmitgliedern digital signiert. Diese digitalen Signaturen werden verteilt, so dass jeder sicher ist, welcher der neue Block ist. (Dazu gehört auch die Weitergabe der Anmeldeinformationen der Unterzeichner und Authentifizierung nur des hash des neuen Blocks, um sicherzustellen, dass jeder wird den Block garantiert lernen, sobald sein hash klargestellt ist.) In den nächsten beiden Abschnitten stellen wir zwei Ausführungsformen von Algorand, Algorand vor. 1 und Algorand ′ 2, die unter der Annahme der Mehrheit der ehrlichen Benutzer funktionieren. In Abschnitt 8 zeigen wir, wie man diese übernimmt Verkörperungen funktionieren unter der Annahme einer ehrlichen Mehrheit des Geldes. Algorand ′ 1 sieht lediglich vor, dass > 2/3 der Ausschussmitglieder ehrlich sind. Darüber hinaus in Algorand ′ 1 ist die Anzahl der Schritte zur Erzielung einer byzantinischen Einigung auf einen angemessen hohen Betrag begrenzt Zahl, so dass eine Einigung mit überwältigender Wahrscheinlichkeit innerhalb von a gewährleistet ist Feste Anzahl von Schritten (aber möglicherweise länger dauernd als die Schritte von Algorand ′ 2). Im In einem entfernten Fall, in dem bis zum letzten Schritt noch keine Einigung erzielt wurde, stimmt der Ausschuss dem zu leerer Block, der immer gültig ist. Algorand ′ 2 sieht vor, dass die Zahl der ehrlichen Mitglieder in einem Ausschuss immer größer ist als oder gleich einem festen Schwellenwert tH (was dies zumindest mit überwältigender Wahrscheinlichkeit garantiert). 2/3 der Ausschussmitglieder sind ehrlich). Darüber hinaus Algorand ′ 2 ermöglicht eine byzantinische Vereinbarung in einer beliebigen Anzahl von Schritten erreicht werden (aber möglicherweise in kürzerer Zeit als Algorand ′ 1). Viele Varianten dieser Grundausführungen lassen sich leicht ableiten. Insbesondere ist es einfach, gegeben Algorand ′ 2, um Algorand ′ zu ändern 1, um eine willkürliche byzantinische Einigung zu ermöglichen Anzahl der Schritte. Beide Ausführungsformen teilen den folgenden gemeinsamen Kern, die folgenden Notationen, Begriffe und Parameter. 4.1 Ein gemeinsamer Kern Ziele Idealerweise würde Algorand für jede Runde r die folgenden Eigenschaften erfüllen: 1. Perfekte Korrektheit. Alle ehrlichen Benutzer sind sich im selben Block einig, Br. 2. Vollständigkeit 1. Mit Wahrscheinlichkeit 1 ist die Lohnmenge von Br, PAY r, maximal.10 10Weil Gehaltssätze so definiert sind, dass sie gültige Zahlungen enthalten und ehrliche Benutzer nur gültige Zahlungen leisten dürfen, ein Maximum PAY r enthält die „aktuell ausstehenden“ Zahlungen aller ehrlichen Nutzer.Natürlich ist die Gewährleistung vollkommener Korrektheit allein trivial: Jeder wählt immer den Beamten Payset PAY r muss leer sein. Aber in diesem Fall hätte das System die Vollständigkeit 0. Leider Die Gewährleistung sowohl vollkommener Richtigkeit als auch Vollständigkeit 1 ist angesichts böswilliger Angriffe nicht einfach Benutzer. Algorand verfolgt somit eine realistischere Zielsetzung. Informell bezeichnet h den Prozentsatz der ehrlichen Benutzer, h > 2/3, ist das Ziel von Algorand Garantiert mit überwältigender Wahrscheinlichkeit vollkommene Korrektheit und Vollständigkeit nahe h. Der Richtigkeit Vorrang vor der Vollständigkeit zu geben, scheint eine vernünftige Entscheidung zu sein: Zahlungen werden nicht verarbeitet Eine Runde kann in der nächsten abgearbeitet werden, man sollte aber nach Möglichkeit auf Gabelungen verzichten. Geführtes byzantinisches Abkommen Perfekte Korrektheit kann wie folgt garantiert werden. Am Anfang In Runde r erstellt jeder Benutzer i seinen eigenen Kandidatenblock Br i , und dann erreichen alle Benutzer Byzantine Einigung über einen Kandidatenblock. Gemäß unserer Einführung erfordert das verwendete BA-Protokoll eine ehrliche 2/3-Mehrheit und ist durch Spieler austauschbar. Jeder seiner Schritte kann von einem kleinen und ausgeführt werden zufällig ausgewählte Gruppe von Verifizierern, die keine inneren Variablen gemeinsam haben. Leider gibt es für diesen Ansatz keine Vollständigkeitsgarantie. Das ist so, weil der Kandidat Die Blöcke der ehrlichen Benutzer unterscheiden sich höchstwahrscheinlich völlig voneinander. Somit ist das letztendlich Der vereinbarte Block kann immer einer mit einem nicht maximalen Gehaltssatz sein. Tatsächlich kann es immer so sein leerer Block, B\(\varepsilon\), d. h. der Block, dessen Payset leer ist. Nun, es wird die Standardeinstellung sein, leer. Algorand ′ vermeidet dieses Vollständigkeitsproblem wie folgt. Zunächst wird ein Anführer für die Runde r, \(\ell\)r, ausgewählt. Dann propagiert \(\ell\)r seinen eigenen Kandidatenblock, Br \(\ell\)r. Schließlich einigen sich die Nutzer auf die Sperre sie erhalten tatsächlich von \(\ell\)r. Denn wann immer \(\ell\)r ehrlich ist, vollkommene Korrektheit und Vollständigkeit 1 gilt beides, Algorand ′ stellt sicher, dass \(\ell\)r ehrlich ist mit einer Wahrscheinlichkeit nahe h. (Wenn der Anführer ist Böswillig ist es uns egal, ob der vereinbarte Block einer mit einem leeren Payset ist. Immerhin a böswilliger Anführer \(\ell\)r könnte sich immer böswillig für Br entscheiden \(\ell\)r der leere Block sein, und dann ehrlich verbreiten Sie es und zwingen Sie so die ehrlichen Benutzer, sich auf den leeren Block zu einigen.) Auswahl des Leiters In Algorand hat der r-te Block die Form Br = (r, PAY r, Qr, H(Br−1). Wie bereits in der Einleitung erwähnt, wird die Größe Qr−1 sorgfältig so konstruiert, dass sie ist im Wesentlichen nicht manipulierbar durch unseren sehr mächtigen Gegner. (Später in diesem Abschnitt werden wir Geben Sie eine Vorstellung davon, warum dies der Fall ist.) Zu Beginn einer Runde r kennen alle Benutzer das blockchain bisher, B0, . . . , Br−1, woraus sie die Menge der Benutzer jeder vorherigen Runde ableiten: das ist, PK1, . . . , PKr−1. Ein potenzieller Anführer der Runde r ist ein Benutzer, der so ist .H SIGi r, 1, Qr−1 \(\leq\)p . Lassen Sie es uns erklären. Beachten Sie, dass die Größe Qr−1 Teil des Blocks Br−1 und des zugrundeliegenden ist Das Signaturschema erfüllt die Eindeutigkeitseigenschaft SIGi r, 1, Qr−1 ist eindeutig eine Binärzeichenfolge verbunden mit i und r. Da H also ein zufälliger oracle ist, ist H SIGi r, 1, Qr−1 ist ein zufälliges 256-Bit lange Zeichenfolge, die eindeutig i und r zugeordnet ist. Das Symbol „.“ vor H SIGi r, 1, Qr−1 ist das Dezimalpunkt (in unserem Fall binär), so dass ri \(\triangleq\).H SIGi r, 1, Qr−1 ist die binäre Entwicklung von a Zufällige 256-Bit-Zahl zwischen 0 und 1, die eindeutig i und r zugeordnet ist. Somit ist die Wahrscheinlichkeit, dass ri kleiner oder gleich p ist im Wesentlichen p. (Unser Auswahlmechanismus für potenzielle Führungskräfte war inspiriert vom Mikrozahlungssystem von Micali und Rivest [28].) Die Wahrscheinlichkeit p wird so gewählt, dass mit überwältigender Wahrscheinlichkeit (d. h. 1 − F) mindestens eins vorliegt Der potenzielle Prüfer ist ehrlich. (Tatsächlich wird p so gewählt, dass es die kleinste derartige Wahrscheinlichkeit ist.)Beachten Sie, dass er allein dazu in der Lage ist, da ich der Einzige ist, der in der Lage ist, seine eigenen Signaturen zu berechnen Stellen Sie fest, ob er ein potenzieller Prüfer der ersten Runde ist. Indem Sie jedoch seine eigenen Qualifikationen offenlegen, \(\sigma\)r i \(\triangleq\)SIGi r, 1, Qr−1 , ich kann jedem beweisen, dass ich ein potenzieller Prüfer der Runde r bin. Der Anführer ist der potenzielle Anführer, dessen hashed-Berechtigung kleiner ist als der hashed-Berechtigungsnachweis aller anderen potenziellen Anführer j: das heißt, H(\(\sigma\)r,s \(\ell\)r ) \(\leq\)H(\(\sigma\)r,s j). Beachten Sie, dass, da ein böswilliger \(\ell\)r seinen Berechtigungsnachweis nicht preisgeben darf, der richtige Anführer der Runde r dies tun darf nie bekannt werden, und dass \(\ell\)r, sofern es keine unwahrscheinlichen Bindungen gibt, tatsächlich der einzige Anführer der Runde r ist. Lassen Sie uns abschließend noch ein letztes, aber wichtiges Detail ansprechen: Ein Benutzer kann ein potenzieller Anführer sein (und somit der Anführer) einer Runde r nur dann, wenn er mindestens k Runden dem System angehörte. Das garantiert die Nichtmanipulierbarkeit von Qr und allen zukünftigen Q-Größen. Tatsächlich einer der potenziellen Anführer wird tatsächlich Qr bestimmen. Auswahl des Verifizierers Jeder Schritt s > 1 der Runde r wird von einer kleinen Gruppe von Prüfern, SV r,s, ausgeführt. Auch hier wird jeder Verifizierer i \(\in\)SV r,s zufällig unter den Benutzern ausgewählt, die sich bereits in den k Runden des Systems befinden vor r und wiederum über die Sondergröße Qr−1. Konkret ist i \(\in\)PKr−k ein Verifizierer in SV r,s, wenn .H SIGi r, s, Qr−1 \(\leq\)p′ . Auch hier weiß nur ich, ob er zum SV r,s gehört, aber wenn das der Fall ist, könnte er es durch beweisen stellt seinen Berechtigungsnachweis \(\sigma\)r,s vor ich \(\triangleq\)H(SIGi r, s, Qr−1 ). Ein Prüfer i \(\in\)SV r,s sendet eine Nachricht, mr,s ich, in Schritte s der Runde r, und diese Nachricht enthält seine Anmeldeinformationen \(\sigma\)r,s i , um die Verifizierer für die zu aktivieren Nestschritt, um zu erkennen, dass Herr, S ich ist eine legitime Step-S-Nachricht. Die Wahrscheinlichkeit p′ wird so gewählt, dass sichergestellt ist, dass in SV r,s #good die Zahl von ist ehrliche Benutzer und #bad die Anzahl böswilliger Benutzer, mit überwältigender Wahrscheinlichkeit das Folgende Es gelten zwei Bedingungen. Zur Verkörperung Algorand ′ 1: (1) #gut > 2 \(\cdot\) #schlecht und (2) #gut + 4 \(\cdot\) #schlecht < 2n, wobei n die erwartete Kardinalität von SV r,s ist. Zur Verkörperung Algorand ′ 2: (1) #gut > tH und (2) #gut + 2#schlecht < 2tH, wobei tH ein festgelegter Schwellenwert ist. Diese Bedingungen implizieren, dass mit ausreichend hoher Wahrscheinlichkeit (a) im letzten Schritt des BA Protokoll wird es mindestens eine bestimmte Anzahl ehrlicher Spieler geben, die den neuen Block Br digital signieren, (b) nur ein Block pro Runde darf die erforderliche Anzahl an Signaturen haben und (c) die verwendete BA Das Protokoll verfügt (bei jedem Schritt) über die erforderliche ehrliche Zweidrittelmehrheit. Klärung der Blockgenerierung Wenn der Rund-R-Anführer \(\ell\)r ehrlich ist, dann der entsprechende Block ist von der Form Br = r, PAY r, SIG\(\ell\)r Qr−1 , H Br−1 , wobei der Payset PAY r maximal ist. (Denken Sie daran, dass alle Gehaltssätze per Definition kollektiv gültig sind.) Andernfalls (d. h. wenn \(\ell\)r böswillig ist) hat Br eine der folgenden zwei möglichen Formen: Br = r, ZAHLEN r, SIGi Qr−1 , H Br−1 und Br = Br \(\varepsilon\) \(\triangleq\) r, \(\emptyset\), Qr−1, H Br−1 .In der ersten Form ist PAY r eine (nicht unbedingt maximale) Gehaltsmenge und kann PAY r = \(\emptyset\) sein; und ich bin ein potenzieller Anführer der Runde r. (Allerdings bin ich möglicherweise nicht der Anführer. Dies kann tatsächlich passieren, wenn \(\ell\)r hält seinen Ausweis geheim und gibt sich nicht zu erkennen.) Die zweite Form entsteht, wenn bei der Round-R-Ausführung des BA-Protokolls alle ehrlichen Spieler auftreten Geben Sie den Standardwert aus, der der leere Block Br ist \(\varepsilon\) in unserer Anwendung. (Per Definition das Mögliche Ausgaben eines BA-Protokolls enthalten einen Standardwert, der allgemein mit \(\bot\) bezeichnet wird. Siehe Abschnitt 3.2.) Beachten Sie, dass Br =, obwohl die Gehaltssätze in beiden Fällen leer sind r, \(\emptyset\), SIGi Qr−1 , H Br−1 und Br \(\varepsilon\) sind syntaktisch unterschiedliche Blöcke und treten in zwei verschiedenen Situationen auf: bzw. „alle verlief reibungslos genug bei der Ausführung des BA-Protokolls“, und „etwas ist schief gelaufen BA-Protokoll und der Standardwert wurde ausgegeben“. Beschreiben wir nun intuitiv, wie die Generierung des Blocks Br in Runde r von Algorand ′ abläuft. Im ersten Schritt prüft jeder teilnahmeberechtigte Spieler, also jeder Spieler i \(\in\)PKr−k, ob er ein Potential ist Anführer. Wenn dies der Fall ist, dann wird ich gefragt, unter Verwendung aller Zahlungen, die er bisher gesehen hat, und die aktuell blockchain, B0, . . . , Br−1, um heimlich einen maximalen Zahlungssatz, PAY r, vorzubereiten ich, und zwar heimlich stellt seinen Kandidatenblock zusammen, Br = r, ZAHLEN r Ich, SIGi Qr−1 , H Br−1 . Das heißt, nicht nur er in Br einschließen i als zweite Komponente der soeben vorbereitete Lohnsatz, aber auch als dritte Komponente seine eigene Signatur von Qr−1, der dritten Komponente des letzten Blocks, Br−1. Schließlich propagiert er seine Runde-r-Schritt-1-Nachricht, mr,1 i , zu dem (a) sein Kandidatenblock Br gehört i, (b) seine ordnungsgemäße Unterschrift seines Kandidatenblocks (d. h. seine Unterschrift des hash von Br i und (c) sein eigener Ausweis \(\sigma\)r,1 ich, beweisen dass er tatsächlich ein potenzieller Verifizierer der Runde r ist. (Beachten Sie, dass, bis ein ehrlicher Herr seine Botschaft hervorbringt, 1 Ich, der Widersacher hat keine Ahnung, dass ich ein bin potenzieller Prüfer. Sollte er ehrliche potenzielle Anführer korrumpieren wollen, könnte der Widersacher dies auch tun korrupte zufällige ehrliche Spieler. Sobald er jedoch Herrn 1 sieht i , da es die Anmeldeinformationen von i enthält, die Der Gegner weiß es und könnte i korrumpieren, kann mr,1 aber nicht verhindern i , das viral verbreitet wird, von alle Benutzer im System erreichen.) Im zweiten Schritt versucht jeder ausgewählte Verifizierer j \(\in\)SV r,2, den Anführer der Runde zu identifizieren. Insbesondere nimmt j die Anmeldeinformationen für Schritt 1 an, \(\sigma\)r,1 i1 , . . . , \(\sigma\)r,1 in , enthalten in der richtigen Schritt-1-Nachricht mr,1 ich er hat empfangen; hashes alle, das heißt, berechnet H  \(\sigma\)r,1 i1  , . . . , H  \(\sigma\)r,1 in  ; findet den Ausweis, \(\sigma\)r,1 \(\ell\)j , dessen hash lexikographisch minimal ist; und überlegt \(\ell\)r j soll der Anführer der Runde r sein. Denken Sie daran, dass jeder betrachtete Berechtigungsnachweis eine digitale Signatur von Qr−1, also SIGi, ist r, 1, Qr−1 ist eindeutig durch i und Qr−1 bestimmt, dass H zufällig oracle ist und somit jedes H(SIGi r, 1, Qr−1 ist eine zufällige 256-Bit-lange Zeichenfolge, die für jeden potenziellen Anführer i der Runde r eindeutig ist. Daraus können wir schließen, dass die 256-Bit-Zeichenfolge Qr−1 selbst zufällig und unabhängig wäre ausgewählt, dann wären dies die hashed-Anmeldeinformationen aller potenziellen Anführer der Runde r. Tatsächlich alle Potenzielle Führungskräfte sind genau definiert, ebenso wie ihre Qualifikationen (ob tatsächlich berechnet oder nicht). nicht). Darüber hinaus ist die Menge potenzieller Anführer der Runde r eine zufällige Teilmenge der Benutzer der Runde r −k, und ein ehrlicher potenzieller Anführer, der seine Botschaft immer richtig formuliert und verbreitet, Herr ich, welches den Berechtigungsnachweis von i enthält. Da also der Prozentsatz der ehrlichen Benutzer h ist, egal was böswillige potenzielle Führungskräfte könnten das Mindeste tun (z. B. ihre eigenen Referenzen preisgeben oder verbergen). hashed Die Qualifikation als potenzieller Leiter gehört einem ehrlichen Benutzer, der unbedingt von jedem identifiziert werden kann der Anführer \(\ell\)r der Runde r sein. Wenn dementsprechend die 256-Bit-Zeichenfolge Qr−1 selbst zufällig wäre und unabhängig ausgewählt, mit Wahrscheinlichkeit genau h (a) der Anführer \(\ell\)r ist ehrlich und (b) \(\ell\)j = \(\ell\)r für alle Ehrliche Schritt-2-Prüfer j. In Wirklichkeit werden die hashed-Berechtigungsnachweise zwar zufällig ausgewählt, hängen aber von Qr-1 ab, was der Fall istnicht zufällig und unabhängig ausgewählt. Wir werden in unserer Analyse jedoch beweisen, dass Qr−1 gilt ausreichend nicht manipulierbar, um sicherzustellen, dass der Anführer einer Runde ehrlich mit der Wahrscheinlichkeit ist h′ hinreichend nahe bei h liegt: nämlich h′ > h2(1 + h − h2). Wenn beispielsweise h = 80 %, dann ist h′ > 0,7424. Nachdem sie den Anführer der Runde identifiziert haben (was sie richtig machen, wenn der Anführer ehrlich ist), Die Aufgabe der Schritt-2-Verifizierer besteht darin, mit der Ausführung des BA zu beginnen und dabei als Anfangswerte das zu verwenden, woran sie glauben der Block des Anführers sein. Um den Umfang der erforderlichen Kommunikation zu minimieren, Ein Verifizierer j \(\in\)SV r,2 verwendet nicht als seinen Eingabewert v′ j zum byzantinischen Protokoll, der Block Bj das Er hat tatsächlich von \(\ell\)j empfangen (der Benutzer j glaubt, der Anführer zu sein), aber der der Anführer, aber der hash dieses Blocks, also v′ j = H(Bi). Daher werden nach Beendigung des BA-Protokolls die Verifizierer des letzten Schritts nicht den gewünschten Round-r-Block Br berechnen, sondern berechnen (authentifizieren und propagieren) H(Br). Da H(Br) dementsprechend von ausreichend vielen Verifizierern digital signiert ist Im letzten Schritt des BA-Protokolls werden die Benutzer im System erkennen, dass H(Br) der hash des neuen ist blockieren. Sie müssen jedoch auch die Datei abrufen (oder darauf warten, da die Ausführung ziemlich asynchron ist). Blockieren Sie Br selbst, wodurch das Protokoll sicherstellt, dass es tatsächlich verfügbar ist, unabhängig vom Gegner könnte reichen. Asynchronität und Timing Algorand ′ 1 und Algorand ′ 2 weisen einen erheblichen Grad an Asynchronität auf. Dies liegt daran, dass der Gegner einen großen Spielraum bei der Planung der Zustellung der Nachrichten hat propagiert. Darüber hinaus gibt es eine Obergrenze dafür, ob die Gesamtzahl der Schritte in einer Runde begrenzt ist oder nicht Der Varianzbeitrag ergibt sich aus der Anzahl der tatsächlich unternommenen Schritte. Sobald er die Zertifikate B0 erlernt hat, . . . , Br−1, ein Benutzer i berechnet Qr−1 und beginnt zu arbeiten In Runde r prüft er, ob er ein potenzieller Anführer oder ein Prüfer in einigen Schritten von Runde r ist. Unter der Annahme, dass ich angesichts der besprochenen Asynchronität bei Schritt s handeln muss, verlasse ich mich auf verschiedene Strategien, um sicherzustellen, dass er über ausreichende Informationen verfügt, bevor er handelt. Beispielsweise könnte er warten, bis er mindestens eine bestimmte Anzahl von Nachrichten von den Prüfern von erhält Gehen Sie zum vorherigen Schritt über oder warten Sie ausreichend Zeit, um sicherzustellen, dass er die Nachrichten ausreichend erhält viele Verifizierer des vorherigen Schritts. Der Seed Qr und der Look-Back-Parameter k Denken Sie daran, dass im Idealfall die Größen Qr sein sollten zufällig und unabhängig, obwohl es ausreicht, dass sie ausreichend nicht manipulierbar sind der Gegner. Auf den ersten Blick könnten wir Qr−1 so wählen, dass es mit H übereinstimmt ZAHLEN Sie r−1 , und vermeiden Sie es daher spezifizieren Sie Qr−1 explizit in Br−1. Eine elementare Analyse zeigt jedoch, dass böswillige Benutzer möglicherweise Nutzen Sie diesen Auswahlmechanismus.11 Einige zusätzliche Anstrengungen zeigen, dass unzählige andere 11Wir stehen am Anfang der Runde r −1. Somit ist Qr−2 = PAY r−2 öffentlich bekannt und der Gegner privat weiß, wer die potenziellen Führungskräfte sind, die er kontrolliert. Gehen Sie davon aus, dass der Gegner 10 % der Benutzer kontrolliert dass mit sehr hoher Wahrscheinlichkeit ein böswilliger Benutzer w der potenzielle Anführer der Runde r −1 ist. Das heißt, nehmen Sie das an H SIGw r −2, 1, Qr−2 ist so gering, dass es höchst unwahrscheinlich ist, dass ein ehrlicher potenzieller Anführer dies tatsächlich tun wird Anführer der Runde r −1. (Da wir uns daran erinnern, dass wir potenzielle Anführer über einen geheimen kryptografischen Sortiermechanismus auswählen, Der Widersacher weiß nicht, wer die ehrlichen potenziellen Anführer sind.) Der Widersacher ist daher beneidenswert Position der Wahl des von ihm gewünschten Gehaltssatzes PAY′ und dass dieser zum offiziellen Gehaltssatz der Runde r −1 geworden ist. Allerdings er kann mehr. Er kann auch sicherstellen, dass mit hoher Wahrscheinlichkeit () einer seiner böswilligen Benutzer der Anführer sein wird auch der Runde r, so dass er frei wählen kann, wie hoch PAY r sein soll. (Und so weiter. Zumindest für eine lange Zeit, solange diese Ereignisse mit hoher Wahrscheinlichkeit tatsächlich eintreten.) Um () zu garantieren, verhält sich der Gegner wie folgt. Lass ZAHLEN‘ sei der vom Gegner bevorzugte Auszahlungssatz für Runde r −1. Dann berechnet er H(PAY ′) und prüft, ob für einige Der bereits böswillige Spieler z, SIGz(r, 1, H(PAY ′)) ist besonders klein, also klein genug, um sehr hoch zu sein Wahrscheinlichkeit z wird der Anführer der Runde r sein. Wenn dies der Fall ist, weist er w an, seinen Kandidatenblock auszuwählenAlternativen, die auf traditionellen Blockmengen basieren, können vom Gegner leicht ausgenutzt werden, um sicherzustellen dass böswillige Anführer sehr häufig sind. Vielmehr definieren wir unsere Marke gezielt und induktiv neue Größe Qr, um nachweisen zu können, dass sie vom Gegner nicht manipulierbar ist. Nämlich, Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r), wenn Br nicht der leere Block ist, andernfalls Qr \(\triangleq\)H(Qr−1, r). Die Intuition, warum diese Konstruktion von Qr funktioniert, ist wie folgt. Nehmen Sie das für einen Moment an Qr−1 wird wirklich zufällig und unabhängig ausgewählt. Wird Qr dann auch so sein? Wenn \(\ell\)r ehrlich ist, dann Die Antwort lautet (grob gesagt) ja. Das liegt daran H(SIG\(\ell\)r( \(\cdot\) ), r) : {0, 1}256 −→{0, 1}256 ist eine Zufallsfunktion. Wenn \(\ell\)r jedoch böswillig ist, ist Qr nicht mehr eindeutig aus Qr−1 definiert und \(\ell\)r. Es gibt mindestens zwei separate Werte für Qr. Man bleibt weiterhin Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r), und der andere ist H(Qr−1, r). Lassen Sie uns zunächst argumentieren, dass die zweite Wahl zwar etwas willkürlich ist, eine zweite Wahl ist unbedingt erforderlich. Der Grund dafür ist, dass ein böswilliger Fehler immer verursacht werden kann völlig unterschiedliche Kandidatenblöcke, die von den ehrlichen Prüfern des zweiten Schritts empfangen werden müssen.12 Einmal Ist dies der Fall, lässt sich leicht sicherstellen, dass der Block letztendlich über das BA-Protokoll vereinbart wird Runde r ist die Standardrunde und enthält daher keine digitale Signatur von Qr−1. Aber Das System muss weitermachen und dafür braucht es einen Anführer für Runde r. Wenn dieser Anführer automatisch ist und offen ausgewählt, dann wird ihn der Widersacher trivial korrumpieren. Wenn es vom vorherigen ausgewählt wird Qr−1 über den gleichen Prozess, dann wird \(\ell\)r in Runde r+1 wieder der Anführer sein. Wir schlagen dies ausdrücklich vor Verwenden Sie denselben geheimen kryptografischen Sortiermechanismus, der jedoch auf eine neue Q-Menge angewendet wird: nämlich H(Qr−1, r). Dadurch, dass diese Menge die Ausgabe von H ist, wird garantiert, dass die Ausgabe zufällig ist. und indem r als zweite Eingabe von H einbezogen wird, während alle anderen Verwendungen von H eine oder mehr als drei Eingaben haben, „garantiert“, dass ein solcher Qr unabhängig ausgewählt wird. Auch hier ist unsere spezifische Wahl des alternativen Qr spielt keine Rolle, wichtig ist, dass \(\ell\)r zwei Möglichkeiten für Qr hat und somit seine Chancen verdoppeln kann einen anderen böswilligen Benutzer als nächsten Anführer zu haben. Die Optionen für Qr könnten für den Gegner, der einen böswilligen \(\ell\)r kontrolliert, sogar noch zahlreicher sein. Nehmen wir zum Beispiel an, x, y und z seien drei böswillige potenzielle Anführer der Runde r, so dass H \(\sigma\)r,1 x  < H \(\sigma\)r,1 j  < H \(\sigma\)r,1 z  und H  \(\sigma\)r,1 z  ist besonders klein. Das heißt, so klein, dass eine gute Chance besteht, dass H  \(\sigma\)r,1 z  ist kleiner als die hashed-Referenz eines jeden ehrlichen potenziellen Anführers. Dann, indem Sie x bitten, seine zu verstecken Aufgrund seiner Qualifikation hat der Gegner gute Chancen, dass er der Anführer der Runde r −1 wird. Dies impliziert, dass er eine andere Option für Qr hat: nämlich SIGy Qr−1 . Ebenso kann der Gegner Bitten Sie sowohl x als auch y, ihre Anmeldeinformationen zurückzuhalten, damit z der Anführer der Runde r −1 wird und eine weitere Option für Qr zu gewinnen: nämlich SIGz Qr−1 . Natürlich ist die Wahrscheinlichkeit, dass diese und andere Optionen scheitern, ungleich Null, denn die Der Gegner kann den hash der digitalen Signaturen der ehrlichen potenziellen Benutzer nicht vorhersagen. Br−1 ich = (r −1, PAY ′, H(Br−2). Ansonsten hat er zwei weitere böswillige Benutzer x und y, die immer wieder eine neue Zahlung generieren \(\wp\)′, von einem zum anderen, bis für einen böswilligen Benutzer z (oder sogar für einen festen Benutzer z) H (SIGz (PAY ′ \(\cup\){\(\wp\)})) ist auch besonders klein. Dieses Experiment wird ziemlich schnell enden. Und wenn das der Fall ist, bittet uns der Gegner, einen Vorschlag zu machen der Kandidatenblock Br−1 ich = (r −1, PAY ′ \(\cup\){\(\wp\)}, H(Br−2). 12Um es beispielsweise einfach (aber extrem) zu halten: „Wenn die Zeit des zweiten Schritts bald abläuft“, könnte \(\ell\)r Senden Sie jedem Benutzer i direkt einen anderen Kandidatenblock Bi per E-Mail. Auf diese Weise können sie, wer auch immer die Schritt-2-Prüfer sein mögen wird völlig unterschiedliche Blöcke erhalten haben.Eine sorgfältige, Markov-Ketten-ähnliche Analyse zeigt dies, egal welche Optionen der Gegner wählt Solange er in Runde r −1 keine neuen Benutzer in das System aufnehmen kann, kann er die nicht verringern Wahrscheinlichkeit, dass ein ehrlicher Benutzer der Anführer der Runde r + 40 ist, liegt deutlich unter h. Dies ist der Grund dafür Wir fordern, dass die potenziellen Anführer der Runde r Benutzer sind, die bereits in Runde r − k existieren. Auf diese Weise kann sichergestellt werden, dass der Gegner in der Runde r − k die Wahrscheinlichkeit nicht wesentlich ändern kann Ein ehrlicher Benutzer wird zum Anführer von Round R. Tatsächlich spielt es keine Rolle, welche Benutzer er dem hinzufügt System in den Runden r −k bis r, sind sie nicht berechtigt, potenzielle Anführer zu werden (und erst recht die Anführer) der Runde r. Somit ist der Lookback-Parameter k letztlich ein Sicherheitsparameter. (Obwohl, Wie wir in Abschnitt 7 sehen werden, kann es sich auch um eine Art „Bequemlichkeitsparameter“ handeln.) Vergängliche Schlüssel Obwohl die Ausführung unseres Protokolls keinen Fork generieren kann, außer mit Mit vernachlässigbarer Wahrscheinlichkeit könnte der Gegner am r-ten Block nach dem legitimen eine Abzweigung erzeugen Block r wurde generiert. Sobald Br generiert wurde, hat der Gegner ungefähr erfahren, wer die Prüfer für jeden Schritt ist der Runde r sind. Somit könnte er sie alle korrumpieren und sie dazu zwingen, einen neuen Block zu zertifizieren f Br. Da dieser gefälschte Block möglicherweise erst nach dem legitimen Block weitergegeben wird, haben Benutzer dies getan Aufmerksamkeit würde sich nicht täuschen lassen.13 Nichtsdestotrotz, f Br wäre syntaktisch korrekt und wir verhindern wollen, dass sie hergestellt werden. Dies tun wir mittels einer neuen Regelung. Im Wesentlichen legen die Mitglieder des Verifizierers SV r,s eines Schritts s fest der Runde r verwenden kurzlebige öffentliche Schlüssel pkr,s ich um ihre Nachrichten digital zu signieren. Diese Schlüssel sind nur für den einmaligen Gebrauch bestimmt und ihre entsprechenden geheimen Schlüssel sind skr,s ich werden nach Gebrauch zerstört. Auf diese Weise, wenn ein Verifizierer vorhanden ist Da er später korrumpiert wird, kann der Gegner ihn nicht zwingen, etwas anderes zu unterzeichnen, als er ursprünglich unterzeichnet hat. Natürlich müssen wir sicherstellen, dass es für den Gegner unmöglich ist, einen neuen Schlüssel g zu berechnen PR,S ich und einen ehrlichen Benutzer davon überzeugen, dass es der richtige ephemere Schlüssel des Verifizierers i \(\in\)SV r,s ist, der in Schritt s verwendet werden soll. 4.2 Allgemeine Zusammenfassung von Notationen, Begriffen und Parametern Notationen • r \(\geq\)0: die aktuelle Rundenzahl. • s \(\geq\)1: die aktuelle Schrittnummer in Runde r. • Br: der in Runde r erzeugte Block. • PKr: die Menge der öffentlichen Schlüssel am Ende der Runde r −1 und am Anfang der Runde r. • Sr: der Systemstatus am Ende der Runde r −1 und am Anfang der Runde r.14 • PAY r: der in Br enthaltene Payset. • \(\ell\)r: Rund-R-Anführer. \(\ell\)r wählt den Payset PAY r der Runde r (und bestimmt den nächsten Qr). • Qr: der Startwert der Runde r, eine Menge (d. h. eine binäre Zeichenfolge), die am Ende der Runde r generiert wird und wird verwendet, um Verifizierer für Runde r + 1 auszuwählen. Qr ist unabhängig von den Gehaltssätzen in den Blöcken und kann nicht von \(\ell\)r manipuliert werden. 13Denken Sie daran, den Nachrichtensprecher eines großen Fernsehsenders zu korrumpieren und heute eine Wochenschau zu produzieren und auszustrahlen zeigt, wie Außenministerin Clinton die letzten Präsidentschaftswahlen gewann. Die meisten von uns würden es als Scherz erkennen. Aber Jemand, der aus dem Koma erwacht, könnte getäuscht werden. 14In einem System, das nicht synchron ist, ist der Begriff „das Ende der Runde r −1“ und „der Anfang der Runde r“ müssen sorgfältig definiert werden. Mathematisch werden PKr und Sr aus dem Ausgangszustand S0 und den Blöcken berechnet B1, . . . , Br−1.• SV r,s: die Menge der Verifizierer, die für die Schritte s der Runde r ausgewählt wurden. • SV r: die Menge der für Runde r gewählten Verifizierer, SV r = \(\cup\)s\(\geq\)1SV r,s. • MSV r,s und HSV r,s: die Menge der böswilligen Verifizierer bzw. die Menge der ehrlichen Verifizierer in SV r,s. MSV r,s \(\cup\)HSV r,s = SV r,s und MSV r,s ∩HSV r,s = \(\emptyset\). • n1 \(\in\)Z+ und n \(\in\)Z+: jeweils die erwartete Anzahl potenzieller Anführer in jedem SV r,1, und die erwartete Anzahl von Verifizierern in jedem SV r,s, für s > 1. Beachten Sie, dass n1 << n, da wir mindestens ein ehrliches ehrliches Mitglied in SV r,1 benötigen, aber zumindest eine Mehrheit ehrlicher Mitglieder in jedem SV r,s für s > 1. • h \(\in\)(0, 1): eine Konstante größer als 2/3. h ist das Ehrlichkeitsverhältnis im System. Das heißt, die Der Bruchteil der ehrlichen Benutzer oder des ehrlichen Geldes, abhängig von der verwendeten Annahme, in jedem PKr zumindest h. • H: eine kryptografische hash-Funktion, modelliert als zufällige oracle. • \(\bot\): Eine spezielle Zeichenfolge mit der gleichen Länge wie die Ausgabe von H. • F \(\in\)(0, 1): der Parameter, der die zulässige Fehlerwahrscheinlichkeit angibt. Eine Wahrscheinlichkeit \(\leq\)F ist als „vernachlässigbar“ und eine Wahrscheinlichkeit \(\geq\)1 −F gilt als „überwältigend“. • ph \(\in\)(0, 1): die Wahrscheinlichkeit, dass der Anführer einer Runde r, \(\ell\)r, ehrlich ist. Idealerweise ist pH = h. Mit Sobald der Gegner existiert, wird der pH-Wert in der Analyse ermittelt. • k \(\in\)Z+: der Lookback-Parameter. Das heißt, in Runde r − k befinden sich die Verifizierer für Runde r ausgewählt aus – nämlich SV r \(\subseteq\)PKr−k.15 • p1 \(\in\)(0, 1): Für den ersten Schritt der Runde r wird ein Benutzer in Runde r −k ausgewählt, der im SV r,1 mit ist Wahrscheinlichkeit p1 \(\triangleq\) n1 |P Kr−k|. • p \(\in\)(0, 1): Für jeden Schritt s > 1 der Runde r wird ein Benutzer in Runde r −k ausgewählt, der im SV r,s mit ist Wahrscheinlichkeit p \(\triangleq\) n |P Kr−k|. • CERT r: das Zertifikat für Br. Es handelt sich um eine Reihe von Signaturen von H(Br) von geeigneten Prüfern in rund r. • Br \(\triangleq\)(Br, CERT r) ist ein bewährter Block. Ein Benutzer kennt Br, wenn er beide Teile des bewährten Blocks besitzt (und erfolgreich verifiziert). Beachten Sie, dass die von verschiedenen Benutzern angezeigten CERT-Werte unterschiedlich sein können. • τ r i: die (lokale) Zeit, zu der ein Benutzer Br kennt. Im Algorand-Protokoll hat jeder Benutzer sein eigenes eigene Uhr. Die Uhren verschiedener Benutzer müssen nicht synchronisiert sein, sondern müssen die gleiche Geschwindigkeit haben. Lediglich zum Zweck der Analyse betrachten wir eine Referenzuhr und messen die verwandte Zeiten in Bezug darauf. • \(\alpha\)r,s ich und \(\beta\)r,s i: jeweils die (lokale) Zeit, zu der ein Benutzer i seine Ausführung von Schritten beginnt und beendet rund r. • Λ und \(\lambda\): im Wesentlichen die Obergrenzen für die Zeit, die zum Ausführen von Schritt 1 bzw. benötigt wird die Zeit, die für jeden anderen Schritt des Algorand-Protokolls benötigt wird. Der Parameter Λ begrenzt die Zeit, die für die Ausbreitung eines einzelnen 1-MB-Blocks benötigt wird, nach oben. (In unserer Notation, Λ = \(\lambda\) \(\rho\),1MB. Erinnern wir uns an unsere Notation, dass wir der Einfachheit halber \(\rho\) = 1 setzen und dass Blöcke dies sind so gewählt, dass es höchstens 1 MB lang ist, gilt Λ = \(\lambda\)1,1,1 MB.) 15Genau genommen sollte „r −k“ „max{0, r −k}“ sein.Der Parameter \(\lambda\) begrenzt die Zeit zur Verbreitung einer kleinen Nachricht pro Verifizierer in einem Schritt s > 1. (Bei Verwendung von elliptischen Kurvensignaturen mit 32B Schlüsseln, wie in Bitcoin, ist eine Verifizierernachricht 200B lang. Somit ist in unserer Notation \(\lambda\) = \(\lambda\)n,\(\rho\),200B.) Wir gehen davon aus, dass Λ = O(\(\lambda\)). Vorstellungen • Prüferauswahl. Für jede Runde r und Schritt s > 1 gilt SV r,s \(\triangleq\){i \(\in\)PKr−k : .H(SIGi(r, s, Qr−1)) \(\leq\)p}. Jeder Benutzer i \(\in\)PKr−k berechnet privat seine Signatur unter Verwendung seines Langzeitschlüssels und entscheidet, ob i \(\in\)SV r,s oder nicht. Wenn i \(\in\)SV r,s, dann ist SIGi(r, s, Qr−1) der (r, s)-Berechtigungsnachweis von i, kompakt bezeichnet von \(\sigma\)r,s ich . Für den ersten Schritt der Runde r, SV r,1 und \(\sigma\)r,1 ich sind ähnlich definiert, wobei p durch p1 ersetzt wird. Die Verifizierer in SV r,1 sind potenzielle Führungskräfte. • Auswahl des Leiters. Benutzer i \(\in\)SV r,1 ist der Anführer der Runde r, bezeichnet mit \(\ell\)r, wenn H(\(\sigma\)r,1 i ) \(\leq\)H(\(\sigma\)r,1 j ) für alle Potentiale Leiter j \(\in\)SV r,1. Immer wenn die hashes der Referenzen zweier Spieler verglichen werden, ist das unwahrscheinlich Im Falle von Bindungen bricht das Protokoll Bindungen immer lexikographisch entsprechend der (langfristigen Öffentlichkeit) auf Schlüssel der potenziellen Führungskräfte. Per Definition ist der hash-Wert der Anmeldeinformationen des Spielers auch der kleinste unter allen Benutzern in PKr−k. Beachten Sie, dass ein potenzieller Anführer nicht privat entscheiden kann, ob er der Anführer ist oder nicht. ohne die Referenzen der anderen potenziellen Führungskräfte zu sehen. Da die hash-Werte zufällig einheitlich sind, existiert und ist \(\ell\)r immer, wenn SV r,1 nicht leer ist ehrlich mit Wahrscheinlichkeit mindestens h. Der Parameter n1 ist groß genug, um sicherzustellen, dass jeder SV r,1 ist mit überwältigender Wahrscheinlichkeit nicht leer. • Blockstruktur. Ein nicht leerer Block hat die Form Br = (r, PAY r, SIG\(\ell\)r(Qr−1), H(Br−1)) und ist ein leerer Block hat die Form Br ǫ = (r, \(\emptyset\), Qr−1, H(Br−1)). Beachten Sie, dass ein nicht leerer Block immer noch einen leeren Payset PAY r enthalten kann, wenn keine Zahlung erfolgt in dieser Runde oder wenn der Anführer böswillig ist. Ein nicht leerer Block impliziert jedoch, dass die Identität von \(\ell\)r, sein Ausweis \(\sigma\)r,1 \(\ell\)r und SIG\(\ell\)r(Qr−1) wurden alle rechtzeitig enthüllt. Das Protokoll garantiert Wenn der Anführer ehrlich ist, wird der Block mit überwältigender Wahrscheinlichkeit nicht leer sein. • Seed Qr. Wenn Br nicht leer ist, dann ist Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r), andernfalls ist Qr \(\triangleq\)H(Qr−1, r). Parameter • Beziehungen zwischen verschiedenen Parametern. — Die Verifizierer und potenziellen Leiter der Runde r werden aus den Benutzern in PKr−k ausgewählt, wobei k so gewählt ist, dass der Gegner Qr−1 nicht in der Runde r −k −1 vorhersagen kann mit einer Wahrscheinlichkeit besser als F: Andernfalls kann er böswillige Benutzer einführen für Runde r − k, die alle potenzielle Anführer/Verifizierer in Runde r sein werden und erfolgreich sind

Einen böswilligen Anführer oder eine böswillige Mehrheit in SV r,s für einige Schritte zu haben, ist erwünscht von ihn. — Für Schritt 1 jeder Runde r wird n1 so gewählt, dass mit überwältigender Wahrscheinlichkeit SV r,1 ̸= \(\emptyset\). • Beispielhafte Auswahl wichtiger Parameter. — Die Ausgänge von H sind 256 Bit lang. — h = 80 %, n1 = 35. — Λ = 1 Minute und \(\lambda\) = 10 Sekunden. • Initialisierung des Protokolls. Das Protokoll beginnt zum Zeitpunkt 0 mit r = 0. Da es weder „B−1“ noch „CERT −1“ gibt, Syntaktisch ist B−1 ein öffentlicher Parameter, dessen dritte Komponente Q−1 und alle Benutzer angibt kenne B−1 zum Zeitpunkt 0.

Два варианта реализации Algorand

Как уже говорилось, на очень высоком уровне раунд Algorand в идеале протекает следующим образом. Сначала случайно выбранный пользователь, лидер, предлагает и распространяет новый блок. (Этот процесс первоначально включает в себя выбрать несколько потенциальных лидеров, а затем убедиться, что, по крайней мере, значительную часть времени, появляется единый общий лидер.) Во-вторых, выбирается случайно выбранный комитет пользователей, и достигает византийского соглашения по предложенному вождём блоку. (Этот процесс включает в себя каждый шаг протокола БА выполняется отдельно выбранной комиссией.) Согласованный блок затем подписывается цифровой подписью заданного порогового значения (TH) членов комитета. Эти цифровые подписи распространяются так, чтобы все были уверены в том, какой блок является новым. (Это включает в себя распространение учетные данные подписывающих сторон и аутентифицируя только hash нового блока, гарантируя, что каждый гарантированно изучит блок, как только его hash станет ясным.) В следующих двух разделах мы представляем два варианта реализации Algorand, Algorand ′ 1 и Algorand ′ 2, это работает при предположении большинства честных пользователей. В разделе 8 мы покажем, как принять эти варианты реализации, работающие в предположении честного большинства денег. Algorand ′ 1 предусматривает лишь то, что > 2/3 членов комитета будут честными. Кроме того, в Algorand ′ 1, количество шагов для достижения византийского соглашения ограничено достаточно высоким число, так что соглашение гарантировано будет достигнуто с подавляющей вероятностью в течение фиксированное количество шагов (но потенциально требующее больше времени, чем шаги Algorand ′ 2). В В отдаленном случае, когда соглашение еще не достигнуто на последнем этапе, комитет согласовывает пустой блок, который всегда действителен. Algorand ′ 2 предусматривает, что число честных членов комитета всегда больше, чем или равен фиксированному порогу tH (который гарантирует, что с подавляющей вероятностью по крайней мере 2/3 членов комитета честные). Кроме того, Algorand ′ 2 позволяет византийскому соглашению быть достигнуто за произвольное количество шагов (но потенциально за более короткое время, чем Algorand ′ 1). Легко получить множество вариантов этих основных вариантов осуществления. В частности, это легко, учитывая Algorand ′ 2, чтобы изменить Algorand ′ 1, чтобы дать возможность достичь византийского соглашения в произвольном порядке. количество шагов. Оба варианта осуществления имеют следующее общее ядро, обозначения, понятия и параметры. 4.1 Общее ядро Цели В идеале для каждого раунда r Algorand должен удовлетворять следующим свойствам: 1. Совершенная корректность. Все честные пользователи согласны с тем же блоком Бр. 2. Полнота 1. С вероятностью 1 набор выплат Br, PAY r, является максимальным10. 10Поскольку наборы выплат должны содержать действительные платежи, а честные пользователи должны совершать только действительные платежи, максимальный PAY r содержит «невыплаченные на данный момент» платежи всех честных пользователей.Конечно, гарантировать абсолютную правильность само по себе тривиально: каждый всегда выбирает официальную версию. payset PAY r должен быть пустым. Но в этом случае система имела бы полноту 0. К сожалению, гарантировать как абсолютную правильность, так и полноту 1 непросто при наличии вредоносных пользователи. Таким образом, Algorand ставит более реалистичную цель. Неформально, пусть h обозначает процент честных пользователей, h > 2/3, цель Algorand — Гарантируя с подавляющей вероятностью полную правильность и полноту, близкую к h. Отдавать предпочтение правильности перед полнотой кажется разумным выбором: платежи не обрабатываются в один раунд может быть обработан в следующем, но следует по возможности избегать вилок. Под руководством Византийского соглашения Совершенную правильность можно гарантировать следующим образом. В начале раунда r каждый пользователь i создает свой собственный блок-кандидат Br i, а затем все пользователи доходят до Byzantine соглашение по одному кандидатскому блоку. Согласно нашему введению, используемый протокол BA требует честное большинство в 2/3 и возможность замены игрока. Каждый его шаг может быть выполнен маленьким и случайно выбранный набор проверяющих, которые не имеют общих внутренних переменных. К сожалению, этот подход не имеет гарантий полноты. Это так, потому что кандидат блоки честных пользователей, скорее всего, кардинально отличаются друг от друга. Таким образом, в конечном итоге согласованный блок всегда может быть блоком с немаксимальным набором выплат. На самом деле, это всегда может быть пустой блок B\(\varepsilon\), то есть блок, набор выплат которого пуст. ну, это будет пустое значение по умолчанию. Algorand ′ позволяет избежать этой проблемы полноты следующим образом. Сначала выбирается лидер раунда r, \(\ell\)r. Затем \(\ell\)r распространяет свой собственный блок кандидатов, Br \(\ell\)р. Наконец, пользователи достигают соглашения по блокировке они фактически получают от \(\ell\)r. Потому что всякий раз, когда \(\ell\)r честен, Совершенная правильность и полнота 1 оба верны, Algorand ′ гарантирует, что \(\ell\)r честен с вероятностью, близкой к h. (Когда лидер вредоносный, нас не волнует, является ли согласованный блок блоком с пустой платёжной системой. В конце концов, злонамеренный лидер \(\ell\)r всегда может злонамеренно выбрать Br \(\ell\)r быть пустым блоком, а потом честно распространять его, тем самым заставляя честных пользователей согласиться на пустой блок.) Выбор лидера В Algorand r-й блок имеет вид Br = (r, PAY r, Qr, H(Br-1). Как уже упоминалось во введении, величина Qr−1 тщательно строится так, чтобы быть по сути, нашим очень могущественным противником невозможно манипулировать. (Далее в этом разделе мы рассмотрим дайте некоторое представление о том, почему это так.) В начале раунда r все пользователи знают blockchain на данный момент, B0, . . . , Br−1, из которого они выводят набор пользователей каждого предыдущего раунда: есть, ПК1, . . . , ПКр−1. Потенциальным лидером раунда r является пользователь i такой, что .Х СИГи г, 1, Qr−1 \(\leq\)р. Давайте объясним. Обратите внимание, что, поскольку величина Qr−1 является частью блока Br−1, а лежащее в ее основе схема подписи удовлетворяет свойству уникальности SIGi г, 1, Qr−1 однозначно является двоичной строкой связанный с i и r. Таким образом, поскольку H является случайным oracle, H СИГи г, 1, Qr−1 это случайный 256-битный длинная строка, однозначно связанная с i и r. Символ «.» перед Х СИГи г, 1, Qr−1 это десятичная (в нашем случае двоичная) точка, так что ri \(\triangleq\).H СИГи г, 1, Qr−1 представляет собой двоичное разложение случайное 256-битное число от 0 до 1, однозначно связанное с i и r. Таким образом, вероятность того, что ri меньше или равно p, по существу, p. (Наш механизм отбора потенциальных лидеров был вдохновлен схемой микроплатежей Микали и Ривеста [28].) Вероятность p выбирается так, чтобы с подавляющей (т. е. 1 −F) вероятностью хотя бы один потенциальный проверяющий честен. (Если это действительно так, то p выбирается как наименьшая такая вероятность.)Обратите внимание: поскольку i — единственный, кто способен вычислить свои собственные подписи, он один может определить, является ли он потенциальным проверяющим в раунде 1. Однако, раскрыв свои собственные учетные данные, \(\sigma\)р я \(\triangleq\)SIGi г, 1, Qr−1 , я могу доказать любому, что являюсь потенциальным проверяющим раунда r. Лидером \(\ell\)r считается потенциальный лидер, чьи учетные данные hash меньше, чем у hashed учетные данные всех остальных потенциальных лидеров j: то есть H(\(\sigma\)r,s \(\ell\)r ) \(\leq\)H(\(\sigma\)r,s дж). Обратите внимание: поскольку злонамеренный \(\ell\)r может не раскрыть свои полномочия, правильный лидер раунда r может никогда не будет известно, и что, если не считать невероятных связей, \(\ell\)r действительно является единственным лидером раунда r. Давайте, наконец, коснемся последней, но важной детали: пользователь i может быть потенциальным лидером (и, следовательно, лидер) раунда r только в том случае, если он принадлежал системе не менее k раундов. Это гарантирует невозможность манипулирования Qr и всеми будущими Q-величинами. Фактически один из потенциальных лидеров фактически определит Qr. Выбор проверяющего Каждый шаг s > 1 раунда r выполняется небольшим набором проверяющих SV r,s. Опять же, каждый верификатор i \(\in\)SV r,s выбирается случайным образом среди пользователей, уже находящихся в системе k раундов. перед r и снова через специальную величину Qr−1. В частности, i \(\in\)PKr−k является верификатором в SV r,s, если .Х СИГи г, с, Qr−1 \(\leq\)p'. Опять же, только я знаю, принадлежит ли он к SV r,s, но если это так, то он мог бы доказать это, предъявляя свои полномочия \(\sigma\)r,s я \(\triangleq\)H(SIGi г, с, Qr−1 ). Верификатор i \(\in\)SV r,s отправляет сообщение mr,s я, в шаг s раунда r, и это сообщение включает его учетные данные \(\sigma\)r,s i , чтобы дать возможность верификаторам Следующий шаг, чтобы признать, что мистер, с я является законным сообщением шага. Вероятность p' выбирается так, чтобы гарантировать, что в SV r,s, пусть #good будет числом честные пользователи и #bad количество злонамеренных пользователей, с подавляющей вероятностью следующее выполняются два условия. Для варианта реализации Algorand ′ 1: (1) #хорошо > 2 \(\cdot\) #плохо и (2) #good + 4 \(\cdot\) #bad < 2n, где n — ожидаемая мощность SV r,s. Для варианта реализации Algorand ′ 2: (1) #good > tH и (2) #good + 2#bad < 2tH, где tH — заданный порог. Из этих условий следует, что с достаточно большой вероятностью: (а) на последнем шаге БА протоколу, будет как минимум заданное количество честных игроков, которые подпишут цифровой подписью новый блок Br, (б) только один блок за раунд может иметь необходимое количество подписей, и (в) используемый БА протокол имеет (на каждом этапе) необходимое честное большинство в 2/3. Уточнение генерации блоков Если лидер раунда \(\ell\)r честен, то соответствующий блок имеет форму Бр = r, PAY r, SIG\(\ell\)r Qr−1 , Ч Бр-1 , где набор выплат PAY r является максимальным. (напомним, что все наборы выплат по определению действительны коллективно.) В противном случае (т. е. если \(\ell\)r является вредоносным), Br имеет одну из следующих двух возможных форм: Бр = р, ПЛАТИТЕ р, СИГи Qr−1 , Ч Бр-1 и Бр = Бр \(\varepsilon\) \(\triangleq\) r, \(\emptyset\), Qr−1, H Бр-1 .В первой форме PAY r — это (не обязательно максимальный) набор выплат, и это может быть PAY r = \(\emptyset\); и я потенциальный лидер раунда r. (Однако я не могу быть лидером \(\ell\)r. Это действительно может случиться, если \(\ell\)r хранит в тайне свои полномочия и не раскрывает себя.) Вторая форма возникает, когда при выполнении раунда-r протокола БА все честные игроки выведите значение по умолчанию, то есть пустой блок Br \(\varepsilon\) в нашем приложении. (По определению, возможный выходные данные протокола BA включают значение по умолчанию, обычно обозначаемое \(\bot\). См. раздел 3.2.) Обратите внимание: хотя в обоих случаях платежные наборы пусты, Br = r, \(\emptyset\), СИГи Qr−1 , Ч Бр-1 и Бр \(\varepsilon\) являются синтаксически разными блоками и возникают в двух разных ситуациях: соответственно, «все в исполнении протокола БА прошло достаточно гладко», а «что-то пошло не так в протокол BA, и было выведено значение по умолчанию». Давайте теперь интуитивно опишем, как происходит генерация блока Br в раунде r Algorand ′. На первом этапе каждый подходящий игрок, то есть каждый игрок i \(\in\)PKr−k, проверяет, является ли он потенциальным игроком. лидер. Если это так, то меня спрашивают, используя все платежи, которые он видел до сих пор, и текущий blockchain, B0, . . . , Br−1, чтобы тайно подготовить максимальный набор выплат, PAY r я и тайно собирает свой блок кандидатов, Br = р, ПЛАТИТЕ р я, СИГи Qr−1 , Ч Бр-1 . То есть он не только включить в руб. i , в качестве второго компонента только что подготовленный набор выплат, но также, в качестве третьего компонента, его собственная подпись Qr−1, третьего компонента последнего блока, Br−1. Наконец, он пропагандирует свою сообщение round-r-step-1, мистер, 1 i , который включает в себя (а) его блок-кандидат Br я , (б) его собственная подпись своего блока-кандидата (т. е. его подпись hash Br i , и (c) его собственные полномочия \(\sigma\)r,1 я, доказывая что он действительно является потенциальным проверяющим раунда r. (Обратите внимание, что до тех пор, пока честный i не выдаст свое сообщение mr,1 i, Противник понятия не имеет, что я потенциальный проверяющий. Если он захочет развратить честных потенциальных лидеров, Противник также может коррумпированные случайные честные игроки. Однако, как только он увидит мистера,1 i , поскольку он содержит учетные данные i, Противник знает и может испортить меня, но не может предотвратить мистера,1 i , который распространяется вирусно, из охват всех пользователей системы.) На втором этапе каждый выбранный проверяющий j \(\in\)SV r,2 пытается определить лидера раунда. В частности, j принимает учетные данные шага 1, \(\sigma\)r,1 я1 , . . . , \(\sigma\)r,1 in , содержащийся в соответствующем сообщении шага 1 mr,1 я он получил; hashпроверяет все из них, то есть вычисляет H  \(\sigma\)р,1 я1  , . . . , Ч  \(\sigma\)р,1 в  ; находит удостоверение, \(\sigma\)р,1 \(\ell\)j , hash которого является лексикографически минимальным; и считает \(\ell\)r j стать лидером раунда r. Напомним, что каждая рассматриваемая учетная запись представляет собой цифровую подпись Qr-1, что SIGi г, 1, Qr−1 есть однозначно определяется i и Qr−1, что H является случайным oracle и, таким образом, каждый H(SIGi г, 1, Qr−1 — это случайная 256-битная длинная строка, уникальная для каждого потенциального лидера i раунда r. Отсюда мы можем заключить, что если бы 256-битная строка Qr−1 сама была случайным и независимым выбраны, чем будут hashed полномочия всех потенциальных лидеров раунда r. Фактически, все потенциальные лидеры четко определены, как и их полномочия (будь то фактически вычисленные или нет). Далее, множество потенциальных лидеров раунда r представляет собой случайное подмножество пользователей раунда r −k, и честный потенциальный лидер i всегда правильно формирует и распространяет свое послание, мистер я, который содержит мои учетные данные. Таким образом, поскольку процент честных пользователей равен h, независимо от злонамеренные потенциальные лидеры могут сделать (например, раскрыть или скрыть свои полномочия), как минимум hashed удостоверение потенциального лидера принадлежит честному пользователю, которого все обязательно идентифицируют. быть лидером \(\ell\)r раунда r. Соответственно, если бы 256-битная строка Qr-1 сама была случайной и независимо выбираются с вероятностью ровно h (а) лидер \(\ell\)r честен и (б) \(\ell\)j = \(\ell\)r для всех честные проверяющие второго этапа j. В действительности, да, учетные данные hashed выбираются случайным образом, но зависят от Qr-1, которыйвыбраны не случайно и независимо. Однако в нашем анализе мы докажем, что Qr−1 достаточно не поддается манипулированию, чтобы гарантировать, что лидер раунда честен с вероятностью h′ достаточно близко к h: а именно h′ > h2(1 + h −h2). Например, если h = 80%, то h' > 0,7424. Определив лидера раунда (что они правильно делают, если ведущий честен), задача верификаторов шага 2 — начать выполнение БА, используя в качестве начальных значений то, что они считают быть блоком лидера. На самом деле, чтобы минимизировать объем необходимого общения, верификатор j \(\in\)SV r,2 не использует в качестве входного значения v′ j к византийскому протоколу, блок Bj, который он фактически получил от \(\ell\)j (пользователь j считает себя лидером), но лидер, но hash этого блока, то есть v' j = H(Bi). Таким образом, по завершении протокола БА верификаторы последнего шага не вычисляют желаемый блок round-r Br, а вычисляют (аутентифицируют и распространять) H(Br). Соответственно, поскольку H(Br) имеет цифровую подпись достаточного числа верификаторов последнем этапе протокола BA, пользователи системы поймут, что H(Br) — это hash нового блок. Однако они также должны получить (или дождаться, поскольку выполнение достаточно асинхронно) заблокировать сам Br, что протокол гарантирует, что он действительно доступен, независимо от того, что делает Противник может сделать. Асинхронность и время Algorand ′ 1 и Algorand ' 2 имеют значительную степень асинхронности. Это происходит потому, что Противник имеет большую свободу в планировании доставки сообщений. распространяется. Кроме того, независимо от того, ограничено ли общее количество шагов в раунде или нет, существует вклад дисперсии зависит от количества фактически предпринятых шагов. Как только он узнает сертификаты B0, . . . , Br−1, пользователь i вычисляет Qr−1 и начинает работать в раунде r, проверяя, является ли он потенциальным лидером или проверяющим на некоторых шагах s раунда r. Предполагая, что я должен действовать на шагах s, в свете обсуждаемой асинхронности я полагаюсь на различные стратегии, позволяющие гарантировать, что он располагает достаточной информацией, прежде чем действовать. Например, он может дождаться получения хотя бы заданного количества сообщений от проверяющих предыдущий шаг, или подождите достаточно времени, чтобы убедиться, что он получил сообщения достаточно многие проверяющие предыдущего шага. Начальное значение Qr и параметр обратного анализа k Напомним, что в идеале величины Qr должны случайны и независимы, хотя для того, чтобы ими было достаточно не поддаваться манипулированию со стороны Противник. На первый взгляд, мы могли бы выбрать Qr−1 таким, чтобы он совпадал с H ПЛАТИТЬ r−1 и, таким образом, избежать задайте Qr−1 явно в Br−1. Однако элементарный анализ показывает, что злонамеренные пользователи могут воспользоваться этим механизмом отбора.11 Некоторые дополнительные усилия показывают, что мириады других 11Мы находимся в начале раунда r−1. Таким образом, Qr−2 = PAY r−2 общеизвестно, а Противник — конфиденциально. знает, кто является потенциальными лидерами, которых он контролирует. Предположим, что Злоумышленник контролирует 10% пользователей и что с очень высокой вероятностью злонамеренный пользователь w является потенциальным лидером раунда r−1. То есть предположим, что Ч СИГв г −2, 1, Qr−2 настолько мал, что крайне маловероятно, что честный потенциальный лидер действительно окажется лидер раунда r−1. (Напомним, что, поскольку мы выбираем потенциальных лидеров с помощью секретного механизма криптографической сортировки, Противник не знает, кто такие честные потенциальные лидеры.) Противник, следовательно, находится в завидном положении. позицию выбора набора выплат PAY ′, который он хочет, и сделать его официальным набором выплат в раунде r −1. Однако, он может сделать больше. Он также может гарантировать, что с высокой вероятностью () один из его злонамеренных пользователей станет лидером. также раунда r, чтобы он мог свободно выбирать, какой будет PAY r. (И так далее. По крайней мере, надолго, т.е. до тех пор, пока эти события с высокой вероятностью действительно происходят.) Чтобы гарантировать (), Противник действует следующим образом. Пусть ПЛАТИТ' — набор выплат, который противник предпочитает для раунда r −1. Затем он вычисляет H(PAY ′) и проверяет, существует ли для некоторых уже злонамеренного игрока z, SIGz(r, 1, H(PAY ′)) особенно мал, то есть настолько мал, что с очень высоким вероятность z будет лидером раунда r. Если это так, то он дает команду w выбрать блок-кандидат на рольальтернативы, основанные на традиционном количестве блоков, легко могут быть использованы злоумышленником для обеспечения что злонамеренные лидеры встречаются очень часто. Вместо этого мы конкретно и индуктивно определяем наш бренд. новую величину Qr, чтобы иметь возможность доказать, что Противник не может манипулировать ею. А именно, Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r), если Br не пустой блок, и Qr \(\triangleq\)H(Qr−1, r) в противном случае. Интуиция того, почему эта конструкция Qr работает, заключается в следующем. Предположим на мгновение, что Qr-1 действительно выбирается случайно и независимо. Тогда Qr будет таким же? Когда \(\ell\)r честен, ответ (грубо говоря) да. Это так, потому что H(SIG\(\ell\)r( \(\cdot\) ), r) : {0, 1}256 −→ {0, 1}256 является случайной функцией. Однако когда \(\ell\)r является злонамеренным, Qr больше не определяется однозначно из Qr-1. и \(\ell\)р. Существует как минимум два отдельных значения для Qr. Один продолжает оставаться Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r), а другой — H(Qr−1, r). Давайте сначала покажем, что, хотя второй выбор несколько произволен, второй выбор абсолютно обязателен. Причина этого в том, что злонамеренный \(\ell\)r всегда может вызвать совершенно разные блоки-кандидаты, которые будут получены честными проверяющими на втором этапе.12 Однажды это так, легко гарантировать, что блокировка в конечном итоге будет согласована через протокол BA раунд r будет использоваться по умолчанию и, следовательно, не будет содержать ничьей цифровой подписи Qr-1. Но система должна продолжать свое существование, а для этого ей нужен лидер раунда r. Если этот лидер автоматически и открыто выбран, то Противник банально развратит его. Если он выбран предыдущим Qr−1 посредством того же процесса, тогда \(\ell\)r снова станет лидером в раунде r+1. Мы специально предлагаем использовать тот же секретный механизм криптографической сортировки, но примененный к новой величине Q: а именно, H(Qr−1, r). Поскольку эта величина является выходом H, гарантируется, что результат будет случайным, и включив r в качестве второго входа H, в то время как все другие варианты использования H имеют один или более 3 входов, «гарантирует», что такой Qr будет выбран независимо. Опять же, наш конкретный выбор альтернативы Qr не имеет значения, важно то, что у \(\ell\)r есть два варианта для Qr, и, таким образом, он может удвоить свои шансы чтобы следующим лидером стал еще один злонамеренный пользователь. Вариантов Qr может быть даже больше для Противника, который управляет злонамеренным \(\ell\)r. Например, пусть x, y и z — три потенциальных злонамеренных лидера раунда r такие, что Ч \(\sigma\)р,1 х  < Ч \(\sigma\)р,1 й  < Ч \(\sigma\)р,1 я  и Х  \(\sigma\)р,1 я  особенно мал. То есть настолько мал, что есть большая вероятность, что H  \(\sigma\)р,1 я  есть меньший из __PH_0004__ed удостоверений каждого честного потенциального лидера. Затем, попросив x скрыть свое Если у вас есть полномочия, Противник имеет хорошие шансы на то, что y станет лидером раунда r −1. Это подразумевает, что у него есть другой вариант для Qr: а именно SIGy Qr−1 . Аналогично, Противник может попросить x и y скрыть свои полномочия, чтобы z стал лидером раунда r −1. и получаем еще один вариант для Qr: а именно SIGz Qr−1 . Однако, конечно, каждый из этих и других вариантов имеет ненулевой шанс потерпеть неудачу, поскольку Злоумышленник не может предсказать hash цифровых подписей честных потенциальных пользователей. Бр-1 я = (r −1, PAY ′, H(Br−2). В противном случае у него есть еще два злоумышленника x и y, которые продолжат генерировать новый платеж. \(\wp\)', от одного к другому, пока для какого-нибудь злонамеренного пользователя z (или даже для какого-то фиксированного пользователя z) H (SIGz (PAY ′ \(\cup\){\(\wp\)})) не станет особенно маленький. Этот эксперимент прекратится довольно быстро. И когда это произойдет, Противник попросит нас предложить блок-кандидат Br−1 я = (r−1, PAY ′ \(\cup\){\(\wp\)}, H(Br−2). 12Например, для простоты (но экстремальности): «когда время второго шага подходит к концу», \(\ell\)r мог бы напрямую отправьте по электронной почте разные блоки-кандидаты Bi каждому пользователю i. Таким образом, кем бы ни были верификаторы второго шага, они получат совершенно другие блоки.Тщательный анализ, подобный цепочке Маркова, показывает, что независимо от того, какие варианты выберет Противник сделать в раунде r-1, пока он не может ввести в систему новых пользователей, он не может уменьшить вероятность того, что честный пользователь окажется лидером раунда r + 40, намного ниже h. Это причина для чего мы требуем, чтобы потенциальными лидерами раунда r были пользователи, уже существующие в раунде r −k. Это способ гарантировать, что в раунде r −k Противник не сможет существенно изменить вероятность того, что честный пользователь станет лидером раунда r. Фактически, независимо от того, каких пользователей он может добавить в системе в раундах от r −k до r, они не имеют права стать потенциальными лидерами (и, тем более, лидер) раунда r. Таким образом, параметр обратного просмотра k в конечном итоге является параметром безопасности. (Хотя, как мы увидим в разделе 7, он также может быть своего рода «параметром удобства».) Эфемерные ключи Хотя выполнение нашего протокола не может генерировать форк, кроме как с помощью с незначительной вероятностью, злоумышленник может сгенерировать форк в r-м блоке после законного блок r был сгенерирован. Грубо говоря, как только Br был сгенерирован, Противник узнал, кто является проверяющим каждого шага. круглых r. Таким образом, он мог бы испортить их всех и обязать сертифицировать новый блок. ж Бр. Поскольку этот фальшивый блок может распространяться только после легитимного, пользователи, которые были обративший внимание не будет обманут.13 Тем не менее, f Br было бы синтаксически правильно, и мы хочу предотвратить производство. Мы делаем это посредством нового правила. По сути, члены проверяющего множества SV r,s шага s раунда r использовать эфемерные открытые ключи pkr,s я подписывать свои сообщения цифровой подписью. Эти ключи предназначены только для одноразового использования, а соответствующие им секретные ключи skr,s я уничтожаются после использования. Таким образом, если проверяющий позже испорченный, Противник не может заставить его подписать что-либо еще, что он не подписывал изначально. Естественно, мы должны гарантировать, что Противник не сможет вычислить новый ключ g пр,с я и убедить честного пользователя, что это правильный эфемерный ключ проверяющего устройства i \(\in\)SV r,s для использования на шаге s. 4.2 Общая сводка обозначений, понятий и параметров Обозначения • r \(\geq\)0: текущий номер раунда. • s \(\geq\)1: текущий номер шага в раунде r. • Br: блок, созданный в раунде r. • PKr: набор открытых ключей к концу раунда r−1 и в начале раунда r. • Sr: состояние системы к концу раунда r−1 и к началу раунда r.14. • PAY r: набор выплат, содержащийся в Br. • \(\ell\)r: лидер раунда r. \(\ell\)r выбирает набор выплат PAY r в раунде r (и определяет следующий Qr). • Qr: начальное число раунда r, величина (т. е. двоичная строка), которая генерируется в конце раунда r. и используется для выбора верификаторов для раунда r + 1. Qr не зависит от наборов выплат в блоках и им нельзя манипулировать с помощью \(\ell\)r. 13Подумайте о том, чтобы подкупить ведущего новостей крупной телесети, а сегодня создать и транслировать кинохронику. показывая, что госсекретарь Клинтон победила на последних президентских выборах. Большинство из нас признало бы это мистификацией. Но кого-то, выходящего из комы, можно обмануть. 14В несинхронной системе понятия «конец раунда r −1» и «начало раунда r» необходимо тщательно определить. Математически PKr и Sr вычисляются из исходного состояния S0 и блоков В1, . . . , Бр−1.• SV r,s: набор верификаторов, выбранных для шага s раунда r. • SV r: набор верификаторов, выбранных для раунда r, SV r = \(\cup\)s\(\geq\)1SV r,s. • MSV r,s и HSV r,s: соответственно набор злонамеренных проверяющих и набор честных проверяющих. в СВ р,с. MSV r,s \(\cup\)HSV r,s = SV r,s и MSV r,s ∩HSV r,s = \(\emptyset\). • n1 \(\in\)Z+ и n \(\in\)Z+: соответственно ожидаемое количество потенциальных лидеров в каждом СВ r,1, и ожидаемое количество проверяющих в каждом SV r,s для s > 1. Обратите внимание, что n1 << n, так как нам нужен хотя бы один честный честный член в SV r,1, но хотя бы большинство честных членов в каждом СВ r,s при s > 1. • h \(\in\)(0, 1): константа больше 2/3. h — коэффициент честности в системе. То есть доля честных пользователей или честных денег, в зависимости от использованного предположения, в каждом PKr составляет по крайней мере ч. • H: криптографическая функция hash, смоделированная как случайная oracle. • \(\bot\): специальная строка той же длины, что и выходные данные H. • F \(\in\)(0, 1): параметр, определяющий допустимую вероятность ошибки. Вероятность \(\leq\)F равна считается «незначительной», а вероятность \(\geq\)1 −F считается «подавляющей». • ph \(\in\)(0, 1): вероятность того, что лидер раунда r, \(\ell\)r, честен. В идеале ph = h. С существования Противника, значение ph будет определено в ходе анализа. • k \(\in\)Z+: параметр просмотра назад. То есть раунд r −k — это место, где проверяющими для раунда r являются выбран из — а именно SV r \(\subseteq\)PKr−k.15 • p1 \(\in\)(0, 1): на первом этапе раунда r пользователь в раунде r−k выбирается находящимся в SV r,1 с вероятность p1 \(\triangleq\) n1 |П Кр−к|. • p \(\in\)(0, 1): для каждого шага s > 1 раунда r пользователь в раунде r−k выбирается для пребывания в SV r,s с вероятность р \(\triangleq\) н |П Кр−к|. • CERT r: сертификат для Br. Это набор tH сигнатур H(Br) от собственных проверяющих в круглый р. • Br \(\triangleq\)(Br, CERT r) — проверенный блок. Пользователь i знает Br, если он владеет (и успешно верифицирует) обе части проверенного блока. Обратите внимание, что CERT r, видимый разными пользователями, может быть разным. • τ р i : (местное) время, в которое пользователь i знает Br. В протоколе Algorand каждый пользователь имеет свой собственные часы. Часы разных пользователей не обязательно должны быть синхронизированы, но должны иметь одинаковую скорость. Только в целях анализа мы рассматриваем эталонные часы и измеряем результативность игроков. связанные с ним времена. • \(\alpha\)r,s я и \(\beta\)r,s i : соответственно (локальное) время, когда пользователь i начинает и заканчивает выполнение шагов s круглый р. • Λ и \(\lambda\): по сути, верхние границы времени, необходимого для выполнения Шага 1 и Шага 1, соответственно. время, необходимое для любого другого шага протокола Algorand. Параметр Λ ограничивает время распространения одного блока размером 1 МБ. (В наших обозначениях Λ = \(\lambda\) \(\rho\),1MB. Вспоминая наши обозначения, мы установили \(\rho\) = 1 для простоты и что блоки если длина выбрана не более 1 МБ, то Λ = \(\lambda\)1,1,1MB.) 15Строго говоря, «r−k» должно быть «max{0, r−k}».Параметр \(\lambda\) ограничивает время распространения одного небольшого сообщения на одного верификатора за шаг s > 1. (При использовании, как в Bitcoin, подписей в форме эллиптической кривой с ключами длиной 32 байта, длина проверяющего сообщения составляет 200 байт. Таким образом, в наших обозначениях \(\lambda\) = \(\lambda\)n,\(\rho\),200B.) Предположим, что Λ = O(\(\lambda\)). Понятия • Выбор проверяющего. Для каждого раунда r и шага s > 1 SV r,s \(\triangleq\){i \(\in\)PKr−k : .H(SIGi(r, s, Qr−1)) \(\leq\)p}. Каждый пользователь i \(\in\)PKr-k конфиденциально вычисляет свою подпись, используя свой долгосрочный ключ, и решает, стоит ли i \(\in\)SV r,s или нет. Если i \(\in\)SV r,s, то SIGi(r, s, Qr−1) является (r, s)-удостоверением i, компактно обозначаемым по \(\sigma\)r,s я. Для первого шага раунда r SV r,1 и \(\sigma\)r,1 я определяются аналогично, с заменой p на p1. проверяющие в SV r,1 являются потенциальными лидерами. • Выбор лидера. Пользователь i \(\in\)SV r,1 является лидером раунда r, обозначается \(\ell\)r, если H(\(\sigma\)r,1 i ) \(\leq\)H(\(\sigma\)r,1 j) для всех потенциальных лидеры j \(\in\)SV r,1. Всякий раз, когда сравниваются hash учетных данных двух игроков, в маловероятном случае В случае возникновения связей протокол всегда разрывает связи лексикографически в соответствии с (долгосрочными публичными ключи) потенциальных лидеров. По определению, значение hash учетных данных игрока \(\ell\)r также является наименьшим среди всех пользователей в ПКр−к. Обратите внимание, что потенциальный лидер не может в частном порядке решить, является он лидером или нет. не видя полномочий других потенциальных лидеров. Поскольку значения hash случайны и однородны, когда SV r,1 непусто, \(\ell\)r всегда существует и честный с вероятностью не менее h. Параметр n1 достаточно велик, чтобы гарантировать, что каждый SV r,1 непусто с подавляющей вероятностью. • Блочная структура. Непустой блок имеет вид Br = (r, PAY r, SIG\(\ell\)r(Qr−1), H(Br−1)), а пустой блок имеет вид Br \(\varepsilon\) = (r, \(\emptyset\), Qr−1, H(Br−1)). Обратите внимание, что непустой блок все еще может содержать пустой набор платежей PAY r, если в в этом раунде или если лидер злонамерен. Однако непустой блок подразумевает, что тождество \(\ell\)r, его полномочия \(\sigma\)r,1 \(\ell\)r и SIG\(\ell\)r(Qr-1) были своевременно обнаружены. Протокол гарантирует что если лидер честен, то блок с подавляющей вероятностью окажется непустым. • Семена Qr. Если Br непусто, то Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r), иначе Qr \(\triangleq\) H(Qr−1, r). Параметры • Отношения между различными параметрами. — Проверяющие и потенциальные лидеры раунда r выбираются из пользователей PKr−k, где k выбрано таким образом, чтобы противник не мог предсказать Qr−1 обратно в раунде r −k −1. с вероятностью лучше F: в противном случае он сможет внедрить злонамеренных пользователей для раунда r −k, все из которых будут потенциальными лидерами/проверяющими в раунде r, добившимися успеха в

наличие злонамеренного лидера или злонамеренного большинства в СВ для некоторых шагов, желаемых его. — Для шага 1 каждого раунда r n1 выбирается так, чтобы с подавляющей вероятностью SV r,1 ̸= \(\emptyset\). • Пример выбора важных параметров. — Выходные данные H имеют длину 256 бит. — h = 80%, n1 = 35. — Λ = 1 минута и \(\lambda\) = 10 секунд. • Инициализация протокола. Протокол начинается в момент 0 с r = 0. Поскольку не существует «B-1» или «CERT-1», синтаксически B-1 является общедоступным параметром, третий компонент которого определяет Q-1, и все пользователи знать B-1 в момент времени 0.

Algorand ′

1 In diesem Abschnitt erstellen wir eine Version von Algorand ′, die unter der folgenden Annahme arbeitet. Annahme: Ehrliche Mehrheit der Benutzer: Mehr als 2/3 der Benutzer in jedem PKr sind ehrlich. In Abschnitt 8 zeigen wir, wie man die obige Annahme durch die gewünschte ehrliche Mehrheit ersetzt Geldannahme. 5.1 Zusätzliche Notationen und Parameter Notationen • m \(\in\)Z+: die maximale Anzahl von Schritten im binären BA-Protokoll, ein Vielfaches von 3. • Lr \(\leq\)m/3: eine Zufallsvariable, die die Anzahl der Bernoulli-Versuche darstellt, die erforderlich sind, um eine 1 zu sehen, wenn jeder Versuch 1 mit der Wahrscheinlichkeit ph ist 2 und es gibt höchstens m/3-Versuche. Wenn alle Versuche scheitern, dann Lr \(\triangleq\)m/3. Lr wird verwendet, um die Zeit, die zum Generieren des Blocks Br benötigt wird, nach oben zu begrenzen. • tH = 2n 3 + 1: die Anzahl der Signaturen, die in den Endbedingungen des Protokolls erforderlich sind. • CERT r: das Zertifikat für Br. Es handelt sich um eine Reihe von Signaturen von H(Br) von geeigneten Prüfern in rund r. Parameter • Beziehungen zwischen verschiedenen Parametern. — Für jeden Schritt s > 1 der Runde r wird n so gewählt, dass mit überwältigender Wahrscheinlichkeit |HSV r,s| > 2|MSV r,s| und |HSV r,s| + 4|MSV r,s| < 2n. Je näher der Wert von h an 1 liegt, desto kleiner muss n sein. Insbesondere verwenden wir (Varianten von) Chernoff-Grenzen, um sicherzustellen, dass die gewünschten Bedingungen mit überwältigender Wahrscheinlichkeit eintreten. — m wird so gewählt, dass mit überwältigender Wahrscheinlichkeit Lr < m/3 ist. • Beispielhafte Auswahl wichtiger Parameter. — F = 10−12. — n \(\approx\)1500, k = 40 und m = 180.5.2 Implementierung kurzlebiger Schlüssel in Algorand ′ 1 Wie bereits erwähnt, wünschen wir uns, dass ein Verifizierer i \(\in\)SV r,s seine Nachricht mr,s digital signiert ich Schritt s in Runde r, relativ zu einem kurzlebigen öffentlichen Schlüssel pkr,s i , unter Verwendung eines kurzlebigen geheimen Schlüssels skr,s ich das Er zerstört sofort nach dem Gebrauch. Wir brauchen daher eine effiziente Methode, um sicherzustellen, dass jeder Benutzer dies tun kann Überprüfen Sie, ob pkr,s ich ist in der Tat der Schlüssel, mit dem ich die Unterschrift von Herrn, S. überprüfen kann ich . Wir tun dies nach bestem Wissen und Gewissen unseres Wissens) neue Verwendung identitätsbasierter Signaturverfahren. Auf hoher Ebene generiert in einem solchen Schema eine zentrale Behörde A einen öffentlichen Hauptschlüssel, PMK, und einen entsprechenden geheimen Hauptschlüssel, SMK. Angesichts der Identität U eines Spielers U berechnet A: Über SMK wird ein geheimer Signaturschlüssel skU relativ zum öffentlichen Schlüssel U bereitgestellt und skU privat an ihn weitergegeben U. (Tatsächlich ist in einem identitätsbasierten digitalen Signaturschema der öffentliche Schlüssel eines Benutzers U U selbst!) Auf diese Weise zerstört A SMK, nachdem er die geheimen Schlüssel der Benutzer berechnet hat, die er aktivieren möchte Digitale Signaturen erstellen und keinen berechneten geheimen Schlüssel aufbewahren, dann ist U der Einzige, der dies tut kann Nachrichten relativ zum öffentlichen Schlüssel U digital signieren. Somit kann jeder, der „Us Namen“ kennt, kennt automatisch den öffentlichen Schlüssel von U und kann daher die Signaturen von U überprüfen (möglicherweise auch unter Verwendung des öffentlicher Hauptschlüssel PMK). In unserer Anwendung ist die Autorität A der Benutzer i, und die Menge aller möglichen Benutzer U stimmt mit überein das Rundschrittpaar (r, s) in — sagen wir — S = {i}\(\times\){r′, . . . , r′ +106}\(\times\){1, . . . , m+3}, wobei r′ gegeben ist Runde und m + 3 die Obergrenze für die Anzahl der Schritte, die innerhalb einer Runde auftreten dürfen. Dies Weg, pkr,s ich \(\triangleq\)(i, r, s), sodass jeder die Signatur von i sieht, SIGr,s pkr,s ich (Herr, S ich ) kann, mit Überwältigung Wahrscheinlichkeit, überprüfen Sie es sofort für die ersten Millionen Runden r nach r′. Mit anderen Worten: Ich erzeuge zunächst PMK und SMK. Dann macht er bekannt, dass PMK mein Meister ist öffentlichen Schlüssel für jede Runde r \(\in\)[r′, r′ + 106] und verwendet SMK, um das Geheimnis privat zu erzeugen und zu speichern Schlüssel skr,s ich für jedes Tripel (i, r, s) \(\in\)S. Wenn das erledigt ist, zerstört er SMK. Wenn er feststellt, dass dies nicht der Fall ist Teil von SV r,s, dann kann ich skr,s verlassen ich allein (da das Protokoll nicht verlangt, dass er sich authentifiziert jede Nachricht in Schritt s der Runde r). Ansonsten verwende ich zuerst skr,s ich seine Nachricht digital signieren mr,s ich , und zerstört dann skr,s ich . Beachten Sie, dass ich seinen ersten öffentlichen Hauptschlüssel veröffentlichen kann, wenn er das System zum ersten Mal betritt. Das heißt, Die gleiche Zahlung \(\wp\), die i in das System bringt (in einer Runde r′ oder in einer Runde nahe r′), kann auch Geben Sie auf Wunsch von i an, dass der öffentliche Hauptschlüssel von i für jede Runde r \(\in\)[r′, r′ + 106] PMK ist – z. B. by einschließlich eines Paares der Form (PMK, [r′, r′ + 106]). Beachten Sie auch, dass m + 3 die maximale Anzahl von Schritten in einer Runde ist, vorausgesetzt, dass eine Runde erfolgt dauert eine Minute, der so hergestellte Vorrat an kurzlebigen Schlüsseln reicht für fast zwei Jahre. Gleichzeitig Mit der Zeit wird die Herstellung dieser kurzlebigen Geheimschlüssel nicht allzu lange dauern. Unter Verwendung einer elliptischen Kurve Bei einem System mit 32B Schlüsseln wird jeder geheime Schlüssel in wenigen Mikrosekunden berechnet. Wenn also m + 3 = 180, Dann können alle 180 Millionen geheimen Schlüssel in weniger als einer Stunde berechnet werden. Wenn sich die aktuelle Runde r′ + 106 nähert, um die nächsten Millionen Runden zu bewältigen, d generiert ein neues (PMK′, SMK′)-Paar und informiert über seinen nächsten Vorrat an kurzlebigen Schlüsseln – zum Beispiel – mit SIGi(PMK′, [r′ + 106 + 1, r′ + 2 \(\cdot\) 106 + 1]) geben Sie einen neuen Block ein, entweder als separate „Transaktion“ oder als zusätzliche Information, die Teil einer Zahlung ist. Dadurch Ich informiere jeden darüber, dass er/sie im nächsten Schritt PMK′ verwenden soll, um die ephemeren Signaturen von i zu überprüfen Millionen Schuss. Und so weiter. (Beachten Sie, dass es nach diesem grundlegenden Ansatz auch andere Möglichkeiten gibt, ephemere Schlüssel ohne zu implementieren Der Einsatz identitätsbasierter Signaturen ist durchaus möglich. Zum Beispiel über Merkle trees.16) 16Bei dieser Methode generiert i ein öffentlich-geheimes Schlüsselpaar (pkr,s ich, skr,s ich ) für jedes Rundenschrittpaar (r, s) in — sagen wir —Andere Möglichkeiten zur Implementierung ephemerer Schlüssel sind sicherlich möglich – z. B. über Merkle trees. 5.3 Passend zu den Schritten von Algorand ′ 1 mit denen von BA⋆ Wie gesagt, eine Runde in Algorand ′ 1 hat höchstens m + 3 Schritte. Schritt 1. In diesem Schritt berechnet und propagiert jeder potenzielle Anführer i seinen Kandidatenblock Br ich, zusammen mit seinem eigenen Ausweis, \(\sigma\)r,1 ich . Denken Sie daran, dass dieser Berechtigungsnachweis i explizit identifiziert. Das ist so, weil \(\sigma\)r,1 ich \(\triangleq\)SIGi(r, 1, Qr−1). Der potenzielle Verifizierer verbreitet als Teil seiner Nachricht auch seine ordnungsgemäße digitale Signatur von H(Br.) ich). Da es sich bei dieser Signatur nicht um eine Zahlung oder einen Ausweis handelt, bezieht sie sich auf seine flüchtige Öffentlichkeit Schlüssel VE,1 i: das heißt, er propagiert sigpkr,1 ich (H(Br ich )). Angesichts unserer Konventionen, anstatt Br. zu propagieren ich und sigpkr,1 ich (H(Br i)), er hätte es tun können propagierte SIGpkr,1 ich (H(Br ich )). In unserer Analyse benötigen wir jedoch expliziten Zugriff darauf sigpkr,1 ich (H(Br ich )). Schritte 2. In diesem Schritt legt jeder Verifizierer \(\ell\)r fest Ich möchte der potenzielle Anführer sein, dessen Qualifikation hash ist ist der kleinste und Br i soll der von \(\ell\)r vorgeschlagene Block sein ich . Da wir aus Gründen der Effizienz Wenn er sich auf H(Br) und nicht direkt auf Br einigen möchte, propagiert er die Botschaft, die er haben möchte propagiert im ersten Schritt von BA⋆mit Anfangswert v′ i = H(Br ich). Das heißt, er propagiert v′ ich, natürlich erst nach kurzer Unterzeichnung. (Nämlich nach der Unterzeichnung relativ zum rechten Ephemeren Öffentlicher Schlüssel, in diesem Fall pkr,2 i .) Selbstverständlich übermittelt auch ich seinen eigenen Ausweis. Da der erste Schritt von BA⋆aus dem ersten Schritt des abgestuften Konsensprotokolls GC besteht, Schritt 2 von Algorand ′ entspricht dem ersten Schritt von GC. Schritte 3. In diesem Schritt führt jeder Prüfer i \(\in\)SV r,2 den zweiten Schritt von BA⋆ aus. Das heißt, er sendet die Dieselbe Nachricht, die er im zweiten Schritt von GC gesendet hätte. Auch hier ist meine Botschaft vergänglich unterschrieben und mit meinem Ausweis versehen. (Von nun an werden wir es unterlassen, zu sagen, dass es sich um einen Verifizierer handelt unterzeichnet flüchtig seine Nachricht und verbreitet auch seine Beglaubigung.) Schritt 4. In diesem Schritt berechnet jeder Verifizierer i \(\in\)SV r,4 die Ausgabe von GC (vi, gi) und ephemer signiert und sendet die gleiche Nachricht, die er im dritten Schritt von BA⋆ gesendet hätte, also im erster Schritt von BBA⋆, mit Anfangsbit 0, wenn gi = 2, andernfalls 1. Schritt s = 5, . . . , m + 2. Ein solcher Schritt, falls jemals erreicht, entspricht dem Schritt s −1 von BA⋆ und damit Schritt s −3 von BBA⋆. Da unser Ausbreitungsmodell ausreichend asynchron ist, müssen wir die Möglichkeit berücksichtigen dass mitten in einem solchen Schritt s ein Verifizierer i \(\in\)SV r,s durch Informationen erreicht wird, die ihn beweisen dieser Block Br wurde bereits ausgewählt. In diesem Fall stoppt i seine eigene Ausführung von Runde r Algorand ′ und beginnt mit der Ausführung seiner Round-(r + 1)-Anweisungen. {R', . . . , r′ + 106} \(\times\) {1, . . . , m + 3}. Dann ordnet er diese öffentlichen Schlüssel auf kanonische Weise an und speichert den J-ten öffentlich Geben Sie das j-te Blatt eines Merkle tree ein und berechnen Sie den Wurzelwert Ri, den er veröffentlicht. Wenn er unterschreiben will eine Nachricht relativ zum Schlüssel pkr,s ich , i stellt nicht nur die eigentliche Signatur bereit, sondern auch den Authentifizierungspfad für pkr,s ich relativ zu Ri. Beachten Sie, dass dieser Authentifizierungspfad auch beweist, dass pkr,s ich wird im j-ten Blatt gespeichert. Der Rest Details können einfach ausgefüllt werden.Dementsprechend sind die Anweisungen eines Verifizierers i \(\in\)SV r,s, zusätzlich zu den entsprechenden Anweisungen Zu Schritt s −3 von BBA⋆ gehört auch die Prüfung, ob die Ausführung von BBA⋆ in einem früheren Zustand angehalten wurde Schritt s′. Da BBA⋆nur anhalten kann, ist ein Coin-Fixed-to-0-Schritt oder ein Coin-Fixed-to-1-Schritt Anweisungen unterscheiden, ob A (Endbedingung 0): s′ −2 ≡0 mod 3, oder B (Endbedingung 1): s′ −2 ≡1 mod 3. Tatsächlich ist im Fall A der Block Br nicht leer und daher sind zusätzliche Anweisungen erforderlich Stellen Sie sicher, dass ich Br zusammen mit dem richtigen Zertifikat CERT r ordnungsgemäß rekonstruiere. Im Fall B, Der Block Br ist leer und daher wird i angewiesen, Br = Br zu setzen \(\varepsilon\) = (r, \(\emptyset\), H(Qr−1, r), H(Br−1)), und um CERT r zu berechnen. Wenn i während seiner Ausführung von Schritt s keine Hinweise darauf sieht, dass der Block Br bereits vorhanden ist generiert wurde, sendet er dieselbe Nachricht, die er in Schritt s −3 von BBA⋆ gesendet hätte. Schritt m + 3. Wenn i \(\in\)SV r,m+3 während Schritt m + 3 erkennt, dass der Block Br bereits in generiert wurde einen vorherigen Schritt s′, dann geht er genauso vor wie oben erklärt. Anstatt die gleiche Nachricht zu senden, die er in Schritt m von BBA⋆ gesendet hätte, ist i angewiesen, auf der Grundlage der in seinem Besitz befindlichen Informationen Br und dessen entsprechende Werte zu berechnen Zertifikat CERT r. Denken Sie daran, dass wir die Gesamtzahl der Schritte einer Runde um m + 3 nach oben begrenzen. 5.4 Das eigentliche Protokoll Denken Sie daran, dass in jedem Schritt s einer Runde r ein Verifizierer i \(\in\)SV r,s sein langfristiges öffentlich-geheimes Schlüsselpaar verwendet seinen Ausweis vorlegen, \(\sigma\)r,s ich \(\triangleq\)SIGi(r, s, Qr−1) sowie SIGi Qr−1 im Fall s = 1. Verifier i verwendet seinen kurzlebigen geheimen Schlüssel skr,s ich seine (r,s)-Nachricht unterschreiben mr,s ich . Der Einfachheit halber, wenn r und s sind klar, wir schreiben esigi(x) statt sigpkr,s i (x), um die eigentliche ephemere Signatur eines Wertes zu bezeichnen x in Schritt s der Runde r und schreibe ESIGi(x) anstelle von SIGpkr,s i (x) zur Bezeichnung von (i, x, esigi(x)). Schritt 1: Vorschlag blockieren Anleitung für jeden Benutzer i \(\in\)PKr−k: Benutzer i startet seinen eigenen Schritt 1 der Runde r, sobald er kennt Br−1. • Benutzer i berechnet Qr−1 aus der dritten Komponente von Br−1 und prüft, ob i \(\in\)SV r,1 oder nicht. • Wenn i /\(\in\)SV r,1, stoppt i sofort seine eigene Ausführung von Schritt 1. • Wenn i \(\in\)SV r,1, das heißt, wenn i ein potenzieller Anführer ist, dann kassiert er die runden Zahlungen, die er hat wurde ihm bisher propagiert und berechnet einen maximalen Payset PAY r ich von ihnen. Als nächstes er berechnet seinen „Kandidatenblock“ Br i = (r, PAY r i , SIGi(Qr−1), H(Br−1)). Schließlich rechnet er die Nachricht Herr,1 ich = (Br ich, esigi(H(Br i )), \(\sigma\)r,1 i ), zerstört seinen ephemeren geheimen Schlüssel skr,1 ich, und dann propagiert mr,1 ich .Bemerkung. Um die globale Ausführung von Schritt 1 zu verkürzen, ist es in der Praxis wichtig, dass (r, 1)- Nachrichten werden selektiv verbreitet. Das heißt, für jeden Benutzer i im System gilt für den ersten (r, 1)- Die Nachricht, die er jemals erhält und erfolgreich verifiziert,17 verbreitet der Spieler wie gewohnt. Für alle Andere (r, 1)-Nachrichten, die Spieler i empfängt und erfolgreich verifiziert, er verbreitet sie nur, wenn die hash Der Wert der darin enthaltenen Anmeldeinformationen ist der kleinste unter den hash Werten der enthaltenen Anmeldeinformationen in allen (r, 1)-Nachrichten, die er bisher erhalten und erfolgreich verifiziert hat. Darüber hinaus, wie vorgeschlagen von Georgios Vlachos ist es nützlich, dass jeder potenzielle Anführer i auch seine Qualifikation \(\sigma\)r,1 propagiert ich separat: Diese kleinen Nachrichten verbreiten sich schneller als Blöcke und stellen eine rechtzeitige Ausbreitung des mr,1 sicher j’s wobei die enthaltenen Anmeldeinformationen kleine hash-Werte haben, während solche mit großen hash-Werten erstellt werden verschwinden schnell. Schritt 2: Der erste Schritt des Graded Consensus Protocol GC Anleitung für jeden Benutzer i \(\in\)PKr−k: Benutzer i startet seinen eigenen Schritt 2 der Runde r, sobald er kennt Br−1. • Benutzer i berechnet Qr−1 aus der dritten Komponente von Br−1 und prüft, ob i \(\in\)SV r,2 oder nicht. • Wenn i /\(\in\)SV r,2, stoppt i sofort seine eigene Ausführung von Schritt 2. • Wenn i \(\in\)SV r,2, verhält sich i nach einer Wartezeit von t2 \(\triangleq\) \(\lambda\) + Λ wie folgt. 1. Er findet den Benutzer \(\ell\)so dass H(\(\sigma\)r,1 \(\ell\)) \(\leq\)H(\(\sigma\)r,1 j ) für alle Referenzen \(\sigma\)r,1 j die Teil davon sind die erfolgreich verifizierten (r, 1)-Nachrichten, die er bisher erhalten hat.a 2. Wenn er von \(\ell\)eine gültige Nachricht erhalten hat, mr,1 \(\ell\) = (Br \(\ell\), esig\(\ell\)(H(Br \(\ell\))), \(\sigma\)r,1 \(\ell\)),b dann setzt i v′ i \(\triangleq\)H(Br \(\ell\)); sonst setze ich v′ ich \(\triangleq\) \(\bot\). 3. i berechnet die Nachricht mr,2 ich \(\triangleq\)(ESIGi(v′ i), \(\sigma\)r,2 i ),c zerstört seinen ephemeren Geheimschlüssel skr,2 i und propagiert dann mr,2 ich . aIm Wesentlichen entscheidet Benutzer i privat, dass der Anführer der Runde r Benutzer \(\ell\) ist. bAuch hier wurden die Unterschriften von Spieler \(\ell\) und die hashes alle erfolgreich verifiziert und ZAHLEN r \(\ell\)in Br \(\ell\)ist ein gültiger Gehaltssatz für rundes r – obwohl ich nicht prüfe, ob PAY r \(\ell\)ist maximal für \(\ell\)oder nicht. cDie Nachricht mr,2 ich signalisiert, dass der Spieler v′ betrachtet i sei der hash des nächsten Blocks oder betrachte den nächsten Block soll leer sein. 17Das heißt, alle Signaturen sind korrekt und sowohl der Block als auch sein hash sind gültig – obwohl ich das nicht prüfe ob der enthaltene Gehaltssatz für seinen Antragsteller maximal ist oder nicht.

Schritt 3: Der zweite Schritt der GC Anleitung für jeden Benutzer i \(\in\)PKr−k: Benutzer i startet seinen eigenen Schritt 3 der Runde r, sobald er kennt Br−1. • Benutzer i berechnet Qr−1 aus der dritten Komponente von Br−1 und prüft, ob i \(\in\)SV r,3 oder nicht. • Wenn i /\(\in\)SV r,3, stoppt i sofort seine eigene Ausführung von Schritt 3. • Wenn i \(\in\)SV r,3, verhält sich i nach einer Wartezeit von t3 \(\triangleq\)t2 + 2\(\lambda\) = 3\(\lambda\) + Λ wie folgt. 1. Wenn es einen Wert v′ ̸= \(\bot\) gibt, so dass unter allen gültigen Nachrichten mr,2 j er hat erhalten, mehr als 2/3 davon haben die Form (ESIGj(v′), \(\sigma\)r,2 j ), ohne jeden Widerspruch,a dann berechnet er die Nachricht mr,3 ich \(\triangleq\)(ESIGi(v′), \(\sigma\)r,3 ich). Andernfalls berechnet er mr,3 ich \(\triangleq\) (ESIGi(\(\bot\)), \(\sigma\)r,3 ich). 2. Ich zerstöre seinen kurzlebigen geheimen Schlüssel skr,3 i und propagiert dann mr,3 ich . aDas heißt, er hat keine zwei gültigen Nachrichten erhalten, die ESIGj(v′′) bzw. ein anderes ESIGj(v′′) enthalten. von einem Spieler j. Hier und von nun an, außer in den später definierten Endbedingungen, wann immer ein ehrlicher Spieler Will Nachrichten einer bestimmten Form, werden widersprüchliche Nachrichten niemals gezählt oder als gültig angesehen.Schritt 4: Ausgabe von GC und der erste Schritt von BBA⋆ Anleitung für jeden Benutzer i \(\in\)PKr−k: Benutzer i startet seinen eigenen Schritt 4 der Runde r, sobald er kennt Br−1. • Benutzer i berechnet Qr−1 aus der dritten Komponente von Br−1 und prüft, ob i \(\in\)SV r,4 oder nicht. • Wenn i /\(\in\)SV r,4, dann stoppt i seine eigene Ausführung von Schritt 4 sofort. • Wenn i \(\in\)SV r,4, verhält sich i nach einer Wartezeit von t4 \(\triangleq\)t3 + 2\(\lambda\) = 5\(\lambda\) + Λ wie folgt. 1. Er berechnet vi und gi, die Ausgabe von GC, wie folgt. (a) Wenn es einen Wert v′ ̸= \(\bot\) gibt, so dass unter allen gültigen Nachrichten mr,3 j er hat empfangen, mehr als 2/3 davon haben die Form (ESIGj(v′), \(\sigma\)r,3 j ), dann setzt er vi \(\triangleq\)v′ und gi \(\triangleq\)2. (b) Andernfalls, wenn unter allen gültigen Nachrichten ein Wert v′ ̸= \(\bot\)existiert Herr,3 j er erhalten hat, haben mehr als 1/3 davon die Form (ESIGj(v′), \(\sigma\)r,3 j), dann er setzt vi \(\triangleq\)v′ und gi \(\triangleq\)1.a (c) Ansonsten setzt er vi \(\triangleq\)H(Br ǫ ) und gi \(\triangleq\)0. 2. Er berechnet bi, die Eingabe von BBA⋆, wie folgt: bi \(\triangleq\)0, wenn gi = 2, andernfalls bi \(\triangleq\)1. 3. Er berechnet die Nachricht mr,4 ich \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,4 i ), zerstört sein Vergängliches geheimer Schlüssel skr,4 i und propagiert dann mr,4 ich . aEs kann bewiesen werden, dass das v′ im Fall (b), falls vorhanden, eindeutig sein muss.

Schritt s, 5 \(\leq\)s \(\leq\)m + 2, s −2 ≡0 mod 3: Ein Coin-Fixed-To-0-Schritt von BBA⋆ Anleitung für jeden Benutzer i \(\in\)PKr−k: Benutzer i startet seine eigenen Schritte s der Runde r, sobald er kennt Br−1. • Benutzer i berechnet Qr−1 aus der dritten Komponente von Br−1 und prüft, ob i \(\in\)SV r,s. • Wenn i /\(\in\)SV r,s, stoppt i sofort seine eigene Ausführung von Schritt s. • Wenn i \(\in\)SV r,s, dann verhält er sich wie folgt. – Er wartet, bis eine Zeitspanne ts \(\triangleq\)ts−1 + 2\(\lambda\) = (2s −3)\(\lambda\) + Λ verstrichen ist. – Endbedingung 0: Wenn während dieses Wartens und zu irgendeinem Zeitpunkt ein string v ̸= \(\bot\)und ein Schritt s′ so dass (a) 5 \(\leq\)s′ \(\leq\)s, s′ −2 ≡0 mod 3 – das heißt, Schritt s′ ist ein Coin-Fixed-To-0-Schritt, (b) Ich habe mindestens tH erhalten = 2n 3 + 1 gültige Nachrichten mr,s′−1 j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ),a und (c) Ich habe eine gültige Nachricht mr,1 erhalten j = (Br j , esigj(H(Br j )), \(\sigma\)r,1 j ) mit v = H(Br j), dann stoppt i seine eigene Ausführung von Schritt s (und tatsächlich von Runde r) sofort ohne irgendetwas verbreiten; setzt Br = Br j ; und legt sein eigenes CERT r als Nachrichtenmenge fest mr,s′−1 j des Unterschritts (b).b – Endbedingung 1: Wenn während des Wartens und zu irgendeinem Zeitpunkt ein Schritt s′ so dass (a’) 6 \(\leq\)s′ \(\leq\)s, s′ −2 ≡1 mod 3 – das heißt, Schritt s′ ist ein Coin-Fixed-To-1-Schritt, und (b’) i hat mindestens die gültigen Nachrichten mr,s′−1 erhalten j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ),c dann stoppt i seine eigene Ausführung von Schritt s (und tatsächlich von Runde r) sofort ohne irgendetwas verbreiten; setzt Br = Br ǫ ; und legt sein eigenes CERT r als Nachrichtenmenge fest mr,s′−1 j des Teilschritts (b‘). – Andernfalls führt Benutzer i am Ende der Wartezeit Folgendes aus. Er setzt vi als Mehrheitsvotum der vjs in den zweiten Komponenten aller gültigen Stimmen mr,s−1 j ’s hat er erhalten. Er berechnet bi wie folgt. Wenn mehr als 2/3 aller gültigen mr,s−1 j ’s, die er erhalten hat, sind von der Form (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), dann setzt er bi \(\triangleq\)0. Andernfalls, wenn mehr als 2/3 aller gültigen mr,s−1 j ’s, die er erhalten hat, sind von der Form (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), dann setzt er bi \(\triangleq\)1. Andernfalls setzt er bi \(\triangleq\)0. Er berechnet die Nachricht mr,s ich \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ), zerstört sein Vergängliches geheimer Schlüssel skr,s i , und dann propagiert mr,s ich . aEine solche Nachricht von Spieler j wird auch dann gezählt, wenn Spieler i auch eine Nachricht von j erhalten hat, der für 1 signiert. Ähnliches gilt für Endbedingung 1. Wie in der Analyse gezeigt, geschieht dies, um sicherzustellen, dass alle ehrlichen Benutzer Bescheid wissen Br innerhalb der Zeit \(\lambda\) voneinander. bUser i kennt jetzt Br und seine eigenen Rundenabschlüsse. Als allgemeiner Benutzer hilft er immer noch bei der Verbreitung von Nachrichten, aber initiiert keine Ausbreitung als (r, s)-Verifizierer. Insbesondere hat er dazu beigetragen, alle in ihm enthaltenen Botschaften zu verbreiten CERT r, was für unser Protokoll ausreicht. Beachten Sie, dass er auch für das binäre BA-Protokoll bi \(\triangleq\)0 festlegen sollte, aber bi wird in diesem Fall ohnehin nicht benötigt. Ähnliches gilt für alle zukünftigen Anweisungen. cIn diesem Fall spielt es keine Rolle, um welche VJs es sich handelt.Schritt s, 6 \(\leq\)s \(\leq\)m + 2, s −2 ≡1 mod 3: Ein Coin-Fixed-To-1-Schritt von BBA⋆ Anleitung für jeden Benutzer i \(\in\)PKr−k: Benutzer i startet seine eigenen Schritte s der Runde r, sobald er kennt Br−1. • Benutzer i berechnet Qr−1 aus der dritten Komponente von Br−1 und prüft, ob i \(\in\)SV r,s oder nicht. • Wenn i /\(\in\)SV r,s, stoppt i sofort seine eigene Ausführung von Schritt s. • Wenn i \(\in\)SV r,s, dann macht er Folgendes. – Er wartet, bis eine Zeitspanne ts \(\triangleq\)(2s −3)\(\lambda\) + Λ verstrichen ist. – Endbedingung 0: Die gleichen Anweisungen wie bei den Schritten „Coin-Fixed-To-0“. – Endbedingung 1: Die gleichen Anweisungen wie bei den Schritten „Coin-Fixed-To-0“. – Andernfalls führt Benutzer i am Ende der Wartezeit Folgendes aus. Er setzt vi als Mehrheitsvotum der vjs in den zweiten Komponenten aller gültigen Stimmen mr,s−1 j ’s hat er erhalten. Er berechnet bi wie folgt. Wenn mehr als 2/3 aller gültigen mr,s−1 j ’s, die er erhalten hat, sind von der Form (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), dann setzt er bi \(\triangleq\)0. Andernfalls, wenn mehr als 2/3 aller gültigen mr,s−1 j ’s, die er erhalten hat, sind von der Form (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), dann setzt er bi \(\triangleq\)1. Andernfalls setzt er bi \(\triangleq\)1. Er berechnet die Nachricht mr,s ich \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ), zerstört sein Vergängliches geheimer Schlüssel skr,s i , und dann propagiert mr,s ich .

Schritt s, 7 \(\leq\)s \(\leq\)m + 2, s −2 ≡2 mod 3: Ein münzecht umgedrehter Schritt von BBA⋆ Anleitung für jeden Benutzer i \(\in\)PKr−k: Benutzer i startet seine eigenen Schritte s der Runde r, sobald er kennt Br−1. • Benutzer i berechnet Qr−1 aus der dritten Komponente von Br−1 und prüft, ob i \(\in\)SV r,s oder nicht. • Wenn i /\(\in\)SV r,s, stoppt i sofort seine eigene Ausführung von Schritt s. • Wenn i \(\in\)SV r,s, dann macht er Folgendes. – Er wartet, bis eine Zeitspanne ts \(\triangleq\)(2s −3)\(\lambda\) + Λ verstrichen ist. – Endbedingung 0: Die gleichen Anweisungen wie bei den Schritten „Coin-Fixed-To-0“. – Endbedingung 1: Die gleichen Anweisungen wie bei den Schritten „Coin-Fixed-To-0“. – Andernfalls führt Benutzer i am Ende der Wartezeit Folgendes aus. Er setzt vi als Mehrheitsvotum der vjs in den zweiten Komponenten aller gültigen Stimmen mr,s−1 j ’s hat er erhalten. Er berechnet bi wie folgt. Wenn mehr als 2/3 aller gültigen mr,s−1 j ’s, die er erhalten hat, sind von der Form (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), dann setzt er bi \(\triangleq\)0. Andernfalls, wenn mehr als 2/3 aller gültigen mr,s−1 j ’s, die er erhalten hat, sind von der Form (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), dann setzt er bi \(\triangleq\)1. Ansonsten sei SV r,s−1 ich sei die Menge der (r, s −1)-Verifizierer, von denen er ein gültiges erhalten hat Nachricht mr,s−1 j . Er setzt bi \(\triangleq\)lsb(minj\(\in\)SV r,s−1 ich H(\(\sigma\)r,s−1 j )). Er berechnet die Nachricht mr,s ich \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ), zerstört sein Vergängliches geheimer Schlüssel skr,s i , und dann propagiert mr,s ich .

Schritt m + 3: Der letzte Schritt von BBA⋆a Anleitung für jeden Benutzer i \(\in\)PKr−k: Benutzer i startet seinen eigenen Schritt m + 3 der Runde r, sobald er kennt Br−1. • Benutzer i berechnet Qr−1 aus der dritten Komponente von Br−1 und prüft, ob i \(\in\)SV r,m+3 oder nicht. • Wenn i /\(\in\)SV r,m+3, dann stoppt i sofort seine eigene Ausführung von Schritt m + 3. • Wenn i \(\in\)SV r,m+3, dann macht er Folgendes. – Er wartet, bis eine Zeitspanne tm+3 \(\triangleq\)tm+2 + 2\(\lambda\) = (2m + 3)\(\lambda\) + Λ vergangen ist. – Endbedingung 0: Die gleichen Anweisungen wie bei den Schritten „Coin-Fixed-To-0“. – Endbedingung 1: Die gleichen Anweisungen wie bei den Schritten „Coin-Fixed-To-0“. – Andernfalls führt Benutzer i am Ende der Wartezeit Folgendes aus. Er stellt i \(\triangleq\)1 und Br \(\triangleq\)Br dar ǫ. Er berechnet die Nachricht mr,m+3 ich = (ESIGi(outi), ESIGi(H(Br)), \(\sigma\)r,m+3 ich ), zerstört seine Vergänglicher geheimer Schlüssel skr,m+3 ich , und propagiert dann mr,m+3 ich Br.b. zertifizieren aMit überwältigender Wahrscheinlichkeit ist BBA⋆vor diesem Schritt beendet, und wir geben diesen Schritt der Vollständigkeit halber an. Ein BA-Zertifikat aus Schritt m + 3 muss ESIGi(outi) nicht enthalten. Wir schließen es nur aus Gründen der Einheitlichkeit ein: das Zertifikate haben nun ein einheitliches Format, unabhängig davon, in welchem Schritt sie generiert werden.Rekonstruktion des Round-r-Blocks durch Nicht-Verifizierer Anleitung für jeden Benutzer i im System: Benutzer i startet seine eigene Runde, sobald er es weiß Br−1 und wartet wie folgt auf Blockinformationen. – Wenn während dieses Wartens und zu irgendeinem Zeitpunkt eine Zeichenfolge v und ein Schritt s′ wie z das (a) 5 \(\leq\)s′ \(\leq\)m + 3 mit s′ −2 ≡0 mod 3, (b) i hat mindestens die gültigen Nachrichten mr,s′−1 erhalten j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ), und (c) Ich habe eine gültige Nachricht mr,1 erhalten j = (Br j , esigj(H(Br j )), \(\sigma\)r,1 j ) mit v = H(Br j), dann stoppt i sofort seine eigene Ausführung von Runde r; setzt Br = Br j; und legt sein eigenes CERT r fest die Menge der Nachrichten mr,s′−1 sein j des Unterschritts (b). – Wenn während dieses Wartens und zu irgendeinem Zeitpunkt ein Schritt s′ existiert, so dass (a’) 6 \(\leq\)s′ \(\leq\)m + 3 mit s′ −2 ≡1 mod 3, und (b’) i hat mindestens die gültigen Nachrichten mr,s′−1 erhalten j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ), dann stoppt i sofort seine eigene Ausführung von Runde r; setzt Br = Br ǫ; und legt sein eigenes CERT r fest die Menge der Nachrichten mr,s′−1 sein j des Teilschritts (b‘). – Wenn ich während dieser Wartezeit und zu irgendeinem Zeitpunkt mindestens die gültigen Nachrichten erhalten habe Herr,m+3 j = (ESIGj(1), ESIGj(H(Br ǫ )), \(\sigma\)r,m+3 j ), dann stoppt i seine eigene Ausführung der Runde r setzt sofort Br = Br ǫ und setzt sein eigenes CERT r auf die Menge der Nachrichten mr,m+3 j für 1 und H(Br ǫ ). 5.5 Analyse von Algorand ′ 1 Wir führen die folgenden Notationen für jede Runde r \(\geq\)0 ein, die in der Analyse verwendet wird. • Sei T r der Zeitpunkt, zu dem der erste ehrliche Benutzer Br−1 kennt. • Sei Ir+1 das Intervall [T r+1, T r+1 + \(\lambda\)]. Beachten Sie, dass T 0 = 0 durch die Initialisierung des Protokolls. Erinnern Sie sich daran für jedes s \(\geq\)1 und i \(\in\)SV r,s \(\alpha\)r,s ich und \(\beta\)r,s ich sind jeweils die Startzeit und die Endzeit der Schritte s von Spieler i. Darüber hinaus Denken Sie daran, dass ts = (2s −3)\(\lambda\) + Λ für jedes 2 \(\leq\)s \(\leq\)m + 3. Außerdem seien I0 \(\triangleq\){0} und t1 \(\triangleq\)0. Denken Sie abschließend daran, dass Lr \(\leq\)m/3 eine Zufallsvariable ist, die die Anzahl der Bernoulli-Versuche darstellt benötigt, um eine 1 zu sehen, wenn jeder Versuch 1 mit der Wahrscheinlichkeit ph ist 2 und es gibt höchstens m/3-Versuche. Wenn alle Versuche scheitern, dann ist Lr \(\triangleq\)m/3. Bei der Analyse ignorieren wir die Rechenzeit, da sie im Verhältnis zur benötigten Zeit tatsächlich vernachlässigbar ist um Nachrichten zu verbreiten. In jedem Fall kann die Berechnungszeit durch die Verwendung etwas größerer \(\lambda\) und Λ verkürzt werden direkt in die Analyse einfließen. Die meisten der folgenden Aussagen treffen „mit überwältigender Mehrheit“ zu Wahrscheinlichkeit“, und wir betonen diese Tatsache möglicherweise nicht wiederholt in der Analyse.5.6 Hauptsatz Satz 5.1. Die folgenden Eigenschaften gelten mit überwältigender Wahrscheinlichkeit für jede Runde r \(\geq\)0: 1. Alle ehrlichen Benutzer stimmen dem gleichen Block zu, Br. 2. Wenn der Anführer \(\ell\)r ehrlich ist, wird der Block Br von \(\ell\)r erzeugt, Br enthält einen maximalen Payset empfangen von \(\ell\)r bis zur Zeit \(\alpha\)r,1 \(\ell\)r , T r+1 \(\leq\)T r + 8\(\lambda\) + Λ und alle ehrlichen Benutzer kennen Br in der Zeit Intervall Ir+1. 3. Wenn der Anführer \(\ell\)r böswillig ist, gilt T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ und alle ehrlichen Benutzer kennen Br im Zeitintervall Ir+1. 4. ph = h2(1 + h −h2) für Lr, und der Anführer \(\ell\)r ist mit einer Wahrscheinlichkeit von mindestens ph ehrlich. Bevor wir unseren Hauptsatz beweisen, machen wir zwei Bemerkungen. Bemerkungen. • Blockgenerierung und echte Latenz. Die Zeit zum Erzeugen des Blocks Br ist als T r+1 − T r definiert. Das heißt, es ist definiert als der Unterschied zwischen dem ersten Mal, wenn ein ehrlicher Benutzer Br lernt, und Das erste Mal lernt ein ehrlicher Benutzer Br−1. Wenn der Round-R-Anführer ehrlich ist, ist Eigentum 2 unser Der Hauptsatz garantiert, dass die genaue Zeit zur Erzeugung von Br 8\(\lambda\) + Λ Zeit beträgt, egal was passiert Der genaue Wert von h > 2/3 kann sein. Wenn der Anführer böswillig ist, impliziert Eigenschaft 3, dass der Die erwartete Zeit zur Erzeugung von Br ist durch ( 12) begrenzt ph + 10)\(\lambda\) + Λ, wiederum unabhängig von der Genauigkeit Wert von h.18 Allerdings hängt die erwartete Zeit zur Erzeugung von Br vom genauen Wert von h ab. Tatsächlich ist nach Eigenschaft 4 ph = h2(1 + h − h2) und der Anführer ist zumindest in Bezug auf die Wahrscheinlichkeit ehrlich ph, also E[T r+1 −T r] \(\leq\)h2(1 + h −h2) \(\cdot\) (8\(\lambda\) + Λ) + (1 −h2(1 + h −h2))(( 12 h2(1 + h −h2) + 10)\(\lambda\) + Λ). Wenn beispielsweise h = 80 %, dann ist E[T r+1 −T r] \(\leq\)12,7\(\lambda\) + Λ. • \(\lambda\) vs. Λ. Beachten Sie, dass die Größe der von den Verifizierern in einem Schritt gesendeten Nachrichten Algorand ′ dominiert durch die Länge der digitalen Signaturschlüssel, die auch bei der Anzahl der Schlüssel fest bleiben kann Benutzer ist enorm. Beachten Sie außerdem, dass in jedem Schritt s > 1 die gleiche erwartete Anzahl n von Verifizierern erwartet wird kann unabhängig davon verwendet werden, ob die Anzahl der Benutzer 100.000, 100 Millionen oder 100 Millionen beträgt. Das liegt daran, dass n allein hängt von h und F ab. Zusammenfassend lässt sich sagen, dass, sofern nicht plötzlich die Notwendigkeit besteht, die Länge des geheimen Schlüssels zu erhöhen, Der Wert von \(\lambda\) sollte derselbe bleiben, egal wie groß die Anzahl der Benutzer ist absehbare Zukunft. Im Gegensatz dazu wächst bei jeder Transaktionsrate die Anzahl der Transaktionen mit der Anzahl der Transaktionen Benutzer. Um alle neuen Transaktionen zeitnah verarbeiten zu können, sollte daher die Größe eines Blocks erforderlich sein wachsen auch mit der Anzahl der Benutzer, wodurch auch Λ wächst. Auf lange Sicht hätten wir das also tun sollen \(\lambda\) << Λ. Dementsprechend ist es angemessen, einen größeren Koeffizienten für \(\lambda\) zu haben, und zwar tatsächlich einen Koeffizienten von 1 für Λ. Beweis von Satz 5.1. Wir beweisen die Eigenschaften 1–3 durch Induktion: unter der Annahme, dass sie für die Runde r −1 gelten (Ohne Beschränkung der Allgemeinheit gelten sie automatisch für „Runde -1“, wenn r = 0), wir beweisen sie für rund r. 18Tatsächlich ist E[T r+1 −T r] \(\leq\)(6E[Lr] + 10)\(\lambda\) + Λ = (6 \(\cdot\) 2 ph + 10)\(\lambda\) + Λ = ( 12 ph + 10)\(\lambda\) + Λ.Da Br−1 durch die Induktionshypothese eindeutig definiert ist, ist auch die Menge SV r,s eindeutig definiert für jeden Schritt s der Runde r. Durch die Wahl von n1 ist SV r,1 ̸= \(\emptyset\)mit überwältigender Wahrscheinlichkeit. Wir jetzt Geben Sie die folgenden zwei Lemmata an, die in den Abschnitten 5.7 und 5.8 bewiesen wurden. Während der Induktion und in die Beweise der beiden Lemmata, die Analyse für Runde 0 ist fast die gleiche wie der Induktionsschritt, und wir werden die Unterschiede hervorheben, wenn sie auftreten. Lemma 5.2. [Vollständigkeitslemma] Angenommen, die Eigenschaften 1–3 gelten für Runde r−1, wenn der Anführer \(\ell\)r ist ehrlich, mit überwältigender Wahrscheinlichkeit, • Alle ehrlichen Benutzer stimmen dem gleichen Block Br zu, der von \(\ell\)r erzeugt wird und ein Maximum enthält Gehaltssatz, den \(\ell\)r zum Zeitpunkt \(\alpha\)r,1 erhalten hat \(\ell\)r \(\in\)Ir; und • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ und alle ehrlichen Benutzer kennen Br im Zeitintervall Ir+1. Lemma 5.3. [Gesundheits-Lemma] Angenommen, die Eigenschaften 1–3 gelten für Runde r −1, wenn der Anführer \(\ell\)r ist bösartig, mit überwältigender Wahrscheinlichkeit sind sich alle ehrlichen Benutzer auf denselben Block Br, T r+1 \(\leq\) einig T r + (6Lr + 10)\(\lambda\) + Λ und alle ehrlichen Benutzer kennen Br im Zeitintervall Ir+1. Die Eigenschaften 1–3 gelten durch Anwendung der Lemmata 5.2 und 5.3 auf r = 0 und auf den Induktionsschritt. Schließlich, Wir formulieren Eigenschaft 4 als das folgende Lemma, das in Abschnitt 5.9 bewiesen wurde. Lemma 5.4. Gegeben sind die Eigenschaften 1–3 für jede Runde vor r, ph = h2(1 + h −h2) für Lr und die Anführer \(\ell\)r ist mit Wahrscheinlichkeit mindestens ph ehrlich. Kombiniert man die oben genannten drei Lemmata miteinander, gilt Satz 5.1. ■ Das folgende Lemma gibt mehrere wichtige Eigenschaften der Runde r bei gegebener Induktivität an Hypothese und wird in den Beweisen der oben genannten drei Lemmata verwendet. Lemma 5.5. Gehen Sie davon aus, dass die Eigenschaften 1–3 für Runde r −1 gelten. Für jeden Schritt s \(\geq\)1 der Runde r und Jeder ehrliche Verifizierer i \(\in\)HSV r,s, das haben wir (a) \(\alpha\)r,s ich \(\in\)Ir; (b) wenn Spieler i eine Zeitspanne ts gewartet hat, dann \(\beta\)r,s ich \(\in\)[T r + ts, T r + \(\lambda\) + ts] für r > 0 und \(\beta\)r,s ich = ts für r = 0; und (c) Wenn Spieler i eine Zeitspanne ts gewartet hat, dann nach der Zeit \(\beta\)r,s i , er hat alle Nachrichten erhalten gesendet von allen ehrlichen Verifizierern j \(\in\)HSV r,s′ für alle Schritte s′ < s. Darüber hinaus haben wir das für jeden Schritt s \(\geq\)3 (d) es gibt keine zwei verschiedenen Spieler i, i′ \(\in\)SV r,s und zwei verschiedene Werte v, v′ derselben Länge, so dass beide Spieler eine Zeitspanne ts gewartet haben, mehr als 2/3 aller gültige Nachrichten mr,s−1 j Spieler, den ich erhalte, haben für v unterschrieben, und mehr als 2/3 aller gültigen Nachrichten mr,s−1 j Spieler i′ erhält, hat für v′ unterschrieben. Nachweisen. Eigenschaft (a) folgt direkt aus der Induktionshypothese, da Spieler i Br−1 im kennt Zeitintervall Ir und beginnt sofort mit seinen eigenen Schritten. Eigenschaft (b) folgt direkt aus (a): da Spieler i hat eine gewisse Zeit ts gewartet, bevor er gehandelt hat, \(\beta\)r,s ich = \(\alpha\)r,s ich + ts. Beachten Sie, dass \(\alpha\)r,s ich = 0 für r = 0. Wir beweisen nun Eigenschaft (c). Wenn s = 2, dann gilt nach Eigenschaft (b) für alle Verifizierer j \(\in\)HSV r,1 \(\beta\)r,s ich = \(\alpha\)r,s ich + ts \(\geq\)T r + ts = T r + \(\lambda\) + Λ \(\geq\) \(\beta\)r,1 j + Λ.Da jeder Prüfer j \(\in\)HSV r,1 seine Nachricht zum Zeitpunkt \(\beta\)r,1 sendet j und die Botschaft erreicht alle ehrlich Benutzer in höchstens Λ Zeit, nach Zeit \(\beta\)r,s ich Player Ich habe die von allen Verifizierern gesendeten Nachrichten erhalten HSV r,1 nach Wunsch. Wenn s > 2, dann ist ts = ts−1 + 2\(\lambda\). Nach Eigenschaft (b) gilt für alle Schritte s′ < s und alle Verifizierer j \(\in\)HSV r,s′, \(\beta\)r,s ich = \(\alpha\)r,s ich + ts \(\geq\)T r + ts = T r + ts−1 + 2\(\lambda\) \(\geq\)T r + ts′ + 2\(\lambda\) = T r + \(\lambda\) + ts′ + \(\lambda\) \(\geq\) \(\beta\)r,s′ j + \(\lambda\). Da jeder Prüfer j \(\in\)HSV r,s′ seine Nachricht zum Zeitpunkt \(\beta\)r,s′ sendet j und die Botschaft erreicht alle ehrlich Benutzer in höchstens \(\lambda\) Zeit, nach Zeit \(\beta\)r,s ich Spieler, ich habe alle Nachrichten erhalten, die von allen ehrlichen Prüfern gesendet wurden im HSV r,s′ für alle s′ < s. Somit gilt Eigenschaft (c). Abschließend beweisen wir Eigenschaft (d). Beachten Sie, dass die Verifizierer j \(\in\)SV r,s−1 höchstens zwei Dinge unterschreiben Schritt s −1 unter Verwendung ihrer ephemeren geheimen Schlüssel: ein Wert vj mit der gleichen Länge wie die Ausgabe des hash-Funktion und auch ein Bit bj \(\in\){0, 1}, wenn s −1 \(\geq\)4. Deshalb in der Aussage des Lemmas wir erfordern, dass v und v′ die gleiche Länge haben: Viele Prüfer haben möglicherweise beide einen hash-Wert signiert v und ein Bit b, also überschreiten beide die 2/3-Schwelle. Nehmen Sie aus Gründen der Widersprüchlichkeit an, dass es die gewünschten Verifizierer i, i′ und die Werte v, v′ gibt. Beachten Sie, dass einige böswillige Verifizierer in MSV r,s−1 möglicherweise sowohl v als auch v′ signiert haben, aber alle ehrlich Prüfer im HSV r,s−1 hat höchstens einen davon unterzeichnet. Nach Eigenschaft (c) haben sowohl i als auch i′ erhalten Alle Nachrichten, die von allen ehrlichen Verifizierern im HSV r,s−1 gesendet werden. Sei HSV r,s−1(v) die Menge der ehrlichen (r, s −1)-Verifizierer, die v signiert haben, MSV r,s−1 ich das Set von böswilligen (r, s −1)-Verifizierern, von denen ich eine gültige Nachricht erhalten habe, und MSV r,s−1 ich (v) die Teilmenge von MSV r,s−1 ich Von wem ich eine gültige Nachrichtensignatur erhalten habe v. Durch die Anforderungen für i und v, wir haben Verhältnis \(\triangleq\)|HSV r,s−1(v)| + |MSV r,s−1 ich (v)| |HSV r,s−1| + |MSV r,s−1 ich |

2 3. (1) Wir zeigen zuerst |MSV r,s−1 ich (v)| \(\leq\)|HSV r,s−1(v)|. (2) Wenn man aufgrund der Beziehungen zwischen den Parametern mit überwältigender Wahrscheinlichkeit etwas anderes annimmt |HSV r,s−1| > 2|MSV r,s−1| \(\geq\)2|MSV r,s−1 ich |, also Verhältnis < |HSV r,s−1(v)| + |MSV r,s−1 ich (v)| 3|MSV r,s−1 ich | < 2|MSV r,s−1 ich (v)| 3|MSV r,s−1 ich | \(\leq\)2 3, widersprüchliche Ungleichung 1. Als nächstes haben wir nach Ungleichung 1 2|HSV r,s−1| + 2|MSV r,s−1 ich | < 3|HSV r,s−1(v)| + 3|MSV r,s−1 ich (v)| \(\leq\) 3|HSV r,s−1(v)| + 2|MSV r,s−1 ich | + |MSV r,s−1 ich (v)|. In Kombination mit Ungleichung 2, 2|HSV r,s−1| < 3|HSV r,s−1(v)| + |MSV r,s−1 ich (v)| \(\leq\)4|HSV r,s−1(v)|, was impliziert |HSV r,s−1(v)| > 1 2|HSV r,s−1|.In ähnlicher Weise gilt aufgrund der Anforderungen für i′ und v′ |HSV r,s−1(v′)| > 1 2|HSV r,s−1|. Da ein ehrlicher Verifizierer j \(\in\)HSV r,s−1 seinen ephemeren geheimen Schlüssel skr,s−1 zerstört j vor der Vermehrung In seiner Botschaft kann der Gegner die Signatur von j nicht für einen Wert fälschen, den j nicht signiert hat lernen, dass j ein Verifizierer ist. Somit implizieren die beiden obigen Ungleichungen |HSV r,s−1| \(\geq\)|HSV r,s−1(v)| + |HSV r,s−1(v′)| > |HSV r,s−1|, ein Widerspruch. Dementsprechend existieren die gewünschten i, i′, v, v′ nicht, und Eigenschaft (d) gilt. ■ 5.7 Das Vollständigkeitslemma Lemma 5.2. [Vollständigkeitslemma, angepasst] Unter der Annahme, dass die Eigenschaften 1–3 für Runde r−1 gelten, wenn der Anführer ist mit überwältigender Wahrscheinlichkeit ehrlich, • Alle ehrlichen Benutzer stimmen dem gleichen Block Br zu, der von \(\ell\)r erzeugt wird und ein Maximum enthält Gehaltssatz, den \(\ell\)r zum Zeitpunkt \(\alpha\)r,1 erhalten hat \(\ell\)r \(\in\)Ir; und • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ und alle ehrlichen Benutzer kennen Br im Zeitintervall Ir+1. Nachweisen. Nach der Induktionshypothese und Lemma 5.5 gilt für jeden Schritt s und Verifizierer i \(\in\)HSV r,s, \(\alpha\)r,s ich \(\in\)Ir. Nachfolgend analysieren wir das Protokoll Schritt für Schritt. Schritt 1. Per Definition verbreitet jeder ehrliche Verifizierer i \(\in\)HSV r,1 die gewünschte Nachricht mr,1 ich bei Zeit \(\beta\)r,1 ich = \(\alpha\)r,1 ich, wo Herr,1 ich = (Br ich, esigi(H(Br i )), \(\sigma\)r,1 ich), Br i = (r, PAY r i , SIGi(Qr−1), H(Br−1)), und ZAHLEN r i ist eine maximale Auszahlungsmenge aller Zahlungen, die ich bis zum Zeitpunkt \(\alpha\)r,1 gesehen habe ich . Schritt 2. Legen Sie willkürlich einen ehrlichen Verifizierer i \(\in\)HSV r,2 fest. Nach Lemma 5.5, wenn Spieler i fertig ist Warten zum Zeitpunkt \(\beta\)r,2 ich = \(\alpha\)r,2 ich + t2 hat er alle von Verifizierern in HSV r,1 gesendeten Nachrichten erhalten, einschließlich Herr,1 \(\ell\)r . Nach der Definition von \(\ell\)r gibt es in PKr−k keinen anderen Spieler, dessen Anmeldeinformationen hash sind. Wert ist kleiner als H(\(\sigma\)r,1 \(\ell\)r ). Natürlich kann der Gegner \(\ell\)r korrumpieren, nachdem er gesehen hat, dass H(\(\sigma\)r,1 \(\ell\)r ) ist sehr klein, aber zu diesem Zeitpunkt hat Spieler \(\ell\)r seinen kurzlebigen Schlüssel und die Nachricht mr,1 zerstört \(\ell\)r wurde propagiert. Daher setzt der Verifizierer seinen eigenen Anführer als Spieler \(\ell\)r. Dementsprechend zum Zeitpunkt \(\beta\)r,2 ich, Verifizierer propagiert mr,2 ich = (ESIGi(v′ i), \(\sigma\)r,2 i), wobei v′ i = H(Br \(\ell\)r). Wenn r = 0, der einzige Unterschied ist das \(\beta\)r,2 ich = t2 anstatt in einem Bereich zu liegen. Ähnliches lässt sich für zukünftige Schritte und uns sagen Ich werde sie nicht noch einmal betonen. Schritt 3. Legen Sie willkürlich einen ehrlichen Verifizierer i \(\in\)HSV r,3 fest. Nach Lemma 5.5, wenn Spieler i fertig ist Warten zum Zeitpunkt \(\beta\)r,3 ich = \(\alpha\)r,3 ich + t3 hat er alle von Verifizierern in HSV r,2 gesendeten Nachrichten erhalten. Aufgrund der Beziehungen zwischen den Parametern mit überwältigender Wahrscheinlichkeit |HSV r,2| > 2|MSV r,2|. Darüber hinaus würde kein ehrlicher Prüfer widersprüchliche Botschaften unterzeichnen, und zwar den Widersacher Die Unterschrift eines ehrlichen Prüfers kann nicht gefälscht werden, nachdem dieser seine Korrespondenz vernichtet hat vergänglicher geheimer Schlüssel. Somit stammen mehr als 2/3 aller gültigen (r, 2)-Nachrichten, die ich erhalten habe, von ehrliche Prüfer und der Form mr,2 j = (ESIGj(H(Br \(\ell\)r)), \(\sigma\)r,2 j ), ohne Widerspruch. Dementsprechend zum Zeitpunkt \(\beta\)r,3 ich Spieler, den ich mr,3 propagiere ich = (ESIGi(v′), \(\sigma\)r,3 i ), wobei v′ = H(Br \(\ell\)r).Schritt 4. Bestimmen Sie willkürlich einen ehrlichen Verifizierer i \(\in\)HSV r,4. Nach Lemma 5.5 hat Spieler i alles erhalten Nachrichten, die von Verifizierern in HSV r,3 gesendet werden, wenn er zum Zeitpunkt \(\beta\)r,4 mit dem Warten fertig ist ich = \(\alpha\)r,4 ich + t4. Ähnlich wie Schritt 3: Mehr als 2/3 aller gültigen (r, 3)-Nachrichten, die ich erhalten habe, stammen von ehrlichen Verifizierern und der Form mr,3 j = (ESIGj(H(Br \(\ell\)r)), \(\sigma\)r,3 j). Dementsprechend setzt Spieler i vi = H(Br \(\ell\)r), gi = 2 und bi = 0. Zum Zeitpunkt \(\beta\)r,4 ich = \(\alpha\)r,4 ich +t4 propagiert er Herr,4 ich = (ESIGi(0), ESIGi(H(Br \(\ell\)r)), \(\sigma\)r,4 ich). Schritt 5. Legen Sie willkürlich einen ehrlichen Verifizierer i \(\in\)HSV r,5 fest. Nach Lemma 5.5 hätte Spieler ich hat alle von den Verifizierern in HSV r,4 gesendeten Nachrichten erhalten, wenn er bis zum Zeitpunkt \(\alpha\)r,5 gewartet hat ich + t5. Beachten Sie das |HSV r,4| \(\geq\)tH.19 Beachten Sie außerdem, dass alle Prüfer in HSV r,4 für H(Br.) unterschrieben haben \(\ell\)r). Als |MSV r,4| < tH, es existiert kein v′ ̸= H(Br \(\ell\)r), die von tH hätte unterzeichnet werden können Verifizierer in SV r,4 (die notwendigerweise böswillig wären), sodass Spieler i nicht aufhört, bevor er es getan hat Ich habe die gültigen Nachrichten erhalten, Herr,4 j = (ESIGj(0), ESIGj(H(Br \(\ell\)r)), \(\sigma\)r,4 j). Sei T die Zeit, wann Letzteres geschieht. Einige dieser Nachrichten stammen möglicherweise von böswilligen Spielern, aber weil |MSV r,4| < tH, mindestens einer davon stammt von einem ehrlichen Prüfer im HSV r,4 und wird nach einiger Zeit gesendet T r + t4. Dementsprechend ist T \(\geq\)T r +t4 > T r +\(\lambda\)+Λ \(\geq\) \(\beta\)r,1 \(\ell\)r +Λ, und bis zur Zeit T hat Spieler i auch erhalten die Nachricht Herr,1 \(\ell\)r . Aufgrund der Konstruktion des Protokolls stoppt Spieler i zum Zeitpunkt \(\beta\)r,5 ich = T ohne irgendetwas verbreiten; setzt Br = Br \(\ell\)r; und setzt sein eigenes CERT r auf die Menge der (r, 4)-Nachrichten für 0 und H(Br \(\ell\)r), die er erhalten hat. Schritt s > 5. In ähnlicher Weise hätte ich für jeden Schritt s > 5 und jeden Verifizierer i \(\in\)HSV r,s den Spieler i alle von den Verifizierern in HSV r,4 gesendeten Nachrichten erhalten, wenn er bis zum Zeitpunkt \(\alpha\)r,s gewartet hat ich + ts. Durch die Dieselbe Analyse, Spieler i stoppt, ohne etwas zu verbreiten, und setzt Br = Br \(\ell\)r (und seine eigenen einstellen CERT r ordnungsgemäß). Natürlich dürfen die böswilligen Verifizierer nicht aufhören und sich willkürlich verbreiten Nachrichten, sondern weil |MSV r,s| < tH, durch Induktion konnte kein anderes v′ von den Verifizierern signiert werden in jedem Schritt 4 \(\leq\)s′ < s, die ehrlichen Verifizierer hören also nur auf, weil sie das Gültige erhalten haben (r, 4)-Nachrichten für 0 und H(Br \(\ell\)r). Rekonstruktion des Round-r-Blocks. Die Analyse von Schritt 5 gilt für eine generische Ehrlichkeit Benutzer i fast ohne Änderung. Tatsächlich beginnt Spieler i seine eigene Runde r im Intervall Ir und stoppt erst zu einem Zeitpunkt T, wenn er tH gültige (r, 4)-Nachrichten für H(Br.) erhalten hat \(\ell\)r). Wieder weil Mindestens eine dieser Nachrichten stammt von ehrlichen Prüfern und wird nach der Zeit T r + t4 gesendet, die Spieler i hat erhielt auch mr,1 \(\ell\)r durch die Zeit T. Somit setzt er Br = Br \(\ell\)r mit dem richtigen CERT r. Es bleibt nur noch zu zeigen, dass alle ehrlichen Benutzer ihre Runde r innerhalb des Zeitintervalls Ir+1 beenden. Durch die Analyse von Schritt 5 kennt jeder ehrliche Verifizierer i \(\in\)HSV r,5 Br am oder vor \(\alpha\)r,5 ich + t5 \(\leq\) T r + \(\lambda\) + t5 = T r + 8\(\lambda\) + Λ. Da T r+1 der Zeitpunkt ist, zu dem der erste ehrliche Benutzer ir Br kennt, haben wir T r+1 \(\leq\)T r + 8\(\lambda\) + Λ wie gewünscht. Darüber hinaus hat der Spieler, wenn er Br kennt, bereits dabei geholfen, die Nachrichten zu verbreiten sein CERT r. Beachten Sie, dass alle diese Nachrichten innerhalb der Zeit \(\lambda\) von allen ehrlichen Benutzern empfangen werden, auch wenn 19 Streng genommen geschieht dies mit sehr hoher Wahrscheinlichkeit, aber nicht unbedingt mit überwältigender Wahrscheinlichkeit. Allerdings ist dies Die Wahrscheinlichkeit wirkt sich geringfügig auf die Laufzeit des Protokolls aus, hat jedoch keinen Einfluss auf seine Richtigkeit. Wenn h = 80 %, dann |HSV r,4| \(\geq\)tH mit Wahrscheinlichkeit 1 −10−8. Wenn dieses Ereignis nicht eintritt, wird das Protokoll für ein anderes fortgesetzt 3 Schritte. Da die Wahrscheinlichkeit, dass dies nicht in zwei Schritten geschieht, vernachlässigbar ist, endet das Protokoll bei Schritt 8 Erwartungsgemäß beträgt die Anzahl der erforderlichen Schritte also fast 5.Spieler ir waren der erste Spieler, der sie propagierte. Darüber hinaus haben wir nach der obigen Analyse T r+1 \(\geq\)T r + t4 \(\geq\) \(\beta\)r,1 \(\ell\)r + Λ, also haben alle ehrlichen Benutzer mr,1 erhalten \(\ell\)r durch die Zeit T r+1 + \(\lambda\). Dementsprechend Alle ehrlichen Benutzer kennen Br im Zeitintervall Ir+1 = [T r+1, T r+1 + \(\lambda\)]. Schließlich gilt für r = 0 tatsächlich T 1 \(\leq\)t4 + \(\lambda\) = 6\(\lambda\) + Λ. Alles zusammen kombinieren, Es gilt Lemma 5.2. ■ 5.8 Das Soliditäts-Lemma Lemma 5.3. [Gesundheits-Lemma, angepasst] Unter der Annahme, dass die Eigenschaften 1–3 für Runde r −1 gelten, wenn Der Anführer \(\ell\) ist böswillig, mit überwältigender Wahrscheinlichkeit stimmen alle ehrlichen Benutzer dem gleichen Block zu Br, T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ und alle ehrlichen Benutzer kennen Br im Zeitintervall Ir+1. Nachweisen. Wir betrachten die beiden Teile des Protokolls, GC und BBA⋆, getrennt. GC. Nach der induktiven Hypothese und nach Lemma 5.5, für jeden Schritt s \(\in\){2, 3, 4} und jeden ehrlichen Verifizierer i \(\in\)HSV r,s, wenn Spieler i zum Zeitpunkt \(\beta\)r,s agiert ich = \(\alpha\)r,s ich + ts, er hat alle gesendeten Nachrichten erhalten von allen ehrlichen Prüfern in den Schritten s′ < s. Für Schritt 4 unterscheiden wir zwei mögliche Fälle. Fall 1. Kein Verifizierer i \(\in\)HSV r,4 setzt gi = 2. In diesem Fall gilt per Definition bi = 1 für alle Verifizierer i \(\in\)HSV r,4. Das heißt, sie beginnen mit einem Vereinbarung über 1 im binären BA-Protokoll. Sie haben möglicherweise keine Einigung über ihre Vis, aber das spielt keine Rolle, wie wir im binären BA sehen werden. Fall 2. Es gibt einen Verifizierer ˆi \(\in\)HSV r,4 mit gˆi = 2. In diesem Fall zeigen wir das (1) gi \(\geq\)1 für alle i \(\in\)HSV r,4, (2) Es gibt einen Wert v′ mit vi = v′ für alle i \(\in\)HSV r,4 und (3) Es existiert eine gültige Nachricht mr,1 \(\ell\) von einem Verifizierer \(\ell\) \(\in\)SV r,1 mit v′ = H(Br \(\ell\)). Da Spieler ˆi ehrlich ist und gˆi = 2 setzt, sind tatsächlich mehr als 2/3 aller gültigen Nachrichten mr,3 j er hat are für den gleichen Wert v′ ̸= \(\bot\) erhalten, und er hat vˆi = v′ gesetzt. Nach Eigenschaft (d) in Lemma 5.5 kann es für jeden anderen ehrlichen (r, 4)-Verifizierer i nicht mehr sein als 2/3 aller gültigen Nachrichten mr,3 j die i′ erhalten hat, sind für den gleichen Wert v′′ ̸= v′. Wenn i dementsprechend gi = 2 setzt, muss es sein, dass ich auch > 2/3 Mehrheit für v′ gesehen und gesetzt habe vi = v′, wie gewünscht. Betrachten Sie nun einen beliebigen Verifizierer i \(\in\)HSV r,4 mit gi < 2. Ähnlich wie bei der Analyse von Property (d) in Lemma 5.5, weil Spieler ˆi > 2/3 Mehrheit für v′ gesehen hat, mehr als 1 2|HSV r,3| ehrlich (r, 3)-Verifizierer haben v′ signiert. Weil ich alle Nachrichten von ehrlichen (r, 3)-Verifizierern von erhalten habe Zeit \(\beta\)r,4 ich = \(\alpha\)r,4 ich + t4, er hat insbesondere mehr als 1 erhalten 2|HSV r,3| Nachrichten von ihnen für v′. Weil |HSV r,3| > 2|MSV r,3|, i hat > ​​1/3 Mehrheit für v′ gesehen. Dementsprechend, Spieler i setzt gi = 1 und Eigenschaft (1) gilt. Setzt Spieler i unbedingt vi = v′? Angenommen, es gibt einen anderen Wert v′′ ̸= \(\bot\)so dass Spieler i hat auch > 1/3 Mehrheit für v'' gesehen. Einige dieser Nachrichten könnten von böswilligen Absendern stammen Prüfer, aber mindestens einer von ihnen stammt von einem ehrlichen Prüfer j \(\in\)HSV r,3: tatsächlich, weil |HSV r,3| > 2|MSV r,3| und ich habe alle Nachrichten von HSV r,3 erhalten, der Schadsoftware Verifizierer, von denen ich eine gültige (r, 3)-Nachricht erhalten habe, zählen < 1/3 aller gültigen Nachrichten, die er erhalten hat.Per Definition muss Spieler j > 2/3 Mehrheit für v'' unter allen gültigen (r, 2)-Nachrichten gesehen haben er hat erhalten. Wir haben jedoch bereits festgestellt, dass einige andere ehrliche (r, 3)-Verifizierer dies gesehen haben 2/3 Mehrheit für v′ (weil sie v′ unterzeichnet haben). Aufgrund der Eigenschaft (d) von Lemma 5.5 ist dies nicht möglich passieren und ein solcher Wert v'' existiert nicht. Somit muss Spieler i wie gewünscht vi = v′ gesetzt haben, und Eigenschaft (2) gilt. Angesichts der Tatsache, dass einige ehrliche (r, 3)-Prüfer eine Mehrheit von > 2/3 für v′ gesehen haben, sind einige (eigentlich) Mehr als die Hälfte der ehrlichen (r, 2)-Verifizierer haben für v′ unterschrieben und ihre Botschaften verbreitet. Durch die Konstruktion des Protokolls müssen diese ehrlichen (r, 2)-Verifizierer eine gültige Gültigkeit erhalten haben Nachricht an Herrn,1 \(\ell\) von irgendeinem Spieler \(\ell\) \(\in\)SV r,1 mit v′ = H(Br \(\ell\)), daher gilt Eigenschaft (3). BBA⋆. Wir unterscheiden wieder zwei Fälle. Fall 1. Alle Verifizierer i \(\in\)HSV r,4 haben bi = 1. Dies geschieht nach Fall 1 von GC. Als |MSV r,4| < tH, in diesem Fall kein Prüfer im SV r,5 könnte die gültigen (r, 4)-Nachrichten für Bit 0 sammeln oder generieren. Daher kein ehrlicher Verifizierer im HSV r,5 würde aufhören, weil er einen nicht leeren Block Br kennt. Darüber hinaus erfüllt s′ = 5 nicht, obwohl es mindestens tH gültige (r, 4)-Nachrichten für Bit 1 gibt s′ −2 ≡1 mod 3, daher würde kein ehrlicher Verifizierer im HSV r,5 aufhören, weil er Br = Br weiß ǫ. Stattdessen agiert jeder Prüfer i \(\in\)HSV r,5 zum Zeitpunkt \(\beta\)r,5 ich = \(\alpha\)r,5 ich + t5, bis er alles erhalten hat Von HSV r,4 gesendete Nachrichten gemäß Lemma 5.5. Somit hat Spieler, den ich gesehen habe, > 2/3 Mehrheit für 1 und setzt bi = 1. In Schritt 6, der ein Coin-Fixed-To-1-Schritt ist, erfüllt dort s′ −2 ≡0 mod 3, obwohl s′ = 5 Es existieren keine gültigen (r, 4)-Nachrichten für Bit 0, daher würde kein Verifizierer im HSV r,6 anhalten, weil er kennt einen nicht leeren Block Br. Mit s′ = 6 ist jedoch s′ −2 ≡1 mod 3 und es existiert |HSV r,5| \(\geq\)tH gültige (r, 5)-Nachrichten für Bit 1 von HSV r,5. Für jeden Verifizierer i \(\in\)HSV r,6, gemäß Lemma 5.5, zum oder vor dem Zeitpunkt \(\alpha\)r,6 ich + t6 Spieler i hat alle Nachrichten von HSV r,5 erhalten, daher stoppt i, ohne etwas weiterzugeben, und setzt Br = Br ǫ. Sein CERT r ist die Menge der gültigen (r, 5)-Nachrichten mr,5 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 j) von ihm empfangen, wenn er anhält. Lassen Sie den Spieler als Nächstes entweder ein ehrlicher Prüfer in einem Schritt s > 6 oder ein allgemeiner ehrlicher Benutzer sein (d. h. Nichtprüfer). Ähnlich wie beim Beweis von Lemma 5.2 setzt Spieler i Br = Br ǫ und legt sein eigenes fest CERT r soll die Menge der gültigen (r, 5)-Nachrichten mr,5 sein j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 j ) er hat erhalten. Schließlich, ähnlich wie in Lemma 5.2, T r+1 \(\leq\) min i\(\in\)HSV r,6 \(\alpha\)r,6 ich + t6 \(\leq\)T r + \(\lambda\) + t6 = T r + 10\(\lambda\) + Λ, und alle ehrlichen Benutzer kennen Br im Zeitintervall Ir+1, denn der erste ehrliche Benutzer ist wer weiß, dass Br dabei geholfen hat, die (r, 5)-Nachrichten in seinem CERT r zu verbreiten. Fall 2. Es existiert ein Verifizierer ˆi \(\in\)HSV r,4 mit bˆi = 0. Dies geschieht im Anschluss an Fall 2 von GC und ist der komplexere Fall. Durch die Analyse von GC, in diesem Fall liegt eine gültige Nachricht mr,1 vor \(\ell\) so dass vi = H(Br \(\ell\)) für alle i \(\in\)HSV r,4. Hinweis dass die Prüfer im HSV r,4 möglicherweise keine Einigung über ihre Bi’s haben. Für jeden Schritt s \(\in\){5, . . . , m + 3} und Verifier i \(\in\)HSV r,s, nach Lemma 5.5 Spieler hätte ich hat alle von allen ehrlichen Verifizierern in HSV r,4 \(\cup\) \(\cdots\) \(\cup\)HSV r,s−1 gesendeten Nachrichten erhalten, wenn er gewartet hat für die Zeit ts.Wir betrachten nun das folgende Ereignis E: Es gibt einen Schritt s∗\(\geq\)5, so dass zum ersten Mal Zeit in der binären BA sollte ein Spieler i∗\(\in\)SV r,s∗ (egal ob böswillig oder ehrlich) aufhören ohne etwas zu verbreiten. Wir verwenden „sollte aufhören“, um die Tatsache hervorzuheben, dass, wenn Spieler i∗ böswillig ist, dann darf er so tun, als ob er nicht protokollarisch aufhören dürfe und Botschaften nach Wahl des Gegners verbreiten. Darüber hinaus auch durch die Konstruktion des Protokolls (E.a) i∗ist in der Lage, mindestens die gültigen Nachrichten mr,s′−1 zu sammeln oder zu generieren j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ) für dasselbe v und s′, mit 5 \(\leq\)s′ \(\leq\)s∗und s′ −2 ≡0 mod 3; oder (E.b) i∗ist in der Lage, mindestens die gültigen Nachrichten mr,s′−1 zu sammeln oder zu generieren j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ) für dasselbe s′, mit 6 \(\leq\)s′ \(\leq\)s∗und s′ −2 ≡1 mod 3. Denn die ehrlichen (r, s′ −1)-Nachrichten werden von allen ehrlichen (r, s′)-Verifizierern vor ihnen empfangen sind mit dem Warten in Schritt s′ fertig, und weil der Gegner alles spätestens am erhält Ehrliche Benutzer, ohne Beschränkung der Allgemeinheit gilt s′ = s∗und Spieler i∗ ist bösartig. Beachten Sie das wir brauchten nicht, dass der Wert v in E.a der hash eines gültigen Blocks ist: wie noch deutlich wird in der Analyse ist v = H(Br \(\ell\)) in diesem Unterereignis. Im Folgenden analysieren wir zunächst Fall 2 nach Ereignis E und zeigen dann, dass der Wert von s∗ im Wesentlichen ist entsprechend auf Lr verteilt (also geschieht Ereignis E vor Schritt m + 3 mit Überwältigung). Wahrscheinlichkeit angesichts der Beziehungen für Parameter). Zunächst gilt für jeden Schritt 5 \(\leq\)s < s∗: Jeder ehrliche Verifizierer i \(\in\)HSV r,s hat die Zeit ts abgewartet und vi als Mehrheitsvotum der gesetzt gültige (r, s−1)-Nachrichten, die er erhalten hat. Seit Spieler i habe ich alle ehrlichen (r, s−1)-Nachrichten erhalten nach Lemma 5.5, da alle ehrlichen Verifizierer in HSV r,4 H(Br.) unterzeichnet haben \(\ell\)) folgenden Fall 2 von GC, und da |HSV r,s−1| > 2|MSV r,s−1| für jedes s haben wir per Induktion diesen Spieler i eingestellt hat vi = H(Br \(\ell\)). Das Gleiche gilt für jeden ehrlichen Verifizierer i \(\in\)HSV r,s∗, der nicht aufhört, ohne zu propagieren irgendetwas. Nun betrachten wir Schritt s∗ und unterscheiden vier Unterfälle. Fall 2.1.a. Das Ereignis E.a tritt ein und es gibt einen ehrlichen Verifizierer i′ \(\in\)HSV r,s∗, der das tun sollte auch aufhören, ohne etwas zu verbreiten. In diesem Fall gilt s∗−2 ≡0 mod 3 und Schritt s∗ ist ein Coin-Fixed-To-0-Schritt. Von Definition: Spieler i′ hat mindestens tH gültige (r, s∗−1)-Nachrichten der Form erhalten (ESIGj(0), ESIGj(v), \(\sigma\)r,s∗−1 j ). Da alle Verifizierer in HSV r,s∗−1 H(Br.) signiert haben \(\ell\)) und |MSV r,s∗−1| < tH, wir haben v = H(Br \(\ell\)). Da mindestens tH −|MSV r,s∗−1| \(\geq\)1 der von i′ empfangenen (r, s∗−1)-Nachrichten für 0 und v werden von Verifizierern in HSV r,s∗−1 nach der Zeit T r +ts∗−1 \(\geq\)T r +t4 \(\geq\)T r +\(\lambda\)+Λ \(\geq\) \(\beta\)r,1 gesendet \(\ell\) +Λ, Spieler i′ hat mr,1 erhalten \(\ell\) bis er diese (r, s∗−1)-Nachrichten erhält. Also Spieler i′ bleibt stehen, ohne etwas zu verbreiten; setzt Br = Br \(\ell\); und setzt sein eigenes CERT r auf das Menge gültiger (r, s∗−1)-Nachrichten für 0 und v, die er empfangen hat. Als nächstes zeigen wir, dass jeder andere Verifizierer i \(\in\)HSV r,s∗ entweder mit Br = Br gestoppt hat \(\ell\), oder hat bi = 0 gesetzt und propagiert (ESIGi(0), ESIGi(H(Br \(\ell\))), \(\sigma\)r,s ich). In der Tat, weil Schritt s∗ Es ist das erste Mal, dass ein Verifizierer anhält, ohne etwas zu verbreiten, aber das ist nicht der Fall Es gibt einen Schritt s′ < s∗mit s′ −2 ≡1 mod 3, sodass tH (r, s′ −1)-Verifizierer das Vorzeichen 1 haben. Dementsprechend stoppt kein Verifizierer im HSV r,s∗mit Br = Br ǫ.Darüber hinaus gilt, dass alle ehrlichen Prüfer in den Schritten {4, 5, . . . , s∗−1} haben das Vorzeichen H(Br \(\ell\)) gibt es Es gibt keinen Schritt s′ \(\leq\)s∗mit s′ −2 ≡0 mod 3, sodass tH (r, s′ −1)-Verifizierer vorzeichenbehaftet sind einige v′′ ̸= H(Br \(\ell\)) – tatsächlich |MSV r,s′−1| < tH. Dementsprechend stoppt kein Verifizierer im HSV r,s∗ mit Br ̸= Br ǫ und Br ̸= Br \(\ell\). Das heißt, wenn ein Spieler i \(\in\)HSV r,s∗ ohne angehalten hat Wenn er etwas propagiert, muss er Br = Br gesetzt haben \(\ell\). Wenn ein Spieler i \(\in\)HSV r,s∗die Zeit ts∗abgewartet und zur Zeit eine Nachricht verbreitet hat \(\beta\)r,s∗ ich = \(\alpha\)r,s∗ ich + ts∗, er hat alle Nachrichten vom HSV r,s∗−1 erhalten, darunter mindestens tH −|MSV r,s∗−1| davon für 0 und v. Wenn ich > 2/3 Mehrheit für 1 gesehen habe, dann er hat mehr als 2(tH −|MSV r,s∗−1|) gültige (r, s∗−1)-Nachrichten für 1 gesehen, mit mehr als 2tH −3|MSV r,s∗−1| davon von ehrlichen (r, s∗−1)-Verifizierern. Dies impliziert jedoch |HSV r,s∗−1| \(\geq\)tH−|MSV r,s∗−1|+2tH−3|MSV r,s∗−1| > 2n−4|MSV r,s∗−1|, widersprüchlich die Tatsache, dass |HSV r,s∗−1| + 4|MSV r,s∗−1| < 2n, was sich aus den Beziehungen für die Parameter ergibt. Dementsprechend sehe ich nicht > 2/3 Mehrheit für 1, und er setzt bi = 0, weil Schritt s∗ ein Coin-Fixed-To-0-Schritt ist. So wie wir es getan haben gesehen, vi = H(Br \(\ell\)). Somit propagiert i (ESIGi(0), ESIGi(H(Br \(\ell\))), \(\sigma\)r,s i ) wie wir es wollten zeigen. Für Schritt s∗+ 1, da Spieler i′ dabei geholfen hat, die Nachrichten in seinem CERT r zu verbreiten am oder vor der Zeit \(\alpha\)r,s∗ ich‘ + ts∗, alle ehrlichen Prüfer im HSV r,s∗+1 haben mindestens erhalten tH gültige (r, s∗−1)-Nachrichten für Bit 0 und Wert H(Br \(\ell\)) am oder bevor sie fertig sind warten. Darüber hinaus werden Verifizierer in HSV r,s∗+1 nicht aufhören, bevor sie diese (r, s∗−1)- erhalten. Nachrichten, da keine anderen gültigen (r, s′ −1)-Nachrichten für Bit 1 mit existieren s′ −2 ≡1 mod 3 und 6 \(\leq\)s′ \(\leq\)s∗+ 1, nach der Definition von Schritt s∗. Insbesondere Step s∗+ 1 selbst ist ein Coin-Fixed-To-1-Schritt, aber kein ehrlicher Verifizierer im HSV r,s∗hat sich verbreitet eine Nachricht für 1 und |MSV r,s∗| < tH. Somit stoppen alle ehrlichen Verifizierer im HSV r,s∗+1, ohne etwas zu propagieren, und setzen Br = Br \(\ell\): wie zuvor haben sie mr,1 erhalten \(\ell\) bevor sie die gewünschten (r, s∗−1)-Nachrichten erhalten.20 Das Gleiche gilt für alle ehrlichen Prüfer in zukünftigen Schritten und alle ehrlichen Benutzer im Allgemeinen. Insbesondere wissen sie alle, dass Br = Br ist \(\ell\)innerhalb des Zeitintervalls Ir+1 und T r+1 \(\leq\) \(\alpha\)r,s∗ ich‘ + ts∗\(\leq\)T r + \(\lambda\) + ts∗. Fall 2.1.b. Das Ereignis E.b tritt ein und es gibt einen ehrlichen Verifizierer i′ \(\in\)HSV r,s∗, der das tun sollte auch aufhören, ohne etwas zu verbreiten. In diesem Fall haben wir s∗−2 ≡1 mod 3 und Schritt s∗ ist ein Coin-Fixed-To-1-Schritt. Die Analyse ähnelt Fall 2.1.a und viele Details wurden weggelassen. 20Wenn er böswillig ist, könnte er Herrn1 aussenden \(\ell\) zu spät, in der Hoffnung, dass einige ehrliche Benutzer/Prüfer mr,1 nicht erhalten haben \(\ell\) noch wenn sie dafür das gewünschte Zertifikat erhalten. Da der Verifizierer ˆi \(\in\)HSV r,4 jedoch bˆi = 0 und vˆi = H(Br \(\ell\)), wie bevor wir wissen, dass mehr als die Hälfte der ehrlichen Verifizierer i \(\in\)HSV r,3 vi = H(Br \(\ell\)). Dies impliziert noch mehr mehr als die Hälfte der ehrlichen Verifizierer i \(\in\)HSV r,2 haben vi = H(Br \(\ell\)), und diese (r, 2)-Verifizierer haben alle mr,1 erhalten \(\ell\). Als die Der Gegner kann einen Verifizierer nicht von einem Nichtverifizierer unterscheiden, er kann die Ausbreitung von mr,1 nicht ins Visier nehmen \(\ell\) zu (r, 2)-Verifizierern ohne dass die Nichtprüfer es sehen. Tatsächlich ist mit hoher Wahrscheinlichkeit mehr als die Hälfte (oder ein guter konstanter Bruchteil) aller ehrlichen Benutzer haben mr,1 gesehen \(\ell\) nachdem sie vom Beginn ihrer eigenen Runde r an auf t2 gewartet haben. Von hier an ist die Zeit \(\lambda\)′, die für mr,1 benötigt wird \(\ell\) um die verbleibenden ehrlichen Benutzer zu erreichen, ist viel kleiner als Λ, und der Einfachheit halber tun wir dies nicht Schreiben Sie es in der Analyse auf. Wenn 4\(\lambda\) \(\geq\) \(\lambda\)′, dann wird die Analyse ohne jegliche Änderung durchgeführt: am Ende von Schritt 4 alle Ehrliche Benutzer hätten mr,1 erhalten \(\ell\). Wenn die Größe des Blocks enorm wird und 4\(\lambda\) < \(\lambda\)′, dann in den Schritten 3 und 4: Das Protokoll könnte jeden Prüfer auffordern, auf \(\lambda\)′/2 statt auf 2\(\lambda\) zu warten, und die Analyse bleibt bestehen.Wie zuvor muss Spieler i′ mindestens tH gültige (r, s∗−1)-Nachrichten der Form erhalten haben (ESIGj(1), ESIGj(vj), \(\sigma\)r,s∗−1 j ). Auch hier gibt es aufgrund der Definition von s∗ keine Stufe 5 \(\leq\)s′ < s∗mit s′ −2 ≡0 mod 3, wobei mindestens tH (r, s′ −1)-Verifizierer 0 vorzeichenbehaftet haben und das gleiche v. Somit stoppt Spieler i′, ohne etwas zu propagieren; setzt Br = Br ǫ; und Sets sein eigenes CERT r sei die Menge der gültigen (r, s∗−1)-Nachrichten für Bit 1, die er empfangen hat. Darüber hinaus hat jeder andere Verifizierer i \(\in\)HSV r,s∗ entweder mit Br = Br aufgehört ǫ , oder hat bi = gesetzt 1 und propagiert (ESIGi(1), ESIGi(vi), \(\sigma\)r,s∗ ich ). Seit Spieler i′ bei der Verbreitung mitgeholfen hat die (r, s∗−1)-Nachrichten in seinem CERT r nach Zeit \(\alpha\)r,s∗ ich‘ + ts∗, wieder alle ehrlichen Prüfer drin HSV r,s∗+1 stoppt, ohne etwas zu propagieren, und setzt Br = Br ǫ . Ebenso alles ehrlich Benutzer wissen, dass Br = Br ist ǫ innerhalb des Zeitintervalls Ir+1 und T r+1 \(\leq\) \(\alpha\)r,s∗ ich‘ + ts∗\(\leq\)T r + \(\lambda\) + ts∗. Fall 2.2.a. Das Ereignis E.a tritt ein und es gibt keinen ehrlichen Verifizierer i′ \(\in\)HSV r,s∗who sollte auch aufhören, ohne etwas zu verbreiten. Beachten Sie in diesem Fall, dass Spieler i∗ über ein gültiges CERT r verfügen könnte i∗bestehend aus dem gewünschten tH (r, s∗−1)-Nachrichten, die der Gegner sammeln oder generieren kann. Allerdings ist das böswillig Prüfer helfen möglicherweise nicht dabei, diese Botschaften zu verbreiten, daher können wir nicht zu dem Schluss kommen, dass dies ehrlich ist Benutzer erhalten sie rechtzeitig \(\lambda\). Tatsächlich ist |MSV r,s∗−1| dieser Nachrichten stammen möglicherweise von böswillige (r, s∗−1)-Verifizierer, die ihre Nachrichten überhaupt nicht verbreiteten, sondern nur verschickten sie an die böswilligen Verifizierer in Schritt s∗ weiter. Ähnlich wie in Fall 2.1.a gilt hier s∗−2 ≡0 mod 3, Schritt s∗ist ein Coin-Fixed-To-0-Schritt, und die (r, s∗−1)-Nachrichten in CERT r i∗are für Bit 0 und v = H(Br \(\ell\)). In der Tat, alles ehrlich (r, s∗−1)-Verifizierer signieren v, daher kann der Gegner keine gültigen (r, s∗−1)-Nachrichten generieren für ein anderes v′. Darüber hinaus haben alle ehrlichen (r, s∗)-Verifizierer die Zeit ts∗ abgewartet und sehen keine > 2/3 Mehrheit für Bit 1, wiederum weil |HSV r,s∗−1| + 4|MSV r,s∗−1| < 2n. Also jeder ehrliche Prüfer i \(\in\)HSV r,s∗sets bi = 0, vi = H(Br \(\ell\)) mit Stimmenmehrheit und propagiert mr,s∗ ich = (ESIGi(0), ESIGi(H(Br \(\ell\))), \(\sigma\)r,s∗ ich ) zum Zeitpunkt \(\alpha\)r,s∗ ich + ts∗. Betrachten Sie nun die ehrlichen Verifizierer in Schritt s∗+ 1 (was ein Coin-Fixed-To-1-Schritt ist). Wenn die Der Gegner sendet die Nachrichten tatsächlich in CERT r i∗zu einigen von ihnen und veranlasst sie dazu Stopp, dann ähnlich wie in Fall 2.1.a, alle ehrlichen Benutzer wissen Br = Br \(\ell\)innerhalb des Zeitintervalls Ir+1 und T r+1 \(\leq\)T r + \(\lambda\) + ts∗+1. Ansonsten haben alle ehrlichen Verifizierer in Schritt s∗+1 alle (r, s∗)-Nachrichten für 0 und erhalten H(Br \(\ell\)) aus HSV r,s∗nach Wartezeit ts∗+1, was zu > 2/3 Mehrheit führt, weil |HSV r,s∗| > 2|MSV r,s∗|. Somit verbreiten alle Verifizierer im HSV r,s∗+1 ihre Nachrichten für 0 und H(Br \(\ell\)) entsprechend. Beachten Sie, dass die Verifizierer in HSV r,s∗+1 nicht mit Br = Br aufhören \(\ell\), weil Schritt s∗+ 1 kein Coin-Fixed-To-0-Schritt ist. Betrachten Sie nun die ehrlichen Verifizierer in Schritt s∗+2 (bei dem es sich um einen Coin-Echt-Flipped-Schritt handelt). Wenn der Gegner die Nachrichten in CERT r sendet i∗zu einigen von ihnen und bringt sie zum Anhalten, Andererseits wissen alle ehrlichen Benutzer, dass Br = Br ist \(\ell\)innerhalb des Zeitintervalls Ir+1 und T r+1 \(\leq\)T r + \(\lambda\) + ts∗+2.Ansonsten haben alle ehrlichen Prüfer in Schritt s∗+ 2 alle (r, s∗+ 1)-Nachrichten für erhalten 0 und H(Br \(\ell\)) aus HSV r,s∗+1 nach Wartezeit ts∗+2, was zu > 2/3 Mehrheit führt. Somit verbreiten sie alle ihre Botschaften für 0 und H(Br \(\ell\)) dementsprechend: das tun sie in diesem Fall nicht „eine Münze werfen“. Beachten Sie erneut, dass sie nicht aufhören, ohne sich zu verbreiten. weil Schritt s∗+ 2 kein Coin-Fixed-To-0-Schritt ist. Schließlich für die ehrlichen Verifizierer in Schritt s∗+3 (was ein weiterer Coin-Fixed-To-0-Schritt ist): alle von ihnen hätten mindestens die gültigen Nachrichten für 0 und H(Br.) erhalten \(\ell\)) aus HSV s∗+2, wenn sie wirklich die Zeit ts∗+3 warten. Also, ob der Gegner die Nachrichten sendet oder nicht in CERT r i∗zu jedem von ihnen stoppen alle Verifizierer in HSV r,s∗+3 mit Br = Br \(\ell\), ohne irgendetwas verbreiten. Abhängig davon, wie sich der Gegner verhält, kann es sein, dass einige von ihnen dies tun ihr eigenes CERT r bestehend aus diesen (r, s∗−1)-Nachrichten in CERT r i∗, und die anderen haben ihr eigenes CERT r bestehend aus diesen (r, s∗+ 2)-Nachrichten. Auf jeden Fall alle ehrlichen Nutzer weiß Br = Br \(\ell\)innerhalb des Zeitintervalls Ir+1 und T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3. Fall 2.2.b. Ereignis E.b tritt ein und es gibt keinen ehrlichen Verifizierer i′ \(\in\)HSV r,s∗who sollte auch aufhören, ohne etwas zu verbreiten. Die Analyse in diesem Fall ähnelt der in Fall 2.1.b und Fall 2.2.a, daher viele Details wurden weggelassen. Insbesondere CERT r i∗besteht aus den tH gewünschten (r, s∗−1)-Nachrichten für Bit 1, das der Gegner sammeln oder erzeugen kann, s∗−2 ≡1 mod 3, Schritt s∗ist a Coin-Fixed-To-1-Schritt, und kein ehrlicher (r, s∗)-Verifizierer hätte > 2/3 Mehrheit für 0 sehen können. Somit setzt jeder Verifizierer i \(\in\)HSV r,s∗ bi = 1 und propagiert mr,s∗ ich = (ESIGi(1), ESIGi(vi), \(\sigma\)r,s∗ ich ) zum Zeitpunkt \(\alpha\)r,s∗ ich + ts∗. Ähnlich wie in Fall 2.2.a, in höchstens 3 weiteren Schritten (d. h. dem Protokoll erreicht Schritt s∗+3, was ein weiterer Coin-Fixed-To-1-Schritt ist), wissen alle ehrlichen Benutzer, dass Br = Br ist ǫ innerhalb des Zeitintervalls Ir+1. Darüber hinaus kann T r+1 \(\leq\)T r+\(\lambda\)+ts∗+1 oder \(\leq\)T r+\(\lambda\)+ts∗+2 sein, oder \(\leq\)T r + \(\lambda\) + ts∗+3, je nachdem, wann ein ehrlicher Prüfer zum ersten Mal in der Lage ist, aufzuhören ohne sich zu verbreiten. Durch die Kombination der vier Unterfälle haben wir festgestellt, dass alle ehrlichen Benutzer Br innerhalb des Zeitintervalls kennen Ir+1, mit T r+1 \(\leq\)T r + \(\lambda\) + ts∗in den Fällen 2.1.a und 2.1.b, und T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 in den Fällen 2.2.a und 2.2.b. Es bleibt die Obergrenze von s∗ und damit T r+1 für Fall 2, und wir tun dies, indem wir überlegen, wie Oftmals werden die Coin-Genuinely-Flipped-Schritte tatsächlich im Protokoll ausgeführt: das heißt, Einige ehrliche Prüfer haben tatsächlich eine Münze geworfen. Legen Sie insbesondere willkürlich einen Coin-Echt-umgedrehten Schritt s′ fest (d. h. 7 \(\leq\) s′ \(\leq\) m + 2 und s′ −2 ≡2 mod 3) und sei \(\ell\)′ \(\triangleq\)arg minj\(\in\)SV r,s′−1 H(\(\sigma\)r,s′−1 j ). Nehmen wir zunächst an, dass s′ < s∗, denn sonst wirft kein ehrlicher Verifizierer in Schritt s′ tatsächlich eine Münze, heißt es weiter oben Diskussionen. Nach der Definition von SV r,s′−1 ist der hash-Wert des Berechtigungsnachweises von \(\ell\)′ auch der kleinste unter ihnen alle Benutzer in PKr−k. Da es sich bei der Funktion hash um eine zufällige Funktion oracle handelt, ist Spieler \(\ell\)′ im Idealfall ehrlich Wahrscheinlichkeit mindestens h. Wie wir später zeigen werden, auch wenn der Gegner sein Bestes versucht, das vorherzusagen Ausgabe des Zufalls oracle und Neigung der Wahrscheinlichkeit, Spieler \(\ell\)′ ist immer noch ehrlich mit der Wahrscheinlichkeitmindestens ph = h2(1 + h −h2). Im Folgenden betrachten wir den Fall, in dem dies tatsächlich geschieht: Das heißt, \(\ell\)′ \(\in\)HSV r,s′−1. Beachten Sie, dass jeder ehrliche Verifizierer i \(\in\)HSV r,s′ alle Nachrichten von HSV r,s′−1 bis erhalten hat Zeit \(\alpha\)r,s′ ich + ts′. Wenn Spieler i eine Münze werfen muss (d. h. er hat nicht mehr als 2/3 Mehrheit dafür gesehen). das gleiche Bit b \(\in\){0, 1}), dann setzt er bi = lsb(H(\(\sigma\)r,s′−1 \(\ell\)′ )). Wenn es einen anderen Ehrlichen gibt Verifizierer i′ \(\in\)HSV r,s′, der > 2/3 Mehrheit für ein Bit b \(\in\){0, 1} gesehen hat, dann durch Eigenschaft (d) von Lemma 5.5 hätte kein ehrlicher Verifizierer im HSV r,s′ eine Zeit lang eine Mehrheit von > 2/3 gesehen b′ ̸= b. Da lsb(H(\(\sigma\)r,s′−1 \(\ell\)′ )) = b mit Wahrscheinlichkeit 1/2, alle ehrlichen Prüfer im HSV r,s′ erreichen eine Übereinstimmung über b mit Wahrscheinlichkeit 1/2. Wenn ein solcher Verifizierer i′ nicht existiert, dann natürlich alle Ehrliche Verifizierer in HSV r,s′ sind sich über das Bit lsb(H(\(\sigma\)r,s′−1) einig \(\ell\)′ )) mit Wahrscheinlichkeit 1. Wenn wir die Wahrscheinlichkeit für \(\ell\)′ \(\in\)HSV r,s′−1 kombinieren, erhalten wir, dass die ehrlichen Verifizierer in HSV r,s′ eine Einigung über ein Bit b \(\in\){0, 1} mit einer Wahrscheinlichkeit von mindestens ph erzielen 2 = h2(1+h−h2) 2 . Darüber hinaus durch Induktion auf der Mehrheitsabstimmung wie zuvor haben alle ehrlichen Verifizierer im HSV r,s′ ihre vi’s festgelegt sein H(Br \(\ell\)). Sobald also in Schritt s′ eine Einigung über b erzielt wird, ist T r+1 entweder \(\leq\)T r + \(\lambda\) + ts′+1 oder \(\leq\)T r + \(\lambda\) + ts′+2, abhängig davon, ob b = 0 oder b = 1, entsprechend der Analyse der Fälle 2.1.a und 2.1.b. In Insbesondere wird kein weiterer Coin-Genuinely-Flipped-Schritt ausgeführt: das heißt, die Verifizierer in Solche Schritte überprüfen immer noch, ob sie die Verifizierer sind, und warten daher, aber ohne sie werden sie alle aufhören irgendetwas verbreiten. Dementsprechend wird vor Schritt s∗ die Anzahl der Ausführungen der Coin-GenuinelyFlipped-Schritte entsprechend der Zufallsvariablen Lr verteilt. Schritt s′ vermieten laut Lr der letzte Coin-Echt-Flipped-Schritt bei der Konstruktion des Protokolls sein wir haben s′ = 4 + 3Lr. Wann sollte der Gegner den Schritt durchführen, wenn er T r+1 so lange verzögern möchte möglich? Wir können sogar davon ausgehen, dass der Gegner die Verwirklichung von Lr im Voraus kennt. Wenn s∗> s′, dann ist es nutzlos, weil sich die ehrlichen Prüfer bereits geeinigt haben Schritt s′. Natürlich wäre s∗ in diesem Fall s′ +1 oder s′ +2, wiederum abhängig davon, ob b = 0 oder b = 1. Dies trifft jedoch tatsächlich auf die Fälle 2.1.a und 2.1.b zu, und das resultierende T r+1 ist genau das das Gleiche wie in diesem Fall. Genauer gesagt, T r+1 \(\leq\)T r + \(\lambda\) + ts∗\(\leq\)T r + \(\lambda\) + ts′+2. Wenn s∗< s′ −3 – das heißt, s∗ liegt vor dem vorletzten Coin-Echt-Flipped-Schritt – dann durch die Analyse der Fälle 2.2.a und 2.2.b, T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 < T r + \(\lambda\) + ts′. Das heißt, der Gegner sorgt tatsächlich dafür, dass die Vereinbarung über Br schneller zustande kommt. Wenn s∗= s′ −2 oder s′ −1 – also der Coin-Fixed-To-0-Schritt oder der Coin-Fixed-To-1-Schritt unmittelbar vor Schritt s′ – dann durch die Analyse der vier Unterfälle die ehrlichen Prüfer in Schritte s′ können keine Münzen mehr werfen, weil sie entweder angehalten haben, ohne sich fortzupflanzen, oder > 2/3 Mehrheit für das gleiche Bit gesehen haben b. Deshalb haben wir T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 \(\leq\)T r + \(\lambda\) + ts′+2.Zusammenfassend lässt sich sagen, dass wir, egal was s∗ ist, haben T r+1 \(\leq\)T r + \(\lambda\) + ts′+2 = T r + \(\lambda\) + t3Lr+6 = T r + \(\lambda\) + (2(3Lr + 6) −3)\(\lambda\) + Λ = T r + (6Lr + 10)\(\lambda\) + Λ, wie wir zeigen wollten. Der schlimmste Fall ist, wenn s∗= s′ −1 und Fall 2.2.b eintritt. Durch die Kombination der Fälle 1 und 2 des binären BA-Protokolls gilt Lemma 5.3. ■ 5.9 Sicherheit des Seed Qr und Wahrscheinlichkeit eines ehrlichen Führers Es bleibt Lemma 5.4 zu beweisen. Denken Sie daran, dass die Verifizierer in Runde r aus PKr−k und stammen werden entsprechend der Größe Qr−1 gewählt. Der Grund für die Einführung des Lookback-Parameters k Ziel ist es, sicherzustellen, dass der Gegner in der Runde r −k in der Lage ist, neue böswillige Benutzer hinzuzufügen zu PKr−k kann er die Größe Qr−1 nur mit vernachlässigbarer Wahrscheinlichkeit vorhersagen. Beachten Sie, dass die Die Funktion hash ist eine zufällige Funktion oracle und Qr−1 ist eine ihrer Eingaben bei der Auswahl von Verifizierern für Runde r. Unabhängig davon, wie böswillig Benutzer zu PKr-k hinzugefügt werden, gilt dies aus Sicht des Gegners für jeden Einer von ihnen wird immer noch als Verifizierer in einem Schritt der Runde r mit der erforderlichen Wahrscheinlichkeit p (oder) ausgewählt p1 für Schritt 1). Genauer gesagt haben wir das folgende Lemma. Lemma 5.6. Mit k = O(log1/2 F), für jede Runde r, mit überwältigender Wahrscheinlichkeit der Gegner hat Qr−1 in der Runde r −k nicht an den Zufallsgenerator oracle abgefragt. Nachweisen. Wir gehen per Induktion vor. Nehmen Sie an, dass der Gegner für jede Runde \(\gamma\) < r keine Abfrage durchgeführt hat Q\(\gamma\)−1 zum zufälligen oracle zurück in Runde \(\gamma\) −k.21 Betrachten Sie das folgende mentale Spiel, das von gespielt wird der Gegner in Runde r −k, der versucht, Qr−1 vorherzusagen. In Schritt 1 jeder Runde \(\gamma\) = r −k, . . . , r −1, gegeben ein spezifisches Q\(\gamma\)−1, das nicht an den Zufallsgenerator abgefragt wird oracle, indem die Spieler i \(\in\)PK\(\gamma\)−k gemäß den hash Werten H(SIGi(\(\gamma\), 1, Q\(\gamma\)−1)) geordnet werden zunehmend erhalten wir eine zufällige Permutation über PK\(\gamma\)−k. Per Definition ist der Anführer \(\ell\) \(\gamma\) der erster Benutzer in der Permutation und ist ehrlich mit der Wahrscheinlichkeit h. Darüber hinaus, wenn PK\(\gamma\)−k groß ist Genug, für jede ganze Zahl x \(\geq\) 1, die Wahrscheinlichkeit, dass die ersten x Benutzer in der Permutation alle sind bösartig, aber der (x + 1)st ist ehrlich, ist (1 −h)xh. Wenn \(\ell\) \(\gamma\) ehrlich ist, dann ist Q\(\gamma\) = H(SIG\(\ell\) \(\gamma\)(Q\(\gamma\)−1), \(\gamma\)). Da der Gegner die Signatur nicht fälschen kann von \(\ell\) \(\gamma\) ist Q\(\gamma\) aus der Sicht des Gegners gleichmäßig und zufällig verteilt und, außer mit exponentiell kleiner Wahrscheinlichkeit22 wurde bei Runde r −k nicht nach H abgefragt. Da jeder Q\(\gamma\)+1, Q\(\gamma\)+2, . . . , Qr−1 ist jeweils die Ausgabe von H mit Q\(\gamma\), Q\(\gamma\)+1, . . . , Qr−2 als einer der Eingänge, Für den Gegner sehen sie alle zufällig aus und der Gegner hätte Qr−1 nicht an H abfragen können rund r −k. Dementsprechend ist dies der einzige Fall, in dem der Gegner Qr−1 mit guter Wahrscheinlichkeit in der Runde vorhersagen kann r−k ist, wenn alle Anführer \(\ell\)r−k, . . . , \(\ell\)r−1 sind bösartig. Betrachten Sie erneut eine Runde \(\gamma\) \(\in\){r−k . . . , r−1} und die zufällige Permutation über PK\(\gamma\)−k, die durch die entsprechenden hash-Werte induziert wird. Wenn für einige x \(\geq\)2, die ersten x −1 Benutzer in der Permutation sind alle böswillig und der x-te ist ehrlich, dann ist der Der Gegner hat x mögliche Auswahlmöglichkeiten für Q\(\gamma\): entweder in der Form H(SIGi(Q\(\gamma\)−1, \(\gamma\))), wobei i eine davon ist 21Da k eine kleine ganze Zahl ist, kann man ohne Beschränkung der Allgemeinheit davon ausgehen, dass die ersten k Runden des Protokolls ausgeführt werden in einer sicheren Umgebung und die induktive Hypothese gilt für diese Runden. 22Das heißt, exponentiell in der Länge der Ausgabe von H. Beachten Sie, dass diese Wahrscheinlichkeit viel kleiner als F ist.die ersten x−1 böswilligen Benutzer, indem Spieler i zum eigentlichen Anführer der Runde \(\gamma\) gemacht wird; oder H(Q\(\gamma\)−1, \(\gamma\)), durch erzwingt B\(\gamma\) = B\(\gamma\) ǫ . Andernfalls ist der Anführer der Runde \(\gamma\) der erste ehrliche Benutzer in der Permutation und Qr−1 wird für den Gegner unvorhersehbar. Welche der oben genannten x Optionen von Q\(\gamma\) sollte der Gegner verfolgen? Um dem Gegner zu helfen Um diese Frage zu beantworten, machen wir ihn im mentalen Spiel tatsächlich mächtiger als er tatsächlich ist wie folgt. Erstens kann der Gegner in Wirklichkeit nicht den hash eines ehrlichen Benutzers berechnen Signatur, kann daher nicht für jedes Q\(\gamma\) die Anzahl x(Q\(\gamma\)) der böswilligen Benutzer zu Beginn bestimmen der zufälligen Permutation in Runde \(\gamma\) + 1, die durch Q\(\gamma\) induziert wird. Im mentalen Spiel geben wir ihm das Zahlen x(Q\(\gamma\)) kostenlos. Zweitens: In der Realität sind es alle ersten x Benutzer in der Permutation Böswillig zu sein bedeutet nicht unbedingt, dass sie alle zum Anführer gemacht werden können, denn die hash Werte ihrer Signaturen müssen ebenfalls kleiner als p1 sein. Wir haben diese Einschränkung im Mentalen ignoriert Spiel, was dem Gegner noch mehr Vorteile verschafft. Es ist leicht zu erkennen, dass im mentalen Spiel die optimale Option für den Gegner, bezeichnet mit ˆQ\(\gamma\), ist derjenige, der zu Beginn des Zufalls die längste Folge böswilliger Benutzer erzeugt Permutation in Runde \(\gamma\) + 1. Tatsächlich hängt das Protokoll bei einem bestimmten Q\(\gamma\) nicht von Q\(\gamma\)−1 ab mehr und der Gegner kann sich ausschließlich auf die neue Permutation in Runde \(\gamma\) + 1 konzentrieren, die das hat gleiche Verteilung für die Anzahl böswilliger Benutzer zu Beginn. Dementsprechend in jeder Runde \(\gamma\), das oben erwähnte ˆQ\(\gamma\) gibt ihm die größte Anzahl an Optionen für Q\(\gamma\)+1 und maximiert somit die Wahrscheinlichkeit, dass die aufeinanderfolgenden Anführer alle böswillig sind. Daher folgt der Gegner im mentalen Spiel einer Markov-Kette aus Runde r − k um r −1 zu runden, wobei der Zustandsraum {0} \(\cup\){x : x \(\geq\)2} ist. Zustand 0 stellt die Tatsache dar, dass die Der erste Benutzer in der zufälligen Permutation in der aktuellen Runde \(\gamma\) ist ehrlich, daher scheitert der Gegner Spiel zur Vorhersage von Qr−1; und jeder Zustand x \(\geq\)2 stellt die Tatsache dar, dass die ersten x −1 Benutzer im Permutationen sind bösartig und das x-te ist ehrlich, daher hat der Gegner x Optionen für Q\(\gamma\). Die Übergangswahrscheinlichkeiten P(x, y) sind wie folgt. • P(0, 0) = 1 und P(0, y) = 0 für jedes y \(\geq\)2. Das heißt, der Gegner scheitert beim ersten Mal am Spiel Der Benutzer in der Permutation wird ehrlich. • P(x, 0) = hx für jedes x \(\geq\)2. Das heißt, mit der Wahrscheinlichkeit hx haben alle x zufälligen Permutationen Da ihre ersten Benutzer ehrlich sind, scheitert der Gegner in der nächsten Runde am Spiel. • Für jedes x \(\geq\)2 und y \(\geq\)2 ist P(x, y) die Wahrscheinlichkeit, dass unter den x zufälligen Permutationen Induziert durch die x-Optionen von Q\(\gamma\), der längsten Sequenz böswilliger Benutzer zu Beginn einige davon sind y −1, daher hat der Gegner in der nächsten Runde y Optionen für Q\(\gamma\)+1. Das heißt, P(x, y) = y−1 X i=0 (1 −h)ih !x − y−2 X i=0 (1 −h)ih !x = (1 −(1 −h)y)x −(1 −(1 −h)y−1)x. Beachten Sie, dass Zustand 0 der einzige absorbierende Zustand in der Übergangsmatrix P und in jedem anderen Zustand ist x hat eine positive Wahrscheinlichkeit, gegen 0 zu gehen. Wir sind daran interessiert, die Zahl k von nach oben zu begrenzen Runden, die benötigt werden, damit die Markov-Kette mit überwältigender Wahrscheinlichkeit gegen 0 konvergiert: das heißt, nein Egal in welchem Zustand die Kette beginnt, mit überwältigender Wahrscheinlichkeit verliert der Gegner das Spiel und kann Qr−1 in der Runde r −k nicht vorhersagen. Betrachten Sie die Übergangsmatrix P (2) \(\triangleq\)P \(\cdot\) P nach zwei Runden. Es ist leicht zu erkennen, dass P (2)(0, 0) = 1 und P (2)(0, x) = 0 für jedes x \(\geq\)2. Für jedes x \(\geq\)2 und y \(\geq\)2 gilt, da P(0, y) = 0 P (2)(x, y) = P(x, 0)P(0, y) + X z\(\geq\)2 P(x, z)P(z, y) = X z\(\geq\)2 P(x, z)P(z, y).Wenn ¯h \(\triangleq\)1 −h gilt, gilt P(x, y) = (1 −¯hy)x −(1 −¯hy−1)x und P (2)(x, y) = X z\(\geq\)2 [(1 −¯hz)x −(1 −¯hz−1)x][(1 −¯hy)z −(1 −¯hy−1)z]. Nachfolgend berechnen wir den Grenzwert von P (2)(x,y) P (x,y) wenn h auf 1 geht – das heißt, ¯h geht auf 0. Beachten Sie, dass die höchste Ordnung von ¯h in P(x, y) ist ¯hy−1, mit Koeffizient x. Dementsprechend lim h \(\to\) 1 P (2)(x, y) P(x, y) = lim ¯h \(\to\) 0 P (2)(x, y) P(x, y) = lim ¯h \(\to\) 0 P (2)(x, y) x¯hy−1 + O(¯hy) = lim ¯h \(\to\) 0 P z\(\geq\)2[x¯hz−1 + O(¯hz)][z¯hy−1 + O(¯hy)] x¯hy−1 + O(¯hy) = lim ¯h \(\to\) 0 2x¯hy + O(¯hy+1) x¯hy−1 + O(¯hy) = lim ¯h \(\to\) 0 2x¯hy x¯hy−1 = lim ¯h \(\to\) 0 2¯h = 0. Wenn h hinreichend nahe bei 1,23 liegt, haben wir P (2)(x, y) P(x, y) \(\leq\)1 2 für jedes x \(\geq\)2 und y \(\geq\)2. Nach Induktion gilt für jedes k > 2 P (k) \(\triangleq\)P k, so dass • P (k)(0, 0) = 1, P (k)(0, x) = 0 für jedes x \(\geq\)2 und • für jedes x \(\geq\)2 und y \(\geq\)2, P (k)(x, y) = P (k−1)(x, 0)P(0, y) + X z\(\geq\)2 P (k−1)(x, z)P(z, y) = X z\(\geq\)2 P (k−1)(x, z)P(z, y) \(\leq\) X z\(\geq\)2 P(x, z) 2k−2 \(\cdot\) P(z, y) = P (2)(x, y) 2k−2 \(\leq\)P(x, y) 2k−1 . Da P(x, y) \(\leq\)1 ist, ist die Übergangswahrscheinlichkeit in einen beliebigen Zustand y \(\geq\)2 nach 1−log2 F-Runden vernachlässigbar, beginnend mit einem beliebigen Zustand x \(\geq\)2. Obwohl es viele solcher Zustände gibt, ist das leicht zu erkennen lim y→+∞ P(x, y) P(x, y + 1) = lim y→+∞ (1 −¯hy)x −(1 −¯hy−1)x (1 −¯hy+1)x −(1 −¯hy)x = lim y→+∞ ¯hy−1 −¯hy ¯hy −¯hy+1 = 1 ¯h = 1 1 − Std. Daher nimmt jede Zeile x der Übergangsmatrix P als geometrische Folge mit der Rate ab 1 1−h > 2 wenn y groß genug ist, und das Gleiche gilt für P (k). Dementsprechend ist k aber immer noch groß genug in der Größenordnung von log1/2 F, P y\(\geq\)2 P (k)(x, y) < F für jedes x \(\geq\)2. Das heißt, mit überwältigender Wahrscheinlichkeit Der Gegner verliert das Spiel und kann Qr−1 in Runde r −k nicht vorhersagen. Für h \(\in\)(2/3, 1], ein mehr Eine komplexe Analyse zeigt, dass es eine Konstante C gibt, die etwas größer als 1/2 ist, sodass sie ausreicht um k = O(logC F) zu nehmen. Somit gilt Lemma 5.6. ■ Lemma 5.4. (angepasst) Gegebene Eigenschaften 1–3 für jede Runde vor r, ph = h2(1 + h −h2) für Lr, und der Anführer \(\ell\)r ist mit Wahrscheinlichkeit mindestens ph ehrlich. 23Zum Beispiel ist h = 80 %, wie aus der spezifischen Auswahl der Parameter hervorgeht.

Beweis. Nach Lemma 5.6 kann der Gegner Qr−1 nicht zurück zur Runde r −k vorhersagen, außer mit vernachlässigbare Wahrscheinlichkeit. Beachten Sie, dass dies nicht bedeutet, dass die Wahrscheinlichkeit eines ehrlichen Anführers h ist jede Runde. In der Tat, angesichts von Qr-1, abhängig davon, wie viele böswillige Benutzer zu Beginn vorhanden sind Durch die zufällige Permutation von PKr−k kann der Gegner mehr als eine Option für Qr und haben Dadurch kann die Wahrscheinlichkeit eines böswilligen Anführers in Runde r + 1 erhöht werden – wir geben ihn wiederum an einige unrealistische Vorteile wie in Lemma 5.6, um die Analyse zu vereinfachen. Allerdings gilt für jedes Qr−1, das vom Gegner in der Runde r −k nicht an H abgefragt wurde, für Jedes x \(\geq\)1, mit der Wahrscheinlichkeit (1 −h)x−1h, tritt der erste ehrliche Benutzer an Position x im Ergebnis auf zufällige Permutation von PKr−k. Wenn x = 1, beträgt die Wahrscheinlichkeit eines ehrlichen Anführers in Runde r + 1 tatsächlich h; Wenn hingegen x = 2, hat der Gegner zwei Optionen für Qr und die resultierende Wahrscheinlichkeit ist h2. Nur wenn wir diese beiden Fälle berücksichtigen, haben wir die Wahrscheinlichkeit eines ehrlichen Anführers in der Runde r + 1 ist mindestens h \(\cdot\) h + (1 − h)h \(\cdot\) h2 = h2(1 + h − h2) wie gewünscht. Beachten Sie, dass die obige Wahrscheinlichkeit nur die Zufälligkeit im Protokoll ab Runde r − k berücksichtigt r runden. Wenn die gesamte Zufälligkeit von Runde 0 bis Runde r berücksichtigt wird, ist Qr−1 noch weniger vorhersehbar für den Gegner und die Wahrscheinlichkeit eines ehrlichen Anführers in Runde r + 1 liegt bei mindestens h2(1 + h −h2). Ersetzt man r + 1 durch r und verschiebt alles um eine Runde zurück, den Anführer \(\ell\)r ist ehrlich mit einer Wahrscheinlichkeit von mindestens h2(1 + h − h2), wie gewünscht. In ähnlicher Weise ist in jedem Coin-Echt-Flipped-Schritt s der „Anführer“ dieses Schritts – das ist der Verifizierer in SV r,s, dessen Credential den kleinsten hash-Wert hat, ist mit einer Wahrscheinlichkeit von mindestens h2(1 +) ehrlich h − h2). Somit ist ph = h2(1 + h −h2) für Lr und es gilt Lemma 5.4. ■

Algorand ′

1 В этом разделе мы создадим версию Algorand ′, работающую при следующем предположении. Допущение о честном большинстве пользователей: более 2/3 пользователей в каждом PKr честны. В разделе 8 мы покажем, как заменить приведенное выше предположение желаемым «Честным большинством». Денежное предположение. 5.1 Дополнительные обозначения и параметры Обозначения • m \(\in\)Z+: максимальное количество шагов в бинарном протоколе BA, кратное 3. • Lr \(\leq\)m/3: случайная величина, представляющая количество испытаний Бернулли, необходимых для получения 1, когда каждое испытание равно 1 с вероятностью ph 2 и имеется не более m/3 испытаний. Если все испытания провалятся, то Lr \(\triangleq\)м/3. Lr будет использоваться для верхней границы времени, необходимого для генерации блока Br. • ТН = 2n 3 + 1: количество подписей, необходимое в конечных условиях протокола. • CERT r: сертификат для Br. Это набор tH сигнатур H(Br) от собственных проверяющих в круглый р. Параметры • Отношения между различными параметрами. — Для каждого шага s > 1 раунда r n выбирается так, чтобы с подавляющей вероятностью |HSV r,s| > 2|MSV r,s| и |HSV r,s| + 4|MSV r,s| < 2н. Чем ближе к 1 значение h, тем меньше должно быть n. В частности, мы используем (варианты из) границ Чернова, обеспечивающих выполнение желаемых условий с подавляющей вероятностью. — m выбирается таким, что Lr < m/3 с подавляющей вероятностью. • Пример выбора важных параметров. — F = 10−12. — n \(\approx\)1500, k = 40 и m = 180.5.2 Реализация эфемерных ключей в Algorand ′ 1 Как уже упоминалось, мы хотим, чтобы проверяющий i \(\in\)SV r,s подписывал свое сообщение цифровой подписью mr,s я шага s в раунде r относительно эфемерного открытого ключа pkr,s i, используя эфемерный секретный ключ skr,s я что он сразу уничтожает после использования. Таким образом, нам нужен эффективный метод, гарантирующий, что каждый пользователь сможет убедитесь, что pkr,s я это действительно ключ, который можно использовать для проверки моей подписи мистера. я. Мы делаем это (в лучшем случае насколько нам известно) новое использование схем подписи на основе идентичности. На высоком уровне в такой схеме центральный орган A генерирует открытый главный ключ PMK, и соответствующий секретный главный ключ SMK. Учитывая личность U игрока U, A вычисляет: через SMK, секретный ключ подписи skU относительно открытого ключа U, и конфиденциально передает skU U. (Действительно, в схеме цифровой подписи на основе личности открытый ключ пользователя U — это сам U!) Таким образом, если А уничтожит SMK после вычисления секретных ключей пользователей, которых он хочет разрешить создавать цифровые подписи и не хранить никакого вычисленного секретного ключа, то U — единственный, кто может подписывать сообщения цифровой подписью относительно открытого ключа U. Таким образом, любой, кто знает «имя U», автоматически знает открытый ключ U и, таким образом, может проверить подписи U (возможно, используя также открытый главный ключ ПМК). В нашем приложении авторитетом A является пользователь i, а набор всех возможных пользователей U совпадает с пара круговых шагов (r, s) в, скажем, S = {i}\(\times\){r′, . . . , r′ +106}\(\times\){1, . . . , m+3}, где r′ — заданное раунд, а m + 3 — верхняя граница количества шагов, которые могут произойти в течение раунда. Это путь, пкр, с я \(\triangleq\)(i, r, s), чтобы все видели подпись i SIGr,s пкр,с я (мистер, с я) могу, с подавляющим вероятности, немедленно проверьте ее для первого миллиона раундов r, следующих за r'. Другими словами, сначала я генерирую PMK и SMK. Затем он заявляет, что ПМК — мой хозяин. открытый ключ для любого раунда r \(\in\)[r', r' + 106] и использует SMK для частного создания и хранения секрета. ключ скр,с я для каждой тройки (i, r, s) \(\in\)S. Сделав это, он уничтожает СМК. Если он решит, что он не часть СВ р,с, тогда я могу уйти из скр,с я один (поскольку протокол не требует, чтобы он аутентифицировал любое сообщение на шаге s раунда r). В противном случае я сначала использую skr,s я поставить цифровую подпись на своем сообщении, мистер, с я и затем уничтожает скр,с я. Обратите внимание: я могу опубликовать его первый открытый мастер-ключ, когда он впервые войдет в систему. То есть, тот же самый платеж \(\wp\), который приводит i в систему (в раунде r' или в раунде, близком к r'), может также указать по запросу i, что его открытый главный ключ для любого раунда r \(\in\)[r', r' + 106] равен PMK — например, включая пару вида (ПМК, [r', r' + 106]). Также обратите внимание, что, поскольку m + 3 — максимальное количество шагов в раунде, предполагая, что раунд занимает минуту, запаса созданных таким образом эфемерных ключей хватит почти на два года. В то же время Со временем изготовление этих эфемерных секретных ключей не займет много времени. Используя эллиптическую кривую В системе с 32B ключей каждый секретный ключ вычисляется за несколько микросекунд. Таким образом, если m + 3 = 180, тогда все 180 миллионов секретных ключей можно будет вычислить менее чем за час. Когда текущий раунд приближается к r' + 106, для обработки следующего миллиона раундов i генерирует новую пару (PMK', SMK') и сообщает, какой у него следующий запас эфемерных ключей. Например, если SIGi(PMK', [r' + 106 + 1, r' + 2 \(\cdot\) 106 + 1]) вводит новый блок, либо как отдельная «транзакция» или как некоторая дополнительная информация, являющаяся частью платежа. Тем самым, я сообщаю всем, что он/она должен использовать PMK' для проверки своих эфемерных подписей в следующем миллион раундов. И так далее. (Обратите внимание, что, следуя этому базовому подходу, другие способы реализации эфемерных ключей без использование подписей на основе личности, безусловно, возможно. Например, через Merkle trees.16) 16В этом методе я генерирую пару публично-секретных ключей (pkr,s я, скр,с я ) для каждой пары шагов раунда (r, s) в —скажем—Конечно, возможны и другие способы реализации эфемерных ключей — например, через Merkle trees. 5.3 Соответствие шагам Algorand ′ 1 с таковыми у BA⋆ Как мы уже говорили, раунд в Algorand ′ 1 имеет не более m + 3 шагов. Шаг 1. На этом этапе каждый потенциальный лидер i вычисляет и распространяет свой блок-кандидат Br я, вместе с собственным удостоверением \(\sigma\)r,1 я. Напомним, что эти учетные данные явно идентифицируют i. Это так, поскольку \(\sigma\)r,1 я \(\triangleq\)SIGi(r, 1, Qr−1). Потенциальный проверяющий i также распространяет как часть своего сообщения свою собственную цифровую подпись H(Br я). Не имеющая отношения к платежу или учетным данным, эта подпись i относится к его эфемерному обществу. ключ пкр,1 i: то есть он распространяет sigpkr,1 я (H(Br я)). Учитывая наши условности, вместо того, чтобы пропагандировать Бр я и сигпкр,1 я (H(Br я )) он мог бы распространяется SIGpkr,1 я (H(Br я)). Однако в нашем анализе нам необходим явный доступ к сигпкр,1 я (H(Br я)). Шаг 2. На этом этапе каждый верификатор i устанавливает \(\ell\)r Я буду потенциальным лидером, чьи полномочия hashed самый маленький, а Br i - блок, предложенный \(\ell\)r я. Поскольку в целях эффективности мы желает договориться о H(Br), а не непосредственно о Br, я распространяю сообщение, которое он хотел бы получить распространяется на первом этапе BA⋆с начальным значением v' я = H(Br я). То есть он распространяет v' я, после эфемерного подписания, конечно. (А именно, после его подписания относительно правого эфемерного открытый ключ, в данном случае это pkr,2 я .) Конечно, я также передаю свои собственные полномочия. Поскольку первый шаг BA⋆ состоит из первого шага протокола градуированного консенсуса GC, шаг 2 из Algorand соответствует первому шагу GC. Шаг 3. На этом шаге каждый верификатор i \(\in\)SV r,2 выполняет второй шаг BA⋆. То есть он отправляет то же сообщение, которое он отправил бы на втором этапе GC. Опять же, мое сообщение эфемерно подписано и сопровождается удостоверением личности. (В дальнейшем мы не будем говорить, что верификатор эфемерно подписывает свое сообщение, а также распространяет свои полномочия.) Шаг 4. На этом этапе каждый верификатор i \(\in\)SV r,4 вычисляет выходные данные GC (vi, gi) и эфемерно подписывает и отправляет то же сообщение, которое он отправил бы на третьем этапе BA⋆, то есть на первый шаг BBA⋆, с начальным битом 0, если gi = 2, и 1 в противном случае. Шаг s = 5, . . . , m + 2. Такой шаг, если он когда-либо был достигнут, соответствует шагу s−1 BA⋆ и, следовательно, шаг s−3 BBA⋆. Поскольку наша модель распространения достаточно асинхронна, мы должны учитывать возможность что в середине такого шага s проверяющий i \(\in\)SV r,s достигает информации, доказывающей его этот блок Br уже выбран. В этом случае я прекращает собственное выполнение раунда r Algorand ′ и начинает выполнять инструкции раунда (r + 1). {р', . . . , r′ + 106} \(\times\) {1, . . . , м + 3}. Затем он упорядочивает эти публичные ключи каноническим образом, сохраняет j-й публичный вводит j-й лист Merkle tree и вычисляет корневое значение Ri, которое он публикует. Когда он хочет подписать сообщение относительно ключа pkr,s я , я предоставляю не только фактическую подпись, но и путь аутентификации для pkr,s я относительно Ри. Обратите внимание, что этот путь аутентификации также доказывает, что pkr,s я хранится в j-м листе. Остальное детали могут быть легко заполнены.Соответственно, инструкции верификатора i \(\in\)SV r,s, помимо инструкций, соответствующих до шага s−3 BBA⋆, включая проверку того, остановлено ли выполнение BBA⋆ ранее. Шаг с'. Поскольку BBA⋆can только останавливается на этапе с фиксированной монетой на 0 или на шаге с фиксированной монетой на 1, инструкции различают, A (Конечное условие 0): s′ −2 ≡0 mod 3, или B (Конечное условие 1): s′ −2 ≡1 mod 3. Действительно, в случае А блок Br непуст, и поэтому необходимы дополнительные инструкции для убедитесь, что i правильно реконструирует Br вместе с соответствующим сертификатом CERT r. В случае Б, блок Br пуст, и поэтому мне дано указание установить Br = Br \(\varepsilon\) = (r, \(\emptyset\), H(Qr−1, r), H(Br−1)), и вычислить CERT r. Если во время выполнения шага s я не увижу никаких свидетельств того, что блок Br уже был сгенерирован, то он отправляет то же сообщение, которое он отправил бы на шаге s-3 BBA⋆. Шаг m + 3. Если на шаге m + 3 i \(\in\)SV r,m+3 видит, что блок Br уже был сгенерирован в предыдущий шаг s', то он действует так же, как объяснено выше. В противном случае, вместо отправки того же сообщения, которое он отправил бы на шаге m BBA⋆, i ему было поручено на основе имеющейся у него информации вычислить Br и соответствующий ему сертификат CERT r. Напомним, что мы ограничиваем общее количество шагов раунда сверху m + 3. 5.4 Фактический протокол Напомним, что на каждом шаге s раунда r проверяющий i \(\in\)SV r,s использует свою долговременную пару публично-секретных ключей. предъявить свои полномочия, \(\sigma\)r,s я \(\triangleq\)SIGi(r, s, Qr−1), а также SIGi Qr−1 в случае s = 1. Верификатор i использует свой эфемерный секретный ключ skr,s я подписать его (r,s)-сообщение mr,s я. Для простоты, когда r и s равны ясно, мы пишем esigi(x), а не sigpkr,s i (x) для обозначения собственной эфемерной подписи значения i. x на шаге s раунда r и напишите ESIGi(x) вместо SIGpkr,s i (x) для обозначения (i, x, esigi(x)). Шаг 1. Блокируйте предложение Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свой собственный шаг 1 раунда r, как только он знает Br−1. • Пользователь i вычисляет Qr-1 из третьего компонента Br-1 и проверяет, принадлежит ли i SV r,1 или нет. • Если i /\(\varepsilon\)SV r,1, то я немедленно прекращает выполнение шага 1. • Если i \(\in\)SV r,1, то есть если i является потенциальным лидером, то он собирает выплаты в раунде r, которые было передано ему на данный момент и вычисляет максимальный набор выплат PAY r я от них. Далее он вычисляет свой «кандидатский блок» Br i = (r, PAY r i , SIGi(Qr−1), H(Br−1)). Наконец, он вычисляет сообщение мистер 1 я = (Бр i , esigi(H(Br i ))), \(\sigma\)r,1 i ), уничтожает свой эфемерный секретный ключ skr,1 я, а потом распространяет г-на, 1 я.Замечание. На практике, чтобы сократить глобальное выполнение шага 1, важно, чтобы (r, 1)- сообщения распространяются выборочно. То есть для каждого пользователя i в системе для первого (r, 1)- сообщение, которое он когда-либо получает и успешно проверяет17, игрок i распространяет его как обычно. Для всех другие (r, 1)-сообщения, которые игрок i получает и успешно проверяет, он распространяет их только в том случае, если hash значение содержащихся в нем учетных данных является наименьшим среди hash значений содержащихся учетных данных во всех (r, 1)-сообщениях, которые он получил и успешно проверил на данный момент. Кроме того, как предложил Георгиос Влахос, полезно, чтобы каждый потенциальный лидер i также распространял свои полномочия \(\sigma\)r,1 я отдельно: эти небольшие сообщения передаются быстрее, чем блоки, что обеспечивает своевременное распространение mr,1 Джей где содержащиеся учетные данные имеют небольшие значения hash, а те, которые содержат большие значения hash быстро исчезнуть. Шаг 2: Первый шаг Протокола поэтапного консенсуса GC Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свой собственный шаг 2 раунда r, как только он знает Br−1. • Пользователь i вычисляет Qr-1 из третьего компонента Br-1 и проверяет, принадлежит ли i SV r,2 или нет. • Если i /\(\varepsilon\)SV r,2, то я немедленно прекращает выполнение шага 2. • Если i \(\in\)SV r,2, то после ожидания времени t2 \(\triangleq\) \(\lambda\) + Λ i действует следующим образом. 1. Он находит пользователя \(\ell\) такого, что H(\(\sigma\)r,1 \(\ell\)) \(\leq\)H(\(\sigma\)r,1 j ) для всех учетных данных \(\sigma\)r,1 дж которые являются частью успешно проверенные (r, 1)-сообщения, которые он получил на данный момент. 2. Если он получил от \(\ell\)действительное сообщение mr,1 \(\ell\) = (Бр \(\ell\), esig\(\ell\)(H(Br \(\ell\))) \(\sigma\)r,1 \(\ell\)),b, то я устанавливаю v' я \(\triangleq\)H(Br \(\ell\)); в противном случае я устанавливаю v' я \(\triangleq\) \(\bot\). 3. я вычисляю сообщение mr,2 я \(\triangleq\)(ESIGi(v′ i), \(\sigma\)r,2 i ),c уничтожает свой эфемерный секретный ключ скр, 2 i , а затем распространяет mr,2 я. aПо сути, пользователь i в частном порядке решает, что лидером раунда r является пользователь \(\ell\). bОпять же, подписи игрока \(\ell\) и hash успешно проверены, и PAY r \(\ell\)в Бр \(\ell\)действителен для round r — хотя я не проверяю, PAY ли r \(\ell\)максимальен для \(\ell\)или нет. c Сообщение г-н, 2 я сигнализирует о том, что игрок i рассматривает v' i быть hash следующего блока или считать следующий блок должен быть пустым. 17То есть все подписи верны и и блок, и его hash валидны — хотя я и не проверяю является ли включенный набор выплат максимальным для его предлагающего или нет.

Шаг 3: Второй шаг GC Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свой собственный Шаг 3 раунда r, как только он знает Br−1. • Пользователь i вычисляет Qr-1 из третьего компонента Br-1 и проверяет, принадлежит ли i SV r,3 или нет. • Если i /\(\varepsilon\)SV r,3, то я немедленно прекращает выполнение шага 3. • Если i \(\in\)SV r,3, то после ожидания времени t3 \(\triangleq\)t2 + 2\(\lambda\) = 3\(\lambda\) + Λ я действую следующим образом. 1. Если существует значение v′ ̸= \(\bot\) такое, что среди всех допустимых сообщений mr,2 дж он получил, из них более 2/3 имеют вид (ESIGj(v′), \(\sigma\)r,2 j ), без всякого противоречия,a затем он вычисляет сообщение mr,3 я \(\triangleq\)(ESIGi(v′), \(\sigma\)r,3 я). В противном случае он вычисляет mr,3 я \(\triangleq\) (ESIGi(\(\bot\)), \(\sigma\)r,3 я). 2. я уничтожаю его эфемерный секретный ключ skr,3 i , а затем распространяет mr,3 я. aТо есть он не получил двух действительных сообщений, содержащих ESIGj(v') и другой ESIGj(v'') соответственно, от игрока j. Здесь и далее, за исключением Конечных условий, определенных позже, всякий раз, когда честный игрок хочет сообщений заданной формы, сообщения, противоречащие друг другу, никогда не учитываются и не считаются действительными.Шаг 4: Выходные данные GC и первый шаг BBA⋆ Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свой собственный Шаг 4 раунда r, как только он знает Br−1. • Пользователь i вычисляет Qr-1 из третьего компонента Br-1 и проверяет, принадлежит ли i SV r,4 или нет. • Если i /\(\varepsilon\)SV r,4, то он немедленно прекращает выполнение шага 4. • Если i \(\in\)SV r,4, то после ожидания времени t4 \(\triangleq\)t3 + 2\(\lambda\) = 5\(\lambda\) + Λ я действую следующим образом. 1. Он вычисляет vi и gi, выходные данные GC, следующим образом. (a) Если существует значение v′ ̸= \(\bot\) такое, что среди всех допустимых сообщений mr,3 дж у него есть полученных, более 2/3 из них имеют вид (ESIGj(v′), \(\sigma\)r,3 j ), то он устанавливает vi \(\triangleq\)v′ и gi \(\triangleq\)2. (б) В противном случае, если существует значение v′ ̸= \(\bot\) такое, что среди всех допустимых сообщений мистер, 3 дж он получил, более 1/3 из них имеют вид (ESIGj(v′), \(\sigma\)r,3 j ), тогда он устанавливает vi \(\triangleq\)v′ и gi \(\triangleq\)1.a (c) В противном случае он полагает vi \(\triangleq\)H(Br \(\varepsilon\) ) и gi \(\triangleq\)0. 2. Он вычисляет bi, вход BBA⋆, следующим образом: bi \(\triangleq\)0, если gi = 2, и bi \(\triangleq\)1 в противном случае. 3. Он вычисляет сообщение mr,4 я \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,4 я), уничтожает его эфемерное секретный ключ скр, 4 i , а затем распространяет mr,4 я. aМожно доказать, что v′ в случае (b), если он существует, должен быть единственным.

Шаг s, 5 \(\leq\)s \(\leq\)m + 2, s−2 ≡0 mod 3: шаг BBA⋆ с фиксированной монетой до 0 Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свои собственные шаги раунда r, как только он знает Br−1. • Пользователь i вычисляет Qr-1 из третьего компонента Br-1 и проверяет, принадлежит ли i SV r,s. • Если i /\(\varepsilon\)SV r,s, то я немедленно прекращает выполнение шага s. • Если i \(\in\)SV r,s, то он действует следующим образом. – Он ждет, пока не пройдет время ts \(\triangleq\)ts−1 + 2\(\lambda\) = (2s −3)\(\lambda\) + Λ. – Конечное условие 0: Если во время такого ожидания и в любой момент времени существует строка v ̸= \(\bot\) и шаг s′ такой, что (a) 5 \(\leq\)s′ \(\leq\)s, s′ −2 ≡0 mod 3 — то есть шаг s′ является шагом с фиксированной монетой до 0, (б) я получил как минимум tH = 2н 3 + 1 действительных сообщений mr,s′−1 дж = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 дж ),а и (c) я получил действительное сообщение, мистер 1 дж = (Бр j , esigj(H(Br j )), \(\sigma\)r,1 j ) с v = H(Br дж), затем я немедленно прекращаю выполнение шага s (и фактически раунда r), не пропаганда чего-либо; устанавливает Br = Br Дж; и устанавливает свой собственный CERT r как набор сообщений г-н,с'-1 дж подэтапа (b).b – Конечное условие 1: Если во время такого ожидания и в любой момент времени существует шаг s′ такой, что (a’) 6 \(\leq\)s′ \(\leq\)s, s′ −2 ≡1 mod 3 — то есть шаг s′ является шагом с фиксированной монетой-1, и (b’) я получил как минимум tH действительных сообщений mr,s′−1 дж = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 дж ),с затем я немедленно прекращаю выполнение шага s (и фактически раунда r), не пропаганда чего-либо; устанавливает Br = Br й; и устанавливает свой собственный CERT r как набор сообщений г-н,с'-1 дж подэтапа (b’). – В противном случае в конце ожидания пользователь i выполняет следующее. Он устанавливает vi как большинство голосов vj во вторых компонентах всех действительных мистер, с-1 дж он получил. Он вычисляет bi следующим образом. Если более 2/3 всех действительных mr,s−1 дж которые он получил, имеют вид (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 дж ), то он полагает bi \(\triangleq\)0. В противном случае, если более 2/3 всех действительных mr,s−1 дж которые он получил, имеют вид (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 дж ), то он полагает bi \(\triangleq\)1. В противном случае он устанавливает bi \(\triangleq\)0. Он вычисляет сообщение mr,s я \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s я), уничтожает его эфемерное секретный ключ скр,с i , а затем распространяет mr,s я. aТакое сообщение от игрока j засчитывается, даже если игрок i также получил сообщение от j, подписавшегося за 1. Аналогично для Конечного условия 1. Как показано в анализе, это сделано для того, чтобы все честные пользователи знали Br за время \(\lambda\) друг от друга. bUser i теперь знает Br и свои собственные варианты завершения раунда r. Он по-прежнему помогает распространять сообщения как обычный пользователь, но не инициирует никакого распространения в качестве (r, s)-верификатора. В частности, он помогал распространять все сообщения в своей CERT r, чего достаточно для нашего протокола. Обратите внимание, что ему также следует установить bi \(\triangleq\)0 для бинарного протокола BA, но bi в любом случае в этом случае не нужен. Аналогичные вещи для всех будущих инструкций. cВ этом случае не имеет значения, кто такие виджеи.Шаг s, 6 \(\leq\)s \(\leq\)m + 2, s−2 ≡1 mod 3: шаг BBA⋆ с фиксированной монетой-1 Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свои собственные шаги раунда r, как только он знает Br−1. • Пользователь i вычисляет Qr-1 из третьего компонента Br-1 и проверяет, принадлежит ли i SV r,s или нет. • Если i /\(\varepsilon\)SV r,s, то я немедленно прекращает выполнение шага s. • Если i \(\in\)SV r,s, то он делает следующее. – Он ждет, пока не пройдет время ts \(\triangleq\)(2s −3)\(\lambda\) + Λ. – Конечное условие 0: те же инструкции, что и для шагов Coin-Fixed-To-0. – Конечное условие 1: те же инструкции, что и для шагов Coin-Fixed-To-0. – В противном случае в конце ожидания пользователь i выполняет следующее. Он устанавливает vi как большинство голосов vj во вторых компонентах всех действительных мистер, с-1 дж он получил. Он вычисляет bi следующим образом. Если более 2/3 всех действительных mr,s−1 дж которые он получил, имеют вид (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 дж ), то он полагает bi \(\triangleq\)0. В противном случае, если более 2/3 всех действительных mr,s−1 дж которые он получил, имеют вид (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 дж ), то он полагает bi \(\triangleq\)1. В противном случае он устанавливает bi \(\triangleq\)1. Он вычисляет сообщение mr,s я \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s я), уничтожает его эфемерное секретный ключ скр,с i , а затем распространяет mr,s я.

Шаг s, 7 \(\leq\)s \(\leq\)m + 2, s −2 ≡2 mod 3: Шаг BBA⋆ с подбрасыванием монеты Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свои собственные шаги раунда r, как только он знает Br−1. • Пользователь i вычисляет Qr-1 из третьего компонента Br-1 и проверяет, принадлежит ли i SV r,s или нет. • Если i /\(\varepsilon\)SV r,s, то я немедленно прекращает выполнение шага s. • Если i \(\in\)SV r,s, то он делает следующее. – Он ждет, пока не пройдет время ts \(\triangleq\)(2s −3)\(\lambda\) + Λ. – Конечное условие 0: те же инструкции, что и для шагов Coin-Fixed-To-0. – Конечное условие 1: те же инструкции, что и для шагов Coin-Fixed-To-0. – В противном случае в конце ожидания пользователь i выполняет следующее. Он устанавливает vi как большинство голосов vj во вторых компонентах всех действительных мистер, с-1 дж он получил. Он вычисляет bi следующим образом. Если более 2/3 всех действительных mr,s−1 дж которые он получил, имеют вид (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 дж ), то он полагает bi \(\triangleq\)0. В противном случае, если более 2/3 всех действительных mr,s−1 дж которые он получил, имеют вид (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 дж ), то он полагает bi \(\triangleq\)1. Иначе, пусть SV r,s−1 я — множество (r, s−1)-верификаторов, от которых он получил валидное сообщение мистер, с-1 дж . Он устанавливает bi \(\triangleq\)lsb(minj\(\varepsilon\)SV r,s−1 я H(\(\sigma\)r,s−1 дж )). Он вычисляет сообщение mr,s я \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s я), уничтожает его эфемерное секретный ключ скр,с i , а затем распространяет mr,s я.

Шаг m + 3: Последний шаг BBA⋆a Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свой собственный шаг m + 3 раунда r, как только он знает Br−1. • Пользователь i вычисляет Qr−1 из третьего компонента Br−1 и проверяет, принадлежит ли i SV r,m+3 или нет. • Если i /\(\varepsilon\)SV r,m+3, то я немедленно прекращает выполнение шага m + 3. • Если i \(\in\)SV r,m+3, то он делает следующее. – Он ждет, пока не пройдет время tm+3 \(\triangleq\)tm+2 + 2\(\lambda\) = (2m + 3)\(\lambda\) + Λ. – Конечное условие 0: те же инструкции, что и для шагов Coin-Fixed-To-0. – Конечное условие 1: те же инструкции, что и для шагов Coin-Fixed-To-0. – В противном случае в конце ожидания пользователь i выполняет следующее. Он устанавливает outi \(\triangleq\)1 и Br \(\triangleq\)Br. й. Он вычисляет сообщение mr,m+3 я = (ESIGi(outi), ESIGi(H(Br)), \(\sigma\)r,m+3 я ), уничтожает его эфемерный секретный ключ skr,m+3 я , а затем распространяет mr,m+3 я сертифицировать Бр.б aС огромной вероятностью BBA⋆ завершился до этого шага, и мы указываем этот шаг для полноты. b Сертификат, полученный на этапе m + 3, не обязательно должен включать ESIGi(outi). Мы включили его только для единообразия: сертификаты теперь имеют единый формат независимо от того, на каком этапе они создаются.Реконструкция блока Round-r неверификаторами Инструкции для каждого пользователя i в системе: Пользователь i начинает свой собственный раунд r, как только узнает Br-1 и ожидает информацию о блоке следующим образом. – Если во время такого ожидания и в любой момент времени существует строка v и шаг s′ такие что (a) 5 \(\leq\)s′ \(\leq\)m + 3 с s′ −2 ≡0 mod 3, (b) я получил как минимум tH действительных сообщений mr,s′−1 дж = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 дж ), и (c) я получил действительное сообщение, мистер 1 дж = (Бр j , esigj(H(Br j )), \(\sigma\)r,1 j ) с v = H(Br дж), затем я немедленно останавливаю его собственное выполнение раунда r; устанавливает Br = Br дж; и устанавливает свой собственный CERT r быть набором сообщений mr,s′−1 дж подэтапа (b). – Если во время такого ожидания и в любой момент времени существует шаг s′ такой, что (a’) 6 \(\leq\)s′ \(\leq\)m + 3 с s′ −2 ≡1 mod 3, и (b’) я получил как минимум tH действительных сообщений mr,s′−1 дж = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 дж ), затем я немедленно останавливаю его собственное выполнение раунда r; устанавливает Br = Br й; и устанавливает свой собственный CERT r быть набором сообщений mr,s′−1 дж подэтапа (b’). – Если во время такого ожидания и в любой момент времени я получил хотя бы tH действительных сообщений мистер, м+3 дж = (ESIGj(1), ESIGj(H(Br ϫ )) \(\sigma\)r,m+3 дж ), затем я останавливаю его собственное выполнение раунда r сразу устанавливает Br = Br ǫ и устанавливает свой собственный CERT r как набор сообщений mr,m+3 дж за 1 и H(Br й). 5,5 Анализ Algorand ′ 1 Введем следующие обозначения для каждого раунда r \(\geq\)0, используемого в анализе. • Пусть T r — это время, когда первый честный пользователь узнает Br−1. • Пусть Ir+1 — интервал [T r+1, Tr+1 + \(\lambda\)]. Обратите внимание, что T 0 = 0 при инициализации протокола. Напомним, что для каждого s \(\geq\)1 и i \(\in\)SV r,s \(\alpha\)r,s я и \(\beta\)r,s я соответственно время начала и время окончания шага s игрока i. Более того, напомним, что ts = (2s −3)\(\lambda\) + Λ для каждого 2 ⩽ s ⩽ m + 3. Кроме того, пусть I0 \(\triangleq\){0} и t1 \(\triangleq\)0. Наконец, напомним, что Lr \(\leq\)m/3 — случайная величина, представляющая количество испытаний Бернулли. нужно увидеть 1, когда каждое испытание равно 1 с вероятностью ph 2 и имеется не более m/3 испытаний. Если все испытания терпят неудачу, тогда Lr \(\triangleq\)m/3. В анализе мы игнорируем время вычислений, поскольку оно на самом деле незначительно по сравнению с необходимым временем. для распространения сообщений. В любом случае, используя немного большие \(\lambda\) и Λ, время вычисления может включаться непосредственно в анализ. Большинство приведенных ниже утверждений справедливы «с подавляющим вероятность», и мы не можем неоднократно подчеркивать этот факт в анализе.5,6 Основная теорема Теорема 5.1. Следующие свойства с подавляющей вероятностью выполняются для каждого раунда r \(\geq\)0: 1. Все честные пользователи согласны с тем же блоком Бр. 2. Когда лидер \(\ell\)r честен, блок Br генерируется \(\ell\)r, Br содержит максимальный набор выплат. получено \(\ell\)r за время \(\alpha\)r,1 \(\ell\)r , T r+1 \(\leq\)T r + 8\(\lambda\) + Λ, и все честные пользователи знают Br за время интервал Ir+1. 3. Когда лидер \(\ell\)r злонамерен, T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ и все честные пользователи знают Br в интервале времени Ir+1. 4. ph = h2(1 + h−h2) для Lr, и лидер \(\ell\)r честен с вероятностью не ниже ph. Прежде чем доказывать нашу основную теорему, сделаем два замечания. Замечания. • Генерация блоков и реальная задержка. Время генерации блока Br определяется как T r+1 -T r. То есть, это разница между первым разом, когда честный пользователь изучает Br, и когда честный пользователь впервые узнает Br-1. Когда лидер раунда R честен, Свойство 2 наше. Основная теорема гарантирует, что точное время генерации Br составляет 8\(\lambda\) + Λ времени, независимо от того, что точное значение h > 2/3 может быть. Когда лидер злонамерен, свойство 3 подразумевает, что ожидаемое время генерации Br ограничено сверху ( 12 ph + 10)\(\lambda\) + Λ, опять же независимо от точного значение h.18 Однако ожидаемое время генерации Br зависит от точного значения h. Действительно, по свойству 4 ph = h2(1 + h−h2) и лидер честен с вероятностью не менее ph, таким образом E[T r+1 −T r] \(\leq\)h2(1 + h −h2) \(\cdot\) (8\(\lambda\) + Λ) + (1 −h2(1 + h −h2))(( 12 h2(1 + h−h2) + 10)\(\lambda\) + Λ). Например, если h = 80%, то E[T r+1 −T r] \(\leq\)12,7\(\lambda\) + Λ. • \(\lambda\) против Λ. Обратите внимание, что размер сообщений, отправленных проверяющими на этапе Algorand ′, доминирует. длиной ключей цифровой подписи, которая может оставаться фиксированной, даже если число пользователей огромно. Также обратите внимание, что на любом шаге s > 1 одно и то же ожидаемое количество n проверяющих может использоваться независимо от того, составляет ли количество пользователей 100 тыс., 100 млн или 100 млн. Это так, потому что n исключительно зависит от h и F. Таким образом, в целом, если не считать внезапной необходимости увеличить длину секретного ключа, значение \(\lambda\) должно оставаться неизменным независимо от того, насколько велико количество пользователей в сети. обозримое будущее. Напротив, при любой скорости транзакций количество транзакций растет с увеличением количества пользователи. Следовательно, для своевременной обработки всех новых транзакций размер блока должен также растут вместе с числом пользователей, в результате чего Λ тоже растет. Таким образом, в долгосрочной перспективе мы должны иметь \(\lambda\) << Λ. Соответственно, правильно иметь больший коэффициент для \(\lambda\), и фактически коэффициент 1 для Λ. Доказательство теоремы 5.1. Свойства 1–3 докажем по индукции: предполагая, что они выполняются для раунда r −1 (без ограничения общности они автоматически справедливы для «раунда -1» при r = 0), докажем их для круглый р. 18Действительно, E[T r+1 −T r] \(\leq\)(6E[Lr] + 10)\(\lambda\) + Λ = (6 \(\cdot\) 2 ph + 10)\(\lambda\) + Λ = ( 12 ph + 10)\(\lambda\) + Λ.Поскольку Br−1 однозначно определяется по предположению индукции, множество SV r,s однозначно определяется для каждого шага s раунда r. По выбору n1 SV r,1 ̸= \(\emptyset\) с подавляющей вероятностью. Мы сейчас сформулируйте следующие две леммы, доказанные в разделах 5.7 и 5.8. На протяжении всей индукции и в доказательства двух лемм, анализ для раунда 0 практически аналогичен индуктивному шагу, и мы выделим различия, когда они возникнут. Лемма 5.2. [Лемма о полноте] Предполагая, что свойства 1–3 выполняются для раунда r−1, когда лидер \(\ell\)r честен, с подавляющей вероятностью, • Все честные пользователи соглашаются на один и тот же блок Br, который генерируется \(\ell\)r и содержит максимальное набор выплат, полученный \(\ell\)r к моменту времени \(\alpha\)r,1 \(\ell\)r \(\in\)Ir; и • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ и все честные пользователи знают Br в интервале времени Ir+1. Лемма 5.3. [Лемма о надежности] Предполагая, что свойства 1–3 выполняются для раунда r −1, когда лидер \(\ell\)r является вредоносным, с подавляющей вероятностью все честные пользователи согласны с одним и тем же блоком Br, T r+1 \(\leq\) T r + (6Lr + 10)\(\lambda\) + Λ и все честные пользователи знают Br на интервале времени Ir+1. Свойства 1–3 выполняются при применении лемм 5.2 и 5.3 к r = 0 и индуктивному шагу. Наконец, переформулируем свойство 4 в виде следующей леммы, доказанной в разделе 5.9. Лемма 5.4. Учитывая свойства 1–3 для каждого раунда до r, ph = h2(1 + h −h2) для Lr и лидер \(\ell\)r честен с вероятностью не менее тел. Объединив вместе предыдущие три леммы, теорема 5.1 верна. ■ В приведенной ниже лемме утверждается несколько важных свойств раунда r с учетом индуктивности. гипотезу и будет использоваться при доказательстве трех приведенных выше лемм. Лемма 5.5. Предположим, что свойства 1–3 выполняются для раунда r−1. Для каждого шага s \(\geq\)1 раунда r и каждого честного проверяющего i \(\in\)HSV r,s, мы имеем, что (а) \(\alpha\)r,s я €Ир; (б) если игрок i ждал некоторое время ts, то \(\beta\)r,s я \(\in\)[T r + ts, Tr + \(\lambda\) + ts] для r > 0 и \(\beta\)р,с я = ts для r = 0; и (c) если игрок i ждал некоторое время ts, то к времени \(\beta\)r,s я, он получил все сообщения отправлено всеми честными проверяющими j \(\in\)HSV r,s′ для всех шагов s′ < s. Более того, для каждого шага s \(\geq\)3 имеем (г) не существует двух разных игроков i, i′ \(\in\)SV r,s и двух разных значений v, v′ одного и того же такой длины, что оба игрока ждали время ts, более 2/3 всех действительные сообщения mr,s-1 дж игрок, которого я получаю, подписался на v, и более 2/3 всех действительных сообщения г-н, с-1 дж игрок i' получает, подписался на v'. Доказательство. Свойство (a) следует непосредственно из индуктивного предположения, поскольку игрок i знает Br−1 в интервал времени Ir и сразу же начинает свой собственный шаг s. Свойство (б) непосредственно следует из (а): поскольку игрок i ждал некоторое время ts, прежде чем действовать, \(\beta\)r,s я = \(\alpha\)r,s я + ц. Заметим, что \(\alpha\)r,s я = 0 для р = 0. Теперь мы докажем свойство (в). Если s = 2, то по свойству (б) для всех верификаторов j \(\in\)HSV r,1 имеем \(\beta\)р,с я = \(\alpha\)r,s я + ts \(\geq\)T r + ts = Tr + \(\lambda\) + Λ \(\geq\) \(\beta\)r,1 дж + Л.Поскольку каждый верификатор j \(\in\)HSV r,1 отправляет свое сообщение в момент времени \(\beta\)r,1 дж и сообщение дойдет до всех честных пользователей не более чем за Λ время, за время \(\beta\)r,s я Игрок i получил сообщения, отправленные всеми верификаторами в HSV r,1 по желанию. Если s > 2, то ts = ts−1 + 2\(\lambda\). По свойству (b) для всех шагов s′ < s и всех верификаторов j \(\in\)HSV r,s′ \(\beta\)р,с я = \(\alpha\)r,s я + ts \(\geq\)T r + ts = Tr + ts−1 + 2\(\lambda\) \(\geq\)T r + ts′ + 2\(\lambda\) = Tr + \(\lambda\) + ts′ + \(\lambda\) \(\geq\) \(\beta\)r,s′ дж + \(\lambda\). Поскольку каждый верификатор j \(\in\)HSV r,s′ отправляет свое сообщение в момент времени \(\beta\)r,s′ дж и сообщение дойдет до всех честных пользователей не более чем за \(\lambda\) время, за время \(\beta\)r,s я игрок i получил все сообщения, отправленные всеми честными проверяющими в HSV r,s′ для всех s′ < s. Таким образом, свойство (c) выполнено. Наконец, мы докажем свойство (d). Обратите внимание, что верификаторы j \(\in\)SV r,s−1 подписывают не более двух вещей в Шаг s-1 с использованием их эфемерных секретных ключей: значение vj той же длины, что и выходные данные hash, а также бит bj \(\in\){0, 1}, если s−1 \(\geq\)4. Поэтому в формулировке леммы мы требуем, чтобы v и v' имели одинаковую длину: многие верификаторы могли подписать оба значения hash v и бит b, таким образом, оба проходят порог 2/3. Предположим от противного, что существуют искомые верификаторы i, i' и значения v, v'. Обратите внимание, что некоторые злонамеренные проверяющие в MSV r,s-1 могли подписать как v, так и v', но каждый честный верификатор в HSV r,s−1 подписал не более одного из них. По свойству (c) и i, и i′ получили все сообщения, отправленные всеми честными проверяющими в HSV r,s-1. Пусть HSV r,s−1(v) — множество честных (r, s−1)-верификаторов, подписавших v, MSV r,s−1 я набор злонамеренных (r, s−1)-верификаторов, от которых i получил допустимое сообщение, и MSV r,s−1 я (v) подмножество MSV r,s−1 я от которого я получил действительную подпись сообщения v. По требованиям к я и в, у нас есть отношение \(\triangleq\)|HSV r,s−1(v)| + |MSV r,s−1 я (в)| |HSV r,s−1| + |MSV r,s−1 я |

2 3. (1) Мы сначала показываем |MSV r,s−1 я (в)| \(\leq\)|HSV r,s−1(v)|. (2) Если предположить обратное, то по соотношениям параметров с подавляющей вероятностью |HSV r,s−1| > 2|MSV r,s−1| \(\geq\)2|MSV r,s−1 я |, таким образом отношение < |HSV r,s−1(v)| + |MSV r,s−1 я (в)| 3|MSV r,s−1 я | < 2|MSV r,s−1 я (в)| 3|MSV r,s−1 я | \(\leq\)2 3, противоречит неравенству 1. Далее, по неравенству 1 имеем 2|HSV r,s−1| + 2|MSV r,s−1 я | < 3|HSV r,s−1(v)| + 3|MSV r,s−1 я (в)| \(\leq\) 3|HSV r,s−1(v)| + 2|MSV r,s−1 я | + |MSV r,s−1 я (в)|. В сочетании с неравенством 2, 2|HSV r,s−1| < 3|HSV r,s−1(v)| + |MSV r,s−1 я (в)| \(\leq\)4|HSV r,s−1(v)|, что подразумевает |HSV r,s−1(v)| > 1 2|HSV r,s−1|.Аналогично, согласно требованиям к i′ и v′, имеем |HSV r,s−1(v′)| > 1 2|HSV r,s−1|. Поскольку честный проверяющий j \(\in\)HSV r,s−1 уничтожает свой эфемерный секретный ключ skr,s−1 дж перед распространением свое сообщение, Противник не может подделать подпись j для значения, которое j не подписывал, после узнав, что j является проверяющим. Таким образом, из двух приведенных выше неравенств следует |HSV r,s−1| \(\geq\)|HSV r,s−1(v)| + |HSV r,s−1(v′)| > |HSV r,s−1|, противоречие. Соответственно, искомых i, i′, v, v′ не существует, и Свойство (d) выполнено. ■ 5,7 Лемма о полноте Лемма 5.2. [Лемма о полноте, переформулированная] Предполагая, что свойства 1–3 выполняются для раунда r−1, когда лидер \(\ell\)r честен, с подавляющей вероятностью, • Все честные пользователи соглашаются на один и тот же блок Br, который генерируется \(\ell\)r и содержит максимальное набор выплат, полученный \(\ell\)r к моменту времени \(\alpha\)r,1 \(\ell\)r \(\in\)Ir; и • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ и все честные пользователи знают Br в интервале времени Ir+1. Доказательство. По индуктивному предположению и лемме 5.5 для каждого шага s и верификатора i \(\in\)HSV r,s \(\alpha\)r,s я €Ир. Ниже мы шаг за шагом анализируем протокол. Шаг 1. По определению, каждый честный проверяющий i \(\in\)HSV r,1 распространяет желаемое сообщение mr,1 я в время \(\beta\)r,1 я = \(\alpha\)r,1 я, где мистер, 1 я = (Бр i , esigi(H(Br i ))), \(\sigma\)r,1 я ), Бр i = (r, PAY r i , SIGi(Qr−1), H(Br−1)), и ПЛАТИТЬ р i — максимальный набор выплат среди всех платежей, которые я видел к моменту времени \(\alpha\)r,1 я. Шаг 2. Произвольно зафиксируем честный проверяющий элемент i \(\in\)HSV r,2. По лемме 5.5, когда игрок i закончил ожидание во время \(\beta\)r,2 я = \(\alpha\)r,2 я + t2, он получил все сообщения, отправленные верификаторами в HSV r,1, включая мистер, 1 \(\ell\)р. По определению \(\ell\)r, в PKr-k не существует другого игрока, чьи полномочия hash значение меньше, чем H(\(\sigma\)r,1 \(\ell\)р). Конечно, Противник может испортить \(\ell\)r, увидев, что H(\(\sigma\)r,1 \(\ell\)р) очень мал, но к этому моменту игрок \(\ell\)r уничтожил свой эфемерный ключ и сообщение mr,1 \(\ell\)р был распространен. Таким образом, проверяющий i назначает своим лидером игрока \(\ell\)r. Соответственно, в момент времени \(\beta\)r,2 я, проверяющий i распространяет mr,2 я = (ESIGi(v′ i), \(\sigma\)r,2 i ), где v′ я = H(Br \(\ell\)р). Когда r = 0, единственная разница это \(\beta\)r,2 я = t2, а не находиться в диапазоне. То же самое можно сказать и о будущих шагах, и мы не буду подчеркивать их снова. Шаг 3. Произвольно зафиксируем честный проверяющий элемент i \(\in\)HSV r,3. По лемме 5.5, когда игрок i закончил ожидание во время \(\beta\)r,3 я = \(\alpha\)r,3 я + t3, он получил все сообщения, отправленные верификаторами в HSV r,2. По соотношениям параметров с подавляющей вероятностью |HSV r,2| > 2|МСВ г,2|. Более того, ни один честный проверяющий не стал бы подписывать противоречивые сообщения, а Противник не может подделать подпись честного проверяющего после того, как последний уничтожил свою соответствующую подпись. эфемерный секретный ключ. Таким образом, более 2/3 всех действительных (r, 2)-сообщений, которые я получил, поступили от честные проверяющие и в форме mr,2 дж = (ESIGj(H(Br \(\ell\)r)) \(\sigma\)r,2 j ), без противоречия. Соответственно, в момент времени \(\beta\)r,3 я Игрок я распространяет мистера, 3 я = (ESIGi(v′), \(\sigma\)r,3 i ), где v′ = H(Br \(\ell\)р).Шаг 4. Произвольно зафиксируем честный проверяющий элемент i \(\in\)HSV r,4. По лемме 5.5 игрок i получил все сообщения, отправленные верификаторами в HSV r,3, когда он закончил ожидание в момент времени \(\beta\)r,4 я = \(\alpha\)r,4 я + т4. Похоже на: Шаг 3: более 2/3 всех действительных (r, 3)-сообщений, которые я получил, получены от честных проверяющих и формы г-н,3 дж = (ESIGj(H(Br \(\ell\)r)) \(\sigma\)r,3 дж). Соответственно, игрок i устанавливает vi = H(Br \(\ell\)r), gi = 2 и bi = 0. В момент времени \(\beta\)r,4 я = \(\alpha\)r,4 я +t4 он размножается мистер, 4 я = (ESIGi(0), ESIGi(H(Br \(\ell\)r)) \(\sigma\)r,4 я). Шаг 5. Произвольно зафиксируем честный проверяющий элемент i \(\in\)HSV r,5. По лемме 5.5 у меня был бы игрок получил все сообщения, отправленные верификаторами в HSV r,4, если он дождался времени \(\alpha\)r,5 я + т5. Обратите внимание, что |HSV р,4| \(\geq\)tH.19 Также обратите внимание, что все верификаторы в HSV r,4 подписались за H(Br \(\ell\)р). Так как |MSV r,4| < tH, не существует v′ ̸= H(Br \(\ell\)r), который мог быть подписан tH проверяющие в SV r,4 (которые обязательно будут злонамеренными), поэтому игрок i не останавливается, пока не получил действительные сообщения г-н, 4 дж = (ESIGj(0), ESIGj(H(Br \(\ell\)r)) \(\sigma\)r,4 дж). Пусть Т — время, когда происходит последнее событие. Некоторые из этих сообщений могут исходить от злонамеренных игроков, но поскольку |МСВ р,4| < tH, хотя бы одно из них от честного верификатора в HSV r,4 и отправлено спустя время Т р +t4. Соответственно, T \(\geq\)T r +t4 > Tr +\(\lambda\)+Λ \(\geq\) \(\beta\)r,1 \(\ell\)r +Λ, и к моменту T игрок i также получил сообщение мистер 1 \(\ell\)р. По построению протокола игрок i останавливается в момент \(\beta\)r,5 я = Т без пропаганда чего-либо; устанавливает Br = Br \(\ell\)р; и устанавливает свой собственный CERT r как набор (r, 4)-сообщений для 0 и H(Br \(\ell\)r), что он получил. Шаг s > 5. Аналогично, для любого шага s > 5 и любого проверяющего i \(\in\)HSV r,s игрок i будет иметь получил все сообщения, отправленные верификаторами в HSV r,4, если он дождался времени \(\alpha\)r,s я + ц. По тот же анализ, игрок i останавливается, ничего не распространяя, устанавливая Br = Br \(\ell\)r (и устанавливая свой собственный CERT r правильно). Конечно, злонамеренные верификаторы могут не останавливаться и распространять произвольные сообщений, но поскольку |MSV r,s| < tH, по индукции никакое другое v' не может быть подписано проверяющими tH на любом шаге 4 \(\leq\)s' < s, таким образом, честные проверяющие останавливаются только потому, что они получили действительный результат. (r, 4)-сообщения для 0 и H(Br \(\ell\)р). Реконструкция блока «Раунд-р». Анализ шага 5 применим к общему честному пользователь i почти без каких-либо изменений. Действительно, игрок i начинает свой раунд r в интервале Ir и остановится в момент T только тогда, когда он получит tH действительных (r, 4)-сообщений для H(Br \(\ell\)р). Опять же, потому что хотя бы одно из этих сообщений отправлено честными проверяющими и отправлено через время T r + t4, игрок i имеет также получил мистер 1 \(\ell\)r на время T. Таким образом, он устанавливает Br = Br \(\ell\)r с соответствующим CERT r. Осталось только показать, что все честные пользователи завершают свой раунд r за интервал времени Ir+1. Согласно анализу шага 5, каждый честный проверяющий i \(\in\)HSV r,5 знает Br на или раньше \(\alpha\)r,5 я + t5 \(\leq\) Т r + \(\lambda\) + t5 = T r + 8\(\lambda\) + Λ. Поскольку T r+1 — это момент, когда первый честный пользователь ir узнает Br, мы имеем Т r+1 \(\leq\)T r + 8\(\lambda\) + Λ по желанию. Более того, когда игрок знает Br, он уже помогает распространять сообщения в его CERT р. Обратите внимание, что все эти сообщения будут получены всеми честными пользователями в течение времени \(\lambda\), даже если 19Строго говоря, это происходит с очень высокой вероятностью, но не обязательно ошеломляющей. Однако это вероятность незначительно влияет на время работы протокола, но не влияет на его корректность. Когда h = 80%, то |HSV р,4| \(\geq\)tH с вероятностью 1−10−8. Если это событие не произойдет, протокол продолжится еще 3 шага. Поскольку вероятность того, что это не произойдет за два шага, ничтожна, протокол завершится на шаге 8. ожидание, то количество необходимых шагов будет почти 5.игрок ir был первым игроком, который их распространил. Более того, согласно приведенному выше анализу, мы имеем Т r+1 \(\geq\)T r + t4 \(\geq\) \(\beta\)r,1 \(\ell\)r + Λ, таким образом, все честные пользователи получили mr,1 \(\ell\)r по времени T r+1 + \(\lambda\). Соответственно, все честные пользователи знают Br в интервале времени Ir+1 = [T r+1, T r+1 + \(\lambda\)]. Наконец, при r = 0 фактически имеем T 1 ⩽t4 + \(\lambda\) = 6\(\lambda\) + Λ. Соединив всё воедино, Лемма 5.2 справедлива. ■ 5,8 Лемма о разумности Лемма 5.3. [Лемма о правильности, переформулированная] Предполагая, что свойства 1–3 выполняются для раунда r −1, когда лидер \(\ell\)r является вредоносным, с подавляющей вероятностью все честные пользователи соглашаются на один и тот же блок Br, T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ, и все честные пользователи знают Br на интервале времени Ir+1. Доказательство. Мы рассматриваем две части протокола, GC и BBA⋆, отдельно. ГК. По индуктивному предположению и лемме 5.5 для любого шага s \(\in\){2, 3, 4} и любого честного верификатор i \(\in\)HSV r,s, когда игрок i действует в момент времени \(\beta\)r,s я = \(\alpha\)r,s я + тс, он получил все отправленные сообщения всеми честными проверяющими на шагах s' < s. Выделим два возможных случая для шага 4. Случай 1. Ни один верификатор i \(\in\)HSV r,4 не устанавливает gi = 2. В этом случае по определению bi = 1 для всех верификаторов i \(\in\)HSV r,4. То есть они начинаются с соглашение о 1 в бинарном протоколе BA. У них может не быть согласия по поводу их VI, но это не имеет значения, как мы увидим в двоичном BA. Случай 2. Существует верификатор ˆi \(\in\)HSV r,4 такой, что gˆi = 2. В данном случае мы показываем, что (1) gi \(\geq\)1 для всех i \(\in\)HSV r,4, (2) существует значение v′ такое, что vi = v′ для всех i \(\in\)HSV r,4, и (3) существует допустимое сообщение mr,1 \(\ell\) из некоторого верификатора \(\ell\) \(\varepsilon\)SV r,1 такого, что v′ = H(Br \(\ell\)). Действительно, поскольку игрок ˆi честен и устанавливает gˆi = 2, более 2/3 всех действительных сообщений mr,3 дж он получил для того же значения v′ ̸= \(\bot\) и установил vˆi = v′. По свойству (d) леммы 5.5 для любого другого честного (r, 4)-верификатора i не может быть более чем 2/3 всех действительных сообщений mr,3 дж которые i' получил, относятся к одному и тому же значению v'' ̸= v'. Соответственно, если я устанавливаю gi = 2, должно быть так, что я также видел > 2/3 большинства для v 'и установил vi = v', по желанию. Теперь рассмотрим произвольный верификатор i \(\in\)HSV r,4 с gi < 2. Аналогично анализу свойства (d) в лемме 5.5, поскольку игрок ˆi получил большинство > 2/3 за v′, более 1 2|HSV г,3| честный (r, 3)-верификаторы имеют знак v'. Поскольку я получил все сообщения от честных (r, 3)-верификаторов время \(\beta\)r,4 я = \(\alpha\)r,4 я + t4, в частности он получил более 1 2|HSV г,3| сообщения от них для v'. Поскольку |HSV r,3| > 2|MSV r,3|, я набрал > 1/3 большинства за v'. Соответственно, игрок я устанавливаю gi = 1, и свойство (1) выполняется. Обязательно ли игрок i устанавливает vi = v′? Предположим, что существует другое значение v′′ ̸= \(\bot\) такое, что игрок i также получил большинство в > 1/3 за v''. Некоторые из этих сообщений могут быть от вредоносного верификаторов, но по крайней мере один из них принадлежит какому-то честному верификатору j \(\in\)HSV r,3: действительно, поскольку |HSV г,3| > 2|МСВ г,3| и я получил все сообщения от HSV r,3, набора вредоносных верификаторы, от которых я получил валидное (r, 3)-сообщение, составляют <1/3 всех валидных сообщений. сообщения, которые он получил.По определению, игрок j должен был видеть > 2/3 большинства для v'' среди всех действительных (r, 2)-сообщений. он получил. Однако мы уже знаем, что некоторые другие честные (r, 3)-верификаторы видели 2/3 большинства за v' (потому что они подписались v'). По свойству (г) леммы 5.5 это не может случаются, и такого значения v'' не существует. Таким образом, игрок i должен установить vi = v′ по своему желанию, и свойство (2) выполнено. Наконец, учитывая, что некоторые честные (r, 3)-верификаторы получили большинство > 2/3 для v', некоторые (фактически, более половины) честных (r, 2)-верификаторов подписались за v' и распространили свои сообщения. Согласно построению протокола, эти честные (r, 2)-верификаторы должны были получить действительный сообщение, мистер 1 \(\ell\) от некоторого игрока \(\ell\) \(\varepsilon\)SV r,1 такого, что v′ = H(Br \(\ell\)), поэтому свойство (3) выполнено. ББА⋆. Мы снова различаем два случая. Случай 1. Все верификаторы i \(\in\)HSV r,4 имеют bi = 1. Это происходит после случая 1 GC. Так как |MSV r,4| < tH, в этом случае верификатора в SV r,5 нет. мог бы собрать или сгенерировать tH действительных (r, 4)-сообщений для бита 0. Таким образом, ни один честный верификатор в HSV r,5 остановился бы, потому что знает непустой блок Бр. Более того, хотя для бита 1 существует не менее tH допустимых (r, 4)-сообщений, s′ = 5 не удовлетворяет s′ −2 ≡1 mod 3, поэтому ни один честный проверяющий в HSV r,5 не остановится, потому что он знает Br = Br й. Вместо этого каждый верификатор i \(\in\)HSV r,5 действует в момент времени \(\beta\)r,5 я = \(\alpha\)r,5 я + t5, когда он получит все сообщения, отправленные HSV r,4 согласно лемме 5.5. Таким образом, игрок i получил большинство в 2/3 за 1. и устанавливает bi = 1. На шаге 6, который представляет собой шаг с фиксированной монетой до 1, хотя s′ = 5 удовлетворяет условию s′ −2 ≡0 mod 3, существует не существует действительных (r, 4)-сообщений для бита 0, поэтому ни один верификатор в HSV r,6 не остановится, потому что он знает непустой блок Бр. Однако при s′ = 6 s′ −2 ≡1 mod 3 и существуют |HSV р,5| \(\geq\)tH действительных (r,5)-сообщений для бита 1 из HSV r,5. Для каждого верификатора i \(\in\)HSV r,6, согласно лемме 5.5, в момент времени \(\alpha\)r,6 или раньше я + игрок t6 я получил все сообщения от HSV r,5, поэтому останавливаюсь, ничего не распространяя, и устанавливаю Бр = Бр й. Его CERT r представляет собой набор действительных (r, 5)-сообщений mr,5. дж = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 к) получено им, когда он останавливается. Далее, пусть игрок i будет либо честным проверяющим на шаге s > 6, либо обычным честным пользователем (т. е. не проверяющий). Аналогично доказательству леммы 5.2, игрок i устанавливает Br = Br ǫ и устанавливает свой собственный CERT r — набор действительных (r, 5)-сообщений mr,5. дж = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 к) у него есть получил. Наконец, аналогично лемме 5.2, Т р+1 \(\leq\) мин i\(\varepsilon\)HSV r,6 \(\alpha\)r,6 я + t6 \(\leq\)T r + \(\lambda\) + t6 = T r + 10\(\lambda\) + Λ, и все честные пользователи знают Br в интервале времени Ir+1, потому что первый честный пользователь i, который знает, что Br помог распространить (r, 5)-сообщения в своем CERT r. Случай 2. Существует верификатор ˆi \(\in\)HSV r,4 такой, что bˆi = 0. Это происходит после случая 2 GC и является более сложным случаем. По анализу GC, в этом случае существует допустимое сообщение mr,1 \(\ell\) такая, что vi = H(Br \(\ell\)) для всех i \(\in\)HSV r,4. Примечание что верификаторы в HSV r,4 могут не прийти к согласию относительно своих bi. Для любого шага s \(\in\){5, . . . , m + 3} и проверяющий i \(\in\)HSV r,s, по лемме 5.5 игроку я бы получил все сообщения, отправленные всеми честными проверяющими в HSV r,4 \(\cup\) \(\cdots\) \(\cup\)HSV r,s−1, если он дождался за время ц.Теперь рассмотрим следующее событие E: существует шаг s∗\(\geq\)5 такой, что для первого время в двоичном BA, какой-то игрок i∗\(\varepsilon\)SV r,s∗ (злонамеренный или честный) должен остановиться ничего не пропагандируя. Мы используем слово «следует остановиться», чтобы подчеркнуть тот факт, что, если игрок i∗ злонамерен, то он может сделать вид, что не должен останавливаться по протоколу и распространять сообщения по выбору Противника. Более того, по построению протокола либо (E.a) i∗ способен собирать или генерировать не менее tH действительных сообщений mr,s′−1 дж = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 дж ) для тех же v и s′, при этом 5 \(\leq\)s′ \(\leq\)s∗ и s′ −2 ≡0 mod 3; или (E.b) i∗ способен собирать или генерировать не менее tH действительных сообщений mr,s′−1 дж = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 дж ) для того же s′, где 6 \(\leq\)s′ \(\leq\)s∗ и s′ −2 ≡1 mod 3. Поскольку честные (r, s′ −1)-сообщения принимаются всеми честными (r, s′)-верификаторами до того, как они закончились ожидания в Шагах s', и поскольку Противник получает все не позднее, чем честные пользователи, без ограничения общности имеем s′ = s∗ и игрок i∗ является злонамеренным. Обратите внимание, что мы не требовали, чтобы значение v в E.a было hash допустимого блока: как станет ясно при анализе v = H(Br \(\ell\)) в этом подсобытии. Ниже мы сначала анализируем случай 2, следующий за событием E, а затем показываем, что значение s∗ существенно распределяется соответственно Lr (таким образом, событие E происходит до шага m + 3 с подавляющим вероятность с учетом соотношений параметров). Начнем с того, что для любого шага 5 \(\leq\)s < s∗ каждый честный проверяющий i \(\in\)HSV r,s ждал время ts и установил vi как большинство голосов действительные (r, s−1)-сообщения, которые он получил. Поскольку игрок i получил все честные (r, s−1)-сообщения следуя лемме 5.5, поскольку все честные верификаторы в HSV r,4 имеют подпись H(Br \(\ell\)) следующий случай 2 GC, и поскольку |HSV r,s−1| > 2|MSV r,s−1| для каждого s по индукции мы имеем игрока i установил vi = H(Br \(\ell\)). То же самое справедливо для каждого честного проверяющего i \(\in\)HSV r,s∗, который не останавливается, не распространяя что угодно. Теперь рассмотрим шаг s∗ и выделим четыре подслучая. Случай 2.1.а. Событие E.a происходит и существует честный проверяющий i′ \(\in\)HSV r,s∗, который должен также остановиться, ничего не пропагандируя. В этом случае мы имеем s∗−2 ≡0 mod 3 и шаг s∗ — это шаг с фиксированной монетой до 0. Автор Согласно определению, игрок i получил не менее tH действительных (r, s∗−1)-сообщений вида (ESIGj(0), ESIGj(v), \(\sigma\)r,s∗−1 дж ). Поскольку все верификаторы в HSV r,s∗−1 имеют знак H(Br \(\ell\)) и |MSV r,s∗−1| < tH, имеем v = H(Br \(\ell\)). Поскольку хотя бы tH −|MSV r,s∗−1| \(\geq\)1 (r, s∗−1)-сообщений, полученных i′ для 0 и v отправляются верификаторами в HSV r,s∗−1 через время T r +ts∗−1 \(\geq\)T r +t4 \(\geq\)T r +\(\lambda\)+Λ \(\geq\) \(\beta\)r,1 \(\ell\) +Λ, игрок i' получил мистера, 1 \(\ell\) к тому моменту, когда он получит эти (r, s∗−1)-сообщения. Таким образом, игрок я останавливаюсь, ничего не распространяя; устанавливает Br = Br \(\ell\); и устанавливает свой CERT r в качестве набор действительных (r, s∗−1)-сообщений для 0 и v, которые он получил. Далее мы покажем, что любой другой верификатор i \(\in\)HSV r,s∗ либо остановился с Br = Br \(\ell\), или установил bi = 0 и распространил (ESIGi(0), ESIGi(H(Br \(\ell\))) \(\sigma\)r,s я). Действительно, поскольку шаг s∗ это первый раз, когда какой-то верификатор должен остановиться, ничего не распространяя, здесь нет существует шаг s′ < s∗ с s′ −2 ≡1 mod 3 такой, что tH (r, s′ −1)-верификаторы имеют знак 1. Соответственно, ни один верификатор в HSV r,s∗ не останавливается с Br = Br й.Более того, поскольку все честные проверяющие на этапах {4, 5, . . . , s∗−1} имеют знак H(Br \(\ell\)), есть не существует шага s′ \(\leq\)s∗ с s′ −2 ≡0 mod 3 такого, что tH (r, s′ −1)-верификаторы подписались некоторый v′′ ̸= H(Br \(\ell\)) — действительно, |MSV r,s′−1| < тХ. Соответственно, ни один верификатор в HSV r,s∗ не останавливает где Br ̸= Br ϫ и Br ̸= Br \(\ell\). То есть, если игрок i \(\in\)HSV r,s∗ остановился без распространяя что-либо, он, должно быть, установил Br = Br \(\ell\). Если игрок i \(\in\)HSV r,s∗ ждал время ts∗ и распространил сообщение в момент времени \(\beta\)r,s∗ я = \(\alpha\)r,s∗ я + ts∗, он получил все сообщения от HSV r,s∗−1, включая как минимум tH −|MSV r,s∗−1| из них для 0 и v. Если я видел > 2/3 большинства за 1, то он видел более 2(tH −|MSV r,s∗−1|) допустимых (r, s∗−1)-сообщений для 1, причем более чем 2tH−3|MSV r,s∗−1| из них от честных (r, s∗−1)-верификаторов. Однако это подразумевает |HSV r,s∗−1| \(\geq\)tH−|MSV r,s∗−1|+2tH−3|MSV r,s∗−1| > 2n−4|MSV r,s∗−1|, что противоречит тот факт, что |HSV r,s∗−1| + 4|MSV r,s∗−1| < 2n, который исходит из отношений для параметров. Соответственно я не вижу > 2/3 большинство за 1, и он устанавливает bi = 0, поскольку шаг s∗ — это шаг с фиксированной монетой до 0. Как у нас есть видно, vi = H(Br \(\ell\)). Таким образом, i распространяет (ESIGi(0), ESIGi(H(Br \(\ell\))) \(\sigma\)r,s я) как мы и хотели показать. Для шага s∗+ 1, поскольку игрок i′ помог распространить сообщения в своем CERT r не позднее времени \(\alpha\)r,s∗ я' + ts∗, все честные проверяющие в HSV r,s∗+1 получили как минимум tH допустимых (r, s∗−1)-сообщений для бита 0 и значения H(Br \(\ell\)) не позднее, чем они будут готовы ожидание. Более того, верификаторы в HSV r,s∗+1 не остановятся, пока не получат те (r, s∗−1)- сообщений, поскольку не существует других действительных (r, s′ −1)-сообщений для бита 1 с s′ −2 ≡1 mod 3 и 6 \(\leq\)s′ \(\leq\)s∗+ 1 по определению шага s∗. В частности, Шаг s∗+ 1 сам по себе является шагом Coin-Fixed-To-1, но ни один честный верификатор в HSV r,s∗ не распространил сообщение для 1 и |MSV r,s∗| < тХ. Таким образом, все честные верификаторы в HSV r,s∗+1 останавливаются, ничего не распространяя, и устанавливают Br = Бр \(\ell\): как и прежде, они получили г-н,1 \(\ell\) прежде чем они получат желаемые (r, s∗−1)-сообщения.20 То же самое можно сказать обо всех честных верификаторах будущих шагов и обо всех честных пользователях в целом. В частности, все они знают Br = Br \(\ell\)в интервале времени Ir+1 и Т r+1 \(\leq\) \(\alpha\)r,s∗ я' + ts∗\(\leq\)T r + \(\lambda\) + ts∗. Случай 2.1.б. Событие E.b происходит и существует честный проверяющий i′ \(\in\)HSV r,s∗, который должен также остановиться, ничего не пропагандируя. В этом случае мы имеем s∗−2 ≡1 mod 3 и шаг s∗ — это шаг с фиксированной монетой до 1. Анализ аналогичен случаю 2.1.а, но многие детали опущены. 20Если он злонамерен, он может послать господина,1 \(\ell\) поздно, надеясь, что некоторые честные пользователи/верификаторы не получили mr,1 \(\ell\) еще когда они получат за это желаемый сертификат. Однако, поскольку верификатор ˆi \(\in\)HSV r,4 установил bˆi = 0 и vˆi = H(Br \(\ell\)), как прежде чем мы увидим, что более половины честных проверяющих i \(\in\)HSV r,3 установили vi = H(Br \(\ell\)). Это далее подразумевает больше более половины честных проверяющих i \(\in\)HSV r,2 установили vi = H(Br \(\ell\)), и все эти (r, 2)-верификаторы получили mr,1 \(\ell\). Как Злоумышленник не может отличить проверяющего от непроверяющего, он не может нацелиться на распространение mr,1 \(\ell\) к (r, 2)-верификаторам так, чтобы это не увидели те, кто не проверял. На самом деле, с большой вероятностью, более половины (или хорошая постоянная доля) всех честных пользователей видели mr,1 \(\ell\) после ожидания t2 с начала своего раунда r. С этого момента время \(\lambda\)′, необходимое для mr,1 \(\ell\) чтобы охватить оставшихся честных пользователей, намного меньше Λ, и для простоты мы не напишите это в анализе. Если 4\(\lambda\) \(\geq\) \(\lambda\)′, то анализ проходит без изменений: к концу шага 4 все честные пользователи получили бы mr,1 \(\ell\). Если размер блока становится огромным и 4\(\lambda\) < \(\lambda\)′, то на шагах 3 и 4 протокол может попросить каждого проверяющего дождаться \(\lambda\)'/2, а не 2\(\lambda\), и анализ продолжится.Как и раньше, игрок i′ должен получить не менее tH действительных (r, s∗−1)-сообщений вида (ESIGj(1), ESIGj(vj), \(\sigma\)r,s∗−1 дж ). Опять же, по определению s∗, не существует шага 5 \(\leq\)s′ < s∗ с s′ −2 ≡0 mod 3, где по крайней мере tH (r, s′ −1)-верификаторов имеют знак 0 и тот же v. Таким образом, игрок i' останавливается, ничего не распространяя; устанавливает Br = Br й; и наборы его собственный CERT r — это набор действительных (r, s∗−1)-сообщений для бита 1, которые он получил. Более того, любой другой верификатор i \(\in\)HSV r,s∗ либо остановился с Br = Br ϫ или установил bi = 1 и распространяется (ESIGi(1), ESIGi(vi), \(\sigma\)r,s∗ я ). Поскольку игрок i' способствовал распространению (r, s∗−1)-сообщения в его CERT r к моменту времени \(\alpha\)r,s∗ я' + ts∗, снова все честные проверяющие в HSV r,s∗+1 останавливаемся, ничего не распространяя, и устанавливаем Br = Br й. Аналогично, все честно пользователи знают Br = Br ϫ в интервале времени Ir+1 и Т r+1 \(\leq\) \(\alpha\)r,s∗ я' + ts∗\(\leq\)T r + \(\lambda\) + ts∗. Случай 2.2.а. Событие E.a происходит, и не существует честного проверяющего i′ \(\in\)HSV r,s∗, который также должен остановиться, ничего не распространяя. В этом случае обратите внимание, что игрок i∗ может иметь действительный CERT r i∗состоящий из желаемого tH (r, s∗−1)-сообщения, которые Противник может собирать или генерировать. Однако злонамеренный проверяющие могут не способствовать распространению этих сообщений, поэтому мы не можем заключить, что честный пользователи получат их за время \(\lambda\). В самом деле, |MSV r,s∗−1| из этих сообщений могут быть от злонамеренные (r, s∗−1)-верификаторы, которые вообще не распространяли свои сообщения, а только отправляли их злонамеренным проверяющим на этапе s∗. Как и в случае 2.1.a, здесь мы имеем s∗−2 ≡0 mod 3, шаг s∗ — это шаг с фиксированной монетой до 0, и (r, s∗−1)-сообщения в CERT r i∗ относятся к биту 0 и v = H(Br \(\ell\)). Действительно, все честно (r, s∗−1)-верификаторы знака v, поэтому Противник не может сгенерировать tH действительных (r, s∗−1)-сообщений для другого v'. Более того, все честные (r, s∗)-верификаторы дождались времени ts∗ и не увидели > 2/3 большинства для бита 1, опять же потому, что |HSV r,s∗−1| + 4|MSV r,s∗−1| < 2н. Таким образом, каждый честный проверяющий i \(\in\)HSV r,s∗sets bi = 0, vi = H(Br \(\ell\)) большинством голосов и распространяет mr,s∗ я = (ESIGi(0), ESIGi(H(Br \(\ell\))) \(\sigma\)r,s∗ я ) в момент времени \(\alpha\)r,s∗ я + тс∗. Теперь рассмотрим честных проверяющих на шаге s∗+ 1 (это шаг с фиксированной монетой до 1). Если Злоумышленник фактически отправляет сообщения в CERT r. i∗ к некоторым из них и заставляет их стоп, тогда аналогично случаю 2.1.а все честные пользователи знают Br = Br \(\ell\)в пределах временного интервала ИК+1 и Т r+1 \(\leq\)T r + \(\lambda\) + ts∗+1. В противном случае все честные проверяющие на шаге s∗+1 получили все (r, s∗)-сообщения для 0 и Ч(Бр \(\ell\)) от HSV r,s∗ после времени ожидания ts∗+1, что приводит к большинству > 2/3, поскольку |HSV r,s∗| > 2|MSV r,s∗|. Таким образом, все верификаторы в HSV r,s∗+1 распространяют свои сообщения для 0 и H(Br \(\ell\)) соответственно. Обратите внимание, что верификаторы в HSV r,s∗+1 не останавливаются на Br = Br. \(\ell\), потому что шаг s∗+ 1 не является шагом с фиксированной монетой до 0. Теперь рассмотрим честных проверяющих на шаге s∗+2 (который является шагом подбрасывания монеты). Если злоумышленник отправляет сообщения в CERT r i∗ к некоторым из них и заставляет их остановиться, опять же все честные пользователи знают Бр = Бр \(\ell\)в интервале времени Ir+1 и Т r+1 \(\leq\)T r + \(\lambda\) + ts∗+2.В противном случае все честные проверяющие на шаге s∗+ 2 получили все (r, s∗+ 1)-сообщения для 0 и H(Br \(\ell\)) от HSV r,s∗+1 после времени ожидания ts∗+2, что приводит к большинству > 2/3. Таким образом, все они распространяют свои сообщения для 0 и H(Br \(\ell\)) соответственно: вот они и делают в данном случае не стоит «подбрасывать монетку». Опять же, обратите внимание, что они не прекращаются, не распространяясь. потому что шаг s∗+ 2 не является шагом с фиксированной монетой до 0. Наконец, для честных проверяющих на этапе s∗+3 (который является еще одним шагом Coin-Fixed-To-0) все из них получили бы как минимум tH действительных сообщений для 0 и H(Br \(\ell\)) из HSV s∗+2, если они действительно ждут время ts∗+3. Таким образом, независимо от того, отправляет ли Противник сообщения в CERT р i∗ к любому из них, все верификаторы в HSV r,s∗+3 останавливаются с Br = Br \(\ell\), без пропагандируя что-либо. В зависимости от того, как действует Противник, некоторые из них могут иметь собственный CERT r, состоящий из этих (r, s∗−1)-сообщений в CERT r i∗, а остальные имеют свой собственный CERT r, состоящий из этих (r, s∗+ 2)-сообщений. В любом случае, все честные пользователи знать Br = Br \(\ell\)в интервале времени Ir+1 и Т r+1 \(\leq\)T r + \(\lambda\) + ts∗+3. Случай 2.2.б. Событие E.b происходит, и не существует честного проверяющего i′ \(\in\)HSV r,s∗, который также должен остановиться, ничего не распространяя. Анализ в этом случае аналогичен анализам в случае 2.1.b и случае 2.2.a, поэтому много деталей. были опущены. В частности, CERT r i∗состоит из tH искомых (r, s∗−1)-сообщений для бита 1, который противник может собрать или сгенерировать, s∗−2 ≡1 mod 3, шаг s∗ — это Шаг Coin-Fixed-To-1, и ни один честный (r, s∗)-верификатор не смог бы увидеть большинство > 2/3 для 0. Таким образом, каждый верификатор i \(\in\)HSV r,s∗ устанавливает bi = 1 и распространяет mr,s∗ я = (ESIGi(1), ESIGi(vi), \(\sigma\)r,s∗ я ) в момент времени \(\alpha\)r,s∗ я + тс∗. Как и в случае 2.2.а, не более чем за 3 шага (т. е. протокол достигает шага s∗+3, что является еще одним шагом Coin-Fixed-To-1), все честные пользователи знают Br = Br ψ в интервале времени Ir+1. Более того, T r+1 может быть \(\leq\)T r+\(\lambda\)+ts∗+1 или \(\leq\)T r+\(\lambda\)+ts∗+2, или \(\leq\)T r + \(\lambda\) + ts∗+3, в зависимости от того, когда честный проверяющий впервые сможет остановить без распространения. Объединив четыре подслучая, мы получаем, что все честные пользователи знают Br в пределах временного интервала. ИК+1, с T r+1 \(\leq\)T r + \(\lambda\) + ts∗ в случаях 2.1.a и 2.1.b, и T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 в случаях 2.2.a и 2.2.b. Осталось оценить сверху s∗ и, следовательно, T r+1 для случая 2, и мы делаем это, рассматривая, как много раз этапы «Genuinely-Flipped» действительно выполняются в протоколе: то есть некоторые честные проверяющие действительно подбросили монетку. В частности, произвольно зафиксируйте шаг «подлинно подброшенной монеты» s′ (т. е. 7 \(\leq\)s′ \(\leq\)m + 2 и s′ −2 ≡2 mod 3), и пусть \(\ell\)′ \(\triangleq\)arg minj\(\in\)SV r,s′−1 H(\(\sigma\)r,s′−1 дж ). А пока предположим, что s′ < s∗, потому что в противном случае ни один честный проверяющий на самом деле не подбросит монету на шагах s', согласно предыдущему дискуссии. По определению SV r,s'-1, значение hash учетных данных \(\ell\)' также является наименьшим среди все пользователи в PKr-k. Поскольку функция hash является случайной oracle, в идеале игрок \(\ell\)′ честен с вероятность не менее h. Как мы покажем позже, даже если Противник изо всех сил старается предсказать исход событий, выведите случайный oracle и наклоните вероятность, игрок \(\ell\)' все еще честен с вероятностьюхотя бы ph = h2(1 + h−h2). Ниже мы рассмотрим случай, когда это действительно имеет место, т. е. \(\ell\)′ \(\in\)HSV r,s′−1. Обратите внимание, что каждый честный проверяющий i \(\in\)HSV r,s′ получил все сообщения от HSV r,s′−1 по время \(\alpha\)r,s′ я + ц'. Если игроку i нужно подбросить монетку (т. е. он не набрал большинства более 2/3 за тот же бит b \(\in\) {0, 1}), то он устанавливает bi = lsb(H(\(\sigma\)r,s′−1 \(\ell\)' )). Если существует еще один честный проверяющий i′ \(\in\)HSV r,s′, который набрал > 2/3 большинства для бита b \(\in\) {0, 1}, то по свойству (d) из леммы 5.5 ни один честный проверяющий в HSV r,s' какое-то время не получил бы большинства > 2/3 б′ ̸= б. Поскольку lsb(H(\(\sigma\)r,s′−1 \(\ell\)' )) = b с вероятностью 1/2 все честные проверяющие в HSV r,s′ достигают согласие по b с вероятностью 1/2. Конечно, если такого верификатора i' не существует, то все честные верификаторы в HSV r,s' согласовывают бит lsb(H(\(\sigma\)r,s'−1 \(\ell\)' )) с вероятностью 1. Объединив вероятность для \(\ell\)′ \(\in\)HSV r,s′−1, мы получаем, что честные проверяющие в HSV r,s′ достичь согласия по биту b \(\in\){0, 1} с вероятностью не менее ph 2 = h2(1+h−h2) 2 . Более того, путем индукции по большинству голосов, как и раньше, все честные проверяющие в HSV r,s' имеют набор vi быть H(Br \(\ell\)). Таким образом, как только на шаге s будет достигнуто соглашение по b, Tr+1 будет либо \(\leq\)T r + \(\lambda\) + ts′+1, либо \(\leq\)T r + \(\lambda\) + ts′+2, в зависимости от того, b = 0 или b = 1, после анализа случаев 2.1.a и 2.1.b. В В частности, дальнейший шаг Coin-Genuinely-Flipped выполняться не будет: то есть проверяющие в такие шаги по-прежнему проверяют, что они являются проверяющими, и поэтому ждут, но все они остановятся без пропагандируя что-либо. Соответственно, перед шагом s∗ количество раз выполнения шагов Coin-GenuinelyFlipped распределяется согласно случайной величине Lr. Позволяя шагу s' быть последним шагом действительно подброшенной монеты согласно Lr, согласно построению протокола у нас есть s′ = 4 + 3Lr. Когда Противнику следует сделать Шаг s∗, если он хочет задержать T r+1 настолько, насколько возможно? Можно даже предположить, что Противник заранее знает реализацию Lr. Если s∗> s′, то это бесполезно, потому что честные проверяющие уже пришли к соглашению в Шаг с'. Конечно, в этом случае s∗ будет s′ +1 или s′ +2, опять же в зависимости от того, b = 0 или b = 1. Однако на самом деле это случаи 2.1.a и 2.1.b, и результирующий T r+1 в точности соответствует так же, как и в том случае. Точнее, Т r+1 \(\leq\)T r + \(\lambda\) + ts∗\(\leq\)T r + \(\lambda\) + ts′+2. Если s∗< s′ −3, то есть s∗ находится перед предпоследним шагом «подлинного подбрасывания монеты», то по анализ случаев 2.2.а и 2.2.б, T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 < Tr + \(\lambda\) + ts′. То есть Противник фактически ускоряет достижение соглашения по Бр. Если s∗= s′ −2 или s′ −1, то есть шаг Coin-Fixed-To-0 или шаг Coin-Fixed-To-1 непосредственно перед шагом s', а затем путем анализа четырех подслучаев честные проверяющие в Шаги s' больше не могут подбрасывать монеты, потому что они либо остановились, не распространяясь, или видели > 2/3 большинства для того же бита b. Поэтому у нас есть Т r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 \(\leq\)T r + \(\lambda\) + ts′+2.В общем, как бы то ни было, мы имеем Т r+1 \(\leq\)T r + \(\lambda\) + ts′+2 = T r + \(\lambda\) + t3Lr+6 = Т r + \(\lambda\) + (2(3Lr + 6) −3)\(\lambda\) + Λ = Т г + (6Lr + 10)\(\lambda\) + Λ, как мы хотели показать. Худший случай — когда s∗= s′ −1 и имеет место случай 2.2.b. Объединяя случаи 1 и 2 бинарного протокола BA, лемма 5.3 верна. ■ 5,9 Безопасность начального Qr и вероятность честного лидера Осталось доказать лемму 5.4. Напомним, что верификаторы в раунде r берутся из PKr−k и выбираются по величине Qr−1. Причина введения параметра ретроспективного анализа k состоит в том, чтобы убедиться, что на этапе r -k, когда Противник сможет добавить новых злонамеренных пользователей относительно PKr−k, он не может предсказать величину Qr−1, кроме как с пренебрежимо малой вероятностью. Обратите внимание, что Функция hash представляет собой случайную oracle, а Qr-1 является одним из ее входных данных при выборе проверяющих для раунда r. Таким образом, сколько бы злонамеренных пользователей ни добавляли в PKr-k, с точки зрения Злоумышленника каждый один из них по-прежнему выбирается в качестве проверяющего на этапе раунда r с требуемой вероятностью p (или p1 для шага 1). Точнее, имеем следующую лемму. Лемма 5.6. При k = O(log1/2 F) в каждом раунде r с подавляющей вероятностью Противник не запрашивал Qr-1 случайному oracle еще в раунде r -k. Доказательство. Мы действуем по индукции. Предположим, что для каждого раунда \(\gamma\) < r Противник не запрашивал Q\(\gamma\)−1 случайному oracle в раунде \(\gamma\) −k.21. Рассмотрим следующую мысленную игру, в которую играет Противник на раунде r−k пытается предсказать Qr−1. На шаге 1 каждого раунда \(\gamma\) = r −k, . . . , r−1, учитывая конкретный Q\(\gamma\)−1, не запрашиваемый в случайном oracle, упорядочив игроков i \(\in\)PK\(\gamma\)−k в соответствии со значениями hash H(SIGi(\(\gamma\), 1, Q\(\gamma\)−1)) все чаще мы получаем случайную перестановку над PK\(\gamma\)−k. По определению, лидер \(\ell\) \(\gamma\) – это первый пользователь в перестановке и честен с вероятностью h. Более того, когда PK\(\gamma\)−k велико достаточно, чтобы для любого целого числа x \(\geq\)1 вероятность того, что все первые x пользователей в перестановке являются злонамеренный, но (x + 1)-й честный — это (1 −h)xh. Если \(\ell\) \(\gamma\) честный, то Q\(\gamma\) = H(SIG\(\ell\) \(\gamma\)(Q\(\gamma\)−1), \(\gamma\)). Поскольку Противник не может подделать подпись от \(\ell\) \(\gamma\), Q\(\gamma\) распределяется равномерно случайным образом с точки зрения Противника и, за исключением с экспоненциально малой вероятностью22 не был запрошен H на этапе r −k. Поскольку каждый Q\(\gamma\)+1, Q\(\gamma\)+2, . . . , Qr−1 соответственно является выходом H с Q\(\gamma\), Q\(\gamma\)+1, . . . , Qr−2 в качестве одного из входов, все они кажутся противнику случайными, и противник не мог запросить Qr-1 к H в раунд r −k. Соответственно, единственный случай, когда Противник может с хорошей вероятностью предсказать Qr-1 на раунде r−k — это когда все лидеры \(\ell\)r−k, . . . , \(\ell\)r−1 являются вредоносными. Снова рассмотрим раунд \(\gamma\) \(\in\){r−k. . . , r−1} и случайная перестановка над PK\(\gamma\)-k, вызванная соответствующими значениями hash. Если для некоторых x \(\geq\)2, все первые x−1 пользователей в перестановке являются злонамеренными, а x-й — честными, тогда У противника есть x возможных вариантов выбора Q\(\gamma\): любой из форм H(SIGi(Q\(\gamma\)−1, \(\gamma\))), где i — один из 21Поскольку k — небольшое целое число, без ограничения общности можно предположить, что первые k раундов протокола выполняются в безопасной среде, и индуктивная гипотеза справедлива для этих раундов. 22То есть экспоненциально зависит от длины вывода H. Обратите внимание, что эта вероятность намного меньше, чем F.первых x-1 злоумышленников, сделав игрока i фактическим лидером раунда \(\gamma\); или H(Q\(\gamma\)−1, \(\gamma\)), по формуле заставляя B\(\gamma\) = B\(\gamma\) й. В противном случае лидер раунда \(\gamma\) будет первым честным пользователем в перестановке. и Qr-1 становится непредсказуемым для Противника. Какой из вышеперечисленных x вариантов Q\(\gamma\) должен использовать Противник? Чтобы помочь противнику ответьте на этот вопрос, в мысленной игре мы на самом деле делаем его более могущественным, чем он есть на самом деле заключается в следующем. Прежде всего, на самом деле Злоумышленник не может вычислить hash аккаунта честного пользователя. подпись, таким образом, не может определить для каждого Q\(\gamma\) количество x(Q\(\gamma\)) злонамеренных пользователей в начале случайной перестановки в раунде \(\gamma\) + 1, индуцированной Q\(\gamma\). В мысленной игре мы даем ему числа x(Q\(\gamma\)) бесплатно. Во-вторых, на самом деле, если в перестановке есть первые x пользователей, то все злонамеренность не обязательно означает, что их всех можно сделать лидерами, потому что hash значения их сигнатур также должны быть меньше p1. Мы проигнорировали это ограничение в мысленном игре, давая Противнику еще больше преимуществ. Легко видеть, что в мысленной игре оптимальный вариант Противника, обозначаемый ˆQ\(\gamma\), тот, который создает самую длинную последовательность злонамеренных пользователей в начале случайного перестановка в раунде \(\gamma\) + 1. Действительно, при заданном Q\(\gamma\) протокол не зависит от Q\(\gamma\)−1 больше, и Противник может сосредоточиться исключительно на новой перестановке в раунде \(\gamma\) + 1, которая имеет такое же распределение по количеству злоумышленников в начале. Соответственно, в каждом раунде \(\gamma\), упомянутый выше ˆQ\(\gamma\) дает ему наибольшее количество вариантов для Q\(\gamma\)+1 и тем самым максимизирует вероятность того, что все последовательные лидеры являются злонамеренными. Таким образом, в ментальной игре Противник следует Цепи Маркова с раунда r −k. для округления r−1, при этом пространство состояний равно {0} \(\cup\){x : x \(\geq\)2}. Состояние 0 представляет собой тот факт, что первый пользователь в случайной перестановке в текущем раунде \(\gamma\) честен, таким образом, Противник терпит неудачу игра по предсказанию Qr−1; и каждое состояние x \(\geq\)2 представляет собой тот факт, что первые x −1 пользователей в перестановки вредоносны, а x-я честна, таким образом, у Противника есть x вариантов для Q\(\gamma\). вероятности перехода P(x, y) следующие. • P(0, 0) = 1 и P(0, y) = 0 для любого y \(\geq\)2. То есть Противник проигрывает игру, как только первый раз пользователь в перестановке становится честным. • P(x, 0) = hx для любого x \(\geq\)2. То есть с вероятностью hx все случайные перестановки x имеют их первые пользователи честны, поэтому Противник проигрывает игру в следующем раунде. • Для любых x \(\geq\)2 и y \(\geq\)2 P(x, y) — это вероятность того, что среди случайных перестановок x вызванный опциями x Q\(\gamma\), самой длинной последовательностью злонамеренных пользователей в начале некоторые из них равны y−1, поэтому у Противника есть y вариантов для Q\(\gamma\)+1 в следующем раунде. То есть, Р(х, у) = у-1 Х я = 0 (1 −h)ih !х − у-2 Х я = 0 (1 −h)ih !х = (1 −(1 −h)y)x −(1 −(1 −h)y−1)x. Обратите внимание, что состояние 0 является уникальным поглощающим состоянием в матрице перехода P, а любое другое состояние x имеет положительную вероятность перехода к 0. Нас интересует ограничение сверху числа k раундов, необходимых для того, чтобы цепь Маркова с подавляющей вероятностью сошлась к 0: то есть нет независимо от того, в каком состоянии начинается цепочка, с подавляющей вероятностью Противник проиграет игру и не может предсказать Qr−1 на раунде r−k. Рассмотрим матрицу перехода P (2) \(\triangleq\)P \(\cdot\) P после двух раундов. Легко видеть, что P (2)(0, 0) = 1 и P (2)(0, x) = 0 для любого x \(\geq\)2. Для любых x \(\geq\)2 и y \(\geq\)2, поскольку P(0, y) = 0, имеем P (2)(x, y) = P(x, 0)P(0, y) + Х z\(\geq\)2 P(x, z)P(z, y) = Х z\(\geq\)2 Р(х, z)Р(z, у).Полагая ¯h \(\triangleq\)1 −h, имеем P(x, y) = (1 −¯hy)x −(1 −¯hy−1)x и Р (2)(х, у) = Х z\(\geq\)2 [(1 −¯hz)x −(1 −¯hz−1)x][(1 −¯hy)z −(1 −¯hy−1)z]. Ниже мы вычисляем предел P (2)(x,y) Р (х,у) когда h стремится к 1, то есть ¯h стремится к 0. Обратите внимание, что наивысший порядок ¯h в P(x, y) равен ¯hy−1 с коэффициентом x. Соответственно, Лим ч→1 Р (2)(х, у) Р(х, у) = Лим ¯ч→0 Р (2)(х, у) Р(х, у) = Лим ¯ч→0 Р (2)(х, у) x¯hy−1 + O(¯hy) = Лим ¯ч→0 П z\(\geq\)2[x¯hz−1 + O(¯hz)][z¯hy−1 + O(¯hy)] x¯hy−1 + O(¯hy) = Лим ¯ч→0 2x¯hy + O(¯hy+1) x¯hy−1 + O(¯hy) = Лим ¯ч→0 2x¯hy x¯hy−1 = lim ¯h \(\to\) 0 2¯h = 0. Когда h достаточно близко к 1,23, мы имеем Р (2)(х, у) Р(х, у) \(\leq\)1 2 для любых x \(\geq\)2 и y \(\geq\)2. По индукции для любого k > 2 P (k) \(\triangleq\)P k таково, что • P (k)(0, 0) = 1, P (k)(0, x) = 0 для любого x \(\geq\)2 и • для любых x \(\geq\)2 и y \(\geq\)2, P (k)(x, y) = P (k−1)(x, 0)P(0, y) + Х z\(\geq\)2 P (k−1)(x, z)P(z, y) = Х z\(\geq\)2 P (k−1)(x, z)P(z, y) \(\leq\) Х z\(\geq\)2 Р(х, г) 2k−2 \(\cdot\) P(z, y) = P (2)(x, y) 2k−2 \(\leq\)Р(х, у) 2к-1. Поскольку P(x, y) \(\leq\)1, после 1−log2 F раундов вероятность перехода в любое состояние y \(\geq\)2 пренебрежимо мала, начиная с любого состояния x \(\geq\)2. Хотя таких состояний много, легко видеть, что Лим y→+∞ Р(х, у) Р(х, у + 1) = Лим y→+∞ (1 −¯hy)x −(1 −¯hy−1)x (1 −¯hy+1)x −(1 −¯hy)x = Лим y→+∞ ¯hy−1 −¯hy ¯hy −¯hy+1 = 1 ¯h = 1 1-ч. Поэтому каждая строка x матрицы перехода P убывает как геометрическая последовательность со скоростью 1 1−h > 2 когда y достаточно велико, и то же самое справедливо и для P (k). Соответственно, когда k достаточно велико, но все же порядка log1/2 F, P y\(\geq\)2 P (k)(x, y) < F для любого x \(\geq\)2. То есть с большой вероятностью Противник проигрывает игру и не может предсказать Qr−1 в раунде r −k. Для h \(\in\)(2/3, 1] более комплексный анализ показывает, что существует константа C, немного большая, чем 1/2, такая, что ее достаточно взять k = O(logC F). Таким образом, лемма 5.6 верна. ■ Лемма 5.4. (переформулировано) Учитывая свойства 1–3 для каждого раунда до r, ph = h2(1 + h −h2) для Lr, а лидер \(\ell\)r честен с вероятностью не менее тел. 23Например, h = 80%, как следует из конкретного выбора параметров.

Доказательство. Согласно лемме 5.6, противник не может предсказать Qr-1 обратно в раунде r-k, за исключением случаев, когда ничтожная вероятность. Обратите внимание, что это не означает, что вероятность честного лидера равна h для каждый раунд. Действительно, учитывая Qr-1, в зависимости от того, сколько злоумышленников было в начале случайной перестановки PKr−k, противник может иметь более одного варианта для Qr и таким образом, может увеличить вероятность злонамеренного лидера в раунде r + 1 — мы снова даем ему некоторые нереальные преимущества, как в лемме 5.6, чтобы упростить анализ. Однако для каждого Qr−1, который не был запрошен H противником в раунде r −k, для любой x \(\geq\)1, с вероятностью (1−h)x−1h первый честный пользователь встречается на позиции x в результирующем случайная перестановка PKr−k. При x = 1 вероятность честного лидера в раунде r + 1 равна действительно ч; а когда x = 2, у Противника есть два варианта Qr, и результирующая вероятность равна ч2. Только рассмотрев эти два случая, мы получаем, что вероятность честного лидера в раунде r + 1 равно как минимум h \(\cdot\) h + (1 −h)h \(\cdot\) h2 = h2(1 + h −h2), как и хотелось. Обратите внимание, что приведенная выше вероятность учитывает только случайность в протоколе из раунда r −k. округлить р. Если принять во внимание всю случайность от раунда 0 до раунда r, Qr−1 равен еще менее предсказуем для Противника и вероятность честного лидера в раунде r+1 равна минимум h2(1 + h −h2). Заменив r+1 на r и сдвигая всё назад на один раунд, лидер \(\ell\)r честно с вероятностью не менее h2(1 + h−h2), как и хотелось. Аналогично, на каждом этапе «подлинного подбрасывания монеты» «лидер» этого шага — то есть проверяющий. в SV r,s, чьи учетные данные имеют наименьшее значение hash, честны с вероятностью не менее h2(1 + ч − h2). Таким образом, ph = h2(1 + h −h2) для Lr и лемма 5.4 выполнена. ■

Algorand ′

2 In diesem Abschnitt erstellen wir eine Version von Algorand ′, die unter der folgenden Annahme arbeitet. Annahme: Ehrliche Mehrheit der Benutzer: Mehr als 2/3 der Benutzer in jedem PKr sind ehrlich. In Abschnitt 8 zeigen wir, wie man die obige Annahme durch die gewünschte ehrliche Mehrheit ersetzt Geldannahme. 6.1 Zusätzliche Notationen und Parameter für Algorand ′ 2 Notationen • \(\mu\) \(\in\)Z+: eine pragmatische Obergrenze für die Anzahl der Schritte, die mit überwältigender Wahrscheinlichkeit wird tatsächlich in einer Runde genommen. (Wie wir sehen werden, steuert der Parameter \(\mu\), wie viele ephemere Schlüssel, die ein Benutzer im Voraus für jede Runde vorbereitet.) • Lr: eine Zufallsvariable, die die Anzahl der Bernoulli-Versuche darstellt, die erforderlich sind, um jeweils eine 1 zu sehen Versuch ist 1 mit Wahrscheinlichkeit ph 2 . Lr wird verwendet, um die für die Generierung benötigte Zeit nach oben zu begrenzen Block Br. • tH: eine Untergrenze für die Anzahl ehrlicher Verifizierer in einem Schritt s > 1 der Runde r, so dass mit Überwältigende Wahrscheinlichkeit (vorausgesetzt n und p), es gibt > tH ehrliche Verifizierer in SV r,s. Parameter • Beziehungen zwischen verschiedenen Parametern. — Für jeden Schritt s > 1 der Runde r wird n so gewählt, dass mit überwältigender Wahrscheinlichkeit

|HSV r,s| > tH und |HSV r,s| + 2|MSV r,s| < 2tH. Beachten Sie, dass die beiden obigen Ungleichungen zusammen |HSV r,s| implizieren > 2|MSV r,s|: das heißt, dort ist eine 2/3 ehrliche Mehrheit unter den ausgewählten Prüfern. Je näher der Wert von h an 1 liegt, desto kleiner muss n sein. Insbesondere verwenden wir (Varianten von) Chernoff-Grenzen, um sicherzustellen, dass die gewünschten Bedingungen mit überwältigender Wahrscheinlichkeit eintreten. • Beispielhafte Auswahl wichtiger Parameter. — F = 10−18. — n \(\approx\)4000, tH \(\approx\)0,69n, k = 70. 6.2 Implementierung kurzlebiger Schlüssel in Algorand ′ 2 Denken Sie daran, dass ein Verifizierer i \(\in\)SV r,s seine Nachricht mr,s digital signiert ich der Schritte s in Runde r, relativ zu ein kurzlebiger öffentlicher Schlüssel pkr,s i , unter Verwendung eines kurzlebigen geheimen Schlüssels skr,s ich dass er sofort zerstört nach der Verwendung. Wenn die Anzahl der möglichen Schritte, die eine Runde machen darf, durch eine bestimmte Grenze begrenzt ist Ganzzahl \(\mu\) haben wir bereits gesehen, wie man ephemere Schlüssel praktisch handhabt. Zum Beispiel, wie wir habe erklärt in Algorand ′ 1 (wobei \(\mu\) = m + 3), um alle seine möglichen kurzlebigen Schlüssel zu verarbeiten Eine Runde r′ zu einer Runde r′ + 106, i erzeugt ein Paar (PMK, SMK), wobei PMK öffentlicher Master ist Schlüssel eines identitätsbasierten Signaturschemas und SMK sein entsprechender geheimer Hauptschlüssel. Benutzer i veröffentlicht PMK und verwendet SMK, um den geheimen Schlüssel jedes möglichen kurzlebigen öffentlichen Schlüssels zu generieren (und zerstört danach SMK). Der Satz der kurzlebigen öffentlichen Schlüssel von i für das relevante Runden ist S = {i} \(\times\) {r′, . . . , r′ + 106} \(\times\) {1, . . . , \(\mu\)}. (Wie besprochen, wenn sich die Runde r′ + 106 nähert, Ich „aktualisiere“ sein Paar (PMK, SMK).) In der Praxis ergibt sich, wenn \(\mu\) groß genug ist, eine Runde von Algorand ′ 2 dauert nicht mehr als \(\mu\)-Schritte. In Prinzipiell besteht jedoch die entfernte Möglichkeit, dass für einige Runden die Anzahl der Schritte r ist tatsächlich eingenommen wird \(\mu\) überschreiten. Wenn das passiert, könnte ich seine Nachricht nicht unterschreiben, Herr ich für jeder Schritt s > \(\mu\), da er im Voraus nur \(\mu\) geheime Schlüssel für Runde r vorbereitet hat. Außerdem, er konnte, wie bereits besprochen, keinen neuen Vorrat an kurzlebigen Schlüsseln vorbereiten und veröffentlichen. Tatsächlich zu tun Daher müsste er einen neuen öffentlichen Hauptschlüssel PMK′ in einen neuen Block einfügen. Aber sollte r runden Wenn Sie immer mehr Schritte ausführen, werden keine neuen Blöcke generiert. Es gibt jedoch Lösungen. Zum Beispiel kann ich den letzten kurzlebigen Schlüssel der Runde r, pkr,\(\mu\) verwenden ich , wie folgt. Er generiert einen weiteren Vorrat an Schlüsselpaaren für Runde r – z. B. indem er (1) ein weiteres generiert Hauptschlüsselpaar (PMK, SMK); (2) Verwenden dieses Paares, um weitere, sagen wir, 106 kurzlebige Schlüssel zu generieren, sk r,\(\mu\)+1 ich , . . . , sk r,\(\mu\)+106 ich , entsprechend den Schritten \(\mu\)+1, ..., \(\mu\)+106 der Runde r; (3) mit skr,\(\mu\) ich zu digital Vorzeichen PMK (und jede (r, \(\mu\))-Nachricht, wenn i \(\in\)SV r,\(\mu\)), relativ zu pkr,\(\mu\) ich ; und (4) Löschen von SMK und skr,\(\mu\) ich . Soll ich in einem Schritt \(\mu\) + s mit s \(\in\){1, . . . , 106}, dann unterschreibe ich digital seine (r, \(\mu\) + s)- Nachricht mr,\(\mu\)+s ich relativ zu seinem neuen Schlüssel pk r,\(\mu\)+s ich = (i, r, \(\mu\) + s). Natürlich, um diese Signatur zu überprüfen Von i müssen andere sicher sein, dass dieser öffentliche Schlüssel dem neuen öffentlichen Hauptschlüssel PMK von i entspricht. Somit übermittelt i zusätzlich zu dieser Signatur seine digitale Signatur von PMK relativ zu pkr,\(\mu\) ich . Natürlich kann dieser Ansatz so oft wie nötig wiederholt werden, falls die Runde fortgesetzt wird für immer mehr Schritte! Der letzte ephemere geheime Schlüssel wird zur Authentifizierung einer neuen Master-Öffentlichkeit verwendet Schlüssel und damit ein weiterer Vorrat an kurzlebigen Schlüsseln für Runde r. Und so weiter.6.3 Das eigentliche Protokoll Algorand ′ 2 Erinnern Sie sich noch einmal daran, dass in jedem Schritt s einer Runde r ein Verifizierer i \(\in\)SV r,s sein langfristiges öffentliches Geheimnis verwendet Schlüsselpaar, um seinen Ausweis zu erzeugen, \(\sigma\)r,s ich \(\triangleq\)SIGi(r, s, Qr−1) sowie SIGi Qr−1 im Fall s = 1. Verifier i verwendet sein kurzlebiges Schlüsselpaar (pkr,s ich, skr,s i ), um jede andere Nachricht zu signieren erforderlich. Der Einfachheit halber schreiben wir esigi(m) statt sigpkr,s i (m), um die eigentliche Vergänglichkeit von i zu bezeichnen Signatur von m in diesem Schritt und schreiben Sie ESIGi(m) anstelle von SIGpkr,s i (m) \(\triangleq\)(i, m, esigi(m)). Schritt 1: Vorschlag blockieren Anweisungen für jeden Benutzer i \(\in\)PKr−k: Benutzer i beginnt seinen eigenen Schritt 1 der Runde r, sobald er dies getan hat CERT r−1, was es i ermöglicht, H(Br−1) und Qr−1 eindeutig zu berechnen. • Benutzer i verwendet Qr−1, um zu prüfen, ob i \(\in\)SV r,1 oder nicht. Wenn i /\(\in\)SV r,1, tut er für Schritt 1 nichts. • Wenn i \(\in\)SV r,1, das heißt, wenn i ein potenzieller Anführer ist, dann tut er Folgendes. (a) Wenn ich B0 gesehen habe, . . . , Br−1 selbst (jedes Bj = Bj ǫ kann leicht aus seinem hash-Wert abgeleitet werden in CERT j und wird daher als „gesehen“ angenommen), dann sammelt er die Round-R-Zahlungen ein, die er erhalten hat wurde ihm bisher propagiert und berechnet einen maximalen Payset PAY r ich von ihnen. (b) Wenn ich nicht alle B0 gesehen habe, . . . , Br−1 noch, dann setzt er PAY r ich = \(\emptyset\). (c) Als nächstes berechne ich seinen „Kandidatenblock“ Br i = (r, PAY r i , SIGi(Qr−1), H(Br−1)). (c) Schließlich berechnet i die Nachricht mr,1 ich = (Br ich, esigi(H(Br i )), \(\sigma\)r,1 i ), zerstört sein Vergängliches geheimer Schlüssel skr,1 i und verbreitet dann zwei Nachrichten, mr,1 ich und (SIGi(Qr−1), \(\sigma\)r,1 ich), getrennt, aber gleichzeitig.a aWenn i der Anführer ist, ermöglicht SIGi(Qr−1) anderen die Berechnung von Qr = H(SIGi(Qr−1), r).

Selektive Vermehrung Um die globale Ausführung von Schritt 1 und der gesamten Runde zu verkürzen, ist es wichtig, dass die (r, 1)- Nachrichten werden selektiv verbreitet. Das heißt, für jeden Benutzer j im System • Für die erste (r, 1)-Nachricht, die er jemals empfängt und erfolgreich überprüft, ob sie Folgendes enthält ein Block oder nur ein Berechtigungsnachweis und eine Signatur von Qr−1 ist, propagiert Spieler j ihn wie gewohnt. • Für alle anderen (r, 1)-Nachrichten, die Spieler j empfängt und erfolgreich verifiziert, propagiert er Dies gilt nur, wenn der hash-Wert der darin enthaltenen Anmeldeinformationen der kleinste unter den hash-Werten ist der in allen (r, 1)-Nachrichten enthaltenen Anmeldeinformationen, die er erhalten hat, und hat dies erfolgreich überprüft weit. • Empfängt j jedoch zwei verschiedene Nachrichten der Form mr,1 ich vom selben Spieler i,b er verwirft den zweiten, unabhängig vom hash-Wert der Anmeldeinformationen von i. Beachten Sie, dass es bei der selektiven Propagierung nützlich ist, dass jeder potenzielle Anführer seinen eigenen propagiert Ausweis \(\sigma\)r,1 ich getrennt von Herrn,1 i :c Diese kleinen Nachrichten verbreiten sich schneller als Blöcke, stellen Sie sicher rechtzeitige Ausbreitung des Herrn,1 i ist dort, wo die enthaltenen Anmeldeinformationen kleine hash-Werte haben, während Lassen Sie solche mit großen hash-Werten schnell verschwinden. aDas heißt, alle Signaturen sind korrekt und wenn es sich um die Form mr,1 handelt i , sowohl der Block als auch sein hash sind gültig – obwohl j nicht prüft, ob der enthaltene Gehaltssatz für i maximal ist oder nicht. bWas bedeutet, dass ich böswillig bin. cWir danken Georgios Vlachos für diesen Vorschlag.Schritt 2: Der erste Schritt des Graded Consensus Protocol GC Anweisungen für jeden Benutzer i \(\in\)PKr−k: Benutzer i beginnt seinen eigenen Schritt 2 der Runde r, sobald er dies getan hat CERT r−1. • Benutzer i wartet maximal t2 \(\triangleq\) \(\lambda\) + Λ. Während ich warte, verhalte ich mich wie folgt. 1. Nachdem er die Zeit 2\(\lambda\) abgewartet hat, findet er den Benutzer \(\ell\)so dass H(\(\sigma\)r,1 \(\ell\)) \(\leq\)H(\(\sigma\)r,1 j) für alle Referenzen \(\sigma\)r,1 j die Teil der erfolgreich verifizierten (r, 1)-Nachrichten sind, die er erhalten hat bisher.a 2. Wenn er hat erhalten a blockieren Br−1, welche Streichhölzer die hash Wert H(Br−1) im CERT r−1,b enthalten ist und ob er von \(\ell\)eine gültige Nachricht mr,1 erhalten hat \(\ell\) = (Br \(\ell\), esig\(\ell\)(H(Br \(\ell\))), \(\sigma\)r,1 \(\ell\)),c dann hört i auf zu warten und setzt v′ i \(\triangleq\)(H(Br \(\ell\)), \(\ell\)). 3. Andernfalls, wenn die Zeit t2 abläuft, setzt i v′ ich \(\triangleq\) \(\bot\). 4. Wenn der Wert von v′ i wurde gesetzt, i berechnet Qr−1 aus CERT r−1 und prüft, ob i \(\in\)SV r,2 oder nicht. 5. Wenn i \(\in\)SV r,2, berechnet i die Nachricht mr,2 ich \(\triangleq\)(ESIGi(v′ i), \(\sigma\)r,2 i ),d zerstört sein Vergängliches geheimer Schlüssel skr,2 i und propagiert dann mr,2 ich . Ansonsten höre ich auf, ohne mich weiterzuverbreiten irgendetwas. aIm Wesentlichen entscheidet Benutzer i privat, dass der Anführer der Runde r Benutzer \(\ell\) ist. bNatürlich, wenn CERT r−1 anzeigt, dass Br−1 = Br−1 ǫ , dann habe ich Br−1 in dem Moment, in dem er es hat, bereits „erhalten“. CERT r−1. cAuch hier sind die Unterschriften von Spieler \(\ell\) und die hashes alle erfolgreich verifiziert und ZAHLEN r \(\ell\)in Br \(\ell\)ist ein gültiger Gehaltssatz für rundes r – obwohl ich nicht prüfe, ob PAY r \(\ell\)ist maximal für \(\ell\)oder nicht. Wenn Br \(\ell\)enthält dann einen leeren Gehaltssatz Eigentlich ist es nicht nötig, dass ich Br−1 sehe, bevor ich verifiziere, ob Br \(\ell\)ist gültig oder nicht. dDie Nachricht mr,2 ich signalisiert, dass Spieler i die erste Komponente von v′ betrachtet i soll der hash des nächsten Blocks sein, oder betrachtet den nächsten Block als leer.

Schritt 3: Der zweite Schritt der GC Anweisungen für jeden Benutzer i \(\in\)PKr−k: Benutzer i beginnt seinen eigenen Schritt 3 der Runde r, sobald er dies getan hat CERT r−1. • Benutzer i wartet maximal t3 \(\triangleq\)t2 + 2\(\lambda\) = 3\(\lambda\) + Λ. Während ich warte, verhalte ich mich wie folgt. 1. Wenn ein Wert v existiert, so dass er mindestens die gültigen Nachrichten mr,2 erhalten hat j von die Form (ESIGj(v), \(\sigma\)r,2 j ), ohne jeden Widerspruch,a dann hört er auf zu warten und setzt v′ = v. 2. Ansonsten setzt er nach Ablauf der Zeit t3 v′ = \(\bot\). 3. Wenn der Wert von v′ festgelegt wurde, berechnet i Qr−1 aus CERT r−1 und prüft, ob i \(\in\)SV r,3 oder nicht. 4. Wenn i \(\in\)SV r,3, dann berechnet i die Nachricht mr,3 ich \(\triangleq\)(ESIGi(v′), \(\sigma\)r,3 i ), zerstört seine Vergänglicher geheimer Schlüssel skr,3 i und propagiert dann mr,3 ich . Ansonsten höre ich ohne auf irgendetwas verbreiten. aDas heißt, er hat keine zwei gültigen Nachrichten erhalten, die ESIGj(v) bzw. ein anderes ESIGj(ˆv) enthalten. von einem Spieler j. Hier und von nun an, außer in den später definierten Endbedingungen, wann immer ein ehrlicher Spieler Will Nachrichten einer bestimmten Form, werden widersprüchliche Nachrichten niemals gezählt oder als gültig angesehen.

Schritt 4: Ausgabe von GC und der erste Schritt von BBA⋆ Anleitung für jeden Benutzer i \(\in\)PKr−k: Benutzer i startet seinen eigenen Schritt 4 der Runde r, sobald er beendet seinen eigenen Schritt 3. • Benutzer i wartet maximal 2\(\lambda\).a Während des Wartens verhält sich i wie folgt. 1. Er berechnet vi und gi, die Ausgabe von GC, wie folgt. (a) Wenn es einen Wert v′ ̸= \(\bot\) gibt, so dass er mindestens die gültigen Nachrichten erhalten hat Herr,3 j = (ESIGj(v′), \(\sigma\)r,3 j ), dann hört er auf zu warten und setzt vi \(\triangleq\)v′ und gi \(\triangleq\)2. (b) Wenn er mindestens die gültigen Nachrichten mr,3 erhalten hat j = (ESIGj(\(\bot\)), \(\sigma\)r,3 j ), dann bleibt er stehen wartet und setzt vi \(\triangleq\) \(\bot\)und gi \(\triangleq\)0.b (c) Ansonsten, wenn die Zeit 2\(\lambda\) abläuft, wenn es einen Wert v′ ̸= \(\bot\) gibt, den er hat mindestens ⌈tH erhalten 2 ⌉gültige Nachrichten mr,j j = (ESIGj(v′), \(\sigma\)r,3 j ), dann setzt er vi \(\triangleq\)v′ und gi \(\triangleq\)1.c (d) Andernfalls, wenn die Zeit 2\(\lambda\) abläuft, setzt er vi \(\triangleq\) \(\bot\)und gi \(\triangleq\)0. 2. Wenn die Werte vi und gi festgelegt wurden, berechnet i bi, die Eingabe von BBA⋆, wie folgt: bi \(\triangleq\)0, wenn gi = 2, andernfalls bi \(\triangleq\)1. 3. i berechnet Qr−1 aus CERT r−1 und prüft, ob i \(\in\)SV r,4 oder nicht. 4. Wenn i \(\in\)SV r,4, berechnet er die Nachricht mr,4 ich \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,4 i ), zerstört seine Vergänglicher geheimer Schlüssel skr,4 i , und propagiert mr,4 ich . Ansonsten höre ich auf, ohne mich weiterzuverbreiten irgendetwas. aSomit könnte die maximale Gesamtzeit seit Beginn von Schritt 1 der Runde r t4 \(\triangleq\)t3 + 2\(\lambda\) = 5\(\lambda\) + Λ betragen. bOb Schritt (b) im Protokoll enthalten ist oder nicht, hat keinen Einfluss auf dessen Richtigkeit. Das Vorhandensein von Schritt (b) ermöglicht, dass Schritt 4 in weniger als 2\(\lambda\) Zeit endet, wenn ausreichend viele Prüfer von Schritt 3 „\(\bot\) signiert“ haben. cEs kann bewiesen werden, dass das v′ in diesem Fall, falls vorhanden, eindeutig sein muss.Schritt s, 5 \(\leq\)s \(\leq\)m + 2, s −2 ≡0 mod 3: Ein Coin-Fixed-To-0-Schritt von BBA⋆ Anleitung für jeden Benutzer i \(\in\)PKr−k: Benutzer i startet seine eigenen Schritte s der Runde r, sobald er beendet seinen eigenen Schritt s −1. • Benutzer i wartet maximal 2\(\lambda\).a Während des Wartens verhält sich i wie folgt. – Endbedingung 0: Wenn an irgendeinem Punkt eine Zeichenfolge v ̸= \(\bot\)und ein Schritt s′ existiert, so dass (a) 5 \(\leq\)s′ \(\leq\)s, s′ −2 ≡0 mod 3 – das heißt, Schritt s′ ist ein Coin-Fixed-To-0-Schritt, (b) i hat mindestens die gültigen Nachrichten mr,s′−1 erhalten j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ),b und (c) i hat eine gültige Nachricht erhalten (SIGj(Qr−1), \(\sigma\)r,1 j ), wobei j der zweite ist Komponente von v, dann hört i auf zu warten und beendet seine eigene Ausführung von Schritt s (und tatsächlich auch von Runde r) sofort, ohne etwas als (r, s)-Verifizierer zu propagieren; setzt H(Br) als erstes Komponente von v; und setzt sein eigenes CERT r auf die Menge der Nachrichten mr,s′−1 j von Schritt (b) zusammen mit (SIGj(Qr−1), \(\sigma\)r,1 j ).c – Endbedingung 1: Wenn es an irgendeinem Punkt einen Schritt s′ gibt, so dass (a’) 6 \(\leq\)s′ \(\leq\)s, s′ −2 ≡1 mod 3 – das heißt, Schritt s′ ist ein Coin-Fixed-To-1-Schritt, und (b’) i hat mindestens die gültigen Nachrichten mr,s′−1 erhalten j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ),d dann hört i auf zu warten und beendet seine eigene Ausführung von Schritt s (und tatsächlich auch von Runde r) richtig weg, ohne etwas als (r, s)-Verifizierer zu propagieren; setzt Br = Br ǫ ; und legt sein eigenes fest CERT r soll die Menge der Nachrichten mr,s′−1 sein j des Teilschritts (b‘). – Wenn bei irgendein Punkt er hat erhalten bei am wenigsten tH gültig mr,s−1 j ’s von die Formular (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), dann hört er auf zu warten und setzt bi \(\triangleq\)1. – Wenn bei irgendein Punkt er hat erhalten bei am wenigsten tH gültig mr,s−1 j ’s von die Formular (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), aber sie sind sich nicht auf dasselbe v einig, dann hört er auf wartet und setzt bi \(\triangleq\)0. – Ansonsten setzt i nach Ablauf der Zeit 2\(\lambda\) bi \(\triangleq\)0. – Wenn der Wert bi gesetzt wurde, berechnet i Qr−1 aus CERT r−1 und prüft, ob i \(\in\)SV r,s. – Wenn i \(\in\)SV r,s, berechnet i die Nachricht mr,s ich \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i) mit vi Der Wert, den er in Schritt 4 berechnet hat, zerstört seinen kurzlebigen Geheimschlüssel skr,s ich, und dann propagiert mr,s ich . Andernfalls höre ich auf, ohne etwas zu verbreiten. aSomit könnte die maximale Gesamtzeit seit Beginn von Schritt 1 der Runde r ts \(\triangleq\)ts−1 + 2\(\lambda\) = sein (2s −3)\(\lambda\) + Λ. bEine solche Nachricht von Spieler j wird auch dann gezählt, wenn Spieler i auch eine Nachricht von j erhalten hat, der für 1 signiert. Ähnliches gilt für Endbedingung 1. Wie in der Analyse gezeigt, soll damit sichergestellt werden, dass alle ehrlichen Benutzer Bescheid wissen CERT r innerhalb der Zeit \(\lambda\) voneinander entfernt. cUser i kennt jetzt H(Br) und seine eigenen Rundenenden. Er muss nur warten, bis der eigentliche Block Br ist an ihn weitergeleitet, was einige Zeit in Anspruch nehmen kann. Als allgemeiner Benutzer hilft er immer noch bei der Verbreitung von Nachrichten. löst aber keine Ausbreitung als (r, s)-Verifizierer aus. Insbesondere hat er dabei geholfen, alle Botschaften zu verbreiten sein CERT r, was für unser Protokoll ausreicht. Beachten Sie, dass er auch für das binäre BA-Protokoll bi \(\triangleq\)0 festlegen sollte, aber bi wird in diesem Fall sowieso nicht benötigt. Ähnliches gilt für alle zukünftigen Anweisungen. dIn diesem Fall spielt es keine Rolle, um welche VJs es sich handelt. 65Schritt s, 6 \(\leq\)s \(\leq\)m + 2, s −2 ≡1 mod 3: Ein Coin-Fixed-To-1-Schritt von BBA⋆ Anleitung für jeden Benutzer i \(\in\)PKr−k: Benutzer i startet seine eigenen Schritte s der Runde r, sobald er beendet seinen eigenen Schritt s −1. • Benutzer i wartet maximal 2\(\lambda\). Während ich warte, verhalte ich mich wie folgt. – Endbedingung 0: Dieselben Anweisungen wie in einem Coin-Fixed-To-0-Schritt. – Endbedingung 1: Die gleichen Anweisungen wie in einem Coin-Fixed-To-0-Schritt. – Wenn bei irgendein Punkt er hat erhalten bei am wenigsten tH gültig mr,s−1 j ’s von die Formular (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), dann hört er auf zu warten und setzt bi \(\triangleq\)0.a – Andernfalls, wenn die Zeit 2\(\lambda\) abläuft, setzt i bi \(\triangleq\)1. – Wenn der Wert bi gesetzt wurde, berechnet i Qr−1 aus CERT r−1 und prüft, ob i \(\in\)SV r,s. – Wenn i \(\in\)SV r,s, berechnet i die Nachricht mr,s ich \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i) mit vi Der Wert, den er in Schritt 4 berechnet hat, zerstört seinen kurzlebigen Geheimschlüssel skr,s ich, und dann propagiert mr,s ich . Andernfalls höre ich auf, ohne etwas zu verbreiten. aBeachten Sie, dass der Empfang gültiger (r, s −1)-Nachrichten mit der Signatur 1 die Endbedingung 1 bedeuten würde. Schritt s, 7 \(\leq\)s \(\leq\)m + 2, s −2 ≡2 mod 3: Ein münzecht umgedrehter Schritt von BBA⋆ Anleitung für jeden Benutzer i \(\in\)PKr−k: Benutzer i startet seine eigenen Schritte s der Runde r, sobald er beendet seinen eigenen Schritt s −1. • Benutzer i wartet maximal 2\(\lambda\). Während ich warte, verhalte ich mich wie folgt. – Endbedingung 0: Dieselben Anweisungen wie in einem Coin-Fixed-To-0-Schritt. – Endbedingung 1: Die gleichen Anweisungen wie in einem Coin-Fixed-To-0-Schritt. – Wenn bei irgendein Punkt er hat erhalten bei am wenigsten tH gültig mr,s−1 j ’s von die Formular (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), dann hört er auf zu warten und setzt bi \(\triangleq\)0. – Wenn bei irgendein Punkt er hat erhalten bei am wenigsten tH gültig mr,s−1 j ’s von die Formular (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), dann hört er auf zu warten und setzt bi \(\triangleq\)1. – Andernfalls, wenn die Zeit 2\(\lambda\) abläuft, gilt SV r,s−1 ich sei die Menge der (r, s −1)-Verifizierer aus wem er eine gültige Nachricht erhalten hat mr,s−1 j , i setzt bi \(\triangleq\)lsb(minj\(\in\)SV r,s−1 ich H(\(\sigma\)r,s−1 j )). – Wenn der Wert bi gesetzt wurde, berechnet i Qr−1 aus CERT r−1 und prüft, ob i \(\in\)SV r,s. – Wenn i \(\in\)SV r,s, berechnet i die Nachricht mr,s ich \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i) mit vi Der Wert, den er in Schritt 4 berechnet hat, zerstört seinen kurzlebigen Geheimschlüssel skr,s ich, und dann propagiert mr,s ich . Andernfalls höre ich auf, ohne etwas zu verbreiten. Bemerkung. Im Prinzip kann das Protokoll, wie in Unterabschnitt 6.2 dargelegt, beliebig viele annehmen Schritte in einer Runde. Sollte dies passieren, wie besprochen, ist ein Benutzer i \(\in\)SV r,s mit s > \(\mu\) erschöpft

seinen Vorrat an vorgenerierten kurzlebigen Schlüsseln und muss seine (r, s)-Nachricht mr,s authentifizieren ich von a „Kaskade“ vergänglicher Schlüssel. Dadurch wird meine Nachricht etwas länger und die Übermittlung dieser Daten länger Nachrichten werden etwas länger dauern. Dementsprechend ist nach so vielen Schritten einer bestimmten Runde der Wert von Der Parameter \(\lambda\) erhöht sich automatisch leicht. (Aber es kehrt erneut zum ursprünglichen \(\lambda\) zurück Block wird produziert und eine neue Runde beginnt.) Rekonstruktion des Round-r-Blocks durch Nicht-Verifizierer Anleitung für jeden Benutzer i im System: Benutzer i startet seine eigene Runde r, sobald er sie hat CERT r−1. • Ich befolge die Anweisungen jedes Schritts des Protokolls und beteilige mich an der Verbreitung aller Nachrichten, initiiert jedoch keine Weitergabe in einem Schritt, wenn er darin kein Verifizierer ist. • i beendet seine eigene Runde r, indem er in einigen Fällen entweder die Endbedingung 0 oder die Endbedingung 1 eingibt Schritt, mit dem entsprechenden CERT r. • Von da an beginnt er seine Runde r + 1, während er darauf wartet, den eigentlichen Block Br zu erhalten (es sei denn er hat es bereits erhalten), dessen hash H(Br) von CERT r festgelegt wurde. Nochmals, wenn CERT r gibt an, dass Br = Br ǫ, das i weiß Br, sobald er CERT r hat. 6.4 Analyse von Algorand ′ 2 Die Analyse von Algorand ′ 2 lässt sich leicht aus dem von Algorand ′ ableiten 1. Im Wesentlichen in Algorand ′ 2, mit überwältigende Wahrscheinlichkeit, (a) alle ehrlichen Benutzer stimmen dem gleichen Block Br zu; der Anführer eines neuen Block ist mit einer Wahrscheinlichkeit von mindestens ph = h2(1 + h − h2) ehrlich.

Algorand ′

2 В этом разделе мы создадим версию Algorand ′, работающую при следующем предположении. Допущение о честном большинстве пользователей: более 2/3 пользователей в каждом PKr честны. В разделе 8 мы покажем, как заменить приведенное выше предположение желаемым «Честным большинством». Денежное предположение. 6.1 Дополнительные обозначения и параметры для Algorand ′ 2 Обозначения • \(\mu\) \(\in\)Z+: прагматическая верхняя граница числа шагов, которые с подавляющей вероятностью фактически будет принято за один раунд. (Как мы увидим, параметр \(\mu\) контролирует количество эфемерных ключи, которые пользователь готовит заранее для каждого раунда.) • Lr: случайная величина, представляющая количество испытаний Бернулли, необходимых для получения 1, когда каждое испытание равно 1 с вероятностью ph 2 . Lr будет использоваться для верхней границы времени, необходимого для генерации блок Бр. • tH: нижняя граница числа честных проверяющих на этапе s > 1 раунда r, такая, что при с подавляющей вероятностью (при n и p), в SV r,s имеется > tH честных проверяющих. Параметры • Отношения между различными параметрами. — Для каждого шага s > 1 раунда r n выбирается так, чтобы с подавляющей вероятностью

|HSV r,s| > ТХ и |HSV r,s| + 2|МСВ г,с| < 2tH. Обратите внимание, что из двух приведенных выше неравенств вместе следует |HSV r,s| > 2|MSV r,s|: т.е. составляет 2/3 честного большинства среди выбранных проверяющих. Чем ближе к 1 значение h, тем меньше должно быть n. В частности, мы используем (варианты из) границ Чернова, обеспечивающих выполнение желаемых условий с подавляющей вероятностью. • Пример выбора важных параметров. — F = 10−18. — n \(\approx\)4000, tH \(\approx\)0,69n, k = 70. 6.2 Реализация эфемерных ключей в Algorand ′ 2 Напомним, что верификатор i \(\in\)SV r,s подписывает свое сообщение mr,s цифровой подписью. я шага s в раунде r относительно эфемерный открытый ключ pkr,s i, используя эфемерный секретный ключ skr,s я что он тут же уничтожает после использования. Когда количество возможных шагов, которые может сделать раунд, ограничено заданным целое число \(\mu\), мы уже видели, как практически обрабатывать эфемерные ключи. Например, как мы объяснили в Algorand ′ 1 (где \(\mu\) = m + 3), чтобы обрабатывать все возможные эфемерные ключи, начиная с от раунда r' до раунда r' + 106, я генерирует пару (PMK, SMK), где публичный мастер PMK ключ схемы подписи на основе идентичности, а SMK — соответствующий секретный главный ключ. Пользователь я публикует PMK и использует SMK для генерации секретного ключа каждого возможного эфемерного открытого ключа (и после этого уничтожает SMK). Набор эфемерных открытых ключей i для соответствующих раундов составляет S = {i} \(\times\) {r′, . . . , r′ + 106} \(\times\) {1, . . . , \(\mu\)}. (Как уже говорилось, по мере приближения раунда r' + 106 «обновляю» его пару (ПМК, СМК).) На практике, если \(\mu\) достаточно велико, раунд Algorand ′ 2 не займет более \(\mu\) шагов. В Однако в принципе существует отдаленная вероятность того, что для некоторого раунда r число шагов фактически принятое значение будет превышать \(\mu\). Когда это произойдет, я не смогу подписать его сообщение, мистер С. я для любой шаг s > \(\mu\), поскольку он заранее подготовил только \(\mu\) секретных ключей для раунда r. Более того, он не смог подготовить и опубликовать новый запас эфемерных ключей, как обсуждалось ранее. На самом деле, чтобы сделать поэтому ему нужно будет вставить новый открытый главный ключ PMK' в новый блок. Но если вокруг r делать все больше и больше шагов, новые блоки не будут генерироваться. Однако решения существуют. Например, я могу использовать последний эфемерный ключ раунда r, pkr,\(\mu\) я , следующим образом. Он генерирует еще один запас пар ключей для раунда r — например, с помощью (1) создания еще одного пара мастер-ключей (ПМК, СМК); (2) использование этой пары для генерации еще, скажем, 106 эфемерных ключей, ск г, \(\mu\)+1 я , . . . , ск г, \(\mu\)+106 я , соответствующий шагам \(\mu\)+1, ..., \(\mu\)+106 раунда r; (3) используя skr,\(\mu\) я в цифровом формате подпишите PMK (и любое (r, \(\mu\))-сообщение, если i \(\in\)SV r,\(\mu\)) относительно pkr,\(\mu\) я ; и (4) стирание SMK и skr,\(\mu\) я . Должен ли я стать проверяющим на шаге \(\mu\) + s с s \(\in\) {1, . . . , 106}, то я подписываю его цифровую подпись (r, \(\mu\) + s)- сообщение г-н,\(\mu\)+s я относительно его нового ключа ПК r,\(\mu\)+s я = (i, r, \(\mu\) + s). Разумеется, для проверки этой подписи из i другие должны быть уверены, что этот открытый ключ соответствует новому открытому главному ключу PMK i. Таким образом, в дополнение к этой подписи i передает свою цифровую подпись ПМК относительно pkr,\(\mu\) я . Конечно, этот подход можно повторять столько раз, сколько необходимо, если раунд r продолжится. для все большего и большего количества шагов! Последний эфемерный секретный ключ используется для аутентификации нового главного публичного ключа. ключ и, таким образом, еще один запас эфемерных ключей для раунда r. И так далее.6.3 Фактический протокол Algorand ′ 2 Напомним еще раз, что на каждом шаге s раунда r проверяющий i \(\in\)SV r,s использует свою долгосрочную общедоступную тайну. пара ключей для получения его учетных данных, \(\sigma\)r,s я \(\triangleq\)SIGi(r, s, Qr−1), а также SIGi Qr−1 в случае s = 1. Верификатор i использует свою пару эфемерных ключей (pkr,s я, скр,с i ), чтобы подписать любое другое сообщение m, которое может быть требуется. Для простоты будем писать esigi(m), а не sigpkr,s. i (m), чтобы обозначить собственное эфемерное значение i подпись m на этом этапе и напишите ESIGi(m) вместо SIGpkr,s i (m) \(\triangleq\) (i, m, esigi(m)). Шаг 1. Блокируйте предложение Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свой собственный шаг 1 раунда r, как только он CERT r−1, который позволяет i однозначно вычислить H(Br−1) и Qr−1. • Пользователь i использует Qr-1, чтобы проверить, принадлежит ли i SV r,1 или нет. Если i /\(\varepsilon\)SV r,1, он ничего не делает на шаге 1. • Если i \(\in\)SV r,1, то есть если я потенциальный лидер, то он делает следующее. (a) Если я увидел B0, . . . , сам Br−1 (любой Bj = Bj ǫ можно легко получить из его значения hash в CERT j и, таким образом, считается «просмотренным»), то он получает платежи раунда r, которые было передано ему на данный момент и вычисляет максимальный набор выплат PAY r я от них. (b) Если я не видел все B0, . . . , Br−1, то он устанавливает PAY r я = \(\emptyset\). (c) Далее я вычисляю его «блок кандидатов» Br i = (r, PAY r i , SIGi(Qr−1), H(Br−1)). (c) Наконец, я вычисляю сообщение mr,1 я = (Бр i , esigi(H(Br i ))), \(\sigma\)r,1 я), уничтожает его эфемерное секретный ключ скр,1 i , а затем распространяет два сообщения, mr,1 я и (SIGi(Qr−1), \(\sigma\)r,1 я), отдельно, но одновременно. aКогда i является лидером, SIGi(Qr-1) позволяет другим вычислить Qr = H(SIGi(Qr-1), r).

Выборочное распространение Чтобы сократить глобальное выполнение шага 1 и всего раунда, важно, чтобы (r, 1)- сообщения распространяются выборочно. То есть для каждого пользователя j в системе • Для первого (r, 1)-сообщения, которое он когда-либо получает и успешно проверяет, содержит ли оно блок или является просто учетными данными и подписью Qr-1, игрок j распространяет его как обычно. • Для всех остальных (r, 1)-сообщений, которые игрок j получает и успешно проверяет, он распространяет это только в том случае, если значение hash содержащихся в нем учетных данных является наименьшим среди значений hash учетных данных, содержащихся во всех (r, 1)-сообщениях, которые он получил и успешно проверил, далеко. • Однако, если j получает два разных сообщения вида mr,1 я от того же игрока я,б он отбрасывает второй независимо от значения hash учетных данных i. Обратите внимание, что при избирательном распространении полезно, чтобы каждый потенциальный лидер i распространял свой учетные данные \(\sigma\)r,1 я отдельно от мистера 1 i :c эти маленькие сообщения передаются быстрее, чем блоки, убедитесь, что своевременное распространение г-на,1 Здесь содержащиеся учетные данные имеют небольшие значения hash, а заставьте те, у кого большие значения hash, быстро исчезнуть. aТо есть все подписи верны и, если она имеет вид mr,1 i, и блок, и его hash действительны — хотя j не проверяет, является ли включенный набор выплат максимальным для i или нет. bЭто означает, что я злонамерен. cМы благодарим Георгиоса Влахоса за это предложение.Шаг 2: Первый шаг Протокола поэтапного консенсуса GC Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свой собственный шаг 2 раунда r, как только он CERT r-1. • Пользователь i ожидает максимальное время t2 \(\triangleq\) \(\lambda\) + Λ. Во время ожидания я действую следующим образом. 1. Подождав время 2\(\lambda\), он находит пользователя \(\ell\) такого, что H(\(\sigma\)r,1 \(\ell\)) \(\leq\)H(\(\sigma\)r,1 к) для всех учетные данные \(\sigma\)r,1 дж которые являются частью успешно проверенных (r, 1)-сообщений, которые он получил пока.а 2. Если он имеет получил а блокировать Бр−1, который спички тот hash ценность Н(Бр-1) содержится в CERT r-1,b, и если он получил от \(\ell\) действительное сообщение mr,1 \(\ell\) = (Бр \(\ell\), esig\(\ell\)(H(Br \(\ell\))) \(\sigma\)r,1 \(\ell\)),c, то я перестаю ждать и устанавливаю v′ я \(\triangleq\)(H(Br \(\ell\)), \(\ell\)). 3. В противном случае, когда время t2 истечет, я устанавливаю v' я \(\triangleq\) \(\bot\). 4. Когда значение v' i был установлен, я вычисляет Qr-1 из CERT r-1 и проверяет, i \(\in\)SV r,2 или нет. 5. Если i \(\in\)SV r,2, i вычисляет сообщение mr,2 я \(\triangleq\)(ESIGi(v′ i), \(\sigma\)r,2 я ),д уничтожает его эфемерное секретный ключ скр,2 i , а затем распространяет mr,2 я. В противном случае я останавливаюсь, не распространяя что угодно. aПо сути, пользователь i в частном порядке решает, что лидером раунда r является пользователь \(\ell\). bКонечно, если CERT r−1 указывает, что Br−1 = Br−1 ψ , то я уже «получил» Br−1 в тот момент, когда он CERT r-1. cОпять же, подписи игрока \(\ell\) и hash успешно проверены, и PAY r \(\ell\)в Бр \(\ell\)действителен для round r — хотя я не проверяю, PAY ли r \(\ell\)максимальен для \(\ell\)или нет. Если Бр \(\ell\)содержит пустой набор выплат, тогда на самом деле мне нет необходимости видеть Br−1, прежде чем проверять, является ли Br \(\ell\)действителен или нет. d Сообщение мистера, 2 я сигнализирует о том, что игрок i рассматривает первый компонент v' i быть hash следующего блока, или считает следующий блок пустым.

Шаг 3: Второй шаг GC Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свой собственный Шаг 3 раунда r, как только он CERT r-1. • Пользователь i ожидает максимальное время t3 \(\triangleq\)t2 + 2\(\lambda\) = 3\(\lambda\) + Λ. Во время ожидания я действую как следует. 1. Если существует значение v такое, что он получил как минимум tH действительных сообщений mr,2 дж из вид (ESIGj(v), \(\sigma\)r,2 j ), без всякого противоречия,a тогда он перестает ждать и устанавливает v' = v. 2. В противном случае, когда время t3 истечет, он установит v′ = \(\bot\). 3. Когда значение v' установлено, я вычисляет Qr-1 из CERT r-1 и проверяет, i \(\in\)SV r,3 или нет. 4. Если i \(\in\)SV r,3, то я вычисляет сообщение mr,3 я \(\triangleq\)(ESIGi(v′), \(\sigma\)r,3 я), уничтожает его эфемерный секретный ключ skr,3 i , а затем распространяет mr,3 я. В противном случае я остановлюсь без пропагандируя что-либо. aТо есть он не получил двух действительных сообщений, содержащих ESIGj(v) и другой ESIGj(ˆv) соответственно, от игрока j. Здесь и далее, за исключением Конечных условий, определенных позже, всякий раз, когда честный игрок хочет сообщений заданной формы, сообщения, противоречащие друг другу, никогда не учитываются и не считаются действительными.

Шаг 4: Выходные данные GC и первый шаг BBA⋆ Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свой собственный Шаг 4 раунда r, как только он завершает свой Шаг 3. • Пользователь i ожидает максимальное время 2\(\lambda\).a. Во время ожидания я действует следующим образом. 1. Он вычисляет vi и gi, выходные данные GC, следующим образом. (a) Если существует значение v′ ̸= \(\bot\) такое, что он получил как минимум tH действительных сообщений мистер, 3 дж = (ESIGj(v′), \(\sigma\)r,3 j ), затем он перестает ждать и устанавливает vi \(\triangleq\)v′ и gi \(\triangleq\)2. (b) Если он получил хотя бы tH действительных сообщений mr,3 дж = (ESIGj(\(\bot\)), \(\sigma\)r,3 j ), затем он останавливается ждет и устанавливает vi \(\triangleq\) \(\bot\) и gi \(\triangleq\)0.b (c) В противном случае, когда время 2\(\lambda\) истечет, если существует значение v′ ̸= \(\bot\) такое, что он имеет получил не менее ⌈tH 2 ⌉действительные сообщения mr,j дж = (ESIGj(v′), \(\sigma\)r,3 j ), то он устанавливает vi \(\triangleq\)v′ и gi \(\triangleq\)1.c (d) В противном случае, когда время 2\(\lambda\) истечет, он установит vi \(\triangleq\) \(\bot\) и gi \(\triangleq\)0. 2. Когда значения vi и gi установлены, я вычисляет bi, вход BBA⋆, следующим образом: bi \(\triangleq\)0, если gi = 2, и bi \(\triangleq\)1 в противном случае. 3. i вычисляет Qr−1 из CERT r−1 и проверяет, принадлежит ли i SV r,4 или нет. 4. Если i \(\in\)SV r,4, он вычисляет сообщение mr,4 я \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,4 я), уничтожает его эфемерный секретный ключ skr,4 i и распространяет mr,4 я. В противном случае я останавливаюсь, не распространяя что угодно. aТаким образом, максимальное общее количество времени с момента начала первого шага раунда r может составлять t4 \(\triangleq\)t3 + 2\(\lambda\) = 5\(\lambda\) + Λ. bОтсутствие шага (b) в протоколе не влияет на его правильность. Однако наличие этапа (b) позволяет шагу 4 завершиться менее чем за 2\(\lambda\), если достаточное количество верификаторов шага 3 имеют «подпись \(\bot\)». cМожно доказать, что v′ в этом случае, если он существует, должен быть единственным.Шаг s, 5 \(\leq\)s \(\leq\)m + 2, s−2 ≡0 mod 3: шаг BBA⋆ с фиксированной монетой до 0 Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свои собственные шаги раунда r, как только он завершает свой шаг s−1. • Пользователь i ожидает максимальное время 2\(\lambda\).a. Во время ожидания я действует следующим образом. – Конечное условие 0: если в любой точке существует строка v ̸= \(\bot\) и шаг s′ такие, что (a) 5 \(\leq\)s′ \(\leq\)s, s′ −2 ≡0 mod 3 — то есть шаг s′ является шагом с фиксированной монетой до 0, (b) я получил как минимум tH действительных сообщений mr,s′−1 дж = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 дж ),б и (c) я получил действительное сообщение (SIGj(Qr-1), \(\sigma\)r,1 j), где j является вторым компонент v, затем я перестаю ждать и заканчиваю выполнение шага s (и фактически раунда r) сразу, ничего не выдавая в качестве (r,s)-верификатора; устанавливает H(Br) в качестве первого компонент v; и устанавливает свой собственный CERT r как набор сообщений mr,s′−1 дж шага (б) вместе с (SIGj(Qr−1), \(\sigma\)r,1 j ).c – Конечное условие 1: Если в какой-либо точке существует шаг s′ такой, что (a’) 6 \(\leq\)s′ \(\leq\)s, s′ −2 ≡1 mod 3 — то есть шаг s′ является шагом с фиксированной монетой-1, и (b’) я получил как минимум tH действительных сообщений mr,s′−1 дж = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 дж ),д затем я перестаю ждать и заканчиваю выполнение шага s (и фактически раунда r) правильно прочь, не распространяя ничего в качестве (r, s)-верификатора; устанавливает Br = Br й; и устанавливает свой собственный CERT r — набор сообщений mr,s′−1 дж подэтапа (b’). – Если в любой точка он имеет получил в минимум тХ действительный мистер, с-1 дж х из тот форма (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 дж ), то он перестает ждать и устанавливает bi \(\triangleq\)1. – Если в любой точка он имеет получил в минимум тХ действительный мистер, с-1 дж х из тот форма (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 дж ), но они не соглашаются на одно и то же v, тогда он останавливается ждет и устанавливает bi \(\triangleq\)0. – В противном случае, когда время 2\(\lambda\) истечет, я устанавливаю bi \(\triangleq\)0. – Когда значение bi установлено, i вычисляет Qr-1 из CERT r-1 и проверяет, i \(\in\)SV r,s. – Если i \(\in\)SV r,s, i вычисляет сообщение mr,s я \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i) с vi, являющимся значение, которое он вычислил на шаге 4, уничтожает его эфемерный секретный ключ skr,s я, а потом пропагандирует мистера, с я. В противном случае я останавливаюсь, ничего не распространяя. aТаким образом, максимальное общее количество времени с момента начала первого шага раунда r может составлять ts \(\triangleq\)ts−1 + 2\(\lambda\) = (2s−3)\(\lambda\) + Λ. bТакое сообщение от игрока j засчитывается, даже если игрок i также получил сообщение от j, подписавшегося за 1. Аналогично для конечного условия 1. Как показано в анализе, это сделано для того, чтобы все честные пользователи знали CERT r в пределах времени \(\lambda\) друг от друга. cПользователь i теперь знает H(Br) и результаты своего раунда r. Ему просто нужно дождаться, пока собственно блок Br не будет передается ему, что может занять некоторое дополнительное время. Он по-прежнему помогает распространять сообщения как обычный пользователь. но не инициирует никакого распространения в качестве (r, s)-верификатора. В частности, он помогал распространять все сообщения в его CERT r, которого достаточно для нашего протокола. Обратите внимание, что ему также следует установить bi \(\triangleq\)0 для бинарного протокола BA, но bi в этом случае в любом случае не нужен. Аналогичные вещи для всех будущих инструкций. dВ этом случае не имеет значения, кто такие виджеи. 65Шаг s, 6 \(\leq\)s \(\leq\)m + 2, s−2 ≡1 mod 3: шаг BBA⋆ с фиксированной монетой-1 Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свои собственные шаги раунда r, как только он завершает свой шаг s−1. • Пользователь i ожидает максимальное время 2\(\lambda\). Во время ожидания я действую следующим образом. – Конечное условие 0: те же инструкции, что и на этапе Coin-Fixed-To-0. – Конечное условие 1: те же инструкции, что и на этапе Coin-Fixed-To-0. – Если в любой точка он имеет получил в минимум тХ действительный мистер, с-1 дж х из тот форма (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 дж ), затем он перестает ждать и устанавливает bi \(\triangleq\)0.a – В противном случае, когда время 2\(\lambda\) истечет, я устанавливаю bi \(\triangleq\)1. – Когда значение bi установлено, i вычисляет Qr-1 из CERT r-1 и проверяет, i \(\in\)SV r,s. – Если i \(\in\)SV r,s, i вычисляет сообщение mr,s я \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i) с vi, являющимся значение, которое он вычислил на шаге 4, уничтожает его эфемерный секретный ключ skr,s я, а потом пропагандирует мистера, с я. В противном случае я останавливаюсь, ничего не распространяя. aОбратите внимание, что получение tH действительных (r, s −1)-сообщений, подписанных за 1, будет означать конечное условие 1. Шаг s, 7 \(\leq\)s \(\leq\)m + 2, s −2 ≡2 mod 3: Шаг BBA⋆ с подбрасыванием монеты Инструкции для каждого пользователя i \(\in\)PKr−k: Пользователь i начинает свои собственные шаги раунда r, как только он завершает свой шаг s−1. • Пользователь i ожидает максимальное время 2\(\lambda\). Во время ожидания я действую следующим образом. – Конечное условие 0: те же инструкции, что и на этапе Coin-Fixed-To-0. – Конечное условие 1: те же инструкции, что и на этапе Coin-Fixed-To-0. – Если в любой точка он имеет получил в минимум тХ действительный мистер, с-1 дж х из тот форма (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 дж ), то он перестает ждать и устанавливает bi \(\triangleq\)0. – Если в любой точка он имеет получил в минимум тХ действительный мистер, с-1 дж х из тот форма (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 дж ), то он перестает ждать и устанавливает bi \(\triangleq\)1. – В противном случае, когда время 2\(\lambda\) истечет, позволяя SV r,s−1 я — множество (r, s−1)-верификаторов из которому он получил действительное сообщение mr,s−1 дж , я устанавливаю bi \(\triangleq\)lsb(minj\(\varepsilon\)SV r,s−1 я H(\(\sigma\)r,s−1 дж )). – Когда значение bi установлено, i вычисляет Qr-1 из CERT r-1 и проверяет, i \(\in\)SV r,s. – Если i \(\in\)SV r,s, i вычисляет сообщение mr,s я \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i) с vi, являющимся значение, которое он вычислил на шаге 4, уничтожает его эфемерный секретный ключ skr,s я, а потом пропагандирует мистера, с я. В противном случае я останавливаюсь, ничего не распространяя. Замечание. В принципе, как указано в подразделе 6.2, протокол может занимать сколь угодно много шаги в каком-то раунде. Если это произойдет, как обсуждалось, пользователь i \(\in\)SV r,s с s > \(\mu\) исчерпал

его запас заранее сгенерированных эфемерных ключей и должен подтвердить подлинность своего (r, s)-сообщения mr,s я по «каскад» эфемерных ключей. Таким образом, мое сообщение становится немного длиннее, и его передача длиннее. сообщения займут немного больше времени. Соответственно, после стольких шагов данного раунда значение параметр \(\lambda\) автоматически немного увеличится. (Но он возвращается к исходному \(\lambda\) при каждом новом блок создается и начинается новый раунд.) Реконструкция блока Round-r неверификаторами Инструкции для каждого пользователя i в системе: Пользователь i начинает свой собственный раунд r, как только он CERT r-1. • я следую инструкциям каждого шага протокола, участвует в распространении всех сообщений, но не инициирует никакого распространения на шаге, если он не является на нем проверяющим. • я заканчиваю свой раунд r, введя либо Конечное условие 0, либо Конечное условие 1 в каком-либо шаг, с соответствующим CERT r. • С этого момента он начинает свой раунд r + 1, ожидая получения фактического блока Br (если только он уже получил его), чей hash H(Br) был зафиксирован CERT r. Опять же, если CERT r указывает, что Br = Br ϫ, я узнает Бр в тот момент, когда у него есть CERT r. 6.4 Анализ Algorand ′ 2 Анализ Algorand ′ 2 легко получить из Algorand ′ 1. По сути, в Algorand ′ 2, с подавляющая вероятность, (а) все честные пользователи согласны на один и тот же блок Br; лидер нового блок честен с вероятностью не менее ph = h2(1 + h −h2).

Umgang mit ehrlichen Offline-Benutzern

Wie bereits erwähnt, befolgt ein ehrlicher Benutzer alle ihm vorgeschriebenen Anweisungen, einschließlich der Anweisungen, online zu sein und Ausführen des Protokolls. Dies stellt in Algorand keine große Belastung dar, da die Berechnung und Die von einem ehrlichen Benutzer benötigte Bandbreite ist recht bescheiden. Dennoch möchten wir darauf hinweisen, dass Algorand dies kann lässt sich leicht modifizieren, um in zwei Modellen zu funktionieren, in denen ehrliche Benutzer offline sein können tolle Zahlen. Bevor wir diese beiden Modelle diskutieren, möchten wir darauf hinweisen, dass der Prozentsatz ehrlicher Spieler groß ist 95 % betrugen, konnte Algorand immer noch ausgeführt werden, indem alle Parameter eingestellt wurden, wobei stattdessen davon ausgegangen wurde, dass h = 80 % ist. Demnach würde Algorand auch bei höchstens der Hälfte der ehrlichen Spieler weiterhin einwandfrei funktionieren entschied sich dafür, offline zu gehen (in der Tat ein schwerwiegender Fall von „Abwesenheit“). Zumindest zu jedem Zeitpunkt 80 % der Online-Spieler wären ehrlich. Von der kontinuierlichen Teilnahme zur faulen Ehrlichkeit Wie wir gesehen haben, Algorand ′ 1 und Algorand ′ 2 wählen der Lookback-Parameter k. Lassen Sie uns nun zeigen, dass die richtige Wahl von k das Entfernen ermöglicht die Anforderung der kontinuierlichen Teilnahme. Diese Anforderung gewährleistet eine entscheidende Eigenschaft: nämlich dass das zugrunde liegende BA-Protokoll BBA⋆eine angemessene ehrliche Mehrheit hat. Lassen Sie uns nun erklären, wie faul Ehrlichkeit bietet eine alternative und attraktive Möglichkeit, diese Immobilie zufriedenzustellen.

Denken Sie daran, dass ein Benutzer faul, aber ehrlich ist, wenn (1) er alle ihm vorgeschriebenen Anweisungen befolgt er wird gebeten, am Protokoll teilzunehmen, und (2) er wird gebeten, nur am Protokoll teilzunehmen sehr selten – z. B. einmal pro Woche – mit angemessener Vorankündigung und möglicherweise erheblichem Empfang Belohnungen, wenn er mitmacht. Damit Algorand mit solchen Playern arbeiten kann, reicht es lediglich aus, „die Verifizierer der auszuwählen.“ aktuelle Runde unter den Benutzern, die bereits in einer viel früheren Runde im System waren.“ Denken Sie daran Die Verifizierer für eine Runde r werden aus den Benutzern in Runde r − k ausgewählt und die Auswahl erfolgt basierend auf der Größe Qr−1. Beachten Sie, dass eine Woche aus etwa 10.000 Minuten besteht, und gehen Sie davon aus, dass a Eine Runde dauert etwa (z. B. im Durchschnitt) 5 Minuten, eine Woche hat also etwa 2.000 Runden. Angenommen dass ein Benutzer irgendwann seine Zeit planen und wissen möchte, ob er es sein wird ein Gutachter in der kommenden Woche. Das Protokoll wählt nun die Verifizierer für eine Runde aus den Benutzern aus runden r −k −2.000 ab, und die Auswahlen basieren auf Qr−2.001. In Runde R, Spieler, den ich bereits kenne die Werte Qr−2.000, . . . , Qr−1, da sie tatsächlich Teil von blockchain sind. Dann gilt für jedes M zwischen 1 und 2.000 ist i genau dann ein Verifizierer in einem Schritt s der Runde r + M, wenn .H SIGi r + M, s, Qr+M−2.001 \(\leq\)p . Ich muss also prüfen, ob er in den nächsten 2.000 Runden als Prüfer berufen wird Berechnen Sie \(\sigma\)M,s ich = SIGi r + M, s, Qr+M−2.001 für M = 1 bis 2.000 und für jeden Schritt s und überprüfen ob .H(\(\sigma\)M,s ich ) \(\leq\)p für einige von ihnen. Wenn die Berechnung einer digitalen Signatur eine Millisekunde dauert, dann Dieser gesamte Vorgang wird etwa 1 Minute Rechenzeit in Anspruch nehmen. Wenn er nicht als Prüfer ausgewählt wird In jeder dieser Runden kann er mit „ehrlichem Gewissen“ offline gehen. Hatte er ununterbrochen teilgenommen hätte, hätte er in den nächsten 2.000 Runden ohnehin im Wesentlichen 0 Schritte gemacht! Wenn stattdessen Er wird in einer dieser Runden als Prüfer ausgewählt und bereitet sich dann darauf vor (z. B. indem er alle Informationen erhält die erforderlichen Informationen), um bei der richtigen Runde als ehrlicher Prüfer zu fungieren. Durch dieses Verhalten entgeht mir als fauler, aber ehrlicher potenzieller Prüfer nur die Beteiligung an der Verbreitung von Nachrichten. Aber die Nachrichtenweitergabe ist normalerweise robust. Darüber hinaus sind die Zahler und Zahlungsempfänger von Von kürzlich propagierten Zahlungen wird erwartet, dass sie online sind, um zu beobachten, was mit ihren Zahlungen passiert. und somit werden sie sich an der Nachrichtenverbreitung beteiligen, wenn sie ehrlich sind.

Обращение с честными пользователями в режиме оффлайн

Как мы уже говорили, честный пользователь следует всем предписанным ему инструкциям, в том числе и по нахождению в сети. и запускаем протокол. Это не является большой нагрузкой в Algorand, поскольку вычисления и Требуемая пропускная способность от честного пользователя весьма скромна. Тем не менее, отметим, что Algorand может легко модифицировать для работы в двух моделях, в которых честным пользователям разрешено находиться в автономном режиме отличные цифры. Прежде чем обсуждать эти две модели, отметим, что если процент честных игроков составляли 95 %, Algorand все равно можно было запустить, задав все параметры, предполагая, что вместо этого h = 80 %. Соответственно, Algorand продолжит работать корректно, даже если не более половины честных игроков решил уйти в офлайн (действительно, это серьезный случай «прогулов»). Фактически, в любой момент времени, по крайней мере, 80% игроков онлайн будут честными. От постоянного участия к ленивой честности Как мы видели, Algorand ′ 1 и Algorand ′ 2 выбрать параметр ретроспективного просмотра k. Покажем теперь, что выбор k должным образом большим позволяет удалить требование постоянного участия. Это требование обеспечивает важнейшее свойство: а именно: что базовый протокол BA BBA⋆ имеет надлежащее честное большинство. Давайте теперь объясним, насколько ленивы честность обеспечивает альтернативный и привлекательный способ удовлетворить это свойство.

Напомним, что пользователь i является ленивым, но честным, если (1) он следует всем предписанным инструкциям, когда его просят участвовать в протоколе, и (2) его просят участвовать только в протоколе очень редко — например, раз в неделю — с соответствующим предварительным уведомлением и потенциально получая значительные награды, когда он участвует. Чтобы Algorand мог работать с такими плеерами, достаточно «выбрать верификаторы текущий раунд среди пользователей, уже находящихся в системе в гораздо более раннем раунде». Действительно, напомним, что проверяющие для раунда r выбираются из пользователей в раунде r -k, и выбор делается на основе от величины Qr−1. Обратите внимание, что неделя состоит примерно из 10 000 минут, и предположим, что раунд занимает примерно (например, в среднем) 5 минут, поэтому в неделе около 2000 раундов. Предположим что в какой-то момент пользователь хочет спланировать свое время и знать, будет ли он проверяющий на следующей неделе. Протокол теперь выбирает проверяющих для раунда r из пользователей в раунд r-k-2000, а выбор основан на Qr-2001. В раунде R игрок, которого я уже знаю значения Qr−2000, . . . , Qr-1, поскольку они фактически являются частью blockchain. Тогда для каждого М между 1 и 2000, i является проверяющим на шаге s раунда r + M тогда и только тогда, когда .Х СИГи г + М, с, Qr+M−2,001 \(\leq\)р. Таким образом, чтобы проверить, будет ли он вызван для выполнения функций проверяющего в следующих 2000 раундах, я должен вычислить \(\sigma\)M,s я = СИГи г + М, с, Qr+M−2,001 для M = от 1 до 2000 и для каждого шага s и проверьте является ли .H(\(\sigma\)M,s я ) \(\leq\)p для некоторых из них. Если вычисление цифровой подписи занимает миллисекунду, то вся эта операция займет у него около 1 минуты вычислений. Если он не выбран в качестве проверяющего в любом из этих раундов он может выйти из игры с «чистой совестью». Если бы он постоянно участвовал, то в любом случае он, по сути, сделал бы 0 шагов в следующих 2000 раундах! Если вместо этого его выбирают в качестве проверяющего в одном из этих раундов, затем он готовится (например, получая все необходимую информацию), чтобы выступать в качестве честного проверяющего на соответствующем раунде. Действуя таким образом, ленивый, но честный потенциальный проверяющий только упускает возможность участвовать в распространении информации. сообщений. Но распространение сообщений обычно является надежным. При этом плательщики и получатели ожидается, что недавно распространенные платежи будут онлайн, чтобы наблюдать, что происходит с их платежами, и, таким образом, они будут участвовать в распространении сообщений, если они честны.

Protokoll Algorand ′ mit ehrlicher Mehrheit des Geldes

Wir zeigen nun endlich, wie man die Annahme „Ehrliche Mehrheit der Benutzer“ durch viel mehr ersetzen kann sinnvolle Annahme der ehrlichen Mehrheit des Geldes. Die Grundidee ist (in einer proof-of-stake-Variante) „um einen Benutzer i \(\in\)PKr−k auszuwählen, der zu SV r,s gehört, mit einem Gewicht (d. h. Entscheidungskraft) proportional zu der Geldbetrag, der mir gehört.“24 Durch unsere HMM-Annahme können wir entscheiden, ob dieser Betrag in der Runde r − k gehalten werden soll oder zu Beginn der Runde r. Vorausgesetzt, dass uns eine kontinuierliche Teilnahme nichts ausmacht, entscheiden wir uns dafür die letztere Wahl. (Um die kontinuierliche Teilnahme zu eliminieren, hätten wir uns für die erstere Option entschieden. Besser gesagt, für den Geldbetrag, der bei rund r −k −2.000 liegt.) Es gibt viele Möglichkeiten, diese Idee umzusetzen. Der einfachste Weg wäre, jede Taste gedrückt zu halten höchstens 1 Geldeinheit und wähle dann zufällig n Benutzer i aus PKr−k aus, so dass a(r) ich = 1. 24Wir sollten PKr−k−2.000 sagen, um die kontinuierliche Teilnahme zu ersetzen. Der Einfachheit halber, da man es vielleicht verlangen möchte Bei kontinuierlicher Teilnahme verwenden wir wie zuvor PKr−k, um einen Parameter weniger zu tragen.

Die nächsteinfachste Implementierung Die nächsteinfachere Implementierung könnte darin bestehen, zu verlangen, dass jeder öffentliche Schlüssel einen Höchstbetrag besitzt Geldmenge M für ein bestimmtes festes M. Der Wert M ist klein genug im Vergleich zum Gesamtbetrag von Geld im System, so dass die Wahrscheinlichkeit, dass ein Schlüssel zur Verifizierermenge gehört, größer als eins ist Schritt in – sagen wir – k Runden ist vernachlässigbar. Dann ist ein Schlüssel i \(\in\)PKr−k, der einen Geldbetrag a(r) besitzt ich in Runde r, wird ausgewählt, um zu SV r,s zu gehören, wenn .H SIGi r, s, Qr−1 \(\leq\)p \(\cdot\) a(r) ich M . Und alles läuft wie bisher ab. Eine komplexere Implementierung Die letzte Implementierung „zwingte einen reichen Teilnehmer des Systems, viele Schlüssel zu besitzen“. Eine alternative Implementierung, die unten beschrieben wird, verallgemeinert den Begriff Status und Überlegung Jeder Benutzer i soll aus K + 1 Kopien (i, v) bestehen, von denen jede unabhängig als Verifizierer ausgewählt wird. und wird seinen eigenen vergänglichen Schlüssel besitzen (pkr,s i,v, skr,s i,v) in einem Schritt s einer Runde r. Der Wert K hängt davon ab über den Geldbetrag a(r) ich im besitz von i in rund r. Sehen wir uns nun genauer an, wie ein solches System funktioniert. Anzahl der Exemplare Sei n die angestrebte erwartete Kardinalität jedes Verifizierersatzes und sei a(r) ich sei der Geldbetrag, der einem Benutzer i in Runde r gehört. Sei Ar der Gesamtbetrag des Geldes, das man besitzt von den Benutzern in PKr−k in Runde r, d. h. Ar = X i\(\in\)P Kr−k a(r) ich . Wenn i ein Benutzer in PKr−k ist, dann sind die Kopien von i (i, 1), . . . , (i, K + 1), wo K = $ n \(\cdot\) a(r) ich Ar % . Beispiel. Sei n = 1.000, Ar = 109 und a(r) ich = 3,7 Millionen. Dann, K = 103 \(\cdot\) (3,7 \(\cdot\) 106) 109  = ⌊3,7⌋= 3 . Prüfer und Anmeldeinformationen Sei ich ein Benutzer in PKr−k mit K + 1 Kopien. Für jedes v = 1, . . . , K, copy (i, v) gehört automatisch zu SV r,s. Das heißt, meine Qualifikation ist \(\sigma\)r,s i,v \(\triangleq\)SIGi((i, v), r, s, Qr−1), aber die entsprechende Bedingung wird .H(\(\sigma\)r,s i,v) \(\leq\)1, also immer wahr. Für copy (i, K + 1) prüft i für jeden Schritt s der Runde r, ob .H SIGi (i, K + 1), r, s, Qr−1 \(\leq\)a(r) ich n Ar −K .

Wenn ja, gehört Kopie (i, K + 1) zu SV r,s. Um es zu beweisen, gebe ich den Berechtigungsnachweis weiter \(\sigma\)r,1 i,K+1 = SIGi (i, K + 1), r, s, Qr−1 . Beispiel. Wie im vorherigen Beispiel sei n = 1K, a(r) ich = 3,7M, Ar = 1B und i hat 4 Kopien: (i, 1), . . . , (i, 4). Dann gehören die ersten 3 Kopien automatisch zu SV r,s. Für den 4. Konzeptionell wirft Algorand ′ unabhängig eine voreingenommene Münze, deren Kopfwahrscheinlichkeit 0,7 beträgt. Kopieren (i, 4) wird genau dann ausgewählt, wenn der Münzwurf „Kopf“ ist. (Natürlich wird dieser voreingenommene Münzwurf durch hashdurch hashing, signieren und vergleichen umgesetzt – wie wir Dies habe ich in dieser Arbeit die ganze Zeit über getan – um es mir zu ermöglichen, sein Ergebnis zu beweisen.) Alles wie gewohnt Nachdem erklärt wurde, wie Prüfer ausgewählt werden und welche Qualifikationen sie haben Bei jedem Schritt einer Runde r berechnet, ähnelt die Ausführung einer Runde der bereits erläuterten.

Протокол Algorand ′ с честным большинством денег

Теперь мы, наконец, покажем, как заменить предположение о честном большинстве пользователей гораздо более значимое предположение о честном большинстве денег. Основная идея такова (в варианте proof-of-stake) «выбрать пользователя i \(\in\)PKr−k, принадлежащего SV r,s, с весом (т. е. способностью решения), пропорциональным количество денег, принадлежащих i»24. Согласно нашему предположению HMM, мы можем выбрать, будет ли эта сумма принадлежать в раунде r -k. или в (начале) раунда r. Предполагая, что мы не против постоянного участия, мы выбираем последний выбор. (Чтобы исключить постоянное участие, мы бы выбрали первый вариант. Проще говоря, для суммы денег, имевшейся в раунде r −k −2 000.) Есть много способов реализовать эту идею. Самый простой способ - удержать каждую клавишу не более 1 денежной единицы, а затем случайным образом выберите n пользователей i из PKr−k таких, что a(r) я = 1. 24Мы должны сказать PKr-k-2000, чтобы заменить постоянное участие. Для простоты, поскольку можно пожелать потребовать В любом случае постоянное участие мы используем PKr-k, как и раньше, чтобы нести на один параметр меньше.

Следующая простейшая реализация Следующей простейшей реализацией может быть требование, чтобы каждый открытый ключ владел максимальным количеством ключей. денег М при некоторой фиксированной величине М. Стоимость М достаточно мала по сравнению с общей суммой денег М. денег в системе, так что вероятность того, что ключ принадлежит набору проверяющих, состоящему из более чем одного шаг за, скажем, k раундов пренебрежимо мал. Тогда ключ i \(\in\)PKr−k, владеющий суммой денег a(r) я в раунде r выбирается принадлежащим SV r,s, если .Х СИГи г, с, Qr−1 \(\leq\)p \(\cdot\) а(г) я М . И все идет по-прежнему. Более сложная реализация Последняя реализация «заставила богатого участника системы владеть множеством ключей». Альтернативная реализация, описанная ниже, обобщает понятие статуса и рассматривает каждый пользователь i должен состоять из K + 1 копий (i, v), каждая из которых независимо выбирается в качестве проверяющего, и будет владеть собственным эфемерным ключом (pkr,s я,в,скр,с i,v) на шаге s раунда r. Значение K зависит от суммы денег a(r) я принадлежит мне в раунде r. Давайте теперь посмотрим, как работает такая система более подробно. Количество копий Пусть n — целевая ожидаемая мощность каждого набора проверяющих, и пусть a(r) я быть суммой денег, принадлежащей пользователю i в раунде r. Пусть Ar — общая сумма денег, принадлежащих пользователями в PKr−k в раунде r, то есть Ар = Х i\(\varepsilon\)P Кр−k а (р) я. Если я — пользователь в PKr-k, то его копиями будут (i, 1), . . . , (i, K + 1), где К = $ п \(\cdot\) а(г) я Ар % . Пример. Пусть n = 1000, Ar = 109 и a(r) я = 3,7 миллиона. Тогда, К = 103 \(\cdot\) (3,7 \(\cdot\) 106) 109  = ⌊3,7⌋= 3 . Подтверждающие лица и учетные данные Пусть я пользователь в PKr−k с K + 1 копией. Для каждого v = 1, . . . , K, копия (i, v) автоматически принадлежит SV r,s. То есть мои учетные данные \(\sigma\)r,s i,v \(\triangleq\)SIGi((i, v), r, s, Qr−1), но соответствующее условие принимает вид .H(\(\sigma\)r,s i,v) \(\leq\)1, что всегда правда. Для копии (i, K + 1) для каждого шага s раунда r я проверяю, .Х СИГи (i, K + 1), r, s, Qr−1 \(\leq\)а(г) я н Ар-К.

Если да, то копия (i, K + 1) принадлежит SV r,s. Чтобы доказать это, я распространяю учетные данные \(\sigma\)р,1 i,K+1 = SIGi (i, K + 1), r, s, Qr−1 . Пример. Как и в предыдущем примере, пусть n = 1K, a(r) я = 3,7M, Ar = 1B, а у меня 4 копии: (i, 1), . . . , (я, 4). Тогда первые три копии автоматически принадлежат SV r,s. Для 4-го, концептуально Algorand ′ независимо бросает смещенную монету, вероятность выпадения орла которой равна 0,7. Копировать (i, 4) выбирается тогда и только тогда, когда монета подбрасывается орлом. (Конечно, это предвзятое подбрасывание монеты реализуется путем hash подписания, подписи и сравнения — поскольку мы все это сделал в этой статье, чтобы иметь возможность доказать свой результат.) Бизнес как обычно Объяснив, как отбираются проверяющие и как проверяются их полномочия вычисляется на каждом шаге раунда r, выполнение раунда аналогично уже объясненному.

Umgang mit Forks

Da die Wahrscheinlichkeit von Forks auf 10−12 oder 10−18 reduziert wurde, ist die Handhabung praktisch unnötig sie in der entfernten Chance, dass sie auftreten. Algorand kann jedoch auch verschiedene Forks verwenden Abwicklungsverfahren, mit oder ohne Arbeitsnachweis. Eine Möglichkeit, die Benutzer anzuweisen, Forks aufzulösen, ist wie folgt: • Folgen Sie der längsten Kette, wenn ein Benutzer mehrere Ketten sieht. • Wenn es mehr als eine längste Kette gibt, folgen Sie der Kette mit einem nicht leeren Block am Ende. Wenn Alle von ihnen haben am Ende leere Blöcke, betrachten Sie die vorletzten Blöcke. • Wenn es mehr als eine längste Kette mit nicht leeren Blöcken am Ende gibt, sagen wir, dass es sich um Ketten handelt der Länge r, folgen Sie demjenigen, dessen Anführer von Block r den kleinsten Berechtigungsnachweis hat. Wenn es Unentschieden gibt, Folgen Sie demjenigen, dessen Block r selbst den kleinsten hash-Wert hat. Wenn es immer noch Unentschieden gibt, befolgen Sie die Anweisungen einer, dessen Block r lexikographisch der erste ist.

Обработка форков

Уменьшив вероятность вилок до 10−12 или 10−18, обрабатывать их в малой вероятности того, что они произойдут. Однако Algorand также может использовать различные вилки. процедуры урегулирования, с подтверждением работы или без него. Один из возможных способов проинструктировать пользователей о разрешении вилок заключается в следующем: • Следуйте самой длинной цепочке, если пользователь видит несколько цепочек. • Если существует более одной самой длинной цепочки, следует следовать той, у которой в конце есть непустой блок. Если все они имеют пустые блоки в конце, считайте их предпоследними блоками. • Если существует более одной самой длинной цепочки с непустыми блоками на конце, скажем, что цепочки длины r, следуйте за тем, чей лидер блока r имеет наименьшие полномочия. Если есть связи, следовать за тем, чей блок r имеет наименьшее значение hash. Если связи еще остались, следуйте тот, чей блок r лексикографически упорядочен первым.

Umgang mit Netzwerkpartitionen

Wie gesagt gehen wir davon aus, dass die Ausbreitungszeiten von Nachrichten zwischen allen Benutzern im Netzwerk durch \(\lambda\) und Λ begrenzt sind. Dies ist keine starke Annahme, da das heutige Internet schnell und robust ist Die tatsächlichen Werte dieser Parameter sind durchaus angemessen. Lassen Sie uns hier darauf hinweisen, dass Algorand ′ 2 funktioniert weiterhin, auch wenn das Internet gelegentlich in zwei Teile geteilt wurde. Der Fall, wenn Das Internet ist in mehr als zwei Teile unterteilt. 10.1 Physische Partitionen Erstens kann die Teilung physikalische Ursachen haben. Zum Beispiel kann es zu einem großen Erdbeben kommen Am Ende wird die Verbindung zwischen Europa und Amerika völlig zerstört. In diesem Fall ist die böswillige Benutzer werden ebenfalls aufgeteilt und es findet keine Kommunikation zwischen den beiden Teilen statt. Also

Es wird zwei Gegner geben, einen für Teil 1 und einen für Teil 2. Jeder Gegner versucht es immer noch Brechen Sie das Protokoll in seinem eigenen Teil. Nehmen Sie an, dass die Teilung in der Mitte der Runde r erfolgt. Dann wird jeder Benutzer noch als ausgewählt Verifizierer basierend auf PKr−k, mit der gleichen Wahrscheinlichkeit wie zuvor. Lass den HSV r,s ich und MSV r,s ich bzw sei die Menge der ehrlichen und böswilligen Verifizierer in einem Schritt s in Teil i \(\in\){1, 2}. Wir haben |HSV r,s 1 | + |MSV r,s 1 | + |HSV r,s 2 | + |MSV r,s 2 | = |HSV r,s| + |MSV r,s|. Beachten Sie, dass |HSV r,s| + |MSV r,s| < |HSV r,s| + 2|MSV r,s| < 2tH mit überwältigender Wahrscheinlichkeit. Wenn ein Teil i |HSV r,s hat ich | + |MSV r,s ich | \(\geq\)tH mit nicht vernachlässigbarer Wahrscheinlichkeit, z. B. 1 %, dann ist die Wahrscheinlichkeit, dass |HSV r,s 3−i| + |MSV r,s 3−i| \(\geq\)tH ist sehr niedrig, z. B. 10−16, wenn F = 10−18. In diesem Fall, Wir können den kleineren Teil genauso gut als offline betrachten, da nicht genügend Verifizierer vorhanden sein werden Dieser Teil dient zum Generieren der Signaturen zur Zertifizierung eines Blocks. Betrachten wir den größeren Teil, sagen wir Teil 1, ohne die Allgemeingültigkeit zu verlieren. Obwohl |HSV r,s| < tH mit vernachlässigbarer Wahrscheinlichkeit in jedem Schritt s, wenn das Netzwerk partitioniert ist, |HSV r,s 1 | kann sein kleiner als tH mit einer nicht zu vernachlässigenden Wahrscheinlichkeit. In diesem Fall kann der Gegner mit einigen Andere nicht vernachlässigbare Wahrscheinlichkeiten zwingen das binäre BA-Protokoll in Runde r zu einer Verzweigung mit einem nicht leeren Block Br und dem leeren Block Br ǫ beide haben die gültigen Unterschriften.25 Beispielsweise in a Coin-Fixed-To-0-Schritte s, alle Verifizierer in HSV r,s 1 für Bit 0 und H(Br) signiert und weitergegeben Nachrichten. Alle Prüfer in MSV r,s 1 unterzeichneten ebenfalls 0 und H(Br), hielten ihre Nachrichten jedoch zurück. Weil |HSV r,s 1 | + |MSV r,s 1 | \(\geq\)tH, das System verfügt über genügend Unterschriften, um Br zu zertifizieren. Da jedoch die böswillige Verifizierer haben ihre Signaturen zurückgehalten, die Benutzer geben Schritt s + 1 ein, bei dem es sich um einen Coin-Fixed-To1-Schritt handelt. Weil |HSV r,s 1 | < tH aufgrund der Partition, die Prüfer im HSV r,s+1 1 habe das nicht gesehen Signaturen für Bit 0 und alle signierten für Bit 1. Alle Prüfer in MSV r,s+1 1 habe das Gleiche getan. Weil |HSV r,s+1 1 | + |MSV r,s+1 1 | \(\geq\)tH, das System verfügt über genügend Unterschriften, um Br zu zertifizieren ǫ. Der Gegner erstellt dann einen Fork, indem er die Signaturen von MSV r,s freigibt 1 für 0 und H(Br). Dementsprechend gibt es zwei Qr, die durch die entsprechenden Blöcke der Runde r definiert werden. Allerdings die Gabelung wird nicht fortgesetzt und nur einer der beiden Zweige darf in Runde r + 1 wachsen. Zusätzliche Anweisungen für Algorand ′ 2. Wenn man einen nicht leeren Block sieht, ist Br und der leere Block Br ǫ , folgen Sie dem nicht leeren (und dem dadurch definierten Qr). In der Tat, indem die Benutzer angewiesen werden, den nicht leeren Block im Protokoll zu verwenden, wenn dieser groß ist Anzahl der ehrlichen Benutzer in PKr+1−k erkennen, dass es zu Beginn der Runde r +1 eine Abzweigung gibt, dann Ein leerer Block hat nicht genügend Follower und wächst nicht. Angenommen, der Gegner schafft es Partitionieren Sie die ehrlichen Benutzer so, dass einige ehrliche Benutzer Br (und möglicherweise Br) sehen ǫ), und manche sehen nur Br ǫ. Weil der Gegner nicht sagen kann, welcher von ihnen als Verifizierer nach Br fungieren wird und welcher wird nach Br. ein Prüfer sein ǫ , die ehrlichen Benutzer werden zufällig aufgeteilt und jeder von ihnen bleibt stehen wird zum Verifizierer (entweder in Bezug auf Br oder in Bezug auf Br ǫ) in einem Schritt s > 1 mit Wahrscheinlichkeit p. Für die böswilligen Benutzer hat jeder von ihnen möglicherweise zwei Chancen, Prüfer zu werden, eine mit Br und der andere mit Br ǫ, jeweils mit Wahrscheinlichkeit p unabhängig. Sei HSV r+1,s 1;Br sei die Menge der ehrlichen Verifizierer in den Schritten s der Runde r+1 nach Br. Andere Notationen wie HSV r+1,s 1;Brǫ , MSV r+1,s 1;Br und MSV r+1,s 1;Brǫ sind ähnlich definiert. Bei Chernoffbound ist es einfach 25Eine Abzweigung mit zwei nicht leeren Blöcken ist weder mit noch ohne Partitionen möglich, außer mit vernachlässigbaren Wahrscheinlichkeit.das mit überwältigender Wahrscheinlichkeit zu sehen, |HSV r+1,s 1;Br | + |HSV r+1,s 1;Brǫ | + |MSV r+1,s 1;Br | + |MSV r+1,s 1;Brǫ | < 2tH. Dementsprechend können die beiden Zweige nicht beide über die richtigen Signaturen verfügen, die einen Block für eine Runde bescheinigen r + 1 im gleichen Schritt s. Da außerdem die Auswahlwahrscheinlichkeiten für zwei Schritte s und s′ sind gleich und die Auswahlen sind unabhängig, auch mit überwältigender Wahrscheinlichkeit |HSV r+1,s 1;Br | + |MSV r+1,s 1;Br | + |HSV r+1,s′ 1;Brǫ | + |MSV r+1,s′ 1;Brǫ | < 2tH, für zwei beliebige Schritte s und s′. Wenn F = 10−18, durch die Vereinigung gebunden, solange der Gegner dies nicht kann Partitionieren Sie die ehrlichen Benutzer über einen langen Zeitraum (z. B. 104 Schritte, was mehr als 55 Stunden mit \(\lambda\) = 10 entspricht). Sekunden26), mit hoher Wahrscheinlichkeit (sagen wir 1−10−10) wird höchstens ein Zweig die richtigen Signaturen haben um einen Block in Runde r + 1 zu zertifizieren. Wenn die physische Partition schließlich zwei Teile mit ungefähr der gleichen Größe erstellt hat, dann ist die Wahrscheinlichkeit, dass |HSV r,s ich | + |MSV r,s ich | \(\geq\)tH ist für jeden Teil i klein. Nach einer ähnlichen Analyse, selbst wenn es dem Gegner gelingt, in jedem Teil eine Abzweigung mit einer nicht zu vernachlässigenden Wahrscheinlichkeit zu schaffen für Runde r darf höchstens einer der vier Zweige in Runde r + 1 wachsen. 10.2 Gegnerische Teilung Zweitens kann die Partitionierung durch den Angreifer verursacht werden, sodass sich die Nachrichten verbreiten durch die ehrlichen Benutzer in einem Teil erreichen die ehrlichen Benutzer im anderen Teil nicht direkt, sondern Der Gegner ist in der Lage, Nachrichten zwischen den beiden Teilen weiterzuleiten. Dennoch einmal eine Nachricht von einem Wenn ein Teil einen ehrlichen Benutzer im anderen Teil erreicht, wird er dort wie üblich weitergegeben. Wenn die Ist der Gegner bereit, viel Geld auszugeben, ist es denkbar, dass er in der Lage ist, das zu hacken Internet und Partitionierung für eine Weile so. Die Analyse ähnelt der für den größeren Teil in der physischen Partition oben (der kleinere). Teil kann als Population 0 betrachtet werden): Der Gegner kann möglicherweise eine Abzweigung erstellen und Jeder ehrliche Benutzer sieht nur einen der Zweige, es darf aber höchstens ein Zweig wachsen. 10.3 Netzwerkpartitionen im Überblick Obwohl es zu Netzwerkpartitionen kommen kann und eine Verzweigung in einer Runde unter Partitionen stattfinden kann, gibt es sie Es besteht keine bleibende Unklarheit: Eine Gabelung ist sehr kurzlebig und dauert tatsächlich höchstens eine einzige Runde. In Alle Teile der Partition außer höchstens einem, können die Benutzer keinen neuen Block generieren und somit (a) erkennen, dass es eine Partition im Netzwerk gibt und (b) sich niemals auf Blöcke verlassen, die „verschwinden“. Danksagungen Wir möchten zunächst Sergey Gorbunov danken, Mitautor des zitierten Democoin-Systems. Der aufrichtigste Dank geht an Maurice Herlihy für die vielen aufschlussreichen Diskussionen und die Hinweise heraus, dass Pipelining die Durchsatzleistung von Algorand verbessern wird, und für eine erhebliche Verbesserung der 26Beachten Sie, dass ein Benutzer einen Schritt s nur beendet, ohne 2\(\lambda\) Zeit zu warten, wenn er mindestens die Signaturen dafür gesehen hat gleiche Nachricht. Wenn nicht genügend Signaturen vorhanden sind, dauert jeder Schritt 2\(\lambda\).

Darstellung einer früheren Version dieser Arbeit. Vielen Dank an Sergio Rajsbaum für seine Kommentare zu eine frühere Version dieses Artikels. Vielen Dank an Vinod Vaikuntanathan für die zahlreichen intensiven Diskussionen und Erkenntnisse. Vielen Dank an Yossi Gilad, Rotem Hamo, Georgios Vlachos und Nickolai Zeldovich für den Beginn, diese Ideen zu testen, und für viele hilfreiche Kommentare und Diskussionen. Silvio Micali möchte sich persönlich bei Ron Rivest für die unzähligen Gespräche und Anleitungen bedanken in der kryptografischen Forschung über mehr als drei Jahrzehnte, für die Mitautoren des genannten Mikrozahlungssystems Dies hat einen der Verifizierer-Auswahlmechanismen von Algorand inspiriert. Wir hoffen, diese Technologie auf die nächste Stufe zu bringen. Inzwischen das Reisen und die Kameradschaft machen großen Spaß, wofür wir sehr dankbar sind.

Обработка сетевых разделов

Как уже говорилось, мы предполагаем, что время распространения сообщений среди всех пользователей в сети ограничено сверху значениями \(\lambda\) и Λ. Это не слишком сильное предположение, поскольку современный Интернет является быстрым и надежным, и фактические значения этих параметров вполне разумны. Здесь отметим, что Algorand ′ 2 продолжает работать, даже если Интернет иногда разделяется на две части. Тот случай, когда Интернет разделен более чем на две части аналогично. 10.1 Физические разделы Прежде всего, перегородка может быть вызвана физическими причинами. Например, сильное землетрясение может в конечном итоге полностью разорвёт связь между Европой и Америкой. В этом случае злонамеренные пользователи также разделены, и между двумя частями нет связи. Таким образом

будет два Противника: один для части 1, другой для части 2. Каждый Противник по-прежнему пытается нарушить протокол в своей части. Предположим, что раздел происходит в середине раунда r. Тогда каждый пользователь по-прежнему выбирается в качестве верификатор на основе PKr−k с той же вероятностью, что и раньше. Пусть HSV r,s я и MSV r,s я соответственно — множество честных и злонамеренных проверяющих на шаге s в части i \(\in\) {1, 2}. У нас есть |HSV r,s 1 | + |MSV r,s 1 | + |HSV r,s 2 | + |MSV r,s 2 | = |HSV r,s| + |MSV r,s|. Обратите внимание, что |HSV r,s| + |MSV r,s| < |HSV r,s| + 2|МСВ г,с| < 2tH с подавляющей вероятностью. Если какая-то часть i имеет |HSV r,s я | + |MSV r,s я | \(\geq\)tH с немалой вероятностью, например, 1%, то вероятность того, что |HSV r,s 3−i| + |MSV r,s 3−i| \(\geq\)tH очень низкое, например, 10–16, когда F = 10–18. В этом случае мы можем с таким же успехом рассматривать меньшую часть как отключенную, потому что в ней не будет достаточного количества верификаторов. эта часть предназначена для генерации подписей для сертификации блока. Рассмотрим большую часть, скажем, часть 1, не ограничивая общности. Хотя |HSV r,s| < tH с пренебрежимо малой вероятностью на каждом шаге s, когда сеть разделена, |HSV r,s 1 | может быть меньше, чем tH с некоторой немалой вероятностью. В этом случае Противник может с некоторым другая, немалая вероятность, приведет к разветвлению двоичного протокола BA в раунде r с непустым блоком Br и пустым блоком Br. ƫ оба имеют действительные подписи.25 Например, в Шаги Coin-Fixed-To-0 s, все верификаторы в HSV r,s 1 подписались для бита 0 и H(Br) и распространили их сообщения. Все верификаторы в MSV r,s 1 также подписали 0 и H(Br), но свои сообщения воздержали. Потому что |HSV r,s 1 | + |MSV r,s 1 | \(\geq\)tH, в системе достаточно подписей для сертификации Br. Однако, поскольку злонамеренные верификаторы скрыли свои подписи, пользователи вводят шаг s + 1, который является шагом Coin-Fixed-To1. Поскольку |HSV r,s 1 | < tH из-за разделения, верификаторы в HSV r,s+1 1 не видел этого подписи для бита 0, и все они подписаны для бита 1. Все верификаторы в MSV r,s+1 1 сделал то же самое. Потому что |HSV r,s+1 1 | + |MSV r,s+1 1 | \(\geq\)tH, в системе достаточно подписей для сертификации Br й. Противник затем создает форк, освобождая подписи MSV r,s 1 для 0 и H(Br). Соответственно, будет два Qr, определяемых соответствующими блоками раунда r. Однако, вилка не будет продолжаться, и в раунде r + 1 может вырасти только одна из двух ветвей. Дополнительные инструкции для Algorand ′ 2. При виде непустого блока Br и пустого блок Бр ϫ , следует за непустым номером (и определяемым им Qr). Действительно, поручив пользователям использовать непустой блок в протоколе, если большой количество честных пользователей в PKr+1−k понимают, что в начале раунда r +1 происходит разветвление, тогда у пустого блока не будет достаточно подписчиков, и он не будет расти. Предположим, что противнику удастся разделите честных пользователей так, чтобы некоторые честные пользователи видели Br (и, возможно, Br ǫ), а некоторые видят только Бр й. Потому что Противник не может сказать, какой из них будет проверяющим после Br, а какой будет проверяющим после Br ϫ, честные пользователи распределяются случайным образом, и каждый из них по-прежнему становится проверяющим (либо по отношению к Br, либо по отношению к Br ϫ) на шаге s > 1 с вероятностью п. У злоумышленников каждый из них может иметь два шанса стать проверяющим, один с Бр и другой с Бр ϫ, каждый с вероятностью p независимо. Пусть HSV r+1,s 1;Бр — множество честных проверяющих на шагах s раунда r+1 после Br. Другие обозначения например HSV r+1,s 1;Br , MSV r+1,s 1;Бр и MSV r+1,s 1; Брю определяются аналогично. По Чернову легко 25Иметь вилку с двумя непустыми блоками невозможно ни с перегородками, ни без них, кроме как с пренебрежимо малыми вероятность.увидеть это с подавляющей вероятностью, |HSV r+1,s 1;Бр | + |HSV r+1,s 1;Бру | + |MSV r+1,s 1;Бр | + |MSV r+1,s 1;Бру | < 2tH. Соответственно, две ветви не могут обе иметь правильные подписи, удостоверяющие блок для раунда. r + 1 на том же шаге s. Более того, поскольку вероятности выбора для двух шагов s и s′ равны то же самое, и выборы независимы, также с подавляющей вероятностью |HSV r+1,s 1;Бр | + |MSV r+1,s 1;Бр | + |HSV r+1,s' 1; Брю | + |MSV r+1,s' 1; Брю | < 2tH, для любых двух шагов s и s'. Когда F = 10−18, по объединению, пока Противник не может разделять честных пользователей на длительное время (скажем, 104 шага, это более 55 часов при \(\lambda\) = 10 секунд26), с высокой вероятностью (скажем, 1−10−10) не более одной ветки будет иметь tH правильных сигнатур. для подтверждения блока в раунде r + 1. Наконец, если в физическом разделе созданы две части примерно одинакового размера, то вероятность того, что |HSV r,s я | + |MSV r,s я | \(\geq\)tH мало для каждой части i. После аналогичного анализа даже если Противнику удастся создать форк с некоторой немалой вероятностью в каждой части в раунде r не более одной из четырех ветвей может вырасти в раунде r + 1. 10.2 Состязательный раздел Во-вторых, перегородка может быть вызвана Противником, поэтому сообщения распространялись честными пользователями в одной части, не дойдет напрямую до честных пользователей в другой части, но Противник может пересылать сообщения между двумя частями. И все же однажды сообщение от одного часть доходит до честного пользователя в другой части, в последней она будет распространяться как обычно. Если Злоумышленник готов потратить много денег, вполне возможно, что он сможет взломать Интернет и разделите его на некоторое время вот так. Анализ аналогичен анализу большей части физического раздела выше (меньшая часть часть можно рассматривать как имеющую население 0): Противник может создать вилку и каждый честный пользователь видит только одну из ветвей, но может вырасти не более одной ветки. 10.3 Сетевые разделы в сумме Несмотря на то, что сетевые разделы могут возникнуть, а под разделами может произойти ветвление за один раунд, Нет никакой затяжной двусмысленности: вилка очень недолговечна и фактически длится не более одного раунда. В все части раздела, кроме не более чем одной, пользователи не могут создать новый блок и, следовательно, (а) понимать, что в сети есть раздел, и (б) никогда не полагаться на блоки, которые «исчезнут». Благодарности Прежде всего мы хотели бы выразить признательность Сергею Горбунову, соавтору упомянутой системы Democoin. Самая искренняя благодарность Морису Херлихи за множество поучительных обсуждений и за указание что конвейеризация улучшит производительность Algorand, а также значительно улучшит 26Обратите внимание, что пользователь завершает шаг s, не дожидаясь времени 2\(\lambda\), только если он увидел хотя бы tH подписей для то же сообщение. Если подписей недостаточно, каждый шаг будет длиться 2\(\lambda\).

изложение более ранней версии этой статьи. Большое спасибо Серджио Райсбауму за его комментарии по поводу более ранняя версия этой статьи. Большое спасибо Виноду Вайкунтанатану за несколько глубоких обсуждений. и идеи. Большое спасибо Йосси Гиладу, Ротему Хамо, Георгиосу Влахосу и Николаю Зельдовичу. за начало проверки этих идей, а также за множество полезных комментариев и обсуждений. Сильвио Микали хотел бы лично поблагодарить Рона Ривеста за бесчисленные обсуждения и рекомендации. в криптографических исследованиях на протяжении более трех десятилетий за соавторство упомянутой системы микроплатежей. это послужило вдохновением для создания одного из механизмов выбора верификатора Algorand. Мы надеемся вывести эту технологию на новый уровень. Тем временем путешествие и общение это очень весело, за что мы очень благодарны.