{"id":"ERC-1167","name":"Minimal Proxy Contract","status":"Final","chain":"both","category":{"id":"infrastructure","name":"Infrastructure","description":"Foundational patterns enabling other standards"},"journeyStages":[{"id":"infra","name":"Infrastructure","description":"Foundational patterns"}],"uxImpact":"Minimal clones delegate to a fixed implementation address encoded in their bytecode. Show the clone address, shared implementation and the evidence behind any source or audit label. This is not an upgradeable-proxy mechanism; do not offer an implementation-upgrade flow or infer safety from the shared code alone.","officialUrl":"https://ercs.ethereum.org/ERCS/erc-1167","lastReviewed":"2026-09-18","lastUpdated":"2026-09-18","hasDetailedContent":true,"content":{"id":"ERC-1167","summary":"ERC-1167 defines minimal clones that delegate calls to a fixed implementation address. Many instances can share code while keeping separate storage. The small runtime can reduce deployment gas, but the actual fee and confirmation time depend on the factory, initialization and network.","applicability":{"whenToUse":["A product uses minimal clones with a fixed implementation target.","Users or operators need to inspect the clone address and its shared implementation."],"whenToAvoid":["The product requires changing the clone’s embedded delegation target.","You are presenting an upgradeable-proxy lifecycle as a property of a minimal clone."]},"designerTakeaways":["Show a current estimate for deploying the clone and initializing its state.","You can design UI that delivers clone factory creates instances cheaply.","You can each user gets their own contract cheaply in the interface."],"problemsSolved":[{"problem":"Deploying contracts is expensive","oldWay":"Deploy the full implementation bytecode for each instance","newWay":"Deploy a small clone runtime plus the required initialization","impact":"critical"},{"problem":"Factory patterns cost too much","oldWay":"Each user's vault/collection is full deployment","newWay":"Clone factory creates instances cheaply","impact":"critical"},{"problem":"Can't afford per-user contracts","oldWay":"Share one contract, complex accounting","newWay":"Each user gets their own contract cheaply","impact":"high"},{"problem":"Code duplication on chain","oldWay":"Same bytecode stored thousands of times","newWay":"One implementation, many proxies","impact":"medium"}],"uxPatterns":[{"name":"One-Click Contract Creation","description":"User creates an instance through a supported factory","mockup":"concept/nft-gallery","userFlow":["User fills in contract parameters","Sees cost comparison (clone vs full)","Clicks create","Track submission and inclusion before showing the deployed address","Gets their own contract address"]},{"name":"Factory Dashboard","description":"View all clones created from a factory","mockup":"concept/nft-gallery","userFlow":["Admin views factory dashboard","Sees all clones created","Monitors adoption and gas savings","Links to implementation for verification"]},{"name":"Clone Verification","description":"Show user their clone points to verified code","userFlow":["User checks their contract","Sees it's a proxy (not full code)","Views implementation it delegates to","Confirms implementation is verified/audited","Trusts their clone is safe"]},{"name":"Personal Vault Creation","description":"User gets their own vault contract","userFlow":["User selects vault type","Sees low deployment cost","Can learn why it's cheap (clone pattern)","Creates vault","Gets personal contract address"]}],"uiComponents":[{"name":"CloneDeployer","description":"Form for creating new clone instance","states":["configuring","deploying","deployed","error"],"props":["factoryAddress","initParams","onDeploy"]},{"name":"GasSavingsIndicator","description":"Shows savings from using clone vs full deploy","states":["calculating","ready"],"props":["fullDeployCost","cloneCost","savings"]},{"name":"ProxyVerificationBadge","description":"Badge showing proxy points to verified impl","states":["verified","unverified","loading"],"props":["proxyAddress","implementationAddress","isVerified"]},{"name":"FactoryCloneList","description":"List of all clones from a factory","states":["loading","loaded","empty"],"props":["clones[]","onCloneClick"]},{"name":"CloneExplainerTooltip","description":"Explains how minimal proxy works","states":["collapsed","expanded"],"props":["showDiagram"]}],"antiPatterns":[{"pattern":"Hiding that contract is a proxy","why":"Users deserve to know how their contract works","instead":"Show \"Powered by [Implementation]\" with link","severity":"high"},{"pattern":"Not linking to verified implementation","why":"User can't verify the code their proxy uses","instead":"Always link to implementation on block explorer","severity":"high"},{"pattern":"Confusing proxy address with implementation","why":"User looks up wrong address, sees weird bytecode","instead":"Clearly label \"Your contract\" vs \"Implementation\"","severity":"medium"},{"pattern":"Not explaining gas savings","why":"User doesn't understand the value they're getting","instead":"Show estimated savings only from a current like-for-like gas comparison","severity":"medium"},{"pattern":"Using clones for upgradeable contracts","why":"ERC-1167 clones are immutable, confuses with upgradeable","instead":"Clarify: \"Your clone points to fixed implementation\"","severity":"medium"}],"keyTakeaways":["ERC-1167 = tiny proxy pointing to shared implementation","A small clone runtime can reduce deployment gas; quote actual network fees","Always link to the verified implementation","Explain to users their clone uses audited code","Clones are immutable—not upgradeable proxies"],"technicalNotes":"ERC-1167 minimal proxy is exactly 45 bytes of bytecode that delegatecalls to a hardcoded implementation address. All storage lives in the proxy, logic in the implementation. The proxy cannot be upgraded—it permanently points to one implementation. This is different from upgradeable proxies (ERC-1967) where the implementation can change. The clone delegation target is fixed in its bytecode. An upgradeable-proxy illustration does not describe this clone. Any displayed deployment-cost example is illustrative; quote current gas and network fees for the actual deployment.","lastUpdated":"2026-09-18","lastReviewed":"2026-09-18","sources":[{"label":"ERC-1167 official specification","url":"https://ercs.ethereum.org/ERCS/erc-1167","type":"official-spec"}]},"sources":[{"label":"Official specification","url":"https://ercs.ethereum.org/ERCS/erc-1167","type":"official-spec"},{"label":"Discussion","url":"https://ethereum-magicians.org/search?q=ERC-1167","type":"discussion"},{"label":"ERC-1167 official specification","url":"https://ercs.ethereum.org/ERCS/erc-1167","type":"official-spec"}],"urls":{"canonical":"https://www.eipsfordesigners.com/standards/ERC-1167","markdown":"https://www.eipsfordesigners.com/standards/ERC-1167/content.md","agent":"https://www.eipsfordesigners.com/standards/ERC-1167/agent.md","api":"https://www.eipsfordesigners.com/api/standards/ERC-1167","official":"https://ercs.ethereum.org/ERCS/erc-1167","discussion":"https://ethereum-magicians.org/search?q=ERC-1167"},"freshness":{"lastReviewed":"2026-09-18","lastUpdated":"2026-09-18"}}