Researchers from ETH Zurich identified the home IP addresses of 15% of all Ethereum validators — using four nodes and 72 hours of passive observation. No exploit. No hacking. Just watching.
THE ATTACK
discv5 discovery protocol. Every peer you connect to can see which
subnets you're subscribed to.
15% of all validators linked to real-world IP addresses.
BY THE NUMBERS
THE SOLUTION
Bitcoin solved this in 2021. BIP-155 added native I2P address support to Bitcoin's peer discovery protocol. Monero followed. Both projects made the same observation: if you want a node to be private, give it a private address.
Ethereum has Ethereum Node Records — a flexible key-value format designed for exactly this kind of extension. Adding a new key requires no consensus from the core team. The spec says so explicitly.
We're adding one. "i2p":
a 32-byte hash of an I2P destination address. Any node that understands it
can route its peer connections through the I2P anonymization network.
Any node that doesn't — silently ignores it.
i2p-python is the native Python implementation of the I2P protocol that makes this possible. A complete, from-scratch port of the Java I2P router — 3,240+ tests, 14 crypto primitives, NTCP2 and SSU2 transports, full SAM bridge. Not a wrapper. Not a binding. A real implementation.
Zero breaking changes. Full backwards compatibility. Optional. Additive. And it eliminates the attack vector entirely.
COMPETITIVE ANALYSIS
Every existing privacy network was evaluated. Only one passes all the requirements Ethereum's peer-to-peer stack actually demands.
| Requirement | Tor | Nym | HOPR | Lokinet | I2P |
|---|---|---|---|---|---|
| UDP support (discv5) | TCP only | No | No | Yes | Yes |
| Hidden services (both sides) | Yes | No | No | Yes | Yes |
| No token required | Yes | NYM token | HOPR token | OXEN stake | Yes |
| Latency < 200ms | ~150ms | 500ms+ | 300ms+ | ~100ms | ~80ms |
| Production network | Yes | Testnet | Limited | Small | 50k+ nodes |
| Bitcoin precedent (BIP-155) | Yes | No | No | No | Yes |
THE IMPLEMENTATION
Not a wrapper. Not a binding. A complete reimplementation of the Java I2P router in Python — every protocol, every crypto primitive, every transport layer.
GET INVOLVED
The implementation is here. The EIP is drafted. A test network is being stood up. We're not waiting for permission — the ENR spec was designed to be extended without it.