Ryvo is designed around a small set of properties that hold across direct, bundled, and cooperative settlement. Everything else is a policy choice layered on top.Documentation Index
Fetch the complete documentation index at: https://docs.ryvo.network/llms.txt
Use this file to discover all available pages before exploring further.
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 execution path is a signed cumulative commitment. The settlement path is an on-chain 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
The protocol 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 Ryvo 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
Bundle submission and operator hubs make the protocol more practical to operate at scale. None of them are required to keep balances safe.- 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
The on-chain program stays deliberately compact:- Global singletons plus bucketed participant and channel state.
- Two signed message types:
ryvo-cmt-v5andRyvo-round. - 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
