Ethereum의 계정 추상화에서 기억해 둘 대표 주소는 두 개입니다. EntryPoint v0.6은 0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789에 배포되어 있습니다. 2024년 초에 배포된 EntryPoint v0.7은 0x0000000071727De22E5E9d8BAf0edAc6f37da032에 있습니다. 메인넷, Arbitrum, Optimism, Base, Polygon을 비롯한 대부분의 EVM 체인에서 ERC-4337 트랜잭션은 이 두 싱글턴 중 하나를 거칩니다. 이 컨트랙트와 그 주변의 다섯 가지 역할을 이해하면 ERC-4337을 이해할 수 있습니다.
이 글은 스마트 계정 시리즈의 2편입니다. 1편에서는 EOA를 기본 계정으로 사용하기 어려운 이유를 다뤘습니다. 이번 글에서는 내부 구조를 살펴봅니다. 여섯 가지 역할, UserOperation 구조체, 스마트 계정에서 토큰을 스왑할 때 실제로 일어나는 일, v0.6에서 v0.7로 바뀐 내용, 페이마스터, 공개 대체 멤풀과 비공개 번들러의 차이, 예상되는 추가 비용을 알아봅니다.
여섯 가지 역할 한눈에 보기
ERC-4337은 EOA가 한 단계로 처리하던 작업을 협력하는 여섯 주체로 나눕니다. 이 시스템을 도입하는 데 Ethereum 하드포크는 필요하지 않았습니다. 시스템 전체가 컨트랙트와 오프체인 인프라로 구성됩니다.
- Sender(스마트 계정): 자산을 보유하고
validateUserOp을 구현하는 컨트랙트 지갑입니다. 상호작용하는 모든 DApp에서msg.sender역할을 합니다. 예: Safe, Kernel, Biconomy Nexus, Coinbase Smart Wallet, Alchemy의 Light Account. - UserOperation: 센더가 하려는 작업을 설명하는 의사 트랜잭션 구조체입니다(실제 Ethereum 트랜잭션은 아닙니다). 사용자는 트랜잭션이 아니라 UserOp에 서명합니다.
- 번들러: 멤풀에서 UserOp를 모으고 시뮬레이션한 뒤, 하나의
handleOps호출로 묶어 L1 가스 비용을 지불하는 오프체인 노드입니다. 센더(또는 페이마스터)가 상환하는 금액과 검증자에게 지불하는 금액의 차액이 번들러의 수익입니다. - EntryPoint: 신뢰된 싱글턴 컨트랙트로, 번들을 순회하며 각 센더의
validateUserOp을 호출하고 콜 데이터를 실행한 뒤 환불과 되돌리기를 처리합니다. 체인마다 버전별로 EntryPoint는 하나씩만 존재합니다. - 페이마스터 (선택 사항): 센더를 대신해 가스 비용을 지불하는 컨트랙트입니다. 사용자를 대신해 비용을 부담하거나(사용자에게 무료), USDC 같은 ERC-20을 받는 대가로 비용을 지불합니다.
- 애그리게이터 (선택 사항): 서명 검증 한 번으로 여러 UserOp를 검증하는 컨트랙트입니다. BLS 방식이나 영지식 증명에 유용하지만, 현재 프로덕션 환경에 배포된 사례는 드뭅니다.
이 역할 구성을 기억해 두세요. 나머지 내용은 이 여섯 주체가 서로 상호작용하는 방식입니다.
UserOperation 구조체
UserOperation은 JSON-RPC에 적합한 필드 묶음입니다. 서명하면 의도를 표현하되, 아직 L1에 제출되지는 않습니다. v0.7 레이아웃에는 논리 필드가 11개 있습니다.
sender— 스마트 계정 주소입니다.nonce— 256비트 값으로, 상위 192비트는 키(병렬 논스 레인)이고 하위 64비트는 순번입니다. 이를 통해 ERC-4337은 병렬 논스를 지원합니다. 모든 작업을 순차 처리하는 EOA와 다른 점입니다.factory및factoryData— CREATE2를 통한 최초 배포에 사용하며, 배포 후에는 null입니다.callData— 검증이 끝난 뒤 스마트 계정이 실행할 호출입니다.callGasLimit,verificationGasLimit,preVerificationGas— 서로 구분되는 세 가지 가스 한도입니다.maxFeePerGas,maxPriorityFeePerGas— 일반 트랜잭션과 동일한 EIP-1559 의미를 따릅니다.paymasterAndData(v0.6)은paymaster,paymasterVerificationGasLimit,paymasterPostOpGasLimit,paymasterData(v0.7)으로 분리됩니다.signature— 불투명한 바이트로, 스마트 계정이 자체validateUserOp에서 해석합니다.
서명 방식은 지갑에 따라 다릅니다. secp256k1 기반 ECDSA가 흔하지만, P-256/패스키 검증, 멀티시그, 소셜 복구 임계값, 세션 키 서명자도 모두 같은 인터페이스를 사용합니다. 이런 유연성이 ERC-4337의 핵심입니다.
전체 흐름: 스마트 계정에서 USDC를 ETH로 스왑할 때
실제 스왑을 따라가며 각 역할이 차례로 작동하는 과정을 살펴보겠습니다.
- 사용자가 지갑 UI에서 "스왑"을 누릅니다. 지갑이 UserOperation을 구성합니다.
sender = 0xUserSafe,callData = swapUSDCforETH(amount)는 Uniswap을 대상으로 합니다. - 가스 추정. 지갑이 번들러 RPC에서
eth_estimateUserOperationGas을 호출합니다. 번들러는 EntryPoint를 기준으로 UserOp를 시뮬레이션하고 세 가지 가스 한도를 반환합니다. - 사용자가 서명합니다. 지갑은 EntryPoint 주소와 체인 ID를 사용해 UserOp의 해시를 계산한 뒤 사용자에게 서명을 요청하고(패스키, 하드웨어 키 등), 서명을 첨부합니다.
- 제출. 서명된 UserOp가
eth_sendUserOperation을 통해 하나 이상의 번들러로 전송됩니다. UserOp는 Ethereum의 일반 트랜잭션 멤풀과 별개인 대체 P2P 네트워크, 즉 대체 멤풀에 들어갑니다. - 번들러 시뮬레이션. 번들러는
eth_call을 사용해simulateValidation을 기준으로 다시 시뮬레이션합니다. ERC-7562의 스토리지 접근 규칙을 확인합니다. 검증 중 UserOp는 자체 스토리지에만 접근할 수 있습니다. 그렇지 않으면 번들러가 공격을 받을 위험이 있습니다. - 번들링. 번들러는 이 UserOp를 최대 약 10개의 다른 UserOp와 묶어 EntryPoint에 보내는 하나의
handleOps([...userOps], beneficiary)호출로 만듭니다. - 온체인 실행. EntryPoint는 각 UserOp를 순회하며 센더에서
validateUserOp을 호출하고, 선납금을 차감한 다음callData를 실행합니다. 그러면 스마트 계정에서 Uniswap 스왑이 실행됩니다. - 환불. EntryPoint는 사용하지 않은 가스 비용을 센더(또는 페이마스터)에게 환불하고, 번들러의 수익 수령 주소에 대금을 지불합니다.
5단계가 실패하면 번들러는 UserOp를 제외하고 사용자에게 AAxx 오류 코드를 표시합니다. 가장 흔한 오류는 AA21(선납금 미지급), AA23(서명 오류), AA25(유효하지 않은 논스), AA33(페이마스터 되돌리기), AA40(검증 가스 한도 초과)입니다. 이 표를 기억해 두세요. 실제로 자주 보게 됩니다.
EntryPoint v0.6과 v0.7 비교
v0.6은 2023년 3월 0x5FF1…2789에 배포됐습니다. 작동은 했지만 세 가지 문제가 있었습니다. 세 가지 가스 요소를 하나로 합친 단일 paymasterAndData 블롭, 다루기 까다로운 initCode 패킹, 센더에게 과도한 비용을 부과하는 가스 계산 방식입니다. v0.7에서는 세 가지 문제를 모두 해결했습니다.
알아둘 만한 v0.7의 주요 변경 사항은 다음과 같습니다.
- 주소:
0x0000000071727De22E5E9d8BAf0edAc6f37da032입니다(앞에 0이 붙은 점에 주목하세요. 콜데이터 가스 비용을 낮추기 위해 선두에 0이 오도록 탐색한 주소입니다. 0 바이트는 가스 4를, 0이 아닌 바이트는 16을 소모합니다). - 페이마스터 필드 분리:
paymaster,paymasterVerificationGasLimit,paymasterPostOpGasLimit,paymasterData이 이제 별도 필드입니다. 추정하기 쉽고, 예산을 빠뜨릴 가능성도 낮아졌습니다. - 팩토리 필드 분리: 같은 방식으로
factory과factoryData이 하나의initCode로 묶이지 않고 별도 필드가 됐습니다. - 미사용 가스 페널티: 센더에게 미사용
callGasLimit/paymasterPostOpGasLimit의 10%를 부과해 UserOp의 가스 한도를 지나치게 높게 잡지 않도록 합니다. - EIP-7702 호환성 훅: v0.7에는 일반 EOA가 스마트 계정 구현에 일시적으로 권한을 위임할 수 있도록 하는 기반 코드가 추가됐습니다. 이 기능은 Pectra에 포함된 EIP-7702 업그레이드 경로의 토대가 됐습니다.
v0.6은 여전히 활성 상태이며 사용되고 있습니다. 많은 지갑이 2024년이 한참 지난 뒤에야 v0.7 호환 모듈을 출시했습니다. 대부분의 체인에서는 두 EntryPoint가 수년간 함께 운영됩니다.
페이마스터: 가스 비용은 누가 내나요?
페이마스터는 EntryPoint에 ETH 스테이크를 예치하고, 정책에 부합하는 UserOp의 가스 비용을 부담하는 컨트랙트입니다. 주로 다음 세 가지 유형이 사용됩니다.
- 검증형 페이마스터(스폰서형). 백엔드가 오프체인에서 승인을 서명하고, 페이마스터가 온체인에서 서명을 검증한 뒤 비용을 지불합니다. 가스 비용 없이 사용자를 온보딩하려는 앱에서 사용합니다. 예: Coinbase Smart Wallet, Farcaster Frames, 대부분의 NFT 민팅.
- ERC-20 페이마스터. 사용자는 USDC, USDT 또는 DAI로 비용을 지불하고, 페이마스터는 백엔드에서 이를 ETH로 스왑하거나 ETH 잔고를 보유합니다. Pimlico, Biconomy, Stackup은 모두 공개형 서비스를 운영합니다.
- 퍼밋이 적용된 토큰 페이마스터. EIP-2612 퍼밋을 사용하면 사용자는 한 번의 서명으로 UserOp와 토큰 승인 모두에 서명할 수 있습니다.
페이마스터의 validatePaymasterUserOp는 EntryPoint의 검증 단계에서 실행됩니다. 되돌리기가 발생하면 AA33이 반환됩니다. 스테이크가 부족해지면 EntryPoint가 이를 삭감하고 번들러가 손실을 부담합니다. 그래서 번들러는 페이마스터 평판 목록을 관리합니다. ERC-7562는 이러한 평판 규칙을 명문화해 번들러 멤풀이 스팸에 강하도록 합니다. 이와 같은 기본 요소를 보면 DeFi 승인과 멀티시그 관리 원칙이 4337 환경에도 자연스럽게 적용되는 이유를 알 수 있습니다. 위협은 같고, 이를 감싸는 방식이 달라졌을 뿐입니다.
공개 대체 멤풀과 비공개 번들러
UserOp를 온체인으로 전송하는 방법은 두 가지입니다.
공개 대체 멤풀: ERC-7562를 준수하는 번들러는 libp2p 네트워크를 통해 UserOp를 서로 전파합니다. Pimlico, Stackup, Alchemy, Etherspot 또는 Voltaire 노드를 운영하는 누구나 해당 UserOp를 가져갈 수 있습니다. 허가 없이 이용할 수 있고 검열에 강하지만, 일반 Ethereum 트랜잭션과 마찬가지로 MEV 우려에 노출됩니다. 검색자는 포함되기 전에 UserOp를 볼 수 있습니다.
비공개 번들러: eth_sendUserOperation를 한 제공업체의 RPC로 직접 전송합니다. 해당 업체는 시뮬레이션하고 번들로 묶은 뒤 비공개로 제출합니다(대개 Flashbots를 통함). 더 빠르고 MEV로부터 보호되지만, 번들러가 검열하거나 선행 거래를 하지 않을 것이라고 신뢰해야 합니다. 2026년 기준으로 대부분의 일반 사용자용 지갑은 기본적으로 비공개 번들러를 사용합니다.
이 선택은 일반 트랜잭션의 공개 멤풀과 Flashbots Protect 간의 선택과 비슷합니다. L1 시절 이후 기본적인 트랜잭션 생애 주기를 살펴본 적이 없다면, 해당 설명에서 번들러가 개입할 때 무엇이 달라지는지 다룹니다.
애그리게이터, 도입 현황, 비용
애그리게이터는 한 번의 서명 검증으로 여러 건을 검증하는 컨트랙트입니다. 대표적인 사용 사례는 BLS입니다. BLS로 서명된 UserOp 50건을 모아 서명을 한 번의 페어링 검증으로 집계하면 서명 가스를 약 95% 절약할 수 있습니다. BLS 서명 지갑을 만들기 어렵고, 가스 절감 효과는 거래량이 많을 때만 나타나 도입이 더뎠습니다. 2026년 중반 기준으로 메인넷 UserOp 중 애그리게이터를 사용하는 비율은 1% 미만입니다.
도입 수치 (bundlebear.com의 2026년 1분기 자료): 모든 체인에서 누적 UserOp는 약 380,000,000건이며, 대부분은 Base, Polygon, Arbitrum에서 발생했습니다. 메인넷 비중은 약 6–8%로, 거래량 기준으로는 가장 작지만 이전된 가치 기준으로는 가장 큽니다. Coinbase Smart Wallet, Farcaster, Argent가 일반 사용자 대상 사용량의 대부분을 차지합니다.
추가 비용: v0.7 UserOp는 이에 상응하는 EOA 트랜잭션보다 가스가 약 30,000–40,000 더 듭니다. 이는 EntryPoint 반복 처리, 검증, 번들 관리에 필요한 비용입니다. 메인넷에서 20 gwei 기준으로 건당 1달러의 일부에 해당합니다. 처음 계정을 배포할 때는 factoryData로 가스가 약 250,000 더 듭니다. 칼데이터가 비용의 대부분을 차지하는 L2에서는 추가 비용 비율이 한 자릿수입니다. 후원형 UserOp는 이 비용을 dApp으로 이전하므로 일반 사용자용 앱에서는 무료 트랜잭션을 볼 수 있지만, 본격적인 DeFi에서는 그렇지 않습니다. 트랜잭션 수수료 안내에서 이 추가 비용이 서로 다른 수수료 시장에 어떻게 반영되는지 설명합니다.
요약하면, ERC-4337은 여섯 가지 역할(sender, UserOp, 번들러, EntryPoint, 페이마스터, 애그리게이터), 하나의 구조체, 기억해 두어야 할 두 개의 EntryPoint 주소, 그리고 임의의 서명 방식, 가스 후원, 일괄 처리, 병렬 논스를 가능하게 하는 대신 발생하는 약 30–40k 가스의 추가 비용으로 구성됩니다. 이 시리즈 3부에서는 EIP-7702를 살펴봅니다. Pectra의 별도 경로인 EIP-7702를 사용하면 기존 EOA가 주소를 바꾸지 않고도 같은 기능을 이용할 수 있습니다.



