pool은 지속 TCP 연결로 job과 target을 보내고 miner는 coinbase와 header를 구성해 nonce를 탐색하고 shares를 제출한다. 지급 방식과 Bitcoin 합의 규칙은 정하지 않는다.
Stratum V1은 pool과 mining 장비 또는 proxy 사이의 application layer다. Bitcoin P2P 합의의 일부가 아니며 block 유효성이나 PPS, FPPS, PPLNS 회계를 정하지 않는다. [Bitcoin Wiki — Stratum mining protocol] [Braiins — Past and future of mining protocols]
getwork는 반복 RPC로 작은 작업을 전달했다. Marek Palatinus는 2012년 server가 job을 push하는 지속 연결을 제안했다. pool은 아래에서 보통 getblocktemplate로 block template을 얻는다. [Original Stratum mining protocol announcement] [Braiins — Past and future of mining protocols] [BIP 22 — getblocktemplate fundamentals]
miner는 mining.subscribe를 보내 session 자료, extranonce1, extranonce2 크기를 받는다. mining.authorize는 account나 worker name을 연결하지만 password는 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는 옛 job 폐기 지시이지 유효 block 증명은 아니다. [Bitcoin Wiki — Stratum mining protocol]
miner는 coinbase 사이에 extranonce1과 extranonce2를 넣고 transaction을 hash해 Merkle branches로 root를 만든다. prevhash, version, nBits, nTime, nonce와 함께 ASIC용 80-byte header를 구성한다. [Bitcoin Wiki — Stratum mining protocol] [Bitcoin Developer Guide — Pooled Mining]
mining.set_difficulty는 작업 측정용으로 쉬운 pool target을 정하고 vardiff는 share 빈도를 조절한다. pool target 아래 hash는 share이며 더 엄격한 Bitcoin network target도 만족해야 block이 된다. [Bitcoin Wiki — Stratum mining protocol] [Bitcoin Developer Guide — Pooled Mining]
mining.submit은 worker name, job_id, extranonce2, nTime, nonce를 보내며 version rolling은 여섯째 field를 추가한다. pool은 재구성·검사 후 duplicate, low difficulty, stale로 거절할 수 있다. [Bitcoin Wiki — Stratum mining protocol] [BIP 310 — Stratum protocol extensions]
원래 V1에는 일반적이고 안전한 capability negotiation이 없었다. 2018년 할당된 BIP 310 draft는 mining.configure, version-rolling mask, minimum-difficulty, subscribe-extranonce를 추가하며 확인이 필요하다. [BIP 310 — Stratum protocol extensions]
V1은 흔히 암호화되지 않은 TCP라 추가 보호 없이는 endpoint를 인증하지 못하고 도청이나 hashrate 탈취가 가능하다. pool이 보통 block template을 고르지만 full node가 Bitcoin 합의를 집행하고 ASIC은 miner 소유다. [Hardening Stratum research paper] [Galaxy Research — Future of Bitcoin mining protocols]
Stratum V2는 binary framing, 암호학적 보호 channel과 분리된 role을 쓰며 Job Declaration은 transaction 선택을 허용할 수 있다. 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.