곰투 크립토
guide전체 26편 중 26편

EIP-7906 트랜잭션 어설션: 실행 결과를 커밋 전에 검증하는 법

EIP-7906 트랜잭션 어설션이 잔액·스토리지·코드·이벤트 변화를 커밋 전에 검사하는 원리와 POST_TX 구조, 한계를 설명합니다.

GOMTU
GOMTU
크립토 리서치 · 발행 · 약 7분
공유𝕏in
EIP-7906 트랜잭션 어설션: 실행 결과를 커밋 전에 검증하는 법

지갑이 스왑 결과를 미리 보여 줘도 “예상하지 않은 자산이 하나라도 빠져나가면 커밋하지 마세요”라는 규칙을 온체인에서 강제하지는 못할 수 있어요. EIP-7906은 이 빈틈을 트랜잭션 어설션(Transaction Assertion)으로 메우려는 제안입니다. 프레임 트랜잭션이 자신의 최종 변화를 검사하고, 정해 둔 정책을 벗어나면 실행 결과를 되돌리게 해요. 크립토 지갑 보안을 강화할 가능성이 있지만 아직 메인넷 기능이 아니며, 불완전한 규칙은 잘못된 안도감을 줄 수 있습니다.

Important

2026년 9월 26일 기준 EIP-7906은 초안(Draft)입니다. 이더리움 재단은 Hegotá 후보 평가에서 이 제안을 Frames 확장 패키지의 A 티어로 분류했고, 공개 개발망에서 Frames와 함께 실행 중이라고 밝혔어요. A 티어는 강한 지지이지 메인넷 활성화를 뜻하지 않습니다.

EIP-7906 트랜잭션 어설션이란?

광고

공장 조립 라인 끝의 품질 검사대를 떠올려 보세요. 트랜잭션이 먼저 의도한 작업을 수행합니다. 결과를 확정하기 직전 읽기 전용 검사기가 완성품을 허용된 결과와 비교해요. 예상하지 않은 전송, 승인, 스토리지 변경, 컨트랙트 배포, 이벤트가 발견되면 실행 결과를 거부할 수 있습니다.

초안은 EIP-8141 프레임 트랜잭션에 POST_TX 모드를 추가해요. POST_TX 프레임은 프레임 목록의 마지막 부분에서 실행되며, 앞선 실행 프레임이 만든 최종 결과를 관찰합니다. 자체적으로 상태를 바꾸지는 못해요. 이 프레임이 리버트(Revert)되거나 비정상 종료되면 실행 본문은 되돌아가지만, 트랜잭션은 실패 영수증을 남기고 가스 결제자는 이미 수행된 작업의 비용을 냅니다.

실패한 검사까지 가스 결제를 지워 준다면 공격자가 블록 자원을 잔뜩 사용한 뒤 마지막 검사를 일부러 실패시켜 무료로 네트워크를 소모할 수 있어요. 그래서 제안은 실행 결과만 되돌리고 네트워크 작업 비용은 남기는 구조를 택합니다.

커밋 전 결과 검사는 어떻게 작동하나요?

제안은 어설션 로직을 위한 세 가지 EVM 명령어를 도입합니다.

TXTRACE: 전체 결과 열거하기

TXTRACE는 트랜잭션의 순 상태 차이(State Diff)를 보여 줘요. 잔액이 바뀐 주소, 변경된 스토리지 슬롯, 새로 배포된 컨트랙트, 발생한 이벤트를 열거할 수 있습니다. 여기서 ‘순 변화’가 중요해요. 어떤 값이 중간에 바뀌었다가 시작 값으로 돌아오면 최종 차이에는 남지 않습니다.

다음과 같은 넓은 정책에 활용할 수 있어요.

  • 지정한 두 토큰 잔액만 바뀌어야 한다.
  • 새 컨트랙트가 배포되면 안 된다.
  • 예상한 이벤트가 반드시 발생해야 한다.
  • 허용하지 않은 주소로 ETH가 나가면 안 된다.

TXDIFF: 특정 계정이나 슬롯 조회하기

TXDIFF는 키를 지정해 조회합니다. 모든 변경을 훑지 않고 특정 주소와 슬롯의 변경 전후 잔액, 코드 해시(Code Hash), 스토리지 값을 물어볼 수 있어요. 주소별 변경과 이벤트도 확인할 수 있습니다.

초안에는 계정의 논스(Nonce), 잔액, 스토리지, 코드 해시가 바뀌었는지를 비트로 요약하는 계정 변경 플래그도 있어요. 건드리면 안 되는 계정의 플래그가 항상 0이어야 한다는 ‘보호막’ 규칙을 만들 수 있습니다.

EVENTDATACOPY: 이벤트 데이터 읽기

이벤트에는 EVM 스택의 한 워드에 담기 어려운 가변 길이 데이터가 들어갈 수 있어요. EVENTDATACOPY는 이 비인덱스 데이터를 메모리로 복사해 검사하게 합니다. 다른 명령어가 보여 주는 이벤트 토픽(Topic)과 함께 사용하면 토큰 전송, 승인, 앱별 처리 결과를 확인할 수 있어요.

정확한 매개변수와 정렬 규칙은 최신 EIP-7906 공식 명세를 따라야 합니다. 가스 비용과 일부 설계가 아직 확정되지 않았으므로 오래된 구현 예시를 그대로 복사하면 안 돼요. 이더리움 재단의 Hegotá 평가도 임의 스토리지 조회를 빼고 이벤트와 블록 접근 목록(Block Access List)이 건드린 슬롯에 집중하는 범위 축소안을 추가 연구 중이라고 밝혔습니다. 따라서 현재 조회 범위는 최종안이 아니에요.

트랜잭션 어설션과 시뮬레이션의 차이

두 기술은 비슷해 보이지만 서로 다른 질문에 답합니다.

계층실행 시점제공하는 것주요 한계
지갑 시뮬레이션서명 또는 전파 전선택한 체인 상태에서 예상 결과 미리 보기실제 상태·경로·해석이 달라질 수 있음
트랜잭션 어설션제안된 프레임 트랜잭션 실행 중실제 실행 효과에 대한 온체인 조건정책이 위험한 효과를 빠뜨리거나 기술적으로 실패할 수 있음

크립토 트랜잭션 시뮬레이션이 출발 전에 경로를 예행연습하는 것이라면, 어설션은 자동차가 허용된 목적지에 도착했을 때만 열리는 차단기와 비슷해요. 미리 보기는 의도를 이해하게 돕고, 어설션은 실행 중 경계를 강제하려고 합니다.

둘은 서로 보완해요. 지갑은 서명 전에 요청을 사람이 읽을 수 있게 설명해야 하고, 시뮬레이션 결과로 적절한 정책을 만들 수도 있습니다. 이어서 어설션이 실제로 중요한 효과를 빠짐없이 검사해야 해요. 어느 쪽도 토큰 가치, 거래 가격의 공정성, 프로토콜의 정직함을 보장하지는 않습니다.

어떤 위험을 막을 수 있나요?

이더리움 재단의 2026년 9월 Hegotá EIP 티어 목록은 EIP-7906이 지갑 드레이너와 일부 MEV 추출을 막을 수 있는 Frames 확장이라고 설명해요. 가능한 정책 예시는 다음과 같습니다.

  • 최대 유출량: 표시한 한도보다 많은 ETH나 토큰이 빠져나가면 거부합니다.
  • 숨은 승인 금지: 예상하지 않은 허용량(Allowance) 변경이나 승인 이벤트를 거부해요.
  • 최소 수령량: 의도한 자산 잔액이 정해진 수량 이상 늘어야 합니다.
  • 허용 컨트랙트 목록: 작업에 필요한 컨트랙트에서만 변화가 일어나게 제한해요.
  • 보호 계정 차단: 다른 계정의 잔액·스토리지·논스·코드가 바뀌지 않아야 합니다.
  • 필수 이벤트: 알려진 컨트랙트가 지정한 처리 결과를 남겨야 해요.

이는 가능한 정책일 뿐 보편적인 안전 보장이 아닙니다. 토큰의 회계 방식이 모두 같지 않고, 앱 상태가 독자적인 구조로 저장될 수 있으며, 복잡한 작업은 단순한 허용 목록보다 많은 컨트랙트를 건드릴 수 있어요.

이더리움 재단의 프로토콜 우선순위 안내는 EIP-7906을 프레임 트랜잭션 주변의 계정 보안 강화 작업으로 묶습니다. 동시에 상태 표현을 조심해야 하는 이유도 보여 줘요. 연구, EIP, 프로토타입, 개발망, 포크 포함 단계를 거쳐야 메인넷에 도달합니다. 공개 개발망에서 작동한다는 사실은 사용자가 지금 활성화할 수 있다는 뜻이 아니에요.

리스크와 한계

트랜잭션 어설션은 보안을 “사용자에게 경고 표시”에서 “기계가 읽을 수 있는 불변 조건 강제”로 일부 옮깁니다. 단, 그 조건이 정확해야 의미가 있어요.

불완전한 정책: 검사기가 한 토큰의 유출만 확인하고 NFT, 네이티브 자산 전송, 운영자 권한, 앱별 스토리지 변경을 놓칠 수 있습니다. 공식 초안도 제한이 부족한 어설션은 어설션이 없는 것과 다르지 않을 수 있다고 경고해요.

강제 누락: 스마트 계정은 자신이 기대하는 POST_TX 프레임을 반드시 요구해야 합니다. 검증 로직이 해당 프레임 없이도 요청을 승인하면 악성 트랜잭션이 검사를 우회할 수 있어요.

변경 가능한 검사 코드: 예상한 어설션 대상은 불변(Immutable)이어야 한다고 초안은 경고합니다. 신뢰할 수 없는 실행이 POST_TX 전에 검사기를 업그레이드할 수 있다면 보호 규칙 자체를 약화할 수 있어요.

가스 고갈: 하나의 트랜잭션이 많은 변경이나 이벤트를 만들 수 있습니다. 전부 열거하다 가스가 부족해질 수 있어요. 주소별·토픽별 조회가 이를 줄이지만, 구현은 안전한 개수 제한과 실패 처리를 갖춰야 합니다.

검증 접두부의 효과: POST_TX 실패는 실행 본문을 되돌리지만 검증 접두부(Validation Prefix)는 되돌리지 않습니다. 가스 결제와 허용된 준비 작업은 남아요. 지갑은 신뢰할 수 없는 디앱 동작을 이 구간에 넣지 않아야 합니다.

초안 간 결합: EIP-7906은 EIP-8141과 EIP-2929에 의존해요. Frames 설계, 명령어 배정, 가스 회계, Hegotá 범위가 바뀌면 어설션의 작동 방식이나 실제 도입 여부도 달라질 수 있습니다.

Caution

지금 메인넷에서 “EIP-7906을 활성화해야 한다”며 서명을 요구할 이유는 없습니다. 활성화 화면, 시드 문구 요구, 설명할 수 없는 서명 요청은 사기로 의심하세요. EIP 번호는 안전 인증서가 아닙니다.

실전 검토 체크리스트

향후 트랜잭션 어설션이 실제 지갑에 도입된다면 다음을 확인해 보세요.

  1. 무엇을 제한하나요? 자산, 계정, 컨트랙트, 스토리지, 승인, 이벤트를 구체적으로 확인하세요.
  2. 무엇이 여전히 허용되나요? 최대 지출만 제한하면 수신자는 아무 주소나 될 수도 있어요.
  3. 어설션이 필수인가요? 계정 검증 로직이 예상한 불변 POST_TX 검사기 없이 요청을 승인하지 못해야 합니다.
  4. 실패하면 무엇이 남나요? 실행 본문은 되돌아가지만 실패 영수증이 생기고 가스는 청구됩니다.
  5. 복잡도를 어떻게 제한하나요? 항목 수 상한, 가스 할당, 가스 고갈 처리 방식을 확인하세요.
  6. 어느 명세 버전을 구현했나요? 초안 명령어와 의미는 바뀔 수 있습니다.
  7. 트랜잭션을 여전히 이해할 수 있나요? 어설션은 클리어 사이닝을 보완할 뿐, 읽을 수 없는 요청에 서명할 이유가 되지 않아요.

자주 묻는 질문

EIP-7906은 이더리움 메인넷에서 사용할 수 있나요?

아니요. 2026년 9월 26일 기준 공식 EIP 페이지의 상태는 초안입니다. 이더리움 재단은 Hegotá A 티어로 평가하고 공개 개발망 작업을 알렸지만, 이는 활성화를 뜻하지 않아요.

어설션이 실패하면 트랜잭션이 무료가 되나요?

아니요. 제안된 실행 효과는 되돌아가지만 트랜잭션은 실패 영수증을 남기고 결제자는 가스를 냅니다. 일부러 마지막 검사를 실패시켜 네트워크 자원을 무료로 쓰는 공격을 막기 위한 구조예요.

EIP-7906이 지갑 시뮬레이션을 대체하나요?

아닙니다. 시뮬레이션은 서명 전에 제안된 작업을 이해하게 돕고, 어설션은 프레임 트랜잭션 실행 중 선택한 조건을 강제해요. 좋은 지갑 보안은 둘을 함께 사용할 수 있습니다.

모든 지갑 드레이너를 막을 수 있나요?

아니요. 정확히 강제된 정책에 포함된 효과를 거부할 수 있을 뿐입니다. 정책이 빠졌거나 우회 가능하거나 오래됐거나 불완전하면 악성 작업을 놓칠 수 있어요.

일반 EIP-1559 트랜잭션에서도 작동하나요?

현재 초안에서 새 명령어는 EIP-8141 프레임 트랜잭션의 POST_TX 모드 안에서만 유효합니다. 레거시 트랜잭션이나 일반 EIP-1559 트랜잭션에서는 사용할 수 없어요.

핵심 정리

EIP-7906은 지갑 보안의 관점을 바꾸려는 제안입니다. 트랜잭션이 무엇을 할 것으로 예상되는지 보여 주는 데서 나아가, 실제로 무엇을 바꿀 수 있는지 제한하려고 해요. TXTRACE, TXDIFF, EVENTDATACOPY는 마지막 읽기 전용 POST_TX 프레임이 결과를 승인하거나 거부하는 데 필요한 정보를 제공합니다.

아직 초안이고, 보호 범위는 어설션의 완성도만큼만 넓으며, 실패한 검사에도 가스가 듭니다. 홍보 문구보다 최신 EIP와 공식 포크 발표를 확인하세요. 이 글은 교육 목적이며 투자 조언이 아닙니다(NFA). 크립토 트랜잭션과 스마트 컨트랙트는 되돌릴 수 없는 손실을 만들 수 있으므로 잃어도 되는 금액만 사용하고 스스로 조사하세요(DYOR).

광고

함께 읽으면 좋은 글

관련 주제 살펴보기

GOMTU의 다른 글