The Hidden Centralization in Web3: DNS as a Single Point of Failure
Your contracts are immutable. Your domain isn't.
- The Hidden Centralization in Web3: DNS as a Single Point of Failure — you are here
- The Browser Is the Bottleneck: Why dApps Can’t Escape HTTP
- Deterministic IPFS as a Browser-Compatible Discovery Layer
On June 21, 2022, half the internet went dark for about an hour. Cloudflare pushed a misconfigured network update, 19 of its data centers stopped serving traffic, and the blast radius covered Discord, Shopify, Coinbase, and a long tail of dApps that all happened to route their frontends through the same CDN.
The contracts didn't go down. Ethereum kept producing blocks. Solana kept producing blocks (well, mostly). The chain was fine.
You just couldn't reach it.
That's the gap I want to talk about. We've spent a decade building "decentralized" backends. We have not, in any meaningful sense, decentralized access to them.
What "decentralized" actually means today
When someone says they built a Web3 app, they usually mean:
- The state lives on a public blockchain — decentralized.
- The business logic is in a smart contract — decentralized.
- The frontend is hosted on Vercel, Netlify, or AWS, behind a Cloudflare CDN, served from a domain registered through GoDaddy or Namecheap — centralized.
- Wallet RPC calls go through Infura or Alchemy — centralized.
Two out of four steps are decentralized. The first contact a user has with your "decentralized" app is the most centralized part of the entire stack.
The DNS chokepoint, in plain English
Every time you type app.uniswap.org into a browser, here's what happens:
- Your computer asks a DNS resolver for the IP address behind that domain.
- That resolver chains up through ICANN's root servers, Verisign's
.orgregistry, and the operator's authoritative DNS provider. - You get an IP. You connect.
Each link in that chain is owned by exactly one entity. Each one can:
- Go down. Cloudflare, AWS, and major registrars have all had multi-hour outages in the last 18 months.
- Be served a court order. Domain seizures by US law enforcement aren't theoretical, and the list includes financial services.
- Be pressured by a sovereign. Russia, Iran, Turkey, and China DNS-block crypto domains routinely.
- Be revoked by the registrar at any time, for any reason in their ToS.
The blockchain doesn't care about any of this. The blockchain doesn't have a domain.
Real incidents, not hypotheticals
Tornado Cash, August 2022. OFAC sanctions hit. The smart contracts on Ethereum kept running — they're just code. But the tornado.cash domain went dark within days, the GitHub repository was taken down, and the official frontend disappeared. Users with funds locked in the contracts had to dig up community-maintained mirrors or interact with the contract directly via Etherscan to recover their assets. The protocol was "decentralized." The access wasn't.
Uniswap, July 2021. Uniswap Labs delisted around 100 tokens from app.uniswap.org citing "regulatory developments." The liquidity pools were still on-chain. The pairs still traded. They just disappeared from the official frontend. Most users never knew they were still tradeable.
OpenSea, March 2022. Users from Iran reported being locked out of the OpenSea UI based on geo-IP. They still owned the NFTs on-chain. They just couldn't list, buy, or transfer them through the app.
Cloudflare, November 2023 and again June 2024. Multi-hour outages took down a significant chunk of the dApp ecosystem because most projects route through Cloudflare for DDoS protection.
ENS. Even ENS — the supposed decentralized naming system — usually resolves to dApps through gateways like eth.limo and eth.link, which are themselves DNS-resolved domains hosted on regular CDNs. Decentralization at one layer is undone at another.
The pattern is the same every time. The chain is fine. The access path failed.
Decentralized backend ≠ decentralized access
Putting your state on Ethereum doesn't make your app censorship-resistant if the way users reach the app is a single domain on a single CDN. Think of it like a bank vault buried fifty feet underground in a fortified bunker — with the only key taped to the front door of the bunker. The vault is fine. The door isn't.
What good is an immutable contract if the gate to it can be padlocked?
The "last mile" problem
In telecom, the last mile is the connection from the network backbone to your house. It's the most expensive, most fragile, and most political part of the network. It's also the part that determines whether you actually have internet.
Web3 has the same problem, and almost nobody is working on it.
Look at where the funding goes:
- New L1s and L2s.
- New consensus algorithms.
- New programming languages for contracts.
- New DEX designs.
Each of those problems already has half a dozen working answers. What I almost never see funded is the path from a user's browser tab to the chain. That's the last mile. That's where censorship actually happens. That's where outages actually bite.
We don't need another chain
I'm tired of projects whose pitch is "we built a new blockchain because [reason]." We have enough chains. The chains work.
What we need is to fix the part that doesn't.
Where VoiceBan fits
VoiceBan isn't another chain trying to compete with Ethereum, Solana, or Polkadot. The problem we're solving sits one layer above that: how does the frontend that talks to the chain get to the user without DNS, without a CDN, and without a domain registrar with a kill switch?
The answer involves three pieces I'll cover in detail across this series:
- The frontend itself ships as content-addressed assets — pinned to IPFS, fingerprinted by hash.
voiceban.comexists as a convenience for newcomers — most users will hit that first — but the same app is reachable through any IPFS gateway by content hash, and after the first visit the PWA runs locally regardless of whether the domain is up. Ifvoiceban.comis seized tomorrow, the app doesn't go with it. - The list of validator backends rotates deterministically and is published to IPNS. No hardcoded RPC endpoints, no Infura, no Alchemy. The frontend computes where the backends should be at any given minute and finds them through public IPFS gateways. Multiple gateways. In parallel. Any one going down doesn't matter.
- The user's wallet is local-first. Keys never leave the device, and the entire app works offline-first against a cached state.
The result: there is no single domain that can be seized, no single CDN that can fail, no single RPC provider that can rate-limit you out of your own funds. The same forces that protect a smart contract from being rewritten now protect the path to it.
That's the last mile.
What's next
The obvious question after reading this is: if DNS has been broken for this long, why hasn't anyone fixed it? In the next post I'll dig into why — specifically, why the browser, of all things, is what keeps every dApp tied to HTTP, DNS, and a domain registrar in the first place. The constraints are real, and they explain why "just use libp2p" is not the answer people think it is.
References
- Cloudflare outage, June 21, 2022 — 19 data centers offline, ~50% of HTTP requests dropped, blast radius across Discord, Coinbase, Shopify, and others: Cloudflare's official postmortem · BleepingComputer coverage of the affected services
- Tornado Cash OFAC sanctions, August 8, 2022 — smart contracts kept running while the GitHub organisation, developer accounts, and frontend were taken down within hours: U.S. Treasury press release JY0916 · The Register on GitHub suspending Tornado Cash repos and developer accounts
- Uniswap restricting tokens, July 2021 — 129 tokens hidden from
app.uniswap.orgwhile the on-chain pools remained tradeable: CoinDesk reporting - OpenSea Iran lockout, March 2022 — geo-blocking enforcement of US sanctions cut off Iranian users from the OpenSea UI despite on-chain ownership: Fortune on OpenSea + MetaMask blocking sanctioned countries · Decrypt on the user-side impact
- Cloudflare control-plane outage, November 2, 2023 — multi-day disruption traced to a power failure at the PDX-04 facility: Cloudflare's postmortem
- Cloudflare incident, June 20, 2024 — 114-minute degradation from a backbone-routing change combined with a latent bug in DDoS mitigation: Cloudflare's postmortem
- ENS resolves to dApps via DNS gateways —
eth.limoandeth.linkare themselves DNS-resolved domains hosted on conventional CDNs: eth.limo gateway · ENS documentation - US government domain seizures — long-running ICE/HSI operations have seized thousands of domains, including financial-services and crypto-related ones: Operation In Our Sites (Wikipedia) · Category: Domain name seizures by United States (Wikipedia)
- Country-level internet censorship — annual cross-country assessment of state-imposed access restrictions: Freedom on the Net — Freedom House