{"id":"EIP-5202","name":"Blueprint Contract Format","status":"Final","chain":"both","category":{"id":"infrastructure","name":"Infrastructure","description":"Foundational patterns enabling other standards"},"journeyStages":[{"id":"infra","name":"Infrastructure","description":"Foundational patterns"}],"uxImpact":"Blueprint contracts store deployment code on-chain but cannot be called directly — they're templates. Design implications: mark blueprint contracts distinctly in explorers ('Blueprint - Not Callable'), prevent interaction UI from rendering for blueprints, show 'deployed from blueprint' lineage for contracts. Design decisions: whether to hide blueprints from regular contract lists (cleaner) or show them with clear non-interactive status (complete).","hasDetailedContent":true,"content":{"id":"EIP-5202","sources":[{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/eip-5202","type":"official-spec"}],"lastReviewed":"2026-05-25","lastUpdated":"2026-05-25","summary":"Blueprint contracts store deployment code on-chain but cannot be called directly — they're templates.","designerTakeaways":["You can badge Blueprint — not callable on blueprint addresses in explorers.","Your interact panel can hide entirely for blueprints with Deploy instance CTA for devs instead.","You can show Deployed from blueprint link on live contract pages."],"applicability":{"whenToUse":["Contract explorer shows factory/blueprint patterns.","Users might land on blueprint via explorer search.","Clone/minimal proxy deployments from blueprint."],"whenToAvoid":["No blueprint contracts in indexed set.","Pure end-user wallet with no explorer.","Only live instance addresses exposed."]},"prototypeFirst":[{"screen":"Blueprint contract page","why":"Prevent interact attempts on template.","covers":["Blueprint detected"],"include":["Blueprint badge","Not callable message","List instances link"]},{"screen":"Live instance with lineage","why":"Trace which template spawned contract.","covers":["Has blueprint parent"],"include":["Deployed from chip","Link to blueprint","Factory tx"]},{"screen":"Contract list filter","why":"Devs want completeness; users want clarity.","covers":["Hide blueprints toggle"],"include":["Filter setting","Blueprint gray rows when shown"]},{"screen":"Blocked interact attempt","why":"Deep link to interact tab still happens.","covers":["Interact disabled"],"include":["This is a template only","View deployments instead"]}],"mentalModel":[{"label":"Blueprint","description":"Template bytecode — not a live app contract."},{"label":"Instance","description":"Deployed callable contract from blueprint."},{"label":"Factory","description":"Contract that deploys instances from blueprint."},{"label":"Lineage","description":"Link instance back to blueprint source."},{"label":"Non-callable","description":"Any interact tx will fail — block in UI first."}],"statesToDesign":[{"state":"Blueprint page view","trigger":"User opens blueprint address.","userNeed":"Not try to call functions.","designResponse":"Blueprint badge; no interact form."},{"state":"Instance page view","trigger":"Live deployed contract.","userNeed":"Normal interact.","designResponse":"Standard UI plus lineage chip."},{"state":"Search hits blueprint","trigger":"Search returns template.","userNeed":"Distinguish from instance.","designResponse":"Blueprint in search results styling."},{"state":"List with blueprints shown","trigger":"Dev toggle on.","userNeed":"Scan templates.","designResponse":"Gray non-interactive rows."},{"state":"List blueprints hidden","trigger":"Default user filter.","userNeed":"Only callable contracts.","designResponse":"Instances only in default list."}],"designDecisions":[{"question":"Hide blueprints from default lists?","recommendation":"Yes default hide; dev toggle show.","rationale":"Cleaner for users; completeness for devs."},{"question":"Interact tab on blueprint?","recommendation":"Remove tab entirely.","rationale":"Empty or error tab feels broken."},{"question":"Lineage on every instance?","recommendation":"Chip linking blueprint if known.","rationale":"Audit and support traceability."}],"problemsSolved":[{"problem":"Users call blueprint and revert","oldWay":"Interact UI on template address","newWay":"Blueprint badge blocks interact","impact":"high"},{"problem":"Cannot trace clone source","oldWay":"Instance appears from nowhere","newWay":"Deployed from blueprint lineage","impact":"medium"},{"problem":"Explorer lists cluttered with templates","oldWay":"Templates mixed with live apps","newWay":"Filter hide blueprints default","impact":"low"}],"uxPatterns":[{"name":"Blueprint Badge Block","description":"Non-callable template contract page.","mockup":"concept/proxy-pattern","components":["BlueprintBadge","NoInteractPanel","InstancesLink"],"userFlow":["Open blueprint","See badge","No interact","Browse instances"]},{"name":"Deployed From Lineage","description":"Instance links back to blueprint.","mockup":"concept/proxy-pattern","components":["LineageChip","BlueprintLink"],"userFlow":["Open instance","See deployed from","Jump to blueprint"]}],"seenInTheWild":[{"app":"Etherscan","url":"https://etherscan.io/","note":"Contract page patterns for proxies and factories."},{"app":"Tenderly","url":"https://tenderly.co/","note":"Contract classification in dev tools."},{"app":"EIP-1167","url":"https://eips.ethereum.org/EIPS/eip-1167","note":"Minimal proxy clone lineage patterns."}],"antiPatterns":[{"pattern":"Full interact UI on blueprint","why":"Guaranteed revert wastes gas","instead":"Remove interact; show template badge","severity":"critical"},{"pattern":"Blueprint identical styling to live contract","why":"Users cannot distinguish","instead":"Distinct blueprint badge and gray styling","severity":"high"},{"pattern":"No lineage on instances","why":"Audit trail broken","instead":"Deployed from chip on instance pages","severity":"medium"}],"vocabulary":[{"use":"Template contract","avoid":"Blueprint bytecode","why":"Plain template language."},{"use":"Not callable","avoid":"Execute disabled on blueprint","why":"Direct user message."},{"use":"Deployed from","avoid":"Clone initCode reference","why":"Lineage language."}],"onMonad":[{"aspect":"Blueprint deploys","ethereum":"Same factory patterns","monad":"Cheap instance deploys from blueprints","designImplication":"Show instance lists on Monad blueprint pages."},{"aspect":"Explorer indexing","ethereum":"Blueprint detection varies","monad":"Tag blueprints at indexing on Monad launch","designImplication":"Blueprint badge in Monad explorer from day one."}],"technicalNotes":"EIP-5202 blueprints: never render interact UI; default-hide in contract lists.","relatedStandards":[{"id":"EIP-1167","relationship":"Minimal proxy clones from templates"},{"id":"EIP-1014","relationship":"CREATE2 deterministic deploys"}]},"sources":[{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/eip-5202","type":"official-spec"},{"label":"Discussion","url":"https://ethereum-magicians.org/search?q=EIP-5202","type":"discussion"},{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/eip-5202","type":"official-spec"}],"urls":{"canonical":"https://www.eipsfordesigners.com/standards/EIP-5202","markdown":"https://www.eipsfordesigners.com/standards/EIP-5202/content.md","agent":"https://www.eipsfordesigners.com/standards/EIP-5202/agent.md","api":"https://www.eipsfordesigners.com/api/standards/EIP-5202","official":"https://eips.ethereum.org/EIPS/eip-5202","discussion":"https://ethereum-magicians.org/search?q=EIP-5202"},"freshness":{"lastReviewed":"2026-05-25","lastUpdated":"2026-05-25"}}