You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Run c2pool ALONGSIDE a Dash Core daemon and use dashd as a CONTINUOUS REALTIME
ORACLE for the daemonless embedded DIP4 CbTx/template arm. On every new tip the
shadow (OBSERVE-only, --embedded-oracle-shadow):
1. builds the embedded template via the SAME path the serve arm uses
(NodeCoinState::select_work) -- Embedded arm, or records a FALL-CLOSED
serve-gap when the arm is not armed;
2. VERDICT: assembles the embedded block and submits dashd
getblocktemplate{mode:proposal} (NodeRPC::propose_block_hex) --
TestBlockValidity is the authoritative, mempool-independent pass/fail;
3. DIAGNOSIS: regime-aware field compare vs dashd getblocktemplate.
Regime model (adversarial-critique determinism table): EQUALITY (nHeight, CbTx
version, bits, mintime, payee identity, platform burn, normalized subsidy, MN/
quorum roots on empty templates) COUNT; creditPool is an INVARIANT checked
against the normalized base (committed - platformReward - ownDelta ==
creditPool(N-1)) -- the exact check that caught the seed bug 3x; bestCL is a
CONSTRAINT (range, sig-equality only when CL heights coincide); fee/mempool
fields are informational and NEVER counted (the separate-mempool false-positive
the naive compare would cause).
Graduation ledger (JSONL divergence log + JSON state under the data-dir,
/embedded_oracle endpoint): GRADUATED == N consecutive served+proposal-accepted
clean blocks AND >=K served coverage of each height class (dkg_window,
superblock, post_restart_cold, quorum_rotation, credit_pool_transition,
non_empty_template) AND >=1 reorg AND serve-rate floor. Selection-bias fix:
fall-closed classes are recorded and declared as residual serve-gaps (disabling
dashd removes the fallback those classes rely on). Ledger hard-keyed to
{c2pool_commit, comparator_version, dashd_version, net}; revocable by chain-drift
sentinels (unknown CbTx version / payload parse fail).
Soundness grounded on the embedded arm's INDEPENDENT chain-state derivation, NOT
peer diversity (DASH has no CoinPeerManager). Graduation scope = chain-state
equivalence over the served domain (reward-safe daemonless block construction);
full network-standalone operation needs the separate CoinPeerManager gate.
Consensus-neutral: the serve/consensus/share path (work_source.cpp,
coinbase_builder.hpp, share_check.hpp, pplns.hpp, node_coin_state.hpp,
embedded_gbt.hpp) is UNTOUCHED -- the shadow is a separate new_tip subscriber
that only reads. web_server gains an additive /embedded_oracle reporting route.
Builds c2pool-dash + test_dash_embedded_oracle_shadow (11 KATs, green) pinning
the regime model, the fee-difference-is-not-a-divergence keystone, the creditPool
invariant, the bestCL constraint, and the graduation predicate.
Design doc: frstrtr/the docs/c2pool-dash-embedded-oracle-shadow-validator.md.
0 commit comments