{"rewardSnapshot":null,"merkleRoot":null,"claims":null,"id":"f3f405cd-9de4-496c-af14-f208d6600e76","launchNumber":2368,"kind":"evm_contracts","status":"live","chainId":1,"sourceRepoUrl":"https://github.com/identity-md-launches/launch-2368-the-imd-daily","sourceCommit":"d5063fa05882a292f2dccf9defeb57c09bcb9387","parkedReason":null,"artifactCount":2,"manifestHash":"d2ecaad60d77124312cc6f50bc24167cd52b6437f297e3d72ff47065ebced7a4","attestationHash":"f30c61ab7c8b07913525d579e860ea0100fb49a5cd4ecf1ae864389978a5ca0a","attestation":{"treeHash":"379b7df585a1b602a077cd25fb0329b2c5c070e7","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":"IMDDaily","path":"src/IMDDaily.sol","abiHash":"cb9d868d94243c297f852a84b9bbfeb186c26816a9fb3e8307663b8e0585f115","opcodes":{"callcode":false,"delegatecall":false,"selfdestruct":false},"metadataHash":"b841b380ef66091c1011e65dbbebd0e3280ee0ad8d407cc62bf7c0e39a8d491f","creationCodeHash":"610d846e62051593a847f482011f7a90b023c7f3b739a99f93ae5591954d75d3","deployedCodeHash":"89256b8c0a6b22e9b2d17b0579c68d6a62f3a64d00ce025966477a5247fe463f","creationCodeBytes":10611,"deployedCodeBytes":9942},{"name":"IMDDailyVault","path":"src/IMDDailyVault.sol","abiHash":"fed625e52c66a96d8d09b4163e810a3d8a5972047fc05df90cf16b6772653b8a","opcodes":{"callcode":false,"delegatecall":false,"selfdestruct":false},"metadataHash":"8290313c660cb45e877b2342b91ad72795fa9a94abcc75b5f655aa9ac7fbf5f6","creationCodeHash":"4f4915063f5e1d8fc57b4691f26023c05de2d0e6209228fedee5e31894e7af8e","deployedCodeHash":"48b8292b2216af05d9c755870dd076ada057a266fd3d5798661379a2956a3389","creationCodeBytes":1664,"deployedCodeBytes":1632}],"manifest":{"kind":"evm_contracts","notes":"The IMD Daily (symbol IMDDAILY): non-upgradeable ERC1155 open-edition newspaper collectibles on Ethereum mainnet (chain id 1), contracts only. No new ERC20, pool, liquidity, royalties, proxy, initializer or post-deployment setup. Both contracts inherit DailyAuthority, which hardcodes the publisher 0x48E4E74fE1d0c14404cEB57B9fec5b21329C6ec9 as the sole authority (owner() returns it; there is no ownership transfer) and the existing Ethereum IMD token 0xD34a99Bc0f67aE1bbd63C660e6d0b0dd03E263B7 (18 decimals, re-checked onchain at every mint) as the only payment token. Neither the factory (msg.sender) nor the launch wallet (tx.origin) receives any role, so no owner argument exists. Deployment order: 1) IMDDailyVault, constructor(), no arguments. It receives all IMD mint proceeds and only the publisher may withdraw, always to the publisher wallet, in any positive partial amount up to the actual balance; it exposes balance() and totalWithdrawn and emits Withdrawal events. 2) IMDDaily, constructor(address vault_) filled by $contract:IMDDailyVault, the vault deployed in step 1. The constructor stores the address as an immutable and rejects zero, publisher and token addresses; it makes no external call, so empty-chain construction succeeds, and the vault's PUBLISHER/PAYMENT_TOKEN getters plus IMD decimals are verified at mint. Only the publisher can createIssue, which assigns the next sequential token id, records title, editorial date, PDF URL, cover URL, metadata URI and SHA-256 hashes immutably, and opens a mint window from the publication block.timestamp to exactly 86400 seconds later (mint requires publishedAt <= block.timestamp < closesAt). Price is the constant 0.1 IMD (100000000000000000 base units) per copy, uncapped supply and uncapped per-wallet quantity inside the window, no free or owner mint, no reopening, extension, URI or hash changes. mint(id, quantity, recipient, deadline) pulls quantity*PRICE via SafeERC20 straight into the vault with exact-balance checks, counts totalCollected for paid mints only (donations are never counted), then safe-mints under ReentrancyGuard so a reverting payment or receiver callback rolls back everything. All functions are nonpayable; ETH is gas only. Views: getIssue, issueStatus (supply, publishedAt, closesAt, price, available), isAvailable, issueExists, issueCount, totalSupply(id), quote; events IssuePublished, CopiesMinted and URI support paginated indexing. Zero issues and zero copies exist at deployment; the publisher publishes real issues later through the separate website job. Solidity 0.8.26, Cancun, optimizer 200 runs, bytecode_hash none; OpenZeppelin v5.4.0 subset vendored as ordinary files in lib/. Runtime sizes are within EIP-170 and initcode within EIP-3860; test/Deployment.t.sol rehearses this exact two-step CREATE2 order in a single factory call. Integration guide, metadata schema and ABIs are in docs/ and abi/.","contracts":[{"contract":"IMDDailyVault","constructorArgs":[]},{"contract":"IMDDaily","constructorArgs":["$contract:IMDDailyVault"]}]},"manifestError":null},"attestationFailure":null,"deployFailure":null,"policyVersion":27,"economics":null,"poolFee":null,"requester":"0x48e4e74fe1d0c14404ceb57b9fec5b21329c6ec9","admissionChecks":[{"name":"provenance","detail":"8 node(s) accepted at d5063fa0","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":"2 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 3.52ms (3.38ms 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-21T07:07:44.093Z","updatedAt":"2026-10-21T07:08:27.020Z","jobs":[{"id":"ae8a24f3-a95d-4905-aff8-222404e085e6","objective":"Build, test, review and DEPLOY THE IMD DAILY collectible newspaper contracts on Ethereum mainnet. Publish the source on GitHub and verify deployed source on Etherscan. This is a NEW independent project. Never modify UNLOCK or its websites/contracts. No new ERC20, trading pool or liquidity. This job is CONTRACTS ONLY. A separate website job will later provide public PDF reading and the publisher dashboard.\n\nToken name: The IMD Daily\nToken symbol: IMDDAILY\nTotal supply: 0 at deployment; uncapped ERC1155 open editions, mintable only during each issue's 24-hour window. These fields describe the NFT collection, NOT an ERC20.\n\nPublisher and sole revenue withdrawal authority: 0x48E4E74fE1d0c14404cEB57B9fec5b21329C6ec9. Hardcode this authority or pass it explicitly; never leave authority with a factory or service wallet. Payment token is existing Ethereum IMD at 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7. Verify its decimals onchain. Price is exactly 0.1 IMD per copy, immutable. ETH is for transaction gas only.\n\nCOLLECTION: Use non-upgradeable ERC1155. One sequential token ID per newspaper issue; identical collectible copies share that issue's metadata. Only the publisher can create an issue, recording its title, editorial date, PDF URL, cover URL, metadata URI and immutable content hashes. Metadata must identify the issue, link its PDF and use its cover as the image. Edition date does not control mint eligibility. The window starts at the successful publication transaction's block.timestamp and closes exactly 86400 seconds later. Mint requires start <= block.timestamp < close. No reopening, extending, backdating eligibility, changing published files/URIs/hashes or price, and no free/owner minting. No upgrade, hidden bypass or mutable base URI.\n\nUnlimited issues over time. No per-issue supply cap or wallet cap during the window. Users may repeatedly mint any positive quantity they can afford and fit within transaction gas limits. After expiry that issue's supply can never increase, while transfers and public metadata remain available. Include per-issue totalSupply, timestamps, price and availability views plus publication/mint events suitable for paginated indexing. No secondary royalties. NFT ownership is a collectible, not copyright or a financial-return entitlement.\n\nPAYMENT/VAULT: A distinct vault receives IMD mint proceeds atomically with safe minting. Use SafeERC20 and reentrancy protection, including malicious ERC1155 receiver callbacks; failed payment or mint rolls back everything. Check amount multiplication, zero quantity, nonexistent IDs, insufficient balance/approval and deadline. Reject native ETH payments. Only the publisher wallet may withdraw vault funds to that same wallet; no other payout destination or administrator. Provide reliable collected/withdrawn counters and actual IMD balance; direct donations must not be counted as mint revenue. Emit withdrawal events and permit partial withdrawal.\n\nNO STORAGE BLOCKER: PDFs, covers and metadata will be uploaded by the publisher AFTER deployment using a later VPS-backed website. Do not require sample PDFs, IPFS pins, a domain, storage credentials or the first issue before delivering these contracts. Do not publish dummy or real issues on mainnet. The later publisher UI must verify public URLs/hashes before submitting createIssue; contracts record commitments, they cannot fetch files. Provide an exact integration guide: ABI, hash algorithms, metadata JSON schema, issue discovery, publish/mint/approve/withdraw examples and chain/address configuration. Durable hosting remains the publisher's responsibility; keep URL origins replaceable by server/DNS migration without changing published paths or bytes.\n\nRELEASE: Use the supported IMD deployment manifest and dependency ordering; respect EIP-170/initcode limits. No unsupported post-deployment setup dependency. Test with local mocks AND an Ethereum fork using real IMD: payment arithmetic, repeated/multi-copy mints, exact closing boundary, multiple independent issues, unauthorized publication/withdrawal, reentrancy, atomic rollback, immutable fields, donations and transfers after expiry. No real-fund test purchases. Deliver deployed contract addresses, transaction receipts, verified source links, ABIs, pinned source commit, reproducible results and integration documentation. Clearly separate fork results from real deployment. Do not call code publication alone deployment; report any remaining release blocker explicitly.","state":"completed","attachedAt":"2026-10-21T07:07:44.093Z"}],"artifacts":[{"role":"other","name":"IMDDaily","address":"0xb8fd2b7fb37cbf03a26b4c4688ed5cce86c0a9c5","creationCodeHash":"610d846e62051593a847f482011f7a90b023c7f3b739a99f93ae5591954d75d3","txHash":"0x972fe515154dbc48a4373e625201034a59ff379223dbaa34a95fcfe5bf8fa17d","blockNumber":26239377,"verifiedAt":"2026-10-21T07:10:57.819Z","verifyFailure":null},{"role":"other","name":"IMDDailyVault","address":"0x3343692c3667852a1d4a7d8052c24862e6c523c0","creationCodeHash":"4f4915063f5e1d8fc57b4691f26023c05de2d0e6209228fedee5e31894e7af8e","txHash":"0x972fe515154dbc48a4373e625201034a59ff379223dbaa34a95fcfe5bf8fa17d","blockNumber":26239377,"verifiedAt":"2026-10-21T07:10:52.129Z","verifyFailure":null}],"allocations":[]}