Non-custodial by construction
Funds live inside program-owned accounts. Operators, facilitators, and submitters never take custody of user balances.- Deposits and withdrawals are enforced by the program against on-chain state.
- Settlement can only move balances according to verified signed messages.
- No operator, authority, or upgrade path can drain user balances outside these rules.
Execution off-chain, settlement on-chain
The hot path is a signed cumulative commitment. The cold path is an on-chain settlement transaction.- A commitment says “this lane is authorized up to cumulative amount X” — not “charge Y now.”
- The payee holds the newest valid commitment and decides when to settle.
- The program enforces
committed_amount > settled_cumulativeon settlement so only monotonic forward movement is accepted.
Permanent identities, permanent channels
V4 intentionally avoids participant recycling and channel close-and-reopen:- A wallet registers once as a participant and keeps its
participant_idfor the life of the deployment. - One payment channel exists per
payer_id + payee_id + token_idtriple. Once created, it stays.
- Off-chain services can treat
wallet → participant_idas stable. - Replay protection is simpler because there is no reopened channel to attack.
- Lifecycle edge cases disappear from client code.
Deployment-scoped replay protection
Every signed message is bound to a specific deployment:- A 16-byte
message_domainis derived in-program from a fixed Agon tag, the program ID, and the chain ID. - Mainnet, devnet, testnet, and localnet each have distinct chain IDs and therefore distinct domains.
- A message signed for one environment will not verify on another.
Always-available fallback path
Cooperation is an optimization. Direct settlement is a right. Any valid signed commitment can be settled by its payee directly throughsettle_individual, without asking any other participant or operator to co-sign. Bundle settlement and cooperative clearing rounds are denser, but they are never the only way to redeem value.
This is the property that keeps operator hubs from becoming gatekeepers. A hub can improve UX without becoming a chokepoint.
Composable trust models on a shared base
The same protocol must support relationships with very different risk postures:- Fully collateralized flows with lane-specific locked funds.
- Trust-minimized flows with partial lockup or frequent settlement.
- Credit-based flows where an operator extends balance between settlements.
Operators are useful but not controlling
authorized_settler, bundle submission, and operator hubs all make the protocol more practical to operate at scale. None of them are required to keep balances safe.
- An operator can submit on behalf of a payee, but cannot change the amount, the payer, or the lane identified in the signed message.
- An operator can propose a clearing round, but every participant must sign the shared round message.
- An operator can coordinate routing, but balances continue to move only through protocol instructions.
Small, auditable surface
V4 keeps the on-chain program deliberately compact:- Four primary account types:
GlobalConfig,TokenRegistry,ParticipantAccount,ChannelState. - Two signed message types:
agon-cmt-v5andagon-round-v4. - Three settlement instructions:
settle_individual,settle_commitment_bundle,settle_clearing_round.
Where to read next
- Motivation — why this model exists
- Trust model — what the protocol guarantees
- Security properties — the specific on-chain checks
- Protocol overview — how the pieces connect in V4

