{"id":28461056,"url":"https://github.com/stratum-mining/sv2-spec","last_synced_at":"2026-01-30T05:35:06.729Z","repository":{"id":40560681,"uuid":"468424513","full_name":"stratum-mining/sv2-spec","owner":"stratum-mining","description":"Stratum V2 Specification","archived":false,"fork":false,"pushed_at":"2025-12-16T14:20:32.000Z","size":1986,"stargazers_count":82,"open_issues_count":18,"forks_count":41,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-12-20T05:00:14.270Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stratum-mining.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"License/BSD-3-Clause","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-03-10T16:29:49.000Z","updated_at":"2025-12-16T14:20:37.000Z","dependencies_parsed_at":"2024-03-13T17:47:19.877Z","dependency_job_id":"35c58654-dd81-438b-aa75-85f15d1258cc","html_url":"https://github.com/stratum-mining/sv2-spec","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/stratum-mining/sv2-spec","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stratum-mining%2Fsv2-spec","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stratum-mining%2Fsv2-spec/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stratum-mining%2Fsv2-spec/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stratum-mining%2Fsv2-spec/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stratum-mining","download_url":"https://codeload.github.com/stratum-mining/sv2-spec/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stratum-mining%2Fsv2-spec/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28906139,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-30T04:02:34.702Z","status":"ssl_error","status_checked_at":"2026-01-30T04:02:33.562Z","response_time":66,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-07T03:07:34.040Z","updated_at":"2026-01-30T05:35:06.720Z","avatar_url":"https://github.com/stratum-mining.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Stratum V2 Protocol Specification\nThis repository contains the Stratum V2 protocol specification.\n\n - [0. Abstract](./00-Abstract.md#0-abstract)\n - [1. Motivation](./01-Motivation.md#1-motivation)\n - [2. Design Goals](./02-Design-Goals.md#2-design-goals)\n - [3. Protocol Overview](./03-Protocol-Overview.md#3-protocol-overview)\n  - [3.1. Data Types Mapping](./03-Protocol-Overview.md#31-data-types-mapping)\n  - [3.2. Framing](./03-Protocol-Overview.md#32-framing)\n    - [3.2.1. Routing Frames over Channels](./03-Protocol-Overview.md#321-routing-frames-over-channels)\n  - [3.3. Reconnecting Downstream Nodes](./03-Protocol-Overview.md#33-reconnecting-downstream-nodes)\n  - [3.4. Protocol Extensions](./03-Protocol-Overview.md#34-protocol-extensions)\n    - [3.4.1. Extension Type Field Usage](./03-Protocol-Overview.md#341-extension-type-field-usage)\n    - [3.4.2. Implementing Extensions Support](./03-Protocol-Overview.md#342-implementing-extensions-support)\n    - [3.4.3. Stratum V2 TLV Encoding Model](./03-Protocol-Overview.md#343-stratum-v2-tlv-encoding-model)\n  - [3.5. Error Codes](./03-Protocol-Overview.md#35-error-codes)\n  - [3.6. Common Protocol Messages](./03-Protocol-Overview.md#36-common-protocol-messages)\n    - [3.6.1. `SetupConnection` (Client -\u003e Server)](./03-Protocol-Overview.md#361-setupconnection-client---server)\n    - [3.6.2. `SetupConnection.Success` (Server -\u003e Client)](./03-Protocol-Overview.md#362-setupconnectionsuccess-server---client)\n    - [3.6.3. `SetupConnection.Error` (Server -\u003e Client)](./03-Protocol-Overview.md#363-setupconnectionerror-server---client)\n    - [3.6.4. `ChannelEndpointChanged` (Server -\u003e Client)](./03-Protocol-Overview.md#364-channelendpointchanged-server---client)\n    - [3.6.5. `Reconnect` (Server -\u003e Client)](./03-Protocol-Overview.md#365-reconnect-server---client)\n  - [3.7. BIP141](./03-Protocol-Overview.md#37-bip141)\n    - [3.7.1. BIP141 on `NewExtendedMiningJob`](./03-Protocol-Overview.md#371-bip141-on-newextendedminingjob)\n    - [3.7.2. BIP141 on `DeclareMiningJob`](./03-Protocol-Overview.md#372-bip141-on-declareminingjob)\n    - [3.7.3. BIP141 on `SubmitSolution`](./03-Protocol-Overview.md#373-bip141-on-submitsolution)\n    - [3.7.4. BIP141 on `NewTemplate`](./03-Protocol-Overview.md#374-bip141-on-newtemplate)\n - [4. Protocol Security](./04-Protocol-Security.md#4-protocol-security)\n  - [4.1. Motivation for Authenticated Encryption with Associated Data](./04-Protocol-Security.md#41-motivation-for-authenticated-encryption-with-associated-data)\n  - [4.2. Motivation for Using the Noise Protocol Framework](./04-Protocol-Security.md#42-motivation-for-using-the-noise-protocol-framework)\n  - [4.3. Choice of cryptographic primitives](./04-Protocol-Security.md#43-choice-of-cryptographic-primitives)\n    - [4.3.1. Elliptic Curve](./04-Protocol-Security.md#431-elliptic-curve)\n      - [4.3.1.1. EC point encoding remarks](./04-Protocol-Security.md#4311-ec-point-encoding-remarks)\n    - [4.3.2. Hash function](./04-Protocol-Security.md#432-hash-function)\n    - [4.3.3. Cipher function for authenticated encryption](./04-Protocol-Security.md#433-cipher-function-for-authenticated-encryption)\n  - [4.4. Cryptographic operations](./04-Protocol-Security.md#44-cryptographic-operations)\n    - [4.4.1. CipherState object](./04-Protocol-Security.md#441-cipherstate-object)\n    - [4.4.2. Handshake Operation](./04-Protocol-Security.md#442-handshake-operation)\n  - [4.5. Authenticated Key Agreement Handshake](./04-Protocol-Security.md#45-authenticated-key-agreement-handshake)\n    - [4.5.1. Handshake Act 1: NX-handshake part 1 `-\u003e e`](./04-Protocol-Security.md#451-handshake-act-1-nx-handshake-part-1---e)\n      - [4.5.1.1. Initiator](./04-Protocol-Security.md#4511-initiator)\n      - [4.5.1.2. Responder](./04-Protocol-Security.md#4512-responder)\n    - [4.5.2. Handshake Act 2: NX-handshake part 2 `\u003c- e, ee, s, es, SIGNATURE_NOISE_MESSAGE`](./04-Protocol-Security.md#452-handshake-act-2-nx-handshake-part-2---e-ee-s-es-signaturenoisemessage)\n      - [4.5.2.1. Responder](./04-Protocol-Security.md#4521-responder)\n      - [4.5.2.2. Initiator](./04-Protocol-Security.md#4522-initiator)\n    - [4.5.3. Server authentication](./04-Protocol-Security.md#453-server-authentication)\n      - [4.5.3.1. Signature structure](./04-Protocol-Security.md#4531-signature-structure)\n  - [4.6. Encrypted stratum message framing](./04-Protocol-Security.md#46-encrypted-stratum-message-framing)\n  - [4.7. URL Scheme and Pool Authority Key](./04-Protocol-Security.md#47-url-scheme-and-pool-authority-key)\n    - [4.7.1. Test vector:](./04-Protocol-Security.md#471-test-vector)\n  - [4.8. References](./04-Protocol-Security.md#48-references)\n - [5. Mining Protocol](./05-Mining-Protocol.md#5-mining-protocol)\n  - [5.1. Job](./05-Mining-Protocol.md#51-job)\n    - [5.1.1. Standard Job](./05-Mining-Protocol.md#511-standard-job)\n    - [5.1.2. Extended Job](./05-Mining-Protocol.md#512-extended-job)\n      - [5.1.2.1. Extended Extranonce](./05-Mining-Protocol.md#5121-extended-extranonce)\n    - [5.1.3. Future Job](./05-Mining-Protocol.md#513-future-job)\n    - [5.1.4. Custom Job](./05-Mining-Protocol.md#514-custom-job)\n  - [5.2. Channel](./05-Mining-Protocol.md#52-channel)\n    - [5.2.1. Standard Channel](./05-Mining-Protocol.md#521-standard-channel)\n    - [5.2.2. Extended Channel](./05-Mining-Protocol.md#522-extended-channel)\n    - [5.2.3. Group Channel](./05-Mining-Protocol.md#523-group-channel)\n  - [5.3. Mining Protocol Messages](./05-Mining-Protocol.md#53-mining-protocol-messages)\n    - [5.3.1. `SetupConnection` Flags for Mining Protocol](./05-Mining-Protocol.md#531-setupconnection-flags-for-mining-protocol)\n    - [5.3.2. `OpenStandardMiningChannel` (Client -\u003e Server)](./05-Mining-Protocol.md#532-openstandardminingchannel-client---server)\n    - [5.3.3. `OpenStandardMiningChannel.Success` (Server -\u003e Client)](./05-Mining-Protocol.md#533-openstandardminingchannelsuccess-server---client)\n    - [5.3.4. `OpenExtendedMiningChannel` (Client -\u003e Server)](./05-Mining-Protocol.md#534-openextendedminingchannel-client---server)\n    - [5.3.5. `OpenExtendedMiningChannel.Success` (Server -\u003e Client)](./05-Mining-Protocol.md#535-openextendedminingchannelsuccess-server---client)\n    - [5.3.6. `OpenMiningChannel.Error` (Server -\u003e Client)](./05-Mining-Protocol.md#536-openminingchannelerror-server---client)\n    - [5.3.7. `UpdateChannel` (Client -\u003e Server)](./05-Mining-Protocol.md#537-updatechannel-client---server)\n    - [5.3.8. `UpdateChannel.Error` (Server -\u003e Client)](./05-Mining-Protocol.md#538-updatechannelerror-server---client)\n    - [5.3.9. `CloseChannel` (Client -\u003e Server, Server -\u003e Client)](./05-Mining-Protocol.md#539-closechannel-client---server-server---client)\n    - [5.3.10. `SetExtranoncePrefix` (Server -\u003e Client)](./05-Mining-Protocol.md#5310-setextranonceprefix-server---client)\n    - [5.3.11. `SubmitSharesStandard` (Client -\u003e Server)](./05-Mining-Protocol.md#5311-submitsharesstandard-client---server)\n    - [5.3.12. `SubmitSharesExtended` (Client -\u003e Server)](./05-Mining-Protocol.md#5312-submitsharesextended-client---server)\n    - [5.3.13. `SubmitShares.Success` (Server -\u003e Client)](./05-Mining-Protocol.md#5313-submitsharessuccess-server---client)\n    - [5.3.14. `SubmitShares.Error` (Server -\u003e Client)](./05-Mining-Protocol.md#5314-submitshareserror-server---client)\n    - [5.3.15. `NewMiningJob` (Server -\u003e Client)](./05-Mining-Protocol.md#5315-newminingjob-server---client)\n    - [5.3.16. `NewExtendedMiningJob` (Server -\u003e Client)](./05-Mining-Protocol.md#5316-newextendedminingjob-server---client)\n    - [5.3.17. `SetNewPrevHash` (Server -\u003e Client, broadcast)](./05-Mining-Protocol.md#5317-setnewprevhash-server---client-broadcast)\n    - [5.3.18. `SetCustomMiningJob` (Client -\u003e Server)](./05-Mining-Protocol.md#5318-setcustomminingjob-client---server)\n    - [5.3.19. `SetCustomMiningJob.Success` (Server -\u003e Client)](./05-Mining-Protocol.md#5319-setcustomminingjobsuccess-server---client)\n    - [5.3.20. `SetCustomMiningJob.Error` (Server -\u003e Client)](./05-Mining-Protocol.md#5320-setcustomminingjoberror-server---client)\n    - [5.3.21. `SetTarget` (Server -\u003e Client)](./05-Mining-Protocol.md#5321-settarget-server---client)\n    - [5.3.22. `SetGroupChannel` (Server -\u003e Client)](./05-Mining-Protocol.md#5322-setgroupchannel-server---client)\n - [6. Job Declaration Protocol](./06-Job-Declaration-Protocol.md#6-job-declaration-protocol)\n  - [6.1. Job Declarator Server](./06-Job-Declaration-Protocol.md#61-job-declarator-server)\n  - [6.2. Job Declarator Client](./06-Job-Declaration-Protocol.md#62-job-declarator-client)\n  - [6.3. Job Declaration Modes](./06-Job-Declaration-Protocol.md#63-job-declaration-modes)\n    - [6.3.1. Coinbase-only Mode](./06-Job-Declaration-Protocol.md#631-coinbase-only-mode)\n    - [6.3.2. Full-Template Mode](./06-Job-Declaration-Protocol.md#632-full-template-mode)\n    - [6.3.3. Coinbase-only vs Full-Template](./06-Job-Declaration-Protocol.md#633-coinbase-only-vs-full-template)\n  - [6.4. Job Declaration Protocol Messages](./06-Job-Declaration-Protocol.md#64-job-declaration-protocol-messages)\n    - [6.4.1. `SetupConnection` Flags for Job Declaration Protocol](./06-Job-Declaration-Protocol.md#641-setupconnection-flags-for-job-declaration-protocol)\n    - [6.4.2. `AllocateMiningJobToken` (JDC -\u003e JDS)](./06-Job-Declaration-Protocol.md#642-allocateminingjobtoken-jdc---jds)\n    - [6.4.3. `AllocateMiningJobToken.Success` (Server -\u003e Client)](./06-Job-Declaration-Protocol.md#643-allocateminingjobtokensuccess-server---client)\n    - [6.4.4. `DeclareMiningJob` (Client -\u003e Server)](./06-Job-Declaration-Protocol.md#644-declareminingjob-client---server)\n    - [6.4.5. `DeclareMiningJob.Success` (Server -\u003e Client)](./06-Job-Declaration-Protocol.md#645-declareminingjobsuccess-server---client)\n    - [6.4.6. `DeclareMiningJob.Error` (Server-\u003eClient)](./06-Job-Declaration-Protocol.md#646-declareminingjoberror-server-client)\n    - [6.4.7. `ProvideMissingTransactions` (Server-\u003eClient)](./06-Job-Declaration-Protocol.md#647-providemissingtransactions-server-client)\n    - [6.4.8. `ProvideMissingTransactions.Success` (Client-\u003eServer)](./06-Job-Declaration-Protocol.md#648-providemissingtransactionssuccess-client-server)\n    - [6.4.9. `PushSolution` (Client -\u003e Server)](./06-Job-Declaration-Protocol.md#649-pushsolution-client---server)\n - [7. Template Distribution Protocol](./07-Template-Distribution-Protocol.md#7-template-distribution-protocol)\n  - [7.1. `CoinbaseOutputConstraints` (Client -\u003e Server)](./07-Template-Distribution-Protocol.md#71-coinbaseoutputconstraints-client---server)\n  - [7.2. `NewTemplate` (Server -\u003e Client)](./07-Template-Distribution-Protocol.md#72-newtemplate-server---client)\n  - [7.3. `SetNewPrevHash` (Server -\u003e Client)](./07-Template-Distribution-Protocol.md#73-setnewprevhash-server---client)\n  - [7.4. `RequestTransactionData` (Client -\u003e Server)](./07-Template-Distribution-Protocol.md#74-requesttransactiondata-client---server)\n  - [7.5. `RequestTransactionData.Success` (Server-\u003eClient)](./07-Template-Distribution-Protocol.md#75-requesttransactiondatasuccess-server-client)\n  - [7.6. `RequestTransactionData.Error` (Server-\u003eClient)](./07-Template-Distribution-Protocol.md#76-requesttransactiondataerror-server-client)\n  - [7.7. `SubmitSolution` (Client -\u003e Server)](./07-Template-Distribution-Protocol.md#77-submitsolution-client---server)\n - [8. Message Types](./08-Message-Types.md#8-message-types)\n - [9. Extensions](./09-Extensions.md#9-extensions)\n - [10. Discussion](./10-Discussion.md#10-discussion)\n  - [10.1. Speculative Mining Jobs](./10-Discussion.md#101-speculative-mining-jobs)\n  - [10.2. Rolling `nTime`](./10-Discussion.md#102-rolling-ntime)\n    - [10.2.1. Hardware `nTime` rolling](./10-Discussion.md#1021-hardware-ntime-rolling)\n  - [10.3. Notes](./10-Discussion.md#103-notes)\n  - [10.4. Usage Scenarios](./10-Discussion.md#104-usage-scenarios)\n    - [10.4.1. End Device (v2 ST)](./10-Discussion.md#1041-end-device-v2-st)\n    - [10.4.2. Transparent Proxy (v2 any -\u003e v2 any)](./10-Discussion.md#1042-transparent-proxy-v2-any---v2-any)\n    - [10.4.3. Difficulty Aggregating Proxy (v2 any -\u003e v2 EX)](./10-Discussion.md#1043-difficulty-aggregating-proxy-v2-any---v2-ex)\n    - [10.4.4. Proxy (v1 -\u003e v2)](./10-Discussion.md#1044-proxy-v1---v2)\n    - [10.4.5. Proxy (v2 -\u003e v1)](./10-Discussion.md#1045-proxy-v2---v1)\n  - [10.5. FAQ](./10-Discussion.md#105-faq)\n    - [10.5.1. Why is the protocol binary?](./10-Discussion.md#1051-why-is-the-protocol-binary)\n  - [10.6. Terminology](./10-Discussion.md#106-terminology)\n  - [10.7. Open Questions / Issues](./10-Discussion.md#107-open-questions--issues)\n\n## Authors\nPavel Moravec \u003cpavel@braiins.com\u003e  \nJan Čapek \u003cjan@braiins.com\u003e  \nMatt Corallo \u003cbipstratum@bluematt.me\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstratum-mining%2Fsv2-spec","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstratum-mining%2Fsv2-spec","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstratum-mining%2Fsv2-spec/lists"}