The law of the wall.
Mural is one wall of pixels that lives in a contract. Everything below is either a rule the contract enforces or a limit we are telling you about. Nothing is a promise.
$MURAL launches on Robinhood Chain (4663), directly in its own Uniswap v4 pool. The contract address is published here and on X, nowhere else.
1 · The wall
The wall is a grid of cells, its width and height fixed at deploy. Each cell holds one colour from a fixed palette, engraved at deploy, the same for every wall. The whole state lives on-chain and can be read by anyone in a single call: there is no server between you and the wall.
A wall starts blank. It stays open until its hanging block, which is known in advance, and then it is hung and a new blank wall begins.
2 · Painting
One call: a cell, a colour. The contract computes the current price of that cell, takes it in $MURAL, burns it in the same transaction, writes the colour, raises the cell's heat by one and records you as its last painter.
Anyone can paint over any cell, at any time the wall is open, including a cell painted a second ago. The only defence a pixel has is its price.
3 · The price
Every cell has a heat: the number of times it has been painted on the current wall. The price of a cell is a base price multiplied by a rising function of its heat, both set at deploy. A cell nobody wants is close to free; a cell everyone fights over gets expensive, and every coat paid for is burned.
Heat resets to zero when the wall is hung. Every new wall starts calm.
4 · The cooldown
Between two strokes from the same address, a minimum number of blocks has to pass, set at deploy. It is short enough not to slow a person down, and it stops a script from repainting a whole line in one block. The price does the rest.
5 · Hanging
At the hanging block, anyone can call hang(). The contract freezes the state, records its hash, publishes the count of cells each painter held at that moment, and only then wipes the wall. The image of a hung wall is generated on-chain, on demand, from the frozen state: no file is stored, no server holds a copy that could differ.
If nobody calls hang() at the block, the wall simply stays open and strokes keep counting until someone does. A late call changes the date, never the rule.
6 · The gallery
Every hung wall is addressable: its number, its hash, its image, its credits. The gallery is the list of them, readable without any server, forever. There is no pot behind a wall and no prize for painting it. What you get is a pixel while it lasts, a place on the hung wall, and a name in the credits.
7 · Invariants
These hold on every block. If any of them fails, the contract is wrong, not the rule.
Every $MURAL received by the wall is burned in the same transaction.
A cell is written only if its current price has been paid.
Hanging freezes a state whose hash is published before the wipe; no cell changes between the two.
The image of a hung wall can be regenerated by anyone from the frozen state; no served image is the reference.
The buy-and-burn contract has one function, and it burns.
8 · What can go wrong
The content
A public wall receives whatever people paint, including things that are hateful, fraudulent or illegal. The contract moderates nothing and cannot. This site can apply a display mask on the client side, a public and versioned list of blurred zones, without ever touching the state. The wall itself stays what people made of it.
The scripts
The cooldown and the price make a bot war expensive, not impossible. A large holder can own a corner of the wall for a while; the rest of the wall stays open. That is the game.
The empty wall
If nobody paints, the wall stays blank and the hung wall is blank too. There is no mechanical fix, and a blank hung wall is shown as a blank hung wall.
The missed hanging
Nobody is obliged to call hang(). Until someone does, the wall stays open past its block. The rule does not change, only the date.
9 · Parameters
Every parameter is a constant of the deployment. Their values are published on this page at launch, and they never change afterward.
| Parameter | What it does | Value |
|---|---|---|
| Wall size | Width and height of the grid, in cells | set at deploy |
| Palette | The fixed set of colours a cell can take | set at deploy |
| Base price | Price of a cell at heat zero, in $MURAL | set at deploy |
| Heat curve | How the price rises with each repaint | set at deploy |
| Cooldown | Minimum blocks between two strokes from one address | set at deploy |
| Hanging period | Blocks between two hangings | set at deploy |
| Pool toll | Share of every swap sent to the buy-and-burn contract | set at deploy |
| Quote asset | USDG or WETH | set at deploy |
| Launch decay | How fast the extra launch toll falls to zero over the first blocks | set at deploy |
| $MURAL token | Address published at launch | set at deploy |
10 · Chain and venue
Mural runs on Robinhood Chain, chain id 4663 (0x1237), an Ethereum L2 on the Arbitrum Orbit stack. Gas is paid in ETH, at a gas price around 0.02 gwei on this chain, which is what makes a wall of pixels possible at all: a stroke is one storage write, and on this chain a storage write costs a fraction of a cent.
| Chain | Robinhood Chain · 4663 · 0x1237 | |
| RPC | https://rpc.mainnet.chain.robinhood.com | |
| Explorer | robinhoodchain.blockscout.com | |
| Uniswap v4 PoolManager | 0x8366a39CC670B4001A1121B8F6A443A643e40951 | |
| $MURAL pool | Own pool on the PoolManager, quoted in USDG or WETH, with the toll hook attached |
The hook
The Mural hook does one thing: after every swap, it sends a fixed share of the swap to the buy-and-burn contract, which buys $MURAL on the pool and burns it. The hook keeps no data per address and has no idea who is trading. Painting and hanging are direct calls to the wall contract, not swaps.
11 · Launch
No launchpad. $MURAL launches directly in its own Uniswap v4 pool on Robinhood Chain. The initial liquidity position belongs to the protocol and is locked in a locker with no withdraw function, verifiable on the explorer; the fees it collects follow the same path as the toll. During the first blocks, an extra launch toll decays to zero, so a snipe pays full price.
12 · FAQ
Where does the $MURAL I paint with go?
Nowhere. It is burned in the transaction that paints the cell. Nobody receives it.
Can someone paint over my pixel?
Yes, at any time the wall is open, by paying its current price. Every coat raises the price of the next one.
Is there a prize?
No. There is no pot and no payout. A wall ends hung in the gallery, with the credits of its painters, and that is all the contract knows.
Who decides when a wall is hung?
The hanging block is fixed in advance. At that block, anyone can call hang(). Nobody can do it earlier.
Can the team change the price curve or the palette?
No. Every parameter is a constant of the deployment. There is no owner and no switch.
Is there a team allocation?
No. Zero, and no fee flows to any team address.
What if someone paints something awful?
The contract cannot stop it and will not hide it. This site may blur zones through a public, versioned display mask, and says so when it does. The state on-chain is untouched.
Where is the contract address published?
On this site and on X, nowhere else. Any other address is fake.
Mural