ERC-4337: Account Abstraction Using Alt Mempool
해당 링크를 기반으로 제가 이해한 내용을 보태서 작성하였습니다.


Abstract


  1. 계정 추상화 제안(Account Abstraction Proposal)

    ERC-4337은 계정 추상화를 위한 제안입니다. 계정 추상화는 사용자가 스마트 컨트랙트를 자신의 계정으로 사용할 수 있게 하여, 다양한 검증 로직을 적용할 수 있게 하는 개념입니다.

  2. 합의 계층 프로토콜 변경 회피

    이 제안의 핵심은 기존 합의 계층(Consensus layer) 프로토콜에 변경을 가하지 않으면서도, Account 추상화를 가능케 하는 것입니다. 즉, 새로운 프로토콜 기능 추가나 기존 트랜잭션의 구조를 변경 없이도 계정 추상화를 구현할 수 있습니다.

  3. UserOperation 객체 도입

    ERC-4337은 UserOperation이라는 새로운 상위 계층의 가상(pseudo) 트랜잭션 객체를 도입합니다. 사용자들은 이 객체를 특별한 메모리 풀(mempool)에 전송하게 됩니다.

  4. Bundlers의 중요 역할

    Bundlers는 ERC-4337 프로토콜에서 특별한 역할을 수행하는 참여자입니다. 그들의 주 역할은 여러 UserOperation 객체들을 수집하여 하나의 트랜잭션으로 묶는 것이며, 이를 통해 특별한 Smart Contract의 handleOps() 함수를 호출합니다. 이 함수는 다수의 UserOperation 객체들을 처리하며, 그 결과로써 실제 이더리움 트랜잭션을 실행합니다.

  5. 블록에 포함되는 과정

    Bundlers는 여러 사용자로부터 받은 UserOperation 객체들을 하나의 트랜잭션으로 결합합니다. 이렇게 결합된 트랜잭션을 이용하여, Bundlers는 특수한 스마트 컨트랙트의 handleOps() 함수를 호출하게 됩니다. 이 함수 호출을 통해 생성된 트랜잭션은 최종적으로 Ethereum Blockchain의 블록에 포함되게 됩니다.

Specification


Definitions

각각의 핵심 요소와 인터페이스에 대한 설명

UserOperation

1. UserOperation 객체의 도입

UserOperation은 사용자를 대신하여 보낼 트랜잭션을 설명하는 구조로, 일반적인 이더리움 트랜잭션과 유사한 필드를 가지고 있습니다. 이 필드들은 다음과 같습니다

  • sender: 작업을 보내는 발신자입니다.
  • to: 작업을 받는 수신자입니다.
  • calldata: 호출할 함수와 파라미터를 포함한 데이터입니다.
  • maxFeePerGas, maxPriorityFee: 가스 비용을 결정하는 값입니다.
  • signature: 작업을 보낸 사람의 서명입니다.
  • nonce: 재생 공격(Replay Attack)을 방지하기 위한 유일한 값입니다.

이 외에도 UserOperation은 일반 트랜잭션과 달리, 추가적인 필드들을 포함합니다. 이 필드들은 UserOperation이 어떻게 처리되어야 하는지에 대한 추가 정보를 제공합니다.

2. Signature 필드의 유연성

  • UserOperation의 signature 필드는 트랜잭션을 보낸 사람을 확인하는데 사용되지만, 이 필드의 사용 방식은 ERC-4337 프로토콜에 의해 고정되어 있지 않습니다. 이는 각 Account(Smart Contract)가 자유롭게 signature를 처리하는 로직을 정의할 수 있음을 의미합니다.
  • 서명은 일반적으로 발송자의 개인키를 사용해 트랜잭션에 대한 확인을 제공합니다. ERC-4337에서는 각각의 Account이 이 서명을 어떻게 처리할지를 자체적으로 정의할 수 있습니다. 예를 들어, 한 Account는 서명을 통해 트랜잭션의 발송자를 검증할 수 있고, 다른 Account는 추가적인 로직(예: 다중 서명, 시간 제한 등)을 사용하여 서명을 검증할 수 있습니다. 이런 방식은 각 Account가 자신만의 보안 규칙이나 로직을 가질 수 있게 해줍니다. 이는 다양한 사용 사례와 보안 요구사항을 수용할 수 있게 만들어 줍니다.

Sender

Sender는 User Operation을 보내는 Contract Account를 의미합니다.

EntryPoint

EntryPoint는 ERC-4337 프로토콜에서 핵심적인 역할을 수행하는 싱글턴(Singleton) 컨트랙트입니다.

1. 주요 역할

  1. UserOperation들의 번들 처리 및 실행
    사용자들이 생성한 UserOperation 객체들은 mempool에 전송되며, 이들을 Bundler라는 특별한 역할을 하는 노드가 사용자들이 생성한 ‘UserOperation’ 객체들을 수집하여 Bundle로 구성합니다. 이렇게 구성된 Bundle은 EntryPoint Contract를 통해 처리되고 실행됩니다.

  2. 화이트리스트 등록
    Bundler와 클라이언트들은 EntryPoint Contract를 사용하기 위해(신뢰성을 보장하기 위해), EntryPoint Contract Address를 화이트리스트에 등록합니다.

    클라이언트에 의해 사용될 수 있도록 승인되거나 호환성이 확인된 경우를 의미합니다. 이는 특정 EntryPoint 컨트랙트가 ERC-4337 프로토콜을 올바르게 구현하고 있으며, Bundler나 클라이언트와의 상호작용이 가능함을 나타냅니다.

    이를 통해, Bundler와 클라이언트들은 안전하게 UserOperation들을 EntryPoint 컨트랙트에 전달할 수 있습니다.
    화이트리스팅을 거친 Bundler는 UserOperation들을 번들로 구성하고 EntryPoint 컨트랙트의 메서드를 호출하여 번들을 네트워크에 전파합니다.

2. 작동 원리 요약

  1. UserOperation: 사용자들이 네트워크에 전송할 작업을 정의합니다.
  2. Bundler: 여러 개의 UserOperation을 받아서 번들로 묶습니다.
  3. EntryPoint: Bundlers에 의해 만들어진 번들을 받아 처리하고 실행하는 싱글턴 컨트랙트입니다.
  4. 이더리움 블록체인: EntryPoint에 의해 처리되고 실행된 작업들이 최종적으로 이더리움 블록체인에 기록됩니다.

Bundler

Bundler는 ERC-4337 프로토콜에서 핵심적인 역할을 수행하는 노드입니다. 이들의 주요 역할은 여러 개의 UserOperation을 수집하여 하나의 트랜잭션으로 결합하는 것입니다. 이렇게 생성된 트랜잭션은 EntryPoint 컨트랙트의 handleOps() 함수를 호출하여, UserOperation들이 실행되게 합니다. 이 트랜잭션은 이더리움 네트워크의 다른 노드들에 의해 검증된 후, 새로운 블록에 추가됩니다.

Bundler는 이러한 트랜잭션을 블록에 포함시키기 위해 여러 방법을 사용할 수 있습니다.

  1. 자체 블록 생성(스스로 블록 만들기): Bundler는 자체적으로 블록 빌더(block builder)의 역할을 수행할 수 있어, 자신이 만든 블록을 생성하고 직접적으로 트랜잭션을 블록에 추가할 수 있습니다.
  2. 외부 블록 빌딩 인프라와 협력(다른 시스템과 함께 작업하기): 만약 Bundler가 직접 블록을 생성하지 않는 경우, mev-boost와 같은 블록 빌딩 인프라나 PBS(Proposer-Builder Separation)와 같은 다른 시스템과 협력하여 트랜잭션을 블록에 포함 시킬 수 있습니다.
  3. 특별한 RPC API 활용: Bundler는 조건부 트랜잭션을 전송할 수 있는 ‘eth_sendRawTransactionConditional’ 이라는 특별한 RPC API를 활용할 수 있습니다.

이와 같은 다양한 방식을 통해 Bundler는 UserOperation들을 결합하여 트랜잭션을 생성하고, 이를 이더리움 블록체인에 포함시키는 핵심적인 역할을 합니다.

Aggregator

  • Aggregator는 ERC-4337 프로토콜 내에서 중요한 helper 컨트랙트의 역할을 수행합니다. 여러 Account들로 부터 신뢰를 받아, 다수의 서명을 하나의 집계된(Aggregated) 서명으로 검증하는 주요 책임을 가지고 있습니다.
  • 이 과정은 여러 트랜잭션에 대한 서명을 한 번의 연산으로 처리할 수 있게 하여, 네트워크의 효율성을 향상시킵니다.
  • Bundler와 Client들은 안전한 작업 처리를 보장하기 위해, 화이트리스트에 신뢰할 수 있는 Aggregator들을 등록합니다. 이렇게 등록된 Aggregator만이 해당 Bundler와 Client에 의해 사용될 수 있습니다. 이로써 ERC-4337 프로토콜 내에서는 화이트 리스트에 등록된 Aggregator와 EntryPoint 컨트랙트를 통해 안전하게 UserOperation들이 처리되며, 프로토콜의 안전성이 유지됩니다.

이미지 링크

profile
좋은 개발자가 되고싶은

0개의 댓글