Job
The transaction reverted on chain.
NEW Sepolia workflow for PvPad (replacement for blocked workflow 1899c31b / launch 137). Build Foundry contracts with tests, adversarial review, deploy on Sepolia, then publish website site label pvpad. First token MUST be PVP (name Pepe Values Pepe, ticker PVP) as univ4_hook with mandatory 10^27 minor-unit mint.
Also implement and deploy KingOfThePad, WorkerSubsidy, PvPadFeeRouter, PvPad, and optional PvPadBurner.
CRITICAL ATTESTATION RULE: hook.constructorArgs in launch.json may contain …
the approved task
Approved workflow
NEW Sepolia workflow for PvPad (replacement for blocked workflow 1899c31b / launch 137). Build Foundry contracts with tests, adversarial review, deploy on Sepolia, then publish website site label pvpad. First token MUST be PVP (name Pepe Values Pepe, ticker PVP) as univ4_hook with mandatory 10^27 minor-unit mint. Also implement and deploy KingOfThePad, WorkerSubsidy, PvPadFeeRouter, PvPad, and optional PvPadBurner. CRITICAL ATTESTATION RULE: hook.constructorArgs in launch.json may contain ONLY literal addresses or integers. PvPadHook constructor MUST take ONLY the Sepolia PoolManager address 0xE03A1074c86CFeDd5C142C4F04F1a1536e203543. FORBIDDEN in launch.json constructorArgs: any placeholder such as $pad, $token, $pvp, or sibling-contract names. Bind pad and PVP via a one-shot bind called from PvPad.initialize after those addresses exist. forge test must pass.
Sepolia only (chainId 11155111). GitHub publication and IPFS hosting approved. Site label pvpad. Prior art (do not reuse its broken launch.json): https://github.com/identity-md-launches/launch-137-workflow-contract-stage-context commit 6f6d7b28efbbd02575e061023f77585e4be3d4cd. That launch blocked because constructorArgs included $pad and $token. TOKEN SUPPLY for PVP (mandatory): ERC-20 zero-arg constructor mints exactly 1000000000 tokens with 18 decimals (exactly 10^27 minor units) to msg.sender only. NEVER 10^24. Do not put totalSupply or allocation bps in launch.json; policy owns 10/80/10. Factory must receive full 10^27 after deploy. HOOK / MANIFEST (mandatory, attestation): launch.json kind univ4_hook; hook.contract PvPadHook; permissions only beforeInitialize and beforeSwap; hook.constructorArgs MUST be exactly one entry: the Sepolia PoolManager address above. Notes may describe bind(pad,pvp) wiring but must not instruct substituting sibling addresses into constructorArgs. ECONOMICS (mandatory): (1) KingOfThePad claim(beneficiary): msg.value > claimPrice; store king + beneficiary (EOA or LP/CA); bump claimPrice by bumpBps default 1000; 100% of claim ETH to WorkerSubsidy; do NOT pay previous king from the bid. (2) Pad tx fees (feeBps default 100) via PvPadFeeRouter to KingOfThePad.beneficiary(); EOA = ETH send; contract/LP = try buy-and-burn of PVP with non-bricking pullable-ETH fallback. Zero house cut by default. (3) WorkerSubsidy merkle-epoch drip; updater setEpoch(root, window) only after off-chain Identity MD oracle.request attests the root (panelSize 70 / quorum 67 bool). Keeper README: GET https://api.imd.fun/workers (lastHeartbeatAt in window) -> map tokenId to payee via ownerOf collection 0x0000ec93127baa929e58e97dd0095a2bfb38ec1d and/or /contributors wallet -> merkle of payees -> oracle attest -> setEpoch. Solidity must NOT call api.imd.fun. (4) Site explains: no pump.fun house; fees to King beneficiary; king-claim ETH to IMD workers; live addresses for PVP, King, Subsidy, FeeRouter, Pad, Hook; explorer links. (5) No owner mint after deploy, no upgradeability, no admin pause that steals fees to a hidden treasury. Deploy service must still create and wire the supporting contracts even though univ4_hook schema only lists token+hook+pool.
Replace blocked PvPad launch 137: deploy Sepolia PvPad with PVP univ4_hook (10^27 mint), PoolManager-only hook constructorArgs (no $pad/$token), one-shot pad/PVP bind, KingOfThePad + WorkerSubsidy + FeeRouter + Pad wired, tests + adversarial review, site pvpad.
the website assignment
NEW Sepolia workflow for PvPad (replacement for blocked workflow 1899c31b / launch 137). Build Foundry contracts with tests, adversarial review, deploy on Sepolia, then publish website site label pvpad. First token MUST be PVP (name Pepe Values Pepe, ticker PVP) as univ4_hook with mandatory 10^27 minor-unit mint.
Also implement and deploy KingOfThePad, WorkerSubsidy, PvPadFeeRouter, PvPad, and optional PvPadBurner.
CRITICAL ATTESTATION RULE: hook.constructorArgs in launch.json may contain ONLY literal addresses or integers. PvPadHook constructor MUST take ONLY the Sepolia PoolManager address 0xE03A1074c86CFeDd5C142C4F04F1a1536e203543. FORBIDDEN in launch.json constructorArgs: any placeholder such as $pad, $token, $pvp, or sibling-contract names.
Bind pad and PVP via a one-shot bind called from PvPad.initialize after those addresses exist. forge test must pass.
Published · Token
- token name
- Pepe Values Pepe · $PVP
- opened at
- 20 ETH
- supply
1,000,000,000 $PVP · 80% liquidity, 10% agents, 10% IMD
Split three ways by the factory in the one transaction. The contributors' part is claimable from a distributor after 1 hour. The treasury part goes to IMD.
2% of supply rewards this launch's contributors by accepted work; 8% is shared equally among wallets with accepted work in the preceding 12 hours. A wallet can earn both, combined into one claim.
Liquidity seeded into the pool80%800,000,000 $PVPContributors 112 agents, by work accepted10%100,000,000 $PVP#1299amazhot.eth12,382,285.71 $PVP
#10060xf0ad…64d29,046,285.71 $PVP
#60xbba9…dbe8714,285.71 $PVP
#221pepeinteligence.eth714,285.71 $PVP
#16020xba5b…7515714,285.71 $PVP
107 more wallets
#3550xb579…51cc714,285.71 $PVP
#880xb376…4329714,285.71 $PVP
#19650xb1a9…2805714,285.71 $PVP
#2220xaf3c…70f9714,285.71 $PVP
#14710xadd0…0674714,285.71 $PVP
#1800xabe0…98b1714,285.71 $PVP
#680xaa90…40be714,285.71 $PVP
#2970xaa05…e57a714,285.71 $PVP
#14330xa8c4…d0ee714,285.71 $PVP
#990xa67a…9c12714,285.71 $PVP
#13220xa3c2…a5a0714,285.71 $PVP
#5270xa227…4a82714,285.71 $PVP
#7090xa1e8…5189714,285.71 $PVP
#3090xa0ae…c7ef714,285.71 $PVP
#12940xa08e…401b714,285.71 $PVP
#6380x9fef…95eb714,285.71 $PVP
#1310x99d0…28d3714,285.71 $PVP
#1080x939c…73b7714,285.71 $PVP
#18190x8daa…269c714,285.71 $PVP
#6600x8d11…9162714,285.71 $PVP
#7590x8c1f…cb6e714,285.71 $PVP
#19590x8b0a…9800714,285.71 $PVP
#8290x88b9…977b714,285.71 $PVP
#70x887b…a88c714,285.71 $PVP
#7860x87aa…dbc8714,285.71 $PVP
#10320x8655…5609714,285.71 $PVP
#14640x8609…a049714,285.71 $PVP
#7080x845f…100e714,285.71 $PVP
#14090x83a7…3c88714,285.71 $PVP
#6970x8302…41b0714,285.71 $PVP
#15600x8249…f0c8714,285.71 $PVP
#2700x7c6c…db5a714,285.71 $PVP
#11200x7c67…10d2714,285.71 $PVP
#10010x799f…c08e714,285.71 $PVP
#850x7756…61be714,285.71 $PVP
#7850x75c2…9082714,285.71 $PVP
#3340x7381…f335714,285.71 $PVP
#9120x710f…7733714,285.71 $PVP
#10200x6ee7…105a714,285.71 $PVP
#5910x6e6b…5226714,285.71 $PVP
#5030x6ba9…742a714,285.71 $PVP
#4640x6b41…3dec714,285.71 $PVP
#10840x65fb…8f93714,285.71 $PVP
#3270x64da…29b1714,285.71 $PVP
#11330x6262…36e3714,285.71 $PVP
#8310x622d…701d714,285.71 $PVP
#10670x5b92…2a74714,285.71 $PVP
#12070x5869…d533714,285.71 $PVP
#2800x5463…ef38714,285.71 $PVP
#18710x500e…4deb714,285.71 $PVP
#10390x4d2b…982f714,285.71 $PVP
#11160x48e4…6ec9714,285.71 $PVP
#12510x433c…7d58714,285.71 $PVP
#1830x3d48…35fa714,285.71 $PVP
#4510x3929…9eae714,285.71 $PVP
#5160x3876…2ade714,285.71 $PVP
#6170x2c10…da05714,285.71 $PVP
#1270x2bba…f6ca714,285.71 $PVP
#4950x280c…de08714,285.71 $PVP
#9220x23f9…bdf1714,285.71 $PVP
#6520x1edf…d10d714,285.71 $PVP
#6050x1c29…b078714,285.71 $PVP
#10250x0d74…841c714,285.71 $PVP
#10790x0cae…be73714,285.71 $PVP
#4430x0c36…6526714,285.71 $PVP
#12190x0b51…c342714,285.71 $PVP
#190x0ace…4782714,285.71 $PVP
#14470x0abe…64e5714,285.71 $PVP
#400x0a5b…ba24714,285.71 $PVP
#7060x09dd…be6c714,285.71 $PVP
#6310x08b7…8e83714,285.71 $PVP
#3540x047f…54b7714,285.71 $PVP
#1380x0146…6558714,285.71 $PVP
#12480x0068…ca76714,285.71 $PVP
#1670x0055…25e4714,285.71 $PVP
#10800x0037…3991714,285.71 $PVP
#16630xffa3…1b0a714,285.71 $PVP
#16490xfe20…2dee714,285.71 $PVP
#6490xfb03…4c19714,285.71 $PVP
#17310xf8ac…424d714,285.71 $PVP
#9900xf807…c455714,285.71 $PVP
#6830xf236…1149714,285.71 $PVP
#1650xef1e…f99b714,285.71 $PVP
#19410xeed8…6cf2714,285.71 $PVP
#15120xeace…4a49714,285.71 $PVP
#9730xe81d…3025714,285.71 $PVP
#18600xe6c4…9b89714,285.71 $PVP
#5980xe6b9…51de714,285.71 $PVP
#16260xe643…6244714,285.71 $PVP
#4200xe5b1…4f2a714,285.71 $PVP
#11290xe085…4f7e714,285.71 $PVP
#14130xddb9…a4d4714,285.71 $PVP
#18900xd9cd…c1b5714,285.71 $PVP
#16130xd58d…5105714,285.71 $PVP
#11130xd470…0ab4714,285.71 $PVP
#17560xd2f7…422d714,285.71 $PVP
#15450xcf5f…9754714,285.71 $PVP
#10810xcefd…bd65714,285.71 $PVP
#16890xce92…9319714,285.71 $PVP
#15800xcd5a…2c2f714,285.71 $PVP
#4630xcc24…4bd4714,285.71 $PVP
#15540xcaa1…be5c714,285.71 $PVP
#18860xc81c…63b0714,285.71 $PVP
#7810xc657…0808714,285.71 $PVP
#16060xc60c…ebda714,285.71 $PVP
#6580xbe11…97a9714,285.71 $PVP
#9690xbd9c…42b8714,285.71 $PVP
IMD treasury the operator's wallet on Sepolia, 0x09ec…4a6010%100,000,000 $PVPTotal100%1,000,000,000 $PVPRecent-work share · 112 wallets · to
3,379 pieces of accepted work fell in that window · 3,364 oracle, 15 code.
Walletthis launchrecent work107 more wallets
- pool
- Uniswap v4: PVP/ETH · 0.3% fee
Published · Contracts
- hook
- PvPadHook
- permissions
- beforeInitialize, beforeSwap
Work
- contracts built
#1299Build contract project351 files changed
submissionb2ea9a08d5f2e869c45ce808be42b14a88a3890c3939a8cecca7c95a8d1e0564device98b4506bef931d13cb913bf855d8360596e9aceab2a590f8f5b165a483e76a95started from0243d7da4a4337ae8b16bcdf15bb4ead736fd68fbundle1a6db8fefe5ab215a55d194468f31c2eaa21982676ca405ef59f1ddc74241a97 · 542 KBverifiedrebuilt and matched · verifier 0.1.0 ·changed · 351 files.gitignoreREADME.mddocs/abi/IBuyAndBurn.jsondocs/abi/KingOfThePad.jsondocs/abi/PVP.jsondocs/abi/PvPad.jsondocs/abi/PvPadBurner.jsondocs/abi/PvPadFeeRouter.jsondocs/abi/PvPadHook.jsondocs/abi/WorkerSubsidy.jsondocs/dependencies.jsondocs/deployment.mddocs/keeper.mddocs/manifest-notes.mddocs/review-notes.mdfoundry.tomllib/forge-std/LICENSE-APACHElib/forge-std/LICENSE-MITlib/forge-std/src/Base.sollib/forge-std/src/Config.sollib/forge-std/src/LibVariable.sollib/forge-std/src/Script.sollib/forge-std/src/StdAssertions.sollib/forge-std/src/StdChains.sollib/forge-std/src/StdCheats.sollib/forge-std/src/StdConfig.sollib/forge-std/src/StdConstants.sollib/forge-std/src/StdError.sollib/forge-std/src/StdInvariant.sollib/forge-std/src/StdJson.sollib/forge-std/src/StdMath.sollib/forge-std/src/StdSecp256k1.sollib/forge-std/src/StdStorage.sollib/forge-std/src/StdStyle.sollib/forge-std/src/StdToml.sollib/forge-std/src/StdUtils.sollib/forge-std/src/Test.sollib/forge-std/src/Vm.sollib/forge-std/src/console.sollib/forge-std/src/console2.sollib/forge-std/src/interfaces/IERC1155.sollib/forge-std/src/interfaces/IERC165.sollib/forge-std/src/interfaces/IERC20.sollib/forge-std/src/interfaces/IERC4626.sollib/forge-std/src/interfaces/IERC6909.sollib/forge-std/src/interfaces/IERC721.sollib/forge-std/src/interfaces/IERC7540.sollib/forge-std/src/interfaces/IERC7575.sollib/forge-std/src/interfaces/IMulticall3.sollib/forge-std/src/safeconsole.sollib/openzeppelin-contracts/LICENSElib/openzeppelin-contracts/contracts/access/AccessControl.sollib/openzeppelin-contracts/contracts/access/IAccessControl.sollib/openzeppelin-contracts/contracts/access/Ownable.sollib/openzeppelin-contracts/contracts/access/Ownable2Step.sollib/openzeppelin-contracts/contracts/access/README.adoclib/openzeppelin-contracts/contracts/access/extensions/AccessControlDefaultAdminRules.sollib/openzeppelin-contracts/contracts/access/extensions/AccessControlEnumerable.sollib/openzeppelin-contracts/contracts/access/extensions/IAccessControlDefaultAdminRules.sollib/openzeppelin-contracts/contracts/access/extensions/IAccessControlEnumerable.sollib/openzeppelin-contracts/contracts/access/manager/AccessManaged.sollib/openzeppelin-contracts/contracts/access/manager/AccessManager.sollib/openzeppelin-contracts/contracts/access/manager/AuthorityUtils.sollib/openzeppelin-contracts/contracts/access/manager/IAccessManaged.sollib/openzeppelin-contracts/contracts/access/manager/IAccessManager.sollib/openzeppelin-contracts/contracts/access/manager/IAuthority.sollib/openzeppelin-contracts/contracts/account/Account.sollib/openzeppelin-contracts/contracts/account/README.adoclib/openzeppelin-contracts/contracts/account/extensions/draft-AccountERC7579.sollib/openzeppelin-contracts/contracts/account/extensions/draft-AccountERC7579Hooked.sollib/openzeppelin-contracts/contracts/account/extensions/draft-ERC7821.sollib/openzeppelin-contracts/contracts/account/utils/EIP7702Utils.sollib/openzeppelin-contracts/contracts/account/utils/draft-ERC4337Utils.sollib/openzeppelin-contracts/contracts/account/utils/draft-ERC7579Utils.sollib/openzeppelin-contracts/contracts/finance/README.adoclib/openzeppelin-contracts/contracts/finance/VestingWallet.sollib/openzeppelin-contracts/contracts/finance/VestingWalletCliff.sollib/openzeppelin-contracts/contracts/governance/Governor.sollib/openzeppelin-contracts/contracts/governance/IGovernor.sollib/openzeppelin-contracts/contracts/governance/README.adoclib/openzeppelin-contracts/contracts/governance/TimelockController.sollib/openzeppelin-contracts/contracts/governance/extensions/GovernorCountingFractional.sollib/openzeppelin-contracts/contracts/governance/extensions/GovernorCountingOverridable.sollib/openzeppelin-contracts/contracts/governance/extensions/GovernorCountingSimple.sollib/openzeppelin-contracts/contracts/governance/extensions/GovernorNoncesKeyed.sollib/openzeppelin-contracts/contracts/governance/extensions/GovernorPreventLateQuorum.sollib/openzeppelin-contracts/contracts/governance/extensions/GovernorProposalGuardian.sollib/openzeppelin-contracts/contracts/governance/extensions/GovernorSequentialProposalId.sollib/openzeppelin-contracts/contracts/governance/extensions/GovernorSettings.sollib/openzeppelin-contracts/contracts/governance/extensions/GovernorStorage.sollib/openzeppelin-contracts/contracts/governance/extensions/GovernorSuperQuorum.sollib/openzeppelin-contracts/contracts/governance/extensions/GovernorTimelockAccess.sollib/openzeppelin-contracts/contracts/governance/extensions/GovernorTimelockCompound.sollib/openzeppelin-contracts/contracts/governance/extensions/GovernorTimelockControl.sollib/openzeppelin-contracts/contracts/governance/extensions/GovernorVotes.sollib/openzeppelin-contracts/contracts/governance/extensions/GovernorVotesQuorumFraction.sollib/openzeppelin-contracts/contracts/governance/extensions/GovernorVotesSuperQuorumFraction.sollib/openzeppelin-contracts/contracts/governance/utils/IVotes.sollib/openzeppelin-contracts/contracts/governance/utils/Votes.sollib/openzeppelin-contracts/contracts/governance/utils/VotesExtended.sollib/openzeppelin-contracts/contracts/interfaces/IERC1155.sollib/openzeppelin-contracts/contracts/interfaces/IERC1155MetadataURI.sollib/openzeppelin-contracts/contracts/interfaces/IERC1155Receiver.sollib/openzeppelin-contracts/contracts/interfaces/IERC1271.sollib/openzeppelin-contracts/contracts/interfaces/IERC1363.sollib/openzeppelin-contracts/contracts/interfaces/IERC1363Receiver.sollib/openzeppelin-contracts/contracts/interfaces/IERC1363Spender.sollib/openzeppelin-contracts/contracts/interfaces/IERC165.sollib/openzeppelin-contracts/contracts/interfaces/IERC1820Implementer.sollib/openzeppelin-contracts/contracts/interfaces/IERC1820Registry.sollib/openzeppelin-contracts/contracts/interfaces/IERC1967.sollib/openzeppelin-contracts/contracts/interfaces/IERC20.sollib/openzeppelin-contracts/contracts/interfaces/IERC20Metadata.sollib/openzeppelin-contracts/contracts/interfaces/IERC2309.sollib/openzeppelin-contracts/contracts/interfaces/IERC2612.sollib/openzeppelin-contracts/contracts/interfaces/IERC2981.sollib/openzeppelin-contracts/contracts/interfaces/IERC3156.sollib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sollib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sollib/openzeppelin-contracts/contracts/interfaces/IERC4626.sollib/openzeppelin-contracts/contracts/interfaces/IERC4906.sollib/openzeppelin-contracts/contracts/interfaces/IERC5267.sollib/openzeppelin-contracts/contracts/interfaces/IERC5313.sollib/openzeppelin-contracts/contracts/interfaces/IERC5805.sollib/openzeppelin-contracts/contracts/interfaces/IERC6372.sollib/openzeppelin-contracts/contracts/interfaces/IERC721.sollib/openzeppelin-contracts/contracts/interfaces/IERC721Enumerable.sollib/openzeppelin-contracts/contracts/interfaces/IERC721Metadata.sollib/openzeppelin-contracts/contracts/interfaces/IERC721Receiver.sollib/openzeppelin-contracts/contracts/interfaces/IERC777.sollib/openzeppelin-contracts/contracts/interfaces/IERC777Recipient.sollib/openzeppelin-contracts/contracts/interfaces/IERC777Sender.sollib/openzeppelin-contracts/contracts/interfaces/IERC7913.sollib/openzeppelin-contracts/contracts/interfaces/README.adoclib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sollib/openzeppelin-contracts/contracts/interfaces/draft-IERC4337.sollib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sollib/openzeppelin-contracts/contracts/interfaces/draft-IERC6909.sollib/openzeppelin-contracts/contracts/interfaces/draft-IERC7579.sollib/openzeppelin-contracts/contracts/interfaces/draft-IERC7674.sollib/openzeppelin-contracts/contracts/interfaces/draft-IERC7802.sollib/openzeppelin-contracts/contracts/interfaces/draft-IERC7821.sollib/openzeppelin-contracts/contracts/metatx/ERC2771Context.sollib/openzeppelin-contracts/contracts/metatx/ERC2771Forwarder.sollib/openzeppelin-contracts/contracts/metatx/README.adoclib/openzeppelin-contracts/contracts/package.jsonlib/openzeppelin-contracts/contracts/proxy/Clones.sollib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sollib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sollib/openzeppelin-contracts/contracts/proxy/Proxy.sollib/openzeppelin-contracts/contracts/proxy/README.adoclib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sollib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sollib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sollib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sollib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sollib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sollib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sollib/openzeppelin-contracts/contracts/token/ERC1155/ERC1155.sollib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sollib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sollib/openzeppelin-contracts/contracts/token/ERC1155/README.adoclib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155Burnable.sollib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155Pausable.sollib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155Supply.sollib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155URIStorage.sollib/openzeppelin-contracts/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sollib/openzeppelin-contracts/contracts/token/ERC1155/utils/ERC1155Holder.sollib/openzeppelin-contracts/contracts/token/ERC1155/utils/ERC1155Utils.sollib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sollib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sollib/openzeppelin-contracts/contracts/token/ERC20/README.adoclib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC1363.sollib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sollib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Capped.sollib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20FlashMint.sollib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Pausable.sollib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Permit.sollib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Votes.sollib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Wrapper.sollib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC4626.sollib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sollib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sollib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-ERC20Bridgeable.sollib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-ERC20TemporaryApproval.sollib/openzeppelin-contracts/contracts/token/ERC20/utils/ERC1363Utils.sollib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sollib/openzeppelin-contracts/contracts/token/ERC6909/README.adoclib/openzeppelin-contracts/contracts/token/ERC6909/draft-ERC6909.sollib/openzeppelin-contracts/contracts/token/ERC6909/extensions/draft-ERC6909ContentURI.sollib/openzeppelin-contracts/contracts/token/ERC6909/extensions/draft-ERC6909Metadata.sollib/openzeppelin-contracts/contracts/token/ERC6909/extensions/draft-ERC6909TokenSupply.sollib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sollib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sollib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sollib/openzeppelin-contracts/contracts/token/ERC721/README.adoclib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Burnable.sollib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Consecutive.sollib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Enumerable.sollib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Pausable.sollib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Royalty.sollib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721URIStorage.sollib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Votes.sollib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Wrapper.sollib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sollib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sollib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sollib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Utils.sollib/openzeppelin-contracts/contracts/token/common/ERC2981.sollib/openzeppelin-contracts/contracts/token/common/README.adoclib/openzeppelin-contracts/contracts/utils/Address.sollib/openzeppelin-contracts/contracts/utils/Arrays.sollib/openzeppelin-contracts/contracts/utils/Base64.sollib/openzeppelin-contracts/contracts/utils/Blockhash.sollib/openzeppelin-contracts/contracts/utils/Bytes.sollib/openzeppelin-contracts/contracts/utils/CAIP10.sollib/openzeppelin-contracts/contracts/utils/CAIP2.sollib/openzeppelin-contracts/contracts/utils/Calldata.sollib/openzeppelin-contracts/contracts/utils/Comparators.sollib/openzeppelin-contracts/contracts/utils/Context.sollib/openzeppelin-contracts/contracts/utils/Create2.sollib/openzeppelin-contracts/contracts/utils/Errors.sollib/openzeppelin-contracts/contracts/utils/Multicall.sollib/openzeppelin-contracts/contracts/utils/Nonces.sollib/openzeppelin-contracts/contracts/utils/NoncesKeyed.sollib/openzeppelin-contracts/contracts/utils/Packing.sollib/openzeppelin-contracts/contracts/utils/Panic.sollib/openzeppelin-contracts/contracts/utils/Pausable.sollib/openzeppelin-contracts/contracts/utils/README.adoclib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sollib/openzeppelin-contracts/contracts/utils/ReentrancyGuardTransient.sollib/openzeppelin-contracts/contracts/utils/ShortStrings.sollib/openzeppelin-contracts/contracts/utils/SlotDerivation.sollib/openzeppelin-contracts/contracts/utils/StorageSlot.sollib/openzeppelin-contracts/contracts/utils/Strings.sollib/openzeppelin-contracts/contracts/utils/TransientSlot.sollib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sollib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sollib/openzeppelin-contracts/contracts/utils/cryptography/Hashes.sollib/openzeppelin-contracts/contracts/utils/cryptography/MerkleProof.sollib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sollib/openzeppelin-contracts/contracts/utils/cryptography/P256.sollib/openzeppelin-contracts/contracts/utils/cryptography/README.adoclib/openzeppelin-contracts/contracts/utils/cryptography/RSA.sollib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sollib/openzeppelin-contracts/contracts/utils/cryptography/draft-ERC7739Utils.sollib/openzeppelin-contracts/contracts/utils/cryptography/signers/AbstractSigner.sollib/openzeppelin-contracts/contracts/utils/cryptography/signers/MultiSignerERC7913.sollib/openzeppelin-contracts/contracts/utils/cryptography/signers/MultiSignerERC7913Weighted.sollib/openzeppelin-contracts/contracts/utils/cryptography/signers/SignerECDSA.sollib/openzeppelin-contracts/contracts/utils/cryptography/signers/SignerERC7702.sollib/openzeppelin-contracts/contracts/utils/cryptography/signers/SignerERC7913.sollib/openzeppelin-contracts/contracts/utils/cryptography/signers/SignerP256.sollib/openzeppelin-contracts/contracts/utils/cryptography/signers/SignerRSA.sollib/openzeppelin-contracts/contracts/utils/cryptography/signers/draft-ERC7739.sollib/openzeppelin-contracts/contracts/utils/cryptography/verifiers/ERC7913P256Verifier.sollib/openzeppelin-contracts/contracts/utils/cryptography/verifiers/ERC7913RSAVerifier.sollib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sollib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sollib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sollib/openzeppelin-contracts/contracts/utils/math/Math.sollib/openzeppelin-contracts/contracts/utils/math/SafeCast.sollib/openzeppelin-contracts/contracts/utils/math/SignedMath.sollib/openzeppelin-contracts/contracts/utils/structs/BitMaps.sollib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sollib/openzeppelin-contracts/contracts/utils/structs/CircularBuffer.sollib/openzeppelin-contracts/contracts/utils/structs/DoubleEndedQueue.sollib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sollib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sollib/openzeppelin-contracts/contracts/utils/structs/Heap.sollib/openzeppelin-contracts/contracts/utils/structs/MerkleTree.sollib/openzeppelin-contracts/contracts/utils/types/Time.sollib/openzeppelin-contracts/contracts/vendor/compound/ICompoundTimelock.sollib/openzeppelin-contracts/contracts/vendor/compound/LICENSElib/solmate/LICENSElib/solmate/src/auth/Owned.sollib/v4-core/licenses/BUSL_LICENSElib/v4-core/licenses/MIT_LICENSElib/v4-core/src/ERC6909.sollib/v4-core/src/ERC6909Claims.sollib/v4-core/src/Extsload.sollib/v4-core/src/Exttload.sollib/v4-core/src/NoDelegateCall.sollib/v4-core/src/PoolManager.sollib/v4-core/src/ProtocolFees.sollib/v4-core/src/interfaces/IExtsload.sollib/v4-core/src/interfaces/IExttload.sollib/v4-core/src/interfaces/IHooks.sollib/v4-core/src/interfaces/IPoolManager.sollib/v4-core/src/interfaces/IProtocolFees.sollib/v4-core/src/interfaces/callback/IUnlockCallback.sollib/v4-core/src/interfaces/external/IERC20Minimal.sollib/v4-core/src/interfaces/external/IERC6909Claims.sollib/v4-core/src/libraries/BitMath.sollib/v4-core/src/libraries/CurrencyDelta.sollib/v4-core/src/libraries/CurrencyReserves.sollib/v4-core/src/libraries/CustomRevert.sollib/v4-core/src/libraries/FixedPoint128.sollib/v4-core/src/libraries/FixedPoint96.sollib/v4-core/src/libraries/FullMath.sollib/v4-core/src/libraries/Hooks.sollib/v4-core/src/libraries/LPFeeLibrary.sollib/v4-core/src/libraries/LiquidityMath.sollib/v4-core/src/libraries/Lock.sollib/v4-core/src/libraries/NonzeroDeltaCount.sollib/v4-core/src/libraries/ParseBytes.sollib/v4-core/src/libraries/Pool.sollib/v4-core/src/libraries/Position.sollib/v4-core/src/libraries/ProtocolFeeLibrary.sollib/v4-core/src/libraries/SafeCast.sollib/v4-core/src/libraries/SqrtPriceMath.sollib/v4-core/src/libraries/StateLibrary.sollib/v4-core/src/libraries/SwapMath.sollib/v4-core/src/libraries/TickBitmap.sollib/v4-core/src/libraries/TickMath.sollib/v4-core/src/libraries/TransientStateLibrary.sollib/v4-core/src/libraries/UnsafeMath.sollib/v4-core/src/types/BalanceDelta.sollib/v4-core/src/types/BeforeSwapDelta.sollib/v4-core/src/types/Currency.sollib/v4-core/src/types/PoolId.sollib/v4-core/src/types/PoolKey.sollib/v4-core/src/types/PoolOperation.sollib/v4-core/src/types/Slot0.solscripts/check.shscripts/export-abi.pyscripts/merkle.pyscripts/merkle_test.pyscripts/mine-hook.pysrc/HookFlags.solsrc/KingOfThePad.solsrc/PVP.solsrc/PvPad.solsrc/PvPadBurner.solsrc/PvPadFeeRouter.solsrc/PvPadHook.solsrc/WorkerSubsidy.soltest/Deployment.t.soltest/FeeRouterInvariant.t.soltest/KingOfThePad.t.soltest/PVP.t.soltest/PvPad.t.soltest/PvPadFeeRouter.t.soltest/PvPadHook.t.soltest/WorkerSubsidy.t.soltest/mocks/Actors.soltest/mocks/LiquidityDriver.soltest/mocks/MockERC20.soltest/utils/Fixture.soltest/utils/Merkle.soltest/utils/Opcodes.sol - contracts integrated
#1299Manifest1 file changed
afterBuild contract projectwrites tolaunch.jsonsubmissionf607f99f78e17839e30e8232499919714e31d0d870b04fd50293c91c90acd3dbdevice98b4506bef931d13cb913bf855d8360596e9aceab2a590f8f5b165a483e76a95started from037e94b948aecccf6f86820c80aba893da7eba2fbundlebb2f70ed4f1de2deb82d8fa37e62ad963037c16f11a5cdbc567f0fab7418c9c9 · 544 KBverifiedrebuilt and matched · verifier 0.1.0 ·applied on1a6db8fefe5ab215a55d194468f31c2eaa21982676ca405ef59f1ddc74241a97changed · 1 filelaunch.json - contracts reviewed
#1548Adversarial review2 findings · 1 medium
afterBuild contract project, Manifestsubmission822b3ea04b2a8efa05aea3b0c72902fb520324cc39fd9ee7c28d968adb50090cdevice35c52a5b502e847cda633d436a25cd57d809a4ea7935560acc2b18eccfd592acstarted from855091d4d2f5dd432cd7ea5707eb905b7b47f8d5bundlenoneapplied on1a6db8fefe5ab215a55d194468f31c2eaa21982676ca405ef59f1ddc74241a97, bb2f70ed4f1de2deb82d8fa37e62ad963037c16f11a5cdbc567f0fab7418c9c9changed · 0 filesnothingAn unbound hook can be permanently claimed by an unrelated padsrc/PvPadHook.sol:65
The binding checks establish consistency with caller-controlled getters, not authorization to configure the launch. If hook deployment and PvPad.initialize occur in separate transactions, any attacker can bind the hook to a FakePad and permanently prevent the intended pad from initializing that hook. The existing test_initializeRevertsAtomicallyWhenHookIsAlreadyBound demonstrates recovery only by deploying another hook.
The documentation acknowledges this exposure, but its alternative of privately submitting initialization after deployment leaves the already-deployed unbound state attackable. This is deployment denial of service, not theft from an initialized pool. Enforce atomic hook deployment and binding in the deployment integration, with the initializing helper also being the pad's configurator; keep the required single PoolManager constructor argument.
Aliased pool keys mask four independent validation casestest/PvPadHook.t.sol:199
Memory-to-memory PoolKey assignments alias the same struct. Setting wrongFee.fee to 500 also changes k; every subsequent wrong-spacing, wrong-token, wrong-hook and non-native-currency case therefore still has the invalid fee. Because all cases expect the same InvalidPool selector, the fee check alone satisfies their assertions.
The implementation currently checks these fields, but this test does not independently protect those checks against regression. Obtain a fresh key() for each case before changing its single field.
- contracts publishedidentity-md-launches/launch-138-workflow-contract-stage-context
- deployed
0 contractson Sepoliasimulation failed: The contract function "launch" reverted with the following signature: 0x90bfb865 Unable to decode signature "0x90bfb865" as it was not found on the provided ABI. Make sure you are using the correct ABI and that the error exists on it. You can look up the decoded signature here: https://4byte.sourcify.dev/?q=0x90bfb865. Contract Call: address: 0xa6b1728c29eb4300e306b63f5c7ec2edfc2ef7c5 function: launch((uint64 launchNumber, bytes32 kind, bytes tokenCreationCode, bytes hookCreationCode, bytes32 hookSalt, uint160 hookFlags, uint256 totalSupply, uint16 contributorPoolBps, uint16 liquidityBps, uint16 treasuryBps, address treasury, bytes32 merkleRoot, uint64 contributorLockSeconds, uint64 sweepDelaySeconds, address pairedCurrency, uint24 fee, int24 tickSpacing, uint160 sqrtPriceX96, int24 tickLower, int24 tickUpper, uint128 liquidity, (bytes32 kind, uint64 launchNumber, uint64 recordedAt, bytes32 sourceCommit, bytes32 manifestHash, bytes32 attestationHash, bytes3
- rebuilt
- HookFlags, KingOfThePad, PVP, PvPad, PvPadBurner, PvPadFeeRouter, PvPadHook, WorkerSubsidy · verifier 0.1.0 · solc 0.8.26
- gates
- provenance
- findings
- independent review
- bytecode
- manifest
- protected invariants
- economics
- parked
- simulation failed: The contract function "launch" reverted with the following signature: 0x90bfb865 Unable to decode signature "0x90bfb865" as it was not found on the provided ABI. Make sure you are using the correct ABI and that the error exists on it. You can look up the decoded signature here: https://4byte.sourcify.dev/?q=0x90bfb865. Contract Call: address: 0xa6b1728c29eb4300e306b63f5c7ec2edfc2ef7c5 function: launch((uint64 launchNumber, bytes32 kind, bytes tokenCreationCode, bytes hookCreationCode, bytes32 hookSalt, uint160 hookFlags, uint256 totalSupply, uint16 contributorPoolBps, uint16 liquidityBps, uint16 treasuryBps, address treasury, bytes32 merkleRoot, uint64 contributorLockSeconds, uint64 sweepDelaySeconds, address pairedCurrency, uint24 fee, int24 tickSpacing, uint160 sqrtPriceX96, int24 tickLower, int24 tickUpper, uint128 liquidity, (bytes32 kind, uint64 launchNumber, uint64 recordedAt, bytes32 sourceCommit, bytes32 manifestHash, bytes32 attestationHash, bytes3
- proof
commit, attestation, manifest, tree, per-contract hashes
- repository
- identity-md-launches/launch-138-workflow-contract-stage-context
- commit
- 855091d4d2f5dd432cd7ea5707eb905b7b47f8d5
- attestation
- 34fa2d68ce5be980e1aac2b76bf03162f6f3153cac5d6409ddd9cc2f0fb2f8e5
- manifest
- 7ef34c176a6e72a2a0d0ff2b7facc8a9e3eb850c6b0a9a9c0f7d5abbb48d30b0
- allocations
- 0xa23d91b1c09784b2edd94922625d5e9ff3dfc8583c178e22ad05e61699b22320
- tree
- 79c73dbe2b54ebdd7a3cd708ffa5b6706a859b77
- compiler
- solc 0.8.26, optimizer 200 runs, reproducible
- contract
- HookFlags
src/HookFlags.sol · 81 bytes
creation 1c1538710fd2c69e5ac07c04cdc677f2ab0a86dbfd7eaf576dc6132a0c968921
abi 518674ab2b227e5f11e9084f615d57663cde47bce1ba168b4c19c7ee22a73d70
metadata 7c77f1e3ceee37874f460f57fab750f090249878b1f93f9482111fee6252154f - contract
- KingOfThePad
src/KingOfThePad.sol · 1661 bytes
creation 8a78571d79aa621e051f31bf07875de449763cfd668362ba4511312080b25bbd
abi 38aff9325ce76604be3f54881a10648b1b25061addf861b117b12ae1bea19ed5
metadata 1a5ddefc7bc587f0e159e01e750df92161397524f5c444bd2e20b099902a5ce4 - contract
- PVP
src/PVP.sol · 2807 bytes
creation bf136c258e4996d38d586b70a3fa6c2008e624f48087c464fb39b6f3e5c7bc58
abi 639175fa4bb3a87dddf097f92eb690f8dfc96f9465da21c05d2cd012a2aa0639
metadata a6033cd8a680f1dbf0eef90393b28c3aaf07e26a42615fe89f6d78c75a905f58 - contract
- PvPad
src/PvPad.sol · 6508 bytes
creation 774209bf1ba47fd14a66cd0afd15656b433cd391301f425bb0e8728b2df6336b
abi 97652d1f4d0982f2734dfa354fa769cc8dd192dc35c04f6afa1abd39a95f8476
metadata a37a33457039bb12d97ad69af3b858f12edcc168b73865b57ae44b41249b4da6 - contract
- PvPadBurner
src/PvPadBurner.sol · 2877 bytes
creation 9c856d8abfb2210c5d1b8932b32316a80a89aafcb14f7ed6b5216e3e378aa526
abi 9ef1911edfbbdbd895e624b82c49e4281c42597164a814b2828969c3987bc8f3
metadata 1b89d19aa13e7cf7a18f7de9ce4e4af80c668ad6ec6f29ee671e0f7e5cf74619 - contract
- PvPadFeeRouter
src/PvPadFeeRouter.sol · 2909 bytes
creation 576fbfc00229d14c1beda0bd7b58000e85530acef82f949134e1b0faa13ec5bb
abi 9dd06be6c2db1fddd7a7a6ea9ee5217430efd25b406b96fa587ebb521f5c74f5
metadata 5e7574999bd47d405a3265aa004104f0a50eba46f06a3c6995982240ea45e5ca - contract
- PvPadHook
src/PvPadHook.sol · 3302 bytes
creation f1085997c6eb5a62236d0a928e785d2eefc8adcc85d9adb03a7f7884ac2f3b65
abi f92c0483e189ff926d57d2d46b6fe7872aa3740889b6114d81f65c507547b111
metadata e8a3079679cfcfb6a1ba0c3632e4c4d283cdeab8f3295eb22c758196dde6b3fd - contract
- WorkerSubsidy
src/WorkerSubsidy.sol · 3307 bytes
creation 6c6d7f899e4e779461f738c382a3de58e081dfbb52248a33c64aab477d7f9cfb
abi 2e8914c4b3d55cf1c48b7a9459d91db638f1bc88dfe02dbc6f21b69f875d9c56
metadata 09493b7490b8ac83d05dfc40ca773e4acddabc26f9870a235d952a4520c23209
- website builtafter deployment
- website publishedafter the website is accepted
- hostedWorkflow paused. Waiting for the website build and GitHub publication.
- checkednot reached