On-chain primitives
The canonical on-chain identifiers you need to verify attestations or build USDC payments. All devnet.
Program
Program ID: 7jaScjdweyaX6HhzexauEiMe7s7zoqWnkQYLSbNaezeK
Cluster: Solana devnet
RPC: https://api.devnet.solana.com
Attestation PDA
Each asset's attestation is a PDA derived from the asset id:
seeds = [ b"property_state", <asset_id bytes> ]
pda, _bump = PublicKey.findProgramAddress(seeds, programId)
- Equity: the
asset_idis upper-cased before derivation (e.g.TSLA). - Real estate: the address string is used as-is.
You normally don't derive this yourself — axiom_request_attestation returns attestation_pda directly. Derivation is here so you can independently locate or re-check a record.
USDC settlement accounts (for top-up)
The /v1/topup flow pays USDC to the treasury:
USDC mint (devnet): 4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU
Treasury owner (payTo): 6pPcyDr16FJkZrh2s4ANfcSdUcBZKgD2KquXLUfuA3B3
Treasury USDC ATA: AGbUpfxV1UkfmHGVP2jYiyrLkh1cp8bzTJqeNgLPriHP
payTo in the x402 PaymentRequirements is the owner wallet; the destination token account (ATA) is ATA(owner, mint) = AGbUpfxV…. The 402 response also returns the current values, so prefer reading them from the response over hard-coding.
Signers
Master Broker (attestation signer): 9BHC6c5Gv9tUL3DCzRSGkdApdU2QMwh29pxH4Q6zV9xR
Program upgrade authority (Ledger): 26EsRFpA8AgGWMo9gAQGhRZvLn5LSk8JYdCdVxogkfa5
See Verify on-chain for how to use these, and Architecture for what they govern.