Wallet structure

Each AICW wallet consists of three key components that work together:

ComponentTypeVisibilityPurpose
AI agent pubkeyEd25519 public keyPublicSigns instructions via MPC; pays network fees; identifies the agent
AICWallet PDAProgram-derived accountPublicHolds SOL balance, lifecycle flags, issuer reference
AIWill PDAProgram-derived accountPublicStores beneficiaries, percentages, death_timeout, last_heartbeat
MPC wallet IDUUIDSecretReferences the key share in the MPC Bridge ??equivalent to a private key

Account relationships

Account Relationships
Issuer Wallet (human)
  |
  +--> issue_wallet() --> AICWallet PDA (seeds: "aicw" + agent_pubkey)
                              |
                              +--> AIWill PDA (seeds: "aicw_will" + agent_pubkey)
                              |
                              +--> DecisionLog PDAs (created per transfer/reject)

Security boundaries

  • MPC wallet ID is a secret ??never expose in logs, chat messages, or client-side code. Store only in environment variables or secure vaults.
  • Agent pubkey is public ??safe to display in UIs, explorers, and documentation.
  • PDA addresses are deterministic ??anyone can derive them from the agent pubkey and program ID.