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