Fork release-0.3.6 final tip 2b6d23ef = a11455e7 (testnet-params merged, the fee height switch) + cf369022 (the release dev-fee address 0x7F45d7d7272e57639BeBb739A60B05bB2CD4C126, docs/design/miner-dev-fee.md updated here) + the miner-latency merge, which landed only after the miner suite (15 passed), the 3-node fast-time run (243 blocks, 0 rejected, 0 red, sinks agree, switched p50 46 to 52 ms) and the dev-fee harness (8 of 8 fee blocks on chain, control at 0) passed on the merged tree. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
4.9 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 (a build whose DEV_FEE_ADDRESS is not 40 hex; none since 5 October 2026) |
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 |
0x7F45d7d7272e57639BeBb739A60B05bB2CD4C126: the project lead's payout address from the Igneum Wallet, given 5 October 2026, EIP-55 checksum verified, on file at ~/.config/igneum/dev-fee-release.json; set on the fork's release-0.3.6 (commit cf369022). Were it ever not 40 hex the fee would be off outside the devnet and the miner would say 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 address pays the fee on mainnet and testnet (and never the devnet address), and a non-hex placeholder keeps the fee off. - 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).