Validator Client

The standalone validator package is @botcoinmoney/coretex-client. It installs as its own validator client and defaults to CPU replay. The current npm latest is 0.2.0; bin names are unchanged.

npm install @botcoinmoney/coretex-client

Required environment:

export BASE_RPC_URL=https://mainnet.base.org
export CORETEX_REGISTRY_ADDRESS=0x...
export BOTCOIN_MINING_CONTRACT_ADDRESS=0x...
export CORETEX_ARTIFACT_BASE_URL=https://.../coretex/launch/v16
export CORETEX_REGISTRY_DEPLOY_BLOCK=<deploy-block>

Setup hydrates and verifies the public artifact set:

npx coretex-validator-setup --registry-deploy-block "$CORETEX_REGISTRY_DEPLOY_BLOCK"

Setup fetches coretex-launch-v16-artifacts.json, verifies payload SHA-256 and byte sizes, materializes the production corpus, records the launch base corpus, and bootstraps a pinned CPU scorer venv unless the operator opts out.

Sync replays chain state and verifies scoring evidence:

npx coretex-validator-sync

The default sync path:

  1. Reads V4 currentEpoch() and registry pins at one confirmed block tag.
  2. Verifies bundle version, corpus root, frontier root, baseline hash, and hidden seed commitment.
  3. Uses the epoch-115 launch-recovery pin when applicable, verifying the pinned parent root against CoreTexRegistry.liveStateRoot(epoch) at block 47358408 before replay.
  4. Falls back to state-deploy or env-deploy bootstrap when no recovery pin applies.
  5. Replays CoreTexStateAdvanced logs from the recovery/start block or prior cursor.
  6. Recomputes each substrate root from public compact patch bytes.
  7. Checks local live root equals CoreTexRegistry.liveStateRoot(epoch).
  8. Before reveal, exits 0 with awaiting_epoch_secret_reveal.
  9. After reveal, fetches eval reports and re-scores accepted advances on CPU.

0.2.0 ships a Base mainnet epoch-115 launch-recovery pin for parent root 0x4c7e...73af at block 47358408, tx 0x92d5...587e, with the packed 32,768-byte substrate embedded and merkle-verified before use. This is the normal sync path for post-incident clients. Use --full-history or CORETEX_REPLAY_FULL_HISTORY=1 only when explicitly auditing the operator incident from the legacy deploy-block path.

Useful replay controls:

# Replay a bounded historical window from a known parent substrate.
npx coretex-validator-sync \
  --epoch <epoch> \
  --from-block <block-containing-advance> \
  --parent-state ./parent-state.bin

# Explicitly bypass launch recovery and audit full history.
npx coretex-validator-sync --full-history

# Provide a known corpus file for a historical corpus root, as a manual shortcut.
npx coretex-validator-sync \
  --corpus-for-root 0x<corpusRoot>=./corpus-for-that-root.json

# Verify one post-reveal eval report by hash.
npx coretex-validator-sync verify-patch \
  --hash 0x<evalReportHash> \
  --epoch-secret 0x<revealedSecret> \
  --parent-state ./parent-state.bin

--skip-score-replay exits with code 3. It is useful for root and artifact checks, while a score attestation requires the pinned reranker path.