post https://ethereum-mainnet.luniverse.io/
이미 처리된 Transaction의 처리 과정을 노드 레벨에서 replay하면서 트랜잭션의 실행 과정에서 각각의 단계와 관련된 상세한 정보를 확인할 수 있는 디버깅 메소드입니다. 트랜잭션의 호출 스택, 가스 사용량, 상태 변경, 로그 이벤트 등 다양한 정보를 반환합니다. 이를 통해 컨트랙트의 함수 호출 흐름, 변수 변경, 이벤트 발생 등을 추적하고 디버깅할 수 있습니다.
사용 가능한 Tracer 타입
1. callTracer
callTracer
callTracer는 실행된 트랜잭션의 실행 경로와 결과를 확인하는 데 사용됩니다. 트랜잭션의 호출 스택, 반환 값, 가스 소비량, Revert 사유 등의 정보를 제공하며, 스마트 계약의 함수 호출과 상호작용하는 과정을 추적할 수 있습니다. 실행 옵션(onlyTopCall)에 따라 특정 call의 nested call들을 모두 조회하여 추적할 수 있습니다. 반환된 calls 배열 내의 각 call 객체들은 다음과 같은 정보를 포함합니다.
필드 명 | 타입 | 설명 |
---|---|---|
type | String | CALL 또는 CREATE |
from | String | 트랜잭션의 from 주소 |
to | String | 트랜잭션의 to 주소 |
value | String | 트랜잭션의 value |
gas | String | 트랜잭션의 gas |
gasUsed | String | 실제 트랜잭션에 소모된 gas |
input | String | Call 데이터 |
output | String | 반환된 데이터 |
error | String | 에러로 처리된 트랜잭션의 경우 에러 내용 |
revertReason | String | Revert된 트랜잭션의 경우 Revert된 사유 |
calls | Array | Sub-calls의 목록 (배열) |
2. prestateTracer
prestateTracer
prestateTracer는 특정 트랜잭션이나 블록이 실행되기 전의 상태(pre-state)를 추적하는 도구입니다. 트랜잭션이 실행되기 전의 계정 상태와 계약 코드를 기록하며, 트랜잭션의 실행 전과 후의 상태 변화를 분석할 수 있습니다. prestateTracer는 스마트 계약의 상태 변경 및 계정 간 상호작용을 추적하는 데 사용됩니다. 반환되는 필드는 다음과 같습니다.
필드 명 | 타입 | 설명 |
---|---|---|
balance | String | 잔고(단위: Wei) |
nonce | Uint64 | Nonce |
code | String | 실행대상 코드 (hex-encoded) |
storage | Map[String] | 해당 컨트랙트의 Storage Slot 정보 |