Niemand kennt die Identität hinter dem Verfasser des Whitepapers, welcher damit den Grundstein für Bitcoin gelegt hat.
Bitcoin:
Ein elektronisches
Peer to Peer
Zahlungssystem!
Satoshi Nakamoto
satoshin@gmx.com
www.bitcoin.org
Überblick!
Eine rein peer-to-peer-basierte Version elektronischen Bargelds würde es ermöglichen, Online-Zahlungen direkt von einer Partei zur anderen zu senden, ohne dass ein Finanzinstitut zwischengeschaltet ist.
Digitale Signaturen spielen dabei eine wichtige Rolle, aber die wesentlichen Vorteile gehen verloren, wenn dennoch eine vertrauenswürdige dritte Partei benötigt wird, um Doppelausgaben zu verhindern.
Wir schlagen vor, das Doppelausgabenproblem durch die Nutzung eines Peer-to-Peer-Netzwerks zu lösen.
Dabei werden Transaktionen durch Zeitstempel versehen, indem sie in eine fortlaufende Kette von hashbasierten Arbeitsnachweisen eingefügt werden.
Dadurch entsteht ein Verlauf, der nicht verändert werden kann, ohne den Arbeitsnachweis erneut zu erbringen.
Die längste Kette dient nicht nur als Nachweis für die Abfolge aller bestätigten Ereignisse, sondern auch als Beweis dafür, dass sie aus dem größten Pool an CPU-Leistung stammt.
Solange der Großteil der CPU-Leistung von Nodes stammt, die nicht kooperieren, um das Netzwerk anzugreifen, werden sie die längste Kette erzeugen und die Angreifer abwehren.
Das Netzwerk selbst erfordert eine minimale Struktur.
Nachrichten werden nach bestem Bemühen übermittelt und Nodes können das Netzwerk beliebig verlassen oder ihm beitreten.
Dabei akzeptieren sie die längste Arbeitsnachweiskette als Beweis dafür, was während ihrer Abwesenheit geschehen ist.
Einführung!
Der E-Commerce hängt heutzutage weitgehend von Finanzinstituten ab, die als vertrauenswürdige Dritte für die Abwicklung elektronischer Zahlungen dienen. Obwohl dieses System für die meisten Transaktionen gut funktioniert, hat es immer noch inhärente Schwächen aufgrund seines vertrauensbasierten Modells.
Vollständig irreversible Transaktionen sind praktisch nicht umsetzbar, da Finanzinstitute gezwungen sind, bei Streitigkeiten zu vermitteln.
Die Kosten für die Konfliktlösung erhöhen die Transaktionskosten, was die kleinste praktikable Transaktionsgröße einschränkt und die Möglichkeit kleinerer, gelegentlicher Transaktionen verringert.
Hinzu kommen die allgemeinen Kosten des Verlusts der Fähigkeit, irreversible Zahlungen für unwiderrufliche Dienstleistungen zu leisten. Mit der Möglichkeit einer Rückgängigmachung steigt der Bedarf an Vertrauen.
Händler müssen daher ihren Kunden gegenüber skeptisch sein und mehr Informationen von ihnen verlangen, als dies sonst der Fall wäre. Ein gewisser Prozentsatz an Betrug wird als unvermeidlich angesehen.
Diese Kosten und Zahlungsunsicherheiten können durch persönliche Interaktionen und die Verwendung von Bargeld vermieden werden, aber es fehlt an einem Mechanismus, der Zahlungen über Kommunikationskanäle ohne vertrauenswürdige Dritte ermöglicht.
Was benötigt wird, ist ein Zahlungssystem, das auf kryptografischen Beweisen anstelle von Vertrauen basiert und es zwei vertrauenswürdigen Parteien ermöglicht, direkt und ohne die Notwendigkeit einer vertrauenswürdigen dritten Partei Transaktionen miteinander abzuwickeln.
Transaktionen, die praktisch nicht rückgängig gemacht werden können, schützen Verkäufer vor Betrug, während übliche Treuhanddienste leicht implementiert werden könnten, um Käufer zu schützen.
In diesem Zusammenhang schlagen wir eine Lösung des Doppelausgabenproblems vor, bei der ein Peer-to-Peer-verteilter Zeitstempelserver verwendet wird, um einen rechnergestützten Nachweis der chronologischen Reihenfolge von Transaktionen zu erzeugen.
Das System ist sicher, solange ehrliche Nodes gemeinsam mehr CPU-Leistung kontrollieren als jede kooperierende Gruppe angreifender Nodes.
Transaktionen!
Wir definieren einen elektronischen Coin als eine Kette digitaler Signaturen.
Jeder Besitzer überträgt den Coin an den nächsten, indem er einen Hash-Wert der vorherigen Transaktion sowie den öffentlichen Schlüssel des nächsten Besitzers digital signiert und beide an das Ende des Coins anhängt.
Der Zahlungsempfänger kann die Signaturen verifizieren, um die Besitzerkette zu überprüfen.

Das Problem ist natürlich, dass der Zahlungsempfänger nicht verifizieren kann, dass
keiner der vorherigen Besitzer den Coin zweimal ausgegeben hat.
Eine herkömmliche Lösung ist das Hinzuziehen einer zentralen Autorität, oder Münzstätte, die jede Transaktion auf Doppelausgaben hin überprüft.
Nach jeder Transaktion muss der Coin bei der Münzstätte abgeliefert werden, um einen neuen ausgeben zu lassen, und nur im Falle von Coins, die direkt von der Münzstätte stammen, ist Verlass darauf, dass sie nicht doppelt ausgegeben wurden.
Das Problem mit dieser Lösung ist, dass das Schicksal des gesamten Geldsystems von dem Unternehmen abhängt, welches die Münzstätte betreibt, wobei jede Transaktion über dieses laufen muss, genau wie bei einer Bank.
Wir benötigen eine Möglichkeit, den Zahlungsempfänger wissen zu lassen, dass der
vorherige Besitzer keine früheren Transaktionen signiert hat.
Für unsere Zwecke ist die früheste Transaktion entscheidend, weshalb uns spätere Doppelausgabenversuche nicht kümmern.
Die einzige Möglichkeit, die Abwesenheit einer Transaktion zu bestätigen, ist es, sich aller Transaktionen bewusst zu sein.
Im Münzanstalt-basierten Modell wusste die Münzanstalt von allen Transaktionen und entschied, welche zuerst eintraf.
Um das ohne eine vertrauenswürdige dritte Partei zu gewährleisten, müssen Transaktionen öffentlich bekannt gemacht werden [1], und wir brauchen ein System, durch das Teilnehmer sich auf einen einzigen Verlauf der Reihenfolge ihres Empfangs einigen können.
Der Zahlungsempfänger benötigt einen Nachweis darüber, dass die Mehrheit der Nodes zum Zeitpunkt jeder Transaktion darin übereinstimmten, dass sie die zuerst empfangene war.
Zeitstempel-Server!
Die von uns vorgeschlagene Lösung beginnt mit einem Zeitstempelserver.
Ein solcher Server arbeitet, indem er einen Hash-Wert eines Blocks von Einträgen erzeugt, die zeitgestempelt werden sollen, und diesen weit verbreitet veröffentlicht, beispielsweise in einer Zeitung oder einem Usenet-Beitrag.
Der Zeitstempel belegt, dass die Daten zu diesem Zeitpunkt existiert haben müssen, um in den Hash-Wert eingefügt zu werden.
Jeder Zeitstempel schließt den vorherigen in seinen Hash-Wert ein und bildet so eine Kette, wobei jeder zusätzliche Zeitstempel die vorangegangenen bestätigt.

Proof-of-Work!
Um einen verteilten Zeitstempelserver auf Peer-to-Peer-Basis zu implementieren, benötigen wir anstelle von Zeitungen oder Usenet-Beiträgen ein Arbeitsnachweissystem, das dem von Adam Backs Hashcash ähnelt.
Der Arbeitsnachweis beinhaltet die Suche nach einem Wert, der, wenn er beispielsweise mit SHA-256 gehasht wird, mit einer bestimmten Anzahl von führenden Null-Bits beginnt.
Die erforderliche Arbeit steigt durchschnittlich exponentiell mit der Anzahl der benötigten Null-Bits und kann durch das Ausführen einer einzigen Hashfunktion überprüft werden.
Um den Arbeitsnachweis für unser Zeitstempelnetzwerk zu implementieren, erhöhen wir eine Nonce im Block so lange, bis ein Wert gefunden wird, der dem Block die erforderliche Anzahl von Null-Bits verleiht.
Sobald die zur Erstellung des Arbeitsnachweises erforderliche Rechenleistung aufgewendet wurde, kann der Block nicht mehr geändert werden, ohne diese Arbeit erneut zu leisten.
Wenn später Blöcke in die Kette aufgenommen werden, würde die Änderung eines Blocks die Neuerstellung aller nachfolgenden Blöcke erfordern.

Der Arbeitsnachweis löst auch das Problem der Repräsentation bei Mehrheitsentscheidungen.
Wenn die Mehrheit auf der Grundlage einer Stimme pro IP-Adresse basieren würde, könnte sie von jedem untergraben werden, der in der Lage ist, viele IP-Adressen bereitzustellen.
Der Arbeitsnachweis etabliert im Wesentlichen eine Stimme pro CPU.
Die Mehrheitsentscheidung wird durch die längste Kette repräsentiert, in die der größte Arbeitsaufwand investiert wurde.
Wenn der Großteil der CPU-Leistung von ehrlichen Nodes kontrolliert wird, wird die ehrliche Kette am schnellsten wachsen und alle konkurrierenden Ketten hinter sich lassen.
Um einen vergangenen Block zu ändern, müsste ein Angreifer die Arbeitsnachweise dieses Blocks und aller darauf folgenden Blöcke erneut erbringen und dann die Arbeit der ehrlichen Nodes einholen und überholen.
Wir werden später zeigen, dass die Wahrscheinlichkeit, dass ein langsamer Angreifer aufholt, exponentiell abnimmt, wenn weitere Blöcke hinzugefügt werden.
Um die zunehmende Hardwaregeschwindigkeit im Laufe der Zeit und das wechselnde Interesse am Betrieb von Nodes auszugleichen, wird die Schwierigkeit des Arbeitsnachweises durch einen gleitenden Durchschnitt bestimmt, der auf eine durchschnittliche Anzahl von Blöcken pro Stunde abzielt.
Wenn die Blöcke zu schnell erzeugt werden, erhöht sich die Schwierigkeit.
Netzwerk!
Die Schritte für den Betrieb des Netzwerks sind wie folgt:
Neue Transaktionen werden an alle Nodes im Netzwerk übertragen.
Jeder Node sammelt die neuen Transaktionen und gruppiert sie zu einem Block.
Jeder Node arbeitet daran, einen schwierigen Arbeitsnachweis für seinen Block zu finden.
Wenn ein Node einen Arbeitsnachweis findet, sendet er seinen Block an alle anderen Nodes im Netzwerk.
Die Nodes akzeptieren einen Block nur, wenn alle enthaltenen Transaktionen gültig sind und noch nicht ausgegeben wurden.
Nodes geben ihre Zustimmung zu einem Block, indem sie mit der Erstellung des nächsten Blocks in der Kette beginnen und dabei den Hashwert des akzeptierten Blocks als vorherigen Hashwert verwenden.
Nodes betrachten stets die längste Kette als die gültige Kette und arbeiten daran, sie weiter zu verlängern.
Wenn zwei Nodes gleichzeitig verschiedene Versionen des nächsten Blocks senden, können einige Nodes eine Version früher erhalten als die andere.
In diesem Fall arbeiten sie zunächst an der empfangenen Version, speichern jedoch den alternativen Zweig für den Fall, dass dieser länger wird.
Der Gleichstand wird aufgehoben, sobald der nächste Arbeitsnachweis gefunden wird und einer der Zweige länger wird.
Die Nodes, die am anderen Zweig gearbeitet haben, wechseln dann zum längeren Zweig.
Neu übertragene Transaktionen müssen nicht zwangsläufig von allen Nodes empfangen werden. Solange sie von vielen Nodes empfangen werden, werden sie innerhalb kurzer Zeit in einen Block aufgenommen.
Außerdem sind Blockübertragungen gegen verlorene Nachrichten resistent.
Wenn ein Node einen Block nicht empfängt, wird er ihn anfordern, sobald er den nächsten Block empfängt und erkennt, dass er einen verpasst hat.
Anreize!
Gemäß der Konvention ist die erste Transaktion eines Blocks eine besondere Transaktion, die einen neuen Coin erzeugt und dem Erzeuger des Blocks gehört.
Dies schafft einen Anreiz für Nodes, das Netzwerk zu unterstützen, und stellt einen Distributionsmechanismus dar, um neue Coins in Umlauf zu bringen, da es keine zentrale Autorität gibt, die sie ausgeben könnte.
Der stetige Zustrom einer konstanten Menge neuer Coins ähnelt dem Vorgehen von Goldproduzenten, die Ressourcen investieren, um zusätzliches Gold in Umlauf zu bringen.
In unserem Fall sind es die investierte CPU-Zeit und der Strom, die diesen Prozess antreiben.
Ein weiterer Anreiz für die Nodes sind Transaktionsgebühren.
Wenn der Ausgangswert einer Transaktion geringer ist als der Eingangswert, besteht die Differenz aus einer Transaktionsgebühr, die dem Anreizwert des Blocks, der die Transaktion enthält, hinzugefügt wird. Sobald eine vordefinierte Anzahl von Coins in Umlauf gebracht wurde, kann der Anreiz vollständig auf Transaktionsgebühren übergehen und damit vollständig inflationsfrei sein.
Dieser Anreizmechanismus kann dazu beitragen, Nodes zur Ehrlichkeit zu ermutigen.
Sollte ein gieriger Angreifer in der Lage sein, mehr CPU-Leistung als alle ehrlichen Nodes aufzubringen, müsste er zwischen dem Betrug anderer durch das Zurückhalten seiner Zahlungen und der Erzeugung neuer Coins wählen.
Es wäre für ihn profitabler, sich an die Regeln zu halten, die ihn mit mehr Coins begünstigen als alle anderen zusammen, anstatt das System und damit die Gültigkeit seines eigenen Reichtums zu untergraben.
Speicherplatz zurück gewinnen!
Sobald die letzte Transaktion in einem Coin unter einer ausreichenden Anzahl von Blöcken begraben ist, können die ausgegebenen Transaktionen vor ihr gelöscht werden, um Speicherplatz zu sparen.
Um dies zu ermöglichen, ohne den Hashwert des Blocks zu beeinträchtigen, werden Transaktionen in einen Hash-Baum gehasht, wobei nur die Wurzel des Baumes in den Hashwert des Blocks einbezogen wird.
Alte Blöcke können dann kompakter gemacht werden, indem die Zweige des Baumes beschnitten werden.
Die inneren Hashwerte müssen nicht gespeichert werden.

Der Kennsatz eines transaktionslosen Blocks würde etwa 80 Bytes umfassen.
Wenn wir davon ausgehen, dass Blöcke etwa alle 10 Minuten generiert werden, ergibt das eine Speicherbelegung von 80 Bytes * 6 * 24 * 365 = 4,2 MB pro Jahr.
Bei einer typischen Ausstattung von im Jahr 2008 verkäuflichen Computersystemen mit 2 GB RAM und einem nach Moores Gesetz anzunehmenden jährlichen Wachstum von 1,2 GB sollte Speicherplatz kein Problem sein, selbst wenn die Kennsätze von Blöcken gespeichert werden müssen.
Vereinfachte Zahlungsverifizierung!
Es ist möglich, Zahlungen zu verifizieren, ohne einen Full Node zu betreiben.
Ein Nutzer muss lediglich die Kennsätze der längsten Arbeitsnachweiskette aufbewahren, die er von Nodes abfragen kann, bis er überzeugt ist, dass er die längste Kette besitzt.
Zusätzlich erhält er den Hash-Baum-Zweig, der die Transaktion mit dem Block verbindet, in dem sie zeitgestempelt wurde.
Der Nutzer kann die Transaktion nicht selbst überprüfen, aber indem er sie mit einem Ort in der Kette verknüpft, kann er sehen, dass ein Netzwerknode sie akzeptiert hat. Blöcke, die nach diesem Block hinzugefügt wurden, bestätigen zusätzlich, dass das Netzwerk die Transaktion akzeptiert hat.

Die Überprüfung ist daher zuverlässig, solange aufrichtige Nodes das Netzwerk kontrollieren.
Allerdings ist sie gefährdet, wenn das Netzwerk von einem Angreifer übernommen wird.
Während Netzwerknodes in der Lage sind, Transaktionen selbst zu verifizieren, kann die vereinfachte Methode durch gefälschte Transaktionen eines Angreifers überlistet werden, solange er das Netzwerk übernimmt.
Eine Strategie zum Schutz davor wäre es, Warnmeldungen von Nodes zu akzeptieren, wenn diese einen ungültigen Block entdeckt haben.
Die Software des Nutzers könnte daraufhin den gesamten Block und die Transaktionen, die den Alarm ausgelöst haben, herunterladen, um die Inkonsistenz zu bestätigen.
Unternehmen, die regelmäßig Zahlungen empfangen, würden wahrscheinlich weiterhin ihre eigenen Nodes betreiben wollen, um ihre Sicherheitsmaßnahmen unabhängig zu kontrollieren und Transaktionen schneller zu verifizieren.
Zusammenführung und Aufteilung von Werten!
Obwohl es theoretisch möglich wäre, Coins individuell zu handhaben, wäre es unpraktisch, für jeden Cent einer Überweisung separate Transaktionen durchzuführen.
Um Werte zu kombinieren und aufzuteilen, enthalten Transaktionen daher oft mehrere Ein- und Ausgänge.
Normalerweise gibt es entweder einen Eingang von einer größeren vorangegangenen Transaktion oder mehrere Eingänge, die aus kleineren Beträgen zusammengesetzt sind.
Jede Transaktion kann höchstens zwei Ausgänge haben: einen für die Zahlung und einen, der eventuell anfallendes Wechselgeld zum Absender zurückschickt.

Es ist wichtig zu beachten, dass die Verzweigung von Transaktionen, bei der eine Transaktion von mehreren anderen abhängt, die wiederum von vielen weiteren abhängen, kein Problem darstellt.
Es ist niemals erforderlich, den gesamten Verlauf einer Transaktion zu extrahieren.
Datenschutz!
Das traditionelle Bankenmodell gewährleistet ein gewisses Maß an Datenschutz, indem der Zugang zu Informationen auf die beteiligten Parteien und die vertrauenswürdige dritte Partei beschränkt wird.
Die Notwendigkeit, alle Transaktionen öffentlich zu machen, schließt diesen Ansatz aus.
Datenschutz kann jedoch aufrechterhalten werden, indem der Informationsfluss an anderer Stelle unterbrochen wird, nämlich indem öffentliche Schlüssel anonym gehalten werden.
Die Öffentlichkeit kann sehen, dass jemand einen Betrag an jemand anderen sendet, aber ohne Informationen, die die Transaktion mit einer bestimmten Person verknüpfen.
Dies ähnelt den Informationen, die von Aktienbörsen veröffentlicht werden, wo Zeitpunkt und Umfang individueller Trades, das "Band", öffentlich gemacht werden, ohne die beteiligten Parteien preiszugeben.

Als zusätzliche Sicherheitsmaßnahme sollte für jede Transaktion ein neues Schlüsselpaar verwendet werden, um zu verhindern, dass sie mit einem gemeinsamen Besitzer in Verbindung gebracht werden kann.
Trotzdem ist bei Transaktionen mit mehreren Eingängen eine gewisse Verknüpfung unvermeidlich, da sie zwangsläufig offenlegen, dass die Eingänge vom selben Besitzer stammen.
Das Risiko, das durch die Offenlegung eines Schlüsselbesitzers entsteht, besteht darin, dass dadurch auch andere Transaktionen desselben Besitzers aufgedeckt werden könnten.
Berechnungen!
Betrachten wir den Fall eines Angreifers, der versucht, eine alternative Kette schneller als die ehrliche Kette zu generieren.
Selbst im Erfolgsfall eröffnet dies nicht die Möglichkeit willkürlicher Änderungen am System, wie etwa die Erzeugung von Wert aus dem Nichts oder die Beschlagnahmung von Geld, das dem Angreifer nie gehört hat.
Nodes werden keine ungültigen Transaktionen als Zahlungen akzeptieren, und aufrichtige Nodes werden niemals Blöcke akzeptieren, die solche Transaktionen enthalten.
Ein Angreifer kann nur versuchen, eine seiner eigenen Transaktionen zu ändern und Geld, das er kürzlich ausgegeben hat, zurückzuerlangen.
Das Wettrennen zwischen der aufrichtigen Kette und dem Angreifer kann als binomiale zufällige Irrfahrt charakterisiert werden.
Das Erfolgsereignis besteht darin, dass die aufrichtige Kette um einen Block erweitert wird, was ihren Vorsprung um +1 erhöht.
Das Fehlschlagsereignis besteht darin, dass die Angreiferkette um einen Block erweitert wird, wodurch der Abstand um -1 reduziert wird.
Die Wahrscheinlichkeit, dass ein Angreifer von einem gegebenen Abstand aufholt, entspricht dem Ruin-des-Spielers-Problem. Angenommen, ein Glücksspieler beginnt mit einem unbegrenzten Kredit und einem Rückstand und kann potenziell unbegrenzt viele Züge spielen, um seinen Rückstand auf null zu reduzieren. Wir können die Wahrscheinlichkeit, dass er den Rückstand aufholt oder dass ein Angreifer jemals die aufrichtige Kette einholt, folgendermaßen berechnen:
𝑝=Wahrscheinlichkeit, dass ein aufrichtiger Node den nächsten Block findet
𝑞=Wahrscheinlichkeit, dass der Angreifer den nächsten Block findet
𝑞𝑧=Wahrscheinlichkeit, dass der Angreifer jemals einen Rückstand von z Blöcken aufholt

Unsere Annahme, dass 𝑝>𝑞, vorausgesetzt, nimmt die Wahrscheinlichkeit mit der Anzahl der Blöcke, die der Angreifer aufholen muss, exponentiell ab. Wenn er nicht frühzeitig einen glücklichen Vorsprung erzielt, werden seine Chancen unter diesen widrigen Bedingungen rapide abnehmen, während er weiter zurückfällt.
Nun betrachten wir, wie lange der Empfänger einer neuen Transaktion warten muss, bevor er sich ausreichend sicher sein kann, dass der Absender die Transaktion nicht mehr ändern kann. Wir nehmen an, dass der Absender ein Angreifer ist, der dem Empfänger vorgaukeln will, dass er ihn vor einer Weile bezahlt hat, aber dann die Zahlung nach einer gewissen Zeit zurückleitet. Der Empfänger wird benachrichtigt, wenn dies geschieht, aber der Absender hofft, dass es dann bereits zu spät sein wird.
Der Empfänger generiert ein neues Schlüsselpaar und gibt dem Absender kurz vor der Signierung den öffentlichen Schlüssel. Dadurch wird der Absender daran gehindert, im Voraus eine Kette von Blöcken vorzubereiten und kontinuierlich daran zu arbeiten, bis er das Glück hat, weit genug in Führung zu gelangen, um dann in diesem Moment die Transaktion auszuführen. Sobald die Transaktion abgeschickt wurde, beginnt der unehrliche Absender heimlich an einer parallelen Kette zu arbeiten, die eine alternative Version seiner Transaktion enthält.
Der Empfänger wartet, bis die Transaktion zu einem Block hinzugefügt wurde und z Blöcke nach ihr aufgereiht sind. Er kennt das genaue Ausmaß des Fortschritts nicht, den der Angreifer gemacht hat, aber vorausgesetzt, dass die ehrlichen Blöcke die zu erwartende durchschnittliche Zeit pro Block benötigt haben, wird der potenzielle Fortschritt des Angreifers eine Poisson-Verteilung mit folgendem Erwartungswert haben:

Um die Wahrscheinlichkeit zu berechnen, dass der Angreifer noch aufholen kann, multiplizieren wir die Poisson-Dichte jedes Fortschritts, den er gemacht haben könnte, mit der Wahrscheinlichkeit, dass er von diesem Punkt aus aufholen kann:

Um die Summierung über den unendlichen Rand der Verteilung zu vermeiden, stellen wir die Formel um:

Und konvertieren diesen in C Code:
#include double AttackerSuccessProbability(double q, int z)
{
double p = 1.0 - q;
double lambda = z * (q / p);
double sum = 1.0;
int i, k;
for (k = 0; k <= z; k++)
{
double poisson = exp(-lambda);
for (i = 1; i <= k; i++)
poisson *= lambda / i;
sum -= poisson * (1 - pow(q / p, z - k));
}
return sum;
}
Wenn wir einige Ergebnisse betrachten, sehen wir, dass die Wahrscheinlichkeit exponentiell mit z abnimmt.
q=0.1
z=0 P=1.0000000
z=1 P=0.2045873
z=2 P=0.0509779
z=3 P=0.0131722
z=4 P=0.0034552
z=5 P=0.0009137
z=6 P=0.0002428
z=7 P=0.0000647
z=8 P=0.0000173
z=9 P=0.0000046
z=10 P=0.0000012
q=0.3
z=0 P=1.0000000
z=5 P=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
Auflösung für P kleiner 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
Fazit!
Wir haben ein System für elektronische Transaktionen vorgeschlagen, das ohne Vertrauen auskommt. Wir begannen mit dem herkömmlichen Ansatz von digitalen Signaturen als Coins, was eine starke Kontrolle der Inhaberschaft ermöglicht, aber keine Lösung für das Problem der Doppelausgaben bietet. Um dies zu lösen, schlugen wir ein Peer-to-Peer-Netzwerk vor, das Arbeitsnachweise verwendet, um einen öffentlichen Verlauf von Transaktionen aufzuzeichnen. Dieser Verlauf wird durch Angreifer nur schwer veränderbar, solange ehrliche Nodes die Mehrheit der CPU-Leistung kontrollieren. Das Netzwerk zeichnet sich durch seine einfache und robuste Struktur aus. Nodes arbeiten unabhängig und benötigen nur wenig Koordination. Sie müssen nicht identifiziert werden, da Nachrichten ohne feste Zieladresse gesendet werden und nur nach dem Prinzip des bestmöglichen Bemühens zugestellt werden müssen. Nodes können dem Netzwerk beitreten oder es verlassen, ohne dass dies große Auswirkungen hat. Sie akzeptieren die Arbeitsnachweiskette als Beweis für vergangene Ereignisse und stimmen mit ihrer CPU-Leistung ab. Durch die Arbeit an gültigen Blöcken drücken sie ihre Zustimmung aus, während sie ungültige Blöcke ablehnen, indem sie sich weigern, an ihnen zu arbeiten. Mit diesem Konsensmechanismus können alle erforderlichen Regeln und Anreize durchgesetzt werden.
Quellenangaben!
1. W. Dai, “b-money,” http://www.weidai.com/bmoney.txt, 1998.
2. H. Massias, X.S. Avila, and J.-J. Quisquater, “Design of a secure timestamping service with minimal trust requirements,” in: 20th Symposium on Information Theory
in the Benelux, Mai 1999.
3. S. Haber, W.S. Stornetta, “How to time-stamp a digital document,” in: Journal of
Cryptology, Bd. 3, Nr. 2, S. 99-111, 1991.
4. D. Bayer, S. Haber, W.S. Stornetta, “Improving the efficiency and reliability of digital
time-stamping,” in: Sequences II: Methods in: Communication, Security and Computer Science, S. 329-334, 1993.
5. S. Haber, W.S. Stornetta, “Secure names for bit-strings,” in: Proceedings of the 4th
ACM Conference on Computer and Communications Security, S. 28-35, April 1997.
6. A. Back, “Hashcash – a denial of service counter-measure,”
http://www.hashcash.org/papers/hashcash.pdf, 2002.
7. R.C. Merkle, “Protocols for public key cryptosystems,” in: Proc. 1980 Symposium on
Security and Privacy, IEEE Computer Society, S. 122-133, April 1980.
8. W. Feller, “An introduction to probability theory and its applications,” 1957.
Satoshi Nakamoto
Cypherpunks
Das erste Mal verteilt wurde das Whitepaper über eine Mailingliste von Cypherpunks, welche sich aktiv für Privatsphäre im Internet einsetzen.
In Progress
Das Whitepaper war eine reine Idee, woraufhin der Code geschrieben wurde und noch heute wird aktiv an dem Netzwerk gearbeitet.
First Mover
Es gab etliche Vorgänger, aber Bitcoin war das erste digitale Zahlungssystem welches ohne zentrale Instanz funktionierte.