{"rewardSnapshot":null,"merkleRoot":null,"claims":null,"id":"24f55ec3-e64c-43b7-a095-977c9c5dbfc3","launchNumber":2454,"kind":"evm_contracts","status":"live","chainId":4663,"sourceRepoUrl":"https://github.com/identity-md-launches/launch-2454-what-build-two-immutable","sourceCommit":"952e62de284440144a24fc4ec4868461e4534612","parkedReason":null,"artifactCount":2,"manifestHash":"0041fd07f61f5f5ef44f4df80910f9bcd5b3179e6fa0ac5ffd62e40156e94410","attestationHash":"251dce6ee4a62b8b14d248e0e0d67ad2a6d63375a10da647827af42b20a0741e","attestation":{"treeHash":"f30c1720bf19045ad897d92f6538c97da3fa14a3","verifierVersion":"0.1.0+560ab6a2","verifierKey":"68249df1f422fa72f61ca7f0ddaf9b62043959c5c134498441d5e552a9921782","toolchain":{"solc":"0.8.26","forge":"forge Version: 1.8.3","viaIR":false,"optimizer":true,"evmVersion":"cancun","bytecodeHash":"none","optimizerRuns":200},"contracts":[{"name":"ExactStoreToken","path":"src/store/ExactStoreToken.sol","abiHash":"901479ff41b7abaa4e104eed70cdb29ee28c6e3a1127af645f7ce8f3eedf039a","opcodes":{"callcode":false,"delegatecall":false,"selfdestruct":false},"metadataHash":"045ac30452277cd13407cc524b5ffbbe13e4bb05ceb78ada154a7e0efc30af32","creationCodeHash":"1c1538710fd2c69e5ac07c04cdc677f2ab0a86dbfd7eaf576dc6132a0c968921","deployedCodeHash":"9d964dba80c392f9f7d80c1cd20d1188595b2a3f303e08845448d4c880032f00","creationCodeBytes":81,"deployedCodeBytes":31},{"name":"FeaturedPlacementsV2","path":"src/store/FeaturedPlacementsV2.sol","abiHash":"2330dcebc843dbf0d736ec550550b85c87404c0fb0ce6e55f3892ffc002fdcc4","opcodes":{"callcode":false,"delegatecall":false,"selfdestruct":false},"metadataHash":"069e3d418e37b2d55745f169ae5fc875588f1c3d03be43523e2276875c4ff379","creationCodeHash":"51ce68f0022d3af14879133483187a13941c676fffe289729431d79abac0fc83","deployedCodeHash":"d54c0d0fac57f749cf2fba12ae98943d579b56f276fd1c84afedb18e3a4e5f57","creationCodeBytes":9482,"deployedCodeBytes":9108},{"name":"HookListingRegistry","path":"src/store/HookListingRegistry.sol","abiHash":"4d468de0d0d8b0de967098a5adec840dc3d46cc9df610db0a1f05543b93a09c4","opcodes":{"callcode":false,"delegatecall":false,"selfdestruct":false},"metadataHash":"c82e00565b8e6a92b2bba342987ae28d8729bfb9b93dfb4ccf9f3a3556f6f742","creationCodeHash":"538f98c75f7699464e2621fd5299400c05a286243c8cde9875faa143f63599d1","deployedCodeHash":"03700c30c74aeec61bb82f2dcb6a9048164fc277f2450e4593ccf1402da0a512","creationCodeBytes":9063,"deployedCodeBytes":9035}],"manifest":{"kind":"evm_contracts","notes":"Deploys the immutable Hooks Store application contracts in dependency order, with no proxy or upgrade path. HookListingRegistry provides free, permissionless listings and has no registry administrator. FeaturedPlacementsV2 uses the explicit launch owner with two-step ownership and the deployed registry. Each #ad placement costs 100000000000000000 base units (0.1 IMD) for 24 hours, with at most one live placement per listing. Anyone may boost a live placement from their deposited balance. Cancellation refunds only the base price pro rata; all boosts and earned base proceeds accrue to the recipient pinned at purchase. Settlement credits the full base price and boosts to that recipient. Boosts remain escrowed until closure; accountedBalance equals totalAvailable + totalEscrowed + totalProceeds. rankOf and featured expose base plus boost totals for website sorting by total descending, then lower placement ID. After deployment on Robinhood Chain, the owner must call configureToken once with IMD at 0x5f7bb59365ce557c26dbcaa4ee9d39a4b95b7127 and setProceedsRecipient to the owner's own wallet. The token is not a constructor dependency. No token, pool or liquidity is created, no ETH is funded, and no payments or initialization calls occur at deployment. The same contracts and constructor references apply to the separate Ethereum launch; chain selection is external to this manifest.","contracts":[{"contract":"HookListingRegistry","constructorArgs":[]},{"contract":"FeaturedPlacementsV2","constructorArgs":["$owner","$contract:HookListingRegistry"]}]},"manifestError":null},"attestationFailure":null,"deployFailure":null,"policyVersion":28,"economics":null,"poolFee":null,"requester":"0x5bff2a2fecd1d6152676813b21346238733beab1","admissionChecks":[{"name":"provenance","detail":"8 node(s) accepted at 952e62de","status":"passed"},{"name":"findings","detail":"8 accepted submission(s), no unresolved blocking findings","status":"passed"},{"name":"independent_review","detail":"1 independent review(s)","status":"passed"},{"name":"bytecode","detail":"3 contract(s) clean and reproducible","status":"passed"},{"name":"manifest","detail":"2 application contracts; no protocol token or pool","status":"passed"},{"name":"protected_invariants","detail":"invariants-72ac6e744789: Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 649.52µs (503.80µs CPU time)","status":"passed"},{"name":"economics","detail":"policy explicitly selects no on-chain contributor rewards","status":"passed"}],"assurances":[],"logo":null,"seeded":null,"createdAt":"2026-10-22T05:00:11.508Z","updatedAt":"2026-10-22T14:40:41.471Z","jobs":[{"id":"7f951ad8-ac62-41f0-b968-79737c96623e","objective":"What to build: two immutable contracts for The Hooks Store on Robinhood Chain (a second launch with chainId 1 deploys the same contracts on Ethereum), HookListingRegistry (a free on-chain listing registry) and FeaturedPlacementsV2 (a paid, refundable 24-hour featured-placement escrow in IMD). Upgrades: none. No proxy, no upgrade path, no DELEGATECALL, no SELFDESTRUCT; both contracts are immutable once deployed and the only owner powers are the ones listed below. Start from the audited source at https://github.com/identity-md-launches/launch-1811-build-technical-foundation-hooks/tree/46e17ea70534e8a7ac2c4ff78501a3c183d32da8/src/store (HookListingRegistry.sol unchanged; FeaturedPlacements.sol becomes FeaturedPlacementsV2 with these changes and nothing else): DURATION is 24 hours instead of 7 days; PRICE stays 0.1 IMD (100000000000000000 base units of the configured 18-decimal token); add boost(uint256 placementId, uint256 amount), callable by anyone while the placement is open, which pulls amount from the caller's deposited balance (deposit stays as in the original), adds it to totalBoost[placementId] and to the escrow, and is never refunded: on cancel the base price refunds pro rata exactly as before and the whole boost goes to the pinned proceeds recipient; on settle both go to the recipient; add rankOf(uint256 placementId) view returning base plus boost, and have featured(cursor, scanLimit) also return each placement's total so the website can sort by total paid, ties by lower id first; keep one live placement per listing, the #ad label on every placement and event, the two-step owner, configureToken once, setProceedsRecipient, withdraw and withdrawProceeds, the reentrancy guards, exact-transfer checks and the conservation rule accountedBalance = totalAvailable + totalEscrowed + totalProceeds with boosts counted in totalEscrowed until closed. Constructors: HookListingRegistry() and FeaturedPlacementsV2($owner, $contract:HookListingRegistry). Owner functions stay owner-only with $owner as the owner; no msg.sender ownership. Keep the existing Foundry tests passing with the new duration, and add tests for boost by a third party, boost forfeiture on cancel, ranking ties, and the invariant with boosts. No token, pool or liquidity is created. Dependencies: only the IMD token on Robinhood Chain (0x5f7bb59365ce557c26dbcaa4ee9d39a4b95b7127), set after deployment by the owner through configureToken, never a constructor dependency. Recipient of ad proceeds: set after deployment by the owner through setProceedsRecipient to the owner's own wallet; nothing is paid to anyone at deployment.","state":"completed","attachedAt":"2026-10-22T05:00:11.508Z"}],"artifacts":[{"role":"other","name":"FeaturedPlacementsV2","address":"0x63b59cbf5b535e46815ae5d4cf126bf409dba69c","creationCodeHash":"51ce68f0022d3af14879133483187a13941c676fffe289729431d79abac0fc83","txHash":"0xd37d4b653052d23edaa493d852b5ca6e84253b1a90e6823929e954810af9bc52","blockNumber":95187962,"verifiedAt":"2026-10-22T14:41:15.550Z","verifyFailure":null},{"role":"other","name":"HookListingRegistry","address":"0x366c84a2971713fc8fa24d3d4b8abd2f4f085625","creationCodeHash":"538f98c75f7699464e2621fd5299400c05a286243c8cde9875faa143f63599d1","txHash":"0xd37d4b653052d23edaa493d852b5ca6e84253b1a90e6823929e954810af9bc52","blockNumber":95187962,"verifiedAt":"2026-10-22T14:41:09.421Z","verifyFailure":null}],"allocations":[]}