39 / 736CBTX

Coinbase-Transaktion

Die Transaktion für die Belohnung eines geminten Blocks

Wer bezahlt den Miner, wenn Bitcoin keine zentrale Kasse hat? Der Miner trägt die Belohnung in eine besondere Transaktion am Anfang seines Blocks ein. Andere Knoten prüfen, ob er die erlaubte Höhe einhält. Diese Transaktion heißt Coinbase.

Eine Coinbase-Transaktion weist die Blockbelohnung zu: erlaubte neue Bitcoins und Gebühren der anderen Transaktionen. Anders als eine gewöhnliche Zahlung gibt sie keine zuvor empfangenen Mittel aus. Sie ist nur innerhalb eines gültigen Blocks gültig, und ihre Belohnung lässt sich nicht sofort ausgeben. Der Name bezeichnet eine Transaktionsart, nicht die Börse Coinbase.

Stellen wir uns vor, Anna bereitet einen Blockkandidaten zum Mining vor. Sie sammelt Zahlungen und setzt davor eine besondere Transaktion, die die Empfänger der Belohnung festlegt. In unserem Beispiel erlauben die Regeln 3,125 BTC neue Münzen; die ausgewählten Zahlungen steuern 0,075 BTC Gebühren bei. Anna darf sich somit höchstens 3,2 BTC zuschreiben. Diese erste Transaktion ist Coinbase. Ihr Eintrag allein bringt Anna noch keine Belohnung: Der Block muss die Mining-Anforderung und alle weiteren Bedingungen erfüllen, die empfangende Knoten selbst prüfen. Fordert sie zu viel, lehnen sie den ganzen Block ab, unabhängig von der eingesetzten Energie. Kein zentrales Konto überweist ihr das Geld. Neue Münzen entstehen nach gemeinsamen Regeln innerhalb eines akzeptierten Blocks. Von den 3,2 BTC des Beispiels sind nur 3,125 BTC neu; den Rest haben Nutzer bezahlt. Das ist die Belohnung, nicht der Gewinn: Mining-Kosten sind noch nicht abgezogen. [6] [4]

Die erlaubte Neuausgabe heißt Block Subsidy und wird beim Halving regelmäßig halbiert. Ein Satoshi ist die kleinste Bitcoin-Einheit. Gebühren hängen dagegen von den konkreten Zahlungen im Block ab; zwei Blöcke müssen daher nicht gleich viel einbringen. Die Obergrenze besteht aus der zur Blockhöhe gehörenden Neuausgabe, in Bitcoin Core durch GetBlockSubsidy berechnet, und den Gebühren aller anderen gültigen Transaktionen im Block. Nur die Neuausgabe erhöht den Bestand; Gebühren sind vorhandene Satoshis. Der Miner darf weniger beanspruchen, den Rest aber später nicht nachholen: Verzichtete Neuausgabe entsteht nicht, nicht eingesammelte Gebühren bleiben dauerhaft unausgebbar. Schon ein Satoshi zu viel macht den ganzen Block ungültig. [4] [6]

Die Belohnung geht oft an einen Mining-Pool, der die Arbeit mehrerer Miner koordiniert. Ein Sperrskript ist ein kurzes Programm, das festlegt, unter welchen Bedingungen ein Ausgang später ausgegeben werden kann. PPS, FPPS und PPLNS bezeichnen unterschiedliche Verfahren, mit denen Pools Einnahmen unter Teilnehmern verteilen. Coinbase-Ausgänge verwenden gewöhnliche Sperrskripte. Die Belohnung kann an eine Sammeladresse gehen, auf mehrere Empfänger verteilt werden oder einen Anteil des Poolbetreibers enthalten. Nodes prüfen Beträge und Ausgabebedingungen, nicht Verträge oder wirtschaftliche Eigentümer. PPS, FPPS, PPLNS, Auszahlungsgrenzen und spätere Überweisungen an Teilnehmer sind Poolregeln, keine Konsensregeln von Bitcoin. [6] [7]

Anna sieht die Belohnung im Block, kann damit aber noch keine Stromrechnung bezahlen. Keine Börse hält sie zurück: Bitcoin selbst schreibt die Wartezeit vor. Die Blockhöhe ist die Positionsnummer eines Blocks; H bezeichnet hier die Höhe des Blocks, in dem die Belohnung entstand. COINBASE_MATURITY verlangt mindestens 100 Höhenstufen zwischen dem ausgebenden und dem erzeugenden Block. Ein Ausgang aus Höhe H darf erstmals in einem gültigen Block H+100 ausgegeben werden. Die Bestätigungsanzeige kann anders wirken, weil der erzeugende Block schon als erste Bestätigung zählt. Entscheidend ist die Höhendifferenz, keine Stundenschätzung. Auch danach kann ein Block noch aus der Kette fallen. [5]

Bei einer Reorganisation wechselt der Knoten auf einen anderen gültigen Zweig mit mehr angesammelter Mining-Arbeit. UTXOs sind noch nicht ausgegebene Ausgänge, also einzelne verfügbare Beträge. Eine Belohnung kann zusammen mit ihrem Block aus diesem Bestand verschwinden. Eine Reorganisation kann den ursprünglichen Block aus der gültigen aktiven Kette mit der größten kumulierten Arbeit entfernen. Seine Coinbase-Ausgänge verschwinden dann aus der aktiven UTXO-Menge. Auch Transaktionen, die die Belohnung ausgeben, können betroffen sein. Die Wartezeit von 100 Blöcken begrenzt Folgen kurzer Reorganisationen, bietet aber keine absolute Sicherheit. Ein Pool muss aktive Belohnungen, Ausgabereife und eigene Verpflichtungen gegenüber Minern auseinanderhalten. [4] [5]

Für das genaue Format braucht es einige Begriffe: Ein Eingang verweist normalerweise auf ausgegebene Mittel, ein Ausgang legt Betrag und Ausgabebedingungen fest. Die txid identifiziert die Transaktion, die Version bestimmt ihr Format und locktime kann den Zeitpunkt ihrer Aufnahme begrenzen. Jeder Block muss mindestens eine Transaktion enthalten; nur die erste darf Coinbase sein. Sie hat genau einen Eingang mit einem leeren Verweis auf einen früheren Ausgang: 32 Nullbytes als Hash und den Index 0xffffffff. Dieser Outpoint gibt nichts Vorhandenes aus, weshalb keine gewöhnliche Signatur für einen ausgegebenen Ausgang geprüft wird. Die Transaktion besitzt dennoch txid, Version, locktime und einen oder mehrere Ausgänge. [1] [2] [3]

Die Höhe ist die Positionsnummer eines Blocks. BIP34 bezeichnet einen Vorschlag, dessen Regel Bitcoin übernommen hat; scriptSig ist ein Datenfeld des Eingangs, CScript die Darstellung von Skriptanweisungen und Zahlen. Nach BIP34 muss scriptSig mit der Blockhöhe als minimal kodierter CScript-Zahl beginnen. Das gesamte Feld umfasst 2–100 Bytes. Danach können eine extra nonce, eine Poolkennung oder Daten für Merged Mining folgen. Eine falsche Höhe oder Länge führt zur Ablehnung. Obwohl dieser Eingang nicht wie ein gewöhnliches Entsperrskript ausgeführt wird, können enthaltene Signatur-Opcodes zum sigops-Limit für Signaturoperationen beitragen. [1] [9]

Beim Mining wird wiederholt ein Hash berechnet, der digitale Fingerabdruck der kurzen Blockzusammenfassung namens Header. Eine Nonce ist eine veränderliche Zahl; die Merkle-Wurzel fasst Transaktionen zu einem Fingerabdruck zusammen. Eine geänderte Transaktion eröffnet weitere Versuche. Das Nonce-Feld des Blockheaders hat 32 Bit; Mining-Hardware durchsucht seine Möglichkeiten schnell. Deshalb ändert die Software auch eine extra nonce in Coinbase. Dadurch ändern sich txid, Merkle-Wurzel und Blockheader, und ein neuer Suchraum für geeignete Hashes entsteht. Ein Mining-Pool verteilt die Arbeit so auf Geräte, dass sie nicht unnötig dieselben Varianten prüfen. Die extra nonce erzeugt keine zusätzlichen Coins. [6] [7] [12]

SegWit trennt bestimmte Prüfdaten, etwa Signaturen, in einen Bereich namens Witness ab. Ein Commitment bindet Daten überprüfbar ein; es ist keine weitere Auszahlung. Das folgende Format dient als technische Referenz dieser Bindung. Enthält ein Block Witness-Daten, verlangt BIP141 einen Coinbase-Ausgang mit einem Witness Commitment, einer kryptografischen Bindung an diese Daten. Das Skript beginnt mit 6a24aa21a9ed: OP_RETURN, Einfügen von 36 Bytes und der Kennung aa21a9ed. Es folgt der 32-Byte-Doppel-SHA-256-Hash aus Witness-Merkle-Wurzel und angehängtem reserviertem Wert. Der Witness des Coinbase-Eingangs muss genau diesen einen reservierten 32-Byte-Wert enthalten. Bei mehreren Treffern gilt der höchste Ausgangsindex. Dies ist keine ausgebbare Auszahlung; ohne Witness-Daten im Block ist das Commitment optional. [10]

Ein Full Node ist ein Rechner, der Bitcoin-Regeln selbst überprüft. Das Blockgewicht misst die Nutzung der erlaubten Datenkapazität; der Mempool hält gewöhnliche unbestätigte Transaktionen lokal bereit. Die Belohnungsprüfung gehört zur Prüfung des ganzen Blocks. Ein Full Node verlangt Coinbase an erster Stelle und lehnt weitere Coinbase-Transaktionen im selben Block ab. Er prüft scriptSig, BIP34-Höhe, Wertebereiche, Blockgewicht, Gebühren und nötiges Witness Commitment. Die Summe der Ausgänge darf erlaubte Neuausgabe plus Gebühren nicht übersteigen; spätere Ausgaben müssen die Reiferegel erfüllen. Ein Miner kann sich somit nicht gültig beliebige Beträge zusprechen. Ohne ihren Block gelangt Coinbase nicht in den Mempool. [3] [4] [10]

Der Genesis Block ist Bitcoins Anfangsblock. Seine Sonderstellung und frühere doppelte Kennungen erklären, weshalb gewöhnliche heutige Regeln nicht unterschiedslos auf alle historischen Fälle passen. Bevor die Höhe Pflicht war, konnten verschiedene Coinbase-Transaktionen dieselbe txid haben. BIP30 verhindert das Überschreiben älterer, noch nicht ausgegebener Ausgänge; BIP34 ergänzt in gewöhnlichen modernen Blöcken eine unterscheidende Höhe. Der Genesis Block ist ein Sonderfall: Seine Coinbase steht im gespeicherten Block, doch die Initialisierung machte ihren Ausgang nicht ausgebbar. Die ursprünglichen 50 BTC können deshalb nicht ausgegeben werden; das ist keine normale Wartezeit von 100 Blöcken. [8] [9] [11]

Für ein möglichst vollständiges Bild lies diesen Eintrag zusammen mit Block, Block Subsidy, Transaction Fees, Mining, Block Template, Bitcoin. Auf diesen Eintrag verweisen außerdem Block Subsidy, Bestätigung, Reorg, Stale Block.

DOC · 001Bitcoin Developer Reference — Coinbase inputDokumentation DOC · 002Bitcoin Developer Reference — Block chainDokumentation DOC · 003Bitcoin Core — transaction.h (IsCoinBase)Dokumentation DOC · 004Bitcoin Core — validation.cppDokumentation DOC · 005Bitcoin Core — consensus.h (COINBASE_MATURITY)Dokumentation DOC · 006Bitcoin Core — miner.cppDokumentation DOC · 007BIP 22 — getblocktemplateSpezifikation DOC · 008BIP 30 — Duplicate transactionsSpezifikation DOC · 009BIP 34 — Block height in coinbaseSpezifikation DOC · 010BIP 141 — Segregated Witness commitmentSpezifikation DOC · 011Bitcoin Core — chainparams.cpp (genesis construction)Dokumentation DOC · 012Stratum V2 — Mining Protocol specificationSpezifikation
Überarbeitet: Quellenbasiert · Keine Anlageberatung