Через постійне TCP-з’єднання pool надсилає jobs і target; майнер складає coinbase та header, перебирає nonce і подає shares. Протокол не визначає виплати чи консенсус Bitcoin.
Stratum V1 — прикладний шар між pool і mining-пристроєм або proxy. Він не є частиною peer-to-peer консенсусу Bitcoin, не визначає валідність блоку та не задає облік PPS, FPPS чи PPLNS. [Bitcoin Wiki — Stratum mining protocol] [Braiins — Past and future of mining protocols]
getwork давав малі порції роботи повторними RPC-запитами. 2012 року Marek Palatinus запропонував постійне з’єднання, де server push надсилає job; pool зазвичай отримує block template через getblocktemplate. [Original Stratum mining protocol announcement] [Braiins — Past and future of mining protocols] [BIP 22 — getblocktemplate fundamentals]
Майнер надсилає mining.subscribe й отримує дані сесії, extranonce1 та розмір extranonce2. mining.authorize прив’язує account або worker name, але пароль не автентифікує server і не шифрує plaintext TCP. [Bitcoin Wiki — Stratum mining protocol] [Hardening Stratum research paper]
mining.notify містить job_id, previous block hash, дві частини coinbase, Merkle branches, version, nBits, nTime і clean_jobs. clean_jobs наказує відкинути старі jobs, але не підтверджує валідний блок. [Bitcoin Wiki — Stratum mining protocol]
Майнер вставляє extranonce1 і extranonce2 між частинами coinbase, хешує транзакцію та складає Merkle branches у root. З prevhash, version, nBits, nTime і nonce формується 80-байтовий header для ASIC. [Bitcoin Wiki — Stratum mining protocol] [Bitcoin Developer Guide — Pooled Mining]
mining.set_difficulty задає легший pool target; vardiff може змінювати його для зручної частоти shares. Hash нижче pool target є share, а блоком стає лише коли також виконує суворіший network target Bitcoin. [Bitcoin Wiki — Stratum mining protocol] [Bitcoin Developer Guide — Pooled Mining]
mining.submit передає worker name, job_id, extranonce2, nTime і nonce; version rolling може додати шосте поле. Pool реконструює та перевіряє результат і може відхилити duplicate, low difficulty або stale. [Bitcoin Wiki — Stratum mining protocol] [BIP 310 — Stratum protocol extensions]
Оригінальний V1 не мав загального безпечного negotiation. Чернетка BIP 310, призначена 2018 року, додає mining.configure, version-rolling mask, minimum-difficulty і subscribe-extranonce; підтримку треба підтвердити. [BIP 310 — Stratum protocol extensions]
V1 зазвичай працює через незашифрований TCP, тому без захисту не автентифікує endpoint і допускає перехоплення чи викрадення hashrate. Pool часто вибирає block template, але full nodes виконують консенсус Bitcoin, а ASIC належить майнеру. [Hardening Stratum research paper] [Galaxy Research — Future of Bitcoin mining protocols]
Stratum V2 має binary framing, криптографічно захищений канал і окремі ролі; Job Declaration може дати вибір транзакцій. Translator чи назва V2 цього не доводить. Перевіряють endpoint, firmware, latency, rejects, failover і template policy. [Stratum V2 Mining Protocol specification] [Braiins Academy — Stratum V2 Manual]
Для повної картини прочитайте також Bitcoin, Майнінг, Mining Pool, Braiins, Braiins Pool, Marek “Slush” Palatinus. На цю статтю також посилаються Mining Pool, Marek “Slush” Palatinus, Braiins Pool, Stratum V2.