This repository contains the Stratum V2 protocol specification.
- 0. Abstract
- 1. Motivation
- 2. Design Goals
- 3. Protocol Overview
- 3.1. Data Types Mapping
- 3.2. Framing
- 3.3. Reconnecting Downstream Nodes
- 3.4. Protocol Extensions
- 3.4.1. Stratum V2 TLV Encoding Model
- 3.5. Error Codes
- 3.6. Common Protocol Messages
- 3.7. BIP141
- 4. Protocol Security
- 4.1. Motivation for Authenticated Encryption with Associated Data
- 4.2. Motivation for Using the Noise Protocol Framework
- 4.3. Choice of cryptographic primitives
- 4.4. Cryptographic operations
- 4.5. Authenticated Key Agreement Handshake
- 4.6. Encrypted stratum message framing
- 4.7. URL Scheme and Pool Authority Key
- 4.8. References
- 5. Mining Protocol
- 5.1. Job
- 5.2. Channel
- 5.3. Mining Protocol Messages
- 5.3.1.
SetupConnectionFlags for Mining Protocol - 5.3.2.
OpenStandardMiningChannel(Client -> Server) - 5.3.3.
OpenStandardMiningChannel.Success(Server -> Client) - 5.3.4.
OpenExtendedMiningChannel(Client -> Server) - 5.3.5.
OpenExtendedMiningChannel.Success(Server -> Client) - 5.3.6.
OpenMiningChannel.Error(Server -> Client) - 5.3.7.
UpdateChannel(Client -> Server) - 5.3.8.
UpdateChannel.Error(Server -> Client) - 5.3.9.
CloseChannel(Client -> Server, Server -> Client) - 5.3.10.
SetExtranoncePrefix(Server -> Client) - 5.3.11.
SubmitSharesStandard(Client -> Server) - 5.3.12.
SubmitSharesExtended(Client -> Server) - 5.3.13.
SubmitShares.Success(Server -> Client) - 5.3.14.
SubmitShares.Error(Server -> Client) - 5.3.15.
NewMiningJob(Server -> Client) - 5.3.16.
NewExtendedMiningJob(Server -> Client) - 5.3.17.
SetNewPrevHash(Server -> Client, broadcast) - 5.3.18.
SetCustomMiningJob(Client -> Server) - 5.3.19.
SetCustomMiningJob.Success(Server -> Client) - 5.3.20.
SetCustomMiningJob.Error(Server -> Client) - 5.3.21.
SetTarget(Server -> Client) - 5.3.22.
SetGroupChannel(Server -> Client)
- 5.3.1.
- 6. Job Declaration Protocol
- 6.1. Job Declarator Server
- 6.2. Job Declarator Client
- 6.3. Job Declaration Modes
- 6.4. Job Declaration Protocol Messages
- 6.4.1.
SetupConnectionFlags for Job Declaration Protocol - 6.4.2.
AllocateMiningJobToken(JDC -> JDS) - 6.4.3.
AllocateMiningJobToken.Success(Server -> Client) - 6.4.4.
DeclareMiningJob(Client -> Server) - 6.4.5.
DeclareMiningJob.Success(Server -> Client) - 6.4.6.
DeclareMiningJob.Error(Server->Client) - 6.4.7.
ProvideMissingTransactions(Server->Client) - 6.4.8.
ProvideMissingTransactions.Success(Client->Server) - 6.4.9.
PushSolution(Client -> Server)
- 6.4.1.
- 7. Template Distribution Protocol
- 7.1.
CoinbaseOutputConstraints(Client -> Server) - 7.2.
NewTemplate(Server -> Client) - 7.3.
SetNewPrevHash(Server -> Client) - 7.4.
RequestTransactionData(Client -> Server) - 7.5.
RequestTransactionData.Success(Server->Client) - 7.6.
RequestTransactionData.Error(Server->Client) - 7.7.
SubmitSolution(Client -> Server) - 8. Message Types
- 9. Extensions
- 10. Discussion
- 10.1. Speculative Mining Jobs
- 10.2. Rolling
nTime - 10.3. Notes
- 10.4. Usage Scenarios
- 10.5. FAQ
- 10.6. Terminology
- 10.7. Open Questions / Issues
Pavel Moravec [email protected]
Jan Čapek [email protected]
Matt Corallo [email protected]