Stratum-Mining-Protokoll

Das Stratum-Mining-Protokoll bezeichnet eine Protokollfamilie zum Austausch von Mining-Aufträgen und Proof-of-Work-Ergebnissen zwischen Minern, Proxys und Pool-Infrastruktur. Das ursprüngliche Protokoll heißt heute Stratum V1 (SV1); Stratum V2 (SV2) ist ein gesondert spezifizierter Nachfolger mit anderem Nachrichtenformat und Sicherheitsmodell.[1]
Stratum V1
Stratum V1 wurde 2012 eingeführt und von Bitcoin-Mining-Geräten und Pools weit verbreitet implementiert. Eine dauerhafte TCP-Verbindung, über die der Pool neue Arbeit sendet, ersetzte wiederholte getwork-Abfragen.[1][2] V1 nutzt meist zeilengetrennte JSON-RPC-artige Nachrichten. Die ursprüngliche Mining-Schnittstelle war jedoch nicht vollständig standardisiert; es entstanden verschiedene Dialekte und Erweiterungen.[3]
Zentraler Nachrichtenablauf
Eine typische V1-Sitzung verwendet folgende Nachrichten; genaue Parameter und optionale Abläufe unterscheiden sich je nach Implementierung.[4]
| Richtung | Methode | Zweck |
|---|---|---|
| Miner → Server | mining.subscribe |
Startet oder setzt eine Sitzung fort. Die Antwort liefert üblicherweise Abonnementkennungen, extranonce1 und die Größe von extranonce2.
|
| Miner → Server | mining.authorize |
Ordnet der Verbindung Worker-Name und gegebenenfalls Passwort zu. |
| Server → Miner | mining.set_difficulty |
Legt die Zielschwierigkeit für Shares fest; ein späterer Job wendet sie an. |
| Server → Miner | mining.notify |
Sendet Jobkennung, Hash des vorherigen Blocks, Coinbase-Teile, Merkle-Zweige, Version, Zielkodierung, Zeit und die Anweisung, ob alte Jobs zu verwerfen sind. |
| Miner → Server | mining.submit |
Reicht Worker, Jobkennung, extranonce2, Zeit und Nonce zur Annahme oder Ablehnung ein.
|
Optionale Nachrichten sind etwa client.reconnect, client.show_message und mining.set_extranonce. BIP 310 definiert mining.configure zur Aushandlung von Version Rolling, Mindestschwierigkeit und Extranonce-Abonnement.[5] Frühere Entwürfe wie mining.capabilities gehören nicht zu diesem Mechanismus und dürfen nicht als unterstützt vorausgesetzt werden.
Einschränkungen
Das Basisprotokoll V1 überträgt Mining-Daten unverschlüsselt. Eine Studie von 2017 zeigte, dass passive Beobachter Hashrate und Auszahlungen ableiten und Angreifer mit Zugriff auf die Verbindung Nachrichten manipulieren konnten.[4] Pool-spezifische TLS-Tunnel können dies ändern, sind aber keine Eigenschaft des Basisprotokolls.
V1 lässt üblicherweise den Pool Jobs und Transaktionen bestimmen. Auszahlungsabrechnung, Wallets, Datenbanken und Logrotation sind Funktionen der Pool-Software, nicht des Protokolls.
Stratum V2
Stratum V2 verwendet genau definierte Binärnachrichten. Die Spezifikation beschreibt Kanäle, natives Version Rolling, Verbindungsaggregation und Rollen für Geräte, Proxys, Pools, Job Declarators und Template Provider.[3][6]
Die Suite umfasst drei Subprotokolle:[6]
- das verpflichtende Mining Protocol für Arbeit und Share-Einreichungen;
- das optionale Job Declaration Protocol, mit dem die Miner-Seite eine Transaktionsauswahl vorschlagen kann; und
- das Template Distribution Protocol für Block-Template-Daten eines Bitcoin-Knotens.
Job Declaration ist optional. Ein Pool kann V2 mit poolbestimmter Arbeit betreiben; mit Job Declaration kann die Miner-Seite ein Template erstellen und zur Annahme vorlegen.[6] Dies ändert die Transaktionsauswahl, definiert aber keine Auszahlungen und ersetzt nicht das Vertrauen in die Pool-Abrechnung.
V2 schützt entfernte Verbindungen mit authentifizierter Verschlüsselung. Die Spezifikation verwendet AEAD und einen Noise-basierten Handshake; dieser ist für entfernte Upstream-Verbindungen verpflichtend und für eine lokale Verbindung zwischen Gerät und Proxy optional.[7]
Kompatibilität und Implementierungen
Ein Übersetzungs-Proxy kann V1-Geräte an V2-Upstreams anbinden. Er bildet eine Protokollbrücke, macht das Gerät aber nicht zu einer nativen V2-Implementierung. Die Unterstützung bestimmter Erweiterungen und Subprotokolle ist bei Miner, Proxy und Pool zu prüfen.
Siehe auch
Weblinks
- ↑ 1,0 1,1 Stratum-V2-Projekt, „Open Bitcoin mining standard“, geprüft am 14. September 2026.
- ↑ Bitcoin Wiki, „Stratum mining protocol“, geprüft am 14. September 2026.
- ↑ 3,0 3,1 Stratum-V2-Spezifikation, „Design Goals“, geprüft am 14. September 2026.
- ↑ 4,0 4,1 Maria Apostolaki et al., „Hardening Stratum, the Bitcoin Pool Mining Protocol“, Proceedings on Privacy Enhancing Technologies, 2017.
- ↑ BIP 310, „Stratum protocol extensions“, geprüft am 14. September 2026.
- ↑ 6,0 6,1 6,2 Stratum-V2-Spezifikation, „Protocol Overview“, geprüft am 14. September 2026.
- ↑ Stratum-V2-Spezifikation, „Protocol Security“, geprüft am 14. September 2026.