Start
Start

Einer der vielen Mechanismen, die es Bitcoin ermöglichen, richtig zu funktionieren, ist die Blockchain. Wie Sie vielleicht in den Artikeln im Bitstack-Blog entdeckt haben, ermöglicht es die Blockchain, das doppelte Ausgeben derselben Bitcoin-Münze zu vermeiden (was als UTXO bezeichnet wird).
Wie der Name schon sagt, besteht diese Blockchain aus Blöcken. In diesem Artikel untersuchen wir, was Bitcoin-Blöcke wirklich sind und wie jeder Block aufgebaut ist.
Die Blockchain ist ein Register, das alle Bitcoin-Transaktionen auflistet. Es wird im Protokoll verwendet, sodass jeder Benutzer über vergangene Transaktionen informiert ist. Dadurch können wir nachweisen, dass es keine früheren Ausgaben von Bitcoins gegeben hat, und so doppelte Ausgaben vermeiden.
Dieses Konzept wird im Bitcoin-Whitepaper von Satoshi Nakamoto sehr einfach mit dem berühmten Satz erklärt:“ Die einzige Möglichkeit, das Fehlen einer Transaktion zu bestätigen, besteht darin, alle Transaktionen zu kennen. “
Das Ziel dieses Registers ist es daher, vergangene Transaktionen mit einem Zeitstempel zu versehen. Um diesen Informationen eine Stunde zuordnen zu können, gruppieren wir sie in Blöcke. Jeder Block enthält den Fingerabdruck des vorangegangenen Blocks, um ihn unveränderbar zu machen und so eine Art Kette zu bilden. Deshalb sprechen wir von Blockchain, oder „Blockchain“ auf Englisch.

➤ Erfahre mehr über die Rolle der Blockchain in Bitcoin.
Ein Bitcoin-Block besteht hauptsächlich aus zwei verschiedenen Teilen. Der erste ist sein Header, der 80 Byte an Metadaten enthält. Die zweite ist die Liste der ausgeführten Transaktionen.
Seit dem SegWit-Update 2017 wird die Größe eines Blocks durch eine virtuelle Einheit namens Gewicht bestimmt. Das Gewicht eines Blocks wird berechnet, indem seine tatsächliche Größe zum Dreifachen seiner Größe addiert wird, jedoch ohne Zeugen (Signaturen). Die Höchstgrenze liegt bei 4 Millionen Gewichtseinheiten. Theoretisch kann ein Bitcoin-SegWit-Block daher eine maximale reale Größe von knapp 4 MB haben. Die tatsächliche durchschnittliche Blockgröße schwankt jedoch seit 2017 normalerweise zwischen 1 und 2 MB.
Die Einführung des Ordinals-Protokolls auf Bitcoin zu Beginn dieses Jahres 2023 wirkte sich auf diesen Durchschnitt positiv aus. Seit Februar hatten Bitcoin-Blöcke eine reale Durchschnittsgröße von fast 3 MB.
Der Hauptteil eines Bitcoin-Blocks ist sein Header. Wenn wir über den Fingerabdruck eines Blocks oder seinen Hash sprechen, ist es tatsächlich sein Header, den wir in der SHA256-Hash-Funktion zweimal übergeben haben.
Um die Zusammensetzung des Headers eines Blocks zu verstehen, ist es am besten, einen echten Block zu studieren. Hier finden Sie Informationen zum Block Nr. 714 254, der am 15. Dezember 2021 von F2Pool abgebaut wurde:
.png)
Wenn Sie dasselbe auf Ihrem Bitcoin-Knoten tun möchten, führen Sie den Befehl „getblockheader“ gefolgt vom Fingerabdruck des gewünschten Blocks auf bitcoin-cli aus.
Dank dieses Befehls entdecken wir mehrere Elemente des untersuchten Blocks. Nicht alle diese Informationen sind im Header enthalten. Der eigentliche Header des Blocks besteht aus nur 6 Elementen:

Ein Bitcoin-Block-Header enthält nur diese 6 Elemente. Die Bestellung Blockheader abrufen Wir erhalten jedoch andere Informationen, deren Analyse interessant sein könnte, die aber nicht wirklich Teil des Headers selbst sind:
Nachdem wir nun den ersten Teil des Blocks, also seinen Header, untersucht haben, schauen wir uns gemeinsam den zweiten Teil des Bitcoin-Blocks an.
Transaktionen in einem Bitcoin-Block werden nicht einfach nacheinander aufgelistet. Stattdessen sind sie in einem kryptografischen Akkumulator organisiert, der als „Merkle-Baum“ bezeichnet wird. Dadurch ist es möglich, eine Merkle-Wurzel zu erstellen, bei der es sich um eine sehr kleine Zusammenfassung aller Transaktionen im Block handelt.
Sein Prinzip ist ziemlich einfach zu verstehen. Jede Transaktion durchläuft zunächst eine Hash-Funktion. Die resultierenden Hashes werden zu zweit verkettet (d. h. aneinandergereiht). Dann werden sie erneut durch eine Hash-Funktion geleitet. Wir setzen diesen Prozess so fort, bis wir einen einzigen Hash namens „Merkle Root“ erhalten.

Wie bereits erwähnt, ist diese Merkle-Wurzel dann im Blockheader enthalten. Dadurch können alle Transaktionen im Header zusammengefasst dargestellt werden. Somit ändert die kleinste Änderung einer vergangenen Transaktion den Merkle-Baum, also auch die Merkle-Wurzel, und daher ändert sich auch der Block-Header und sein Footprint. Da dieser Fingerabdruck im nächsten Block verwendet wird, durchbricht die kleinste Änderung einer vergangenen Transaktion letztendlich die Bitcoin-Blockchain.
Seit 2017 und der Einführung von SegWit enthalten Bitcoin-Blöcke tatsächlich 2 Merkle-Bäume. Die erste enthält die Transaktionen ohne ihren Zeugen und die zweite enthält den Zeugen für jede Transaktion. Die Wurzel des zweiten Merkle-Baums ist in der Coinbase-Transaktion enthalten, sodass Änderungen erkannt werden können.

📌 Die Coinbase-Transaktion ist die erste Transaktion im Bitcoin-Block. Es ermöglicht dem gewinnenden Miner, die ihm zustehenden Bitcoins als Belohnung für seine Mining-Arbeit einzusammeln. Es besteht aus der Coinbase-Belohnung, die neue Bitcoins ausgibt, und den im Block enthaltenen Transaktionsgebühren.
Daher stammt der Name „SegWit“, die Abkürzung für „Segregated Witness“, was auf Französisch „separater Zeuge“ bedeutet.
Im obigen Diagramm können wir sehen, dass die Zeugen mit dem Vermerk „WTX“ ihren eigenen Merkle-Baum haben. Die Wurzel dieses Baums wird in die Coinbase-Transaktion eingefügt. Transaktionen ohne ihre Zeugen haben ebenfalls ihren eigenen Merkle-Baum. Die Wurzel des zweiten Baums wird in den Header des Blocks eingefügt. Also werden alle Teile aller Transaktionen im Block im Header zusammengefasst.
Blockchain wird für Bitcoin verwendet, um doppelte Ausgaben zu vermeiden. Es fungiert wie ein Zeitstempelserver. Ein Block ist daher einfach eine Gruppierung von Bitcoin-Transaktionen mit einigen Metadaten. Seine Struktur ist hauptsächlich in zwei Bereiche unterteilt: den Header und die Merkle-Bäume.
Der Header eines Blocks besteht aus 6 Elementen: der Version, dem Abdruck des vorherigen Blocks, der Merkle-Wurzel, dem Zeitstempel, dem Schwierigkeitsziel und der Nonce.
Transaktionen hingegen sind in einem Merkle-Baum zusammengefasst. Dieser kryptografische Akkumulator erzeugt eine Wurzel, die im Header des Blocks inkrementiert wird, um alles miteinander zu verknüpfen.

