Self-review · what we checked · what is pending
Our Own Audit Notes
An honest accounting of the review we have done, the bugs we found and fixed, and what a third-party audit still needs to cover.
Status: self-reviewed, NOT yet third-party audited.
This page is our own honest accounting of the review we've done and what we haven't. Everything
here is experimental and unaudited by an independent firm. A formal external audit is pending
before any mainnet deploy. Interact at your own risk. Not a security assurance, not financial advice.
Architecture at launch: one Liquid Edition + one lens contract.
The project ships as a Liquid Edition — one ERC-20 + a renderer+721 lens contract where
every card is a render keyed by id. 33 hero 1/1s mint at launch; the 67 field cards are render-only
(unminted). There is no ERC-1155 and no separate game contract at launch — wagers, votes, and
field-card pulls run site-side, with real pack burns + hero-lens mints as the on-chain actions.
Authoritative design: docs/ECONOMIC-FLOW.md.
01What we reviewed, and how
- The launch surface is deliberately tiny. One ERC-20 (deployed by SuperRare's audited factory
via the Rare CLI — not our code) + one renderer+721 lens contract with a tiny mint footprint (33 hero 1/1s).
The less we deploy, the less there is to get wrong.
- Reproducible economics. Every tokenomics number is derived by
scripts/token-model.mjs
— run it and re-derive the price schedule, slippage, allotments, and lifetime burn yourself.
- Adversarial modeling pass. The tokenomics were pressure-tested by an adversarial pass — multiple
independent models, each checked by a skeptic — to catch hand-wavy claims and hidden assumptions.
- SuperRare Sepolia audit. A testnet rehearsal drew a five-item review from SuperRare; our
point-by-point reply is in
docs/AUDIT-REPLY.md. Highlights below.
02Things we found and fixed (in the open)
- The burn schedule overflowed the cap. An early card-retirement schedule totalled 4.36M burn
against a 3.03M mint-once cap — impossible. Fixed by removing the mechanic: v2.2 cut forced card
retirement / ash entirely. The burn is now pure token deflation (⅔ of the cap, ~2.02M), and the
deck survives. The only rule left is the trivial Σ burns ≤ cap.
- Mint/burn assumption, corrected. We'd assumed burns re-mint on the next buy. SuperRare confirmed
the opposite — minted once, burns permanent. The whole model was rebuilt on that (3× contraction).
- The lens standard. We'd sketched a custom ERC-1155. The cohort docs are clear: lenses are
ERC-721. Fixed: every card is a render-by-id lens on one renderer+721 contract — 33 minted,
67 render-only, Lovebeing a holder lens — a tiny mint footprint, no 1155.
- Renderer display bugs. The render read 100% "circulating" and 0 per-RARE; fixed to read
BURNED % (
max − total) and a 2-dp per-RARE value in contracts/UR3030RenderPrototype.sol
(re-callable setRenderContract, no token redeploy).
- A ~100× pricing error in an early doc. A stale peg implied a ~$0.001 pack. Fixed: the peg is
~1 RARE/token; the pack is a ~350-token bundle ≈ $7.
- Over-claimed "supply only goes down." Fixed: the docs now state plainly that net supply =
buys − burns (sign indeterminate short-term); deflation is pressure, and over the deck's life burns dominate.
03Invariants we designed for (launch)
Mint-oncewhole supply minted into the pool at launch; burns are permanent, never re-mint
Un-pullable reserveRARE lives in the v4 pool, not a yankable LP; sells walk the curve
No fee walletevery on-chain spend is a burn of the one token — nothing is routed anywhere
Tiny mint footprint33 hero 1/1s at launch; the deck is lenses, not a flood of editions
Full-burn packsa rip burns 100% — no slice to any pool or wallet
Cards surviveno forced retirement/ash; scarcity is votes + dwindling packs + compression
04What is still pending before mainnet
- Independent third-party security audit of the renderer+721 lens contract — not yet performed.
(The ERC-20 + curve come from SuperRare's protocol; the render/lens is ours.)
- Curve calibration — open at ~1 RARE/token on the 3.03M supply (with SuperRare).
- Lens setup with SuperRare — does the assisted 721 setup support render-by-id across 100 card-lenses
(33 minted, 67 render-only), or do we deploy our own combined renderer+721 lens contract via the CLI?
- Mint mechanism — a claim/voucher redeemer for the 11 gacha lenses (pack burn) and the 22 earned
lenses (signed game vouchers).
- Full Sepolia dress rehearsal — deploy, wire the render, run a mock season: rips (buy+burn), a
hero-lens mint, and watch the burn meter climb in the render.
05Verify us yourself
- Run the model —
node scripts/token-model.mjs reproduces every number on the Tokenomics page.
- Watch the chain — packs and conviction are burn txs on the one token; hero-lens mints are wallet-signed;
getMarketState() is live.
- Read the design —
docs/ECONOMIC-FLOW.md (canonical) + docs/AUDIT-REPLY.md (the SuperRare reply).
- Read the render fix —
contracts/UR3030RenderPrototype.sol (BURNED %, per-RARE).
The honest bottom line.
We've been transparent about what we checked and what we didn't. Self-review and a clean compile are
not a substitute for a professional audit. Treat $UR3030 as experimental software that can lose your
money. NFA — see the whitepaper.
NFA · all memes are memes. $UR3030 is an experimental, volatile
collectible
game token — not an investment, not a security, no promise of value, and it can go
to zero. The cards are art, parody, and commentary. Nothing here is financial, legal, or tax advice.
Do your own research. Full terms on the
whitepaper.