debug_traceBlockByHash

특정 블록에 대해 tracer를 설정하여 해당 tracer가 제공하는 정보들을 통해 트랜잭션으로 인한 체인의 상태 변화 및 실제 call의 발생 이력들을 Debug할 수 있는 도구입니다.

사용 가능한 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!