TECHNICAL SPECIFICATION

The Fix

Add one key to an Ethereum Node Record. Replace a cleartext IP address with a 32-byte I2P destination hash. Zero breaking changes.

The ENR Spec

Ethereum Node Records (EIP-778) are key-value identity records that nodes exchange during peer discovery. The format is explicitly designed to be extensible:

// "Records can contain any key-value pairs." // "Nodes should ignore keys they do not know how to interpret." // — EIP-778, Extensibility

Adding a new key requires no hard fork, no EIP approval vote, no consensus change. Any node can publish an ENR with custom keys. Nodes that understand the key use it. Nodes that don't — ignore it. This is exactly how Bitcoin added I2P support via BIP-155.

The Proposed Key

"i2p" : <32 bytes> // SHA-256(I2P Destination) // Full ENR example: { "id": "v4", "secp256k1": <33 bytes>, // Ethereum identity "ip": null, // omitted or zeroed "udp": null, "i2p": 3a9f1c2d8e7b... // I2P destination hash }

The value is the SHA-256 hash of the node's full I2P Destination — a 387-byte structure containing public encryption and signing keys. This 32-byte hash is what the I2P network uses to route traffic. It functions like an IP address but with no physical location attached.

How It Works

STEP 1
Node publishes ENR
with i2p key
STEP 2
I2P-aware peers
connect via I2P
STEP 3
Non-I2P peers
silently ignore key

Backwards compatible. Nodes without I2P support skip the unknown key. The network continues to function identically for them.

Opt-in. Validators choose whether to publish an I2P address. No one is forced to run an I2P router. But those who do become invisible to the deanonymization attack described by Heimbach et al.

Additive. A node can publish both a cleartext IP and an I2P address simultaneously, allowing I2P-aware peers to use the private channel while maintaining full connectivity with the rest of the network.

Implementation Status

COMPONENTSTATUSNOTES
I2P protocol stack (Python) COMPLETE i2p-python: full router, SAM, transports
NTCP2 interop with Java peers VERIFIED Noise XK handshake confirmed on live network
Security audit COMPLETE bandit + pip-audit + crypto checklist
Cross-platform builds COMPLETE deb, rpm, Windows exe, sdist, wheel
EIP draft IN PROGRESS ENR extension specification
Nethermind plugin PLANNED C# Ethereum client I2P integration
Test network (20 nodes) PLANNED I2P compliance validation at scale

Get Involved

The code is open source. The spec is public. Contributions welcome.

VIEW ON GITHUB