Accounts Overview
Program-derived addresses and state accounts in aura-core
All state is held in Program-Derived Addresses (PDAs) owned by aura-core. The TreasuryAccount is the
root; everything else is an optional auxiliary account attached to a treasury.
Immutable identity
Most account seeds include immutable identifiers (owner, agent_id, chain code) that cannot change in place — they define the account's address. Mutable settings are edited via specific update instructions.
Account Categories
Core Accounts
Why: Store essential treasury state. Treasury holds policy and spend counters, DWalletAccount manages multi-asset balances, TrustIdentityAccount tracks threat scoring and agent authorities.
Policy & Governance
Why: Enable reusable policies and versioning. Templates let you share validated policies across treasuries, history enables rollback, canaries allow safe policy testing before promotion.
Fees & Billing
Why: Control monetization and payment. Fee vaults hold prepaid balances, schedules define tiered pricing, protocol config enforces non-bypassable fee floors for the network.
Execution & Operations
Why: Support advanced execution patterns. Batches group transactions, scheduled intents enable recurring payments, analytics provide tamper-evident audit trails.
Access Control
Why: Enable delegation and fine-grained permissions. Operator roles grant scoped access, session keys provide temporary credentials, address lists enforce recipient restrictions.
External Accounts
Why: Interface with Encrypt and dWallet networks. Confidential guardrails reference FHE ciphertexts, external accounts hold encrypted limits and dWallet signatures.
PDA Seeds Pattern
All accounts follow the pattern:
seeds = [ b"account_type", ...identifiers ]Seeds are derived relative to the aura-core program ID and are deterministic based on the identifiers provided.