IOBC Capital: 이더리움 계정 추상화 및 ERC-4337
작성자: 루무위안(Lu Mu Yuan), IOBC Capital
이더리움 시스템에는 실제로 두 가지 유형의 계정이 존재한다.
-
하나는 개인 키로 제어되는 외부 소유 계정(externally-owned account, EOA)으로, 우리가 사용하는 지갑의 계정이 이에 해당하며, 각각 고유한 잔액을 가진다. 소유자는 자신의 외부 계정에서 메시지를 전송하기 위해 트랜잭션을 생성하고 서명할 수 있다.
-
다른 하나는 블록체인에 배포된 코드로 제어되는 컨트랙트 계정(contract account)으로, 스마트 컨트랙트 계정(때때로 스마트 지갑이라 불림) 내부에 저장된 이더리움 가상 머신(EVM) 코드에 의해 제어된다. 컨트랙트 계정이 메시지를 수신하면 내부 코드가 활성화되어 내부 스토리지의 읽기/쓰기 및 새로운 컨트랙트 생성 등의 작업을 수행할 수 있다.
현재의 이더리움 프로토콜에 따르면, 오직 외부 계정만이 트랜잭션을 시작할 수 있으며, 계정 상태를 수정할 수 있는 권한은 오직 계정 소유자에게만 허용된다.
계정 추상화란 무엇인가?
계정 추상화는 위의 두 가지 계정 유형을 개선하여 그 경계를 모호하게 하며, 복잡한 로직을 포함하는 범용적인 계정 형태로 만드는 것을 의미하며, 계정이 컨트랙트 계정과 외부 계정의 기능을 동시에 갖도록 한다.
이는 사용자가 컨트랙트 계정 형식을 이용해 외부 계정을 정의하도록 유도하는 것으로, 스마트 지갑 내에 원하는 모든 논리 검증을 포함시킬 수 있게 된다. 즉, 키로 제어되는 계정도 코드의 지원을 받을 수 있게 되는 것이다.

계정 추상화의 다양한 방안들
계정 추상화 구현은 오랫동안 이더리움 개발자 커뮤니티의 비전이었다. 이를 위한 다양한 제안들이 있었으며, 예를 들어 EIP-86, EIP-2938 등이 있다.
EIP-86은 계정 추상화를 위한 기술적 준비로, 사용자가 스마트 컨트랙트 기반의 계정을 생성할 수 있도록 새로운 계정 유형을 정의한다.
이더리움 프로토콜은 ECDSA 보안 기반의 외부 계정(EOA)에서 시작된 트랜잭션으로 모든 내용을 패키징할 것을 요구하며, 각 사용자 작업은 반드시 EOA에서 나온 트랜잭션으로 감싸져야 하고, 이 과정에서 21,000 가스의 비용이 발생한다. 사용자는 별도의 EOA에 ETH를 보유해야 가스를 지불할 수 있다.
EIP-86이 제안한 계정 추상화는 전통적인 트랜잭션과 달리 송신자가 없는 새로운 유형의 트랜잭션을 도입한다. 그러나 이러한 트랜잭션은 트랜잭션 해시의 유일성을 파괴하는 문제를 야기했고, Metropolis 단계에서 업그레이드될 예정이었으나, 위와 같은 이유로 개발자들은 Metropolis에서는 도입을 보류하기로 결정했다.
EIP-2938은 계정 추상화를 위한 해결책을 제공하며, 일부 이더리움 프로토콜을 변경하여 컨트랙트 계정이 외부 계정처럼 트랜잭션을 시작할 수 있도록 한다. 하지만 이 방안은 합의층에서 프로토콜 변경이 필요하기 때문에 널리 받아들여지지는 못했다.
이후 제안된 새로운 프로토콜 ERC-4337은 합의 프로토콜을 변경하지 않고도 EIP-2938과 유사한 효과를 달성하려는 방안을 제시하였으며, 보안성이 더 높은 이 방식은 현재 커뮤니티에서 더욱 주목받고 있다.
ERC-4337은 어떻게 작동하는가?
ERC-4337은 프로토콜 합의를 수정하려는 시도 없이, 시스템 내에서 mempool 기능을 재현한다.
사용자는 자신의 의도, 서명 및 기타 데이터를 포함한 사용자 작업(UserOperation) 객체를 전송한다.
사용자 작업은 별도의 mempool 저장소를 가지며, 이 저장소에 연결된 노드는 ERC-4337 전용 검증을 수행하여 수수료를 지불하는 작업만 수신하도록 필터링한다.
채굴자 또는 Flashbots 서비스를 사용하는 번들러(bundler)가 이러한 사용자 작업들을 수집하여 단일 번들 트랜잭션(bundle transaction)으로 묶어 이더리움 블록에 포함시킨다. 번들러는 이더리움의 번들 트랜잭션에 대한 가스 수수료를 지불하며, 각 UserOperation에서 지불된 수수료를 통해 이를 보상받는다. 번들러는 수수료 우선순위 로직을 사용하여 어떤 UserOperation을 포함할지 결정한다.

여기서 말하는 UserOperation은 트랜잭션처럼 보이지만, ABI 인코딩된 구조체로서 다음 필드를 포함한다.
1. 발신자(Sender): 작업을 수행하는 지갑;
2. nonce 및 signature: 지갑의 검증 함수에 전달되는 매개변수로, 지갑이 작업을 검증할 수 있도록 함;
3. initCode: 지갑이 아직 존재하지 않을 경우, 지갑을 생성하기 위한 초기화 코드;
4. callData: 실제 실행 단계에서 지갑을 호출하기 위한 데이터.
모든 지갑은 스마트 컨트랙트이며, 다음 두 가지 기능 함수를 반드시 포함해야 한다.
1. validateUserOp: UserOperation을 입력으로 받는다. 이 함수는 UserOperation 내의 서명과 nonce를 검증하며, 성공 시 수수료를 지불하고 nonce를 증가시키며, 실패 시 예외를 발생시켜야 한다.
2. op 실행 함수: calldata를 지갑이 수행할 하나 이상의 명령어로 파싱한다.
ERC-4337이 가져올 변화
이 제안이 널리 채택된다면, 서명 검증이 이더리움 가상 머신(EVM) 상에서 이루어지게 되며, validateUserOp 함수는 임의의 서명 및 난스(nonce) 검증 로직을 추가하여 검증 로직을 더욱 유연하게 만들 수 있다.
이렇게 되면 거래 서명 시 새로운 암호학 도구를 사용할 수 있으며, 지갑은 다음과 같은 새로운 기능을 제공할 수 있다.
-
멀티서명(Multisig);
-
소셜 리커버리(Social recovery);
-
더 효율적이고 간단한 서명 알고리즘 (예: Schnorr, BLS);
-
양자 컴퓨팅 이후에도 안전한 서명 알고리즘 (예: Lamport, Winternitz);
-
업그레이드 가능한 지갑.
이 방안은 또 다른 다양한 트랜잭션 허가 관리도 열어준다. 예를 들어 스마트 컨트랙트를 통해 가스비를 지불할 수 있게 하는 것이다.
현재는 외부 지갑이 이더리움에서 상호작용하기 위한 가스비는 오직 지갑 내 ETH로만 지불 가능하다. 만약 지갑에 ERC-20 토큰만 있고 ETH가 없다면, 해당 토큰을 전송할 수 없다. ERC-4337이 채택되면, 사용자는 지갑 내 ERC-20 토큰으로 수수료를 지불할 수 있으며, 마이너 노드가 컨트랙트를 매개로 ETH를 대신 지불하고 사용자의 ERC-20 토큰을 받는 방식이 가능해진다.
추상화가 실현되면, 외부 계정 소유자가 서명하여 트랜잭션을 방송하는 것이 트랜잭션을 시작하는 유일한 방법이 아니게 된다. 이는 이더리움이 메타 트랜잭션의 리레이어(relayer) 역할을 할 가능성을 여는 것이다. 현재 많은 이더리움 앱은 블록체인에 사용자 트랜잭션을 게시하기 위해 리레이어에 의존하며, 리레이어에게 수수료를 지불해야 한다. 만약 지갑 내에 더 복잡한 컨트랙트를 내장할 수 있다면, 일부 리레이어는 더 이상 필요하지 않게 되며, 추가 수수료 지불도 불필요해진다.
많은 장점이 있음에도 불구하고, 새로운 방안은 여전히 몇 가지 문제에 직면해 있다.
가장 두드러진 점은 더 높은 가스 비용이다. 기본적인 ERC-4337 작업은 약 42,000 가스가 필요하며, 일반 트랜잭션은 21,000 가스가 필요하다. 그 이유는 다음과 같다.
1. EOA의 경우 21,000 가스로 묶이는 비용이지만, 여기서는 다수의 개별 스토리지 읽기/쓰기 비용이 발생한다.
(1) 공개키+난스(~5000)를 포함한 스토리지 슬롯 수정;
(2) 사용자 작업 호출 데이터 비용(약 4,500, 압축 시 약 2,500까지 감소 가능);
(3) ECRECOVER (~3,000);
(4) 지갑 자체 최초 접근 (~2,600);
(5) 수취인 계정 최초 접근 (~2,600);
(6) 수취인 계정으로 ETH 전송 (~9,000);
(7) 수수료 지불을 위한 스토리지 수정 (~5,000);
(8) 프록시를 포함한 스토리지 슬롯 접근 후(~2,100), 프록시 자체 접근(~2,600);
2. 위의 스토리지 읽기/쓰기 비용 외에도, 컨트랙트는 "비즈니스 로직"(UserOperation 언패킹, 해시 생성, 변수 재배치 등)을 실행해야 한다.
3. 로그 비용을 지불하기 위한 가스 소비 필요(EOA는 로그를 게시하지 않음);
4. 일회성 컨트랙트 생성 비용(약 32,000 가스 + 프록시 내 코드 바이트당 200 가스 + 프록시 주소 설정에 20,000 가스)
간단히 말해, 계정 추상화 주소의 모든 단계가 계산을 필요로 하며, 더 많은 자원을 소모하고 추가 비용이 발생한다.
다행히도 이 문제는 해결 가능한 부분이다.
Rollup은 데이터 압축에 능하기 때문에 데이터가 복잡한 계정 추상화 방안과 자연스럽게 잘 맞는다.
비탈릭(Vitalik)의 최신 제안에서는 Layer 2를 통해 계정 추상화에서 발생하는 데이터를 처리하는 방식을 제시하였다. 개선점은 여러 단계로 구현 가능한 기능을 일괄 트랜잭션으로 묶고, SNARK 기술을 사용해 트랜잭션 유효성을 보장하는 것이다.

ERC-4337과 Rollup 기술을 결합함으로써 계정 추상화에서 데이터 압축과 가스 비용 절감 효과를 얻을 수 있으며, 계정 추상화의 장점을 더 잘 발휘할 수 있다.
마무리하며
이더리움이 Layer 2 중심으로 발전하는 구도가 이미 정해진 지금, 비탈릭은 이더리움 업그레이드 후속 계획을 계정 추상화 쪽으로 돌리고 있다.
최근 제안들은 rollup + 계정 추상화라는 기술 경로를 보여주고 있으며, 각 롤업 제공업체들도 계정 추상화를 지원하는 새 버전을 출시하고 있다.
올해 6월, zkSync는 V2 업데이트를 발표하며 '계정 추상화' 기능을 추가하고 이더리움 EVM과의 호환성을 강화했다.
10월에는 ERC-4337이 새 버전을 발표하며 BLS 서명 알고리즘의 서명 집계 기능을 추가했다. 서명 집계는 빌더와 배치 제출자도 서명을 집계(BLS, SNARKs 등)할 수 있게 하여 체인상 데이터를 크게 줄이며 롤업의 데이터 비용을 절감할 수 있다.

우리는 계정 추상화가 가져올 변화가 생태계 폭발의 가능성을 내포하고 있다고 믿을 만한 이유가 있다. 롤업의 발전과 함께, 롤업과 결합 가능한 계정 추상화 역시 더욱 우수하고 세밀한 방안으로 발전할 수 있을 것이다.
TechFlow 공식 커뮤니티에 오신 것을 환영합니다
Telegram 구독 그룹:https://t.me/TechFlowDaily
트위터 공식 계정:https://x.com/TechFlowPost
트위터 영어 계정:https://x.com/BlockFlow_News













