Decision of 4 October 2026 (evening): the Igneum Miner software takes a visible, switchable 1% dev fee, the norm for GPU miners; the protocol stays fee-free. The miner side (--dev-fee, the 1-in-100 template counter, the audit command) is on branch dev-fee of the node fork. - app: settings.dev_fee (default on) passes --dev-fee 0 to igneum-miner when off; Settings shows the miner's own "dev fee 1% (1 block in 100) to 0x..." line next to the rewards address with a switch; the engine parses the miner's start line and its dev-fee block lines (fee_session, lifetime fee_total, an event per fee block) - packaging/hive: h-manifest.conf, h-config.sh, h-run.sh, h-stats.sh, make-hive-package.sh (igneum-hive-<v>.tar.gz with the Linux igneumd, igneum-miner and both GPU workers), README with the Flight Sheet, selftest.sh (bash -n, stub binaries, the three hooks the way Hive runs them, the stats JSON parsed). Hive itself is untested - infra/cross/build-workers-linux.sh: the NVRTC and OpenCL workers cross-compiled for Linux with zig; proto-opencl/cl_dynamic.h gains the Linux dlopen branch (libOpenCL.so.1) - tools/dev-fee/run.mjs: the fee-block test network (two nodes on 29900+, three CPU miners, payouts audit) - docs/design/miner-dev-fee.md (mechanism, flag, lines, the DEV_FEE_ADDRESS placeholder and the devnet address), docs/fud-ledger.md E18 and the E5/L9 status line, litepaper "What a miner's hour looks like" paragraph, homepage miner section note Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
4.6 KiB
The miner software's dev fee
Decision (the project lead, 4 October 2026, evening): the Igneum miner software takes a visible, switchable 1% dev fee, the norm for GPU miners (lolMiner, T-Rex). The protocol stays fee-free: no dev fund, no fee to any team, foundation or fund (CLAUDE.md, litepaper). This fee is the software's, like every third-party miner's, and it is documented as such.
Mechanism
Solo mining, no pool: the miner asks its node for block templates with a payout address. One template in 100 is
requested with the dev payout address instead of the user's. The choice is a template counter, never a random draw,
so it is exactly 1 in 100 and anyone can audit it from the source: template n (counting from 0) is a fee template
when floor((n + 1) p / 100) > floor(n p / 100), which at p = 1 is the templates 99, 199, 299, ... Every template
is mined for the same time, so fee blocks are p in 100 on average.
What changes on a fee template, and what does not:
| Field | User template | Fee template |
|---|---|---|
Coinbase extra data IGNA address (the execution-layer payout the chain pays) |
the user's --evm-address |
the dev address |
| Vote key hash (finality weight) | the user's | the user's, unchanged |
UTXO-side coinbase script (--address, a label address with no key in the app) |
the user's | the user's, unchanged |
So a fee block still adds to the user's finality weight, and the only thing that moves is who the execution layer pays for that block.
Source: vendor/igneum-node-v4 branch dev-fee, igneum/miner/src/main.rs, section "Software dev fee"
(DevFee, fee_slot, Identity::with_dev_fee_address, template(.., fee), submit(.., fee), payouts).
The flag, the lines, the counter
| Where | What |
|---|---|
igneum-miner mine ... --dev-fee <percent> |
whole percent of templates; default 1; --dev-fee 0 turns it off |
| Start line, on | dev fee 1% (1 block in 100) to 0x<address>; --dev-fee 0 turns it off |
| Start line, off | dev fee off (--dev-fee 0); the default is 1% (1 block in 100) to 0x<address> |
| Start line, no release address | dev fee off: no release address is set (DEV_FEE_ADDRESS placeholder in igneum/miner/src/main.rs) |
| Per fee block accepted | dev-fee block <hash> |
Status line (CPU and worker modes) and MINER SUMMARY |
fee=N |
igneum-miner payouts <grpc url> |
blocks per IGNA payout address over every block the node holds, with the share; the dev address is tagged (dev fee) |
The app (Igneum Miner): Settings shows the same line next to the rewards address with a switch, stored in
settings.json as dev_fee (default on); off passes --dev-fee 0. The dashboard's "your blocks" row shows the
lifetime dev-fee block count; each fee block is also an event. The HiveOS package: DEV_FEE=0 in the Flight Sheet's
extra config.
The addresses
Constant (igneum/miner/src/main.rs) |
Value | Network |
|---|---|---|
DEV_FEE_ADDRESS |
the placeholder string DEV_FEE_ADDRESS; the project lead fills it before any public release. While it is not 40 hex the fee is off outside the devnet and the miner says so at start |
mainnet, testnet |
DEV_FEE_ADDRESS_DEVNET |
0xdfaea67368f3e3753397d878f97efe6aa8020c2e |
devnet and simnet only |
The devnet address was generated on 4 October 2026 with the app's own key derivation (secp256k1, keccak of the
uncompressed public key, app/igneum-app/src/keys.rs), checked against the known vector for key 0x01. The private key
is held outside the repository (the maintainers' local secret store, mode 0600) and never in any commit. Devnet coins
have no value and the devnet may be reset; this address is never a release address.
Tests and measurement
- Unit tests (
cargo test --release -p igneum-miner dev_fee_tests): exactly 100 fee templates in 10,000 at 1%, at positions 99, 199, ...; 0 at--dev-fee 0; 2, 3, 5, 10, 50 and 100% exact over 10,000; a fee template carries the devIGNAaddress and the user's unchanged key reveal; the release placeholder keeps the fee off outside the devnet. - Test network:
node tools/dev-fee/run.mjs(two nodes on 29900+, fast-time profile, proof of work skipped and the genesis target at the floor, three CPU stub miners: two at the default fee and one control at--dev-fee 0), thenigneum-miner payoutson the peer node. The numbers are indocs/bench-log.mdunder "the software dev fee measured".
Public text
- Litepaper, "For miners", "What a miner's hour looks like": the fee paragraph.
- Homepage, the miner section's download note.
docs/fud-ledger.md: entry E18 (software-level, switchable, the audit).