Skip to content

frstrtr/c2pool

Repository files navigation

c2pool — P2Pool rebirth in C++

CI

C++ reimplementation of forrestv/p2pool targeting the V36 share format with Litecoin + Dogecoin merged mining.

Bitcoin wiki: https://en.bitcoin.it/wiki/P2Pool
Original forum thread: https://bitcointalk.org/index.php?topic=18313


Status

Area Status
V36 share format (LTC) Active development
Merged mining (LTC+DOGE) Working
Coin daemon RPC/P2P Hardened (softfork gate, keepalive, timeouts)
Stratum mining server Working
VARDIFF Working
Payout / PPLNS Working
Authority message blobs (V36) Working
Test suite 94 tests, all passing

Need a pool running today?
frstrtr/p2pool-merged-v36 — production Python V36 pool (LTC + DGB + DOGE, Docker, dashboard).


Quick start

# 1 — prerequisites (Ubuntu 24.04)
sudo apt-get install -y g++ cmake make libleveldb-dev libsecp256k1-dev python3-pip
pip install "conan>=2.0,<3.0" --break-system-packages
conan profile detect --force

# 2 — clone and build
git clone https://github.com/frstrtr/c2pool.git
cd c2pool && mkdir build && cd build
conan install .. --build=missing --output-folder=. --settings=build_type=Debug
cmake .. --preset conan-debug
cmake --build . --target c2pool -j$(nproc)

Full step-by-step guide: doc/build-unix.md


Running

# Integrated mode — full pool (LTC + DOGE merged mining)
./src/c2pool/c2pool --integrated --net litecoin \
  --coind-address 127.0.0.1 --coind-rpc-port 9332 \
  --coind-p2p-port 9333 \
  --merged DOGE:98:127.0.0.1:44556:rpcuser:rpcpass \
  --address YOUR_LTC_ADDRESS \
  litecoinrpc RPCPASSWORD

# Testnet quick smoke-test
./src/c2pool/c2pool --integrated --testnet

# Full option reference
./src/c2pool/c2pool --help

Default ports

Port Purpose
9326 P2Pool sharechain (peer-to-peer)
9327 Stratum mining + HTTP API

API endpoints (integrated mode)

GET  /api/stats          pool statistics and hashrate
POST /api/getinfo        pool information
POST /api/getminerstats  per-miner statistics
POST /api/getpayoutinfo  payout balances

Authority message blobs (V36)

Node operators distributing upgrade signals or pool announcements use the standalone Python 3 CLI in util/:

# authority key holder — create transition signal
python3 util/create_transition_message.py create \
    --privkey <64-hex> \
    --from 36 --to 37 --msg "Upgrade to V37" --urgency recommended

# node operator — pass blob at startup
./src/c2pool/c2pool ... --message-blob-hex 01a2b3c4...

See util/README.md for full documentation.


Build targets

Target Description
c2pool Primary binary
test_hardening Softfork gate + reply-matcher regression tests
test_share_messages V36 authority message decrypt/verify tests
test_coin_broadcaster Coin peer-manager and broadcaster tests

Run all tests:

cd build && ctest --output-on-failure -j$(nproc)

Community


Donations

PayPal

Donate


Install guides