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.


