Was ist die Coinbase?
Coinbase bedeutet sinngemäß „Ursprung der Coins“ oder „Entstehungsort der Coins“.
Die Coinbase-Transaktion ist eine besondere Bitcoin-Transaktion, die ausschließlich als erste Transaktion eines Blocks vorkommt. Während normale Transaktionen bestehende UTXOs ausgeben und neue UTXOs erzeugen, besitzt die Coinbase-Transaktion keinen normalen Input. Stattdessen markiert sie den Punkt, an dem gemäß den Konsensregeln neue Bitcoin entstehen. Gleichzeitig legt sie fest, an welche Outputs die Blockbelohnung ausgezahlt wird.
Mit ihr beansprucht der Miner die Belohnung für das Finden eines gültigen Blocks. Zusätzlich sammelt die Coinbase-Transaktion die Transaktionsgebühren aller Transaktionen ein, die im Block enthalten sind.
Das Diagramm zeigt die Coinbase-Transaktion aus Block 825000.
Jeder gültige Block enthält genau eine Coinbase-Transaktion. Ohne sie gäbe es keinen Mechanismus, um neue Bitcoin in Umlauf zu bringen oder Miner für die Bereitstellung von Rechenleistung zu entlohnen. Die Coinbase-Transaktion bildet damit die Verbindung zwischen Mining, der Ausgabe neuer Bitcoin und dem Anreizsystem des Bitcoin-Netzwerks.
Woraus besteht die Blockbelohnung?
Die Blockbelohnung setzt sich aus zwei Bestandteilen zusammen:
- der Blocksubvention
- den Transaktionsgebühren
Beide Beträge werden über die Coinbase-Transaktion an den Miner ausgezahlt.
Wie hoch die Blockbelohnung maximal sein darf, wird durch die Bitcoin-Konsensregeln festgelegt.
Blocksubvention
Die Blocksubvention bezeichnet die Menge neuer Bitcoin, die mit jedem Block entstehen dürfen.
Sie wird durch die Bitcoin-Konsensregeln festgelegt und halbiert sich ungefähr alle vier Jahre beim Halving.
Die Subsidy ist die einzige Möglichkeit, wie neue Bitcoin in Umlauf gelangen.
Transaktionsgebühren
Zusätzlich zur Blocksubvention erhält der Miner die Transaktionsgebühren aller Transaktionen, die er in seinen Block aufgenommen hat.
Die Gebühren werden nicht neu erzeugt, sondern stammen aus bereits existierenden Bitcoin.
Mehr zur Entstehung und Berechnung von Gebühren unter Fees.
Wie entstehen neue Bitcoin?
Neue Bitcoin entstehen ausschließlich durch die Blocksubvention. Bei jedem gültigen Block erlauben die Bitcoin-Konsensregeln dem Miner, einen bestimmten Betrag als Teil der Coinbase-Transaktion zu beanspruchen. Dieser Betrag existierte zuvor nicht und wird mit der Bestätigung des Blocks neu in Umlauf gebracht. Im Gegensatz zu staatlichen Währungen kann kein Miner selbst bestimmen, wie viele neue Bitcoin erzeugt werden.
Die Höhe der Blocksubvention ist für jede Blockhöhe durch die Bitcoin-Konsensregeln festgelegt und wird von allen Nodes unabhängig überprüft. Beansprucht eine Coinbase-Transaktion mehr Bitcoin als durch die Blockbelohnung erlaubt sind, gilt der gesamte Block als ungültig und wird vom Netzwerk verworfen.
Die Menge neu erzeugter Bitcoin nimmt im Laufe der Zeit kontinuierlich ab. Zu Beginn des Netzwerks betrug die Blocksubvention 50 BTC pro Block. Durch die regelmäßigen Halvings wird dieser Betrag ungefähr alle vier Jahre halbiert, bis schließlich keine neuen Bitcoin mehr entstehen. Mehr zur maximalen Geldmenge im Kapitel Halving.
Warum befindet sie sich immer an erster Stelle?
Jeder gültige Bitcoin-Block muss mit genau einer Coinbase-Transaktion beginnen. Alle weiteren Transaktionen im Block sind normale Transaktionen.
Diese Regel vereinfacht die Blockvalidierung erheblich. Ein Node kann die erste Transaktion sofort als Coinbase behandeln und anschließend alle weiteren Transaktionen als normale Transaktionen prüfen. Außerdem hängt die erlaubte Höhe der Blockbelohnung von den Transaktionsgebühren des Blocks ab. Während der Validierung summiert der Node zunächst die Gebühren aller Transaktionen und prüft anschließend, ob die Coinbase-Transaktion höchstens die erlaubte Blockbelohnung enthält. Würde die Coinbase an beliebiger Stelle stehen dürfen, müsste der Node sie zunächst suchen und zusätzliche Sonderfälle berücksichtigen.
Deshalb verlangen die Bitcoin-Konsensregeln:
- Die erste Transaktion muss eine Coinbase sein.
- Alle weiteren Transaktionen müssen normale Transaktionen sein.
- Es darf genau eine Coinbase-Transaktion pro Block geben.
Verstößt ein Block gegen eine dieser Regeln, wird er von allen Nodes als ungültig verworfen.
Was ist die Coinbase Maturity?
Die Outputs einer Coinbase-Transaktion können nicht sofort ausgegeben werden.
Bevor ein Miner die Blockbelohnung verwenden darf, müssen zunächst 100 weitere Blöcke auf den erzeugenden Block folgen. Diese Wartezeit wird als Coinbase-Reifezeit (Coinbase Maturity) bezeichnet.
Versucht eine Transaktion einen Coinbase-Output vor Ablauf dieser Frist auszugeben, wird sie von allen Nodes als ungültig abgelehnt. Die Coinbase-Reifezeit ist Teil der Bitcoin-Konsensregeln und wird bei der Transaktionsvalidierung überprüft.
Warum gibt es die Coinbase Maturity?
Die Coinbase-Reifezeit schützt das Netzwerk vor den Auswirkungen von Reorganisationen der Blockchain.
Wird ein Block durch eine konkurrierende Kette mit mehr kumulativer Arbeit ersetzt, verschwindet auch seine Coinbase-Transaktion wieder aus der aktiven Blockchain. Die darin enthaltene Blockbelohnung gilt dann als nie entstanden.
Ohne eine Wartezeit könnten Miner diese noch unsicheren Coinbase-Outputs unmittelbar weiter ausgeben. Kommt es anschließend zu einer Reorganisation, würden nicht nur die Coinbase-Outputs verschwinden, sondern möglicherweise auch weitere Transaktionen, die bereits auf diesen Outputs aufbauen.
Die 100-Block-Regel verhindert dieses Problem. Erst wenn ein Block tief genug in der Blockchain verankert ist, dürfen die daraus entstandenen Coinbase-Outputs ausgegeben werden.
Normale UTXOs sind von dieser Regel nicht betroffen. Die Coinbase-Reifezeit gilt ausschließlich für Outputs aus Coinbase-Transaktionen.
Besonderheiten der Coinbase
Die Coinbase-Transaktion unterscheidet sich in mehreren Punkten von normalen Bitcoin-Transaktionen.
Die meisten dieser Unterschiede ergeben sich aus ihrem speziellen Coinbase-Input.
Während normale Inputs einen bestehenden UTXO referenzieren und die Daten zum Ausgeben dieses UTXOs enthalten, verweist der Coinbase-Input auf keine vorherige Transaktion.
Dadurch besitzt er mehrere Besonderheiten:
- Previous TXID besteht nur aus Nullen
- Output Index besitzt den Sonderwert
0xffffffff - keine Signatur zum Ausgeben eines UTXOs
- Coinbase-Daten im
scriptSig
Der Coinbase-Input
Jede Coinbase-Transaktion besitzt genau einen speziellen Input.
Dieser Input referenziert keine vorherige Transaktion. Deshalb bestehen Previous TXID und Output Index aus festen Sonderwerten.
Im Gegensatz zu normalen Inputs enthält sein scriptSig keine Signatur zum
Ausgeben eines bestehenden UTXOs, sondern sogenannte Coinbase-Daten.
Die Darstellung zeigt den serialisierten Coinbase-Input aus Block 825000:
- Input Count
- Previous TXID
- Output Index
- scriptSig Length
- scriptSig: Coinbase-Daten
- Sequence
Bereich anklicken für Details.
Coinbase-Daten
Die Coinbase-Daten befinden sich im
scriptSig des Coinbase-Inputs.
Im Gegensatz zu normalen Inputs dienen sie nicht dazu, einen bestehenden UTXO auszugeben. Stattdessen können Miner hier zusätzliche Informationen speichern und bestimmte Daten für den Mining-Prozess hinterlegen.
Coinbase-Daten
- Push-Opcode Blockhöhe
- Blockhöhe
- Push-Opcode Pool-Daten
- Pool-Text
- Mining-Daten
Bereich anklicken für Details.
Die Darstellung zerlegt die Coinbase-Daten im scriptSig von Block 825000 in ihre einzelnen Bestandteile und zeigt
deren Serialisierung.
Seit BIP34 muss die aktuelle Blockhöhe am Anfang der Coinbase-Daten gespeichert werden.
Zusätzlich enthalten Coinbase-Daten häufig:
- Informationen des Mining-Pools
- Miner-Nachrichten
- die ExtraNonce
- weitere Mining-Daten
ExtraNonce
Der Block Header enthält mit dem Feld Nonce lediglich 32 Bit.
Dadurch kann ein Miner nur etwa 4,3 Milliarden verschiedene Nonce-Werte ausprobieren.
Ist dieser Suchraum erschöpft, muss der Miner weitere Teile des Blocks verändern, um neue Hashes erzeugen zu können.
Dafür wird häufig die ExtraNonce innerhalb der Coinbase-Daten verwendet.
Die ExtraNonce befindet sich nicht im Block Header, sondern innerhalb der Coinbase-Daten.
ExtraNonce
fabe6d6d0e9b040a8d3ec8ffa863e3c4959b32c51c3ecc3e8cf4a406d953b22652a253e4100000000000000000000287a522010000000000scriptSig
03a8960c1d506f7765726564206279204c75786f72205465636898000e0518c290f4fabe6d6d0e9b040a8d3ec8ffa863e3c4959b32c51c3ecc3e8cf4a406d953b22652a253e4100000000000000000000287a522010000000000Block 825000
03a8960c1d506f7765726564206279204c75786f72205465636898000e0518c290f4fabe6d6d0e9b040a8d3ec8ffa863e3c4959b32c51c3ecc3e8cf4a406d953b22652a253e4100000000000000000000287a522010000000000Coinbase TXID
cff9391eb9ded4926ad436eef15bdbb16e926caf43dbbf55f32842eb2607b657Block 825000
cff9391eb9ded4926ad436eef15bdbb16e926caf43dbbf55f32842eb2607b657Merkle Root
600201044d2074fb16eeb85c0d587a6191de78daac06d9ada885c1332354a90dBlock 825000
600201044d2074fb16eeb85c0d587a6191de78daac06d9ada885c1332354a90dBlockhash
00000000000000000001432b1ea8b3b710c3fb7e628d605cf4a42c25d7822431Block 825000
00000000000000000001432b1ea8b3b710c3fb7e628d605cf4a42c25d7822431Eine Änderung der ExtraNonce verändert die Coinbase-Transaktion. Dadurch entsteht eine neue Merkle Root und letztlich ein völlig anderer Blockhash.
Die ExtraNonce erweitert den Suchraum des Proof-of-Work erheblich und ermöglicht es Minern, weit mehr Hashes zu berechnen als allein mit dem 32-Bit-Nonce-Feld des Block Headers möglich wären.
Miner-Nachrichten
Da die Coinbase-Daten frei gewählt werden können, nutzen Miner dieses Feld häufig, um zusätzliche Informationen im Block zu hinterlassen.
Beispiele sind:
- Namen von Mining-Pools
- Software-Versionen
- URLs
- Signaturen
- kurze Textnachrichten
Das bekannteste historische Beispiel ist die Times-Schlagzeile im Genesis-Block.
Im Block 825000 enthält der Pool-Text innerhalb der Coinbase-Daten die Zeichenfolge:
Powered by Luxor Tech- Input Count
- Previous TXID
- Output Index
- scriptSig Length
- scriptSig: Coinbase-Daten
- Sequence
Bereich anklicken für Details.
Die Darstellung zeigt den serialisierten Coinbase-Input aus Block 825000. Im
scriptSig sind die Coinbase-Daten
enthalten, darunter der Pool-Text.
Coinbase-Daten
- Push-Opcode Blockhöhe
- Blockhöhe
- Push-Opcode Pool-Daten
- Pool-Text
- Mining-Daten
Bereich anklicken für Details.
Die zweite Darstellung schlüsselt die Coinbase-Daten im scriptSig auf. Der Pool-Text „Powered by Luxor Tech“ ist als
eigenes Feld erkennbar.
Solche Nachrichten haben keine Auswirkung auf die Konsensregeln und werden von Nodes nicht ausgewertet. Sie bleiben jedoch dauerhaft Bestandteil der Blockchain.
Die Coinbase von Block 0
Die Coinbase-Transaktion des Genesis-Blocks unterscheidet sich von allen späteren Coinbase-Transaktionen.
Sie enthält die bekannte Times-Schlagzeile, wurde vor der Einführung von BIP34 erzeugt und ihre 50 BTC wurden niemals als ausgebbarer UTXO in den Chainstate übernommen.
- Input Count
- Previous TXID
- Output Index
- scriptSig Length
- scriptSig: Coinbase-Daten
- Sequence
Bereich anklicken für Details.
Die Darstellung zeigt den serialisierten Coinbase-Input von Block 0.
Die Times-Schlagzeile
Coinbase-Daten
- Push-Opcode
- Mining-Daten
- Miner-Nachricht
Bereich anklicken für Details.
In den Coinbase-Daten speicherte Satoshi Nakamoto die Schlagzeile der britischen Zeitung The Times vom 3. Januar 2009:
The Times 03/Jan/2009 Chancellor on brink of second bailout for banksDie Nachricht dient als nachweisbare zeitliche Referenz für die Entstehung des Genesis-Blocks.
Die Darstellung zerlegt die Coinbase-Daten des Genesis-Blocks und zeigt die eingebettete Zeitungsüberschrift.
Kein BIP34-Blockhöhenfeld
Heute muss jede Coinbase-Transaktion die aktuelle Blockhöhe am Anfang ihrer Coinbase-Daten speichern.
Diese Regel wurde jedoch erst Jahre später mit BIP34 eingeführt.
Da der Genesis-Block lange vor BIP34 erzeugt wurde, enthält seine Coinbase kein Blockhöhenfeld.
Stattdessen beginnen die Coinbase-Daten mit mehreren frei gewählten Datenfeldern, gefolgt von der eingebetteten Times-Schlagzeile.
Die ersten 50 BTC
Wie jeder Block enthält auch der Genesis-Block eine Coinbase-Transaktion mit einer Blockbelohnung von 50 BTC.
Diese Ausgabe ist jedoch ein Sonderfall.
Warum können diese 50 BTC nicht ausgegeben werden?
Nur Outputs, die während der normalen Blockverarbeitung erfolgreich validiert und in das UTXO-Set übernommen werden, können später ausgegeben werden.
Der Genesis-Block bildet hier eine Ausnahme.
Er wird nicht wie spätere Blöcke über das Netzwerk empfangen und anschließend durch die reguläre Blockvalidierung verarbeitet. Stattdessen ist er als fester Ankerpunkt direkt im Bitcoin-Quellcode definiert und wird beim Start einer Node erzeugt.
Dadurch wird die Coinbase-Ausgabe von Block 0 niemals in das UTXO-Set übernommen.
Die Transaktion ist zwar Bestandteil des Genesis-Blocks und für jeden sichtbar, ihr Output existiert jedoch nicht als ausgebbarer UTXO.
Im Bitcoin Core-Quellcode wird die Coinbase-Transaktion des
Genesis-Blocks direkt in
CreateGenesisBlock() erzeugt. Dort
werden sowohl die Coinbase-Ausgabe über 50 BTC als auch die bekannte
Times-Schlagzeile fest im Quellcode definiert.
Die ersten 50 BTC gelten deshalb bis heute als dauerhaft unspendierbar.