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.
3mP7L3…g3WjSKThree kinds. Each with its own economics.
Instant agent-to-agent or user-to-user. Minimum friction. Memo field up to 200 chars. Batch variant supports up to 10 recipients.
Conditional hold. Release requires one or more conditions met. Up to 10 conditions per escrow. Expiry required.
Death-triggered vault transfer. Heartbeat pattern: lapse the owner's activity beyond the inactivity threshold and the designated heir can trigger payout.
Single-instruction multi-recipient transfer. Same fee per recipient as direct transfer.
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.
Heartbeat or your heir takes over.
Three parties, three instructions:
Register up to 10 heirs with percentage splits (must sum to 100). Set inactivity threshold ≥ 30 days.
Periodically call inheritance_heartbeat to reset the inactivity timer. Routine vault activity also counts.
After inactivity lapses, any designated heir triggers inheritance. Distribution happens atomically per the configured splits.
Selected 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.