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 10:46:01 +02:00 committed by GitHub
parent ec7d8a37fd
commit 3f1eeb30b6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 346 additions and 151 deletions

View File

@ -50,6 +50,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
* (evm) [tharsis#469](https://github.com/tharsis/ethermint/pull/469) Support [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) * (evm) [tharsis#469](https://github.com/tharsis/ethermint/pull/469) Support [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559)
* (evm) [tharsis#417](https://github.com/tharsis/ethermint/pull/417) Add `EvmHooks` for tx post-processing * (evm) [tharsis#417](https://github.com/tharsis/ethermint/pull/417) Add `EvmHooks` for tx post-processing
* (rpc) [tharsis#506](https://github.com/tharsis/ethermint/pull/506) Support for `debug_traceTransaction` RPC endpoint * (rpc) [tharsis#506](https://github.com/tharsis/ethermint/pull/506) Support for `debug_traceTransaction` RPC endpoint
* (rpc) [tharsis#555](https://github.com/tharsis/ethermint/pull/555) Support for `debug_traceBlockByNumber` RPC endpoint
### Bug Fixes ### Bug Fixes

View File

@ -124,7 +124,7 @@ Check the JSON-RPC methods supported on Ethermint. {synopsis}
| `debug_startGoTrace` | Debug | ✔ | | | | `debug_startGoTrace` | Debug | ✔ | | |
| `debug_stopCPUProfile` | Debug | ✔ | | | | `debug_stopCPUProfile` | Debug | ✔ | | |
| `debug_stopGoTrace` | Debug | ✔ | | | | `debug_stopGoTrace` | Debug | ✔ | | |
| `debug_traceBlock` | Debug | | | | | `debug_traceBlock`(#debug-traceblock) | Debug | | | |
| `debug_traceBlockByNumber` | Debug | | | | | `debug_traceBlockByNumber` | Debug | | | |
| `debug_traceBlockByHash` | Debug | | | | | `debug_traceBlockByHash` | Debug | | | |
| `debug_traceBlockFromFile` | Debug | | | | | `debug_traceBlockFromFile` | Debug | | | |
@ -1007,6 +1007,22 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"debug_traceTransaction","params"
["68410", "51470"] ["68410", "51470"]
``` ```
### `debug_traceBlockByNumber`
The `traceBlockByNumber` endpoint accepts a block number and will replay the block that is already present in the database.
#### Parameters
- Trace Config
```json
// Request
curl -X POST --data '{"jsonrpc":"2.0","method":"debug_traceBlockByNumber","params":["0xe", {"tracer": "{data: [], fault: function(log) {}, step: function(log) { if(log.op.toString() == \"CALL\") this.data.push(log.stack.peek(0)); }, result: function() { return this.data; }}"}],"id":1}' -H "Content-Type: application/json" http://localhost:8545
//Result
{"jsonrpc":"2.0","id":1,"result":[{"result":["68410", "51470"]}]}
```
## Miner Methods ## Miner Methods

View File

@ -847,7 +847,7 @@ QueryTraceTxRequest defines TraceTx request
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| `msg` | [MsgEthereumTx](#ethermint.evm.v1.MsgEthereumTx) | | msgEthereumTx for the requested transaction | | `msg` | [MsgEthereumTx](#ethermint.evm.v1.MsgEthereumTx) | | msgEthereumTx for the requested transaction |
| `tx_index` | [uint32](#uint32) | | transaction index | | `tx_index` | [uint64](#uint64) | | transaction index |
| `trace_config` | [TraceConfig](#ethermint.evm.v1.TraceConfig) | | TraceConfig holds extra parameters to trace functions. | | `trace_config` | [TraceConfig](#ethermint.evm.v1.TraceConfig) | | TraceConfig holds extra parameters to trace functions. |

View File

@ -41,6 +41,7 @@ type Backend interface {
BlockNumber() (hexutil.Uint64, error) BlockNumber() (hexutil.Uint64, error)
GetBlockByNumber(blockNum types.BlockNumber, fullTx bool) (map[string]interface{}, error) GetBlockByNumber(blockNum types.BlockNumber, fullTx bool) (map[string]interface{}, error)
GetBlockByHash(hash common.Hash, fullTx bool) (map[string]interface{}, error) GetBlockByHash(hash common.Hash, fullTx bool) (map[string]interface{}, error)
GetTendermintBlockByNumber(blockNum types.BlockNumber) (*tmrpctypes.ResultBlock, error)
HeaderByNumber(blockNum types.BlockNumber) (*ethtypes.Header, error) HeaderByNumber(blockNum types.BlockNumber) (*ethtypes.Header, error)
HeaderByHash(blockHash common.Hash) (*ethtypes.Header, error) HeaderByHash(blockHash common.Hash) (*ethtypes.Header, error)
PendingTransactions() ([]*sdk.Tx, error) PendingTransactions() ([]*sdk.Tx, error)
@ -116,6 +117,38 @@ func (e *EVMBackend) BlockNumber() (hexutil.Uint64, error) {
// GetBlockByNumber returns the block identified by number. // GetBlockByNumber returns the block identified by number.
func (e *EVMBackend) GetBlockByNumber(blockNum types.BlockNumber, fullTx bool) (map[string]interface{}, error) { func (e *EVMBackend) GetBlockByNumber(blockNum types.BlockNumber, fullTx bool) (map[string]interface{}, error) {
resBlock, err := e.GetTendermintBlockByNumber(blockNum)
if err != nil {
return nil, err
}
res, err := e.EthBlockFromTendermint(resBlock.Block, fullTx)
if err != nil {
e.logger.Debug("EthBlockFromTendermint failed", "height", blockNum, "error", err.Error())
return nil, err
}
return res, nil
}
// GetBlockByHash returns the block identified by hash.
func (e *EVMBackend) GetBlockByHash(hash common.Hash, fullTx bool) (map[string]interface{}, error) {
resBlock, err := e.clientCtx.Client.BlockByHash(e.ctx, hash.Bytes())
if err != nil {
e.logger.Debug("BlockByHash block not found", "hash", hash.Hex(), "error", err.Error())
return nil, err
}
if resBlock.Block == nil {
e.logger.Debug("BlockByHash block not found", "hash", hash.Hex())
return nil, nil
}
return e.EthBlockFromTendermint(resBlock.Block, fullTx)
}
// GetTendermintBlockByNumber returns a Tendermint format block by block number
func (e *EVMBackend) GetTendermintBlockByNumber(blockNum types.BlockNumber) (*tmrpctypes.ResultBlock, error) {
height := blockNum.Int64() height := blockNum.Int64()
currentBlockNumber, _ := e.BlockNumber() currentBlockNumber, _ := e.BlockNumber()
@ -152,29 +185,7 @@ func (e *EVMBackend) GetBlockByNumber(blockNum types.BlockNumber, fullTx bool) (
e.logger.Debug("GetBlockByNumber block not found", "height", height) e.logger.Debug("GetBlockByNumber block not found", "height", height)
return nil, nil return nil, nil
} }
return resBlock, nil
res, err := e.EthBlockFromTendermint(resBlock.Block, fullTx)
if err != nil {
e.logger.Debug("EthBlockFromTendermint failed", "height", height, "error", err.Error())
}
return res, err
}
// GetBlockByHash returns the block identified by hash.
func (e *EVMBackend) GetBlockByHash(hash common.Hash, fullTx bool) (map[string]interface{}, error) {
resBlock, err := e.clientCtx.Client.BlockByHash(e.ctx, hash.Bytes())
if err != nil {
e.logger.Debug("BlockByHash block not found", "hash", hash.Hex(), "error", err.Error())
return nil, err
}
if resBlock.Block == nil {
e.logger.Debug("BlockByHash block not found", "hash", hash.Hex())
return nil, nil
}
return e.EthBlockFromTendermint(resBlock.Block, fullTx)
} }
// EthBlockFromTendermint returns a JSON-RPC compatible Ethereum block from a given Tendermint block and its block result. // EthBlockFromTendermint returns a JSON-RPC compatible Ethereum block from a given Tendermint block and its block result.

View File

@ -13,6 +13,8 @@ import (
"sync" "sync"
"time" "time"
"github.com/tendermint/tendermint/types"
evmtypes "github.com/tharsis/ethermint/x/evm/types" evmtypes "github.com/tharsis/ethermint/x/evm/types"
"github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client"
@ -89,7 +91,7 @@ func (a *API) TraceTransaction(hash common.Hash, config *evmtypes.TraceConfig) (
traceTxRequest := evmtypes.QueryTraceTxRequest{ traceTxRequest := evmtypes.QueryTraceTxRequest{
Msg: ethMessage, Msg: ethMessage,
TxIndex: transaction.Index, TxIndex: uint64(transaction.Index),
} }
if config != nil { if config != nil {
@ -112,6 +114,102 @@ func (a *API) TraceTransaction(hash common.Hash, config *evmtypes.TraceConfig) (
return decodedResult, nil return decodedResult, nil
} }
// TraceBlockByNumber returns the structured logs created during the execution of
// EVM and returns them as a JSON object.
func (a *API) TraceBlockByNumber(height rpctypes.BlockNumber, config *evmtypes.TraceConfig) ([]*evmtypes.TxTraceResult, error) {
a.logger.Debug("debug_traceBlockByNumber", "height", height)
if height == 0 {
return nil, errors.New("genesis is not traceable")
}
// Get Tendermint Block
resBlock, err := a.backend.GetTendermintBlockByNumber(height)
if err != nil {
return nil, err
}
return a.traceBlock(height, config, resBlock.Block.Txs)
}
// traceBlock configures a new tracer according to the provided configuration, and
// executes all the transactions contained within. The return value will be one item
// per transaction, dependent on the requested tracer.
func (a API) traceBlock(height rpctypes.BlockNumber, config *evmtypes.TraceConfig, txs types.Txs) ([]*evmtypes.TxTraceResult, error) {
txsLength := len(txs)
if txsLength == 0 {
// If there are no transactions return empty array
return []*evmtypes.TxTraceResult{}, nil
}
var (
results = make([]*evmtypes.TxTraceResult, txsLength)
wg = new(sync.WaitGroup)
jobs = make(chan *evmtypes.TxTraceTask, txsLength)
)
threads := runtime.NumCPU()
if threads > txsLength {
threads = txsLength
}
ctxWithHeight := rpctypes.ContextWithHeight(int64(height))
wg.Add(threads)
for th := 0; th < threads; th++ {
go func() {
defer wg.Done()
txDecoder := a.clientCtx.TxConfig.TxDecoder()
// Fetch and execute the next transaction trace tasks
for task := range jobs {
tx, err := txDecoder(txs[task.Index])
if err != nil {
a.logger.Error("failed to decode transaction", "hash", txs[task.Index].Hash(), "error", err.Error())
continue
}
messages := tx.GetMsgs()
if len(messages) == 0 {
continue
}
ethMessage, ok := messages[0].(*evmtypes.MsgEthereumTx)
if !ok {
// Just considers Ethereum transactions
continue
}
traceTxRequest := &evmtypes.QueryTraceTxRequest{
Msg: ethMessage,
TxIndex: uint64(task.Index),
TraceConfig: config,
}
res, err := a.queryClient.TraceTx(ctxWithHeight, traceTxRequest)
if err != nil {
results[task.Index] = &evmtypes.TxTraceResult{Error: err.Error()}
continue
}
// Response format is unknown due to custom tracer config param
// More information can be found here https://geth.ethereum.org/docs/dapp/tracing-filtered
var decodedResult interface{}
if err := json.Unmarshal(res.Data, &decodedResult); err != nil {
results[task.Index] = &evmtypes.TxTraceResult{Error: err.Error()}
continue
}
results[task.Index] = &evmtypes.TxTraceResult{Result: decodedResult}
}
}()
}
for i := range txs {
jobs <- &evmtypes.TxTraceTask{Index: i}
}
close(jobs)
wg.Wait()
return results, nil
}
// BlockProfile turns on goroutine profiling for nsec seconds and writes profile data to // BlockProfile turns on goroutine profiling for nsec seconds and writes profile data to
// file. It uses a profile rate of 1 for most accurate information. If a different rate is // file. It uses a profile rate of 1 for most accurate information. If a different rate is
// desired, set the rate and write the profile manually. // desired, set the rate and write the profile manually.

12
go.mod
View File

@ -34,7 +34,7 @@ require (
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 // indirect golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 // indirect
golang.org/x/net v0.0.0-20210903162142-ad29c8ab022f // indirect golang.org/x/net v0.0.0-20210903162142-ad29c8ab022f // indirect
golang.org/x/sys v0.0.0-20210903071746-97244b99971b // indirect golang.org/x/sys v0.0.0-20210903071746-97244b99971b // indirect
google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83 google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af
google.golang.org/grpc v1.40.0 google.golang.org/grpc v1.40.0
gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v2 v2.4.0
) )
@ -44,9 +44,13 @@ require (
github.com/99designs/keyring v1.1.6 // indirect github.com/99designs/keyring v1.1.6 // indirect
github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect
github.com/DataDog/zstd v1.4.8 // indirect github.com/DataDog/zstd v1.4.8 // indirect
github.com/Masterminds/goutils v1.1.1 // indirect
github.com/Masterminds/semver v1.5.0 // indirect
github.com/Masterminds/sprig v2.22.0+incompatible // indirect
github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 // indirect github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 // indirect
github.com/VictoriaMetrics/fastcache v1.5.7 // indirect github.com/VictoriaMetrics/fastcache v1.5.7 // indirect
github.com/Workiva/go-datastructures v1.0.52 // indirect github.com/Workiva/go-datastructures v1.0.52 // indirect
github.com/aokoli/goutils v1.1.1 // indirect
github.com/armon/go-metrics v0.3.9 // indirect github.com/armon/go-metrics v0.3.9 // indirect
github.com/beorn7/perks v1.0.1 // indirect github.com/beorn7/perks v1.0.1 // indirect
github.com/bgentry/speakeasy v0.1.0 // indirect github.com/bgentry/speakeasy v0.1.0 // indirect
@ -68,6 +72,7 @@ require (
github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b // indirect github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b // indirect
github.com/edsrzf/mmap-go v1.0.0 // indirect github.com/edsrzf/mmap-go v1.0.0 // indirect
github.com/enigmampc/btcutil v1.0.3-0.20200723161021-e2fb6adb2a25 // indirect github.com/enigmampc/btcutil v1.0.3-0.20200723161021-e2fb6adb2a25 // indirect
github.com/envoyproxy/protoc-gen-validate v0.6.1 // indirect
github.com/felixge/httpsnoop v1.0.1 // indirect github.com/felixge/httpsnoop v1.0.1 // indirect
github.com/fsnotify/fsnotify v1.4.9 // indirect github.com/fsnotify/fsnotify v1.4.9 // indirect
github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff // indirect github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff // indirect
@ -92,7 +97,9 @@ require (
github.com/hdevalence/ed25519consensus v0.0.0-20210204194344-59a8610d2b87 // indirect github.com/hdevalence/ed25519consensus v0.0.0-20210204194344-59a8610d2b87 // indirect
github.com/holiman/bloomfilter/v2 v2.0.3 // indirect github.com/holiman/bloomfilter/v2 v2.0.3 // indirect
github.com/holiman/uint256 v1.1.1 // indirect github.com/holiman/uint256 v1.1.1 // indirect
github.com/huandu/xstrings v1.3.2 // indirect
github.com/huin/goupnp v1.0.1-0.20210310174557-0ca763054c88 // indirect github.com/huin/goupnp v1.0.1-0.20210310174557-0ca763054c88 // indirect
github.com/imdario/mergo v0.3.12 // indirect
github.com/inconshreveable/mousetrap v1.0.0 // indirect github.com/inconshreveable/mousetrap v1.0.0 // indirect
github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458 // indirect github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458 // indirect
github.com/jmhodges/levigo v1.0.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect
@ -105,8 +112,10 @@ require (
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643 // indirect github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643 // indirect
github.com/minio/highwayhash v1.0.1 // indirect github.com/minio/highwayhash v1.0.1 // indirect
github.com/mitchellh/copystructure v1.2.0 // indirect
github.com/mitchellh/mapstructure v1.4.1 // indirect github.com/mitchellh/mapstructure v1.4.1 // indirect
github.com/mtibben/percent v0.2.1 // indirect github.com/mtibben/percent v0.2.1 // indirect
github.com/mwitkow/go-proto-validators v0.3.2 // indirect
github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect
github.com/pelletier/go-toml v1.9.3 // indirect github.com/pelletier/go-toml v1.9.3 // indirect
github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 // indirect github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 // indirect
@ -116,6 +125,7 @@ require (
github.com/prometheus/common v0.29.0 // indirect github.com/prometheus/common v0.29.0 // indirect
github.com/prometheus/procfs v0.6.0 // indirect github.com/prometheus/procfs v0.6.0 // indirect
github.com/prometheus/tsdb v0.7.1 // indirect github.com/prometheus/tsdb v0.7.1 // indirect
github.com/pseudomuto/protoc-gen-doc v1.5.0 // indirect
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
github.com/rjeczalik/notify v0.9.1 // indirect github.com/rjeczalik/notify v0.9.1 // indirect
github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa // indirect github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa // indirect

46
go.sum
View File

@ -71,6 +71,14 @@ github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t
github.com/DataDog/zstd v1.4.8 h1:Rpmta4xZ/MgZnriKNd24iZMhGpP5dvUcs/uqfBapKZY= github.com/DataDog/zstd v1.4.8 h1:Rpmta4xZ/MgZnriKNd24iZMhGpP5dvUcs/uqfBapKZY=
github.com/DataDog/zstd v1.4.8/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/DataDog/zstd v1.4.8/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw=
github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=
github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=
github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
github.com/Masterminds/sprig v2.15.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o=
github.com/Masterminds/sprig v2.22.0+incompatible h1:z4yfnGrZ7netVz+0EDJ0Wi+5VZCSYp4Z0m2dk6cEM60=
github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o=
github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA=
github.com/Microsoft/go-winio v0.5.0 h1:Elr9Wn+sGKPlkaBvwu4mTrxtmOp3F3yV9qhaHbXGjwU= github.com/Microsoft/go-winio v0.5.0 h1:Elr9Wn+sGKPlkaBvwu4mTrxtmOp3F3yV9qhaHbXGjwU=
github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84=
@ -105,6 +113,9 @@ github.com/allegro/bigcache v1.2.1 h1:hg1sY1raCwic3Vnsvje6TT7/pnZba83LeFck5NrFKS
github.com/allegro/bigcache v1.2.1/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= github.com/allegro/bigcache v1.2.1/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM=
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
github.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ=
github.com/aokoli/goutils v1.1.1 h1:/hA+Ywo3AxoDZY5ZMnkiEkUvkK4BPp927ax110KCqqg=
github.com/aokoli/goutils v1.1.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ=
github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0= github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0=
github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
@ -243,6 +254,7 @@ github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2
github.com/danieljoos/wincred v1.0.2 h1:zf4bhty2iLuwgjgpraD2E9UbvO+fe54XXGJbOwe23fU= github.com/danieljoos/wincred v1.0.2 h1:zf4bhty2iLuwgjgpraD2E9UbvO+fe54XXGJbOwe23fU=
github.com/danieljoos/wincred v1.0.2/go.mod h1:SnuYRW9lp1oJrZX/dXJqr0cPK5gYXqx3EJbmjhLdK9U= github.com/danieljoos/wincred v1.0.2/go.mod h1:SnuYRW9lp1oJrZX/dXJqr0cPK5gYXqx3EJbmjhLdK9U=
github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg=
github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
@ -290,6 +302,9 @@ github.com/enigmampc/btcutil v1.0.3-0.20200723161021-e2fb6adb2a25 h1:2vLKys4RBU4
github.com/enigmampc/btcutil v1.0.3-0.20200723161021-e2fb6adb2a25/go.mod h1:hTr8+TLQmkUkgcuh3mcr5fjrT9c64ZzsBCdCEC6UppY= github.com/enigmampc/btcutil v1.0.3-0.20200723161021-e2fb6adb2a25/go.mod h1:hTr8+TLQmkUkgcuh3mcr5fjrT9c64ZzsBCdCEC6UppY=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/envoyproxy/protoc-gen-validate v0.3.0-java/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/envoyproxy/protoc-gen-validate v0.6.1 h1:4CF52PCseTFt4bE+Yk3dIpdVi7XWuPVMhPtm4FaIJPM=
github.com/envoyproxy/protoc-gen-validate v0.6.1/go.mod h1:txg5va2Qkip90uYoSKH+nkAAmXrb2j3iq4FLwdrCbXQ=
github.com/ethereum/go-ethereum v1.9.25/go.mod h1:vMkFiYLHI4tgPw4k2j4MHKoovchFE8plZ0M9VMk4/oM= github.com/ethereum/go-ethereum v1.9.25/go.mod h1:vMkFiYLHI4tgPw4k2j4MHKoovchFE8plZ0M9VMk4/oM=
github.com/ethereum/go-ethereum v1.10.1/go.mod h1:E5e/zvdfUVr91JZ0AwjyuJM3x+no51zZJRz61orLLSk= github.com/ethereum/go-ethereum v1.10.1/go.mod h1:E5e/zvdfUVr91JZ0AwjyuJM3x+no51zZJRz61orLLSk=
github.com/ethereum/go-ethereum v1.10.3 h1:SEYOYARvbWnoDl1hOSks3ZJQpRiiRJe8ubaQGJQwq0s= github.com/ethereum/go-ethereum v1.10.3 h1:SEYOYARvbWnoDl1hOSks3ZJQpRiiRJe8ubaQGJQwq0s=
@ -449,6 +464,7 @@ github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLe
github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/protobuf v3.14.0+incompatible/go.mod h1:lUQ9D1ePzbH2PrIS7ob/bjm9HXyH5WHB0Akwh7URreM= github.com/google/protobuf v3.14.0+incompatible/go.mod h1:lUQ9D1ePzbH2PrIS7ob/bjm9HXyH5WHB0Akwh7URreM=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/google/uuid v0.0.0-20161128191214-064e2069ce9c/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@ -537,14 +553,21 @@ github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iU
github.com/holiman/uint256 v1.1.1 h1:4JywC80b+/hSfljFlEBLHrrh+CIONLDz9NuFl0af4Mw= github.com/holiman/uint256 v1.1.1 h1:4JywC80b+/hSfljFlEBLHrrh+CIONLDz9NuFl0af4Mw=
github.com/holiman/uint256 v1.1.1/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= github.com/holiman/uint256 v1.1.1/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo=
github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw=
github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg=
github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc= github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc=
github.com/huin/goupnp v1.0.1-0.20200620063722-49508fba0031/go.mod h1:nNs7wvRfN1eKaMknBydLNQU6146XQim8t4h+q90biWo= github.com/huin/goupnp v1.0.1-0.20200620063722-49508fba0031/go.mod h1:nNs7wvRfN1eKaMknBydLNQU6146XQim8t4h+q90biWo=
github.com/huin/goupnp v1.0.1-0.20210310174557-0ca763054c88 h1:bcAj8KroPf552TScjFPIakjH2/tdIrIH8F+cc4v4SRo= github.com/huin/goupnp v1.0.1-0.20210310174557-0ca763054c88 h1:bcAj8KroPf552TScjFPIakjH2/tdIrIH8F+cc4v4SRo=
github.com/huin/goupnp v1.0.1-0.20210310174557-0ca763054c88/go.mod h1:nNs7wvRfN1eKaMknBydLNQU6146XQim8t4h+q90biWo= github.com/huin/goupnp v1.0.1-0.20210310174557-0ca763054c88/go.mod h1:nNs7wvRfN1eKaMknBydLNQU6146XQim8t4h+q90biWo=
github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o=
github.com/iancoleman/strcase v0.0.0-20180726023541-3605ed457bf7/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE=
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/imdario/mergo v0.3.4/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU=
github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
github.com/improbable-eng/grpc-web v0.14.0/go.mod h1:6hRR09jOEG81ADP5wCQju1z71g6OL4eEvELdran/3cs= github.com/improbable-eng/grpc-web v0.14.0/go.mod h1:6hRR09jOEG81ADP5wCQju1z71g6OL4eEvELdran/3cs=
github.com/improbable-eng/grpc-web v0.14.1 h1:NrN4PY71A6tAz2sKDvC5JCauENWp0ykG8Oq1H3cpFvw= github.com/improbable-eng/grpc-web v0.14.1 h1:NrN4PY71A6tAz2sKDvC5JCauENWp0ykG8Oq1H3cpFvw=
github.com/improbable-eng/grpc-web v0.14.1/go.mod h1:zEjGHa8DAlkoOXmswrNvhUGEYQA9UI7DhrGeHR1DMGU= github.com/improbable-eng/grpc-web v0.14.1/go.mod h1:zEjGHa8DAlkoOXmswrNvhUGEYQA9UI7DhrGeHR1DMGU=
@ -646,6 +669,7 @@ github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoR
github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM=
github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4=
github.com/lucasjones/reggen v0.0.0-20180717132126-cdb49ff09d77/go.mod h1:5ELEyG+X8f+meRWHuqUOewBOhvHkl7M76pdGEansxW4= github.com/lucasjones/reggen v0.0.0-20180717132126-cdb49ff09d77/go.mod h1:5ELEyG+X8f+meRWHuqUOewBOhvHkl7M76pdGEansxW4=
github.com/lyft/protoc-gen-star v0.5.1/go.mod h1:9toiA3cC7z5uVbODF7kEQ91Xn7XNFkVUl+SrEe+ZORU=
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls=
@ -680,6 +704,8 @@ github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjK
github.com/minio/highwayhash v1.0.1 h1:dZ6IIu8Z14VlC0VpfKofAhCy74wu/Qb5gcn52yWoz/0= github.com/minio/highwayhash v1.0.1 h1:dZ6IIu8Z14VlC0VpfKofAhCy74wu/Qb5gcn52yWoz/0=
github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY=
github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=
github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
@ -690,6 +716,8 @@ github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh
github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag=
github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
@ -704,6 +732,9 @@ github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ib
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU=
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/mwitkow/go-proto-validators v0.0.0-20180403085117-0950a7990007/go.mod h1:m2XC9Qq0AlmmVksL6FktJCdTYyLk7V3fKyp0sl1yWQo=
github.com/mwitkow/go-proto-validators v0.3.2 h1:qRlmpTzm2pstMKKzTdvwPCF5QfBNURSlAgN/R+qbKos=
github.com/mwitkow/go-proto-validators v0.3.2/go.mod h1:ej0Qp0qMgHN/KtDyUt+Q1/tA7a5VarXUOUxD+oeD30w=
github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76/go.mod h1:x5OoJHDHqxHS801UIuhqGl6QdSAEJvtausosHSdazIo= github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76/go.mod h1:x5OoJHDHqxHS801UIuhqGl6QdSAEJvtausosHSdazIo=
github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0=
github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E=
@ -800,6 +831,7 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA=
github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI=
github.com/pkg/term v0.0.0-20180730021639-bffc007b7fd5/go.mod h1:eCbImbZ95eXtAUIbLAuAVnBnwf83mjf6QIVH8SHYwqQ= github.com/pkg/term v0.0.0-20180730021639-bffc007b7fd5/go.mod h1:eCbImbZ95eXtAUIbLAuAVnBnwf83mjf6QIVH8SHYwqQ=
github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
@ -848,6 +880,10 @@ github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1
github.com/prometheus/tsdb v0.6.2-0.20190402121629-4f204dcbc150/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/prometheus/tsdb v0.6.2-0.20190402121629-4f204dcbc150/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
github.com/prometheus/tsdb v0.7.1 h1:YZcsG11NqnK4czYLrWd9mpEuAJIHVQLwdrleYfszMAA= github.com/prometheus/tsdb v0.7.1 h1:YZcsG11NqnK4czYLrWd9mpEuAJIHVQLwdrleYfszMAA=
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
github.com/pseudomuto/protoc-gen-doc v1.5.0 h1:pHZp0MEiT68jrZV8js8BS7E9ZEnlSLegoQbbtXj5lfo=
github.com/pseudomuto/protoc-gen-doc v1.5.0/go.mod h1:exDTOVwqpp30eV/EDPFLZy3Pwr2sn6hBC1WIYH/UbIg=
github.com/pseudomuto/protokit v0.2.0 h1:hlnBDcy3YEDXH7kc9gV+NLaN0cDzhDvD1s7Y6FZ8RpM=
github.com/pseudomuto/protokit v0.2.0/go.mod h1:2PdH30hxVHsup8KpBTOXTBeMVhJZVio3Q8ViKSAXT0Q=
github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ=
github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc=
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
@ -910,6 +946,8 @@ github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasO
github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI=
github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4=
github.com/spf13/afero v1.3.4/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I=
github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY=
github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I=
github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
@ -949,6 +987,7 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48=
github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
github.com/stretchr/testify v0.0.0-20170130113145-4d4bfba8f1d1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
@ -1062,6 +1101,7 @@ go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo=
golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20180501155221-613d6eafa307/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
@ -1205,6 +1245,7 @@ golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@ -1423,6 +1464,7 @@ google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCID
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20181107211654-5fc9ac540362/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
@ -1471,8 +1513,8 @@ google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6D
google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=
google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83 h1:3V2dxSZpz4zozWWUq36vUxXEKnSYitEH2LdsAx+RUmg= google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af h1:aLMMXFYqw01RA6XJim5uaN+afqNNjc9P8HPAbnpnc5s=
google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o=
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.0.1/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.0.1/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=

View File

@ -281,7 +281,7 @@ message QueryTraceTxRequest {
// msgEthereumTx for the requested transaction // msgEthereumTx for the requested transaction
MsgEthereumTx msg = 1; MsgEthereumTx msg = 1;
// transaction index // transaction index
uint32 tx_index = 2; uint64 tx_index = 2;
// TraceConfig holds extra parameters to trace functions. // TraceConfig holds extra parameters to trace functions.
TraceConfig trace_config = 3; TraceConfig trace_config = 3;
} }

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 // executes the given message in the provided environment. The return value will
// be tracer dependent. // be tracer dependent.
func (k Keeper) TraceTx(c context.Context, req *types.QueryTraceTxRequest) (*types.QueryTraceTxResponse, error) { 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) ctx := sdk.UnwrapSDKContext(c)
k.WithContext(ctx) k.WithContext(ctx)
params := k.GetParams(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) ethCfg := params.ChainConfig.EthereumConfig(k.eip155ChainID)
signer := ethtypes.MakeSigner(ethCfg, big.NewInt(ctx.BlockHeight())) 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 { if err != nil {
return nil, status.Error(codes.Internal, err.Error()) return nil, status.Error(codes.Internal, err.Error())
} }
switch { switch {
case req.TraceConfig != nil && req.TraceConfig.Tracer != "": case traceConfig != nil && traceConfig.Tracer != "":
timeout := defaultTraceTimeout timeout := defaultTraceTimeout
// TODO change timeout to time.duration // TODO change timeout to time.duration
// Used string to comply with go ethereum // Used string to comply with go ethereum
if req.TraceConfig.Timeout != "" { if traceConfig.Timeout != "" {
if timeout, err = time.ParseDuration(req.TraceConfig.Timeout); err != nil { if timeout, err = time.ParseDuration(traceConfig.Timeout); err != nil {
return nil, status.Errorf(codes.InvalidArgument, "timeout value: %s", err.Error()) return nil, status.Errorf(codes.InvalidArgument, "timeout value: %s", err.Error())
} }
} }
txContext := core.NewEVMTxContext(coreMessage) txContext := core.NewEVMTxContext(coreMessage)
// Constuct the JavaScript tracer to execute with // Construct the JavaScript tracer to execute with
if tracer, err = tracers.New(req.TraceConfig.Tracer, txContext); err != nil { if tracer, err = tracers.New(traceConfig.Tracer, txContext); err != nil {
return nil, status.Error(codes.Internal, err.Error()) 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() defer cancel()
case req.TraceConfig != nil && req.TraceConfig.LogConfig != nil: case traceConfig != nil && traceConfig.LogConfig != nil:
logConfig := vm.LogConfig{ logConfig := vm.LogConfig{
DisableMemory: req.TraceConfig.LogConfig.DisableMemory, DisableMemory: traceConfig.LogConfig.DisableMemory,
Debug: req.TraceConfig.LogConfig.Debug, Debug: traceConfig.LogConfig.Debug,
DisableStorage: req.TraceConfig.LogConfig.DisableStorage, DisableStorage: traceConfig.LogConfig.DisableStorage,
DisableStack: req.TraceConfig.LogConfig.DisableStack, DisableStack: traceConfig.LogConfig.DisableStack,
} }
tracer = vm.NewStructLogger(&logConfig) tracer = vm.NewStructLogger(&logConfig)
default: default:
@ -532,45 +548,34 @@ func (k Keeper) TraceTx(c context.Context, req *types.QueryTraceTxRequest) (*typ
evm := k.NewEVM(coreMessage, ethCfg, params, coinbase, tracer) evm := k.NewEVM(coreMessage, ethCfg, params, coinbase, tracer)
k.SetTxHashTransient(common.HexToHash(req.Msg.Hash)) k.SetTxHashTransient(common.HexToHash(msg.Hash))
k.SetTxIndexTransient(uint64(req.TxIndex)) k.SetTxIndexTransient(txIndex)
res, err := k.ApplyMessage(evm, coreMessage, ethCfg, true) res, err := k.ApplyMessage(evm, coreMessage, ethCfg, true)
if err != nil { if err != nil {
return nil, status.Error(codes.Internal, err.Error()) return nil, status.Error(codes.Internal, err.Error())
} }
var result interface{}
// Depending on the tracer type, format and return the trace result data. // Depending on the tracer type, format and return the trace result data.
switch tracer := tracer.(type) { switch tracer := tracer.(type) {
case *vm.StructLogger: case *vm.StructLogger:
// TODO Return proper returnValue // TODO Return proper returnValue
result := types.ExecutionResult{ result = types.ExecutionResult{
Gas: res.GasUsed, Gas: res.GasUsed,
Failed: res.Failed(), Failed: res.Failed(),
ReturnValue: "", ReturnValue: "",
StructLogs: types.FormatLogs(tracer.StructLogs()), StructLogs: types.FormatLogs(tracer.StructLogs()),
} }
resultData, err = json.Marshal(result)
if err != nil {
return nil, status.Error(codes.Internal, err.Error())
}
case *tracers.Tracer: case *tracers.Tracer:
result, err := tracer.GetResult() result, err = tracer.GetResult()
if err != nil { if err != nil {
return nil, status.Error(codes.Internal, err.Error()) 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: default:
return nil, status.Error(codes.InvalidArgument, "invalid tracer type") return nil, status.Error(codes.InvalidArgument, "invalid tracer type")
} }
return &types.QueryTraceTxResponse{ return &result, nil
Data: resultData,
}, nil
} }

View File

@ -1125,7 +1125,7 @@ type QueryTraceTxRequest struct {
// msgEthereumTx for the requested transaction // msgEthereumTx for the requested transaction
Msg *MsgEthereumTx `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` Msg *MsgEthereumTx `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"`
// transaction index // 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 holds extra parameters to trace functions.
TraceConfig *TraceConfig `protobuf:"bytes,3,opt,name=trace_config,json=traceConfig,proto3" json:"trace_config,omitempty"` 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 return nil
} }
func (m *QueryTraceTxRequest) GetTxIndex() uint32 { func (m *QueryTraceTxRequest) GetTxIndex() uint64 {
if m != nil { if m != nil {
return m.TxIndex return m.TxIndex
} }
@ -1261,89 +1261,89 @@ func init() {
func init() { proto.RegisterFile("ethermint/evm/v1/query.proto", fileDescriptor_e15a877459347994) } func init() { proto.RegisterFile("ethermint/evm/v1/query.proto", fileDescriptor_e15a877459347994) }
var fileDescriptor_e15a877459347994 = []byte{ var fileDescriptor_e15a877459347994 = []byte{
// 1308 bytes of a gzipped FileDescriptorProto // 1307 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0xcd, 0x6f, 0x13, 0x47, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0xcf, 0x6f, 0x13, 0x47,
0x14, 0xcf, 0x12, 0x63, 0x87, 0x67, 0x42, 0xd3, 0x21, 0x40, 0xd8, 0x06, 0x27, 0x0c, 0xe4, 0x0b, 0x14, 0xce, 0x12, 0x63, 0x87, 0x67, 0xa0, 0xe9, 0x10, 0x20, 0x6c, 0x83, 0x13, 0x06, 0x92, 0x38,
0x52, 0x2f, 0x76, 0x2b, 0xa4, 0x22, 0x55, 0x85, 0x44, 0x94, 0x56, 0x40, 0x45, 0x4d, 0xd4, 0x43, 0x90, 0x7a, 0xb1, 0x5b, 0x21, 0x15, 0xa9, 0x2a, 0x24, 0xa2, 0xb4, 0x02, 0x2a, 0x6a, 0xa2, 0x1e,
0x2f, 0xd6, 0x78, 0x3d, 0x5d, 0x5b, 0xd8, 0x3b, 0x66, 0x67, 0xec, 0x3a, 0xd0, 0xb4, 0x55, 0xa5, 0x7a, 0xb1, 0xc6, 0xeb, 0xe9, 0xda, 0xc2, 0xde, 0x31, 0x3b, 0x63, 0xd7, 0x81, 0xa6, 0xad, 0x2a,
0x22, 0x2a, 0x2e, 0x95, 0x7a, 0xaf, 0x90, 0xaa, 0x9e, 0xfb, 0x6f, 0x70, 0x44, 0xea, 0xa5, 0xa7, 0x15, 0x51, 0x71, 0xa9, 0xd4, 0x7b, 0x85, 0x54, 0xf5, 0xdc, 0x7f, 0x83, 0x23, 0x52, 0x2f, 0x3d,
0xaa, 0x82, 0x1e, 0xfa, 0x67, 0x54, 0xf3, 0xb1, 0xf6, 0xae, 0xd7, 0x1b, 0x87, 0x0a, 0xf5, 0x36, 0x55, 0x15, 0xf4, 0xd0, 0x3f, 0xa3, 0x9a, 0x1f, 0x6b, 0xef, 0x7a, 0xbd, 0x38, 0x54, 0xa8, 0xb7,
0x1f, 0xef, 0xbd, 0xdf, 0xef, 0xbd, 0x79, 0x3b, 0xbf, 0x59, 0x58, 0xa4, 0xa2, 0x41, 0x83, 0x76, 0xf9, 0xf1, 0xde, 0xfb, 0xbe, 0xf7, 0xe6, 0xed, 0x7c, 0xb3, 0xb0, 0x44, 0x45, 0x93, 0x06, 0x9d,
0xd3, 0x17, 0x0e, 0xed, 0xb5, 0x9d, 0x5e, 0xc9, 0xb9, 0xdf, 0xa5, 0xc1, 0x6e, 0xb1, 0x13, 0x30, 0x96, 0x2f, 0x1c, 0xda, 0xef, 0x38, 0xfd, 0xb2, 0x73, 0xaf, 0x47, 0x83, 0xdd, 0x52, 0x37, 0x60,
0xc1, 0xd0, 0xdc, 0x60, 0xb7, 0x48, 0x7b, 0xed, 0x62, 0xaf, 0x64, 0xcf, 0x7b, 0xcc, 0x63, 0x6a, 0x82, 0xa1, 0xf9, 0xe1, 0x6e, 0x89, 0xf6, 0x3b, 0xa5, 0x7e, 0xd9, 0x5e, 0xf0, 0x98, 0xc7, 0xd4,
0xd3, 0x91, 0x23, 0x6d, 0x67, 0x5f, 0x70, 0x19, 0x6f, 0x33, 0xee, 0xd4, 0x08, 0xa7, 0x3a, 0x80, 0xa6, 0x23, 0x47, 0xda, 0xce, 0x3e, 0xef, 0x32, 0xde, 0x61, 0xdc, 0xa9, 0x13, 0x4e, 0x75, 0x00,
0xd3, 0x2b, 0xd5, 0xa8, 0x20, 0x25, 0xa7, 0x43, 0xbc, 0xa6, 0x4f, 0x44, 0x93, 0xf9, 0xc6, 0x76, 0xa7, 0x5f, 0xae, 0x53, 0x41, 0xca, 0x4e, 0x97, 0x78, 0x2d, 0x9f, 0x88, 0x16, 0xf3, 0x8d, 0xed,
0xd1, 0x63, 0xcc, 0x6b, 0x51, 0x87, 0x74, 0x9a, 0x0e, 0xf1, 0x7d, 0x26, 0xd4, 0x26, 0x37, 0xbb, 0x92, 0xc7, 0x98, 0xd7, 0xa6, 0x0e, 0xe9, 0xb6, 0x1c, 0xe2, 0xfb, 0x4c, 0xa8, 0x4d, 0x6e, 0x76,
0x76, 0x82, 0x8f, 0x04, 0xd6, 0x7b, 0xa7, 0x13, 0x7b, 0xa2, 0xaf, 0xb7, 0xf0, 0x7b, 0x70, 0xfc, 0xed, 0x04, 0x1f, 0x09, 0xac, 0xf7, 0x4e, 0x25, 0xf6, 0xc4, 0x40, 0x6f, 0xe1, 0xf7, 0xe0, 0xd8,
0x53, 0x09, 0x7b, 0xcd, 0x75, 0x59, 0xd7, 0x17, 0x15, 0x7a, 0xbf, 0x4b, 0xb9, 0x40, 0x0b, 0x90, 0xa7, 0x12, 0xf6, 0xaa, 0xeb, 0xb2, 0x9e, 0x2f, 0xaa, 0xf4, 0x5e, 0x8f, 0x72, 0x81, 0x16, 0x21,
0x23, 0xf5, 0x7a, 0x40, 0x39, 0x5f, 0xb0, 0x96, 0xad, 0xf5, 0x23, 0x95, 0x70, 0x7a, 0x65, 0xe6, 0x47, 0x1a, 0x8d, 0x80, 0x72, 0xbe, 0x68, 0xad, 0x58, 0xc5, 0x43, 0xd5, 0x70, 0x7a, 0x79, 0xee,
0xf1, 0xd3, 0xa5, 0xa9, 0x7f, 0x9e, 0x2e, 0x4d, 0x61, 0x17, 0xe6, 0xe3, 0xae, 0xbc, 0xc3, 0x7c, 0xd1, 0x93, 0xe5, 0x99, 0x7f, 0x9e, 0x2c, 0xcf, 0x60, 0x17, 0x16, 0xe2, 0xae, 0xbc, 0xcb, 0x7c,
0x4e, 0xa5, 0x6f, 0x8d, 0xb4, 0x88, 0xef, 0xd2, 0xd0, 0xd7, 0x4c, 0xd1, 0x5b, 0x70, 0xc4, 0x65, 0x4e, 0xa5, 0x6f, 0x9d, 0xb4, 0x89, 0xef, 0xd2, 0xd0, 0xd7, 0x4c, 0xd1, 0x5b, 0x70, 0xc8, 0x65,
0x75, 0x5a, 0x6d, 0x10, 0xde, 0x58, 0x38, 0xa4, 0xf6, 0x66, 0xe4, 0xc2, 0x47, 0x84, 0x37, 0xd0, 0x0d, 0x5a, 0x6b, 0x12, 0xde, 0x5c, 0x3c, 0xa0, 0xf6, 0xe6, 0xe4, 0xc2, 0x47, 0x84, 0x37, 0xd1,
0x3c, 0x1c, 0xf6, 0x99, 0x74, 0x9a, 0x5e, 0xb6, 0xd6, 0x33, 0x15, 0x3d, 0xc1, 0x1f, 0xc0, 0x69, 0x02, 0x1c, 0xf4, 0x99, 0x74, 0x9a, 0x5d, 0xb1, 0x8a, 0x99, 0xaa, 0x9e, 0xe0, 0x0f, 0xe0, 0x94,
0x05, 0xb2, 0xad, 0xea, 0xf4, 0x1f, 0x58, 0x3e, 0xb2, 0xc0, 0x1e, 0x17, 0xc1, 0x90, 0x5d, 0x81, 0x02, 0xd9, 0x56, 0x75, 0xfa, 0x0f, 0x2c, 0x1f, 0x5a, 0x60, 0x4f, 0x8a, 0x60, 0xc8, 0xae, 0xc2,
0x63, 0xfa, 0x08, 0xaa, 0xf1, 0x48, 0xb3, 0x7a, 0xf5, 0x9a, 0x5e, 0x44, 0x36, 0xcc, 0x70, 0x09, 0x51, 0x7d, 0x04, 0xb5, 0x78, 0xa4, 0x23, 0x7a, 0xf5, 0xaa, 0x5e, 0x44, 0x36, 0xcc, 0x71, 0x09,
0x2a, 0xf9, 0x1d, 0x52, 0xfc, 0x06, 0x73, 0x19, 0x82, 0xe8, 0xa8, 0x55, 0xbf, 0xdb, 0xae, 0xd1, 0x2a, 0xf9, 0x1d, 0x50, 0xfc, 0x86, 0x73, 0x19, 0x82, 0xe8, 0xa8, 0x35, 0xbf, 0xd7, 0xa9, 0xd3,
0xc0, 0x64, 0x30, 0x6b, 0x56, 0x3f, 0x51, 0x8b, 0xf8, 0x26, 0x2c, 0x2a, 0x1e, 0x9f, 0x91, 0x56, 0xc0, 0x64, 0x70, 0xc4, 0xac, 0x7e, 0xa2, 0x16, 0xf1, 0x0d, 0x58, 0x52, 0x3c, 0x3e, 0x23, 0xed,
0xb3, 0x4e, 0x04, 0x0b, 0x46, 0x92, 0x39, 0x0b, 0x47, 0x5d, 0xe6, 0x8f, 0xf2, 0xc8, 0xcb, 0xb5, 0x56, 0x83, 0x08, 0x16, 0x8c, 0x25, 0x73, 0x06, 0x0e, 0xbb, 0xcc, 0x1f, 0xe7, 0x91, 0x97, 0x6b,
0x6b, 0x89, 0xac, 0x9e, 0x58, 0x70, 0x26, 0x25, 0x9a, 0x49, 0x6c, 0x0d, 0xde, 0x08, 0x59, 0xc5, 0x57, 0x13, 0x59, 0x3d, 0xb6, 0xe0, 0x74, 0x4a, 0x34, 0x93, 0xd8, 0x3a, 0xbc, 0x11, 0xb2, 0x8a,
0x23, 0x86, 0x64, 0x5f, 0x63, 0x6a, 0x61, 0x13, 0x6d, 0xe9, 0x73, 0x7e, 0x95, 0xe3, 0xb9, 0x64, 0x47, 0x0c, 0xc9, 0xbe, 0xc6, 0xd4, 0xc2, 0x26, 0xda, 0xd2, 0xe7, 0xfc, 0x2a, 0xc7, 0x73, 0xd1,
0x9a, 0x68, 0xe0, 0x3a, 0xa9, 0x89, 0xf0, 0x4d, 0x03, 0x76, 0x57, 0xb0, 0x80, 0x78, 0x93, 0xc1, 0x34, 0xd1, 0xd0, 0x75, 0x5a, 0x13, 0xe1, 0x1b, 0x06, 0xec, 0x8e, 0x60, 0x01, 0xf1, 0xa6, 0x83,
0xd0, 0x1c, 0x4c, 0xdf, 0xa3, 0xbb, 0xa6, 0xdf, 0xe4, 0x30, 0x02, 0xbf, 0x69, 0xe0, 0x07, 0xc1, 0xa1, 0x79, 0x98, 0xbd, 0x4b, 0x77, 0x4d, 0xbf, 0xc9, 0x61, 0x04, 0x7e, 0xd3, 0xc0, 0x0f, 0x83,
0x0c, 0xfc, 0x3c, 0x1c, 0xee, 0x91, 0x56, 0x37, 0x04, 0xd7, 0x13, 0x7c, 0x19, 0xe6, 0x4c, 0x2b, 0x19, 0xf8, 0x05, 0x38, 0xd8, 0x27, 0xed, 0x5e, 0x08, 0xae, 0x27, 0xf8, 0x12, 0xcc, 0x9b, 0x56,
0xd5, 0x5f, 0x29, 0xc9, 0x35, 0x78, 0x33, 0xe2, 0x67, 0x20, 0x10, 0x64, 0x64, 0xef, 0x2b, 0xaf, 0x6a, 0xbc, 0x52, 0x92, 0xeb, 0xf0, 0x66, 0xc4, 0xcf, 0x40, 0x20, 0xc8, 0xc8, 0xde, 0x57, 0x5e,
0xa3, 0x15, 0x35, 0xc6, 0x0f, 0x00, 0x29, 0xc3, 0x9d, 0xfe, 0x2d, 0xe6, 0xf1, 0x10, 0x02, 0x41, 0x87, 0xab, 0x6a, 0x8c, 0xef, 0x03, 0x52, 0x86, 0x3b, 0x83, 0x9b, 0xcc, 0xe3, 0x21, 0x04, 0x82,
0x46, 0x7d, 0x31, 0x3a, 0xbe, 0x1a, 0xa3, 0x0f, 0x01, 0x86, 0x17, 0x84, 0xca, 0x2d, 0x5f, 0x5e, 0x8c, 0xfa, 0x62, 0x74, 0x7c, 0x35, 0x46, 0x1f, 0x02, 0x8c, 0x2e, 0x08, 0x95, 0x5b, 0xbe, 0xb2,
0x2d, 0xea, 0xa6, 0x2d, 0xca, 0xdb, 0xa4, 0xa8, 0xaf, 0x23, 0x73, 0x9b, 0x14, 0xef, 0x0c, 0x4b, 0x56, 0xd2, 0x4d, 0x5b, 0x92, 0xb7, 0x49, 0x49, 0x5f, 0x47, 0xe6, 0x36, 0x29, 0xdd, 0x1e, 0x95,
0x55, 0x89, 0x78, 0x46, 0x48, 0xfe, 0x60, 0x99, 0xc2, 0x86, 0xe0, 0x86, 0xe7, 0x06, 0x64, 0x5a, 0xaa, 0x1a, 0xf1, 0x8c, 0x90, 0xfc, 0xc1, 0x32, 0x85, 0x0d, 0xc1, 0x0d, 0xcf, 0x0d, 0xc8, 0xb4,
0xcc, 0x93, 0xd9, 0x4d, 0xaf, 0xe7, 0xcb, 0x27, 0x8a, 0xa3, 0x37, 0x5b, 0xf1, 0x16, 0xf3, 0x2a, 0x99, 0x27, 0xb3, 0x9b, 0x2d, 0xe6, 0x2b, 0xc7, 0x4b, 0xe3, 0x37, 0x5b, 0xe9, 0x26, 0xf3, 0xaa,
0xca, 0x04, 0xdd, 0x18, 0x43, 0x6a, 0x6d, 0x22, 0x29, 0x8d, 0x13, 0x65, 0x85, 0xf7, 0xe0, 0x84, 0xca, 0x04, 0x5d, 0x9f, 0x40, 0x6a, 0x7d, 0x2a, 0x29, 0x8d, 0x13, 0x65, 0x85, 0xf7, 0xe0, 0xb8,
0xee, 0x8a, 0x16, 0x73, 0xef, 0xfd, 0xff, 0xa5, 0xf8, 0xc5, 0x82, 0x93, 0xa3, 0xf8, 0xa6, 0x1a, 0xee, 0x8a, 0x36, 0x73, 0xef, 0xfe, 0xff, 0xa5, 0xf8, 0xc5, 0x82, 0x13, 0xe3, 0xf8, 0xa6, 0x1a,
0x57, 0x21, 0x27, 0xfa, 0xd5, 0x48, 0x41, 0xce, 0x26, 0x0b, 0xb2, 0x13, 0x10, 0x9f, 0x13, 0x57, 0x57, 0x20, 0x27, 0x06, 0xb5, 0x48, 0x41, 0xce, 0x24, 0x0b, 0xb2, 0x13, 0x10, 0x9f, 0x13, 0x57,
0x06, 0x95, 0xbe, 0x5b, 0x99, 0x67, 0x7f, 0x2e, 0x4d, 0x55, 0xb2, 0x42, 0xd5, 0xf5, 0xf5, 0x15, 0x06, 0x95, 0xbe, 0x5b, 0x99, 0xa7, 0x7f, 0x2e, 0xcf, 0x54, 0xb3, 0x42, 0xd5, 0xf5, 0xf5, 0x15,
0xe9, 0x52, 0x94, 0xe4, 0x56, 0x8b, 0xb1, 0x76, 0x58, 0xa5, 0x93, 0x90, 0x6d, 0xd0, 0xa6, 0xd7, 0xe9, 0x62, 0x94, 0xe4, 0x56, 0x9b, 0xb1, 0x4e, 0x58, 0xa5, 0x13, 0x90, 0x6d, 0xd2, 0x96, 0xd7,
0x10, 0xaa, 0x4e, 0xd3, 0x15, 0x33, 0xc3, 0x0e, 0x9c, 0x4a, 0x78, 0x0c, 0x1b, 0xbe, 0x26, 0x17, 0x14, 0xaa, 0x4e, 0xb3, 0x55, 0x33, 0xc3, 0x0e, 0x9c, 0x4c, 0x78, 0x8c, 0x1a, 0xbe, 0x2e, 0x17,
0x4c, 0x3b, 0xea, 0x09, 0x9e, 0x37, 0xfd, 0x78, 0x87, 0x04, 0xa4, 0x1d, 0x1e, 0x02, 0xbe, 0x6d, 0x4c, 0x3b, 0xea, 0x09, 0x5e, 0x30, 0xfd, 0x78, 0x9b, 0x04, 0xa4, 0x13, 0x1e, 0x02, 0xbe, 0x65,
0x1a, 0x25, 0x5c, 0x35, 0x21, 0x2e, 0x43, 0xb6, 0xa3, 0x56, 0x54, 0x8c, 0x7c, 0x79, 0x21, 0x59, 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, 0xbb, 0x52, 0xd0, 0xdc, 0x6d, 0xd2, 0x19, 0xed, 0x11, 0x16, 0x44, 0x5b, 0xe3, 0xb7, 0x0d, 0xab, 0x3b, 0x52, 0xd0, 0xdc, 0x6d, 0xd2,
0x6a, 0x45, 0xbf, 0x91, 0x3a, 0x11, 0x24, 0xfc, 0x46, 0xe4, 0x18, 0xbf, 0x0f, 0xc7, 0xae, 0x8b, 0x6e, 0x47, 0xbf, 0x91, 0x06, 0x11, 0x24, 0xfc, 0x46, 0xe4, 0x18, 0xbf, 0x0f, 0x47, 0xaf, 0x89,
0x86, 0x36, 0x1b, 0x34, 0x05, 0x09, 0x3c, 0x1e, 0x5a, 0xc9, 0x31, 0x3a, 0x05, 0x39, 0x8f, 0xf0, 0xa6, 0x36, 0x1b, 0x36, 0x05, 0x09, 0x3c, 0x1e, 0x5a, 0xc9, 0x31, 0x3a, 0x09, 0x39, 0x8f, 0xf0,
0xaa, 0x4b, 0x3a, 0xe6, 0x52, 0xcb, 0x7a, 0x84, 0x6f, 0x93, 0x0e, 0x5e, 0x83, 0xe3, 0xd7, 0xb9, 0x9a, 0x4b, 0xba, 0xe6, 0x52, 0xcb, 0x7a, 0x84, 0x6f, 0x93, 0x2e, 0x5e, 0x87, 0x63, 0xd7, 0xb8,
0x68, 0xb6, 0x89, 0xa0, 0x37, 0xc8, 0x90, 0xfc, 0x1c, 0x4c, 0x7b, 0x44, 0x87, 0xc8, 0x54, 0xe4, 0x68, 0x75, 0x88, 0xa0, 0xd7, 0xc9, 0x88, 0xfc, 0x3c, 0xcc, 0x7a, 0x44, 0x87, 0xc8, 0x54, 0xe5,
0x10, 0xff, 0x3a, 0xf8, 0x1e, 0x02, 0xe2, 0xd2, 0x9d, 0x7e, 0x88, 0x56, 0x82, 0xe9, 0x36, 0xf7, 0x10, 0xff, 0x3a, 0xfc, 0x1e, 0x02, 0xe2, 0xd2, 0x9d, 0x41, 0x88, 0x56, 0x86, 0xd9, 0x0e, 0xf7,
0x4c, 0x8e, 0x4b, 0xc9, 0x1c, 0x6f, 0x73, 0xef, 0xba, 0x5c, 0xa3, 0xdd, 0xf6, 0x4e, 0xbf, 0x22, 0x4c, 0x8e, 0xcb, 0xc9, 0x1c, 0x6f, 0x71, 0xef, 0x9a, 0x5c, 0xa3, 0xbd, 0xce, 0xce, 0xa0, 0x2a,
0x6d, 0xd1, 0x69, 0x98, 0x11, 0xfd, 0x6a, 0xd3, 0xaf, 0xd3, 0xbe, 0x62, 0x33, 0x5b, 0xc9, 0x89, 0x6d, 0xd1, 0x29, 0x98, 0x13, 0x83, 0x5a, 0xcb, 0x6f, 0xd0, 0x81, 0x61, 0x93, 0x13, 0x83, 0x8f,
0xfe, 0xc7, 0x72, 0x8a, 0xae, 0xc2, 0x51, 0x21, 0xe3, 0x57, 0x5d, 0xe6, 0x7f, 0xd1, 0xf4, 0xd4, 0xe5, 0x14, 0x5d, 0x81, 0xc3, 0x42, 0xc6, 0xaf, 0xb9, 0xcc, 0xff, 0xa2, 0xe5, 0xa9, 0xfb, 0x35,
0xfd, 0x9a, 0x2f, 0x9f, 0x19, 0xdb, 0x54, 0x2e, 0xdd, 0x56, 0x46, 0x95, 0xbc, 0x18, 0x4e, 0xf0, 0x5f, 0x39, 0x3d, 0xb1, 0xa9, 0x5c, 0xba, 0xad, 0x8c, 0xaa, 0x79, 0x31, 0x9a, 0xe0, 0xf3, 0xe6,
0x05, 0x73, 0x85, 0x0d, 0x68, 0xa6, 0xd7, 0xae, 0xfc, 0xed, 0x31, 0x38, 0xac, 0x8c, 0xd1, 0xf7, 0x0a, 0x1b, 0xd2, 0x4c, 0xaf, 0x5d, 0xe5, 0xdb, 0xa3, 0x70, 0x50, 0x19, 0xa3, 0xef, 0x2d, 0xc8,
0x16, 0xe4, 0x8c, 0x64, 0xa0, 0x95, 0x24, 0xda, 0x98, 0x37, 0x81, 0xbd, 0x3a, 0xc9, 0x4c, 0x03, 0x19, 0xc9, 0x40, 0xab, 0x49, 0xb4, 0x09, 0x6f, 0x02, 0x7b, 0x6d, 0x9a, 0x99, 0x06, 0xc6, 0x17,
0xe3, 0x8b, 0xdf, 0xfd, 0xfe, 0xf7, 0x4f, 0x87, 0x56, 0xd0, 0x39, 0x27, 0xf1, 0xec, 0x30, 0xb2, 0xbe, 0xfb, 0xfd, 0xef, 0x9f, 0x0e, 0xac, 0xa2, 0xb3, 0x4e, 0xe2, 0xd9, 0x61, 0x64, 0xc3, 0x79,
0xe1, 0x3c, 0x34, 0x77, 0xe4, 0x1e, 0xfa, 0xd9, 0x82, 0xd9, 0x98, 0x32, 0xa3, 0x8b, 0x29, 0x30, 0x60, 0xee, 0xc8, 0x3d, 0xf4, 0xb3, 0x05, 0x47, 0x62, 0xca, 0x8c, 0x2e, 0xa4, 0xc0, 0x4c, 0x7a,
0xe3, 0x5e, 0x00, 0xf6, 0xe6, 0xc1, 0x8c, 0x0d, 0xb3, 0xb2, 0x62, 0xb6, 0x89, 0x2e, 0x24, 0x99, 0x01, 0xd8, 0x9b, 0xfb, 0x33, 0x36, 0xcc, 0x2a, 0x8a, 0xd9, 0x26, 0x3a, 0x9f, 0x64, 0x16, 0x3e,
0x85, 0x8f, 0x80, 0x04, 0xc1, 0xdf, 0x2c, 0x98, 0x1b, 0x15, 0x59, 0x54, 0x4c, 0x81, 0x4d, 0xd1, 0x02, 0x12, 0x04, 0x7f, 0xb3, 0x60, 0x7e, 0x5c, 0x64, 0x51, 0x29, 0x05, 0x36, 0x45, 0xdb, 0x6d,
0x76, 0xdb, 0x39, 0xb0, 0xbd, 0x61, 0x7a, 0x45, 0x31, 0x7d, 0x17, 0x95, 0x93, 0x4c, 0x7b, 0xa1, 0x67, 0xdf, 0xf6, 0x86, 0xe9, 0x65, 0xc5, 0xf4, 0x5d, 0x54, 0x49, 0x32, 0xed, 0x87, 0x3e, 0x23,
0xcf, 0x90, 0x6c, 0xf4, 0xdd, 0xb0, 0x87, 0x1e, 0x59, 0x90, 0x33, 0x72, 0x9a, 0x7a, 0xb4, 0x71, 0xb2, 0xd1, 0x77, 0xc3, 0x1e, 0x7a, 0x68, 0x41, 0xce, 0xc8, 0x69, 0xea, 0xd1, 0xc6, 0x95, 0x3a,
0xa5, 0x4e, 0x3d, 0xda, 0x11, 0x55, 0xc6, 0x9b, 0x8a, 0xd6, 0x2a, 0x3a, 0x9f, 0xa4, 0x65, 0xe4, 0xf5, 0x68, 0xc7, 0x54, 0x19, 0x6f, 0x2a, 0x5a, 0x6b, 0xe8, 0x5c, 0x92, 0x96, 0x91, 0x67, 0x1e,
0x99, 0x47, 0x4a, 0xf7, 0xc4, 0x82, 0x9c, 0x11, 0xd6, 0x54, 0x22, 0x71, 0x15, 0x4f, 0x25, 0x32, 0x29, 0xdd, 0x63, 0x0b, 0x72, 0x46, 0x58, 0x53, 0x89, 0xc4, 0x55, 0x3c, 0x95, 0xc8, 0x98, 0x3e,
0xa2, 0xcf, 0xb8, 0xa4, 0x88, 0x5c, 0x44, 0x1b, 0x49, 0x22, 0x5c, 0x9b, 0x0e, 0x79, 0x38, 0x0f, 0xe3, 0xb2, 0x22, 0x72, 0x01, 0x6d, 0x24, 0x89, 0x70, 0x6d, 0x3a, 0xe2, 0xe1, 0x3c, 0xb8, 0x4b,
0xef, 0xd1, 0xdd, 0x3d, 0xf4, 0x00, 0x32, 0x52, 0x7f, 0x11, 0x4e, 0x6d, 0x99, 0x81, 0xa8, 0xdb, 0x77, 0xf7, 0xd0, 0x7d, 0xc8, 0x48, 0xfd, 0x45, 0x38, 0xb5, 0x65, 0x86, 0xa2, 0x6e, 0x9f, 0x7d,
0xe7, 0xf6, 0xb5, 0x31, 0x1c, 0x36, 0x14, 0x87, 0x73, 0xe8, 0xec, 0xb8, 0x6e, 0xaa, 0xc7, 0x2a, 0xa9, 0x8d, 0xe1, 0xb0, 0xa1, 0x38, 0x9c, 0x45, 0x67, 0x26, 0x75, 0x53, 0x23, 0x56, 0x89, 0x6f,
0xf1, 0x0d, 0x64, 0xb5, 0xaa, 0xa2, 0xf3, 0x29, 0x91, 0x63, 0x8a, 0x6f, 0xaf, 0x4c, 0xb0, 0x32, 0x20, 0xab, 0x55, 0x15, 0x9d, 0x4b, 0x89, 0x1c, 0x53, 0x7c, 0x7b, 0x75, 0x8a, 0x95, 0x61, 0x50,
0x0c, 0xd6, 0x15, 0x03, 0x8c, 0x96, 0x9d, 0x31, 0x0f, 0x7c, 0x25, 0x52, 0xce, 0x43, 0x29, 0x91, 0x54, 0x0c, 0x30, 0x5a, 0x71, 0x26, 0x3c, 0xf0, 0x95, 0x48, 0x39, 0x0f, 0xa4, 0x44, 0xaa, 0xa3,
0xea, 0x28, 0x8e, 0x0c, 0xc4, 0x0c, 0xad, 0xa5, 0x1d, 0xf7, 0x88, 0xdc, 0xda, 0xeb, 0x93, 0x0d, 0x38, 0x34, 0x14, 0x33, 0xb4, 0x9e, 0x76, 0xdc, 0x63, 0x72, 0x6b, 0x17, 0xa7, 0x1b, 0x4e, 0xff,
0x27, 0x7f, 0xf4, 0x35, 0x69, 0x1c, 0x63, 0xf3, 0xd8, 0x02, 0x18, 0x6a, 0x10, 0xda, 0x17, 0x25, 0xe8, 0xeb, 0xd2, 0x38, 0xc6, 0xe6, 0x91, 0x05, 0x30, 0xd2, 0x20, 0xf4, 0x52, 0x94, 0xa8, 0xb0,
0x2a, 0x6c, 0xf6, 0xc6, 0x01, 0x2c, 0x0d, 0xa1, 0x15, 0x45, 0x68, 0x09, 0x9d, 0x49, 0x23, 0xa4, 0xd9, 0x1b, 0xfb, 0xb0, 0x34, 0x84, 0x56, 0x15, 0xa1, 0x65, 0x74, 0x3a, 0x8d, 0x90, 0x52, 0x38,
0x14, 0x0e, 0x7d, 0x09, 0x59, 0x2d, 0x4a, 0xa9, 0x27, 0x13, 0xd3, 0xbe, 0xd4, 0x93, 0x89, 0x6b, 0xf4, 0x25, 0x64, 0xb5, 0x28, 0xa5, 0x9e, 0x4c, 0x4c, 0xfb, 0x52, 0x4f, 0x26, 0xae, 0x85, 0x78,
0x21, 0x5e, 0x56, 0xe8, 0x36, 0x5a, 0x48, 0xa2, 0x6b, 0xd5, 0x43, 0x7d, 0xc8, 0x19, 0x19, 0x43, 0x45, 0xa1, 0xdb, 0x68, 0x31, 0x89, 0xae, 0x55, 0x0f, 0x0d, 0x20, 0x67, 0x64, 0x0c, 0xad, 0x24,
0xcb, 0xc9, 0x98, 0x71, 0x85, 0xb3, 0xd7, 0x26, 0xc9, 0x4c, 0x88, 0x8b, 0x15, 0xee, 0x22, 0xb2, 0x63, 0xc6, 0x15, 0xce, 0x5e, 0x9f, 0x26, 0x33, 0x21, 0x2e, 0x56, 0xb8, 0x4b, 0xc8, 0x4e, 0xe2,
0x93, 0xb8, 0x54, 0x34, 0xaa, 0xae, 0x84, 0xfb, 0x1a, 0xf2, 0x11, 0x05, 0x3c, 0x00, 0xfa, 0x98, 0x52, 0xd1, 0xac, 0xb9, 0x12, 0xee, 0x6b, 0xc8, 0x47, 0x14, 0x70, 0x1f, 0xe8, 0x13, 0x72, 0x9e,
0x9c, 0xc7, 0x48, 0x28, 0x5e, 0x55, 0xd8, 0xcb, 0xa8, 0x30, 0x06, 0xdb, 0x98, 0x57, 0x3d, 0xc2, 0x20, 0xa1, 0x78, 0x4d, 0x61, 0xaf, 0xa0, 0xc2, 0x04, 0x6c, 0x63, 0x5e, 0xf3, 0x08, 0x47, 0x5f,
0xd1, 0x57, 0x90, 0x33, 0x5a, 0x95, 0x7a, 0x2b, 0xc4, 0x25, 0x37, 0xf5, 0x56, 0x18, 0x91, 0xbc, 0x41, 0xce, 0x68, 0x55, 0xea, 0xad, 0x10, 0x97, 0xdc, 0xd4, 0x5b, 0x61, 0x4c, 0xf2, 0x5e, 0x96,
0xfd, 0xb2, 0xd7, 0x22, 0x2b, 0xfa, 0x5b, 0x5b, 0xcf, 0x5e, 0x14, 0xac, 0xe7, 0x2f, 0x0a, 0xd6, 0xbd, 0x16, 0x59, 0x31, 0xd8, 0xda, 0x7a, 0xfa, 0xbc, 0x60, 0x3d, 0x7b, 0x5e, 0xb0, 0xfe, 0x7a,
0x5f, 0x2f, 0x0a, 0xd6, 0x8f, 0x2f, 0x0b, 0x53, 0xcf, 0x5f, 0x16, 0xa6, 0xfe, 0x78, 0x59, 0x98, 0x5e, 0xb0, 0x7e, 0x7c, 0x51, 0x98, 0x79, 0xf6, 0xa2, 0x30, 0xf3, 0xc7, 0x8b, 0xc2, 0xcc, 0xe7,
0xfa, 0x7c, 0xdd, 0x6b, 0x8a, 0x46, 0xb7, 0x56, 0x74, 0x59, 0xdb, 0x11, 0x0d, 0x12, 0xf0, 0x26, 0x45, 0xaf, 0x25, 0x9a, 0xbd, 0x7a, 0xc9, 0x65, 0x1d, 0x47, 0x34, 0x49, 0xc0, 0x5b, 0x3c, 0x12,
0x8f, 0xc4, 0xe9, 0xab, 0x48, 0x62, 0xb7, 0x43, 0x79, 0x2d, 0xab, 0xfe, 0x9d, 0xdf, 0xf9, 0x37, 0x67, 0xa0, 0x22, 0x89, 0xdd, 0x2e, 0xe5, 0xf5, 0xac, 0xfa, 0x77, 0x7e, 0xe7, 0xdf, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xbb, 0x7d, 0x12, 0xe6, 0x04, 0x10, 0x00, 0x00, 0x00, 0xff, 0xff, 0x87, 0x0b, 0xdf, 0x04, 0x04, 0x10, 0x00, 0x00,
} }
// Reference imports to suppress errors if they are not otherwise used. // 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] b := dAtA[iNdEx]
iNdEx++ iNdEx++
m.TxIndex |= uint32(b&0x7F) << shift m.TxIndex |= uint64(b&0x7F) << shift
if b < 0x80 { if b < 0x80 {
break break
} }

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 // ExecutionResult groups all structured logs emitted by the EVM
// while replaying a transaction in debug mode as well as transaction // while replaying a transaction in debug mode as well as transaction
// execution status, the amount of gas used and the return value // execution status, the amount of gas used and the return value