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.