{"assessments":[],"deployments":[],"fuzz":[],"identity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"interpretation":"Records acceptance and evidence. Neither completion nor an AI assessment establishes correctness, safety, or independent review.","jobId":"20ccee81-a795-407b-980b-4af1839a288f","kind":"skill:research-report","nodes":[{"acceptedSubmissionHash":"a3cfbff0e7df555f83fca5c5e9f2e42abef4430eb9614f5d661e5d96839eccf4","dependsOn":[],"execution":{"network":true,"profile":"none","requires":["network"],"skillHash":"3ddca93330036359dd721585e58e67820336a0398b7927b3c89369d6134f30f6","skillId":"research-report","tools":[]},"key":"research_report","kind":"code","role":"implement","skillHash":"3ddca93330036359dd721585e58e67820336a0398b7927b3c89369d6134f30f6","skillId":"research-report","state":"accepted"}],"objective":"Research and design: a token gacha on Ethereum mainnet, modeled on Fake World Assets (https://www.fwa.fun/) but with ERC-20 \"Bags\" instead of NFTs, a platform token distributed mostly through spins, and a cheap NFT mint that funds the launch. Read-only research, no deploy, no transactions.\n\n1. Regular Bags (depositors):\n- A depositor seals a Bag: an ERC-721 holding one or more whitelisted ERC-20 tokens they own. Each depositor risks only their own tokens. Bag value = contents priced in ETH by a manipulation-resistant TWAP at draw time.\n- Bags fall into size tiers by value relative to the spin price (small, medium, large, jackpot).\n- Spins are paid only in ETH at a fixed price, randomness via Chainlink VRF. The spinner keeps the drawn Bag (open it for the tokens or trade the NFT) or takes an instant ETH buyback at a discount, which returns the Bag to the pool.\n- When a Bag is taken, its depositor receives ETH for its value minus a fee, paid from a payout reserve. While a Bag sits in the pool, its depositor earns platform-token dividends.\n\n2. Platform token through Genesis Bags:\n- Launched on IMD as an evm_project: about 10% to the liquidity pool, 10% to the swarm, the remaining ~80% sent in the launch transaction to the bag contract as Genesis Bags (no depositor). Most of the supply is distributed through spins, starting very cheap.\n- Spin price stays fixed in ETH; tokens per Genesis Bag decline over time along a VRGDA-like curve tied to the pool TWAP, so a Genesis Bag's expected value stays slightly below the pool price and spin-and-dump arbitrage is unprofitable. Recommend the discount band.\n- ETH from Genesis spins: a share adds protocol-owned liquidity, a share funds the payout reserve for regular Bags, a share goes to the team. Recommend the split.\n- A sealed Bag (Genesis or regular) kept by its winner earns platform-token dividends until opened; opening releases the tokens and stops dividends.\n\n3. NFT mint first (funds the launch):\n- Before the token launch, an NFT mint at 0.001 ETH each (recommend supply, e.g. about 10,000). Mint ETH is held by an ownerless escrow and, at token launch, released permissionlessly into protocol-owned liquidity for the token pool and into the initial payout reserve and rewards. If the token is not launched by a fixed deadline, every minter can refund their 0.001 ETH.\n- NFT holders get a share of spin fees in ETH and a share of the platform's 1% pool fee (IMD LaunchFactory pays it to the requester; evaluate redirecting it to an NFT revenue contract via LaunchFactory.setRequester), an early holder-only window for Genesis Bags at the best price, and a few free spins.\n- Art: pixel-art bag collection with rarities, on-chain or IPFS; describe what the swarm should draw.\n\n4. Curation by the IMD swarm, only through attested IMD oracle answers (no admin key, no owner, no proxy, immutable contracts): token whitelist and delisting using token-safety and liquidity checks, tier odds and pool weights within hard on-chain bounds (max 10% change per 24h), pause of a single token's Bags. If oracle answers stop, the game keeps running on current settings.\n\nDeliver:\n1. Fake World Assets deep dive: contracts and addresses, deposit/bid/draw/buyback flow, fees and where they go, VRF integration, depositor rewards, FWAir, known exploits or farming issues, results after emissions ended. Sources and tx examples.\n2. Full mechanism spec: deposit, valuation (TWAP source, window, minimum liquidity, staleness), tiers, draw weighting, keep vs buyback, depositor payouts, payout reserve for Bags above the spin price, Genesis curve, fee split (depositors, NFT holders, liquidity, platform token buyback, team), dividend accounting for sealed Bags and depositors, withdrawals and lockups, mint escrow release and refund.\n3. Economic simulation: spin price, tier odds and sizes, spinner expected value (target about 90-93%), depositor return, reserve solvency under bad streaks and a 50% token crash, Genesis distribution speed and price path, pool depth growth, bot arbitrage under different discounts, mint raise and liquidity at launch, NFT holder yield under weak/steady/hype volume. Recommend one parameter set with numbers.\n4. Attack analysis: TWAP manipulation, thin or malicious tokens (fee-on-transfer, rebasing, blacklist, pausable), adverse selection (depositors dumping falling tokens), VRF timing and request griefing, reentrancy via token callbacks, front-running deposits before draws, wash spinning to farm dividends, mint sybils. Mitigation for each.\n5. Contract architecture within IMD limits (evm_contracts: max 8 contracts per launch, static constructor args max 16 words, no owner, no proxy, no external calls in constructors): contracts, responsibilities, storage, events, oracle question definitions for the curator, VRF subscription funding without an admin key, gas per spin, deposit and mint.\n6. Launch plan through IMD in order: NFT mint, platform token launch (type and economics, remainder to the Genesis Bag contract by name), gacha contracts, website. Costs, timing and risks. Legal considerations of a gambling-like product and revenue-sharing NFTs at a high level only.\n\nReport facts with sources, mark inferences, give clear recommendations.","parentJobId":null,"planHash":"3845c21c7428f4e15bacc1cf0114a3c9f90d8f8b42114a1cc66f7ce1f841eab8","previousHash":"23ccff7ff6ae5b9118dcd831282d83efc82b180a0751858b93b0c57ee4b2c641","projectId":"20ccee81-a795-407b-980b-4af1839a288f","publication":{"commit":"9072ee125c08c33a4b9f9e402ac5673ae4c3b1d7","deliveredAt":"2026-10-13T08:24:11.333Z","repoUrl":"https://github.com/Identity-md/research/blob/main/jobs/20ccee81-a795-407b-980b-4af1839a288f/_identitymd/README.md"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[],"site":null,"snapshotHash":"b3b4f225dcb09efcd2e158311ce59c70e91cec84a7fe5f2549d2eb5579005e36","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"23975bfc435fe072","findings":[],"hash":"54dbe6ad2688c295ec0583f612473733e2b6b6e8a7179acaf3298c987b864cee","nodeId":"c0428cfb-df1f-4068-93ac-42fad763613a","outcome":"failed","summary":"wall-clock budget exhausted","treeHash":null,"usage":{"cachedInputTokens":0,"inputTokens":0,"model":"gpt-6.1-sol","outputTokens":0,"runtime":"codex","turns":5,"wallClockMs":2400948}},{"artifacts":[{"bytes":37380,"hash":"e7a563c7f941fe2f0af9390523c4f075a79fa7ac825a3b01cdd4cea7e3ad8aff","mediaType":"text/markdown","name":"report","path":"artifacts/report.md"}],"attempt":2,"bundleHash":"4d096eb2de0eadfeee9b450561a47fa37b1251e85edd0bc774765e0553cad316","device":"2cd7c8e4bd7aedde","findings":[],"hash":"a3cfbff0e7df555f83fca5c5e9f2e42abef4430eb9614f5d661e5d96839eccf4","nodeId":"c0428cfb-df1f-4068-93ac-42fad763613a","outcome":"completed","summary":"I've written the report to `artifacts/report.md` and committed a README plus the economic simulation (`sim/gacha_sim.py`). The report covers all six parts of the brief, and every claim is labelled as fact with a source, inference, model output or unverified. Nothing was deployed and no transactions were sent.\n\n**What FWA showed** (from its docs and August 2026 coverage):\n- **Contracts:** the docs list 13 mainnet V1 contracts. One already wraps ERC-20s into NFT packs, which is close to the \"Bags\" idea.\n- **Fees and VRF:** V1 charges a 2.5% markup on purchases, 1% each to the top depositor and the protocol, and 1% when a winner keeps the NFT. Buybacks pay out at 90%. Chainlink VRF waits 3 blocks and times out after 30.\n- **Emissions vs revenue:** the 15-day token emissions paid users about $300k a day against about $100k a day of revenue.\n- **Token and buybacks:** the token peaked around $38M market cap, then fell 78%. The team changed its buyback plan twice in under 24 hours and pledged 327 ETH.\n\n**Recommended parameters:**\n- **Spin price:** 0.01 ETH, with the VRF fee charged on top.\n- **Tier odds:** small 75%, medium 18%, large 6.5%, jackpot 0.5%. Spinners get back about 92.5% of the spin price on average, inside your 90–93% target.\n- **Instant buyback:** 88% of the Bag's value. A depositor whose Bag is kept gets 95% of its value.\n- **Valuation:** the lower of a 30-minute and a 4-hour price average, from a pool with at least 50 ETH of liquidity.\n- **Genesis Bags:** worth 8% below the pool price, adjustable between 5% and 12%. The curve spreads distribution over 540 days.\n- **Genesis spin ETH:** 40% protocol-owned liquidity, 30% payout reserve, 15% NFT holders, 15% team.\n- **NFT mint:** 10,000 at 0.001 ETH, raising 10 ETH. Refunds open if the token isn't launched within 90 days.\n- **Contracts:** 7, within IMD's limit of 8.\n\n**What the simulation found:**\n- **Bag size cap is required:** without capping any single Bag at 5% of the payout reserve, the worst 1% of runs drain the reserve to zero.\n- **Bot arbitrage:** at an 8% discount, Genesis spins are profitable for bots almost never (0.09% of the time) even with 40% daily price swings. With no discount they are profitable 27% of the time.\n- **Small launch reserve:** the 10 ETH raise leaves about 4 ETH of reserve, so early jackpots are limited to about 0.2 ETH.\n- **NFT payouts are large:** at a 0.001 ETH mint, even weak volume pays about 8× the mint price per NFT per year. That makes the NFTs look more like securities, which the legal section flags.\n\n**Not verified:**\n- **IMD details:** how `LaunchFactory.setRequester`, the launch's remainder recipient and the evm_project economics work come only from your brief.\n- **Chainlink:** the VRF mainnet addresses and whether anyone can fund a subscription were not re-checked.\n- **FWA transactions:** I didn't find example FWA transactions.\n- **Fee drop:** the \"98% fee drop after emissions\" figure appeared only in a search summary; I couldn't confirm it at the source.\n- **Gas:** figures are estimates, since no contracts were written or compiled.\n\nThe simulation is a simplified model with fixed demand and no outside traders, so treat its numbers as comparisons between settings rather than forecasts. Its 50%-crash case assumes demand doesn't change, which makes it optimistic.","treeHash":"09f871ee5327f6bcae26c59115b51a6dd4ff992d","usage":{"cachedInputTokens":455090,"inputTokens":24,"model":"claude-opus-5-5","outputTokens":28646,"runtime":"claude","turns":18,"wallClockMs":353624}}],"verification":[{"checks":[],"detail":"paths and tree verified; no suite was run for this kind of work","evaluation":"structural","profile":"none","status":"accepted","submissionHash":"a3cfbff0e7df555f83fca5c5e9f2e42abef4430eb9614f5d661e5d96839eccf4","verifiedTreeHash":"09f871ee5327f6bcae26c59115b51a6dd4ff992d","verifierVersion":"0.1.0+327e1e9f"}]}