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.

7 · Invariants

These hold on every block. If any of them fails, the contract is wrong, not the rule.

I1

Every $MURAL received by the wall is burned in the same transaction.

I2

A cell is written only if its current price has been paid.

I3

Hanging freezes a state whose hash is published before the wipe; no cell changes between the two.

I4

The image of a hung wall can be regenerated by anyone from the frozen state; no served image is the reference.

I5

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.

ParameterWhat it doesValue
Wall sizeWidth and height of the grid, in cellsset at deploy
PaletteThe fixed set of colours a cell can takeset at deploy
Base pricePrice of a cell at heat zero, in $MURALset at deploy
Heat curveHow the price rises with each repaintset at deploy
CooldownMinimum blocks between two strokes from one addressset at deploy
Hanging periodBlocks between two hangingsset at deploy
Pool tollShare of every swap sent to the buy-and-burn contractset at deploy
Quote assetUSDG or WETHset at deploy
Launch decayHow fast the extra launch toll falls to zero over the first blocksset at deploy
$MURAL tokenAddress published at launchset 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.

ChainRobinhood Chain · 4663 · 0x1237
RPChttps://rpc.mainnet.chain.robinhood.com
Explorerrobinhoodchain.blockscout.com
Uniswap v4 PoolManager0x8366a39CC670B4001A1121B8F6A443A643e40951
$MURAL poolOwn 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.