알고랜드: 암호화폐에 대한 비잔틴 계약 확장
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]로 제안되었습니다. 에 이러한 시스템의 핵심은 일련의 거래를 안정적으로 기록하는 공유 원장입니다. ✽이것은 두 번째 저자인 [24]의 ArXiv 논문의 보다 공식적인(비동기적) 버전입니다. Gorbunov와 Micali [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] 또는 일부 조합. 그러나 현재 원장은 관리하기가 비효율적일 수 있습니다. 예를 들어 Bitcoin의 proof-of-work [14]의 원래 개념을 기반으로 한 접근 방식은 엄청난 양의 계산이 필요하고 낭비적입니다. 확장성이 좋지 않습니다 [1]. 게다가 사실상 극소수의 손에 권력을 집중시킨다. 따라서 우리는 다음을 제공하는 공개 원장을 구현하는 새로운 방법을 제시하고자 합니다. 신뢰할 수 있고 침해할 수 없는 기관에 의해 운영되는 중앙 집중식 시스템의 편리성과 효율성 현재 분산 구현의 비효율성과 약점. 우리는 접근 방식을 이렇게 부릅니다. Algorand, 지금까지 구성된 원장을 기반으로 알고리즘 무작위성을 사용하여 선택하기 때문에 유효한 거래의 다음 블록을 구성하는 역할을 담당하는 검증자 집합입니다. 당연히, 우리는 그러한 선택이 조작으로부터 면제되고 예측할 수 없는 것으로 증명되도록 보장합니다. 마지막 순간에 있지만 궁극적으로는 보편적으로 분명합니다. Algorand의 접근 방식은 원칙적으로도 사실상으로도 그렇지 않다는 점에서 매우 민주적입니다. 다양한 종류의 사용자를 생성합니다(Bitcoin의 "광부" 및 "일반 사용자"). Algorand에서 "모두 권력은 모든 사용자 집합에 있습니다.” Algorand의 주목할만한 속성 중 하나는 거래 내역이 매우 작은 경우에만 분기될 수 있다는 것입니다. 확률(예: 1조분의 1, 즉 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대 슈퍼컴퓨터만 소집할 수 있습니다. Bitcoin 플레이어에게 필요한 총 계산 능력의 12.8%에 불과합니다. 이 훨씬 더 많은 사용자가 시스템에 참여하면 계산량이 크게 증가합니다. 기술적 문제 2: 권력의 집중 오늘은 엄청난 물량으로 인해 일반 데스크톱을 사용하여 새 블록을 생성하려는 사용자(컴퓨터는 물론이고 계산이 필요함) 휴대폰), 돈을 잃을 것으로 예상됩니다. 실제로 일반 컴퓨터로 새로운 블록을 계산하기 위해서는, 계산에 전력을 공급하는 데 필요한 전기의 예상 비용이 예상 보상을 초과합니다. 특별히 제작된 컴퓨터 풀("새 블록 채굴" 외에는 아무 작업도 수행하지 않음)만 사용하여 새로운 블록을 생성하여 수익을 창출할 수 있을 것으로 기대할 수 있습니다. 따라서 오늘날에는 사실상 두 가지가 있습니다. 분리된 사용자 클래스: 결제만 하는 일반 사용자와 전문 채굴 풀, 새로운 블록만 검색합니다. 따라서 최근 블록의 전체 컴퓨팅 성능이 세대는 단 5개의 풀 내에 있습니다. 그러한 조건에서, 대부분의 사람들이 계산 능력이 정직하다는 것은 신뢰도가 떨어집니다. 기술적 문제 3: 모호함 Bitcoin에서 blockchain은 반드시 고유할 필요는 없습니다. 과연 최신 부분은 종종 분기됩니다. blockchain은 -예를 들어- B1, . . . , Bk, B′ k+1, B' k+2에 따르면 한 명의 사용자와 B1, . . . , Bk, B′′ k+1, B′′ k+2, B′′ 다른 사용자에 따르면 k+3입니다. 여러 블록이 완료된 후에만 체인에 추가되면 처음 k + 3개 블록이 동일할 것이라고 합리적으로 확신할 수 있습니까? 모든 사용자에게. 따라서 마지막 블록에 포함된 지불금에 즉시 의존할 수는 없습니다. 체인. 블록이 충분히 깊어지는지 기다려 보는 것이 더 현명합니다. blockchain 따라서 충분히 안정적입니다. 이와 별도로 Bitcoin.1에 대해 법 집행 및 통화 정책에 대한 우려도 제기되었습니다. 1.2 Algorand, 간단히 말해서 설정 Algorand은 매우 어려운 환경에서 작동합니다. 간략하게, (a) 허가 없는 환경과 허가된 환경. Algorand은(는) 효율적이고 안전하게 작동합니다. 완전히 허가가 없는 환경에서 임의로 많은 사용자가 가입할 수 있습니다. 어떤 종류의 심사나 허가 없이 언제든지 시스템에 접근할 수 있습니다. 물론 Algorand는 작동합니다. 허가된 환경에서는 더욱 좋습니다. 1Bitcoin 결제가 제공하는 (유사) 익명성은 자금 세탁 및/또는 자금 조달에 악용될 수 있습니다. 범죄인이나 테러리스트 조직의 원칙적으로 완벽한 기능을 제공하는 전통적인 지폐 또는 금괴 익명성은 동일한 문제를 제기해야 하지만 이러한 통화의 물리적 특성으로 인해 통화 속도가 크게 느려집니다. 법 집행 기관의 어느 정도 모니터링을 허용하기 위한 전송입니다. “돈을 인쇄하는” 능력은 국민국가의 가장 기본적인 권력 중 하나입니다. 따라서 원칙적으로 대규모 독립적으로 변동하는 통화를 채택하면 이러한 힘이 줄어들 수 있습니다. 그러나 현재 Bitcoin은(는) 존재하지 않습니다. 정부 통화 정책에 대한 위협이며, 확장성 문제로 인해 결코 위협이 되지 않을 수도 있습니다.(b) 매우 적대적인 환경. Algorand은 매우 강력한 적을 견딜 수 있습니다. (1) 원하는 사용자를 원하는 시간에 즉시 부패시킵니다. 무허가 환경에서는 시스템 자금의 2/3가 정직한 사용자에게 귀속됩니다. (한 허가된 환경에서는 돈에 관계없이 사용자의 2/3가 정직하면 충분합니다.) (2) 모든 부패한 사용자를 완전히 통제하고 완벽하게 조정합니다. 그리고 (3) 각 메시지가 정직한 사용자에 의해 전송된 경우 모든 메시지 전달을 예약합니다. m의 크기에만 의존하는 \(\lambda\)m 시간 내에 정직한 사용자의 95%에 도달합니다. 주요 속성 Algorand에 우리의 강력한 적의 존재에도 불구하고 • 필요한 계산량이 최소화됩니다. 기본적으로 사용자 수에 관계없이 시스템에 존재하는 경우, 1,500명의 사용자 각각은 최대 몇 초의 작업을 수행해야 합니다. 계산. • 새 블록은 10분 이내에 생성되며 사실상 blockchain을 떠나지 않습니다. 예를 들어, 첫 번째 실시예에서는 블록을 생성하는 데 걸리는 시간이 더 짧을 것으로 예상됩니다. 여기서 Λ는 P2P 가십에서 블록을 전파하는 데 필요한 시간입니다. 어떤 블록 크기를 선택하든 관계없이 \(\lambda\)는 1,500개의 200Blong 메시지를 전파하는 데 걸리는 시간입니다. (진정한 분산형 시스템에서 Λ는 본질적으로 본질적인 대기 시간이므로 Algorand 블록 생성의 제한 요소는 네트워크 속도입니다.) 두 번째 실시예는 실제로 실험적으로 ( ? 에 의해) 테스트되었는데, 이는 40분 이내에 블록이 생성됨을 나타냅니다. 초. 또한 Algorand의 blockchain은 무시할 수 있는 확률(예: 1 미만)로만 포크할 수 있습니다. 1조 단위), 따라서 사용자는 새 블록에 포함된 지불금을 다음과 같이 중계할 수 있습니다. 블록이 나타납니다. • 모든 권한은 사용자 자신에게 있습니다. Algorand은 진정한 분산 시스템입니다. 특히, 어떤 거래를 통제할 수 있는 외생적 실체(Bitcoin의 "채굴자")가 없습니다. 인식됩니다. Algorand의 기술. 1. 새롭고 빠른 비잔틴 합의 프로토콜. Algorand은 다음을 통해 새 블록을 생성합니다. 새로운 암호화, 메시지 전달, 바이너리 비잔틴 계약(BA) 프로토콜 BA⋆. 프로토콜 BA⋆(곧 논의할) 몇 가지 추가 속성을 충족할 뿐만 아니라 속도도 매우 빠릅니다. 대략적으로 말하면 이진 입력 버전은 3단계 루프로 구성됩니다. 여기서 플레이어 i는 단일 다른 모든 플레이어에게 mi 메시지를 보내세요. 더 많은 기능을 갖춘 완전하고 동기식 네트워크에서 실행됩니다. 플레이어의 2/3 이상이 정직하고 확률이 1/3보다 크면 각 루프 후에 프로토콜이 끝납니다. 합의. (우리는 프로토콜 BA⋆가 비잔틴 합의의 원래 정의를 충족한다는 점을 강조합니다. Pease, Shostak 및 Lamport [31]의 약화 없이.) Algorand은 이 바이너리 BA 프로토콜을 활용하여 다양한 통신에서 합의에 도달합니다. 각각의 새로운 블록에 모델을 추가합니다. 그런 다음 합의된 블록은 미리 정해진 수의 블록을 통해 인증됩니다. 적절한 검증자의 디지털 서명이 네트워크를 통해 전파됩니다. 2. 암호화 정렬. 매우 빠르지만 프로토콜 BA⋆는 더 많은 이점을 얻을 수 있습니다. 수백만 명의 사용자가 플레이할 때의 속도. 따라서 Algorand는 BA⋆의 플레이어를 선택합니다.모든 사용자 집합 중 훨씬 작은 하위 집합입니다. 다양한 종류의 권력 집중을 피하기 위해 문제가 발생하면 BA⋆의 새로운 실행을 통해 각각의 새로운 블록 Br이 구성되고 합의됩니다. 별도의 선택된 검증자 세트인 SV r에 의해. 원칙적으로 그러한 세트를 선택하는 것은 다음과 같이 어려울 수 있습니다. Br을 직접 선택합니다. 우리는 포용이라는 접근 방식을 통해 이러한 잠재적인 문제를 해결합니다. Maurice Herlihy의 통찰력 있는 제안, 암호화 분류. 정렬은 다음과 같은 관행입니다. 대규모의 적격 개인 중에서 무작위로 공무원을 선택합니다 [6]. (분류가 실행되었습니다. 수 세기에 걸쳐, 예를 들어 아테네, 피렌체, 베네치아 공화국이 그랬습니다. 현대 사법에서는 시스템에서는 배심원을 선택하는 데 종종 무작위 선택이 사용됩니다. 최근에는 무작위 샘플링도 이루어지고 있습니다. David Chaum [9]이 선거를 옹호했습니다.) 물론 분산형 시스템에서는 각 검증자 세트 SV r의 구성원을 무작위로 선택하는 데 필요한 무작위 코인은 문제가 있습니다. 따라서 우리는 모든 사용자 집단에서 각 검증자 세트를 선택하기 위해 암호화에 의존합니다. 자동(즉, 메시지 교환이 필요하지 않음)과 무작위가 보장되는 방식입니다. 본질적으로 우리는 이전 블록에서 자동으로 결정하기 위해 암호화 기능을 사용합니다. 새로운 블록 Br을 제안하는 리더인 사용자 Br-1과 검증자 세트 SV r이 존재한다. 리더가 제안한 블록에 대한 합의에 도달하는 책임. 악의적인 사용자가 영향을 미칠 수 있으므로 Br−1의 구성(예: 지불금 중 일부를 선택하여)을 특별히 구성하고 사용합니다. r번째 블록의 리더와 검증자 세트 SV r이 실제로 무작위로 선택되었습니다. 3. 수량(종자) Qr. 우리는 blockchain의 마지막 블록 Br−1을 사용하여 다음을 수행합니다. 새로운 블록 구축을 담당할 다음 검증자 세트와 리더를 자동으로 결정합니다. 브르. 이 접근 방식의 문제점은 단지 약간 다른 지불 방법을 선택함으로써 이전 라운드에서는 우리의 강력한 적이 다음 리더에 대해 엄청난 통제권을 얻습니다. 그 사람이 시스템에서 플레이어/돈의 1/1000만 통제하면 모든 리더가 악의적이다. (직관 섹션 4.1을 참조하십시오.) 이 과제는 모든 proof-of-stake 접근 방식의 핵심입니다. 그리고 우리가 아는 한, 지금까지 만족스럽게 해결되지 않았습니다. 이러한 과제를 해결하기 위해 우리는 의도적으로 별도의 신중한 솔루션을 구축하고 지속적으로 업데이트합니다. 정의된 양 Qr은 예측할 수 없을 뿐만 아니라, 우리의 방식으로 영향을 미칠 수도 없습니다. 강력한 적. Algorand이 선택한 Qr에서 나온 것이므로 Qr을 r번째 시드로 참조할 수 있습니다. 비밀 암호화 분류를 통해 생성에 특별한 역할을 할 모든 사용자 번째 블록. 4. 비밀 암호화 분류 및 비밀 자격 증명. 검증자 세트와 담당 리더를 선택하기 위해 현재 마지막 블록인 Br−1을 무작위로 명확하게 사용 새로운 블록인 Br을 만드는 것만으로는 충분하지 않습니다. Br을 생성하기 전에 Br−1을 알아야 하므로, Br−1에 포함된 마지막 비유동량 Qr−1도 알아야 합니다. 따라서 블록 Br을 계산하는 검증자이자 리더입니다. 그러므로 우리의 강력한 대적 Br에 대한 논의에 참여하기 전에 즉시 그들 모두를 부패시킬 수 있습니다. 그들이 인증하는 블록에 대한 모든 권한을 갖습니다. 이 문제를 방지하기 위해 리더(실제로 검증자도 포함)는 자신의 역할을 비밀리에 학습하지만 실제로 해당 역할을 맡은 모든 사람에게 증명할 수 있는 적절한 자격 증명을 계산합니다. 언제 사용자는 자신이 다음 블록의 리더라는 것을 개인적으로 깨닫고 먼저 비밀리에 자신의 블록을 조립합니다. 자신이 제안한 새 블록을 자신의 블록과 함께 (인증할 수 있도록) 전파합니다. 자격 증명. 이렇게 하면 대적은 다음 공격의 리더가 누구인지 즉시 깨닫게 될 것입니다. 블록은 즉시 그를 부패시킬 수 있지만 적이 그렇게 하기에는 너무 늦을 것입니다. 새로운 블록 선택에 영향을 미칩니다. 실제로 그는 지도자의 메시지를 더 이상 “회신”할 수 없습니다.강력한 정부가 WikiLeaks에 의해 바이러스로 퍼진 메시지를 다시 병에 담을 수는 없습니다. 앞으로 살펴보겠지만 리더의 고유성을 보장할 수 없으며 모든 사람이 리더가 누구인지 확신할 수도 없습니다. 리더 자신도 포함되어 있습니다! 그러나 Algorand에서는 명확한 진행이 보장됩니다. 5. 플레이어 교체 가능성. 새로운 블록을 제안한 후 리더는 "죽는" 것이 나을 수도 있습니다. 대적에 의해 부패됨) 그의 임무가 끝났기 때문입니다. 그러나 SV r의 검증자에게는 상황이 덜합니다. 간단하다. 실제로 충분히 많은 서명을 받은 새로운 블록 Br의 인증을 담당하게 되면서, 그들은 먼저 리더가 제안한 블록에 대해 비잔틴 합의를 실행해야 합니다. 문제는, 아무리 효율적이더라도 BA⋆에는 여러 단계와 2/3 이상의 플레이어의 정직성이 필요합니다. 이는 효율성상의 이유로 BA⋆의 플레이어 세트가 작은 세트 SV r로 구성되기 때문에 문제가 됩니다. 전체 사용자 집합 중에서 무작위로 선택됩니다. 그러므로 우리의 강력한 대적은 비록 할 수는 없지만 전체 사용자의 1/3을 부패시키면 SV r의 모든 구성원을 확실히 부패시킬 수 있습니다! 다행스럽게도 우리는 P2P 방식으로 메시지를 전파하여 실행되는 프로토콜 BA⋆가 플레이어 대체 가능하다는 것을 증명할 것입니다. 이 새로운 요구 사항은 프로토콜이 정확하고 각 단계가 완전히 새롭고 무작위로 실행되더라도 효율적으로 합의에 도달합니다. 독립적으로 선택된 플레이어 세트입니다. 따라서 수백만 명의 사용자가 있는 각각의 소규모 플레이어 세트는 BA⋆ 단계와 연관된 것은 아마도 다음 세트와 빈 교차점을 가질 것입니다. 게다가 BA⋆의 서로 다른 단계에 있는 플레이어 세트는 아마도 완전히 다른 단계를 가질 것입니다. 카디널리티. 게다가 각 세트의 멤버들은 다음 세트의 플레이어가 누구인지 알 수 없습니다. 내부 상태를 비밀리에 전달하지 마십시오. 교체 가능한 플레이어 속성은 실제로 역동적이고 매우 강력한 적을 물리치는 데 중요합니다. 우리가 상상하는 적. 우리는 교체 가능한 플레이어 프로토콜이 많은 분야에서 결정적인 역할을 할 것이라고 믿습니다. 컨텍스트와 애플리케이션. 특히 소규모 하위 프로토콜을 안전하게 실행하는 데 중요합니다. 역동적인 적과 함께 더 넓은 플레이어 세계에 포함되어 있습니다. 전체 플레이어의 작은 부분은 더 작은 규모의 모든 플레이어를 손상시키는 데 어려움이 없습니다. 하위 프로토콜. 추가 속성/기술: 게으른 정직함 정직한 사용자는 자신이 처방한 것을 따릅니다. 여기에는 온라인 상태 및 프로토콜 실행이 포함됩니다. 이후 Algorand에는 적당한 수준만 있습니다. 계산 및 통신 요구 사항, 온라인 상태 및 프로토콜 실행 배경”은 큰 희생이 아닙니다. 물론, 정직한 플레이어들 사이에는 몇 가지 "부재"가 있습니다. 갑작스러운 연결 끊김 또는 재부팅 필요로 인해 자동으로 허용됩니다(왜냐하면 우리는 항상 그러한 소수의 플레이어를 일시적으로 악의적인 것으로 간주할 수 있습니다. 그러나 지적하자면, Algorand은 정직한 사용자가 사용할 수 있는 새로운 모델에서 작동하도록 간단하게 조정할 수 있습니다. 대부분의 경우 오프라인 상태입니다. 우리의 새로운 모델은 다음과 같이 비공식적으로 소개될 수 있습니다. 게으른 정직. 대략적으로 말해서, 사용자 i는 (1) 자신이 규정한 모든 사항을 따르는 경우 게으르지만 정직합니다. 지침, 프로토콜에 참여하도록 요청받은 경우, 그리고 (2) 참여하도록 요청받은 경우 프로토콜에 적용하는 경우는 드물며 적절한 사전 통지가 있어야 합니다. 정직함에 대해 그렇게 여유로운 개념을 갖고 있으면, 우리는 정직한 사람들이 정직할 것이라고 더욱 확신할 수 있습니다. 필요할 때 바로 사용할 수 있으며, Algorand는 이러한 경우에 특정 시점에 시스템이 안전하게 작동하는 경우 참여하는 플레이어의 대다수는 악의적입니다.1.3 밀접하게 관련된 작품 작업 증명 접근 방식(인용된 [29] 및 [4]과 같은)은 우리의 접근 방식과 상당히 직교합니다. 그래서 메시지 전달 비잔틴 합의 또는 실제적인 비잔틴 내결함성을 기반으로 한 접근 방식 (인용된 [8]과 유사). 실제로 이러한 프로토콜은 모든 사용자 집합에서 실행될 수 없으며, 우리 모델에서는 적절하게 작은 사용자 집합으로 제한됩니다. 사실 우리의 강력한 적 실제로 BA 프로토콜을 실행하는 데 사용되는 소규모 세트에 관련된 모든 사용자를 즉시 손상시킵니다. 우리의 접근 방식은 사용자의 "권한"이 있다는 의미에서 지분 증명 [2]과 관련된 것으로 간주될 수 있습니다. 블록 구축에서 그들이 시스템에서 소유한 돈에 비례합니다. 그들이 "에스크로"에 넣은 돈). 우리 논문에 가장 가까운 논문은 Pass and Shi [30]의 Sleepy Consensus Model입니다. 피하기 위해 proof-of-work 접근 방식에는 많은 계산이 필요하기 때문에 그들의 논문은 (그리고 친절하게도) 크레딧) Algorand의 비밀 암호화 분류입니다. 이 중요한 측면의 공통점을 가지고 여러 우리 논문들 사이에는 상당한 차이가 존재합니다. 특히, (1) 해당 설정은 허가된 것뿐입니다. 이와 대조적으로 Algorand도 무허가 시스템입니다. (2) Nakamoto 스타일 프로토콜을 사용하므로 blockchain 포크가 자주 발생합니다. 비록 proof-of-work을 생략하고 프로토콜에서 비밀리에 선택된 리더에게 기간을 연장하도록 요청합니다. 가장 긴 유효 기간(더 풍부한 의미에서) blockchain. 따라서 포크는 불가피하며 이를 기다려야 합니다. 블록은 체인에서 충분히 "깊습니다". 실제로, 적과 함께 목표를 달성하기 위해 적응형 손상이 가능하려면 블록이 폴리(N) 깊이여야 합니다. 여기서 N은 시스템의 총 사용자 수입니다. 블록이 생성될 수 있다고 가정하더라도 1분 안에 N = 100만 명의 사용자가 있다면 약 200만 년을 기다려야 합니다. 블록은 N 2-deep이 되고, 블록은 N-deep이 되기까지 약 2년이 걸립니다. 대조적으로, Algorand의 blockchain은 적의 부패에도 불구하고 무시할 수 있는 확률로만 포크됩니다. 사용자는 즉시 적응할 수 있으며 새로운 블록은 즉시 신뢰할 수 있습니다. (3) 개별 비잔틴 계약을 처리하지 않습니다. 어떤 의미에서 그들은 단지 보장합니다. “가치의 증가하는 순서에 대한 최종 합의”. 그들의 프로토콜은 상태 복제 프로토콜입니다. BA보다 중요하며 개별 관심 가치에 대한 비잔틴 합의에 도달하는 데 사용할 수 없습니다. 이와 대조적으로 Algorand은 원하는 경우 한 번만 사용하여 수백만 명의 사용자가 신속하게 특정 관심 가치에 대한 비잔틴 합의에 도달합니다. (4) 약하게 동기화된 시계가 필요합니다. 즉, 모든 사용자의 시계는 약간의 시간만큼 오프셋됩니다. δ. 대조적으로, Algorand에서 시계는 (본질적으로) 동일한 "속도"만 있으면 됩니다. (5) 그들의 프로토콜은 게으르지만 정직한 사용자 또는 정직한 대다수의 온라인 사용자에게 작동합니다. 그들은 정직한 사용자가 한꺼번에 오프라인이 되는 문제를 제기한 데 대해 Algorand의 공로를 인정합니다. 이에 대응하여 게으른 정직 모델을 제시합니다. 그들의 프로토콜은 게으른 환경에서만 작동하는 것이 아닙니다. 정직 모델뿐만 아니라 적이 어떤 사용자를 선택하는지를 선택하는 적의 졸린 모델에서도 마찬가지입니다. 항상 대부분의 온라인 사용자가 정직하다면 온라인이고 오프라인입니다.2 2원본 버전의 논문에서는 실제로 적대적 졸음 모델의 보안만 고려했습니다. 는 그들의 버전보다 앞선 Algorand의 원래 버전은 또한 주어진 대다수의 온라인 플레이어는 항상 정직하지만 게으른 정직 모델을 선호하여 이를 고려 대상에서 명시적으로 제외했습니다. (예를 들어, 어느 시점에서 정직한 사용자의 절반이 오프라인으로 전환하기로 선택하면 대다수의 사용자는 온라인은 매우 악의적일 수 있습니다. 따라서 이러한 일이 발생하는 것을 방지하기 위해 대적은 자신의 대부분의 힘을 동원해야 합니다. 타락한 플레이어도 오프라인 상태가 되도록 유도합니다. 이는 명백히 그 자신의 이익에 반하는 것입니다.) 게으르지만 정직한 플레이어의 경우 온라인 사용자의 대다수가 항상 악의적인 경우에는 제대로 작동합니다. 그렇기 때문에 그렇습니다. 어느 시점에 자신이 결정적인 역할을 하게 될 것이라는 점을 알고 있는 충분한 수의 정직한 플레이어가 그 순간에 오프라인 상태가 되어서는 안 되며, 대적에 의해 강제로 오프라인 상태가 될 수도 없습니다. 왜냐하면 대적은 누가 공격을 하는지 모르기 때문입니다. 중요한 정직한 플레이어가 될 수 있습니다.(6) 단순하고 정직한 다수가 필요합니다. 대조적으로, Algorand의 현재 버전에는 다음이 필요합니다. 2/3의 정직한 다수. 우리와 가까운 또 다른 논문은 Ouroboros: 입증 가능한 보안 지분 증명 블록체인 프로토콜입니다. Kiayias, Russell, David 및 Oliynykov [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가 충돌 복원력을 갖기를 원합니다. 즉, H(x) = H(y)가 되는 두 개의 서로 다른 문자열 x와 y를 찾는 것이 어려워야 합니다. H가 256비트 길이의 출력을 갖는 임의의 oracle인 경우 이러한 문자열 쌍을 찾는 것은 실제로 어렵다. (무작위로 시도하고 생일 역설에 의존하면 2256/2 = 2128이 필요합니다. 재판.) 디지털 서명. 디지털 서명을 통해 사용자는 서로 정보를 인증할 수 있습니다. 비밀 키를 공유하지 않고 공유합니다. 디지털 서명 체계는 세 가지 빠른 서명으로 구성됩니다. 알고리즘: 확률적 키 생성기 G, 서명 알고리즘 S, 검증 알고리즘 V. 충분히 높은 정수인 보안 매개변수 k가 주어지면 사용자 i는 G를 사용하여 다음 쌍을 생성합니다. k-비트 키(즉, 문자열): "공개" 키 pki 및 일치하는 "비밀" 서명 키 스키. 결정적으로, 공개 키는 해당 비밀 키를 "배신"하지 않습니다. 즉, pki에 대한 지식이 있어도 나 말고 다른 사람은 천문학적 시간보다 짧은 시간에 스키를 계산할 수 있습니다. 사용자 i는 스키를 사용하여 메시지에 디지털 서명을 합니다. 가능한 각 메시지(이진 문자열) m에 대해 i가 먼저 hashes m 그런 다음 입력 H(m)에 대해 알고리즘 S를 실행하고 k비트 문자열을 생성하기 위해 스키를 실행합니다. sigpki(m) \(\triangleq\)S(H(m), 스키) .3 3H는 충돌 복원력이 있기 때문에 하나에 서명함으로써 다른 서명에 "우연히 서명"하는 것은 사실상 불가능합니다. 메시지 m'.이진 문자열 sigpki(m)은 i의 m 디지털 서명(pki에 상대적)이라고 하며 다음과 같이 될 수 있습니다. 공개 키 pki가 문맥에서 명확할 때 sigi(m)로 더 간단하게 표시됩니다. pki를 아는 사람은 누구나 이를 사용하여 i가 생성한 디지털 서명을 확인할 수 있습니다. 구체적으로, 에 (a) 플레이어 i의 공개 키 pki, (b) 메시지 m, (c) 문자열 s, 즉 i가 주장하는 문자열을 입력합니다. 메시지 m의 디지털 서명에 대해 검증 알고리즘 V는 YES 또는 NO를 출력합니다. 디지털 서명 체계에 필요한 속성은 다음과 같습니다. 1. 적법한 서명은 항상 확인됩니다. s = sigi(m)이면 V(pki, m, s) = Y ES입니다. 그리고 2. 디지털 서명은 위조하기 어렵습니다. 스키에 대한 지식이 없으면 그러한 문자열을 찾는 데 시간이 걸립니다. i가 서명하지 않은 메시지 m의 경우 V(pki, m, s) = Y ES는 천문학적으로 길다. (Goldwasser, Micali 및 Rivest [17]의 강력한 보안 요구 사항에 따라 이는 사실입니다. 다른 메시지의 서명을 얻을 수 있는 경우에도 마찬가지입니다.) 따라서 다른 사람이 자신을 대신하여 메시지에 서명하는 것을 방지하려면 플레이어가 자신의 메시지를 보관해야 합니다. 키 스키 비밀(따라서 "비밀 키"라는 용어)에 서명하고 누구나 메시지를 확인할 수 있도록 합니다. 그가 서명하면 나는 그의 키 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'에도 적용됩니다. 공개 키. 그러나 특히 고유성 속성은 다음을 사용하는 경우 다음을 의미합니다. 일치하는 비밀 키 sk와 함께 공개 키 pk를 계산하기 위해 지정된 키 생성기 G, 따라서 sk를 알았더라면 그가 두 가지 다른 디지털 장치를 찾는 것도 본질적으로 불가능했을 것입니다. pk와 관련된 동일한 메시지의 서명.) 비고 • 고유 서명부터 검증 가능한 무작위 함수까지. 디지털에 비해 고유성 속성이 있는 서명 체계에서 m \(\to\) H(sigi(m)) 매핑은 다음과 연관됩니다. 가능한 각 문자열 m, 무작위로 선택된 고유한 256비트 문자열, 그리고 이 문자열의 정확성 서명 sigi(m)이 주어지면 매핑이 증명될 수 있습니다. 즉 고유성 속성을 본질적으로 만족시키는 이상적인 hashing 및 전자서명 방식이다. 소개된 바와 같이 검증 가능한 무작위 함수의 기본 구현을 제공합니다. Micali, Rabin 및 Vadhan [27]. (원래 구현은 필연적으로 더 복잡했습니다. 이상적인 hashing에 의존하지 않았기 때문입니다.)• 디지털 서명에 대한 세 가지 요구 사항. Algorand에서 내가 디지털에 의존하는 사용자는 서명 (1) 본인의 결제를 인증합니다. 이 애플리케이션에서 키는 "장기적"일 수 있습니다(예: 장기간에 걸쳐 많은 메시지에 서명) 일반적인 서명 체계에서 비롯됩니다. (2) i가 라운드 r의 일부 단계 s에서 행동할 자격이 있음을 증명하는 자격 증명을 생성합니다. 여기, 키는 장기적일 수 있지만 고유성 속성을 충족하는 체계에서 나와야 합니다. (3) 그가 행동하는 각 단계에서 내가 보내는 메시지를 인증합니다. 여기서 키는 다음과 같아야 합니다. 임시적(즉, 처음 사용 후 폐기됨)이지만 일반 서명 체계에서 나올 수 있습니다. • 적은 비용의 단순화. 단순화를 위해 각 사용자 i가 단일 장기 키를 갖는 것을 상상합니다. 따라서 이러한 키는 고유성을 지닌 서명 체계에서 나와야 합니다. 재산. 이러한 단순성은 계산 비용이 적습니다. 일반적으로 실제로 고유한 디지털 서명은 일반 서명보다 생성 및 확인 비용이 약간 더 비쌉니다. 2.2 이상적인 공공 원장 Algorand은 이상적인 공개 원장을 기반으로 다음 결제 시스템을 모방하려고 합니다. 1. 초기 상태. 돈은 개별 공개 키(개인적으로 생성되고 사용자 소유). pk1, . . . , pkj는 초기 공개 키이고 a1, . . . , j 각각의 초기 금액 단위의 경우 초기 상태는 다음과 같습니다. S0 = (pk1, a1), . . . , (pkj, aj) , 이는 시스템 내에서 상식으로 간주됩니다. 2. 지불. pk를 현재 0개 이상의 화폐 단위를 갖는 공개 키로 두고, pk′는 또 다른 공개 키로 둡니다. 키, 그리고 a′는 a보다 크지 않은 음수가 아닌 숫자입니다. 그렇다면 (유효한) 결제는 디지털 결제입니다. pk를 기준으로 a' 화폐 단위를 pk에서 pk'로 함께 전송하는 것을 지정하는 서명 몇 가지 추가 정보와 함께. 기호에서는, \(\wp\)= SIGpk(pk, pk′, a′, I, H(I)), 유용하지만 민감하지 않은 추가 정보(예: 시간 정보 및 결제 식별자) 및 민감한 것으로 간주되는 추가 정보(예: 지불 이유, pk 및 pk′ 소유자의 신원 등). 우리는 pk(또는 그 소유자)를 지불인으로, 각 pk'(또는 그 소유자)를 수취인으로, a'를 다음과 같이 지칭합니다. 결제 금액 \(\wp\). 결제를 통한 무료 가입. 사용자는 원할 때마다 시스템에 참여할 수 있습니다. 자신의 공개/비밀 키 쌍을 생성합니다. 따라서, 에 나타나는 공개키 pk'는 위의 지불은 돈을 "소유"한 적이 없는 새로 생성된 공개 키일 수 있습니다. 전에. 3. 매직 레저. 이상화된 시스템에서는 모든 결제가 유효하며 변조 방지 기능으로 표시됩니다. 모든 사람이 볼 수 있도록 "하늘에 게시된" 지불 세트 목록 L: L = 1페이, 2페이, . . . ,각 블록 PAY r+1은 블록 출현 이후 이루어진 모든 지불 세트로 구성됩니다. 지불 r. 이상적인 시스템에서는 고정된(또는 유한한) 시간이 지나면 새로운 블록이 나타납니다. 논의. • 더 많은 일반 지불 및 미사용 거래 출력. 보다 일반적으로 공개 키 pk가 a 금액을 소유한 경우 pk의 유효한 지불 \(\wp\)을 통해 금액 a′을 이체할 수 있습니다. 1, 아' 2, . . ., 각각 키 pk'에 1, PK′ 2, . . ., P가 있는 한 자아′ j \(\leq\)a. Bitcoin 및 유사한 시스템에서는 공개 키 pk가 소유한 자금이 별도의 자산으로 분리됩니다. 금액, pk가 지급한 금액은 해당 분리된 금액 전체를 이체해야 합니다. pk가 a의 a' < a 부분만 다른 키로 전송하려면 다음 키도 전송해야 합니다. 잔액, 사용되지 않은 트랜잭션 출력을 다른 키(아마도 pk 자체)로 보냅니다. Algorand은 금액이 분리된 키와도 작동합니다. 하지만, 그 부분에 집중하기 위해 Algorand의 새로운 측면으로 인해 더 단순한 결제 방식을 고수하는 것이 개념적으로 더 간단합니다. 그리고 그와 관련된 단일 금액을 갖는 키. • 현재 상태. 이상화된 계획은 현재에 대한 정보를 직접 제공하지 않습니다. 시스템 상태(즉, 각 공개 키에 얼마나 많은 화폐 단위가 있는지). 이 정보 Magic Ledger에서 추론할 수 있습니다. 이상적인 시스템에서는 활성 사용자가 최신 상태 정보를 지속적으로 저장하고 업데이트하며, 그렇지 않으면 처음부터 다시 작성해야 하거나 지난 번에 다시 작성해야 했을 것입니다. 그것을 계산했다. (이 백서의 다음 버전에서는 Algorand을 확장하여 사용자는 현재 상태를 효율적인 방식으로 재구성할 수 있습니다.) • 보안 및 "개인정보 보호". 디지털 서명은 누구도 결제를 위조할 수 없음을 보장합니다. 다른 사용자. 결제\(\wp\)에서는 공개키와 금액이 숨겨지지 않지만 민감한 정보는 정보는 나야. 실제로 \(\wp\)에는 H(I)만 나타나고 H는 이상적인 hash 함수이므로 H(I) 는 임의의 256비트 값이므로 내가 무엇을 더 잘했는지 알아낼 수 있는 방법이 없습니다. 단순히 추측하면 됩니다. 하지만 내가 어떤 사람인지 증명하기 위해(예: 지불 이유를 증명하기 위해) 지불자는 I를 공개할 수도 있습니다. 공개된 I의 정확성은 H(I)를 계산하여 확인할 수 있습니다. 그리고 그 결과 값을 \(\wp\)의 마지막 항목과 비교합니다. 실제로 H는 충돌 복원력이 있으므로 H(I) = H(I′)와 같은 두 번째 값 I′을 찾는 것은 어렵습니다. 2.3 기본 개념 및 표기법 키, 사용자 및 소유자 별도로 지정하지 않는 한, 각 공개 키(줄여서 "키")는 고유성을 지닌 디지털 서명 체계에 상대적이며 장기적입니다. 내가 조인하는 공개 키 이미 시스템에 있는 다른 공개 키 j가 i에 지불할 때 시스템이 작동합니다. 색상의 경우 키를 의인화합니다. 우리는 키 i를 "그"라고 부르며, 내가 정직하다고 말하고, 내가 보낸다고 말합니다. 메시지 등을 수신합니다. 사용자는 키의 동의어입니다. 키를 구별하고 싶을 때 해당 키가 속한 사람에 대해서는 각각 "디지털 키" 및 "소유자"라는 용어를 사용합니다. 무허가 및 허가 시스템. 디지털 키가 무료인 경우 시스템은 허가가 없습니다. 언제든지 가입할 수 있으며 소유자는 여러 개의 디지털 키를 소유할 수 있습니다. 그렇지 않으면 허가됩니다.고유한 표현 Algorand의 각 개체에는 고유한 표현이 있습니다. 특히, 각각은 {(x, y, z, . . . .) : x \(\in\)X, y \(\in\)Y, z \(\in\)Z, . . .}는 미리 지정된 방식으로 정렬됩니다. 예: 첫 번째 x에서 사전식으로, 그다음 y로, 등등. 동일 속도 클록 전역 시계는 없습니다. 오히려 각 사용자는 자신만의 시계를 갖습니다. 사용자 시계 어떤 방식으로든 동기화할 필요는 없습니다. 그러나 우리는 그것들이 모두 같은 속도를 가지고 있다고 가정합니다. 예를 들어, 사용자 i의 시계 기준으로 오후 12시라면, 기준으로는 오후 2시 30분일 수 있다. 다른 사용자 j의 시계는 i의 시계 기준으로 12시 1분, j의 시계 기준으로는 2시 31분입니다. j의 시계에. 즉, “모든 사용자에게 1분은 동일합니다(충분히, 본질적으로 동일함).” 라운드 Algorand은 논리 단위 r = 0, 1, 로 구성됩니다. . ., 라운드라고 합니다. 우리는 라운드를 표시하기 위해 지속적으로 위 첨자를 사용합니다. 숫자가 아닌 수량 Q를 나타냅니다. (예: 문자열, 공개 키, 집합, 디지털 서명 등)은 라운드 r을 참조하므로 간단히 Qr이라고 씁니다. Q가 실수인 경우에만(숫자로 해석할 수 있는 이진 문자열과 반대) 다음을 수행하십시오. 기호 r이 Q의 지수로 해석될 수 없도록 Q(r)을 씁니다. (a의 시작) 라운드 r > 0에서 모든 공개 키 세트는 PKr이고 시스템 상태는 다음과 같습니다. 선생님 = 엔 나, a(r) 나 , . . . : 나는 \(\in\)PKro , 여기서 a(r) 나 공개 키 i에 사용할 수 있는 금액입니다. PKr은 다음에서 추론할 수 있습니다. Sr, Sr은 각 공개 키에 대해 다른 구성 요소를 지정할 수도 있습니다. i. 0 라운드의 경우 PK0은 초기 공개 키 집합이고 S0은 초기 상태입니다. PK0과 S0는 시스템에서 상식으로 간주됩니다. 단순화를 위해 라운드 r의 시작 부분에서 PK1, . . . , PKr 및 S1, . . . , 선생님 라운드 r에서 시스템 상태는 Sr에서 Sr+1로 전환됩니다. 라운드 r: Sr −→Sr+1. 결제 Algorand에서는 사용자가 지속적으로 결제를 합니다. 하위 섹션 2.7에 설명되어 있습니다. 사용자 i \(\in\)PKr의 결제 \(\wp\)는 동일한 형식과 의미를 갖습니다. 이상적인 시스템에서와 마찬가지로. 즉, \(\wp\)= SIGi(i, i′, a, I, H(I)) . 지불 \(\wp\)은 (1) 금액인 경우 r 라운드에서 개별적으로 유효합니다(간략히 r 라운드 지불). a는 a(r)보다 작거나 같습니다. i, 그리고 (2) r′ < r에 대해 공식 페이세트 PAY r′에는 나타나지 않습니다. (아래 설명과 같이 두 번째 조건은 \(\wp\)이 아직 유효하지 않음을 의미합니다. i의 라운드 r 지불 세트는 해당 금액의 합계가 최대 a(r)인 경우 집합적으로 유효합니다. 나. 지불 세트 라운드 R 지불 세트 P는 각 사용자 i에 대해 지불이 이루어지는 라운드 R 지불 세트입니다. P의 i(아마도 없음)는 집합적으로 유효합니다. 모든 round-r 페이세트의 집합은 PAY(r)입니다. 라운드 R P의 상위 집합이 라운드 R 지불 집합이 아닌 경우 지불 집합 P는 최대입니다. 우리는 실제로 지불 \(\wp\)이 라운드 \(\rho\), \(\wp\)= SIGi(\(\rho\), i, i′, a, I, H(I))를 지정하는 것을 제안합니다. 일부 고정된 음수가 아닌 정수 k에 대해 [\(\rho\), \(\rho\) + k] 외부의 모든 라운드에서는 유효할 수 없습니다. 4이것은 \(\wp\)가 "효과적"인지 확인하는 것을 단순화합니다(즉, 일부 급여 세트가 유효한지 여부를 결정하는 것을 단순화합니다) PAY r에는 \(\wp\)가 포함되어 있습니다. k = 0일 때 \(\wp\)= SIGi(r, i, i′, a, I, H(I)) 및 \(\wp\)/\(\in\)PAY r인 경우 \(\wp\)를 다시 제출해야 합니다.ffi공용지불세트 모든 라운드 r에 대해 Algorand은 (나중에 설명하는 방식으로) 공개적으로 선택합니다. 단일(비어 있을 수도 있음) 페이세트, PAY r, 라운드의 공식 페이세트. (본질적으로 PAY r은 "실제로" 발생한 라운드 R 지불.) 이상적인 시스템(및 Bitcoin)에서와 마찬가지로 (1) 새로운 사용자 j가 시스템에 들어갈 수 있는 유일한 방법입니다. 주어진 라운드 r의 공식 지불 세트 PAY r에 속하는 지불의 수령인입니다. 그리고 (2) PAY r은 현재 라운드 Sr에서 다음 라운드 Sr+1의 상태를 결정합니다. 상징적으로, PAY r : Sr −→Sr+1. 구체적으로, 1. 라운드 r + 1의 공개 키 세트인 PKr+1은 PKr의 합집합과 모든 키 세트로 구성됩니다. PAY r의 지불에 처음으로 나타나는 수취인 키; 그리고 2. 금액 a(r+1) 나 라운드 r + 1에서 사용자 i가 소유한 것은 ai(r)의 합입니다. 즉, 이전 라운드에서 내가 소유한 금액(i ̸\(\in\)PKr인 경우 0) — 및 금액의 합계 PAY r의 지불에 따라 i에게 지불됩니다. 요약하자면, 이상적인 시스템에서와 같이 각 상태 Sr+1은 이전 지불 내역에서 공제 가능합니다. 지불 0, . . . , 지불 r. 2.4 블록과 검증된 블록 Algorand0에서 라운드 r에 해당하는 블록 Br은 r 자체를 지정합니다. 지불 세트 r 라운드, PAY 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에서는 블록의 신뢰성이 실제로 별도의 정보로 보증됩니다. Br을 입증된 블록인 Br로 바꾸는 "블록 인증서" CERT r. 따라서 매직 레저는 검증된 블록의 순서로 구현되며, B1, B2, . . . 토론 앞으로 살펴보겠지만 CERT r은 H(Br)에 대한 디지털 서명 세트로 구성됩니다. SV r 회원의 대다수와 각 회원이 실제로 속해 있다는 증거 SV r에. 물론 블록 자체에 CERT r 인증서를 포함할 수도 있지만 찾을 수는 없습니다. 개념적으로는 별도로 유지하는 것이 더 깔끔합니다.) Bitcoin에서 각 블록은 특별한 속성을 충족해야 합니다. 즉, "다음의 해를 포함해야 합니다. 암호화 퍼즐”, 이는 블록 생성을 계산 집약적으로 만들고 포크를 모두 불가피하게 만듭니다. 그리고 드물지 않습니다. 대조적으로, Algorand의 blockchain에는 두 가지 주요 장점이 있습니다. 최소한의 계산으로, 압도적으로 높은 확률로 포크되지 않습니다. 각 블록 Bi는 blockchain에 들어가자마자 안전하게 최종 처리됩니다.2.5 허용 가능한 실패 확률 Algorand의 보안을 분석하기 위해 우리는 확률 F를 지정합니다. 무언가 잘못되었다는 사실을 받아들입니다(예: 검증자 세트 SV r이 정직한 다수를 갖지 않는다는 사실). 암호화 hash 함수 H의 출력 길이의 경우와 마찬가지로 F도 매개변수입니다. 그러나 이 경우와 마찬가지로 보다 직관적인 결과를 얻기 위해 F를 구체적인 값으로 설정하는 것이 유용하다는 것을 알았습니다. Algorand에서는 동시에 충분한 보안을 누리는 것이 실제로 가능하다는 사실을 이해합니다. 그리고 충분한 효율성. F는 원하는 대로 설정할 수 있는 매개변수임을 강조하기 위해 처음에는 두 번째 실시예는 각각 설정했습니다. F = 10−12 그리고 F = 10−18 . 토론 10-12는 실제로 1조분의 1보다 적다는 점에 유의하세요. 우리의 응용 프로그램에서는 F를 선택하는 것이 적절합니다. 10-12는 확률이 아니라는 점을 강조하겠습니다. 이를 통해 공격자는 정직한 사용자의 지불금을 위조할 수 있습니다. 모든 결제는 디지털 방식으로 이루어집니다. 서명되므로 적절한 디지털 서명을 사용하면 결제가 위조될 확률은 다음과 같습니다. 10-12보다 훨씬 낮으며 실제로 본질적으로 0입니다. 우리가 기꺼이 용납할 수 있는 나쁜 사건 확률 F는 Algorand의 blockchain 포크입니다. F로 설정하면 1분 길이의 라운드에서는 Algorand의 blockchain에서 포크가 드물게 발생할 것으로 예상됩니다. (대략) 190만 년에 한 번. 대조적으로, Bitcoin에서는 포크가 꽤 자주 발생합니다. 더 까다로운 사람은 F를 더 낮은 값으로 설정할 수 있습니다. 이를 위해 두 번째 실시예에서는 F를 10−18로 설정하는 것을 고려합니다. 참고로 1초마다 블록이 생성된다고 가정하면 1018입니다. 빅뱅부터 현재까지 우주가 우주에 걸린 추정 시간(초)입니다. 시간. 따라서 F = 10−18인 경우 블록이 1초 안에 생성되면 다음과 같은 기간을 예상해야 합니다. 포크를 볼 수 있는 우주. 2.6 적대적 모델 Algorand은 매우 적대적인 모델에서 보안을 유지하도록 설계되었습니다. 설명해 보겠습니다. 정직하고 악의적인 사용자 사용자가 자신의 모든 프로토콜 지침을 따르면 정직합니다. 메시지를 완벽하게 보내고 받을 수 있습니다. 사용자가 악의적입니다(즉, 비잔틴, 분산 컴퓨팅의 용어) 규정된 지침에서 임의로 벗어날 수 있는 경우. 대적 대적자는 색상을 의인화한 효율적인(기술적으로 다항식 시간) 알고리즘으로, 원하는 사용자를 언제라도 즉시 악의적으로 만들 수 있습니다(주제 그가 손상시킬 수 있는 사용자 수의 상한선까지만). 대적은 모든 악의적인 사용자를 완전히 통제하고 완벽하게 조정합니다. 그는 모든 조치를 취한다 모든 메시지를 받고 보내는 것을 포함하여 그들을 대신하여 그들이 다음에서 벗어나도록 할 수 있습니다. 임의의 방식으로 규정된 지침을 제공합니다. 아니면 단순히 전송을 보내는 손상된 사용자를 격리할 수도 있습니다. 그리고 메시지 수신. 사용자 i가 악의적이라는 사실을 자동으로 아는 사람은 아무도 없다는 점을 분명히 합시다. 대적이 그에게 취하는 행동으로 인해 나의 악의가 나타날 수도 있습니다. 그러나 이 강력한 적수는 • 무한한 계산 능력이 없으며 디지털 데이터를 성공적으로 위조할 수 없습니다. 가능성이 거의 없는 경우를 제외하고는 정직한 사용자의 서명입니다. 그리고• 정직한 사용자 간의 메시지 교환을 어떤 식으로든 방해할 수 없습니다. 게다가 정직한 사용자를 공격하는 그의 능력은 다음 가정 중 하나에 의해 제한됩니다. 정직이 대부분의 돈 우리는 HMM(Honest Majority of Money)의 연속체를 고려합니다. 가정: 즉, 음이 아닌 정수 k와 실수 h > 1/2에 대해, HHMk > h: 모든 라운드 r의 정직한 사용자는 전체 돈의 h보다 더 큰 부분을 소유했습니다. 라운드 r −k에서의 시스템. 논의. 모든 악의적인 사용자가 자신의 행동을 완벽하게 조정한다고 가정합니다(마치 통제된 것처럼). 단일 실체, 즉 적에 의한)는 다소 비관적인 가설입니다. 너무 완벽한 조화 많은 개인이 달성하기 어렵습니다. 아마도 조정은 별도의 그룹 내에서만 발생할 수 있습니다. 악의적인 플레이어. 하지만 악의적인 사용자의 조정 수준을 확신할 수 없기 때문에 즐길 수도 있고, 후회하는 것보다 안전한 것이 낫습니다. 공격자가 은밀하게, 동적으로, 즉각적으로 사용자를 손상시킬 수 있다고 가정하는 것도 비관적이다. 결국 현실적으로 사용자 작업을 완전히 제어하려면 시간이 좀 걸립니다. 예를 들어, HMMk > h라는 가정은 라운드(평균)가 구현되면 다음을 의미합니다. 그러면 1분 안에 해당 라운드의 돈 대부분이 정직한 손에 남게 됩니다. k = 120인 경우 최소 2시간, k = 10,000인 경우 최소 1주일. HMM 가정과 이전의 정직한 컴퓨팅 파워(Honest Majority of Computing Power) 가정은 컴퓨팅 능력을 돈으로 살 수 있다는 점에서 관련이 있습니다. 악의적인 사용자가 대부분의 돈을 소유하고 있다면 대부분의 컴퓨팅 능력을 얻을 수 있습니다. 2.7 커뮤니케이션 모델 우리는 메시지 전파, 즉 "P2P 가십"5을 유일한 수단으로 생각합니다. 의사소통. 임시 가정: 전체 네트워크에서 메시지가 적시에 전달됩니다. 에 대한 이 백서의 대부분에서는 전파된 모든 메시지가 거의 모든 정직한 사용자에게 전달된다고 가정합니다. 적시에. 우리는 네트워크를 다루는 섹션 10에서 이 가정을 제거할 것입니다. 자연적으로 발생하거나 적대적으로 유도된 파티션. (앞으로 살펴보겠지만, 우리는 단지 가정만 할 뿐입니다. 네트워크의 연결된 각 구성 요소 내에서 메시지를 적시에 전달합니다.) (전체 네트워크에서) 전파된 메시지의 적시 전달을 캡처하는 구체적인 방법 중 하나는 다음과 같습니다. 다음: 모든 도달 가능성 \(\rho\) > 95% 및 메시지 크기 \(\mu\) \(\in\)Z+에 대해 다음과 같은 \(\lambda\) \(\rho\),μ가 존재합니다. 정직한 사용자가 시간 t에 \(\mu\)바이트 메시지 m을 전파하면, 그런 다음 m은 t + \(\lambda\) \(\rho\),μ 시간까지 정직한 사용자의 적어도 일부 \(\rho\)에 도달합니다. 5기본적으로 Bitcoin에서와 같이 사용자가 메시지 m을 전파하면 모든 활성 사용자는 처음으로 m을 수신하고 무작위로 그리고 독립적으로 적절하게 적은 수의 활성 사용자인 "이웃"을 선택하여 m을 전달합니다. 아마도 그가 그들로부터 승인을 받을 때까지 말이죠. m의 전파는 사용자가 수신하지 않으면 종료됩니다. m 처음으로요.그러나 위의 속성은 다른 사용자/저장소/등에 의해 최신 blockchain을 얻기 위한 메커니즘을 명시적이고 별도로 구상하지 않고서는 우리의 Algorand 프로토콜을 지원할 수 없습니다. 실제로, 새로운 블록 Br을 생성하려면 적절한 검증자 세트가 적시에 라운드 r을 수신해야 할 뿐만 아니라 메시지뿐만 아니라 이전 라운드의 메시지도 포함하여 Br−1 및 기타 이전 라운드의 모든 메시지를 파악합니다. Br로 지불한 금액이 유효한지 확인하는 데 필요한 블록입니다. 다음 대신 가정이 성공합니다. MP(메시지 전파) 가정: 모든 \(\rho\) > 95% 및 μ \(\in\)Z+에 대해 \(\lambda\) \(\rho\),μ가 존재합니다. 따라서 모든 시간 t와 모든 \(\mu\)바이트 메시지 m은 t −\(\lambda\) \(\rho\),μ 이전에 정직한 사용자에 의해 전파되었습니다. m은 정직한 사용자의 적어도 일부 \(\rho\)에 의해 시간 t까지 수신됩니다. 프로토콜 Algorand '은 실제로 소수의 사용자(즉, 검증자)에게 각각 지시합니다. Algorand '의 라운드 단계에서 (작은) 규정된 크기의 별도 메시지를 전파하기 위해, 그리고 우리는 이러한 지침을 이행하는 데 필요한 시간을 제한해야 합니다. 우리는 국회의원을 풍부하게 함으로써 그렇게 합니다. 다음과 같이 가정합니다. 모든 n, \(\rho\) > 95% 및 \(\mu\) \(\in\)Z+에 대해 모든 시간 t 및 모든 \(\mu\) 바이트에 대해 다음과 같은 \(\lambda\)n,\(\rho\),μ가 존재합니다. 메시지 m1, . . . , mn, 각각은 t −\(\lambda\)n,\(\rho\),μ, m1, . . . , 백만 개가 수신되었습니다. 시간 t까지, 정직한 사용자의 적어도 일부 \(\rho\)만큼. 참고 • 위의 가정은 의도적으로 단순하지만 우리 논문에서 필요한 것보다 더 강력합니다.6 • 단순화를 위해 \(\rho\) = 1이라고 가정하므로 \(\rho\)에 대한 언급은 생략합니다. • 우리는 그가 MP의 가정을 위반하지 않는 한, 적대자가 모든 메시지의 전달을 완전히 제어합니다. 특히 솔직한 사람의 눈에 띄지 않게 사용자는 어느 정직한 플레이어가 어떤 메시지를 받을지 임의로 결정할 수 있습니다. 그가 원하는 메시지의 전달 속도를 임의로 가속화합니다.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의 핵심 요소입니다. 실제로는 그것을 통해 Algorand이 포크의 영향을 받지 않는 BA 프로토콜을 사용합니다. 그러나 우리의 보안을 위해 강력한 적, Algorand은 새로운 플레이어 교체 가능성을 충족하는 BA 프로토콜에 의존해야 합니다. 제약. 또한 Algorand이 효율적이려면 이러한 BA 프로토콜이 매우 효율적이어야 합니다. BA 프로토콜은 이상적인 통신 모델, 동기식 완료를 위해 처음 정의되었습니다. 네트워크(SC 네트워크). 이러한 모델을 사용하면 BA 프로토콜을 더 간단하게 설계하고 분석할 수 있습니다. 6정직한 백분율 h와 허용 가능한 실패 확률 F가 주어지면 Algorand은 상한 N을 계산합니다. 한 단계의 최대 검증자 수까지. 따라서 MP 가정은 n \(\leq\)N에 대해서만 유지되면 됩니다. 또한, 언급한 바와 같이 MP 가정은 얼마나 많은 다른 메시지가 함께 전파될 수 있는지에 관계없이 유지됩니다. 엠제이. 그러나 앞으로 보게 되겠지만 Algorand 메시지는 본질적으로 겹치지 않는 시간에 전파됩니다. 단일 블록이 전파되거나 최대 N명의 검증자가 작은 블록(예: 200B)을 전파하는 간격입니다. 메시지. 따라서 우리는 MP 가정을 더 약하지만 더 복잡한 방식으로 다시 기술할 수 있습니다. 7예를 들어, 그는 정직한 플레이어가 보낸 메시지를 즉시 배울 수 있습니다. 따라서 악의적인 사용자 i'는 정직한 사용자 i와 동시에 메시지를 전파하도록 요청받은 경우 항상 자신의 메시지 m'을 선택할 수 있습니다. m이 실제로 i에 의해 전파된 메시지. 이 능력은 분산 컴퓨팅 용어로 돌진과 관련이 있습니다. 문학.따라서 이 섹션에서는 SC 네트워크를 위한 새로운 BA 프로토콜인 BA⋆를 소개하고 이를 무시합니다. 선수 교체 가능성 문제. 프로토콜 BA⋆는 별도의 가치에 대한 기여입니다. 실제로 이는 지금까지 알려진 SC 네트워크에 대한 가장 효율적인 암호화 BA 프로토콜입니다. Algorand 프로토콜 내에서 이를 사용하기 위해 BA⋆를 약간 수정하여 다른 사항을 설명합니다. 통신 모델 및 컨텍스트를 확인하세요. 단, 섹션 X에서 BA⋆가 어떻게 사용되는지 강조하세요. 실제 프로토콜 내에서 Algorand '. BA⋆가 운영되는 모델과 비잔틴 계약의 개념을 상기하는 것부터 시작합니다. 3.1 동기식 완전한 네트워크 및 일치하는 적 SC 네트워크에는 각 적분 시간 r = 1, 2, ...에서 똑딱거리는 공통 시계가 있습니다. . . 짝수 시간에 r을 클릭할 때마다 각 플레이어 i는 즉각적으로 동시에 단일 메시지를 보냅니다. 메시지 미스터 i,j(아마도 빈 메시지)를 자신을 포함한 각 플레이어 j에게 보냅니다. 각 씨 i,j가 수신됨 이때 플레이어 j가 보낸 사람 i의 신원과 함께 r + 1을 클릭합니다. 다시 말하지만, 통신 프로토콜에서 플레이어는 자신이 규정한 모든 사항을 따르면 정직합니다. 지시, 그리고 그렇지 않으면 악의적입니다. 모든 악의적인 플레이어는 완전히 통제되고 완벽하게 제어됩니다. 특히 다음 주소로 전달된 모든 메시지를 즉시 수신하는 대적에 의해 조정됩니다. 악의적인 플레이어가 보내는 메시지를 선택합니다. 대적은 이상한 순간에 클릭을 하면 원하는 정직한 사용자를 즉시 악의적인 사용자로 만들 수 있습니다. 그는 악의적인 플레이어의 수에 따라 가능한 상한선만 적용되기를 원합니다. 즉, 공격자는 "정직한 사용자 i가 이미 보낸 메시지를 방해할 수 없습니다". 평소대로 배달되었습니다. 대적은 또한 각 짝수 라운드에서 즉시 볼 수 있는 추가 능력을 가지고 있습니다. 현재 정직한 플레이어가 보내는 메시지와 이 정보를 즉시 사용하여 선택합니다. 악의적인 플레이어가 동시에 보내는 메시지는 틱입니다. 비고 • 적의 힘. 위의 설정은 매우 적대적입니다. 실제로 비잔틴 조약에서 문학에서는 많은 설정이 덜 적대적입니다. 그러나 좀 더 적대적인 설정이 있습니다. 또한 정직한 플레이어가 보낸 메시지를 본 후 적이 있는 것으로 간주되었습니다. 주어진 시간에 r을 클릭하면 네트워크에서 이러한 모든 메시지를 즉시 지울 수 있습니다. i가 손상되었습니다. 지금 악의적인 i가 보내는 메시지를 선택하고 r을 클릭하여 가져오세요. 평소대로 배달되었습니다. 대적의 예상되는 힘은 우리 환경에서 그가 가지고 있는 것과 일치합니다. • 물리적 추상화. 구상된 통신 모델은 보다 물리적인 모델을 추상화합니다. 여기서 각 플레이어 쌍(i,j)은 별도의 개인 통신 회선 li,j에 의해 연결됩니다. 즉, 누구도 전송된 메시지에 대한 정보를 주입하거나 방해하거나 얻을 수 없습니다. 리,제이. 적이 li,j에 접근할 수 있는 유일한 방법은 i 또는 j를 손상시키는 것입니다. • 개인정보 보호 및 인증. SC 네트워크에서는 메시지 개인 정보 보호 및 인증이 보장됩니다. 가정으로. 대조적으로, 메시지가 전파되는 우리의 통신 네트워크에서는 P2P에서는 디지털 서명으로 인증이 보장되며 개인 정보 보호는 존재하지 않습니다. 따라서 BA⋆프로토콜을 우리 설정에 채택하려면 교환된 각 메시지가 디지털 서명되어야 합니다. (보낸 상태를 추가로 식별합니다). 다행스럽게도 우리가 사용하는 BA 프로토콜은 Algorand에서 사용을 고려하세요. 메시지 개인 정보 보호가 필요하지 않습니다.3.2 비잔틴 계약의 개념 비잔틴 조약의 개념은 Pease Shostak과 Lamport [31]에 의해 도입되었습니다. 즉, 모든 초기값이 비트로 구성되는 경우입니다. 그래도 빨리 연장되서 임의의 초기값으로. (Fischer [16] 및 Chor and Dwork [10]의 설문조사를 참조하세요.) 프로토콜은 임의의 값을 의미합니다. 정의 3.1. 동기식 네트워크에서 P를 플레이어 세트가 공통인 n-플레이어 프로토콜이라고 가정합니다. 플레이어 간의 지식, t는 n \(\geq\)2t + 1인 양의 정수입니다. 우리는 P가 임의 값(각각 이진)(n, t)-건전성 \(\sigma\) \(\in\)(0, 1)을 갖는 비잔틴 합의 프로토콜 만약, 특수 기호 \(\bot\)(각각 V = {0, 1}에 대해)를 포함하지 않는 모든 값 세트 V에 대해 최대 t명의 플레이어가 악의적이고 모든 플레이어가 초기 값 vi \(\in\)V , 모든 정직한 플레이어 j는 확률 1로 정지하고 outi \(\in\)V \(\cup\){\(\bot\)} 값을 출력합니다. 적어도 \(\sigma\) 확률로 다음 두 조건을 만족시키려면: 1. 동의: 모든 정직한 플레이어 i에 대해 outi = out이 되는 \(\in\)V \(\cup\){\(\bot\)}가 존재합니다. 2. 일관성: 어떤 값 v \(\in\)V에 대해 모든 정직한 플레이어에 대해 vi = v이면 out = v입니다. out을 P의 출력이라고 하고, 각 outi를 플레이어 i의 출력이라고 합니다. 3.3 BA 표기법 # BA 프로토콜에서 플레이어는 주어진 메시지를 자신에게 보낸 플레이어 수를 계산해야 합니다. 주어진 단계. 따라서 전송될 수 있는 각 가능한 값 v에 대해
초
나(v) (또는 s가 지워진 경우 #i(v))는 단계 s에서 i가 v를 받은 플레이어 j의 수입니다. 플레이어 i가 각 플레이어 j로부터 정확히 하나의 메시지를 받는다는 것을 기억해 보세요. 플레이어는 n이고 모든 i와 s에 대해 P입니다. v #s i(v) = n. 3.4 바이너리 BA 프로토콜 BBA⋆ 이 섹션에서는 더 많은 것의 정직성에 의존하는 새로운 바이너리 BA 프로토콜인 BBA⋆를 제시합니다. 플레이어의 2/3보다 많고 매우 빠릅니다. 악의적인 플레이어가 무엇을 하든 상관없이 메인 루프를 실행할 때마다 플레이어는 확률 1/3로 동의하게 됩니다. 각 플레이어는 고유 서명을 충족하는 디지털 서명 체계의 공개 키를 가지고 있습니다. 재산. 이 프로토콜은 동기식 완전 네트워크에서 실행되도록 고안되었으므로 플레이어 i가 각 메시지에 서명해야 합니다. 디지털 서명은 3단계에서 충분히 공통된 임의 비트를 생성하는 데 사용됩니다. (Algorand에서, 디지털 서명은 다른 모든 메시지를 인증하는 데에도 사용됩니다.) 프로토콜에는 최소한의 설정이 필요합니다. 즉, 플레이어의 독립적인 공통 무작위 문자열 r입니다. 열쇠. (Algorand에서 r은 실제로 수량 Qr로 대체됩니다.) 프로토콜 BBA⋆는 플레이어가 부울 값을 반복적으로 교환하는 3단계 루프입니다. 다른 플레이어는 다른 시간에 이 루프를 종료할 수 있습니다. 플레이어 i가 전파를 통해 이 루프를 종료합니다. 어떤 단계에서는 특별한 값 0 또는 특별한 값 1을 지정하여 모든 플레이어에게 다음을 지시합니다. 이후의 모든 단계에서 그들은 각각 i로부터 0과 1을 받는 척합니다. (또는 다음과 같이 가정합니다.플레이어 j가 다른 플레이어 i로부터 받은 마지막 메시지는 비트 b였습니다. 그러면 어떤 단계에서든 그는 i로부터 어떤 메시지도 받지 못하고, j는 마치 내가 그에게 비트 b를 보낸 것처럼 행동합니다.) 프로토콜은 3단계 루프가 실행된 횟수를 나타내는 카운터 \(\gamma\)를 사용합니다. BBA⋆의 시작 부분에서는 \(\gamma\) = 0입니다. (\(\gamma\)를 전역 카운터라고 생각할 수도 있지만 실제로는 증가합니다. 루프가 실행될 때마다 각 개별 플레이어가 실행합니다.) n \(\geq\)3t + 1이 있으며, 여기서 t는 가능한 최대 악의적인 플레이어 수입니다. 바이너리 문자열 x는 이진 표현(앞에 0이 올 수 있음)이 x인 정수로 식별됩니다. lsb(x)는 x의 최하위 비트를 나타냅니다. 프로토콜 BBA⋆ (통신) Step 1. [Coin-Fixed-To-0 단계] 각 플레이어 i는 bi를 보냅니다. 1.1 #1의 경우 i (0) \(\geq\)2t + 1, 그러면 i는 bi = 0으로 설정하고 0을 보내고 outi = 0을 출력합니다. 그리고 정지. 1.2 #1의 경우 i (1) \(\geq\)2t + 1이면 i는 bi = 1로 설정됩니다. 1.3 그렇지 않으면 i는 bi = 0으로 설정합니다. (통신) Step 2. [Coin-Fixed-To-1 Step] 각 플레이어 i는 bi를 보냅니다. 2.1 #2의 경우 i (1) \(\geq\)2t + 1이면 i는 bi = 1로 설정됩니다. 1을 보냅니다. 출력 outi = 1, 그리고 정지. 2.2 #2의 경우 i (0) \(\geq\)2t + 1이면 bi = 0으로 설정합니다. 2.3 그렇지 않으면 i는 bi = 1로 설정합니다. (통신) Step 3. [코인 진짜 뒤집기 단계] 각 플레이어 i는 bi와 SIGi(r, \(\gamma\))를 보냅니다. 3.1 #3의 경우 i (0) \(\geq\)2t + 1이면 i는 bi = 0으로 설정됩니다. 3.2 #3의 경우 i (1) \(\geq\)2t + 1이면 i는 bi = 1로 설정됩니다. 3.3 그렇지 않으면 Si = {j \(\in\)N(이 단계 3에서 나에게 적절한 메시지를 보낸 사람) }이라고 하면, 나는 bi = c \(\triangleq\)lsb(minj\(\in\)Si H(SIGi(r, \(\gamma\))))를 설정합니다. \(\gamma\)i를 1만큼 증가시킵니다. 그리고 1단계로 돌아갑니다. 정리 3.1. n \(\geq\)3t + 1일 때마다 BBA⋆는 건전성 1의 이진 (n, t)-BA 프로토콜입니다. 정리 3.1의 증명은 [26]에 나와 있습니다. 우리 설정에 대한 적응 및 플레이어 교체 가능성 재산은 참신하다. 역사적 비고 확률적 이진 BA 프로토콜은 Ben-Or가 처음 제안했습니다. 비동기 설정 [7]. 프로토콜 BBA⋆는 공개 키 설정에 대한 새로운 적응입니다. Feldman 및 Micali의 바이너리 BA 프로토콜 [15]. 그들의 프로토콜은 예상대로 작동한 최초의 프로토콜이었습니다. 일정한 단계 수. 플레이어들이 직접 공통 코인을 구현하게 함으로써 작동했고, 외부의 신뢰할 수 있는 당사자 [32]를 통해 이를 구현한 Rabin이 제안한 개념입니다.3.5 단계적 합의와 프로토콜 GC 임의의 가치에 대해 비잔틴 합의보다 훨씬 약한 합의 개념을 떠올려 보겠습니다. 정의 3.2. P를 모든 플레이어 세트가 상식인 프로토콜로 설정하고 각 플레이어는 플레이어 나는 임의의 초기값 v'를 개인적으로 알고 있습니다. 나. n명의 플레이어가 실행될 때마다 P가 (n, t) 등급 합의 프로토콜이라고 말합니다. 그 중 대부분은 악의적이며 모든 정직한 플레이어는 가치 등급 쌍(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' 어떤 값 v에 대해 n = v, 모든 정직한 플레이어 i에 대해 vi = v 및 gi = 2입니다. 역사적 기록 등급별 합의라는 개념은 단순히 등급별 합의 개념에서 파생된 것입니다. [15]에서 Feldman과 Micali가 십자군의 개념을 강화하여 제시한 방송 Dolev [12]에 의해 도입되고 Turpin and Coan [33].8에 의해 개선된 계약 [15]에서 저자는 3단계(n, t) 등급 방송 프로토콜인 gradecast도 제공했습니다. n \(\geq\)3t+1. n > 2t+1에 대한 보다 복잡한 (n, t) 등급 방송 프로토콜이 나중에 발견되었습니다. 작성자: Katz 및 Koo [19]. 다음 2단계 프로토콜 GC는 등급 분류의 마지막 두 단계로 구성됩니다. 표기법. 이 사실을 강조하고 섹션 4.1의 프로토콜 Algorand '의 단계를 일치시키기 위해 우리는 GC의 단계를 각각 2번과 3번으로 지정하세요. 프로토콜 GC 2단계. 내가 보내는 각 플레이어는 v'를 보냅니다. 나는 모든 플레이어에게. 3단계. 각 플레이어 i는 #2인 경우에만 문자열 x를 모든 플레이어에게 보냅니다. 나는 (x) \(\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) 등급 브로드캐스트 프로토콜입니다. 증명은 [15]의 프로토콜 등급 결정의 증명에서 바로 따르므로 생략됩니다.9 8 본질적으로 등급별 방송 프로토콜에서 (a) 모든 플레이어의 입력은 고유한 플레이어의 신원입니다. 추가적인 개인 입력으로 임의의 값 v를 갖는 플레이어, 송신자, 그리고 (b) 출력은 다음을 충족해야 합니다. 등급화된 합의의 동일한 속성 1과 2에 다음 속성 3'을 추가합니다. 보낸 사람이 정직하다면 vi = v이고 모든 정직한 플레이어에 대해 gi = 2 i. 9실제로 프로토콜의 1단계에서 발신자는 자신의 개인 값 v를 모든 플레이어에게 보내고 각 플레이어는 v′ i는 그가 1단계에서 보낸 사람으로부터 실제로 받은 값으로 구성됩니다.3.6 더 프로토콜 BA⋆ 이제 바이너리 BA 프로토콜 BBA⋆를 통해 임의 값 BA 프로토콜 BA⋆을 설명합니다. 등급 합의 프로토콜 GC. 아래에서 각 플레이어 i의 초기값은 v′입니다. 나. 프로토콜 BA⋆ 1단계와 2단계. 각 플레이어 i는 입력 v'에 대해 GC를 실행합니다. i, (vi, gi) 쌍을 계산합니다. 3단계, . . . 각 플레이어 i는 gi = 2이면 초기 입력 0, 그렇지 않으면 1로 BBA⋆를 실행합니다. 비트 outi를 계산하는 방법. 출력 결정. outi = 0이면 각 플레이어 i는 vi를 출력하고, 그렇지 않으면 \(\bot\)입니다. 정리 3.3. n \(\geq\)3t + 1일 때마다 BA⋆는 건전성 1의 (n, t)-BA 프로토콜입니다. 증거. 먼저 일관성을 증명한 다음 합의를 증명합니다. 일관성 증명. 어떤 값 v \(\in\)V , v′에 대해 가정합니다. i = v. 그러면 다음의 속성 3에 의해 등급 합의, GC 실행 후 모든 정직한 플레이어가 출력합니다(v, 2). 따라서 0은 BBA⋆ 실행이 끝나면 모든 정직한 플레이어의 초기 비트입니다. 따라서 계약에 따라 BA⋆ 실행이 끝나면 바이너리 비잔틴 계약의 속성, 모든 정직한 경우 outi = 0 플레이어. 이는 BA⋆에서 각 정직한 플레이어 i의 출력이 vi = v라는 것을 의미합니다. ✷ 계약 증명. BBA⋆는 바이너리 BA 프로토콜이므로 다음 중 하나를 수행합니다. (A) 모든 정직한 플레이어 i에 대해 outi = 1, 또는 (B) 모든 정직한 플레이어 i에 대해 outi = 0입니다. A의 경우 모든 정직한 플레이어는 BA⋆에서 \(\bot\)을 출력하므로 계약이 유지됩니다. 이제 사례 B를 살펴보겠습니다. 이 경우 BBA⋆ 실행 시 적어도 한 명의 정직한 플레이어 i의 초기 비트는 0입니다. (실제로 만약 모든 정직한 플레이어의 초기 비트는 1이었습니다. 그러면 BBA⋆의 일관성 속성에 따라 우리는 outj = 1 모든 정직한 j에 대해.) 따라서 GC 실행 후 i는 일부 정직한 j에 대해 쌍 (v, 2)를 출력합니다. 가치 v. 따라서 등급화된 합의의 속성 1에 따라 모든 정직한 플레이어 j에 대해 gj > 0입니다. 이에 따라 단계적 합의의 속성 2, vj = 모든 정직한 플레이어에 대한 v j. 이는 말미에 다음을 의미한다. BA⋆, 모든 정직한 플레이어 j는 v를 출력합니다. 따라서 B의 경우에도 일치가 유지됩니다. ✷ 일관성과 합의가 모두 유지되므로 BA⋆는 임의 값 BA 프로토콜입니다. 역사적 기록 Turpin과 Coan은 n \(\geq\)3t+1에 대해 모든 이진 (n, t)-BA가 프로토콜은 임의 값 (n, t)-BA 프로토콜로 변환될 수 있습니다. 임의 값 감소 등급별 합의를 통한 이진 비잔틴 합의에 대한 비잔틴 합의는 더욱 모듈화되고 더 깨끗하고 Algorand 프로토콜 Algorand '의 분석을 단순화합니다. Algorand에서 사용하기 위해 BA⋆ 일반화 Algorand은 모든 통신이 통신을 통해 이루어지는 경우에도 작동합니다. 험담. 그러나 전통적이고 친숙한 통신 네트워크에서 제시되지만, 선행 기술과 더 잘 비교하고 더 쉽게 이해할 수 있도록 프로토콜 BA⋆works 험담 네트워크에서도요. 실제로 Algorand의 상세한 실시예에서 우리는 그것을 제시할 것입니다. 험담 네트워크를 위해 직접. 또한 선수교체성을 만족시킨다는 점을 지적할 것이다. Algorand이 예상되는 매우 적대적인 모델에서 보안을 유지하는 데 중요한 속성입니다.
가십 통신 네트워크에서 작동하는 모든 BA 플레이어 교체 가능 프로토콜은 다음과 같습니다. 독창적인 Algorand 시스템 내에서 안전하게 사용됩니다. 특히 Micali와 Vaikunthanatan은 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 라운드는 이상적으로 다음과 같이 진행됩니다. 먼저 무작위로 선택된 사용자인 리더는 새로운 블록을 제안하고 유통시킵니다. (이 과정에는 처음에 다음이 포함됩니다. 몇 명의 잠재적인 리더를 선택한 다음 적어도 상당한 시간 동안 단일 공통 리더가 등장합니다.) 둘째, 무작위로 선택된 사용자 위원회가 선택됩니다. 리더가 제안한 블록에 대해 비잔틴 합의에 도달합니다. (이 과정에는 다음이 포함됩니다. BA 프로토콜의 각 단계는 별도로 선택된 위원회에 의해 운영됩니다.) 합의된 블록 그런 다음 위원회 구성원의 지정된 임계값(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. 완벽한 정확성. 모든 정직한 사용자는 동일한 블록 Br에 동의합니다. 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 , 그러면 모든 사용자가 비잔틴에 도달합니다. 하나의 후보 블록에 대한 합의. 소개에 따라 사용된 BA 프로토콜에는 다음이 필요합니다. 2/3의 정직한 다수이며 플레이어를 교체할 수 있습니다. 각 단계는 소규모로 실행될 수 있습니다. 내부 변수를 공유하지 않는 무작위로 선택된 검증자 세트입니다. 불행하게도 이 접근 방식은 완전성을 보장하지 않습니다. 그 후보가 그렇거든요. 정직한 사용자의 블록은 서로 완전히 다를 가능성이 높습니다. 따라서 궁극적으로 합의된 블록은 항상 최대 지불 세트가 아닌 블록일 수 있습니다. 사실, 항상 그럴 수도 있습니다. 빈 블록 B\(\varepsilon\), 즉 페이세트가 비어 있는 블록입니다. 기본적으로 비어 있는 것이 좋습니다. Algorand '는 다음과 같이 이러한 완전성 문제를 피합니다. 먼저 라운드 r의 리더인 \(\ell\)r이 선택됩니다. 그런 다음 \(\ell\)r은 자신의 후보 블록인 Br을 전파합니다. \(\ell\)r. 마지막으로 사용자는 블록에 대한 합의에 도달합니다. 그들은 실제로 \(\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로부터 그들은 모든 이전 라운드의 사용자 집합을 추론합니다. 는 PK1, . . . , PKr-1. 라운드 r의 잠재적 리더는 다음과 같은 사용자 i입니다. .H SIGi r, 1, Qr−1 \(\leq\)p . 설명해 보겠습니다. 수량 Qr−1은 블록 Br−1의 일부이므로 기본 서명 방식은 고유성 속성인 SIGi를 만족합니다. r, 1, Qr−1 고유한 이진 문자열입니다. i와 r에 연관되어 있습니다. 따라서 H는 임의의 oracle이므로 H SIGi r, 1, Qr−1 랜덤 256비트입니다 i와 r에 고유하게 연결된 긴 문자열입니다. 기호 “.” H 앞에 SIGi r, 1, Qr−1 은 소수점(우리의 경우 이진수)이므로 ri \(\triangleq\).H가 됩니다. SIGi r, 1, Qr−1 의 이진 확장입니다. i와 r에 고유하게 연결된 0과 1 사이의 임의의 256비트 숫자입니다. 따라서 확률은 ri는 p보다 작거나 같음은 본질적으로 p입니다. (우리의 잠재적 리더 선택 메커니즘은 다음과 같습니다. Micali와 Rivest [28]의 소액 결제 방식에서 영감을 받았습니다.) 확률 p는 압도적인(즉, 1 −F) 확률로 적어도 하나가 되도록 선택됩니다. 잠재적 검증자는 정직합니다. (사실이라면 p는 가장 작은 확률로 선택됩니다.)내가 자신의 서명을 계산할 수 있는 유일한 사람이기 때문에 그 사람만이 할 수 있다는 점에 유의하십시오. 그가 1차 잠재적 검증자인지 여부를 판단합니다. 그러나 자신의 자격 증명을 공개함으로써, \(\sigma\)r 나는 \(\triangleq\)SIGi r, 1, Qr−1 , 나는 누구에게나 라운드 r의 잠재적인 검증자임을 증명할 수 있습니다. 리더 \(\ell\)r은 hashed 자격 증명이 다음보다 작은 잠재적 리더로 정의됩니다. hashed 다른 모든 잠재적 리더 j의 자격 증명: 즉, H(\(\sigma\)r,s \(\ell\)r ) \(\leq\)H(\(\sigma\)r,s j). 악의적인 \(\ell\)r은 자신의 자격 증명을 공개하지 않을 수 있으므로 라운드 r의 올바른 리더는 결코 알려지지 않았으며, 가능성이 없는 관계를 제외하고 \(\ell\)r은 실제로 라운드 r의 유일한 리더입니다. 마지막으로 중요한 세부 사항을 살펴보겠습니다. 사용자 i는 잠재적인 리더가 될 수 있습니다. 리더) 라운드 r은 그가 최소한 k 라운드 동안 시스템에 속한 경우에만 해당됩니다. 이는 다음을 보장합니다. Qr 및 모든 미래 Q-양의 조작 불가능성. 실제로 잠재적인 리더 중 한 명은 실제로 Qr을 결정합니다. 검증인 선택 라운드 r의 각 단계 s > 1은 소규모 검증자 집합 SV r,s에 의해 실행됩니다. 다시 말하면, 각 검증자 i \(\in\)SV r,s는 이미 시스템 k 라운드에 참여한 사용자 중에서 무작위로 선택됩니다. r 앞에, 그리고 다시 특수 수량 Qr−1을 통해. 구체적으로, i \(\in\)PKr−k는 SV r,s의 검증자입니다. .H SIGi r, s, Qr−1 \(\leq\)p′ . 다시 한 번 말씀드리지만, 그가 SV r,s에 속해 있는지는 오직 저만이 알고 있습니다. 하지만 만약 그렇다면, 그는 다음과 같이 증명할 수 있습니다. 자신의 자격 증명 \(\sigma\)r,s를 표시함 나 \(\triangleq\)H(SIGi r, s, Qr−1 ). 검증자 i \(\in\)SV r,s는 mr,s라는 메시지를 보냅니다. 나, 에서 라운드 r의 단계 s, 이 메시지에는 그의 자격 증명 \(\sigma\)r,s가 포함됩니다. i, 검증자를 활성화하기 위해 Mr,s를 인식하는 중첩 단계 나 합법적인 단계 메시지입니다. 확률 p'는 SV r,s에서 #good이 다음의 수임을 보장하도록 선택됩니다. 정직한 사용자와 #bad 악의적인 사용자의 수가 압도적인 확률로 다음과 같습니다 두 가지 조건이 성립합니다. 실시예 Algorand '의 경우 1: (1) #좋음 > 2 \(\cdot\) #나쁨 그리고 (2) #good + 4 \(\cdot\) #bad < 2n, 여기서 n은 SV r,s의 예상 카디널리티입니다. 실시예 Algorand '의 경우 2: (1) #좋음 > tH 및 (2) #good + 2#bad < 2tH, 여기서 tH는 지정된 임계값입니다. 이러한 조건은 충분히 높은 확률로 (a) BA의 마지막 단계에서 프로토콜에 따르면, 새로운 블록 Br에 디지털 서명을 할 수 있는 정직한 플레이어가 적어도 일정 수만큼 있을 것입니다. (b) 라운드당 하나의 블록만이 필요한 수의 서명을 가질 수 있으며, (c) 사용된 BA 프로토콜은 (각 단계에서) 필요한 2/3의 정직한 다수를 갖습니다. 블록 생성 명확화 라운드 R 리더 \(\ell\)r이 정직하다면 해당 블록은 형태이다 브르 = r, PAY r, SIG\(\ell\)r Qr−1 , H Br−1 , 여기서 페이세트 PAY r은 최대입니다. (모든 지불 세트는 정의상 집합적으로 유효하다는 점을 기억하십시오.) 그렇지 않은 경우(즉, \(\ell\)r이 악의적인 경우) Br은 다음 두 가지 가능한 형식 중 하나를 갖습니다. 브르 = r, PAY r, SIGi Qr−1 , H Br−1 그리고 브롬 = 브롬 \(\varepsilon\) \(\triangleq\) r, \(\emptyset\), Qr−1, H Br−1 .첫 번째 형식에서 PAY r은 (필수적으로 최대가 아닌) 지불 세트이고 PAY r = \(\emptyset\)일 수 있습니다. 그리고 나는 라운드 r의 잠재적 리더. (단, 제가 리더는 아닐 수도 있습니다. 만약에 이런 일이 실제로 일어날 수도 있습니다. \(\ell\)r은 자신의 자격을 비밀로 유지하고 자신을 드러내지 않습니다.) 두 번째 형태는 BA 프로토콜의 라운드-R 실행에서 모든 정직한 플레이어가 빈 블록 Br인 기본값을 출력합니다. 우리 응용 프로그램에서는 \(\varepsilon\)입니다. (정의에 따르면 가능한 BA 프로토콜의 출력에는 일반적으로 \(\bot\)로 표시되는 기본값이 포함됩니다. 섹션 3.2를 참조하세요.) 두 경우 모두 페이세트가 비어 있지만 Br = r, \(\emptyset\), SIGi Qr−1 , H Br−1 그리고 브롬 \(\varepsilon\)은 구문적으로 다른 블록이며 두 가지 다른 상황에서 발생합니다. BA 프로토콜 실행이 원활하게 진행되었습니다.”, “프로그램에서 문제가 발생했습니다. BA 프로토콜이며 기본값이 출력되었습니다.” 이제 Algorand'의 라운드 r에서 블록 Br의 생성이 어떻게 진행되는지 직관적으로 설명해보자. 첫 번째 단계에서 각 적격 플레이어, 즉 각 플레이어 i \(\in\)PKr−k는 그가 잠재적인 선수인지 확인합니다. 리더. 만약 그렇다면, 그가 지금까지 본 모든 지불금을 사용하여 나에게 질문을 합니다. 현재 blockchain, B0, . . . , Br−1, 최대 지불 세트 PAY r을 비밀리에 준비하기 위해 나 , 그리고 비밀리에 후보 블록 Br =을 조립합니다. r, 지불 r 나, SIGi Qr−1 , H Br−1 . 즉, 그는 뿐만 아니라 Br에 포함 i는 두 번째 구성 요소로서 방금 준비된 지불 세트일 뿐만 아니라 세 번째 구성 요소로서 마지막 블록 Br−1의 세 번째 구성 요소인 Qr−1의 자신의 서명입니다. 마침내 그는 자신의 것을 전파했다. round-r-step-1 메시지, Mr,1 (a) 그의 후보 블록 Br을 포함하는 i i, (b) 그의 적절한 서명 그의 후보 블록(즉, Br의 hash 서명) i, 그리고 (c) 그 자신의 자격증명 \(\sigma\)r,1 나, 증명해 그는 실제로 라운드 r의 잠재적인 검증자입니다. (정직한 사람이 메시지를 전달할 때까지, Mr,1 나는, 적들은 내가 어떤 사람인지 전혀 모른다. 잠재적 검증자. 그가 정직하고 잠재적인 지도자를 타락시키고자 한다면 대적도 그렇게 할 수 있습니다. 무작위로 정직한 플레이어를 부패시킵니다. 하지만 일단 그가 Mr를 만나면,1 i , i의 자격 증명이 포함되어 있으므로 적은 나를 부패시킬 수 있다는 것을 알고 있고 부패시킬 수 있지만 Mr,1을 막을 수는 없습니다. i 에서 바이러스로 전파됩니다. 시스템의 모든 사용자에게 도달합니다.) 두 번째 단계에서 선택된 각 검증자 j \(\in\)SV r,2는 라운드의 리더를 식별하려고 시도합니다. 구체적으로 j는 1단계 자격 증명 \(\sigma\)r,1을 사용합니다. 나는1, . . . , \(\sigma\)r,1 in , 적절한 1단계 메시지 mr,1에 포함되어 있음 나 그는 받았다; hashes 모두, 즉 H를 계산합니다. \(\sigma\)r,1 i1 , . . . , H \(\sigma\)r,1 안으로 ; 자격증을 찾고, \(\sigma\)r,1 \(\ell\)j , hash은 사전순으로 최소값입니다. \(\ell\)r을 고려한다. j가 라운드 r의 리더가 됩니다. 고려되는 각 크리덴셜은 Qr-1의 디지털 서명이며 SIGi라는 점을 기억하세요. r, 1, Qr−1 이다 i와 Qr−1에 의해 고유하게 결정되며, H는 무작위 oracle이므로 각 H(SIGi r, 1, Qr−1 라운드 r의 각 잠재적 리더 i에 고유한 임의의 256비트 긴 문자열입니다. 이것으로부터 우리는 256비트 문자열 Qr−1 자체가 무작위적이고 독립적이라면 다음과 같이 결론을 내릴 수 있습니다. 그러면 라운드 r의 모든 잠재적 리더의 hashed 자격 증명이 선택됩니다. 사실, 모두 잠재적인 리더는 잘 정의되어 있으며 그들의 자격 증명도 마찬가지입니다(실제로 계산되었거나 아닙니다). 또한, 라운드 r의 잠재적 리더 집합은 라운드 사용자의 무작위 하위 집합입니다. r −k, 그리고 정직한 잠재적 리더인 나는 항상 그의 메시지를 적절하게 구성하고 전파합니다. 나 , 여기에는 i의 자격 증명이 포함되어 있습니다. 따라서 정직한 사용자의 비율은 h이므로, 어떤 경우에도 악의적인 잠재적 리더가 할 수 있는 최소한의 조치(예: 자신의 자격 증명을 공개하거나 숨기는 것) hashed 잠재적 리더 자격 증명은 모든 사람이 반드시 식별하는 정직한 사용자에게 속합니다. 라운드 r의 리더 \(\ell\)r이 되는 것입니다. 따라서 256비트 문자열 Qr−1 자체가 무작위이고 독립적으로 선택됨, 확률이 정확히 h (a) 리더 \(\ell\)r이 정직하고 (b) 모두에 대해 \(\ell\)j = \(\ell\)r 정직한 2단계 검증자 j. 실제로 hashed 자격 증명은 무작위로 선택되지만 Qr−1에 따라 달라집니다.무작위로 독립적으로 선택되지 않습니다. 그러나 우리는 분석을 통해 Qr−1이 라운드의 리더가 확률적으로 정직하다는 것을 보장할 만큼 충분히 조작 불가능합니다. h′는 h에 충분히 가깝습니다. 즉, h′ > h2(1 + h −h2)입니다. 예를 들어, h = 80%이면 h′ > .7424입니다. 라운드의 리더를 식별한 후(리더가 정직할 때 올바르게 수행), 2단계 검증자의 임무는 자신이 믿는 바를 초기값으로 사용하여 BA 실행을 시작하는 것입니다. 리더의 블록이 될 것입니다. 실제로 필요한 의사소통의 양을 최소화하기 위해, 검증자 j \(\in\)SV r,2는 입력 값 v′을 사용하지 않습니다. j를 비잔틴 프로토콜로 변경하고, 해당 블록 Bj를 그는 실제로 \(\ell\)j(사용자 j가 리더라고 믿는)로부터 받았지만 리더이지만 해당 블록의 hash, 즉 v′ j = H(Bi). 따라서 BA 프로토콜이 종료되면 검증자는 마지막 단계에서는 원하는 round-r 블록 Br을 계산하지 않고 계산합니다(인증 및 전파) H(Br). 따라서 H(Br)는 충분히 많은 검증자들에 의해 디지털 서명되기 때문에 BA 프로토콜의 마지막 단계에서 시스템의 사용자는 H(Br)가 새로운 프로토콜의 hash임을 깨닫게 됩니다. 블록. 그러나 실행이 상당히 비동기적이므로 검색(또는 대기)해야 합니다. Br 자체를 차단합니다. 프로토콜은 적의 공격에 관계없이 실제로 사용할 수 있도록 보장합니다. 할 수도 있습니다. 비동기성과 타이밍 Algorand ' 1 및 Algorand ' 2는 상당한 정도의 비동기성을 가지고 있습니다. 이는 공격자가 메시지 전달 일정을 정하는 데 큰 권한을 갖고 있기 때문입니다. 전파. 또한, 라운드의 총 단계 수에 제한이 있는지 여부가 있습니다. 실제로 수행된 단계 수에 따라 차이가 발생합니다. 그는 B0의 인증서를 알게 되자마자 . . . , Br−1, 사용자 i가 Qr−1을 계산하고 작업을 시작합니다. r 라운드에서는 그가 잠재적인 리더인지, 아니면 r 라운드의 일부 단계에서 검증자인지 확인합니다. 논의된 비동기성에 비추어 단계에서 행동해야 한다고 가정하면 나는 다양한 방법에 의존합니다. 행동하기 전에 충분한 정보를 갖고 있는지 확인하는 전략입니다. 예를 들어, 그는 검증자로부터 최소한 주어진 수의 메시지를 받기를 기다릴 수 있습니다. 이전 단계로 진행하거나, 그가 메시지를 충분히 받을 수 있도록 충분한 시간을 기다리세요. 이전 단계의 많은 검증자가 있습니다. Seed Qr과 Look-Back 매개변수 k 이상적으로 Qr의 양은 다음과 같아야 합니다. 무작위적이고 독립적이지만, 인간이 충분히 조작할 수 없는 것으로도 충분합니다. 대적. 얼핏 보면 H와 일치하는 Qr−1을 선택할 수 있습니다. 지불 r−1 , 따라서 다음을 피하십시오 Br−1에 Qr−1을 명시적으로 지정합니다. 그러나 기본 분석에 따르면 악의적인 사용자는 이 선택 메커니즘을 활용하십시오.11 몇 가지 추가 노력을 통해 수많은 다른 방법이 있음을 알 수 있습니다. 11우리는 r-1 라운드의 시작점에 있습니다. 따라서 Qr−2 = PAY r−2는 공개적으로 알려지며, 공격자는 비공개로 진행됩니다. 자신이 통제하는 잠재적인 리더가 누구인지 알고 있습니다. 공격자가 사용자의 10%를 통제한다고 가정하고, 매우 높은 확률로 악의적인 사용자 w가 라운드 r -1의 잠재적 리더가 됩니다. 즉, H SIGw r−2, 1, Qr−2 규모가 너무 작아서 정직하고 잠재적인 리더가 실제로 리더가 될 가능성은 거의 없습니다. 라운드 r −1의 리더. (우리는 비밀 암호화 분류 메커니즘을 통해 잠재적인 리더를 선택하므로 대적은 정직한 잠재적 지도자가 누구인지 모릅니다.) 따라서 대적은 부러워할 만한 입장에 있습니다. PAY'를 원하는 페이셋을 선택하는 위치로 설정하고, 이를 라운드 r-1의 공식 페이셋으로 설정합니다. 그러나, 그는 더 많은 일을 할 수 있습니다. 그는 또한 높은 확률로 () 그의 악의적인 사용자 중 한 명이 리더가 되도록 보장할 수 있습니다. PAY r이 무엇인지 자유롭게 선택할 수 있도록 라운드 r에도 적용됩니다. (등등. 적어도 한동안은, 즉, 이러한 확률이 높은 사건이 실제로 발생하는 한.) ()를 보장하기 위해 공격자는 다음과 같이 행동합니다. 지불하자' 라운드 r -1에 대해 적이 선호하는 페이세트가 됩니다. 그런 다음 그는 H(PAY ′)를 계산하고 일부에 대해 다음을 확인합니다. 이미 악의적인 플레이어 z, SIGz(r, 1, H(PAY'))는 특히 작습니다. 확률 z는 라운드 r의 리더가 될 것입니다. 만약 그렇다면, 그는 w에게 자신의 후보 블록을 선택하라고 지시합니다.전통적인 블록 수량을 기반으로 한 대안은 공격자가 쉽게 악용하여 다음을 보장할 수 있습니다. 악의적인 리더가 매우 빈번하다는 것입니다. 대신에 우리는 우리 브랜드를 구체적이고 귀납적으로 정의합니다. 새로운 수량 Qr은 적에 의해 조작 불가능하다는 것을 증명할 수 있습니다. 즉, Br이 빈 블록이 아닌 경우 Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r)이고, 그렇지 않은 경우 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\)r. 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의 출력으로 함으로써 출력이 무작위임을 보장합니다. H의 두 번째 입력으로 r을 포함하고 H의 다른 모든 사용에는 하나 또는 3개 이상의 입력이 있습니다. 그러한 Qr이 독립적으로 선택됨을 "보장"합니다. 다시 말하지만, 대체 Qr의 특정 선택 중요하지 않습니다. \(\ell\)r이 Qr에 대해 두 가지 선택권을 갖고 있으므로 확률을 두 배로 늘릴 수 있다는 것이 중요합니다. 또 다른 악의적인 사용자를 다음 리더로 삼는 것입니다. 악의적인 \(\ell\)r을 제어하는 적에게는 Qr에 대한 옵션이 훨씬 더 많을 수 있습니다. 예를 들어, x, y, z가 라운드 r의 세 명의 악의적인 잠재적 리더라고 가정해 보겠습니다. H \(\sigma\)r,1 엑스 < H \(\sigma\)r,1 와이 < H \(\sigma\)r,1 z 그리고 H \(\sigma\)r,1 z 특히 작습니다. 즉, 너무 작아서 H가 발생할 가능성이 높습니다. \(\sigma\)r,1 z 이다 모든 정직한 잠재적 리더의 hashed 자격 증명 중 더 작은 것입니다. 그런 다음 x에게 자신을 숨기라고 요청하여 자격 증명을 사용하면 적군은 y가 라운드 r -1의 리더가 될 가능성이 높습니다. 이 이는 그가 Qr에 대한 또 다른 옵션, 즉 SIGy를 가지고 있음을 의미합니다. Qr−1 . 마찬가지로, 적도 z가 라운드 r −1의 리더가 되도록 x와 y 모두에게 자격 증명을 보류하도록 요청하세요. Qr에 대한 또 다른 옵션인 SIGz를 얻습니다. Qr−1 . 물론, 이러한 옵션과 기타 옵션 각각은 실패할 확률이 0이 아닙니다. 공격자는 정직한 잠재적 사용자의 디지털 서명의 hash을 예측할 수 없습니다. Br−1 나 = (r −1, PAY ′, H(Br−2). 그렇지 않으면 그는 계속해서 새로운 지불을 생성할 두 명의 다른 악의적인 사용자 x와 y를 갖게 됩니다. \(\wp\)′, 일부 악의적인 사용자 z(또는 일부 고정 사용자 z)에 대해 H(SIGz (PAY ′ \(\cup\){\(\wp\)}))가 될 때까지 하나에서 다른 것으로 특히 작습니다. 이 실험은 매우 빨리 중단됩니다. 그리고 그럴 때 상대방은 w에게 프로포즈를 요청합니다. 후보 블록 Br−1 나 = (r −1, PAY ′ \(\cup\){\(\wp\)}, H(Br−2). 12예를 들어, 단순하게(그러나 극단적으로) 표현하자면, “두 번째 단계의 시간이 거의 만료될 때”, \(\ell\)r은 각 사용자에게 다른 후보 블록 Bi를 직접 이메일로 보냅니다. i. 이렇게 하면 2단계 검증자가 누구든지 완전히 다른 블록을 받게 될 것입니다.조심스러운 마르코프 체인과 같은 분석은 공격자가 어떤 옵션을 선택하든 상관없다는 것을 보여줍니다. 라운드 r -1에서 만들기 위해 시스템에 새로운 사용자를 주입할 수 없는 한 그는 사용자를 줄일 수 없습니다. 정직한 사용자가 h보다 훨씬 낮은 r + 40 라운드의 리더가 될 확률입니다. 이것이 이유이다 우리는 라운드 r의 잠재적 리더가 이미 라운드 r -k에 존재하는 사용자여야 한다고 요구합니다. 이는 r −k 라운드에서 적이 다음과 같은 확률을 크게 변경할 수 없도록 보장하는 방법입니다. 정직한 사용자가 라운드 r의 리더가 됩니다. 실제로 어떤 사용자를 추가하더라도 시스템에서 r -k부터 r까지의 라운드에서 그들은 잠재적인 리더가 될 자격이 없습니다. 리더) 라운드 r. 따라서 되돌아보기 매개변수 k는 궁극적으로 보안 매개변수입니다. (하지만, 섹션 7에서 살펴보겠지만 이는 일종의 "편의 매개변수"일 수도 있습니다.) 임시 열쇠 우리 프로토콜의 실행은 다음을 제외하고는 포크를 생성할 수 없지만 무시할 수 있는 확률로, 공격자는 합법적인 블록 이후에 r번째 블록에서 포크를 생성할 수 있습니다. 블록 r이 생성되었습니다. 대략적으로 Br이 생성되면 공격자는 각 단계의 검증자가 누구인지 알게 됩니다. 라운드 r은 입니다. 따라서 그는 그들 모두를 부패시키고 새로운 블록을 인증하도록 강요할 수 있습니다. 에프 브르. 이 가짜 블록은 합법적인 블록 이후에만 전파될 수 있으므로, 주의를 기울이는 것은 속지 않을 것입니다.13 그럼에도 불구하고, f Br은 구문론적으로 정확할 것이며 우리는 제조되는 것을 방지하고 싶습니다. 우리는 새로운 규칙을 통해 그렇게 합니다. 본질적으로 검증자의 구성원은 단계 s의 SV r,s를 설정합니다. 라운드 r에서는 임시 공개 키 pkr,s를 사용합니다. 나 메시지에 디지털 서명을 합니다. 이러한 키는 일회용이며 해당 비밀 키는 skr,s입니다. 나 한번 사용되면 폐기됩니다. 이렇게 하면 검증인이 나중에 부패한 경우, 적대자는 그가 원래 서명하지 않은 다른 항목에 서명하도록 강요할 수 없습니다. 당연히 우리는 공격자가 새로운 키 g를 계산하는 것이 불가능하다는 것을 보장해야 합니다. 홍보, 초 나 그리고 단계 s에서 사용하는 것이 검증자 i \(\in\)SV r,s의 올바른 임시 키임을 정직한 사용자에게 설득합니다. 4.2 표기법, 개념 및 매개변수의 공통 요약 표기법 • r \(\geq\)0: 현재 라운드 수. • s \(\geq\)1: 라운드 r의 현재 단계 번호. • Br: r 라운드에서 생성된 블록입니다. • PKr: r 라운드가 끝날 때와 r 라운드가 시작될 때의 공개 키 집합입니다. • Sr: 라운드 r -1 종료 시 및 라운드 r.14 시작 시 시스템 상태 • PAY r: Br에 포함된 페이세트입니다. • \(\ell\)r: 라운드 R 리더. \(\ell\)r은 라운드 r의 페이세트 PAY r을 선택합니다(그리고 다음 Qr을 결정합니다). • Qr: 라운드 r의 시드, 라운드 r의 끝에서 생성되는 수량(즉, 이진 문자열) 라운드 r + 1에 대한 검증자를 선택하는 데 사용됩니다. Qr은 블록의 페이세트와 독립적입니다. \(\ell\)r로 조작할 수 없습니다. 13주요 TV 네트워크의 뉴스 앵커를 부패시키고 오늘 뉴스 영화를 제작 및 방송하는 것을 고려하십시오. 클린턴 장관이 지난 대선에서 승리한 모습을 보여줍니다. 우리 대부분은 그것을 사기로 인식할 것입니다. 하지만 혼수상태에서 벗어나는 사람은 속을 수도 있습니다. 14동기적이지 않은 시스템에서는 "라운드 r의 끝 -1"과 "라운드 r의 시작"이라는 개념이 주의 깊게 정의할 필요가 있다. 수학적으로 PKr과 Sr은 초기 상태 S0과 블록에서 계산됩니다. B1, . . . , Br-1.• SV r,s: 라운드 r의 단계 s에 대해 선택된 검증자 세트입니다. • SV r: 라운드 r을 위해 선택된 검증자 세트, SV r = \(\cup\)s\(\geq\)1SV r,s. • MSV r,s 및 HSV r,s: 각각 악의적인 검증자 집합과 정직한 검증자 집합 SV 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+: 각각 각 SV에서 예상되는 잠재적 리더 수 r,1, s > 1인 경우 각 SV r,s에서 예상되는 검증자 수입니다. n1 << n에 주목하세요. SV r,1에는 최소한 한 명의 정직하고 정직한 구성원이 필요하기 때문입니다. s > 1인 경우 각 SV r,s의 정직한 구성원 대다수. • h \(\in\)(0, 1): 2/3보다 큰 상수. h는 시스템의 정직성 비율입니다. 즉, 사용된 가정에 따라 각 PKr에서 정직한 사용자 또는 정직한 돈의 비율은 다음과 같습니다. 적어도 h. • H: 무작위 oracle로 모델링된 암호화 hash 함수입니다. • \(\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 Kr−k|. • p \(\in\)(0, 1): 라운드 r의 각 단계 s > 1에 대해 라운드 r −k의 사용자는 SV r,s에 속하도록 선택됩니다. 확률 p \(\triangleq\) 엔 |P Kr−k|. • CERT r: Br에 대한 인증서입니다. 이는 적절한 검증자로부터 나온 H(Br)의 tH 서명 세트입니다. 라운드 r. • Br \(\triangleq\)(Br, CERT r)은 검증된 블록입니다. 내가 Br을 아는 사용자는 그가 입증된 블록의 두 부분을 모두 소유하고 성공적으로 검증한 경우입니다. 다른 사용자에게 표시되는 CERT r은 다를 수 있습니다. • τr i : 사용자 i가 Br을 알고 있는 (현지) 시간입니다. Algorand 프로토콜에서 각 사용자는 자신의 나만의 시계. 서로 다른 사용자의 시계를 동기화할 필요는 없지만 속도는 동일해야 합니다. 분석 목적으로만 기준 시계를 고려하고 플레이어의 그와 관련된 시간. • \(\alpha\)r,s 나 그리고 \(\beta\)r,s i : 각각 사용자 i가 단계 s의 실행을 시작하고 종료하는 (로컬) 시간입니다. 라운드 r. • Λ 및 \(\lambda\): 본질적으로 각각 1단계 및 \(\lambda\)를 실행하는 데 필요한 시간의 상한입니다. Algorand 프로토콜의 다른 단계에 필요한 시간. 매개변수 Λ는 단일 1MB 블록을 전파하는 데 걸리는 시간의 상한입니다. (우리 표기법에서는 Λ = \(\lambda\) \(\rho\),1MB. 단순화를 위해 \(\rho\) = 1로 설정하고 블록은 최대 1MB 길이로 선택하면 Λ = \(\lambda\)1,1,1MB가 됩니다.) 15엄밀히 말하면 “r −k”는 “max{0, r −k}”이어야 합니다.매개변수 \(\lambda\)는 단계 s > 1에서 검증자당 하나의 작은 메시지를 전파하는 데 걸리는 시간의 상한입니다. (Bitcoin에서와 같이 32B 키가 있는 타원 곡선 서명을 사용하면 검증자 메시지의 길이는 200B입니다. 따라서 표기법에서는 \(\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)은 i의 (r, s) 자격 증명이며 간략하게 표시됩니다. \(\sigma\)r,s에 의해 나. 라운드 r의 첫 번째 단계에서는 SV r,1 및 \(\sigma\)r,1 나 p는 p1으로 대체되어 유사하게 정의됩니다. 는 SV r,1의 검증자는 잠재적인 리더입니다. • 리더 선택. 사용자 i \(\in\)SV r,1은 H(\(\sigma\)r,1인 경우) \(\ell\)r로 표시되는 라운드 r의 리더입니다. i ) \(\leq\)H(\(\sigma\)r,1 j) 모든 잠재력에 대해 리더 j \(\in\)SV r,1. 두 플레이어의 자격 증명의 hashes를 비교할 때마다 가능성은 희박합니다. 동점인 경우 프로토콜은 항상 사전순으로 동점을 끊습니다(장기 공개). ) 잠재적 지도자의 열쇠. 정의에 따르면 플레이어 \(\ell\)r의 크리덴셜 값 hash도 전체 사용자 중 가장 작습니다. PKr-k. 잠재적인 리더는 자신이 리더인지 아닌지 개인적으로 결정할 수 없습니다. 다른 잠재적 리더의 자격 증명을 보지 않고. hash 값은 무작위로 균일하므로 SV r,1이 비어 있지 않으면 \(\ell\)r은 항상 존재하며 적어도 h의 확률로 정직합니다. 매개변수 n1은 다음을 보장할 만큼 충분히 큽니다. SV r,1은 압도적인 확률로 비어 있지 않습니다. • 블록 구조. 비어 있지 않은 블록은 Br = (r, PAY r, SIG\(\ell\)r(Qr−1), H(Br−1)) 형식이며, 빈 블록은 Br 형태이다 Ϋ = (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는 상대가 r −k −1 라운드에서 다시 Qr−1을 예측할 수 없도록 선택됩니다. F보다 확률이 더 높습니다. 그렇지 않으면 악의적인 사용자를 유입시킬 수 있습니다. 라운드 r -k에 대해, 이들 모두는 라운드 r에서 잠재적인 리더/검증자가 될 것입니다.
원하는 일부 단계에 대해 SV r에 악의적인 리더 또는 악의적인 다수가 있는 경우 그. — 각 라운드 r의 1단계에서는 압도적인 확률로 SV r,1̸= \(\emptyset\)이 되도록 n1이 선택됩니다. • 중요한 매개변수의 예시 선택. — H의 출력 길이는 256비트입니다. — h = 80%, n1 = 35. — Λ = 1분, \(\lambda\) = 10초. • 프로토콜 초기화. 프로토콜은 r = 0으로 시간 0에서 시작합니다. "B-1" 또는 "CERT-1"이 존재하지 않으므로, 구문론적으로 B−1은 Q−1을 지정하는 세 번째 구성 요소가 있는 공개 매개변수이며 모든 사용자는 시간 0에서 B−1을 알고 있습니다.
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 ' 버전을 구성합니다. 정직한 다수의 사용자 가정: 각 PKr의 사용자 중 2/3 이상이 정직합니다. 섹션 8에서는 위의 가정을 원하는 정직한 다수로 대체하는 방법을 보여줍니다. 돈 가정. 5.1 추가 표기법 및 매개변수 표기법 • m \(\in\)Z+: 바이너리 BA 프로토콜의 최대 단계 수, 3의 배수. • Lr \(\leq\)m/3: 1을 확인하는 데 필요한 베르누이 시행 횟수를 나타내는 무작위 변수, 각 시행이 확률 ph로 1일 때 2이며 최대 m/3 시도가 있습니다. 모든 시도가 실패하면 Lr \(\triangleq\)m/3. Lr은 블록 Br을 생성하는 데 필요한 시간의 상한을 설정하는 데 사용됩니다. • tH = 2n 3 + 1: 프로토콜 종료 조건에 필요한 서명 수입니다. • CERT r: Br에 대한 인증서입니다. 이는 적절한 검증자로부터 나온 H(Br)의 tH 서명 세트입니다. 라운드 r. 매개변수 • 다양한 매개변수 간의 관계. — 라운드 r의 각 단계 s > 1에 대해 압도적인 확률로 n이 선택됩니다. |HSV r,s| > 2|MSV r,s| 그리고 |HSV r,s| + 4|MSV r,s| <2n. h 값이 1에 가까울수록 n은 더 작아야 합니다. 특히, 우리는 (변종 of) 원하는 조건이 압도적인 확률로 유지되도록 Chernoffbounds. — 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에 디지털 서명을 하기를 바랍니다. 나 단계의 임시 공개 키 pkr,s에 상대적인 라운드 r의 s i , 임시 비밀 키 skr을 사용하여 나 그 그는 사용 후 즉시 파괴합니다. 따라서 우리는 모든 사용자가 다음을 수행할 수 있도록 하는 효율적인 방법이 필요합니다. pkr,s를 확인하세요. 나 은 실제로 mr,s의 i 서명을 확인하는 데 사용되는 열쇠입니다. 나. 우리는 (최선을 다해) 그렇게 합니다. 우리가 아는 한) 신원 기반 서명 체계의 새로운 사용. 높은 수준에서 이러한 체계에서 중앙 기관 A는 공개 마스터 키 PMK를 생성합니다. 그리고 해당 비밀 마스터 키인 SMK. 플레이어 U의 신원 U가 주어지면 A는 다음을 계산합니다. 공개 키 U와 관련된 비밀 서명 키 skU인 SMK를 통해 개인적으로 skU를 다음 사용자에게 제공합니다. U. (실제로 신원 기반 디지털 서명 체계에서 사용자 U의 공개 키는 U 자체입니다!) 이런 식으로 A가 활성화하려는 사용자의 비밀 키를 계산한 후 SMK를 파괴하면 디지털 서명을 생성하고 계산된 비밀 키를 보관하지 않는 경우 U는 유일한 사람입니다. 공개 키 U를 기준으로 메시지에 디지털 방식으로 서명할 수 있습니다. 따라서 "U의 이름"을 아는 사람은 누구나 자동으로 U의 공개 키를 알고 있으므로 U의 서명을 확인할 수 있습니다(아마도 공개 마스터 키 PMK). 우리의 응용 프로그램에서 권한 A는 사용자 i이고 가능한 모든 사용자 집합 U는 다음과 일치합니다. 예를 들어 S = {i}\(\times\){r′,… . . , r′ +106}\(\times\){1, . . . , m+3}, 여기서 r′은 주어진 것입니다. 라운드, m + 3은 라운드 내에서 발생할 수 있는 단계 수의 상한입니다. 이 방법, pkr, s 나 \(\triangleq\)(i, r, s), 모든 사람이 i의 서명 SIGr,s를 볼 수 있도록 pkr,s 나 (미스터, s 나) 할 수 있어, 압도적으로 확률, r'에 이어 처음 백만 라운드 r에 대해 즉시 검증합니다. 즉, i는 먼저 PMK와 SMK를 생성합니다. 그리고 그는 PMK가 나의 주인임을 공개한다 모든 라운드 r \(\in\)[r′, r′ + 106]에 대한 공개 키이며 SMK를 사용하여 비밀을 개인적으로 생성하고 저장합니다. 키 skr,s 나 각 트리플(i, r, s) \(\in\)S에 대해. 이 작업이 완료되면 그는 SMK를 파괴합니다. 만약 그가 그렇지 않다고 판단한다면 SV r,s의 일부라면 skr,s를 떠나도 됩니다. 나 혼자 (프로토콜에서는 그가 인증을 요구하지 않기 때문에 라운드 r의 단계 s에 있는 모든 메시지) 그렇지 않으면 먼저 skr,s를 사용합니다. 나 그의 메시지에 디지털 서명을 하려고 나 , 그리고 그런 다음 skr,s를 파괴합니다. 나. 그가 처음 시스템에 들어갈 때 그의 첫 번째 공개 마스터 키를 공개할 수 있다는 점에 유의하세요. 즉, i를 시스템으로 가져오는 동일한 지불(라운드 r' 또는 r'에 가까운 라운드)은 또한 i의 요청에 따라 모든 라운드 r \(\in\)[r′, r′ + 106]에 대한 i의 공개 마스터 키가 PMK임을 지정합니다. 예를 들어 다음과 같습니다. (PMK, [r', r' + 106]) 형식의 쌍을 포함합니다. 또한 m + 3은 라운드의 최대 단계 수이므로 라운드가 다음과 같이 가정됩니다. 1분이면 생성된 임시 키는 거의 2년 동안 보관됩니다. 동시에 시간이 지나면 이 임시 비밀 키를 생성하는 데 너무 오래 걸리지 않을 것입니다. 타원 곡선 기반 사용 32B 키가 있는 시스템에서는 각 비밀 키가 몇 마이크로초 안에 계산됩니다. 따라서 m + 3 = 180이면, 그러면 1억 8천만 개의 비밀 키를 모두 1시간 이내에 계산할 수 있습니다. 현재 라운드가 r' + 106에 가까워지면 다음 백만 라운드를 처리하기 위해 i 새로운 (PMK', SMK') 쌍을 생성하고 다음 임시 키 보관이 무엇인지 알려줍니다. —예를 들어 — SIGi(PMK′, [r′ + 106 + 1, r′ + 2 \(\cdot\) 106 + 1])를 사용하면 새 블록을 입력하거나 별도의 "거래" 또는 결제의 일부인 추가 정보로 표시됩니다. 그렇게 함으로써, 다음에는 PMK'를 사용하여 나의 임시 서명을 확인해야 한다고 모든 사람에게 알립니다. 백만 라운드. 등. (이 기본 접근 방식에 따라 임시 키를 구현하지 않고 임시 키를 구현하는 다른 방법도 있습니다. 신원 기반 서명을 사용하는 것은 확실히 가능합니다. 예를 들어 Merkle trees를 통해.16) 16이 방법에서는 공개-비밀 키 쌍(pkr,s)을 생성합니다. 나, skr, s 나 )의 각 라운드 단계 쌍(r, s)에 대해임시 키를 구현하는 다른 방법(예: Merkle trees)도 가능합니다. 5.3 Algorand '의 단계 일치 BA⋆의 것과 1 우리가 말했듯이 Algorand ′의 라운드 1에는 최대 m + 3개의 단계가 있습니다. 1단계. 이 단계에서 각 잠재적 리더 i는 자신의 후보 블록 Br을 계산하고 전파합니다. 나 , 자신의 자격증명 \(\sigma\)r,1과 함께 나. 이 자격 증명은 i를 명시적으로 식별한다는 점을 기억하세요. 이는 \(\sigma\)r,1이기 때문에 그렇습니다. 나 \(\triangleq\)SIGi(r, 1, Qr−1). 잠재적 검증자 i는 또한 메시지의 일부로 H(Br)라는 적절한 디지털 서명을 전파합니다. 나). 지불이나 자격 증명을 다루지 않는 i의 이 서명은 그의 임시 공개와 관련이 있습니다. 키 pkr,1 i : 즉, 그는 sigpkr을 전파합니다.1 나는 (H(Br 나)). Br을 전파하는 대신 우리의 규칙을 고려하여 나 및 sigpkr,1 나는 (H(Br i)), 그는 그럴 수도 있었어 전파된 SIGpkr,1 나는 (H(Br 나)). 그러나 우리의 분석에서는 다음에 대한 명시적인 접근 권한이 필요합니다. sigpkr,1 나는 (H(Br 나)). Steps 2. 이 단계에서 각 검증자 i는 \(\ell\)r을 설정합니다. 나는 hashed 자격을 갖춘 잠재적인 리더가 되고 싶습니다 는 가장 작고, Br 나는 \(\ell\)r이 제안한 블록이 될 것입니다 나. 효율성을 위해 우리는 Br에 직접적으로 동의하기보다는 H(Br)에 동의하고 싶다는 메시지를 전파합니다. BA⋆의 첫 번째 단계에서 초기 값 v'로 전파됨 나는 = H(Br 나). 즉, 그는 v'를 전파한다 나, 물론 일시적으로 서명한 후에요. (즉, 오른쪽 임시 항목을 기준으로 서명한 후 공개 키(이 경우 pkr,2) i .) 물론 나도 자신의 자격 증명을 전송합니다. BA⋆의 첫 번째 단계는 등급 합의 프로토콜 GC의 첫 번째 단계로 구성되므로, Step Algorand '의 2는 GC의 첫 번째 단계에 해당합니다. 단계 3. 이 단계에서 각 검증자 i \(\in\)SV r,2는 BA⋆의 두 번째 단계를 실행합니다. 즉, 그는 다음을 보낸다. 그가 GC의 두 번째 단계에서 보냈을 것과 동일한 메시지입니다. 다시 말하지만, 내 메시지는 임시적입니다. 서명하고 본인의 증명서를 첨부합니다. (이제부터 검증인이라는 말은 생략하겠습니다. 그의 메시지에 일시적으로 서명하고 그의 자격 증명도 전파합니다.) 4단계. 이 단계에서 모든 검증자 i \(\in\)SV r,4는 GC의 출력(vi, gi)을 계산하고 일시적으로 BA⋆의 세 번째 단계, 즉 BBA⋆의 첫 번째 단계, gi = 2이면 초기 비트가 0이고 그렇지 않으면 1입니다. 단계 s = 5, . . . , m + 2. 이러한 단계에 도달한 경우 BA⋆의 단계 s-1에 해당하므로 다음과 같습니다. BBA⋆의 s-3단계. 우리의 전파 모델은 충분히 비동기적이므로 가능성을 고려해야 합니다. 그러한 단계 s의 중간에 검증자 i \(\in\)SV r,s는 그를 증명하는 정보에 의해 도달됩니다. 해당 블록 Br은 이미 선택되었습니다. 이 경우, i는 자신의 라운드 r 실행을 중지합니다. Algorand ', 라운드(r + 1) 명령어 실행을 시작합니다. {r′, . . . , r' + 106} \(\times\) {1, . . . , m + 3}. 그런 다음 그는 이러한 공개 키를 정식 방식으로 주문하고 j번째 공개 키를 저장합니다. Merkle tree의 j번째 리프에 키를 입력하고 그가 공개한 루트 값 Ri를 계산합니다. 그가 서명하고 싶을 때 키 pkr,s와 관련된 메시지 나 , 저는 실제 서명뿐만 아니라 pkr,s에 대한 인증 경로도 제공합니다. 나 리에 비해 이 인증 경로는 pkr,s도 증명합니다. 나 j번째 리프에 저장된다. 나머지 세부사항을 쉽게 채울 수 있습니다.따라서 검증자의 명령 i \(\in\)SV r,s에 해당하는 명령 외에 BBA⋆의 s-3단계에는 BBA⋆의 실행이 이전에 중단되었는지 확인하는 것이 포함됩니다. 단계 S′. BBA⋆ 정지는 Coin-Fixed-to-0 단계 또는 Coin-Fixed-1 단계에서만 정지할 수 있으므로, 지침은 다음을 구별합니다. A (종료 조건 0): s′ −2 ‚0 mod 3, 또는 B (엔딩 조건 1): s′ −2 ‚1 mod 3. 실제로 A의 경우 블록 Br은 비어 있지 않으므로 추가 명령이 필요합니다. 적절한 인증서 CERT r과 함께 Br을 제대로 재구성하는지 확인하세요. B의 경우, 블록 Br은 비어 있으므로 i는 Br = Br로 설정하라는 지시를 받습니다. \(\varepsilon\) = (r, \(\emptyset\), H(Qr−1, r), H(Br−1)), CERT r을 계산합니다. 단계 s를 실행하는 동안 블록 Br이 이미 가지고 있다는 증거를 볼 수 없다면 생성된 다음 BBA⋆의 s-3 단계에서 보낸 것과 동일한 메시지를 보냅니다. 단계 m + 3. 단계 m + 3 동안 i \(\in\)SV r,m+3에서 블록 Br이 이미 생성된 것으로 확인되면 이전 단계 s'를 수행한 다음 위에서 설명한 대로 진행합니다. 그렇지 않으면 BBA⋆의 m단계에서 보냈을 것과 동일한 메시지를 보내는 대신, 나는 자신이 보유한 정보를 기반으로 Br과 그에 상응하는 값을 계산하도록 지시했습니다. CERT r을 인증합니다. 실제로 라운드의 총 단계 수에 대해 m + 3만큼 상한이 적용된다는 점을 기억하세요. 5.4 실제 프로토콜 라운드 r의 각 단계 s에서 검증자 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가 다음과 같을 때 확실히, sigpkr,s 대신 esigi(x)를 씁니다. i (x)는 i의 값에 대한 적절한 임시 서명을 나타냅니다. 라운드 r의 단계 s에서 x를 입력하고 SIGpkr,s 대신 ESIGi(x)를 작성합니다. i(x)는 (i, x, esigi(x))를 나타냅니다. 1단계: 블록 제안 모든 사용자 i \(\in\)PKr−k에 대한 지침: 사용자 i는 다음과 같이 라운드 r의 1단계를 시작합니다. Br-1을 알고 있습니다. • 사용자 i는 Br−1의 세 번째 구성 요소에서 Qr−1을 계산하고 i \(\in\)SV r,1 또는 아닙니다. • i /\(\in\)SV r,1이면 i는 1단계 실행을 즉시 중지합니다. • i \(\in\)SV r,1, 즉 i가 잠재적 리더라면 그는 라운드 R 지불액을 수집합니다. 지금까지 그에게 전파되어 최대 지불 세트 PAY r을 계산합니다. 나는 그들에게서. 다음으로 그는 그의 "후보 블록"Br을 계산합니다. 나는 = (r, 지불 r i , SIGi(Qr−1), H(Br−1)). 마침내 그는 계산한다. 메시지 씨,1 나 = (Br i , Esigi(H(Br i )), \(\sigma\)r,1 i), 그의 임시 비밀 키 skr을 파괴합니다.1 나 , 그리고 나서 Mr,1을 전파합니다. 나.주목. 실제로 1단계의 전역 실행을 단축하려면 (r, 1)- 메시지는 선택적으로 전파됩니다. 즉, 시스템의 모든 사용자 i에 대해 첫 번째 (r, 1)에 대해 그가 받은 메시지를 성공적으로 확인하면17 플레이어 i는 평소대로 이를 전파합니다. 모든 기타 (r, 1) - 플레이어 i가 수신하고 성공적으로 확인한 메시지는 hash인 경우에만 전파합니다. 포함된 자격 증명의 값은 포함된 자격 증명의 hash 값 중에서 가장 작습니다. 모든 (r, 1) 메시지에서 그는 지금까지 수신하고 성공적으로 검증했습니다. 게다가 제안한 대로 Georgios Vlachos에 따르면 각 잠재적 리더 i도 자신의 자격 증명 \(\sigma\)r,1을 전파하는 것이 유용합니다. 나 별도로: 이러한 작은 메시지는 블록보다 빠르게 이동하여 mr,1의 적시 전파를 보장합니다. j's 포함된 자격 증명은 작은 hash 값을 갖고, 큰 hash 값을 갖는 자격 증명을 만듭니다. 빨리 사라져라. 2단계: 단계적 합의 프로토콜 GC의 첫 번째 단계 모든 사용자 i \(\in\)PKr−k를 위한 지침: 사용자 i는 다음과 같이 라운드 r의 2단계를 시작합니다. Br-1을 알고 있습니다. • 사용자 i는 Br−1의 세 번째 구성 요소에서 Qr−1을 계산하고 i \(\in\)SV r,2 또는 아닙니다. • i /\(\in\)SV r,2이면 i는 2단계 실행을 즉시 중지합니다. • i \(\in\)SV r,2이면 t2 \(\triangleq\) \(\lambda\) + Λ 시간을 기다린 후 i는 다음과 같이 작동합니다. 1. 그는 H(\(\sigma\)r,1)를 만족하는 사용자 \(\ell\)를 찾았습니다. \(\ell\)) \(\leq\)H(\(\sigma\)r,1 j ) 모든 자격 증명에 대해 \(\sigma\)r,1 j 그 일부는 그가 지금까지 수신한 성공적으로 검증된 (r, 1) 메시지입니다. 2. 그가 \(\ell\)a로부터 유효한 메시지 mr,1을 받았다면 \(\ell\) = (Br \(\ell\), 대략\(\ell\)(H(Br \(\ell\))), \(\sigma\)r,1 \(\ell\)),b 그런 다음 i가 설정합니다. v′ 나는 \(\triangleq\)H(Br \(\ell\)); 그렇지 않으면 나는 v'를 설정한다 나는 \(\triangleq\) \(\bot\). 3. 나는 mr,2라는 메시지를 계산합니다. 나 \(\triangleq\)(ESIGi(v′ 나), \(\sigma\)r,2 i ),c는 자신의 임시 비밀 키를 파기합니다. skr,2 i , 그런 다음 mr,2를 전파합니다. 나. a본질적으로 사용자 i는 라운드 r의 리더가 사용자 \(\ell\)임을 개인적으로 결정합니다. b다시 말하지만, 플레이어 \(\ell\)의 서명과 hashes는 모두 성공적으로 검증되었으며 PAY r \(\ell\)in Br \(\ell\)는 다음에 대한 유효한 지불 세트입니다. 라운드 r — PAY r인지 확인하지는 않지만 \(\ell\)는 \(\ell\)또는 \(\ell\)에 대해 최대값입니다. c메시지 Mr,2 나 플레이어 i가 v'를 고려한다는 신호 나는 다음 블록의 hash이 되거나 다음 블록을 고려합니다. 블록이 비어 있습니다. 17즉, 모든 서명이 정확하고 블록과 해당 hash이 모두 유효합니다. 비록 제가 확인하지는 않았지만 포함된 페이세트가 제안자에게 최대인지 여부.
3단계: GC의 두 번째 단계 모든 사용자 i \(\in\)PKr−k를 위한 지침: 사용자 i는 다음과 같이 라운드 r의 3단계를 시작합니다. Br-1을 알고 있습니다. • 사용자 i는 Br−1의 세 번째 구성 요소에서 Qr−1을 계산하고 i \(\in\)SV r,3 또는 아닙니다. • i /\(\in\)SV r,3이면 i는 3단계 실행을 즉시 중지합니다. • i \(\in\)SV r,3이면 t3 \(\triangleq\)t2 + 2\(\lambda\) = 3\(\lambda\) + Λ 시간만큼 기다린 후 i는 다음과 같이 작동합니다. 1. 모든 유효한 메시지 중에서 mr,2를 만족하는 v′ ̸= \(\bot\)값이 존재하는 경우 j 그가 받았고, 그 중 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는 다음과 같이 라운드 r의 4단계를 시작합니다. Br-1을 알고 있습니다. • 사용자 i는 Br−1의 세 번째 구성 요소에서 Qr−1을 계산하고 i \(\in\)SV r,4 또는 아닙니다. • i /\(\in\)SV r,4이면 i는 4단계 실행을 즉시 중지합니다. • i \(\in\)SV r,4이면 t4 \(\triangleq\)t3 + 2\(\lambda\) = 5\(\lambda\) + Λ 시간을 기다린 후 i는 다음과 같이 작동합니다. 1. 그는 GC의 출력인 vi와 gi를 다음과 같이 계산합니다. (a) 모든 유효한 메시지 중에서 mr,3을 만족하는 v′ ̸= \(\bot\)값이 존재한다면, j 그는 가지고 있다 수신된 결과 중 2/3 이상이 (ESIGj(v′), \(\sigma\)r,3 형식입니다. j ) 그런 다음 그는 설정합니다. vi \(\triangleq\)v′ 및 gi \(\triangleq\)2. (b) 그렇지 않은 경우, 모든 유효한 메시지 중에서 v′ ̸= \(\bot\) 값이 존재하는 경우 씨,3 j 그는 그 중 1/3 이상이 다음 형식을 받았습니다. (ESIGj(v′), \(\sigma\)r,3 j), 그런 다음 그는 vi \(\triangleq\)v′ 및 gi \(\triangleq\)1.a를 설정합니다. (c) 그렇지 않으면 그는 vi \(\triangleq\)H(Br τ ) 및 gi \(\triangleq\)0. 2. 그는 BBA⋆의 입력인 bi를 다음과 같이 계산합니다. gi = 2이면 bi \(\triangleq\)0이고, 그렇지 않으면 bi \(\triangleq\)1입니다. 3. 그는 mr,4라는 메시지를 계산합니다. 나 \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,4 i), 그의 일시적인 것을 파괴한다 비밀키 skr,4 i , 그런 다음 mr,4를 전파합니다. 나. a경우 (b)의 v′가 존재한다면 고유해야 함을 증명할 수 있습니다.
단계 s, 5 \(\leq\)s \(\leq\)m + 2, s −2 ‚0 mod 3: BBA⋆의 코인 고정-0 단계 모든 사용자 i \(\in\)PKr−k를 위한 지침: 사용자 i는 다음과 같이 라운드 r의 단계 s를 시작합니다. Br-1을 알고 있습니다. • 사용자 i는 Br−1의 세 번째 구성 요소에서 Qr−1을 계산하고 i \(\in\)SV r,s인지 확인합니다. • i /\(\in\)SV r,s이면 i는 자신의 Step 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 pho mod 3 — 즉, s′ 단계는 Coin-Fixed-To-0 단계입니다. (b) 나는 적어도 tH를 받았다 = 2n 3 + 1 유효한 메시지 mr,s′−1 j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ), 및 (c) 나는 유효한 메시지를 받았습니다. Mr,1 j = (Br j,esigj(H(Br j )), \(\sigma\)r,1 j ) v = H(Br) j ), 그런 다음 나는 자신의 Step s 실행(실제로는 r 라운드 실행)을 즉시 중지합니다. 무엇이든 전파하는 것; Br = Br로 설정 j ; 자신의 CERT r을 메시지 세트로 설정합니다. 씨,s′−1 j 하위 단계 (b).b – 종료 조건 1: 그러한 대기 중 어느 시점에라도 다음이 존재하는 경우 단계 s' 그렇게 (a') 6 \(\leq\)s' \(\leq\)s, s' −2 pho1 mod 3 — 즉, 단계 s'는 Coin-Fixed-To-1 단계이고, (b') 나는 적어도 tH개의 유효한 메시지 mr,s'-1을 수신했습니다. j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ),c 그런 다음 나는 자신의 Step s 실행(실제로는 r 라운드 실행)을 즉시 중지합니다. 무엇이든 전파하는 것; Br = Br로 설정 ? ; 자신의 CERT r을 메시지 세트로 설정합니다. 씨,s′−1 j 하위 단계 (b'). – 그렇지 않으면 대기가 끝나면 사용자 i는 다음을 수행합니다. 그는 vi를 모든 유효한 구성 요소의 두 번째 구성 요소에서 vj의 과반수 투표로 설정합니다. 씨,s−1 j ’ 그는 받았습니다. 그는 다음과 같이 bi를 계산합니다. 유효한 모든 mr,s−1의 2/3 이상이면 j 그가 받은 형식은 다음과 같습니다. (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), 그런 다음 bi \(\triangleq\)0을 설정합니다. 그렇지 않고 유효한 모든 mr,s−1의 2/3 이상이면 j 그가 받은 형식은 다음과 같습니다. (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), 그런 다음 bi \(\triangleq\)1을 설정합니다. 그렇지 않으면 bi \(\triangleq\)0을 설정합니다. 그는 mr,s라는 메시지를 계산합니다. 나 \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i), 그의 일시적인 것을 파괴한다 비밀 키 skr,s i , 그런 다음 mr,s를 전파합니다. 나. a 플레이어 i가 1에 서명한 j로부터 메시지를 받은 경우에도 플레이어 j로부터의 메시지는 계산됩니다. 종료 조건 1과 유사합니다. 분석에서 볼 수 있듯이 이는 모든 정직한 사용자가 알 수 있도록 수행됩니다. Br은 서로 시간 \(\lambda\) 내에 있습니다. b사용자 i는 이제 Br과 자신의 라운드 r 완료를 알고 있습니다. 그는 여전히 일반 사용자로서 메시지 전파를 돕고 있지만 (r, s) 검증자로서 전파를 시작하지 않습니다. 특히 그는 자신의 모든 메시지를 전파하는 데 도움을 주었습니다. CERT r은 우리 프로토콜에 충분합니다. 또한 바이너리 BA 프로토콜에 대해 bi \(\triangleq\)0을 설정해야 하지만 bi 어쨌든 이 경우에는 필요하지 않습니다. 향후 모든 지침에 대해서도 유사합니다. c이 경우 vj가 무엇인지는 중요하지 않습니다.단계 s, 6 \(\leq\)s \(\leq\)m + 2, s −2 ל1 mod 3: BBA⋆의 동전 고정 1 단계 모든 사용자 i \(\in\)PKr−k를 위한 지침: 사용자 i는 다음과 같이 라운드 r의 단계 s를 시작합니다. Br-1을 알고 있습니다. • 사용자 i는 Br−1의 세 번째 구성 요소에서 Qr−1을 계산하고 i \(\in\)SV r,s 또는 아닙니다. • i /\(\in\)SV r,s이면 i는 자신의 Step s 실행을 즉시 중지합니다. • i \(\in\)SV r,s이면 그는 다음을 수행합니다. – 그는 ts \(\triangleq\)(2s −3)\(\lambda\) + Λ 시간이 지날 때까지 기다립니다. – 종료 조건 0: Coin-Fixed-To-0 단계와 동일한 지침입니다. - 종료 조건 1 : Coin-Fixed-To-0 단계와 동일한 지침입니다. – 그렇지 않으면 대기가 끝나면 사용자 i는 다음을 수행합니다. 그는 vi를 모든 유효한 구성 요소의 두 번째 구성 요소에서 vj의 과반수 투표로 설정합니다. 씨,s−1 j ’ 그는 받았습니다. 그는 다음과 같이 bi를 계산합니다. 유효한 모든 mr,s−1의 2/3 이상이면 j 그가 받은 형식은 다음과 같습니다. (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), 그런 다음 bi \(\triangleq\)0을 설정합니다. 그렇지 않고 유효한 모든 mr,s−1의 2/3 이상이면 j 그가 받은 형식은 다음과 같습니다. (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), 그런 다음 bi \(\triangleq\)1을 설정합니다. 그렇지 않으면 bi \(\triangleq\)1을 설정합니다. 그는 mr,s라는 메시지를 계산합니다. 나 \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i), 그의 일시적인 것을 파괴한다 비밀 키 skr,s i , 그런 다음 mr,s를 전파합니다. 나.
단계 s, 7 \(\leq\)s \(\leq\)m + 2, s −2 ל2 mod 3: BBA⋆의 동전 뒤집기 단계 모든 사용자 i \(\in\)PKr−k를 위한 지침: 사용자 i는 다음과 같이 라운드 r의 단계 s를 시작합니다. Br-1을 알고 있습니다. • 사용자 i는 Br−1의 세 번째 구성 요소에서 Qr−1을 계산하고 i \(\in\)SV r,s 또는 아닙니다. • i /\(\in\)SV r,s이면 i는 자신의 Step s 실행을 즉시 중지합니다. • i \(\in\)SV r,s이면 그는 다음을 수행합니다. – 그는 ts \(\triangleq\)(2s −3)\(\lambda\) + Λ 시간이 지날 때까지 기다립니다. – 종료 조건 0: Coin-Fixed-To-0 단계와 동일한 지침입니다. - 종료 조건 1 : Coin-Fixed-To-0 단계와 동일한 지침입니다. – 그렇지 않으면 대기가 끝나면 사용자 i는 다음을 수행합니다. 그는 vi를 모든 유효한 구성 요소의 두 번째 구성 요소에서 vj의 과반수 투표로 설정합니다. 씨,s−1 j ’ 그는 받았습니다. 그는 다음과 같이 bi를 계산합니다. 유효한 모든 mr,s−1의 2/3 이상이면 j 그가 받은 형식은 다음과 같습니다. (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), 그런 다음 bi \(\triangleq\)0을 설정합니다. 그렇지 않고 유효한 모든 mr,s−1의 2/3 이상이면 j 그가 받은 형식은 다음과 같습니다. (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), 그런 다음 bi \(\triangleq\)1을 설정합니다. 그렇지 않으면, SV r,s−1 나 그가 유효한 정보를 받은 (r, s -1)-검증자의 집합이 됩니다. 메시지 Mr,s−1 j . 그는 bi \(\triangleq\)lsb(minj\(\in\)SV r,s−1 나 H(\(\sigma\)r,s−1 j )). 그는 mr,s라는 메시지를 계산합니다. 나 \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i), 그의 일시적인 것을 파괴한다 비밀 키 skr,s i , 그런 다음 mr,s를 전파합니다. 나.
m + 3단계: BBA⋆a의 마지막 단계 모든 사용자 i \(\in\)PKr−k에 대한 지침: 사용자 i는 다음과 같이 자신의 라운드 r 단계 m + 3을 시작합니다. Br-1을 알고 있습니다. • 사용자 i는 Br−1의 세 번째 구성 요소에서 Qr−1을 계산하고 i \(\in\)SV r,m+3 또는 아닙니다. • i /\(\in\)SV r,m+3이면 i는 자신의 단계 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는 다음을 수행합니다. 그는 아웃i \(\triangleq\)1 및 Br \(\triangleq\)Br을 설정합니다. ? 그는 mr,m+3이라는 메시지를 계산합니다. 나 = (ESIGi(outi), ESIGi(H(Br)), \(\sigma\)r,m+3 나 ), 그의 것을 파괴한다 임시 비밀 키 skr,m+3 나 , 그런 다음 mr,m+3을 전파합니다. 나 Br.b를 인증하기 위해 a압도적인 확률로 BBA⋆이 단계 전에 종료되었으며 완전성을 위해 이 단계를 지정합니다. m + 3단계의 bA 인증서에는 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을 수신했습니다. j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ) 및 (c) 나는 유효한 메시지를 받았습니다. Mr,1 j = (Br j,esigj(H(Br j )), \(\sigma\)r,1 j ) v = H(Br) j ), 그러면 나는 그 자신의 라운드 r 실행을 즉시 중단합니다. Br = Br로 설정 j; 자신의 CERT r을 설정합니다. 메시지 집합 mr,s′−1 j 하위 단계 (b). – 그러한 대기 중 어느 시점에서든 다음과 같은 단계가 존재하는 경우 (a') 6 \(\leq\)s' \(\leq\)m + 3, s' −2 ‚1 mod 3, 그리고 (b') 나는 적어도 tH개의 유효한 메시지 mr,s'-1을 수신했습니다. j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ), 그러면 나는 그 자신의 라운드 r 실행을 즉시 중단합니다. Br = Br로 설정 ?; 자신의 CERT r을 설정합니다. 메시지 집합 mr,s′−1 j 하위 단계 (b'). – 그러한 대기 중에 어느 시점에서든 내가 적어도 tH개의 유효한 메시지를 받은 경우 미스터,엠+3 j = (ESIGj(1), ESIGj(H(Br Ϋ )), \(\sigma\)r,m+3 j ) 그런 다음 나는 그 자신의 라운드 r 실행을 중지합니다. 즉시 Br = Br로 설정됩니다. ϫ , 자신의 CERT r을 메시지 세트 mr,m+3으로 설정합니다. j 1인용 및 H(Br ? ). 5.5 Algorand 분석 1 분석에 사용된 각 라운드 r \(\geq\)0에 대해 다음 표기법을 소개합니다. • T r을 첫 번째 정직한 사용자가 Br-1을 아는 시간으로 설정합니다. • Ir+1을 간격 [T r+1, T r+1 + \(\lambda\)]로 설정합니다. 프로토콜 초기화에 의해 T 0 = 0이라는 점에 유의하십시오. 각 s \(\geq\)1 및 i \(\in\)SV r,s에 대해 다음을 기억하세요. \(\alpha\)r,s 나 그리고 \(\beta\)r,s 나 는 각각 플레이어 i의 단계 s의 시작 시간과 종료 시간입니다. 더욱이, 각 2 \(\leq\)s \(\leq\)m + 3에 대해 ts = (2s −3)\(\lambda\) + Λ임을 기억하세요. 또한 I0 \(\triangleq\){0} 및 t1 \(\triangleq\)0이라고 둡니다. 마지막으로, Lr \(\leq\)m/3은 베르누이 시행 횟수를 나타내는 확률변수라는 점을 기억하세요. 각 시도가 확률 ph로 1일 때 1을 확인하는 데 필요합니다. 2이며 최대 m/3 시도가 있습니다. 만약 모두 Lr \(\triangleq\)m/3이면 시도가 실패합니다. 분석에서 계산 시간은 실제로 필요한 시간에 비해 무시할 수 있으므로 무시합니다. 메시지를 전파하기 위해. 어쨌든 약간 더 큰 \(\lambda\)와 Λ를 사용하면 계산 시간이 분석에 직접 포함됩니다. 아래 진술의 대부분은 “압도적이다. 확률'을 의미하며, 분석에서 이 사실을 반복적으로 강조하지 않을 수도 있습니다.5.6 주요 정리 정리 5.1. 다음 속성은 각 라운드 r \(\geq\)0에 대해 압도적인 확률로 유지됩니다. 1. 모든 정직한 사용자는 동일한 블록에 동의합니다. 2. 리더 \(\ell\)r이 정직할 때 블록 Br은 \(\ell\)r에 의해 생성되고 Br에는 최대 페이세트가 포함됩니다. 시간 \(\alpha\)r,1까지 \(\ell\)r이 수신함 \(\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. Lr에 대한 ph = h2(1 + h −h2)이고 리더 \(\ell\)r은 적어도 ph 확률로 정직합니다. 우리의 주요 정리를 증명하기 전에 두 가지 사항을 언급하겠습니다. 비고. • 블록 생성 및 실제 지연 시간. 블록 Br을 생성하는 시간은 T r+1 −T r로 정의됩니다. 즉, 일부 정직한 사용자가 Br을 처음 배우는 시점과 Br을 처음으로 학습한 시점 간의 차이로 정의됩니다. 정직한 사용자가 처음으로 Br−1을 배웠을 때입니다. 라운드 R 리더가 정직할 때, 재산 2는 우리의 주요 정리는 Br을 생성하는 정확한 시간이 무슨 일이 있어도 8\(\lambda\) + Λ 시간임을 보장합니다. h > 2/3의 정확한 값은 다음과 같습니다. 리더가 악의적인 경우 속성 3은 다음을 의미합니다. Br을 생성하는 데 예상되는 시간의 상한은 ( 12 ph + 10)\(\lambda\) + Λ, 다시 한 번 정확함에 관계없이 그러나 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이 있다는 점에 유의하세요. 사용자 수가 100K, 100M, 100M이든 상관없이 사용할 수 있습니다. 이는 n이 단독으로 있기 때문에 그렇습니다. h와 F에 따라 달라집니다. 따라서 비밀 키 길이를 갑자기 늘려야 하는 경우를 제외하고, \(\lambda\) 값은 사용자 수가 얼마나 많든 상관없이 동일하게 유지되어야 합니다. 예측 가능한 미래. 대조적으로, 모든 거래율의 경우 거래 수는 거래 수에 따라 증가합니다. 사용자. 따라서 모든 새로운 거래를 적시에 처리하려면 블록의 크기가 같아야 합니다. 또한 사용자 수에 따라 성장하여 Λ도 성장합니다. 따라서 장기적으로 우리는 \(\lambda\) << Λ. 따라서 \(\lambda\)에 대해서는 더 큰 계수를 갖는 것이 적절하며, 실제로 계수는 Λ의 경우 1입니다. 정리 증명 5.1. 귀납법으로 속성 1-3을 증명합니다. 라운드 r −1 동안 유지된다고 가정합니다. (일반성을 잃지 않고 r = 0일 때 "round -1" 동안 자동으로 유지됩니다), 우리는 이를 다음과 같이 증명합니다. 라운드 r. 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는 고유하게 정의됩니다. 라운드 r의 각 단계 s에 대해. n1을 선택하면 SV r,1̸= \(\emptyset\)가 압도적인 확률로 발생합니다. 우리는 지금 섹션 5.7과 5.8에서 증명된 다음 두 가지 기본정리를 기술하십시오. 도입 과정 전반에 걸쳐 두 보조정리의 증명에서 0라운드에 대한 분석은 귀납적 단계와 거의 동일합니다. 그리고 차이점이 발생할 때 이를 강조하겠습니다. 보조정리 5.2. [완전성 정리] 속성 1~3을 가정하면 라운드 r−1에 대해 유지됩니다. \(\ell\)r은 솔직하고 압도적인 확률로, • 모든 정직한 사용자는 \(\ell\)r에 의해 생성되고 최대값을 포함하는 동일한 블록 Br에 동의합니다. 시간 \(\alpha\)r까지 \(\ell\)r만큼 수신된 페이세트,1 \(\ell\)r \(\in\)Ir; 그리고 • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ이고 모든 정직한 사용자는 Ir+1 시간 간격에서 Br을 알고 있습니다. 보조정리 5.3. [건전성 정리] 속성 1~3을 가정하면 라운드 r −1에 대해 유지됩니다. \(\ell\)r은 악의적이며, 압도적인 확률로 모든 정직한 사용자가 동일한 블록 Br, T r+1 \(\leq\)에 동의합니다. T r + (6Lr + 10)\(\lambda\) + Λ이고 모든 정직한 사용자는 Ir+1 시간 간격에서 Br을 알고 있습니다. 속성 1-3은 Lemmas 5.2와 5.3을 r = 0과 유도 단계에 적용하여 유지됩니다. 마지막으로, 우리는 속성 4를 섹션 5.9에서 증명된 다음 보조정리로 다시 기술합니다. 보조정리 5.4. r 이전의 각 라운드에 대해 속성 1-3이 주어지면 Lr에 대한 ph = h2(1 + h −h2)이고 리더 \(\ell\)r은 적어도 ph 확률로 정직합니다. 위의 세 가지 정리를 결합하면 정리 5.1이 성립됩니다. ■ 아래의 보조 정리는 귀납법을 고려할 때 라운드 r에 대한 몇 가지 중요한 속성을 나타냅니다. 가설이며, 위의 세 가지 보조정리의 증명에 사용될 것입니다. 보조정리 5.5. 속성 1-3이 라운드 r −1에 대해 유지된다고 가정합니다. 라운드 r의 각 단계 s \(\geq\)1에 대해 각 정직한 검증자 i \(\in\)HSV r,s, 우리는 다음을 얻습니다. (a) \(\alpha\)r,s 나 \(\in\)Ir; (b) 플레이어 i가 ts만큼 기다린 경우, \(\beta\)r,s 나 r > 0인 경우 \(\in\)[T r + ts, T r + \(\lambda\) + ts] \(\beta\)r,s 나 = ts(r = 0); 그리고 (c) 플레이어 i가 ts 시간 동안 기다린 경우 \(\beta\)r,s 시간만큼 기다렸습니다. 나, 그 사람은 모든 메시지를 받았어요 모든 단계 s′ < s에 대해 모든 정직한 검증자 j \(\in\)HSV r,s′에 의해 전송됩니다. 게다가, 각 단계 s \(\geq\)3에 대해 우리는 다음을 얻습니다. (d) 두 개의 서로 다른 플레이어 i, i′ \(\in\)SV r,s와 동일한 두 개의 서로 다른 값 v, v′가 존재하지 않습니다. 두 플레이어 모두 전체 시간의 2/3가 넘는 시간 ts를 기다렸습니다. 유효한 메시지 mr,s−1 j 내가 받은 선수는 v와 계약했고, 유효한 모든 선수의 2/3 이상이 메시지 mr,s−1 j i' 선수가 v'와 계약했습니다. 증거. 속성 (a)는 플레이어 i가 Br−1을 알고 있기 때문에 귀납적 가설로부터 직접적으로 따릅니다. Ir 시간 간격을 두고 즉시 자신의 발걸음을 시작합니다. 속성 (b)는 (a)에서 직접 따릅니다. 플레이어 나는 행동하기 전에 ts의 시간을 기다렸습니다. \(\beta\)r,s 나 = \(\alpha\)r,s 나 + TS. \(\alpha\)r,s에 주목하세요. 나 = 0 r = 0. 이제 속성 (c)를 증명합니다. s = 2이면 속성 (b)에 따라 모든 검증자 j \(\in\)HSV r,1에 대해 다음을 얻습니다. \(\beta\)r,s 나 = \(\alpha\)r,s 나 + ts \(\geq\)T r + ts = T r + \(\lambda\) + Λ \(\geq\) \(\beta\)r,1 j + Λ.각 검증자 j \(\in\)HSV r,1은 시간 \(\beta\)r,1에 메시지를 보내기 때문에 j 그 메시지는 모두에게 정직하게 전해졌어 최대 Λ 시간, 시간별 \(\beta\)r,s의 사용자 나 플레이어 i는 모든 검증자가 보낸 메시지를 받았습니다. 원하는 대로 HSV r,1을 선택합니다. s > 2이면 ts = ts−1 + 2\(\lambda\)입니다. 속성(b)에 따라 모든 단계 s′ < s 및 모든 검증자 j \(\in\)HSV r,s′에 대해, \(\beta\)r,s 나 = \(\alpha\)r,s 나 + 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\). 각 검증자 j \(\in\)HSV r,s′는 시간 \(\beta\)r,s′에 메시지를 보내기 때문에 j 그 메시지는 모두에게 정직하게 전해졌어 최대 \(\lambda\) 시간, 시간 \(\beta\)r,s의 사용자 나 플레이어 i는 모든 정직한 검증자가 보낸 모든 메시지를 받았습니다. 모든 s' < s에 대해 HSV r,s'에서. 따라서 속성 (c)가 성립합니다. 마지막으로 속성 (d)를 증명합니다. 검증자 j \(\in\)SV r,s−1은 최대 두 가지에 서명합니다. 임시 비밀 키를 사용하는 s -1 단계: 출력과 동일한 길이의 값 vj hash 함수 및 s −1 \(\geq\)4인 경우 비트 bj \(\in\){0, 1}. 그렇기 때문에 보조정리의 진술에서 우리는 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)를 v, MSV r,s−1에 서명한 정직한 (r, s −1) 검증자의 집합이라고 가정합니다. 나 세트 i가 유효한 메시지를 수신한 악의적인 (r,s-1)-검증자 및 MSV r,s-1 나 (v) MSV r,s−1의 하위 집합 나 나는 누구로부터 유효한 메시지 서명을 받았습니까? v. 요구 사항에 따라 나와 v, 우리는 비율 \(\triangleq\)|HSV r,s−1(v)| + |MSV r,s−1 나 (v)| |HSV r,s−1| + |MSV r,s−1 나 |
2 3. (1) 우리는 처음으로 보여줍니다 |MSV r,s−1 나 (v)| \(\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 나 (v)| 3|MSV r,s−1 나 | < 2|MSV r,s−1 나 (v)| 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 나 (v)| \(\leq\) 3|HSV r,s−1(v)| + 2|MSV r,s−1 나 | + |MSV r,s−1 나 (v)|. 불평등 2와 결합하면, 2|HSV r,s−1| < 3|HSV r,s−1(v)| + |MSV r,s−1 나 (v)| \(\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의 서명을 위조할 수 없습니다. 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은 정직하고, 압도적인 확률로, • 모든 정직한 사용자는 \(\ell\)r에 의해 생성되고 최대값을 포함하는 동일한 블록 Br에 동의합니다. 시간 \(\alpha\)r까지 \(\ell\)r만큼 수신된 페이세트,1 \(\ell\)r \(\in\)Ir; 그리고 • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ이고 모든 정직한 사용자는 Ir+1 시간 간격에서 Br을 알고 있습니다. 증거. 귀납적 가설과 Lemma 5.5에 의해 각 단계 s와 검증자 i \(\in\)HSV r,s에 대해, \(\alpha\)r,s 나 \(\in\)이르. 아래에서는 프로토콜을 단계별로 분석합니다. 1단계. 정의에 따르면 모든 정직한 검증자 i \(\in\)HSV r,1은 원하는 메시지 mr,1을 전파합니다. 나 ~에 시간 \(\beta\)r,1 나 =\(\alpha\)r,1 나, 어디 있어?1 나 = (Br i , Esigi(H(Br i )), \(\sigma\)r,1 나), 브르 나는 = (r, 지불 r i , SIGi(Qr−1), H(Br−1)), 그리고 돈을 지불하세요 나는 \(\alpha\)r,1까지 내가 본 모든 지불 중에서 최대 지불 세트입니다. 나. 2단계. 정직한 검증자 i \(\in\)HSV r,2를 임의로 수정합니다. Lemma 5.5에 따르면 플레이어 i가 완료되면 시간 \(\beta\)r,2에서 대기 중 나 =\(\alpha\)r,2 나 + t2, 그는 HSV r,1의 검증자가 보낸 모든 메시지를 받았습니다. 씨,1 \(\ell\)r . \(\ell\)r의 정의에 따르면, PKr−k에는 자격 증명이 hash인 다른 플레이어가 존재하지 않습니다. 값이 H(\(\sigma\)r,1보다 작음) \(\ell\)r). 물론, 대적은 H(\(\sigma\)r,1 \(\ell\)r ) 매우 작지만 그 때쯤에는 플레이어 \(\ell\)r이 자신의 임시 키와 mr,1 메시지를 파기했습니다. \(\ell\)r 전파되었습니다. 따라서 검증자 i는 자신의 리더를 플레이어 \(\ell\)r로 설정합니다. 따라서 시간 \(\beta\)r,2에서 나 , 검증자 i가 Mr,2를 전파합니다. 나 = (ESIGi(v′ 나), \(\sigma\)r,2 i ), 여기서 v' 나는 = H(Br \(\ell\)r). r = 0일 때 유일한 차이점은 그게 \(\beta\)r,2인가요? 나 = t2가 아닌 범위에 속합니다. 향후 단계에 대해서도 비슷한 말을 할 수 있으며 우리는 다시는 강조하지 않겠습니다. 3단계. 정직한 검증자 i \(\in\)HSV r,3을 임의로 수정합니다. Lemma 5.5에 따르면 플레이어 i가 완료되면 시간 \(\beta\)r,3에서 대기 중 나 =\(\alpha\)r,3 나 + t3, 그는 HSV r,2의 검증자가 보낸 모든 메시지를 받았습니다. 매개변수 간의 관계로 보면 압도적인 확률 |HSV r,2| > 2|MSVr,2|. 더욱이 정직한 검증자는 모순되는 메시지에 서명하지 않을 것이며, 대적은 정직한 검증자가 해당 내용을 파기한 후에는 정직한 검증자의 서명을 위조할 수 없습니다. 임시 비밀 키. 따라서 내가 받은 모든 유효한 (r, 2) 메시지 중 2/3 이상이 다음에서 온 것입니다. 정직한 검증자이며 mr,2 형식입니다. j = (ESIGj(H(Br \(\ell\)r)), \(\sigma\)r,2 j), 모순이 없습니다. 따라서 시간 \(\beta\)r,3에 나 플레이어 i가 Mr,3을 전파합니다. 나 = (ESIGi(v′), \(\sigma\)r,3 i ), 여기서 v' = H(Br \(\ell\)r).4단계. 정직한 검증자 i \(\in\)HSV r,4를 임의로 수정합니다. Lemma 5.5에 의해 플레이어 i는 모든 것을 받았습니다. HSV r,3의 검증자가 시간 \(\beta\)r,4에서 대기를 마쳤을 때 보낸 메시지 나 =\(\alpha\)r,4 나 + t4. 유사하다 3단계, 내가 받은 모든 유효한 (r, 3) 메시지의 2/3 이상이 정직한 검증자로부터 온 것이며 Mr,3 형식의 j = (ESIGj(H(Br \(\ell\)r)), \(\sigma\)r,3 j). 따라서 플레이어 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를 임의로 수정합니다. Lemma 5.5에 따르면 플레이어는 다음과 같습니다. \(\alpha\)r,5 시간까지 기다렸다면 검증자가 보낸 모든 메시지를 HSV r,4에서 수신했습니다. 나 +t5. 참고하세요 |HSV r,4| \(\geq\)tH.19 또한 HSV r,4의 모든 검증자는 H(Br에 서명했습니다. \(\ell\)r). |MSV r,4| < tH, v′ ̸= H(Br은 존재하지 않습니다. \(\ell\)r) tH가 서명했을 수도 있음 SV r,4의 검증자(반드시 악의적일 수 있음)이므로 플레이어 i는 그가 완료하기 전에 멈추지 않습니다. 유효한 메시지를 받았습니다. Mr,4 j = (ESIGj(0), ESIGj(H(Br \(\ell\)r)), \(\sigma\)r,4 j). T를 다음과 같은 시간으로 설정합니다. 후자의 사건이 발생합니다. 이러한 메시지 중 일부는 악의적인 플레이어가 보낸 것일 수도 있지만 |MSV r,4| < thH, 그 중 적어도 하나는 HSV r,4의 정직한 검증자로부터 왔으며 시간이 지난 후에 전송됩니다. T r +t4. 따라서 T \(\geq\)T r +t4 > T r +\(\lambda\)+Λ \(\geq\) \(\beta\)r,1 \(\ell\)r +Λ, 그리고 시간이 지나면 T 플레이어 i도 수신합니다. 메시지 씨,1 \(\ell\)r . 프로토콜의 구성에 따라 플레이어 i는 시간 \(\beta\)r,5에서 중지됩니다. 나 = T 없이 무엇이든 전파하는 것; Br = Br로 설정 \(\ell\)r; 그리고 자신의 CERT r을 (r, 4)-메시지 세트로 설정합니다. 0과 H(Br \(\ell\)r) 받은 것입니다. 단계 s > 5. 마찬가지로, 모든 단계 s > 5와 검증자 i \(\in\)HSV r,s에 대해 플레이어 i는 \(\alpha\)r,s 시간까지 기다렸다면 검증자가 보낸 모든 메시지를 HSV r,4에서 수신했습니다. 나 + TS. 의해 동일한 분석으로, 플레이어 i는 아무것도 전파하지 않고 정지하며 Br = Br로 설정됩니다. \(\ell\)r (그리고 자신의 설정 CERT r이 적절합니다). 물론 악성 검증자는 멈추지 않고 임의적으로 전파할 수도 있습니다. 메시지가 있지만 |MSV r,s| < tH, 유도에 의해 다른 v'는 tH 검증자에 의해 서명될 수 없습니다. 모든 4단계 \(\leq\)s' < s에서 정직한 검증자는 유효한 tH를 받았기 때문에 중지합니다. (r, 4)-0 및 H(Br에 대한 메시지 \(\ell\)r). Round-r 블록의 재구성. 5단계의 분석은 일반적인 정직성에 적용됩니다. 사용자 i는 거의 변화가 없습니다. 실제로, 플레이어 i는 Ir 간격에서 자신의 라운드 r을 시작하고 H(Br에 대한 tH 유효한 (r, 4) 메시지를 수신한 경우에만 시간 T에서 중지합니다. \(\ell\)r). 또 왜냐하면 그 메시지 중 적어도 하나는 정직한 검증자로부터 온 것이며 T r + t4 시간 후에 전송됩니다. 플레이어 i는 Mr,1도 받았습니다. \(\ell\)r은 시간 T만큼입니다. 따라서 그는 Br = Br로 설정합니다. 적절한 CERT r을 사용하여 \(\ell\)r. 모든 정직한 사용자가 Ir+1 시간 간격 내에 라운드 r을 완료한다는 것을 보여주는 것만 남았습니다. 5단계의 분석에 따르면 모든 정직한 검증자 i \(\in\)HSV r,5는 \(\alpha\)r,5 이전에 Br을 알고 있습니다. 나 + t5 \(\leq\) T r + \(\lambda\) + t5 = T r + 8\(\lambda\) + Λ. T r+1은 최초의 정직한 사용자 ir이 Br을 아는 시간이므로 다음과 같습니다. T r+1 \(\leq\)T r + 8\(\lambda\) + Λ 원하는대로. 더욱이 ir 플레이어가 Br을 알고 있다면 그는 이미 메시지를 전파하는 데 도움을 준 것입니다. 그의 CERT r. 이러한 모든 메시지는 \(\lambda\) 시간 내에 모든 정직한 사용자에게 수신됩니다. 19 엄밀히 말하면 이러한 일은 매우 높은 확률로 발생하지만 반드시 압도적인 것은 아닙니다. 그러나 이 확률은 프로토콜의 실행 시간에 약간 영향을 미치지만 정확성에는 영향을 미치지 않습니다. h = 80%일 때, |HSV r,4| 확률이 1 −10−8인 \(\geq\)tH. 이 이벤트가 발생하지 않으면 프로토콜은 다른 이벤트로 계속됩니다. 3단계. 두 단계에서 이것이 발생하지 않을 확률은 무시할 수 있으므로 프로토콜은 8단계에서 완료됩니다. 그렇다면 필요한 단계 수는 거의 5개입니다.ir 플레이어는 이를 전파한 최초의 플레이어였습니다. 게다가 위의 분석에 따르면 T r+1 \(\geq\)T r + t4 \(\geq\) \(\beta\)r,1 \(\ell\)r + Λ, 따라서 모든 정직한 사용자는 mr,1을 받았습니다. \(\ell\)r 시간 T r+1 + \(\lambda\). 따라서, 모든 정직한 사용자는 Ir+1 = [T r+1, T r+1 + \(\lambda\)] 시간 간격에서 Br을 알고 있습니다. 마지막으로, r = 0인 경우 실제로 T 1 \(\leq\)t4 + \(\lambda\) = 6\(\lambda\) + Λ가 됩니다. 모든 것을 하나로 결합하여, Lemma 5.2가 유지됩니다. ■ 5.8 건전성 정리 보조정리 5.3. [건전성 정리, 다시 설명] 속성 1-3을 가정하면 라운드 r −1에 대해 유지됩니다. 리더 \(\ell\)r은 악의적이며 압도적인 확률로 모든 정직한 사용자가 동일한 블록에 동의합니다. Br, T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ 그리고 모든 정직한 사용자는 Ir+1 시간 간격에서 Br을 알고 있습니다. 증거. 우리는 프로토콜의 두 부분인 GC와 BBA⋆를 별도로 고려합니다. GC. 귀납적 가설과 Lemma 5.5에 따라 모든 단계 s \(\in\){2, 3, 4} 및 모든 정직한 단계에 대해 검증자 i \(\in\)HSV r,s, 플레이어 i가 시간 \(\beta\)r,s에 행동할 때 나 = \(\alpha\)r,s 나 + ts, 그는 보낸 모든 메시지를 받았습니다 s' < s 단계의 모든 정직한 검증자에 의해 수행됩니다. 4단계에서는 두 가지 가능한 경우를 구별합니다. 사례 1. 검증자가 없음 i \(\in\)HSV r,4는 gi = 2로 설정합니다. 이 경우 정의에 따르면 모든 검증자 i \(\in\)HSV r,4에 대해 bi = 1입니다. 즉, 그들은 다음으로 시작합니다. 바이너리 BA 프로토콜에서 1에 대한 합의. 그들은 vi에 대해 합의하지 않았을 수도 있습니다. 그러나 바이너리 BA에서 볼 수 있듯이 이것은 중요하지 않습니다. 사례 2. gˆi = 2인 검증자 ˆi \(\in\)HSV r,4가 존재합니다. 이 경우에 우리는 다음을 보여줍니다. (1) 모든 i \(\in\)HSV r,4에 대해 gi \(\geq\)1, (2) 모든 i \(\in\)HSV r,4에 대해 vi = v'를 만족하는 값 v'가 존재하고, (3) 유효한 메시지가 존재합니다. mr,1 \(\ell\) v' = H(Br을 만족하는 일부 검증기 \(\ell\) \(\in\)SV r,1로부터 \(\ell\)). 실제로 플레이어 ˆi는 정직하고 gˆi = 2로 설정했기 때문에 모든 유효한 메시지의 2/3 이상이 mr,3입니다. j 그는 동일한 값 v′ ̸= \(\bot\)에 대해 수신했으며 vˆi = v′로 설정했습니다. Lemma 5.5의 속성 (d)에 따르면 다른 정직한 (r, 4) 검증자 i에 대해서는 그 이상일 수 없습니다. 모든 유효한 메시지의 2/3보다 mr,3 j i′가 받은 값은 v′′̸=v′와 같습니다. 따라서 i가 gi = 2로 설정하면 i도 v'에 대해 > 2/3 다수를 보았고 설정되어야 합니다. vi = v′, 원하는 대로. 이제 gi < 2인 임의의 검증기 i \(\in\)HSV r,4를 고려해 보겠습니다. 속성 분석과 유사합니다. (d) Lemma 5.5에서 플레이어 ˆi는 v'에 대해 > 2/3 다수를 보았기 때문에 1보다 더 많습니다. 2|HSV r,3| 정직한 (r, 3)-검증자는 v'에 서명했습니다. 왜냐하면 나는 정직한 (r, 3) 검증자로부터 모든 메시지를 받았기 때문입니다. 시간 \(\beta\)r,4 나 =\(\alpha\)r,4 나 + t4, 그는 특히 1개 이상을 받았습니다. 2|HSV r,3| 그들로부터의 메시지 v'에 대해. 왜냐하면 |HSV r,3| > 2|MSV r,3|, 나는 v′에 대해 > 1/3 다수를 보았습니다. 이에 따라 플레이어 i는 gi = 1로 설정하고 속성 (1)이 유지됩니다. 플레이어 i는 반드시 vi = v′로 설정해야 합니까? 다음과 같은 다른 값 v′′ ̸= \(\bot\)이 존재한다고 가정합니다. 플레이어 i는 또한 v′′에 대해 > 1/3 다수를 보았습니다. 해당 메시지 중 일부는 악의적인 메시지일 수 있습니다. 그러나 그들 중 적어도 한 명은 정직한 검증자 j \(\in\)HSV r,3에게서 왔습니다: 실제로, 왜냐하면 |HSV r,3| > 2|MSV r,3| 그리고 나는 악성 그룹인 HSV r,3으로부터 모든 메시지를 받았습니다. 내가 유효한 (r, 3) 메시지를 받은 검증자는 모든 유효한 메시지의 < 1/3에 해당합니다. 그 사람이 받은 메시지.정의에 따르면 플레이어 j는 모든 유효한 (r, 2) 메시지 중에서 v''에 대해 > 2/3 다수를 보았어야 합니다. 그는 받았습니다. 그러나 우리는 이미 다른 정직한 (r, 3) 검증자들이 본 것을 가지고 있습니다. v'에 대한 2/3 다수(v'에 서명했기 때문). Lemma 5.5의 속성 (d)에 따르면 이는 불가능합니다. 발생하며 그러한 값 v''는 존재하지 않습니다. 따라서 플레이어 i는 vi = v′를 원하는 대로 설정해야 합니다. 재산(2)이 보유됩니다. 마지막으로, 일부 정직한 (r, 3) 검증자는 v'에 대해 > 2/3 다수를 보았으며 일부(실제로는 절반 이상의 정직한 (r, 2) 검증자들이 v'에 서명하고 그들의 메시지를 전파했습니다. 프로토콜을 구성함으로써 정직한 (r, 2) 검증자는 유효한 메시지 미스터, 1 \(\ell\) 일부 플레이어의 \(\ell\) \(\in\)SV r,1 v' = H(Br \(\ell\))이므로 성질 (3)이 성립한다. BBA⋆. 우리는 다시 두 가지 경우를 구별합니다. 사례 1. 모든 검증자 i \(\in\)HSV r,4는 bi = 1입니다. 이는 GC의 사례 1 이후에 발생합니다. |MSV r,4| < tH, 이 경우 SV r,5에는 검증자가 없습니다. 비트 0에 대한 유효한 (r,4) 메시지를 수집하거나 생성할 수 있습니다. 따라서 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, 그가 모든 것을 받았을 때까지 Lemma 5.5에 따라 HSV r,4에서 보낸 메시지입니다. 따라서 플레이어 i는 1에 대해 > 2/3 다수를 보았습니다. bi = 1로 설정합니다. Coin-Fixed-To-1 단계인 6단계에서는 s' = 5가 s' −2 pho mod 3을 만족하지만, 비트 0에 대한 유효한 (r, 4) 메시지가 존재하지 않으므로 HSV r,6의 검증자는 중지되지 않습니다. 그는 비어 있지 않은 블록을 알고 있습니다. 그러나 s' = 6인 경우 s' −2 =1 mod 3이 존재합니다. |HSV r,5| \(\geq\)tH 유효(r, 5) - HSV r,5의 비트 1에 대한 메시지. 모든 검증자 i \(\in\)HSV r,6에 대해 Lemma 5.5를 따르고 시간 \(\alpha\)r,6 이전에 나 + t6 플레이어 i HSV r,5로부터 모든 메시지를 수신했으므로 아무 것도 전파하지 않고 중지하고 설정합니다. 브롬 = 브롬 ? 그의 CERT r은 tH 유효한 (r, 5) 메시지 mr,5의 집합입니다. j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 j) 그가 멈출 때 그에게 받았습니다. 다음으로, 플레이어 i가 s > 6 단계의 정직한 검증자이거나 일반적이고 정직한 사용자(즉, 비검증자). Lemma 5.2의 증명과 유사하게 플레이어 i는 Br = Br을 설정합니다. ث 그리고 자신의 것을 설정합니다 CERT r은 tH 유효한 (r, 5)-메시지 mr,5의 집합입니다. j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 j) 그는 받았습니다. 마지막으로 Lemma 5.2와 유사합니다. Tr+1 \(\leq\) 분 i\(\in\)HSV r,6 \(\alpha\)r,6 나 + t6 \(\leq\)T r + \(\lambda\) + t6 = T r + 10\(\lambda\) + Λ, 그리고 모든 정직한 사용자는 Ir+1 시간 간격에서 Br을 알고 있습니다. 왜냐하면 첫 번째 정직한 사용자 i는 Br이 자신의 CERT r에서 (r, 5) 메시지를 전파하는 데 도움을 주었다는 것을 알고 있습니다. 사례 2. bˆi = 0인 검증자 ˆi \(\in\)HSV r,4가 존재합니다. 이는 GC의 사례 2 다음에 발생하며 더 복잡한 경우입니다. 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, Lemma 5.5 플레이어에 의해 i는 HSV r,4 \(\cup\) \(\cdots\) \(\cup\)HSV r,s−1에서 모든 정직한 검증자가 보낸 모든 메시지를 받았습니다. 시간 동안.이제 다음 사건 E를 고려합니다. 첫 번째로 다음과 같은 단계 s\(\geq\)5가 존재합니다. 바이너리 BA의 시간, 일부 플레이어 i\(\in\)SV r,s(악의적이든 정직하든)는 중지되어야 합니다. 아무것도 전파하지 않고. 우리는 "멈춰야 한다"라는 표현을 사용하여 플레이어가 i 악의적인 경우 프로토콜에 따라 중지해서는 안 되는 척할 수 있으며 적이 선택한 메시지를 전파합니다. 또한 프로토콜을 구성함으로써 다음 중 하나를 수행할 수 있습니다. (E.a) i는 최소한 tH개의 유효한 메시지 mr,s′-1을 수집하거나 생성할 수 있습니다. j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ) 동일한 v 및 s′에 대해, 5 \(\leq\)s′ \(\leq\)s및 s′ −2 ל0 mod 3; 또는 (E.b) i는 적어도 tH개의 유효한 메시지 mr,s′-1을 수집하거나 생성할 수 있습니다. j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ) 동일한 s′에 대해 6 \(\leq\)s′ \(\leq\)s및 s′ −2 ‚1 mod 3입니다. 정직한 (r, s′ −1) 메시지는 모든 정직한 (r, s′) 검증자가 수신하기 전에 수신되기 때문입니다. 단계 s'에서 대기가 완료되고, 적대자는 늦어도 단계 s'에서 모든 것을 수신하기 때문에 정직한 사용자라면 일반성을 잃지 않고 s′ = s이고 플레이어 i는 악의적입니다. 참고하세요 우리는 유효한 블록의 hash이 되기 위해 E.a의 v 값을 요구하지 않았습니다. 분석에서 v = H(Br \(\ell\)) 이 하위 이벤트에서. 아래에서는 먼저 사건 E에 따른 사례 2를 분석한 다음 s의 값이 본질적으로 다음과 같다는 것을 보여줍니다. Lr에 따라 분배됨(따라서 이벤트 E는 단계 m + 3 이전에 압도적으로 발생함) 매개변수의 관계가 주어진 확률). 우선, 임의의 단계 5 \(\leq\)s < s에 대해, 모든 정직한 검증자 i \(\in\)HSV r,s는 ts 시간을 기다렸다가 vi를 투표의 과반수 투표로 설정했습니다. 유효한 (r, s−1)-그가 받은 메시지. 플레이어 i는 모든 정직한 (r, s−1) 메시지를 수신했기 때문에 HSV r,4의 모든 정직한 검증자는 Lemma 5.5에 따라 H(Br)에 서명했습니다. \(\ell\)) 다음의 경우 GC의 2, 이후 |HSV r,s−1| > 2|MSV r,s−1| 각 s에 대해 유도에 의해 우리는 그 플레이어 i를 갖게 됩니다. 설정했습니다 vi = H(Br \(\ell\)). 전파하지 않고 멈추지 않는 모든 정직한 검증자 i \(\in\)HSV r,s에 대해서도 마찬가지입니다. 무엇이든. 이제 우리는 단계 s를 고려하고 4개의 하위 사례를 구별합니다. 사례 2.1.a. 사건 E.a가 발생하고 i′ \(\in\)HSV r,s를 수행해야 하는 정직한 검증자가 존재합니다. 또한 아무것도 전파하지 않고 중지합니다. 이 경우 s−2 pho 0 mod 3이 있고 단계 s는 Coin-Fixed-To-0 단계입니다. 작성자: 정의에 따르면, 플레이어 i'는 최소한 다음 형식의 tH개의 유효한 (r, s−1) 메시지를 수신했습니다. (ESIGj(0), ESIGj(v), \(\sigma\)r,s−1 j ). HSV r,s−1의 모든 검증자는 H(Br)에 서명했기 때문에 \(\ell\)) 그리고 |MSV r,s−1| < tH, v = H(Br \(\ell\)). 적어도 tH −|MSV r,s−1| 0과 v에 대해 i'가 수신한 (r, s−1)-메시지 중 \(\geq\)1개 T r +ts−1 \(\geq\)T r +t4 \(\geq\)T r +\(\lambda\)+Λ \(\geq\) \(\beta\)r,1 이후 HSV r,s−1의 검증자에 의해 전송됩니다. \(\ell\) +Λ, i' 플레이어가 Mr,1을 받았습니다. \(\ell\) 그가 (r, s−1)-메시지를 수신할 때까지. 따라서 플레이어 i'는 아무것도 전파하지 않고 중지됩니다. Br = Br로 설정 \(\ell\); 자신의 CERT r을 그가 수신한 0과 v에 대한 유효한 (r, s−1) 메시지 세트. 다음으로 우리는 다른 검증자 i \(\in\)HSV r,s가 Br = Br로 중지되었음을 보여줍니다. \(\ell\) 또는 bi = 0으로 설정하고 (ESIGi(0), ESIGi(H(Br)을 전파했습니다. \(\ell\))), \(\sigma\)r,s 나). 실제로 Step s 때문에 일부 검증자가 아무것도 전파하지 않고 중지해야 하는 첫 번째 경우입니다. tH (r, s' −1)-검증자가 1에 서명하도록 s' −2 pho1 mod 3인 단계 s' < s가 존재합니다. 따라서 HSV r,s의 검증자는 Br = Br에서 중지되지 않습니다. ?더욱이, 모든 정직한 검증자들은 {4, 5, . . . , s−1}은 H(Br에 서명했습니다. \(\ell\)) 그렇죠 tH (r, s' −1)-검증자가 서명한 단계 s' \(\leq\)s with s' −2 ל0 mod 3이 존재하지 않습니다. 일부 v′′ ̸= H(Br \(\ell\)) —실제로, |MSV r,s′−1| < tH. 따라서 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에 대한 것입니다. 내가 1에 대해 2/3 이상의 다수를 본 경우, 그는 1개에 대해 2(tH −|MSV r,s−1|) 이상의 유효한 (r, s−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이 다수이고 Step s가 Coin-Fixed-To-0 단계이기 때문에 bi = 0으로 설정합니다. 우리가 가지고 있는 것처럼 본, vi = H(Br \(\ell\)). 따라서 i는 (ESIGi(0), ESIGi(H(Br)을 전파합니다. \(\ell\))), \(\sigma\)r,s i) 우리가 원했던 대로 쇼. 단계 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)-을 수신하기 전에는 멈추지 않을 것입니다. 메시지, 왜냐하면 비트 1에 대한 다른 tH 유효한 (r, s′ -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| < tH. 따라서 HSV r,s+1의 모든 정직한 검증자는 아무 것도 전파하지 않고 중지하고 Br = 브르 \(\ell\): 이전과 마찬가지로 mr,1을 받았습니다. \(\ell\) 그들이 원하는 (r, s−1)-메시지를 받기 전에.20 향후 단계의 모든 정직한 검증자와 일반적으로 모든 정직한 사용자에 대해서도 마찬가지입니다. 특히 다들 Br = Br인거 아시죠? Ir+1 시간 간격 내에서 \(\ell\)이고 T r+1 \(\leq\) \(\alpha\)r,s 나' + ts\(\leq\)T r + \(\lambda\) + ts. 사례 2.1.b. 이벤트 E.b가 발생하고 i′ \(\in\)HSV r,s를 수행해야 하는 정직한 검증자가 존재합니다. 또한 아무것도 전파하지 않고 중지합니다. 이 경우 s−2 pho1 mod 3이 있고 단계 s는 Coin-Fixed-To-1 단계입니다. 분석 Case 2.1.a와 유사하며 많은 세부 사항이 생략되었습니다. 20만약 \(\ell\)이 악의적이라면 그는 Mr,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\) 자신의 라운드 r이 시작될 때부터 t2를 기다린 후. 이제부터, mr,1에 필요한 시간 \(\lambda\)' \(\ell\) 나머지 정직한 사용자에게 도달하는 것은 Λ보다 훨씬 작으며 단순화를 위해 우리는 그렇게 하지 않습니다. 분석에 적어보세요. 4\(\lambda\) \(\geq\) \(\lambda\)'이면 분석은 아무런 변화 없이 진행됩니다. 4단계가 끝날 때까지 모든 정직한 사용자라면 Mr,1을 받았을 것입니다. \(\ell\). 블록의 크기가 거대해지고 4\(\lambda\) < \(\lambda\)'이면 3단계와 4단계에서, 프로토콜은 각 검증자에게 2\(\lambda\)가 아닌 \(\lambda\)'/2를 기다리도록 요청할 수 있으며 분석은 계속 유지됩니다.이전과 마찬가지로 플레이어 i'는 최소한 다음 형식의 tH 유효한 (r, s−1) 메시지를 수신해야 합니다. (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ). 다시 s의 정의에 따르면 단계가 존재하지 않습니다. 5 \(\leq\)s′ < swith s′ −2 ל0 mod 3, 여기서 적어도 tH (r, s′ −1) 검증자는 0과 0을 서명했습니다. 동일한 v. 따라서 플레이어 i'는 아무것도 전파하지 않고 중지됩니다. Br = Br로 설정 ?; 그리고 세트 자신의 CERT r은 그가 수신한 비트 1에 대한 유효한 (r, s−1) 메시지 세트가 됩니다. 더욱이, 다른 검증자 i \(\in\)HSV r,s는 Br = Br로 중지되었습니다. ϫ , 또는 bi =로 설정됨 1이고 전파됨(ESIGi(1), ESIGi(vi), \(\sigma\)r,s 나 ). 플레이어 i'가 전파하는 데 도움을 주었기 때문에 시간 \(\alpha\)r,s에 따른 CERT r의 (r, s−1)-메시지 나' + ts, 다시 한번 모든 정직한 검증자들 HSV r,s+1 아무것도 전파하지 않고 정지하고 Br = Br로 설정 ? . 마찬가지로 모두 정직하다. 사용자는 Br = Br을 알고 있습니다. τ 시간 간격 Ir+1 내에서 그리고 T r+1 \(\leq\) \(\alpha\)r,s 나' + ts\(\leq\)T r + \(\lambda\) + ts. 사례 2.2.a. 사건 E.a가 발생하고 정직한 검증자가 존재하지 않습니다. i' \(\in\)HSV r,swho 또한 아무것도 전파하지 않고 중지해야 합니다. 이 경우 플레이어 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는 Coin-Fixed-To-0 단계입니다. 그리고 CERT r의 (r, s−1)-메시지 i는 비트 0이고 v = H(Br \(\ell\)). 사실 다 정직해요 (r, s−1)-검증자는 v에 서명하므로 공격자는 유효한 (r, s−1)-메시지를 생성할 수 없습니다. 다른 v′에 대해. 더욱이, 모든 정직한 (r, s) 검증자는 ts 시간을 기다렸으며 > 2/3 다수를 보지 못했습니다. 비트 1의 경우 |HSV r,s−1| 때문에 다시 발생합니다. + 4|MSV r,s−1| <2n. 따라서 모든 정직한 검증자는 i \(\in\)HSV r,s는 bi = 0, vi = H(Br로 설정됩니다. \(\ell\)) 다수결로 mr,s를 전파합니다. 나 = (ESIGi(0), ESIGi(H(Br \(\ell\))), \(\sigma\)r,s 나 ) 시간 \(\alpha\)r,s에 나 + ts. 이제 s+ 1 단계(Coin-Fixed-To-1 단계)의 정직한 검증자를 고려해보세요. 만약 공격자는 실제로 CERT r에서 메시지를 보냅니다. i그들 중 일부에게 중지하고 사례 2.1.a와 유사하게 모든 정직한 사용자는 Br = Br을 알고 있습니다. \(\ell\)시간 간격 내 Ir+1 및 T r+1 \(\leq\)T r + \(\lambda\) + ts+1. 그렇지 않으면 s+1 단계의 모든 정직한 검증자는 0과 s에 대한 모든 (r, s) 메시지를 수신했습니다. H(Br \(\ell\)) 대기 시간 ts+1 이후 HSV r,s에서, 이는 > 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은 Coin-Fixed-To-0 단계가 아니기 때문입니다. 이제 Step s+2(Coin-Genuinely-Flipped 단계)의 정직한 검증자를 고려해보세요. 적이 CERT r로 메시지를 보내는 경우 나는 그 중 일부에게 말을 걸고 멈추게 만듭니다. 다시 한번 모든 정직한 사용자는 Br = Br을 알고 있습니다. Ir+1 시간 간격 내에서 \(\ell\)이고 T r+1 \(\leq\)T r + \(\lambda\) + ts+2.그렇지 않으면 s+ 2단계의 모든 정직한 검증자는 다음에 대한 모든 (r, s+ 1)-메시지를 수신했습니다. 0과 H(Br \(\ell\)) 대기 시간 ts+2 이후 HSV r,s+1에서 발생하며 이는 > 2/3 다수로 이어집니다. 따라서 그들 모두는 0과 H(Br에 대한 메시지를 전파합니다. \(\ell\)) 따라서: 그들은 그렇습니다 이 경우에는 "동전 뒤집기"가 아닙니다. 다시 말하지만 전파 없이는 멈추지 않습니다. 단계 s+ 2는 Coin-Fixed-To-0 단계가 아니기 때문입니다. 마지막으로, s+3 단계(또 다른 Coin-Fixed-To-0 단계)의 정직한 검증자의 경우, 그 중 0과 H(Br에 대해 최소한 tH개의 유효한 메시지를 수신했을 것입니다. \(\ell\)) HSV s+2에서, 그들이 정말로 기다리는 시간이 있다면 ts+3. 따라서 적이 메시지를 보내든 안 보내든 CERT r에서 i 그들 중 누구에게나, HSV r,s+3의 모든 검증자는 Br = Br로 중지됩니다. \(\ell\), 없음 무엇이든 전파합니다. 적이 어떻게 행동하는지에 따라 그들 중 일부는 CERT r의 (r, s−1) 메시지로 구성된 자체 CERT r i, 그리고 다른 사람들은 (r, s+ 2) 메시지로 구성된 자체 CERT r입니다. 어쨌든 모든 정직한 사용자는 Br = Br 알아요 Ir+1 시간 간격 내에서 \(\ell\)이고 T r+1 \(\leq\)T r + \(\lambda\) + ts+3. 사례 2.2.b. 사건 E.b가 발생하고 정직한 검증자가 존재하지 않습니다. i′ \(\in\)HSV r,swho 또한 아무것도 전파하지 않고 중지해야 합니다. 이 사례의 분석은 사례 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) 검증자는 0에 대해 > 2/3 다수를 볼 수 없었습니다. 따라서 모든 검증자 i \(\in\)HSV r,s는 bi = 1로 설정하고 mr,s를 전파합니다. 나 = (ESIGi(1), ESIGi(vi), \(\sigma\)r,s 나 ) 시간 \(\alpha\)r,s에 나 + ts. 사례 2.2.a와 유사하게 최대 3단계가 더 추가됩니다(즉, 프로토콜 또 다른 Coin-Fixed-To-1 단계인 s+3 단계에 도달합니다. 모든 정직한 사용자는 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을 알 수 있습니다. Ir+1, 와 사례 2.1.a 및 2.1.b에서 T r+1 \(\leq\)T r + \(\lambda\) + ts, 및 사례 2.2.a 및 2.2.b에서는 T r+1 \(\leq\)T r + \(\lambda\) + ts+3입니다. 상한 s에 남아 있으므로 케이스 2의 경우 T r+1이 됩니다. Coin-Genuinely-Flipped 단계가 실제로 프로토콜에서 실행되는 경우가 많습니다. 즉, 일부 정직한 검증자는 실제로 동전을 던졌습니다. 특히, Coin-Genuinely-Flipped step 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 j ). 지금은 s′ < s라고 가정하겠습니다. 그렇지 않으면 이전에 따르면 정직한 검증자는 실제로 단계 s'에서 동전을 던지지 않기 때문입니다. 토론. SV r,s′−1의 정의에 따르면 \(\ell\)′의 크리덴셜의 hash 값도 다음 중 가장 작습니다. 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′ 나 + t'. 플레이어 i가 동전을 던져야 하는 경우(즉, 그는 2/3 이상의 과반수를 보지 못했습니다) 동일한 비트 b \(\in\){0, 1}), 그런 다음 그는 bi = lsb(H(\(\sigma\)r,s′−1)을 설정합니다. \(\ell\)′ )). 또 다른 정직한 사람이 있다면 검증자 i′ \(\in\)HSV r,s′ 비트 b \(\in\){0, 1}에 대해 > 2/3 다수를 확인한 다음 Property에 의해 (d) Lemma 5.5의 경우, HSV r,s'의 정직한 검증자는 잠시 동안 > 2/3 다수를 차지했을 것입니다. b'̸=b. lsb(H(\(\sigma\)r,s′−1 \(\ell\)′ )) = b 확률 1/2, HSV r,s'의 모든 정직한 검증자는 도달 확률이 1/2인 b에 대한 합의입니다. 물론, 그러한 검증자 i'가 존재하지 않는다면, 모든 HSV r,s′의 정직한 검증자는 lsb(H(\(\sigma\)r,s′−1) 비트에 동의합니다. \(\ell\)′ )) 확률은 1입니다. \(\ell\)' \(\in\)HSV r,s'−1에 대한 확률을 결합하면 HSV r,s'의 정직한 검증자는 최소 ph 확률로 비트 b \(\in\){0, 1}에 대해 합의에 도달 2 = h2(1+h−h2) 2 . 더욱이, 이전과 같이 다수결 투표를 통해 HSV r,s'의 모든 정직한 검증자는 vi 세트를 갖습니다. H(Br \(\ell\)). 따라서 단계 s'에서 b에 대한 합의가 이루어지면 T r+1은 다음과 같습니다. \(\leq\)T r + \(\lambda\) + ts′+1 또는 \(\leq\)T r + \(\lambda\) + ts′+2 중 하나, 사례 2.1.a 및 2.1.b의 분석에 따라 b = 0인지 b = 1인지에 따라 달라집니다. 에서 특히, 더 이상 코인 정품 뒤집기 단계가 실행되지 않습니다. 이러한 단계는 여전히 자신이 검증자인지 확인하고 기다리지만 확인하지 못한 채 모두 중지됩니다. 무엇이든 전파합니다. 따라서 Step s 이전에 Coin-GenuinelyFlipped 단계가 실행되는 횟수는 랜덤변수 Lr에 따라 분포됩니다. 스텝을 놔두는 것' 프로토콜 구성에 따라 Lr에 따라 코인이 진짜로 뒤집힌 마지막 단계가 됩니다. 우리는 s' = 4 + 3Lr. 적이 T r+1을 지연시키려는 경우 언제 단계 s가 발생해야 합니까? 가능? 우리는 대적이 Lr의 실현을 미리 알고 있다고 가정할 수도 있습니다. 만약에 s> s′ 그렇다면 그것은 쓸모가 없습니다. 왜냐하면 정직한 검증자들은 이미 합의에 도달했기 때문입니다. 단계 S′. 확실히 이 경우 s는 b = 0인지 여부에 따라 s′ +1 또는 s′ +2가 될 것입니다. 또는 b = 1입니다. 그러나 이것은 실제로 Cases 2.1.a 및 2.1.b이고 결과 T r+1은 정확히 다음과 같습니다. 그 경우와 마찬가지다. 더 정확하게는, T r+1 \(\leq\)T r + \(\lambda\) + ts\(\leq\)T r + \(\lambda\) + ts′+2. s< s′ −3 즉, s가 마지막 두 번째 동전 진짜 뒤집기 단계 이전에 있는 경우 다음과 같이 됩니다. 사례 2.2.a 및 2.2.b 분석, T r+1 \(\leq\)T r + \(\lambda\) + ts+3 < T r + \(\lambda\) + ts′. 즉, 적대자는 실제로 Br에 대한 합의가 더 빠르게 이루어지도록 만들고 있습니다. s= s′ −2 또는 s′ −1인 경우 - 즉, Coin-Fixed-To-0 단계 또는 Coin-Fixed-To-1 단계입니다. 단계 s' 직전 - 네 가지 하위 사례를 분석하여 정직한 검증자가 단계 s'는 더 이상 동전을 뒤집을 수 없습니다. 왜냐하면 동전이 전파되지 않고 멈추었기 때문입니다. 또는 동일한 비트에 대해 > 2/3 다수를 보였습니다. b. 그러므로 우리는 T r+1 \(\leq\)T r + \(\lambda\) + ts+3 \(\leq\)T r + \(\lambda\) + ts′+2.요약하면, s가 무엇이든 관계없이 우리는 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\) + Λ, 우리가 보여주고 싶었던 것처럼. 최악의 경우는 s= s′ −1이고 사례 2.2.b가 발생하는 경우입니다. 바이너리 BA 프로토콜의 사례 1과 2를 결합하면 Lemma 5.3이 유지됩니다. ■ 5.9 씨앗Qr의 안전성과 정직한 리더의 확률 이제 Lemma 5.4를 증명해야 합니다. 라운드 r의 검증자는 PKr-k에서 가져오고 수량 Qr−1에 따라 선택됩니다. 룩백 매개변수 k를 도입한 이유 r -k 라운드에서 공격자가 새로운 악의적인 사용자를 추가할 수 있는지 확인하는 것입니다. PKr−k에 대해서는 무시할 수 있는 확률을 제외하고 Qr−1의 양을 예측할 수 없습니다. 참고 hash 함수는 무작위 oracle이며 Qr−1은 라운드 r에 대한 검증자를 선택할 때 입력 중 하나입니다. 따라서 아무리 악의적인 사용자가 PKr-k에 추가되더라도 공격자의 입장에서는 각각 그들 중 하나는 필요한 확률 p(또는 1단계의 경우 p1). 보다 정확하게는 다음과 같은 정리가 있습니다. 보조정리 5.6. k = O(log1/2 F)로 각 라운드 r에 대해 압도적인 확률로 적 라운드 r −k에서 Qr−1을 무작위 oracle에 쿼리하지 않았습니다. 증거. 인덕션으로 진행합니다. 각 라운드 \(\gamma\) < r에 대해 공격자가 쿼리하지 않았다고 가정합니다. Q\(\gamma\)−1에서 무작위 oracle 라운드 \(\gamma\) −k로 돌아갑니다.21 다음과 같은 정신적 게임을 생각해 보세요. 적군은 r −k 라운드에서 Qr−1을 예측하려고 합니다. 각 라운드의 1단계에서 \(\gamma\) = r −k, . . . , r −1, 무작위로 쿼리되지 않은 특정 Q\(\gamma\)−1이 주어지면 oracle, hash 값 H(SIGi(\(\gamma\), 1, Q\(\gamma\)−1))에 따라 플레이어 i \(\in\)PK\(\gamma\)−k를 정렬하여 점점 더 PK\(\gamma\)−k에 대한 무작위 순열을 얻습니다. 정의에 따르면 리더 \(\ell\) \(\gamma\)는 순열의 첫 번째 사용자이고 확률 h가 정직합니다. 또한, PK\(\gamma\)−k가 큰 경우 임의의 정수 x \(\geq\)1에 대해 순열의 첫 번째 x 사용자가 모두 악의적이지만 (x + 1)st가 정직한 것은 (1 −h)xh입니다. \(\ell\) \(\gamma\)가 정직하다면 Q\(\gamma\) = H(SIG\(\ell\) \(\gamma\)(Q\(\gamma\)−1), \(\gamma\))입니다. 상대방은 서명을 위조할 수 없기 때문에 \(\ell\) \(\gamma\)의 Q\(\gamma\)는 적의 관점에서 무작위로 균일하게 분포되며, 기하급수적으로 작은 확률로 22는 r -k 라운드에서 H에 쿼리되지 않았습니다. 이후 각각 Q\(\gamma\)+1, Q\(\gamma\)+2, . . . , Qr−1은 각각 Q\(\gamma\), Q\(\gamma\)+1, ...을 사용한 H의 출력입니다. . . , Qr−2를 입력 중 하나로, 그들은 모두 적에게 무작위로 보이며 적수는 Qr-1을 H에 쿼리할 수 없었을 것입니다. 라운드 r - k. 따라서, 상대방이 라운드에서 좋은 확률로 Qr−1을 예측할 수 있는 유일한 경우입니다. r−k는 모든 리더 \(\ell\)r−k, . . . , \(\ell\)r−1은 악성입니다. 다시 라운드 \(\gamma\) \(\in\){r−k 를 고려해보세요. . . , r−1} 그리고 해당 hash 값에 의해 유도된 PK\(\gamma\)−k에 대한 무작위 순열. 어떤 사람들에게는 x \(\geq\)2, 순열의 첫 번째 x −1 사용자는 모두 악의적이고 x번째 사용자는 정직합니다. 적대자는 Q\(\gamma\)에 대해 x개의 가능한 선택을 갖습니다. H(SIGi(Q\(\gamma\)−1, \(\gamma\))) 형식 중 하나입니다. 여기서 i는 다음 중 하나입니다. 21 k는 작은 정수이므로 일반성을 잃지 않고 프로토콜의 처음 k 라운드가 실행된다고 가정할 수 있습니다. 안전한 환경에서 귀납적 가설은 해당 라운드 동안 유지됩니다. 22즉, H의 출력 길이는 지수적입니다. 이 확률은 F보다 훨씬 작습니다.플레이어 i를 실제로 라운드 \(\gamma\)의 리더로 만들어 최초의 x−1 악의적 사용자; 또는 H(Q\(\gamma\)−1, \(\gamma\)) B\(\gamma\) = B\(\gamma\) 강제 ? . 그렇지 않으면 라운드 \(\gamma\)의 리더가 순열의 첫 번째 정직한 사용자가 됩니다. 그리고 Qr−1은 적에게 예측할 수 없게 됩니다. 위 Q\(\gamma\)의 x 옵션 중 적이 추구해야 하는 것은 무엇입니까? 적을 돕기 위해 이 질문에 대답하세요. 멘탈 게임에서 우리는 실제로 그를 실제보다 더 강력하게 만듭니다. 는 다음과 같습니다. 우선, 실제로 공격자는 정직한 사용자의 hash을 계산할 수 없습니다. 따라서 서명은 각 Q\(\gamma\)에 대해 처음에 악의적인 사용자의 수 x(Q\(\gamma\))를 결정할 수 없습니다. Q\(\gamma\)에 의해 유도된 라운드 \(\gamma\) + 1의 무작위 순열. 정신 게임에서 우리는 그에게 숫자 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 라운드의 마르코프 체인을 따릅니다. 상태 공간이 {0} \(\cup\){x : x \(\geq\)2}인 상태에서 r −1을 반올림합니다. 상태 0은 현재 라운드 \(\gamma\)에서 무작위 순열의 첫 번째 사용자는 정직하므로 공격자는 실패합니다. Qr-1을 예측하는 게임; 그리고 각 상태 x \(\geq\)2는 첫 번째 x −1 사용자가 순열은 악의적이고 x번째는 정직하므로 공격자는 Q\(\gamma\)에 대해 x개의 옵션을 갖습니다. 는 전이 확률 P(x, y)는 다음과 같습니다. • y \(\geq\)2인 경우 P(0, 0) = 1이고 P(0, y) = 0입니다. 즉, 대적은 첫 번째 게임에서 실패합니다. 순열의 사용자는 정직해집니다. • P(x, 0) = hx(x \(\geq\)2인 경우). 즉, 확률 hx를 사용하면 모든 x개의 무작위 순열은 다음과 같습니다. 첫 번째 사용자는 정직하므로 대적자는 다음 라운드에서 게임에 실패합니다. • 임의의 x \(\geq\)2 및 y \(\geq\)2에 대해 P(x, y)는 x 임의 순열 중에서 다음과 같은 확률입니다. 초기에 악의적인 사용자의 가장 긴 시퀀스인 Q\(\gamma\)의 x 옵션에 의해 유도됩니다. 그 중 일부는 y −1이므로, 적대자는 다음 라운드에서 Q\(\gamma\)+1에 대해 y개의 옵션을 갖습니다. 즉, 피(x, y) = y−1 X 나는=0 (1 -h)ih !x - y−2 X 나는=0 (1 -h)ih !x = (1 −(1 −h)y)x −(1 −(1 −h)y−1)x. 상태 0은 전이 행렬 P의 고유한 흡수 상태이고 다른 모든 상태는 x는 0이 될 양의 확률을 갖습니다. 우리는 숫자 k의 상한을 정하는 데 관심이 있습니다. Markov Chain이 압도적인 확률로 0으로 수렴하는 데 필요한 라운드: 즉, 아니요 체인이 어떤 상태에서 시작되는지가 중요하며, 적이 게임에서 패배할 확률이 압도적입니다. r −k 라운드에서 Qr−1을 예측하는 데 실패합니다. 두 라운드 후에 전이 행렬 P(2) \(\triangleq\)P \(\cdot\) P를 고려하십시오. P(2)(0, 0) = 1임을 쉽게 알 수 있습니다. 그리고 임의의 x \(\geq\)2에 대해 P(2)(0, x) = 0입니다. 임의의 x \(\geq\)2 및 y \(\geq\)2에 대해 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).̅h \(\triangleq\)1 −h라고 하면 다음과 같습니다. P(x, y) = (1 −̅hy)x −(1 −̅hy−1)x 그리고 P(2)(x,y) = X z\(\geq\)2 [(1 −̅hz)x −(1 −̅hz−1)x][(1 −̅hy)z −(1 −̅hy−1)z]. 아래에서는 P(2)(x,y)의 극한을 계산합니다. P(x,y) h가 1이 되면, 즉 ̅h는 0이 됩니다. P(x, y)에서 ̅h의 차수는 ̅hy−1이고 계수 x가 있습니다. 따라서, 임 h \(\to\) 1 P(2)(x,y) 피(x, y) = 임 ̅h \(\to\) 0 P(2)(x,y) 피(x, y) = 임 ̅h \(\to\) 0 P(2)(x,y) x̅hy−1 + O(̅hy) = 임 ̅h \(\to\) 0 피 z\(\geq\)2[x̅hz−1 + O(̅hz)][z̅hy−1 + O(̅hy)] x̅hy−1 + O(̅hy) = 임 ̅h \(\to\) 0 2x̅ + O(́hy+1) x̅hy−1 + O(̅hy) = 임 ̅h \(\to\) 0 2xy x̅hy−1 = lim ̅h \(\to\) 0 2́h = 0. h가 1,23에 충분히 가까울 때 우리는 P(2)(x,y) 피(x, y) \(\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) + 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 . P(x, y) \(\leq\)1이므로 1−log2 F 라운드 후에 임의의 상태 y \(\geq\)2로의 전환 확률은 무시할 수 있습니다. 임의의 상태 x \(\geq\)2로 시작합니다. 그러한 상태가 많이 있지만, 다음을 쉽게 알 수 있습니다. 임 y→+무한대 피(x, y) P(x, 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 - 시간. 따라서 전이 행렬 P의 각 행 x는 비율에 따라 기하학적 수열로 감소합니다. 1 1−h > 2 y가 충분히 크면 P(k)에도 동일하게 적용됩니다. 따라서 k가 충분히 크지만 여전히 log1/2 F, P 순서로 y\(\geq\)2 P (k)(x, y) < F(x \(\geq\)2인 경우). 즉, 압도적인 확률로 적군은 게임에서 패하고 r −k 라운드에서 Qr−1을 예측하지 못합니다. h \(\in\)(2/3, 1]의 경우, 더 많은 복잡한 분석을 통해 1/2보다 약간 큰 상수 C가 존재한다는 것을 알 수 있습니다. k = O(logC \(\cdot\) F)를 취합니다. 따라서 Lemma 5.6이 성립합니다. ■ 보조정리 5.4. (다시 설명) r 이전의 각 라운드에 대해 속성 1–3이 주어지면 Lr에 대한 ph = h2(1 + h −h2), 그리고 리더 \(\ell\)r은 적어도 ph 확률로 정직합니다. 23예를 들어, 특정 매개변수 선택에 의해 제안된 대로 h = 80%입니다.
증거. Lemma 5.6에 따르면, 공격자는 다음을 제외하고 r −k 라운드에서 Qr−1을 다시 예측할 수 없습니다. 무시할 수 있는 확률. 이는 정직한 리더가 나올 확률이 h라는 것을 의미하지 않습니다. 각 라운드. 실제로 Qr−1이 주어지면 초기에 얼마나 많은 악의적인 사용자가 있는지에 따라 달라집니다. PKr-k의 무작위 순열에서, 공격자는 Qr에 대해 둘 이상의 옵션을 가질 수 있습니다. 따라서 라운드 r + 1에서 악의적인 리더의 확률을 높일 수 있습니다. 다시 우리는 그에게 분석을 단순화하기 위해 Lemma 5.6에서와 같이 몇 가지 비현실적인 이점이 있습니다. 그러나 라운드 r -k에서 적대자가 H에게 쿼리하지 않은 각 Qr-1에 대해 다음과 같습니다. 임의의 x \(\geq\)1, 확률 (1 −h)x−1h로 첫 번째 정직한 사용자가 결과 x 위치에 나타납니다. PKr−k의 무작위 순열. x = 1일 때 r + 1 라운드에서 정직한 리더가 나올 확률은 다음과 같습니다. 과연 ㅎ; x = 2일 때, 적대자는 Qr에 대해 두 가지 옵션을 가지며 결과 확률은 다음과 같습니다. h2. 이 두 가지 경우를 고려해야만 라운드에서 정직한 리더가 나올 가능성이 있습니다. r + 1은 원하는 대로 적어도 h \(\cdot\) h + (1 −h)h \(\cdot\) h2 = h2(1 + h −h2)입니다. 위의 확률은 라운드 r −k에서 프로토콜의 무작위성만 고려한다는 점에 유의하세요. r을 반올림합니다. 0라운드부터 r라운드까지 모든 무작위성을 고려하면 Qr−1은 다음과 같습니다. 적에게 예측하기가 더욱 어렵고 라운드 r + 1에서 정직한 리더가 나올 확률은 다음과 같습니다. 최소 h2(1 + h −h2). r + 1을 r로 대체하고 모든 것을 한 라운드 뒤로 이동시킵니다. 리더 \(\ell\)r 원하는 대로 적어도 h2(1 + h −h2)의 확률로 정직합니다. 마찬가지로, 각 코인 진짜 뒤집기 단계에서 해당 단계의 "리더", 즉 검증자 SV r에서 크리덴셜의 hash 값이 가장 작은 확률은 적어도 h2(1 + h-h2). 따라서 Lr 및 Lemma 5.4에 대한 ph = h2(1 + h −h2)가 유지됩니다. ■
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 ' 버전을 구성합니다. 정직한 다수의 사용자 가정: 각 PKr의 사용자 중 2/3 이상이 정직합니다. 섹션 8에서는 위의 가정을 원하는 정직한 다수로 대체하는 방법을 보여줍니다. 돈 가정. 6.1 Algorand ′에 대한 추가 표기법 및 매개변수 2 표기법 • \(\mu\) \(\in\)Z+: 압도적인 확률로, 단계 수에 대한 실용적인 상한 실제로는 한 라운드에 완료됩니다. (앞으로 살펴보겠지만 매개변수 μ는 임시 변수의 수를 제어합니다. 각 라운드마다 사용자가 미리 준비하는 키입니다.) • Lr: 1을 확인하는 데 필요한 베르누이 시행 횟수를 나타내는 무작위 변수입니다. 시행은 확률이 ph인 경우 1입니다. 2 . Lr은 생성에 필요한 시간의 상한을 지정하는 데 사용됩니다. 블록 브롬 • tH: 라운드 r의 s > 1 단계에서 정직한 검증자 수에 대한 하한입니다. 압도적인 확률(n과 p가 주어지면) SV r,s에는 > tH개의 정직한 검증자가 있습니다. 매개변수 • 다양한 매개변수 간의 관계. — 라운드 r의 각 단계 s > 1에 대해 압도적인 확률로 n이 선택됩니다.
|HSV r,s| > 일 그리고 |HSV r,s| + 2|MSV r,s| < 2tH. 위의 두 부등식은 |HSV r,s|를 의미합니다. > 2|MSV r,s|: 즉, 선택된 검증자 중 2/3가 정직한 다수입니다. h 값이 1에 가까울수록 n은 더 작아야 합니다. 특히, 우리는 (변종 of) 원하는 조건이 압도적인 확률로 유지되도록 Chernoffbounds. • 중요한 매개변수의 예시 선택. — F = 10−18. — n \(\approx\)4000, tH \(\approx\)0.69n, k = 70. 6.2 Algorand '에서 임시 키 구현 2 검증자 i \(\in\)SV r,s가 자신의 메시지 mr,s에 디지털 방식으로 서명한다는 점을 기억하세요. 나 라운드 r의 단계 s에 대해 임시 공개 키 pkr,s i , 임시 비밀 키 skr을 사용하여 나 그는 즉시 파괴한다 사용 후. 라운드에서 취할 수 있는 가능한 단계 수가 주어진 단계로 제한되는 경우 정수 \(\mu\), 우리는 임시 키를 실제로 처리하는 방법을 이미 살펴보았습니다. 예를 들어, 우리는 Algorand '에서 설명했습니다. 1(여기서 \(\mu\) = m + 3), 가능한 모든 임시 키를 처리하려면 라운드 r'에서 라운드 r' + 106으로, i는 PMK 공개 마스터인 쌍(PMK, SMK)을 생성합니다. 신원 기반 서명 체계의 키 및 SMK에 해당하는 비밀 마스터 키. 사용자 i PMK를 공개하고 SMK를 사용하여 가능한 각 임시 공개 키의 비밀 키를 생성합니다. (그리고 그렇게 한 후 SMK를 파괴합니다). 관련에 대한 i의 임시 공개 키 세트 라운드는 S = {i} \(\times\) {r′, . . . , r' + 106} \(\times\) {1, . . . , \(\mu\)}. (논의된 바와 같이, 라운드 r' + 106이 접근함에 따라, 나는 그의 쌍(PMK, SMK)을 "새로 고침"합니다.) 실제로 \(\mu\)가 충분히 크면 Algorand '의 라운드가 됩니다. 2는 \(\mu\) 단계 이상 걸리지 않습니다. 에서 그러나 원칙적으로는 어떤 라운드에서는 단계 수가 줄어들 가능성이 희박합니다. 실제로 복용하면 μ를 초과합니다. 이런 일이 발생하면 저는 그의 메시지에 서명할 수 없습니다. 나 에 대한 모든 단계 s > \(\mu\), 왜냐하면 그는 라운드 r에 대해 \(\mu\) 비밀 키만 미리 준비했기 때문입니다. 게다가 그는 앞서 논의한 것처럼 임시 키의 새로운 보관을 준비하고 공개할 수 없었습니다. 사실 할 일은 따라서 그는 새 블록에 새로운 공개 마스터 키 PMK'를 삽입해야 합니다. 하지만 r을 반올림해야 합니다. 점점 더 많은 단계를 수행하면 새 블록이 생성되지 않습니다. 그러나 해결책이 존재합니다. 예를 들어, i는 라운드 r, pkr,μ의 마지막 임시 키를 사용할 수 있습니다. 나 , 다음과 같이. 그는 라운드 r에 대한 또 다른 키 쌍 숨김을 생성합니다. 예를 들어 (1) 다른 키 쌍을 생성합니다. 마스터 키 쌍(PMK, SMK) (2) 이 쌍을 사용하여 또 다른 106개의 임시 키를 생성합니다. sk r,μ+1 나 , . . . , SK r,μ+106 나 , 라운드 r의 단계 \(\mu\)+1, ..., \(\mu\)+106에 해당합니다. (3) skr,μ 사용 나 디지털 방식으로 pkr,μ를 기준으로 PMK(및 i \(\in\)SV r,μ인 경우 모든 (r,μ)-메시지)에 서명합니다. 나 ; (4) SMK 및 skr 삭제,μ 나 . 나는 s \(\in\){1, . . . , 106}, 그런 다음 나는 그의 (r, \(\mu\) + s)에 디지털 서명을 합니다. 메시지 Mr,μ+s 나 그의 새 키 pk와 관련하여 r,μ+s 나 = (i, r, \(\mu\) + s). 물론 이 서명을 확인하려면 i의 경우, 다른 사람들은 이 공개 키가 i의 새로운 공개 마스터 키 PMK와 일치하는지 확인해야 합니다. 따라서 이 서명에 추가로 i는 pkr,μ를 기준으로 PMK의 디지털 서명을 전송합니다. 나 . 물론, 이 접근법은 필요한 만큼 반복될 수 있습니다. 라운드 r이 계속되어야 합니다. 점점 더 많은 단계를 위해! 마지막 임시 비밀 키는 새로운 마스터 퍼블릭을 인증하는 데 사용됩니다. 키, 즉 라운드 r에 대한 또 다른 임시 키가 숨겨져 있습니다. 등.6.3 실제 프로토콜 Algorand ' 2 라운드 r의 각 단계 s에서 검증자 i \(\in\)SV r,s가 자신의 장기 공개 비밀을 사용한다는 점을 다시 상기하세요. 그의 자격 증명 \(\sigma\)r,s를 생성하기 위한 키 쌍 나 \(\triangleq\)SIGi(r, s, Qr−1) 및 SIGi Qr−1 s = 1인 경우. 검증자 i는 자신의 임시 키 쌍(pkr,s)을 사용합니다. 나, skr, s i ), 다른 메시지 m에 서명하려면 필수. 단순화를 위해 sigpkr,s 대신 esigi(m)을 씁니다. i(m), i의 적절한 임시를 나타냅니다. 이 단계에서 m의 서명을 입력하고 SIGpkr,s 대신 ESIGi(m)을 작성합니다. i(m) \(\triangleq\)(i, m, esigi(m)). 1단계: 블록 제안 모든 사용자 i \(\in\)PKr−k를 위한 지침: 사용자 i는 라운드 r의 1단계를 시작하자마자 자신의 라운드 r을 시작합니다. CERT r−1, 이를 통해 i는 H(Br−1) 및 Qr−1을 명확하게 계산할 수 있습니다. • 사용자 i는 Qr−1을 사용하여 i \(\in\)SV r,1인지 여부를 확인합니다. i /\(\in\)SV r,1이면 그는 1단계에서 아무것도 하지 않습니다. • i \(\in\)SV r,1, 즉 i가 잠재적 리더라면 그는 다음을 수행합니다. (a) 내가 B0을 본 적이 있다면, . . . , Br−1 자신(모든 Bj = Bj 는 hash 값에서 쉽게 파생될 수 있습니다. CERT j에서 "본" 것으로 간주됨) 그런 다음 그는 라운드 R 지불금을 수집합니다. 지금까지 그에게 전파되어 최대 지불 세트 PAY r을 계산합니다. 나는 그들에게서. (b) B0을 모두 보지 못했다면, . . . , Br-1이지만 PAY r을 설정합니다. 나는 = \(\emptyset\). (c) 다음으로, 나는 그의 "후보 블록" Br을 계산합니다. 나는 = (r, 지불 r i , SIGi(Qr−1), H(Br−1)). (c) 마지막으로, i는 메시지 mr,1을 계산합니다. 나 = (Br i , Esigi(H(Br i )), \(\sigma\)r,1 i), 그의 일시적인 것을 파괴한다 비밀키 skr,1 i , 그런 다음 mr,1이라는 두 개의 메시지를 전파합니다. 나 그리고 (SIGi(Qr−1), \(\sigma\)r,1 나), 별도로 그러나 동시에.a ai가 리더일 때 SIGi(Qr−1)은 다른 사람들이 Qr = H(SIGi(Qr−1), r)을 계산하도록 허용합니다.
선택적 전파 1단계와 전체 라운드의 전역 실행을 단축하려면 (r, 1)- 메시지는 선택적으로 전파됩니다. 즉, 시스템의 모든 사용자 j에 대해 • 그가 수신하고 성공적으로 확인한 첫 번째 (r, 1) 메시지에 대해 a가 포함되어 있는지 여부 블록이거나 Qr−1의 자격 증명 및 서명인 경우 플레이어 j는 이를 평소대로 전파합니다. • 플레이어 j가 수신하고 성공적으로 확인한 다른 모든 (r, 1) 메시지에 대해 그는 전파합니다. 포함된 자격 증명의 hash 값이 hash 값 중에서 가장 작은 경우에만 해당됩니다. 그가 수신하고 성공적으로 확인한 모든 (r, 1) 메시지에 포함된 자격 증명 중 멀리. • 그러나 j가 mr,1 형식의 서로 다른 두 개의 메시지를 받으면 나 같은 플레이어 i,b 그에게서 i 자격 증명의 hash 값에 관계없이 두 번째 자격 증명을 삭제합니다. 선택적 전파에서는 각 잠재적 리더가 자신의 리더를 전파하는 것이 유용합니다. 자격 증명 \(\sigma\)r,1 나 Mr,1과는 별도로 i :c 작은 메시지는 블록보다 빠르게 전달됩니다. Mr,1의 적시 전파 i 는 포함된 자격 증명에 작은 hash 값이 있는 반면 hash 값이 큰 항목을 빠르게 사라지게 만듭니다. a즉, 모든 서명이 정확하며, mr,1 형식인 경우 i, 블록과 해당 hash이 모두 유효합니다. - j는 포함된 페이세트가 i에 대해 최대인지 여부를 확인하지 않습니다. b그 말은 내가 악의적이라는 뜻이다. c이를 제안한 Georgios Vlachos에게 감사드립니다.2단계: 단계적 합의 프로토콜 GC의 첫 번째 단계 모든 사용자 i \(\in\)PKr−k를 위한 지침: 사용자 i는 라운드 r의 2단계를 시작하자마자 시작합니다. CERT r-1. • 사용자 i는 최대 시간 t2 \(\triangleq\) \(\lambda\) + Λ 동안 기다립니다. 기다리는 동안 나는 다음과 같이 행동합니다. 1. 2\(\lambda\) 시간을 기다린 후 그는 H(\(\sigma\)r,1)과 같은 사용자 \(\ell\)를 찾습니다. \(\ell\)) \(\leq\)H(\(\sigma\)r,1 j) 모두를 위해 자격 증명 \(\sigma\)r,1 j 이는 그가 수신한 성공적으로 검증된 (r, 1) 메시지의 일부입니다. 지금까지.a 2. 만일 그 있다 받은 에 블록 Br-1, 어느 성냥 는 hash 가치 H(Br−1) CERT r−1,b에 포함되어 있고 그가 \(\ell\)a로부터 유효한 메시지를 받았다면 mr,1 \(\ell\) = (Br \(\ell\), 대략\(\ell\)(H(Br \(\ell\))), \(\sigma\)r,1 \(\ell\)),c 그러면 나는 기다리기를 멈추고 v′를 설정한다. 나는 \(\triangleq\)(H(Br \(\ell\)), \(\ell\)). 3. 그렇지 않고, 시간 t2가 다 되면 v'를 설정합니다. 나는 \(\triangleq\) \(\bot\). 4. v′의 값이 i가 설정되면 i는 CERT r−1에서 Qr−1을 계산하고 다음을 확인합니다. i \(\in\)SV r,2인지 아닌지. 5. i \(\in\)SV r,2이면 i는 메시지 mr,2를 계산합니다. 나 \(\triangleq\)(ESIGi(v′ 나), \(\sigma\)r,2 i ),d는 그의 일시적인 것을 파괴한다 비밀키 skr,2 i , 그런 다음 mr,2를 전파합니다. 나. 그렇지 않으면 전파하지 않고 중지됩니다. 무엇이든. a본질적으로 사용자 i는 라운드 r의 리더가 사용자 \(\ell\)임을 개인적으로 결정합니다. b물론 CERT r−1이 Br−1 = Br−1임을 나타내는 경우 ? , 그렇다면 그가 Br−1을 받은 순간 나는 이미 Br−1을 “받았습니다”. CERT r-1. c다시 말하지만, 플레이어 \(\ell\)의 서명과 hashes가 모두 성공적으로 검증되었으며 PAY r \(\ell\)in Br \(\ell\)는 다음에 대한 유효한 지불 세트입니다. 라운드 r — PAY r인지 확인하지는 않지만 \(\ell\)는 \(\ell\)또는 \(\ell\)에 대해 최대값입니다. 만약 Br \(\ell\)에 빈 페이세트가 포함되어 있는 경우 실제로 Br인지 확인하기 전에 Br−1을 볼 필요가 없습니다. \(\ell\)는 유효한지 아닌지입니다. d메시지 Mr,2 나 플레이어 i가 v'의 첫 번째 구성 요소를 고려한다는 신호 나는 다음 블록의 hash이 됩니다. 또는 다음 블록이 비어 있는 것으로 간주합니다.
3단계: GC의 두 번째 단계 모든 사용자 i \(\in\)PKr−k를 위한 지침: 사용자 i는 라운드 r의 3단계를 시작하자마자 시작합니다. CERT r-1. • 사용자 i는 최대 시간 t3 \(\triangleq\)t2 + 2\(\lambda\) = 3\(\lambda\) + Λ 동안 기다립니다. 기다리는 동안 나는 다음과 같은 역할을 한다. 다음과 같습니다. 1. 적어도 tH개의 유효한 메시지를 수신한 값 v가 존재하는 경우 mr,2 j 의 형식 (ESIGj(v), \(\sigma\)r,2 j) 아무런 모순 없이 a 그런 다음 그는 기다리기를 멈추고 설정합니다. v' = v. 2. 그렇지 않고, 시간 t3이 다 되면 v' = \(\bot\)로 설정합니다. 3. v'의 값이 설정되면 i는 CERT r−1에서 Qr−1을 계산하고 다음을 확인합니다. i \(\in\)SV r,3인지 아닌지. 4. i \(\in\)SV r,3이면 i는 mr,3 메시지를 계산합니다. 나 \(\triangleq\)(ESIGi(v′), \(\sigma\)r,3 i), 그의 것을 파괴한다 임시 비밀 키 skr,3 i, 그런 다음 mr,3을 전파합니다. 나. 그렇지 않으면 나는 없이 멈춘다 무엇이든 전파합니다. a즉, 그는 각각 ESIGj(v)와 다른 ESIGj(ˆv)를 포함하는 두 개의 유효한 메시지를 수신하지 못했습니다. j 선수로부터. 나중에 정의되는 종료 조건을 제외하고 여기서부터, 정직한 플레이어가 특정 형식의 메시지를 원할 경우 서로 모순되는 메시지는 계산되지 않거나 유효한 것으로 간주되지 않습니다.
4단계: GC의 출력과 BBA의 첫 번째 단계⋆ 모든 사용자 i \(\in\)PKr−k를 위한 지침: 사용자 i는 다음과 같이 라운드 r의 4단계를 시작합니다. 스스로 3단계를 마친다. • 사용자 i는 최대 2\(\lambda\).a 동안 대기합니다. 대기하는 동안 i는 다음과 같이 행동합니다. 1. 그는 GC의 출력인 vi와 gi를 다음과 같이 계산합니다. (a) v′ ̸= \(\bot\) 적어도 tH개의 유효한 메시지를 수신한 값이 존재하는 경우 씨,3 j = (ESIGj(v′), \(\sigma\)r,3 j ), 그 다음 그는 기다리기를 멈추고 vi \(\triangleq\)v′ 및 gi \(\triangleq\)2를 설정합니다. (b) 만약 그가 적어도 tH개의 유효한 메시지를 받았다면 mr,3 j = (ESIGj(\(\bot\)), \(\sigma\)r,3 j ) 그런 다음 그는 멈춥니다. 기다리고 vi \(\triangleq\) \(\bot\) 및 gi \(\triangleq\)0.b를 설정합니다. (c) 그렇지 않고, 시간 2\(\lambda\)가 다 되었을 때, v′ ̸= \(\bot\)라는 값이 존재한다면 그는 다음과 같습니다. 최소 ⌈tH를 받았습니다 2 ⌉유효한 메시지 mr,j 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 값이 설정되면 i는 BBA⋆의 입력인 bi를 다음과 같이 계산합니다. gi = 2이면 bi \(\triangleq\)0이고, 그렇지 않으면 bi \(\triangleq\)1입니다. 3. i는 CERT r−1에서 Qr−1을 계산하고 i \(\in\)SV r,4인지 여부를 확인합니다. 4. i \(\in\)SV r,4이면 그는 메시지 mr,4를 계산합니다. 나 \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,4 i), 그의 것을 파괴한다 임시 비밀 키 skr,4 i , 그리고 mr,4를 전파합니다. 나. 그렇지 않으면 전파하지 않고 중지됩니다. 무엇이든. a따라서 i가 라운드 r의 1단계를 시작한 이후 최대 총 시간은 t4 \(\triangleq\)t3 + 2\(\lambda\) = 5\(\lambda\) + Λ가 될 수 있습니다. b단계 (b)가 프로토콜에 있는지 여부는 정확성에 영향을 미치지 않습니다. 그러나 단계 (b)의 존재 충분히 많은 3단계 검증자가 "\(\bot\)에 서명"한 경우 4단계가 2\(\lambda\) 미만의 시간 내에 끝날 수 있습니다. c이 경우 v′가 존재한다면 고유해야 함을 증명할 수 있습니다.단계 s, 5 \(\leq\)s \(\leq\)m + 2, s −2 ‚0 mod 3: BBA⋆의 코인 고정-0 단계 모든 사용자 i \(\in\)PKr−k를 위한 지침: 사용자 i는 다음과 같이 라운드 r의 단계 s를 시작합니다. 자신의 단계 s-1을 완료합니다. • 사용자 i는 최대 2\(\lambda\).a 동안 대기합니다. 대기하는 동안 i는 다음과 같이 행동합니다. – 종료 조건 0: 임의의 지점에 문자열 v ̸= \(\bot\)과 단계 s′가 존재하는 경우 (a) 5 \(\leq\)s′ \(\leq\)s, s′ −2 pho mod 3 — 즉, s′ 단계는 Coin-Fixed-To-0 단계입니다. (b) 나는 적어도 tH개의 유효한 메시지 mr,s'-1을 수신했습니다. j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ),b 그리고 (c) 나는 유효한 메시지(SIGj(Qr−1), \(\sigma\)r,1)를 수신했습니다. j ) j가 두 번째임 v의 구성 요소, 그런 다음 나는 기다리는 것을 멈추고 자신의 Step s 실행을 종료합니다(실제로는 r 라운드에서도). (r, s) 검증자로서 아무것도 전파하지 않고 즉시; H(Br)을 첫 번째로 설정합니다. v의 구성요소; 그리고 자신의 CERT r을 메시지 mr,s′-1의 집합으로 설정합니다. j (b) 단계 (SIGj(Qr−1), \(\sigma\)r,1과 함께 j).c – 종료 조건 1: 어느 시점에 다음과 같은 단계 s'가 존재하는 경우 (a') 6 \(\leq\)s' \(\leq\)s, s' −2 pho1 mod 3 — 즉, 단계 s'는 Coin-Fixed-To-1 단계이고, (b') 나는 적어도 tH개의 유효한 메시지 mr,s'-1을 수신했습니다. j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ),디 그러면 나는 기다리는 것을 멈추고 그 자신의 Step s(그리고 실제로는 r 라운드)의 실행을 종료합니다. (r, s)-검증자로서 아무것도 전파하지 않고 멀리 갑니다. Br = Br로 설정 ? ; 그리고 자신이 설정한 CERT r은 메시지 mr,s′−1의 집합입니다. j 하위 단계 (b'). – 만약에 ~에 어떤 포인트 그 있다 받은 ~에 최소한 tH 유효한 씨,s−1 j 의 의 는 형태 (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), 그런 다음 그는 기다리기를 멈추고 bi \(\triangleq\)1을 설정합니다. – 만약에 ~에 어떤 포인트 그 있다 받은 ~에 최소한 tH 유효한 씨,s−1 j 의 의 는 형태 (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), 하지만 동일한 v에 동의하지 않으면 그는 중지합니다. 기다리고 bi \(\triangleq\)0을 설정합니다. – 그렇지 않고, 시간 2\(\lambda\)가 다 되면 bi \(\triangleq\)0을 설정합니다. – bi 값이 설정되면 i는 CERT r−1에서 Qr−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을 파괴합니다. 나 , 그리고 나서 Mr,s를 전파합니다 나. 그렇지 않으면 아무것도 전파하지 않고 중지됩니다. a따라서 i가 라운드 r의 1단계를 시작한 이후 최대 총 시간은 ts \(\triangleq\)ts−1 + 2\(\lambda\) = (2s −3) \(\lambda\) + Λ. b플레이어 j로부터의 이러한 메시지는 플레이어 i가 1에 서명한 j로부터 메시지를 받은 경우에도 계산됩니다. 엔딩 조건 1도 비슷한 내용입니다. 분석에서 보듯이 이는 모든 정직한 사용자가 알 수 있도록 하기 위한 것입니다. CERT r은 서로 시간 \(\lambda\) 내에 있습니다. c사용자 i는 이제 H(Br)와 자신의 라운드 r 완료를 알고 있습니다. 그는 실제로 블록 Br이 나올 때까지 기다려야 합니다. 그 사람에게 전파되므로 추가 시간이 걸릴 수 있습니다. 그는 여전히 일반 사용자로서 메시지 전파를 돕고 있습니다. 그러나 (r, s) 검증자로서 전파를 시작하지는 않습니다. 특히 그는 모든 메시지를 전파하는 데 도움을 주었습니다. 그의 CERT r은 우리 프로토콜에 충분합니다. 바이너리 BA 프로토콜에 대해서도 bi \(\triangleq\)0을 설정해야 한다는 점에 유의하세요. 어쨌든 이 경우에는 bi가 필요하지 않습니다. 향후 모든 지침에 대해서도 유사합니다. d이 경우 vj가 무엇인지는 중요하지 않습니다. 65단계 s, 6 \(\leq\)s \(\leq\)m + 2, s −2 ל1 mod 3: BBA⋆의 동전 고정 1 단계 모든 사용자 i \(\in\)PKr−k를 위한 지침: 사용자 i는 다음과 같이 라운드 r의 단계 s를 시작합니다. 자신의 단계 s-1을 완료합니다. • 사용자 i는 최대 2\(\lambda\)의 시간을 기다립니다. 기다리는 동안 나는 다음과 같이 행동합니다. – 종료 조건 0: Coin-Fixed-To-0 단계와 동일한 지침입니다. – 종료 조건 1: Coin-Fixed-To-0 단계와 동일한 지침입니다. – 만약에 ~에 어떤 포인트 그 있다 받은 ~에 최소한 tH 유효한 씨,s−1 j 의 의 는 형태 (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), 그런 다음 그는 기다리기를 멈추고 bi \(\triangleq\)0.a를 설정합니다. – 그렇지 않고, 시간 2\(\lambda\)가 다 되면 bi \(\triangleq\)1을 설정합니다. – bi 값이 설정되면 i는 CERT r−1에서 Qr−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을 파괴합니다. 나 , 그리고 나서 Mr,s를 전파합니다 나. 그렇지 않으면 아무것도 전파하지 않고 중지됩니다. a1에 대한 유효한 (r, s -1) 메시지 서명을 수신하면 종료 조건 1을 의미합니다. 단계 s, 7 \(\leq\)s \(\leq\)m + 2, s −2 ל2 mod 3: BBA⋆의 동전 뒤집기 단계 모든 사용자 i \(\in\)PKr−k를 위한 지침: 사용자 i는 다음과 같이 라운드 r의 단계 s를 시작합니다. 자신의 단계 s-1을 마칩니다. • 사용자 i는 최대 2\(\lambda\)의 시간을 기다립니다. 기다리는 동안 나는 다음과 같이 행동합니다. – 종료 조건 0: Coin-Fixed-To-0 단계와 동일한 지침입니다. – 종료 조건 1: Coin-Fixed-To-0 단계와 동일한 지침입니다. – 만약에 ~에 어떤 포인트 그 있다 받은 ~에 최소한 tH 유효한 씨,s−1 j 의 의 는 형태 (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), 그런 다음 그는 기다리기를 멈추고 bi \(\triangleq\)0을 설정합니다. – 만약에 ~에 어떤 포인트 그 있다 받은 ~에 최소한 tH 유효한 씨,s−1 j 의 의 는 형태 (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), 그런 다음 그는 기다리기를 멈추고 bi \(\triangleq\)1을 설정합니다. – 그렇지 않은 경우, 시간 2\(\lambda\)가 종료되면 SV r,s−1을 허용합니다. 나 (r, s −1)-검증자의 집합이 됩니다. 그는 유효한 메시지를 받았습니다. mr,s−1 j , 나는 bi \(\triangleq\)lsb(minj\(\in\)SV r,s−1을 설정합니다. 나 H(\(\sigma\)r,s−1 j )). – bi 값이 설정되면 i는 CERT r−1에서 Qr−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을 파괴합니다. 나 , 그리고 나서 Mr,s를 전파합니다 나. 그렇지 않으면 아무것도 전파하지 않고 중지됩니다. 주목. 원칙적으로 하위 섹션 6.2에서 고려한 바와 같이 프로토콜은 임의로 많은 수를 취할 수 있습니다. 어떤 라운드의 단계. 이런 일이 발생하면 논의한 대로 s > \(\mu\)인 사용자 i \(\in\)SV r,s가 지쳤습니다.
미리 생성된 임시 키를 보관하고 그의 (r, s) 메시지 mr,s를 인증해야 합니다. 나 에 의해 임시 키의 "계단식". 그래서 내 메시지가 좀 길어지고, 이 메시지를 더 길게 전송하게 되니 메시지를 보내는 데 시간이 조금 더 걸립니다. 따라서 주어진 라운드의 여러 단계를 거친 후에는 매개변수 \(\lambda\)는 자동으로 약간 증가합니다. (단, 새로운 값이 나오면 원래의 \(\lambda\)로 되돌아갑니다. 블록이 생성되고 새로운 라운드가 시작됩니다.) 비검증자에 의한 Round-r 블록 재구성 시스템의 모든 사용자 i를 위한 지침: 사용자 i는 라운드 r을 시작하자마자 자신의 라운드 r을 시작합니다. CERT r-1. • 나는 프로토콜의 각 단계의 지침을 따르고 모든 프로토콜의 전파에 참여합니다. 메시지를 전송하지만, 검증자가 아닌 경우 단계에서 전파를 시작하지 않습니다. • 나는 일부 항목에 종료 조건 0 또는 종료 조건 1을 입력하여 자신의 라운드 r을 종료합니다. 해당 CERT r을 사용하여 단계를 수행합니다. • 이후부터 그는 실제 블록 Br을 받기를 기다리는 동안 r + 1 라운드를 시작합니다. 그는 이미 그것을 받았습니다), 그의 hash H(Br)는 CERT r에 의해 고정되었습니다. 또 만약에 CERT r은 Br = Br임을 나타냅니다. ?, 나는 그가 CERT r을 취득하는 순간 Br을 압니다. 6.4 Algorand ' 분석 2 Algorand '의 분석 2는 Algorand ′의 그것으로부터 쉽게 파생됩니다. 1. 기본적으로 Algorand ' 2, 와 압도적인 확률, (a) 모든 정직한 사용자가 동일한 블록 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⋆는 적절하고 정직한 다수를 가지고 있습니다. 이제 게으른 방법을 설명하겠습니다. 정직함은 이러한 특성을 만족시킬 수 있는 대안적이고 매력적인 방법을 제공합니다.
(1) 사용자 i가 자신이 규정한 모든 지침을 따른다면 게으르지만 정직하다는 점을 기억하세요. 그는 프로토콜에 참여하라는 요청을 받고 (2) 프로토콜에만 참여하도록 요청받습니다. 매우 드물게(예: 일주일에 한 번) 적절한 사전 통지가 있고 잠재적으로 상당한 금액을 받을 수 있습니다. 그가 참여하면 보상을 받습니다. Algorand이 그러한 플레이어와 함께 작업할 수 있도록 하려면 "검증자를 선택하는 것"으로 충분합니다. 훨씬 이전 라운드에 이미 시스템에 있었던 사용자들 사이에서 현재 라운드.” 실제로, 그것을 기억하십시오 라운드 r에 대한 검증자는 라운드 r -k의 사용자 중에서 선택되며 선택은 다음을 기반으로 이루어집니다. 수량 Qr−1에 대해. 일주일은 대략 10,000분으로 구성되며, 라운드는 대략(예: 평균) 5분 정도 걸리므로 일주일에 대략 2,000라운드가 진행됩니다. 가정하다 어떤 시점에서 사용자는 자신의 시간을 계획하고 자신이 시간을 보낼지 여부를 알고 싶습니다. 다음 주에 검증인이 올 것입니다. 이제 프로토콜은 라운드 r에 대한 검증자를 다음 사용자 중에서 선택합니다. r −k −2,000을 라운드하고 선택은 Qr−2,001을 기반으로 합니다. r 라운드에서 나는 이미 알고 있는 선수 값 Qr−2,000, . . . , Qr−1, 실제로는 blockchain의 일부이기 때문입니다. 그런 다음 각 M에 대해 1과 2,000 사이에서 i는 라운드 r + M의 단계 s에서 검증자입니다. .H SIGi r + M, s, Qr+M−2,001 \(\leq\)p . 따라서 그가 다음 2,000 라운드 동안 검증자로 활동하도록 호출될 것인지 확인하려면 다음을 수행해야 합니다. \(\sigma\)M,s를 계산하다 나 = SIGi r + M, s, Qr+M−2,001 M = 1 ~ 2,000이고 각 단계 s에 대해 확인합니다. .H(\(\sigma\)M,s 나 ) 그 중 일부는 \(\leq\)p입니다. 디지털 서명을 계산하는 데 밀리초가 걸린다면 이 전체 작업을 계산하는 데 약 1분이 소요됩니다. 검증인으로 선정되지 않은 경우 이 라운드 중 어느 라운드에서든 그는 "정직한 양심"을 가지고 오프라인으로 갈 수 있습니다. 만약 그가 지속적으로 참여했다면 그는 어쨌든 다음 2,000 라운드 동안 본질적으로 0보를 걸었을 것입니다! 대신에 그는 이 라운드 중 하나에서 검증자로 선택됩니다. 그런 다음 그는 자신을 준비합니다(예: 모든 것을 얻음으로써) 필요한 정보) 적절한 라운드에서 정직한 검증자 역할을 합니다. 그렇게 행동함으로써, 게으르지만 정직한 잠재적 검증자는 전파에 참여하는 것을 놓칠 뿐입니다. 메시지의. 그러나 메시지 전파는 일반적으로 강력합니다. 또한, 지급인과 수취인은 최근 전파된 결제는 온라인에서 결제가 어떻게 진행되는지 확인할 수 있을 것으로 예상됩니다. 따라서 그들은 정직하다면 메시지 전파에 참여할 것입니다.
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 맛)입니다. “다음에 비례하는 가중치(즉, 결정력)를 사용하여 SV r,s에 속하는 사용자 i \(\in\)PKr−k를 선택합니다. i가 소유한 돈의 양.”24 HMM 가정에 따라 해당 금액을 r −k 라운드에 보유해야 하는지 여부를 선택할 수 있습니다. 또는 라운드 r(시작)에. 지속적인 참여를 꺼리지 않는다는 가정 하에 우리는 다음을 선택합니다. 후자의 선택. (지속적인 참여를 없애기 위해 우리는 전자의 선택을 선택했을 것입니다. r −k −2,000 라운드에 소유한 화폐의 양에 대해 말하는 것이 더 좋습니다.) 이 아이디어를 구현하는 방법에는 여러 가지가 있습니다. 가장 간단한 방법은 각 키를 홀드하는 것입니다. 최대 1 단위의 돈을 선택하고 a(r)이 되도록 PKr−k에서 무작위로 n명의 사용자 i를 선택합니다. 나 = 1. 24지속적인 참여를 대체하려면 PKr−k−2,000이라고 말해야 합니다. 단순화를 위해 요구할 수 있으므로 어쨌든 지속적인 참여를 위해 우리는 이전과 같이 PKr-k를 사용하여 하나의 매개변수를 덜 전달합니다.
다음으로 가장 간단한 구현 다음으로 간단한 구현은 각 공개 키가 최대 금액을 소유하도록 요구하는 것입니다. 어떤 고정된 M에 대한 화폐 M입니다. 가치 M은 총 화폐 금액에 비해 충분히 작습니다. 키가 둘 이상의 검증자 세트에 속할 확률이 k 라운드를 진행하는 것은 무시할 수 있습니다. 그런 다음, 금액 a(r)을 소유한 키 i \(\in\)PKr−k 나 라운드 r에서 다음과 같은 경우 SV r,s에 속하도록 선택됩니다. .H SIGi r, s, Qr−1 \(\leq\)p \(\cdot\) a(r) 나 엠 . 그리고 모든 수익은 이전과 동일합니다. 더욱 복잡한 구현 마지막 구현에서는 "시스템의 부유한 참가자가 많은 키를 소유하도록 강요했습니다". 아래에 설명된 대체 구현은 상태 개념을 일반화하고 다음을 고려합니다. 각 사용자 i는 K + 1개의 복사본(i, v)으로 구성되며, 각 복사본은 독립적으로 검증자로 선택됩니다. 자신의 임시 키를 소유하게 됩니다(pkr,s 나,v,skr,s i,v) 라운드 r의 단계 s에서. K 값은 다음과 같습니다. 금액에 따라 a(r) 나 라운드 r에서 i가 소유하고 있습니다. 이제 그러한 시스템이 어떻게 작동하는지 더 자세히 살펴보겠습니다. 사본 수 n을 각 검증자 세트의 목표 예상 카디널리티로 설정하고 a(r)을 다음과 같이 설정합니다. 나 라운드 r에서 사용자 i가 소유한 금액이 됩니다. Ar을 소유한 총 화폐량이라고 하자. 라운드 r에서 PKr-k의 사용자에 의해, 즉, 아르 = X i\(\in\)P Kr−k a(r) 나. i가 PKr-k의 사용자라면 i의 복사본은 (i, 1), . . . , (i, K + 1), 여기서 케이 = $ n \(\cdot\) a(r) 나 아칸소 % . 예. n = 1,000, Ar = 109, a(r)이라고 가정합니다. 나 = 370만. 그런 다음, 케이 = 103 \(\cdot\) (3.7 \(\cdot\) 106) 109 = ⌊3.7⌋= 3 . 검증자 및 자격 증명 나는 K + 1 복사본을 가진 PKr-k의 사용자라고 가정합니다. 각 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)의 경우 라운드 r의 각 단계 s에 대해 i는 다음을 확인합니다. .H SIGi (i, K + 1), r, s, Qr−1 \(\leq\)a(r) 나 엔 Ar-K.
그렇다면 사본 (i, K + 1)은 SV r,s에 속합니다. 그것을 증명하기 위해 자격 증명을 전파합니다. \(\sigma\)r,1 i,K+1 = SIGi (i, K + 1), r, s, Qr−1 . 예. 이전 예에서와 같이 n = 1K, a(r) 나 = 3.7M, Ar = 1B, i는 4입니다. 복사본: (i, 1), . . . , (i, 4). 그런 다음 처음 3개의 복사본은 자동으로 SV r,s에 속합니다. 4번째의 경우, 개념적으로 Algorand '은 앞면이 나올 확률이 0.7인 편향된 동전을 독립적으로 굴립니다. 복사 (i, 4)는 동전 던지기가 앞면인 경우에만 선택됩니다. (물론 이 편향된 동전 던지기는 hashing, 서명 및 비교를 통해 구현됩니다. 나는 그의 결과를 증명할 수 있도록 이 논문에서 모든 작업을 수행했습니다.) 평소대로 사업 검증자를 선택하는 방법과 자격 증명을 어떻게 지정하는지 설명했습니다. 라운드 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.
Fork 처리
포크가 발생할 확률을 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 나 각각 파트 i \(\in\){1, 2}의 단계 s에서 정직하고 악의적인 검증자의 집합이 됩니다. 우리는 |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|MSV r,s| 압도적인 확률로 2tH 미만. 어떤 부분에 |HSV r,s가 있는 경우 나 | + |MSV r,s 나 | 무시할 수 없는 확률(예: 1%)의 \(\geq\)tH인 경우 |HSV r,s의 확률 3−i| + |MSV r,s 3−i| \(\geq\)tH는 매우 낮습니다(예: F = 10−18인 경우 10−16). 이 경우, 검증자가 충분하지 않기 때문에 더 작은 부분을 오프라인으로 처리하는 것이 좋습니다. 블록을 인증하기 위한 서명을 생성하는 부분입니다. 일반성을 잃지 않고 더 큰 부분, 즉 파트 1을 고려해 보겠습니다. 비록 |HSV r,s| < 각 단계 s에서 무시할 수 있는 확률을 갖는 tH, 네트워크가 분할되면 |HSV r,s 1 | 어쩌면 무시할 수 없는 확률로 tH보다 작습니다. 이 경우 상대방은 다음과 같은 조치를 취할 수 있습니다. 다른 무시할 수 없는 확률, 비어 있지 않은 블록 Br과 빈 블록 Br을 사용하여 바이너리 BA 프로토콜을 r 라운드의 포크로 강제 실행합니다. ? 둘 다 유효한 서명을 가지고 있습니다.25 예를 들어, Coin-Fixed-To-0 단계, 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을 인증할 만큼 충분한 서명이 있습니다. 그러나 이후 악의적인 검증자가 서명을 보류하면 사용자는 Coin-Fixed-To1 단계인 s + 1 단계에 들어갑니다. 왜냐하면 |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)의 경우. 따라서 라운드 r의 해당 블록에 의해 정의되는 두 개의 Qr이 있습니다. 그러나, 포크는 계속되지 않으며 두 가지 중 하나만 r + 1 라운드에서 자랄 수 있습니다. Algorand '에 대한 추가 지침 2. 비어 있지 않은 블록 Br과 비어 있는 블록을 볼 때 블록 브롬 ϫ , 비어 있지 않은 것(및 이에 의해 정의된 Qr)을 따릅니다. 실제로 사용자에게 프로토콜의 비어 있지 않은 블록을 사용하도록 지시함으로써 PKr+1−k의 정직한 사용자 중 상당수는 라운드 r +1의 시작 부분에 포크가 있다는 것을 깨닫습니다. 빈 블록에는 추종자가 충분하지 않아 성장하지 않습니다. 적이 다음과 같이 관리한다고 가정합니다. 일부 정직한 사용자가 Br(및 아마도 Br)을 볼 수 있도록 정직한 사용자를 분할합니다. ?), 일부는 단지 브르 ? 왜냐하면 대적은 그들 중 어느 것이 Br을 따르는 검증자가 될 것인지, 그리고 어느 것이 검증자가 될 것인지 알 수 없기 때문입니다. Br을 따르는 검증자가 될 것입니다. ? , 정직한 사용자는 무작위로 분할되어 있으며 각 사용자는 여전히 검증자가 됩니다(Br에 대해 또는 Br에 대해). Ϋ) 확률이 s > 1인 단계에서 p. 악의적인 사용자의 경우 각 사용자는 검증자가 될 수 있는 두 번의 기회를 가질 수 있습니다. Br과 다른 하나는 Br ϫ, 각각 독립적으로 확률 p를 갖습니다. HSV r+1,s를 보자 1;Br Br에 이어 라운드 r+1의 단계 s에서 정직한 검증자 집합이 됩니다. 기타 표기법 HSV r+1,s와 같은 1;브 , MSV r+1,s 1;Br 및 MSV r+1,s 1;브뤼 유사하게 정의되어 있습니다. Chernoffbound를 이용하면 쉽습니다. 25두 개의 비어 있지 않은 블록이 있는 포크를 갖는 것은 무시할 수 있는 경우를 제외하고는 파티션이 있든 없든 불가능합니다. 확률.압도적인 확률로 그걸 보게 된다면, |HSV r+1,s 1;Br | + |HSV r+1,s 1;브뤼 | + |MSV r+1,s 1;Br | + |MSV r+1,s 1;브뤼 | < 2tH. 따라서 두 가지 모두 라운드 블록을 인증하는 적절한 서명을 가질 수 없습니다. 동일한 단계 s에서 r + 1. 더욱이 두 단계 s와 s′에 대한 선택 확률은 동일하며 선택은 독립적이며 압도적인 확률을 갖습니다. |HSV r+1,s 1;Br | + |MSV r+1,s 1;Br | + |HSV r+1,s′ 1;브뤼 | + |MSV r+1,s′ 1;브뤼 | < 2tH, 임의의 두 단계 s와 s′에 대해. F = 10−18일 때, 결합 결합에 의해, 적이 할 수 없는 한 정직한 사용자를 오랫동안 분할합니다(예: 104단계, 이는 \(\lambda\) = 10인 경우 55시간 이상). 초26), 높은 확률(예: 1−10−10)로 최대 하나의 분기가 tH개의 적절한 서명을 갖게 됩니다. 라운드 r + 1에서 블록을 인증합니다. 마지막으로, 물리적 파티션이 대략 동일한 크기의 두 부분을 생성한 경우 |HSV r,s의 확률 나 | + |MSV r,s 나 | \(\geq\)tH는 각 부분 i에 대해 작습니다. 비슷한 분석에 따르면, 비록 적이 각 부분에서 무시할 수 없는 확률로 포크를 생성하더라도 라운드 r의 경우, 네 개의 가지 중 많아야 하나가 라운드 r + 1에서 자랄 수 있습니다. 10.2 적대적 파티션 둘째, 적대자에 의해 파티션이 발생하여 메시지가 전파될 수 있습니다. 한 부분의 정직한 사용자는 다른 부분의 정직한 사용자에게 직접 도달하지 않지만 공격자는 두 부분 간에 메시지를 전달할 수 있습니다. 그래도 한 번은 누군가의 메시지를 부분이 다른 부분에서 정직한 사용자에게 도달하면 평소와 같이 후자에 전파됩니다. 만약 상대방은 많은 돈을 쓸 의향이 있으며, 해킹을 할 수도 있다고 생각됩니다. 인터넷을 하고 잠시 이렇게 파티션을 나누세요. 분석은 위의 물리적 파티션의 더 큰 부분(더 작은 부분)에 대한 분석과 유사합니다. 부분의 인구는 0인 것으로 간주될 수 있습니다. 공격자는 포크를 생성하고 각 정직한 사용자는 가지 중 하나만 볼 수 있지만 최대 하나의 가지가 성장할 수 있습니다. 10.3 네트워크 파티션 합계 네트워크 파티션이 발생할 수 있고 파티션 아래에서 한 라운드의 포크가 발생할 수도 있지만 이는 오래 지속되는 모호함이 아닙니다. 포크는 수명이 매우 짧으며 실제로는 최대 한 라운드 동안 지속됩니다. 에서 최대 하나를 제외한 파티션의 모든 부분에서 사용자는 새로운 블록을 생성할 수 없으므로 (a) 네트워크에 분할이 있다는 것을 인식하고 (b) "사라지는" 블록에 절대 의존하지 마십시오. 감사의 말 먼저 인용된 Democoin 시스템의 공동 저자인 Sergey Gorbunov에게 감사 인사를 전하고 싶습니다. 많은 계몽적인 토론과 지적을 해주신 Maurice Herlihy에게 진심으로 감사드립니다. 파이프라이닝이 Algorand의 처리량 성능을 향상시키고 26 사용자는 해당 항목에 대해 최소한 tH개의 서명을 본 경우에만 2\(\lambda\) 시간을 기다리지 않고 단계 s를 완료한다는 점에 유의하십시오. 같은 메시지. 서명이 충분하지 않으면 각 단계는 2\(\lambda\) 시간 동안 지속됩니다.
이 문서의 이전 버전을 설명합니다. 의견을 주신 Sergio Rajsbaum에게 깊은 감사를 드립니다. 이 문서의 이전 버전. 몇 가지 심도 있는 토론을 해주신 Vinod Vaikuntanathan에게 많은 감사를 드립니다. 그리고 통찰력. Yossi Gilad, Rotem Hamo, Georgios Vlachos 및 Nickolai Zeldovich에게 많은 감사를 드립니다. 이러한 아이디어를 테스트하기 시작하고 많은 유용한 의견과 토론을 해주셔서 감사합니다. Silvio Micali는 수많은 토론과 지도를 해주신 Ron Rivest에게 개인적으로 감사의 말씀을 전하고 싶습니다. 30년 이상 암호화폐 연구에 종사했으며, 인용된 소액 결제 시스템을 공동 집필했습니다. 이는 Algorand의 검증자 선택 메커니즘 중 하나에 영감을 주었습니다. 우리는 이 기술을 다음 단계로 끌어올리기를 희망합니다. 그동안 여행과 교제 정말 재미있어요. 정말 감사해요.