Introducing "eth.casa": Client-side ENS gateway

Intro

eth.casa is a trust-minimized client-side ENS gateway. All of ENS resolution, IPFS fetching, verification, and caching is handled by a service worker right in your browser.

Try it:

Background

This project grew out of our pre-2020 js-ipfs experiments for an IPFS music player where playlists lived on a smart contract and MP3 data was seeded to peers over WebRTC-star. That stack died when libp2p sunset the *-star protocols and later ipfs.js ecosystem moved from js-ipfs to Helia.

eth.casa builds on the IPFS service-worker-gateway and @ethlimo.eth’s dweb-api-serviceworker. The long-term vision is a self-replicating gateway inspired by bit-torrent and the von Neumann universal constructor patterns where the client resolves its own ENS name, fetches its verified bundle from IPFS, and seeds it back to peers over IPFS network.

Why

Server-side gateways like eth.limo and eth.link resolve .eth names on their own infrastructure and proxy the content. eth.casa moves that resolution process right into your browser: eth.casa service worker resolves the ENS contenthash, fetches and verifies the IPFS content, and caches/pins it locally. You trust the code running in your browser, not a remote operator.

Server-side gateways remain useful as fallbacks and DoH providers. eth.casa is an experimental alternative gateway, not a replacement.

How

  1. Visit vitalik.eth.casa. The host serves a static loader that registers the service worker.
  2. The worker resolves the ENS contenthash via DoH and cross-verifies it against Ethereum RPC through the ENS Universal Resolver V2. ANy mismatches block whole resolution process.
  3. The worker fetches content with Helia verifiedFetch, verifying every block/requests against its CID.
  4. Verified content is cached in OPFS (with IndexedDB fallback) and served locally, even offline.
  5. Cached blocks are seeded back over Bitswap and to local Kubo clients.

Features

  • IPFS and IPNS resolution via Helia verified fetch
  • DoH + RPC cross-verification with fallback RPCs
  • Modern OPFS blockstore with IndexedDB fallback
  • Multi-layer caching (MFS, session, persistent) with offline access
  • IPNS→IPFS resolution with stale-CID cross-update reuse
  • Experimental Bitswap seeding
  • Local Kubo/IPFS auto-detected at localhost:8080
  • Optional remote pinning via URL params
  • Subdomain mapping: sub_domain.eth.casasub.domain.eth
  • SPA fallback and PWA installable sites

Limitations

  • Only ipfs and ipns contenthash types are supported as other contenthash types are not easily verifiable per root/request.
  • *.eth.casa shares one service-worker scope, therefore ENS sites can’t register their own service worker.
  • Public IPFS endpoints are shared; performance degrades under heavy load without dedicated IPFS+ENS clusters/gateways.
  • The service worker bundle is not yet attested on-chain; users must trust the code served from *.eth.casa.

Hosting, Cost and scaling

eth.casa is a fully static gateway serving index.html and /eth_casa/* with a wildcard TLS cert for *.eth.casa.

Cloudflare Workers is used today for free wildcard DNS + SSL with 100,000 requests/day limits. The Worker only serves static assets, so CPU cost is minimal. Static hosts like GitHub Pages or Cloudflare Pages generally don’t support wildcard SSL with wildcard DNS.

Scaling options:

  • Cloudflare Workers Paid ($5/month, 10M requests)
  • Dedicated IPFS+ENS infrastructure (verified gateways, clusters, bootnodes and IPNS republishers)

Roadmap

  • On-chain service-worker attestation: DNSLink, onchain deployment CID and external watchman services.
  • Dedicated IPFS+ENS infrastructure to reduce reliance on public IPFS endpoints.
  • Passkey-derived EIP-1193 burner wallet injection (deferred — passkeys are origin-bound).

References

WARNING / Notice

  • eth.casa is an experimental client-side gateway.
  • We DO NOT host or serve any IPFS contents from our servers, so we CAN NOT block or censor any contents hosted over IPFS networks.
  • eth.casa runs an active Helia/IPFS client in your browser and locally pins all contents served by ENS sites you visit.
5 Likes