upgrade to ethermint v0.21.0 #99
@ -46,6 +46,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
|
|||||||
* (feemarket) [#1194](https://github.com/evmos/ethermint/pull/1194) Apply feemarket to native cosmos tx.
|
* (feemarket) [#1194](https://github.com/evmos/ethermint/pull/1194) Apply feemarket to native cosmos tx.
|
||||||
* (eth) [#1346](https://github.com/evmos/ethermint/pull/1346) Added support for `sdk.Dec` and `ed25519` type on eip712.
|
* (eth) [#1346](https://github.com/evmos/ethermint/pull/1346) Added support for `sdk.Dec` and `ed25519` type on eip712.
|
||||||
* (ante) [1460](https://github.com/evmos/ethermint/pull/1460) Add KV Gas config on ethereum Txs.
|
* (ante) [1460](https://github.com/evmos/ethermint/pull/1460) Add KV Gas config on ethereum Txs.
|
||||||
|
* (geth) [#1413](https://github.com/evmos/ethermint/pull/1413) Update geth version to v1.10.25.
|
||||||
|
|
||||||
### API Breaking
|
### API Breaking
|
||||||
|
|
||||||
|
@ -15,9 +15,11 @@ import (
|
|||||||
|
|
||||||
ethcrypto "github.com/ethereum/go-ethereum/crypto"
|
ethcrypto "github.com/ethereum/go-ethereum/crypto"
|
||||||
"github.com/ethereum/go-ethereum/crypto/secp256k1"
|
"github.com/ethereum/go-ethereum/crypto/secp256k1"
|
||||||
|
"github.com/ethereum/go-ethereum/signer/core/apitypes"
|
||||||
"github.com/evmos/ethermint/crypto/ethsecp256k1"
|
"github.com/evmos/ethermint/crypto/ethsecp256k1"
|
||||||
"github.com/evmos/ethermint/ethereum/eip712"
|
"github.com/evmos/ethermint/ethereum/eip712"
|
||||||
ethermint "github.com/evmos/ethermint/types"
|
ethermint "github.com/evmos/ethermint/types"
|
||||||
|
|
||||||
evmtypes "github.com/evmos/ethermint/x/evm/types"
|
evmtypes "github.com/evmos/ethermint/x/evm/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -218,7 +220,7 @@ func VerifySignature(
|
|||||||
return sdkerrors.Wrap(err, "failed to pack tx data in EIP712 object")
|
return sdkerrors.Wrap(err, "failed to pack tx data in EIP712 object")
|
||||||
}
|
}
|
||||||
|
|
||||||
sigHash, err := eip712.ComputeTypedDataHash(typedData)
|
sigHash, _, err := apitypes.TypedDataAndHash(typedData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@ import (
|
|||||||
types2 "github.com/cosmos/cosmos-sdk/x/bank/types"
|
types2 "github.com/cosmos/cosmos-sdk/x/bank/types"
|
||||||
types3 "github.com/cosmos/cosmos-sdk/x/staking/types"
|
types3 "github.com/cosmos/cosmos-sdk/x/staking/types"
|
||||||
"github.com/ethereum/go-ethereum/crypto"
|
"github.com/ethereum/go-ethereum/crypto"
|
||||||
|
"github.com/ethereum/go-ethereum/signer/core/apitypes"
|
||||||
"github.com/evmos/ethermint/ethereum/eip712"
|
"github.com/evmos/ethermint/ethereum/eip712"
|
||||||
"github.com/evmos/ethermint/types"
|
"github.com/evmos/ethermint/types"
|
||||||
|
|
||||||
@ -409,7 +410,7 @@ func (suite *AnteTestSuite) CreateTestEIP712CosmosTxBuilder(
|
|||||||
})
|
})
|
||||||
suite.Require().NoError(err)
|
suite.Require().NoError(err)
|
||||||
|
|
||||||
sigHash, err := eip712.ComputeTypedDataHash(typedData)
|
sigHash, _, err := apitypes.TypedDataAndHash(typedData)
|
||||||
suite.Require().NoError(err)
|
suite.Require().NoError(err)
|
||||||
|
|
||||||
// Sign typedData
|
// Sign typedData
|
||||||
|
@ -275,6 +275,7 @@ TraceConfig holds extra parameters to trace functions.
|
|||||||
| `overrides` | [ChainConfig](#ethermint.evm.v1.ChainConfig) | | Chain overrides, can be used to execute a trace using future fork rules |
|
| `overrides` | [ChainConfig](#ethermint.evm.v1.ChainConfig) | | Chain overrides, can be used to execute a trace using future fork rules |
|
||||||
| `enable_memory` | [bool](#bool) | | enable memory capture |
|
| `enable_memory` | [bool](#bool) | | enable memory capture |
|
||||||
| `enable_return_data` | [bool](#bool) | | enable return data capture |
|
| `enable_return_data` | [bool](#bool) | | enable return data capture |
|
||||||
|
| `tracer_json_config` | [string](#string) | | tracer config |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -21,28 +21,9 @@ import (
|
|||||||
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/ethereum/go-ethereum/common/math"
|
"github.com/ethereum/go-ethereum/common/math"
|
||||||
"github.com/ethereum/go-ethereum/crypto"
|
|
||||||
"github.com/ethereum/go-ethereum/signer/core/apitypes"
|
"github.com/ethereum/go-ethereum/signer/core/apitypes"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ComputeTypedDataHash computes keccak hash of typed data for signing.
|
|
||||||
func ComputeTypedDataHash(typedData apitypes.TypedData) ([]byte, error) {
|
|
||||||
domainSeparator, err := typedData.HashStruct("EIP712Domain", typedData.Domain.Map())
|
|
||||||
if err != nil {
|
|
||||||
err = errorsmod.Wrap(err, "failed to pack and hash typedData EIP712Domain")
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
typedDataHash, err := typedData.HashStruct(typedData.PrimaryType, typedData.Message)
|
|
||||||
if err != nil {
|
|
||||||
err = errorsmod.Wrap(err, "failed to pack and hash typedData primary type")
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
rawData := []byte(fmt.Sprintf("\x19\x01%s%s", string(domainSeparator), string(typedDataHash)))
|
|
||||||
return crypto.Keccak256(rawData), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// WrapTxToTypedData is an ultimate method that wraps Amino-encoded Cosmos Tx JSON data
|
// WrapTxToTypedData is an ultimate method that wraps Amino-encoded Cosmos Tx JSON data
|
||||||
// into an EIP712-compatible TypedData request.
|
// into an EIP712-compatible TypedData request.
|
||||||
func WrapTxToTypedData(
|
func WrapTxToTypedData(
|
||||||
|
2
go.mod
2
go.mod
@ -12,7 +12,7 @@ require (
|
|||||||
github.com/cosmos/go-bip39 v1.0.0
|
github.com/cosmos/go-bip39 v1.0.0
|
||||||
github.com/cosmos/ibc-go/v5 v5.1.0
|
github.com/cosmos/ibc-go/v5 v5.1.0
|
||||||
github.com/davecgh/go-spew v1.1.1
|
github.com/davecgh/go-spew v1.1.1
|
||||||
github.com/ethereum/go-ethereum v1.10.19
|
github.com/ethereum/go-ethereum v1.10.25
|
||||||
github.com/gogo/protobuf v1.3.3
|
github.com/gogo/protobuf v1.3.3
|
||||||
github.com/golang/protobuf v1.5.2
|
github.com/golang/protobuf v1.5.2
|
||||||
github.com/gorilla/mux v1.8.0
|
github.com/gorilla/mux v1.8.0
|
||||||
|
12
go.sum
12
go.sum
@ -274,8 +274,10 @@ github.com/cosmos/ledger-cosmos-go v0.11.1 h1:9JIYsGnXP613pb2vPjFeMMjBI5lEDsEaF6
|
|||||||
github.com/cosmos/ledger-cosmos-go v0.11.1/go.mod h1:J8//BsAGTo3OC/vDLjMRFLW6q0WAaXvHnVc7ZmE8iUY=
|
github.com/cosmos/ledger-cosmos-go v0.11.1/go.mod h1:J8//BsAGTo3OC/vDLjMRFLW6q0WAaXvHnVc7ZmE8iUY=
|
||||||
github.com/cosmos/ledger-go v0.9.2 h1:Nnao/dLwaVTk1Q5U9THldpUMMXU94BOTWPddSmVB6pI=
|
github.com/cosmos/ledger-go v0.9.2 h1:Nnao/dLwaVTk1Q5U9THldpUMMXU94BOTWPddSmVB6pI=
|
||||||
github.com/cosmos/ledger-go v0.9.2/go.mod h1:oZJ2hHAZROdlHiwTg4t7kP+GKIIkBT+o6c9QWFanOyI=
|
github.com/cosmos/ledger-go v0.9.2/go.mod h1:oZJ2hHAZROdlHiwTg4t7kP+GKIIkBT+o6c9QWFanOyI=
|
||||||
|
github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk=
|
||||||
github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE=
|
github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE=
|
||||||
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
|
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
|
||||||
|
github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
|
||||||
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
|
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
|
||||||
github.com/creachadair/taskgroup v0.3.2 h1:zlfutDS+5XG40AOxcHDSThxKzns8Tnr9jnr6VqkYlkM=
|
github.com/creachadair/taskgroup v0.3.2 h1:zlfutDS+5XG40AOxcHDSThxKzns8Tnr9jnr6VqkYlkM=
|
||||||
github.com/creachadair/taskgroup v0.3.2/go.mod h1:wieWwecHVzsidg2CsUnFinW1faVN4+kq+TDlRJQ0Wbk=
|
github.com/creachadair/taskgroup v0.3.2/go.mod h1:wieWwecHVzsidg2CsUnFinW1faVN4+kq+TDlRJQ0Wbk=
|
||||||
@ -352,8 +354,8 @@ github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.
|
|||||||
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/ethereum/go-ethereum v1.10.4/go.mod h1:nEE0TP5MtxGzOMd7egIrbPJMQBnhVU3ELNxhBglIzhg=
|
github.com/ethereum/go-ethereum v1.10.4/go.mod h1:nEE0TP5MtxGzOMd7egIrbPJMQBnhVU3ELNxhBglIzhg=
|
||||||
github.com/ethereum/go-ethereum v1.10.17/go.mod h1:Lt5WzjM07XlXc95YzrhosmR4J9Ahd6X2wyEV2SvGhk0=
|
github.com/ethereum/go-ethereum v1.10.17/go.mod h1:Lt5WzjM07XlXc95YzrhosmR4J9Ahd6X2wyEV2SvGhk0=
|
||||||
github.com/ethereum/go-ethereum v1.10.19 h1:EOR5JbL4MD5yeOqv8W2iC1s4NximrTjqFccUz8lyBRA=
|
github.com/ethereum/go-ethereum v1.10.25 h1:5dFrKJDnYf8L6/5o42abCE6a9yJm9cs4EJVRyYMr55s=
|
||||||
github.com/ethereum/go-ethereum v1.10.19/go.mod h1:IJBNMtzKcNHPtllYihy6BL2IgK1u+32JriaTbdt4v+w=
|
github.com/ethereum/go-ethereum v1.10.25/go.mod h1:EYFyF19u3ezGLD4RqOkLq+ZCXzYbLoNDdZlMt7kyKFg=
|
||||||
github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0=
|
github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0=
|
||||||
github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A=
|
github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A=
|
||||||
github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk=
|
github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk=
|
||||||
@ -952,8 +954,10 @@ github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU=
|
|||||||
github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
|
github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
|
||||||
github.com/rs/zerolog v1.27.0 h1:1T7qCieN22GVc8S4Q2yuexzBb1EqjbgjSH9RohbMjKs=
|
github.com/rs/zerolog v1.27.0 h1:1T7qCieN22GVc8S4Q2yuexzBb1EqjbgjSH9RohbMjKs=
|
||||||
github.com/rs/zerolog v1.27.0/go.mod h1:7frBqO0oezxmnO7GF86FY++uy8I0Tk/If5ni1G9Qc0U=
|
github.com/rs/zerolog v1.27.0/go.mod h1:7frBqO0oezxmnO7GF86FY++uy8I0Tk/If5ni1G9Qc0U=
|
||||||
|
github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo=
|
||||||
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
|
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
|
||||||
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||||
|
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
|
||||||
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||||
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
||||||
github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=
|
github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=
|
||||||
@ -1065,8 +1069,10 @@ github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLY
|
|||||||
github.com/ulikunitz/xz v0.5.8 h1:ERv8V6GKqVi23rgu5cj9pVfVzJbOqAY2Ntl88O6c2nQ=
|
github.com/ulikunitz/xz v0.5.8 h1:ERv8V6GKqVi23rgu5cj9pVfVzJbOqAY2Ntl88O6c2nQ=
|
||||||
github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
|
github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
|
||||||
github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
|
github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
|
||||||
|
github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY=
|
||||||
github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
|
github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
|
||||||
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
|
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
|
||||||
|
github.com/urfave/cli/v2 v2.10.2 h1:x3p8awjp/2arX+Nl/G2040AZpOCHS/eMJJ1/a+mye4Y=
|
||||||
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
|
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
|
||||||
github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8=
|
github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8=
|
||||||
github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
|
github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
|
||||||
@ -1076,6 +1082,7 @@ github.com/willf/bitset v1.1.3/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPyS
|
|||||||
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
|
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
|
||||||
github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg=
|
github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg=
|
||||||
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
|
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
|
||||||
|
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU=
|
||||||
github.com/ybbus/jsonrpc v2.1.2+incompatible/go.mod h1:XJrh1eMSzdIYFbM08flv0wp5G35eRniyeGut1z+LSiE=
|
github.com/ybbus/jsonrpc v2.1.2+incompatible/go.mod h1:XJrh1eMSzdIYFbM08flv0wp5G35eRniyeGut1z+LSiE=
|
||||||
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
@ -1706,7 +1713,6 @@ gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6/go.mod h1:uAJ
|
|||||||
gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
|
gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
|
||||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
|
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
|
||||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
|
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
|
||||||
gopkg.in/urfave/cli.v1 v1.20.0 h1:NdAVW6RYxDif9DhDHaAortIu956m2c0v+09AZBPTbE0=
|
|
||||||
gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0=
|
gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0=
|
||||||
gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
|
gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
|
||||||
gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
|
gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
|
||||||
|
@ -160,8 +160,8 @@ schema = 3
|
|||||||
version = "v1.0.0"
|
version = "v1.0.0"
|
||||||
hash = "sha256-k1DYvCqO3BKNcGEve/nMW0RxzMkK2tGfXbUbycqcVSo="
|
hash = "sha256-k1DYvCqO3BKNcGEve/nMW0RxzMkK2tGfXbUbycqcVSo="
|
||||||
[mod."github.com/ethereum/go-ethereum"]
|
[mod."github.com/ethereum/go-ethereum"]
|
||||||
version = "v1.10.19"
|
version = "v1.10.25"
|
||||||
hash = "sha256-7FPnTGcCb8Xd1QVR+6PmGTaHdTY1mm/8osFTW1JLuG8="
|
hash = "sha256-tNlI2XyuTXjGuBoe5vlYDcaGN2Sub7yltVtI6TeLLSc="
|
||||||
[mod."github.com/felixge/httpsnoop"]
|
[mod."github.com/felixge/httpsnoop"]
|
||||||
version = "v1.0.1"
|
version = "v1.0.1"
|
||||||
hash = "sha256-TNXnnC/ZGNY9lInAcES1cBGqIdEljKuh5LH/khVFjVk="
|
hash = "sha256-TNXnnC/ZGNY9lInAcES1cBGqIdEljKuh5LH/khVFjVk="
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{ lib, stdenv, buildGoModule, fetchFromGitHub, libobjc, IOKit }:
|
{ lib, stdenv, buildGoModule, fetchFromGitHub, libobjc, IOKit, nixosTests }:
|
||||||
|
|
||||||
let
|
let
|
||||||
# A list of binaries to put into separate outputs
|
# A list of binaries to put into separate outputs
|
||||||
@ -7,19 +7,18 @@ let
|
|||||||
"clef"
|
"clef"
|
||||||
];
|
];
|
||||||
|
|
||||||
in
|
in buildGoModule rec {
|
||||||
buildGoModule rec {
|
|
||||||
pname = "go-ethereum";
|
pname = "go-ethereum";
|
||||||
version = "1.10.19";
|
version = "1.10.25";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "ethereum";
|
owner = "ethereum";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0f6n9rg42ph47mvykc9f0lf99yzwqy4jm7mlzyks4l6i6fl1g3q1";
|
sha256 = "sha256-mnf0kMfQEEQMricZJfyF7ZB/2F1dyPBx9iT2v/rGh1U=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorSha256 = "1s5yfpk2yn7f3zwjl2fdrh6c63ki2b8rlmnlss27yxibsidaj0yd";
|
vendorSha256 = "sha256-Dj+xN8lr98LJyYr2FwJ7yUIJkUeUrr1fkcbj4hShJI0=";
|
||||||
|
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
|
||||||
@ -47,14 +46,19 @@ buildGoModule rec {
|
|||||||
"cmd/utils"
|
"cmd/utils"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# Following upstream: https://github.com/ethereum/go-ethereum/blob/v1.10.25/build/ci.go#L218
|
||||||
|
tags = [ "urfave_cli_no_docs" ];
|
||||||
|
|
||||||
# Fix for usb-related segmentation faults on darwin
|
# Fix for usb-related segmentation faults on darwin
|
||||||
propagatedBuildInputs =
|
propagatedBuildInputs =
|
||||||
lib.optionals stdenv.isDarwin [ libobjc IOKit ];
|
lib.optionals stdenv.isDarwin [ libobjc IOKit ];
|
||||||
|
|
||||||
|
passthru.tests = { inherit (nixosTests) geth; };
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
homepage = "https://geth.ethereum.org/";
|
homepage = "https://geth.ethereum.org/";
|
||||||
description = "Official golang implementation of the Ethereum protocol";
|
description = "Official golang implementation of the Ethereum protocol";
|
||||||
license = with licenses; [ lgpl3Plus gpl3Plus ];
|
license = with licenses; [ lgpl3Plus gpl3Plus ];
|
||||||
maintainers = with maintainers; [ adisbladis lionello RaghavSood ];
|
maintainers = with maintainers; [ adisbladis RaghavSood ];
|
||||||
};
|
};
|
||||||
}
|
}
|
@ -224,5 +224,7 @@ message TraceConfig {
|
|||||||
// enable memory capture
|
// enable memory capture
|
||||||
bool enable_memory = 11 [(gogoproto.jsontag) = "enableMemory"];
|
bool enable_memory = 11 [(gogoproto.jsontag) = "enableMemory"];
|
||||||
// enable return data capture
|
// enable return data capture
|
||||||
bool enable_return_data = 12 [(gogoproto.jsontag) = "enableReturnData"];
|
bool enable_return_data = 12 [ (gogoproto.jsontag) = "enableReturnData" ];
|
||||||
|
// tracer config
|
||||||
|
string tracer_json_config = 13 [ (gogoproto.jsontag) = "tracerConfig" ];
|
||||||
}
|
}
|
||||||
|
@ -132,6 +132,7 @@ func (suite *BackendTestSuite) buildFormattedBlock(
|
|||||||
uint64(header.Height),
|
uint64(header.Height),
|
||||||
uint64(0),
|
uint64(0),
|
||||||
baseFee,
|
baseFee,
|
||||||
|
suite.backend.chainID,
|
||||||
)
|
)
|
||||||
suite.Require().NoError(err)
|
suite.Require().NoError(err)
|
||||||
ethRPCTxs = []interface{}{rpcTx}
|
ethRPCTxs = []interface{}{rpcTx}
|
||||||
|
@ -376,6 +376,7 @@ func (b *Backend) RPCBlockFromTendermintBlock(
|
|||||||
uint64(block.Height),
|
uint64(block.Height),
|
||||||
uint64(txIndex),
|
uint64(txIndex),
|
||||||
baseFee,
|
baseFee,
|
||||||
|
b.chainID,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
b.logger.Debug("NewTransactionFromData for receipt failed", "hash", tx.Hash().Hex(), "error", err.Error())
|
b.logger.Debug("NewTransactionFromData for receipt failed", "hash", tx.Hash().Hex(), "error", err.Error())
|
||||||
|
@ -1088,6 +1088,7 @@ func (suite *BackendTestSuite) TestGetEthBlockFromTendermint() {
|
|||||||
uint64(header.Height),
|
uint64(header.Height),
|
||||||
uint64(0),
|
uint64(0),
|
||||||
tc.baseFee,
|
tc.baseFee,
|
||||||
|
suite.backend.chainID,
|
||||||
)
|
)
|
||||||
suite.Require().NoError(err)
|
suite.Require().NoError(err)
|
||||||
ethRPCTxs = []interface{}{rpcTx}
|
ethRPCTxs = []interface{}{rpcTx}
|
||||||
|
@ -153,11 +153,13 @@ func (b *Backend) FeeHistory(
|
|||||||
}
|
}
|
||||||
blockEnd = int64(blockNumber)
|
blockEnd = int64(blockNumber)
|
||||||
}
|
}
|
||||||
|
|
||||||
userBlockCountInt := int64(userBlockCount)
|
userBlockCountInt := int64(userBlockCount)
|
||||||
maxBlockCount := int64(b.cfg.JSONRPC.FeeHistoryCap)
|
maxBlockCount := int64(b.cfg.JSONRPC.FeeHistoryCap)
|
||||||
if userBlockCountInt > maxBlockCount {
|
if userBlockCountInt > maxBlockCount {
|
||||||
return nil, fmt.Errorf("FeeHistory user block count %d higher than %d", userBlockCountInt, maxBlockCount)
|
return nil, fmt.Errorf("FeeHistory user block count %d higher than %d", userBlockCountInt, maxBlockCount)
|
||||||
}
|
}
|
||||||
|
|
||||||
blockStart := blockEnd - userBlockCountInt
|
blockStart := blockEnd - userBlockCountInt
|
||||||
if blockStart < 0 {
|
if blockStart < 0 {
|
||||||
blockStart = 0
|
blockStart = 0
|
||||||
@ -173,6 +175,7 @@ func (b *Backend) FeeHistory(
|
|||||||
for i := 0; i < int(blockCount); i++ {
|
for i := 0; i < int(blockCount); i++ {
|
||||||
reward[i] = make([]*hexutil.Big, rewardCount)
|
reward[i] = make([]*hexutil.Big, rewardCount)
|
||||||
}
|
}
|
||||||
|
|
||||||
thisBaseFee := make([]*hexutil.Big, blockCount)
|
thisBaseFee := make([]*hexutil.Big, blockCount)
|
||||||
thisGasUsedRatio := make([]float64, blockCount)
|
thisGasUsedRatio := make([]float64, blockCount)
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package backend
|
package backend
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math/big"
|
"math/big"
|
||||||
|
|
||||||
@ -13,9 +14,8 @@ import (
|
|||||||
ethtypes "github.com/ethereum/go-ethereum/core/types"
|
ethtypes "github.com/ethereum/go-ethereum/core/types"
|
||||||
"github.com/ethereum/go-ethereum/crypto"
|
"github.com/ethereum/go-ethereum/crypto"
|
||||||
"github.com/ethereum/go-ethereum/signer/core/apitypes"
|
"github.com/ethereum/go-ethereum/signer/core/apitypes"
|
||||||
"github.com/evmos/ethermint/ethereum/eip712"
|
|
||||||
evmtypes "github.com/evmos/ethermint/x/evm/types"
|
evmtypes "github.com/evmos/ethermint/x/evm/types"
|
||||||
"github.com/pkg/errors"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// SendTransaction sends transaction based on received args using Node's key to sign it
|
// SendTransaction sends transaction based on received args using Node's key to sign it
|
||||||
@ -27,6 +27,10 @@ func (b *Backend) SendTransaction(args evmtypes.TransactionArgs) (common.Hash, e
|
|||||||
return common.Hash{}, fmt.Errorf("%s; %s", keystore.ErrNoMatch, err.Error())
|
return common.Hash{}, fmt.Errorf("%s; %s", keystore.ErrNoMatch, err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if args.ChainID != nil && (b.chainID).Cmp((*big.Int)(args.ChainID)) != 0 {
|
||||||
|
return common.Hash{}, fmt.Errorf("chainId does not match node's (have=%v, want=%v)", args.ChainID, (*hexutil.Big)(b.chainID))
|
||||||
|
}
|
||||||
|
|
||||||
args, err = b.SetTxDefaults(args)
|
args, err = b.SetTxDefaults(args)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return common.Hash{}, err
|
return common.Hash{}, err
|
||||||
@ -131,7 +135,7 @@ func (b *Backend) SignTypedData(address common.Address, typedData apitypes.Typed
|
|||||||
return nil, fmt.Errorf("%s; %s", keystore.ErrNoMatch, err.Error())
|
return nil, fmt.Errorf("%s; %s", keystore.ErrNoMatch, err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
sigHash, err := eip712.ComputeTypedDataHash(typedData)
|
sigHash, _, err := apitypes.TypedDataAndHash(typedData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -74,6 +74,7 @@ func (b *Backend) GetTransactionByHash(txHash common.Hash) (*rpctypes.RPCTransac
|
|||||||
uint64(res.Height),
|
uint64(res.Height),
|
||||||
uint64(res.EthTxIndex),
|
uint64(res.EthTxIndex),
|
||||||
baseFee,
|
baseFee,
|
||||||
|
b.chainID,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,6 +103,7 @@ func (b *Backend) getTransactionByHashPending(txHash common.Hash) (*rpctypes.RPC
|
|||||||
uint64(0),
|
uint64(0),
|
||||||
uint64(0),
|
uint64(0),
|
||||||
nil,
|
nil,
|
||||||
|
b.chainID,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -214,6 +216,7 @@ func (b *Backend) GetTransactionReceipt(hash common.Hash) (map[string]interface{
|
|||||||
// sender and receiver (contract or EOA) addreses
|
// sender and receiver (contract or EOA) addreses
|
||||||
"from": from,
|
"from": from,
|
||||||
"to": txData.GetTo(),
|
"to": txData.GetTo(),
|
||||||
|
"type": hexutil.Uint(ethMsg.AsTransaction().Type()),
|
||||||
}
|
}
|
||||||
|
|
||||||
if logs == nil {
|
if logs == nil {
|
||||||
@ -386,5 +389,6 @@ func (b *Backend) GetTransactionByBlockAndIndex(block *tmrpctypes.ResultBlock, i
|
|||||||
uint64(block.Block.Height),
|
uint64(block.Block.Height),
|
||||||
uint64(idx),
|
uint64(idx),
|
||||||
baseFee,
|
baseFee,
|
||||||
|
b.chainID,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -499,6 +499,7 @@ func (e *PublicAPI) GetPendingTransactions() ([]*rpctypes.RPCTransaction, error)
|
|||||||
uint64(0),
|
uint64(0),
|
||||||
uint64(0),
|
uint64(0),
|
||||||
nil,
|
nil,
|
||||||
|
e.backend.ChainConfig().ChainID,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -33,6 +33,7 @@ const (
|
|||||||
BlockParamEarliest = "earliest"
|
BlockParamEarliest = "earliest"
|
||||||
BlockParamLatest = "latest"
|
BlockParamLatest = "latest"
|
||||||
BlockParamFinalized = "finalized"
|
BlockParamFinalized = "finalized"
|
||||||
|
BlockParamSafe = "safe"
|
||||||
BlockParamPending = "pending"
|
BlockParamPending = "pending"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -73,7 +74,7 @@ func (bn *BlockNumber) UnmarshalJSON(data []byte) error {
|
|||||||
case BlockParamEarliest:
|
case BlockParamEarliest:
|
||||||
*bn = EthEarliestBlockNumber
|
*bn = EthEarliestBlockNumber
|
||||||
return nil
|
return nil
|
||||||
case BlockParamLatest, BlockParamFinalized:
|
case BlockParamLatest, BlockParamFinalized, BlockParamSafe:
|
||||||
*bn = EthLatestBlockNumber
|
*bn = EthLatestBlockNumber
|
||||||
return nil
|
return nil
|
||||||
case BlockParamPending:
|
case BlockParamPending:
|
||||||
|
@ -145,15 +145,17 @@ func NewTransactionFromMsg(
|
|||||||
blockHash common.Hash,
|
blockHash common.Hash,
|
||||||
blockNumber, index uint64,
|
blockNumber, index uint64,
|
||||||
baseFee *big.Int,
|
baseFee *big.Int,
|
||||||
|
chainID *big.Int,
|
||||||
) (*RPCTransaction, error) {
|
) (*RPCTransaction, error) {
|
||||||
tx := msg.AsTransaction()
|
tx := msg.AsTransaction()
|
||||||
return NewRPCTransaction(tx, blockHash, blockNumber, index, baseFee)
|
return NewRPCTransaction(tx, blockHash, blockNumber, index, baseFee, chainID)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewTransactionFromData returns a transaction that will serialize to the RPC
|
// NewTransactionFromData returns a transaction that will serialize to the RPC
|
||||||
// representation, with the given location metadata set (if available).
|
// representation, with the given location metadata set (if available).
|
||||||
func NewRPCTransaction(
|
func NewRPCTransaction(
|
||||||
tx *ethtypes.Transaction, blockHash common.Hash, blockNumber, index uint64, baseFee *big.Int,
|
tx *ethtypes.Transaction, blockHash common.Hash, blockNumber, index uint64, baseFee *big.Int,
|
||||||
|
chainID *big.Int,
|
||||||
) (*RPCTransaction, error) {
|
) (*RPCTransaction, error) {
|
||||||
// Determine the signer. For replay-protected transactions, use the most permissive
|
// Determine the signer. For replay-protected transactions, use the most permissive
|
||||||
// signer, because we assume that signers are backwards-compatible with old
|
// signer, because we assume that signers are backwards-compatible with old
|
||||||
@ -180,6 +182,7 @@ func NewRPCTransaction(
|
|||||||
V: (*hexutil.Big)(v),
|
V: (*hexutil.Big)(v),
|
||||||
R: (*hexutil.Big)(r),
|
R: (*hexutil.Big)(r),
|
||||||
S: (*hexutil.Big)(s),
|
S: (*hexutil.Big)(s),
|
||||||
|
ChainID: (*hexutil.Big)(chainID),
|
||||||
}
|
}
|
||||||
if blockHash != (common.Hash{}) {
|
if blockHash != (common.Hash{}) {
|
||||||
result.BlockHash = &blockHash
|
result.BlockHash = &blockHash
|
||||||
|
@ -33,7 +33,7 @@ print(Account.from_mnemonic('$VALIDATOR1_MNEMONIC').key.hex().replace('0x',''))
|
|||||||
cat > $tmpfile << EOF
|
cat > $tmpfile << EOF
|
||||||
$validator_key
|
$validator_key
|
||||||
EOF
|
EOF
|
||||||
geth --datadir $DATA account import $tmpfile --password $pwdfile
|
geth --datadir $DATA --password $pwdfile account import $tmpfile
|
||||||
|
|
||||||
# import community key
|
# import community key
|
||||||
community_key=$(python -c """
|
community_key=$(python -c """
|
||||||
@ -45,7 +45,7 @@ print(Account.from_mnemonic('$COMMUNITY_MNEMONIC').key.hex().replace('0x',''))
|
|||||||
cat > $tmpfile << EOF
|
cat > $tmpfile << EOF
|
||||||
$community_key
|
$community_key
|
||||||
EOF
|
EOF
|
||||||
geth --datadir $DATA account import $tmpfile --password $pwdfile
|
geth --datadir $DATA --password $pwdfile account import $tmpfile
|
||||||
|
|
||||||
rm $tmpfile
|
rm $tmpfile
|
||||||
|
|
||||||
|
File diff suppressed because one or more lines are too long
@ -43,7 +43,7 @@ def test_block_filter(cluster):
|
|||||||
|
|
||||||
def test_event_log_filter_by_contract(cluster):
|
def test_event_log_filter_by_contract(cluster):
|
||||||
w3: Web3 = cluster.w3
|
w3: Web3 = cluster.w3
|
||||||
contract = deploy_contract(w3, CONTRACTS["Greeter"])
|
contract, _ = deploy_contract(w3, CONTRACTS["Greeter"])
|
||||||
assert contract.caller.greet() == "Hello"
|
assert contract.caller.greet() == "Hello"
|
||||||
|
|
||||||
# Create new filter from contract
|
# Create new filter from contract
|
||||||
@ -81,7 +81,7 @@ def test_event_log_filter_by_contract(cluster):
|
|||||||
def test_event_log_filter_by_address(cluster):
|
def test_event_log_filter_by_address(cluster):
|
||||||
w3: Web3 = cluster.w3
|
w3: Web3 = cluster.w3
|
||||||
|
|
||||||
contract = deploy_contract(w3, CONTRACTS["Greeter"])
|
contract, _ = deploy_contract(w3, CONTRACTS["Greeter"])
|
||||||
assert contract.caller.greet() == "Hello"
|
assert contract.caller.greet() == "Hello"
|
||||||
|
|
||||||
flt = w3.eth.filter({"address": contract.address})
|
flt = w3.eth.filter({"address": contract.address})
|
||||||
@ -103,7 +103,7 @@ def test_event_log_filter_by_address(cluster):
|
|||||||
def test_get_logs(cluster):
|
def test_get_logs(cluster):
|
||||||
w3: Web3 = cluster.w3
|
w3: Web3 = cluster.w3
|
||||||
|
|
||||||
contract = deploy_contract(w3, CONTRACTS["Greeter"])
|
contract, _ = deploy_contract(w3, CONTRACTS["Greeter"])
|
||||||
|
|
||||||
# without tx
|
# without tx
|
||||||
assert w3.eth.get_logs({"address": contract.address}) == []
|
assert w3.eth.get_logs({"address": contract.address}) == []
|
||||||
|
@ -34,7 +34,7 @@ def test_pruned_node(pruned):
|
|||||||
test basic json-rpc apis works in pruned node
|
test basic json-rpc apis works in pruned node
|
||||||
"""
|
"""
|
||||||
w3 = pruned.w3
|
w3 = pruned.w3
|
||||||
erc20 = deploy_contract(
|
erc20, _ = deploy_contract(
|
||||||
w3,
|
w3,
|
||||||
CONTRACTS["TestERC20A"],
|
CONTRACTS["TestERC20A"],
|
||||||
key=KEYS["validator"],
|
key=KEYS["validator"],
|
||||||
|
52
tests/integration_tests/test_tracers.py
Normal file
52
tests/integration_tests/test_tracers.py
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
|
||||||
|
from web3 import Web3
|
||||||
|
|
||||||
|
from .expected_constants import (
|
||||||
|
EXPECTED_CALLTRACERS,
|
||||||
|
EXPECTED_CONTRACT_CREATE_TRACER,
|
||||||
|
EXPECTED_STRUCT_TRACER,
|
||||||
|
)
|
||||||
|
from .utils import (
|
||||||
|
ADDRS,
|
||||||
|
CONTRACTS,
|
||||||
|
KEYS,
|
||||||
|
deploy_contract,
|
||||||
|
send_transaction,
|
||||||
|
w3_wait_for_new_blocks,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_tracers(ethermint_rpc_ws):
|
||||||
|
w3: Web3 = ethermint_rpc_ws.w3
|
||||||
|
eth_rpc = w3.provider
|
||||||
|
gas_price = w3.eth.gas_price
|
||||||
|
tx = {"to": ADDRS["community"], "value": 100, "gasPrice": gas_price}
|
||||||
|
tx_hash = send_transaction(w3, tx, KEYS["validator"])["transactionHash"].hex()
|
||||||
|
|
||||||
|
tx_res = eth_rpc.make_request("debug_traceTransaction", [tx_hash])
|
||||||
|
assert tx_res["result"] == EXPECTED_STRUCT_TRACER, ""
|
||||||
|
|
||||||
|
tx_res = eth_rpc.make_request(
|
||||||
|
"debug_traceTransaction", [tx_hash, {"tracer": "callTracer"}]
|
||||||
|
)
|
||||||
|
assert tx_res["result"] == EXPECTED_CALLTRACERS, ""
|
||||||
|
|
||||||
|
tx_res = eth_rpc.make_request(
|
||||||
|
"debug_traceTransaction",
|
||||||
|
[tx_hash, {"tracer": "callTracer", "tracerConfig": "{'onlyTopCall':True}"}],
|
||||||
|
)
|
||||||
|
assert tx_res["result"] == EXPECTED_CALLTRACERS, ""
|
||||||
|
|
||||||
|
_, tx = deploy_contract(
|
||||||
|
w3,
|
||||||
|
CONTRACTS["TestERC20A"],
|
||||||
|
)
|
||||||
|
tx_hash = tx["transactionHash"].hex()
|
||||||
|
|
||||||
|
w3_wait_for_new_blocks(w3, 1)
|
||||||
|
|
||||||
|
tx_res = eth_rpc.make_request(
|
||||||
|
"debug_traceTransaction", [tx_hash, {"tracer": "callTracer"}]
|
||||||
|
)
|
||||||
|
tx_res["result"]["to"] = EXPECTED_CONTRACT_CREATE_TRACER["to"]
|
||||||
|
assert tx_res["result"] == EXPECTED_CONTRACT_CREATE_TRACER, ""
|
@ -49,8 +49,7 @@ def get_blocks(ethermint_rpc_ws, geth, with_transactions):
|
|||||||
with_transactions,
|
with_transactions,
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
res, err = same_types(eth_rsp, geth_rsp)
|
compare_types(eth_rsp, geth_rsp)
|
||||||
assert res, err
|
|
||||||
|
|
||||||
# Get not existing block
|
# Get not existing block
|
||||||
make_same_rpc_calls(
|
make_same_rpc_calls(
|
||||||
@ -157,7 +156,7 @@ def test_balance(ethermint_rpc_ws, geth):
|
|||||||
|
|
||||||
|
|
||||||
def deploy_and_wait(w3, number=1):
|
def deploy_and_wait(w3, number=1):
|
||||||
contract = deploy_contract(
|
contract, _ = deploy_contract(
|
||||||
w3,
|
w3,
|
||||||
CONTRACTS["TestERC20A"],
|
CONTRACTS["TestERC20A"],
|
||||||
)
|
)
|
||||||
@ -179,8 +178,7 @@ def test_get_storage_at(ethermint_rpc_ws, geth):
|
|||||||
|
|
||||||
contract = deploy_and_wait(w3)
|
contract = deploy_and_wait(w3)
|
||||||
res = eth_rpc.make_request("eth_getStorageAt", [contract.address, "0x0", "latest"])
|
res = eth_rpc.make_request("eth_getStorageAt", [contract.address, "0x0", "latest"])
|
||||||
res, err = same_types(res["result"], EXPECTED_GET_STORAGE_AT)
|
compare_types(res["result"], EXPECTED_GET_STORAGE_AT)
|
||||||
assert res, err
|
|
||||||
|
|
||||||
|
|
||||||
def send_tnx(w3, tx_value=10):
|
def send_tnx(w3, tx_value=10):
|
||||||
@ -215,16 +213,15 @@ def test_get_proof(ethermint_rpc_ws, geth):
|
|||||||
proof = (eth_rpc.make_request(
|
proof = (eth_rpc.make_request(
|
||||||
method, [validator, ["0x0"], hex(res["blockNumber"])]
|
method, [validator, ["0x0"], hex(res["blockNumber"])]
|
||||||
))["result"]
|
))["result"]
|
||||||
res, err = same_types(proof, EXPECTED_GET_PROOF)
|
compare_types(proof, EXPECTED_GET_PROOF["result"])
|
||||||
assert res, err
|
|
||||||
assert proof["accountProof"], EXPECTED_ACCOUNT_PROOF
|
assert proof["accountProof"], EXPECTED_ACCOUNT_PROOF
|
||||||
assert proof["storageProof"][0]["proof"], EXPECTED_STORAGE_PROOF
|
assert proof["storageProof"][0]["proof"], EXPECTED_STORAGE_PROOF
|
||||||
|
|
||||||
proof = (geth_rpc.make_request(
|
_ = send_and_get_hash(w3)
|
||||||
|
proof = eth_rpc.make_request(
|
||||||
method, [validator, ["0x0"], "latest"]
|
method, [validator, ["0x0"], "latest"]
|
||||||
))["result"]
|
)
|
||||||
res, err = same_types(proof, EXPECTED_GET_PROOF)
|
compare_types(proof, EXPECTED_GET_PROOF)
|
||||||
assert res, err
|
|
||||||
|
|
||||||
|
|
||||||
def test_get_code(ethermint_rpc_ws, geth):
|
def test_get_code(ethermint_rpc_ws, geth):
|
||||||
@ -241,9 +238,8 @@ def test_get_code(ethermint_rpc_ws, geth):
|
|||||||
# Do an ethereum transfer
|
# Do an ethereum transfer
|
||||||
contract = deploy_and_wait(w3)
|
contract = deploy_and_wait(w3)
|
||||||
code = eth_rpc.make_request("eth_getCode", [contract.address, "latest"])
|
code = eth_rpc.make_request("eth_getCode", [contract.address, "latest"])
|
||||||
expected = {"id": "4", "jsonrpc": "2.0", "result": "0x"}
|
expected = {"id": 4, "jsonrpc": "2.0", "result": "0x"}
|
||||||
res, err = same_types(code, expected)
|
compare_types(code, expected)
|
||||||
assert res, err
|
|
||||||
|
|
||||||
|
|
||||||
def test_get_block_transaction_count(ethermint_rpc_ws, geth):
|
def test_get_block_transaction_count(ethermint_rpc_ws, geth):
|
||||||
@ -255,7 +251,7 @@ def test_get_block_transaction_count(ethermint_rpc_ws, geth):
|
|||||||
)
|
)
|
||||||
|
|
||||||
make_same_rpc_calls(
|
make_same_rpc_calls(
|
||||||
eth_rpc, geth_rpc, "eth_getBlockTransactionCountByNumber", ["0x100"]
|
eth_rpc, geth_rpc, "eth_getBlockTransactionCountByNumber", ["0x1000"]
|
||||||
)
|
)
|
||||||
|
|
||||||
tx_hash = send_and_get_hash(w3)
|
tx_hash = send_and_get_hash(w3)
|
||||||
@ -267,9 +263,8 @@ def test_get_block_transaction_count(ethermint_rpc_ws, geth):
|
|||||||
"eth_getBlockTransactionCountByNumber", [block_number]
|
"eth_getBlockTransactionCountByNumber", [block_number]
|
||||||
)
|
)
|
||||||
|
|
||||||
expected = {"id": "1", "jsonrpc": "2.0", "result": "0x1"}
|
expected = {"id": 1, "jsonrpc": "2.0", "result": "0x1"}
|
||||||
res, err = same_types(block_res, expected)
|
compare_types(block_res, expected)
|
||||||
assert res, err
|
|
||||||
|
|
||||||
make_same_rpc_calls(
|
make_same_rpc_calls(
|
||||||
eth_rpc,
|
eth_rpc,
|
||||||
@ -278,9 +273,8 @@ def test_get_block_transaction_count(ethermint_rpc_ws, geth):
|
|||||||
["0x4e3a3754410177e6937ef1f84bba68ea139e8d1a2258c5f85db9f1cd715a1bdd"],
|
["0x4e3a3754410177e6937ef1f84bba68ea139e8d1a2258c5f85db9f1cd715a1bdd"],
|
||||||
)
|
)
|
||||||
block_res = eth_rpc.make_request("eth_getBlockTransactionCountByHash", [block_hash])
|
block_res = eth_rpc.make_request("eth_getBlockTransactionCountByHash", [block_hash])
|
||||||
expected = {"id": "1", "jsonrpc": "2.0", "result": "0x1"}
|
expected = {"id": 1, "jsonrpc": "2.0", "result": "0x1"}
|
||||||
res, err = same_types(block_res, expected)
|
compare_types(block_res, expected)
|
||||||
assert res, err
|
|
||||||
|
|
||||||
|
|
||||||
def test_get_transaction(ethermint_rpc_ws, geth):
|
def test_get_transaction(ethermint_rpc_ws, geth):
|
||||||
@ -297,8 +291,8 @@ def test_get_transaction(ethermint_rpc_ws, geth):
|
|||||||
tx_hash = send_and_get_hash(w3)
|
tx_hash = send_and_get_hash(w3)
|
||||||
|
|
||||||
tx_res = eth_rpc.make_request("eth_getTransactionByHash", [tx_hash])
|
tx_res = eth_rpc.make_request("eth_getTransactionByHash", [tx_hash])
|
||||||
res, err = same_types(tx_res, EXPECTED_GET_TRANSACTION)
|
|
||||||
assert res, err
|
compare_types(EXPECTED_GET_TRANSACTION, tx_res)
|
||||||
|
|
||||||
|
|
||||||
def test_get_transaction_receipt(ethermint_rpc_ws, geth):
|
def test_get_transaction_receipt(ethermint_rpc_ws, geth):
|
||||||
@ -315,8 +309,7 @@ def test_get_transaction_receipt(ethermint_rpc_ws, geth):
|
|||||||
tx_hash = send_and_get_hash(w3)
|
tx_hash = send_and_get_hash(w3)
|
||||||
|
|
||||||
tx_res = eth_rpc.make_request("eth_getTransactionReceipt", [tx_hash])
|
tx_res = eth_rpc.make_request("eth_getTransactionReceipt", [tx_hash])
|
||||||
res, err = same_types(tx_res["result"], EXPECTED_GET_TRANSACTION_RECEIPT)
|
compare_types(tx_res, EXPECTED_GET_TRANSACTION_RECEIPT)
|
||||||
assert res, err
|
|
||||||
|
|
||||||
|
|
||||||
def test_fee_history(ethermint_rpc_ws, geth):
|
def test_fee_history(ethermint_rpc_ws, geth):
|
||||||
@ -327,10 +320,10 @@ def test_fee_history(ethermint_rpc_ws, geth):
|
|||||||
|
|
||||||
make_same_rpc_calls(eth_rpc, geth_rpc, "eth_feeHistory", [4, "0x5000", [10, 90]])
|
make_same_rpc_calls(eth_rpc, geth_rpc, "eth_feeHistory", [4, "0x5000", [10, 90]])
|
||||||
|
|
||||||
fee_history = eth_rpc.make_request("eth_feeHistory", [4, "latest", [10, 90]])
|
_ = send_and_get_hash(w3)
|
||||||
|
fee_history = eth_rpc.make_request("eth_feeHistory", [4, "latest", [100]])
|
||||||
|
|
||||||
res, err = same_types(fee_history["result"], EXPECTED_FEE_HISTORY)
|
compare_types(fee_history, EXPECTED_FEE_HISTORY)
|
||||||
assert res, err
|
|
||||||
|
|
||||||
|
|
||||||
def test_estimate_gas(ethermint_rpc_ws, geth):
|
def test_estimate_gas(ethermint_rpc_ws, geth):
|
||||||
@ -345,11 +338,19 @@ def test_estimate_gas(ethermint_rpc_ws, geth):
|
|||||||
make_same_rpc_calls(eth_rpc, geth_rpc, "eth_estimateGas", [{}])
|
make_same_rpc_calls(eth_rpc, geth_rpc, "eth_estimateGas", [{}])
|
||||||
|
|
||||||
|
|
||||||
|
def compare_types(actual, expected):
|
||||||
|
res, err = same_types(actual, expected)
|
||||||
|
if not res:
|
||||||
|
print(err)
|
||||||
|
print(actual)
|
||||||
|
print(expected)
|
||||||
|
assert res, err
|
||||||
|
|
||||||
|
|
||||||
def make_same_rpc_calls(rpc1, rpc2, method, params):
|
def make_same_rpc_calls(rpc1, rpc2, method, params):
|
||||||
res1 = rpc1.make_request(method, params)
|
res1 = rpc1.make_request(method, params)
|
||||||
res2 = rpc2.make_request(method, params)
|
res2 = rpc2.make_request(method, params)
|
||||||
res, err = same_types(res1, res2)
|
compare_types(res1, res2)
|
||||||
assert res, err
|
|
||||||
|
|
||||||
|
|
||||||
def test_incomplete_send_transaction(ethermint_rpc_ws, geth):
|
def test_incomplete_send_transaction(ethermint_rpc_ws, geth):
|
||||||
@ -362,37 +363,45 @@ def test_incomplete_send_transaction(ethermint_rpc_ws, geth):
|
|||||||
make_same_rpc_calls(eth_rpc, geth_rpc, "eth_sendTransaction", [tx])
|
make_same_rpc_calls(eth_rpc, geth_rpc, "eth_sendTransaction", [tx])
|
||||||
|
|
||||||
|
|
||||||
def same_types(object_a, object_b):
|
def same_types(given, expected):
|
||||||
|
if isinstance(given, dict):
|
||||||
if isinstance(object_a, dict):
|
if not isinstance(expected, dict):
|
||||||
if not isinstance(object_b, dict):
|
|
||||||
return False, "A is dict, B is not"
|
return False, "A is dict, B is not"
|
||||||
keys = list(set(list(object_a.keys()) + list(object_b.keys())))
|
keys = list(set(list(given.keys()) + list(expected.keys())))
|
||||||
for key in keys:
|
for key in keys:
|
||||||
if key in object_b and key in object_a:
|
if key not in expected or key not in given:
|
||||||
if not same_types(object_a[key], object_b[key]):
|
return False, key + " key not on both json"
|
||||||
return False, key + " key on dict are not of same type"
|
res, err = same_types(given[key], expected[key])
|
||||||
else:
|
if not res:
|
||||||
return False, key + " key on json is not in both results"
|
return res, key + " key failed. Error: " + err
|
||||||
return True, ""
|
return True, ""
|
||||||
elif isinstance(object_a, list):
|
elif isinstance(given, list):
|
||||||
if not isinstance(object_b, list):
|
if not isinstance(expected, list):
|
||||||
return False, "A is list, B is not"
|
return False, "A is list, B is not"
|
||||||
if len(object_a) == 0 and len(object_b) == 0:
|
if len(given) == 0 and len(expected) == 0:
|
||||||
return True, ""
|
return True, ""
|
||||||
if len(object_a) > 0 and len(object_b) > 0:
|
if len(given) > 0 and len(expected) > 0:
|
||||||
return same_types(object_a[0], object_b[0])
|
return same_types(given[0], expected[0])
|
||||||
else:
|
else:
|
||||||
return True
|
|
||||||
elif object_a is None and object_b is None:
|
|
||||||
return True, ""
|
return True, ""
|
||||||
elif type(object_a) is type(object_b):
|
elif given is None and expected is None:
|
||||||
|
return True, ""
|
||||||
|
elif type(given) is type(expected):
|
||||||
|
return True, ""
|
||||||
|
elif (
|
||||||
|
type(given) is int
|
||||||
|
and type(expected) is float
|
||||||
|
and given == 0
|
||||||
|
or type(expected) is int
|
||||||
|
and type(given) is float
|
||||||
|
and expected == 0
|
||||||
|
):
|
||||||
return True, ""
|
return True, ""
|
||||||
else:
|
else:
|
||||||
return (
|
return (
|
||||||
False,
|
False,
|
||||||
"different types. A is type "
|
"different types. Given object is type "
|
||||||
+ type(object_a).__name__
|
+ type(given).__name__
|
||||||
+ " B is type "
|
+ " expected object is type "
|
||||||
+ type(object_b).__name__,
|
+ type(expected).__name__,
|
||||||
)
|
)
|
||||||
|
@ -97,7 +97,7 @@ def test_cosmovisor_upgrade(custom_ethermint: Ethermint):
|
|||||||
print("upgrade height", target_height)
|
print("upgrade height", target_height)
|
||||||
|
|
||||||
w3 = custom_ethermint.w3
|
w3 = custom_ethermint.w3
|
||||||
contract = deploy_contract(w3, CONTRACTS["TestERC20A"])
|
contract, _ = deploy_contract(w3, CONTRACTS["TestERC20A"])
|
||||||
old_height = w3.eth.block_number
|
old_height = w3.eth.block_number
|
||||||
old_balance = w3.eth.get_balance(ADDRS["validator"], block_identifier=old_height)
|
old_balance = w3.eth.get_balance(ADDRS["validator"], block_identifier=old_height)
|
||||||
old_base_fee = w3.eth.get_block(old_height).baseFeePerGas
|
old_base_fee = w3.eth.get_block(old_height).baseFeePerGas
|
||||||
|
@ -114,7 +114,7 @@ def wait_for_block_time(cli, t):
|
|||||||
print("wait for block time", t)
|
print("wait for block time", t)
|
||||||
while True:
|
while True:
|
||||||
now = isoparse((cli.status())["SyncInfo"]["latest_block_time"])
|
now = isoparse((cli.status())["SyncInfo"]["latest_block_time"])
|
||||||
print("block time now:", now)
|
print("block time now: ", now)
|
||||||
if now >= t:
|
if now >= t:
|
||||||
break
|
break
|
||||||
time.sleep(0.5)
|
time.sleep(0.5)
|
||||||
@ -131,7 +131,7 @@ def deploy_contract(w3, jsonfile, args=(), key=KEYS["validator"]):
|
|||||||
txreceipt = send_transaction(w3, tx, key)
|
txreceipt = send_transaction(w3, tx, key)
|
||||||
assert txreceipt.status == 1
|
assert txreceipt.status == 1
|
||||||
address = txreceipt.contractAddress
|
address = txreceipt.contractAddress
|
||||||
return w3.eth.contract(address=address, abi=info["abi"])
|
return w3.eth.contract(address=address, abi=info["abi"]), txreceipt
|
||||||
|
|
||||||
|
|
||||||
def fill_defaults(w3, tx):
|
def fill_defaults(w3, tx):
|
||||||
|
@ -420,7 +420,13 @@ func (k Keeper) TraceTx(c context.Context, req *types.QueryTraceTxRequest) (*typ
|
|||||||
txConfig.TxIndex++
|
txConfig.TxIndex++
|
||||||
}
|
}
|
||||||
|
|
||||||
result, _, err := k.traceTx(ctx, cfg, txConfig, signer, tx, req.TraceConfig, false)
|
var tracerConfig json.RawMessage
|
||||||
|
if req.TraceConfig != nil && req.TraceConfig.TracerJsonConfig != "" {
|
||||||
|
// ignore error. default to no traceConfig
|
||||||
|
_ = json.Unmarshal([]byte(req.TraceConfig.TracerJsonConfig), &tracerConfig)
|
||||||
|
}
|
||||||
|
|
||||||
|
result, _, err := k.traceTx(ctx, cfg, txConfig, signer, tx, req.TraceConfig, false, tracerConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// error will be returned with detail status from traceTx
|
// error will be returned with detail status from traceTx
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -473,7 +479,7 @@ func (k Keeper) TraceBlock(c context.Context, req *types.QueryTraceBlockRequest)
|
|||||||
ethTx := tx.AsTransaction()
|
ethTx := tx.AsTransaction()
|
||||||
txConfig.TxHash = ethTx.Hash()
|
txConfig.TxHash = ethTx.Hash()
|
||||||
txConfig.TxIndex = uint(i)
|
txConfig.TxIndex = uint(i)
|
||||||
traceResult, logIndex, err := k.traceTx(ctx, cfg, txConfig, signer, ethTx, req.TraceConfig, true)
|
traceResult, logIndex, err := k.traceTx(ctx, cfg, txConfig, signer, ethTx, req.TraceConfig, true, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
result.Error = err.Error()
|
result.Error = err.Error()
|
||||||
continue
|
continue
|
||||||
@ -502,6 +508,7 @@ func (k *Keeper) traceTx(
|
|||||||
tx *ethtypes.Transaction,
|
tx *ethtypes.Transaction,
|
||||||
traceConfig *types.TraceConfig,
|
traceConfig *types.TraceConfig,
|
||||||
commitMessage bool,
|
commitMessage bool,
|
||||||
|
tracerJSONConfig json.RawMessage,
|
||||||
) (*interface{}, uint, error) {
|
) (*interface{}, uint, error) {
|
||||||
// Assemble the structured logger or the JavaScript tracer
|
// Assemble the structured logger or the JavaScript tracer
|
||||||
var (
|
var (
|
||||||
@ -542,7 +549,7 @@ func (k *Keeper) traceTx(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if traceConfig.Tracer != "" {
|
if traceConfig.Tracer != "" {
|
||||||
if tracer, err = tracers.New(traceConfig.Tracer, tCtx); err != nil {
|
if tracer, err = tracers.New(traceConfig.Tracer, tCtx, tracerJSONConfig); err != nil {
|
||||||
return nil, 0, status.Error(codes.Internal, err.Error())
|
return nil, 0, status.Error(codes.Internal, err.Error())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -424,7 +424,8 @@ func (k *Keeper) ApplyMessageWithConfig(ctx sdk.Context,
|
|||||||
return nil, errorsmod.Wrap(types.ErrGasOverflow, "apply message")
|
return nil, errorsmod.Wrap(types.ErrGasOverflow, "apply message")
|
||||||
}
|
}
|
||||||
// refund gas
|
// refund gas
|
||||||
leftoverGas += GasToRefund(stateDB.GetRefund(), msg.Gas()-leftoverGas, refundQuotient)
|
temporaryGasUsed := msg.Gas() - leftoverGas
|
||||||
|
leftoverGas += GasToRefund(stateDB.GetRefund(), temporaryGasUsed, refundQuotient)
|
||||||
|
|
||||||
// EVM execution error needs to be available for the JSON-RPC client
|
// EVM execution error needs to be available for the JSON-RPC client
|
||||||
var vmError string
|
var vmError string
|
||||||
@ -449,7 +450,7 @@ func (k *Keeper) ApplyMessageWithConfig(ctx sdk.Context,
|
|||||||
if msg.Gas() < leftoverGas {
|
if msg.Gas() < leftoverGas {
|
||||||
return nil, errorsmod.Wrapf(types.ErrGasOverflow, "message gas limit < leftover gas (%d < %d)", msg.Gas(), leftoverGas)
|
return nil, errorsmod.Wrapf(types.ErrGasOverflow, "message gas limit < leftover gas (%d < %d)", msg.Gas(), leftoverGas)
|
||||||
}
|
}
|
||||||
temporaryGasUsed := msg.Gas() - leftoverGas
|
|
||||||
gasUsed := sdk.MaxDec(minimumGasUsed, sdk.NewDec(int64(temporaryGasUsed))).TruncateInt().Uint64()
|
gasUsed := sdk.MaxDec(minimumGasUsed, sdk.NewDec(int64(temporaryGasUsed))).TruncateInt().Uint64()
|
||||||
// reset leftoverGas, to be used by the tracer
|
// reset leftoverGas, to be used by the tracer
|
||||||
leftoverGas = msg.Gas() - gasUsed
|
leftoverGas = msg.Gas() - gasUsed
|
||||||
|
@ -35,6 +35,8 @@ func (cc ChainConfig) EthereumConfig(chainID *big.Int) *params.ChainConfig {
|
|||||||
ArrowGlacierBlock: getBlockValue(cc.ArrowGlacierBlock),
|
ArrowGlacierBlock: getBlockValue(cc.ArrowGlacierBlock),
|
||||||
GrayGlacierBlock: getBlockValue(cc.GrayGlacierBlock),
|
GrayGlacierBlock: getBlockValue(cc.GrayGlacierBlock),
|
||||||
MergeNetsplitBlock: getBlockValue(cc.MergeNetsplitBlock),
|
MergeNetsplitBlock: getBlockValue(cc.MergeNetsplitBlock),
|
||||||
|
ShanghaiBlock: nil, // TODO: add shanghai block
|
||||||
|
CancunBlock: nil, // TODO: add cancun block
|
||||||
TerminalTotalDifficulty: nil,
|
TerminalTotalDifficulty: nil,
|
||||||
Ethash: nil,
|
Ethash: nil,
|
||||||
Clique: nil,
|
Clique: nil,
|
||||||
|
249
x/evm/types/evm.pb.go
generated
249
x/evm/types/evm.pb.go
generated
@ -550,6 +550,8 @@ type TraceConfig struct {
|
|||||||
EnableMemory bool `protobuf:"varint,11,opt,name=enable_memory,json=enableMemory,proto3" json:"enableMemory"`
|
EnableMemory bool `protobuf:"varint,11,opt,name=enable_memory,json=enableMemory,proto3" json:"enableMemory"`
|
||||||
// enable return data capture
|
// enable return data capture
|
||||||
EnableReturnData bool `protobuf:"varint,12,opt,name=enable_return_data,json=enableReturnData,proto3" json:"enableReturnData"`
|
EnableReturnData bool `protobuf:"varint,12,opt,name=enable_return_data,json=enableReturnData,proto3" json:"enableReturnData"`
|
||||||
|
// tracer config
|
||||||
|
TracerJsonConfig string `protobuf:"bytes,13,opt,name=tracer_json_config,json=tracerJsonConfig,proto3" json:"tracerConfig"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *TraceConfig) Reset() { *m = TraceConfig{} }
|
func (m *TraceConfig) Reset() { *m = TraceConfig{} }
|
||||||
@ -655,6 +657,13 @@ func (m *TraceConfig) GetEnableReturnData() bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *TraceConfig) GetTracerJsonConfig() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.TracerJsonConfig
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
proto.RegisterType((*Params)(nil), "ethermint.evm.v1.Params")
|
proto.RegisterType((*Params)(nil), "ethermint.evm.v1.Params")
|
||||||
proto.RegisterType((*ChainConfig)(nil), "ethermint.evm.v1.ChainConfig")
|
proto.RegisterType((*ChainConfig)(nil), "ethermint.evm.v1.ChainConfig")
|
||||||
@ -669,104 +678,105 @@ func init() {
|
|||||||
func init() { proto.RegisterFile("ethermint/evm/v1/evm.proto", fileDescriptor_d21ecc92c8c8583e) }
|
func init() { proto.RegisterFile("ethermint/evm/v1/evm.proto", fileDescriptor_d21ecc92c8c8583e) }
|
||||||
|
|
||||||
var fileDescriptor_d21ecc92c8c8583e = []byte{
|
var fileDescriptor_d21ecc92c8c8583e = []byte{
|
||||||
// 1538 bytes of a gzipped FileDescriptorProto
|
// 1565 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0x5d, 0x4f, 0xdc, 0xca,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0xdd, 0x4e, 0x23, 0xc9,
|
||||||
0x19, 0x06, 0x76, 0x01, 0xef, 0xec, 0xb2, 0x6b, 0x86, 0x85, 0x6e, 0x88, 0x8a, 0xa9, 0x2f, 0x2a,
|
0x15, 0x06, 0xdc, 0x40, 0xbb, 0x6c, 0xec, 0xa6, 0x30, 0xc4, 0xcb, 0x28, 0x34, 0xe9, 0x8b, 0x88,
|
||||||
0x2a, 0x25, 0x10, 0x88, 0x50, 0xa3, 0x44, 0x95, 0xca, 0x02, 0x49, 0xa0, 0x69, 0x8a, 0x06, 0xa2,
|
0x48, 0xbb, 0xb0, 0xb0, 0x42, 0x19, 0xed, 0x2a, 0x51, 0x30, 0xb0, 0x33, 0x90, 0xc9, 0x04, 0x15,
|
||||||
0x4a, 0x95, 0x2a, 0x6b, 0xd6, 0x9e, 0x18, 0x17, 0xdb, 0xb3, 0x9a, 0x19, 0x6f, 0x76, 0xdb, 0xfe,
|
0x8c, 0x22, 0x45, 0x8a, 0x5a, 0xe5, 0xee, 0x9a, 0xa6, 0x87, 0xee, 0x2e, 0xab, 0xaa, 0xda, 0x63,
|
||||||
0x80, 0x56, 0xbd, 0xe9, 0x4f, 0xe8, 0xcf, 0x89, 0xaa, 0x5e, 0xe4, 0xb2, 0x3a, 0x17, 0x56, 0x44,
|
0x27, 0x79, 0x80, 0x44, 0xb9, 0xc9, 0x23, 0xcc, 0xe3, 0x8c, 0xa2, 0x5c, 0xcc, 0x65, 0x94, 0x8b,
|
||||||
0xee, 0xb8, 0xdc, 0x5f, 0x70, 0x34, 0x1f, 0xfb, 0x09, 0x3a, 0xe7, 0xc0, 0x95, 0xe7, 0x79, 0x3f,
|
0x56, 0xc4, 0xdc, 0x71, 0xe9, 0x27, 0x88, 0xea, 0xc7, 0xbf, 0xa0, 0x64, 0xe1, 0xca, 0xf5, 0x9d,
|
||||||
0x9e, 0x67, 0x3e, 0x5e, 0xfb, 0x1d, 0x83, 0x75, 0x22, 0x2e, 0x09, 0x4b, 0xa2, 0x54, 0xec, 0x90,
|
0x73, 0xea, 0xfb, 0xaa, 0x4e, 0x9d, 0xf6, 0xa9, 0x02, 0x9b, 0x44, 0x5c, 0x13, 0x96, 0xc6, 0x99,
|
||||||
0x4e, 0xb2, 0xd3, 0xd9, 0x95, 0x8f, 0xed, 0x36, 0xa3, 0x82, 0x42, 0x7b, 0xe8, 0xdb, 0x96, 0xc6,
|
0xd8, 0x23, 0xdd, 0x74, 0xaf, 0xbb, 0x2f, 0x7f, 0x76, 0x3b, 0x8c, 0x0a, 0x0a, 0x9d, 0x91, 0x6f,
|
||||||
0xce, 0xee, 0x7a, 0x3d, 0xa4, 0x21, 0x55, 0xce, 0x1d, 0x39, 0xd2, 0x71, 0xee, 0x3f, 0x0b, 0x60,
|
0x57, 0x1a, 0xbb, 0xfb, 0x9b, 0x8d, 0x88, 0x46, 0x54, 0x39, 0xf7, 0xe4, 0x48, 0xc7, 0x79, 0x7f,
|
||||||
0xe1, 0x0c, 0x33, 0x9c, 0x70, 0xb8, 0x0b, 0x4a, 0xa4, 0x93, 0x78, 0x01, 0x49, 0x69, 0xd2, 0x98,
|
0x2d, 0x81, 0xa5, 0x0b, 0xcc, 0x70, 0xca, 0xe1, 0x3e, 0x28, 0x93, 0x6e, 0xea, 0x87, 0x24, 0xa3,
|
||||||
0xdd, 0x9c, 0xdd, 0x2a, 0x35, 0xeb, 0xfd, 0xdc, 0xb1, 0x7b, 0x38, 0x89, 0x5f, 0xba, 0x43, 0x97,
|
0x69, 0x73, 0x7e, 0x7b, 0x7e, 0xa7, 0xdc, 0x6a, 0x0c, 0x0a, 0xd7, 0xe9, 0xe3, 0x34, 0xf9, 0xd6,
|
||||||
0x8b, 0x2c, 0xd2, 0x49, 0x8e, 0xe4, 0x10, 0xfe, 0x06, 0x2c, 0x91, 0x14, 0xb7, 0x62, 0xe2, 0xf9,
|
0x1b, 0xb9, 0x3c, 0x64, 0x93, 0x6e, 0x7a, 0x22, 0x87, 0xf0, 0x17, 0x60, 0x85, 0x64, 0xb8, 0x9d,
|
||||||
0x8c, 0x60, 0x41, 0x1a, 0x73, 0x9b, 0xb3, 0x5b, 0x56, 0xb3, 0xd1, 0xcf, 0x9d, 0xba, 0x49, 0x1b,
|
0x10, 0x3f, 0x60, 0x04, 0x0b, 0xd2, 0x5c, 0xd8, 0x9e, 0xdf, 0xb1, 0x5b, 0xcd, 0x41, 0xe1, 0x36,
|
||||||
0x77, 0xbb, 0xa8, 0xa2, 0xf1, 0xa1, 0x82, 0xf0, 0xd7, 0xa0, 0x3c, 0xf0, 0xe3, 0x38, 0x6e, 0x14,
|
0xcc, 0xb4, 0x49, 0xb7, 0x87, 0xaa, 0x1a, 0x1f, 0x2b, 0x08, 0x7f, 0x0e, 0x2a, 0x43, 0x3f, 0x4e,
|
||||||
0x54, 0xf2, 0x5a, 0x3f, 0x77, 0xe0, 0x64, 0x32, 0x8e, 0x63, 0x17, 0x01, 0x93, 0x8a, 0xe3, 0x18,
|
0x92, 0x66, 0x49, 0x4d, 0xde, 0x18, 0x14, 0x2e, 0x9c, 0x9e, 0x8c, 0x93, 0xc4, 0x43, 0xc0, 0x4c,
|
||||||
0x1e, 0x00, 0x40, 0xba, 0x82, 0x61, 0x8f, 0x44, 0x6d, 0xde, 0x28, 0x6e, 0x16, 0xb6, 0x0a, 0x4d,
|
0xc5, 0x49, 0x02, 0x8f, 0x00, 0x20, 0x3d, 0xc1, 0xb0, 0x4f, 0xe2, 0x0e, 0x6f, 0x5a, 0xdb, 0xa5,
|
||||||
0xf7, 0x3a, 0x77, 0x4a, 0xc7, 0xd2, 0x7a, 0x7c, 0x72, 0xc6, 0xfb, 0xb9, 0xb3, 0x6c, 0x48, 0x86,
|
0x9d, 0x52, 0xcb, 0xbb, 0x2d, 0xdc, 0xf2, 0xa9, 0xb4, 0x9e, 0x9e, 0x5d, 0xf0, 0x41, 0xe1, 0xae,
|
||||||
0x81, 0x2e, 0x2a, 0x29, 0x70, 0x1c, 0xb5, 0x39, 0xfc, 0x33, 0xa8, 0xf8, 0x97, 0x38, 0x4a, 0x3d,
|
0x1a, 0x92, 0x51, 0xa0, 0x87, 0xca, 0x0a, 0x9c, 0xc6, 0x1d, 0x0e, 0xff, 0x00, 0xaa, 0xc1, 0x35,
|
||||||
0x9f, 0xa6, 0x1f, 0xa3, 0xb0, 0x31, 0xbf, 0x39, 0xbb, 0x55, 0xde, 0xfb, 0xf9, 0xf6, 0xf4, 0xbe,
|
0x8e, 0x33, 0x3f, 0xa0, 0xd9, 0xdb, 0x38, 0x6a, 0x2e, 0x6e, 0xcf, 0xef, 0x54, 0x0e, 0x7e, 0xbc,
|
||||||
0x6d, 0x1f, 0xca, 0xa8, 0x43, 0x15, 0xd4, 0x7c, 0xfc, 0x39, 0x77, 0x66, 0xfa, 0xb9, 0xb3, 0xa2,
|
0x3b, 0x9b, 0xb7, 0xdd, 0x63, 0x19, 0x75, 0xac, 0x82, 0x5a, 0xcf, 0x3e, 0x16, 0xee, 0xdc, 0xa0,
|
||||||
0xa9, 0xc7, 0x09, 0x5c, 0x54, 0xf6, 0x47, 0x91, 0x70, 0x0f, 0xac, 0xe2, 0x38, 0xa6, 0x9f, 0xbc,
|
0x70, 0xd7, 0x34, 0xf5, 0x24, 0x81, 0x87, 0x2a, 0xc1, 0x38, 0x12, 0x1e, 0x80, 0x75, 0x9c, 0x24,
|
||||||
0x2c, 0x95, 0x1b, 0x4d, 0x7c, 0x41, 0x02, 0x4f, 0x74, 0x79, 0x63, 0x41, 0x2e, 0x12, 0xad, 0x28,
|
0xf4, 0xbd, 0x9f, 0x67, 0x32, 0xd1, 0x24, 0x10, 0x24, 0xf4, 0x45, 0x8f, 0x37, 0x97, 0xe4, 0x26,
|
||||||
0xe7, 0x87, 0x91, 0xef, 0xa2, 0xcb, 0xdd, 0xff, 0xd5, 0x40, 0x79, 0x4c, 0x0d, 0x26, 0xa0, 0x76,
|
0xd1, 0x9a, 0x72, 0xbe, 0x19, 0xfb, 0xae, 0x7a, 0xdc, 0xfb, 0x67, 0x1d, 0x54, 0x26, 0xd4, 0x60,
|
||||||
0x49, 0x13, 0xc2, 0x05, 0xc1, 0x81, 0xd7, 0x8a, 0xa9, 0x7f, 0x65, 0x8e, 0xe5, 0xe8, 0xbb, 0xdc,
|
0x0a, 0xea, 0xd7, 0x34, 0x25, 0x5c, 0x10, 0x1c, 0xfa, 0xed, 0x84, 0x06, 0x37, 0xe6, 0x58, 0x4e,
|
||||||
0xf9, 0x65, 0x18, 0x89, 0xcb, 0xac, 0xb5, 0xed, 0xd3, 0x64, 0xc7, 0xa7, 0x3c, 0xa1, 0xdc, 0x3c,
|
0xfe, 0x5d, 0xb8, 0x3f, 0x8d, 0x62, 0x71, 0x9d, 0xb7, 0x77, 0x03, 0x9a, 0xee, 0x05, 0x94, 0xa7,
|
||||||
0x9e, 0xf2, 0xe0, 0x6a, 0x47, 0xf4, 0xda, 0x84, 0x6f, 0x9f, 0xa4, 0xa2, 0x9f, 0x3b, 0x6b, 0x7a,
|
0x94, 0x9b, 0x9f, 0xaf, 0x78, 0x78, 0xb3, 0x27, 0xfa, 0x1d, 0xc2, 0x77, 0xcf, 0x32, 0x31, 0x28,
|
||||||
0xb2, 0x53, 0x54, 0x2e, 0xaa, 0x0e, 0x2d, 0x4d, 0x69, 0x80, 0x3d, 0x50, 0x0d, 0x30, 0xf5, 0x3e,
|
0xdc, 0x0d, 0xbd, 0xd8, 0x19, 0x2a, 0x0f, 0xd5, 0x46, 0x96, 0x96, 0x34, 0xc0, 0x3e, 0xa8, 0x85,
|
||||||
0x52, 0x76, 0x65, 0xd4, 0xe6, 0x94, 0xda, 0xf9, 0x4f, 0x57, 0xbb, 0xce, 0x9d, 0xca, 0xd1, 0xc1,
|
0x98, 0xfa, 0x6f, 0x29, 0xbb, 0x31, 0x6a, 0x0b, 0x4a, 0xed, 0xf2, 0x87, 0xab, 0xdd, 0x16, 0x6e,
|
||||||
0x1f, 0x5e, 0x53, 0x76, 0xa5, 0x38, 0xfb, 0xb9, 0xb3, 0xaa, 0xd5, 0x27, 0x99, 0x5d, 0x54, 0x09,
|
0xf5, 0xe4, 0xe8, 0xb7, 0xdf, 0x53, 0x76, 0xa3, 0x38, 0x07, 0x85, 0xbb, 0xae, 0xd5, 0xa7, 0x99,
|
||||||
0x30, 0x1d, 0x86, 0xc1, 0x3f, 0x02, 0x7b, 0x18, 0xc0, 0xb3, 0x76, 0x9b, 0x32, 0x61, 0xaa, 0xe1,
|
0x3d, 0x54, 0x0d, 0x31, 0x1d, 0x85, 0xc1, 0xdf, 0x01, 0x67, 0x14, 0xc0, 0xf3, 0x4e, 0x87, 0x32,
|
||||||
0xe9, 0x75, 0xee, 0x54, 0x0d, 0xe5, 0xb9, 0xf6, 0xf4, 0x73, 0xe7, 0x67, 0x53, 0xa4, 0x26, 0xc7,
|
0x61, 0xaa, 0xe1, 0xab, 0xdb, 0xc2, 0xad, 0x19, 0xca, 0x4b, 0xed, 0x19, 0x14, 0xee, 0x8f, 0x66,
|
||||||
0x45, 0x55, 0x43, 0x6b, 0x42, 0x21, 0x07, 0x15, 0x12, 0xb5, 0x77, 0xf7, 0x9f, 0x99, 0x15, 0x15,
|
0x48, 0xcd, 0x1c, 0x0f, 0xd5, 0x0c, 0xad, 0x09, 0x85, 0x1c, 0x54, 0x49, 0xdc, 0xd9, 0x3f, 0xfc,
|
||||||
0xd5, 0x8a, 0xce, 0xee, 0xb5, 0xa2, 0xf2, 0xf1, 0xc9, 0xd9, 0xee, 0xfe, 0xb3, 0xc1, 0x82, 0xcc,
|
0xda, 0xec, 0xc8, 0x52, 0x3b, 0xba, 0x78, 0xd4, 0x8e, 0x2a, 0xa7, 0x67, 0x17, 0xfb, 0x87, 0x5f,
|
||||||
0xd9, 0x8f, 0xd3, 0xba, 0xa8, 0xac, 0xa1, 0x5e, 0xcd, 0x09, 0x30, 0xd0, 0xbb, 0xc4, 0xfc, 0x52,
|
0x0f, 0x37, 0x64, 0xce, 0x7e, 0x92, 0xd6, 0x43, 0x15, 0x0d, 0xf5, 0x6e, 0xce, 0x80, 0x81, 0xfe,
|
||||||
0x55, 0x56, 0xa9, 0xb9, 0x75, 0x9d, 0x3b, 0x40, 0x33, 0xbd, 0xc5, 0xfc, 0x72, 0x74, 0x2e, 0xad,
|
0x35, 0xe6, 0xd7, 0xaa, 0xb2, 0xca, 0xad, 0x9d, 0xdb, 0xc2, 0x05, 0x9a, 0xe9, 0x25, 0xe6, 0xd7,
|
||||||
0xde, 0x5f, 0x71, 0x2a, 0xa2, 0x2c, 0x19, 0x70, 0x01, 0x9d, 0x2c, 0xa3, 0x86, 0xf3, 0xdf, 0x37,
|
0xe3, 0x73, 0x69, 0xf7, 0xff, 0x88, 0x33, 0x11, 0xe7, 0xe9, 0x90, 0x0b, 0xe8, 0xc9, 0x32, 0x6a,
|
||||||
0xf3, 0x5f, 0x78, 0xf0, 0xfc, 0xf7, 0xef, 0x9a, 0xff, 0xfe, 0xe4, 0xfc, 0x75, 0xcc, 0x50, 0xf4,
|
0xb4, 0xfe, 0x43, 0xb3, 0xfe, 0xa5, 0x27, 0xaf, 0xff, 0xf0, 0xa1, 0xf5, 0x1f, 0x4e, 0xaf, 0x5f,
|
||||||
0x85, 0x11, 0x5d, 0x7c, 0xb0, 0xe8, 0x8b, 0xbb, 0x44, 0x5f, 0x4c, 0x8a, 0xea, 0x18, 0x59, 0xec,
|
0xc7, 0x8c, 0x44, 0x9f, 0x1b, 0xd1, 0xe5, 0x27, 0x8b, 0x3e, 0x7f, 0x48, 0xf4, 0xf9, 0xb4, 0xa8,
|
||||||
0x53, 0x3b, 0xd1, 0xb0, 0x1e, 0x5e, 0xec, 0xb7, 0x36, 0xb5, 0x3a, 0xb4, 0x68, 0xb9, 0xbf, 0x83,
|
0x8e, 0x91, 0xc5, 0x3e, 0x93, 0x89, 0xa6, 0xfd, 0xf4, 0x62, 0xbf, 0x97, 0xd4, 0xda, 0xc8, 0xa2,
|
||||||
0xba, 0x4f, 0x53, 0x2e, 0xa4, 0x2d, 0xa5, 0xed, 0x98, 0x18, 0xcd, 0x92, 0xd2, 0x3c, 0xb9, 0x97,
|
0xe5, 0xfe, 0x0c, 0x1a, 0x01, 0xcd, 0xb8, 0x90, 0xb6, 0x8c, 0x76, 0x12, 0x62, 0x34, 0xcb, 0x4a,
|
||||||
0xe6, 0x63, 0xf3, 0x35, 0xb8, 0x83, 0xcf, 0x45, 0x2b, 0x93, 0x66, 0xad, 0xde, 0x06, 0x76, 0x9b,
|
0xf3, 0xec, 0x51, 0x9a, 0xcf, 0xcc, 0xbf, 0xc1, 0x03, 0x7c, 0x1e, 0x5a, 0x9b, 0x36, 0x6b, 0xf5,
|
||||||
0x08, 0xc2, 0x78, 0x2b, 0x63, 0xa1, 0x51, 0x06, 0x4a, 0xf9, 0xf8, 0x5e, 0xca, 0xe6, 0x3d, 0x98,
|
0x0e, 0x70, 0x3a, 0x44, 0x10, 0xc6, 0xdb, 0x39, 0x8b, 0x8c, 0x32, 0x50, 0xca, 0xa7, 0x8f, 0x52,
|
||||||
0xe6, 0x72, 0x51, 0x6d, 0x64, 0xd2, 0x8a, 0x7f, 0x01, 0xd5, 0x48, 0x4e, 0xa3, 0x95, 0xc5, 0x46,
|
0x36, 0xdf, 0xc1, 0x2c, 0x97, 0x87, 0xea, 0x63, 0x93, 0x56, 0x7c, 0x07, 0x6a, 0xb1, 0x5c, 0x46,
|
||||||
0xaf, 0xac, 0xf4, 0x0e, 0xef, 0xa5, 0x67, 0x5e, 0xe6, 0x49, 0x26, 0x17, 0x2d, 0x0d, 0x0c, 0x5a,
|
0x3b, 0x4f, 0x8c, 0x5e, 0x45, 0xe9, 0x1d, 0x3f, 0x4a, 0xcf, 0x7c, 0xcc, 0xd3, 0x4c, 0x1e, 0x5a,
|
||||||
0x2b, 0x03, 0x30, 0xc9, 0x22, 0xe6, 0x85, 0x31, 0xf6, 0x23, 0xc2, 0x8c, 0x5e, 0x45, 0xe9, 0xbd,
|
0x19, 0x1a, 0xb4, 0x56, 0x0e, 0x60, 0x9a, 0xc7, 0xcc, 0x8f, 0x12, 0x1c, 0xc4, 0x84, 0x19, 0xbd,
|
||||||
0xb9, 0x97, 0xde, 0x23, 0xad, 0x77, 0x9b, 0xcd, 0x45, 0xb6, 0x34, 0xbe, 0xd1, 0x36, 0x2d, 0x1b,
|
0xaa, 0xd2, 0x7b, 0xf1, 0x28, 0xbd, 0x2f, 0xb4, 0xde, 0x7d, 0x36, 0x0f, 0x39, 0xd2, 0xf8, 0x42,
|
||||||
0x80, 0x4a, 0x8b, 0xb0, 0x38, 0x4a, 0x8d, 0xe0, 0x92, 0x12, 0x3c, 0xb8, 0x97, 0xa0, 0xa9, 0xd3,
|
0xdb, 0xb4, 0x6c, 0x08, 0xaa, 0x6d, 0xc2, 0x92, 0x38, 0x33, 0x82, 0x2b, 0x4a, 0xf0, 0xe8, 0x51,
|
||||||
0x71, 0x1e, 0x17, 0x95, 0x35, 0x1c, 0xaa, 0xc4, 0x34, 0x0d, 0xe8, 0x40, 0x65, 0xf9, 0xe1, 0x2a,
|
0x82, 0xa6, 0x4e, 0x27, 0x79, 0x3c, 0x54, 0xd1, 0x70, 0xa4, 0x92, 0xd0, 0x2c, 0xa4, 0x43, 0x95,
|
||||||
0xe3, 0x3c, 0x2e, 0x2a, 0x6b, 0xa8, 0x55, 0xba, 0x60, 0x05, 0x33, 0x46, 0x3f, 0x4d, 0xed, 0x21,
|
0xd5, 0xa7, 0xab, 0x4c, 0xf2, 0x78, 0xa8, 0xa2, 0xa1, 0x56, 0xe9, 0x81, 0x35, 0xcc, 0x18, 0x7d,
|
||||||
0x54, 0x62, 0x6f, 0xef, 0x25, 0xb6, 0xae, 0xc5, 0xee, 0xa0, 0x73, 0xd1, 0xb2, 0xb2, 0x4e, 0xec,
|
0x3f, 0x93, 0x43, 0xa8, 0xc4, 0x5e, 0x3e, 0x4a, 0x6c, 0x53, 0x8b, 0x3d, 0x40, 0xe7, 0xa1, 0x55,
|
||||||
0x62, 0x06, 0x60, 0xc8, 0x70, 0x6f, 0x4a, 0xb8, 0xfe, 0xf0, 0xc3, 0xbb, 0xcd, 0xe6, 0x22, 0x5b,
|
0x65, 0x9d, 0xca, 0x62, 0x0e, 0x60, 0xc4, 0x70, 0x7f, 0x46, 0xb8, 0xf1, 0xf4, 0xc3, 0xbb, 0xcf,
|
||||||
0x1a, 0x27, 0x64, 0xff, 0x06, 0xea, 0x09, 0x61, 0x21, 0xf1, 0x52, 0x22, 0x78, 0x3b, 0x8e, 0x84,
|
0xe6, 0x21, 0x47, 0x1a, 0xa7, 0x64, 0xff, 0x04, 0x1a, 0x29, 0x61, 0x11, 0xf1, 0x33, 0x22, 0x78,
|
||||||
0x11, 0x5e, 0x7d, 0xf8, 0xfb, 0x78, 0x17, 0x9f, 0x8b, 0xa0, 0x32, 0xbf, 0x37, 0x56, 0x25, 0x7e,
|
0x27, 0x89, 0x85, 0x11, 0x5e, 0x7f, 0xfa, 0xf7, 0xf8, 0x10, 0x9f, 0x87, 0xa0, 0x32, 0xbf, 0x36,
|
||||||
0x5a, 0xb4, 0xaa, 0x76, 0xed, 0xb4, 0x68, 0xd5, 0x6c, 0xfb, 0xb4, 0x68, 0xd9, 0xf6, 0xf2, 0x69,
|
0x56, 0x25, 0x7e, 0x6e, 0xd9, 0x35, 0xa7, 0x7e, 0x6e, 0xd9, 0x75, 0xc7, 0x39, 0xb7, 0x6c, 0xc7,
|
||||||
0xd1, 0x5a, 0xb1, 0xeb, 0x68, 0xa9, 0x47, 0x63, 0xea, 0x75, 0x9e, 0xeb, 0x5c, 0x54, 0x26, 0x9f,
|
0x59, 0x3d, 0xb7, 0xec, 0x35, 0xa7, 0x81, 0x56, 0xfa, 0x34, 0xa1, 0x7e, 0xf7, 0x1b, 0x3d, 0x17,
|
||||||
0x30, 0x37, 0x5f, 0x14, 0x54, 0xf5, 0xb1, 0xc0, 0x71, 0x8f, 0x1b, 0x62, 0x64, 0x6b, 0xb9, 0xb1,
|
0x55, 0xc8, 0x7b, 0xcc, 0xcd, 0x3f, 0x0a, 0xaa, 0x05, 0x58, 0xe0, 0xa4, 0xcf, 0x0d, 0x31, 0x72,
|
||||||
0x1e, 0xb7, 0x03, 0xe6, 0xcf, 0x85, 0xbc, 0xe6, 0xd8, 0xa0, 0x70, 0x45, 0x7a, 0xba, 0x77, 0x23,
|
0xb4, 0xdc, 0x44, 0x8f, 0xdb, 0x03, 0x8b, 0x97, 0x42, 0x5e, 0x73, 0x1c, 0x50, 0xba, 0x21, 0x7d,
|
||||||
0x39, 0x84, 0x75, 0x30, 0xdf, 0xc1, 0x71, 0xa6, 0xef, 0x4b, 0x25, 0xa4, 0x81, 0x7b, 0x06, 0x6a,
|
0xdd, 0xbb, 0x91, 0x1c, 0xc2, 0x06, 0x58, 0xec, 0xe2, 0x24, 0xd7, 0xf7, 0xa5, 0x32, 0xd2, 0xc0,
|
||||||
0x17, 0x0c, 0xa7, 0x1c, 0xfb, 0x22, 0xa2, 0xe9, 0x3b, 0x1a, 0x72, 0x08, 0x41, 0x51, 0xf5, 0x10,
|
0xbb, 0x00, 0xf5, 0x2b, 0x86, 0x33, 0x8e, 0x03, 0x11, 0xd3, 0xec, 0x15, 0x8d, 0x38, 0x84, 0xc0,
|
||||||
0x9d, 0xab, 0xc6, 0xf0, 0x57, 0xa0, 0x18, 0xd3, 0x90, 0x37, 0xe6, 0x36, 0x0b, 0x5b, 0xe5, 0xbd,
|
0x52, 0x3d, 0x44, 0xcf, 0x55, 0x63, 0xf8, 0x33, 0x60, 0x25, 0x34, 0xe2, 0xcd, 0x85, 0xed, 0xd2,
|
||||||
0xd5, 0xdb, 0x37, 0x96, 0x77, 0x34, 0x44, 0x2a, 0xc4, 0xfd, 0xef, 0x1c, 0x28, 0xbc, 0xa3, 0x21,
|
0x4e, 0xe5, 0x60, 0xfd, 0xfe, 0x8d, 0xe5, 0x15, 0x8d, 0x90, 0x0a, 0xf1, 0xfe, 0xb1, 0x00, 0x4a,
|
||||||
0x6c, 0x80, 0x45, 0x1c, 0x04, 0x8c, 0x70, 0x6e, 0x98, 0x06, 0x10, 0xae, 0x81, 0x05, 0x41, 0xdb,
|
0xaf, 0x68, 0x04, 0x9b, 0x60, 0x19, 0x87, 0x21, 0x23, 0x9c, 0x1b, 0xa6, 0x21, 0x84, 0x1b, 0x60,
|
||||||
0x91, 0xaf, 0xe9, 0x4a, 0xc8, 0x20, 0x29, 0x1c, 0x60, 0x81, 0x55, 0x17, 0xae, 0x20, 0x35, 0x86,
|
0x49, 0xd0, 0x4e, 0x1c, 0x68, 0xba, 0x32, 0x32, 0x48, 0x0a, 0x87, 0x58, 0x60, 0xd5, 0x85, 0xab,
|
||||||
0x7b, 0xa0, 0xa2, 0x56, 0xe6, 0xa5, 0x59, 0xd2, 0x22, 0x4c, 0x35, 0xd3, 0x62, 0xb3, 0x76, 0x93,
|
0x48, 0x8d, 0xe1, 0x01, 0xa8, 0xaa, 0x9d, 0xf9, 0x59, 0x9e, 0xb6, 0x09, 0x53, 0xcd, 0xd4, 0x6a,
|
||||||
0x3b, 0x65, 0x65, 0x7f, 0xaf, 0xcc, 0x68, 0x1c, 0xc0, 0x27, 0x60, 0x51, 0x74, 0xc7, 0xfb, 0xe0,
|
0xd5, 0xef, 0x0a, 0xb7, 0xa2, 0xec, 0xaf, 0x95, 0x19, 0x4d, 0x02, 0xf8, 0x25, 0x58, 0x16, 0xbd,
|
||||||
0xca, 0x4d, 0xee, 0xd4, 0xc4, 0x68, 0x99, 0xb2, 0xcd, 0xa1, 0x05, 0xd1, 0x55, 0xed, 0x6e, 0x07,
|
0xc9, 0x3e, 0xb8, 0x76, 0x57, 0xb8, 0x75, 0x31, 0xde, 0xa6, 0x6c, 0x73, 0x68, 0x49, 0xf4, 0x54,
|
||||||
0x58, 0xa2, 0xeb, 0x45, 0x69, 0x40, 0xba, 0xaa, 0xd5, 0x15, 0x9b, 0xf5, 0x9b, 0xdc, 0xb1, 0xc7,
|
0xbb, 0xdb, 0x03, 0xb6, 0xe8, 0xf9, 0x71, 0x16, 0x92, 0x9e, 0x6a, 0x75, 0x56, 0xab, 0x71, 0x57,
|
||||||
0xc2, 0x4f, 0xa4, 0x0f, 0x2d, 0x8a, 0xae, 0x1a, 0xc0, 0x27, 0x00, 0xe8, 0x29, 0x29, 0x05, 0xdd,
|
0xb8, 0xce, 0x44, 0xf8, 0x99, 0xf4, 0xa1, 0x65, 0xd1, 0x53, 0x03, 0xf8, 0x25, 0x00, 0x7a, 0x49,
|
||||||
0xa8, 0x96, 0x6e, 0x72, 0xa7, 0xa4, 0xac, 0x8a, 0x7b, 0x34, 0x84, 0x2e, 0x98, 0xd7, 0xdc, 0x96,
|
0x4a, 0x41, 0x37, 0xaa, 0x95, 0xbb, 0xc2, 0x2d, 0x2b, 0xab, 0xe2, 0x1e, 0x0f, 0xa1, 0x07, 0x16,
|
||||||
0xe2, 0xae, 0xdc, 0xe4, 0x8e, 0x15, 0xd3, 0x50, 0x73, 0x6a, 0x97, 0xdc, 0x2a, 0x46, 0x12, 0xda,
|
0x35, 0xb7, 0xad, 0xb8, 0xab, 0x77, 0x85, 0x6b, 0x27, 0x34, 0xd2, 0x9c, 0xda, 0x25, 0x53, 0xc5,
|
||||||
0x21, 0x81, 0xea, 0x05, 0x16, 0x1a, 0x40, 0xf7, 0x5f, 0x73, 0xc0, 0xba, 0xe8, 0x22, 0xc2, 0xb3,
|
0x48, 0x4a, 0xbb, 0x24, 0x54, 0xbd, 0xc0, 0x46, 0x43, 0xe8, 0xfd, 0x6d, 0x01, 0xd8, 0x57, 0x3d,
|
||||||
0x58, 0xc0, 0xd7, 0xc0, 0xf6, 0x69, 0x2a, 0x18, 0xf6, 0x85, 0x37, 0xb1, 0xb5, 0xcd, 0xc7, 0xa3,
|
0x44, 0x78, 0x9e, 0x08, 0xf8, 0x3d, 0x70, 0x02, 0x9a, 0x09, 0x86, 0x03, 0xe1, 0x4f, 0xa5, 0xb6,
|
||||||
0xef, 0xf2, 0x74, 0x84, 0x8b, 0x6a, 0x03, 0xd3, 0x81, 0xd9, 0xff, 0x3a, 0x98, 0x6f, 0xc5, 0x94,
|
0xf5, 0x6c, 0xfc, 0xbf, 0x3c, 0x1b, 0xe1, 0xa1, 0xfa, 0xd0, 0x74, 0x64, 0xf2, 0xdf, 0x00, 0x8b,
|
||||||
0x26, 0xaa, 0x12, 0x2a, 0x48, 0x03, 0x88, 0xd4, 0xae, 0xa9, 0x53, 0x2e, 0xa8, 0x7b, 0xe9, 0x2f,
|
0xed, 0x84, 0xd2, 0x54, 0x55, 0x42, 0x15, 0x69, 0x00, 0x91, 0xca, 0x9a, 0x3a, 0xe5, 0x92, 0xba,
|
||||||
0x6e, 0x9f, 0xf2, 0x54, 0xa9, 0x34, 0xd7, 0xcc, 0xdd, 0xb4, 0xaa, 0xb5, 0x4d, 0xbe, 0x2b, 0xf7,
|
0x97, 0xfe, 0xe4, 0xfe, 0x29, 0xcf, 0x94, 0x4a, 0x6b, 0xc3, 0xdc, 0x4d, 0x6b, 0x5a, 0xdb, 0xcc,
|
||||||
0x56, 0x95, 0x92, 0x0d, 0x0a, 0x8c, 0x08, 0x75, 0x68, 0x15, 0x24, 0x87, 0x70, 0x1d, 0x58, 0x8c,
|
0xf7, 0x64, 0x6e, 0x55, 0x29, 0x39, 0xa0, 0xc4, 0x88, 0x50, 0x87, 0x56, 0x45, 0x72, 0x08, 0x37,
|
||||||
0x74, 0x08, 0x13, 0x24, 0x50, 0x87, 0x63, 0xa1, 0x21, 0x86, 0x8f, 0x80, 0x15, 0x62, 0xee, 0x65,
|
0x81, 0xcd, 0x48, 0x97, 0x30, 0x41, 0x42, 0x75, 0x38, 0x36, 0x1a, 0x61, 0xf8, 0x05, 0xb0, 0x23,
|
||||||
0x9c, 0x04, 0xfa, 0x24, 0xd0, 0x62, 0x88, 0xf9, 0x07, 0x4e, 0x82, 0x97, 0xc5, 0x7f, 0xfc, 0xc7,
|
0xcc, 0xfd, 0x9c, 0x93, 0x50, 0x9f, 0x04, 0x5a, 0x8e, 0x30, 0x7f, 0xc3, 0x49, 0xf8, 0xad, 0xf5,
|
||||||
0x99, 0x71, 0x31, 0x28, 0x1f, 0xf8, 0x3e, 0xe1, 0xfc, 0x22, 0x6b, 0xc7, 0xe4, 0x07, 0x2a, 0x6c,
|
0x97, 0x0f, 0xee, 0x9c, 0x87, 0x41, 0xe5, 0x28, 0x08, 0x08, 0xe7, 0x57, 0x79, 0x27, 0x21, 0xff,
|
||||||
0x0f, 0x54, 0xb8, 0xa0, 0x0c, 0x87, 0xc4, 0xbb, 0x22, 0x3d, 0x53, 0x67, 0xba, 0x6a, 0x8c, 0xfd,
|
0xa3, 0xc2, 0x0e, 0x40, 0x95, 0x0b, 0xca, 0x70, 0x44, 0xfc, 0x1b, 0xd2, 0x37, 0x75, 0xa6, 0xab,
|
||||||
0x77, 0xa4, 0xc7, 0xd1, 0x38, 0x30, 0x12, 0x5f, 0x0b, 0xa0, 0x7c, 0xc1, 0xb0, 0x4f, 0xcc, 0x7d,
|
0xc6, 0xd8, 0x7f, 0x4d, 0xfa, 0x1c, 0x4d, 0x02, 0x23, 0xf1, 0xc1, 0x02, 0x95, 0x2b, 0x86, 0x03,
|
||||||
0x58, 0xd6, 0xaa, 0x84, 0xcc, 0x48, 0x18, 0x24, 0xb5, 0x45, 0x94, 0x10, 0x9a, 0x09, 0xf3, 0x3e,
|
0x62, 0xee, 0xc3, 0xb2, 0x56, 0x25, 0x64, 0x46, 0xc2, 0x20, 0xa9, 0x2d, 0xe2, 0x94, 0xd0, 0x5c,
|
||||||
0x0d, 0xa0, 0xcc, 0x60, 0x84, 0x74, 0x89, 0xaf, 0xb6, 0xb1, 0x88, 0x0c, 0x82, 0xfb, 0x60, 0x29,
|
0x98, 0xef, 0x69, 0x08, 0xe5, 0x0c, 0x46, 0x48, 0x8f, 0x04, 0x2a, 0x8d, 0x16, 0x32, 0x08, 0x1e,
|
||||||
0x88, 0xb8, 0xfa, 0xb9, 0xe0, 0x02, 0xfb, 0x57, 0x7a, 0xf9, 0x4d, 0xfb, 0x26, 0x77, 0x2a, 0xc6,
|
0x82, 0x95, 0x30, 0xe6, 0xea, 0x71, 0xc1, 0x05, 0x0e, 0x6e, 0xf4, 0xf6, 0x5b, 0xce, 0x5d, 0xe1,
|
||||||
0x71, 0x2e, 0xed, 0x68, 0x02, 0xc1, 0x57, 0xa0, 0x36, 0x4a, 0x53, 0xb3, 0xd5, 0xd7, 0xf9, 0x26,
|
0x56, 0x8d, 0xe3, 0x52, 0xda, 0xd1, 0x14, 0x82, 0xdf, 0x81, 0xfa, 0x78, 0x9a, 0x5a, 0xad, 0xbe,
|
||||||
0xbc, 0xc9, 0x9d, 0xea, 0x30, 0x54, 0x79, 0xd0, 0x14, 0x96, 0x27, 0x1d, 0x90, 0x56, 0x16, 0xaa,
|
0xce, 0xb7, 0xe0, 0x5d, 0xe1, 0xd6, 0x46, 0xa1, 0xca, 0x83, 0x66, 0xb0, 0x3c, 0xe9, 0x90, 0xb4,
|
||||||
0xe2, 0xb3, 0x90, 0x06, 0xd2, 0x1a, 0x47, 0x49, 0x24, 0x54, 0xb1, 0xcd, 0x23, 0x0d, 0xe0, 0x2b,
|
0xf3, 0x48, 0x15, 0x9f, 0x8d, 0x34, 0x90, 0xd6, 0x24, 0x4e, 0x63, 0xa1, 0x8a, 0x6d, 0x11, 0x69,
|
||||||
0x50, 0xa2, 0x1d, 0xc2, 0x58, 0x14, 0x10, 0xae, 0x2e, 0x06, 0x3f, 0xf6, 0x67, 0x82, 0x46, 0xf1,
|
0x00, 0xbf, 0x03, 0x65, 0xda, 0x25, 0x8c, 0xc5, 0x21, 0xe1, 0xea, 0x62, 0xf0, 0xff, 0x5e, 0x26,
|
||||||
0x72, 0x71, 0xe6, 0xc7, 0x29, 0x21, 0x09, 0x65, 0x3d, 0xd5, 0xe9, 0xcd, 0xe2, 0xb4, 0xe3, 0xf7,
|
0x68, 0x1c, 0x2f, 0x37, 0x67, 0x1e, 0x4e, 0x29, 0x49, 0x29, 0xeb, 0xab, 0x4e, 0x6f, 0x36, 0xa7,
|
||||||
0xca, 0x8e, 0x26, 0x10, 0x6c, 0x02, 0x68, 0xd2, 0x18, 0x11, 0x19, 0x4b, 0x3d, 0xf5, 0xfe, 0x57,
|
0x1d, 0xbf, 0x51, 0x76, 0x34, 0x85, 0x60, 0x0b, 0x40, 0x33, 0x8d, 0x11, 0x91, 0xb3, 0xcc, 0x57,
|
||||||
0x54, 0xae, 0x7a, 0x0b, 0xb5, 0x17, 0x29, 0xe7, 0x11, 0x16, 0x18, 0xdd, 0xb2, 0x9c, 0x16, 0xad,
|
0xdf, 0x7f, 0x55, 0xcd, 0x55, 0x5f, 0xa1, 0xf6, 0x22, 0xe5, 0x3c, 0xc1, 0x02, 0xa3, 0x7b, 0x16,
|
||||||
0xa2, 0x3d, 0x7f, 0x5a, 0xb4, 0x16, 0x6d, 0x6b, 0xb8, 0x7e, 0x33, 0x0b, 0xb4, 0x32, 0xc0, 0x63,
|
0xf8, 0x4b, 0x00, 0xf5, 0x99, 0xf8, 0xef, 0x38, 0x1d, 0x3d, 0xad, 0x74, 0x23, 0x56, 0xfa, 0xda,
|
||||||
0xf4, 0xcd, 0xdf, 0x7e, 0xbe, 0xde, 0x98, 0xfd, 0x72, 0xbd, 0x31, 0xfb, 0xf5, 0x7a, 0x63, 0xf6,
|
0x6b, 0xd6, 0xec, 0x68, 0x74, 0xce, 0xa9, 0xd9, 0xc5, 0xb9, 0x65, 0x5b, 0xce, 0xe2, 0xb9, 0x65,
|
||||||
0xdf, 0xdf, 0x36, 0x66, 0xbe, 0x7c, 0xdb, 0x98, 0xf9, 0xff, 0xb7, 0x8d, 0x99, 0x3f, 0x8d, 0x7f,
|
0x2f, 0x3b, 0xf6, 0x28, 0x7f, 0x66, 0x17, 0x68, 0x6d, 0x88, 0x27, 0x96, 0xd7, 0xfa, 0xd5, 0xc7,
|
||||||
0xee, 0x49, 0x47, 0x7e, 0xed, 0x47, 0x7f, 0xbb, 0x5d, 0xf5, 0xbf, 0xab, 0x3e, 0xf9, 0xad, 0x05,
|
0xdb, 0xad, 0xf9, 0x4f, 0xb7, 0x5b, 0xf3, 0xff, 0xb9, 0xdd, 0x9a, 0xff, 0xfb, 0xe7, 0xad, 0xb9,
|
||||||
0xf5, 0x1f, 0xfb, 0xfc, 0xfb, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfb, 0x44, 0xf1, 0x35, 0x0d, 0x0f,
|
0x4f, 0x9f, 0xb7, 0xe6, 0xfe, 0xf5, 0x79, 0x6b, 0xee, 0xf7, 0x93, 0xed, 0x82, 0x74, 0x65, 0xb7,
|
||||||
0x00, 0x00,
|
0x18, 0xbf, 0x96, 0x7b, 0xea, 0xbd, 0xac, 0x5a, 0x46, 0x7b, 0x49, 0xbd, 0x83, 0xbf, 0xf9, 0x6f,
|
||||||
|
0x00, 0x00, 0x00, 0xff, 0xff, 0xc5, 0xf8, 0x3d, 0xb7, 0x4d, 0x0f, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Params) Marshal() (dAtA []byte, err error) {
|
func (m *Params) Marshal() (dAtA []byte, err error) {
|
||||||
@ -1380,6 +1390,13 @@ func (m *TraceConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
|||||||
_ = i
|
_ = i
|
||||||
var l int
|
var l int
|
||||||
_ = l
|
_ = l
|
||||||
|
if len(m.TracerJsonConfig) > 0 {
|
||||||
|
i -= len(m.TracerJsonConfig)
|
||||||
|
copy(dAtA[i:], m.TracerJsonConfig)
|
||||||
|
i = encodeVarintEvm(dAtA, i, uint64(len(m.TracerJsonConfig)))
|
||||||
|
i--
|
||||||
|
dAtA[i] = 0x6a
|
||||||
|
}
|
||||||
if m.EnableReturnData {
|
if m.EnableReturnData {
|
||||||
i--
|
i--
|
||||||
if m.EnableReturnData {
|
if m.EnableReturnData {
|
||||||
@ -1753,6 +1770,10 @@ func (m *TraceConfig) Size() (n int) {
|
|||||||
if m.EnableReturnData {
|
if m.EnableReturnData {
|
||||||
n += 2
|
n += 2
|
||||||
}
|
}
|
||||||
|
l = len(m.TracerJsonConfig)
|
||||||
|
if l > 0 {
|
||||||
|
n += 1 + l + sovEvm(uint64(l))
|
||||||
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3777,6 +3798,38 @@ func (m *TraceConfig) Unmarshal(dAtA []byte) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
m.EnableReturnData = bool(v != 0)
|
m.EnableReturnData = bool(v != 0)
|
||||||
|
case 13:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field TracerJsonConfig", wireType)
|
||||||
|
}
|
||||||
|
var stringLen uint64
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowEvm
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
stringLen |= uint64(b&0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
intStringLen := int(stringLen)
|
||||||
|
if intStringLen < 0 {
|
||||||
|
return ErrInvalidLengthEvm
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + intStringLen
|
||||||
|
if postIndex < 0 {
|
||||||
|
return ErrInvalidLengthEvm
|
||||||
|
}
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
m.TracerJsonConfig = string(dAtA[iNdEx:postIndex])
|
||||||
|
iNdEx = postIndex
|
||||||
default:
|
default:
|
||||||
iNdEx = preIndex
|
iNdEx = preIndex
|
||||||
skippy, err := skipEvm(dAtA[iNdEx:])
|
skippy, err := skipEvm(dAtA[iNdEx:])
|
||||||
|
Loading…
Reference in New Issue
Block a user