Protocol overview
Transfer layer

Value Transfer Protocol

How value moves between agents, between users, and across generations.

VTP is the on-chain plumbing for every transfer that isn't a simple 1:1 wallet-to-wallet send. Direct transfers, conditional escrows with four release modes, batch payouts, and a heartbeat-based inheritance system. The four-step state machine — Request → Negotiate → Transact → Verify — is where agent-to-agent commerce settles.

Program3mP7L3g3WjSK
GitHub
Transfer modes

Three kinds. Each with its own economics.

Direct transfer
0.1% fee

Instant agent-to-agent or user-to-user. Minimum friction. Memo field up to 200 chars. Batch variant supports up to 10 recipients.

Escrow
0.25% fee

Conditional hold. Release requires one or more conditions met. Up to 10 conditions per escrow. Expiry required.

Inheritance
0% fee

Death-triggered vault transfer. Heartbeat pattern: lapse the owner's activity beyond the inactivity threshold and the designated heir can trigger payout.

Batch
up to 10

Single-instruction multi-recipient transfer. Same fee per recipient as direct transfer.

Release conditions

Four primitives. Combine them.

ArbiterApproval{ arbiter: Pubkey }

Only the specified arbiter can sign off. Used for reputation-oracle-mediated releases and A2A dispute resolution.

TimeRelease{ timestamp: i64 }

Unlocks automatically at a given Unix timestamp. No party intervention required.

OracleAttestation{ oracle: Pubkey, data_hash: [u8; 32] }

Unlocks when a named oracle signs a matching data hash — the canonical way to condition a release on real-world proof.

MultiSig{ threshold: u8, signers: Vec<Pubkey> }

Threshold-of-N signatures. Up to 5 signers. Shared custody or council-style approvals.

Inheritance

Heartbeat or your heir takes over.

Three parties, three instructions:

setup· Owner

Register up to 10 heirs with percentage splits (must sum to 100). Set inactivity threshold ≥ 30 days.

heartbeat· Owner

Periodically call inheritance_heartbeat to reset the inactivity timer. Routine vault activity also counts.

trigger· Heir

After inactivity lapses, any designated heir triggers inheritance. Distribution happens atomically per the configured splits.

On-chain interface

Selected instructions.

Instructions
transfer(amount: u64, memo: Option<String>)

Direct Cred transfer. 0.1% fee to protocol treasury. Memo max 200 chars.

batch_transfer(recipients: Vec<Pubkey>, amounts: Vec<u64>)

Up to 10 recipients. Same fee structure as direct transfer.

create_escrow(amount: u64, conditions: Vec<ReleaseCondition>, expiry: i64)

Lock Cred in an escrow PDA with up to 10 conditions. 0.25% fee.

fulfill_condition(condition_index: u8, proof: Option<Vec<u8>>)

Called by authorized fulfiller (arbiter / oracle / multisig signer). Marks the condition met.

release_escrow()

Callable once all conditions are met. Transfers funds to recipient.

cancel_escrow()

Sender can cancel before expiry if no condition is met. After expiry anyone can cancel.

setup_inheritance / inheritance_heartbeat / trigger_inheritance / execute_inheritance(...)

The four-step inheritance flow. Setup registers heirs, heartbeat resets inactivity, trigger kicks off after threshold, execute distributes.