Blockchain

Schwarz ist die Farbe der bestimmenden Blockchain oder Blockkette, in deren Blöcke von Beginn zum aktuellen Block vorhanden sind, aus der längsten Kette der Blocks. Es gibt auch lilafarbene Ketten, die sich mit anderen Ketten messen. Sobald sie gegenüber einer anderen Kette kürzer sind, verwaisen sie.

Ein Journal, das ein Verzeichnis aller Bitcoin-Transaktionen beinhaltet, nennt man Die Blockchain oder Blockkette. Die Blockchain aus einer Datenblock-Reihe. In dieser Reihe von Datenblöcken ist entweder eine Transaktikon oder mehrere Transaktionen zusammengefasst dokumentiert und mit einer Prüfsumme versehen wurden. Mining wird der Prozess genannt, der rechenintensiv ist und damit neue Blöcke schafft, die an die Teilnehmer über das Netzwerk verbreitet werden.

Paarweise miteinander gehasht durch einen Merkle-Baum werden alle Transaktionen, die sich in einem Block befinden. Der Roott-Hash, also der letzte Hashwert ist die Prüfsumme, die im Header vom Block dokumentiert wird. . Der Root-Hash-Wert unterstützt die Verkettung der Blöcke untereinander. In jedem einzelnen Block ist im Header der Hash des kompletten vorherigen Headers dokumentiert. Mit dieser Dokumentation ist die Reihenfolge der Blöcke festgelegt. Damit ist auch eine nachträgliche Modifizierung in Bezug auf die vorangegangenen Transaktionen und Blöcke so gut wie ausgeschlossen. Der Grund liegt darin, dass im Falle einer nachträglich Veränderung der Blöcke die Hashes in einem äußerst kurzen Zeitfenster sämtliche nachfolgende Blöcke neu berechnen müssen. In der Blockchain steht der erste Block fest; er hat die Bezeichnung Genesisblock.

Nach dem Stand von Februar 2018 hat die Blockchain eine Größe von etwa 158 GB. Von jedem Bitcoin-Nodes, der neu beitritt, muss die Blockchain komplett heruntergeladen werden. In diesem Zusammenhang erfolg die Prüfung auf Gültigkeit. In der Bitcoin-Software ist eine Liste von bekannten Blöcken aus vergangener Zeit fest integriert. Diese Liste muss völlig übereinstimmen mit der Blockchain, die heruntergeladen wurde. Die Möglichkeit, wie man Speicherplatz einsparen kann, wurde im Original-Papier beschrieben. Dazu entfernt man aus den Blöcken ältere Transaktionen und behält nur den Header mit dem Root-Hash behält. Im Bitcoin Core ist die gesamte Historie der Transaktionen dokumentiert; die Funktion, ältere Transaktionen zu entfernen ist nicht im Bitcoin Core implementiert.

Jeder Teilnehmer kann so viel Blöcke erzeugen, wie der braucht und will. Dabei kann es passieren, dass nicht nur er, sondern auch andere Bitcoin-Nodes zur selben Zeit einen neuen gültigen Block erzeugen wollen. Die anderen Teilnehmer entscheiden, wenn sie zwei und mehr Blöcke empfangen, welchen Block sie neuen gültigen Block übernehmen. Üblicherweise ist der erste Block, den sie empfangen, der neue gültige Block. Es kommt selten vor, doch es kommt vor, dass es in der Blockchain zu einem Fork kommt. Dabei verzweigt die Kette, die Blockchain wird nun mit beiden Zweigen bestückt mit neuen gültigen Blöcken fortgeführt. Der Fork, der die längere Kette hat, setzt sich im Laufe der Zeit durch. Grund dafür ist die Annahme, dass sich hinter einer langen Kette auch die Mehrheit der Teilnehmer vorhanden ist.

Die Überweisung neu erzeugter Bitcoins sowie die Gebühren für die Transaktion ist in einem neuen Block die erste Transaktion. Für die Erzeugung neuer Bitcoins gibt es eine Beschränkung; aktuell beträgt die Beschränkung pro Block 12,5 Bitcoins. Der Block eines Teilnehmers wird anderen Bitcoin-Nodes nicht akzeptiert wenn der Teilnehmer versucht, anstatt die Bitcoins, die ihm zustehen zu erzeugen, mehr Bitcoins zu erzeugen will. Zu Beginn stand pro Block die Erzeugung von 50 Bitcoins zu, wobei sich diese Zahl halbe 210.000 Blöcke halbiert – dies entspricht ca. vier Jahre und bewirkt, dass 21 Millionen die maximale Anzahl an Bitcoins festgelegt wurde. In der derzeitigen Bitcoin-Core-Version ist es möglich einen Bitcoin in 100 Millionen Einheiten zu unterteilen, so Satoshi. Daraus ergibt sich eine Gesamtsumme von 2,1 Billiarden diskreten Einheiten (2,1·10).

Die Bitcoin-Adresse

Jede Bitcoin-Adresse ist ein Fingerprint, dies bedeutet, sie ist für den öffentlichen Schlüssel eine Kurzform, die mit Base58 kodiert wird. Für die Berechnung der e Adresse finden zwei kryptologische Hashfunktionen auf den öffentlichen Schlüssel nacheinander Verwendung: Beispiel:  RIPEMD-160(SHA-256 (pubkey. Daraus ergibt sich ein Hashwert mit der Größe von 160 Bit, der sogenannte public key hash. Daneben enthält die Adresse einen weiteren Hashwert mit einer Länge von 32 Bit. Durch diesen sollen Fehler bei der Übertragung oder Tippfehler, wie bei auch bei der Prüfsumme, erkannt werden. Das Elliptische-Kurven-Kryptosystem ECDSA verwendet Bitcoin. Das System beinhaltet die 256-Bit standardisierte Konfiguration secp256k1.Der Teilnehmer muss im erst ein Schlüsselpaar, das aus einem öffentlichen und privaten Schlüssel besteht, erzeugen, damit er eine Bitcoin-Adresse erhält. Die Zahl des privaten Schlüsseln besteht aus einer generierten Zufallszahl; die im Wallet gespeichert wird. Mit diesem Schlüssel kann der Teilnehmer seine Transaktionen signieren, dies bedeutet, diese Signatur entspricht der Unterschrift, wie man sie von Überweisungsträgern her kennt und wird für ausgehende Zahlungen verwendet. Wie auch jede PIN und jedes Passwort sollte der Teilnehmer die Zahl des privaten Schlüssels geheim halten. Während der Verlust einer PIN keinen Einfluss auf das Guthaben auf dem Girokonto hat, ist dies beim Verlust des privaten Schlüssels anders; hier sind auch die dem Schlüssel zugeordneten Bitcoins verloren. Im Gegensatz zum privaten Schlüssel ist es nicht notwendig den öffentlichen Schlüssel zu speicher; dieser errechnet sich aus dem privaten Schlüssel. Näheres  dazu im Kapitel ECDSA #Schlüsselerzeugung.

Transaktionen

Wechselbeziehungen mit verschiedenen Absender- und Empfängeradressen

Überweisungen von Bitcoins zwischen Teilnehmern laufen ähnlich wie Banküberweisungen ab; die Abwicklung erfolgt die Teilnehmer mit einer Überweisung tätigen müssen die Bitcoin-Adresse des Zahlungsempfängers kennen; die Bitcoin-Adresse ersetzt die für Banküberweisungen notwendige IBAN ; eine Bestätigung vom Zahlungsempfänger ist nicht notwendig. Bitcoin-Adressen werden nach Bedarf von einem Bitcoin-Client generiert. Dabei ist es nicht notwendig, dass der Zahlungsempfänger mit dem Netzwerk verbunden ist, lediglich der Sender muss sich verbinden, damit er die Transaktion durchführen kann.

Eine im Blockchain aufgenommene Transaktion kann nicht mehr rückabgewickelt werden. Ausgeschlossen ist auch das Lastschriftverfahren wie es bei Banken alltäglich ist. Damit ist es nicht möglich, vom Zahlungspflichtigen Guthaben von seiner Wallet einzuziehen.

Derjenige, der die Zahlung tätigt kann die Transaktion vor der Aufnahme im Blockchain ändern. Das Zeitfenster ist ein Problem, denn es kann sein, dass zwischen der Initialen Auslösung der Transaktion und deren Aufnahme in der Blockchain so viel Zeit vergeht, dass der Status Sofort-Zahlungsmittel mit Bitcoins verloren geht. Das Risiko des Zahlungsempfängers besteht darin, dass ein Totalausfall der Zahlung erfolgt, insbesondere dann, wenn er seinen Teil des Vertrags, Warenversand, Dienstleistung, bereits erbracht hat bevor der Nachweis einer abgeschlossenen Transaktion vorhanden ist.

Kosten für Transaktionen

Wie auch bei Banküberweisungen in Papierform fallen auch beim Überweisen von Bitcoins Gebühren an. Zurzeit werden Gebühren in Höhe von mindestens 1.000 Satoshi (= 10 µBTC = 0,01 mBTC = 0,00001 BTC) erhoben. Die erhobenen Gebühren kommen den Teilnehmern, die sich am Mining beteiligten als eine Art Belohnung zugute. Des Weiteren haben erhobene Gebühren das Ziel, die Absicht Unmengen an Transaktionen und damit eine Überlastung des Netzwerks zu verhindern. Teilnehmer, die Transaktionsgebühren erhöhen, haben den Vorteil, dass ihre Transaktion schneller bestätigt wird und je höher die Gebühren sind, desto schneller erfolgt die Bestätigung.

Einen Kundenvorteil bezüglich der Zahlung von Transaktionsgebühren sieht Raúl Rojas am Ende des Jahres 2014 nicht. Die Höhe der Kosten seien vergleichbar hoch; jedoch nur ein wenig höher als es bei Zahlung mit Kreditkarten der Fall ist. Während bei der Verwendung einer Kreditkarte nur der Inhaber die Kosten trägt, trägt bei Bitcoin die gesamte Gemeinschaft die Transaktionskosten, also auch die Bitcoin-Besitzer, die keine Transaktionen tätigen. Außerdem sind bereits Gebühren fällig, wenn der Teilnehmer Zutritt zur Bitcoin-Economy haben will, um Bitcoins anzukaufen.

Detaillierter Ablauf einer Transaktion

Konten, die ein Guthaben haben, existieren genaugenommen nicht im Bitcoin-System. Der Bitcoin-Client und andere Wallet-Programmen weisen nur den Betrag als “Guthaben” aus, der, das durch Gutschriften vorhanden ist, deren Beträge noch auf der Bitcoin-Adresse vom Bitcoin-Wallet des Teilnehmers vorhanden sind und noch nicht an andere Teilnehmer überwiesen wurden. Dies nennt man auch unspent transaction outputs, UTXOs.

Für jede Transaktion ist mindestens eine Eingabe- und Ausgabeadresse notwendig. Sind es mehrere jede der Empfängeradressen ist der entsprechende Betrag einzugeben. Weitere Felder sind für die Signatur und die Verwaltung vorhanden. Wie bei einer Banküberweisung wird der Überweisungsbetrag von der Eingabeadresse “abgebucht” und den Empfängeradressen in der Höhe der Überweisung gutgeschrieben. Im Gegensatz zu Banküberweisungen kann der Teilnehmer bei einer Transaktion viele einzelne Überweisungen zusammenfassen. Auch ist die Zusammenführung von Guthaben, das von mehreren Adressen stammt, möglich. Das Guthaben kann man auch unter mehreren Adressen aufteilen. Den Adressen, welche die Zahlungen tätigen, werden auch die Beträge vollständig belastet. Ist noch ein kleiner Betrag übrig, wird dieser der Adresse des überweisenden Teilnehmers wieder gutgeschrieben. Wie bei einem Treuhanddienst ist es machbar, dass mehrere Teilnehmer eine Überweisung signieren.

Den Abschluss für die komplette Transaktion bildet die Signatur des privaten Schlüssels des Überweisenden, damit ist die Überweisung authentisiert und hat gleichzeitig Schutz vor Veränderungen. Ist die Transaktion abgeschlossen, erfolgt die Übertragung ins Peer-to-Peer-Netzwerk und Vorbereitung mit einem Flooding-Algorithmus. Der überweisende Teilnehmer sendet seine Transaktion an alle Bitcoin-Nodes, die ihm im Netzwerk bekannt sind. Diese sind mit der Verifizierung der Signatur und der Prüfung auf Gültigkeit der Transaktion befasst. Danach wird die Transaktion an weitere bekannt Bitcoin-Nodes weitergeleitet; dieser Prozess wiederholt solange, bis allen im Netzwerk vorhandenen Bitcoin-Nodes die Transaktion bekannt ist. Erst wenn die Transaktion ausreichend vielen Bitcoin-Nodes bekannt ist, startet die Verarbeitung in der Form, dass durch Mining ein Block erzeugt wird, in dem die Transaktion gespeichert ist.

Beschränkung von Transaktionen

Als im Jahr 2010 von Satoshi Nakamoto das Limit der Blockgröße bestimmt wurde, baute man 1 MB in die Referenzimplementierung ein. Damit wurde eine Beschränkung der maximale, Anzahl der Transaktionen geschaffen, die pro Sekunde ca. 7 Transaktionen bewältigen sollte. Zur Zeit dieser Beschränkung war der Bitcoin noch weitgehend unbekannt. Die Beschränkung der Transaktionen lag dementsprechend weit unter dem Limit. Eingebaut wurde das Limit zum Schutz auf etwaige Angriffe auf das Netzwerk, Angriffe, die mit unverhältnismäßig großen Blöcken vonstattengehen würden. Bislang wurde eine Erhöhung des Blockgrößen-Limits vom Entwicklerteam der Referenzimplementierung Bitcoin Core abgelehnt. Genutzt werden stattdessen “Off-Chain-Lösungen”. Wie groß die Anzahl der nicht bestätigten Transaktionen ist, die sich aufgestaut haben, erkennt man an der Größe des Mempools. Anfang August 2017 entstand für das Anheben des Blockgrößen-Limits auf 8 MB, eine Abspaltung Bitcoin Cash.