Was steckt in einem Block: Header, Höhe, Größe und Subvention
Ein Block ist ein kleiner fester Header plus ein Körper aus Transaktionen. Wer beides unterscheidet, versteht, was Mining eigentlich hasht und warum.
Zwei Teile, und nur einer davon wird gehasht
Ein Block besteht aus einem Header und einem Body. Der Body enthält die Transaktionen und kann je nach Auslastung der Chain ein paar hundert Bytes oder mehrere Megabytes groß sein. Der Header ist eine feste Zusammenfassung des Blocks und auf den meisten Chains genau 80 Bytes groß.
Beim Mining wird der Header gehasht und sonst nichts. Das ist die wichtigste Tatsache in diesem Artikel, denn sie erklärt etwas, das sonst unmöglich wirkt: Ein Miner probiert Milliarden Varianten pro Sekunde, und das ginge nicht, wenn jeder Versuch bedeuten würde, einen Block voller Transaktionen neu zu hashen. Das tut er nicht. Er hasht 80 Bytes neu.
Die sechs Felder im Header
Der Header enthält eine Version, den Hash des vorherigen Blocks, die Merkle-Root, einen Zeitstempel, die Schwierigkeitsbits und die Nonce. Jedes davon hat einen Grund, und zwei davon leisten den Großteil der Arbeit.
Der Hash des vorherigen Blocks macht daraus eine Kette. Jeder Header nennt den Block davor. Würde man einen alten Block umschreiben, änderte sich sein Hash, was den nächsten Header ungültig machen würde, und den nächsten, bis ganz zur Spitze. Das ist das gesamte Sicherheitsargument von Proof of Work in einem einzigen Feld.
Die Merkle-Root ist ein einzelner Hash, der alle Transaktionen im Body zusammenfasst. Ändert sich eine Transaktion auch nur um ein Byte, ändert sich die Merkle-Root, damit ändert sich der Header, und damit ist jeder bisher versuchte Hash wertlos. So können 80 Bytes ehrlich für einen Block beliebiger Größe stehen.
Die Schwierigkeitsbits sind das Ziel, unter dem der Hash liegen muss, in kompakter Form. Der Zeitstempel gibt ungefähr an, wann der Block erstellt wurde, und darf ungenau sein. Die Nonce ist das Feld, das der Miner frei ändern darf, und genau das macht die Suche überhaupt erst möglich.
Die Nonce geht aus, und das ist in Ordnung
Die Nonce ist ein kleiner Zähler, und ein moderner Miner schöpft alle Werte, die sie fassen kann, fast sofort aus. Das klingt nach einer Sackgasse, ist aber keine, denn die Nonce ist nur das bequemste Feld zum Ändern, nie das einzige.
Wenn sie ausgeht, ändert der Miner etwas anderes, das in den Header einfließt. Der Zeitstempel kann sich verschieben. Die Coinbase-Transaktion kann leicht verändert werden, was die Merkle-Root ändert und einen völlig neuen Header zum Durchsuchen liefert. In einem Pool ist genau dafür die Extranonce da: Mit ihr gibt der Pool jedem Miner einen anderen Startpunkt, damit keine zwei Miner dieselben Zahlen durchrechnen.
Die Höhe ist eine Position, kein Feld
Die Blockhöhe ist die Anzahl der Blöcke, die vor einem bestimmten Block kamen. Der Genesis-Block hat die Höhe null, der nächste eins und so weiter. Es ist die Zahl, die Sie neben jedem Eintrag auf der Seite „Blöcke“ des Pools und in jedem Explorer sehen.
Gut zu wissen: Die Höhe ist nicht wirklich im Header gespeichert. Sie ergibt sich daraus, wo der Block in der Chain steht. Auf den meisten modernen Chains wird die Höhe zusätzlich in die Coinbase-Transaktion geschrieben. Diese Regel kam später hinzu, damit zwei Blöcke auf verschiedenen Höhen nie byteweise identisch sein können, doch die maßgebliche Antwort auf die Frage, wie hoch ein Block ist, bleibt seine Position.
Deshalb ist die Höhe auch der natürliche Weg, über Bestätigungen zu sprechen. Eine Transaktion, die sechs Blöcke tief liegt, ist eine, deren Blockhöhe sechs unter der Spitze liegt, und jeder weitere Block macht es entsprechend teurer, sie umzuschreiben.
Die Größe ist der Body, und der füllt sich
Die Blockgröße ist im Wesentlichen die Größe des Bodys, denn der Header fällt daneben kaum ins Gewicht. Wenn jemand sagt, eine Chain habe ein Blockgrößenlimit, geht es darum, wie viele Transaktionen hineinpassen, nicht um den Header.
Ein voller Block und ein leerer Block erfordern genau gleich viel Mining-Arbeit. Die Schwierigkeit entscheidet, wie schwer ein Block zu finden ist; die Größe entscheidet, wie viel der Block trägt. Beides hat nichts miteinander zu tun, und wer es verwechselt, entwickelt leicht ein falsches Gefühl für Gebühren.
Was die Größe beeinflusst, ist der Gebührenmarkt. Wenn mehr Transaktionen hineinwollen als Platz haben, kommen die mit höheren Gebühren zuerst an die Reihe, und die Gesamtgebühren im Block steigen. Das fließt direkt in das ein, was der Block auszahlt.
Die Coinbase-Transaktion und die Subvention
Die erste Transaktion in jedem Block ist besonders. Sie hat keinen Absender, sie erzeugt Coins aus dem Nichts und zahlt sie an denjenigen, der den Block erstellt hat. Sie heißt Coinbase-Transaktion und hat nichts mit der gleichnamigen Börse zu tun.
Sie zahlt die Subvention plus die Gebühren aller anderen Transaktionen im Block. Die Subvention ist der neu ausgegebene Teil, festgelegt durch den Emissionsplan der Chain und auf den meisten Coins mit der Zeit sinkend. Die Gebühren sind das, was Nutzer ihren Transaktionen beigefügt haben, damit sie aufgenommen werden. Zusammen ergeben sie die Blockbelohnung.
In einem Pool zahlt die Coinbase an den Pool, der die Belohnung dann auf alle verteilt, die Shares zu dieser Runde beigetragen haben. Das ist kein Umweg: So kann ein Pool viele Menschen für eine Belohnung bezahlen, die als eine einzige unteilbare Zahlung ankommt.
Warum das alles beim Mining wichtig ist
Sobald die Form eines Blocks klar ist, werden drei Dinge offensichtlich, und alle drei kommen ständig vor.
- Warum ein neuer Block Ihre Arbeit sofort ungültig macht. Das Feld mit dem Hash des vorherigen Blocks hat sich geändert, also existiert der Header, den Sie durchsucht haben, nicht mehr. Alles, was Sie danach dafür einreichen, ist ein Stale Share, und daran ändert keine Geschwindigkeit etwas.
- Warum der Pool Ihnen so oft neue Arbeit schickt. Jede neue Transaktion, die der Pool aufnehmen will, ändert die Merkle-Root, und ein frischeres Template enthält mehr Gebühren, also mehr Belohnung für denselben Aufwand.
- Warum die Blockgröße nie in einer Schätzung der Einnahmen auftaucht. Was Sie verdienen, hängt von der Schwierigkeit, der Subvention und den Gebühren ab, nicht davon, wie viele Bytes im Body waren.
Die Seite „Blöcke“ dieses Pools zeigt die Höhe, die Belohnung und den Fundzeitpunkt, also den nützlichen Teil all dessen, verdichtet auf eine Zeile. Der Explorer zeigt Ihnen den Rest, einschließlich der Coinbase-Transaktion, die ihn ausgezahlt hat.