Kaspa x402

Mainnet Readiness

Status: mainnet is blocked. kaspa:mainnet is a reserved draft profile name, not a production readiness claim.

The current shipped native profiles are:

kaspa:testnet-10 is the active validation target. Mainnet must remain opt-in and disabled by default until every gate below is closed.

Required Gates

Independent Audit

Audit scope must include:

Audit output must include explicit pass/fail status for exact and batch-settlement. A testnet-only pass is not sufficient for mainnet.

Consensus Cross-Validation

The transaction-v1 vectors for batch claim and batch refund must be cross-validated against the configured Kaspa consensus checkout:

KASPA_X402_KASPA_CONSENSUS_ROOT=<rusty-kaspa-checkout> npm run validate:tx-v1-consensus

The recorded validation level must be refreshed whenever consensus code, transaction serialization assumptions, fixture scripts, fee policy, or compute budget assumptions change.

Durable State

Production deployments must use a durable transactional store that satisfies docs/server-store-contract.md. In-memory stores are not acceptable for mainnet because they cannot preserve replay, payment-identifier, and channel state across process loss.

Operational Recovery

Operators need documented recovery procedures for:

Live Evidence

Before any mainnet release candidate, a fresh funded kaspa:testnet-10 run must pass:

npm run proof:live:check -- --live --write-report

The sanitized report in docs/live-testnet-report.md must show exact replay rejection, batch deposit-voucher settlement, voucher-only settlement, claim, replay rejection, and refund evidence.

Release Controls

Mainnet enablement must require explicit configuration. Packages, examples, and docs must continue to describe mainnet as reserved until audits, durable store requirements, live evidence, and operator runbooks are complete.

Source: /docs/mainnet-readiness.md