Stratum V2 Protocol Specification
This repository contains the Stratum V2 protocol specification.
- 0. Abstract
- 1. Motivation
- 2. Design Goals
- 3. Protocol Overview
- 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 URL Scheme and Pool Authority Key
- 4.7 References
- 5. Mining Protocol
- 5.1 Channels
- 5.2 Hashing Space Distribution
- 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 Reconnect (Server -> Client)
- 5.3.23 SetGroupChannel (Server -> Client)
- 6. Job Negotiation Protocol
- 6.1 Job Negotiation Protocol Messages
- 6.1.1 SetupConnection Flags for Job Negotiation Protocol
- 6.1.2 AllocateMiningJobToken (Client -> Server)
- 6.1.3 AllocateMiningJobToken.Success (Server -> Client)
- 6.1.4 CommitMiningJob (Client -> Server)
- 6.1.5 CommitMiningJob.Success (Server -> Client)
- 6.1.6 CommitMiningJob.Error (Server->Client)
- 6.1.7 IdentifyTransactions (Server->Client)
- 6.1.8 IdentifyTransactions.Success (Client->Server)
- 6.1.9 ProvideMissingTransactions (Server->Client)
- 6.1.10 ProvideMissingTransactions.Success (Client->Server)
- 6.1 Job Negotiation Protocol Messages
- 7. Template Distribution Protocol
- 7.1 CoinbaseOutputDataSize (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
Authors
Pavel Moravec pavel@braiins.com
Jan Čapek jan@braiins.com
Matt Corallo bipstratum@bluematt.me