Bitcoin von der Transaktion zum Wallet

Dieser Artikel bring Euch in Kurzform die technischen Details rund um den Bitcoin näher, wobei ich mich auf die praktischen Details konzentriere.

Welchen Weg nimmt eine Transaktion, also eine „Überweisung“, im Bitcoin-System?

Adresse: Alles fängt mit einer bzw. zwei Bitcoin-Adressen an, welche aus dem Schlüsselpaar (privat und öffentlich) einer „Elliptischen Kurvenoperation“ („EcKey“) erzeugt werden. Der Sender hat eine Adresse und der Empfänger hat auch so eine Adresse (beispielsweise im Testnet: „mnzUr2qbm8gDQQoMjz3k9UhiPuNq6QDFA5“). Da es kein Verzeichnis über die „Inhaber“ der Adresse gibt ist die Adresse und alle darüber abgewickelten Transaktionen komplett anonym.

Transaktion: die elektronische Überweisung von Bitcoins wird Transaktion genannt und besteht im einfachsten Fall aus drei Eingabebausteinen: der Absenderadresse, der Empfänger-Adresse und dem Betrag („value“). Auch an dieser Stelle bemerken wir wieder die Anonymität der Zahlung – es tauchen weder Absender- noch Empfängernamen auf. Da es keine zentrale Abwicklungsinstanz gibt (im klassischen Überweisungssystem sind das die Banken) benötigt das Bitcoin-System eine andere Art der Autorisierung. Diese wird dadurch erreicht, das die Transaktion nur mit dem zur Absenderadresse gehörenden privaten Schlüssel unterzeichnet und damit freigegeben werden kann. Die elektronische Unterschrift wird im Bitcoin-Netzwerk geprüft und dann in einen Block aufgenommen.

Block: Der Block ist die kleinste Einheit in der Bitcoin-Blockchain und setzt sich aus vielen einzelnen Transaktionen zusammen (in der Realität besteht ein Block schon mal aus 200 einzelnen Transaktionen). Dieser Block wird dann von einem „Miner“ übernommen, der im Zuge vieler Hash-Aktionen versucht, den richtigen Anschluss an die bestehende Blockchain (genauer an den letzten Block) zu finden. Sobald er den richtigen Hashwert gefunden hat, übergibt er den Block mit samt dem Hashwert an das Bitcoin Netzwerk, wo die Berechnung überprüft und weiter verteilt wird. Jede Überprüfung führt zu einer Erhöhung des „Confidence“-Wertes und es besteht eine Übereinkunft, das nach 6 Bestätigungen der Block und die darin befindlichen Transaktionen als gültig und final angesehen werden.

Blockchain: alle Blöcke werden hintereinander in die Blockchain geschrieben und sind durch den Hashwert des jeweiligen Vorgängers miteinander verbunden. Suche ich also einen alten Block besteht nur die Möglichkeit, alle neueren Blöcke der Reihe nach durchzugehen und dann den jeweiligen Vorgänger zu suchen.

Wir haben bislang nur die Absenderseite betrachtet, wie sieht es auf der Empfängerseite aus? Grundsätzlich wird der Empfänger (oder besser seine Adresse) nicht über einen Zahlungseingang informiert. Da niemand die Identität des Empfängers kennt, auch kann auch niemand aktiv den Empfänger darüber informieren, das irgendwo auf der Welt seine Adresse in einer Transaktion benutzt worden ist. Um dieses Dilemma zu lösen wurde das Wallet entwickelt.

Wallet: Die deutsche Übersetzung für ein Wallet lautet „Geldbörse“ und gibt einen vagen Eindruck über seine Aufgabe. In das Wallet wird das EC-Schlüsselpaar (siehe Punkt Adresse) importiert und fortan schaut das Wallet ununterbrochen in die Blockchain. Sobald die Blockchain einen neuen Block meldet, wird dieser heruntergeladen und die Transaktionen darin auf die Empfänger-Adresse überprüft. Findet das Wallet eine Transaktion mit dieser Empfänger-Adresse erhöht es den „Guthabenbetrag“ für diese Adresse um den Überweisungsbetrag. Im umgekehrten Fall einer Überweisung reduziert das Wallet natürlich den Guthabenbetrag um den Überweisungsbetrag und einer Gebühr (Fee). Um es an dieser Stelle noch einmal deutlich zu sagen: es gibt KEIN Guthaben, sondern nur die Addition von einzelnen Überweisungsbeträgen.

Anonymität und öffentliche Blockchain: auch wenn die Adresse grundsätzlich anonym ist, so ist die Identität des Adresseninhabers mindestens dem Absender einer Transaktion bekannt. Kommen über die Jahre jetzt einige Transaktionen über dieselbe (Empfänger-) Adresse zusammen so kann jeder Absender mühelos auch alle anderen Bewegungen in der öffentlich zugänglichen Blockchain sehen, was den Empfängern sicherlich nicht recht sein kann. Wie kann diese unschöne Situation vermieden werden? Hierfür benutzen wir die nach jeder Transaktion veränderten Empfangsadressen (sogenannte „current receive addresses“).

Wechselnde Empfänger-Adressen: Zur Wahrung der Anonymität erzeugt der Empfänger für jede einzelne (geplante) Empfangs-Transaktion eine eigene Adresse und teilt sie dem Absender mit. Dadurch kennt jeder Absender nur eine Empfänger-Adresse und kann nur seine eigene Transaktion im Netz verfolgen, nicht jedoch die übrigen Transaktionen. Damit wächst auf der Empfängerseite die Komplexität, denn der Empfänger muss für alle Empfangsadressen das EC-Schlüsselpaar bereithalten, sonst kann er über die dort schlummernden Guthaben nicht (nie) wieder verfügen, was einem totalen Verlust der Bitcoins gleichkommt. Sinnvollerweise wird auch das neue Schlüsselpaar wieder im Wallet gespeichert und kann anschließend für die Abfrage einer Zahlungsbewegung oder Überweisungen genutzt werden.

Sicherung des Wallets: Eine zentrale Bedeutung hat die Sicherung („Backup“) des Wallets und der darin befindlichen Schlüsselpaare. Sollte das Wallet gelöscht werden und ich keinen Papierausdruck aller meiner Schlüsselpaare haben ist das gespeicherte Guthaben weg – unwiederbringlich. Auch hierfür wurde eine Lösung gesucht und gefunden, die sogenannten HD-Wallets.

Hierarchisch deterministische Wallets: Diese Wallets werden abgekürzt einfach „HD-Wallets“ genannt und bieten mehrere Vorteile. Zum einen wird nur ein einzelnes EC-Schlüsselpaar benötigt, aus dem alle anderen Schlüsselpaare abgeleitet werden (dieses wird dann „Master-“ oder „Determistic-“ Schlüsselpaar genannt). Zum anderen kann das Schlüsselpaar aus der Folge von zwölf einzelnen Wörtern erzeugt werden – damit braucht der Anwender zur Sicherung auch nur diese zwölf magischen Wörter in der richtigen Reihenfolge aufzubewahren.

Guthaben eines HD-Wallets: An dieser Stelle wird die Vorstellungskraft ein wenig strapaziert, denn beim ausgewiesenen Guthaben handelt es sich die Addition der (ebenfalls aufaddierten) Guthaben jeder einzelnen Adresse im Wallet. Anderes als beim klassischen Bankkonto könnt Ihr Euch ein HD-Wallet als eine Sammlung von verschiedenen Bankkonten für den Empfänger vorstellen, wobei jedes einzelne Konto ein unterschiedliches Guthaben aufweisen dürfte. Hier stellt sich nun die Frage: wie überweise ich nun einen Betrag, welcher höher als das Guthaben eines Kontos (hier der Adresse) ist?

Überweisungen bei einem HD-Wallet: Bei einem klassischen Konto ist klar – ist nicht genügend Guthaben auf dem Konto, kann ich maximal den Guthabenbetrag für eine Überweisung nutzen. Gerade durch die Aufsplitterung in viele einzelne (Empfänger-) Adressen wird es zwangsläufig dazu kommen, das eine Adresse für die Ausführung einer größeren Transaktion nicht ausreicht. Das Bitcoin-System ist dafür vorbereitet und bietet es an, eine Transaktion aus mehreren Adressen zu speisen und damit zu ermöglichen. Allerdings wird es zwangsläufig sehr häufig zu einem „Restbetrag“ kommen, der auf eine neue Änderungsadresse („change address“) überwiesen wird (welche auch durch das HD-Wallet erzeugt und gespeichert wird).

Gebühren (Fee): Das Bitcoin-System ist grundsätzlich kostenfrei, allerdings werden die Miner für ihre Tätigkeit unter anderem durch eine Überweisungsgebühr („fee“) entlohnt (die Gebühr bezahlt grundsätzlich der Auftraggeber = Absender). Diese „fee“ richtet sich nach der Datenmenge einer einzelnen Transaktion und ist damit auch der Grund, warum die Transaktionen nur sehr karg mit zusätzlichen Daten versehen werden. Die Zusammenführung vieler (kleinen) Guthaben (bzw. der einzelnen Adressen) kann am Ende dazu führen, das die Gebühr durch die Datenmengen-fee teuer wird als die eigentliche Überweisung oder sogar das vorhandene Guthaben. Diese (nicht nutzbaren) Restbeträge werde im Bitcoin-System auch „transaction dust“ oder kurz Staub bezeichnet.

Letzte Bearbeitung: 14.03.2020