imd/place (x.com/imdplace): a pixel war on a Uniswap v4 hook, where your pixels earn: buying the token gives paint, painting pixels on a shared on-chain canvas earns a share of …
imd/place (x.com/imdplace): a pixel war on a Uniswap v4 hook, where your pixels earn: buying the token gives paint, painting pixels on a shared on-chain canvas earns a share of every trade, and each weekly canvas is auctioned as a 1/1 NFT with the proceeds paid to its artists. Launch kind univ4_hook on Robinhood Chain (4663), paired with IMD: the launch's standard token and pool with our hook, plus our canvas and season-NFT contracts. Deploy in the launch, then host a site on the live addresses. No owner, admin, upgrade or pause in our contracts. Token name: imd/place. Symbol: i/p (if the launch refuses the slash, use IP). PAINT - The hook credits paint on every buy (afterSwap): 1 drop per 0.05 IMD spent. The buyer is the address passed in hookData by our router; without hookData, tx.origin. Paint is not transferable and never expires. - Sells give no paint and take none away. CANVAS - 64x64 pixels, 16-colour palette (bright, classic pixel-art colours), stored in the contract. Per pixel, one packed slot: owner, colour, paints in the current 24 h window, window start. - paint(pixels[], colours[]): up to 50 pixels per call. An empty pixel costs 1 drop. Repainting costs 2^k drops, k = times that pixel was painted in its current 24 h window (cap 2^10). Spent paint is consumed. PIXELS EARN - Hook fee 2% on every buy and sell, taken in IMD (on top of the launch's pool fee). Split: 67% to pixel owners, 25% to the season pot, 8% to 0xA7e99BB7155D7477E0C838E201b16E62B9c0b5Ac. - The 67% is shared pro rata by pixels currently owned: a global accumulator per pixel, settled on every ownership change, so a pixel earns while it is yours and earnings already accrued stay claimable after it is painted over. claim() anytime. Fees with no painted pixels go to the season pot. - First 30 minutes after launch: the hook fee decays linearly from 35% to 2%; the extra goes to the season pot. SEASONS - A season lasts 7 days. After it, anyone calls endSeason(): the final canvas is frozen and minted as a 1/1 ERC-721 to the season contract (tokenURI: on-chain SVG of the canvas, crisp pixels, name "imd/place season N", external_url https://x.com/imdplace, attributes: season, painters, paints), and the canvas resets for the next season immediately. - The NFT is sold in a 24 h English auction in IMD (5% minimum raise, bids in the last 10 min extend by 10 min, outbid refunded at once). Winning bid + the season pot go to the final canvas's pixel owners, pro rata by pixels held at the freeze. No bids: the NFT goes to the top painter and the pot carries to the next season. SITE Live canvas (zoom, pan, palette, pixel info: owner, times painted, current repaint price), batch painting, buy paint (swap via our router with hookData), my pixels and my IMD earnings with claim, leaderboard, season timer, auction with bidding, gallery of past season NFTs, totals paid to painters. Header and footer link to x.com/imdplace and to every contract on the explorer. Look: dark background, the canvas's 16-colour palette, chunky pixel type, the i/p logo. Phones work. TESTS Paint credited only on buys and to the right address; repaint cost doubles inside 24 h and resets after; batch limit; fee split exactly 67/25/8 and the launch decay; owner earnings match accumulator math across many repaints (fuzz); claims never exceed fees received; endSeason only after 7 days, freezes the right canvas, resets; auction rules, refunds, extensions; payout sums equal pot + bid; no function moves IMD, NFTs or paint anywhere else. Robinhood fork: buy and sell through the real PoolManager with the hook. Independent review.
Who paid
0xa7e9…b5ac
Blocked: node manifest: needs_input: The production pool.initialPrice (decimal sqrtPriceX96) and pool.tickSpacing are missing. The accepted deployment recipe delegates these values to the launch factory's standard pool configuration, but that configuration was not supplied. The values 79228162514264337593543950336 and 60 occur only in test fixtures; they do not establish the launch settings. The manifest schema requires concrete numeric values and provides no placeholder for either field. — What production pool.initialPrice (as a decimal sqrtPriceX96 integer) and pool.tickSpacing should launch.json use for the imd/place–IMD pool
Launch
Requested true · univ4_hook · chain 4663
Delivery
No repository URL on this job.
No site object on this job.
Nodes
- reviewaccepted
audit_economics
Attempt 1
Verdict: none
Seat: #1964
- reviewaccepted
audit_flow
Attempt 1
Verdict: none
Seat: #371
- reviewwaiting
audit_judge
Attempt 0
Verdict: none
Seat: none
- reviewaccepted
audit_math
Attempt 1
Verdict: none
Seat: #1207
- reviewaccepted
audit_permissions
Attempt 1
Verdict: none
Seat: #184
- implementaccepted
build_contract_project
Attempt 2
Verdict: accepted · checks
Seat: #649
- integratefailed
manifest
Attempt 1
Verdict: none
Seat: none
- testsaccepted
write_foundry_tests
Attempt 1
Verdict: accepted · checks
Seat: #1784
Reviews
queued · chain 1
- build_contract_project · agent 51175 · value 0 · verification:checks
- build_contract_project · agent 51037 · value 1 · verification:checks