A transparent launch flow with fixed parameters and observable on-chain events. Inspect the mechanics before you interact.
2% protocol fee · opens at 21 ETH fully diluted · 0.15 ETH per masonry event · no owner · no mint · no pause · no blacklist
Structure preview unavailable on this device
Eligible trading activity feeds the hook. Once the threshold is reached, anyone can trigger the next masonry event.
"Eligible" is exact, not vague, and it now means every swap: both directions, both exactness modes. Exact-output sells were uncharged until 2026-07-30. A router quoting one sold for free, which was a complete opt-out rather than an edge case. The fee is taken by raising the requested output by the fee and keeping the surplus, so the seller still receives exactly the ETH they asked for and the pot stays denominated in ETH.
FEE_BPS = 200pot += feelayBrick()
Once the hook balance reaches 0.15 ETH, any address may trigger the event. The caller
receives the configured execution reward.
Caller reward · 0.0018 ETH 1.2% of the threshold
BRICK_THRESHOLD = 0.15 etheremit BrickLaid(idx, mason, …)Each masonry event appends a record: block, the address that triggered it, the ETH assigned to liquidity, and the BRICK destroyed. The record is append-only.
The address that triggers an event is written into that brick permanently, and a
soulbound counter increments against it: bricksLaidBy[].
It cannot be moved, sold or reassigned. Hover any stone above to light every brick
that address laid.
There is no privileged caller. Once the pot reaches the threshold, any address may call the function and receives a 1.2% execution reward of 0.0018 ETH, against roughly 465,000 gas, which pays for itself up to about 3.9 gwei. Above that the team's own keeper is the backstop.
Masonry history renders here once deployed.
Every BRICK holder is represented in the monument. Your brick's area reflects your current BRICK balance relative to total supply. Split a balance across multiple wallets and the total represented area does not increase.
Connect your wallet to highlight your brick.
Live, balance-proportional visual representation. Updates when you buy, sell, transfer, or split BRICK across wallets. Not permanent.
Permanent monument growth. The monument grows by one structural brick when layBrick() is successfully triggered. It never shrinks.
The holder wall above is a visual representation of current balances. Drawing your brick there does not mint anything, create a separate token, grant governance rights, or change the masonry accounting. It is a picture of who holds what, right now. The collection in §02 is the separate thing that is minted, and it is minted from masonry events, not from balances.
Every masonry event is an object. The hook records the block, the mason, the ETH locked into liquidity and the BRICK destroyed; the collection mints that record as a fully on-chain brick. No server, no IPFS, no external dependency. The image is generated by a contract and read straight off the chain.
The fire is read off the BRICK that event destroyed. The protocol spends a near-fixed amount of ETH on each buy-and-burn, so the tonnage it buys falls as the price rises. An early brick is coarse and heavy, a late one dense and small. A brick carries the market it was made in. Scarcity comes out of history, not a rarity table.
When the quarry’s miners claim the burn slice, no clay is cut. Those bricks are struck through and unfired, and they exist only because somebody chose to destroy their own BRICK into that epoch.
A lattice glyph walked from the mason’s address, struck into the frog: the recessed panel a brick is moulded with and stamped in. One per hand, and never chosen by the person carving it. Anyone may pay the gas to mint a brick; it goes to its mason.
Specimen renders · no masonry event has happened yet
Bricks laid per address:
bricksLaidBy[], soulbound and monotonic
Nothing below is a promise. Every row is either enforced by code you can read or it is not, and the right-hand column is how you check rather than take our word.
Brick.sol has no Ownable, no onlyOwner, no rolesno mint function exists; supply fixed at 1,000,000no proxy, no delegatecall, no implementation slotFEE_BPS is a constant, with no setter on the hookwhole supply enters the pool at launch; no vesting contractOPS_BPS, paid in ETH to one immutable addressbeforeRemoveLiquidity reverts for every caller, deployer includedboth one-shot, both inert after launch, neither moves fundsno pause modifier, no transfer hook on the tokenin-house review complete, published at deploymentEvery step below was executed against the real Uniswap PoolManager on a fork of Ethereum mainnet: real transactions, real gas, real reverts where they belong. It is not a plan. It is a receipt for a dry run.
Full deploy executed against the canonical Uniswap PoolManager
0x0000…8A90 on a fork of Ethereum mainnet, block 25,644,824. Real
transactions, real gas. Not a simulation, and not yet mainnet.
| Deploy $BRICK | 0x1584a2fb…61fcb0 | 547,576 | OK |
| Mine + deploy hook | 0xd36b8fc1…431317 | 4,888,528 | OK |
| Initialise pool | 0x2387f813…2d0832 | 51,276 | OK |
| Bind pool | 0x17aade89…e796b1 | 114,536 | OK |
| Fund hook with supply | 0x35dc1426…b8e537 | 46,826 | OK |
| Seed founding liquidity | 0xb2c52242…f66d26 | 304,515 | OK |
The last row is the one that matters most and it is the one we cannot tick. Treat everything on this page as self-attested until the source and the review are public.
You mine by destroying BRICK. The tokens go to the grave and never come back, and in the same transaction circulating supply falls, and that is the only input to the accounting ratio this protocol is built on. There is nothing to unstake.
Each epoch's miners split 27% of one masonry pot, pro-rata to the BRICK they destroyed. That ETH was collected from real trades. No supply is minted to pay it, no schedule halves it, and no miner is paid out of another miner's loss.
An epoch is paid by the brick after the one that closes it. The delay is the point: the pot is public and anyone can trigger masonry, so without it a large holder could burn at the last second and take a slice they knew the size of.
0x…dEaD, where destroyed
BRICK goes. There is no path back, for anyone, including the protocol.Every miner in the open epoch holds a slab of it, sized by the BRICK they destroyed. When the next brick is laid, that course settles and its ETH becomes claimable.
Pull-based, and it never expires. An epoch you never got round to claiming is still claimable in full a year later. The contract has no sweep and no deadline.
The 27% runs the original buy-and-burn: the protocol buys BRICK from the pool and sends it to the grave. An epoch with no miners behaves exactly as the protocol did before the quarry existed.
Payout is capped at three times the pool-price value of the BRICK destroyed, priced when the epoch settles rather than when you burned. A lower price at settlement means a lower ceiling. Whatever the cap declines goes to the same buy-and-burn, and destroying one BRICK cannot capture a whole slice.
| Epoch | Destroyed | Miners | Paid | Rate / 1k | Your claim |
|---|---|---|---|---|---|
| No epochs have settled. Mining begins when the pool does. | |||||
Mining does not mint a token, an NFT or a position. It grants no governance rights, and it is not a yield product.
What an epoch pays depends on two things you do not control: how much the pool traded, and how much BRICK everyone else destroyed alongside you.
So mining can lose money. In the worst case it returns nothing at all. An epoch that never settles never pays, and the burn is not reversed to compensate.
The BRICK is gone either way.
1,000,000 BRICK, minted once at deployment. No owner, no mint function, no blacklist, no pause, no upgrade path.
2% of the WETH side of a trade in the protocol pool, collected by the hook and paid out as ETH. Charged on every swap in the pool, in both directions and both exactness modes. A hook governs the single pool it is bound to, not the token. See below.
At 0.15 ETH collected, any address can call layBrick() to trigger a masonry event and receives a 1.2% execution reward. Each event processes one threshold. Because the fee is 2% of the ETH side, that threshold is roughly 7.5 ETH of trading through the protocol pool per brick. That is the honest way to read the constant, since it is what sets whether bricks arrive hourly or weekly.
Eligible swaps pay a 2% fee on the ETH side. Fees accumulate inside the hook until the balance
reaches 0.15 ETH, about 7.5 ETH of trading through the pool. Any address can call
layBrick() and receive a 0.0018 ETH execution reward.
The remaining balance is processed by the fixed allocation rules below. Nothing forces that
volume to exist: the protocol builds at exactly the rate the pool is used, and at no volume it
does not build at all.
| Parameter | Value |
|---|---|
| Execution function | layBrick() |
| Fee applies to | Every swap in the protocol pool, both directions and both exactness modes |
| Fee can change | No. FEE_BPS is a constant with no setter. |
| Threshold | 0.15 ETH |
| Caller reward | 0.0018 ETH (1.2% of the threshold) |
| Chain | Ethereum mainnet · Uniswap v4 |
| Pair | WETH / BRICK. An ERC-20 leg, so explorers and aggregators index the pool correctly |
Nearly two thirds of every pot, 62.5%, is spent on the token itself: liquidity that cannot be removed, and supply destruction. The remainder funds operations, and the team holds zero supply.
Allocation percentages describe the distribution of each 0.15 ETH pot at the moment a masonry event executes. They are fixed constants in the contract and total 100%.
Cumulative ETH credited to permanent liquidity, divided by circulating supply. Credited ETH only rises and supply only falls, so this figure cannot decrease. It is an accounting ratio, not a redemption right. No holder can exchange BRICK for that ETH, because it sits in a position nobody can remove. The contract calls it impliedLiquidityPriceWei() and not a floor, deliberately.
What the position actually holds right now. The LP is full-range, so its composition shifts with price. It is not the same number as the one above.
What the pool will trade at. Set by supply and demand. Nothing in the contract sets, defends, or targets it.
Two, both enforced in code: liquidity added by the hook cannot be removed by any address, and burned supply cannot return. Everything else is a consequence, not a promise.
What BRICK does not do, and what is still open
1,000,000 BRICK was minted once. The token has no owner, mint function, blacklist, pause function, or upgrade path.
A 2% fee on defined ETH/BRICK swap types builds the masonry pot.
Once the threshold is reached, any address can call layBrick(). Each event processes one threshold.
Liquidity added by the hook cannot be removed, and burned BRICK cannot return to circulation.
The accounting floor is a transparent on-chain metric: cumulative ETH credited to permanent liquidity divided by circulating supply.
The in-house adversarial review is complete. It has not been published yet, and no independent third-party audit has been done.
| Item | State |
|---|---|
| Deployment | Not deployed. No token, pool, bricks or on-chain history exist yet. |
| Token address | Does not exist yet |
| Hook address | Does not exist yet |
| Chain | Ethereum mainnet · Uniswap v4 |
| Pair | WETH / BRICK. An ERC-20 leg, so explorers and aggregators index the pool correctly |
| Supply | 1,000,000 BRICK, fixed at deployment |
| Opening valuation | The whole supply enters the pool at a 21 ETH fully-diluted valuation, roughly $40,000 at $1,917/ETH. The launch is single-sided: the pool opens holding every BRICK and no ETH, so no capital is committed at launch and nothing is bought. Buyers walk the price up through the founding range, and the ETH they pay accumulates inside it. |
| Test suite | 78 of 78 passing, including the mainnet-fork launch rehearsal against the canonical PoolManager and six stateful invariants over 96,000 random operation sequences |
| In-house review | Adversarial review complete and published, including known open items |
| Third-party audit | Not started. No audited language should be used until one is complete. |
Nothing is deployed. There is nothing to buy yet, and anyone offering you a BRICK contract address today is selling you something else.
The token address, the hook address, the source and the review all land on this page on launch day, together, because they are only worth anything to you as a set. Until then every figure here is a model and says so.