Standardized, chain-config-driven address validation: the chain must be
one of walletChains, and the address must be valid for its runtime.
Returns the canonical normalized address + runtime. The single server-side
entry point used by every flow that accepts a wallet address (payment
instruments, withdrawals, …) so a new chain added via the admin /chains
page is validated with no code change.
ACTIVE chains a WALLET payment instrument can be on, so every one is screened.
Cached read surface over
b2b.chain— the runtime source of truth for the chains we do business with. Reused by wallet/token/withdrawal flows and the dashboards instead of a hard-coded chain list. Writes go through ChainConfigAdminService, which busts the snapshot this caches.