BRICK is a programmable liquidity mechanism built around a Uniswap v4 hook. When the pool's fee pot reaches its threshold, anyone can trigger a masonry event.
2% hook fee · 0.15 ETH masonry threshold · fixed supply · permissionless trigger
Structure preview unavailable on this device
Almost every token with a fee charges it the same way. A percentage of your trade is taken, and it leaves.
It goes to a treasury, a marketing wallet, a team multisig. The pool you traded in is no deeper than it was before. The supply is no smaller. You paid, and nothing you can point to got better.
BRICK charges 2% and spends 62.5% of it on the token itself. Not on a roadmap. On liquidity that cannot be withdrawn, and on supply that is destroyed.
Every swap in the official pool pays 2% on the ETH side. Both directions, and both exact-input and exact-output, so there is no shape of trade that avoids it.
The fee is taken by the hook itself rather than by the token, which is why a transfer between two wallets costs nothing.
FEE_BPS = 200The fee sits in the hook as WETH and does nothing until there is enough of it to be worth spending. Nothing can take it out in the meantime.
There is no withdraw function on the contract, for any address, including the one that deployed it.
pot += feeOnce the pot reaches the threshold, any address may call layBrick(). There is
no allowlist, no keeper role and no privileged caller.
Whoever calls it is paid 1.2% for the gas they spent. That is the whole of what they get.
BRICK_THRESHOLD = 0.15 etherOne hundred bricks, one per percent. Thirty-five become liquidity, twenty-seven go to the quarry, and the rest funds operations with the caller’s 1.2% carved out of it.
The four numbers are constants. Nothing in the contract can change them.
LP 3500 · BURN 2700 · OPS 3800 · KEEPER 120The 35% is added as a position the hook itself owns, and the remove-liquidity path reverts for every caller that tries it, the deployer included.
It is not locked for a period. There is no path, so there is nothing to unlock.
revert FloorIsPermanent()The brick is credited to the swap that carried the pot over the threshold, not to whoever won the race to trigger it.
Triggering is permissionless and pays, so a bot wins that race every time. It takes the ETH. It does not take the record.
wall[idx].masonMasonry 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 always goes to the trader who earned it.
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.
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 |
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
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. |
That is the whole idea. A pool that takes a fee, keeps it, and turns it into liquidity nobody can remove and supply nobody can get back. It runs whether anyone is watching or not.
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.