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
- 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.
SetupConnection
Flags 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.
SetupConnection
Flags 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 pavel@braiins.com
Jan Čapek jan@braiins.com
Matt Corallo bipstratum@bluematt.me