Skip to content

PDA Derivation & Fetchers

The program client separates deriving an account address (pure, local) from fetching its data (a remote RPC call). See Conventions › get_ vs fetch_.

Address derivation — get_* (no network)

Each returns a [address, bump] pair via Solace::Utils::PDA.find_program_address, using this client's program_id. They're available as both class and instance methods.

MethodOn-chain seedsReturns
get_escrow_deposit_address(claim_authority:)["escrow_deposit", claim_authority][address, bump]
get_mediated_escrow_deposit_address(id:)["mediated_escrow_deposit", id][address, bump]
get_vault_address(mint:)["vault", mint][address, bump]
ruby
escrow_deposit, = program.get_escrow_deposit_address(claim_authority: claim_authority.address)
mediated,       = program.get_mediated_escrow_deposit_address(id:)
vault,          = program.get_vault_address(mint: mint_address)

The class-method form takes an explicit program_id: (defaults to mainnet):

ruby
Solace::Programs::ZarTrustlessEscrow.get_vault_address(
  mint:       mint_address,
  program_id: Solace::ZarTrustlessEscrow::DEVNET_PROGRAM_ID
)

Account fetching — fetch_* (one RPC call, by address)

Each reads the account at a given address and deserializes it, raising if no account exists there. Derive the address first.

MethodReturns
fetch_escrow_deposit(address:)EscrowDeposit
fetch_mediated_escrow_deposit(address:)MediatedEscrowDeposit
ruby
address, = program.get_escrow_deposit_address(claim_authority: claim_authority.address)
deposit  = program.fetch_escrow_deposit(address:)
deposit.amount        # => 1_000_000
deposit.claim_pubkey  # => "9xQ…"

Existence checks — *_exists? (one RPC call, by address)

Boolean variants that don't raise — useful before deciding to deposit or claim.

MethodReturns
escrow_deposit_exists?(address:)true / false
mediated_escrow_deposit_exists?(address:)true / false
ruby
address, = program.get_escrow_deposit_address(claim_authority: claim_authority.address)
program.escrow_deposit_exists?(address:) # => true

Built on Solace