Simple Blocknet pool server (stratum + web UI + payouts).
Testing/dev focused right now.
- Public test deployment:
https://bntpool.com - Project website:
https://blocknetcrypto.com - No official stratum miner in this repo yet
- This project is currently best treated as testing/dev software
- Argon2id uses about 2GB RAM per mining thread
- Power + hardware cost can be high
- This is usually not a profit-first setup
- Best fit: one trusted operator combining their own devices/workers
- Verify every share: strongest safety, highest resource cost
- Verify only a sample: lower cost, higher poisoning/reputation risk
go build
./blocknet-pool init
# edit config.json (see required keys below)
./blocknet-poolCustom config:
./blocknet-pool -c /path/to/config.jsonIn config.json, set these first:
pool_namepool_urlstratum_portapi_hostapi_portdaemon_apidaemon_data_dir(forapi.cookie)pool_fee_flat/pool_fee_pctpayout_scheme(pplnsrecommended)pplns_window_duration(example:24h)blocks_before_payoutmin_payout_amountapi_key(optional, but recommended for public API)
Compatibility notes:
daemon_binaryexists in config but is not used by runtimepool_wallet_addressis deprecated (runtime reads daemon wallet address)
Run a Blocknet daemon with API enabled and reachable by this pool.
Required daemon endpoints:
GET /api/statusGET /api/mining/blocktemplatePOST /api/mining/submitblockGET /api/eventsGET /api/block/{id}GET /api/wallet/addressGET /api/wallet/balancePOST /api/wallet/sendPOST /api/wallet/loadPOST /api/wallet/unlock
Daemon auth token:
- use
daemon_tokenif provided - else pool reads
<daemon_data_dir>/api.cookie
After startup:
- Open UI:
http://<api_host>:<api_port>/ - Check stats:
GET /api/pool/stats - Check logs:
GET /api/pool/logs?lines=200or localpool.log
Payout flow:
- Confirm found blocks.
- Distribute rewards (
pplnsorproportional). - Send wallet payouts above
min_payout_amount.
Wallet auto recovery:
BLOCKNET_WALLET_PASSWORD(required for auto unlock/load)BLOCKNET_POOL_AUTO_LOAD_WALLET=true(optional, off by default)
Safety:
- If wallet is locked, pool tries unlock if password env is set.
- If no wallet is loaded, pool only auto-loads when explicitly enabled.
- View-only wallet => payouts are skipped.
Web pages:
//miners/{address}/blocks/payouts
Pool API:
/api/pool/stats/api/pool/miners/api/pool/blocks/api/pool/payouts/api/pool/miner/{address}/api/pool/logs?lines=N
API security:
- if
api_keyis set, all/api/pool/*routes require auth - use
Authorization: Bearer <key>orX-API-Key: <key> - rate limit is about 30 requests/minute per IP
- max 4096 total connections
- max 16 connections per source IP
- miner must login within 30s
- duplicate shares are rejected (memory + 24h persistent dedup)
