트랜잭션 단언, 결과를 보고 되돌리는 안전장치
Strawmap Hegotá (2027) · transaction assertions
트랜잭션 맨 끝에 읽기 전용 검사 단계를 붙여 잔액이나 저장소가 조건과 다르게 바뀌었으면 실행 결과를 통째로 되돌립니다. 지갑이 사용자 계정에 일어날 수 있는 일의 범위를 온체인에서 강제할 수 있게 됩니다.
왜 필요한가
지금은 트랜잭션에 서명한 뒤에는 그 트랜잭션이 실제로 무엇을 하는지 제한할 수단이 없습니다. 일반 사용자나 지갑 앱이 실행될 코드를 모두 찾아 읽고 분석하기도 매우 어렵습니다. 그래서 대부분은 내용을 모른 채 서명(블라인드 서명)을 합니다. 제안서는 이렇게 도난당한 암호자산의 누적액이 중간 규모 국가의 연간 GDP를 넘는다고 짚습니다. 이 제안은 코드를 미리 읽는 대신 결과를 보고 막는 길을 택합니다. 트랜잭션 맨 끝에 읽기 전용 검사 단계를 두고 새 명령어(TXTRACE)로 이 트랜잭션이 바꾼 잔액, 저장소, 코드, 논스와 남긴 이벤트를 읽습니다. 지갑이 조건을 붙여 두면 어긋났을 때 실행 본문이 통째로 되돌아가므로, 사용자가 자기 계정에 일어날 수 있는 일의 범위를 스스로 정할 수 있습니다. 이 항목은 프레임 트랜잭션(EIP-8141)의 네 번째 모드로 설계되어 프레임 트랜잭션과 함께 가야 합니다. 2026년 9월 ACDE #246에서 헤고타(Hegotá) 포함 검토 대상에 올랐고 10월 ACDT #100에서 bogota-devnet-1에 넣어 검증하기로 했습니다. Strawmap은 헤고타 칸에 두고 있지만 어느 포크에 들어갈지는 예상일 뿐 확정이 아닙니다.
어떻게 동작하나
- 검사 단계를 맨 뒤에 붙입니다 지갑이나 디앱이 프레임 트랜잭션 끝에 ASSERT 모드 프레임을 둡니다. 이 프레임은 상태를 바꿀 수 없는 읽기 전용으로 실행되고 한 번 나오면 그 뒤 프레임은 모두 ASSERT여야 합니다.
- 바뀐 것을 읽습니다 본문 실행이 끝난 뒤 TXTRACE 명령어로 트랜잭션 전과 지금의 차이를 읽습니다. 잔액, 저장소 슬롯, 코드, 논스가 어디서 어떻게 바뀌었는지와 발생한 이벤트를 항목별로 조회합니다.
- 조건에 어긋나면 되돌립니다 검사가 실패하면 실행 본문 전체가 되돌아가고 로그도 버립니다. 트랜잭션은 블록에 남고 수수료를 내는 쪽은 실패 시점까지 쓴 가스를 냅니다.
관련 EIP
- EIP-7906 상태 변화 옵코드로 트랜잭션 결과 검증