{"id":"MONAD-7702","name":"EIP-7702 Constraints","status":"Active","chain":"monad","category":{"id":"transaction-friction","name":"Transaction Friction","description":"Reducing clicks, signatures, and mental overhead"},"journeyStages":[{"id":"executing","name":"Executing Transactions","description":"Performing on-chain actions"},{"id":"gas","name":"Gas & Fees","description":"Paying for transactions"}],"uxImpact":"EIP-7702 account abstraction supported with reserve balance constraints — delegated EOAs can't drain below 10 MON. Design implications: show clear warnings when delegating EOA ('10 MON minimum balance required while delegated'), indicate delegation status in account views, warn if attempting to send all funds from delegated account. Design decisions: whether delegation UI should enforce 10 MON check upfront or allow and show clear revert reasons; how to explain the CREATE/CREATE2 restriction for advanced users.","hasDetailedContent":true,"content":{"id":"MONAD-7702","sources":[{"label":"Official specification","url":"https://docs.monad.xyz","type":"official-spec"}],"lastReviewed":"2026-05-25","lastUpdated":"2026-05-25","summary":"EIP-7702 account abstraction supported with reserve balance constraints — delegated EOAs can't drain below 10 MON.","designerTakeaways":["You can show Delegated badge with 10 MON minimum balance required while delegated in account header.","Your send-max flow can cap at balance minus 10 MON when delegation active with explanation.","You can block send-all with clear You must keep 10 MON while delegated copy before wallet opens."],"applicability":{"whenToUse":["Monad wallet supports EIP-7702 delegation.","Users delegate EOAs to smart account code.","Send and gas flows must respect reserve."],"whenToAvoid":["Non-delegated plain EOA flows.","Ethereum 7702 without Monad reserve rules.","Products not on Monad."]},"prototypeFirst":[{"screen":"Delegation setup confirm","why":"User must accept reserve rule before delegate.","covers":["Pre-delegate"],"include":["10 MON minimum callout","While delegated explainer","Confirm delegate"]},{"screen":"Delegated account header","why":"Persistent status while delegation active.","covers":["Delegated active"],"include":["Delegated badge","Reserve requirement link","Undelegate path"]},{"screen":"Send max with reserve cap","why":"Prevent revert on send-all.","covers":["Send max","Over cap blocked"],"include":["Max sendable amount","10 MON kept copy","Adjust amount inline"]},{"screen":"Advanced CREATE restriction note","why":"Power users hit deploy limits.","covers":["Deploy attempt blocked"],"include":["Advanced accordion","CREATE restricted while delegated","Undelegate to deploy"]}],"mentalModel":[{"label":"Delegation","description":"EOA temporarily uses smart account code via 7702."},{"label":"10 MON reserve","description":"Minimum balance floor while delegated — not optional."},{"label":"Send max","description":"Max out is balance minus reserve not full balance."},{"label":"Undelegate","description":"Removing delegation lifts reserve requirement."},{"label":"CREATE restriction","description":"Contract deploy from delegated EOA blocked — advanced edge."}],"statesToDesign":[{"state":"Not delegated","trigger":"Plain EOA.","userNeed":"Normal send.","designResponse":"Standard send; optional Enable smart features."},{"state":"Delegated active","trigger":"7702 delegation live.","userNeed":"Know reserve rule.","designResponse":"Delegated badge and reserve callout."},{"state":"Send exceeds reserve","trigger":"User tries send all.","userNeed":"Fix before sign.","designResponse":"Inline cap with 10 MON must remain."},{"state":"Undelegate flow","trigger":"User removes delegation.","userNeed":"Know reserve lifts.","designResponse":"After undelegate full balance sendable."},{"state":"CREATE blocked","trigger":"Deploy attempt.","userNeed":"Advanced explanation.","designResponse":"Deploy not available while delegated."}],"designDecisions":[{"question":"Enforce reserve in UI or rely on revert?","recommendation":"Cap in UI before wallet.","rationale":"Revert after sign feels like bug."},{"question":"When show 10 MON rule?","recommendation":"Delegation confirm and every send-max while delegated.","rationale":"Surprise reserve causes support tickets."},{"question":"CREATE restriction visibility?","recommendation":"Advanced only unless user attempts deploy.","rationale":"Retail users never hit CREATE."}],"problemsSolved":[{"problem":"Send-all revert on delegated EOA","oldWay":"Max send fails mysteriously","newWay":"UI caps at balance minus 10 MON","impact":"high"},{"problem":"Delegation risks unclear","oldWay":"User delegates blindly","newWay":"Reserve rule at delegate confirm","impact":"high"},{"problem":"Delegated state invisible","oldWay":"Same account UI","newWay":"Delegated badge and reserve link","impact":"medium"}],"uxPatterns":[{"name":"Delegation Reserve Warning","description":"10 MON floor explained at delegate and send.","mockup":"erc-4337/gas-abstraction","components":["DelegateBadge","ReserveCallout","SendCap"],"userFlow":["Delegate","See 10 MON rule","Send max capped","No revert"]},{"name":"Delegated Account Header","description":"Persistent delegation status on account.","mockup":"eip-7702/session-permissions","components":["DelegatedChip","UndelegateLink","ReserveTooltip"],"userFlow":["Account delegated","Badge visible","Send respects reserve","Undelegate optional"]}],"seenInTheWild":[{"app":"MetaMask","url":"https://metamask.io/","note":"EIP-7702 delegation UX emerging."},{"app":"Monad docs","url":"https://docs.monad.xyz/","note":"7702 reserve constraint documentation."},{"app":"EIP-7702","url":"https://eips.ethereum.org/EIPS/eip-7702","note":"Base delegation patterns."}],"antiPatterns":[{"pattern":"Send max without reserve cap","why":"Revert after full amount entered","instead":"Cap sendable amount with explanation","severity":"critical"},{"pattern":"Delegate without reserve disclosure","why":"User discovers rule at failed send","instead":"10 MON minimum at delegate confirm","severity":"critical"},{"pattern":"Hidden delegated state","why":"User forgets constraints active","instead":"Persistent Delegated badge","severity":"high"}],"vocabulary":[{"use":"Keep 10 MON while delegated","avoid":"Reserve balance constraint","why":"Plain rule language."},{"use":"Smart account mode","avoid":"7702 delegation active","why":"User-facing mode name."},{"use":"Maximum you can send","avoid":"Balance minus reserve constant","why":"Send form copy."}],"onMonad":[{"aspect":"7702 reserve","ethereum":"7702 rules differ on Ethereum","monad":"10 MON minimum while delegated — Monad-specific","designImplication":"Always show Monad reserve rule on delegate and send-max."},{"aspect":"Delegation cost","ethereum":"Delegation txs vary","monad":"Low fees ease delegate/undelegate trials","designImplication":"Inline undelegate option without gas scare."},{"aspect":"CREATE restriction","ethereum":"Varies by implementation","monad":"CREATE/CREATE2 blocked while delegated","designImplication":"Surface in advanced on deploy attempt only."}],"technicalNotes":"MONAD-7702: enforce 10 MON reserve in send UI; disclose at delegation confirm.","relatedStandards":[{"id":"EIP-7702","relationship":"Base EOA delegation standard"},{"id":"ERC-4337","relationship":"Smart account feature parity target"}]},"sources":[{"label":"Official specification","url":"https://docs.monad.xyz","type":"official-spec"},{"label":"Official specification","url":"https://docs.monad.xyz","type":"official-spec"}],"urls":{"canonical":"https://www.eipsfordesigners.com/standards/MONAD-7702","markdown":"https://www.eipsfordesigners.com/standards/MONAD-7702/content.md","agent":"https://www.eipsfordesigners.com/standards/MONAD-7702/agent.md","api":"https://www.eipsfordesigners.com/api/standards/MONAD-7702","official":"https://docs.monad.xyz"},"freshness":{"lastReviewed":"2026-05-25","lastUpdated":"2026-05-25"}}