Docs
Every mechanic of dotcom.systems, stated once and stated plainly, then every contract address so you can check it against the chain. The same text is served as plain text at /llms.txt.
dotcom.systems issues 5,555 fictional dot-com-bubble startups as one DN404 / ERC-7631 collection on Robinhood Chain. The collection has two faces: an ERC-20 token, $DOTCOM, and an ERC-721 mirror. One whole $DOTCOM is one startup, exactly 1.000000000000000000 token per startup, and the two move together. Units are sold in two fixed dollar tiers, revealed in batches as specific startups, and traded in one canonical $DOTCOM/WETH Uniswap v4 pool whose hook charges a permanent 3% on the WETH side of every swap. Burn the whole token behind a startup and that startup survives the crash: it leaves the tradeable supply, stays in your wallet as a permanent NFT, and from then on receives a weighted share of that fee in WETH. Survival is one-way. There is no undo, no re-issue, and no path back into the supply.
In five sentences
- There are exactly 5,555 $DOTCOM tokens, and every whole token you hold gives you one startup in your wallet.
- Startups are minted as a mystery box and revealed in batches, so you learn which one you got after you mint, not before.
- There is one market for $DOTCOM, and every swap in it pays a permanent 3% fee on the WETH side.
- Burn the token behind a startup and it survives: it becomes a permanent NFT and earns a weighted share of the two thirds of every fee that is set aside for survivors, in WETH, for as long as the market trades.
- If you never burn, you hold a tradeable token; let your balance fall below a whole token and your newest startup folds back into The Queue for someone else to boot.
Contents
The Queue, before The Bell
The Queue is our guestbook, and it is the only way to reach the $1 tier. It costs nothing to sign and it is signed once.
1. Signing in with X creates a real wallet.
No seed phrase, no email, no browser extension. The X login provisions an Ethereum wallet for you on Robinhood Chain through Turnkey, with the private key generated and held inside a secure hardware enclave. It is an ordinary wallet: you can fund it, trade with it, and export it.
2. Your number is locked to that wallet.
The Queue is a list of wallet addresses, not of handles. Your number identifies the address the login produced. It cannot be moved to a second address, and there is no function anywhere that transfers it.
3. The Queue freezes before The Bell.
At the freeze every wallet in the list is written into a single Merkle tree and that tree's root is set on-chain. After the freeze the list cannot be added to, removed from, or reordered, by anyone, including us. The leaf list is published in position order so you can rebuild the root and check yourself.
4. The frozen list is the $1 list.
555 of the 5,555 units are sold at $1 to wallets in that list only, one unit per wallet, first come. A $1 unit requires a Merkle proof in every phase of the mint, not only in the early one. Wallets outside the list mint at the public tier, $5.
The same frozen list has one more use. After the freeze, a wallet on it sends one free registration transaction, gas only, to the pool's hook, and from then on pays the permanent 3% from the first block of trading, skipping the launch decay described below. Registration is permissionless, is needed once, and can be sent before or after The Bell. Being in The Queue makes you eligible for the $1 tier. It does not reserve a unit for you.
Take a number at The Queue.
The two tiers
5,000 units are sold. 555 units are reserved and never offered. Total supply is 5,555 units and cannot change.
How a mint works
- What you pay
- The tier price in US dollars, converted to WETH inside your transaction at the Chainlink ETH/USD rate. Send native ETH and the contract wraps it and refunds the dust, or approve WETH and pay in WETH. If the price feed is stale, negative, or unavailable, the transaction reverts. It never falls back to a cached price, so the dollar figure is honest at the second you mint and the ETH amount is not fixed in advance.
- Caps
- One unit per wallet at $1. At $5, 10 units per transaction and 25 units per wallet.
- Crossing a tier
- The $1 units fill first and the price is computed per unit. A Queue wallet whose transaction straddles the 555 boundary pays the exact mix: one unit at $1, the rest at $5. There is no rounding either way.
- What you receive
- One whole $DOTCOM per unit, and the same number of startup NFTs, both in the same transaction. The NFTs exist immediately and are unrevealed until their batch is revealed. Ids 1 to 555 are the reserved units; public units take the ids above them in the order they are minted.
- Supply
- Fixed. Exactly 5,555 units exist from the close of the mint onward, whether or not the mint sells out. The mint closes before The Bell rings; once trading opens, nothing can be minted.
- One restriction
- A wallet with DN404 skip-NFT switched on cannot mint. Ids have to materialize in sequence for the reveal to map batches to startups, and a skip-NFT minter would break that mapping.
From a unit to a startup
- The mystery box
- A minted unit is a box. Which startup is inside is not decided when you mint, and cannot be known then by you, by us, or by anyone watching the chain.
- Batches
- The mint closes a batch every 555 public units, or every 24 hours, whichever comes first. Reveals happen per batch, so early minters do not wait for the last minter.
- Commit, then reveal
- Before the mint opens the operator publishes the hash of a secret seed on-chain. To reveal a batch the operator publishes the seed itself. The batch's assignment seed is that secret combined with the batch digest, which is built from mint data that did not exist when the commitment was made. The operator cannot pick an outcome, because half the input was not knowable at commit time.
- Assignment
- A Fisher-Yates shuffle over the 5,555 startup slots, run on-chain. The startup list is hashed and that hash, sha256 of assignment.json, is pinned at deploy, so the file behind the reveal cannot be swapped afterwards.
- If we go quiet
- 72 hours after a batch closes without a reveal, anyone can force it. The forced path arms a block five ahead and then seeds from that block's hash, which nobody can know when they arm it. If the hash has aged out of reach the call reverts and the batch can simply be armed again. No reveal ever seeds from a zero hash.
- The reserved units are revealed last
- The final batch holds the 555 reserved units and anything unsold, and it is revealed after every public batch, so the reserve cannot see its own draw early.
What a revealed startup carries
Every startup belongs to a track, and every track to a camp. Tracks decide your Crash Day multipliers and your lore, not what you are paid in. Everyone is paid in WETH.
- Survivors: Everything Store · Search & Pipes
- Bubble: Delivery & Pets · Portals & Media · Digital Cash & Toys
Weight decides the size of a survived startup's share of the survivor leg. It does not change the price of anything.
Fold, boot, and The Queue after The Bell
- Survive
- Burn the one whole $DOTCOM behind a startup. It leaves the tradeable supply, stays in your wallet as a permanent NFT, and starts earning a weighted share of the 2% survivor leg in WETH. There is no undo.
- Fold
- Let your balance fall below a whole token and your newest pre-crash startup folds back into The Queue. Your approvals for that id are cleared on the state change.
- Boot
- When a balance crosses back above 1.0, the next startup in The Queue boots to it. The order is DN404's public first-in-first-out bank: first folded is first booted.
- The Queue
- Two things share the name, both of them lines you take a number in. Before The Bell it is our guestbook, what other projects call a waitlist, and you sign it with X. After The Bell it is the public order in which folded startups boot again. Neither is a hidden lottery: the boot order is on-chain once a batch is revealed, and we show it.
Boot order is public on purpose. It is DN404's first-in-first-out bank: a folded startup goes to the back, and the next balance to cross 1.0 receives the one at the front. We display that order rather than hide it, so a startup that folds is a race, not a lottery. Approvals are cleared on every id state change, fold, boot, transfer and survive, so an approval granted before a change does not carry through it.
Burning the token behind a startup
- The transaction
- survive(id) burns exactly one whole $DOTCOM from your balance and marks that id survived. You keep the NFT. Nothing is sent to us and nothing is escrowed.
- What changes
- The startup leaves the token accounting for good. It can no longer fold, it can never re-enter The Queue, and it is no longer backed by a tradeable token. The liquid supply falls by exactly 1.0 $DOTCOM per survive, while the total stays 5,555 units.
- What it earns
- From that moment the startup accrues a weighted share of the survivor leg of every swap, paid in WETH. Accrual is continuous; payment is a claim you send. The weighting is set out below, under how the payout reaches you.
- It is still an NFT
- A survived startup can be transferred and sold. The payouts follow the NFT, not the wallet that burned for it, so whoever holds it claims it.
- It is permanent
- The survived flag is never cleared. There is no unsurvive, no admin reversal, and no re-mint of the burned token.
How the payout reaches you
Survivors earn continuously from trading volume through a masterchef-style accrual. Anyone can pull the pot into the payout engine; poke(id) settles one startup, claim(ids) pays out in WETH to whoever owns the NFT at that moment. Rewards are weighted by round (Garage 1x up to Unicorn '99 5x), by Crash Day multipliers, and by the broker boost. Claims pay WETH only at launch. The claim-and-swap route into tokenized stocks is deferred: the route book ships unsealed and the engine's pointer is empty, so that path fails closed until the Safe seals a route book after launch.
Read this part carefully. The fee is generated by the liquid float and consumed by the survived set, so every survive moves one unit from the generating side to the consuming side. That is an equilibrium, not a flywheel. Per-startup rewards fall as more startups survive, and if nothing trades, nothing accrues.
3% of every swap, forever
One canonical $DOTCOM/WETH Uniswap v4 pool, one immutable hook, one fee: 3.00% of the WETH side of every swap, in both directions, forever. The four legs below are constants in the hook and are echoed by its on-chain describe() view. They are defined as shares of the fee, so the bps-of-volume column is exact at the permanent 3% and the same proportions hold at any other fee level.
Every swap pays 3% of the WETH side, split as above. The four legs are shares of the fee, so those proportions hold at any fee level. $STONKBROKER is the token of the STONK BROKERS collection; one NFT from that collection is a STONK BROKER, and holding one boosts survivor rewards, described under the broker boost below. This is a swap fee, not a transfer tax: moving $DOTCOM from one wallet to another pays nothing. It cannot be routed around. Only DotcomRouter may swap the pool, the pool's own LP fee is forced to zero, and if a protocol fee were ever turned on against this pool the swap reverts instead of cutting into the 3%.
The first 87 minutes
- The decay is arithmetic, not discretion: the fee starts at 9000 bps and falls 100 bps for each whole minute since The Bell, with a floor at the permanent 300 bps. Anyone can read the current number with currentFeeBps(yourAddress).
- The split does not change while the fee decays. Every leg stays the same share of whatever the fee is, so at minute 0 the survivor leg is 60% of volume and the creator leg is 4.5%.
- Wallets registered from the frozen Queue list are exempt and pay 3% from the first block. Registration is the one free transaction, gas only, described under The Queue above.
- Exact-output swaps are refused while the payer's fee is 50% or higher, which is minutes 0 through 40. They open at minute 41. Exact-input swaps work the whole time.
- The fee applies to the payer, decoded from the swap itself, not to the router and not to the recipient. Whoever pays is whoever is charged.
- The admin Safe can end the decay early with a one-way finalizeFee(). That can only move the fee down to the permanent 3%, never up, and after it the launch logic is dead.
Why it exists: a market that opens at a flat 3% hands the whole opening to whoever wins the first block. This one prices those minutes instead. Nobody is blocked and no address is treated as special. Anyone who wants the first fill can have it and pays the survivors for it, and 87 minutes later that advantage is gone permanently and everyone trades on the same 3%.
It has nothing to do with mint prices. The decay lives in the pool's hook and only exists after The Bell. The mint is a separate contract with fixed dollar tiers of $1 and $5, and it closes before trading opens. The two never overlap in time and share no constant. A 90% figure is never a price you pay to mint.
The Bell
The Bell is the one transaction that opens the market. The mint closes first, then The Bell rings and trading opens, and nothing can be minted after that. In that one transaction it seeds the canonical pool, starts the fee clock at 90%, freezes the metadata URIs, and unlocks transfers. The fee then falls one percentage point every minute until it reaches the permanent 3% at minute 87. Wallets registered from the frozen Queue list pay 3% from the first block. Whoever chooses to trade in those minutes pays the higher fee, and it splits exactly as the permanent fee does, so most of it reaches the survivors.
- Before The Bell there is no pool and no trading; after it there is nothing left to switch on.
- The same transaction revokes every pre-launch setup permission the deploy needed. After The Bell no address holds a bypass.
- The seeded position is full range and locked. The vault has no removal function, and the hook reverts every attempt to remove liquidity at pool level, so that position cannot be pulled by us or by anyone.
- The optional operator gate on NFT transfers is frozen at The Bell too. Whatever it is set to at that moment is what it stays.
Crash Days
Ten fixed dates a year, each tied to a real moment from the bubble. On each one a camp or a track earns a multiplier for a 24 hour window starting 00:00 UTC. The largest multiplier in the calendar is 2x. March 10, the NASDAQ peak, is the Bubble camp's day; October 9, the bottom, belongs to the Everything Store. The full calendar is fixed in the contract, recurs every year, and is shown on /crash-days.
- Multipliers apply to survived startups only, and only to what accrues inside the window. Nothing is retroactive.
- The live board at /crash-days shows today's multiplier per track and the countdown to the next date.
Hold a STONK BROKER and every startup you have survived earns 1.25x. Sell the STONK BROKER and anyone can permissionlessly reset you to 1x. STONK BROKERS is a separate collection by other people; we read it, we do not control it.
The wallet the X login creates
Wallets are provisioned by Turnkey. The same wallet is your Queue number, your minting account and your trading account; there is nothing else to connect.
- Where the key lives
- Turnkey generates and holds the private key inside secure hardware enclaves. It is never exposed to this site, to our servers, or to your browser. We cannot sign for you.
- No seed phrase
- There is nothing to write on paper and nothing to install. You sign in with X and the wallet is there, on Robinhood Chain, with a normal address.
- It is a normal EVM wallet
- It holds any token on this chain, trades anywhere on this chain, and works with anything that speaks Ethereum. Nothing about it is specific to this collection.
- Non-custodial
- We cannot move your assets, freeze them, or reverse a transaction. Neither can the admin Safe. That is a property of the contracts, not a policy we could change.
- Exportable
- You can export the key and import the wallet into other Ethereum wallet software. Do it early, while you still hold the login you created it with.
- Gas
- You need a small amount of ETH in the wallet to pay gas on Robinhood Chain, on top of the tier price when you mint.
Every fee, and who charges it
- Minting
- The tier price is the whole cost. There is no mint fee, no markup on the oracle rate, no charge for the reveal, and no subscription. You pay network gas, as with any transaction.
- Trading
- 3% of the WETH side of every swap in the canonical pool. It applies to every wallet equally once the launch decay ends at minute 87, buys and sells alike. During those 87 minutes it is higher for everyone except wallets registered from the frozen Queue list.
- Transfers
- Free. Sending $DOTCOM or a startup from one wallet to another pays no fee to anybody.
- Surviving and claiming
- No fee either way, beyond gas. Burning costs you a token, not a payment to us. Claims are paid in WETH with nothing deducted; sub-wei rounding stays in the payout engine, where no one can withdraw it.
- Secondary sales: 5%
- The collection declares a 5% royalty under ERC-2981, collection-wide, paid to the treasury Safe, one receiver fixed at deployment and never changeable. Be clear about what that is: royaltyInfo is a signal. Marketplaces that honor ERC-2981 collect it at sale time. No contract of ours intercepts a sale, takes a cut, or reverts an unpaid royalty.
- The gap in that royalty
- A pre-crash startup can change hands as a plain token transfer, without any marketplace. That path pays no royalty and cannot be made to. It is inherent to how DN404 works, and we would rather write it down than let you find it. A survived startup can only move through the NFT side, so it is covered by whatever gate is set.
- The operator gate
- Separate from the royalty, and often confused with it. It restricts which contracts may move a startup NFT. It is a transfer restriction, not a collector, it runs only on marketplace transfers, and its setting is frozen at The Bell. Limit Break's canonical validator has no code on this chain, so we deploy our own.
- Nothing can be added later
- The fee, the split and the royalty are constants in contracts with no proxy and no upgrade path. The Safe cannot raise any of them. describe() echoes the numbers on-chain so you never have to take this page's word for it.
Questions people actually ask
- Do I need a wallet, or ETH, before I start?
- You do not need a wallet. Signing in with X creates one for you. You do need ETH inside it before you transact: a small amount for gas on Robinhood Chain, plus the tier price when you mint. Signing The Queue itself costs nothing.
- What if I lose access to my X account?
- Your number is attached to a wallet address, and the frozen list is a list of addresses. Losing the X account loses you that route into the wallet, not the wallet itself, provided you exported it. Export it as soon as you have one. We cannot restore a login, and we cannot move a Queue number to a different address.
- Can I sell my spot in The Queue?
- No. There is no transfer function for a Queue position, and after the freeze the list cannot be changed by anyone. Selling the login means handing over the keys to a wallet, which is a different and worse thing.
- Is the $1 price guaranteed?
- No. $1 is the price of the first 555 units, one per wallet, sold first come to wallets in the frozen list. The Queue makes you eligible; it does not hold a unit for you. If those 555 are gone when you arrive, you mint at $5. The dollar price is also settled in ETH at the rate read inside your transaction, so the ETH amount is not fixed in advance.
- Can I pick which startup I get?
- No, and neither can we. The startup behind a unit is decided at reveal, from a seed committed before the mint opened combined with mint data that did not exist at that moment. Buying a specific startup after reveal is done on the secondary market, or by being the first balance to cross 1.0 when one folds.
- What happens if I do nothing after minting?
- You hold $DOTCOM and an equal number of startup NFTs. At your batch's reveal they become specific startups on their own; you do not have to claim a reveal. Nothing expires. You also earn nothing, because payouts go only to survived startups. Holding, selling and surviving all stay available indefinitely.
- What is the difference between the token and the NFT?
- They are two views of one thing. One whole $DOTCOM is one startup NFT, and your NFT count is your token balance rounded down. Let the balance fall below a whole token and your newest pre-crash startup folds into The Queue; cross back above and the next one in The Queue boots to you. Surviving cuts the link deliberately: the token is burned, the NFT stays, and it can never fold again.
- Why is the fee 90% at the start?
- Because the first minutes of a new market are worth something, and this is a public price for them rather than a private advantage. The minute-by-minute schedule is in the fee table above. The money does not go to us: the same split applies during the decay as after it. Wallets from the frozen Queue list pay 3% throughout. It has no connection to mint prices, which are $1 and $5 and are settled before trading opens.
- How do survivors actually get paid?
- In WETH, from trading fees, and never automatically. Fees accrue to a pot as swaps happen; anyone can pull that pot into the payout engine, which credits each survived startup by weight, and a claim pays whoever owns the NFT at that moment. Your pending balance and the claim button are on The Desk.
- Can a survive be undone, and can I still sell a survived startup?
- It can never be undone. The token is burned and the flag is never cleared. The NFT remains yours and can still be sold, and the payout stream follows it to the new owner.
- Can you take my startup, change the fee, or upgrade the contracts?
- No, no, and no. There is no forced-move power, no blacklist, no proxy and no upgrade path. The admin Safe is 2-of-3 and its complete list of powers is set out above: pause, unpause, a one-way fee finalize that can only end the decay at 3%, a codehash denylist, and one route pointer.
- Has this been audited?
- No. The contracts are not audited and no audit is scheduled. We intend to commission one if funding allows, and until a report is published on this page you should treat the contracts as unaudited. What you can check now: the contracts are verified and readable on the explorer, the money constants are echoed on-chain by describe(), and the risks are listed on this page without softening.
The 2-of-3 Safe, and its limits
The admin Safe CAN:
- Pause and unpause trading in an emergency.
- Finalize the fee early. That is one-way and can only end the launch decay at the locked 3%.
- Add known fee-dodging venues to a codehash denylist.
- Point the StockRouteBook pointer at the claim-and-swap route, once sealed.
The admin Safe CANNOT:
- Move, freeze, or claw back your tokens or startups. There is no forced-move power and no blacklist.
- Raise the fee, or change the 200/60/25/15 split. The money constants are immutable and echoed by describe().
- Upgrade any contract. There are no proxies and nothing is upgradeable.
- Withdraw the locked liquidity. The LP vault is one-way and every removal reverts at the pool.
- Touch the payout pot. It has no owner withdrawal at all, and rounding dust stays in the engine permanently.
- Act alone. The Safe is 2-of-3, and every limit above is enforced by code you can read on the explorer.
Contract addresses
Read live from ops/addresses for the chain this build targets, never hand-typed here, and linked through the one explorer helper. Open any of them and read the verified source.
Contract addresses publish here the moment the mainnet contracts go live, each one verifiable on the explorer. Nothing is deployed to mainnet yet.
Verify it yourself
Do not trust this page. Trust the chain. Here is how to read it.
- Open any contract below on the block explorer and read its verified source. The money constants and the fee split are echoed by the on-chain describe() view.
- Call currentFeeBps(yourAddress) on the hook. It returns the fee that wallet would pay right now, in bps of WETH volume.
- Confirm the pool's hook is the 3% hook listed here, and that DotcomRouter is the only address permitted to swap it.
- Check that WETH's symbol() is "WETH" and its codehash matches. Fake WETH and USDG clones exist on this chain, and the deploy scripts assert both before use.
- Verify your place in The Queue against the Merkle root: the full leaf list in position order is published to IPFS and linked here, so you can rebuild the root yourself.
- Check the reveal against its provenance hash. sha256 of assignment.json is pinned on-chain at deploy, so the assignment file cannot be swapped after the fact.
- Every explorer link on this site is an EIP-3091 Blockscout route built by one helper, never a hand-typed URL, so the host is always the sanctioned one for this chain.
Risks, in plain words
- Burning is permanent. The token is gone whether or not the market ever trades again.
- Rewards come only from trading volume. No trades, no rewards.
- Per-startup rewards shrink as more startups survive.
- The 3% applies to your sell as much as your buy, and in the first 87 minutes after The Bell the fee is far higher than 3% for wallets not registered from the frozen Queue list.
- Reveal depends on the operator revealing on time. If we do not, anyone can force it after the 72 hour deadline.
- A pre-crash startup can also move as a plain token transfer, outside any marketplace. That path pays no royalty.
- Claim-and-swap into tokenized stocks is deferred past launch. If it is switched on later, those stocks are issued by a third party, are not shares in your name, and are not available to US persons.
- This is experimental software and the contracts are not audited. We intend to commission an audit if funding allows, but none is scheduled, and you should treat the contracts as unaudited unless and until an audit report is published on this page. Never risk more than you can afford to lose completely.
Terms of service
Nature of rewards
Rewards are promotional distributions of protocol trading fees to participants who chose to burn a token. They are not dividends, not investment income, and confer no equity, profit share, or claim on any company. Holding, minting, or surviving a startup is not an investment and grants no expectation of profit from the efforts of others.
Eligibility & jurisdiction
dotcom.systems is not available to US persons or to persons located in restricted jurisdictions. By using the site you attest that you are not a US person and are not located in a restricted jurisdiction. The contracts are permissionless; the frontend is the compliance surface and may block access by region.
No custody, no reversals
The protocol is non-custodial. No party can move, freeze, or recover your assets, and no transaction can be reversed. Burning to survive is permanent and has no undo. You are solely responsible for your keys, your transactions, and any tax consequences.
Experimental software, no warranty
The software is provided "as is", without warranty of any kind, and has not been audited before launch. To the maximum extent permitted by law, the creators disclaim all liability for any loss arising from use of, or inability to use, the protocol or the site. Never risk more than you can afford to lose completely.
Third-party assets
Tokenized equities reachable through claim-and-swap are issued and administered by third parties, are not shares registered in your name, and carry their own terms and restrictions. dotcom.systems does not issue, endorse, or guarantee them.
Privacy
Joining The Queue records your wallet address, your Turnkey account id, and the version of these terms you agreed to. No email address and no X handle are stored. Google Analytics counts page views on every page of this site; no wallet address or other wallet data is sent to it.