forked from cerc-io/plugeth
eth/tracers: add txHash field on txTraceResult (#27183)
This PR modifies the interface for the results of `debug_traceBlock` and `debug_traceCall` by adding the `txHash`, allowing users to identify which transaction's trace result corresponds to. --------- Co-authored-by: Martin Holst Swende <martin@swende.se>
This commit is contained in:
co-authored by
Martin Holst Swende
parent
ba09403113
commit
604e215d1b
+13
-10
@@ -384,12 +384,14 @@ func TestTraceBlock(t *testing.T) {
|
||||
}
|
||||
genBlocks := 10
|
||||
signer := types.HomesteadSigner{}
|
||||
var txHash common.Hash
|
||||
backend := newTestBackend(t, genBlocks, genesis, func(i int, b *core.BlockGen) {
|
||||
// Transfer from account[0] to account[1]
|
||||
// value: 1000 wei
|
||||
// fee: 0 wei
|
||||
tx, _ := types.SignTx(types.NewTransaction(uint64(i), accounts[1].addr, big.NewInt(1000), params.TxGas, b.BaseFee(), nil), signer, accounts[0].key)
|
||||
b.AddTx(tx)
|
||||
txHash = tx.Hash()
|
||||
})
|
||||
defer backend.chain.Stop()
|
||||
api := NewAPI(backend)
|
||||
@@ -408,7 +410,7 @@ func TestTraceBlock(t *testing.T) {
|
||||
// Trace head block
|
||||
{
|
||||
blockNumber: rpc.BlockNumber(genBlocks),
|
||||
want: `[{"result":{"gas":21000,"failed":false,"returnValue":"","structLogs":[]}}]`,
|
||||
want: fmt.Sprintf(`[{"txHash":"%v","result":{"gas":21000,"failed":false,"returnValue":"","structLogs":[]}}]`, txHash),
|
||||
},
|
||||
// Trace non-existent block
|
||||
{
|
||||
@@ -418,12 +420,12 @@ func TestTraceBlock(t *testing.T) {
|
||||
// Trace latest block
|
||||
{
|
||||
blockNumber: rpc.LatestBlockNumber,
|
||||
want: `[{"result":{"gas":21000,"failed":false,"returnValue":"","structLogs":[]}}]`,
|
||||
want: fmt.Sprintf(`[{"txHash":"%v","result":{"gas":21000,"failed":false,"returnValue":"","structLogs":[]}}]`, txHash),
|
||||
},
|
||||
// Trace pending block
|
||||
{
|
||||
blockNumber: rpc.PendingBlockNumber,
|
||||
want: `[{"result":{"gas":21000,"failed":false,"returnValue":"","structLogs":[]}}]`,
|
||||
want: fmt.Sprintf(`[{"txHash":"%v","result":{"gas":21000,"failed":false,"returnValue":"","structLogs":[]}}]`, txHash),
|
||||
},
|
||||
}
|
||||
for i, tc := range testSuite {
|
||||
@@ -853,7 +855,7 @@ func TestTraceChain(t *testing.T) {
|
||||
backend.relHook = func() { rel.Add(1) }
|
||||
api := NewAPI(backend)
|
||||
|
||||
single := `{"result":{"gas":21000,"failed":false,"returnValue":"","structLogs":[]}}`
|
||||
single := `{"txHash":"0x0000000000000000000000000000000000000000000000000000000000000000","result":{"gas":21000,"failed":false,"returnValue":"","structLogs":[]}}`
|
||||
var cases = []struct {
|
||||
start uint64
|
||||
end uint64
|
||||
@@ -872,16 +874,17 @@ func TestTraceChain(t *testing.T) {
|
||||
|
||||
next := c.start + 1
|
||||
for result := range resCh {
|
||||
if next != uint64(result.Block) {
|
||||
t.Error("Unexpected tracing block")
|
||||
if have, want := uint64(result.Block), next; have != want {
|
||||
t.Fatalf("unexpected tracing block, have %d want %d", have, want)
|
||||
}
|
||||
if len(result.Traces) != int(next) {
|
||||
t.Error("Unexpected tracing result")
|
||||
if have, want := len(result.Traces), int(next); have != want {
|
||||
t.Fatalf("unexpected result length, have %d want %d", have, want)
|
||||
}
|
||||
for _, trace := range result.Traces {
|
||||
trace.TxHash = common.Hash{}
|
||||
blob, _ := json.Marshal(trace)
|
||||
if string(blob) != single {
|
||||
t.Error("Unexpected tracing result")
|
||||
if have, want := string(blob), single; have != want {
|
||||
t.Fatalf("unexpected tracing result, have\n%v\nwant:\n%v", have, want)
|
||||
}
|
||||
}
|
||||
next += 1
|
||||
|
||||
Reference in New Issue
Block a user