Skip to the coins
Carpet Marketsconnecting…opening

0Kei confirmed and spendable

Launch
← board

What is under this page

Every offer, settlement and cancel here is a block signed by a key in this browser. Which ledger those blocks go to is the only thing that changes between the modes below, and the badge in the bar always says which one is live — it is read off the server rather than compiled into the page, so it cannot be out of date with the thing it describes.

Mock chain

available

Blocks are real blocks and the ledger enforces every rule this demo makes a claim about — the transfer policy, the swap lock, the issuance burn. It is not a network: one process holds the whole ledger, nobody else validates anything, and there is no consensus to disagree with it. The deployed Worker rebuilds that mock from a Durable Object event log after eviction; deleting that object resets it, and local development still resets when its process stops. Persistence does not give these coins value or make the mock mainnet-ready.

Public testnet

available

Every offer, settlement and cancel on this page is a block on a network other people can read, written by a key in this browser and validated by a node the project runs on one box. That makes the market genuinely peer-to-peer and the price genuinely somebody else’s agreement. It does not make anything valuable: a testnet is a testnet, the faucet hands out Kei to anybody who asks, and the node is explicitly best-effort with no uptime promise (SPEC §15). Value on it is a misunderstanding, not an achievement.

Mainnet — refused

refused

A launchpad is the worst possible first thing to put on a real network: it is the one demo whose entire subject is people losing money, and it is defensible as satire precisely because the coins are worthless (SPEC §9.6). Separately, Kei mainnet is gated on questions that no amount of front-end work touches — see `MAINNET_GATES`. A configuration flag that quietly pointed this at a real network would be a bug, not a feature.

Why mainnet is not a setting

The demo refuses `mainnet` by name, before anything opens a socket, in the same way `Kei.server()` refuses to run in a browser. It is not a missing feature with a ticket behind it. Five things gate it and four of them are arguments rather than builds:

  • Validator distributionSPEC §15.2

    Ten or more unaffiliated representative operators, no single operator above 33% of online weight, and the project itself below 34%. Until then Kei is a testnet with real branding and no real value belongs on it.

  • Threshold modellingSPEC §15.1

    The 51% quorum and 66% approval that gate a reserve release were chosen before anybody modelled turnout, against a supply that is 72% project-held at launch. They are parameters, and they have not been set.

  • Stale proposalsSPEC §15.3

    A proposal that never reaches quorum stays votable indefinitely, and both levers that bound it — one live proposal at a time, and withdrawal — are held by the party seeking the release.

  • The legal conversationSPEC §17

    Anything cash-out shaped ships disabled until it has happened. Mainnet is when value becomes real, so mainnet is when that stops being hypothetical.

  • A launchpad is the wrong first thingSPEC §9.6

    Even with every gate above cleared, this particular demo would not be the thing to put on a real network. It is a joke about losing money and it needs the coins to be worthless to stay one.

Checking this rather than believing it

The claim that a network can carry this market is checkable in one command, against whatever node you point it at. It walks the whole path a launch and a trade take — faucet, issue, mint, offer, accept, cancel, price history — and finishes with a refusal it expects the ledger to make.

bun run probe:testnet

`NETWORK.md` in the repository carries the last run of it, with the node’s answers.