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>
71 lines
4.6 KiB
Markdown
71 lines
4.6 KiB
Markdown
# 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
|
|
dev `IGNA` address 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`), then
|
|
`igneum-miner payouts` on the peer node. The numbers are in `docs/bench-log.md` under "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).
|