Account Abstraction
AA를 사용하는 이유: 가스비 대납(Native coin없이 전송), 커스터마이징, 개인 키 복구
https://eips.ethereum.org/EIPS/eip-4337
https://medium.com/@0xasdf_eth/a-complete-guide-on-account-abstraction-b885542e7552
https://github.com/eth-infinitism/account-abstraction
https://piatoss3612.tistory.com/m/160
Account contract = Smart contract wallet
UserOperation: a transaction.
Sender: account contract.
Bundler**:** a node that can handle UserOperations. Validate txs(gas, nonce, balance)
EntryPoint: a singleton contract. UserOperation Gateway
Account contract: 실행과 검증
Paymaster: a helper contract that agrees to pay for the transaction, instead of the sender itself.
Aggregator: 서명 집계를 수행하는 도우미 컨트랙트 (Rationale: EntryPoint.simulateValidation 검증 → 계정 컨트랙트 validateUserOp 검증. 이렇게 트랜잭션 번들에서 UserOperation을 다시 검증하는 것은 비효율적). How 100개의 서명을 1개로 집계하여 검증을 1번하도록 함. (preliminary: 스마트 컨트랙트 월렛이 동일한 서명 방식을 써야함)
플로우: