{"rewardSnapshot":null,"merkleRoot":null,"claims":null,"id":"bbfc7d94-12bf-4c12-8063-06e35c2d721d","launchNumber":1423,"kind":"univ4_hook","status":"parked","chainId":4663,"sourceRepoUrl":"https://github.com/identity-md-launches/launch-1423-src-pimd-pimdtoken-sol-src-pimd-pimdhook","sourceCommit":"8f021891e21f44bbc85595deebf93a9be3dd64a8","parkedReason":"protected_invariants: invariants-3f077c008a26: [FAIL: the hook refused PoolManager.initialize from the launch factory on the launch's pool: name the factory with $factory, and accept the pool it opens (the launch token, the paired currency, the manifest's fee and tick spacing)] test_initializesFromTheLaunchFactory() (gas: 533466); [FAIL: the hook refused PoolManager.initialize from the launch factory on the launch's pool: name the factory with $factory, and accept the pool it opens (the launch token, the paired currency, the manifest's fee and tick spacing)] test_initializesFromTheLaunchFactory() (gas: 533466)","artifactCount":0,"manifestHash":"f4ae920db136a5bc9c31acd2e4ea261f1aa89e91806613d02c065ff5ff9641ed","attestationHash":"b8f1f4022fcfd910a553acd7ffdbae25de30370121207877f1e4b338d47e3c4c","attestation":{"treeHash":"81a48aef963a34da1a6821f0efcc16e7e90c49bf","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":44444444},"contracts":[{"name":"L2Block","path":"src/libraries/L2Block.sol","abiHash":"518674ab2b227e5f11e9084f615d57663cde47bce1ba168b4c19c7ee22a73d70","opcodes":{"callcode":false,"delegatecall":false,"selfdestruct":false},"metadataHash":"7ff77a35a5bcc6c9fcd49cf5f7db93644e93c37a10abae21d8b52255f869f71f","creationCodeHash":"512f480ab92182c6d073da377db24c4beb6454889b98a24f24e9daaf23a78066","deployedCodeHash":"3c55237b3869f93f3e570793afec9785f20a4ee7cd0a7798a418838c833228e0","creationCodeBytes":31,"deployedCodeBytes":3},{"name":"PimdEngine","path":"src/pimd/PimdEngine.sol","abiHash":"48012e83e2aaf3ff053d9e0303550beef157735c90e44c2bc528286bda924d28","opcodes":{"callcode":false,"delegatecall":false,"selfdestruct":false},"metadataHash":"d54bb8214657b9408566d5ee390d59010e09cb0f6290601a2f8d57c9ad0c7967","creationCodeHash":"d7d1b7a668e767ae6af283fa9136e49a15ee5a3d054af1b97c2b7b3d38c86354","deployedCodeHash":"1904e4061a85e9fb4a2b0e9d658af5f240b55f66dacaf391dfea2de045c794f7","creationCodeBytes":15820,"deployedCodeBytes":14619},{"name":"PimdHook","path":"src/pimd/PimdHook.sol","abiHash":"e692b3fd154129e23f563f69a6b461314fb78f93b13d83e419da940a6e3dbf99","opcodes":{"callcode":false,"delegatecall":false,"selfdestruct":false},"metadataHash":"1d33010cdd2f69eb3b875004c1e573fe47f0dc8ab951075858101cc17cf674eb","creationCodeHash":"6b590e9b85d72b58aabb93d173d4e5bd9df65c5f06eb327559a5da417ccca7b5","deployedCodeHash":"c10376c5eddecf061681052df733d6a37608572ba87c0beed70f84500b7fe8c2","creationCodeBytes":15602,"deployedCodeBytes":14656},{"name":"PimdToken","path":"src/pimd/PimdToken.sol","abiHash":"f82a7777fe5a3d624e04f6d544080ab8c07922eaaf188d0ab3650d9ebcdcb4e9","opcodes":{"callcode":false,"delegatecall":false,"selfdestruct":false},"metadataHash":"bd1bfe7034258208da7dc1961b08182698897978f0ca8743b8eb442fb48a0b3b","creationCodeHash":"be4793ae85ada7e4c8c9b456a4ff15c811cb7a3d34c500b4ef30001e77f151dc","deployedCodeHash":"0040e8b710ed4b5c855256a9914faf30e59b4fe494d797abdb52928160bd981e","creationCodeBytes":4983,"deployedCodeBytes":3733}],"manifest":{"hook":{"contract":"PimdHook","permissions":["beforeInitialize","afterInitialize","beforeAddLiquidity","beforeRemoveLiquidity","beforeSwap","afterSwap","beforeSwapReturnDelta","afterSwapReturnDelta"],"constructorArgs":["$poolManager","$token","$factory"]},"kind":"univ4_hook","pool":{"fee":12500,"tickSpacing":60,"initialPrice":"79228162514264337593543950336","pairedCurrency":"0x5f7bb59365ce557c26dbcaa4ee9d39a4b95b7127"},"notes":"audit-imported-code: Reviewed src/pimd/PimdToken.sol, src/pimd/PimdHook.sol, src/pimd/PimdEngine.sol, src/libraries/L2Block.sol and script/DeployPimd.s.sol as imported, before writing this manifest; no source was adapted or defects repaired. Findings: (1) Launch is blocked if PIMD sorts below IMD. beforeInitialize requires IMD as currency0 and PIMD as currency1; PoolManager enforces ascending addresses. The imported deploy script provides no token-address guarantee; tests mine token addresses and do not prove factory compatibility. (2) The brief contains conflicting opening-price statements. Actual beforeInitialize accepts any valid opening price and reads the tick only for Launched; 129000 and tolerance 300 are informational constants, so the claimed +/-300 rejection is absent. The manifest keeps the required one-to-one initialPrice; the factory derives the actual opening price from the policy's 2500 IMD market cap. (3) The hook accepts fees 500, 3000, 10000 and 12500, and does not pin tickSpacing to 60. It accepts this manifest's 12500 and rejects zero/dynamic fees; exact launch fee and spacing depend on policy/factory enforcement. (4) DeployPimd deploys only a new engine, permits environment overrides and makes EXPECT_ENGINE optional. It is unsuitable for this launch and was not executed. Deploy only PimdToken and PimdHook on Robinhood Chain (4663); reuse the baked-in engine at 0xffdb5dd341f692a29b5a0d3d1577df683c1baca4 without redeploying it. Engine bind is a separate one-time binder action after initialization, requiring matching token, hook, IMD and PoolManager and exclusion of the launch distributor. No deployment or binding was performed by this manifest task. Confirmed in imported source: token constructor takes no arguments, mints exactly 1000000000 tokens at 18 decimals once to its deployer, and exposes no owner, mint, burn or pause; transfers to the dead address leave totalSupply unchanged. Hook constructor has only the three listed arguments and no owner parameter. beforeInitialize is PoolManager-only, factory-only, rejects a second pool and wrong currencies. afterInitialize is PoolManager-only and returns its selector. beforeAddLiquidity admits the factory's first positive add only; all later adds fail. beforeRemoveLiquidity rejects every negative delta while allowing zero-delta LP fee collection. All eight declared permissions match getHookPermissions. Buy/sell taxes are 2.4%/5.6% in IMD ERC-6909 claims, split 75% holders/25% team; caller tips come from the team share, and the separate 1.25% LP fee is untouched. Engine register, prune, fire, tally and pay check the PoolManager transient lock; holder balances are not sampled while unlocked. Tally is keeper-only and covers the whole set atomically. The tier ladder remains 0x below 1h, then 0.5x/1x/1.5x/2x/3x at 1h/1d/3d/7d/14d. Streaks observe sampled balances, so transfers out and back between tallies are invisible; loss of all immutable keepers stops distributions. L2Block uses a gas-capped ArbSys call with block.number fallback; the launch cap also has timestamp bounds. At Robinhood block 86707143 the existing engine runtime matched the compiled imported source outside constructor-immutable slots. Live getters matched all production immutable defaults and reported unbound; both default keepers were enabled. These are read-only checks, not launch admission or deployment approval. Validation: forge build passed with warnings; forge test passed all 92 tests, including six live fork tests. Manifest fields, constructor ABIs and permissions were checked.","token":{"name":"Ponzinomics","symbol":"PIMD","contract":"PimdToken","decimals":18}},"manifestError":null},"attestationFailure":null,"deployFailure":null,"policyVersion":30,"economics":{"poolBps":8400,"remainderTo":"0x0960e8bd80462e3842bb6620c7c5289a44c4559b"},"poolFee":null,"requester":"0xdd48c714e71560670b8ba3f7c17040843b862846","admissionChecks":[{"name":"provenance","detail":"2 node(s) accepted at 8f021891","status":"passed"},{"name":"findings","detail":"2 accepted submission(s), no unresolved blocking findings","status":"passed"},{"name":"independent_review","detail":"1 independent review(s)","status":"passed"},{"name":"bytecode","detail":"4 contract(s) clean and reproducible","status":"passed"},{"name":"manifest","detail":"PIMD on PimdHook, flags 0x3acc","status":"passed"},{"name":"protected_invariants","detail":"invariants-3f077c008a26: [FAIL: the hook refused PoolManager.initialize from the launch factory on the launch's pool: name the factory with $factory, and accept the pool it opens (the launch token, the paired currency, the manifest's fee and tick spacing)] test_initializesFromTheLaunchFactory() (gas: 533466); [FAIL: the hook refused PoolManager.initialize from the launch factory on the launch's pool: name the factory with $factory, and accept the pool it opens (the launch token, the paired currency, the manifest's fee and tick spacing)] test_initializesFromTheLaunchFactory() (gas: 533466)","status":"failed"},{"name":"economics","detail":"500 allocation(s), root 0x9393ead6","status":"passed"}],"assurances":[],"logo":null,"seeded":null,"createdAt":"2026-10-12T13:52:47.052Z","updatedAt":"2026-10-12T13:54:18.588Z","jobs":[{"id":"10902f10-444c-45f5-a995-36857b0db9f4","objective":"Begin with an audit-imported-code step: audit both contracts, the library and the deploy script exactly as they arrived in this repository, before anything is adapted, and report findings rather than fixing them. Only then deploy the Ponzinomics ($PIMD) contracts to Robinhood Chain (4663) and open the pool, exactly as they are. Two contracts to deploy. PimdToken is an ERC-20 named Ponzinomics, symbol PIMD, with a fixed total supply of exactly 1,000,000,000 at 18 decimals, minted once in a constructor that takes no arguments, to whoever deploys it; there is no owner, no mint, no burn and no pause, and burning is a plain transfer to 0xdEaD so totalSupply never moves. PimdHook is a Uniswap V4 hook whose constructor takes the pool manager, the token address and the launch factory, so its constructorArgs are $poolManager, $token and $factory; everything else is a source constant. It does not gate the opening price: it accepts the pool the factory opens and reads the tick only for its Launched event. It taxes every trade in IMD, 2.4% on buys and 5.6% on sells, split 75% to holders and 25% to the team, taking its fees as ERC-6909 claims on the quote currency. The pool's own 1.25% fee sits on top of that tax and the hook never touches it. A third contract, PimdEngine, is already deployed at 0xFFDB5Dd341F692a29b5a0d3D1577DF683C1bACa4 and its address is baked into PimdHook as a constant: audit it as imported code, but do not deploy or redeploy it. Do not change the economics, the tax rates, the split, the tier ladder or the opening tick: they are settled, and the opening tick follows the chain policy's 2500 IMD initial market cap. If you find a defect, report it rather than redesigning around it. Three things deserve the most attention. First, the pool is only correct if IMD sorts below PIMD as currency0: beforeInitialize refuses the other ordering, refuses a second pool, refuses a wrong quote currency and refuses an opening tick more than 300 from 129000, and it is the single gate on all of it. Second, beforeAddLiquidity must let the factory's seed through exactly once and refuse every add after it, because 'third-party liquidity is blocked' is an advertised property; and beforeRemoveLiquidity must refuse every negative liquidity delta for ever while still allowing the zero delta that collects the pool's own fee. Third, the engine must never read holder weights while the PoolManager is unlocked, which is where a flash borrower would stand.","state":"completed","attachedAt":"2026-10-12T13:52:47.052Z"}],"artifacts":[],"allocations":[]}