プールは持続TCP接続でjobとtargetを送り、マイナーはcoinbaseとヘッダーを組み、nonceを探索してsharesを提出する。支払方式やBitcoinの合意規則は定義しない。
Stratum V1はプールとマイニング機器またはproxyの間のアプリケーション層である。BitcoinのP2P合意の一部ではなく、ブロック有効性もPPS・FPPS・PPLNSの会計も決めない。 [Bitcoin Wiki — Stratum mining protocol] [Braiins — Past and future of mining protocols]
getworkは反復RPCで小さな作業を渡した。Marek Palatinusは2012年、サーバーがjobをpushする持続接続を提案した。プールは下層で通常getblocktemplateからblock templateを得る。 [Original Stratum mining protocol announcement] [Braiins — Past and future of mining protocols] [BIP 22 — getblocktemplate fundamentals]
マイナーはmining.subscribeを送り、session情報、extranonce1、extranonce2サイズを受け取る。mining.authorizeはaccountやworker nameを結ぶが、パスワードはサーバー認証でも平文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破棄の指示で、候補が有効ブロックという証明ではない。 [Bitcoin Wiki — Stratum mining protocol]
マイナーは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も満たす時だけブロック候補になる。 [Bitcoin Wiki — Stratum mining protocol] [Bitcoin Developer Guide — Pooled Mining]
mining.submitはworker name、job_id、extranonce2、nTime、nonceを送り、version rolling時は第六fieldを加え得る。プールは再構成して検査し、duplicate、low difficulty、staleとして拒否できる。 [Bitcoin Wiki — Stratum mining protocol] [BIP 310 — Stratum protocol extensions]
元のV1には一般的で安全な機能交渉がなかった。2018年割当のBIP 310 draftはmining.configure、version-rolling mask、minimum-difficulty、subscribe-extranonceを追加し、各拡張には確認が必要である。 [BIP 310 — Stratum protocol extensions]
V1は通常暗号化なしTCPで、追加保護がなければendpointを認証せず盗聴やhashrate乗っ取りが可能。プールは多くの場合block templateを選ぶが、full nodeがBitcoin合意を強制しASICはマイナー所有である。 [Hardening Stratum research paper] [Galaxy Research — Future of Bitcoin mining protocols]
Stratum V2はbinary frame、暗号学的保護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.