Ethereum 사용자 경험: Account Abstraction (AA)
I’m happy to translate the article for you, but I’ll need the text you’d like translated. Could you please paste the content (excluding the source line you already provided) here? Once I have the full text, I’ll translate it into Korean while preserving all formatting, markdown, and code blocks.
Source: …
소개
Web3 커뮤니티에 오래 계셨다면 Account Abstraction (AA) 에 대해 들어보셨을 겁니다.
Web2 사용자라면 이더리움에서 블록체인 트랜잭션을 시작하는 것이 가스 비용, 스테이프엔드, 서명 등 개념 때문에 막막하게 느껴질 수 있습니다.
이더리움의 EIP‑4773 은 프로토콜과 상호작용하는 사용자 경험을 크게 개선합니다.
Account abstraction 은 이더리움을 보다 사용자 친화적이고 안전하며, 기관 사용자와 일반 사용자 모두에게 대량 채택이 가능한 상태로 만듭니다.
저는 AA를 한동안 가지고 놀아보면서, 그것이 무엇인지, 제가 얻은 인사이트와 지금까지 배운 점들을 공유하고 싶습니다. 개발자이든 투자자이든, 혹은 단순히 암호화폐에 호기심이 있든, AA를 이해하면 지갑과 트랜잭션에 대한 생각이 완전히 바뀔 수 있습니다.
기본부터 시작해 봅시다…
Minimal implementation: 내 GitHub 저장소에 있는 샘플 계약을 확인하세요 –
이더리움의 계정 유형
| 계정 유형 | 설명 |
|---|---|
| 외부 소유 계정 (EOAs) | 표준 지갑으로, 개인 키에만 의해 제어됩니다. EVM 코드를 포함할 수 없습니다. |
| 스마트 계약 계정 | 실행 가능한 코드를 보유하며, 단일 개인 키가 아니라 해당 코드 로직에 의해 관리됩니다. |
EOAs의 문제점
- 복구 불가능: 키를 분실하거나 악의적인 트랜잭션에 서명하면 복구 메커니즘이 없습니다. 한 번의 실수로 자금이 영구적으로 손실될 수 있습니다.
- ECDSA‑전용: 서명은 ECDSA에 의존하는데, 이는 양자 저항성이 없습니다.
- 열악한 사용자 경험: 일반 사용자는 서명, 가스 비용, 비밀 키에 신경 쓰지 않고도 Web2 앱처럼 원활하고 관대한 경험을 기대합니다.
- 수수료 스폰서 없음: 사용자가 직접 가스를 지불해야 합니다.
계정 추상화란 무엇인가?
AA는 EOA와 계약 사이의 경계를 흐리게 하여 모든 계정을 프로그래머블 스마트 계약으로 전환합니다. 맞춤형 로직, 검증 규칙, 흐름을 정의할 수 있어 계정을 다음과 같이 만들 수 있습니다:
- 스마트함 – 맞춤형 보안, 다중 인증, 소셜 복구, 지출 한도 등.
- 안전함 – ECDSA를 양자 내성 스킴으로 교체.
- 더 유연함 – 페이마스터를 통해 가스 없는 경험을 가능하게 함.
요약하면, AA는 블록체인을 은행 계좌에 로그인하듯 직관적으로 만들어 수십억 사용자의 길을 열어줍니다.
ERC‑4337: 합의 변경 없이 계정 추상화
ERC‑4337는 대체 메모풀을 활용하는 병렬 시스템을 도입하여, 스마트‑컨트랙트 지갑(프로그래머블 계정)이 기존 EOA를 대체하거나 보강할 수 있게 합니다.
핵심 개념
- UserOperation (UserOp) – 사용자 의도(예: ETH 전송, 토큰 스왑)를 나타내는 ABI‑인코딩 구조체.
- “실제” 이더리움 트랜잭션이 아니라, 전용 alt‑mempool에 전송되는 데이터 패킷입니다.
- 블록‑레벨 정보(타임스탬프 등)에 접근할 수 없으므로 조작 위험이 없습니다.
UserOp의 주요 필드
| Field | Purpose (목적) |
|---|---|
sender | 스마트‑컨트랙트 계정 주소 |
nonce | 재전송 방지 |
initCode | (선택) 계정이 없을 경우 팩토리를 통해 계정을 배포하는 코드 |
callData | 실행할 액션(예: 토큰 전송) |
callGasLimit / verificationGasLimit / preVerificationGas | 가스 추정치 |
maxFeePerGas / maxPriorityFeePerGas | 수수료 파라미터(일반 트랜잭션과 동일) |
paymasterAndData | (선택) 스폰서십을 위한 Paymaster 정보 |
signature | 계정이 검증하는 커스텀 서명 |
- 사용자는 UserOp를 생성하고 서명한 뒤, 이를 alt‑mempool에 브로드캐스트합니다.
- 피어‑투‑피어 네트워크(메인 이더리움 메모풀과 별도)가 UserOp를 전파하여 시스템을 탈중앙화합니다(중앙 릴레이어 불필요).
번들러
번들러는 다음과 같은 역할을 하는 특수 노드입니다:
- UserOp alt‑mempool을 모니터링한다.
- 여러 UserOp를 수집하고 시뮬레이션해 가스 비용을 계산한다.
- 이를 묶어 EntryPoint 컨트랙트의
handleOps()를 호출한다.
수수료는 계정 자체 또는 Paymaster가 부담할 수 있습니다. 번들러는 계정이나 Paymaster로부터 가스 비용(및 팁)을 보상받습니다.
EntryPoint (체인당 하나의 전역 컨트랙트)
EntryPoint는 묶인 UserOp를 받아 두 단계로 처리합니다:
- 검증 단계 – 서명, nonce, 커스텀 규칙을 확인하고 계정의
validateUserOp()(및 사용 시 Paymaster 로직)를 호출합니다. - 실행 단계 – 온‑체인에서 ops를 실행하고, 스테이킹, 예치금, 출금 및 post‑op 로직을 처리합니다.
필수 컨트랙트 인터페이스
| Contract | Required functions (필수 함수) |
|---|---|
| User Account | validateUserOp() – 커스텀 검증(ECDSA, 멀티시그, 세션 키 등) execute() – 액션 수행 |
| Paymaster | 사용자를 대신해 가스 비용을 부담하는 로직 |
| Aggregator (optional) | 가스와 데이터를 절감하기 위한 배치 서명 |
Source: (원본 링크는 그대로 유지)
AA 워크플로우 (단순화)
- User가
UserOperation을 생성하고 서명합니다. - Broadcast가 UserOp을 alt‑mempool에 전송합니다.
- Bundler가 수집하고, 시뮬레이션하고, 번들링한 뒤
EntryPoint.handleOps(bundle)을 호출합니다. - EntryPoint가 (account + paymaster)를 검증하고 → 실행하고 → 환불/보상을 합니다.
- On‑chain: 번들러의 단일 트랜잭션이 모든 것을 최종 처리합니다.
실제 사례
가스 없는 상점 결제
- 사용자는 주문에 대해 100 USDC를 지불하고 싶어합니다.
- Paymaster가 가스 비용을 부담합니다(예: 사용자가 제공한 1 USDC), 이를 ETH로 변환하고 네트워크에 지불합니다.
- 상인은 전체 100 USDC를 받으며, 사용자는 ETH를 급히 구할 필요가 없습니다.
기타 사용 사례
- 소셜 복구 지갑 – 신뢰할 수 있는 연락처를 통해 접근을 복구합니다.
- 다중 인증 – 서명, 생체 인식 또는 하드웨어 키를 결합합니다.
- 구독 결제 – Paymaster가 정기 요금을 후원하여 “설정 후 잊어버리기” 경험을 가능하게 합니다.
TL;DR
- Account Abstraction은 모든 지갑을 프로그래머블 계약으로 바꾸어 맞춤형 보안, 가스‑없는 경험, 그리고 미래 지향적인 암호화를 가능하게 합니다.
- ERC‑4337은 기존 이더리움 합의 위에 대체 메모풀, 번들러, 그리고 범용
EntryPoint계약을 통해 AA를 구현합니다. - 생태계(사용자, 번들러, 페이마스터, 애그리게이터)는 블록체인 상호작용을 Web2 앱만큼 원활하게 만들기 위해 함께 작동합니다.
행복한 해킹 되세요!
Web3 번거로움을 Web2‑와 같은 로그인으로 전환하기
지갑을 Google, Apple ID, 또는 기기 생체인식으로 연결하세요—시드 구문도 없고, 가스 설정도 수동으로 할 필요가 없습니다.
초보자에게는 “프라이빗 키가 뭐죠?”라는 혼란을 없애고, 암호화폐를 플러그‑앤‑플레이 온라인 구매처럼 느끼게 합니다.
왜 중요한가요?
이제 다음을 사용해 **“연결”**하거나 거래 서명을 할 수 있습니다:
- Google 계정
- Apple ID
- 기기 생체인식 (Face ID / Touch ID)
passkeys(WebAuthn 표준)로 구동됩니다.
스마트‑컨트랙트 지갑이 현대 앱에 로그인하는 것처럼 동작합니다.
패스키 – 기본 기술
| 기능 | 설명 |
|---|---|
| Cryptographic credentials | 기기(Apple Secure Enclave 또는 Google Password Manager)에 안전하게 생성·저장됩니다. |
| Unlock method | 생체인식(Face ID, 지문) 또는 PIN. |
| Sync | iCloud 또는 Google을 통해 기기 간에 안전하게 동기화됩니다. |
| Security | 피싱에 강하고 비밀번호가 필요 없습니다. |
When you “sign in with Google/Apple” you are registering a passkey tied to that account.
- The private key never leaves your device – it lives in hardware‑secured storage and cannot be exported.
- The public key is registered on‑chain with your smart wallet.
작동 방식 – 로그인부터 트랜잭션까지
- 로그인 방법 선택 – DApp에서 Google, Apple 또는 바이오메트릭 중 하나를 선택합니다.
- 기기가 WebAuthn API를 호출 → 패스키(개인키/공개키 쌍)를 생성합니다.
- 공개키는 스마트‑컨트랙트 월렛의 소유자로서 체인에 저장됩니다(ERC‑4337 팩토리를 통해 배포).
트랜잭션 생성
- 행동을 시작합니다(예: 토큰 전송, 스왑).
- 월렛이 UserOperation(사용자 의도)을 구성합니다.
- ECDSA 서명 대신, 기기가 바이오메트릭 ID를 요청합니다.
- WebAuthn이 패스키(P‑256 곡선)로 UserOperation 해시를 서명합니다.
- 서명이 Bundler에 전송됩니다.
- EntryPoint 컨트랙트가 당신의 스마트 월렛에서
validateUserOp()를 호출해 서명을 검증하고, 작업을 실행합니다.
Note: P‑256 (secp256r1)은 이더리움의 기본 secp256k1과 다릅니다. 따라서 검증에는 맞춤형 Solidity 코드가 필요하며, 가스 소모가 더 많습니다. 구현 예시는 다음을 참고하세요:
// P‑256 verifier (simplified)
// https://github.com/daimo-eth/p256-verifier/blob/master/src/P256Verifier.sol
자주 묻는 질문
Q: 개인 키가 장치를 떠난 적이 있나요?
A: 아니오. 안전 엔클레이브/하드웨어 모듈 내부에 머무르며 내보낼 수 없습니다.
Q: Solidity는 P‑256 서명을 어떻게 검증할 수 있나요?
A: Account Abstraction (ERC‑4337)은 validateUserOp에서 사용자 정의 서명 검증을 허용합니다. 사용자 정의 검증자(예: 위의 P‑256 검증자)는 온‑체인 공개 키와 서명을 비교합니다.
Q: P‑256 검증에 대한 가스 비용은 어떻게 되나요?
A: P‑256을 온‑체인에서 검증하는 것은 secp256k1보다 비용이 더 많이 듭니다. 이는 이더리움에 후자에 대한 프리‑컴파일만 존재하기 때문입니다. 최적화된 검증자 계약이 필요합니다.
한눈에 보는 혜택
- 시드 구문 없음 – 절대 없습니다. iCloud/Google 동기화를 통한 복구.
- 가스 프리 & 원활함 – 페이마스터가 수수료를 후원할 수 있으며, USDC로 결제하거나 전혀 비용을 지불하지 않을 수 있습니다.
- 보안 – 키는 하드웨어에 저장되고, 생체 인증이 필요하며, 피싱에 강합니다.
- 크로스 디바이스 – 휴대폰을 잃어버렸나요? 동일한 Google/Apple 계정에 로그인된 다른 디바이스를 통해 복구할 수 있습니다.
- 대량 채택 준비 – Gmail에 로그인하는 것과 정확히 같은 느낌입니다.
채택 현황
- Account Abstraction (ERC‑4337) 은 이더리움 및 기타 네트워크에서 라이브 상태입니다.
- 많은 프로젝트가 이미 패스키 기반 지갑을 통합하고 있어, 이는 Web3를 대중에게 확장하기 위한 핵심 요소가 되고 있습니다.
현대 앱에 로그인하듯 암호화폐를 경험할 준비가 되셨나요?