{"rewardSnapshot":null,"merkleRoot":null,"claims":null,"id":"fcaf211f-83b5-4e3c-aede-7cd3941658b0","launchNumber":1355,"kind":"evm_contracts","status":"parked","chainId":4663,"sourceRepoUrl":"https://github.com/identity-md-launches/launch-1355-audit-deploy-sherwood-v2","sourceCommit":"85a1b49e9dff3b2bd74313ef8ce131671977569b","parkedReason":"findings: 1 blocking finding(s) never resolved — audit_judge: settle drops the final unknown spell: the round's final #1 gets no reign for it and the 8% King share goes to a player observed at #1 for less (write_foundry_tests 95e534f7, reproduced)","artifactCount":0,"manifestHash":"cc7e6c9b6bb02b16336779de67a151e5fa5fda1dd4679a05d25ad8d97d400e61","attestationHash":"b4a8e07fd67d6b1f47449a8fc7dfcd30937014484dd9c3036051672070b8585d","attestation":{"treeHash":"fac260394549679c10b10b36a1fb3474f2b31831","verifierVersion":"0.1.0+fb8278c5","verifierKey":"68249df1f422fa72f61ca7f0ddaf9b62043959c5c134498441d5e552a9921782","toolchain":{"solc":"0.8.26","forge":"forge Version: 1.8.3","viaIR":true,"optimizer":true,"evmVersion":"cancun","bytecodeHash":"none","optimizerRuns":200},"contracts":[{"name":"Sherwood","path":"src/Sherwood.sol","abiHash":"8fa729b3abfcc542067362ae77dcac5aed302094c39d8881940a6b86a8ed142d","opcodes":{"callcode":false,"delegatecall":false,"selfdestruct":false},"metadataHash":"9ea8b491edf3d707e209fae33f5d07473f55c8d12b6122f29bd752ae1b78475d","creationCodeHash":"41d74b1cfbcbcc97b8a6b567c9677592a6880d1050d1e88993ac17748ebe4e79","deployedCodeHash":"c4fd56bff94989e02c09ad6f9a963cb097456c53926d847245d478a73a0d2384","creationCodeBytes":18588,"deployedCodeBytes":17738},{"name":"SherwoodV2","path":"src/SherwoodV2.sol","abiHash":"80741ec82e8768cd07eaed398d477fdc54fe9f567bd98b0864433904618e1de8","opcodes":{"callcode":false,"delegatecall":false,"selfdestruct":false},"metadataHash":"81fa667c71df8f590e2257840c69d9b66673b6aa68aee3e21ece72eedfd9438a","creationCodeHash":"6343199f54392228bb970ada8d043cc7e1e239d7b71cfce72d3a5151cc015125","deployedCodeHash":"d96d797c7e024b666a5c3175be02e7a9926ea53a990a7deb502023f6992d0390","creationCodeBytes":25579,"deployedCodeBytes":24549},{"name":"SherwoodV2Launcher","path":"src/SherwoodV2Launcher.sol","abiHash":"456c12670b1c959a3241f1299f3bec354aafc40582941cf531d33368a7ffaed7","opcodes":{"callcode":false,"delegatecall":false,"selfdestruct":false},"metadataHash":"a2e347f04b1e647b11e911d500423685c98459ca718d028c6307833cc4bac93e","creationCodeHash":"0cab6848ad64c04f8260190b2fd1122127e0a3286bab0075f49de3016105b77e","deployedCodeHash":"bf321b3530fae307a94168023aa89038eeced9fc2153518447aad7420be14b88","creationCodeBytes":26324,"deployedCodeBytes":183}],"manifest":{"kind":"evm_contracts","notes":"Sherwood v2 on Robinhood Chain (4663) for the existing $IMD token. No new token, pool, distributor, ETH funding or initialization call: this manifest deploys exactly one contract, src/SherwoodV2Launcher.sol:SherwoodV2Launcher. A Uniswap v4 hook must carry its permission flags in the low 14 bits of its address and this launch takes no salt, so the launcher's constructor mines the first CREATE2 salt (from its own address, up to 400000 tries, about one in 16384 matches) whose address carries flags 0x20CC (beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta), then deploys src/SherwoodV2.sol:SherwoodV2 there with CREATE2 and reverts with NoSalt if the create fails. Mining and hook deployment together cost about 10M gas, rehearsed on a fork in test/SherwoodV2LauncherFork.t.sol. The game is launcher.hook() and the salt used is launcher.salt(). Neither constructor calls another contract (the launcher only hashes and creates; the hook stores its arguments and validates its own address flags with the Hooks library), so the empty-chain rehearsal passes; the launcher's runtime is small and uses no DELEGATECALL, CALLCODE or SELFDESTRUCT. The launcher's eight parameters are the hook's eight constructor parameters, same order, as plain address and uint256 types, and are forwarded unchanged: poolManager, the Uniswap v4 PoolManager on Robinhood Chain, 0x8366a39cc670b4001a1121b8f6a443a643e40951; token, $IMD, 0x5f7bb59365ce557c26dbcaa4ee9d39a4b95b7127; host, $PFWA, 0xa934ba4f59070149d37a93f8a002af79bae35563; hostHolderMin 100000000000000000000000 (100000 PFWA in wei, the balance that earns the host-holder bonus); dice, the Dice Protocol entropy contract, 0xd8a0680e7699526b57140ed4eafdcc7219dc0a0c; diceProvider 0x8741b8a825644d9ef18faf2dab5e9b47b900f2b6; owner $owner, the wallet that paid for the launch, stored by the hook as both owner and initial operator (never the factory or tx.origin); genesis 1791835200, the unix time round 0 opens, with rounds rolling every 20 hours from it. Game rules and split are unchanged from the brief: one native-ETH/$IMD pool, every buy scores points and pays 5% of its ETH into the round's pot; moves are Buy, Steal, Robin Hood, Flip (Dice randomness) and Shield with stacking charges; each pot pays the top 3 40/20/10%, 8% to the King of the Hill, 10% buys back and burns $IMD through the existing ETH/$IMD 1% pool, 7% buys back and burns $PFWA through its holder pool, and 5% rolls over; prizes are claimable for 7 days and unclaimed prizes are swept into the live round's pot. After deployment the owner initializes the game pool against launcher.hook() and sets the two buyback pools with setBuybackPool and setHostBuybackPool, and may later hand over with setOwner and setOperator; those are owner actions outside this manifest.","contracts":[{"contract":"SherwoodV2Launcher","constructorArgs":["0x8366a39cc670b4001a1121b8f6a443a643e40951","0x5f7bb59365ce557c26dbcaa4ee9d39a4b95b7127","0xa934ba4f59070149d37a93f8a002af79bae35563","100000000000000000000000","0xd8a0680e7699526b57140ed4eafdcc7219dc0a0c","0x8741b8a825644d9ef18faf2dab5e9b47b900f2b6","$owner","1791835200"]}]},"manifestError":null},"attestationFailure":null,"deployFailure":null,"policyVersion":28,"economics":null,"poolFee":null,"requester":"0x420944b441715e34dd672ae0eb4526a7ad7d1eef","admissionChecks":[{"name":"provenance","detail":"9 node(s) accepted at 85a1b49e","status":"passed"},{"name":"findings","detail":"1 blocking finding(s) never resolved — audit_judge: settle drops the final unknown spell: the round's final #1 gets no reign for it and the 8% King share goes to a player observed at #1 for less (write_foundry_tests 95e534f7, reproduced)","status":"failed"},{"name":"independent_review","detail":"1 independent review(s)","status":"passed"},{"name":"bytecode","detail":"3 contract(s) clean and reproducible","status":"passed"},{"name":"manifest","detail":"1 application contracts; no protocol token or pool","status":"passed"},{"name":"protected_invariants","detail":"invariants-11aebc2aca1e: Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 3.07ms (131.51µ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-12T07:35:19.457Z","updatedAt":"2026-10-12T07:37:35.173Z","jobs":[{"id":"0f874eef-fadd-41fd-aab5-bf3ff4c420d4","objective":"Audit and deploy Sherwood v2 on Robinhood Chain (4663) for $IMD, with no new token. Sherwood v2 (src/SherwoodV2.sol) is a Uniswap v4 hook running a leaderboard game in rolling 20-hour rounds on one native-ETH/$IMD pool: every buy scores points and pays 5% of its ETH into the round's pot. Moves are Buy, Steal, Robin Hood, Flip (Dice Protocol randomness) and Shield, with stacking charges. Each pot pays the top 3 40/20/10%, 8% to the King of the Hill (longest at #1), 10% buys back and burns $IMD through the existing ETH/$IMD 1% pool, 7% buys back and burns $PFWA (the host token) through its holder pool, and 5% rolls over. Prizes are claimed within 7 days; anything unclaimed goes into the live round's pot. A v4 hook needs its permission flags (0x20CC) in its address, and this launch takes no salt, so deploy ONE contract, src/SherwoodV2Launcher.sol:SherwoodV2Launcher, whose constructor finds the salt onchain and deploys the hook with CREATE2 (about 10M gas; rehearsed on a fork in test/SherwoodV2LauncherFork.t.sol). The hook is launcher.hook(). Constructor arguments, in order: poolManager 0x8366a39cc670b4001a1121b8f6a443a643e40951, token ($IMD) 0x5f7bb59365ce557c26dbcaa4ee9d39a4b95b7127, host ($PFWA) 0xa934ba4f59070149d37a93f8a002af79bae35563, hostHolderMin 100000000000000000000000, dice 0xd8a0680e7699526b57140ed4eafdcc7219dc0a0c, diceProvider 0x8741b8a825644d9ef18faf2dab5e9b47b900f2b6, owner $owner, genesis 1791835200. Please keep the game rules and the split as they are; fix anything the audit finds. Focus: swap delta accounting and the two buyback swaps in unlockCallback, pot/prize/referral/claim/sweep accounting (ETH out can never exceed ETH in, and settlement can never revert), the flip lifecycle with Dice, the charge clocks, the King of the Hill reign tracking, and anything that could block swaps, settlement or claims. Our own notes for the audit are in README.md under Sherwood v2.","state":"completed","attachedAt":"2026-10-12T07:35:19.457Z"}],"artifacts":[],"allocations":[]}