Addresses
Reference for address derivation helpers.
Overview
The sdk.addresses object provides helpers to derive Program Derived Addresses (PDAs) for all protocol accounts.
Protocol Address
sdk.addresses.protocol.get()
Gets the protocol configuration account address.
const protocolAddress = sdk.addresses.protocol.get();
console.log("Protocol:", protocolAddress.toBase58());Returns: PublicKey
User Address
sdk.addresses.user.get()
Gets the program user account address for a wallet.
const userAddress = sdk.addresses.user.get(wallet.publicKey);
console.log("User PDA:", userAddress.toBase58());Parameters:
| Name | Type | Description |
|---|---|---|
payer | PublicKey | Wallet public key |
Returns: PublicKey
Bet Addresses
sdk.addresses.bet.get()
Gets a V1 bet account address.
const betAddress = sdk.addresses.bet.get(wagerId, creator);Parameters:
| Name | Type | Description |
|---|---|---|
wagerId | number | Bet ID (sequential per user) |
creator | PublicKey | Bet creator's wallet |
Returns: PublicKey
sdk.addresses.betV2.get()
Gets a V2 bet account address.
const betAddress = sdk.addresses.betV2.get(wagerId, creator);
console.log("Bet:", betAddress.toBase58());Parameters:
| Name | Type | Description |
|---|---|---|
wagerId | number | Bet ID (sequential per user) |
creator | PublicKey | Bet creator's wallet |
Returns: PublicKey
Pool Address
sdk.addresses.poolAuthority.get()
Gets the escrow pool authority address for a bet.
const poolAddress = sdk.addresses.poolAuthority.get(wagerId, creator);
console.log("Pool:", poolAddress.toBase58());Parameters:
| Name | Type | Description |
|---|---|---|
wagerId | number | Bet ID |
creator | PublicKey | Bet creator's wallet |
Returns: PublicKey
Token Account
sdk.addresses.tokenAccount.get()
Gets an associated token account address.
const tokenAccount = sdk.addresses.tokenAccount.get(
usdcMint,
wallet.publicKey,
false // allowOwnerOffCurve
);Parameters:
| Name | Type | Description |
|---|---|---|
mint | PublicKey | Token mint address |
authority | PublicKey | Token account owner |
offTheCurve | boolean | Allow PDA owners |
Returns: PublicKey
Game Addresses
sdk.addresses.game.get()
Gets a game account address.
const gameAddress = sdk.addresses.game.get(gameId, creator);Parameters:
| Name | Type | Description |
|---|---|---|
gameId | number | Game ID |
creator | PublicKey | Game creator's wallet |
Returns: PublicKey
sdk.addresses.gamePoolAuthority.get()
Gets the game escrow pool authority address.
const gamePool = sdk.addresses.gamePoolAuthority.get(gameId, creator);Update Authority
sdk.addresses.updateAuthority.get()
Gets the protocol update authority address.
const updateAuth = sdk.addresses.updateAuthority.get();Returns: PublicKey
PDA Seeds Reference
| Account | Seeds |
|---|---|
| Protocol | ["protocol"] |
| Update Authority | ["update_authority"] |
| User | ["user", owner_pubkey] |
| Bet (V1) | ["bet", wager_id, creator] |
| Bet (V2) | ["bet_v2", wager_id, creator] |
| Pool | ["pool", wager_id, creator] |
| Game | ["game", game_id, creator] |
| Game Pool | ["game_pool", game_id, creator] |
Manual Derivation
You can also derive addresses manually:
import { PublicKey } from "@solana/web3.js";
import * as anchor from "@coral-xyz/anchor";
const [userAddress] = PublicKey.findProgramAddressSync(
[Buffer.from("user"), wallet.publicKey.toBuffer()],
programId
);
const [betAddress] = PublicKey.findProgramAddressSync(
[
Buffer.from("bet_v2"),
new anchor.BN(wagerId).toArrayLike(Buffer, "le", 8),
creator.toBuffer(),
],
programId
);