출처: 사용자(jay) 정리, 2026-05-08. 연결: README §11.4 (트래킹), README §2.2.8 (Account Abstraction). 상태: Phase 3 W7 진입 전 결정 사항. 본 문서는 reference이고 결정/액션은 §11.4에서 추적.
EIP-7702는 EOA(Externally Owned Account)가 특정 트랜잭션 실행 시 지정된 컨트랙트의 코드를 임시로 실행할 수 있게 함으로써, 별도의 스마트 계정 배포 없이도 계정 추상화의 핵심 기능들(배치 실행, 가스 스폰서십, 소셜 복구)을 EOA에서 직접 사용 가능하게 한다.
ERC-4337은 UserOperation → Bundler → EntryPoint 컨트랙트 경유로 스마트 계정을 구현했다. 강력하지만 복잡하다. 기존 EOA를 4337 기반 스마트 계정으로 마이그레이션하는 것은 여전히 마찰이 있고, 수억 달러 자산이 여전히 EOA에 있다는 현실이 장벽이었다. EIP-7702는 이 문제를 정면 돌파한다. 기존 EOA를 그대로 유지하면서, 특정 트랜잭션에서만 지정된 컨트랙트 코드를 빌려 실행하는 방식이다.
// EIP-7702가 도입한 새 트랜잭션 타입: Type 4 (0x04)
// 트랜잭션에 authorization_list 필드 추가:
authorization_list: [
{
chain_id: 8453, // 대상 체인 ID (Base 등 EIP-7702 지원 체인)
address: 0xDelegateContract, // 빌릴 코드의 컨트랙트 주소
nonce: 42,
v, r, s, // EOA가 서명
}
]
// 이 트랜잭션이 실행되면:
// 1. EOA의 코드 슬롯에 0xef0100 || address 형태로 설정됨
// 2. 해당 트랜잭션에서 EOA는 DelegateContract의 코드를 실행
// 3. 트랜잭션이 끝나도 delegation 설정은 유지됨
// (revoke 트랜잭션으로 해제 가능)
import { createWalletClient, encodeFunctionData } from 'viem'
import { eip7702Actions } from 'viem/experimental'
const client = createWalletClient({...}).extend(eip7702Actions())
// 패턴 1: 배치 트랜잭션 (approve + createPosition 1회 서명)
// 기존: 2번 팝업 (approve, createPosition 각각)
// EIP-7702 이후: 1번 서명으로 완료
const batchDelegateContract = '0xBatchExecutor...'
const auth = await client.signAuthorization({
contractAddress: batchDelegateContract,
})
await client.sendTransaction({
authorizationList: [auth],
to: client.account.address, // 자기 자신에게
data: encodeFunctionData({
abi: batchDelegateAbi,
functionName: 'execute',
args: [[
// Step 1: USDC approve
{
target: USDC_ADDRESS,
callData: encodeApprove(MARKET_ADDRESS, parseEther('100'))
},
// Step 2: 예측시장 포지션 생성
{
target: MARKET_ADDRESS,
callData: encodeCreatePosition(marketId, 'YES', parseEther('100'))
},
]]
})
})
// 패턴 2: 가스 스폰서십 (신규 사용자 온보딩에 핵심)
// Paymaster가 대신 가스 지불 → 사용자는 ETH 없이 첫 베팅 가능
// Verex의 신규 사용자 획득 전략에 직접 활용 가능
// 패턴 3: 소셜 복구
// RecoveryDelegate 설정 → 가디언이 분실 키 복구
// ⚠️ DelegateContract 선택 시 핵심 주의사항:
// 악의적 컨트랙트를 authorization에 포함하면
// 그 컨트랙트가 EOA의 전체 자산에 접근 가능
//
// 안전 조건:
// 1. 오딧된 신뢰할 수 있는 컨트랙트만 사용
// 2. Revoke 패턴 항상 구현 (delegation 해제)
// 3. 체인 ID 명시 필수 (크로스체인 replaying 방지)
// Revoke: 빈 주소로 재설정
const revokeAuth = await client.signAuthorization({
contractAddress: '0x0000000000000000000000000000000000000000',
})
EIP-7702는 Pectra 업그레이드(2025) 이후 Ethereum 메인넷과 다수 L2에서 사용 가능. Verex가 어느 체인에 배포되든, EIP-7702가 그 체인에서 활성화되어 있다면 다음을 얻는다: 신규 사용자 온보딩 마찰이 극적으로 줄어들고(가스 스폰서십), 베팅 UX가 2번 서명에서 1번으로 단순화되며, AA 인프라가 별도 스마트 계정 배포 없이 EOA에서 직접 동작.
대상 체인의 EIP-7702 활성화 여부는 §11.4 B1에서 검증.