rpc: debug_traceBlockByNumber endpoint (#555)

* Refactor traceTx

* add getTendermintBlock on backend

* keeper concurrency

* first version

* json rpc concurrency

* rever makefile change

* remove grpc traceblock

* create internal traceBlock function

* added types to evm module

* tendermintBlockByNumber rename

* added safe message check

* remove unnecesary line

* check error

* fix lint

* fix linter

* Update ethereum/rpc/namespaces/debug/api.go

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>

* Update ethereum/rpc/namespaces/debug/api.go

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>

* Update ethereum/rpc/backend/backend.go

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>

* improve traceBlock performance

* fix linter

* add extra line on function parameters

* changed index to uint 64

* fix lint

* proto gen

* update endpoints documentation

* update changelog

* Apply suggestions from code review

* Update ethereum/rpc/namespaces/eth/filters/filters.go

Co-authored-by: Federico Kunze Küllmer <31522760+fedekunze@users.noreply.github.com>
This commit is contained in:
crypto-facs
2021-09-15 08:46:01 +00:00
committed by GitHub
co-authored by Federico Kunze Küllmer
parent ec7d8a37fd
commit 3f1eeb30b6
11 changed files with 346 additions and 151 deletions
+40 -35
View File
@@ -469,13 +469,6 @@ func (k Keeper) EstimateGas(c context.Context, req *types.EthCallRequest) (*type
// executes the given message in the provided environment. The return value will
// be tracer dependent.
func (k Keeper) TraceTx(c context.Context, req *types.QueryTraceTxRequest) (*types.QueryTraceTxResponse, error) {
// Assemble the structured logger or the JavaScript tracer
var (
tracer vm.Tracer
err error
resultData []byte
)
ctx := sdk.UnwrapSDKContext(c)
k.WithContext(ctx)
params := k.GetParams(ctx)
@@ -487,25 +480,48 @@ func (k Keeper) TraceTx(c context.Context, req *types.QueryTraceTxRequest) (*typ
ethCfg := params.ChainConfig.EthereumConfig(k.eip155ChainID)
signer := ethtypes.MakeSigner(ethCfg, big.NewInt(ctx.BlockHeight()))
coreMessage, err := req.Msg.AsMessage(signer)
result, err := k.traceTx(c, coinbase, signer, req.TxIndex, params, ctx, ethCfg, req.Msg, req.TraceConfig)
if err != nil {
return nil, status.Error(codes.Internal, err.Error())
}
resultData, err := json.Marshal(result)
if err != nil {
return nil, status.Error(codes.Internal, err.Error())
}
return &types.QueryTraceTxResponse{
Data: resultData,
}, nil
}
func (k *Keeper) traceTx(c context.Context, coinbase common.Address, signer ethtypes.Signer, txIndex uint64,
params types.Params, ctx sdk.Context, ethCfg *ethparams.ChainConfig, msg *types.MsgEthereumTx, traceConfig *types.TraceConfig) (*interface{}, error) {
// Assemble the structured logger or the JavaScript tracer
var (
tracer vm.Tracer
err error
)
coreMessage, err := msg.AsMessage(signer)
if err != nil {
return nil, status.Error(codes.Internal, err.Error())
}
switch {
case req.TraceConfig != nil && req.TraceConfig.Tracer != "":
case traceConfig != nil && traceConfig.Tracer != "":
timeout := defaultTraceTimeout
// TODO change timeout to time.duration
// Used string to comply with go ethereum
if req.TraceConfig.Timeout != "" {
if timeout, err = time.ParseDuration(req.TraceConfig.Timeout); err != nil {
if traceConfig.Timeout != "" {
if timeout, err = time.ParseDuration(traceConfig.Timeout); err != nil {
return nil, status.Errorf(codes.InvalidArgument, "timeout value: %s", err.Error())
}
}
txContext := core.NewEVMTxContext(coreMessage)
// Constuct the JavaScript tracer to execute with
if tracer, err = tracers.New(req.TraceConfig.Tracer, txContext); err != nil {
// Construct the JavaScript tracer to execute with
if tracer, err = tracers.New(traceConfig.Tracer, txContext); err != nil {
return nil, status.Error(codes.Internal, err.Error())
}
@@ -518,12 +534,12 @@ func (k Keeper) TraceTx(c context.Context, req *types.QueryTraceTxRequest) (*typ
}
}()
defer cancel()
case req.TraceConfig != nil && req.TraceConfig.LogConfig != nil:
case traceConfig != nil && traceConfig.LogConfig != nil:
logConfig := vm.LogConfig{
DisableMemory: req.TraceConfig.LogConfig.DisableMemory,
Debug: req.TraceConfig.LogConfig.Debug,
DisableStorage: req.TraceConfig.LogConfig.DisableStorage,
DisableStack: req.TraceConfig.LogConfig.DisableStack,
DisableMemory: traceConfig.LogConfig.DisableMemory,
Debug: traceConfig.LogConfig.Debug,
DisableStorage: traceConfig.LogConfig.DisableStorage,
DisableStack: traceConfig.LogConfig.DisableStack,
}
tracer = vm.NewStructLogger(&logConfig)
default:
@@ -532,45 +548,34 @@ func (k Keeper) TraceTx(c context.Context, req *types.QueryTraceTxRequest) (*typ
evm := k.NewEVM(coreMessage, ethCfg, params, coinbase, tracer)
k.SetTxHashTransient(common.HexToHash(req.Msg.Hash))
k.SetTxIndexTransient(uint64(req.TxIndex))
k.SetTxHashTransient(common.HexToHash(msg.Hash))
k.SetTxIndexTransient(txIndex)
res, err := k.ApplyMessage(evm, coreMessage, ethCfg, true)
if err != nil {
return nil, status.Error(codes.Internal, err.Error())
}
var result interface{}
// Depending on the tracer type, format and return the trace result data.
switch tracer := tracer.(type) {
case *vm.StructLogger:
// TODO Return proper returnValue
result := types.ExecutionResult{
result = types.ExecutionResult{
Gas: res.GasUsed,
Failed: res.Failed(),
ReturnValue: "",
StructLogs: types.FormatLogs(tracer.StructLogs()),
}
resultData, err = json.Marshal(result)
if err != nil {
return nil, status.Error(codes.Internal, err.Error())
}
case *tracers.Tracer:
result, err := tracer.GetResult()
result, err = tracer.GetResult()
if err != nil {
return nil, status.Error(codes.Internal, err.Error())
}
resultData, err = json.Marshal(result)
if err != nil {
return nil, status.Error(codes.Internal, err.Error())
}
default:
return nil, status.Error(codes.InvalidArgument, "invalid tracer type")
}
return &types.QueryTraceTxResponse{
Data: resultData,
}, nil
return &result, nil
}
+86 -86
View File
@@ -1125,7 +1125,7 @@ type QueryTraceTxRequest struct {
// msgEthereumTx for the requested transaction
Msg *MsgEthereumTx `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"`
// transaction index
TxIndex uint32 `protobuf:"varint,2,opt,name=tx_index,json=txIndex,proto3" json:"tx_index,omitempty"`
TxIndex uint64 `protobuf:"varint,2,opt,name=tx_index,json=txIndex,proto3" json:"tx_index,omitempty"`
// TraceConfig holds extra parameters to trace functions.
TraceConfig *TraceConfig `protobuf:"bytes,3,opt,name=trace_config,json=traceConfig,proto3" json:"trace_config,omitempty"`
}
@@ -1170,7 +1170,7 @@ func (m *QueryTraceTxRequest) GetMsg() *MsgEthereumTx {
return nil
}
func (m *QueryTraceTxRequest) GetTxIndex() uint32 {
func (m *QueryTraceTxRequest) GetTxIndex() uint64 {
if m != nil {
return m.TxIndex
}
@@ -1261,89 +1261,89 @@ func init() {
func init() { proto.RegisterFile("ethermint/evm/v1/query.proto", fileDescriptor_e15a877459347994) }
var fileDescriptor_e15a877459347994 = []byte{
// 1308 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0xcd, 0x6f, 0x13, 0x47,
0x14, 0xcf, 0x12, 0x63, 0x87, 0x67, 0x42, 0xd3, 0x21, 0x40, 0xd8, 0x06, 0x27, 0x0c, 0xe4, 0x0b,
0x52, 0x2f, 0x76, 0x2b, 0xa4, 0x22, 0x55, 0x85, 0x44, 0x94, 0x56, 0x40, 0x45, 0x4d, 0xd4, 0x43,
0x2f, 0xd6, 0x78, 0x3d, 0x5d, 0x5b, 0xd8, 0x3b, 0x66, 0x67, 0xec, 0x3a, 0xd0, 0xb4, 0x55, 0xa5,
0x22, 0x2a, 0x2e, 0x95, 0x7a, 0xaf, 0x90, 0xaa, 0x9e, 0xfb, 0x6f, 0x70, 0x44, 0xea, 0xa5, 0xa7,
0xaa, 0x82, 0x1e, 0xfa, 0x67, 0x54, 0xf3, 0xb1, 0xf6, 0xae, 0xd7, 0x1b, 0x87, 0x0a, 0xf5, 0x36,
0x1f, 0xef, 0xbd, 0xdf, 0xef, 0xbd, 0x79, 0x3b, 0xbf, 0x59, 0x58, 0xa4, 0xa2, 0x41, 0x83, 0x76,
0xd3, 0x17, 0x0e, 0xed, 0xb5, 0x9d, 0x5e, 0xc9, 0xb9, 0xdf, 0xa5, 0xc1, 0x6e, 0xb1, 0x13, 0x30,
0xc1, 0xd0, 0xdc, 0x60, 0xb7, 0x48, 0x7b, 0xed, 0x62, 0xaf, 0x64, 0xcf, 0x7b, 0xcc, 0x63, 0x6a,
0xd3, 0x91, 0x23, 0x6d, 0x67, 0x5f, 0x70, 0x19, 0x6f, 0x33, 0xee, 0xd4, 0x08, 0xa7, 0x3a, 0x80,
0xd3, 0x2b, 0xd5, 0xa8, 0x20, 0x25, 0xa7, 0x43, 0xbc, 0xa6, 0x4f, 0x44, 0x93, 0xf9, 0xc6, 0x76,
0xd1, 0x63, 0xcc, 0x6b, 0x51, 0x87, 0x74, 0x9a, 0x0e, 0xf1, 0x7d, 0x26, 0xd4, 0x26, 0x37, 0xbb,
0x76, 0x82, 0x8f, 0x04, 0xd6, 0x7b, 0xa7, 0x13, 0x7b, 0xa2, 0xaf, 0xb7, 0xf0, 0x7b, 0x70, 0xfc,
0x53, 0x09, 0x7b, 0xcd, 0x75, 0x59, 0xd7, 0x17, 0x15, 0x7a, 0xbf, 0x4b, 0xb9, 0x40, 0x0b, 0x90,
0x23, 0xf5, 0x7a, 0x40, 0x39, 0x5f, 0xb0, 0x96, 0xad, 0xf5, 0x23, 0x95, 0x70, 0x7a, 0x65, 0xe6,
0xf1, 0xd3, 0xa5, 0xa9, 0x7f, 0x9e, 0x2e, 0x4d, 0x61, 0x17, 0xe6, 0xe3, 0xae, 0xbc, 0xc3, 0x7c,
0x4e, 0xa5, 0x6f, 0x8d, 0xb4, 0x88, 0xef, 0xd2, 0xd0, 0xd7, 0x4c, 0xd1, 0x5b, 0x70, 0xc4, 0x65,
0x75, 0x5a, 0x6d, 0x10, 0xde, 0x58, 0x38, 0xa4, 0xf6, 0x66, 0xe4, 0xc2, 0x47, 0x84, 0x37, 0xd0,
0x3c, 0x1c, 0xf6, 0x99, 0x74, 0x9a, 0x5e, 0xb6, 0xd6, 0x33, 0x15, 0x3d, 0xc1, 0x1f, 0xc0, 0x69,
0x05, 0xb2, 0xad, 0xea, 0xf4, 0x1f, 0x58, 0x3e, 0xb2, 0xc0, 0x1e, 0x17, 0xc1, 0x90, 0x5d, 0x81,
0x63, 0xfa, 0x08, 0xaa, 0xf1, 0x48, 0xb3, 0x7a, 0xf5, 0x9a, 0x5e, 0x44, 0x36, 0xcc, 0x70, 0x09,
0x2a, 0xf9, 0x1d, 0x52, 0xfc, 0x06, 0x73, 0x19, 0x82, 0xe8, 0xa8, 0x55, 0xbf, 0xdb, 0xae, 0xd1,
0xc0, 0x64, 0x30, 0x6b, 0x56, 0x3f, 0x51, 0x8b, 0xf8, 0x26, 0x2c, 0x2a, 0x1e, 0x9f, 0x91, 0x56,
0xb3, 0x4e, 0x04, 0x0b, 0x46, 0x92, 0x39, 0x0b, 0x47, 0x5d, 0xe6, 0x8f, 0xf2, 0xc8, 0xcb, 0xb5,
0x6b, 0x89, 0xac, 0x9e, 0x58, 0x70, 0x26, 0x25, 0x9a, 0x49, 0x6c, 0x0d, 0xde, 0x08, 0x59, 0xc5,
0x23, 0x86, 0x64, 0x5f, 0x63, 0x6a, 0x61, 0x13, 0x6d, 0xe9, 0x73, 0x7e, 0x95, 0xe3, 0xb9, 0x64,
0x9a, 0x68, 0xe0, 0x3a, 0xa9, 0x89, 0xf0, 0x4d, 0x03, 0x76, 0x57, 0xb0, 0x80, 0x78, 0x93, 0xc1,
0xd0, 0x1c, 0x4c, 0xdf, 0xa3, 0xbb, 0xa6, 0xdf, 0xe4, 0x30, 0x02, 0xbf, 0x69, 0xe0, 0x07, 0xc1,
0x0c, 0xfc, 0x3c, 0x1c, 0xee, 0x91, 0x56, 0x37, 0x04, 0xd7, 0x13, 0x7c, 0x19, 0xe6, 0x4c, 0x2b,
0xd5, 0x5f, 0x29, 0xc9, 0x35, 0x78, 0x33, 0xe2, 0x67, 0x20, 0x10, 0x64, 0x64, 0xef, 0x2b, 0xaf,
0xa3, 0x15, 0x35, 0xc6, 0x0f, 0x00, 0x29, 0xc3, 0x9d, 0xfe, 0x2d, 0xe6, 0xf1, 0x10, 0x02, 0x41,
0x46, 0x7d, 0x31, 0x3a, 0xbe, 0x1a, 0xa3, 0x0f, 0x01, 0x86, 0x17, 0x84, 0xca, 0x2d, 0x5f, 0x5e,
0x2d, 0xea, 0xa6, 0x2d, 0xca, 0xdb, 0xa4, 0xa8, 0xaf, 0x23, 0x73, 0x9b, 0x14, 0xef, 0x0c, 0x4b,
0x55, 0x89, 0x78, 0x46, 0x48, 0xfe, 0x60, 0x99, 0xc2, 0x86, 0xe0, 0x86, 0xe7, 0x06, 0x64, 0x5a,
0xcc, 0x93, 0xd9, 0x4d, 0xaf, 0xe7, 0xcb, 0x27, 0x8a, 0xa3, 0x37, 0x5b, 0xf1, 0x16, 0xf3, 0x2a,
0xca, 0x04, 0xdd, 0x18, 0x43, 0x6a, 0x6d, 0x22, 0x29, 0x8d, 0x13, 0x65, 0x85, 0xf7, 0xe0, 0x84,
0xee, 0x8a, 0x16, 0x73, 0xef, 0xfd, 0xff, 0xa5, 0xf8, 0xc5, 0x82, 0x93, 0xa3, 0xf8, 0xa6, 0x1a,
0x57, 0x21, 0x27, 0xfa, 0xd5, 0x48, 0x41, 0xce, 0x26, 0x0b, 0xb2, 0x13, 0x10, 0x9f, 0x13, 0x57,
0x06, 0x95, 0xbe, 0x5b, 0x99, 0x67, 0x7f, 0x2e, 0x4d, 0x55, 0xb2, 0x42, 0xd5, 0xf5, 0xf5, 0x15,
0xe9, 0x52, 0x94, 0xe4, 0x56, 0x8b, 0xb1, 0x76, 0x58, 0xa5, 0x93, 0x90, 0x6d, 0xd0, 0xa6, 0xd7,
0x10, 0xaa, 0x4e, 0xd3, 0x15, 0x33, 0xc3, 0x0e, 0x9c, 0x4a, 0x78, 0x0c, 0x1b, 0xbe, 0x26, 0x17,
0x4c, 0x3b, 0xea, 0x09, 0x9e, 0x37, 0xfd, 0x78, 0x87, 0x04, 0xa4, 0x1d, 0x1e, 0x02, 0xbe, 0x6d,
0x1a, 0x25, 0x5c, 0x35, 0x21, 0x2e, 0x43, 0xb6, 0xa3, 0x56, 0x54, 0x8c, 0x7c, 0x79, 0x21, 0x59,
0x19, 0xed, 0x11, 0x16, 0x44, 0x5b, 0xe3, 0xb7, 0x0d, 0xab, 0xbb, 0x52, 0xd0, 0xdc, 0x6d, 0xd2,
0x6a, 0x45, 0xbf, 0x91, 0x3a, 0x11, 0x24, 0xfc, 0x46, 0xe4, 0x18, 0xbf, 0x0f, 0xc7, 0xae, 0x8b,
0x86, 0x36, 0x1b, 0x34, 0x05, 0x09, 0x3c, 0x1e, 0x5a, 0xc9, 0x31, 0x3a, 0x05, 0x39, 0x8f, 0xf0,
0xaa, 0x4b, 0x3a, 0xe6, 0x52, 0xcb, 0x7a, 0x84, 0x6f, 0x93, 0x0e, 0x5e, 0x83, 0xe3, 0xd7, 0xb9,
0x68, 0xb6, 0x89, 0xa0, 0x37, 0xc8, 0x90, 0xfc, 0x1c, 0x4c, 0x7b, 0x44, 0x87, 0xc8, 0x54, 0xe4,
0x10, 0xff, 0x3a, 0xf8, 0x1e, 0x02, 0xe2, 0xd2, 0x9d, 0x7e, 0x88, 0x56, 0x82, 0xe9, 0x36, 0xf7,
0x4c, 0x8e, 0x4b, 0xc9, 0x1c, 0x6f, 0x73, 0xef, 0xba, 0x5c, 0xa3, 0xdd, 0xf6, 0x4e, 0xbf, 0x22,
0x6d, 0xd1, 0x69, 0x98, 0x11, 0xfd, 0x6a, 0xd3, 0xaf, 0xd3, 0xbe, 0x62, 0x33, 0x5b, 0xc9, 0x89,
0xfe, 0xc7, 0x72, 0x8a, 0xae, 0xc2, 0x51, 0x21, 0xe3, 0x57, 0x5d, 0xe6, 0x7f, 0xd1, 0xf4, 0xd4,
0xfd, 0x9a, 0x2f, 0x9f, 0x19, 0xdb, 0x54, 0x2e, 0xdd, 0x56, 0x46, 0x95, 0xbc, 0x18, 0x4e, 0xf0,
0x05, 0x73, 0x85, 0x0d, 0x68, 0xa6, 0xd7, 0xae, 0xfc, 0xed, 0x31, 0x38, 0xac, 0x8c, 0xd1, 0xf7,
0x16, 0xe4, 0x8c, 0x64, 0xa0, 0x95, 0x24, 0xda, 0x98, 0x37, 0x81, 0xbd, 0x3a, 0xc9, 0x4c, 0x03,
0xe3, 0x8b, 0xdf, 0xfd, 0xfe, 0xf7, 0x4f, 0x87, 0x56, 0xd0, 0x39, 0x27, 0xf1, 0xec, 0x30, 0xb2,
0xe1, 0x3c, 0x34, 0x77, 0xe4, 0x1e, 0xfa, 0xd9, 0x82, 0xd9, 0x98, 0x32, 0xa3, 0x8b, 0x29, 0x30,
0xe3, 0x5e, 0x00, 0xf6, 0xe6, 0xc1, 0x8c, 0x0d, 0xb3, 0xb2, 0x62, 0xb6, 0x89, 0x2e, 0x24, 0x99,
0x85, 0x8f, 0x80, 0x04, 0xc1, 0xdf, 0x2c, 0x98, 0x1b, 0x15, 0x59, 0x54, 0x4c, 0x81, 0x4d, 0xd1,
0x76, 0xdb, 0x39, 0xb0, 0xbd, 0x61, 0x7a, 0x45, 0x31, 0x7d, 0x17, 0x95, 0x93, 0x4c, 0x7b, 0xa1,
0xcf, 0x90, 0x6c, 0xf4, 0xdd, 0xb0, 0x87, 0x1e, 0x59, 0x90, 0x33, 0x72, 0x9a, 0x7a, 0xb4, 0x71,
0xa5, 0x4e, 0x3d, 0xda, 0x11, 0x55, 0xc6, 0x9b, 0x8a, 0xd6, 0x2a, 0x3a, 0x9f, 0xa4, 0x65, 0xe4,
0x99, 0x47, 0x4a, 0xf7, 0xc4, 0x82, 0x9c, 0x11, 0xd6, 0x54, 0x22, 0x71, 0x15, 0x4f, 0x25, 0x32,
0xa2, 0xcf, 0xb8, 0xa4, 0x88, 0x5c, 0x44, 0x1b, 0x49, 0x22, 0x5c, 0x9b, 0x0e, 0x79, 0x38, 0x0f,
0xef, 0xd1, 0xdd, 0x3d, 0xf4, 0x00, 0x32, 0x52, 0x7f, 0x11, 0x4e, 0x6d, 0x99, 0x81, 0xa8, 0xdb,
0xe7, 0xf6, 0xb5, 0x31, 0x1c, 0x36, 0x14, 0x87, 0x73, 0xe8, 0xec, 0xb8, 0x6e, 0xaa, 0xc7, 0x2a,
0xf1, 0x0d, 0x64, 0xb5, 0xaa, 0xa2, 0xf3, 0x29, 0x91, 0x63, 0x8a, 0x6f, 0xaf, 0x4c, 0xb0, 0x32,
0x0c, 0xd6, 0x15, 0x03, 0x8c, 0x96, 0x9d, 0x31, 0x0f, 0x7c, 0x25, 0x52, 0xce, 0x43, 0x29, 0x91,
0xea, 0x28, 0x8e, 0x0c, 0xc4, 0x0c, 0xad, 0xa5, 0x1d, 0xf7, 0x88, 0xdc, 0xda, 0xeb, 0x93, 0x0d,
0x27, 0x7f, 0xf4, 0x35, 0x69, 0x1c, 0x63, 0xf3, 0xd8, 0x02, 0x18, 0x6a, 0x10, 0xda, 0x17, 0x25,
0x2a, 0x6c, 0xf6, 0xc6, 0x01, 0x2c, 0x0d, 0xa1, 0x15, 0x45, 0x68, 0x09, 0x9d, 0x49, 0x23, 0xa4,
0x14, 0x0e, 0x7d, 0x09, 0x59, 0x2d, 0x4a, 0xa9, 0x27, 0x13, 0xd3, 0xbe, 0xd4, 0x93, 0x89, 0x6b,
0x21, 0x5e, 0x56, 0xe8, 0x36, 0x5a, 0x48, 0xa2, 0x6b, 0xd5, 0x43, 0x7d, 0xc8, 0x19, 0x19, 0x43,
0xcb, 0xc9, 0x98, 0x71, 0x85, 0xb3, 0xd7, 0x26, 0xc9, 0x4c, 0x88, 0x8b, 0x15, 0xee, 0x22, 0xb2,
0x93, 0xb8, 0x54, 0x34, 0xaa, 0xae, 0x84, 0xfb, 0x1a, 0xf2, 0x11, 0x05, 0x3c, 0x00, 0xfa, 0x98,
0x9c, 0xc7, 0x48, 0x28, 0x5e, 0x55, 0xd8, 0xcb, 0xa8, 0x30, 0x06, 0xdb, 0x98, 0x57, 0x3d, 0xc2,
0xd1, 0x57, 0x90, 0x33, 0x5a, 0x95, 0x7a, 0x2b, 0xc4, 0x25, 0x37, 0xf5, 0x56, 0x18, 0x91, 0xbc,
0xfd, 0xb2, 0xd7, 0x22, 0x2b, 0xfa, 0x5b, 0x5b, 0xcf, 0x5e, 0x14, 0xac, 0xe7, 0x2f, 0x0a, 0xd6,
0x5f, 0x2f, 0x0a, 0xd6, 0x8f, 0x2f, 0x0b, 0x53, 0xcf, 0x5f, 0x16, 0xa6, 0xfe, 0x78, 0x59, 0x98,
0xfa, 0x7c, 0xdd, 0x6b, 0x8a, 0x46, 0xb7, 0x56, 0x74, 0x59, 0xdb, 0x11, 0x0d, 0x12, 0xf0, 0x26,
0x8f, 0xc4, 0xe9, 0xab, 0x48, 0x62, 0xb7, 0x43, 0x79, 0x2d, 0xab, 0xfe, 0x9d, 0xdf, 0xf9, 0x37,
0x00, 0x00, 0xff, 0xff, 0xbb, 0x7d, 0x12, 0xe6, 0x04, 0x10, 0x00, 0x00,
// 1307 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0xcf, 0x6f, 0x13, 0x47,
0x14, 0xce, 0x12, 0x63, 0x87, 0x67, 0xa0, 0xe9, 0x10, 0x20, 0x6c, 0x83, 0x13, 0x06, 0x92, 0x38,
0x90, 0x7a, 0xb1, 0x5b, 0x21, 0x15, 0xa9, 0x2a, 0x24, 0xa2, 0xb4, 0x02, 0x2a, 0x6a, 0xa2, 0x1e,
0x7a, 0xb1, 0xc6, 0xeb, 0xe9, 0xda, 0xc2, 0xde, 0x31, 0x3b, 0x63, 0xd7, 0x81, 0xa6, 0xad, 0x2a,
0x15, 0x51, 0x71, 0xa9, 0xd4, 0x7b, 0x85, 0x54, 0xf5, 0xdc, 0x7f, 0x83, 0x23, 0x52, 0x2f, 0x3d,
0x55, 0x15, 0xf4, 0xd0, 0x3f, 0xa3, 0x9a, 0x1f, 0x6b, 0xef, 0x7a, 0xbd, 0x38, 0x54, 0xa8, 0xb7,
0xf9, 0xf1, 0xde, 0xfb, 0xbe, 0xf7, 0xe6, 0xed, 0x7c, 0xb3, 0xb0, 0x44, 0x45, 0x93, 0x06, 0x9d,
0x96, 0x2f, 0x1c, 0xda, 0xef, 0x38, 0xfd, 0xb2, 0x73, 0xaf, 0x47, 0x83, 0xdd, 0x52, 0x37, 0x60,
0x82, 0xa1, 0xf9, 0xe1, 0x6e, 0x89, 0xf6, 0x3b, 0xa5, 0x7e, 0xd9, 0x5e, 0xf0, 0x98, 0xc7, 0xd4,
0xa6, 0x23, 0x47, 0xda, 0xce, 0x3e, 0xef, 0x32, 0xde, 0x61, 0xdc, 0xa9, 0x13, 0x4e, 0x75, 0x00,
0xa7, 0x5f, 0xae, 0x53, 0x41, 0xca, 0x4e, 0x97, 0x78, 0x2d, 0x9f, 0x88, 0x16, 0xf3, 0x8d, 0xed,
0x92, 0xc7, 0x98, 0xd7, 0xa6, 0x0e, 0xe9, 0xb6, 0x1c, 0xe2, 0xfb, 0x4c, 0xa8, 0x4d, 0x6e, 0x76,
0xed, 0x04, 0x1f, 0x09, 0xac, 0xf7, 0x4e, 0x25, 0xf6, 0xc4, 0x40, 0x6f, 0xe1, 0xf7, 0xe0, 0xd8,
0xa7, 0x12, 0xf6, 0xaa, 0xeb, 0xb2, 0x9e, 0x2f, 0xaa, 0xf4, 0x5e, 0x8f, 0x72, 0x81, 0x16, 0x21,
0x47, 0x1a, 0x8d, 0x80, 0x72, 0xbe, 0x68, 0xad, 0x58, 0xc5, 0x43, 0xd5, 0x70, 0x7a, 0x79, 0xee,
0xd1, 0x93, 0xe5, 0x99, 0x7f, 0x9e, 0x2c, 0xcf, 0x60, 0x17, 0x16, 0xe2, 0xae, 0xbc, 0xcb, 0x7c,
0x4e, 0xa5, 0x6f, 0x9d, 0xb4, 0x89, 0xef, 0xd2, 0xd0, 0xd7, 0x4c, 0xd1, 0x5b, 0x70, 0xc8, 0x65,
0x0d, 0x5a, 0x6b, 0x12, 0xde, 0x5c, 0x3c, 0xa0, 0xf6, 0xe6, 0xe4, 0xc2, 0x47, 0x84, 0x37, 0xd1,
0x02, 0x1c, 0xf4, 0x99, 0x74, 0x9a, 0x5d, 0xb1, 0x8a, 0x99, 0xaa, 0x9e, 0xe0, 0x0f, 0xe0, 0x94,
0x02, 0xd9, 0x56, 0x75, 0xfa, 0x0f, 0x2c, 0x1f, 0x5a, 0x60, 0x4f, 0x8a, 0x60, 0xc8, 0xae, 0xc2,
0x51, 0x7d, 0x04, 0xb5, 0x78, 0xa4, 0x23, 0x7a, 0xf5, 0xaa, 0x5e, 0x44, 0x36, 0xcc, 0x71, 0x09,
0x2a, 0xf9, 0x1d, 0x50, 0xfc, 0x86, 0x73, 0x19, 0x82, 0xe8, 0xa8, 0x35, 0xbf, 0xd7, 0xa9, 0xd3,
0xc0, 0x64, 0x70, 0xc4, 0xac, 0x7e, 0xa2, 0x16, 0xf1, 0x0d, 0x58, 0x52, 0x3c, 0x3e, 0x23, 0xed,
0x56, 0x83, 0x08, 0x16, 0x8c, 0x25, 0x73, 0x06, 0x0e, 0xbb, 0xcc, 0x1f, 0xe7, 0x91, 0x97, 0x6b,
0x57, 0x13, 0x59, 0x3d, 0xb6, 0xe0, 0x74, 0x4a, 0x34, 0x93, 0xd8, 0x3a, 0xbc, 0x11, 0xb2, 0x8a,
0x47, 0x0c, 0xc9, 0xbe, 0xc6, 0xd4, 0xc2, 0x26, 0xda, 0xd2, 0xe7, 0xfc, 0x2a, 0xc7, 0x73, 0xd1,
0x34, 0xd1, 0xd0, 0x75, 0x5a, 0x13, 0xe1, 0x1b, 0x06, 0xec, 0x8e, 0x60, 0x01, 0xf1, 0xa6, 0x83,
0xa1, 0x79, 0x98, 0xbd, 0x4b, 0x77, 0x4d, 0xbf, 0xc9, 0x61, 0x04, 0x7e, 0xd3, 0xc0, 0x0f, 0x83,
0x19, 0xf8, 0x05, 0x38, 0xd8, 0x27, 0xed, 0x5e, 0x08, 0xae, 0x27, 0xf8, 0x12, 0xcc, 0x9b, 0x56,
0x6a, 0xbc, 0x52, 0x92, 0xeb, 0xf0, 0x66, 0xc4, 0xcf, 0x40, 0x20, 0xc8, 0xc8, 0xde, 0x57, 0x5e,
0x87, 0xab, 0x6a, 0x8c, 0xef, 0x03, 0x52, 0x86, 0x3b, 0x83, 0x9b, 0xcc, 0xe3, 0x21, 0x04, 0x82,
0x8c, 0xfa, 0x62, 0x74, 0x7c, 0x35, 0x46, 0x1f, 0x02, 0x8c, 0x2e, 0x08, 0x95, 0x5b, 0xbe, 0xb2,
0x56, 0xd2, 0x4d, 0x5b, 0x92, 0xb7, 0x49, 0x49, 0x5f, 0x47, 0xe6, 0x36, 0x29, 0xdd, 0x1e, 0x95,
0xaa, 0x1a, 0xf1, 0x8c, 0x90, 0xfc, 0xc1, 0x32, 0x85, 0x0d, 0xc1, 0x0d, 0xcf, 0x0d, 0xc8, 0xb4,
0x99, 0x27, 0xb3, 0x9b, 0x2d, 0xe6, 0x2b, 0xc7, 0x4b, 0xe3, 0x37, 0x5b, 0xe9, 0x26, 0xf3, 0xaa,
0xca, 0x04, 0x5d, 0x9f, 0x40, 0x6a, 0x7d, 0x2a, 0x29, 0x8d, 0x13, 0x65, 0x85, 0xf7, 0xe0, 0xb8,
0xee, 0x8a, 0x36, 0x73, 0xef, 0xfe, 0xff, 0xa5, 0xf8, 0xc5, 0x82, 0x13, 0xe3, 0xf8, 0xa6, 0x1a,
0x57, 0x20, 0x27, 0x06, 0xb5, 0x48, 0x41, 0xce, 0x24, 0x0b, 0xb2, 0x13, 0x10, 0x9f, 0x13, 0x57,
0x06, 0x95, 0xbe, 0x5b, 0x99, 0xa7, 0x7f, 0x2e, 0xcf, 0x54, 0xb3, 0x42, 0xd5, 0xf5, 0xf5, 0x15,
0xe9, 0x62, 0x94, 0xe4, 0x56, 0x9b, 0xb1, 0x4e, 0x58, 0xa5, 0x13, 0x90, 0x6d, 0xd2, 0x96, 0xd7,
0x14, 0xaa, 0x4e, 0xb3, 0x55, 0x33, 0xc3, 0x0e, 0x9c, 0x4c, 0x78, 0x8c, 0x1a, 0xbe, 0x2e, 0x17,
0x4c, 0x3b, 0xea, 0x09, 0x5e, 0x30, 0xfd, 0x78, 0x9b, 0x04, 0xa4, 0x13, 0x1e, 0x02, 0xbe, 0x65,
0x1a, 0x25, 0x5c, 0x35, 0x21, 0x2e, 0x41, 0xb6, 0xab, 0x56, 0x54, 0x8c, 0x7c, 0x65, 0x31, 0x59,
0x19, 0xed, 0x11, 0x16, 0x44, 0x5b, 0xe3, 0xb7, 0x0d, 0xab, 0x3b, 0x52, 0xd0, 0xdc, 0x6d, 0xd2,
0x6e, 0x47, 0xbf, 0x91, 0x06, 0x11, 0x24, 0xfc, 0x46, 0xe4, 0x18, 0xbf, 0x0f, 0x47, 0xaf, 0x89,
0xa6, 0x36, 0x1b, 0x36, 0x05, 0x09, 0x3c, 0x1e, 0x5a, 0xc9, 0x31, 0x3a, 0x09, 0x39, 0x8f, 0xf0,
0x9a, 0x4b, 0xba, 0xe6, 0x52, 0xcb, 0x7a, 0x84, 0x6f, 0x93, 0x2e, 0x5e, 0x87, 0x63, 0xd7, 0xb8,
0x68, 0x75, 0x88, 0xa0, 0xd7, 0xc9, 0x88, 0xfc, 0x3c, 0xcc, 0x7a, 0x44, 0x87, 0xc8, 0x54, 0xe5,
0x10, 0xff, 0x3a, 0xfc, 0x1e, 0x02, 0xe2, 0xd2, 0x9d, 0x41, 0x88, 0x56, 0x86, 0xd9, 0x0e, 0xf7,
0x4c, 0x8e, 0xcb, 0xc9, 0x1c, 0x6f, 0x71, 0xef, 0x9a, 0x5c, 0xa3, 0xbd, 0xce, 0xce, 0xa0, 0x2a,
0x6d, 0xd1, 0x29, 0x98, 0x13, 0x83, 0x5a, 0xcb, 0x6f, 0xd0, 0x81, 0x61, 0x93, 0x13, 0x83, 0x8f,
0xe5, 0x14, 0x5d, 0x81, 0xc3, 0x42, 0xc6, 0xaf, 0xb9, 0xcc, 0xff, 0xa2, 0xe5, 0xa9, 0xfb, 0x35,
0x5f, 0x39, 0x3d, 0xb1, 0xa9, 0x5c, 0xba, 0xad, 0x8c, 0xaa, 0x79, 0x31, 0x9a, 0xe0, 0xf3, 0xe6,
0x0a, 0x1b, 0xd2, 0x4c, 0xaf, 0x5d, 0xe5, 0xdb, 0xa3, 0x70, 0x50, 0x19, 0xa3, 0xef, 0x2d, 0xc8,
0x19, 0xc9, 0x40, 0xab, 0x49, 0xb4, 0x09, 0x6f, 0x02, 0x7b, 0x6d, 0x9a, 0x99, 0x06, 0xc6, 0x17,
0xbe, 0xfb, 0xfd, 0xef, 0x9f, 0x0e, 0xac, 0xa2, 0xb3, 0x4e, 0xe2, 0xd9, 0x61, 0x64, 0xc3, 0x79,
0x60, 0xee, 0xc8, 0x3d, 0xf4, 0xb3, 0x05, 0x47, 0x62, 0xca, 0x8c, 0x2e, 0xa4, 0xc0, 0x4c, 0x7a,
0x01, 0xd8, 0x9b, 0xfb, 0x33, 0x36, 0xcc, 0x2a, 0x8a, 0xd9, 0x26, 0x3a, 0x9f, 0x64, 0x16, 0x3e,
0x02, 0x12, 0x04, 0x7f, 0xb3, 0x60, 0x7e, 0x5c, 0x64, 0x51, 0x29, 0x05, 0x36, 0x45, 0xdb, 0x6d,
0x67, 0xdf, 0xf6, 0x86, 0xe9, 0x65, 0xc5, 0xf4, 0x5d, 0x54, 0x49, 0x32, 0xed, 0x87, 0x3e, 0x23,
0xb2, 0xd1, 0x77, 0xc3, 0x1e, 0x7a, 0x68, 0x41, 0xce, 0xc8, 0x69, 0xea, 0xd1, 0xc6, 0x95, 0x3a,
0xf5, 0x68, 0xc7, 0x54, 0x19, 0x6f, 0x2a, 0x5a, 0x6b, 0xe8, 0x5c, 0x92, 0x96, 0x91, 0x67, 0x1e,
0x29, 0xdd, 0x63, 0x0b, 0x72, 0x46, 0x58, 0x53, 0x89, 0xc4, 0x55, 0x3c, 0x95, 0xc8, 0x98, 0x3e,
0xe3, 0xb2, 0x22, 0x72, 0x01, 0x6d, 0x24, 0x89, 0x70, 0x6d, 0x3a, 0xe2, 0xe1, 0x3c, 0xb8, 0x4b,
0x77, 0xf7, 0xd0, 0x7d, 0xc8, 0x48, 0xfd, 0x45, 0x38, 0xb5, 0x65, 0x86, 0xa2, 0x6e, 0x9f, 0x7d,
0xa9, 0x8d, 0xe1, 0xb0, 0xa1, 0x38, 0x9c, 0x45, 0x67, 0x26, 0x75, 0x53, 0x23, 0x56, 0x89, 0x6f,
0x20, 0xab, 0x55, 0x15, 0x9d, 0x4b, 0x89, 0x1c, 0x53, 0x7c, 0x7b, 0x75, 0x8a, 0x95, 0x61, 0x50,
0x54, 0x0c, 0x30, 0x5a, 0x71, 0x26, 0x3c, 0xf0, 0x95, 0x48, 0x39, 0x0f, 0xa4, 0x44, 0xaa, 0xa3,
0x38, 0x34, 0x14, 0x33, 0xb4, 0x9e, 0x76, 0xdc, 0x63, 0x72, 0x6b, 0x17, 0xa7, 0x1b, 0x4e, 0xff,
0xe8, 0xeb, 0xd2, 0x38, 0xc6, 0xe6, 0x91, 0x05, 0x30, 0xd2, 0x20, 0xf4, 0x52, 0x94, 0xa8, 0xb0,
0xd9, 0x1b, 0xfb, 0xb0, 0x34, 0x84, 0x56, 0x15, 0xa1, 0x65, 0x74, 0x3a, 0x8d, 0x90, 0x52, 0x38,
0xf4, 0x25, 0x64, 0xb5, 0x28, 0xa5, 0x9e, 0x4c, 0x4c, 0xfb, 0x52, 0x4f, 0x26, 0xae, 0x85, 0x78,
0x45, 0xa1, 0xdb, 0x68, 0x31, 0x89, 0xae, 0x55, 0x0f, 0x0d, 0x20, 0x67, 0x64, 0x0c, 0xad, 0x24,
0x63, 0xc6, 0x15, 0xce, 0x5e, 0x9f, 0x26, 0x33, 0x21, 0x2e, 0x56, 0xb8, 0x4b, 0xc8, 0x4e, 0xe2,
0x52, 0xd1, 0xac, 0xb9, 0x12, 0xee, 0x6b, 0xc8, 0x47, 0x14, 0x70, 0x1f, 0xe8, 0x13, 0x72, 0x9e,
0x20, 0xa1, 0x78, 0x4d, 0x61, 0xaf, 0xa0, 0xc2, 0x04, 0x6c, 0x63, 0x5e, 0xf3, 0x08, 0x47, 0x5f,
0x41, 0xce, 0x68, 0x55, 0xea, 0xad, 0x10, 0x97, 0xdc, 0xd4, 0x5b, 0x61, 0x4c, 0xf2, 0x5e, 0x96,
0xbd, 0x16, 0x59, 0x31, 0xd8, 0xda, 0x7a, 0xfa, 0xbc, 0x60, 0x3d, 0x7b, 0x5e, 0xb0, 0xfe, 0x7a,
0x5e, 0xb0, 0x7e, 0x7c, 0x51, 0x98, 0x79, 0xf6, 0xa2, 0x30, 0xf3, 0xc7, 0x8b, 0xc2, 0xcc, 0xe7,
0x45, 0xaf, 0x25, 0x9a, 0xbd, 0x7a, 0xc9, 0x65, 0x1d, 0x47, 0x34, 0x49, 0xc0, 0x5b, 0x3c, 0x12,
0x67, 0xa0, 0x22, 0x89, 0xdd, 0x2e, 0xe5, 0xf5, 0xac, 0xfa, 0x77, 0x7e, 0xe7, 0xdf, 0x00, 0x00,
0x00, 0xff, 0xff, 0x87, 0x0b, 0xdf, 0x04, 0x04, 0x10, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@@ -5387,7 +5387,7 @@ func (m *QueryTraceTxRequest) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
m.TxIndex |= uint32(b&0x7F) << shift
m.TxIndex |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
+12
View File
@@ -40,6 +40,18 @@ func NewTracer(tracer string, msg core.Message, cfg *params.ChainConfig, height
}
}
// TxTraceTask represents a single transaction trace task when an entire block
// is being traced.
type TxTraceTask struct {
Index int // Transaction offset in the block
}
// TxTraceResult is the result of a single transaction trace during a block trace.
type TxTraceResult struct {
Result interface{} `json:"result,omitempty"` // Trace results produced by the tracer
Error string `json:"error,omitempty"` // Trace failure produced by the tracer
}
// ExecutionResult groups all structured logs emitted by the EVM
// while replaying a transaction in debug mode as well as transaction
// execution status, the amount of gas used and the return value