Read the Overview for General Considerations for Decentralized Mining Pools, or Braidpool Spec in increasing levels of complexity. You may also be interested in our Roadmap
The goals of the pool are:
- Lower variance for independent miners, even when large miners join the pool.
- Miners build their own blocks, just like in p2pool.
- Payouts require a constant size blockspace, independent of the number of miners on the pool.
- Provide building blocks for enabling a futures market of hash rates.
Braidpool nodes need to connect to a bitcoin RPC node. The bitcoin node also needs to have the hashblock
ZMQ notification enabled.
Let's assume there is a bitcoind
running on 0.0.0.0:8332
with username xxxx
, password yyyy
, and zmqpubhashblock
enabled on port 28332
:
$ bitcoind -rpcport=8332 -rpcuser=xxxx -rpcpassword=yyyy -zmqpubhashblock=tcp://localhost:28332
For the moment, the braidpool node runs a simple p2p broadcast. To run it you need to do the usual cargo things
cd node
cargo build
# run the first seed node on port 8989
cargo run -- --bind=localhost:8989 --bitcoin=0.0.0.0 --rpcport=8332 --rpcuser=xxxx --rpcpass=yyyy --zmqhashblockport=28332
# run other nodes pointing to the seeding node and specify their own port as 9899
cargo run -- --bind=localhost:9899 --addnode=localhost:8989 --bitcoin=0.0.0.0 --rpcport=8332 --rpcuser=xxxx --rpcpass=yyyy --zmqhashblockport=28332
The project on github tracks the main components to build. Here's a list to keep us focused:
- P2P gossip based broadcast of miner blocks and shares.
- Use FROST rust implementation for providing threshold schnorr signatures. Use mock clock for identifying rounds.
- A DAG of shares to track contributions for miners.
- Validate received blocks and shares.
- Single script installer (limited to Linux variants, potentially using docker).
Matrix chat: https://matrix.to/#/#braidpool:matrix.org
Mailing list: https://sourceforge.net/p/braidpool/mailman/braidpool-discuss/
Development blog: https://blog.opdup.com/