{"id":"ERC-4804","name":"Web3 URL to EVM Call","status":"Final","chain":"both","category":{"id":"comprehension","name":"Comprehension & Display","description":"Making blockchain data readable to humans"},"journeyStages":[{"id":"specialized","name":"Specialized Interactions","description":"Physical items, AI, social, gaming"}],"uxImpact":"Access blockchain data via URLs like 'web3://uniswap.eth/swap' — browsers can render on-chain content directly. Design implications: support web3:// URL scheme in address bars, display on-chain HTML/SVG content natively, show ENS-based URLs alongside traditional links, handle cross-chain URLs with chainid syntax. Design decisions: security model for executing on-chain content, how to display web3:// URLs to users unfamiliar with the concept, fallback when content fails to load, gateway vs native resolution.","hasDetailedContent":true,"content":{"id":"ERC-4804","summary":"ERC-4804 creates a standard URL format for accessing blockchain data directly from a browser. Type \"web3://uniswap.eth/swap\" and your browser fetches content from the blockchain instead of a web server. This enables truly decentralized frontends where the UI itself lives on-chain, eliminating server dependencies and censorship risks.","applicability":{"whenToUse":["Your product addresses: dApp frontends are centralized and can be taken down.","Your product addresses: no standard way to link to on-chain content.","The flow should deliver: uI served from blockchain, censorship-resistant like the contracts.","You are designing a web3 url bar experience with visible states and recovery paths."],"whenToAvoid":["Always provide HTTPS gateway link as alternative.","Show clear badge: \"Served from Ethereum\" or similar.","Show loading progress with chain/contract info.","Users never see addresses, amounts, or signing payloads in your UI."]},"designerTakeaways":["You can design UI that delivers uI served from blockchain.","You can design UI that delivers share web3://contract.eth/path like any normal URL.","You can design UI that delivers click a link, browser handles the blockchain query."],"problemsSolved":[{"problem":"dApp frontends are centralized and can be taken down","oldWay":"Frontend hosted on AWS/Vercel, smart contract decentralized but UI isn't","newWay":"UI served from blockchain, censorship-resistant like the contracts","impact":"critical"},{"problem":"No standard way to link to on-chain content","oldWay":"Share contract address + instructions to call specific functions","newWay":"Share web3://contract.eth/path like any normal URL","impact":"high"},{"problem":"Reading blockchain data requires developer knowledge","oldWay":"Use Etherscan, understand ABI, manually call functions","newWay":"Click a link, browser handles the blockchain query","impact":"high"},{"problem":"ENS names can't serve actual content","oldWay":"ENS resolves to address, still need separate frontend","newWay":"web3://vitalik.eth serves actual webpage from blockchain","impact":"medium"}],"uxPatterns":[{"name":"Web3 URL Bar","description":"Browser or extension interprets web3:// URLs","mockup":"concept/physical-link","userFlow":["User types or clicks web3:// URL","Browser/extension parses URL","Makes EVM call to specified contract","Contract returns HTML/JSON/binary content","Browser renders the response","Shows decentralized origin badge"]},{"name":"Decentralized App Page","description":"Full dApp UI served from smart contract","mockup":"concept/physical-link","userFlow":["User visits web3:// URL","Full HTML/CSS/JS loaded from contract","Interactive UI rendered in browser","User interacts with dApp","Transactions submitted normally","UI cannot be censored or modified"]},{"name":"On-Chain Resource Link","description":"Share links to specific on-chain data","mockup":"concept/nft-gallery","userFlow":["User wants to share on-chain content","App generates web3:// URL","Also provides HTTPS gateway fallback","Recipient clicks link","Content loads from blockchain","Works even if original site is down"]},{"name":"ENS Content Resolution","description":"ENS names that serve actual web content","mockup":"concept/physical-link","userFlow":["User owns ENS name","Configure content resolver","Point to on-chain contract","Contract implements web3:// interface","web3://name.eth serves that content","Visitors see decentralized website"]}],"uiComponents":[{"name":"Web3UrlInput","description":"Input field for web3:// URLs with validation","states":["empty","typing","valid","invalid","loading"],"props":["value","onChange","onNavigate","showChain"]},{"name":"DecentralizedBadge","description":"Indicates content is served from blockchain","states":["verified","gateway","hybrid"],"props":["chain","contract","contentType"]},{"name":"Web3ContentFrame","description":"Renders content fetched from on-chain","states":["loading","loaded","error","unsupported"],"props":["url","sandbox","onLoad","onError"]},{"name":"GatewayFallback","description":"HTTPS gateway link for non-web3 browsers","states":["available","generating","copied"],"props":["web3Url","gatewayDomain","onCopy"]}],"antiPatterns":[{"pattern":"Only supporting web3:// without gateway fallback","why":"Most users don't have web3:// capable browsers","instead":"Always provide HTTPS gateway link as alternative","severity":"critical"},{"pattern":"Not indicating content source","why":"Users don't know if content is decentralized or traditional","instead":"Show clear badge: \"Served from Ethereum\" or similar","severity":"high"},{"pattern":"Slow-loading on-chain content without progress","why":"Users think page is broken","instead":"Show loading progress with chain/contract info","severity":"high"},{"pattern":"Mixing centralized and decentralized content silently","why":"False sense of decentralization security","instead":"Clearly mark which parts are on-chain vs off-chain","severity":"medium"},{"pattern":"Using web3:// URLs without explaining the benefit","why":"Users don't understand why they should use unfamiliar URLs","instead":"Explain: \"This link works forever, even if we disappear\"","severity":"medium"}],"onMonad":[{"aspect":"Content Loading Speed","ethereum":"On-chain content can take 5-15 seconds to load","monad":"Sub-second content delivery","designImplication":"Web3 URLs feel as fast as traditional websites"},{"aspect":"Dynamic Content","ethereum":"Real-time data queries are slow and expensive","monad":"Live data updates feasible","designImplication":"Can build more interactive on-chain UIs"},{"aspect":"Storage Costs","ethereum":"Storing UI on-chain is very expensive","monad":"Lower costs make larger on-chain UIs practical","designImplication":"More comprehensive dApps can go fully on-chain"},{"aspect":"Contract Calls","ethereum":"Multiple calls to render page are slow","monad":"Parallel execution speeds multi-call pages","designImplication":"Complex pages with many data sources still fast"}],"keyTakeaways":["ERC-4804 = URLs that fetch content from blockchain","web3://name.eth/path like normal URLs but decentralized","Always provide HTTPS gateway fallback for compatibility","Show clear indicators when content is served from chain","On Monad: fast enough for interactive on-chain UIs"],"technicalNotes":"ERC-4804 defines the web3:// URL scheme that maps to EVM calls. The URL format is web3://contract.eth/path?query. The browser translates this to a call to the contract's resolve(path, query) function which returns MIME type and content. Supports both human-readable (ENS) and hex addresses. Works with ERC-5219 for more complex contract resource serving."},"sources":[{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/eip-4804","type":"official-spec"},{"label":"Discussion","url":"https://ethereum-magicians.org/search?q=ERC-4804","type":"discussion"}],"urls":{"canonical":"https://www.eipsfordesigners.com/standards/ERC-4804","markdown":"https://www.eipsfordesigners.com/standards/ERC-4804/content.md","agent":"https://www.eipsfordesigners.com/standards/ERC-4804/agent.md","api":"https://www.eipsfordesigners.com/api/standards/ERC-4804","official":"https://eips.ethereum.org/EIPS/eip-4804","discussion":"https://ethereum-magicians.org/search?q=ERC-4804"},"freshness":{"lastReviewed":"2026-04-05","lastUpdated":"2026-04-05"}}