The first reflective living on-chain objects
Every Specula is drawn twice in the same image. The body comes from DNA fixed at silvering and never changes. The reflection beneath it is redrawn from the live $SPEC/ETH market every time you look.
They never match. That gap is the artwork. A mirror does not have opinions about what stands in front of it — it only reports. One swap re-renders every object in the collection at once, and nobody signs off on the result.
Fully on-chain pixel art. No server, no metadata host, no renderer key. The image is
computed inside tokenURI at the moment you call it.
The mechanism
The hook bound to the SPEC/ETH pool is purely observational — permissions
are afterInitialize | afterSwap, flags 0x1040, no return delta, no
fee, no liquidity hook. It cannot alter, tax, or refuse a swap. It records, and that is all
it is able to do.
From what it records, one number does the work. Lustre is net flow normalised against total volume into a range of 0 to 10,000, with 5,000 as dead neutral. Because it is a ratio rather than a size, no single trade — at any size — can push a reflection past its bounds. Buying polishes the surface. Selling tarnishes it to copper.
What writes an object
These are not stages. They act at the same time, from four different directions, and the image you get is where they meet.
Hue and form, drawn from the object’s own entropy the moment it is first silvered. It never changes again — not for the owner, not for the market, not for anyone.
grind() advances the optical surface one step: Raw, Ground, Polished, Figured,
Optical. The frame sharpens and the void behind it cools. Irreversible.
Lustre colours the reflection, strain fractures the glass, temper raises shards along the line, volatility widens the ripple. Read live at render time.
Every swap the object was awake for, counted — and kept across going dark and being re-silvered. It draws age rings. There is no way to buy one, only to have been there.
How to hold one
This is not ERC-404. The token and the objects are two separate, standard contracts. The only
link between them is a backing rule: an account may hold at most
floor(balance / 1e18) awake objects. Buying $SPEC does no ERC-721 work at all
— it raises your latent capacity and nothing else.
The only mint site. The recipient is always msg.sender — there is no
recipient parameter, so nobody can force an object into your wallet through a router. You
name the ids you expect; if the draw head moved, the call reverts and tells you which id
blocked you.
Your one lever. Push the optical figure a step further and it stays there. The market never touches this axis, and neither does anyone else.
Sell below what you hold and the excess retires inside that same transfer — a real burn. DNA, figure and accumulated witness all survive it. The object re-silvers unchanged for whoever draws it next, still carrying everything it saw.
The dark pool is drawn lowest id first, so nobody can steer which object surfaces. An object going dark also stamps a seal that withdraws operator authority granted before it left — a stale marketplace order for a recycled id cannot fill.
Specimens
Rendered by the same code that runs on chain, at twelve different points across DNA, figure, lustre, strain, temper and witness. Watch the reflection: it is the only part that the market is allowed to write.
The record
Anything not listed here is not SPECULA. Verify against this table before you trade, and treat any contract claiming the name that does not appear below as hostile.
| Contract | Role | Address |
|---|---|---|
| SpecToken | ERC-20, backing | awaiting mainnet |
| SpecHook | v4 hook, observational | awaiting mainnet |
| Specula | ERC-721, the objects | awaiting mainnet |
| SpeculaRenderer | on-chain art | awaiting mainnet |
| Pool | SPEC / ETH, Uniswap v4 | awaiting mainnet |