93 / 736SV1

Stratum V1

Wie sich ein Mining-Gerät mit dem Pool verständigt

Stratum V1 ist die gemeinsame Sprache von Mining-Gerät und Pool: Sie übermittelt Aufgaben, nimmt Ergebnisse entgegen und macht geleistete Arbeit messbar. Marek Palatinus, bekannt als Slush, stellte sie 2012 vor.

Stratum V1 ist ein Kommunikationsprotokoll für gemeinsames Bitcoin-Mining. Über eine offen gehaltene Verbindung sendet der Pool Arbeit, und die Geräte liefern Ergebnisse zurück. Das Protokoll legt weder die Vergütung noch die Gültigkeitsregeln für Bitcoin-Blöcke fest.

Eva hat einen ASIC, ein speziell für Bitcoin-Mining gebautes Gerät, an einen Pool angeschlossen. Der Pool koordiniert Miner, die nach dem nächsten Block suchen: einem Paket von Transaktionen, das Bitcoins Historie ergänzt. Rechenleistung allein reicht jedoch nicht: Das Gerät braucht eine Aufgabe, und der Pool muss Evas Beitrag erkennen. Diese Verständigung übernimmt Stratum V1. Der Pool liefert Arbeit für die Suche nach dem nächsten Block; die Maschine rechnet und meldet Zwischenergebnisse. Wie die Sprache eines Telefongesprächs sorgt das Protokoll dafür, dass beide Seiten einander verstehen. Den Preis der Arbeit legt es nicht fest. Dafür gelten die Vergütungsregeln des Pools; die Gültigkeit eines gefundenen Blocks prüfen die Bitcoin-Knoten. [4] [2]

Mit steigender Geräteleistung wurde das ältere getwork unpraktisch. Es lieferte kleine Arbeitspakete, sodass die Geräte häufig Nachschub anfordern mussten. Marek Palatinus stellte am 11. September 2012 einen neuen Vorschlag vor. Stratum hält die Verbindung offen: Der Pool kann geänderte Aufgaben senden, ohne auf eine weitere Anfrage zu warten. Das verringert den Kommunikationsaufwand. Andere Bestandteile des Minings ersetzt es nicht vollständig. Ein Pool kann seinen Blockentwurf weiterhin mit getblocktemplate von einem Bitcoin-Knoten beziehen, wie in BIP 22 beschrieben. [11] [3] [5]

Die Steuerungssoftware sendet üblicherweise zuerst mining.subscribe und fordert damit Arbeit an. Sie erhält Verbindungsdaten und Angaben, mit denen ihre Berechnungen unterschieden werden. mining.authorize ordnet das Gerät anschließend einem Konto zu. Worker bezeichnet hier ein Gerät oder dessen Verbindung, keinen Arbeitnehmer. Eva kann so mehrere Maschinen unter einem Konto auseinanderhalten. Ein dabei übermitteltes Passwort bestätigt aber weder von sich aus die Echtheit des Servers noch verschlüsselt es die Kommunikation. Eine erfolgreiche Anmeldung ist deshalb noch kein Nachweis einer sicheren Verbindung. [2] [13]

mining.notify liefert eine neue Aufgabe mit der Kennung job_id. Sie enthält den Bezug zum vorherigen Block, Transaktionsdaten, Zeit und weitere Angaben für den Block-Header, der die wichtigsten Daten zum Block kompakt zusammenfasst. Entscheidend ist clean_jobs. Der Wert true verlangt, alte Aufgaben aufzugeben; false erlaubt, noch an der vorherigen Aufgabe zu arbeiten, während auf die neue gewechselt wird. Eine neue Nachricht macht somit nicht automatisch alle laufenden Ergebnisse unbrauchbar. Außerdem ist die Aufgabe erst ein Entwurf zum Berechnen, noch kein gültiger Block. [2] [13]

Dieser Abschnitt ist technisch; zum normalen Anschließen muss man nicht jedes Feld kennen. Der Pool liefert zwei Teile der Coinbase-Transaktion, über die die Blockvergütung ausgezahlt wird. Sie hat nichts mit der gleichnamigen Börse zu tun. Dazwischen setzt die Software das vom Pool zugeteilte extranonce1 und ihr eigenes extranonce2. So entstehen weitere Arbeitsvarianten. Aus der Transaktion und den gelieferten Merkle branches, Zwischenwerten einer baumförmigen Zusammenfassung der Transaktionen, berechnet sie die Merkle root. Mit Vorgängerbezug, Version, Zeit und dem codierten Grenzwert für den gesuchten Hash entsteht die Grundlage eines 80 Byte langen Headers. Der ASIC berechnet fortlaufend dessen Hash, einen numerischen Fingerabdruck, und verändert nonce, eine Zahl für weitere Versuche. [2] [4] [13] [14]

Ein ganzer Block wird nur selten gefunden. Der Pool setzt deshalb eine leichter erreichbare Ergebnisgrenze, den target. Ein passendes Ergebnis heißt mining share und belegt geleistete Arbeit. Die meisten Shares erfüllen nicht die strengere Grenze des Bitcoin-Netzes; gelegentlich gelingt das dennoch, und das Ergebnis kann zu einem gültigen Block führen. mining.set_difficulty und die automatische Anpassung vardiff verändern die Share-Schwierigkeit, damit Ergebnisse in sinnvollen Abständen eintreffen. Die Netzwerkschwierigkeit ändern sie nicht. Eine schwierigere Bedingung erfordert im Durchschnitt mehr Berechnungen. Ein passendes Ergebnis zählt bei der Messung der Arbeit deshalb mehr. Weniger, dafür schwierigere Shares bedeuten allein noch keine geringere Vergütung: Gewichtung und Abrechnungsregeln zählen ebenfalls. [2] [4] [13]

Mit mining.submit übermittelt das Gerät Worker-Kennung, job_id, extranonce2, nTime (den Zeitstempel im Header) und nonce. Der Pool rekonstruiert und prüft das Ergebnis. duplicate bedeutet doppelt eingereichte Arbeit, low difficulty ein unzureichendes Ergebnis und stale Arbeit an einer nicht mehr angenommenen Aufgabe. Eva achtet daher neben der Rechenleistung auch auf Ablehnungen und Verzögerungen der Verbindung. Selbst ein akzeptierter Share ist noch keine Auszahlung an eine Wallet: Stratum vermittelt Arbeit, während Gutschrift und Auszahlung eigenen Regeln folgen. [2] [13]

BIP 310 von 2018 beschreibt, wie zusätzliche Fähigkeiten über mining.configure ausgehandelt werden. Das am 17. Oktober 2026 geprüfte Dokument trägt weiterhin den Status Draft, also Entwurf. Version-rolling erlaubt nur die Änderung vereinbarter Bits im Versionsfeld des Headers; nach der Aushandlung kommt bei mining.submit ein sechstes Feld hinzu. Beliebige Änderungen der Bitcoin-Regeln erlaubt das nicht. minimum-difficulty und subscribe-extranonce betreffen die gewünschte Mindestschwierigkeit von Shares sowie Meldungen neuer Extranonce-Werte. Diese Verständigung verhindert Missverständnisse zwischen Programmen, verschlüsselt aber nicht selbst die Verbindung. [6]

V1 läuft häufig über unverschlüsseltes TCP. Ohne zusätzlichen Schutz kann jemand auf dem Übertragungsweg Nachrichten lesen oder verändern und versuchen, Rechenarbeit umzuleiten. Die Studie Hardening Stratum von 2017 untersuchte diese Risiken praktisch. Betroffen ist die Verbindung zwischen Gerät und Pool, nicht das Außerkraftsetzen der Bitcoin-Regeln. Üblicherweise wählt außerdem der Pool die Transaktionen für den Block aus. Dass Eva die Hardware besitzt, bedeutet noch nicht, dass sie diesen Inhalt bestimmt. Bitcoin-Knoten lehnen regelwidrige Blöcke weiterhin ab, selbst wenn ein großer Pool sie erzeugt. [7] [4]

Stratum V2 bringt kompaktere Binärnachrichten und eine kryptografisch geschützte Verbindung. Der getrennte Bestandteil Job Declaration kann dem Miner ermöglichen, die Transaktionen für einen Block selbst auszuwählen und vorzuschlagen, wenn beide Seiten ihn unterstützen und verwenden. Ein V1/V2-Übersetzer oder die bloße Bezeichnung V2 belegt das nicht. Eva sollte Firmware-Unterstützung, richtige Serveradresse, Verbindungsschutz, abgelehnte Ergebnisse und Ersatzverbindungen prüfen. Der Grundgedanke von V1 bleibt überschaubar: Arbeit zustellen, Berechnung nachweisen und beides von Blockauswahl und Auszahlung unterscheiden. [8] [12] [10]

Für ein möglichst vollständiges Bild lies diesen Eintrag zusammen mit Bitcoin, Mining, Mining Pool, Braiins, Braiins Pool, Marek „Slush“ Palatinus. Auf diesen Eintrag verweisen außerdem Mining Pool, Marek „Slush“ Palatinus, Braiins, Braiins Pool.

DOC · 001Original Stratum mining protocol announcementPrimärquelle DOC · 002Bitcoin Wiki — Stratum mining protocolDokumentation DOC · 003Braiins — Past and future of mining protocolsPrimärquelle DOC · 004Bitcoin Developer Guide — Pooled MiningDokumentation DOC · 005BIP 22 — getblocktemplate fundamentalsPrimärquelle DOC · 006BIP 310 — Stratum protocol extensionsPrimärquelle DOC · 007Hardening Stratum research paperPrimärquelle DOC · 008Stratum V2 Mining Protocol specificationPrimärquelle DOC · 009Galaxy Research — Future of Bitcoin mining protocolsDokumentation DOC · 010Braiins Academy — Stratum V2 ManualDokumentation DOC · 011Slush — Stratum proposal, 11 September 2012Primärquelle DOC · 012Stratum V2 — Job Declaration ProtocolPrimärquelle DOC · 013Original Stratum protocol specification (archived)Primärquelle DOC · 014Bitcoin Developer Reference — Block HeadersPrimärquelle
Überarbeitet: Quellenbasiert · Keine Anlageberatung