Files
wikideck/docs/mainnet-launch.md
T
2026-10-20 03:40:26 -04:00

7.2 KiB
Executable File

Gated mainnet candidate

This repository now has a separate mainnet candidate profile, not an audited or launched production network. Shipping code does not establish independent miners, economic security, an operational public network, or a safe real-money market. Payments remain mocked on every profile.

Current production decision: NO-GO. See the 2026-10-20 security review and operator evidence register and launch procedure. The read-only launch:preflight package script (or node entry-point --launch-preflight) reports local gates and unresolved blockers without starting a node or setting approvals. It deliberately exits nonzero while production readiness is blocked.

What is implemented

Property Testnet default Mainnet candidate
Selection WIKIDECK_NETWORK=testnet (or unset) WIKIDECK_NETWORK=mainnet
Network ID wikideck-randomx-testnet-6 wikideck-randomx-mainnet-1
Protocol Existing version 6 Version 6 under a distinct chain identity
Genesis timestamp Unchanged 2027-01-01 00:00 UTC, candidate only, not a promised launch
Ledger/market subdirectory testnet mainnet
Browser wallet Existing testnet store, unchanged Separate mainnet store
Payment mode Mock only Mock only

Both profiles use real RandomX validation, cumulative-work branch selection, the 15-minute target, mint maturity, signed NFT transfers, atomic card trades, and SQLite persistence. The mainnet candidate has no premine, token migration, hidden checkpoint, or fake-PoW option. Changing the network identifier and candidate genesis derives distinct chain/genesis IDs, RandomX initial keys, signature domains, and consensus manifest checks. Existing testnet values and data remain unchanged.

Testnet cards and backups do not migrate. Browser storage is separate, backup network headers are authenticated and checked, peers reject mismatched manifests, and transactions are checked against the active chain. The selected profile is pinned at startup/browser build, never silently adopted from an RPC response.

Inspect without launching

The node entry point accepts --network-manifest. With WIKIDECK_NETWORK=mainnet set in the process environment, this prints the candidate network/chain/genesis/timestamp and exits before opening databases, starting a RandomX engine, listening, or contacting peers. It does not require activation credentials or approval and does not launch anything.

Browser builds select VITE_WIKIDECK_NETWORK=mainnet; server/miner processes select WIKIDECK_NETWORK=mainnet. These must match. Docker's WIKIDECK_NETWORK build argument sets the browser profile; a runtime variable cannot alter an already compiled UI. A mismatched UI rejects the node network instead of signing for it. The mainnet Compose definition supplies both the build and runtime selections.

Explicit launch gates

compose.mainnet.yaml is an opt-in Compose profile, uses a separate named volume, binds only loopback for an external HTTPS reverse proxy, and does not auto-restart a failed candidate. It has no default peers, approval, or public origin. It is not started by the default Compose definitions. No mainnet nodes have been started by this change.

Starting the candidate node or native miner requires all of:

  1. WIKIDECK_MAINNET_LAUNCH equals the exact candidate chain ID printed by the manifest command.
  2. WIKIDECK_MAINNET_REVIEW_ACK=independent-review-complete records the operator's review attestation. This is not cryptographic proof of an audit, and the manifest still honestly reports audited: false.
  3. The candidate genesis timestamp has arrived. If review changes the timestamp or consensus manifest before launch, the chain ID also changes and the old approval is invalidated. Freeze and publish the final manifest only after review.
  4. An HTTPS PUBLIC_ORIGIN, at least two distinct configured HTTPS peer origins, and no private-peer bypass. Configuration count cannot prove the peers are online, independent, or sufficiently distributed; verify that operationally. Existing peer DNS/origin controls still apply.
  5. WIKIDECK_PAYMENT_MODE=mock. Live modes fail closed independently of launch approval.

Unknown profile names fail closed. A direct import of the HTTP entry point is also guarded. Library-level manifest/consensus/storage inspection remains possible for tests and review; activation gates are accident prevention, not a security boundary against someone who edits the source.

Required before an actual production launch

  • Independent review: protocol/cryptography, signatures and wallet lifecycle, RandomX integration, difficulty/time/retarget attacks, state commitments, fork choice, network message validation and denial-of-service limits. Publish findings, fixes and a versioned final manifest.
  • Security model: quantify hashpower, chain-rewrite cost and majority attacks. The inherited easy initial target and ten-block retarget are not production-calibrated. Choose reviewed launch difficulty/retarget behavior and test start-up/stall/recovery scenarios. Independent mining participation and sufficient hashpower are not provided by running multiple containers on one host.
  • Adversarial rehearsal: sustained multi-host simulations, partitions/eclipses, competing branches, deep reorganizations, clock skew, bad peers, load/mempool saturation, corrupted state and restart recovery. Test the candidate rules with no valuable assets.
  • Operations: independently administered public HTTPS nodes and miners across failure domains, pinned release artifacts and dependencies, firewall/reverse proxy/rate-limit policies, bounded storage and sync strategy, metrics, alerts, rotation and emergency-response procedures.
  • Recovery: verified offline wallet recovery, consistent ledger/market snapshots, full replay/revalidation, documented incident and fork handling. No silent ledger reset or reuse of testnet data.
  • Launch governance: select the actual genesis date, freeze the reviewed identity/configuration, publish binaries and configuration hashes, agree peer/miner readiness and upgrade policy, and explicitly authorize launch. No operator should attest review merely to bypass the gates.
  • Economics and legal review: no monetary value or security is promised. NFT rights do not imply article/image copyright ownership. A real-money custodial market requires a separate risk, custody and payment review.

Still not production-ready

This remains experimental software. Nodes retain the DAG and overlays in memory, rebuild state roots over the full NFT set, and revalidate proofs at startup. The HTTP UI trusts its connected node rather than independently validating the chain. There is no automatic peer discovery, established bootstrap infrastructure, formal finality, independent audit, built-in anti-shill mechanism or production abuse system. The marketplace is node-local, not consensus escrow. Mainnet selection does not remove any of these limitations.

See marketplace sandbox and future SHKeeper boundary for the mock settlement model and the additional work required before any real XMR can be accepted or paid out.