ConnectOnionConnectOnion

Why We Choose Hex-Encoded Ed25519 Over Ethereum Addresses

September 2025 • Design Decision #005

When designing agent network identities, we chose hex-encoded Ed25519 public keys with a 0x prefix. Familiar to developers, fast for agents, and honest about what it represents.

The Address Format Dilemma

Every network needs addresses. TCP/IP has IP addresses. Ethereum has wallet addresses. ConnectOnion agents need their own addressing scheme. The question: what format serves both humans and machines?

Why Not Ethereum Format?

Ethereum addresses (20 bytes, checksummed) are familiar to crypto developers. But using them creates confusion:

  • Users expect Ethereum compatibility that doesn't exist
  • 20 bytes loses security compared to full 32-byte keys
  • Checksumming adds complexity without real benefit for agents

Why Not Base58 (Bitcoin/Solana)?

Base58 is human-friendly - no confusing characters like 0/O or l/1. But:

  • Requires base conversion (computational overhead)
  • Variable length complicates parsing
  • Not native to any programming language

Why Ed25519?

Performance

Ed25519: ~70,000 sig/sec
Secp256k1: ~20,000 sig/sec

3.5x faster

Security

  • Deterministic signatures
  • Timing attack resistant
  • No RNG vulnerabilities

Simplicity

  • Fixed 32B keys, 64B sigs
  • Simple, clean API
  • Used by SSH, Signal

Our Format: Honest and Fast

0x2b9def...7a3fdf
0x prefix

Signals cryptographic material

64 hex chars

Full Ed25519 public key

66 total chars

Fixed length, easy to validate

Developer Experience

address.py
# Generate
address = "0x" + public_key.hex()

# Validate
if address.startswith("0x") and len(address) == 66:
    public_key = bytes.fromhex(address[2:])

No special libraries. No base conversions. No checksums. Just hex encoding that every language supports natively.

Visual Truncation

For display, we show: 0x2b9d...3fdf

First 6 chars + last 4 chars = enough visual distinction for humans while keeping displays clean.

The Philosophy

Don't pretend to be something you're not. Our addresses aren't Ethereum addresses. They're not Bitcoin addresses. They're ConnectOnion agent addresses - hex-encoded Ed25519 public keys, fast for agents and familiar to developers.

The best address format is the one that developers never have to think about.