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.
|
||||
* (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.
|
||||
* (geth) [#1413](https://github.com/evmos/ethermint/pull/1413) Update geth version to v1.10.25.
|
||||
|
||||
### API Breaking
|
||||
|
||||
|
@ -15,9 +15,11 @@ import (
|
||||
|
||||
ethcrypto "github.com/ethereum/go-ethereum/crypto"
|
||||
"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/ethereum/eip712"
|
||||
ethermint "github.com/evmos/ethermint/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")
|
||||
}
|
||||
|
||||
sigHash, err := eip712.ComputeTypedDataHash(typedData)
|
||||
sigHash, _, err := apitypes.TypedDataAndHash(typedData)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -16,6 +16,7 @@ import (
|
||||
types2 "github.com/cosmos/cosmos-sdk/x/bank/types"
|
||||
types3 "github.com/cosmos/cosmos-sdk/x/staking/types"
|
||||
"github.com/ethereum/go-ethereum/crypto"
|
||||
"github.com/ethereum/go-ethereum/signer/core/apitypes"
|
||||
"github.com/evmos/ethermint/ethereum/eip712"
|
||||
"github.com/evmos/ethermint/types"
|
||||
|
||||
@ -409,7 +410,7 @@ func (suite *AnteTestSuite) CreateTestEIP712CosmosTxBuilder(
|
||||
})
|
||||
suite.Require().NoError(err)
|
||||
|
||||
sigHash, err := eip712.ComputeTypedDataHash(typedData)
|
||||
sigHash, _, err := apitypes.TypedDataAndHash(typedData)
|
||||
suite.Require().NoError(err)
|
||||
|
||||
// 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 |
|
||||
| `enable_memory` | [bool](#bool) | | enable memory 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/math"
|
||||
"github.com/ethereum/go-ethereum/crypto"
|
||||
"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
|
||||
// into an EIP712-compatible TypedData request.
|
||||
func WrapTxToTypedData(
|
||||
|
2
go.mod
2
go.mod
@ -12,7 +12,7 @@ require (
|
||||
github.com/cosmos/go-bip39 v1.0.0
|
||||
github.com/cosmos/ibc-go/v5 v5.1.0
|
||||
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/golang/protobuf v1.5.2
|
||||
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-go v0.9.2 h1:Nnao/dLwaVTk1Q5U9THldpUMMXU94BOTWPddSmVB6pI=
|
||||
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/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/creachadair/taskgroup v0.3.2 h1:zlfutDS+5XG40AOxcHDSThxKzns8Tnr9jnr6VqkYlkM=
|
||||
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/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.19 h1:EOR5JbL4MD5yeOqv8W2iC1s4NximrTjqFccUz8lyBRA=
|
||||
github.com/ethereum/go-ethereum v1.10.19/go.mod h1:IJBNMtzKcNHPtllYihy6BL2IgK1u+32JriaTbdt4v+w=
|
||||
github.com/ethereum/go-ethereum v1.10.25 h1:5dFrKJDnYf8L6/5o42abCE6a9yJm9cs4EJVRyYMr55s=
|
||||
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/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A=
|
||||
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/zerolog v1.27.0 h1:1T7qCieN22GVc8S4Q2yuexzBb1EqjbgjSH9RohbMjKs=
|
||||
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/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/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=
|
||||
@ -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/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
|
||||
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/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/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8=
|
||||
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/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/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/yuin/goldmark v1.1.25/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/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/urfave/cli.v1 v1.20.0 h1:NdAVW6RYxDif9DhDHaAortIu956m2c0v+09AZBPTbE0=
|
||||
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/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
|
||||
|
@ -160,8 +160,8 @@ schema = 3
|
||||
version = "v1.0.0"
|
||||
hash = "sha256-k1DYvCqO3BKNcGEve/nMW0RxzMkK2tGfXbUbycqcVSo="
|
||||
[mod."github.com/ethereum/go-ethereum"]
|
||||
version = "v1.10.19"
|
||||
hash = "sha256-7FPnTGcCb8Xd1QVR+6PmGTaHdTY1mm/8osFTW1JLuG8="
|
||||
version = "v1.10.25"
|
||||
hash = "sha256-tNlI2XyuTXjGuBoe5vlYDcaGN2Sub7yltVtI6TeLLSc="
|
||||
[mod."github.com/felixge/httpsnoop"]
|
||||
version = "v1.0.1"
|
||||
hash = "sha256-TNXnnC/ZGNY9lInAcES1cBGqIdEljKuh5LH/khVFjVk="
|
||||
|
@ -1,4 +1,4 @@
|
||||
{ lib, stdenv, buildGoModule, fetchFromGitHub, libobjc, IOKit }:
|
||||
{ lib, stdenv, buildGoModule, fetchFromGitHub, libobjc, IOKit, nixosTests }:
|
||||
|
||||
let
|
||||
# A list of binaries to put into separate outputs
|
||||
@ -7,19 +7,18 @@ let
|
||||
"clef"
|
||||
];
|
||||
|
||||
in
|
||||
buildGoModule rec {
|
||||
in buildGoModule rec {
|
||||
pname = "go-ethereum";
|
||||
version = "1.10.19";
|
||||
version = "1.10.25";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ethereum";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "0f6n9rg42ph47mvykc9f0lf99yzwqy4jm7mlzyks4l6i6fl1g3q1";
|
||||
sha256 = "sha256-mnf0kMfQEEQMricZJfyF7ZB/2F1dyPBx9iT2v/rGh1U=";
|
||||
};
|
||||
|
||||
vendorSha256 = "1s5yfpk2yn7f3zwjl2fdrh6c63ki2b8rlmnlss27yxibsidaj0yd";
|
||||
vendorSha256 = "sha256-Dj+xN8lr98LJyYr2FwJ7yUIJkUeUrr1fkcbj4hShJI0=";
|
||||
|
||||
doCheck = false;
|
||||
|
||||
@ -47,14 +46,19 @@ buildGoModule rec {
|
||||
"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
|
||||
propagatedBuildInputs =
|
||||
lib.optionals stdenv.isDarwin [ libobjc IOKit ];
|
||||
|
||||
passthru.tests = { inherit (nixosTests) geth; };
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://geth.ethereum.org/";
|
||||
description = "Official golang implementation of the Ethereum protocol";
|
||||
license = with licenses; [ lgpl3Plus gpl3Plus ];
|
||||
maintainers = with maintainers; [ adisbladis lionello RaghavSood ];
|
||||
maintainers = with maintainers; [ adisbladis RaghavSood ];
|
||||
};
|
||||
}
|
@ -225,4 +225,6 @@ message TraceConfig {
|
||||
bool enable_memory = 11 [(gogoproto.jsontag) = "enableMemory"];
|
||||
// enable return data capture
|
||||
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(0),
|
||||
baseFee,
|
||||
suite.backend.chainID,
|
||||
)
|
||||
suite.Require().NoError(err)
|
||||
ethRPCTxs = []interface{}{rpcTx}
|
||||
|
@ -376,6 +376,7 @@ func (b *Backend) RPCBlockFromTendermintBlock(
|
||||
uint64(block.Height),
|
||||
uint64(txIndex),
|
||||
baseFee,
|
||||
b.chainID,
|
||||
)
|
||||
if err != nil {
|
||||
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(0),
|
||||
tc.baseFee,
|
||||
suite.backend.chainID,
|
||||
)
|
||||
suite.Require().NoError(err)
|
||||
ethRPCTxs = []interface{}{rpcTx}
|
||||
|
@ -153,11 +153,13 @@ func (b *Backend) FeeHistory(
|
||||
}
|
||||
blockEnd = int64(blockNumber)
|
||||
}
|
||||
|
||||
userBlockCountInt := int64(userBlockCount)
|
||||
maxBlockCount := int64(b.cfg.JSONRPC.FeeHistoryCap)
|
||||
if userBlockCountInt > maxBlockCount {
|
||||
return nil, fmt.Errorf("FeeHistory user block count %d higher than %d", userBlockCountInt, maxBlockCount)
|
||||
}
|
||||
|
||||
blockStart := blockEnd - userBlockCountInt
|
||||
if blockStart < 0 {
|
||||
blockStart = 0
|
||||
@ -173,6 +175,7 @@ func (b *Backend) FeeHistory(
|
||||
for i := 0; i < int(blockCount); i++ {
|
||||
reward[i] = make([]*hexutil.Big, rewardCount)
|
||||
}
|
||||
|
||||
thisBaseFee := make([]*hexutil.Big, blockCount)
|
||||
thisGasUsedRatio := make([]float64, blockCount)
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
package backend
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"math/big"
|
||||
|
||||
@ -13,9 +14,8 @@ import (
|
||||
ethtypes "github.com/ethereum/go-ethereum/core/types"
|
||||
"github.com/ethereum/go-ethereum/crypto"
|
||||
"github.com/ethereum/go-ethereum/signer/core/apitypes"
|
||||
"github.com/evmos/ethermint/ethereum/eip712"
|
||||
|
||||
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
|
||||
@ -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())
|
||||
}
|
||||
|
||||
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)
|
||||
if err != nil {
|
||||
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())
|
||||
}
|
||||
|
||||
sigHash, err := eip712.ComputeTypedDataHash(typedData)
|
||||
sigHash, _, err := apitypes.TypedDataAndHash(typedData)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -74,6 +74,7 @@ func (b *Backend) GetTransactionByHash(txHash common.Hash) (*rpctypes.RPCTransac
|
||||
uint64(res.Height),
|
||||
uint64(res.EthTxIndex),
|
||||
baseFee,
|
||||
b.chainID,
|
||||
)
|
||||
}
|
||||
|
||||
@ -102,6 +103,7 @@ func (b *Backend) getTransactionByHashPending(txHash common.Hash) (*rpctypes.RPC
|
||||
uint64(0),
|
||||
uint64(0),
|
||||
nil,
|
||||
b.chainID,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@ -214,6 +216,7 @@ func (b *Backend) GetTransactionReceipt(hash common.Hash) (map[string]interface{
|
||||
// sender and receiver (contract or EOA) addreses
|
||||
"from": from,
|
||||
"to": txData.GetTo(),
|
||||
"type": hexutil.Uint(ethMsg.AsTransaction().Type()),
|
||||
}
|
||||
|
||||
if logs == nil {
|
||||
@ -386,5 +389,6 @@ func (b *Backend) GetTransactionByBlockAndIndex(block *tmrpctypes.ResultBlock, i
|
||||
uint64(block.Block.Height),
|
||||
uint64(idx),
|
||||
baseFee,
|
||||
b.chainID,
|
||||
)
|
||||
}
|
||||
|
@ -499,6 +499,7 @@ func (e *PublicAPI) GetPendingTransactions() ([]*rpctypes.RPCTransaction, error)
|
||||
uint64(0),
|
||||
uint64(0),
|
||||
nil,
|
||||
e.backend.ChainConfig().ChainID,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -33,6 +33,7 @@ const (
|
||||
BlockParamEarliest = "earliest"
|
||||
BlockParamLatest = "latest"
|
||||
BlockParamFinalized = "finalized"
|
||||
BlockParamSafe = "safe"
|
||||
BlockParamPending = "pending"
|
||||
)
|
||||
|
||||
@ -73,7 +74,7 @@ func (bn *BlockNumber) UnmarshalJSON(data []byte) error {
|
||||
case BlockParamEarliest:
|
||||
*bn = EthEarliestBlockNumber
|
||||
return nil
|
||||
case BlockParamLatest, BlockParamFinalized:
|
||||
case BlockParamLatest, BlockParamFinalized, BlockParamSafe:
|
||||
*bn = EthLatestBlockNumber
|
||||
return nil
|
||||
case BlockParamPending:
|
||||
|
@ -145,15 +145,17 @@ func NewTransactionFromMsg(
|
||||
blockHash common.Hash,
|
||||
blockNumber, index uint64,
|
||||
baseFee *big.Int,
|
||||
chainID *big.Int,
|
||||
) (*RPCTransaction, error) {
|
||||
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
|
||||
// representation, with the given location metadata set (if available).
|
||||
func NewRPCTransaction(
|
||||
tx *ethtypes.Transaction, blockHash common.Hash, blockNumber, index uint64, baseFee *big.Int,
|
||||
chainID *big.Int,
|
||||
) (*RPCTransaction, error) {
|
||||
// Determine the signer. For replay-protected transactions, use the most permissive
|
||||
// signer, because we assume that signers are backwards-compatible with old
|
||||
@ -180,6 +182,7 @@ func NewRPCTransaction(
|
||||
V: (*hexutil.Big)(v),
|
||||
R: (*hexutil.Big)(r),
|
||||
S: (*hexutil.Big)(s),
|
||||
ChainID: (*hexutil.Big)(chainID),
|
||||
}
|
||||
if blockHash != (common.Hash{}) {
|
||||
result.BlockHash = &blockHash
|
||||
|
@ -33,7 +33,7 @@ print(Account.from_mnemonic('$VALIDATOR1_MNEMONIC').key.hex().replace('0x',''))
|
||||
cat > $tmpfile << EOF
|
||||
$validator_key
|
||||
EOF
|
||||
geth --datadir $DATA account import $tmpfile --password $pwdfile
|
||||
geth --datadir $DATA --password $pwdfile account import $tmpfile
|
||||
|
||||
# import community key
|
||||
community_key=$(python -c """
|
||||
@ -45,7 +45,7 @@ print(Account.from_mnemonic('$COMMUNITY_MNEMONIC').key.hex().replace('0x',''))
|
||||
cat > $tmpfile << EOF
|
||||
$community_key
|
||||
EOF
|
||||
geth --datadir $DATA account import $tmpfile --password $pwdfile
|
||||
geth --datadir $DATA --password $pwdfile account import $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):
|
||||
w3: Web3 = cluster.w3
|
||||
contract = deploy_contract(w3, CONTRACTS["Greeter"])
|
||||
contract, _ = deploy_contract(w3, CONTRACTS["Greeter"])
|
||||
assert contract.caller.greet() == "Hello"
|
||||
|
||||
# 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):
|
||||
w3: Web3 = cluster.w3
|
||||
|
||||
contract = deploy_contract(w3, CONTRACTS["Greeter"])
|
||||
contract, _ = deploy_contract(w3, CONTRACTS["Greeter"])
|
||||
assert contract.caller.greet() == "Hello"
|
||||
|
||||
flt = w3.eth.filter({"address": contract.address})
|
||||
@ -103,7 +103,7 @@ def test_event_log_filter_by_address(cluster):
|
||||
def test_get_logs(cluster):
|
||||
w3: Web3 = cluster.w3
|
||||
|
||||
contract = deploy_contract(w3, CONTRACTS["Greeter"])
|
||||
contract, _ = deploy_contract(w3, CONTRACTS["Greeter"])
|
||||
|
||||
# without tx
|
||||
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
|
||||
"""
|
||||
w3 = pruned.w3
|
||||
erc20 = deploy_contract(
|
||||
erc20, _ = deploy_contract(
|
||||
w3,
|
||||
CONTRACTS["TestERC20A"],
|
||||
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,
|
||||
],
|
||||
)
|
||||
res, err = same_types(eth_rsp, geth_rsp)
|
||||
assert res, err
|
||||
compare_types(eth_rsp, geth_rsp)
|
||||
|
||||
# Get not existing block
|
||||
make_same_rpc_calls(
|
||||
@ -157,7 +156,7 @@ def test_balance(ethermint_rpc_ws, geth):
|
||||
|
||||
|
||||
def deploy_and_wait(w3, number=1):
|
||||
contract = deploy_contract(
|
||||
contract, _ = deploy_contract(
|
||||
w3,
|
||||
CONTRACTS["TestERC20A"],
|
||||
)
|
||||
@ -179,8 +178,7 @@ def test_get_storage_at(ethermint_rpc_ws, geth):
|
||||
|
||||
contract = deploy_and_wait(w3)
|
||||
res = eth_rpc.make_request("eth_getStorageAt", [contract.address, "0x0", "latest"])
|
||||
res, err = same_types(res["result"], EXPECTED_GET_STORAGE_AT)
|
||||
assert res, err
|
||||
compare_types(res["result"], EXPECTED_GET_STORAGE_AT)
|
||||
|
||||
|
||||
def send_tnx(w3, tx_value=10):
|
||||
@ -215,16 +213,15 @@ def test_get_proof(ethermint_rpc_ws, geth):
|
||||
proof = (eth_rpc.make_request(
|
||||
method, [validator, ["0x0"], hex(res["blockNumber"])]
|
||||
))["result"]
|
||||
res, err = same_types(proof, EXPECTED_GET_PROOF)
|
||||
assert res, err
|
||||
compare_types(proof, EXPECTED_GET_PROOF["result"])
|
||||
assert proof["accountProof"], EXPECTED_ACCOUNT_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"]
|
||||
))["result"]
|
||||
res, err = same_types(proof, EXPECTED_GET_PROOF)
|
||||
assert res, err
|
||||
)
|
||||
compare_types(proof, EXPECTED_GET_PROOF)
|
||||
|
||||
|
||||
def test_get_code(ethermint_rpc_ws, geth):
|
||||
@ -241,9 +238,8 @@ def test_get_code(ethermint_rpc_ws, geth):
|
||||
# Do an ethereum transfer
|
||||
contract = deploy_and_wait(w3)
|
||||
code = eth_rpc.make_request("eth_getCode", [contract.address, "latest"])
|
||||
expected = {"id": "4", "jsonrpc": "2.0", "result": "0x"}
|
||||
res, err = same_types(code, expected)
|
||||
assert res, err
|
||||
expected = {"id": 4, "jsonrpc": "2.0", "result": "0x"}
|
||||
compare_types(code, expected)
|
||||
|
||||
|
||||
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(
|
||||
eth_rpc, geth_rpc, "eth_getBlockTransactionCountByNumber", ["0x100"]
|
||||
eth_rpc, geth_rpc, "eth_getBlockTransactionCountByNumber", ["0x1000"]
|
||||
)
|
||||
|
||||
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]
|
||||
)
|
||||
|
||||
expected = {"id": "1", "jsonrpc": "2.0", "result": "0x1"}
|
||||
res, err = same_types(block_res, expected)
|
||||
assert res, err
|
||||
expected = {"id": 1, "jsonrpc": "2.0", "result": "0x1"}
|
||||
compare_types(block_res, expected)
|
||||
|
||||
make_same_rpc_calls(
|
||||
eth_rpc,
|
||||
@ -278,9 +273,8 @@ def test_get_block_transaction_count(ethermint_rpc_ws, geth):
|
||||
["0x4e3a3754410177e6937ef1f84bba68ea139e8d1a2258c5f85db9f1cd715a1bdd"],
|
||||
)
|
||||
block_res = eth_rpc.make_request("eth_getBlockTransactionCountByHash", [block_hash])
|
||||
expected = {"id": "1", "jsonrpc": "2.0", "result": "0x1"}
|
||||
res, err = same_types(block_res, expected)
|
||||
assert res, err
|
||||
expected = {"id": 1, "jsonrpc": "2.0", "result": "0x1"}
|
||||
compare_types(block_res, expected)
|
||||
|
||||
|
||||
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_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):
|
||||
@ -315,8 +309,7 @@ def test_get_transaction_receipt(ethermint_rpc_ws, geth):
|
||||
tx_hash = send_and_get_hash(w3)
|
||||
|
||||
tx_res = eth_rpc.make_request("eth_getTransactionReceipt", [tx_hash])
|
||||
res, err = same_types(tx_res["result"], EXPECTED_GET_TRANSACTION_RECEIPT)
|
||||
assert res, err
|
||||
compare_types(tx_res, EXPECTED_GET_TRANSACTION_RECEIPT)
|
||||
|
||||
|
||||
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]])
|
||||
|
||||
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)
|
||||
assert res, err
|
||||
compare_types(fee_history, EXPECTED_FEE_HISTORY)
|
||||
|
||||
|
||||
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", [{}])
|
||||
|
||||
|
||||
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):
|
||||
res1 = rpc1.make_request(method, params)
|
||||
res2 = rpc2.make_request(method, params)
|
||||
res, err = same_types(res1, res2)
|
||||
assert res, err
|
||||
compare_types(res1, res2)
|
||||
|
||||
|
||||
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])
|
||||
|
||||
|
||||
def same_types(object_a, object_b):
|
||||
|
||||
if isinstance(object_a, dict):
|
||||
if not isinstance(object_b, dict):
|
||||
def same_types(given, expected):
|
||||
if isinstance(given, dict):
|
||||
if not isinstance(expected, dict):
|
||||
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:
|
||||
if key in object_b and key in object_a:
|
||||
if not same_types(object_a[key], object_b[key]):
|
||||
return False, key + " key on dict are not of same type"
|
||||
else:
|
||||
return False, key + " key on json is not in both results"
|
||||
if key not in expected or key not in given:
|
||||
return False, key + " key not on both json"
|
||||
res, err = same_types(given[key], expected[key])
|
||||
if not res:
|
||||
return res, key + " key failed. Error: " + err
|
||||
return True, ""
|
||||
elif isinstance(object_a, list):
|
||||
if not isinstance(object_b, list):
|
||||
elif isinstance(given, list):
|
||||
if not isinstance(expected, list):
|
||||
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, ""
|
||||
if len(object_a) > 0 and len(object_b) > 0:
|
||||
return same_types(object_a[0], object_b[0])
|
||||
if len(given) > 0 and len(expected) > 0:
|
||||
return same_types(given[0], expected[0])
|
||||
else:
|
||||
return True
|
||||
elif object_a is None and object_b is None:
|
||||
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, ""
|
||||
else:
|
||||
return (
|
||||
False,
|
||||
"different types. A is type "
|
||||
+ type(object_a).__name__
|
||||
+ " B is type "
|
||||
+ type(object_b).__name__,
|
||||
"different types. Given object is type "
|
||||
+ type(given).__name__
|
||||
+ " expected object is type "
|
||||
+ type(expected).__name__,
|
||||
)
|
||||
|
@ -97,7 +97,7 @@ def test_cosmovisor_upgrade(custom_ethermint: Ethermint):
|
||||
print("upgrade height", target_height)
|
||||
|
||||
w3 = custom_ethermint.w3
|
||||
contract = deploy_contract(w3, CONTRACTS["TestERC20A"])
|
||||
contract, _ = deploy_contract(w3, CONTRACTS["TestERC20A"])
|
||||
old_height = w3.eth.block_number
|
||||
old_balance = w3.eth.get_balance(ADDRS["validator"], block_identifier=old_height)
|
||||
old_base_fee = w3.eth.get_block(old_height).baseFeePerGas
|
||||
|
@ -131,7 +131,7 @@ def deploy_contract(w3, jsonfile, args=(), key=KEYS["validator"]):
|
||||
txreceipt = send_transaction(w3, tx, key)
|
||||
assert txreceipt.status == 1
|
||||
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):
|
||||
|
@ -420,7 +420,13 @@ func (k Keeper) TraceTx(c context.Context, req *types.QueryTraceTxRequest) (*typ
|
||||
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 {
|
||||
// error will be returned with detail status from traceTx
|
||||
return nil, err
|
||||
@ -473,7 +479,7 @@ func (k Keeper) TraceBlock(c context.Context, req *types.QueryTraceBlockRequest)
|
||||
ethTx := tx.AsTransaction()
|
||||
txConfig.TxHash = ethTx.Hash()
|
||||
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 {
|
||||
result.Error = err.Error()
|
||||
continue
|
||||
@ -502,6 +508,7 @@ func (k *Keeper) traceTx(
|
||||
tx *ethtypes.Transaction,
|
||||
traceConfig *types.TraceConfig,
|
||||
commitMessage bool,
|
||||
tracerJSONConfig json.RawMessage,
|
||||
) (*interface{}, uint, error) {
|
||||
// Assemble the structured logger or the JavaScript tracer
|
||||
var (
|
||||
@ -542,7 +549,7 @@ func (k *Keeper) traceTx(
|
||||
}
|
||||
|
||||
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())
|
||||
}
|
||||
}
|
||||
|
@ -424,7 +424,8 @@ func (k *Keeper) ApplyMessageWithConfig(ctx sdk.Context,
|
||||
return nil, errorsmod.Wrap(types.ErrGasOverflow, "apply message")
|
||||
}
|
||||
// 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
|
||||
var vmError string
|
||||
@ -449,7 +450,7 @@ func (k *Keeper) ApplyMessageWithConfig(ctx sdk.Context,
|
||||
if 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()
|
||||
// reset leftoverGas, to be used by the tracer
|
||||
leftoverGas = msg.Gas() - gasUsed
|
||||
|
@ -35,6 +35,8 @@ func (cc ChainConfig) EthereumConfig(chainID *big.Int) *params.ChainConfig {
|
||||
ArrowGlacierBlock: getBlockValue(cc.ArrowGlacierBlock),
|
||||
GrayGlacierBlock: getBlockValue(cc.GrayGlacierBlock),
|
||||
MergeNetsplitBlock: getBlockValue(cc.MergeNetsplitBlock),
|
||||
ShanghaiBlock: nil, // TODO: add shanghai block
|
||||
CancunBlock: nil, // TODO: add cancun block
|
||||
TerminalTotalDifficulty: nil,
|
||||
Ethash: 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"`
|
||||
// enable return data capture
|
||||
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{} }
|
||||
@ -655,6 +657,13 @@ func (m *TraceConfig) GetEnableReturnData() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *TraceConfig) GetTracerJsonConfig() string {
|
||||
if m != nil {
|
||||
return m.TracerJsonConfig
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func init() {
|
||||
proto.RegisterType((*Params)(nil), "ethermint.evm.v1.Params")
|
||||
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) }
|
||||
|
||||
var fileDescriptor_d21ecc92c8c8583e = []byte{
|
||||
// 1538 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0x5d, 0x4f, 0xdc, 0xca,
|
||||
0x19, 0x06, 0x76, 0x01, 0xef, 0xec, 0xb2, 0x6b, 0x86, 0x85, 0x6e, 0x88, 0x8a, 0xa9, 0x2f, 0x2a,
|
||||
0x2a, 0x25, 0x10, 0x88, 0x50, 0xa3, 0x44, 0x95, 0xca, 0x02, 0x49, 0xa0, 0x69, 0x8a, 0x06, 0xa2,
|
||||
0x4a, 0x95, 0x2a, 0x6b, 0xd6, 0x9e, 0x18, 0x17, 0xdb, 0xb3, 0x9a, 0x19, 0x6f, 0x76, 0xdb, 0xfe,
|
||||
0x80, 0x56, 0xbd, 0xe9, 0x4f, 0xe8, 0xcf, 0x89, 0xaa, 0x5e, 0xe4, 0xb2, 0x3a, 0x17, 0x56, 0x44,
|
||||
0xee, 0xb8, 0xdc, 0x5f, 0x70, 0x34, 0x1f, 0xfb, 0x09, 0x3a, 0xe7, 0xc0, 0x95, 0xe7, 0x79, 0x3f,
|
||||
0x9e, 0x67, 0x3e, 0x5e, 0xfb, 0x1d, 0x83, 0x75, 0x22, 0x2e, 0x09, 0x4b, 0xa2, 0x54, 0xec, 0x90,
|
||||
0x4e, 0xb2, 0xd3, 0xd9, 0x95, 0x8f, 0xed, 0x36, 0xa3, 0x82, 0x42, 0x7b, 0xe8, 0xdb, 0x96, 0xc6,
|
||||
0xce, 0xee, 0x7a, 0x3d, 0xa4, 0x21, 0x55, 0xce, 0x1d, 0x39, 0xd2, 0x71, 0xee, 0x3f, 0x0b, 0x60,
|
||||
0xe1, 0x0c, 0x33, 0x9c, 0x70, 0xb8, 0x0b, 0x4a, 0xa4, 0x93, 0x78, 0x01, 0x49, 0x69, 0xd2, 0x98,
|
||||
0xdd, 0x9c, 0xdd, 0x2a, 0x35, 0xeb, 0xfd, 0xdc, 0xb1, 0x7b, 0x38, 0x89, 0x5f, 0xba, 0x43, 0x97,
|
||||
0x8b, 0x2c, 0xd2, 0x49, 0x8e, 0xe4, 0x10, 0xfe, 0x06, 0x2c, 0x91, 0x14, 0xb7, 0x62, 0xe2, 0xf9,
|
||||
0x8c, 0x60, 0x41, 0x1a, 0x73, 0x9b, 0xb3, 0x5b, 0x56, 0xb3, 0xd1, 0xcf, 0x9d, 0xba, 0x49, 0x1b,
|
||||
0x77, 0xbb, 0xa8, 0xa2, 0xf1, 0xa1, 0x82, 0xf0, 0xd7, 0xa0, 0x3c, 0xf0, 0xe3, 0x38, 0x6e, 0x14,
|
||||
0x54, 0xf2, 0x5a, 0x3f, 0x77, 0xe0, 0x64, 0x32, 0x8e, 0x63, 0x17, 0x01, 0x93, 0x8a, 0xe3, 0x18,
|
||||
0x1e, 0x00, 0x40, 0xba, 0x82, 0x61, 0x8f, 0x44, 0x6d, 0xde, 0x28, 0x6e, 0x16, 0xb6, 0x0a, 0x4d,
|
||||
0xf7, 0x3a, 0x77, 0x4a, 0xc7, 0xd2, 0x7a, 0x7c, 0x72, 0xc6, 0xfb, 0xb9, 0xb3, 0x6c, 0x48, 0x86,
|
||||
0x81, 0x2e, 0x2a, 0x29, 0x70, 0x1c, 0xb5, 0x39, 0xfc, 0x33, 0xa8, 0xf8, 0x97, 0x38, 0x4a, 0x3d,
|
||||
0x9f, 0xa6, 0x1f, 0xa3, 0xb0, 0x31, 0xbf, 0x39, 0xbb, 0x55, 0xde, 0xfb, 0xf9, 0xf6, 0xf4, 0xbe,
|
||||
0x6d, 0x1f, 0xca, 0xa8, 0x43, 0x15, 0xd4, 0x7c, 0xfc, 0x39, 0x77, 0x66, 0xfa, 0xb9, 0xb3, 0xa2,
|
||||
0xa9, 0xc7, 0x09, 0x5c, 0x54, 0xf6, 0x47, 0x91, 0x70, 0x0f, 0xac, 0xe2, 0x38, 0xa6, 0x9f, 0xbc,
|
||||
0x2c, 0x95, 0x1b, 0x4d, 0x7c, 0x41, 0x02, 0x4f, 0x74, 0x79, 0x63, 0x41, 0x2e, 0x12, 0xad, 0x28,
|
||||
0xe7, 0x87, 0x91, 0xef, 0xa2, 0xcb, 0xdd, 0xff, 0xd5, 0x40, 0x79, 0x4c, 0x0d, 0x26, 0xa0, 0x76,
|
||||
0x49, 0x13, 0xc2, 0x05, 0xc1, 0x81, 0xd7, 0x8a, 0xa9, 0x7f, 0x65, 0x8e, 0xe5, 0xe8, 0xbb, 0xdc,
|
||||
0xf9, 0x65, 0x18, 0x89, 0xcb, 0xac, 0xb5, 0xed, 0xd3, 0x64, 0xc7, 0xa7, 0x3c, 0xa1, 0xdc, 0x3c,
|
||||
0x9e, 0xf2, 0xe0, 0x6a, 0x47, 0xf4, 0xda, 0x84, 0x6f, 0x9f, 0xa4, 0xa2, 0x9f, 0x3b, 0x6b, 0x7a,
|
||||
0xb2, 0x53, 0x54, 0x2e, 0xaa, 0x0e, 0x2d, 0x4d, 0x69, 0x80, 0x3d, 0x50, 0x0d, 0x30, 0xf5, 0x3e,
|
||||
0x52, 0x76, 0x65, 0xd4, 0xe6, 0x94, 0xda, 0xf9, 0x4f, 0x57, 0xbb, 0xce, 0x9d, 0xca, 0xd1, 0xc1,
|
||||
0x1f, 0x5e, 0x53, 0x76, 0xa5, 0x38, 0xfb, 0xb9, 0xb3, 0xaa, 0xd5, 0x27, 0x99, 0x5d, 0x54, 0x09,
|
||||
0x30, 0x1d, 0x86, 0xc1, 0x3f, 0x02, 0x7b, 0x18, 0xc0, 0xb3, 0x76, 0x9b, 0x32, 0x61, 0xaa, 0xe1,
|
||||
0xe9, 0x75, 0xee, 0x54, 0x0d, 0xe5, 0xb9, 0xf6, 0xf4, 0x73, 0xe7, 0x67, 0x53, 0xa4, 0x26, 0xc7,
|
||||
0x45, 0x55, 0x43, 0x6b, 0x42, 0x21, 0x07, 0x15, 0x12, 0xb5, 0x77, 0xf7, 0x9f, 0x99, 0x15, 0x15,
|
||||
0xd5, 0x8a, 0xce, 0xee, 0xb5, 0xa2, 0xf2, 0xf1, 0xc9, 0xd9, 0xee, 0xfe, 0xb3, 0xc1, 0x82, 0xcc,
|
||||
0xd9, 0x8f, 0xd3, 0xba, 0xa8, 0xac, 0xa1, 0x5e, 0xcd, 0x09, 0x30, 0xd0, 0xbb, 0xc4, 0xfc, 0x52,
|
||||
0x55, 0x56, 0xa9, 0xb9, 0x75, 0x9d, 0x3b, 0x40, 0x33, 0xbd, 0xc5, 0xfc, 0x72, 0x74, 0x2e, 0xad,
|
||||
0xde, 0x5f, 0x71, 0x2a, 0xa2, 0x2c, 0x19, 0x70, 0x01, 0x9d, 0x2c, 0xa3, 0x86, 0xf3, 0xdf, 0x37,
|
||||
0xf3, 0x5f, 0x78, 0xf0, 0xfc, 0xf7, 0xef, 0x9a, 0xff, 0xfe, 0xe4, 0xfc, 0x75, 0xcc, 0x50, 0xf4,
|
||||
0x85, 0x11, 0x5d, 0x7c, 0xb0, 0xe8, 0x8b, 0xbb, 0x44, 0x5f, 0x4c, 0x8a, 0xea, 0x18, 0x59, 0xec,
|
||||
0x53, 0x3b, 0xd1, 0xb0, 0x1e, 0x5e, 0xec, 0xb7, 0x36, 0xb5, 0x3a, 0xb4, 0x68, 0xb9, 0xbf, 0x83,
|
||||
0xba, 0x4f, 0x53, 0x2e, 0xa4, 0x2d, 0xa5, 0xed, 0x98, 0x18, 0xcd, 0x92, 0xd2, 0x3c, 0xb9, 0x97,
|
||||
0xe6, 0x63, 0xf3, 0x35, 0xb8, 0x83, 0xcf, 0x45, 0x2b, 0x93, 0x66, 0xad, 0xde, 0x06, 0x76, 0x9b,
|
||||
0x08, 0xc2, 0x78, 0x2b, 0x63, 0xa1, 0x51, 0x06, 0x4a, 0xf9, 0xf8, 0x5e, 0xca, 0xe6, 0x3d, 0x98,
|
||||
0xe6, 0x72, 0x51, 0x6d, 0x64, 0xd2, 0x8a, 0x7f, 0x01, 0xd5, 0x48, 0x4e, 0xa3, 0x95, 0xc5, 0x46,
|
||||
0xaf, 0xac, 0xf4, 0x0e, 0xef, 0xa5, 0x67, 0x5e, 0xe6, 0x49, 0x26, 0x17, 0x2d, 0x0d, 0x0c, 0x5a,
|
||||
0x2b, 0x03, 0x30, 0xc9, 0x22, 0xe6, 0x85, 0x31, 0xf6, 0x23, 0xc2, 0x8c, 0x5e, 0x45, 0xe9, 0xbd,
|
||||
0xb9, 0x97, 0xde, 0x23, 0xad, 0x77, 0x9b, 0xcd, 0x45, 0xb6, 0x34, 0xbe, 0xd1, 0x36, 0x2d, 0x1b,
|
||||
0x80, 0x4a, 0x8b, 0xb0, 0x38, 0x4a, 0x8d, 0xe0, 0x92, 0x12, 0x3c, 0xb8, 0x97, 0xa0, 0xa9, 0xd3,
|
||||
0x71, 0x1e, 0x17, 0x95, 0x35, 0x1c, 0xaa, 0xc4, 0x34, 0x0d, 0xe8, 0x40, 0x65, 0xf9, 0xe1, 0x2a,
|
||||
0xe3, 0x3c, 0x2e, 0x2a, 0x6b, 0xa8, 0x55, 0xba, 0x60, 0x05, 0x33, 0x46, 0x3f, 0x4d, 0xed, 0x21,
|
||||
0x54, 0x62, 0x6f, 0xef, 0x25, 0xb6, 0xae, 0xc5, 0xee, 0xa0, 0x73, 0xd1, 0xb2, 0xb2, 0x4e, 0xec,
|
||||
0x62, 0x06, 0x60, 0xc8, 0x70, 0x6f, 0x4a, 0xb8, 0xfe, 0xf0, 0xc3, 0xbb, 0xcd, 0xe6, 0x22, 0x5b,
|
||||
0x1a, 0x27, 0x64, 0xff, 0x06, 0xea, 0x09, 0x61, 0x21, 0xf1, 0x52, 0x22, 0x78, 0x3b, 0x8e, 0x84,
|
||||
0x11, 0x5e, 0x7d, 0xf8, 0xfb, 0x78, 0x17, 0x9f, 0x8b, 0xa0, 0x32, 0xbf, 0x37, 0x56, 0x25, 0x7e,
|
||||
0x5a, 0xb4, 0xaa, 0x76, 0xed, 0xb4, 0x68, 0xd5, 0x6c, 0xfb, 0xb4, 0x68, 0xd9, 0xf6, 0xf2, 0x69,
|
||||
0xd1, 0x5a, 0xb1, 0xeb, 0x68, 0xa9, 0x47, 0x63, 0xea, 0x75, 0x9e, 0xeb, 0x5c, 0x54, 0x26, 0x9f,
|
||||
0x30, 0x37, 0x5f, 0x14, 0x54, 0xf5, 0xb1, 0xc0, 0x71, 0x8f, 0x1b, 0x62, 0x64, 0x6b, 0xb9, 0xb1,
|
||||
0x1e, 0xb7, 0x03, 0xe6, 0xcf, 0x85, 0xbc, 0xe6, 0xd8, 0xa0, 0x70, 0x45, 0x7a, 0xba, 0x77, 0x23,
|
||||
0x39, 0x84, 0x75, 0x30, 0xdf, 0xc1, 0x71, 0xa6, 0xef, 0x4b, 0x25, 0xa4, 0x81, 0x7b, 0x06, 0x6a,
|
||||
0x17, 0x0c, 0xa7, 0x1c, 0xfb, 0x22, 0xa2, 0xe9, 0x3b, 0x1a, 0x72, 0x08, 0x41, 0x51, 0xf5, 0x10,
|
||||
0x9d, 0xab, 0xc6, 0xf0, 0x57, 0xa0, 0x18, 0xd3, 0x90, 0x37, 0xe6, 0x36, 0x0b, 0x5b, 0xe5, 0xbd,
|
||||
0xd5, 0xdb, 0x37, 0x96, 0x77, 0x34, 0x44, 0x2a, 0xc4, 0xfd, 0xef, 0x1c, 0x28, 0xbc, 0xa3, 0x21,
|
||||
0x6c, 0x80, 0x45, 0x1c, 0x04, 0x8c, 0x70, 0x6e, 0x98, 0x06, 0x10, 0xae, 0x81, 0x05, 0x41, 0xdb,
|
||||
0x91, 0xaf, 0xe9, 0x4a, 0xc8, 0x20, 0x29, 0x1c, 0x60, 0x81, 0x55, 0x17, 0xae, 0x20, 0x35, 0x86,
|
||||
0x7b, 0xa0, 0xa2, 0x56, 0xe6, 0xa5, 0x59, 0xd2, 0x22, 0x4c, 0x35, 0xd3, 0x62, 0xb3, 0x76, 0x93,
|
||||
0x3b, 0x65, 0x65, 0x7f, 0xaf, 0xcc, 0x68, 0x1c, 0xc0, 0x27, 0x60, 0x51, 0x74, 0xc7, 0xfb, 0xe0,
|
||||
0xca, 0x4d, 0xee, 0xd4, 0xc4, 0x68, 0x99, 0xb2, 0xcd, 0xa1, 0x05, 0xd1, 0x55, 0xed, 0x6e, 0x07,
|
||||
0x58, 0xa2, 0xeb, 0x45, 0x69, 0x40, 0xba, 0xaa, 0xd5, 0x15, 0x9b, 0xf5, 0x9b, 0xdc, 0xb1, 0xc7,
|
||||
0xc2, 0x4f, 0xa4, 0x0f, 0x2d, 0x8a, 0xae, 0x1a, 0xc0, 0x27, 0x00, 0xe8, 0x29, 0x29, 0x05, 0xdd,
|
||||
0xa8, 0x96, 0x6e, 0x72, 0xa7, 0xa4, 0xac, 0x8a, 0x7b, 0x34, 0x84, 0x2e, 0x98, 0xd7, 0xdc, 0x96,
|
||||
0xe2, 0xae, 0xdc, 0xe4, 0x8e, 0x15, 0xd3, 0x50, 0x73, 0x6a, 0x97, 0xdc, 0x2a, 0x46, 0x12, 0xda,
|
||||
0x21, 0x81, 0xea, 0x05, 0x16, 0x1a, 0x40, 0xf7, 0x5f, 0x73, 0xc0, 0xba, 0xe8, 0x22, 0xc2, 0xb3,
|
||||
0x58, 0xc0, 0xd7, 0xc0, 0xf6, 0x69, 0x2a, 0x18, 0xf6, 0x85, 0x37, 0xb1, 0xb5, 0xcd, 0xc7, 0xa3,
|
||||
0xef, 0xf2, 0x74, 0x84, 0x8b, 0x6a, 0x03, 0xd3, 0x81, 0xd9, 0xff, 0x3a, 0x98, 0x6f, 0xc5, 0x94,
|
||||
0x26, 0xaa, 0x12, 0x2a, 0x48, 0x03, 0x88, 0xd4, 0xae, 0xa9, 0x53, 0x2e, 0xa8, 0x7b, 0xe9, 0x2f,
|
||||
0x6e, 0x9f, 0xf2, 0x54, 0xa9, 0x34, 0xd7, 0xcc, 0xdd, 0xb4, 0xaa, 0xb5, 0x4d, 0xbe, 0x2b, 0xf7,
|
||||
0x56, 0x95, 0x92, 0x0d, 0x0a, 0x8c, 0x08, 0x75, 0x68, 0x15, 0x24, 0x87, 0x70, 0x1d, 0x58, 0x8c,
|
||||
0x74, 0x08, 0x13, 0x24, 0x50, 0x87, 0x63, 0xa1, 0x21, 0x86, 0x8f, 0x80, 0x15, 0x62, 0xee, 0x65,
|
||||
0x9c, 0x04, 0xfa, 0x24, 0xd0, 0x62, 0x88, 0xf9, 0x07, 0x4e, 0x82, 0x97, 0xc5, 0x7f, 0xfc, 0xc7,
|
||||
0x99, 0x71, 0x31, 0x28, 0x1f, 0xf8, 0x3e, 0xe1, 0xfc, 0x22, 0x6b, 0xc7, 0xe4, 0x07, 0x2a, 0x6c,
|
||||
0x0f, 0x54, 0xb8, 0xa0, 0x0c, 0x87, 0xc4, 0xbb, 0x22, 0x3d, 0x53, 0x67, 0xba, 0x6a, 0x8c, 0xfd,
|
||||
0x77, 0xa4, 0xc7, 0xd1, 0x38, 0x30, 0x12, 0x5f, 0x0b, 0xa0, 0x7c, 0xc1, 0xb0, 0x4f, 0xcc, 0x7d,
|
||||
0x58, 0xd6, 0xaa, 0x84, 0xcc, 0x48, 0x18, 0x24, 0xb5, 0x45, 0x94, 0x10, 0x9a, 0x09, 0xf3, 0x3e,
|
||||
0x0d, 0xa0, 0xcc, 0x60, 0x84, 0x74, 0x89, 0xaf, 0xb6, 0xb1, 0x88, 0x0c, 0x82, 0xfb, 0x60, 0x29,
|
||||
0x88, 0xb8, 0xfa, 0xb9, 0xe0, 0x02, 0xfb, 0x57, 0x7a, 0xf9, 0x4d, 0xfb, 0x26, 0x77, 0x2a, 0xc6,
|
||||
0x71, 0x2e, 0xed, 0x68, 0x02, 0xc1, 0x57, 0xa0, 0x36, 0x4a, 0x53, 0xb3, 0xd5, 0xd7, 0xf9, 0x26,
|
||||
0xbc, 0xc9, 0x9d, 0xea, 0x30, 0x54, 0x79, 0xd0, 0x14, 0x96, 0x27, 0x1d, 0x90, 0x56, 0x16, 0xaa,
|
||||
0xe2, 0xb3, 0x90, 0x06, 0xd2, 0x1a, 0x47, 0x49, 0x24, 0x54, 0xb1, 0xcd, 0x23, 0x0d, 0xe0, 0x2b,
|
||||
0x50, 0xa2, 0x1d, 0xc2, 0x58, 0x14, 0x10, 0xae, 0x2e, 0x06, 0x3f, 0xf6, 0x67, 0x82, 0x46, 0xf1,
|
||||
0x72, 0x71, 0xe6, 0xc7, 0x29, 0x21, 0x09, 0x65, 0x3d, 0xd5, 0xe9, 0xcd, 0xe2, 0xb4, 0xe3, 0xf7,
|
||||
0xca, 0x8e, 0x26, 0x10, 0x6c, 0x02, 0x68, 0xd2, 0x18, 0x11, 0x19, 0x4b, 0x3d, 0xf5, 0xfe, 0x57,
|
||||
0x54, 0xae, 0x7a, 0x0b, 0xb5, 0x17, 0x29, 0xe7, 0x11, 0x16, 0x18, 0xdd, 0xb2, 0x9c, 0x16, 0xad,
|
||||
0xa2, 0x3d, 0x7f, 0x5a, 0xb4, 0x16, 0x6d, 0x6b, 0xb8, 0x7e, 0x33, 0x0b, 0xb4, 0x32, 0xc0, 0x63,
|
||||
0xf4, 0xcd, 0xdf, 0x7e, 0xbe, 0xde, 0x98, 0xfd, 0x72, 0xbd, 0x31, 0xfb, 0xf5, 0x7a, 0x63, 0xf6,
|
||||
0xdf, 0xdf, 0x36, 0x66, 0xbe, 0x7c, 0xdb, 0x98, 0xf9, 0xff, 0xb7, 0x8d, 0x99, 0x3f, 0x8d, 0x7f,
|
||||
0xee, 0x49, 0x47, 0x7e, 0xed, 0x47, 0x7f, 0xbb, 0x5d, 0xf5, 0xbf, 0xab, 0x3e, 0xf9, 0xad, 0x05,
|
||||
0xf5, 0x1f, 0xfb, 0xfc, 0xfb, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfb, 0x44, 0xf1, 0x35, 0x0d, 0x0f,
|
||||
0x00, 0x00,
|
||||
// 1565 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0xdd, 0x4e, 0x23, 0xc9,
|
||||
0x15, 0x06, 0xdc, 0x40, 0xbb, 0x6c, 0xec, 0xa6, 0x30, 0xc4, 0xcb, 0x28, 0x34, 0xe9, 0x8b, 0x88,
|
||||
0x48, 0xbb, 0xb0, 0xb0, 0x42, 0x19, 0xed, 0x2a, 0x51, 0x30, 0xb0, 0x33, 0x90, 0xc9, 0x04, 0x15,
|
||||
0x8c, 0x22, 0x45, 0x8a, 0x5a, 0xe5, 0xee, 0x9a, 0xa6, 0x87, 0xee, 0x2e, 0xab, 0xaa, 0xda, 0x63,
|
||||
0x27, 0x79, 0x80, 0x44, 0xb9, 0xc9, 0x23, 0xcc, 0xe3, 0x8c, 0xa2, 0x5c, 0xcc, 0x65, 0x94, 0x8b,
|
||||
0x56, 0xc4, 0xdc, 0x71, 0xe9, 0x27, 0x88, 0xea, 0xc7, 0xbf, 0xa0, 0x64, 0xe1, 0xca, 0xf5, 0x9d,
|
||||
0x73, 0xea, 0xfb, 0xaa, 0x4e, 0x9d, 0xf6, 0xa9, 0x02, 0x9b, 0x44, 0x5c, 0x13, 0x96, 0xc6, 0x99,
|
||||
0xd8, 0x23, 0xdd, 0x74, 0xaf, 0xbb, 0x2f, 0x7f, 0x76, 0x3b, 0x8c, 0x0a, 0x0a, 0x9d, 0x91, 0x6f,
|
||||
0x57, 0x1a, 0xbb, 0xfb, 0x9b, 0x8d, 0x88, 0x46, 0x54, 0x39, 0xf7, 0xe4, 0x48, 0xc7, 0x79, 0x7f,
|
||||
0x2d, 0x81, 0xa5, 0x0b, 0xcc, 0x70, 0xca, 0xe1, 0x3e, 0x28, 0x93, 0x6e, 0xea, 0x87, 0x24, 0xa3,
|
||||
0x69, 0x73, 0x7e, 0x7b, 0x7e, 0xa7, 0xdc, 0x6a, 0x0c, 0x0a, 0xd7, 0xe9, 0xe3, 0x34, 0xf9, 0xd6,
|
||||
0x1b, 0xb9, 0x3c, 0x64, 0x93, 0x6e, 0x7a, 0x22, 0x87, 0xf0, 0x17, 0x60, 0x85, 0x64, 0xb8, 0x9d,
|
||||
0x10, 0x3f, 0x60, 0x04, 0x0b, 0xd2, 0x5c, 0xd8, 0x9e, 0xdf, 0xb1, 0x5b, 0xcd, 0x41, 0xe1, 0x36,
|
||||
0xcc, 0xb4, 0x49, 0xb7, 0x87, 0xaa, 0x1a, 0x1f, 0x2b, 0x08, 0x7f, 0x0e, 0x2a, 0x43, 0x3f, 0x4e,
|
||||
0x92, 0x66, 0x49, 0x4d, 0xde, 0x18, 0x14, 0x2e, 0x9c, 0x9e, 0x8c, 0x93, 0xc4, 0x43, 0xc0, 0x4c,
|
||||
0xc5, 0x49, 0x02, 0x8f, 0x00, 0x20, 0x3d, 0xc1, 0xb0, 0x4f, 0xe2, 0x0e, 0x6f, 0x5a, 0xdb, 0xa5,
|
||||
0x9d, 0x52, 0xcb, 0xbb, 0x2d, 0xdc, 0xf2, 0xa9, 0xb4, 0x9e, 0x9e, 0x5d, 0xf0, 0x41, 0xe1, 0xae,
|
||||
0x1a, 0x92, 0x51, 0xa0, 0x87, 0xca, 0x0a, 0x9c, 0xc6, 0x1d, 0x0e, 0xff, 0x00, 0xaa, 0xc1, 0x35,
|
||||
0x8e, 0x33, 0x3f, 0xa0, 0xd9, 0xdb, 0x38, 0x6a, 0x2e, 0x6e, 0xcf, 0xef, 0x54, 0x0e, 0x7e, 0xbc,
|
||||
0x3b, 0x9b, 0xb7, 0xdd, 0x63, 0x19, 0x75, 0xac, 0x82, 0x5a, 0xcf, 0x3e, 0x16, 0xee, 0xdc, 0xa0,
|
||||
0x70, 0xd7, 0x34, 0xf5, 0x24, 0x81, 0x87, 0x2a, 0xc1, 0x38, 0x12, 0x1e, 0x80, 0x75, 0x9c, 0x24,
|
||||
0xf4, 0xbd, 0x9f, 0x67, 0x32, 0xd1, 0x24, 0x10, 0x24, 0xf4, 0x45, 0x8f, 0x37, 0x97, 0xe4, 0x26,
|
||||
0xd1, 0x9a, 0x72, 0xbe, 0x19, 0xfb, 0xae, 0x7a, 0xdc, 0xfb, 0x67, 0x1d, 0x54, 0x26, 0xd4, 0x60,
|
||||
0x0a, 0xea, 0xd7, 0x34, 0x25, 0x5c, 0x10, 0x1c, 0xfa, 0xed, 0x84, 0x06, 0x37, 0xe6, 0x58, 0x4e,
|
||||
0xfe, 0x5d, 0xb8, 0x3f, 0x8d, 0x62, 0x71, 0x9d, 0xb7, 0x77, 0x03, 0x9a, 0xee, 0x05, 0x94, 0xa7,
|
||||
0x94, 0x9b, 0x9f, 0xaf, 0x78, 0x78, 0xb3, 0x27, 0xfa, 0x1d, 0xc2, 0x77, 0xcf, 0x32, 0x31, 0x28,
|
||||
0xdc, 0x0d, 0xbd, 0xd8, 0x19, 0x2a, 0x0f, 0xd5, 0x46, 0x96, 0x96, 0x34, 0xc0, 0x3e, 0xa8, 0x85,
|
||||
0x98, 0xfa, 0x6f, 0x29, 0xbb, 0x31, 0x6a, 0x0b, 0x4a, 0xed, 0xf2, 0x87, 0xab, 0xdd, 0x16, 0x6e,
|
||||
0xf5, 0xe4, 0xe8, 0xb7, 0xdf, 0x53, 0x76, 0xa3, 0x38, 0x07, 0x85, 0xbb, 0xae, 0xd5, 0xa7, 0x99,
|
||||
0x3d, 0x54, 0x0d, 0x31, 0x1d, 0x85, 0xc1, 0xdf, 0x01, 0x67, 0x14, 0xc0, 0xf3, 0x4e, 0x87, 0x32,
|
||||
0x61, 0xaa, 0xe1, 0xab, 0xdb, 0xc2, 0xad, 0x19, 0xca, 0x4b, 0xed, 0x19, 0x14, 0xee, 0x8f, 0x66,
|
||||
0x48, 0xcd, 0x1c, 0x0f, 0xd5, 0x0c, 0xad, 0x09, 0x85, 0x1c, 0x54, 0x49, 0xdc, 0xd9, 0x3f, 0xfc,
|
||||
0xda, 0xec, 0xc8, 0x52, 0x3b, 0xba, 0x78, 0xd4, 0x8e, 0x2a, 0xa7, 0x67, 0x17, 0xfb, 0x87, 0x5f,
|
||||
0x0f, 0x37, 0x64, 0xce, 0x7e, 0x92, 0xd6, 0x43, 0x15, 0x0d, 0xf5, 0x6e, 0xce, 0x80, 0x81, 0xfe,
|
||||
0x35, 0xe6, 0xd7, 0xaa, 0xb2, 0xca, 0xad, 0x9d, 0xdb, 0xc2, 0x05, 0x9a, 0xe9, 0x25, 0xe6, 0xd7,
|
||||
0xe3, 0x73, 0x69, 0xf7, 0xff, 0x88, 0x33, 0x11, 0xe7, 0xe9, 0x90, 0x0b, 0xe8, 0xc9, 0x32, 0x6a,
|
||||
0xb4, 0xfe, 0x43, 0xb3, 0xfe, 0xa5, 0x27, 0xaf, 0xff, 0xf0, 0xa1, 0xf5, 0x1f, 0x4e, 0xaf, 0x5f,
|
||||
0xc7, 0x8c, 0x44, 0x9f, 0x1b, 0xd1, 0xe5, 0x27, 0x8b, 0x3e, 0x7f, 0x48, 0xf4, 0xf9, 0xb4, 0xa8,
|
||||
0x8e, 0x91, 0xc5, 0x3e, 0x93, 0x89, 0xa6, 0xfd, 0xf4, 0x62, 0xbf, 0x97, 0xd4, 0xda, 0xc8, 0xa2,
|
||||
0xe5, 0xfe, 0x0c, 0x1a, 0x01, 0xcd, 0xb8, 0x90, 0xb6, 0x8c, 0x76, 0x12, 0x62, 0x34, 0xcb, 0x4a,
|
||||
0xf3, 0xec, 0x51, 0x9a, 0xcf, 0xcc, 0xbf, 0xc1, 0x03, 0x7c, 0x1e, 0x5a, 0x9b, 0x36, 0x6b, 0xf5,
|
||||
0x0e, 0x70, 0x3a, 0x44, 0x10, 0xc6, 0xdb, 0x39, 0x8b, 0x8c, 0x32, 0x50, 0xca, 0xa7, 0x8f, 0x52,
|
||||
0x36, 0xdf, 0xc1, 0x2c, 0x97, 0x87, 0xea, 0x63, 0x93, 0x56, 0x7c, 0x07, 0x6a, 0xb1, 0x5c, 0x46,
|
||||
0x3b, 0x4f, 0x8c, 0x5e, 0x45, 0xe9, 0x1d, 0x3f, 0x4a, 0xcf, 0x7c, 0xcc, 0xd3, 0x4c, 0x1e, 0x5a,
|
||||
0x19, 0x1a, 0xb4, 0x56, 0x0e, 0x60, 0x9a, 0xc7, 0xcc, 0x8f, 0x12, 0x1c, 0xc4, 0x84, 0x19, 0xbd,
|
||||
0xaa, 0xd2, 0x7b, 0xf1, 0x28, 0xbd, 0x2f, 0xb4, 0xde, 0x7d, 0x36, 0x0f, 0x39, 0xd2, 0xf8, 0x42,
|
||||
0xdb, 0xb4, 0x6c, 0x08, 0xaa, 0x6d, 0xc2, 0x92, 0x38, 0x33, 0x82, 0x2b, 0x4a, 0xf0, 0xe8, 0x51,
|
||||
0x82, 0xa6, 0x4e, 0x27, 0x79, 0x3c, 0x54, 0xd1, 0x70, 0xa4, 0x92, 0xd0, 0x2c, 0xa4, 0x43, 0x95,
|
||||
0xd5, 0xa7, 0xab, 0x4c, 0xf2, 0x78, 0xa8, 0xa2, 0xa1, 0x56, 0xe9, 0x81, 0x35, 0xcc, 0x18, 0x7d,
|
||||
0x3f, 0x93, 0x43, 0xa8, 0xc4, 0x5e, 0x3e, 0x4a, 0x6c, 0x53, 0x8b, 0x3d, 0x40, 0xe7, 0xa1, 0x55,
|
||||
0x65, 0x9d, 0xca, 0x62, 0x0e, 0x60, 0xc4, 0x70, 0x7f, 0x46, 0xb8, 0xf1, 0xf4, 0xc3, 0xbb, 0xcf,
|
||||
0xe6, 0x21, 0x47, 0x1a, 0xa7, 0x64, 0xff, 0x04, 0x1a, 0x29, 0x61, 0x11, 0xf1, 0x33, 0x22, 0x78,
|
||||
0x27, 0x89, 0x85, 0x11, 0x5e, 0x7f, 0xfa, 0xf7, 0xf8, 0x10, 0x9f, 0x87, 0xa0, 0x32, 0xbf, 0x36,
|
||||
0x56, 0x25, 0x7e, 0x6e, 0xd9, 0x35, 0xa7, 0x7e, 0x6e, 0xd9, 0x75, 0xc7, 0x39, 0xb7, 0x6c, 0xc7,
|
||||
0x59, 0x3d, 0xb7, 0xec, 0x35, 0xa7, 0x81, 0x56, 0xfa, 0x34, 0xa1, 0x7e, 0xf7, 0x1b, 0x3d, 0x17,
|
||||
0x55, 0xc8, 0x7b, 0xcc, 0xcd, 0x3f, 0x0a, 0xaa, 0x05, 0x58, 0xe0, 0xa4, 0xcf, 0x0d, 0x31, 0x72,
|
||||
0xb4, 0xdc, 0x44, 0x8f, 0xdb, 0x03, 0x8b, 0x97, 0x42, 0x5e, 0x73, 0x1c, 0x50, 0xba, 0x21, 0x7d,
|
||||
0xdd, 0xbb, 0x91, 0x1c, 0xc2, 0x06, 0x58, 0xec, 0xe2, 0x24, 0xd7, 0xf7, 0xa5, 0x32, 0xd2, 0xc0,
|
||||
0xbb, 0x00, 0xf5, 0x2b, 0x86, 0x33, 0x8e, 0x03, 0x11, 0xd3, 0xec, 0x15, 0x8d, 0x38, 0x84, 0xc0,
|
||||
0x52, 0x3d, 0x44, 0xcf, 0x55, 0x63, 0xf8, 0x33, 0x60, 0x25, 0x34, 0xe2, 0xcd, 0x85, 0xed, 0xd2,
|
||||
0x4e, 0xe5, 0x60, 0xfd, 0xfe, 0x8d, 0xe5, 0x15, 0x8d, 0x90, 0x0a, 0xf1, 0xfe, 0xb1, 0x00, 0x4a,
|
||||
0xaf, 0x68, 0x04, 0x9b, 0x60, 0x19, 0x87, 0x21, 0x23, 0x9c, 0x1b, 0xa6, 0x21, 0x84, 0x1b, 0x60,
|
||||
0x49, 0xd0, 0x4e, 0x1c, 0x68, 0xba, 0x32, 0x32, 0x48, 0x0a, 0x87, 0x58, 0x60, 0xd5, 0x85, 0xab,
|
||||
0x48, 0x8d, 0xe1, 0x01, 0xa8, 0xaa, 0x9d, 0xf9, 0x59, 0x9e, 0xb6, 0x09, 0x53, 0xcd, 0xd4, 0x6a,
|
||||
0xd5, 0xef, 0x0a, 0xb7, 0xa2, 0xec, 0xaf, 0x95, 0x19, 0x4d, 0x02, 0xf8, 0x25, 0x58, 0x16, 0xbd,
|
||||
0xc9, 0x3e, 0xb8, 0x76, 0x57, 0xb8, 0x75, 0x31, 0xde, 0xa6, 0x6c, 0x73, 0x68, 0x49, 0xf4, 0x54,
|
||||
0xbb, 0xdb, 0x03, 0xb6, 0xe8, 0xf9, 0x71, 0x16, 0x92, 0x9e, 0x6a, 0x75, 0x56, 0xab, 0x71, 0x57,
|
||||
0xb8, 0xce, 0x44, 0xf8, 0x99, 0xf4, 0xa1, 0x65, 0xd1, 0x53, 0x03, 0xf8, 0x25, 0x00, 0x7a, 0x49,
|
||||
0x4a, 0x41, 0x37, 0xaa, 0x95, 0xbb, 0xc2, 0x2d, 0x2b, 0xab, 0xe2, 0x1e, 0x0f, 0xa1, 0x07, 0x16,
|
||||
0x35, 0xb7, 0xad, 0xb8, 0xab, 0x77, 0x85, 0x6b, 0x27, 0x34, 0xd2, 0x9c, 0xda, 0x25, 0x53, 0xc5,
|
||||
0x48, 0x4a, 0xbb, 0x24, 0x54, 0xbd, 0xc0, 0x46, 0x43, 0xe8, 0xfd, 0x6d, 0x01, 0xd8, 0x57, 0x3d,
|
||||
0x44, 0x78, 0x9e, 0x08, 0xf8, 0x3d, 0x70, 0x02, 0x9a, 0x09, 0x86, 0x03, 0xe1, 0x4f, 0xa5, 0xb6,
|
||||
0xf5, 0x6c, 0xfc, 0xbf, 0x3c, 0x1b, 0xe1, 0xa1, 0xfa, 0xd0, 0x74, 0x64, 0xf2, 0xdf, 0x00, 0x8b,
|
||||
0xed, 0x84, 0xd2, 0x54, 0x55, 0x42, 0x15, 0x69, 0x00, 0x91, 0xca, 0x9a, 0x3a, 0xe5, 0x92, 0xba,
|
||||
0x97, 0xfe, 0xe4, 0xfe, 0x29, 0xcf, 0x94, 0x4a, 0x6b, 0xc3, 0xdc, 0x4d, 0x6b, 0x5a, 0xdb, 0xcc,
|
||||
0xf7, 0x64, 0x6e, 0x55, 0x29, 0x39, 0xa0, 0xc4, 0x88, 0x50, 0x87, 0x56, 0x45, 0x72, 0x08, 0x37,
|
||||
0x81, 0xcd, 0x48, 0x97, 0x30, 0x41, 0x42, 0x75, 0x38, 0x36, 0x1a, 0x61, 0xf8, 0x05, 0xb0, 0x23,
|
||||
0xcc, 0xfd, 0x9c, 0x93, 0x50, 0x9f, 0x04, 0x5a, 0x8e, 0x30, 0x7f, 0xc3, 0x49, 0xf8, 0xad, 0xf5,
|
||||
0x97, 0x0f, 0xee, 0x9c, 0x87, 0x41, 0xe5, 0x28, 0x08, 0x08, 0xe7, 0x57, 0x79, 0x27, 0x21, 0xff,
|
||||
0xa3, 0xc2, 0x0e, 0x40, 0x95, 0x0b, 0xca, 0x70, 0x44, 0xfc, 0x1b, 0xd2, 0x37, 0x75, 0xa6, 0xab,
|
||||
0xc6, 0xd8, 0x7f, 0x4d, 0xfa, 0x1c, 0x4d, 0x02, 0x23, 0xf1, 0xc1, 0x02, 0x95, 0x2b, 0x86, 0x03,
|
||||
0x62, 0xee, 0xc3, 0xb2, 0x56, 0x25, 0x64, 0x46, 0xc2, 0x20, 0xa9, 0x2d, 0xe2, 0x94, 0xd0, 0x5c,
|
||||
0x98, 0xef, 0x69, 0x08, 0xe5, 0x0c, 0x46, 0x48, 0x8f, 0x04, 0x2a, 0x8d, 0x16, 0x32, 0x08, 0x1e,
|
||||
0x82, 0x95, 0x30, 0xe6, 0xea, 0x71, 0xc1, 0x05, 0x0e, 0x6e, 0xf4, 0xf6, 0x5b, 0xce, 0x5d, 0xe1,
|
||||
0x56, 0x8d, 0xe3, 0x52, 0xda, 0xd1, 0x14, 0x82, 0xdf, 0x81, 0xfa, 0x78, 0x9a, 0x5a, 0xad, 0xbe,
|
||||
0xce, 0xb7, 0xe0, 0x5d, 0xe1, 0xd6, 0x46, 0xa1, 0xca, 0x83, 0x66, 0xb0, 0x3c, 0xe9, 0x90, 0xb4,
|
||||
0xf3, 0x48, 0x15, 0x9f, 0x8d, 0x34, 0x90, 0xd6, 0x24, 0x4e, 0x63, 0xa1, 0x8a, 0x6d, 0x11, 0x69,
|
||||
0x00, 0xbf, 0x03, 0x65, 0xda, 0x25, 0x8c, 0xc5, 0x21, 0xe1, 0xea, 0x62, 0xf0, 0xff, 0x5e, 0x26,
|
||||
0x68, 0x1c, 0x2f, 0x37, 0x67, 0x1e, 0x4e, 0x29, 0x49, 0x29, 0xeb, 0xab, 0x4e, 0x6f, 0x36, 0xa7,
|
||||
0x1d, 0xbf, 0x51, 0x76, 0x34, 0x85, 0x60, 0x0b, 0x40, 0x33, 0x8d, 0x11, 0x91, 0xb3, 0xcc, 0x57,
|
||||
0xdf, 0x7f, 0x55, 0xcd, 0x55, 0x5f, 0xa1, 0xf6, 0x22, 0xe5, 0x3c, 0xc1, 0x02, 0xa3, 0x7b, 0x16,
|
||||
0xf8, 0x4b, 0x00, 0xf5, 0x99, 0xf8, 0xef, 0x38, 0x1d, 0x3d, 0xad, 0x74, 0x23, 0x56, 0xfa, 0xda,
|
||||
0x6b, 0xd6, 0xec, 0x68, 0x74, 0xce, 0xa9, 0xd9, 0xc5, 0xb9, 0x65, 0x5b, 0xce, 0xe2, 0xb9, 0x65,
|
||||
0x2f, 0x3b, 0xf6, 0x28, 0x7f, 0x66, 0x17, 0x68, 0x6d, 0x88, 0x27, 0x96, 0xd7, 0xfa, 0xd5, 0xc7,
|
||||
0xdb, 0xad, 0xf9, 0x4f, 0xb7, 0x5b, 0xf3, 0xff, 0xb9, 0xdd, 0x9a, 0xff, 0xfb, 0xe7, 0xad, 0xb9,
|
||||
0x4f, 0x9f, 0xb7, 0xe6, 0xfe, 0xf5, 0x79, 0x6b, 0xee, 0xf7, 0x93, 0xed, 0x82, 0x74, 0x65, 0xb7,
|
||||
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) {
|
||||
@ -1380,6 +1390,13 @@ func (m *TraceConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
||||
_ = i
|
||||
var l int
|
||||
_ = 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 {
|
||||
i--
|
||||
if m.EnableReturnData {
|
||||
@ -1753,6 +1770,10 @@ func (m *TraceConfig) Size() (n int) {
|
||||
if m.EnableReturnData {
|
||||
n += 2
|
||||
}
|
||||
l = len(m.TracerJsonConfig)
|
||||
if l > 0 {
|
||||
n += 1 + l + sovEvm(uint64(l))
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
@ -3777,6 +3798,38 @@ func (m *TraceConfig) Unmarshal(dAtA []byte) error {
|
||||
}
|
||||
}
|
||||
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:
|
||||
iNdEx = preIndex
|
||||
skippy, err := skipEvm(dAtA[iNdEx:])
|
||||
|
Loading…
Reference in New Issue
Block a user