Versioned transactions
How SDK private operations use Solana v0 transactions and validated address lookup tables.
Private proof operations have many accounts: pool state, mints, LP vaults, custody, tree state, page archive and spent-nullifier PDA. The SDK constructs these as Solana v0 transactions and uses address lookup tables to reduce serialized account-key bytes.
SDK requirements
- Configure one or more LUT addresses in
Lethenymous. - The wallet adapter must implement
signVersionedTransaction. - The SDK checks the configured table at finalized commitment, validates table activation and optional expected authority/address set, then compiles a v0 message.
- Before proving, the private path preflights the complete transaction size. Without a validated LUT or v0 signing support, it throws
LookupTableRequiredError.
The public convenience flow signs with the configured wallet. For the hosted relay flow, the client uses the real privateSwap or unshield instruction builder with the relayer public key as payer and compiles the unsigned v0 message with that same fee payer. The relayer is the sole required signer in the accepted Devnet policy.
LUT is a compression mechanism
The LUT does not make accounts private and does not authorize arbitrary addresses. The relayer resolves referenced tables and checks the resolved operation accounts against frozen program and SDK account policy. Account order, signer flags, writable flags and program ID are still validated.
See transaction size, relayer policy and SDK getting started.