QR 코드를 스캔하여 다운로드하세요.
BTC $75,666.50 -1.96%
ETH $2,348.98 -2.93%
BNB $629.34 -2.38%
XRP $1.43 -2.86%
SOL $86.02 -3.31%
TRX $0.3290 +0.51%
DOGE $0.0949 -4.42%
ADA $0.2489 -3.54%
BCH $445.19 -1.85%
LINK $9.24 -3.93%
HYPE $43.64 -2.59%
AAVE $99.24 -13.67%
SUI $0.9536 -4.31%
XLM $0.1704 -1.71%
ZEC $325.05 -2.95%
BTC $75,666.50 -1.96%
ETH $2,348.98 -2.93%
BNB $629.34 -2.38%
XRP $1.43 -2.86%
SOL $86.02 -3.31%
TRX $0.3290 +0.51%
DOGE $0.0949 -4.42%
ADA $0.2489 -3.54%
BCH $445.19 -1.85%
LINK $9.24 -3.93%
HYPE $43.64 -2.59%
AAVE $99.24 -13.67%
SUI $0.9536 -4.31%
XLM $0.1704 -1.71%
ZEC $325.05 -2.95%

이더리움 계정 추상화 및 ERC-4337

Summary: ERC-4337과 Rollup 기술을 결합함으로써 계정 추상화에서 데이터 압축과 가스 비용 절감 효과를 실현할 수 있으며, 계정 추상화의 장점을 더욱 잘 활용할 수 있습니다.
IOBCCapital
2022-10-25 18:37:51
수집
ERC-4337과 Rollup 기술을 결합함으로써 계정 추상화에서 데이터 압축과 가스 비용 절감 효과를 실현할 수 있으며, 계정 추상화의 장점을 더욱 잘 활용할 수 있습니다.

저자: 루모 에렌, IOBC Capital

이더리움 시스템에는 실제로 두 가지 유형의 계정이 존재합니다:

하나는 개인 키로 제어되는 외부 계정(externally-owned account, EOA)으로, 우리가 사용하는 지갑의 계정과 같은 것입니다. 이러한 계정은 각각의 잔액을 가지고 있습니다. 소유자는 거래를 생성하고 서명하여 자신의 외부 계정에서 메시지를 보낼 수 있습니다;

다른 하나는 블록체인에 배포된 코드로 제어되는 계약 계정(contract account)으로, 스마트 계약 계정(때때로 스마트 지갑이라고도 불림) 내에 저장된 이더리움 가상 머신 코드로 제어됩니다. 계약 계정이 정보를 받을 때, 내부 코드는 활성화되어 내부 저장소를 읽고 쓰거나 새로운 계약을 생성하는 등의 작업을 수행할 수 있습니다.
현재 이더리움 프로토콜에 따르면, 오직 외부 계정만이 거래를 시작할 수 있으며, 계정의 소유자만이 자신의 계정 상태를 수정할 수 있습니다.

계정 추상화란 무엇인가?

계정 추상화는 위의 두 가지 계정에 대한 개선으로, 두 계정 간의 경계를 모호하게 하여 복잡한 논리를 포함하는 범용 계정으로 변환하려고 시도합니다. 계정이 계약 계정과 외부 계정의 기능을 동시에 가질 수 있게 합니다.

이러한 방식은 사용자가 계약 계정의 형식에 따라 외부 계정을 정의할 수 있게 하며, 사용자는 스마트 계약 지갑 내에 어떤 논리 검증을 포함할 수 있습니다. 키로 제어되는 계정도 코드의 지원을 받을 수 있습니다.

image

계정 추상화의 다양한 방안

계정 추상화를 실현하는 것은 이더리움 개발자 커뮤니티의 비전이었습니다. 커뮤니티는 EIP-86, EIP-2938 등 다양한 방안을 제안했습니다.

EIP-86은 계정 추상화를 위한 기술적 준비로, 사용자가 스마트 계약 기반의 계정을 생성할 수 있도록 새로운 계정 유형을 정의합니다.

이더리움 프로토콜 자체는 모든 내용을 ECDSA 보안에서 유래한 외부 계정(EOA)의 거래로 패키징해야 하며, 각 사용자 작업은 EOA에서 오는 거래로 포장되어야 하므로 21000 gas의 비용이 발생합니다. 사용자는 별도의 EOA에서 ETH를 보유하여 gas를 지불해야 합니다.

EIP-86이 제안한 계정 추상화는 새로운 유형의 거래를 가져오며, 전통적인 거래가 발신자로 EOA를 필요로 하는 것과 달리 이러한 거래는 발신자가 없습니다. 이러한 거래는 거래 해시의 고유성을 파괴합니다. EIP-86은 Metropolis 단계에서 업그레이드될 예정이었으나, 앞서 언급한 문제로 인해 개발자들은 Metropolis에서 도입을 연기하기로 결정했습니다.

EIP-2938은 계정 추상화 솔루션을 제공하며, 이더리움 프로토콜의 일부를 변경하여 계약 계정이 외부 계정과 마찬가지로 거래를 시작할 수 있도록 허용합니다. 그러나 이 방안은 합의 계층에서 이더리움 프로토콜의 변경이 필요하기 때문에 널리 받아들여지지 않았습니다.

이후 제안된 새로운 프로토콜 ERC-4337은 합의 프로토콜을 변경하지 않고 EIP-2938와 동일한 효과를 달성하려는 방안을 제공합니다. 이 안전성이 더 높은 구현 방식은 현재 커뮤니티에서 더 많은 주목을 받고 있습니다.

ERC-4337은 어떻게 구현되는가?

ERC-4337은 프로토콜 합의를 수정하려고 하지 않고 시스템 내에서 mempool의 기능을 복제합니다.

사용자는 사용자 작업(UserOperation) 객체를 전송하며, 이 객체에는 사용자의 의도, 서명 및 기타 데이터가 포함됩니다. 사용자 작업은 별도의 mempool 저장소를 가지며, 이 저장소에 연결된 노드는 ERC-4337 특정 검증을 수행하여 수수료를 지불하는 작업만 수신하도록 필터링합니다.

광부 또는 Flashbots 서비스를 사용하는 패키징자는 이러한 사용자 작업을 대량으로 수집하여 단일 번들 거래(bundle transaction)로 패키징하고 이더리움 블록에 포함시킵니다. 패키징자는 이더리움의 번들 거래에 대한 gas 비용을 지불하고, 각 개별 UserOperation에 대해 지불된 수수료로 보상받습니다. 패키징자는 수수료 우선순위 논리를 사용하여 어떤 UserOperation 객체를 포함할지 선택합니다.

image

여기서 사용자 작업 UserOperation은 거래처럼 보이지만, ABI 인코딩된 구조로 다음과 같은 필드를 포함합니다:

  1. 발신자: 작업을 수행하는 지갑;

  2. nonce 및 signature: 지갑 검증 함수에 전달되는 매개변수로, 지갑이 작업을 검증할 수 있도록 합니다;

  3. initCode: 지갑이 아직 존재하지 않는 경우 지갑을 생성하는 초기화 코드;

  4. callData: 실제 실행 단계에서 지갑을 호출하는 데이터.
    각 지갑은 스마트 계약이며, 반드시 두 개의 기능 함수를 포함해야 합니다:

  5. validateUserOp: UserOperation을 입력으로 받아들이는 함수입니다. 이 함수는 UserOperation의 서명과 nonce를 검증해야 하며, 검증이 성공하면 수수료를 지불하고 nonce를 증가시키고, 검증이 실패하면 예외를 발생시킵니다;

  6. op 실행 함수: calldata를 지갑 실행 작업의 하나 이상의 지시사항으로 파싱합니다.

ERC-4337이 가져오는 변화

이 제안이 널리 채택된다면, 서명 검증이 이더리움 가상 머신(EVM)으로 이전됩니다. validateUserOp 함수는 임의 서명 및 난수 검증 논리를 추가하여 검증 논리를 더욱 유연하게 만듭니다.

이로 인해 거래를 서명할 때 새로운 암호학적 도구를 사용할 수 있으며, 지갑은 다음과 같은 새로운 기능을 제공할 수 있습니다:

  1. 다중 서명;
  2. 사회적 복구;
  3. 더 효율적이고 간단한 서명 알고리즘(예: Schnorr, BLS);
  4. 후량자 안전 서명 알고리즘(예: Lamport, Winternitz);
  5. 업그레이드 가능한 지갑.

이러한 방안은 또한 스마트 계약을 통해 gas 비용을 지불할 수 있도록 하는 다양한 거래 허가 관리의 가능성을 열어줍니다.
현재 외부 지갑은 이더리움에서 상호작용하는 gas 비용을 지갑 내의 ETH로만 지불할 수 있으며, 지갑에 ERC-20 토큰만 있고 ETH가 없다면 이러한 토큰을 출금할 방법이 없습니다. ERC-4337이 채택되면 사용자는 계정 내의 ERC-20 토큰을 사용하여 비용을 지불할 수 있으며, 광부 노드는 계약을 중개로 사용하여 ETH를 온체인으로 지불하고 사용자의 ERC-20 토큰을 확보할 수 있습니다.

추상화가 구현되면, 외부 계정의 소유자가 거래에 서명하고 방송하는 것이 거래를 시작하는 유일한 방법이 아닐 것입니다. 이는 이더리움이 메타 거래의 중개자로서의 가능성을 열어줍니다. 현재 많은 이더리움 애플리케이션은 중개자가 블록체인에 사용자 거래를 게시하고 중개자에게 수수료를 지불하는 데 의존하고 있습니다. 지갑에 더 복잡한 계약이 내장될 수 있다면, 일부 중개자는 더 이상 존재할 필요가 없으며, 그들에게 추가 비용을 지불할 필요도 없습니다.

많은 장점이 있지만, 새로운 방안도 몇 가지 문제에 직면해 있습니다.

가장 두드러진 점은 더 높은 Gas 비용으로, 기본적인 ERC-4337 작업은 약 42000 gas가 필요하며, 일반 거래는 21000 gas가 필요합니다. 그 이유는 다음과 같습니다:

  1. 개별 저장소 읽기/쓰기 비용을 많이 지불해야 하며, EOA의 경우 이러한 비용은 21000 gas의 지불로 묶입니다:
    (1)pubkey+nonce (~5000)을 포함하는 저장소 슬롯 편집;
    (2)사용자 작업 호출 데이터 비용(약 4500, 압축을 통해 약 2500으로 줄일 수 있음);
    (3)ECRECOVER (~3000);
    (4)지갑 자체를 처음으로 접근할 때 (~2600);
    (5)수신자 계정을 처음으로 접근할 때 (~2600);
    (6)수신자 계정으로 ETH를 전송할 때 (~9000);
    (7)비용 지불을 위한 저장소 편집(~5000);
    (8)프록시를 포함하는 저장소 슬롯 접근(~2100), 그 다음 프록시 자체 접근(~2600);

  2. 위의 저장소 읽기/쓰기 비용 외에도 계약은 "비즈니스 논리"(UserOperation을 언팩하고 해시하고 변수 셔플 등)를 실행해야 합니다.

  3. 로그 비용을 지불하기 위해 gas를 소비해야 합니다(EOA는 로그를 게시하지 않음);

  4. 일회성 계약 생성 비용(약 32000 gas, 프록시 내의 각 코드 바이트당 200 gas, 프록시 주소 설정에 20000 gas 추가)
    간단히 말해, 계정 추상화 주소의 각 단계는 계산이 필요하며, 더 많은 자원을 소비하고 추가 비용을 증가시킵니다.

다행히도 이것은 해결할 수 없는 문제가 아닙니다.

Rollup은 데이터 압축에 능숙하며, 데이터가 복잡한 계정 추상화 방안과 자연스럽게 잘 맞습니다.

Vitalik의 최신 제안에서 Layer 2를 통해 계정 추상화에서 발생하는 데이터를 처리하는 방안이 제시되었습니다. 그 개선점은 단계적으로만 구현할 수 있는 기능을 번들 거래로 패키징하고, SNARK 기술을 사용하여 거래의 유효성을 보장하는 것입니다.

image

ERC-4337과 Rollup 기술을 결합함으로써 계정 추상화에서 데이터 압축과 gas 비용 절감 효과를 실현하고, 계정 추상화의 장점을 더욱 잘 발휘할 수 있습니다.

결론

이더리움이 Layer 2의 발전에 집중하고 있는 지금, Vitalik은 이더리움 업그레이드의 후속 계획을 계정 추상화로 전환하기 시작했습니다. 최신 제안에서는 rollup+계정 추상화의 기술 경로를 보여주었습니다. 각 Rollup 제공업체도 계정 추상화와 호환되는 새로운 버전을 출시했습니다.

올해 6월, zkSync는 V2 업데이트 정보를 발표하며 "계정 추상화" 기능을 추가하고 이더리움 EVM과의 호환성을 높였습니다. 10월, ERC-4337은 새로운 버전을 발표하며 BLS 서명 알고리즘을 포함한 서명 집계 기능을 추가했습니다. 서명 집계는 빌더와 배치 제출자가 서명을 집계할 수 있게 하여(예: BLS, SNARKs) 체인상의 데이터를 대폭 줄이고, Rollup의 데이터 비용을 낮출 수 있습니다.

image

우리는 계정 추상화가 가져오는 변화가 생태계 폭발의 가능성을 내포하고 있다고 믿을 이유가 있습니다. Rollup의 발전과 함께 Rollup과 결합할 수 있는 계정 추상화도 더 우수하고 정교한 방안을 발전시킬 수 있을 것입니다.

warnning 위험 경고
app_icon
ChainCatcher Building the Web3 world with innovations.