Skip to main content

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.

Ryvo decouples payment execution from settlement. Participants make many payments first through signed cumulative commitments, and settle them later on-chain. Each wallet registers once as a participant and keeps the same participant_id for the life of the deployment. Participants deposit allowlisted tokens into protocol balances. When one participant pays another, they create one permanent one-way payment channel for that token. The payer may optionally lock funds to that channel if the relationship needs guaranteed payment capacity.

On-chain objects

The current architecture uses global singletons plus bucketed participant and channel state:
AccountWhat it storesWhy it exists
GlobalConfigAuthority, fee settings, chain ID, derived message_domain, timelock policyDefines the deployment and the signing domain
TokenRegistryAllowlisted settlement tokensMakes token support explicit rather than implicit
ParticipantBucket + OwnerIndexBucketParticipant slots, balances, policy, BLS key metadata, owner->participant mappingScales participant state while preserving deterministic lookup
ChannelBucketDirectional lane state for participant pairs per tokenTracks cumulative settlement, locks, and signer state per lane
Full field-level layouts are on the Account layouts reference.

Signed messages

Ryvo uses two signed message formats:
  • ryvo-cmt-v5 - the unilateral cumulative commitment for one channel
  • Ryvo-round - the cooperative clearing-round body for several participants
Both messages embed the deployment-scoped message_domain, so a signature for one environment does not verify on another. Full byte-level layouts are on the Message formats reference.

Settlement paths

Those two messages feed three settlement instructions:
ModeInstructionWhen to use
Directsettle_individualOne payer, one payee - the simplest path
Bundlesettle_commitment_bundleOne payee aggregating many payers’ commitments in one token
Cooperative clearingsettle_clearing_roundSeveral participants co-signing one shared round so many lanes advance together
All three settle into the same shared vault and the same participant balances.

End-to-end flow

In the common case, an integration goes through these steps:
  1. Register the payer and payee as participants.
  2. Deposit an allowlisted token.
  3. Create a one-way payment channel.
  4. Optionally lock funds to that channel for guaranteed capacity.
  5. Sign cumulative commitments off-chain as usage grows.
  6. Settle the newest valid state later.
Your first payment walks through each step with working code.

What stays off-chain

Ryvo keeps signed payment updates off-chain until settlement. Most integrations store:
  • the latest signed ryvo-cmt-v5 per channel
  • usage or metering state
  • bundle assembly logic
  • cooperative round construction logic
Only the newest valid state needs to reach the chain.

Why Ryvo uses permanent identities and persistent lanes

Ryvo intentionally uses stable identities and permanent channels. The tradeoff is more long-lived on-chain state, but the protocol becomes much easier to work with:
  • participant_id values do not recycle.
  • Off-chain services can index users without worrying about identity reuse.
  • Channels do not close and reopen, so there is no reopened-channel replay surface.
  • Replay protection is simpler.
  • Payment channels stay stable for clients and operators.
For the rationale, see Design principles.

Choosing a settlement mode

  • Use direct settlement when one payer and one payee need the smallest possible surface and each lane can settle on its own.
  • Use bundle settlement when one payee collects signed commitments from many payers in the same token and wants one transaction instead of many.
  • Use cooperative clearing when several parties are willing to co-sign one shared round so many lanes can be advanced in one transaction.
See Settlement modes for the tradeoffs side by side.

Current deployment

FieldValue
Program ID3UyUFeNsUYPpM6hMRf7H8wg3MKEXQ82rqnsXhZrUwgSD
Clusterdevnet
Message domaina58a109a38f14cc27ef174135176cab3
Gateway-channel settlement tokenOfficial devnet USDC, mint 4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU; resolve token_id from TokenRegistry or RYVO_PROTOCOL_DEVNET_USDC_TOKEN_ID
See Deployment for environment-specific chain IDs and timelocks.

Where to go next

Your first payment

Build the smallest useful Ryvo integration with real Anchor calls.

Payment channels

How one-way, permanent channels are modeled and maintained.

Commitments

How cumulative signed messages work and why they are cheap to update.

Instructions

The full on-chain instruction surface.