Diese Seite enthält den dritten Teil der Bitcoin-Grundlagen.
- Einführung in Bitcoin
- Die Grundbausteine
- Transaktionen (diese Seite)
- Das Mining
Bei Bitcoin geht es hauptsächlich darum einen Wert (Bitcoins) von A nach B zu übermitteln. Und genau das passiert mit Hilfe von Transaktionen. Die spannende Frage ist aber: Welche Daten enthält so eine Transaktion eigentlich?
Schauen wir uns das am besten an einem Beispiel an: Nehmen wir z.B. an, dass Anneliese vor längerer Zeit bei einer Bitcoin-Wechselstube 1,5 Bitcoins erworben hat. Und genau diese Bitcoins möchte sie jetzt gern an Bertram senden. Die Transaktion, die Anneliese mit Hilfe Ihrer Wallet erstellt muss deshalb mindestens drei Informationen enthalten:
Absender | Wer ist der ursprüngliche Besitzer der Bitcoins? | Anneliese |
Empfänger | Wer ist der neue Besitzer der Bitcoins? | Bertram |
Betrag | Wie viele Bitcoins sollen übertragen werden? | 1,5 |
Für die Angabe des Absenders und Empfängers werden allerdings nicht die tatsächlichen Namen von Personen verwendet, sondern ausschließlich …
Bitcoin-Adressen
Ähnlich wie Kontonummern bei einer normalen Banküberweisung, werden bei einer Bitcoin-Transaktionen der Absender und Empfänger durch Bitcoin-Adressen eindeutig identifiziert. Dabei ist eine Bitcoin-Adresse letztendlich immer eine Zahl zwischen 1 und ca. 1.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000 (48 Nullen). Da es praktisch unendliche viele gültige Bitcoin-Adressen gibt, können diese von einer Wallet einfach per Zufall erstellt werden ohne das es eine ernst zu nehmende Wahrscheinlichkeit gibt, dass zwei verschiedene Wallets eine Adresse doppelt „vergeben“.
Hinweis: Bitcoin-Adressen werden visuell nie als Zahl präsentiert, sondern in einem deutlich platzsparenderen Format, das aus einer (meistens) 34 Zeichen langen Abfolge von Zahlen und Buchstaben besteht. Zum Beispiel: 15Ee3gaLizh7YwFPebVaWxiV4T5UFBfLNm.
In unserem Beispiel hat Anneliese in Ihrer Wallet ein Guthaben von 1,5 BTC (Bitcoins). Wenn Anneliese jetzt eine neue Transaktion erstellt und im Empfängerfeld die Bitcoin-Adresse von Bertram einträgt, kennt Ihre Wallet sowohl (die von ihr eigene erstelle) Absenderadresse als auch die Empfängeradresse. Somit fehlt (vorerst) nur noch ….
Der Bitcoin-Betrag
Da es sich bei Bitcoin um ein digitale Währung handelt, vermuten Sie vielleicht, dass Bitcoin-Geld (z.B. 1,5 BTC) aus Daten bestehen – also (letztendlich) aus einer Menge von Nullen und Einsen – die von einer Wallet einfach in eine Transaktion eingefügt werden können. Das trifft allerdings so nicht zu!
Eine Bitcoin-Transaktion ist eher vergleichbar mit einer öffentlichen Bekanntgabe des Absenders, dass er möchte, dass ein bestimmter Bitcoinbetrag (der nachweislich ihm gehört), ab sofort jemand anderem gehören soll. Wichtig dabei ist, dass diese „Bekanntgabe“ öffentlich, d.h. für alle Bitcoin-Teilnehmer vollständig sichtbar/transparent ist.
Bitcoin-Transaktionnen sind nicht verschlüsselt. Sobald also eine Transaktion abgeschickt wurde, kann sich jeder der möchte diese anschauen und analysieren. Rein technisch besteht also überhaupt keine Anonymität! Allerdings enthalten Transaktionen keine Namen von Personen. Wenn man also herausfinden möchte wer der Absender oder Empfänger ist, muss man eine Bitcoin-Adresse einer Person zuordnen können. In der Regel ist das allerdings nicht so ohne weiteres möglich. Wenn Sie aber z.B. in einem öffentlichen Webforum (eine) Ihrer Bitcoin-Adressen posten, kann ein „Schnüffler“ diese relativ einfach mit einer Suchmaschine wie Google finden und so eine logische Verknüpfung zwischen Bictoin-Adresse und Forenkonto herstellen. Je nachdem wieviel er mit Hilfe des Forenkontos über Ihre richtige Identität herausfinden kann, besteht die Möglichkeit dass er Ihren richtigen Namen herausfinden kann und somit auch weiß, dass Sie der Absender oder Empfänger der Transaktion sind.
Nach dem Absenden der Transaktion
Nachdem Anneliese auf „Senden“ geklickt hat wird nun folgendes passieren: Ihre Wallet hat bereits kurz nachdem Sie gestartet wurde, automatisch Verbindungen zu ein paar anderen Wallets hergestellt. Und genau diese Verbindung nutzt Annelieses Wallet jetzt um die neue Transaktion an andere Wallets weiterzuleiten. Die anderen Wallets wiederum leiten die Transaktion über ihre eigenen Verbindungen zu andern Wallets weiter. Und so wird die Transaktion innerhalb weniger Sekunden im gesamten Bitcoin-Netzwerk verbreitet und auch permanent gespeichert.
Sobald also Bertram seine Wallet startet, wird sich diese mit anderen Wallets verbinden und alle neuen Transaktionen (einschließlich Annelieses Transaktion) empfangen. Bertram Wallets erkennt, dass es sich bei der Empfänger-Adresse bei Annelieses Transaktion um eine Adresse handelt, die Bertrams Wallet selbst erzeugt hat. Desahlb wird diese Transaktion als eingehende Transaktion angezeigt. Somit weiß Bertram, dass Anneliese ihm 1,5 Bitcoins übermittelt hat.
Wie kann Bertrams Wallet aber sicher sein, dass der Bitcoins, die in der Transaktion verwendet wurden, zuvor tatsächlich Annelieses Bitcoins waren? Um genau das herauszufinden müssen wir uns zwei wichtige Daten einer Transaktion anschauen. Nämlich den …
Ein- und Ausgang einer Transaktion
Ein Ausgang einer Transaktion ist einfach eine Bitcoin-Adresse. Ein Eingang ist ein Verweis auf den Ausgang einer bereits (dem Bitcoin-Netzwerk bekannten) anderen Transaktion. Einfachheitshalber nennen wir die Transaktion mit der Anneliese die 1,5 BTC von der Wechselstube erhalten hat „Transaktion WS“. Und die Transaktion, die Annelieses Wallet erzeugt nennen wir „Transaktion AL“.
Eingang | Verweis auf den Ausgang einer anderen Transaktion |
Ausgang | Bitcoin-Adresse von Anneliese |
Eingang | Verweis auf den Ausgang der „Transaktion WS“ |
Ausgang | Bitcoin-Adresse von Bertram |
In jeder Transaktion wird also im Eingang auf den Ausgang einer früheren Transaktion verwiesen. So entsteht eine Kette von Bitcoin-Besitzübertragungen, wobei immer das letzte „Glied der Kette“ festlegt wer die Bitcoins als nächstes „weiterreichen“ darf. Aktuell ist das letzte Glied die „Transaktion AL“ in der als Ausgang Bertrams Bitcoin-Adresse festgelegt wurde.
Und mit diesem Wissen im Hinterkopf können wir jetzt herausfinden, wie Bertrams Wallet nun feststellen kann ob die Bitcoins, die als Eingang der „Transaktion AL“ angegeben wurden auch tatsächlich im Besitz von Annelieses (Wallet) waren. Dazu muss allerdings die „Transaktion AL“ noch eine weitere Information enthalten. Nämlich die …
Die digitale Unterschrift des Absenders
Mit einer digitalen Unterschrift kann die „Transaktion AL“ nachweisen, dass der Eingang rechtmäßig verwendet wurde. Bevor wir aber auf das Prinzip der digitalen Unterschrift näher eingehen, müssen wir vorher erst verstehen wie überhaupt Bitcoin-Adressen erstellt werden. Weiter oben haben Sie erfahren, dass eine Bitcoin-Adresse per Zufall generiert wird. Aus „praktischer Sicht“ ist die Zahl zwar (letztendlich) zufällig, aber technisch gesehen ist das nicht ganz korrekt. Die Bitcoin-Adresse wird nämlich aus einer anderen Zahl berechnet.
Diese andere Zahl wird als privater Schlüssel bezeichnet und ist nun aber tatsächlich eine von der Wallet direkt per Zufall erzeugte Zahl. Bei Bitcoin ist der Bereich aller gültigen Zahlen für private Schlüssel so groß, dass es praktisch unmöglich ist, dass eine Wallet per Zufall denselben privaten Schlüssel erzeugt wie eine andere.
Und mit genau diesem privatem Schlüssel wird von einer Wallet eine Bitcoin-Adresse erstellt. Vereinfacht kann man sich das so vorstellen: Eine Wallet erzeugt mit Hilfe eines „Bitcoin-Adress-Generators“ aus einem privaten Schlüssel eine Bitcoin-Adresse. Der „Generator“ funktioniert aber immer nur in eine Richtung. D.h. man kann zwar aus einem privaten Schlüssel eine Bitcoin-Adresse erzeugen. Aber es ist (praktisch) unmöglich aus einer Bitcoin-Adresse den dazugehörigen privaten Schlüssel zu ermitteln. Der Generator verwendet also eine sogenannte Einwegfunktion um die Bitcoin-Adresse zu erzeugen.
Hinweis: Der „Bitcoin-Adress-Generator“ ist eine vereinfachte Darstellung, die hier verwendet wird um das Prinzip der Erstellung von Bitcoin-Adressen leicht verständlich zu machen.
Mit dem privaten Schlüssel wird allerdings nicht nur eine Bitcoin-Adresse erzeugt, sondern auch eine digitale Unterschrift. Um diese zu erstellen, verwendet die Wallet folgende …
Eingabedaten für die Erstellung einer digitalen Unterschrift:
- privater Schlüssel
- Transaktionsdaten wie z.B. Eingang und Ausgang
Aus diesen Daten wird mit Hilfe eines bestimmten Algorithmus (ECDSA) eine digitale Unterschrift erzeugt, die nur für diese Transaktion gültig ist. Dieser Algorithmus kann aber nicht nur dazu verwendet werden eine digitale Unterschrift zu erzeugen sondern auch dazu um diese zu überprüfen. Die entscheidende Eigenschaft für das Überprüfen einer Unterschrift ist, dass dafür nicht der private Schlüssel benötigt wird! Somit braucht man nur folgende …
Eingabedaten für die Überprüfung einer digitalen Unterschrift:
- Bitcoin-Adresse
- Transaktionsdaten wie z.B.Eingang und Ausgang
Dass heißt also: Für die Erstellung einer digitalen Unterschrift wird der (geheime) private Schlüssel benötigt. Für die Überprüfung wird die dazugehörige (öffentliche) Bitcoin-Adresse benötigt.
Kommen wir jetzt aber wieder zurück zur Ausgangsfrage: Wie kann nun Bertrams Wallet herausfinden ob die Bitcoins, auf die im Eingang der „Transaktion AL“ verwiesen wurden, von Anneliese auch rechtmäßig verwendet wurden? Erweitern wir dazu die zwei obigen Transaktionen mit den digitalen Unterschriften:
Eingang | Verweis auf den Ausgang einer anderen Transaktion |
Ausgang | Bitcoin-Adresse von Anneliese |
Digitale Unterschrift | Zahl (erstellt aus: privater Schlüssel der Wechselstuben-Wallet und Daten dieser Transaktion) |
Eingang | Verweis auf den Ausgang der „Transaktion WS“ |
Ausgang | Bitcoin-Adresse von Bertram |
Digitale Unterschrift | Zahl (erstellt aus: Annelieses privatem Schlüssel und den Daten dieser Transaktion) |
Nachdem Bertrams Wallet die „Transaktion AL“ erhalten hat, geht diese folgendermaßen vor:
- Schaue nach was als Eingang angegeben wurde (Verweis auf den Ausgang der „Transaktion WS“)
- Hole „Transaktion WS“ und schaue in deren Ausgang nach, welche Bitcoin-Adresse als Empfänger angegeben wurde (die Bitcoin-Adresse von Anneliese)
- Überprüfe die digitale Unterschrift der „Transaktion AL“. Verwende folgende Eingabedaten für die Überprüfungsfunktion:
- die Bitcoin-Adresse, die im vorherigen Schritt ermittelt wurde
- die Daten der aktuellen Transaktion
So kann also Bertrams Wallet anhand Annelieses digitaler Unterschrift und der „Transaktion WS“ feststellen, dass die Transaktion legitim ist. Übrigens überprüft nicht nur Bertrams Wallet diese Transaktion sondern praktisch auch jede andere Wallet. Und wenn eine Transaktion nicht legitim ist, wird sie von den Wallets auch nicht weitergeleitet. Und somit wäre also das Problem über den Nachweis eines Bitcoinbesitzes gelöst!
Leider gibt es aber noch ein anderes Problem: Obwohl Anneliese rechtmäßig im Besitz der 1,5 BTC ist, könnte sie diese in zwei unterschiedlichen Transaktionen verwenden. D.h. sie könnte z.B. sowohl eine Transaktion für Bertram als auch für Christoph mit denselben Bitcoins erstellen und ins Bitcoin-Netzwerk schicken. Eine einfache Lösung wäre, das einfach (zufällig) eine der Transaktionen akzeptiert wird und die/alle anderen nicht.
Das Problem dabei: wer entscheidet welche Transaktion akzeptiert werden soll? Genau dieses Problem der doppelten Bitcoin-Ausgabe (Double-Spending) wird bei Bitcoin durch einen speziellen Prozess gelöst, der im nächsten Teil der Bitcoin-Grundlagen erklärt wird.
Hinterlassen Sie einen Kommentar