bc1 oder doch lieber 1 oder 3?“– Bitcoin-Adressformate und wie sie erstellt werden

Je nach Wallet oder Empfänger werden unterschiedliche Adressformate angezeigt. Wie werden diese Adressformate eigentlich erstellt und welche Auswirkungen hat das auf den User?

Warum sieht meine Bitcoin-Adresse aus wie eine wahllose Abfolge von Buchstaben und Zahlen? Woher kommt meine Bitcoin-Adresse? Ist sie wirklich sicher? Und was passiert, wenn ich mich beim Eingeben der Adresse vertippe? Fragen über Fragen. Aber nun erst einmal der Reihe nach:

Wie kommt die Adresse zustande?

Bitcoins Kryptografie verwendet vereinfacht gesagt ein Schlüsselpaar aus:

1. Private Key (sozusagen das „Passwort“ zu den Coins – nur dem Eigentümer bekannt)

2. Public Key (für jedermann einsehbar). Man könnte die beiden Begriffe auch als privater Schlüssel und öffentlicher Schlüssel übersetzen. So ein Paar hat dabei die geniale Eigenschaft, dass man mithilfe des Public Key mathematisch beweisen kann, dass man den dazugehörigen Private Key besitzt, ohne dass man den Private Key jemals zeigen muss. Was ist nun die Beziehung dieser Schlüssel zueinander? Und wie wird daraus eine Adresse?

1. Private Key

Ein privater Schlüssel ist im Wesentlichen eine zufällig generierte 256-Bit-Zahl. Es gibt also 2 hoch 256 Möglichkeiten für einen Private Key (eine Zahl mit 78 Stellen, z. B. 115792089237316195427570985008617907853269984695640564039457584007913129639936). Zum Vergleich der schier unvorstellbaren Anzahl an möglichen Kombinationen: Es wird geschätzt, dass die gesamte Erde eine 51-stellige Anzahl an Atomen (!) besitzt.

Wichtig ist, dass nur man selbst den Private Key kennt, da das Kennen des Private Keys mit dem vollen Zugriff auf die jeweiligen Coins gleichzusetzen ist – der Private Key ist somit das Passwort zu eigenen Bitcoins.

2. Public Key

Ein öffentlicher Schlüssel kann aus dem privaten Schlüssel mit der sogenannten elliptischen Kurvenkryptografie abgeleitet werden. Bitcoin verwendet dazu vereinfacht gesagt eine spezifische elliptische Kurve, die als secp256k1 bezeichnet wird. Dies sind mathematische Funktionen, die nicht umkehrbar sind und nur in eine Richtung funktionieren.

3. Bitcoin-Adresse

Hier nehme man den Public Key und schicke diesen durch einen 8-stufigen Prozess mit einer sogenannten Verkettung, Hash-Funktionen (SHA-256 und RIPEMD-160) und Base58Check. Daraus wird die entsprechende Bitcoin-Adresse generiert.

Diese Rechenoperation von Private Key à Public Key à Bitcoin-Adresse ist im Prinzip eine Einbahnstraße und es ist rechnerisch unmöglich, diesen Weg rückwärts zu rechnen.

Welche Formate entstehen daraus?

Bei Bitcoin gibt es aktuell 3 relevante Adressformate.

– sogenannte P2PKH-Adressen; diese beginnen mit einer 1, z. B.: 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2.

– P2SH-Adressen; diese beginnen mit einer 3, z. B.: 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy.

– Bech32-Adressen; diese beginnen mit bc1, z. B.: bc1ar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq.

Alle Adressformate sind untereinander kompatibel, es kommt lediglich darauf an, ob die eigene Wallet dies auch unterstützt (z. B. Mycelium und Samourai für Android unterstützen alle 3 Formate).

Die letzten zwei Formate sind außerdem SegWit-kompatibel, was bedeutet, dass sie das im August 2017 aktivierte SegWit-Update und somit auch SegWit-Transaktionen unterstützen.

Mit SegWit wird vereinfacht gesagt die Signatur des Senders aus der Bitcoin-Transaktionsdatei ausgelagert. Durch die Auslagerung dieser Signatur wird die Blockgröße von 1 MB bei Bitcoin effizienter verwendet. In einen 1 MB großen Block passen nun mehr Transaktionen hinein als zuvor, sofern diese als SegWit-Transaktionen durchgeführt werden.

Fun Fact

Ursprünglich konnte man Bitcoin auch an IP-Adressen senden. Da hier jedoch viel Raum für Manipulationsversuche gegeben war, wurde dieses Feature wieder aufgegeben und bis heute (obwohl geplant) nicht reaktiviert.

Auswirkungen für NutzerInnen

Was kann man als UserIn beachten, um die Sicherheit zu erhöhen und Missverständnisse zu vermeiden?

– den Private Key sicher (bei langfristiger Lagerung am besten offline) aufbewahren – z. B. mit der Card Wallet, die speziell zur sicheren, langfristigen Offline-Aufbewahrung von Bitcoin entwickelt wurde

– wenn möglich, die Adresse mit copy + paste einfügen

– vor dem Senden zumindest die ersten und letzten Stellen der Adresse kontrollieren

– jedes Mal vor dem Empfang einer Zahlung eine neue Adresse generieren (Wallet-Apps erledigen dies automatisch)

Hinweis: Es ist praktisch unmöglich, an eine Bitcoin-Adresse zu senden, die nicht existiert – herkömmliche Wallet-Apps kontrollieren vor dem Senden die Gültigkeit der Bitcoin-Adresse anhand einer Prüfsumme und lassen die Eingabe einer ungültigen Adresse nicht zu. Mit dem Beachten einiger Basics ist man somit auf der sicheren Seite.