/stratum

stratum

Primary LanguageRustOtherNOASSERTION


SRI
Stratum V2 Reference Implementation (SRI)

SRI is a reference implementation of the Stratum V2 protocol written in Rust ๐Ÿฆ€.

codecov X (formerly Twitter) Follow

๐Ÿ’ผ Table of Contents

Introduction โ€ข Getting Started โ€ข Use Cases โ€ข Roadmap โ€ข Contribute โ€ข Support โ€ข Donate โ€ข Supporters โ€ข License MSRV

๐Ÿ‘‹ Introduction

Welcome to the official GitHub repository for the SRI - Stratum V2 Reference Implementation.

Stratum V2 is a next-generation bitcoin mining protocol designed to enhance the efficiency, security, flexibility and decentralization. SRI is fully open-source, community-developed, independent of any single entity, aiming to be fully compatible with Stratum V2 Specification.

โ›๏ธ Getting Started

To get started with the Stratum V2 Reference Implementation (SRI), please follow the detailed setup instructions available on the official website:

Getting Started with Stratum V2

This guide provides all the necessary information on prerequisites, installation, and configuration to help you begin using, testing or contributing to SRI.

๐Ÿš€ Use Cases

The library is modular to address different use-cases and desired functionality. Examples include:

๐Ÿ‘ท Miners

  • SV1 Miners can use the translator proxy (roles/translator) to connect with a SV2-compatible pool.
  • SV1 mining farms mining to a SV2-compatible pool gain some of the security and efficiency improvements SV2 offers over Stratum V1 (SV1). The SV1<->SV2 translator proxy does not support all the features of SV2, but works as a temporary measure before upgrading completely to SV2-compatible firmware. (The SV1<->SV2 translation proxy implementation is a work in progress.)

๐Ÿ› ๏ธ Pools

  • Pools supporting SV2 can deploy the open source binary crate (roles/pool) to offer their clients (miners participating in said pool) an SV2-compatible pool.
  • The Rust helper library provides a suite of tools for mining pools to build custom SV2 compatible pool implementations.
  • The C library provides a set of FFI bindings to the Rust helper library for miners to integrate SV2 into their existing firmware stack.

๐Ÿ›ฃ Roadmap

Our roadmap is publicly available, outlining current and future plans. Decisions on the roadmap are made through a consensus-driven approach, through participation on dev meetings, Discord or GitHub.

View the SRI Roadmap

๐Ÿ… Project Maturity

Low-level crates (protocols directory) are considered beta software. Rust API Docs is a work-in-progress, and the community should still expect small breaking API changes and patches.

Application-level crates (roles directory) are considered alpha software, and bugs are expected. They should be used as a guide on how to consume the low-level crates as dependencies.

๐ŸŽฏ Goals

The goals of this project are to provide:

  1. A robust set of Stratum V2 (SV2) primitives as Rust library crates which anyone can use to expand the protocol or implement a role. For example:
    • Pools supporting SV2
    • Mining-device/hashrate producers integrating SV2 into their firmware
    • Bitcoin nodes implementing Template Provider to build the blocktemplate
  2. The above Rust primitives as a C library available for use in other languages via FFI.
  3. A set of helpers built on top of the above primitives and the external Bitcoin-related Rust crates for anyone to implement the SV2 roles.
  4. An open-source implementation of a SV2 proxy for miners.
  5. An open-source implementation of a SV2 pool for mining pool operators.

๐Ÿ’ป Contribute

If you are a developer looking to help, but you're not sure where to begin, check the good first issue label, which contains small pieces of work that have been specifically flagged as being friendly to new contributors.

Contributors looking to do something a bit more challenging, before opening a pull request, please join our community chat or start a GitHub issue to get early feedback, discuss the best ways to tackle the problem, and ensure there is no work duplication and consensus.

๐Ÿค Support

Join our Discord community to get help, share your ideas, or discuss anything related to Stratum V2 and its reference implementation.

Whether you're looking for technical support, want to contribute, or are just interested in learning more about the project, our community is the place to be.

Join the Stratum V2 Discord Community

๐ŸŽ Donate

๐Ÿ‘ค Individual Donations

If you wish to support the development and maintenance of the Stratum V2 Reference Implementation, individual donations are greatly appreciated. You can donate through OpenSats, a 501(c)(3) public charity dedicated to supporting open-source Bitcoin projects.

Donate through OpenSats

๐Ÿข Corporate Donations

For corporate entities interested in providing more substantial support, such as grants to SRI contributors, please get in touch with us directly. Your support can make a significant difference in accelerating development, research, and innovation.

Email us at: stratumv2@gmail.com

๐Ÿ™ Supporters

SRI contributors are independently, financially supported by following entities:

๐Ÿ“– License

This software is licensed under Apache 2.0 or MIT, at your option.

๐Ÿฆ€ MSRV

Minimum Supported Rust Version: 1.75.0


Website stratumprotocol.org  ยท  Discord SV2 Discord  ยท  Twitter @Stratumv2