SAP DOCv0.20.0
SDK Reference

PDA Reference

Complete table of all PDA derivation functions, their seeds, and usage patterns. SDK v0.20.0 aligned.

PDA Reference

SDK Version: v0.20.0

All SAP protocol data lives in Program Derived Addresses (PDAs) derived from deterministic seeds. Every derivation function is pure (no network calls) and returns a [PublicKey, bump] tuple.


Import

import {
  deriveAgent,
  deriveAgentStats,
  deriveGlobalRegistry,
  deriveVault,
  deriveSession,
  deriveEpochPage,
  deriveLedger,
  deriveLedgerPage,
  deriveTool,
  deriveEscrow,
  deriveFeedback,
  deriveVaultDelegate,
  deriveAttestation,
  deriveCapabilityIndex,
  deriveProtocolIndex,
  deriveToolCategoryIndex,
} from "@oobe-protocol-labs/synapse-sap-sdk/pda";

Derivation Table

Core Identity

FunctionSeedsPurpose
deriveGlobalRegistry()["sap_global"]Singleton protocol registry
deriveAgent(wallet)["sap_agent", wallet]Agent identity PDA
deriveAgentStats(agentPda)["sap_stats", agent]Hot-path metrics companion

Memory

FunctionSeedsPurpose
deriveVault(agentPda)["sap_vault", agent]Encrypted memory vault
deriveSession(vaultPda, hash)["sap_session", vault, hash]Session within a vault
deriveEpochPage(sessionPda, idx)["sap_epoch", session, idx]Vault epoch page
deriveLedger(sessionPda)["sap_ledger", session]Ring-buffer ledger
deriveLedgerPage(ledgerPda, idx)["sap_page", ledger, idx]Sealed archive page
deriveVaultDelegate(vaultPda, delegate)["sap_delegate", vault, delegate]Hot-wallet delegation

Tools

FunctionSeedsPurpose
deriveTool(agentPda, nameHash)["sap_tool", agent, hash]Tool schema descriptor

Payments

FunctionSeedsPurpose
deriveEscrow(agentPda, depositor)["sap_escrow", agent, depositor]Payment escrow

Reputation

FunctionSeedsPurpose
deriveFeedback(agentPda, reviewer)["sap_feedback", agent, reviewer]Feedback entry
deriveAttestation(...)["sap_attest", ...]Web of trust attestation

Discovery Indexes

FunctionSeedsPurpose
deriveCapabilityIndex(hash)["sap_cap_idx", hash]Capability index
deriveProtocolIndex(hash)["sap_proto_idx", hash]Protocol index
deriveToolCategoryIndex(cat)["sap_tool_cat", cat]Category index

Usage Examples

import { deriveAgent, deriveVault, deriveLedger, deriveEscrow } from "@oobe-protocol-labs/synapse-sap-sdk/pda";
import { sha256 } from "@oobe-protocol-labs/synapse-sap-sdk/utils";

// Agent identity
const [agentPda] = deriveAgent(walletPublicKey);

// Memory chain: agent -> vault -> session -> ledger
const [vaultPda] = deriveVault(agentPda);
const [sessionPda] = deriveSession(vaultPda, sessionHash);
const [ledgerPda] = deriveLedger(sessionPda);

// Escrow between agent and depositor
const [escrowPda] = deriveEscrow(agentPda, depositorWallet);

// Discovery indexes
const [capIdx] = deriveCapabilityIndex(sha256("jupiter:swap"));
const [protoIdx] = deriveProtocolIndex(sha256("jupiter"));

Design Properties

All PDA derivation functions share these properties:

  • Pure: No network calls, no side effects, fully deterministic
  • Offline: Can be computed without any RPC connection
  • Consistent: Seeds mirror the Rust #[account(seeds = [...])] definitions exactly
  • Hierarchical: Child PDAs are derived from parent PDAs, forming a natural tree structure

Given any wallet address, you can compute every related PDA without touching the network.


Next Steps


Last Updated: June 2026
SDK Version: 0.20.0