From 4329af5bcdc4402c4d87454be035add46a9c91fb Mon Sep 17 00:00:00 2001 From: igneum-labs <337424239+igneum-labs@users.noreply.github.com> Date: Mon, 5 Oct 2026 21:20:28 +0000 Subject: [PATCH] Pool v0: igneum-pool (spec 09 newline JSON, per-member templates with the member's vote key, vardiff, CPU warp-verified shares, PPLNS on the EVM side with a 1% default fee and dry run, stats API and page), the Hive hooks' pool:// mode, the private-network measurement harness Co-Authored-By: Claude Fable 5.1 --- packaging/hive/README.md | 16 +- packaging/hive/h-config.sh | 32 +- packaging/hive/h-run.sh | 29 +- pool/.gitignore | 2 + pool/Cargo.lock | 6462 +++++++++++++++++++++++++++ pool/Cargo.toml | 56 + pool/README.md | 162 + pool/src/api.rs | 279 ++ pool/src/config.rs | 141 + pool/src/main.rs | 183 + pool/src/node.rs | 386 ++ pool/src/payout.rs | 341 ++ pool/src/pool.rs | 132 + pool/src/pplns.rs | 172 + pool/src/protocol.rs | 228 + pool/src/server.rs | 325 ++ pool/src/state.rs | 304 ++ pool/src/vardiff.rs | 229 + pool/src/verify.rs | 145 + pool/tests/fixtures/miner.json | 1 + pool/tests/fixtures/payments.json | 1 + pool/tests/fixtures/pool-stats.json | 1 + pool/tests/fixtures/stats.json | 1 + pool/tools/capture-fixtures.mjs | 20 + pool/tools/measure.mjs | 197 + pool/web/index.html | 199 + 26 files changed, 10022 insertions(+), 22 deletions(-) create mode 100644 pool/.gitignore create mode 100644 pool/Cargo.lock create mode 100644 pool/Cargo.toml create mode 100644 pool/README.md create mode 100644 pool/src/api.rs create mode 100644 pool/src/config.rs create mode 100644 pool/src/main.rs create mode 100644 pool/src/node.rs create mode 100644 pool/src/payout.rs create mode 100644 pool/src/pool.rs create mode 100644 pool/src/pplns.rs create mode 100644 pool/src/protocol.rs create mode 100644 pool/src/server.rs create mode 100644 pool/src/state.rs create mode 100644 pool/src/vardiff.rs create mode 100644 pool/src/verify.rs create mode 100644 pool/tests/fixtures/miner.json create mode 100644 pool/tests/fixtures/payments.json create mode 100644 pool/tests/fixtures/pool-stats.json create mode 100644 pool/tests/fixtures/stats.json create mode 100644 pool/tools/capture-fixtures.mjs create mode 100644 pool/tools/measure.mjs create mode 100644 pool/web/index.html diff --git a/packaging/hive/README.md b/packaging/hive/README.md index b59938a57..ed06aca85 100644 --- a/packaging/hive/README.md +++ b/packaging/hive/README.md @@ -31,14 +31,22 @@ v1": jobs `memsweep-pc2-pv1`, `memminer-pc2-pv1` and the S_p curve, one RTX 5090 | Installation URL | `https:///igneum-hive-.tar.gz` (the archive from `make-hive-package.sh`, published on the download host) | | Miner name | `igneum` | | Wallet and worker template | `0x<40 hex>.%WORKER_NAME%`: the payout address is an EVM address you hold the key for; the part after the dot labels this rig's keys | -| Pool URL | `grpc://:26610` (your own igneumd, solo mining), or `local` to run the bundled node on the rig | +| Pool URL | `grpc://:26610` (your own igneumd, solo mining), `local` to run the bundled node on the rig, or `pool://:4463` to mine to a pool (spec 09; `NODE=local` in the extra config adds a verifier node for voting) | | Pass | empty | | OVERRIDE | the devnet's consensus override as one JSON object on its own line, needed with `local`: `OVERRIDE={"difficulty_v2_activation_daa":33000,"proving_v0_activation_daa":84100,"fees_v1_activation_daa":210000,"finality_v3_activation_daa":135200}` is the four-field object 0.3.10 shipped; after the 0.3.11 switch it has nine fields, and the downloads page carries the live one. Set OVERRIDE from the downloads page when it changes. **A rig without it is refused**: its node runs on genesis parameters, prints another digest, and every devnet peer drops it (`h-run.sh` warns in the main log) | -| Extra config arguments | `DEV_FEE=1 IDENTITIES=auto WORKER=auto VOTE=1` (one per line also works); `PEERS=a:26611,b:26611` for the bundled node; `EXTRA="..."` for more miner flags | +| Extra config arguments | `DEV_FEE=1 IDENTITIES=auto WORKER=auto VOTE=1` (one per line also works); `PEERS=a:26611,b:26611` for the bundled node; `NODE=local` or `NODE=grpc://host:26610` for the verifier node in pool mode; `EXTRA="..."` for more miner flags | | IDENTITIES | vote keys per card: 8 for a card with 8 GB or more, else 2 (`IDENTITIES=auto` applies that rule, per card, from `nvidia-smi` or the amdgpu sysfs; 8 when neither answers; a number overrides it for every card). The rule is the app's (`app/igneum-app/src/detect.rs`) | -Solo mining: there is no pool. Each card mines block templates from the node and the block reward pays the wallet in -the template (80% of each block to its finder, 20% to the proving pool; the protocol takes no fee for anyone). +Solo mining: each card mines block templates from the node and the block reward pays the wallet in the template (80% of +each block to its finder, 20% to the proving pool; the protocol takes no fee for anyone). + +Pool mining (5 October 2026, `pool/README.md`): with `pool://host:4463` each card runs `igneum-miner ... --pool host:4463 +--evm-address --worker-name