debug_traceTransaction

이미 처리된 Transaction의 처리 과정을 노드 레벨에서 replay하면서 트랜잭션의 실행 과정에서 각각의 단계와 관련된 상세한 정보를 확인할 수 있는 디버깅 메소드입니다. 트랜잭션의 호출 스택, 가스 사용량, 상태 변경, 로그 이벤트 등 다양한 정보를 반환합니다. 이를 통해 컨트랙트의 함수 호출 흐름, 변수 변경, 이벤트 발생 등을 추적하고 디버깅할 수 있습니다.

사용 가능한 Tracer 타입

1. callTracer

callTracer는 실행된 트랜잭션의 실행 경로와 결과를 확인하는 데 사용됩니다. 트랜잭션의 호출 스택, 반환 값, 가스 소비량, Revert 사유 등의 정보를 제공하며, 스마트 계약의 함수 호출과 상호작용하는 과정을 추적할 수 있습니다. 실행 옵션(onlyTopCall)에 따라 특정 call의 nested call들을 모두 조회하여 추적할 수 있습니다. 반환된 calls 배열 내의 각 call 객체들은 다음과 같은 정보를 포함합니다.

필드 명타입설명
typeStringCALL 또는 CREATE
fromString트랜잭션의 from 주소
toString트랜잭션의 to 주소
valueString트랜잭션의 value
gasString트랜잭션의 gas
gasUsedString실제 트랜잭션에 소모된 gas
inputStringCall 데이터
outputString반환된 데이터
errorString에러로 처리된 트랜잭션의 경우 에러 내용
revertReasonStringRevert된 트랜잭션의 경우 Revert된 사유
callsArraySub-calls의 목록 (배열)

2. prestateTracer

prestateTracer는 특정 트랜잭션이나 블록이 실행되기 전의 상태(pre-state)를 추적하는 도구입니다. 트랜잭션이 실행되기 전의 계정 상태와 계약 코드를 기록하며, 트랜잭션의 실행 전과 후의 상태 변화를 분석할 수 있습니다. prestateTracer는 스마트 계약의 상태 변경 및 계정 간 상호작용을 추적하는 데 사용됩니다. 반환되는 필드는 다음과 같습니다.

필드 명타입설명
balanceString잔고(단위: Wei)
nonceUint64Nonce
codeString실행대상 코드 (hex-encoded)
storageMap[String]해당 컨트랙트의 Storage Slot 정보
Language
Click Try It! to start a request and see the response here!