Protocol
Accounts and addresses
Program ID, PDAs and the seeds that derive them.
#Program
| Program ID | DosESkyr8zE6V98GyS5VkStkknYkeVJzUxYx6AMKT2od |
| Framework | Anchor 0.31.1 |
| Tokens | Classic SPL Token program only |
#Addresses
Every Chord account is a program-derived address. Seeds are UTF-8 literals and raw 32-byte keys; integers are little-endian u64.
| Account | Seeds | Holds |
|---|---|---|
| Config | "config" | Authority, auctioneer, treasury, chain domain, bond size |
| Settlement | "settlement", config | Nothing. It is the delegate your allowance names. |
| Solver | "solver", config, solver owner | Bonded and locked lamports |
| Batch | "batch", config, batch id | Pair, windows, price, budgets, reserves, status |
| Vault A, Vault B | "vault-a" or "vault-b", batch | The batch’s token vaults |
| User | "user", config, owner | The owner’s nonce floor |
| Receipt | "receipt", config, owner, nonce | Cumulative sold and bought, digest, batch, cancelled flag |
| Market | "market", config, mint A, mint B | Window lengths, order cap, enabled |
| Stake pool | "stake-pool", config | CHORD mint, governance, solver minimum, cooldown, totals |
| Stake vault | "stake-vault", stake pool | Every staked and cooling CHORD |
| Stake | "stake", stake pool, owner | Active and cooling stake, cooldown end, recent deposits |
| Voter weight record | "voter-weight", stake pool, owner | The weight spl-governance reads for one action |
import { PublicKey } from "@solana/web3.js";
const program = new PublicKey("DosESkyr8zE6V98GyS5VkStkknYkeVJzUxYx6AMKT2od");
const [config] = PublicKey.findProgramAddressSync([Buffer.from("config")], program);
const [settlement] = PublicKey.findProgramAddressSync([Buffer.from("settlement"), config.toBuffer()], program);#The config
There is one config per deployment. Only the program’s upgrade authority can create it, once, and its fields never change afterwards:
| Field | Meaning |
|---|---|
authority | The upgrade authority that initialized it |
auctioneer | The collector key that co-signs commits and creates batches |
treasury | Where slashed bonds go |
chain_domain | SHA-256 of the cluster’s genesis hash, bound into every signature |
bond_lamports | The bond locked per committed batch |
#Receipts are permanent
A receipt is written the first time a nonce fills or is cancelled, and never closed. It is the record that makes replay impossible: a nonce with a receipt can only ever continue the order it was bound to. Receipts and batch accounts hold rent for as long as they exist.