4337에서 7702: 이더리움 계정 추상화 트랙의 과거와 미래에 대한 심층 해석

십사군
2024-08-24 20:25:22
수집

저자: 십사군

서문

본 문서는 전체적으로 두 개의 주요 모듈로 나뉩니다:

상반부에서는 2015년부터 시작된 첫 번째 AA 제안에서 출발하여 현재까지의 EIP 제안의 주요 내용을 체계적으로 정리하고, 역사적 제안의 과정을 탐구하며 각 제안의 장단점을 종합적으로 평가하고자 합니다.

하반부에서는 EIP-4337 제안 이후 시장의 침체 반응을 비교하고, 현재 다음 버전의 이더리움 업그레이드에 포함될 EIP-7702에 대해 심층 분석합니다. 이 제안이 통합되면 체인 상의 애플리케이션 형태가 전방위적으로 변화할 것입니다.

EIP-7702는 시대를 초월한 변화를 가져올 것이며, 십사군이 자세히 설명하겠습니다.

1. 계정 추상화의 배경

1.1 계정 추상화의 의미와 위치

이더리움 창시자 비탈릭은 2023년 말 ETH 발전 로드맵을 다시 업데이트했지만, 계정 추상화에 대한 설정은 변경되지 않았습니다. 현재의 주류 모델은 EIP-4337에서 시작하여 다음 단계인 자발적 EOA 전환(Voluntary EOA Conversion)으로 나아가고 있습니다.

이미지https://x.com/VitalikButerin/status/1741190491578810445

EIP-4337이 출시된 지 1년이 넘었으며(2023년 3월 1일 덴버의 WalletCon에서 이더리움 재단 개발자가 설계한 ERC-4337의 핵심 계약이 OpenZeppelin의 감사를 통과하여 공식 출시된 역사적 노드로 간주됨), 사용자들로부터 광범위한 인정을 받았지만 널리 사용되지는 않았습니다. 이러한 모순된 시장 환경 속에서 EIP-7702의 진행이 크게 앞당겨졌으며, 다음 업그레이드에서 통합될 것이 확인되었습니다.

1.2 계정 추상화의 시장 현황

더 이상 설명할 필요 없이, 직접 데이터를 보겠습니다.

1년 반의 발전을 거쳐 EIP-4337은 주류 체인 계정 집합 하에 단 1200만 개의 주소만을 보유하고 있으며, 특히 이더리움 메인넷에서 활성 주소는 단 6,764개에 불과합니다. 통계 차원이 문제일 수 있지만, 적어도 EOA와 CA의 주소 수는 크게 차이가 나며, 이더리움 메인넷의 독립 주소 수는 이미 2억 7천만 개에 달합니다(데이터 출처: https://etherscan.io/chart/address).

즉, EIP-4337은 메인넷에서 실질적인 발전이 없었습니다.

이미지(차트 데이터 출처: https://dune.com/niftytable/account-abstraction)

하지만 이것이 AA의 본질적 가치를 무색하게 하지는 않습니다. EIP-4337의 설계는 처음부터 메인넷의 심각한 이전 호환성 문제를 해결하지 못할 운명이었기 때문에, 다양한 L2 레이어 체인의 원주율 AA가 일반적으로 통합되면서 EIP-4337의 주소 수는 L2에서 폭발적으로 증가했습니다. 그 중 base와 polygon 체인의 7월 월간 활성 사용자는 각각 100만과 300만으로 상당히 고무적입니다.

따라서 EIP-4337의 설계가 잘못된 것은 아닙니다. 그는 많은 장점을 가지고 있으며, 우리는 곧 체계적으로 정리할 것입니다. 현재의 상황은 메인넷과 L2 간의 차이에서 비롯된 것입니다. 그들은 각자에게 적합한 솔루션을 필요로 합니다.

2. 계정 추상화란 무엇인가?

계정 추상화는 듣기에는 복잡해 보이지만, 본질적으로는 소유권 분리 문제를 해결합니다.

EVM 구조(즉, 이더리움 가상 머신)에는 두 가지 계정이 있습니다: 외부 계정(EOA)과 계약 계정(Contract Account). 외부 계정의 소유권과 서명 권한은 사실상 동일한 개체가 보유하고 있습니다. 개인 키를 가진 사람은 이 계정의 "소유권"을 가질 뿐만 아니라 "모든 자산을 전송할 권리"도 가집니다.

이는 이더리움 계정 거래 구조에 의해 결정됩니다.

아래 구조에서 볼 수 있듯이, 이더리움의 표준 거래는 From 쪽이 없습니다. 그러므로 자금을 이체하는 경우, 실제로 어떤 주소의 자금을 소비하는지에 대한 정보는 VRS 매개변수(즉, 사용자 서명)를 통해 From 주소를 역으로 해석하여 얻습니다.

여기에는 ECDSA와 같은 비대칭 암호화, 단방향 임계 함수 등의 개념이 포함되며, 우리는 이를 자세히 설명하지 않겠습니다. 요컨대, 여기서는 암호학이 안전성을 보장하며, 이는 현재의 소유권 통합 EOA 주소의 곤경을 초래합니다.

EIP-4337의 핵심 효과는 거래 필드에 Sender Address 필드를 추가하여 개인 키와 조작되는 주소를 분리할 수 있게 하는 것입니다.

이미지

그렇다면 왜 소유권 분리가 그렇게 중요한가요?

외부 계정(EOA) 설계는 더 많은 문제를 야기할 수 있습니다:

  1. 개인 키 보호의 어려움: 사용자가 개인 키를 잃어버리면(분실, 해킹, 암호학적 해킹) 모든 자산을 잃게 됩니다.

  2. 서명 알고리즘의 부족: 원주율 프로토콜은 거래 검증에 ECDSA 서명 및 검증 알고리즘만 사용할 수 있습니다.

  3. 서명 권한의 높음: 원주율 다중 서명이 없으며(다중 서명은 스마트 계약을 통해 협력해야 함), 단일 서명으로 모든 작업을 수행할 수 있습니다.

  4. 거래 수수료는 ETH로만 지불할 수 있으며, 일괄 거래를 지원하지 않습니다.

  5. 거래 프라이버시 유출: 일대일 거래는 계정 소유자의 프라이버시 정보를 쉽게 분석할 수 있습니다.

위의 제약으로 인해 일반 사용자가 이더리움을 사용하기 어렵습니다:

첫째, 이더리움의 어떤 애플리케이션을 사용하려면 사용자가 이더를 보유해야 하며(이더 가격 변동의 위험을 감수해야 함),

둘째, 사용자는 복잡한 수수료 논리를 처리해야 하며, 가스 가격, 가스 한도, 거래 차단(Nonce 순서) 등의 개념은 사용자에게 너무 복잡합니다.

마지막으로, 많은 블록체인 지갑이나 애플리케이션이 제품 최적화를 통해 사용자 경험을 개선하려고 시도했지만, 실제 효과는 미미합니다.

따라서 해결책은 계정 추상화를 구현하여 소유권(Owner)과 서명 권한(Signer)을 분리(Decoupling)하여 위의 문제를 하나씩 해결하는 것입니다.

사실 역사적인 솔루션은 많지만, 결국 두 가지 경로로 수렴됩니다.

3. AA 역사적 제안의 맥락 정리

이미지

문제 해결 방법은 많은 EIP 제안처럼 보이지만, 근본적으로 두 가지 핵심 사고로 귀결됩니다. 따라서 과거에 통과되지 않은 각 EIP는 현재의 솔루션의 해결책으로 모아졌습니다.

3.1 첫 번째 경로는 EOA 주소를 CA 주소로 변환하는 것입니다.

2015년 11월 15일, EIP-101을 둘러싸고 비탈릭은 계약을 계정으로 하는 새로운 구조를 제안했습니다. 주소를 코드와 저장 공간만 가지도록 변경하고, 수수료 지원을 ERC20으로 변경하며, 사전 컴파일된 계약을 통해 원주율 토큰을 ERC20 유사로 변경하여 잔액을 저장할 수 있도록 하였습니다(대리 수납 권한 등의 기능을 포함할 수 있음). 거래 필드는 to, startgas, data 및 code만으로 간소화되었습니다.

지금 보면, 이는 대약진식 혁신으로, 기본 설계를 크게 변경하여 각 계정 주소가 자신의 "코드" 논리를 가질 수 있게 합니다(사실 이것이 현재 EIP-7702가 이루고자 하는 효과입니다).

또한 다음과 같은 다른 기능을 파생할 수 있습니다:

  1. 거래에서 더 많은 암호화 알고리즘을 사용할 수 있으며, 각 주소 내부 코드가 서명 및 인증 방법을 지정할 수 있습니다.

  2. 양자 공격에 대한 저항 특성을 가질 수 있으며, 코드가 업그레이드 가능하기 때문입니다.

  3. 이더가 ERC20 계약과 일치하는 기능 특성을 가질 수 있으며, 핵심 효과로 대리 수납 권한을 통해 원주율 코인의 손실 없이 사용할 수 있습니다.

  4. 계정의 사용자 정의 공간을 향상시키고, 사회적 복구, SBT 지원, 키 복구 등을 호환할 수 있습니다.

계속 진행되지 않은 이유는 간단합니다. 명백히 너무 큰 발걸음이었고, 현재 거래 해시 충돌 문제와 보안 위험에 대한 고려가 부족하여 계속 보류되었습니다. 그러나 각 장점의 개념은 이후 EIP-4337 및 EIP-7702의 핵심 기능 중 하나가 되었습니다.

이후에도 이러한 논리를 완성하려는 일련의 EIP가 있었습니다.

EIP-859: 메인 체인 계정 추상화 -- 2018-01-30

코드 배포 문제를 해결하려고 시도했으며, 핵심 기능은 거래 당사자의 계약이 배포되지 않은 경우 거래에 첨부된 코드 매개변수를 사용하여 계약 지갑을 배포하는 것입니다. 또한 새로운 PAYGAS 연산 코드를 제안하여 가스를 지불하는 것 외에도 거래의 매개변수에서 검증 부분과 실행 부분의 구분 기호가 되었습니다.

비록 당시 무산되었지만, 이는 현재 EIP-7702의 핵심 논리 중 하나가 되었습니다. EIP-7702의 각 거래는 특수한 거래 구조와 결합되어 일정한 코드를 첨부할 수 있어, 이번 거래에서 EOA 주소가 계약 능력을 가질 수 있게 합니다.

EIP-7702: EOA 계정 코드 설정 2024-05-07

이것은 본문 후속 논의 메커니즘의 핵심 EIP로, 비탈릭이 EIP-3074의 대체 솔루션으로 EIP-7702를 발표했습니다(2024-05-07). 따라서 EIP-3074는 폐기되었고, EIP-7702는 곧 있을 ETH 프라하/Electra(Pectra) 하드 포크에 포함될 것이 확정되었습니다. 구체적인 내용은 아래에서 전개하겠습니다.

3.2 두 번째 경로는 EOA 주소가 CA 주소를 구동하는 것입니다.

EIP-3074: AUTH 및 AUTHCALL 연산 코드 추가 -- 2020-10-15

EVM에 두 개의 새로운 OpCodes인 AUTH와 AUTHCALL을 추가하여 EOA가 이 두 연산 코드를 통해 계약이 EOA의 신원을 대신하여 다른 계약을 호출할 수 있게 합니다.

아래 그림과 결합하여 요약하자면, EOA는 이미 서명된 메시지(거래)를 신뢰하는 계약(Invoker)으로 보낼 수 있으며, 이 Invoker 계약은 AUTH 및 AUTHCALL 연산 코드를 사용하여 이 EOA를 대신하여 이 거래를 보낼 수 있습니다.

EIP-4337: 거래 메모리 풀을 통해 계정 추상화 구현 -- 2021-09-29

이 부분에 대해서는 이전에 많은 글에서 그 메커니즘을 깊이 분석했으며, 추가로 읽어볼 수 있습니다:

결론적으로, 그는 MEV의 영감을 받아 설계되었으며, 그의 핵심 가치는 합의 계층 프로토콜 변경을 완전히 피할 수 있다는 것입니다.

EIP-4337은 새로운 거래 객체인 UserOperation을 제안하며, 사용자는 이 객체를 메모리 풀에 전송하고, 번들러가 채굴자 차원에서 일괄적으로 패키징하여 계약 실행 거래를 전달합니다. 본질적으로는 기본 거래와 계정 운영을 계약 수준에서 실행하도록 끌어올리는 것입니다.

EIP-5189: 보증인을 통해 추상 계정을 조작하는 방법 --- 2022-06-29

이는 EIP-4337의 논리를 최적화한 것으로, 악의적인 번들러에 대응하여 자금 벌금을 부과하는 보증인 메커니즘을 구축하여 DoS 차단 공격을 방지합니다.

3.3 AA를 지원하는 기타 제안들

EIP-2718: 새로운 거래 유형의 포장 봉투 -- 2020-06-13

이는 이미 최종 제안으로, 새로운 거래 유형을 정의하여 미래에 추가될 거래 유형의 봉투 역할을 합니다.

최종 효과는 새로운 거래 유형이 도입될 때 특정 인코딩을 통해 어떤 거래인지 구분할 수 있게 하여, 후방 호환성만 필요하고 전방 호환성은 필요하지 않게 됩니다. 가장 일반적인 예는 EIP-1559로, 거래 수수료를 구분하고 새로운 거래 유형 인코딩을 사용하여 초기의 레거시 거래 유형에 영향을 주지 않습니다.

EIP-3607: EOA 주소에서 계약을 배포할 수 없도록 하기 -- 2021-06-10

이는 AA 경로의 보충 솔루션으로, 계약 배포 주소와 EOA 주소의 충돌 문제를 방지하기 위해 사용됩니다. 그는 계약 생성 방법을 제어하여 시스템이 이미 EOA 주소인 주소에 코드를 배포하는 것을 허용하지 않도록 합니다. 이 위험은 사실 매우 작습니다. 이더리움 주소는 160비트 길이이며, 개인 키로 특정 계약 주소의 개인 키를 충돌시키는 방법이 존재하지만, 비트코인 전체 해시력을 투입하더라도 대략 1년의 시간이 필요할 것입니다.

3.4 계정 추상화 발전 과정을 이해하는 방법은?

우선 CA로 전환된 후의 가치를 이해해야 합니다.

기본적으로 EIP-4337의 실제 효과를 실현할 수 있습니다.

이미지

하지만 EIP-4337의 핵심 단점은 인간의 동기 원칙에 반하는 것입니다.

그는 더 나아 보이지만, 시장 발전의 악순환에 빠져 있습니다. Dapp 중 많은 것이 여전히 호환되지 않기 때문에 사용자는 CA 주소를 사용하기를 꺼려하며, 심지어 CA를 사용하는 것이 더 높은 거래 비용을 초래할 수 있습니다(일반 이체 시에도 거래 수수료가 두 배가 될 수 있습니다). 이는 Dapp 자체의 호환성에 너무 의존하게 됩니다.

따라서 이더리움 메인넷에서는 지금까지 보급되지 않았습니다.

비용은 사용자에게 가장 중요한 평가 기준이며, 반드시 비용을 낮춰야 합니다.

하지만 실제로 GAS를 낮추려면 이더리움 자체가 소프트 포크 업그레이드를 수행해야 하며, GAS 계산이나 연산 코드의 GAS 소비 모듈을 수정해야 합니다. 그러나 소프트 포크를 해야 한다면, 왜 EIP-7702를 직접 고려하지 않겠습니까?

4. EIP-7702의 전면 분석

4.1 EIP-7702란 무엇인가?

EIP-7702는 새로운 거래 유형을 통해 EOA가 단일 거래에서 일시적으로 스마트 계약 기능을 갖추도록 허용하여, 비즈니스에서 일괄 거래, 무가스 거래 및 사용자 정의 권한 관리를 지원하며, 새로운 EVM opCode를 도입할 필요가 없습니다(후방 호환성에 영향을 미치지 않음).

그는 사용자가 스마트 계약을 배포하지 않고도 대부분의 AA 기능을 얻을 수 있게 하며, 심지어 사용자가 개인 키를 제공할 필요 없이 서명 권한 정보를 통해 제3자가 사용자를 대신하여 거래를 시작할 수 있는 능력을 제공합니다.

4.2 데이터 구조

그는 새로운 거래 유형 0x04를 정의하며, 이 거래 유형의 TransactionPayload는 다음 내용의 RLP 인코딩 직렬화 결과입니다.

  • rlp([
    chainid, // 체인 ID, 재전송 공격 방지를 위해 사용됩니다. nonce, // 거래 카운터, 거래의 고유성을 보장합니다. maxpriorityfeepergas, // 1559 거래 수수료 maxfeepergas, // 1559 거래 수수료
    gaslimit, destination, // 거래 대상 주소 value, data, accesslist, // EIP-2929의 가스 최적화를 위한 접근 목록입니다.
    authorizationlist, signatureyparity, // 거래 서명을 검증하기 위한 3개의 서명 매개변수입니다. signaturer,
    signature_s
    ])

중요한 것은 authorization_list 객체가 추가되어 서명자가 자신의 EOA에서 실행하고자 하는 코드를 저장합니다. 사용자는 거래를 서명하는 동시에 실행할 계약 코드를 서명하며, 이는 2차원 목록으로 존재하여 여러 작업 정보를 일괄 저장할 수 있음을 나타냅니다.

  • authorizationlist = [[chainid, address, nonce, y_parity, r, s], …]
 

4.3 거래 생애 주기

4.3.1 검증 단계

거래 실행의 시작 단계에서 각 authorizationlist의 [chainid, address, nonce, y_parity, r, s] 튜플에 대해:

  1. 서명 r, s에서 ecrecover를 사용하여 서명자의 주소를 복원합니다(이는 이더리움 본래의 메커니즘이므로 이 EIP는 서명 알고리즘을 변경하지 않습니다). authority = ecrecover(keccak(MAGIC || rlp([chainid, address, nonce])), yparity, r, s] (이전 서명 해독에서 From 주소를 도출한 것과 유사하게, 여기서는 이 리스트에 대한 지역 서명 주소를 도출합니다)

  2. 체인 ID를 검증합니다(분기 체인 재전송 방지).

  3. authority 서명자의 코드가 비어 있거나 이미 위임되었는지 검증합니다(거래가 유효한 7702 거래인지 확인하며, 이후 위임 메커니즘을 통해 거래를 대리 실행합니다).

  4. authority 서명자의 nonce를 검증합니다(서명의 재전송 방지).

  5. authority 서명자의 코드를 0xef0100 || address로 설정합니다(이는 EIP-3607의 충돌 방지 전략을 우회하기 위해 사용됩니다).

  6. authority 서명자의 nonce를 증가시킵니다(지역 서명의 재전송 방지).

  7. authority 서명자의 계정을 접근 주소 목록에 추가합니다(열 주소로 전환하여 저장의 가스 비용을 줄입니다).

4.3.2 실행 작업 단계

실행할 계약 코드와 작업 지시 사항은 어디에 있습니까?

"새로운" 버전은 코드 배포 측면의 동작만 변경되었습니다.

이제 계정 코드를 contractcode로 설정하지 않고, authorizationlist에서 코드 주소를 검색하여 해당 코드를 계정 코드로 설정합니다.

따라서 권한 부여된 코드를 실행해야 할 때, authorization_list의 address 필드에서 지정된 주소에서 코드를 로드하고 서명자의 계정 컨텍스트에서 실행합니다.

이는 사용자의 계약 코드가 실제로 체인 상의 특정 주소에 저장되어 있으며, 거래에 직접 포함되지 않음을 의미합니다.

작업 지시 사항 및 관련 매개변수는 거래 페이로드의 data 필드에 저장됩니다.

4.4 EIP-7702의 가치란?

그는 Web3 지갑의 전체 경로에 변화를 가져오며, 사용자 경험도 크게 변화합니다. EOA가 시작한 일반 거래도 계약 실행과 유사한 다양한 논리를 수행할 수 있습니다. 예를 들어, 일괄 이체가 가능합니다. CeFi 시나리오에서는 거래 식별에 영향을 미치며, 수수료 집계에도 영향을 미칩니다.

그의 출현으로 인해 많은 기존의 고정관념이 깨졌습니다. 예를 들어:

  1. 계좌 잔액은 반드시 해당 계좌에서 발생한 거래로만 줄어들 수 있다는 불변성을 깨뜨렸습니다.

  2. 거래 실행이 시작된 후 EOA nonce가 1 증가한다는 불변성을 깨뜨렸습니다(동시에 여러 개가 증가할 수 있습니다).

  3. tx.origin과 msg.sender 두 개의 비교 방어 논리를 깨뜨렸습니다. 많은 과거 계약이 위험에 처할 수 있습니다.

  4. EOA가 이벤트를 발생시킬 수 없는 현상을 깨뜨렸습니다. 일부 체인 상의 이벤트 식별 및 청취에 주의가 필요할 수 있습니다.

  5. EOA 주소가 ERC20, 721, 1155 등의 자산을 반드시 성공적으로 수신해야 한다는 현상을 깨뜨렸습니다(콜백 메커니즘으로 인해 실패할 수 있습니다).

이러한 것들은 십사군이 현재 EIP-7702 제안 내용 및 관련 공식 포럼 논의를 바탕으로 정리한 몇 가지 단점에 불과하며, 최종 구현 코드를 기반으로 완전히 분석해야 할 것입니다.

참고 자료:

  • https://eips.ethereum.org/EIPS/eip-7702
    https://ethereum-magicians.org/t/eip-set-eoa-account-code-for-one-transaction/19923
    https://github.com/ethereum/EIPs/pull/8527

5. 전체 요약

본 문서는 겉보기에는 방대한 분량이지만, 실제로는 6천 자가 조금 넘는 내용입니다. 중간에 언급된 많은 과거 EIP 해석은 문서 내 링크를 통해 확장할 수 있으므로, 더 이상 추적하지 않겠습니다.

현재로서는 계정 추상화가 확실히 여섯 번째 모듈에 해당하며, 모든 것을 수정하는 것이며, 결국 EIP-7702의 진행 속도를 크게 높이고 있습니다. 이는 시스템 보안성에 대한 도전을 가져올 수 있습니다. 결국 그는 실현될 것이며, 이더리움의 통합, 합의 알고리즘 수정과 같은 혁신적인 사건이 발생할 수 있는 만큼, 새로운 거래 유형에 대해서도 논의할 수 있습니다.

하지만 이번 혁신의 내용은 너무 많아, 여러 체인 상의 불가능한 잠재 규칙을 깨뜨리고, 대부분의 Dapp의 응용 논리를 타격했습니다. 그러나 그는 여전히 가장 핵심적인 점을 차지하고 있습니다. 즉, 사용자의 비용이 더 낮아졌습니다! EIP-4337의 거의 두 배에 달하는 거래 비용과 비교할 때 말입니다.

사용자는 여전히 EOA 주소를 보유하고 있으며, 필요할 때만 CA 논리를 구동하고 사용합니다. 따라서 보유 비용이 낮아졌습니다. 사용자가 먼저 체인 상의 CA 신원을 전환한 후 작업을 수행할 필요가 없으므로, 사용자는 등록할 필요가 없습니다.

사용자는 EOA를 사용하여 여러 거래를 병행하여 수행할 수 있습니다. 예를 들어, 대리 수납과 실행 대리 수납을 통합하여, 사용자 거래 비용이 본질적으로 낮아집니다. Dapp 측면에서도, 특히 체인 상의 기업급 관리가 필요한 프로젝트 측면에서는, 거래소와 같은 경우 혁신적인 최적화가 이루어질 수 있습니다. 일괄 집계가 원주율적으로 실현되면, 거래소 비용이 즉시 절반 이상 줄어들 수 있으며, 궁극적으로 사용자에게 혜택을 줄 수 있습니다.

따라서 비록 많은 것을 변화시켰지만, 비용이라는 차원에서 보면 모든 Dapp이 연구하고 적응할 가치가 있습니다. 왜냐하면 이번에는 사용자가 반드시 EIP-7702의 편에 서게 될 것이기 때문입니다.

체인캐처(ChainCatcher)는 독자들에게 블록체인을 이성적으로 바라보고, 리스크 인식을 실제로 향상시키며, 다양한 가상 토큰 발행 및 조작에 경계해야 함을 상기시킵니다. 사이트 내 모든 콘텐츠는 시장 정보나 관련 당사자의 의견일 뿐이며 어떠한 형태의 투자 조언도 제공하지 않습니다. 만약 사이트 내에서 민감한 정보를 발견하면 “신고하기”를 클릭하여 신속하게 처리할 것입니다.
banner
체인캐처 혁신가들과 함께하는 Web3 세상 구축