Etwas Technik: Was ist Double-Spending?

Was geschieht, wenn jemand denselben Bitcoin (BTC) zweimal senden möchte? Wenn er zwei Transaktionen fast zeitgleich im Bitcoin-System veröffentlicht, die sich auf denselben BTC beziehen? Der bereits beschriebene Ablauf einer Transaktion verhindert die doppelte Ausgabe von Bitcoins („double spendings“), denn nur eine Transaktion desselben BTC wird in die Blockchain aufgenommen. Das ist eine elementare Eigenschaft des Bitcoin-Systems.

Jede beabsichtigte Transaktion wird vom System, genauer von der Senderwallet, an alle Computer mit Routingfunktion („Nodes“) übermittelt. Die Nodes verifizieren die jeweilige Transaktion und schieben sie in den sogenannten „Mempool“. Ein Mempool ist ein digitaler Ort, an dem sich alle verifizierten Transaktionen befinden.

Im Mempool bedienen sich die Miner jener verifizierten Transaktionen, um sie in neu erstellte Blöcke zu integrieren. Im Anschluss verschlüsseln sie Letztere und hängen sie an die Blockchain. Dabei suchen sich verschiedene Miner unterschiedliche Transaktionen aus. So kann es sein, dass unterschiedliche Miner zufällig zeitgleich jeweils eine der beiden Transaktionen, die sich auf denselben BTC beziehen, in ihren Block einbauen und einen gültigen Hashwert dafür finden. Ein Hash ist ein Code, der aus einer Reihe von Buchstaben und Zahlen besteht. Der Hash ist der Code, nach dem die Miner suchen, um einen Block zu erstellen. 

Eine Abzweigung in der Blockchain – ein seltener Fall

Da sich die beiden Miner auf denselben letzten Block der Blockchain beziehen, werden in diesem seltenen Fall beide neuen Blöcke an diesen Block angehängt. So entsteht eine Abzweigung in der Blockchain, eine sogenannte „Fork“. Der Bitcoin Algorithmus bestimmt, dass immer am längsten Ende der Blockchain weitergebaut wird. Nun aber gibt es zwei gleichlange, aber kurze, neue Ketten.

Deshalb wird ein Teil der Miner seinen nächsten Block für den einen Anbau der Fork und der andere Teil seinen nächsten Block für den anderen Anbau minen. In der Folge entscheidet sich, welche Kette schneller wächst. Sobald an einer Kette ein Block mehr als an der anderen hängt, werden sich alle Miner wieder auf diese Kette konzentrieren. In diesem Fall wandern die gültigen Transaktionen in dem Block, an dem nicht weitergebaut wurde, zurück in den Mempool.

Bitcoin ist manipulationsresistent

In Ausnahmefällen kann es auch dazu kommen, dass an beide Enden mehrere Blöcke angehängt werden, bis eine der beiden Ketten eindeutig länger ist. Entsprechend wandern dann die gültigen Transaktionen aus den anderen Blöcken wieder zurück in den Speicherpool oder Mempool. Wenn der Empfänger von Bitcoin sechs neu erstellte Blöcke – das dauert ungefähr eine Stunde – abwartet, kann er ganz sicher sein, dass eine Transaktion erfolgreich war.

Damit eine Transaktion in der Blockchain dokumentiert wird und als ausgeführt gilt, muss sie also in einen gültigen Block aufgenommen werden. Ein gültiger Block muss einen Ausführungsnachweis – also einen Proof-of-Work – enthalten. Die Blockchain besteht aus fest miteinander verketteten Blöcken und ist dadurch manipulationsresistent.

Mehr lesen zu…

Quellen

Antonopoulos, A. M. (2017). Mastering Bitcoin: Programming the Open Blockchain (zweite Auflage). Sebastopol, California: O’Reilly Media.

Antonopoulos, A. M. (2015). 51% Bitcoin Attack, unter: https://www.youtube.com/watch?v=ncPyMUfNyVM (abgerufen am 25.01.2019).

Narayanan, A., Bonneau, J., Felten, E., Miller, A., & Goldfeder, S. (2016). Bitcoin and Cryptocurrency Technologies: A Comprehensive Introduction. Princeton, New Jersey: Princeton University Press.