﻿---
title: "계정 추상화"
description: "ERC-4337 스마트 계정, EntryPoint 버전, UserOperation, 번들러, 페이마스터, nonce 레인, 검증, 실행, EIP-7702 위임, 수수료 및 복구 위험을 통해 이더리움 계정 추상화를 이해합니다."
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 계정 추상화

> 교육 참고용이며 투자 조언이 아닙니다. 투자로 인해 손실이 발생할 수 있습니다.

<a id="answer"></a>

## 직접 답변

계정 추상화는 계정의 인가 및 실행 규칙을 프로그래밍 가능하게 만듭니다. 이더리움에서 ERC-4337은 합의 트랜잭션 유형을 바꾸지 않고 이를 구현합니다. 지갑은 전용 RPC 인프라를 통해 `UserOperation` 을 보내고, 번들러는 하나 이상의 오퍼레이션을 특정 버전의 `EntryPoint` 로 향하는 일반 트랜잭션에 묶으며, 스마트 계정은 자체 오퍼레이션을 검증하고 실행합니다. 복구, 패스키, 세션 키, 지출 한도, 일괄 처리, 수수료 후원은 이 흐름 위에 구축되는 계정 또는 서비스 기능이지 ERC-4337이 자동으로 보장하는 사항이 아닙니다.

이는 컨트랙트가 메시지 서명을 검증하는 방법을 표준화한 ERC-1271이나 외부 소유 계정(EOA)이 코드에 실행을 위임할 수 있게 하는 EIP-7702와 구별됩니다. 이 메커니즘들은 함께 작동할 수 있지만 하나의 인터페이스, nonce, 배포 또는 보안 모델을 공유하지 않습니다. 계정 추상화는 자격 증명, Gas 비용, 컨트랙트 위험을 없애지 않으며 정확한 체인과 구현을 확인해야 할 필요도 제거하지 않습니다.

<a id="mechanism"></a>

## ERC-4337의 7단계 흐름

1. 환경을 고정합니다. `chainId`, 스마트 계정 구현과 업그레이드 통제, 팩토리, EntryPoint 버전, 주소와 배포된 코드 해시, 번들러 지원 여부, 체인의 EIP-7702 활성화 여부를 확인합니다. 한 EntryPoint 릴리스나 체인에서 유효한 주소가 보편적인 상수인 것은 아닙니다.
2. 버전에 맞는 오퍼레이션을 구성합니다. 현재 논리 필드에는 `sender`, `nonce`, `factory`, `factoryData`, `callData`, `callGasLimit`, `verificationGasLimit`, `preVerificationGas`, `maxFeePerGas`, `maxPriorityFeePerGas`, 선택적 페이마스터 필드와 `signature` 가 포함됩니다. 온체인에서 EntryPoint는 패킹된 표현을 받습니다. 대상 호출은 범용 대상 필드가 아니라 계정이 정의한 `callData` 안에 인코딩됩니다.
3. 인가를 올바른 도메인에 결속합니다. `userOpHash` 는 서명을 제외한 오퍼레이션을 포함하고 EntryPoint와 체인에 결속되어 해당 도메인 사이의 재사용을 막습니다. 계정의 `validateUserOp` 가 소유자, 다중 서명, 패스키, 세션 또는 기타 정책을 검사합니다. ERC-1271의 `isValidSignature` 는 별도의 컨트랙트 서명 인터페이스이며, 선택적 애그리게이터는 집계 서명을 검증할 수 있습니다. EIP-7702 인가 튜플은 UserOperation과 별도로 제공됩니다.
4. 수수료 부담 능력을 입증합니다. 계정은 EntryPoint 잔액으로 선납할 수 있고, 페이마스터는 자체 예치금을 재원으로 조건부 지급 책임을 수락할 수 있습니다. 페이마스터는 사용자를 후원하거나, 토큰을 청구하거나, 허용 목록이나 할당량을 적용하고 `postOp` 를 실행할 수 있지만, ERC-4337은 이러한 상업 규칙을 정하지 않습니다. 스테이크와 예치금은 다릅니다. 스테이크는 검증 및 평판 규칙을 지원하고 예치금은 Gas를 지급합니다.
5. ERC-7769 RPC를 통해 추정하고 제출합니다. 번들러는 수신 시점, 선택 전, 번들 구성 시점마다 검증합니다. ERC-7562는 검증 단계의 연산 코드와 스토리지 접근을 제한하고 서비스 거부 행위에 대응하는 평판 통제를 지원합니다. 이 시뮬레이션은 수용 여부와 수수료 안전을 검사합니다. 업무 실행 결과를 예측하려면 별도의 전체 호출 시뮬레이션이 필요합니다.
6. 번들러가 `handleOps` 를 호출합니다. EntryPoint는 실행 전에 허용된 배포, 계정 및 페이마스터 검증, 선납 확인, 선택적 집계를 수행합니다. 검증 실패 시 해당 오퍼레이션은 실행되지 않습니다. 그러나 수용 후 대상 호출이 되돌려지고 Gas를 소비할 수 있습니다. 한 계정의 일괄 처리 안에서 호출이 원자적으로 모두 되돌려지는지, 부분 성공을 허용하는지는 계정 실행 코드가 결정합니다.
7. 영수증과 상태를 대조합니다. UserOperation 영수증, 기초 번들 트랜잭션, EntryPoint 이벤트, 계정 배포, 대상 이벤트, 실제 Gas, 토큰 청구, 환불 및 최종 잔액을 맞춥니다. 이후 nonce 레인, 소유자 및 복구 설정 변경, 세션 키 해지, 모듈, 구현 업그레이드, 대체 번들러와 페이마스터, 리오그, 마이그레이션 또는 EIP-7702 재위임을 모니터링합니다.

<a id="example"></a>

## 네 가지 계산 예시

- **단순화한 Gas 한도.** 한 오퍼레이션이 실행 Gas로 `120,000`, 계정 검증 Gas로 `90,000`, 페이마스터 검증 Gas로 `45,000`, 사전 검증 Gas로 `40,000`, 페이마스터 사후 처리 Gas로 `30,000` 을 배정하면 합계는 `120,000 + 90,000 + 45,000 + 40,000 + 30,000 = 325,000 gas` 입니다. `maxFeePerGas = 30 gwei` 일 때 단순화한 상한은 `325,000 × 30 gwei = 0.009750 ETH` 입니다. 실제 과금 대상 사용량이 `210,000 gas`, 실제 Gas 가격이 `22 gwei` 라면 비용은 `0.004620 ETH` 입니다. EntryPoint 버전 규칙, 미사용 Gas 페널티, L1 데이터 수수료, 롤업 가격 정책이 금액을 추가하거나 분류를 바꿀 수 있으므로 이는 예산 원장이지 보편적인 선납 공식이 아닙니다.
- **병렬 nonce 레인.** `192-bit key` 와 `64-bit sequence` 를 사용할 때 키 `7` 과 시퀀스 `42` 는 `nonce = (7 << 64) | 42 = 129127208515966861354 = 0x7000000000000002a` 로 인코딩됩니다. 성공적으로 포함된 후 그 레인이 기대하는 다음 시퀀스는 `43` 이며 `42` 를 재사용하면 실패합니다. 다른 키는 독립적인 시퀀스를 가질 수 있지만 계정 로직과 번들러 규칙을 따라야 합니다.
- **페이마스터 처리 능력.** 페이마스터에 `0.50 ETH` 가 예치되어 있고 수락한 오퍼레이션마다 최대 `0.03 ETH` 보증이 필요하다고 가정합니다. `floor(0.50 / 0.03) = 16` 건을 처리할 수 있으며 `0.48 ETH` 를 예약하고 `0.02 ETH` 를 남깁니다. 열일곱 번째 건에는 더 많은 예치금이나 더 작은 보증액이 필요합니다. 페이마스터 스테이크는 이 수수료 예치금을 대체할 수 없습니다.
- **수용 후 실행 되돌림.** 한 오퍼레이션이 최대 `0.0060 ETH` 를 예약했고 검증에는 성공했지만 대상 실행이 `180,000 gas × 25 gwei = 0.0045 ETH` 를 소비한 뒤 되돌려졌다고 가정합니다. 대상 상태 변경은 취소되지만 계정 또는 페이마스터는 여전히 `0.0045 ETH` 를 부담하며, 미사용 `0.0015 ETH` 는 해당 정산 및 페널티 규칙의 적용을 받습니다. 따라서 번들러 시뮬레이션 성공이 업무상 성공, 포함 또는 최종성을 보장하지는 않습니다.

<a id="risks"></a>

## 위험과 통제

- 잘못된 체인, EntryPoint 주소, 릴리스 또는 배포 코드 해시는 오퍼레이션을 무효화하거나 잘못 전달할 수 있습니다.
- 체인 또는 EntryPoint 도메인 결속이 빠진 서명은 재실행을 허용할 수 있습니다.
- 팩토리, 카운터팩추얼 주소, 초기화 데이터 또는 배포 솔트가 바뀌거나 잘못 계산될 수 있습니다.
- EIP-7702 위임이 EOA를 광범위한 계정 권한을 가진 악성 또는 취약 코드에 연결할 수 있습니다.
- 초기화 프런트러닝이나 반복 초기화로 계정을 탈취하거나 손상시킬 수 있습니다.
- 프록시 업그레이드나 EIP-7702 재위임이 기존 스토리지 레이아웃과 충돌할 수 있습니다.
- 업그레이드 관리자나 모듈 관리자가 침해되면 계정 동작을 교체할 수 있습니다.
- 소유자, 다중 서명, 패스키 또는 ERC-1271 검증 결함이 탈취를 인가하거나 자금을 잠글 수 있습니다.
- 복구 임계값, 지연, 가디언 및 취소 경로가 실패하거나 장악될 수 있습니다.
- 세션 키가 의도한 대상, 토큰, 금액, 기간 또는 함수 범위를 초과할 수 있습니다.
- nonce 레인이 충돌하거나 건너뛰거나 재실행되거나 종속 오퍼레이션을 막을 수 있습니다.
- 애그리게이터 중단이나 서명 집계 결함이 유효한 오퍼레이션을 중단시킬 수 있습니다.
- 번들러는 검열하거나, 오프라인이 되거나, 서로 다른 로컬 정책을 적용하거나, 대체 멤풀 규칙을 거부할 수 있습니다.
- 공개 UserOperation 흐름은 의도를 노출하여 프런트러닝, 상관관계 분석, MEV를 초래할 수 있습니다.
- 검증 후 상태 변화로 인해 번들 구성 시점에 오퍼레이션이 무효가 될 수 있습니다.
- 페이마스터 정책이 서비스를 거부하거나, 예치금이 소진되거나, `postOp` 가 실패할 수 있습니다.
- 토큰 표시 Gas 청구에는 환율, 허용량, 스프레드 및 서비스 가산금 위험이 포함될 수 있습니다.
- Gas를 과소 추정하면 되돌림이 발생할 수 있고, 한도를 과도하게 설정하면 예약 또는 페널티 노출이 커질 수 있습니다.
- 계정의 일괄 처리 의미론이 사용자가 원한 원자적 되돌림 대신 부분 성공을 허용할 수 있습니다.
- 대상 프로토콜 결함, 악성 프런트엔드, 체인 리오그 및 약한 최종성은 계정 추상화의 통제 범위 밖에 남습니다.

<a id="misconceptions"></a>

## 흔한 오해

- “계정 추상화는 개인 키를 없앤다.” 프로그래밍 가능한 자격 증명 정책을 바꿀 뿐, 동작을 인가할 자격 증명은 여전히 필요합니다.
- “페이마스터가 있으면 Gas가 무료다.” 네이티브 Gas는 여전히 지급되며 사용자, 후원자 또는 서비스가 결국 비용을 부담합니다.
- “번들러 시뮬레이션은 성공을 보장한다.” 수용 시뮬레이션은 실행, 포함 또는 최종성을 보장하지 않습니다.
- “ERC-1271, ERC-4337, EIP-7702는 같은 인터페이스다.” 각각 서명, 트랜잭션 흐름, 위임이라는 다른 문제를 해결합니다.
- “모든 체인, 지갑, EntryPoint는 호환되고 더 안전하다.” 지원 여부, 버전, 배포, 코드, 모듈 및 통제를 따로 확인해야 합니다.

<a id="related"></a>

## 관련 주제

- [스마트 계정 소유자 및 복구 위험](/ko/crypto/smart-account-owner-recovery-risk/)
- [세션 키 지갑](/ko/crypto/session-key-wallet/)
- [트랜잭션 시뮬레이션](/ko/crypto/transaction-simulation/)

<a id="sources"></a>

## 출처

- [ERC-4337: 대체 멤풀을 사용하는 계정 추상화](https://eips.ethereum.org/EIPS/eip-4337)
- [ERC-7562: 계정 추상화 검증 범위 규칙](https://eips.ethereum.org/EIPS/eip-7562)
- [ERC-7769: ERC-4337용 JSON-RPC API](https://eips.ethereum.org/EIPS/eip-7769)
- [ERC-1271: 컨트랙트 표준 서명 검증 방법](https://eips.ethereum.org/EIPS/eip-1271)
- [EIP-7702: EOA에 코드 설정](https://eips.ethereum.org/EIPS/eip-7702)
- [EntryPoint 컨트랙트](https://docs.erc4337.io/smart-accounts/entrypoint-explainer.html)
- [시뮬레이션 요구 사항](https://docs.erc4337.io/bundlers/simulation-requirements.html)
- [eth-infinitism/account-abstraction 릴리스](https://github.com/eth-infinitism/account-abstraction/releases)

Source: https://wiki.fcontext.com/ko/crypto/account-abstraction/index.mdx
