{"rewardSnapshot":null,"merkleRoot":null,"claims":null,"id":"1522cb0f-6fc1-4423-aea1-4569851a1856","launchNumber":1139,"kind":"evm_contracts","status":"live","chainId":1,"sourceRepoUrl":"https://github.com/identity-md-launches/launch-1139-deploy-audit-fixed-pawn-contracts","sourceCommit":"f6f7d1e5b521a0490732b996bb2c54473bd5f68f","parkedReason":null,"artifactCount":4,"manifestHash":"9c3accbb4b64195dba212ffddedac880d1e0036d98d4974ed7ec04e48c678180","attestationHash":"6f9a60d3e783a9597205bbb085e8a4001a8c3290645823eb657c85d3ce005476","attestation":{"treeHash":"ca17b00bff116c8a7cd98c9543a593ed261dac21","verifierVersion":"0.1.0+c4d32abc","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":"CollateralVault","path":"src/CollateralVault.sol","abiHash":"7d48c163bcf8880845f94ae8fb3e89c8d2845d741c10b61ba68cef364ae91f71","opcodes":{"callcode":false,"delegatecall":false,"selfdestruct":false},"metadataHash":"7e1498bf42d4755e5d3de275fba77cf4536a73f3892e7a1f4ae29455fe086673","creationCodeHash":"9fe1718816d62e2329713271031aff508373cb8cc179c4b106245e40bb467d39","deployedCodeHash":"28a86c99177e697d2f10d9f9872922c0c05f617f2d3b5b48eab2f4bbe1f04973","creationCodeBytes":5994,"deployedCodeBytes":5769},{"name":"FloorRelay","path":"src/FloorRelay.sol","abiHash":"ba3f8fbbd0373a2d5036be211c3ac23bafdafa9be2dceb998217acb2947a4406","opcodes":{"callcode":false,"delegatecall":false,"selfdestruct":false},"metadataHash":"1a36d6d97317b6650483f501ded34013a9d9913ceee6554ca5352b3f67b5989b","creationCodeHash":"33ff0378ec33c807b2c5d078b39d311405118687a3a3f963de33de2624b3dcfe","deployedCodeHash":"fb421e76420e20087c0ecaa03543699f7c2e38ce97d5a43df2cebd48cab2549a","creationCodeBytes":1910,"deployedCodeBytes":1884},{"name":"LaunchToken","path":"src/LaunchToken.sol","abiHash":"38880b8e56d42ce900f744a7908c7139632a49f1c3f33385c64ceaed29d37bee","opcodes":{"callcode":false,"delegatecall":false,"selfdestruct":false},"metadataHash":"144176d2b8f9a1994e1d96936ca0d7c98451f5026cf2b39132e0aba6eb446222","creationCodeHash":"a64c09f3e5c6f569dfecf476293e251fdb23ba8836947878dc6ea77d8492b697","deployedCodeHash":"bde0b07f1d23914f145ade09d89897e06bcb7ab8dff09dc1c5a26c2c120fb30f","creationCodeBytes":2422,"deployedCodeBytes":1489},{"name":"LendingPool","path":"src/LendingPool.sol","abiHash":"3fdeab41a8974b4a00a24e2f43b1b0add6ff821bad49a9726d8d0e63ddaa73a2","opcodes":{"callcode":false,"delegatecall":false,"selfdestruct":false},"metadataHash":"8bf862651984800ce130f6341a289f69bf91dbf9237ba4b439b804b1a4371556","creationCodeHash":"d558b86081fddf9d432aaa435dfda77c7761d6f0e8b1229d05e41aab0d5c2133","deployedCodeHash":"a48fcad9254c2ddfe05ca22d00795ef1e76728dd2018787ca2c7d3277e6cea9a","creationCodeBytes":13563,"deployedCodeBytes":12138},{"name":"LockDiscount","path":"src/LockDiscount.sol","abiHash":"66d0a871bf5ed26330b07e063ed358029222838c5b7209e053bccef75624f367","opcodes":{"callcode":false,"delegatecall":false,"selfdestruct":false},"metadataHash":"a604c1911a15e82478545b8a012332a991e53a8a88858a46d7bcd844cc4ca3db","creationCodeHash":"881858532b13793dd3599fc838b37b1fc1ca1a0315db66759340a03b29e32dc9","deployedCodeHash":"85e1ec9d15988a42cc5857b9a28061bf41b27b22edb9d849fd7a50bc43300487","creationCodeBytes":3048,"deployedCodeBytes":2765},{"name":"MilestoneBurn","path":"src/MilestoneBurn.sol","abiHash":"9d80884c65cdea030e631d6f2fd725179d47d55a1fc6561d3800cfd90bc9a893","opcodes":{"callcode":false,"delegatecall":false,"selfdestruct":false},"metadataHash":"60e0c2da6322e60425af9538ab03091f0547cbe7dad8f92f4e46bd5e11dab16d","creationCodeHash":"7f4e80a449a295ab8761a559159bb101b1b88cce716464e1662daae58d0354a6","deployedCodeHash":"e715378482b3b579e8a0daecb9ac1cc063d637b5cdb486893e0a32403ca0a468","creationCodeBytes":6469,"deployedCodeBytes":5012},{"name":"OracleAttestation","path":"src/OracleAttestation.sol","abiHash":"518674ab2b227e5f11e9084f615d57663cde47bce1ba168b4c19c7ee22a73d70","opcodes":{"callcode":false,"delegatecall":false,"selfdestruct":false},"metadataHash":"cf442a8993771d7103d978aa95b70f68b3e7284626ef114a4cb210299364968c","creationCodeHash":"512f480ab92182c6d073da377db24c4beb6454889b98a24f24e9daaf23a78066","deployedCodeHash":"3c55237b3869f93f3e570793afec9785f20a4ee7cd0a7798a418838c833228e0","creationCodeBytes":31,"deployedCodeBytes":3},{"name":"PawnShop","path":"src/PawnShop.sol","abiHash":"0990c160149ec460595c077081c3b8e8f893b0c0b05646c9525e84c5528bbaf9","opcodes":{"callcode":false,"delegatecall":false,"selfdestruct":false},"metadataHash":"93f29d38537eeab8c0dec934b3cb2dcb19190e011b51f994e3cb901d9bc39092","creationCodeHash":"0016012cc3d2af2a056b6411f1a2000718c0d0813406af55500a3f6aadd597aa","deployedCodeHash":"1dec10d3342e0e4382bfe3e534b196a0d5ed9dcc1c7138fd50fb63d60fbda0bd","creationCodeBytes":47161,"deployedCodeBytes":21853},{"name":"VaultFactory","path":"src/VaultFactory.sol","abiHash":"a9a8034f6f6013c0be2627ee7952a5184d135880f8f23dd1a2534d169e03c065","opcodes":{"callcode":false,"delegatecall":false,"selfdestruct":false},"metadataHash":"4b65be54bfdc73da1f1b9f3636d3a344acffee896b8fce48628e910003d3b229","creationCodeHash":"34d12a4f71e6e213dc55f1e86093448830dc7be0b221fc194e44e2d9e57f3bd3","deployedCodeHash":"1f4a39481e46936405af05e44c9899bab7ed997bd2eaa4868d0735f921770a85","creationCodeBytes":6439,"deployedCodeBytes":6394}],"manifest":{"kind":"evm_contracts","notes":"Ethereum mainnet (chain 1). Deploys the accepted audit-fixed Pawn source unchanged, as it stands after the launch-review fixes to PawnShop, LendingPool and VaultFactory (write-off realisation, auction-open clock, vault receiver check, release-vesting reconciliation); none of those changed a constructor. FloorRelay: no constructor arguments; IMD_ATTESTER 0x5598Aa9146215Bc13eb26f2c692Ad1461Fd32982 and CHAIN 1 are constants in source. PawnShop(owner, token, weth, attester): owner and feeRecipient are $owner; token is the existing PAWN token 0x4f2bacee5f2e7ce3f48dfbd635d96e9a8fcbe478; WETH is mainnet 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; attester is the FloorRelay deployed first. Its constructor deploys LendingPool(owner=$owner, WETH, shop), a VaultFactory bound to the shop, and an active LockDiscount(token, shop) stored as discountModule(); it presets the identity.md collection with question hash 0x71ed43868c5c61fe21b72bbbdcc09913d4952a113a393c526e49f3289edf4be1 and leaves newLoansPaused true. The brief's 'CollateralVault implementation' has no counterpart in the accepted source: VaultFactory creates a full CollateralVault per loan (clones would need DELEGATECALL, which the launch forbids), so no implementation address exists. LockDiscount(token, shop) listed here is the brief's standalone module; it is distinct from PawnShop.discountModule() and is not activated by deployment. MilestoneBurn(token, setter, signer, shop): setter is $owner (one-time question setter), signer is FloorRelay as the shop's initial attester (it later follows the shop through syncSigner), shop is PawnShop; its question hash stays unset until the owner sets it. All constructors are nonpayable, make no external calls, send no ETH and need no initialization; runtime sizes build at 21,853 bytes for PawnShop and under 13 KB for every other contract, within EIP-170. This manifest is a deployment plan, not a deployment record. After deployment the handoff must verify the unchanged source on Etherscan and record the four factory addresses plus PawnShop.lendingPool(), PawnShop.vaultFactory() and PawnShop.discountModule() (marking which LockDiscount is active) in the launch record, web/deployment.json, web/public/imd-deployment.json and keeper/config.json with the audit-fixed ABIs from docs/abi, then publish the site under its existing name against them. No addresses are invented here.","contracts":[{"contract":"FloorRelay","constructorArgs":[]},{"contract":"PawnShop","constructorArgs":["$owner","0x4f2bacee5f2e7ce3f48dfbd635d96e9a8fcbe478","0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","$contract:FloorRelay"]},{"contract":"LockDiscount","constructorArgs":["0x4f2bacee5f2e7ce3f48dfbd635d96e9a8fcbe478","$contract:PawnShop"]},{"contract":"MilestoneBurn","constructorArgs":["0x4f2bacee5f2e7ce3f48dfbd635d96e9a8fcbe478","$owner","$contract:FloorRelay","$contract:PawnShop"]}]},"manifestError":null},"attestationFailure":null,"deployFailure":null,"policyVersion":27,"economics":null,"poolFee":null,"requester":"0x23e5d7a7b4ea19530ec39c67cd46aa8c10d15acf","admissionChecks":[{"name":"provenance","detail":"9 node(s) accepted at f6f7d1e5","status":"passed"},{"name":"findings","detail":"9 accepted submission(s), no unresolved blocking findings","status":"passed"},{"name":"independent_review","detail":"1 independent review(s)","status":"passed"},{"name":"bytecode","detail":"9 contract(s) clean and reproducible","status":"passed"},{"name":"manifest","detail":"4 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 15.20ms (13.91ms 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-09T08:00:32.992Z","updatedAt":"2026-10-09T08:03:01.868Z","jobs":[{"id":"e3895c84-70b7-4595-8a5c-ecf7a5cf5699","objective":"Deploy the audit-fixed Pawn contracts from github.com/identity-md-launches/launch-1031-workflow-frontend-stage-context (main) on Ethereum mainnet, in this order, with no changes to the source:\n1. FloorRelay: constants as in source (IMD attester per api.imdnotdead.fun, chain 1). No constructor args.\n2. PawnShop: owner = $owner; token = 0x4f2bacee5f2e7ce3f48dfbd635d96e9a8fcbe478; WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; attester = $contract:FloorRelay; identity.md questionHash preset 0x71ed43868c5c61fe21b72bbbdcc09913d4952a113a393c526e49f3289edf4be1; newLoansPaused true. Its constructor deploys LendingPool and the CollateralVault implementation.\n3. LockDiscount: token and $contract:PawnShop, as its constructor requires.\n4. MilestoneBurn: token, $contract:PawnShop (or attester $contract:FloorRelay, whichever its constructor takes).\nVerify source on Etherscan. Record every address, including LendingPool read from PawnShop.lendingPool(), in the launch record, launch.json, web/deployment.json, web/public/imd-deployment.json and keeper/config.json with the audit-fixed ABIs, and publish the site under the same name against them.","state":"completed","attachedAt":"2026-10-09T08:00:32.992Z"}],"artifacts":[{"role":"other","name":"FloorRelay","address":"0x1ff0fb56f9a6c5c5c8201906d487ec4d8f5afc50","creationCodeHash":"33ff0378ec33c807b2c5d078b39d311405118687a3a3f963de33de2624b3dcfe","txHash":"0x9a3354d2f181763c40663d24fc771f9d63c05fd6e873c470cc072002300ab6e3","blockNumber":26153528,"verifiedAt":"2026-10-09T08:06:19.267Z","verifyFailure":null},{"role":"other","name":"LockDiscount","address":"0x071b4d8f098b2a3611996a41da3c2c96d53482d7","creationCodeHash":"881858532b13793dd3599fc838b37b1fc1ca1a0315db66759340a03b29e32dc9","txHash":"0x9a3354d2f181763c40663d24fc771f9d63c05fd6e873c470cc072002300ab6e3","blockNumber":26153528,"verifiedAt":"2026-10-09T08:05:37.833Z","verifyFailure":null},{"role":"other","name":"MilestoneBurn","address":"0x45098bc496b3fdc870f89b8785047fb0e19ee99a","creationCodeHash":"7f4e80a449a295ab8761a559159bb101b1b88cce716464e1662daae58d0354a6","txHash":"0x9a3354d2f181763c40663d24fc771f9d63c05fd6e873c470cc072002300ab6e3","blockNumber":26153528,"verifiedAt":"2026-10-09T08:05:43.364Z","verifyFailure":null},{"role":"other","name":"PawnShop","address":"0xf0d9300d7d891bc842da540cc4ddef050da9bcd4","creationCodeHash":"0016012cc3d2af2a056b6411f1a2000718c0d0813406af55500a3f6aadd597aa","txHash":"0x9a3354d2f181763c40663d24fc771f9d63c05fd6e873c470cc072002300ab6e3","blockNumber":26153528,"verifiedAt":"2026-10-09T08:06:45.052Z","verifyFailure":null}],"allocations":[]}