Die Timechain, also Bitcoins Blockchain, ist die zusammenhängende Kette gültiger Blöcke vom Genesis Block bis zur aktuellen Spitze des Netzwerks. Jeder weitere Block verweist auf den Hash seines Vorgängers, dessen digitalen Fingerabdruck, und fügt eigenen Proof of Work hinzu: einen Nachweis der zur Blockerstellung erforderlichen Rechenarbeit. Knoten können dadurch unabhängig prüfen, welche Historie die Regeln erfüllt und die größte kumulierte Arbeit besitzt. „Zeit“ bedeutet hier keine exakte Uhr für jede Transaktion, sondern vor allem eine nachweisbare Reihenfolge von Ereignissen.
Stell dir eine öffentliche Buchungshistorie vor, bei der Tausende Computer jede neue Seite unabhängig prüfen können. Eine Seite ist ein Block. Er enthält Transaktionen und einen Verweis auf den vorherigen Block; die Seiten haben damit eine feste Reihenfolge und lassen sich nicht beliebig mischen. Die Timechain ist diese gesamte verbundene Folge vom ersten Block bis zur heutigen Spitze. Sie sagt nicht, wie viel Bitcoin eine namentlich bekannte Person besitzt. Sie bewahrt die Transaktionshistorie, aus der Knoten die noch nicht ausgegebenen Outputs ableiten. Sie ist auch kein Server eines Unternehmens. Jeder Full Node (ein Knoten, der Transaktionen und Netzwerkregeln selbst prüft) kann eine Kopie herunterladen und verifizieren. [1] [3]
Im Bitcoin-Kontext bezeichnen beide Namen dieselbe Blockhistorie. Erhaltener Vorabcode vom November 2008 verwendete timechain in Kommentaren sowie Variablen- und Funktionsnamen. Das Whitepaper spricht dagegen von Zeitstempeln, einer Kette von Blöcken und einer Proof-of-Work-Kette; das genaue Wort timechain kommt dort nicht vor. Später wurde Blockchain weltweit zum gebräuchlichen Begriff. Heute ist es auch eine breite Bezeichnung für andere Netzwerke und Datenbanken, während die Bitcoin Timechain die konkrete Kette von Bitcoin ist. Die beiden Wörter im Titel nennen also keine zwei Protokolle. Sie verbinden den historischen Namen mit dem heutigen Alltagsbegriff. [2] [1] [8]
Eine digitale Signatur kann belegen, dass der Besitzer des nötigen Schlüssels eine Transaktion autorisiert hat. Allein verhindert sie nicht, dass jemand zwei widersprüchliche Transaktionen signiert, die denselben noch nicht ausgegebenen Ausgang einer früheren Transaktion (UTXO) ausgeben wollen. Ein Knoten kann zuerst die Zahlung an einen Händler erhalten, ein anderer zuerst die Rücküberweisung desselben Werts an den Absender. Das Netzwerk braucht deshalb eine gemeinsame Historie, die festlegt, welche Ausgabe bestätigt wurde und welche nicht mehr gültig sein kann. Blöcke geben Transaktionen einen überprüfbaren Platz in dieser Reihenfolge. Sie beweisen aber nicht, welche Nachricht in menschlicher oder Netzwerkzeit zuerst entstand; Knoten können unbestätigte Transaktionen unterschiedlich geordnet gesehen haben. [1]
Der Block Header enthält die wesentlichen Kopfdaten eines Blocks. Dazu gehören der Hash des vorherigen Headers und der Merkle Root, der die Transaktionskennungen dieses Blocks in einem Hash zusammenfasst. Ein Hash ähnelt einem digitalen Fingerabdruck: Schon eine kleine Änderung der Eingabe erzeugt ein anderes Ergebnis. Würde jemand eine alte Transaktion verändern, änderten sich Merkle Root, Blockhash und der Verweis im nächsten Block. Die Änderung bliebe nicht eine einzelne Zeile der Historie, sondern würde die gesamte folgende Verbindung brechen. Ein Hash allein beweist nicht, dass Transaktionen die Regeln einhalten. Knoten müssen zugleich die Transaktionen validieren, und jeder Block muss den geforderten Proof of Work erfüllen. [3] [1]
Ein Knoten akzeptiert einen Zweig nicht bloß, weil er länger ist oder von einem großen Miner verbreitet wird. Zuerst prüft er die Regeln: Proof of Work, Verknüpfungen mit Vorgängerblöcken, zulässige Belohnung, Transaktionen, Ausgabebedingungen und ob Inputs auf bereits ausgegebene Mittel verweisen. Ein ungültiger Zweig bleibt unabhängig von der Rechenleistung seines Urhebers ungültig. Erst unter gültigen Kandidaten wählt der Knoten die Kette mit der größten kumulierten Arbeit. Präziser ist daher der „gültige Zweig mit der meisten Arbeit“ statt nur die „längste Kette“. Das Feld chainwork schätzt anhand der jeweiligen Schwierigkeit die erwartete Zahl von Hashes zur Erzeugung der Kette; es zählt nicht die tatsächlich ausgeführten Versuche der Miner. [4] [5] [6]
Proof of Work kostet Zeit, Strom und Rechenleistung, lässt sich danach aber schnell prüfen. Wer einen alten Block verändert, muss für ihn neuen gültigen Proof of Work erzeugen, alle späteren Blöcke neu verbinden und zugleich die Arbeit einholen, welche die ehrliche Kette weiter ergänzt. Je tiefer ein Block unter der Spitze liegt, desto größer ist der Vorsprung der üblichen Historie. Das ist kein mathematisches Versprechen, dass sich die Vergangenheit niemals ändert. Es ist eine ökonomische und probabilistische Verteidigung: Weitere Blöcke verteuern einen erfolgreichen Rewrite gewöhnlich sehr schnell. Ein Angreifer kann außerdem keine beliebige ungültige Zahlung oder zu viele Bitcoin einfügen, weil andere Knoten diesen Block ablehnen würden. [1] [4]
Ein Miner setzt einen Zeitstempel in den Block Header. Die Konsensregeln lassen einen gewissen Spielraum, daher beweist der Wert time nicht exakt, wann ein Block oder eine bestimmte Transaktion entstand. Der Zeitstempel eines Blocks muss nicht einmal höher sein als der seines direkten Vorgängers. Für manche Regeln verwendet Bitcoin deshalb Median Time Past, den Median der Zeitstempel der vorherigen 11 Blöcke. Für den Median werden diese Zeitstempel sortiert und der mittlere Wert ausgewählt. Dieser Wert schreitet gleichmäßiger fort als einzelne Angaben. Auch zehn Minuten Blockabstand sind nur ein Zielmittelwert, kein Fahrplan. Zwei Blöcke können kurz nacheinander kommen, die nächste Lücke deutlich länger sein. Die Blockhöhe gibt eine genaue Position in der Kette, keine genaue Kalenderzeit. [4] [7]
Zwei Miner können nahezu gleichzeitig verschiedene gültige Blöcke auf derselben Höhe finden. Manche Knoten sehen zuerst den einen, andere den zweiten Zweig. Sobald späterer Proof of Work einen Unterschied erzeugt, wechseln Knoten zum gültigen Zweig mit mehr kumulierter Arbeit. Dieser Wechsel heißt Reorg. Transaktionen aus dem abgetrennten Block können in der neuen Kette bestätigt werden, in den Mempool zurückkehren oder ungültig werden, wenn die neue Historie eine widersprüchliche Ausgabe bestätigt. Die Aufnahme in einen Block ist die erste Bestätigung; jeder weitere Block darüber fügt eine hinzu. Eine universelle magische Zahl gibt es nicht. Die nötige Sicherheit hängt von Wert, Risiko und möglicher Wartezeit ab. [1] [3]
Bitcoin kann eine Transaktion vorgeben, die erst ab einer bestimmten Blockhöhe oder nach einer bestimmten Zeit bestätigt werden darf. Ein Timelock ist kein Befehl, sie in dieser Minute automatisch auszuführen. Er legt nur den frühesten Punkt fest, ab dem ein gültiger Block sie aufnehmen darf. Für zeitbasiertes nLockTime verwendet BIP 113 den Median Time Past des vorherigen Blocks statt des leicht verschiebbaren Zeitstempels des gerade erzeugten Blocks. Die Bedingung stützt sich damit auf mehrere Blöcke. Auch nach ihrer Erfüllung muss die Transaktion verbreitet, von Knoten angenommen und von einem Miner ausgewählt werden; die Aufnahme in einen bestimmten Block ist nicht garantiert. [7] [4]
RPC ist eine Schnittstelle, über die du dem Knoten Befehle geben und seine Antworten lesen kannst. Ein Full Node muss keinem öffentlichen Explorer glauben, dass ein Block oder eine Transaktion zur aktuellen Historie gehört. Für einen bestimmten Hash zeigt getblock unter anderem Höhe, Bestätigungen, Merkle Root, time, mediantime, vorherigen Hash, Schwierigkeit und chainwork. Jedes Feld beantwortet eine andere Frage: height nennt die Position, previousblockhash die Abstammung, confirmations die Tiefe unter der Spitze, time die Headerangabe, mediantime einen Median und chainwork die kumulierte erwartete Arbeit. Keine Zahl genügt allein. Der Sinn der Timechain liegt darin, dass der Knoten ihren Zusammenhang und sämtliche Konsensregeln als Ganzes prüft. [6] [4]
Für ein möglichst vollständiges Bild lies diesen Eintrag zusammen mit Genesis Block, Proof of Work, Transaktion, Full Node, Difficulty Adjustment. Auf diesen Eintrag verweisen außerdem Bitcoin Whitepaper, Genesis Block, Proof of Work, Full Node.