Methodology — How mergefees measures Bitcoin miners' merge-mining revenue
This document describes, per chain, exactly what is counted as "revenue paid to Bitcoin miners," how it is computed, from what sources, and with what verification. It is the working draft of the site's public methodology page.
The definition (ROADMAP §2): revenue to Bitcoin miners = the block rewards (subsidy + transaction fees, or the miner's share thereof where consensus splits rewards) of blocks that carry valid merged-mining proof — i.e., blocks produced by a Bitcoin miner reusing Bitcoin proof-of-work. Blocks are classified individually; no chain's merge-mined status is ever inferred from height ranges or dates.
1. Common framework (all chains)
Per-block records. Every chain is walked block-by-block into a single
frozen schema (BlockRecord): chain, height, block hash, timestamp,
is_merge_mined, subsidy_native, fees_native, miner_reward_native,
plus extra_json for chain-specific audit data. Records are stored
permanently as Parquet in S3 (s3://mergefees-data/blocks/{chain}/), so any
figure on the site can be recomputed and audited down to the block, forever.
Exact arithmetic. All monetary values are decimal strings computed through integer base-unit intermediates (satoshis / sela / centis / wei) — floating point never touches a monetary value. For Bitcoin-family nodes, whose JSON-RPC emits amounts as floats, the raw response text is rewritten to quote the amounts before JSON parsing, so the node's exact decimal digits survive end-to-end.
Headline tally. Revenue to Bitcoin miners for a chain = the sum of
miner_reward_native over blocks where is_merge_mined = true. Non-merged
blocks (early eras, permissionless miners, fallback mechanisms) are fully
recorded but excluded from the headline.
Verification. Each chain passes an automated verification before it counts: height continuity from 0 with no gaps or duplicates; per-record schema validation; timestamps never more than 2 hours behind the running maximum (the consensus future-time bound); and, where a theoretical model exists, the summed subsidy must match the chain's emission schedule to within 0.01% (in practice: exactly, to the smallest unit). Reference blocks are additionally spot-checked field-by-field against independent sources, and AuxPoW parent hashes are cross-checked against the Bitcoin chain (mempool.space) — a genuine merge-mined block's parent must be real Bitcoin work with an era-consistent timestamp.
Sources. A chain's history is extracted either from our own fully synced node (local RPC) or from an official public endpoint that the adapter was first validated against block-for-block. Either way the chain's own consensus data — not third-party explorers — is the source of truth.
2. Per-chain methodology
Namecoin (NMC) — the canonical case
- Counted: the full coinbase output sum of every block whose JSON
carries an
auxpowobject (namecoind validates the AuxPoW against the Bitcoin parent header, so field presence is consensus-verified proof). - Subsidy model: 50 NMC halving every 210,000 blocks (Bitcoin's
schedule).
fees = coinbase_sum − subsidy, clamped at zero when miners claimed less than allowed (the raw sum is preserved inextra_json). - Name-operation outputs in coinbases are ordinary miner value (name fees burn in regular transactions, not the coinbase) — no special-casing.
- Boundary: first merge-mined block at height 19,200 (timestamp 1318066829 = Oct 8, 2011, per our own extracted record); every block is classified by its own auxpow field regardless.
- Result: 814,429 merged blocks, 18,709,372.61 NMC; the summed subsidy matched the theoretical schedule exactly.
Syscoin (SYS) — the masternode chain
- Counted: coinbase
vout[0]only — the miner's share. Consensus gives the PoW minerceil(25%)of the net block reward plus half the fees; masternodes receive 75% (plus seniority bonuses, which are additional issuance) and ~10% of gross is carved out for governance, paid via monthly superblocks. All non-miner outputs are excluded and their sum preserved inextra_json. - Merged-mining proof: per-block
auxpowobject (AuxPoW chain ID 16); Syscoin validates parent PoW, so field presence is trustworthy. Plain-PoW blocks (observed only near the chain's start) count as not merged. - Chain scope limitation: today's Syscoin chain is a June 2019 restart; height 1 mints the 554.2M SYS legacy snapshot (recorded, excluded). Merge-mining on the legacy chain (May 2016 – June 2019) is not reachable from any running node and is not counted — a stated undercount.
- Validation: the miner-share model was verified to the satoshi against
live block 2,270,000 (
vout[0]= 15.12336708 SYS =(net+3)/4exactly). - Result: 2,272,777 merged blocks, 27,644,799.93 SYS; subsidy model matched exactly.
Elastos (ELA) — the reward-split chain
- Counted: coinbase output[1] only — the AuxPoW miner's output in
every era (30% CR / 35% miner / 35% DPoS over subsidy+fees since the
PublicDPoS fork; pre-402,680 real blocks paid output[1] ≈ 70% because the
DPoS share did not yet exist — we record what the miner actually
received). CR and DPoS/BPoS outputs are excluded. The miner value is read
on-chain, never recomputed from the split formula (consensus computes the
split with float64
ceil, which we replicate only for the subsidy/fees decomposition, with the era values pinned by tests and verified against live coinbases). - Merged-mining proof — the hard case: every ELA block carries an
AuxPoW envelope, and the built-in CPU miner fabricates a Bitcoin
parent. A block counts as merge-mined only if its parent coinbase is
structurally real Bitcoin work: prevout index
0xffffffffand a BIP34 height push (fabricated stubs fail both; the decoded parent BTC height is stored inextra_json). Verified: first genuine block is 177,153 (2018-08-26), with stubs interleaved until ~177,300 — per-block classification is mandatory and used. - Exclusions: genesis (33M premine, zero-filled auxpow placeholder) and all self-mined-era rewards.
- Result: 2,083,131 merged blocks, 2,048,273.02 ELA; the summed miner-subsidy share matched the five-era theoretical model exactly.
Rootstock (RBTC) — fees only, via REMASC
- Counted: RSK pays no subsidy. Miners are paid by the REMASC contract
4,000 blocks late from a smoothing pot (each payout is 1/10 of the
accumulated fee balance, split ~20% RSK Labs / ~0.8% federation / ~79.2%
miners). Every payment emits a log whose data names the rewarded
block, so revenue is attributed to the block that earned it: block B's
revenue = the sum of REMASC payment logs referencing B (read at B+4000),
including sibling/uncle and publisher payments (those recipients are
also Bitcoin merge-miners), excluding the two known RSK Labs
addresses and federation payments (identified by elimination: any payee
that has never been an RSK coinbase). The full breakdown is stored in
extra_json; blocks with no payout (early zero-fee era, RSKIP85 minimum-threshold deferrals) legitimately earned zero. - Merged-mining proof: every block from 729,000 (RSKIP98) is merge-mined by construction — an 80-byte Bitcoin header whose coinbase commits to the RSK block. Pre-729,000 fallback-mined blocks (federated signatures instead of a BTC header — they exist, verified live) count as not merged; they earned ~0.00006 RBTC in total.
- Horizon: blocks within ~4,100 of the chain tip have not been paid out yet and are extracted only once matured.
- Cross-check: each block's own
paidFeesis recorded; cumulative fees vs cumulative distributions reconcile (they differ per-block by design — the smoothing pot). - Result: 8,948,540 merged blocks, 70.9672 RBTC — natively BTC-denominated, since RBTC is pegged 1:1.
Hathor (HTR) — in progress
- To be counted: the block reward (sum of block outputs, which
consensus requires to equal the emission schedule exactly) of blocks with
version 3 (
MERGE_MINED_BLOCK) — a consensus-level type distinct from version-0 native-PoW blocks, which remain legal and occur mainly in a short launch era (first merged block: height 62,096, Jan 25, 2020). Hathor transactions carry no fees, sofees_nativeis structurally zero; miner income is subsidy only (64 → 32 → 16 → 8 HTR yearly halvings, then 2 HTR after the June 2026 DAA change — every boundary verified on-chain). The 1B HTR genesis premine is recorded and excluded. - Parent-chain caveat (stated up front): Hathor's AuxPoW accepts any
SHA-256d chain with Bitcoin's header format. Bitcoin dominates, but
Bitcoin Cash was reportedly used as a parent in 2021. The measurement is therefore
"merge-mined against a SHA-256d parent"; each block's parent prev-block
hash is recorded in
extra_json, enabling a retroactive BTC/BCH split by joining against Bitcoin headers (planned hardening). - Sources: history from a snapshot-bootstrapped full node (the official snapshot is the complete database; our verification pass and public-node spot-checks mitigate the snapshot-trust assumption), tail from the official public node API.
Fractal Bitcoin (FB) — syncing
- To be counted: the full coinbase sum of auxpow-type blocks only. Fractal's "Cadence Mining" produces three consensus block types — merge-mined (chain ID 0x2024), permissionless CPU/ASIC, and (since the FIP-101 fork at height 1,500,000) indexer blocks (chain ID 0x2026) — in a statistical 1:1:1 mix (1:2 before the fork), never a height pattern. All three types earn identical rewards (25 FB + fees, halving every 2.1M blocks — the first halving lands ~Sep 2026, inside our backfill window and handled by the schedule), so the classification flag alone drives the tally. A block counts as merge-mined only when its auxpow object is present and its header version bits agree (flag 0x100 + chain ID 0x2024) — any disagreement fails extraction loudly.
- Exclusions: height 0 (literally Bitcoin's 2009 genesis block) and height 1 (the 105M FB premine coinbase — half the total supply).
3. USD valuation
Native units are the source of truth; USD is derived at display time in two
views (ROADMAP §2): (a) value at time of receipt — each block's reward
× its block-day closing price (requires the Phase-4 historical daily price
backfill; not yet computed), and (b) current value — all-time native
totals × today's spot price. The figures quoted so far use view (b) only.
The two views differ enormously (Namecoin especially) and the site will
show both. Notes: RBTC is valued at its own market price, which trades
within 0.5% of BTC; the current CoinGecko "syscoin" quote ($0.002)
appears anomalous relative to SYS's history and is flagged for validation
against a second source during Phase 4.
4. Known limitations (stated, not hidden)
| Limitation | Effect |
|---|---|
| Syscoin legacy chain (May 2016 – Jun 2019) unreachable | undercounts SYS merge-mining revenue; disclosed |
| Elastos pre-402,680 blocks paid output[1] ≈ 70% | recorded as received; era documented |
| Hathor parent chain not identifiable per-block | measured as "SHA-256d parent"; BTC/BCH split planned |
| Hathor history from a snapshot-bootstrapped node (all other chains: own full-sync nodes or per-block-validated endpoints) | mitigated by verification pass + independent spot-checks |
| RSK maturity: revenue lags the tip by |
tail always ~1 day behind; structural |
| Near-tip blocks may reorg | dataset finalizes N confirmations deep; the live tail re-verifies (Phase 3) |
5. Verification status
| Chain | Blocks | Continuity | Subsidy vs theory | Status |
|---|---|---|---|---|
| Namecoin | 833,759 | 0..tip, no gaps | exact | PASS |
| Syscoin | 2,274,804 | 0..tip, no gaps | exact | PASS |
| Elastos | 2,260,468 | 0..tip, no gaps | exact (5 eras) | PASS |
| RSK | 9,113,869 | 0..tip, no gaps | n/a (fees only) | PASS |
| Hathor | — | — | model ready (all eras) | extracting |
| Fractal | — | — | model ready (incl. Sep 2026 halving) | node syncing |