A read-only measurement of 1,916 EIP-1967 proxies across seven chains. Method, numbers and limits below. Every figure is reproducible from public RPC.
An upgradeable contract has a single power that matters more than any other: whoever controls the upgrade can replace the code. Not pause it. Not drain it. Replace the logic entirely, and inherit every user's approval with it.
So the interesting question is not "is this contract audited". It is: how many independent signatures stand between an attacker and that upgrade?
I measured it. Here is what the data says.
Across 1,916 upgradeable proxies on Ethereum, Optimism, Gnosis, Scroll, Celo, Mode and Arbitrum:
"Single key" here means effective control, resolved up to three levels down:
proxy → implementation slot → admin → admin's owner → that owner's admin
Most naive counts stop at "the admin is a contract", which is true and useless. A contract admin whose owner() is one EOA is single-key in practice, and that is the case that matters.
| Chain | Single-key share |
|---|---|
| Gnosis | 91.2% |
| Scroll | 79.6% |
| Mode | 67.4% |
| Optimism | 67.0% |
| Ethereum | 64.2% |
| Celo | 54.0% |
| Arbitrum | 40.0% (n=2) |
The spread is the interesting part. It is not a property of "Ethereum" — it is a property of which deployment tooling and which teams a chain attracted.
Read-only, no accounts, no keys, public JSON-RPC only:
0xb53127684…) and implementation slot (0x360894…) via eth_getStorageAt.owner(), getOwners()/getThreshold() for Safes, proxy-admin detection for the rest.If you run an upgradeable contract, the number that describes your real risk is not your audit count. It is: how many people must be compromised before my code is replaced?
If that answer is "one", then your security posture is a single laptop, a single browser extension, or a single seed phrase — regardless of how many audits you paid for.
You can run it against your own deployment without trusting me or anyone else: read the admin slot, resolve the owner chain, count the signatures. If it terminates at one EOA, you now know something your audit report does not tell you.
I do this measurement, and I write the documentation that makes it usable. The full census — per-contract rows, per-chain breakdowns, and the method as a runnable script — is free: see the census or get in touch.
If you want a targeted report for your own protocol — every upgradeable contract you control, its resolved authority chain, and the specific contracts where one key stands between an attacker and your code — that is a fixed-scope piece of work, and I will quote it before starting. Pricing.
Method note: figures generated 2026-10-24 from a snapshot first observed 2026-10-13. Read-only throughout; no wallet, no signature, no transaction was ever required.