The sweep (main's item 1): 199 tracked text files, 783 lines. The founder's full name, first name and possessive become "the founder" (sentence starts capitalised); the lowercase operating-system user name in WSL paths and commands becomes <user>; the second owner login becomes "the second owner login"; the three earlier businesses and the two other brands become "the other business", "the earlier entity", "the earlier business" and "another brand"; the Chrome profile rule names the igneum.network profile, not the profile's label. The standing commit login igneum-labs is not a founder term here: the fresh-repository step renames it in the history (docs/plans/history-rewrite.md, tools/repo/fresh-repo.sh). The patterns never appear in plain text in the tree (a plaintext list would be the hit): tools/ci/founder-strings.b64 (perl regex, tab, a sample per row) is read by tools/ci/founder-strings-check.sh (every tracked text file, perl, known-failed first: the self-test plants each row's sample in a fixture and the hit must name the file), by tools/community/discord-hooks.mjs (the guard's founder and business rows; the test takes its fixtures from the samples) and by tools/repo/fresh-repo.sh (the business names of the rewrite rules). site/forbidden-strings.txt carries the same patterns as b64: lines, decoded case-insensitive by site/scrub.mjs and tools/ci/launch-gates-check.mjs (whose fixture now plants an encoded made-up name). The check runs in the gate's tree checks on every merge. Not in this commit, by main's word: the 105 commit messages and 40 personal-identity commits that need the history rewrite (listed, not run), and the secrets found by gitleaks over the history (reported with owners). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
72 lines
4.9 KiB
Markdown
72 lines
4.9 KiB
Markdown
# The miner software's dev fee
|
|
|
|
Decision (the founder, 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 founder'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
|
|
dev `IGNA` address 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`), 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).
|