1/10

Ports and adapters

How does the inner ring use the chain without naming it? It declares a port — an interface the domain owns, written in the domain's own language:

PaymentsPort: send a payment, read a balance, watch for arrival.

At the edge, adapters implement the port: a Horizon adapter today, a Soroban RPC adapter for contracts, a fake adapter for tests. Swapping RPC providers? A new adapter. Moving testnet → mainnet? Configuration. The core never hears about it.

The domain speaks to the port. The world plugs into the port. That's hexagonal architecture in one sentence.