Zum Inhalt springen

Stratum-Mining-Protokoll

Aus BitcoinWiki
Stratum-Mining-Protokoll
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

  1. 1,0 1,1 Stratum-V2-Projekt, „Open Bitcoin mining standard“, geprüft am 14. September 2026.
  2. Bitcoin Wiki, „Stratum mining protocol“, geprüft am 14. September 2026.
  3. 3,0 3,1 Stratum-V2-Spezifikation, „Design Goals“, geprüft am 14. September 2026.
  4. 4,0 4,1 Maria Apostolaki et al., „Hardening Stratum, the Bitcoin Pool Mining Protocol“, Proceedings on Privacy Enhancing Technologies, 2017.
  5. BIP 310, „Stratum protocol extensions“, geprüft am 14. September 2026.
  6. 6,0 6,1 6,2 Stratum-V2-Spezifikation, „Protocol Overview“, geprüft am 14. September 2026.
  7. Stratum-V2-Spezifikation, „Protocol Security“, geprüft am 14. September 2026.