Stałym połączeniem TCP pula wysyła jobs i target; górnik składa coinbase i nagłówek, przeszukuje nonce i zgłasza shares. Protokół nie określa wypłat ani konsensusu Bitcoin.
Stratum V1 to warstwa aplikacyjna między pulą a urządzeniem mining lub proxy. Nie jest częścią konsensusu peer-to-peer Bitcoin, nie rozstrzyga ważności bloków i nie definiuje rozliczeń PPS, FPPS ani PPLNS. [Bitcoin Wiki — Stratum mining protocol] [Braiins — Past and future of mining protocols]
getwork przekazywał małe porcje pracy powtarzanymi zapytaniami RPC. W 2012 Marek Palatinus zaproponował stałe połączenie z push jobów; pod spodem pula zwykle pobiera block template przez getblocktemplate. [Original Stratum mining protocol announcement] [Braiins — Past and future of mining protocols] [BIP 22 — getblocktemplate fundamentals]
Górnik wysyła mining.subscribe i dostaje dane sesji, extranonce1 oraz rozmiar extranonce2. mining.authorize wiąże konto lub worker name, lecz hasło nie uwierzytelnia serwera i nie szyfruje plaintext TCP. [Bitcoin Wiki — Stratum mining protocol] [Hardening Stratum research paper]
mining.notify niesie job_id, previous block hash, dwie części coinbase, Merkle branches, version, nBits, nTime i clean_jobs. clean_jobs każe porzucić stare jobs, lecz nie poświadcza ważnego bloku. [Bitcoin Wiki — Stratum mining protocol]
Górnik wstawia extranonce1 i extranonce2 do coinbase, hashuje transakcję i składa Merkle branches w root. Z prevhash, version, nBits, nTime oraz nonce tworzy 80-bajtowy nagłówek dla ASIC. [Bitcoin Wiki — Stratum mining protocol] [Bitcoin Developer Guide — Pooled Mining]
mining.set_difficulty ustala łatwiejszy target puli; vardiff może go regulować dla praktycznej częstości shares. Hash pod tym targetem jest share, a blokiem tylko wtedy, gdy spełnia też trudniejszy network target Bitcoin. [Bitcoin Wiki — Stratum mining protocol] [Bitcoin Developer Guide — Pooled Mining]
mining.submit wysyła worker name, job_id, extranonce2, nTime i nonce; version rolling może dodać szóste pole. Pula rekonstruuje i sprawdza wynik, po czym akceptuje lub odrzuca jako duplicate, low difficulty albo stale. [Bitcoin Wiki — Stratum mining protocol] [BIP 310 — Stratum protocol extensions]
Pierwotny V1 nie miał bezpiecznej ogólnej negocjacji funkcji. Projekt BIP 310 z 2018 r. dodaje mining.configure, version-rolling mask, minimum-difficulty i subscribe-extranonce; rozszerzenie wymaga potwierdzenia. [BIP 310 — Stratum protocol extensions]
V1 zwykle działa przez nieszyfrowany TCP, więc bez dodatkowej ochrony nie uwierzytelnia endpointu i pozwala podsłuchać lub przekierować hashrate. Pula zwykle wybiera block template, full nodes egzekwują konsensus Bitcoin, a ASIC pozostaje górnika. [Hardening Stratum research paper] [Galaxy Research — Future of Bitcoin mining protocols]
Stratum V2 używa binarnych ramek, chronionego kryptograficznie kanału i oddzielnych ról; Job Declaration może dać wybór transakcji. Translator lub etykieta V2 tego nie dowodzi. Sprawdza się endpoint, firmware, latency, rejects, failover i template policy. [Stratum V2 Mining Protocol specification] [Braiins Academy — Stratum V2 Manual]
Pełniejszy obraz uzyskasz, czytając to hasło razem z Bitcoin, Górnictwo Bitcoin, Mining Pool, Braiins, Braiins Pool, Marek “Slush” Palatinus. Do tego hasła prowadzą również odsyłacze z Mining Pool, Marek “Slush” Palatinus, Braiins Pool, Stratum V2.