Vai al contenuto

Protocollo di Stratum Mining

Da BitcoinWiki.
Protocollo di Stratum Mining
Protocollo di Stratum Mining.

Il protocollo di mining Stratum è una famiglia di protocolli per lo scambio di job e risultati proof-of-work tra miner, proxy e infrastrutture dei pool. Il protocollo originale è oggi chiamato Stratum V1 (SV1); Stratum V2 (SV2) è un successore specificato separatamente, con formato dei messaggi e modello di sicurezza differenti.[1]

Stratum V1

Stratum V1 fu introdotto nel 2012 e venne ampiamente implementato da hardware e pool Bitcoin. Sostituì le ripetute richieste getwork con una connessione TCP persistente su cui il pool invia nuovi lavori.[1][2] V1 usa normalmente messaggi simili a JSON-RPC separati da newline. L'interfaccia originaria non fu però standardizzata completamente e nacquero dialetti ed estensioni differenti.[3]

Flusso principale dei messaggi

Una sessione tipica impiega i messaggi seguenti; parametri e comportamenti facoltativi variano tra implementazioni.[4]

Direzione Metodo Scopo
Miner → server mining.subscribe Avvia o riprende una sessione. La risposta fornisce di norma identificativi, extranonce1 e dimensione di extranonce2.
Miner → server mining.authorize Associa alla connessione il worker e, se usata, una password.
Server → miner mining.set_difficulty Imposta la difficoltà obiettivo delle share; un job successivo applica il cambiamento.
Server → miner mining.notify Invia identificativo, blocco precedente, parti coinbase, rami Merkle, versione, obiettivo, tempo e indicazione di scartare o meno i vecchi job.
Miner → server mining.submit Invia worker, job, extranonce2, tempo e nonce per l'accettazione o il rifiuto.

Messaggi facoltativi comuni sono client.reconnect, client.show_message e mining.set_extranonce. BIP 310 definisce mining.configure per negoziare version rolling, difficoltà minima e sottoscrizione extranonce.[5] Vecchie proposte come mining.capabilities non fanno parte di tale meccanismo e non vanno presunte supportate.

Limiti

Il protocollo V1 di base trasmette il traffico in chiaro. Uno studio del 2017 mostrò che osservatori passivi potevano stimare hashrate e ricavi e che un avversario in grado di intercettare la connessione poteva manipolare i messaggi.[4] Un tunnel TLS specifico del pool può modificare l'esposizione, ma non è una proprietà del protocollo base.

In V1 il pool costruisce normalmente i job e sceglie le transazioni. Pagamenti, wallet, database e rotazione dei log sono funzioni del software del pool.

Stratum V2

Stratum V2 usa messaggi binari definiti con precisione. Specifica canali, version rolling nativo, aggregazione delle connessioni e ruoli per dispositivi, proxy, pool, dichiaratori di job e fornitori di template.[3][6]

La suite contiene tre sottoprotocolli:[6]

  • il Mining Protocol, obbligatorio per distribuire lavoro e inviare share;
  • il Job Declaration Protocol, facoltativo, con cui il lato miner può proporre una selezione di transazioni; e
  • il Template Distribution Protocol, che trasporta dati dei template da un nodo Bitcoin.

La dichiarazione dei job è facoltativa. Un pool può usare V2 con lavori scelti dal pool; con la dichiarazione il lato miner può costruire un template e chiederne l'accettazione.[6] Ciò cambia la selezione delle transazioni, ma non definisce i pagamenti né elimina la fiducia nella contabilità del pool.

V2 protegge le connessioni remote con cifratura autenticata. La specifica usa AEAD e un handshake basato su Noise, obbligatorio per connessioni upstream remote e facoltativo sui collegamenti locali tra dispositivo e proxy.[7]

Compatibilità e implementazioni

Un proxy di traduzione può accettare dispositivi V1 e usare V2 verso il pool. È un ponte di protocollo e non rende nativo V2 il dispositivo. Occorre verificare le estensioni e i sottoprotocolli supportati da miner, proxy e pool.

Voci correlate

Collegamenti esterni

  1. ↑ 1,0 1,1 Progetto Stratum V2, “Open Bitcoin mining standard”, consultato il 14 settembre 2026.
  2. ↑ Bitcoin Wiki, “Stratum mining protocol”, consultato il 14 settembre 2026.
  3. ↑ 3,0 3,1 Specifica Stratum V2, “Design Goals”, consultato il 14 settembre 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”, consultato il 14 settembre 2026.
  6. ↑ 6,0 6,1 6,2 Specifica Stratum V2, “Protocol Overview”, consultato il 14 settembre 2026.
  7. ↑ Specifica Stratum V2, “Protocol Security”, consultato il 14 settembre 2026.