# AA Goals and Constraints
## Goals
### Required
- **Alternative Signature Schemes**
- Other signature schemes are supported unconditionally and in any permutation
- Generally will require cyptographic precompiles anyways
- **Authorization and Gas Payment Separation**
- This directly allows many types of paymastering and transaction sponsorship
- It, in combination with mempool policies, allow relayerless sponsorship
- **Arbitrary Validation**
- An invalid transaction should not cost the user gas
- If constraints are validated after transaction decides to pay, user may be forced to pay for a reverting transaction
- **Signature Aggregation Compatibility**
- One insight is that signature aggregation schemes generally have the same interface. They take the public key, message, and signature and then output a witness
- Our AA solution does not need to immediately support signature aggregation but should support the above interface and allow for the signature to be fully removed in the future
- **Batching**
- Must also have correct handling for more complex interactions such as atomic calls
- Wallets have signaled clearly that they prefer the protocol to provide batching as a first class primitive
- **Key Rotation**
- This officially breaks the cryptographic link between an address and keys associated with it
- An important subgoal is supporting arbitrary account recovery mechanisms
- **Unified Account Address**
- With the cryptographic link between owner key and account broken, need a new mechanism to unify the account across many chains
- **Assertions**
- While somewhat of a sidequest, asserting the result of a transaction was identified as the most important change that can be made for account security
- Providing a first-class experience will ensure wallets broadly incorporate support
### Stretch
- **Default Accounts**
- If account populations look anything similar to today, most users will use EOA/default accounts
- Having a default "smart" account gives the protocol a mechanism to export features to its largest class of users
- **2D / Flex Nonce**
- There are many occasions where a user wants to accomplish two unrelated tasks, but sequential nonces enforce a certain ordering for unrelated operations
- Some multi-tenant AA use cases, such as relayerless privacy pools, require support for parallel nonces
- **ERC-20 Token Sponsorship w/o Bundler**
- Paying for gas with tokens is a major use case of AA
- Bundlers add a point of centralization that we prefer to remove, however, it is difficult to safely convert arbitrary ERC-20 tokens to ether
- Other protocols solve this by having a canonical AMM
- Supporting token sponsoship also substantially increases the state required to participate in the mempool, which can affect future stateless proposals
- **Privacy Pool w/o Relayer**
- Relayers can defeat the purpose of using a privacy pool, so supporting relayerless privacy pools is an important goal
- There are two main changes needed to nicely support the privacy pool
- 1) 2D nonce can allow the nullifier to be the replay protection mechanism and avoid contention among multiple users
- 2) Choosing a few canonical privacy pools to retain state of in VOPS world will allow privacy pools to be used by public mempool
- Without 2) it could be possible to provide a witness for the nullifier and still support in public mempool
- **Keystore Wallet**
- The cryptographic relationship of EOAs meant there was no account configuration that needed to be shared across chains
- With AA, it's no possible for a chain to have a stale account configuration. The keystore is an idea for efficiently representing and propagating configuration changes to all EVM chains.
- **Memo**
- Exchanges and bridge protocols could benefit from an user-definable identifier that is separate from the calldata of the transaction
## Constraints
- **No Relays**
- Core features of the chain must be usable without going through an intermediary or relayer
- For example, we believe privacy pools to be more of a core feature than paying for gas with ERC-20
- **Don't break L2**
- AA must not put undue and unsolvable complexity onto L2s
- **Passes Walkaway Test**
- AA and the core features of the protocol must not require on going work and maintence
- **Works with Future Plans**
- This includes FOCIL, stateless, and zkEVM
- **Everything Works with Public Mempool and FOCIL**
- The public mempool is a core public good offered by the protocol today and embodies many of our core values, such as decentralization and censorship resistance
- **Validation Compute Must be Bounded**
- Not only must it be bounded, but the bound must be easily identifiable by the protocol to reason about it and abide by it