EIP-7702는 EOA가 서명한 authorization을 통해 자신의 주소에 다른 계약 코드를 가리키는 위임 표시를 설정하고 스마트 계정 같은 기능을 실행하게 합니다. 개인키가 사라지는 방식이 아니며, 위임 코드와 서명 범위가 부실하면 해당 EOA 자산과 권한 전체가 위험해질 수 있습니다.
위임 표시는 계약 배포와 다르다
EIP-7702는 새 거래 유형의 authorization list를 처리해 지정한 EOA 주소의 code에 delegation indicator를 둔다. 그 뒤 그 주소로 호출이 오면 표시가 가리키는 대상 코드가 실행된다. EOA의 주소와 잔액·기존 저장 공간을 유지하면서 계약 기능을 빌리는 방식이다.
EIP-7702는 EOA가 스마트 계약처럼 동작해 일괄 호출, 후원 거래, ERC-4337 통합 같은 기능을 쓰도록 설계됐다. authorization은 체인 ID, 위임 대상 주소, nonce 등에 서명해 재사용 범위를 제한한다.
위임 코드가 설정됐다고 개인키가 폐기되는 것은 아니다. 개인키는 새 authorization을 만들거나 일반 거래 권한에 계속 중요하다. 사용자는 ‘스마트 지갑으로 전환’이라는 UI 문구보다 현재 위임 대상과 변경·해제 방법을 확인해야 한다.
| 요소 | 역할 | 오류 시 위험 |
|---|---|---|
| chain_id | authorization 적용 체인 제한 | 다른 체인 재사용 |
| nonce | 위임 승인 재생 방지 | 과거 승인 반복 |
| delegate address | 실행할 코드 지정 | 악성 코드에 제어 위임 |
| target/calldata | 실제 호출 범위 | 임의 계약·함수 실행 |
| value/gas | 자산·실행 자원 제한 | 예상 밖 전송·실패 유도 |
한 거래에서 위임 설정과 실행이 이어진다
타입 4 거래는 하나 이상의 authorization을 담을 수 있고, 처리 후 거래의 목적지 호출이 실행된다. 거래 비용을 내는 주체와 authorization을 서명한 EOA가 다를 수 있어 후원 흐름이 가능하다.
이 분리는 편리하지만 서명자가 거래 제출자의 후속 동작을 충분히 제한해야 한다. 위임 계약이 target, calldata, value, gas, nonce를 서명에 포함하지 않으면 후원자가 사용자가 예상하지 않은 호출로 바꾸거나 서명을 재사용할 수 있다.
누구나 위임된 EOA를 호출할 수 있다는 의미
위임 표시가 있는 EOA는 외부 호출을 받으면 지정 코드가 그 계정의 문맥에서 실행될 수 있다. 안전한 위임 코드는 내부에서 다시 권한을 검증해야 한다. 주소가 EOA처럼 보인다는 과거 가정만으로 호출자를 신뢰하는 계약은 동작이 달라질 수 있다.
제안서는 tx.origin과 msg.sender에 기대는 일부 불변식이 깨질 수 있다고 설명한다. ‘msg.sender == tx.origin이면 계약 호출이 아니다’ 같은 방어는 EIP-7702 환경에서 신뢰할 수 없다. 애플리케이션은 명시적 권한 검증과 재진입 방어를 사용해야 한다.
초기화와 저장소 충돌이 특히 위험하다
일반 프록시 배포는 생성 시점에 초기화 함수를 함께 실행해 소유자를 정할 수 있다. EIP-7702 위임 설정 자체는 initcode를 실행해 저장 슬롯을 채우지 않는다. 첫 초기화 호출을 공격자가 선점하지 못하도록 EOA 서명을 검증해야 한다.
다른 위임 코드로 갈아타면 같은 EOA 저장소를 새 코드가 해석한다. 슬롯 배치가 다르면 소유자나 잔액 관련 값이 충돌할 수 있다. 이전·새 구현의 저장 레이아웃과 마이그레이션 절차, 롤백 가능성을 확인한다.
- 지갑이 보여 주는 위임 대상 코드 주소 확인
- authorization의 체인 ID·nonce 확인
- 실행 서명에 target·calldata·value 포함 여부 확인
- 초기화가 EOA 서명으로 보호되는지 확인
- 위임 변경 전 저장 레이아웃과 해제 절차 확인
편의 기능별로 실제 권한을 다시 번역한다
일괄 실행은 여러 승인과 스왑을 한 번에 처리할 수 있지만 각 하위 호출을 펼쳐 봐야 한다. 가스 후원은 제출자가 비용을 내는 기능이지 임의 실행 권한을 가져도 된다는 뜻이 아니다. 세션 키는 위임 코드가 강제하는 대상·기간·금액 제한이 핵심이다.
지갑 시뮬레이션은 유용하지만 현재 상태를 바탕으로 한 예상이다. 서명 후 포함 전 상태가 바뀌거나 프록시 구현이 업그레이드되면 결과가 달라질 수 있다. 코드 주소와 버전, 만료 시각을 함께 확인한다.
위임은 키를 없애는 기능이 아니라 키가 허용할 코드 경로를 늘리는 기능이다.
JOBCOIN 해설
탐색기에서 위임 상태를 확인하는 절차
주소의 code가 짧은 delegation indicator인지 확인하고 그것이 가리키는 계약 주소를 연다. 대상 코드가 검증됐는지, 프록시인지, 누가 업그레이드할 수 있는지 확인한다. 타입 4 거래의 authorization list에서 서명자, chainId, nonce를 기록한다.
실행 거래에서는 최상위 to만 보지 말고 내부 호출과 이벤트를 펼친다. 배치가 토큰 approve, transfer, 모듈 설치를 함께 수행할 수 있다. 자산 이동과 장기 권한 변경을 구분해 기록한다.
의심스러운 위임을 발견했을 때 단순 토큰 이동만으로 위험이 끝난다고 단정할 수 없다. 남은 승인, NFT 운영자 권한, 다른 체인의 같은 키, 위임 변경 가능성을 함께 점검하고 공식 지갑의 해제 절차를 사용한다.
자주 묻는 질문
EIP-7702를 쓰면 EOA가 계약 계정으로 영구 변하나요?
주소에 위임 표시가 설정되어 계약 코드처럼 동작하지만 개인키와 EOA 맥락이 남습니다. 새 authorization으로 위임을 바꾸거나 해제할 수 있는 구조를 확인하세요.
가스 대납자가 제 자산을 마음대로 쓸 수 있나요?
안전한 위임 코드는 사용자가 서명한 대상과 데이터를 검증해야 합니다. 서명 범위가 부실하면 대납자가 호출을 변조할 위험이 있습니다.
위임 대상이 검증된 코드면 충분한가요?
소스 검증은 출발점일 뿐입니다. 프록시 업그레이드 권한, 초기화 상태, 저장소 호환성, 실제 서명 검증 로직을 함께 봐야 합니다.



