오늘은 비탈릭 부테린이 제안한 EIP4337 account abtraction에 대해 알아볼 예정입니다.
우선 두 종류의 account인 EOA와 CA에 대해 먼저 알아보도록 합시다.
: 계정 추상화
*추상화 : 복잡한 내부적인 작동 과정을 숨기고 핵심적인 기능만 간추리는 과정을 의미
=> abtraction의 목적은 EOA와 CA의 두 타입으로 나눠진 account를 contract account 하나로 만드는 것. 즉 기존에 서로 다른 타입으로 존재하는 두 account를 하나로 추상황시킴으로써 사용자들이 이를 구별할 필요가 없도록 만드는 것
EOA에서 시작되는 트랜잭션의 검증이 이더리움 가상머신이 아닌, 가상머신 이전에 이더리움 프로토콜에서 이루어진다는 점입니다.
이를 해결하기 위해서는 CA로 트랜잭션의 verification이 가능하도록 만들어야 합니다. 즉 트랜잭션의 검증과 실행까지 모든 과정을 이더리움 가상머신에서 수행되도록 만들어야 합니다.

이를 구현하기 위한 변화는 코어 레벨에서 시작되나, 이러한 코어 레벨에서의 변화를 통해 다양한 어플리케이션의 변화가 발생한다.

2016부터 제안되어져 와서 비탈리부테린을 기점으로 EIP86, EIP2938 등이 제안되어 왔지만 프로토콜을 변경해야한다는 문제로 적용되기는 어려운 제안이었으나
컨선서스 레벨을 바꾸지 않고 등장한 제안이 ERC4337입니다. 아래에 ERC4337 제안자들이 구현한 코드입니다
https://github.com/eth-infinitism/account-abstraction

User operation
smart contract wallet 에서 만들어낸 일종의 트랜잭션과 유사한 object
Bundler
User operation을 모아 번들링해주는 layer
https://github.com/eth-infinitism/bundler

EntryPoint Contract
AA를 구현하고 있는 contract들을 control하는 중심이 되는 contract
Paymaster Contract
gas fee 관련하여 로직을 담고 있는 contract
참고하면 좋을 자료
https://eips.ethereum.org/EIPS/eip-4337
https://github.com/cupcakes-3/sdk
https://github.com/4337Mafia/awesome-account-abstraction
참조
https://medium.com/decipher-media/account-abstraction-erc-4337-2b8dff6b0a34