{"id":"EIP-5164","name":"Cross-Chain Execution","status":"Last Call","chain":"both","category":{"id":"cross-chain","name":"Cross-Chain","description":"Moving assets and messages between chains"},"journeyStages":[{"id":"executing","name":"Executing Transactions","description":"Performing on-chain actions"}],"uxImpact":"Users send transactions on one chain that execute on another without switching networks or managing multiple wallets. Design implications: show source/destination chain selectors prominently, display estimated bridge time and execution status, provide clear message delivery tracking with unique IDs, design pending state indicators for cross-chain messages. Design decisions: how to handle failed message execution (retry UI vs auto-refund), whether to show bridge security/trust profiles to users, balancing simplicity vs advanced options for power users who want to select specific bridges.","hasDetailedContent":true,"content":{"id":"EIP-5164","summary":"EIP-5164 standardizes how to send messages and execute transactions across different blockchains. Apps can trigger actions on Arbitrum from Ethereum using a consistent interface, regardless of which bridge they use underneath.","applicability":{"whenToUse":["Your product addresses: each bridge has different interface.","Your product addresses: cross-chain UX is confusing.","The flow should deliver: one interface works across all bridges.","You are designing a cross-chain action experience with visible states and recovery paths."],"whenToAvoid":["Always show estimated time prominently.","Bold chain indicators at all times.","Clear failure notification with recovery steps.","The product never moves assets or state across chains."]},"designerTakeaways":["You can design UI that delivers one interface works across all bridges.","You can design UI that delivers consistent cross-chain action UI.","You can design UI that delivers dispatchMessage() triggers remote execution."],"problemsSolved":[{"problem":"Each bridge has different interface","oldWay":"Learn Arbitrum bridge API, then Optimism, then Polygon...","newWay":"One interface works across all bridges","impact":"critical"},{"problem":"Cross-chain UX is confusing","oldWay":"Different UI patterns for each chain","newWay":"Consistent cross-chain action UI","impact":"critical"},{"problem":"Can't execute contracts across chains easily","oldWay":"Manual bridging, then manual execution","newWay":"dispatchMessage() triggers remote execution","impact":"high"},{"problem":"Hard to track cross-chain transactions","oldWay":"Check source chain, then destination, manually","newWay":"Standard message ID tracks across chains","impact":"high"},{"problem":"Bridge-specific lock-in","oldWay":"App only works with one bridge","newWay":"Swap bridges without changing app code","impact":"medium"}],"uxPatterns":[{"name":"Cross-Chain Action","description":"Execute action on another chain","mockup":"concept/bridge","userFlow":["User wants to stake on different chain","Sees current chain and destination","Views action journey (steps)","Sees time and fee estimates","Signs transaction on source chain","Message bridged to destination","Action executes automatically"]},{"name":"Cross-Chain Transaction Tracker","description":"Track message as it crosses chains","mockup":"concept/bridge","userFlow":["User initiates cross-chain action","Sees progress through each stage","Source chain confirmed first","Bridge transit shows time remaining","Destination execution completes","Links to explorers for verification"]},{"name":"Bridge Selector","description":"Choose which bridge to use","mockup":"concept/bridge","userFlow":["User needs to cross chains","Views available bridge options","Compares time, cost, security","Selects preferred bridge","Proceeds with cross-chain action"]},{"name":"Cross-Chain Error Handling","description":"Show when cross-chain action fails","mockup":"generic/token-approval","userFlow":["Cross-chain action fails on destination","User sees where failure occurred","Clear error explanation","Assured funds are safe","Given recovery options"]},{"name":"Governance Cross-Chain","description":"DAO votes execute on multiple chains","mockup":"concept/bridge","userFlow":["DAO proposal passes","Execution begins on all chains","User sees status per chain","Each chain updates as executed","New parameters active when complete"]}],"uiComponents":[{"name":"CrossChainProgress","description":"Multi-step progress for cross-chain tx","states":["source-pending","bridging","destination-pending","complete","failed"],"props":["sourceChain","destChain","bridge","currentStep","timeRemaining"]},{"name":"BridgePicker","description":"Select from available bridges","states":["loading","ready","selected"],"props":["bridges[]","selectedBridge","onSelect"]},{"name":"ChainPairIndicator","description":"Visual showing source → destination","states":["connecting","connected","error"],"props":["sourceChain","destChain","status"]},{"name":"MessageTracker","description":"Track cross-chain message by ID","states":["searching","found","in-transit","delivered","failed"],"props":["messageId","sourceChain","destChain","status"]},{"name":"CrossChainError","description":"Display cross-chain failure with recovery","states":["source-failed","bridge-failed","dest-failed"],"props":["error","failedStep","recoveryOptions[]"]}],"antiPatterns":[{"pattern":"Not showing bridging time","why":"User expects instant, gets confused by delay","instead":"Always show estimated time prominently","severity":"critical"},{"pattern":"Hiding which chain user is on","why":"User signs thinking they're on destination","instead":"Bold chain indicators at all times","severity":"critical"},{"pattern":"No progress tracking after sign","why":"User doesn't know if it worked","instead":"Real-time progress through all stages","severity":"high"},{"pattern":"Silent cross-chain failures","why":"User thinks it worked, funds stuck","instead":"Clear failure notification with recovery steps","severity":"critical"},{"pattern":"Auto-selecting bridge without showing","why":"User can't make informed time/cost choice","instead":"Show bridge options with tradeoffs","severity":"medium"}],"onMonad":[{"aspect":"Destination Execution","ethereum":"Execution on dest chain takes 12+ seconds","monad":"Sub-second execution once message arrives","designImplication":"Bridge time dominates, dest feels instant"},{"aspect":"Multi-Chain Governance","ethereum":"Slow execution on each chain","monad":"Fast execution for Monad legs of governance","designImplication":"Governance changes apply faster to Monad"},{"aspect":"Bridge Message Costs","ethereum":"Execution fee varies by destination gas","monad":"Low execution cost on Monad as destination","designImplication":"Cheaper to bridge TO Monad"},{"aspect":"Confirmation Display","ethereum":"Multiple confirmations needed before \"done\"","monad":"Single-slot finality = instant confirmation","designImplication":"Can show \"Complete\" immediately on Monad side"}],"keyTakeaways":["EIP-5164 = standard interface for cross-chain messaging","Always show source chain, destination chain clearly","Display estimated bridging time prominently","Track progress through all stages (source → bridge → dest)","Handle failures gracefully with recovery options"],"technicalNotes":"EIP-5164 defines CrossChainDispatcher with dispatchMessage(toChainId, target, data) and CrossChainReceiver with processMessage(fromChainId, sender, data). Bridges implement these interfaces. messageId tracks messages across chains. Each bridge has different security assumptions and timing."},"sources":[{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/eip-5164","type":"official-spec"},{"label":"Discussion","url":"https://ethereum-magicians.org/search?q=EIP-5164","type":"discussion"}],"urls":{"canonical":"https://www.eipsfordesigners.com/standards/EIP-5164","markdown":"https://www.eipsfordesigners.com/standards/EIP-5164/content.md","agent":"https://www.eipsfordesigners.com/standards/EIP-5164/agent.md","api":"https://www.eipsfordesigners.com/api/standards/EIP-5164","official":"https://eips.ethereum.org/EIPS/eip-5164","discussion":"https://ethereum-magicians.org/search?q=EIP-5164"},"freshness":{"lastReviewed":"2026-04-05","lastUpdated":"2026-04-05"}}