Skip to content

nmc(PF): pin mainnet_genesis_header() 80-byte seed (node-verified) - #262

Merged
frstrtr merged 1 commit into
masterfrom
nmc/pf-mainnet-genesis-header
Jun 20, 2026
Merged

nmc(PF): pin mainnet_genesis_header() 80-byte seed (node-verified)#262
frstrtr merged 1 commit into
masterfrom
nmc/pf-mainnet-genesis-header

Conversation

@frstrtr

@frstrtr frstrtr commented Jun 20, 2026

Copy link
Copy Markdown
Owner

NMC PF — retire the deferred mainnet genesis-header seed

Adds NMCChainParams::mainnet_genesis_header() (mirror of the existing testnet_genesis_header()) + the MainnetHeaderRederivesPinnedHash KAT.

Source (node truth, not memory)

Fields pinned against a live SYNCED mainnet namecoind on .140 (PID 5860, blocks=830010, initialblockdownload=false), 2026-06-20:

getblockhash 0            -> 000000000062b72c5e2ceb45fbc8587e807c155b0da735e6483dfba2f0a9c770
getblockheader <hash> false -> 0100...0dcbd3e6..bd2dc641 c133aa4d ff7f001c 92a11ea2 (80 bytes)

Parsed: version=1 time=1303000001 bits=0x1c007fff nonce=0xa21ea192 merkleroot=41c62dbd..cb0d. SHA256d(header) reproduces the genesis hash exactly (verified locally + by KAT).

Fence / CI

Verification

cmake --build build --target nmc_auxpow_wire_test  # green
./nmc_auxpow_wire_test --gtest_filter=*Genesis*    # 3/3 PASSED, exit 0

Consensus-VALUE pin -> operator tap (same class as #258/#259/#261). I do not self-merge.

Retire the deferred mainnet genesis-header seed. Fields pinned against a
live SYNCED mainnet namecoind (getblockhash 0 / getblockheader <hash>
false; .140 PID 5860, blocks=830010, IBD=false; 2026-06-20):
  version=1 time=1303000001 bits=0x1c007fff nonce=0xa21ea192
  merkleroot=41c62dbd..cb0d
SHA256d(header) == 000000000062b72c..c770 (mainnet genesis hash),
verified locally and by the new MainnetHeaderRederivesPinnedHash KAT.

The KAT asserts against the external literal hash (daemon truth), not
params.genesis_hash, so it holds regardless of merge order with the
mainnet genesis_hash pin (#261). Fenced to src/impl/nmc/; rides the
allowlisted nmc_auxpow_wire_test exe, no build.yml touch.
@frstrtr
frstrtr merged commit 5db1801 into master Jun 20, 2026
18 checks passed
frstrtr added a commit that referenced this pull request Jun 20, 2026
…262/#264 + 2b-ii) (#284)

The merge-mining consensus-parameters block-header comment still claimed
NONE of the fields were committed and were placeholder sentinels pending
pinning. That is stale: auxpow_activation_height (#258), pow_limit +
genesis_hash (#261/#262), aux_chain_id (#264) and p2p_magic (2b-ii) are
all pinned against namecoin-core chainparams.cpp and cross-checked on the
synced .140 namecoind, with per-field provenance in the inline comments.

Comment-only; fenced to src/impl/nmc/. Brings the conformance doc-state
in line with the pinned reality so a reader does not wrongly conclude the
params are unbaked.

Co-authored-by: frstrtr <frstrtr@users.noreply.github.com>
frstrtr added a commit that referenced this pull request Jun 23, 2026
…262/#264 + 2b-ii) (#284)

The merge-mining consensus-parameters block-header comment still claimed
NONE of the fields were committed and were placeholder sentinels pending
pinning. That is stale: auxpow_activation_height (#258), pow_limit +
genesis_hash (#261/#262), aux_chain_id (#264) and p2p_magic (2b-ii) are
all pinned against namecoin-core chainparams.cpp and cross-checked on the
synced .140 namecoind, with per-field provenance in the inline comments.

Comment-only; fenced to src/impl/nmc/. Brings the conformance doc-state
in line with the pinned reality so a reader does not wrongly conclude the
params are unbaked.

Co-authored-by: frstrtr <frstrtr@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant