Bitcoin: Elektronisches Geldsystem in Peer-to-Peer.
Satoshi Nakamoto -
satoshin@gmx.com -
http://www.bitcoin.org(Übersetzer: Benkebab, Grondilu, Mackila)
Zusammenfassung. Ein vollkommenes Peer-to-Peer-E-Geld-System würde Online-Zahlungen direkt von einer Partei zur anderen durchführen, ohne ein Finanzinstitut zu durchlaufen. Digitale Signaturen bieten eine solche Lösung, verlieren aber ihr Interesse, wenn eine vertrauenswürdige dritte Partei erforderlich ist, um Doppelzahlungen zu verhindern. Wir schlagen eine Lösung für das Problem der doppelten Zahlung vor, indem ein Peer-to-Peer-Netzwerk verwendet wird. Die Netzwerk-Timestamps Transaktionen mit einer Hash-Funktion, die sie in eine kontinuierliche Kette von Beweisen der Arbeit (Fingerabdrücke) übersetzt, eine Aufzeichnung, die nicht geändert werden kann, ohne den Nachweis der Arbeit erneut durchzuführen. Die längste Kette (von Fingerabdrücken) dient nicht nur als Beweis für den Fortschritt der beobachteten Ereignisse, sondern auch als Beweis dafür, dass sie aus der größten Gruppierung von Rechenleistung stammt. Solange der Großteil der Rechenleistung (CPU) von Knoten gesteuert wird, die nicht kooperieren, um das Netzwerk anzugreifen, generieren sie die längste Zeichenfolge und übertreffen die Angreifer. Das Netzwerk selbst benötigt nur eine reduzierte Struktur. Die Nachrichten werden bestenfalls gesendet, und die Knoten können nach Belieben das Netzwerk verlassen oder sich diesem anschließen, wobei sie den längsten Beweis der Arbeitskette als Beweis dafür akzeptieren, was während ihrer Abwesenheit passiert ist.
1. Einleitung
Der Internethandel hängt heute fast ausschließlich von Finanzinstituten ab, die als vertrauenswürdige Dritte für die Abwicklung elektronischer Zahlungen fungieren. Obwohl dieses System für die meisten Transaktionen sehr gut funktioniert, weist es dennoch Schwächen auf, die seinem Vertrauensmodell innewohnen. Totally irreversible Transaktionen sind nicht wirklich möglich, da Finanzinstitute die Vermittlung von Konflikten verwalten müssen. Die Kosten dieser Vermittlung erhöhen die Transaktionskosten, was in der Praxis die Mindestgröße einer Transaktion begrenzt und die Möglichkeit kleiner, kostengünstiger Transaktionen verhindert. Die Unmöglichkeit, nicht umkehrbare Zahlungen für nicht umkehrbare Dienstleistungen zu erhalten, verursacht noch höhere Kosten. Mit der Möglichkeit, Transaktionen zu stornieren, steigt das Bedürfnis nach Vertrauen. Händler müssen vorsichtig mit ihren Kunden sein und sie für mehr Informationen als nötig belästigen. Ein gewisser Betrug wird als unvermeidlich akzeptiert. All diese Kosten und Unsicherheiten der Zahlung können durch die Verwendung einer physischen Währung vermieden werden, aber es gibt keinen Mechanismus, um Zahlungen über ein Kommunikationssystem ohne Rückgriff auf eine vertrauenswürdige dritte Partei auszuführen.
Was wir brauchen, ist ein kryptographisch evidenzbasiertes elektronisches Zahlungssystem anstelle eines vertrauensbasierten Modells, das es zwei Parteien ermöglichen würde, direkt miteinander ohne Rückgriff zu handeln. an eine vertrauenswürdige dritte Partei. Transaktionen, bei denen ein Computer nicht storniert werden kann, schützen die Anbieter vor potentiellem Betrug, und ein Treuhandkontensystem könnte leicht implementiert werden, um die Käufer zu schützen. In diesem Whitepaper schlagen wir eine Lösung für das Problem der doppelten Ausgaben vor, indem wir einen zeitgestempelten Peer-to-Peer-Server verwenden, um IT-Nachweise über die chronologische Reihenfolge der Transaktionen zu generieren. Das System ist sicher, solange ehrliche Knoten mehr Rechenleistung steuern als eine Gruppe von Knoten, die zusammenarbeiten würden, um einen Angriff auszuführen.
2.Transactions
Wir definieren einen elektronischen Teil als eine Kette von digitalen Signaturen. Jeder Eigentümer überträgt dieses Teil an einen anderen, indem es einen Fingerabdruck der vorherigen Transaktion sowie den öffentlichen Schlüssel des neuen Besitzers digital signiert und am Ende des Stücks hinzufügt. Jeder Empfänger kann die Signaturen überprüfen, um die Eigentümerkette zu überprüfen.
Weißbuch 1
Das Problem ist natürlich, dass der Begünstigte nicht überprüfen kann, dass einer der früheren Eigentümer keine "doppelten Ausgaben" mit dem Zimmer gemacht hat. Eine gängige Lösung ist die Einführung einer zentralen vertrauenswürdigen Stelle (Mint), die jede Transaktion prüft, um "doppelte Ausgaben" zu vermeiden. Nach jeder Transaktion müssen die Münzen an die Münze zurückgegeben werden, wodurch eine neue Münze entsteht, und nur Münzen, die direkt von der Münze stammen, gelten als nicht doppelt ausgegeben. Das Problem bei dieser Lösung ist, dass das Schicksal des gesamten Geldsystems bei dem Unternehmen liegt, das die Münzstätte betreibt, und dass jede Transaktion wie eine Bank durch sie gehen muss.
Wir benötigen eine Methode für den Empfänger, um zu wissen, ob frühere Besitzer frühere Transaktionen nicht unterzeichnet haben. Dabei muss die älteste Transaktion die entscheidende sein, wir müssen uns keine Gedanken über spätere Versuche machen, die doppelte Münze auszugeben. Die einzige Möglichkeit, das Fehlen einer vorherigen Transaktion zu bestätigen, besteht darin, sich aller Transaktionen bewusst zu sein. In dem Modell, das auf einer Mint basierte, war letzterer über alle Transaktionen informiert und entschied, wer der erste war. Um dies auch ohne eine dritte Partei zu tun, müssen die Transaktionen öffentlich bekannt gegeben werden [1], und wir brauchen ein System, so dass alle Teilnehmer einer einzigen Historie der Reihenfolge, in der die Transaktionen eingehen, zustimmen. . Der Empfänger benötigt den Nachweis, dass zu jeder Zeit einer Transaktion die Mehrheit der Knoten zustimmt, dass sie die erste empfangen hat.
3. Zeitstempelserver
Die Basis der vorgeschlagenen Lösung ist ein Zeitstempelserver. Ein Zeitstempelserver nimmt den Eindruck einer Menge von Elementen zum Zeitstempel auf und veröffentlicht diesen Footprint in der Art einer Werbung in einer Zeitung oder einer Nachricht auf einer forum Usenet [2-5]. Der Zeitstempel belegt, dass die Daten vorhanden waren, um im Druck berücksichtigt zu werden. Jeder Zeitstempel enthält den vorherigen Zeitstempel in seinem Footprint und bildet eine Zeichenfolge, in der jedes neue Element die vorherigen bestätigt.
Weißbuch 2
4. Arbeitsnachweis
Um einen verteilten Zeitstempelserver in einem Peer-to-Peer-Netzwerk zu implementieren, sollte ein auf Arbeit basierendes System wie das [6] Hashcash-System von Adam Back verwendet werden, und nicht ein Protokoll oder eine Meldung ein forum Usenet. Für den Arbeitsnachweis muss nach einem Wert gesucht werden, bei dem der Footprint, der beispielsweise mit SHA-256 berechnet wird, bei 0 mit einer Anzahl von Bits beginnt. Die dafür erforderliche Arbeit ist exponentiell von der Anzahl der erforderlichen 0-Bits abhängig und kann durch Ausführen einer einzelnen Fingerabdruckberechnung validiert werden.
Für unser Zeitstempelnetzwerk implementieren wir einen Arbeitsbeweis, indem wir eine Variable im Block inkrementieren, bis ein Wert gefunden wird, der bei 0 einen Fingerabdruck mit genügend Bits ergibt. Sobald der Berechnungsaufwand, der erforderlich ist, um den Arbeitsbeweis zu erhalten, durchgeführt wurde, ist es nicht länger möglich, den Block zu ändern, ohne diesen Berechnungsaufwand zu wiederholen. Wenn neue Blöcke danach verkettet werden, umfasst der Rechenaufwand, der zum Modifizieren eines Blocks erforderlich ist, den gesamten Rechenaufwand, der erforderlich ist, um alle nachfolgenden Blöcke zu modifizieren.
Weißbuch 3
Der Arbeitsnachweis löst das Problem der Wahl der Repräsentativität der Wahl. Wenn die Mehrheit auf der IP-Adresse basiert, könnte die Abstimmung von jemandem pervertiert werden, der viele Adressen annehmen kann. Der Arbeitsnachweis basiert im Wesentlichen auf der Rechenleistung (ein Prozessor, eine Stimme). Die Entscheidung der Mehrheit wird durch die längste Kette dargestellt, diejenige, die die meisten Arbeitsbeweise benötigt. Wenn der Großteil der Rechenleistung des Netzwerks durch ehrliche Knoten gesteuert wird, schreitet die legitime Kette schneller und entfernter konkurrierende Kanäle voran. Um einen alten Block zu modifizieren, müsste ein Angreifer die Proofs des modifizierten Blocks und aller nachfolgenden Blöcke neu berechnen, um die Arbeit der ehrlichen Knoten zu ergänzen und zu übertreffen. Wir werden dann zeigen, dass die Wahrscheinlichkeit, dass ein Angreifer mit weniger Rechenleistung aufholen kann, exponentiell mit jedem hinzugefügten neuen Block abnimmt.
Um die verbesserte Rechenleistung der Hardware und das sich ändernde Interesse am Betreiben von Netzwerkknoten zu kompensieren, wird die Schwierigkeit des Arbeitsnachweises durch einen Mittelwert der Anzahl der pro Stunde zu ermittelnden Blöcke bestimmt. Wenn diese Blöcke zu schnell generiert werden, erhöht sich die Schwierigkeit.
5. Netzwerk
Die Schritte, die implementiert werden, um das Netzwerk zu betreiben, sind wie folgt:
Neue Transaktionen werden an alle Knoten gesendet.
Jeder Knoten gruppiert die neuen Transaktionen in einen Block.
Jeder Knoten arbeitet daran, den Beweis der Arbeit an seinem Block zu lösen.
Wenn ein Knoten einen Arbeitsbeweis findet, sendet er diesen Block an alle Knoten.
Knoten akzeptieren den Block nur, wenn alle darin enthaltenen Transaktionen gültig sind und nicht bereits ausgegeben wurden.
Die Knoten drücken die Akzeptanz des Blocks aus, indem sie an einem neuen Block in der Kette arbeiten, wobei dieser neue Block die vorherige des akzeptierten Blocks aufweist.
Knoten betrachten immer die längste Zeichenfolge als zulässige Zeichenfolge und arbeiten daran, sie zu erweitern. Wenn zwei Knoten gleichzeitig zwei verschiedene Versionen des nächsten Blocks senden, erhalten einige der Knoten zuerst das eine oder das andere. In dieser Situation arbeitet jeder an dem zuerst empfangenen Block, behält aber den anderen Zweig für den Fall, dass dieser am längsten wird. Diese Verbindung wird unterbrochen, wenn der nächste Arbeitsnachweis gefunden wird und ein Zweig länger wird als der andere; Die Knoten, die dann am anderen Zweig arbeiteten, werden sich am längsten ändern.
Verteilungen neuer Transaktionen müssen nicht alle Knoten erreichen. Sobald sie genug Knoten erreicht haben, werden sie sich in kurzer Zeit in einem Block befinden. Block-Broadcasts tolerieren den Verlust von Nachrichten. Wenn ein Knoten keinen Block empfängt, wird er dies anfordern, wenn er den nächsten Block empfängt, wenn er feststellt, dass ihm einer fehlt.
6. Anstiftung
Gemäß der Konvention ist die erste Transaktion eines Blocks eine spezielle Transaktion, die einen neuen Teil erzeugt, der zum Ersteller des Blocks gehört. Dies ermutigt die Knoten zur Teilnahme am Netzwerk und ermöglicht die anfängliche Verteilung der Währung, da es keine zentralisierte Autorität dafür gibt. Diese stetige Hinzufügung einer konstanten Menge an Geld ist nah an der Anstrengung, die Bergleute machen, um Gold in den Umlauf zu bringen. In unserem Fall besteht der Aufwand aus Rechenleistung und Zeit.
Der Anreiz kann auch durch Transaktionsgebühren finanziert werden. Wenn der Ausgabewert einer Transaktion kleiner als der Eingabewert ist, ist die Differenz die Transaktionsgebühr, die zum Anreizwert des Blocks hinzugefügt wird, der diese Transaktion enthält. Sobald die vorgegebene Geldmenge in Umlauf gekommen ist, kann der Anreiz auf Basis der Transaktionskosten zu einer Finanzierung übergehen und keine Inflation verursachen.
Anstiftung kann Knoten dazu ermutigen, ehrlich zu bleiben. Wenn ein gieriger Angreifer die Möglichkeit hat, mehr Rechenleistung zu erhalten als alle ehrlichen Knoten, kann er wählen, ob er Menschen betrügt, indem er Zahlungen zurückerhält oder seine Macht nutzt, um neue Währungen zu generieren. Er muss es interessanter finden, das Spiel zu spielen, was ihn eindeutig begünstigt, weil er dann mehr neues Geld generieren wird als alle anderen Knoten, anstatt das System und den Wert seines eigenen Reichtums zu untergraben.
7. Speicherplatz sparen
Sobald die letzte Transaktion für ein Teil unter genügend Blöcken verborgen ist, können frühere Transaktionen gelöscht werden, um Speicherplatz zu sparen. Um dies zuzulassen, ohne den Block-Fingerabdruck zu entwerten, werden Transaktionen in einem Merkle-Baum [7] [2] [5] zusammengefasst, von dem nur der Stamm im Fingerabdruck des Blocks enthalten ist. Alte Blöcke können durch Abschneiden von Ästen des Baumes zusammengedrückt werden. Zwischen-Fingerabdrücke müssen nicht gespeichert werden.
Ein Nicht-Transaktionsblock-Header wiegt ungefähr 80-Bytes. Wenn wir davon ausgehen, dass Blöcke alle 10-Minuten generiert werden, entspricht dies 80-Bytes * 6 * 24 * 365 = 4.2Mo pro Jahr. In 2008 werden Computersysteme mit einer durchschnittlichen 2Go-RAM-Kapazität verkauft, und mit dem Moore'schen Gesetz, das ein jährliches Wachstum von 1.2Go vorhersagt, sollte der Speicher kein Problem sein, selbst wenn es alle sind Blockköpfe mussten im RAM gehalten werden.
8. Vereinfachte Zahlungsüberprüfung
Es ist möglich, Zahlungen zu überprüfen, ohne einen vollständigen Netzwerkknoten auszuführen. Ein Benutzer muss nur eine Kopie der längsten Kette von Beweisköpfen behalten, die er durch Abfragen an Netzwerkknoten erhalten kann, bis er damit zufrieden ist um die längste Kette zu haben und dann den Zweig des Merkle-Baums wiederherzustellen, der die Transaktion mit dem Block verbindet, in dem er zeitgestempelt ist. Der Benutzer kann die Transaktion selbst nicht verifizieren, aber durch Verknüpfen in der Kette kann er sehen, dass ein Knoten des Netzwerks ihn akzeptiert hat, und die folgenden Blöcke bestätigen weiter die Akzeptanz des Netzwerks.
Daher ist die Verifizierung zuverlässig, solange ehrliche Knoten das Netzwerk steuern, aber anfälliger sind, wenn das Netzwerk von einem Angreifer mit mehr Rechenleistung kompromittiert wird. Obwohl die Knoten des Netzwerks die Transaktionen selbst verifizieren können, kann das vereinfachte Verfahren durch vom Angreifer gefälschte Transaktionen getäuscht werden, solange er die Mittel hat, die Rechenleistung des Netzwerks zu überschreiten. Eine Strategie zum Schutz vor einem solchen Angriff könnte darin bestehen, Warnungen von Netzwerkknoten zu empfangen, wenn sie einen ungültigen Block entdecken, die Software des Benutzers zum Herunterladen des vollständigen Blocks aufzufordern und verdächtige Transaktionen auf Inkonsistenz zu überprüfen. Unternehmen, die häufig Zahlungen erhalten, werden sicherlich davon profitieren, dass sie ihre eigenen Knoten für mehr unabhängige Sicherheit und schnellere Prüfungen betreiben.
9. Kombination und Wertaufteilung
Obwohl es möglich ist, die Teile getrennt zu verarbeiten, wäre es unpraktisch, für jeden Cent bei einer Übertragung eine andere Transaktion zu erzeugen. Um die Kombination und Aufspaltung der Währung zu ermöglichen, beinhalten Transaktionen mehrere Ein- und Ausstiege. Normalerweise gibt es entweder einen einzelnen Eintrag aus einer früheren großen Transaktion oder mehrere Einträge, die niedrigere Beträge kombinieren, und maximal zwei Abflüsse: einen für die Zahlung und den anderen, um den Austausch, falls vorhanden, zurückzugeben der Sender.
Es sollte angemerkt werden, dass die Verteilung, wenn eine Transaktion von mehreren Transaktionen abhängt und dass diese Transaktionen selbst von viel mehr Transaktionen abhängen, kein Problem darstellt. Es ist nie erforderlich, den vollständigen Verlauf einer Transaktion abzurufen.
10. Vertraulichkeit
Das traditionelle Bankensystem garantiert ein gewisses Maß an Vertraulichkeit, indem es den Zugang zu Informationen für die betroffenen Parteien und den vertrauenswürdigen Dritten einschränkt. Die Notwendigkeit, alle Transaktionen zu veröffentlichen, schließt diese Methode aus, aber Vertraulichkeit kann erreicht werden, indem der Informationsfluss auf eine andere Ebene unterbrochen wird: indem anonyme öffentliche Schlüssel aufbewahrt werden. Es ist möglich zu sehen, dass jemand eine bestimmte Menge an jemand anderen sendet, aber ohne irgendeine Verbindung zu Menschen. Dies ist ähnlich dem Informationsniveau, das auf den Devisenmärkten verfügbar ist, oder das Datum und der Betrag jeder Börse, der "Kurs", ist öffentlich, ohne jedoch die Identität der Parteien zu offenbaren.
Als zusätzliche Barriere kann für jede Transaktion ein neues Schlüsselpaar verwendet werden, um zu vermeiden, dass eine Verbindung zu einem gemeinsamen Eigentümer besteht. Eine gewisse Beziehung ist jedoch bei Multi-Entry-Transaktionen unvermeidlich, die notwendigerweise offenbaren, dass ihre Einträge im Besitz desselben Eigentümers waren. Das gefürchtete Ereignis ist, dass, wenn der Besitzer eines Schlüssels enthüllt wird, die Verbindungen die Enthüllung anderer Transaktionen desselben Besitzers erlauben.
11. Berechnungen
Betrachten Sie den Fall eines Angreifers, der versucht, eine alternative Zeichenfolge schneller als die legitime Zeichenfolge zu generieren. Selbst wenn dies erfolgreich wäre, würde dies das System nicht anfällig für willkürliche Veränderungen machen, wie die Schaffung von Geld von Grund auf neu oder die Aneignung von Geld, das niemals dem Angreifer gehört hat. Die Knoten akzeptieren keine ungültigen Transaktionen als Bezahlung und ehrliche Knoten akzeptieren niemals einen Block, der eine dieser Transaktionen enthält. Ein Angreifer kann nur eine seiner eigenen Transaktionen ändern, um das Geld wiederzuerlangen, das er gerade ausgegeben hat.
Der Wettlauf zwischen der legitimen Kette und der Kette des Angreifers kann als ein binärer Zufallslauf charakterisiert werden. Das Erfolgsereignis ist die Verlängerung der legitimen Kette, die Erhöhung um + 1, und das Fehlerereignis ist die Verlängerung der Kette des Angreifers, wodurch die Verzögerung von -1 reduziert wird.
Die Wahrscheinlichkeit, dass ein Angreifer aufholt, ist analog zum Ruin-Problem des Spielers. Stellen Sie sich einen Spieler mit unbegrenzten Credits vor, der mit negativ beginnt und eine unendliche Anzahl von Spielen spielt, um zu versuchen, die Gewinnschwelle zu erreichen. Die Wahrscheinlichkeit, dass es dorthin gelangt, oder dass ein Angreifer erfolgreich die legitime Kette fängt, wird wie folgt berechnet [8]:
p = Wahrscheinlichkeit, dass ein ehrlicher Knoten den nächsten Block findet
q = Wahrscheinlichkeit, dass der Angreifer den nächsten Block findet
qz = Wahrscheinlichkeit, dass es dem Angreifer gelingt, die Kette mit z-Blöcken zu fangen
Angesichts unserer Hypothese p> q nimmt die Wahrscheinlichkeit exponentiell ab, abhängig von der Anzahl der Blöcke, die der Angreifer fangen muss. Mit den Chancen gegen ihn, wenn er nicht früh eine Glückssträhne hat, werden seine Chancen geringer, je weiter er zurückfällt.
Wir sind jetzt an der Zeit interessiert, in der der Empfänger einer neuen Transaktion warten muss, bevor er ausreichend beruhigt ist, dass der Aussteller die Transaktion nicht modifizieren kann. Wir gehen davon aus, dass der Absender ein Angreifer ist, der den Empfänger glauben machen will, dass er für einige Zeit bezahlt wurde, und dann die Transaktion ändern möchte, um das Geld aus der Transaktion nach einer gewissen Zeit zurückzuerhalten. Der Empfänger wird benachrichtigt, wenn dies geschieht, aber der Sender hofft, dass es zu spät sein wird.
Der Empfänger generiert ein neues Schlüsselpaar und gibt den öffentlichen Schlüssel kurz vor dem Signieren an den Absender. Dies verhindert, dass der Absender im Voraus eine Kette von Blöcken vorbereitet, indem er daran arbeitet, bis er eine ausreichende Vorauszahlung erhält, und er macht die Transaktion zu diesem Zeitpunkt. Sobald die Transaktion ausgegeben ist, beginnt der unehrliche Aussteller an einem alternativen Kanal zu arbeiten, der eine modifizierte Version der Transaktion enthält.
Der Empfänger wartet darauf, dass die Transaktion zu einem Block hinzugefügt wird, und danach wurden z-Blöcke hinzugefügt. Er weiß nicht genau, wie der Angreifer vorgeht, aber unter der Annahme, dass die legitimen Blöcke die erwartete durchschnittliche Zeit pro Block berechnen, ist der potentielle Fortschritt des Angreifers eine Poisson-Verteilung. als Erwartungswert haben:
Um die Wahrscheinlichkeit zu erhalten, dass der Angreifer es immer noch schafft aufzuholen, multiplizieren wir die Poisson-Dichte für jeden Progressionsbetrag, den er erhalten könnte, mit der Wahrscheinlichkeit, dass er von diesem Punkt aufholt:
Durch Umordnen, um das Hinzufügen zur Unendlichkeit zu vermeiden ...
In C-Code konvertiert ...
#einschließen
doppelte AttackerSuccessProbability (double q, int z)
{
Doppelp = 1.0 - q;
doppeltes Lambda = z * (q / p);
Doppelsumme = 1.0;
int i, k;
für (k = 0; k <= z; k ++)
{
Doppelpoisson = exp (-lambda);
für (i = 1; i <= k; i ++)
Fisch * = Lambda / i;
Summe - = Fisch * (1 - pow (q / p, z - k));
}
Rücksendungssumme;
}
Bei einigen Tests beobachten wir, dass die Wahrscheinlichkeit gemäß z exponentiell abnimmt:
q = 0.1
z = 0p = 1.0000000
z = 1p = 0.2045873
z = 2p = 0.0509779
z = 3p = 0.0131722
z = 4p = 0.0034552
z = 5p = 0.0009137
z = 6p = 0.0002428
z = 7p = 0.0000647
z = 8p = 0.0000173
z = 9p = 0.0000046
z = 10 p = 0.0000012
q = 0.3
z = 0p = 1.0000000
z = 5p = 0.1773523
z = 10 p = 0.0416605
z = 15 p = 0.0101008
z = 20 p = 0.0024804
z = 25 p = 0.0006132
z = 30 p = 0.0001522
z = 35 p = 0.0000379
z = 40 p = 0.0000095
z = 45 p = 0.0000024
z = 50 p = 0.0000006
Lösungen für P weniger als 0.1% ...
P <0.001
q = 0.10 z = 5
q = 0.15 z = 8
q = 0.20 z = 11
q = 0.25 z = 15
q = 0.30 z = 24
q = 0.35 z = 41
q = 0.40 z = 89
q = 0.45 z = 340
12. Fazit
Wir haben ein System elektronischer Transaktionen vorgeschlagen, das nicht auf Vertrauen beruht. Wir begannen mit einem üblichen Satz von digitalen Signaturstücken, die eine starke Eigentumskontrolle bieten, aber unvollständig bleiben, ohne doppelte Ausgaben zu vermeiden. Um dieses Problem zu lösen, haben wir ein Peer-to-Peer-Netzwerk vorgeschlagen, das einen Arbeitsnachweis verwendet, um ein öffentliches Transaktionsprotokoll aufzuzeichnen, das durch Berechnung schnell unangreifbar wird, wenn die ehrlichen Knoten den Großteil der Rechenleistung steuern. Das Netzwerk ist robust in seiner unstrukturierten Einfachheit. Die Knoten arbeiten mit sehr wenig Koordination zusammen. Sie müssen nicht authentifiziert werden, da die Nachrichten nicht an einen bestimmten Empfänger gesendet werden und am besten geliefert werden müssen. Die Knoten können nach Belieben das Netzwerk verlassen und sich diesem anschließen, wobei sie die Beweislast für die Arbeit akzeptieren, die während ihrer Abwesenheit stattgefunden hat. Sie stimmen mit ihrer Rechenleistung ab, drücken ihre Zustimmung zu gültigen Blöcken aus, indem sie daran arbeiten, sie zu erweitern, und weisen ungültige Blöcke zurück, indem sie sich weigern, an ihnen zu arbeiten. Mit diesem Konsensmechanismus können alle notwendigen Regeln und Anreize angewendet werden.
Referenzen
[1] W. Dai, "B-Geld"
http://www.weidai.com/bmoney.txt 1998.
In 2th Symposium on Information Theory [20] H. Massias, XS Avila, und JJ Quisquater, "Entwurf einer sicheren timestamping Dienstleistungen mit einem Minimum an Vertrauen Anforderungen" in den Benelux-Ländern, Mai 1999.
[3] S. Haber, WS Stornetta, "Wie man ein digitales Dokument zeitlich stempelt", im Journal of Cryptology, 3 Band, Nr. 2, Seiten 99-111, 1991.
In Sequenzen II [4] D. Bayer, S. Haber, WS Stornetta, "die Effizienz und Zuverlässigkeit der digitalen Zeitstempel zu verbessern": Methoden in Kommunikation, Sicherheit und Informatik, 329-334 Seiten 1993.
[5] S. Haber, WS Stornetta, "Sichere Namen für Bitstrings", In Proceedings der 4th ACM Konferenz für Computer- und Sicherheits-Kommunikation, Seiten 28-35, April 1997.
[6] A. Zurück, "Hashcash - eine Denial of Service Gegenmaßnahme"
http://www.hashcash.org/papers/hashcash.pdf 2002.
[7] RC Merkle, "Protokolle für Kryptosysteme mit öffentlichem Schlüssel", In Proc. 1980 Symposium über Sicherheit und Datenschutz, IEEE Computer Society, Seiten 122-133, April 1980.
[8] W. Feller, "Eine Einführung in die Wahrscheinlichkeitstheorie und ihre Anwendungen", 1957.