Skip to content

Commit 0c81e17

Browse files
committed
WIP: Debug
1 parent cc164ac commit 0c81e17

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

core/state_snapshot.go

+7
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,13 @@ type stateSnapshot struct {
1515
state StateHistoryReader
1616
}
1717

18+
func GetBlockNumber(state StateReader) uint64 {
19+
if snapshot, ok := state.(*stateSnapshot); ok {
20+
return snapshot.blockNumber
21+
}
22+
return 0
23+
}
24+
1825
func NewStateSnapshot(state StateHistoryReader, blockNumber uint64) StateReader {
1926
return &stateSnapshot{
2027
blockNumber: blockNumber,

rpc/v8/trace.go

+19-1
Original file line numberDiff line numberDiff line change
@@ -239,9 +239,27 @@ func (h *Handler) traceBlockTransactions(ctx context.Context, block *core.Block)
239239
if errors.Is(err, utils.ErrResourceBusy) {
240240
return nil, httpHeader, rpccore.ErrInternal.CloneWithData(rpccore.ThrottledVMErr)
241241
}
242+
243+
txs := make([]string, len(block.Transactions))
244+
for i, tx := range block.Transactions {
245+
txs[i] = tx.Hash().String()
246+
}
247+
242248
// Since we are tracing an existing block, we know that there should be no errors during execution. If we encounter any,
243249
// report them as unexpected errors
244-
return nil, httpHeader, rpccore.ErrUnexpectedError.CloneWithData(err.Error())
250+
return nil, httpHeader, rpccore.ErrUnexpectedError.CloneWithData(struct {
251+
Error string `json:"error"`
252+
StateBlock uint64 `json:"state_block"`
253+
ParentBlock string `json:"parent_block"`
254+
Number uint64 `json:"number"`
255+
Txs []string `json:"txs"`
256+
}{
257+
Error: err.Error(),
258+
StateBlock: core.GetBlockNumber(state),
259+
ParentBlock: block.ParentHash.String(),
260+
Number: block.Number,
261+
Txs: txs,
262+
})
245263
}
246264

247265
result := make([]TracedBlockTransaction, len(executionResult.Traces))

0 commit comments

Comments
 (0)