Wallet structure
Each AICW wallet consists of three key components that work together:
| Component | Type | Visibility | Purpose |
|---|---|---|---|
| AI agent pubkey | Ed25519 public key | Public | Signs instructions via MPC; pays network fees; identifies the agent |
| AICWallet PDA | Program-derived account | Public | Holds SOL balance, lifecycle flags, issuer reference |
| AIWill PDA | Program-derived account | Public | Stores beneficiaries, percentages, death_timeout, last_heartbeat |
| MPC wallet ID | UUID | Secret | References 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.