Live market state
The forge records pressure, not opinion.
Drawdown is collapse. Liquidity silence is famine. Holder growth is migration. Recovery is reconstruction light.
Civilization heartbeat
A quiet readout of the awake civilization, taken from chain state.
The capacity model
Buying gives you the right to awaken. Awakening is your own deliberate act.
An unsolicited RELICS transfer cannot force a dormant Relic to materialize. A receive of $RELICS — including a swap output — performs no ERC-721 work of any kind. There is exactly one mint site in the contract, it sits inside awaken(), and its recipient is always the caller. A dormant Relic identity preserves its DNA and history but is not an active ERC-721 until an eligible holder explicitly awakens it.
You buy $RELICS
The swap settles like any ERC-20 swap and your fungible balance arrives immediately. No Relic is minted in that transaction. Buys materialise zero Relics — that is the design, not a delay.
Your latent capacity rises
Each whole RELICS unit establishes capacity for one active Relic. Latent capacity is derived from your balance and is never stored anywhere. It is the right to awaken a Relic, held by you and spendable only by you. It is not an owned NFT and should never be counted as one.
You awaken, in a second explicit transaction
Read nextAwakening(you) to see exactly which identities you will receive, then call awaken with them. Up to eight Relics may awaken through an explicitly authorized acquisition flow; additional capacity remains latent until you elect to awaken it. Call again for the next batch.
They are ordinary ERC-721 tokens
From that moment the Relics are transferable, listable, and visible on any marketplace, with no wrapping step and no cost to become visible. balanceOf and ownerOf are OpenZeppelin's, unmodified.
Ids are not chosen by you and not chosen by the contract either. The dormancy pool is a set drawn at its minimum, so nobody can steer which identity surfaces next. Because the draw is public and deterministic, awaken() makes you restate it: you name the identities you will receive, and a pool head that changed between your preview and your transaction cannot hand you one you did not name. It gives you fewer than you asked for, or — below the floor you set — nothing at all.
An earlier all-or-nothing form of awaken() reverted every pending awakening whenever the head moved — including from an ordinary holder’s market sell, with no attacker involved. That is fixed. awaken() now carries a floor you set, and materialises the longest run of the draw you actually named; it only reverts below that floor, and a refused call writes nothing at all. Independently re-verified by an auditor who did not write the change.
One consequence is on us, not on the contract: an interface that only re-reads the preview can still be stalled, because the preview cannot show you the identity that is blocking you. This one reads the blocked identity out of the revert and offers it to you by name — never adding it to your batch without you saying so. Any interface that does not do this stays stalled, and no change to the contract can fix that for it.
Genesis liquidity disclosure
One position. Nothing beneath it, and nothing above it.
The entire 10,000-unit supply enters the canonical pool as one Uniswap v4 position, funded with $RELICS alone and no WETH at all. It is uncapped on the way up — there is no ceiling a buyer can exhaust and no price at which the civilization stops selling. On the way down there is no seeded bid, because there cannot be a reachable one.
All 10,000 $RELICS start inside the position, so the launch tick is the $RELICS-reserve maximum and therefore the pool’s price minimum. The 0.30% fee is skimmed off both legs, so a full round trip returns the position with strictly fewer $RELICS than it started with — that is, at a price strictly above launch. WETH placed below the launch tick would be a bid that can never be hit. An earlier layout seeded about 0.25 WETH beneath launch; a mainnet-fork test proved 100% of it was unreachable, so it was removed rather than re-labelled.
From buyers. As price rises, each buy leaves WETH inside the position at the tick it filled at, and that WETH accumulates above launch — which is exactly where later sellers can reach it. The depth a seller can reach is the depth buyers have put in, at the prices they put it in at. Stated plainly: there is no protocol-provided bid, this is not a floor, and it is not a guarantee of exit. Early sellers into a thin pool will move price.
The upper bound is pinned to the deepest tick Uniswap v4 will accept, so no amount of buying can consume the ask and push price discovery off the pool. A bounded 64x wall is bought out by about 20 WETH; the disclosed trade-off is that an uncapped position is thinner near launch. Ticks are derived at deploy time from the mined token address, never hardcoded, which is why both orderings are published. Any USD figure elsewhere on this site assumes a labelled $2,400/ETH reference and exists for arithmetic only — no price feed, no quote, no forecast.
Marketplace orders
What is claimed, and what is not.
An unrelated account cannot make a dormant Relic active for another address. There is one mint site, inside _forge, whose sole caller is awaken, whose recipient is always msg.sender and which has no recipient parameter. An independent auditor enumerated every path by hand and verified it against real Seaport, the real OpenSea conduit, the real UniversalRouter and the real v4 PoolManager, with the victim named as the router’s output recipient. This is a structural argument, not a cost argument.
It is not claimed that a third party cannot hand-deliver an already-live Relic it owns by an ordinary ERC-721 transfer — that is the universal ERC-721 shape. It is not claimed that an owner cannot reactivate their own abandoned order. And stale orders are not harmless simply because exploiting one costs something. If you list a Relic and stop watching it, cancel the order.
Cancel orders you have abandoned, prefer short end times, and prefer zone-restricted orders; incrementCounter() invalidates every open order you have. Integrators: isApprovedForAll diverges from transfer authority in this collection — a per-token dormancy seal withholds operator authority granted before a Relic went dormant under the same owner. Read isAuthorizedForRelic(spender, tokenId), which is the exact predicate the transfer path enforces.
Supply and entombment
Fixed supply, and what sits beyond reach.
Total supply is fixed at exactly 10,000 $RELICS. Entombed $RELICS are economically inaccessible forever, but they remain in ERC-20 totalSupply — the token has no burn path, so supply never falls. Entombed, never burned. The genesis mint left 43 wei of rounding dust, and that dust is the only $RELICS at the entombment address.
What is fixed is fixed. Token and hook ownership are renounced — both owner() addresses read address(0) — so there is no admin, no upgrade path, no metadata override and no pool rebinding. The whole 10,000-unit supply entered one single-sided position with zero seeded WETH.
No Relic ever awakens at the tomb. The entombment address is permanently excluded from the whole-unit layer, so it cannot hold a Relic by any path. A holder who sends whole $RELICS units to the tomb does not move Relics into it — their Relics are retired to the dormancy pool with real burn events, keeping their DNA, and those ids reawaken unchanged for whoever draws them next.
These readings are derived from chain state on request — the balances held at the entombment address and the two supplies. No counter inside the protocol reports them, and none was added. Where a reading is unavailable, or where no on-chain record exists at all, the ledger stays empty rather than showing a zero.
Canonical infrastructure record
The civilization is legible through public addresses, not trust.
These are the live mainnet records. They stay quiet because infrastructure should feel permanent, not promotional.
RELICS/WETH v4
The public entry point is the canonical pool record first, swap interface second.
Open Uniswap swapPressure map
The protocol speaks in market mechanics. The archive records civilization pressure.
Impact mark
buy/sell flow becomes pressure direction and market seed movement
Weather system
observed liquidity additions deepen the civic field; long gaps read as drought
Schism
symmetry breaks, containment destabilizes, scar intensity rises
Collapse
fractures, void tears, missing geometry, burial damage
Reconstruction
repair light appears but does not erase old wounds
Migration
civilization overlays, glyph population, archive density
Archive translation table
Market state becomes historical condition.
Collapse
void tear, archive loss, missing geometry
Reconstruction
repair light, sealed fractures, civic return
Famine
few observed liquidity additions: burial palettes, dim signal, silence
Expansion
public engines, civic infrastructure, brightened strata
Schism
broken symmetry, unstable containment, reversed scars
Migration
glyph proliferation, civic population, archive density
tokenURI / SVG mutation record
The same artifact record changes when the market changes.
RELICS does not refresh from a server. Base64 JSON and embedded base64 SVG are recomputed from on-chain state; these hash transitions are the archaeological record.
The first four slots held rehearsal hashes from a superseded fee tier and were retired with it. Current state is the live row, read from mainnet tokenURI.
The object exists before market pressure.
Depth changes the artifact weather.
Directional flow mutates global market memory.
Migration changes civilization overlays.
Read live from mainnet tokenURI.
Mutation chamber
Scrub the market. Watch the vessel remember.
This simulator is not canonical state. It is a viewing instrument for the archive grammar: drawdown becomes collapse, liquidity becomes civic depth, holders become migration.