From 9b9c835266408d434b4ff9eea231f80697600bc3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Federico=20Kunze=20K=C3=BCllmer?=
<31522760+fedekunze@users.noreply.github.com>
Date: Fri, 30 Jul 2021 07:40:17 -0400
Subject: [PATCH] evm: dynamic fee tx (#384)
* evm: dynamic fee tx
* proto message
* fix
* lint
---
buf.yaml | 4 +
docs/core/proto-docs.md | 39 +-
go.mod | 14 +-
go.sum | 47 ++
proto/ethermint/evm/v1alpha1/query.proto | 59 +-
proto/ethermint/evm/v1alpha1/tx.proto | 93 ++-
x/evm/types/access_list_tx.go | 10 +
x/evm/types/codec.go | 1 +
x/evm/types/dynamic_fee_tx.go | 245 +++++++
x/evm/types/errors.go | 8 +
x/evm/types/legacy_tx.go | 10 +
x/evm/types/query.pb.go | 22 +-
x/evm/types/tx.pb.go | 803 +++++++++++++++++++++--
x/evm/types/tx_data.go | 10 +-
14 files changed, 1242 insertions(+), 123 deletions(-)
create mode 100644 x/evm/types/dynamic_fee_tx.go
diff --git a/buf.yaml b/buf.yaml
index 72a5e46b..15f3efb9 100644
--- a/buf.yaml
+++ b/buf.yaml
@@ -15,6 +15,10 @@ lint:
- SERVICE_SUFFIX
- PACKAGE_VERSION_SUFFIX
- RPC_REQUEST_STANDARD_NAME
+ - RPC_REQUEST_RESPONSE_UNIQUE
+ - RPC_RESPONSE_STANDARD_NAME
+ - RPC_REQUEST_RESPONSE_UNIQUE
+ - COMMENT_MESSAGE
ignore:
- tendermint
- gogoproto
diff --git a/docs/core/proto-docs.md b/docs/core/proto-docs.md
index 4cc85e14..5351376e 100644
--- a/docs/core/proto-docs.md
+++ b/docs/core/proto-docs.md
@@ -23,6 +23,7 @@
- [ethermint/evm/v1alpha1/tx.proto](#ethermint/evm/v1alpha1/tx.proto)
- [AccessListTx](#ethermint.evm.v1alpha1.AccessListTx)
+ - [DynamicFeeTx](#ethermint.evm.v1alpha1.DynamicFeeTx)
- [ExtensionOptionsEthereumTx](#ethermint.evm.v1alpha1.ExtensionOptionsEthereumTx)
- [ExtensionOptionsWeb3Tx](#ethermint.evm.v1alpha1.ExtensionOptionsWeb3Tx)
- [LegacyTx](#ethermint.evm.v1alpha1.LegacyTx)
@@ -360,6 +361,32 @@ AccessListTx is the data of EIP-2930 access list transactions.
+
+
+### DynamicFeeTx
+DynamicFeeTx is the data of EIP-1559 dinamic fee transactions.
+
+
+| Field | Type | Label | Description |
+| ----- | ---- | ----- | ----------- |
+| `chain_id` | [string](#string) | | destination EVM chain ID |
+| `nonce` | [uint64](#uint64) | | nonce corresponds to the account nonce (transaction sequence). |
+| `gas_tip_cap` | [string](#string) | | gas tip cap defines the max value for the gas tip |
+| `gas_fee_cap` | [string](#string) | | gas fee cap defines the max value for the gas fee |
+| `gas` | [uint64](#uint64) | | gas defines the gas limit defined for the transaction. |
+| `to` | [string](#string) | | hex formatted address of the recipient |
+| `value` | [string](#string) | | value defines the the transaction amount. |
+| `data` | [bytes](#bytes) | | input defines the data payload bytes of the transaction. |
+| `accesses` | [AccessTuple](#ethermint.evm.v1alpha1.AccessTuple) | repeated | |
+| `v` | [bytes](#bytes) | | v defines the signature value |
+| `r` | [bytes](#bytes) | | r defines the signature value |
+| `s` | [bytes](#bytes) | | s define the signature value |
+
+
+
+
+
+
### ExtensionOptionsEthereumTx
@@ -659,7 +686,8 @@ method.
### QueryCosmosAccountRequest
-QueryCosmosAccountRequest is the request type for the Query/CosmosAccount RPC method.
+QueryCosmosAccountRequest is the request type for the Query/CosmosAccount RPC
+method.
| Field | Type | Label | Description |
@@ -674,7 +702,8 @@ QueryCosmosAccountRequest is the request type for the Query/CosmosAccount RPC me
### QueryCosmosAccountResponse
-QueryCosmosAccountResponse is the response type for the Query/CosmosAccount RPC method.
+QueryCosmosAccountResponse is the response type for the Query/CosmosAccount
+RPC method.
| Field | Type | Label | Description |
@@ -809,7 +838,8 @@ QueryTxLogs is the response type for the Query/TxLogs RPC method.
### QueryValidatorAccountRequest
-QueryValidatorAccountRequest is the request type for the Query/ValidatorAccount RPC method.
+QueryValidatorAccountRequest is the request type for the
+Query/ValidatorAccount RPC method.
| Field | Type | Label | Description |
@@ -824,7 +854,8 @@ QueryValidatorAccountRequest is the request type for the Query/ValidatorAccount
### QueryValidatorAccountResponse
-QueryValidatorAccountResponse is the response type for the Query/ValidatorAccount RPC method.
+QueryValidatorAccountResponse is the response type for the
+Query/ValidatorAccount RPC method.
| Field | Type | Label | Description |
diff --git a/go.mod b/go.mod
index b8b448dc..1bc901c7 100644
--- a/go.mod
+++ b/go.mod
@@ -3,6 +3,10 @@ module github.com/tharsis/ethermint
go 1.16
require (
+ github.com/Masterminds/goutils v1.1.1 // indirect
+ github.com/Masterminds/semver v1.5.0 // indirect
+ github.com/Masterminds/sprig v2.22.0+incompatible // indirect
+ github.com/aokoli/goutils v1.1.1 // indirect
github.com/armon/go-metrics v0.3.9
github.com/aws/aws-sdk-go v1.38.21 // indirect
github.com/bitly/go-simplejson v0.5.0 // indirect
@@ -15,21 +19,27 @@ require (
github.com/cosmos/go-bip39 v1.0.0
github.com/cosmos/ibc-go v1.0.0-rc3
github.com/deckarep/golang-set v1.7.1 // indirect
+ github.com/envoyproxy/protoc-gen-validate v0.6.1 // indirect
github.com/ethereum/go-ethereum v1.10.3
github.com/gofrs/uuid v4.0.0+incompatible // indirect
github.com/gogo/protobuf v1.3.3
github.com/golang/protobuf v1.5.2
- github.com/google/uuid v1.2.0 // indirect
+ github.com/google/uuid v1.3.0 // indirect
github.com/gorilla/mux v1.8.0
github.com/gorilla/websocket v1.4.2
github.com/grpc-ecosystem/grpc-gateway v1.16.0
github.com/hashicorp/go-immutable-radix v1.3.0 // indirect
+ github.com/huandu/xstrings v1.3.2 // indirect
+ github.com/imdario/mergo v0.3.12 // indirect
github.com/improbable-eng/grpc-web v0.14.0
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 // indirect
github.com/miguelmota/go-ethereum-hdwallet v0.0.1
+ github.com/mitchellh/copystructure v1.2.0 // indirect
+ github.com/mwitkow/go-proto-validators v0.3.2 // indirect
github.com/palantir/stacktrace v0.0.0-20161112013806-78658fd2d177
github.com/pkg/errors v0.9.1
github.com/prometheus/tsdb v0.10.0 // indirect
+ github.com/pseudomuto/protoc-gen-doc v1.4.1 // indirect
github.com/rakyll/statik v0.1.7
github.com/regen-network/cosmos-proto v0.3.1
github.com/rjeczalik/notify v0.9.2 // indirect
@@ -44,7 +54,7 @@ require (
github.com/tyler-smith/go-bip39 v1.1.0
github.com/xlab/suplog v1.3.0
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97 // indirect
- google.golang.org/genproto v0.0.0-20210712171009-5404628d0f46
+ google.golang.org/genproto v0.0.0-20210729151513-df9385d47c1b
google.golang.org/grpc v1.39.0
gopkg.in/yaml.v2 v2.4.0
nhooyr.io/websocket v1.8.7 // indirect
diff --git a/go.sum b/go.sum
index 0c4ab406..528a06a9 100644
--- a/go.sum
+++ b/go.sum
@@ -68,6 +68,14 @@ github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t
github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ=
github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo=
github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
+github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=
+github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
+github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
+github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=
+github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
+github.com/Masterminds/sprig v2.15.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o=
+github.com/Masterminds/sprig v2.22.0+incompatible h1:z4yfnGrZ7netVz+0EDJ0Wi+5VZCSYp4Z0m2dk6cEM60=
+github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o=
github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
@@ -95,6 +103,9 @@ github.com/allegro/bigcache v1.2.1 h1:hg1sY1raCwic3Vnsvje6TT7/pnZba83LeFck5NrFKS
github.com/allegro/bigcache v1.2.1/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM=
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
+github.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ=
+github.com/aokoli/goutils v1.1.1 h1:/hA+Ywo3AxoDZY5ZMnkiEkUvkK4BPp927ax110KCqqg=
+github.com/aokoli/goutils v1.1.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ=
github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0=
github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
@@ -232,6 +243,7 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3
github.com/danieljoos/wincred v1.0.2 h1:zf4bhty2iLuwgjgpraD2E9UbvO+fe54XXGJbOwe23fU=
github.com/danieljoos/wincred v1.0.2/go.mod h1:SnuYRW9lp1oJrZX/dXJqr0cPK5gYXqx3EJbmjhLdK9U=
github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg=
+github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
@@ -276,6 +288,9 @@ github.com/enigmampc/btcutil v1.0.3-0.20200723161021-e2fb6adb2a25 h1:2vLKys4RBU4
github.com/enigmampc/btcutil v1.0.3-0.20200723161021-e2fb6adb2a25/go.mod h1:hTr8+TLQmkUkgcuh3mcr5fjrT9c64ZzsBCdCEC6UppY=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
+github.com/envoyproxy/protoc-gen-validate v0.3.0-java/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
+github.com/envoyproxy/protoc-gen-validate v0.6.1 h1:4CF52PCseTFt4bE+Yk3dIpdVi7XWuPVMhPtm4FaIJPM=
+github.com/envoyproxy/protoc-gen-validate v0.6.1/go.mod h1:txg5va2Qkip90uYoSKH+nkAAmXrb2j3iq4FLwdrCbXQ=
github.com/ethereum/go-ethereum v1.9.25/go.mod h1:vMkFiYLHI4tgPw4k2j4MHKoovchFE8plZ0M9VMk4/oM=
github.com/ethereum/go-ethereum v1.10.1/go.mod h1:E5e/zvdfUVr91JZ0AwjyuJM3x+no51zZJRz61orLLSk=
github.com/ethereum/go-ethereum v1.10.3 h1:SEYOYARvbWnoDl1hOSks3ZJQpRiiRJe8ubaQGJQwq0s=
@@ -436,12 +451,15 @@ github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLe
github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/protobuf v3.14.0+incompatible/go.mod h1:lUQ9D1ePzbH2PrIS7ob/bjm9HXyH5WHB0Akwh7URreM=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
+github.com/google/uuid v0.0.0-20161128191214-064e2069ce9c/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.5/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.2.0 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs=
github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
+github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
@@ -524,14 +542,21 @@ github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iU
github.com/holiman/uint256 v1.1.1 h1:4JywC80b+/hSfljFlEBLHrrh+CIONLDz9NuFl0af4Mw=
github.com/holiman/uint256 v1.1.1/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
+github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo=
+github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw=
+github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg=
github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc=
github.com/huin/goupnp v1.0.1-0.20200620063722-49508fba0031/go.mod h1:nNs7wvRfN1eKaMknBydLNQU6146XQim8t4h+q90biWo=
github.com/huin/goupnp v1.0.1-0.20210310174557-0ca763054c88 h1:bcAj8KroPf552TScjFPIakjH2/tdIrIH8F+cc4v4SRo=
github.com/huin/goupnp v1.0.1-0.20210310174557-0ca763054c88/go.mod h1:nNs7wvRfN1eKaMknBydLNQU6146XQim8t4h+q90biWo=
github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o=
+github.com/iancoleman/strcase v0.0.0-20180726023541-3605ed457bf7/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE=
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
+github.com/imdario/mergo v0.3.4/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
+github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU=
+github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
github.com/improbable-eng/grpc-web v0.14.0 h1:GdoK+cXABdB+1keuqsV1drSFO2XLYIxqt/4Rj8SWGBk=
github.com/improbable-eng/grpc-web v0.14.0/go.mod h1:6hRR09jOEG81ADP5wCQju1z71g6OL4eEvELdran/3cs=
github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=
@@ -634,6 +659,7 @@ github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoR
github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM=
github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4=
github.com/lucasjones/reggen v0.0.0-20180717132126-cdb49ff09d77/go.mod h1:5ELEyG+X8f+meRWHuqUOewBOhvHkl7M76pdGEansxW4=
+github.com/lyft/protoc-gen-star v0.5.1/go.mod h1:9toiA3cC7z5uVbODF7kEQ91Xn7XNFkVUl+SrEe+ZORU=
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls=
@@ -668,6 +694,8 @@ github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjK
github.com/minio/highwayhash v1.0.1 h1:dZ6IIu8Z14VlC0VpfKofAhCy74wu/Qb5gcn52yWoz/0=
github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY=
github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
+github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
+github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=
github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
@@ -679,6 +707,8 @@ github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh
github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag=
github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
+github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
+github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -691,6 +721,9 @@ github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ib
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU=
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
+github.com/mwitkow/go-proto-validators v0.0.0-20180403085117-0950a7990007/go.mod h1:m2XC9Qq0AlmmVksL6FktJCdTYyLk7V3fKyp0sl1yWQo=
+github.com/mwitkow/go-proto-validators v0.3.2 h1:qRlmpTzm2pstMKKzTdvwPCF5QfBNURSlAgN/R+qbKos=
+github.com/mwitkow/go-proto-validators v0.3.2/go.mod h1:ej0Qp0qMgHN/KtDyUt+Q1/tA7a5VarXUOUxD+oeD30w=
github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0=
github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E=
github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg=
@@ -775,6 +808,7 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA=
github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI=
github.com/pkg/term v0.0.0-20180730021639-bffc007b7fd5/go.mod h1:eCbImbZ95eXtAUIbLAuAVnBnwf83mjf6QIVH8SHYwqQ=
+github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
@@ -823,6 +857,10 @@ github.com/prometheus/tsdb v0.6.2-0.20190402121629-4f204dcbc150/go.mod h1:qhTCs0
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
github.com/prometheus/tsdb v0.10.0 h1:If5rVCMTp6W2SiRAQFlbpJNgVlgMEd+U2GZckwK38ic=
github.com/prometheus/tsdb v0.10.0/go.mod h1:oi49uRhEe9dPUTlS3JRZOwJuVi6tmh10QSgwXEyGCt4=
+github.com/pseudomuto/protoc-gen-doc v1.4.1 h1:aNTZq0dy0Pq2ag2v7bhNKFNgBBA8wMCoJSChhd7RciE=
+github.com/pseudomuto/protoc-gen-doc v1.4.1/go.mod h1:exDTOVwqpp30eV/EDPFLZy3Pwr2sn6hBC1WIYH/UbIg=
+github.com/pseudomuto/protokit v0.2.0 h1:hlnBDcy3YEDXH7kc9gV+NLaN0cDzhDvD1s7Y6FZ8RpM=
+github.com/pseudomuto/protokit v0.2.0/go.mod h1:2PdH30hxVHsup8KpBTOXTBeMVhJZVio3Q8ViKSAXT0Q=
github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ=
github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc=
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
@@ -881,6 +919,8 @@ github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasO
github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI=
github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
+github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4=
+github.com/spf13/afero v1.3.4/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I=
github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY=
github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I=
github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
@@ -920,6 +960,7 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48=
github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
+github.com/stretchr/testify v0.0.0-20170130113145-4d4bfba8f1d1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
@@ -1034,6 +1075,7 @@ go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo=
golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
+golang.org/x/crypto v0.0.0-20180501155221-613d6eafa307/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
@@ -1175,6 +1217,7 @@ golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -1344,6 +1387,7 @@ golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
+golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -1387,6 +1431,7 @@ google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCID
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
+google.golang.org/genproto v0.0.0-20181107211654-5fc9ac540362/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
@@ -1436,6 +1481,8 @@ google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaE
google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
google.golang.org/genproto v0.0.0-20210712171009-5404628d0f46 h1:C+heNsV69Z0EjfRnhU7mg6EX5zz5l7x7hhTil+Ayj8g=
google.golang.org/genproto v0.0.0-20210712171009-5404628d0f46/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k=
+google.golang.org/genproto v0.0.0-20210729151513-df9385d47c1b h1:4xoALQmXxqVdDdLimpPyPeDdsJzo+nFTJw9euAMpqgM=
+google.golang.org/genproto v0.0.0-20210729151513-df9385d47c1b/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48=
google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o=
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.0.1/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
diff --git a/proto/ethermint/evm/v1alpha1/query.proto b/proto/ethermint/evm/v1alpha1/query.proto
index ce2fe984..281b9f29 100644
--- a/proto/ethermint/evm/v1alpha1/query.proto
+++ b/proto/ethermint/evm/v1alpha1/query.proto
@@ -17,13 +17,18 @@ service Query {
}
// CosmosAccount queries an Ethereum account's Cosmos Address.
- rpc CosmosAccount(QueryCosmosAccountRequest) returns (QueryCosmosAccountResponse) {
- option (google.api.http).get = "/ethermint/evm/v1alpha1/cosmos_account/{address}";
+ rpc CosmosAccount(QueryCosmosAccountRequest)
+ returns (QueryCosmosAccountResponse) {
+ option (google.api.http).get =
+ "/ethermint/evm/v1alpha1/cosmos_account/{address}";
}
- // ValidatorAccount queries an Ethereum account's from a validator consensus Address.
- rpc ValidatorAccount(QueryValidatorAccountRequest) returns (QueryValidatorAccountResponse) {
- option (google.api.http).get = "/ethermint/evm/v1alpha1/validator_account/{cons_address}";
+ // ValidatorAccount queries an Ethereum account's from a validator consensus
+ // Address.
+ rpc ValidatorAccount(QueryValidatorAccountRequest)
+ returns (QueryValidatorAccountResponse) {
+ option (google.api.http).get =
+ "/ethermint/evm/v1alpha1/validator_account/{cons_address}";
}
// Balance queries the balance of a the EVM denomination for a single
@@ -34,7 +39,8 @@ service Query {
// Storage queries the balance of all coins for a single account.
rpc Storage(QueryStorageRequest) returns (QueryStorageResponse) {
- option (google.api.http).get = "/ethermint/evm/v1alpha1/storage/{address}/{key}";
+ option (google.api.http).get =
+ "/ethermint/evm/v1alpha1/storage/{address}/{key}";
}
// Code queries the balance of all coins for a single account.
@@ -76,12 +82,11 @@ service Query {
rpc EstimateGas(EthCallRequest) returns (EstimateGasResponse) {
option (google.api.http).get = "/ethermint/evm/v1alpha1/estimate_gas";
}
-
}
// QueryAccountRequest is the request type for the Query/Account RPC method.
message QueryAccountRequest {
- option (gogoproto.equal) = false;
+ option (gogoproto.equal) = false;
option (gogoproto.goproto_getters) = false;
// address is the ethereum hex address to query the account for.
@@ -98,16 +103,18 @@ message QueryAccountResponse {
uint64 nonce = 3;
}
-// QueryCosmosAccountRequest is the request type for the Query/CosmosAccount RPC method.
+// QueryCosmosAccountRequest is the request type for the Query/CosmosAccount RPC
+// method.
message QueryCosmosAccountRequest {
- option (gogoproto.equal) = false;
+ option (gogoproto.equal) = false;
option (gogoproto.goproto_getters) = false;
// address is the ethereum hex address to query the account for.
string address = 1;
}
-// QueryCosmosAccountResponse is the response type for the Query/CosmosAccount RPC method.
+// QueryCosmosAccountResponse is the response type for the Query/CosmosAccount
+// RPC method.
message QueryCosmosAccountResponse {
// cosmos_address is the cosmos address of the account.
string cosmos_address = 1;
@@ -117,16 +124,18 @@ message QueryCosmosAccountResponse {
uint64 account_number = 3;
}
-// QueryValidatorAccountRequest is the request type for the Query/ValidatorAccount RPC method.
+// QueryValidatorAccountRequest is the request type for the
+// Query/ValidatorAccount RPC method.
message QueryValidatorAccountRequest {
- option (gogoproto.equal) = false;
+ option (gogoproto.equal) = false;
option (gogoproto.goproto_getters) = false;
// cons_address is the validator cons address to query the account for.
string cons_address = 1;
}
-// QueryValidatorAccountResponse is the response type for the Query/ValidatorAccount RPC method.
+// QueryValidatorAccountResponse is the response type for the
+// Query/ValidatorAccount RPC method.
message QueryValidatorAccountResponse {
// account_address is the cosmos address of the account in bech32 format.
string account_address = 1;
@@ -138,7 +147,7 @@ message QueryValidatorAccountResponse {
// QueryBalanceRequest is the request type for the Query/Balance RPC method.
message QueryBalanceRequest {
- option (gogoproto.equal) = false;
+ option (gogoproto.equal) = false;
option (gogoproto.goproto_getters) = false;
// address is the ethereum hex address to query the balance for.
@@ -153,7 +162,7 @@ message QueryBalanceResponse {
// QueryStorageRequest is the request type for the Query/Storage RPC method.
message QueryStorageRequest {
- option (gogoproto.equal) = false;
+ option (gogoproto.equal) = false;
option (gogoproto.goproto_getters) = false;
/// address is the ethereum hex address to query the storage state for.
@@ -172,7 +181,7 @@ message QueryStorageResponse {
// QueryCodeRequest is the request type for the Query/Code RPC method.
message QueryCodeRequest {
- option (gogoproto.equal) = false;
+ option (gogoproto.equal) = false;
option (gogoproto.goproto_getters) = false;
// address is the ethereum hex address to query the code for.
@@ -188,7 +197,7 @@ message QueryCodeResponse {
// QueryTxLogsRequest is the request type for the Query/TxLogs RPC method.
message QueryTxLogsRequest {
- option (gogoproto.equal) = false;
+ option (gogoproto.equal) = false;
option (gogoproto.goproto_getters) = false;
// hash is the ethereum transaction hex hash to query the logs for.
@@ -203,7 +212,7 @@ message QueryTxLogsResponse {
// QueryBlockLogsRequest is the request type for the Query/BlockLogs RPC method.
message QueryBlockLogsRequest {
- option (gogoproto.equal) = false;
+ option (gogoproto.equal) = false;
option (gogoproto.goproto_getters) = false;
// hash is the block hash to query the logs for.
@@ -215,7 +224,7 @@ message QueryBlockLogsRequest {
// QueryTxLogs is the response type for the Query/BlockLogs RPC method.
message QueryBlockLogsResponse {
// logs represents the ethereum logs generated at the given block hash.
- repeated TransactionLogs tx_logs = 1 [(gogoproto.nullable) = false];
+ repeated TransactionLogs tx_logs = 1 [ (gogoproto.nullable) = false ];
// pagination defines the pagination in the response.
cosmos.base.query.v1beta1.PageResponse pagination = 2;
}
@@ -225,8 +234,8 @@ message QueryBlockLogsResponse {
message QueryBlockBloomRequest {
// height of the block which we want to query the bloom filter.
// Tendermint always replace the query request header by the current context
- // header, height cannot be extracted from there, so we need to explicitly pass
- // it in parameter.
+ // header, height cannot be extracted from there, so we need to explicitly
+ // pass it in parameter.
int64 height = 1;
}
@@ -243,7 +252,7 @@ message QueryParamsRequest {}
// QueryParamsResponse defines the response type for querying x/evm parameters.
message QueryParamsResponse {
// params define the evm module parameters.
- Params params = 1 [(gogoproto.nullable) = false];
+ Params params = 1 [ (gogoproto.nullable) = false ];
}
// QueryStaticCallRequest defines static call request
@@ -255,9 +264,7 @@ message QueryStaticCallRequest {
}
// QueryStaticCallRequest defines static call response
-message QueryStaticCallResponse {
- bytes data = 1;
-}
+message QueryStaticCallResponse { bytes data = 1; }
// EthCallRequest defines EthCall request
message EthCallRequest {
diff --git a/proto/ethermint/evm/v1alpha1/tx.proto b/proto/ethermint/evm/v1alpha1/tx.proto
index 900883b3..681cdf00 100644
--- a/proto/ethermint/evm/v1alpha1/tx.proto
+++ b/proto/ethermint/evm/v1alpha1/tx.proto
@@ -23,12 +23,12 @@ message MsgEthereumTx {
// caches
// encoded storage size of the transaction
- double size = 2 [(gogoproto.jsontag) = "-"];
+ double size = 2 [ (gogoproto.jsontag) = "-" ];
// transaction hash in hex format
- string hash = 3 [(gogoproto.moretags) = "rlp:\"-\""];
- // ethereum signer address in hex format. This address value is checked against
- // the address derived from the signature (V, R, S) using the secp256k1
- // elliptic curve
+ string hash = 3 [ (gogoproto.moretags) = "rlp:\"-\"" ];
+ // ethereum signer address in hex format. This address value is checked
+ // against the address derived from the signature (V, R, S) using the
+ // secp256k1 elliptic curve
string from = 4;
}
@@ -40,11 +40,10 @@ message LegacyTx {
// nonce corresponds to the account nonce (transaction sequence).
uint64 nonce = 1;
// gas price defines the value for each gas unit
- string gas_price = 2 [
- (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int"
- ];
+ string gas_price = 2
+ [ (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int" ];
// gas defines the gas limit defined for the transaction.
- uint64 gas = 3 [(gogoproto.customname) = "GasLimit"];
+ uint64 gas = 3 [ (gogoproto.customname) = "GasLimit" ];
// hex formatted address of the recipient
string to = 4;
// value defines the unsigned integer value of the transaction amount.
@@ -53,7 +52,7 @@ message LegacyTx {
(gogoproto.customname) = "Amount"
];
// input defines the data payload bytes of the transaction.
- bytes data = 6;
+ bytes data = 6;
// v defines the signature value
bytes v = 7;
// r defines the signature value
@@ -62,7 +61,6 @@ message LegacyTx {
bytes s = 9;
}
-
// AccessListTx is the data of EIP-2930 access list transactions.
message AccessListTx {
option (gogoproto.goproto_getters) = false;
@@ -72,16 +70,15 @@ message AccessListTx {
string chain_id = 1 [
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
(gogoproto.customname) = "ChainID",
- (gogoproto.jsontag) = "chainID"
+ (gogoproto.jsontag) = "chainID"
];
// nonce corresponds to the account nonce (transaction sequence).
uint64 nonce = 2;
// gas price defines the value for each gas unit
- string gas_price = 3 [
- (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int"
- ];
+ string gas_price = 3
+ [ (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int" ];
// gas defines the gas limit defined for the transaction.
- uint64 gas = 4 [(gogoproto.customname) = "GasLimit"];
+ uint64 gas = 4 [ (gogoproto.customname) = "GasLimit" ];
// hex formatted address of the recipient
string to = 5;
// value defines the unsigned integer value of the transaction amount.
@@ -90,9 +87,12 @@ message AccessListTx {
(gogoproto.customname) = "Amount"
];
// input defines the data payload bytes of the transaction.
- bytes data = 7;
- repeated AccessTuple accesses = 8
- [(gogoproto.castrepeated) = "AccessList", (gogoproto.jsontag) = "accessList", (gogoproto.nullable) = false];
+ bytes data = 7;
+ repeated AccessTuple accesses = 8 [
+ (gogoproto.castrepeated) = "AccessList",
+ (gogoproto.jsontag) = "accessList",
+ (gogoproto.nullable) = false
+ ];
// v defines the signature value
bytes v = 9;
// r defines the signature value
@@ -101,25 +101,68 @@ message AccessListTx {
bytes s = 11;
}
+// DynamicFeeTx is the data of EIP-1559 dinamic fee transactions.
+message DynamicFeeTx {
+ option (gogoproto.goproto_getters) = false;
+ option (cosmos_proto.implements_interface) = "TxData";
+
+ // destination EVM chain ID
+ string chain_id = 1 [
+ (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
+ (gogoproto.customname) = "ChainID",
+ (gogoproto.jsontag) = "chainID"
+ ];
+ // nonce corresponds to the account nonce (transaction sequence).
+ uint64 nonce = 2;
+ // gas tip cap defines the max value for the gas tip
+ string gas_tip_cap = 3
+ [ (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int" ];
+ // gas fee cap defines the max value for the gas fee
+ string gas_fee_cap = 4
+ [ (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int" ];
+ // gas defines the gas limit defined for the transaction.
+ uint64 gas = 5 [ (gogoproto.customname) = "GasLimit" ];
+ // hex formatted address of the recipient
+ string to = 6;
+ // value defines the the transaction amount.
+ string value = 7 [
+ (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
+ (gogoproto.customname) = "Amount"
+ ];
+ // input defines the data payload bytes of the transaction.
+ bytes data = 8;
+ repeated AccessTuple accesses = 9 [
+ (gogoproto.castrepeated) = "AccessList",
+ (gogoproto.jsontag) = "accessList",
+ (gogoproto.nullable) = false
+ ];
+ // v defines the signature value
+ bytes v = 10;
+ // r defines the signature value
+ bytes r = 11;
+ // s define the signature value
+ bytes s = 12;
+}
+
message ExtensionOptionsEthereumTx {
option (gogoproto.goproto_getters) = false;
}
-message ExtensionOptionsWeb3Tx {
- option (gogoproto.goproto_getters) = false;
-}
+message ExtensionOptionsWeb3Tx { option (gogoproto.goproto_getters) = false; }
// MsgEthereumTxResponse defines the Msg/EthereumTx response type.
message MsgEthereumTxResponse {
option (gogoproto.goproto_getters) = false;
- // ethereum transaction hash in hex format. This hash differs from the Tendermint sha256 hash of the transaction
- // bytes. See https://github.com/tendermint/tendermint/issues/6539 for reference
+ // ethereum transaction hash in hex format. This hash differs from the
+ // Tendermint sha256 hash of the transaction bytes. See
+ // https://github.com/tendermint/tendermint/issues/6539 for reference
string hash = 1;
// logs contains the transaction hash and the proto-compatible ethereum
// logs.
repeated Log logs = 2;
- // returned data from evm function (result or data supplied with revert opcode)
+ // returned data from evm function (result or data supplied with revert
+ // opcode)
bytes ret = 3;
// vm error is the error returned by vm execution
string vm_error = 4;
diff --git a/x/evm/types/access_list_tx.go b/x/evm/types/access_list_tx.go
index 5fed1d11..a4758c62 100644
--- a/x/evm/types/access_list_tx.go
+++ b/x/evm/types/access_list_tx.go
@@ -98,6 +98,16 @@ func (tx *AccessListTx) GetGasPrice() *big.Int {
return tx.GasPrice.BigInt()
}
+// GetGasTipCap returns the gas price field.
+func (tx *AccessListTx) GetGasTipCap() *big.Int {
+ return tx.GetGasPrice()
+}
+
+// GetGasFeeCap returns the gas price field.
+func (tx *AccessListTx) GetGasFeeCap() *big.Int {
+ return tx.GetGasPrice()
+}
+
// GetValue returns the tx amount.
func (tx *AccessListTx) GetValue() *big.Int {
if tx.Amount == nil {
diff --git a/x/evm/types/codec.go b/x/evm/types/codec.go
index 5998c016..09f02c77 100644
--- a/x/evm/types/codec.go
+++ b/x/evm/types/codec.go
@@ -37,6 +37,7 @@ func RegisterInterfaces(registry codectypes.InterfaceRegistry) {
registry.RegisterInterface(
"ethermint.evm.v1alpha1.TxData",
(*TxData)(nil),
+ &DynamicFeeTx{},
&AccessListTx{},
&LegacyTx{},
)
diff --git a/x/evm/types/dynamic_fee_tx.go b/x/evm/types/dynamic_fee_tx.go
new file mode 100644
index 00000000..8906cea7
--- /dev/null
+++ b/x/evm/types/dynamic_fee_tx.go
@@ -0,0 +1,245 @@
+package types
+
+import (
+ "math/big"
+
+ sdk "github.com/cosmos/cosmos-sdk/types"
+ sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
+ "github.com/ethereum/go-ethereum/common"
+ ethtypes "github.com/ethereum/go-ethereum/core/types"
+ "github.com/tharsis/ethermint/types"
+)
+
+// nolint: deadcode, unused
+func newDynamicFeeTx(tx *ethtypes.Transaction) *DynamicFeeTx {
+ txData := &DynamicFeeTx{
+ Nonce: tx.Nonce(),
+ Data: tx.Data(),
+ GasLimit: tx.Gas(),
+ }
+
+ v, r, s := tx.RawSignatureValues()
+ if tx.To() != nil {
+ txData.To = tx.To().Hex()
+ }
+
+ if tx.Value() != nil {
+ amountInt := sdk.NewIntFromBigInt(tx.Value())
+ txData.Amount = &amountInt
+ }
+ // TODO:
+
+ // if tx.GasFeeCap() != nil {
+ // gasFeeCapInt := sdk.NewIntFromBigInt(tx.GasFeeCap())
+ // txData.GasFeeCap = &gasFeeCapInt
+ // }
+
+ // if tx.GasTipCap() != nil {
+ // gasTipCapInt := sdk.NewIntFromBigInt(tx.GasTipCap())
+ // txData.GasTipCap = &gasTipCapInt
+ // }
+
+ if tx.AccessList() != nil {
+ al := tx.AccessList()
+ txData.Accesses = NewAccessList(&al)
+ }
+
+ txData.SetSignatureValues(tx.ChainId(), v, r, s)
+ return txData
+}
+
+// TxType returns the tx type
+func (tx *DynamicFeeTx) TxType() uint8 {
+ // TODO
+ return 0
+ // return ethtypes.DynamicFeeTxType
+}
+
+// Copy returns an instance with the same field values
+func (tx *DynamicFeeTx) Copy() TxData {
+ return &DynamicFeeTx{
+ ChainID: tx.ChainID,
+ Nonce: tx.Nonce,
+ GasTipCap: tx.GasTipCap,
+ GasFeeCap: tx.GasFeeCap,
+ GasLimit: tx.GasLimit,
+ To: tx.To,
+ Amount: tx.Amount,
+ Data: common.CopyBytes(tx.Data),
+ Accesses: tx.Accesses,
+ V: common.CopyBytes(tx.V),
+ R: common.CopyBytes(tx.R),
+ S: common.CopyBytes(tx.S),
+ }
+}
+
+// GetChainID returns the chain id field from the DynamicFeeTx
+func (tx *DynamicFeeTx) GetChainID() *big.Int {
+ if tx.ChainID == nil {
+ return nil
+ }
+
+ return tx.ChainID.BigInt()
+}
+
+// GetAccessList returns the AccessList field.
+func (tx *DynamicFeeTx) GetAccessList() ethtypes.AccessList {
+ if tx.Accesses == nil {
+ return nil
+ }
+ return *tx.Accesses.ToEthAccessList()
+}
+
+// GetData returns the a copy of the input data bytes.
+func (tx *DynamicFeeTx) GetData() []byte {
+ return common.CopyBytes(tx.Data)
+}
+
+// GetGas returns the gas limit.
+func (tx *DynamicFeeTx) GetGas() uint64 {
+ return tx.GasLimit
+}
+
+// GetGasPrice returns the gas fee cap field.
+func (tx *DynamicFeeTx) GetGasPrice() *big.Int {
+ return tx.GetGasFeeCap()
+}
+
+// GetGasTipCap returns the gas price field.
+func (tx *DynamicFeeTx) GetGasTipCap() *big.Int {
+ if tx.GasTipCap == nil {
+ return nil
+ }
+ return tx.GasTipCap.BigInt()
+}
+
+// GetGasFeeCap returns the gas price field.
+func (tx *DynamicFeeTx) GetGasFeeCap() *big.Int {
+ if tx.GasFeeCap == nil {
+ return nil
+ }
+ return tx.GasFeeCap.BigInt()
+}
+
+// GetValue returns the tx amount.
+func (tx *DynamicFeeTx) GetValue() *big.Int {
+ if tx.Amount == nil {
+ return nil
+ }
+
+ return tx.Amount.BigInt()
+}
+
+// GetNonce returns the account sequence for the transaction.
+func (tx *DynamicFeeTx) GetNonce() uint64 { return tx.Nonce }
+
+// GetTo returns the pointer to the recipient address.
+func (tx *DynamicFeeTx) GetTo() *common.Address {
+ if tx.To == "" {
+ return nil
+ }
+ to := common.HexToAddress(tx.To)
+ return &to
+}
+
+// AsEthereumData returns an DynamicFeeTx transaction tx from the proto-formatted
+// TxData defined on the Cosmos EVM.
+func (tx *DynamicFeeTx) AsEthereumData() ethtypes.TxData {
+ return nil
+ // TODO:
+ // v, r, s := tx.GetRawSignatureValues()
+ // return ðtypes.DynamicFeeTx{
+ // ChainID: tx.GetChainID(),
+ // Nonce: tx.GetNonce(),
+ // GasTipCap: tx.GetGasTipCap(),
+ // GasFeeCap: tx.GetGasFeeCap(),
+ // Gas: tx.GetGas(),
+ // To: tx.GetTo(),
+ // Value: tx.GetValue(),
+ // Data: tx.GetData(),
+ // AccessList: tx.GetAccessList(),
+ // V: v,
+ // R: r,
+ // S: s,
+ // }
+}
+
+// GetRawSignatureValues returns the V, R, S signature values of the transaction.
+// The return values should not be modified by the caller.
+func (tx *DynamicFeeTx) GetRawSignatureValues() (v, r, s *big.Int) {
+ return rawSignatureValues(tx.V, tx.R, tx.S)
+}
+
+// SetSignatureValues sets the signature values to the transaction.
+func (tx *DynamicFeeTx) SetSignatureValues(chainID, v, r, s *big.Int) {
+ if v != nil {
+ tx.V = v.Bytes()
+ }
+ if r != nil {
+ tx.R = r.Bytes()
+ }
+ if s != nil {
+ tx.S = s.Bytes()
+ }
+ if chainID != nil {
+ chainIDInt := sdk.NewIntFromBigInt(chainID)
+ tx.ChainID = &chainIDInt
+ }
+}
+
+// Validate performs a stateless validation of the tx fields.
+func (tx DynamicFeeTx) Validate() error {
+ if tx.GasTipCap == nil {
+ return sdkerrors.Wrap(ErrInvalidGasCap, "gas tip cap cannot nil")
+ }
+
+ if tx.GasFeeCap == nil {
+ return sdkerrors.Wrap(ErrInvalidGasCap, "gas fee cap cannot nil")
+ }
+
+ if tx.GasTipCap.IsNegative() {
+ return sdkerrors.Wrapf(ErrInvalidGasCap, "gas tip cap cannot be negative %s", tx.GasTipCap)
+ }
+
+ if tx.GasFeeCap.IsNegative() {
+ return sdkerrors.Wrapf(ErrInvalidGasCap, "gas fee cap cannot be negative %s", tx.GasFeeCap)
+ }
+
+ if tx.GasFeeCap.LT(*tx.GasTipCap) {
+ return sdkerrors.Wrapf(
+ ErrInvalidGasCap, "max priority fee per gas higher than max fee per gas (%s > %s)",
+ tx.GasTipCap, tx.GasFeeCap,
+ )
+ }
+
+ amount := tx.GetValue()
+ // Amount can be 0
+ if amount != nil && amount.Sign() == -1 {
+ return sdkerrors.Wrapf(ErrInvalidAmount, "amount cannot be negative %s", amount)
+ }
+
+ if tx.To != "" {
+ if err := types.ValidateAddress(tx.To); err != nil {
+ return sdkerrors.Wrap(err, "invalid to address")
+ }
+ }
+
+ if tx.GetChainID() == nil {
+ return sdkerrors.Wrap(
+ sdkerrors.ErrInvalidChainID,
+ "chain ID must be present on AccessList txs",
+ )
+ }
+
+ return nil
+}
+
+// Fee panics as it requires the base fee amount to calculate
+func (tx DynamicFeeTx) Fee() *big.Int {
+ panic("fee can only be called manually by providing the base fee")
+}
+
+// Cost returns amount + gasprice * gaslimit.
+func (tx DynamicFeeTx) Cost() *big.Int {
+ panic("cost can only be called manually by providing the base fee")
+}
diff --git a/x/evm/types/errors.go b/x/evm/types/errors.go
index a255a790..09cefc22 100644
--- a/x/evm/types/errors.go
+++ b/x/evm/types/errors.go
@@ -28,6 +28,8 @@ const (
codeErrVMExecution
codeErrInvalidRefund
codeErrInconsistentGas
+ codeErrInvalidGasCap
+ codeErrInvalidBaseFee
)
var (
@@ -75,6 +77,12 @@ var (
// ErrInconsistentGas returns an error if a the gas differs from the expected one.
ErrInconsistentGas = sdkerrors.Register(ModuleName, codeErrInconsistentGas, "inconsistent gas")
+
+ // ErrInvalidGasCap returns an error if a the gas cap value is negative or invalid
+ ErrInvalidGasCap = sdkerrors.Register(ModuleName, codeErrInvalidGasCap, "invalid gas cap")
+
+ // ErrInvalidBaseFee returns an error if a the base fee cap value is invalid
+ ErrInvalidBaseFee = sdkerrors.Register(ModuleName, codeErrInvalidBaseFee, "invalid base fee")
)
// NewExecErrorWithReason unpacks the revert return bytes and returns a wrapped error
diff --git a/x/evm/types/legacy_tx.go b/x/evm/types/legacy_tx.go
index 9f5c8792..efbfe42f 100644
--- a/x/evm/types/legacy_tx.go
+++ b/x/evm/types/legacy_tx.go
@@ -85,6 +85,16 @@ func (tx *LegacyTx) GetGasPrice() *big.Int {
return tx.GasPrice.BigInt()
}
+// GetGasTipCap returns the gas price field.
+func (tx *LegacyTx) GetGasTipCap() *big.Int {
+ return tx.GetGasPrice()
+}
+
+// GetGasFeeCap returns the gas price field.
+func (tx *LegacyTx) GetGasFeeCap() *big.Int {
+ return tx.GetGasPrice()
+}
+
// GetValue returns the tx amount.
func (tx *LegacyTx) GetValue() *big.Int {
if tx.Amount == nil {
diff --git a/x/evm/types/query.pb.go b/x/evm/types/query.pb.go
index 1035012a..85c57ac3 100644
--- a/x/evm/types/query.pb.go
+++ b/x/evm/types/query.pb.go
@@ -133,7 +133,8 @@ func (m *QueryAccountResponse) GetNonce() uint64 {
return 0
}
-// QueryCosmosAccountRequest is the request type for the Query/CosmosAccount RPC method.
+// QueryCosmosAccountRequest is the request type for the Query/CosmosAccount RPC
+// method.
type QueryCosmosAccountRequest struct {
// address is the ethereum hex address to query the account for.
Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
@@ -172,7 +173,8 @@ func (m *QueryCosmosAccountRequest) XXX_DiscardUnknown() {
var xxx_messageInfo_QueryCosmosAccountRequest proto.InternalMessageInfo
-// QueryCosmosAccountResponse is the response type for the Query/CosmosAccount RPC method.
+// QueryCosmosAccountResponse is the response type for the Query/CosmosAccount
+// RPC method.
type QueryCosmosAccountResponse struct {
// cosmos_address is the cosmos address of the account.
CosmosAddress string `protobuf:"bytes,1,opt,name=cosmos_address,json=cosmosAddress,proto3" json:"cosmos_address,omitempty"`
@@ -236,7 +238,8 @@ func (m *QueryCosmosAccountResponse) GetAccountNumber() uint64 {
return 0
}
-// QueryValidatorAccountRequest is the request type for the Query/ValidatorAccount RPC method.
+// QueryValidatorAccountRequest is the request type for the
+// Query/ValidatorAccount RPC method.
type QueryValidatorAccountRequest struct {
// cons_address is the validator cons address to query the account for.
ConsAddress string `protobuf:"bytes,1,opt,name=cons_address,json=consAddress,proto3" json:"cons_address,omitempty"`
@@ -275,7 +278,8 @@ func (m *QueryValidatorAccountRequest) XXX_DiscardUnknown() {
var xxx_messageInfo_QueryValidatorAccountRequest proto.InternalMessageInfo
-// QueryValidatorAccountResponse is the response type for the Query/ValidatorAccount RPC method.
+// QueryValidatorAccountResponse is the response type for the
+// Query/ValidatorAccount RPC method.
type QueryValidatorAccountResponse struct {
// account_address is the cosmos address of the account in bech32 format.
AccountAddress string `protobuf:"bytes,1,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"`
@@ -784,8 +788,8 @@ func (m *QueryBlockLogsResponse) GetPagination() *query.PageResponse {
type QueryBlockBloomRequest struct {
// height of the block which we want to query the bloom filter.
// Tendermint always replace the query request header by the current context
- // header, height cannot be extracted from there, so we need to explicitly pass
- // it in parameter.
+ // header, height cannot be extracted from there, so we need to explicitly
+ // pass it in parameter.
Height int64 `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"`
}
@@ -1290,7 +1294,8 @@ type QueryClient interface {
Account(ctx context.Context, in *QueryAccountRequest, opts ...grpc.CallOption) (*QueryAccountResponse, error)
// CosmosAccount queries an Ethereum account's Cosmos Address.
CosmosAccount(ctx context.Context, in *QueryCosmosAccountRequest, opts ...grpc.CallOption) (*QueryCosmosAccountResponse, error)
- // ValidatorAccount queries an Ethereum account's from a validator consensus Address.
+ // ValidatorAccount queries an Ethereum account's from a validator consensus
+ // Address.
ValidatorAccount(ctx context.Context, in *QueryValidatorAccountRequest, opts ...grpc.CallOption) (*QueryValidatorAccountResponse, error)
// Balance queries the balance of a the EVM denomination for a single
// EthAccount.
@@ -1446,7 +1451,8 @@ type QueryServer interface {
Account(context.Context, *QueryAccountRequest) (*QueryAccountResponse, error)
// CosmosAccount queries an Ethereum account's Cosmos Address.
CosmosAccount(context.Context, *QueryCosmosAccountRequest) (*QueryCosmosAccountResponse, error)
- // ValidatorAccount queries an Ethereum account's from a validator consensus Address.
+ // ValidatorAccount queries an Ethereum account's from a validator consensus
+ // Address.
ValidatorAccount(context.Context, *QueryValidatorAccountRequest) (*QueryValidatorAccountResponse, error)
// Balance queries the balance of a the EVM denomination for a single
// EthAccount.
diff --git a/x/evm/types/tx.pb.go b/x/evm/types/tx.pb.go
index 4511ed12..8922d5ed 100644
--- a/x/evm/types/tx.pb.go
+++ b/x/evm/types/tx.pb.go
@@ -40,9 +40,9 @@ type MsgEthereumTx struct {
Size_ float64 `protobuf:"fixed64,2,opt,name=size,proto3" json:"-"`
// transaction hash in hex format
Hash string `protobuf:"bytes,3,opt,name=hash,proto3" json:"hash,omitempty" rlp:"-"`
- // ethereum signer address in hex format. This address value is checked against
- // the address derived from the signature (V, R, S) using the secp256k1
- // elliptic curve
+ // ethereum signer address in hex format. This address value is checked
+ // against the address derived from the signature (V, R, S) using the
+ // secp256k1 elliptic curve
From string `protobuf:"bytes,4,opt,name=from,proto3" json:"from,omitempty"`
}
@@ -192,6 +192,66 @@ func (m *AccessListTx) XXX_DiscardUnknown() {
var xxx_messageInfo_AccessListTx proto.InternalMessageInfo
+// DynamicFeeTx is the data of EIP-1559 dinamic fee transactions.
+type DynamicFeeTx struct {
+ // destination EVM chain ID
+ ChainID *github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"chainID"`
+ // nonce corresponds to the account nonce (transaction sequence).
+ Nonce uint64 `protobuf:"varint,2,opt,name=nonce,proto3" json:"nonce,omitempty"`
+ // gas tip cap defines the max value for the gas tip
+ GasTipCap *github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,3,opt,name=gas_tip_cap,json=gasTipCap,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"gas_tip_cap,omitempty"`
+ // gas fee cap defines the max value for the gas fee
+ GasFeeCap *github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,4,opt,name=gas_fee_cap,json=gasFeeCap,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"gas_fee_cap,omitempty"`
+ // gas defines the gas limit defined for the transaction.
+ GasLimit uint64 `protobuf:"varint,5,opt,name=gas,proto3" json:"gas,omitempty"`
+ // hex formatted address of the recipient
+ To string `protobuf:"bytes,6,opt,name=to,proto3" json:"to,omitempty"`
+ // value defines the the transaction amount.
+ Amount *github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,7,opt,name=value,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"value,omitempty"`
+ // input defines the data payload bytes of the transaction.
+ Data []byte `protobuf:"bytes,8,opt,name=data,proto3" json:"data,omitempty"`
+ Accesses AccessList `protobuf:"bytes,9,rep,name=accesses,proto3,castrepeated=AccessList" json:"accessList"`
+ // v defines the signature value
+ V []byte `protobuf:"bytes,10,opt,name=v,proto3" json:"v,omitempty"`
+ // r defines the signature value
+ R []byte `protobuf:"bytes,11,opt,name=r,proto3" json:"r,omitempty"`
+ // s define the signature value
+ S []byte `protobuf:"bytes,12,opt,name=s,proto3" json:"s,omitempty"`
+}
+
+func (m *DynamicFeeTx) Reset() { *m = DynamicFeeTx{} }
+func (m *DynamicFeeTx) String() string { return proto.CompactTextString(m) }
+func (*DynamicFeeTx) ProtoMessage() {}
+func (*DynamicFeeTx) Descriptor() ([]byte, []int) {
+ return fileDescriptor_6a305e80b084ab0e, []int{3}
+}
+func (m *DynamicFeeTx) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *DynamicFeeTx) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_DynamicFeeTx.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *DynamicFeeTx) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_DynamicFeeTx.Merge(m, src)
+}
+func (m *DynamicFeeTx) XXX_Size() int {
+ return m.Size()
+}
+func (m *DynamicFeeTx) XXX_DiscardUnknown() {
+ xxx_messageInfo_DynamicFeeTx.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DynamicFeeTx proto.InternalMessageInfo
+
type ExtensionOptionsEthereumTx struct {
}
@@ -199,7 +259,7 @@ func (m *ExtensionOptionsEthereumTx) Reset() { *m = ExtensionOptionsEthe
func (m *ExtensionOptionsEthereumTx) String() string { return proto.CompactTextString(m) }
func (*ExtensionOptionsEthereumTx) ProtoMessage() {}
func (*ExtensionOptionsEthereumTx) Descriptor() ([]byte, []int) {
- return fileDescriptor_6a305e80b084ab0e, []int{3}
+ return fileDescriptor_6a305e80b084ab0e, []int{4}
}
func (m *ExtensionOptionsEthereumTx) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -235,7 +295,7 @@ func (m *ExtensionOptionsWeb3Tx) Reset() { *m = ExtensionOptionsWeb3Tx{}
func (m *ExtensionOptionsWeb3Tx) String() string { return proto.CompactTextString(m) }
func (*ExtensionOptionsWeb3Tx) ProtoMessage() {}
func (*ExtensionOptionsWeb3Tx) Descriptor() ([]byte, []int) {
- return fileDescriptor_6a305e80b084ab0e, []int{4}
+ return fileDescriptor_6a305e80b084ab0e, []int{5}
}
func (m *ExtensionOptionsWeb3Tx) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -266,13 +326,15 @@ var xxx_messageInfo_ExtensionOptionsWeb3Tx proto.InternalMessageInfo
// MsgEthereumTxResponse defines the Msg/EthereumTx response type.
type MsgEthereumTxResponse struct {
- // ethereum transaction hash in hex format. This hash differs from the Tendermint sha256 hash of the transaction
- // bytes. See https://github.com/tendermint/tendermint/issues/6539 for reference
+ // ethereum transaction hash in hex format. This hash differs from the
+ // Tendermint sha256 hash of the transaction bytes. See
+ // https://github.com/tendermint/tendermint/issues/6539 for reference
Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"`
// logs contains the transaction hash and the proto-compatible ethereum
// logs.
Logs []*Log `protobuf:"bytes,2,rep,name=logs,proto3" json:"logs,omitempty"`
- // returned data from evm function (result or data supplied with revert opcode)
+ // returned data from evm function (result or data supplied with revert
+ // opcode)
Ret []byte `protobuf:"bytes,3,opt,name=ret,proto3" json:"ret,omitempty"`
// vm error is the error returned by vm execution
VmError string `protobuf:"bytes,4,opt,name=vm_error,json=vmError,proto3" json:"vm_error,omitempty"`
@@ -284,7 +346,7 @@ func (m *MsgEthereumTxResponse) Reset() { *m = MsgEthereumTxResponse{} }
func (m *MsgEthereumTxResponse) String() string { return proto.CompactTextString(m) }
func (*MsgEthereumTxResponse) ProtoMessage() {}
func (*MsgEthereumTxResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_6a305e80b084ab0e, []int{5}
+ return fileDescriptor_6a305e80b084ab0e, []int{6}
}
func (m *MsgEthereumTxResponse) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -317,6 +379,7 @@ func init() {
proto.RegisterType((*MsgEthereumTx)(nil), "ethermint.evm.v1alpha1.MsgEthereumTx")
proto.RegisterType((*LegacyTx)(nil), "ethermint.evm.v1alpha1.LegacyTx")
proto.RegisterType((*AccessListTx)(nil), "ethermint.evm.v1alpha1.AccessListTx")
+ proto.RegisterType((*DynamicFeeTx)(nil), "ethermint.evm.v1alpha1.DynamicFeeTx")
proto.RegisterType((*ExtensionOptionsEthereumTx)(nil), "ethermint.evm.v1alpha1.ExtensionOptionsEthereumTx")
proto.RegisterType((*ExtensionOptionsWeb3Tx)(nil), "ethermint.evm.v1alpha1.ExtensionOptionsWeb3Tx")
proto.RegisterType((*MsgEthereumTxResponse)(nil), "ethermint.evm.v1alpha1.MsgEthereumTxResponse")
@@ -325,54 +388,59 @@ func init() {
func init() { proto.RegisterFile("ethermint/evm/v1alpha1/tx.proto", fileDescriptor_6a305e80b084ab0e) }
var fileDescriptor_6a305e80b084ab0e = []byte{
- // 750 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0x41, 0x6b, 0xdb, 0x48,
- 0x14, 0xf6, 0xd8, 0xb2, 0x2d, 0x8f, 0xbd, 0x61, 0x19, 0xb2, 0x41, 0xf1, 0x82, 0x64, 0xbc, 0xec,
- 0x62, 0x16, 0x2c, 0x91, 0x64, 0x4f, 0x39, 0x6d, 0xb4, 0x09, 0x21, 0x8b, 0xc3, 0x2e, 0xc2, 0xa5,
- 0xd0, 0x1e, 0xc2, 0x58, 0x9e, 0xc8, 0xa2, 0x96, 0xc6, 0x68, 0xc6, 0xc2, 0xee, 0x2f, 0xe8, 0xad,
- 0xfd, 0x09, 0x3d, 0xe7, 0xda, 0xfe, 0x88, 0x1c, 0x43, 0x4f, 0xa5, 0x07, 0xb5, 0x38, 0xb7, 0x1c,
- 0x7b, 0xe9, 0xb5, 0xcc, 0x48, 0xb6, 0xe3, 0xb6, 0x2e, 0x29, 0xed, 0x49, 0xef, 0xe9, 0x7d, 0x33,
- 0xef, 0xcd, 0xf7, 0xbd, 0xf7, 0xa0, 0x41, 0xf8, 0x80, 0x44, 0x81, 0x1f, 0x72, 0x8b, 0xc4, 0x81,
- 0x15, 0xef, 0xe0, 0xe1, 0x68, 0x80, 0x77, 0x2c, 0x3e, 0x31, 0x47, 0x11, 0xe5, 0x14, 0x6d, 0x2d,
- 0x00, 0x26, 0x89, 0x03, 0x73, 0x0e, 0xa8, 0x6f, 0x7a, 0xd4, 0xa3, 0x12, 0x62, 0x09, 0x2b, 0x45,
- 0xd7, 0xb7, 0x3d, 0x4a, 0xbd, 0x21, 0xb1, 0xa4, 0xd7, 0x1b, 0x9f, 0x5b, 0x38, 0x9c, 0xce, 0x43,
- 0x2e, 0x65, 0x01, 0x65, 0x67, 0xe9, 0x99, 0xd4, 0xc9, 0x42, 0x8d, 0x35, 0x45, 0x88, 0x84, 0x12,
- 0xd1, 0x7c, 0x0a, 0xe0, 0x4f, 0xa7, 0xcc, 0x3b, 0x12, 0x38, 0x32, 0x0e, 0xba, 0x13, 0xd4, 0x82,
- 0x4a, 0x1f, 0x73, 0xac, 0x81, 0x06, 0x68, 0x55, 0x77, 0x37, 0xcd, 0x34, 0xb1, 0x39, 0x4f, 0x6c,
- 0x1e, 0x84, 0x53, 0x47, 0x22, 0xd0, 0x36, 0x54, 0x98, 0xff, 0x98, 0x68, 0xf9, 0x06, 0x68, 0x01,
- 0xbb, 0x78, 0x93, 0x18, 0xa0, 0xed, 0xc8, 0x5f, 0xc8, 0x80, 0xca, 0x00, 0xb3, 0x81, 0x56, 0x68,
- 0x80, 0x56, 0xc5, 0xae, 0xbe, 0x4f, 0x8c, 0x72, 0x34, 0x1c, 0xed, 0x37, 0xdb, 0x4d, 0x47, 0x06,
- 0x10, 0x82, 0xca, 0x79, 0x44, 0x03, 0x4d, 0x11, 0x00, 0x47, 0xda, 0xfb, 0xca, 0x93, 0xe7, 0x46,
- 0xae, 0xf9, 0x22, 0x0f, 0xd5, 0x0e, 0xf1, 0xb0, 0x3b, 0xed, 0x4e, 0xd0, 0x26, 0x2c, 0x86, 0x34,
- 0x74, 0x89, 0xac, 0x46, 0x71, 0x52, 0x07, 0x1d, 0xc3, 0x8a, 0x87, 0xc5, 0x83, 0x7d, 0x37, 0xcd,
- 0x5e, 0xb1, 0xff, 0x7c, 0x93, 0x18, 0x7f, 0x78, 0x3e, 0x1f, 0x8c, 0x7b, 0xa6, 0x4b, 0x83, 0x8c,
- 0x86, 0xec, 0xd3, 0x66, 0xfd, 0x47, 0x16, 0x9f, 0x8e, 0x08, 0x33, 0x4f, 0x42, 0xee, 0xa8, 0x1e,
- 0x66, 0xff, 0x8b, 0xb3, 0x48, 0x87, 0x05, 0x0f, 0x33, 0x59, 0xa5, 0x62, 0xd7, 0x66, 0x89, 0xa1,
- 0x1e, 0x63, 0xd6, 0xf1, 0x03, 0x9f, 0x3b, 0x22, 0x80, 0x36, 0x60, 0x9e, 0xd3, 0xac, 0xc6, 0x3c,
- 0xa7, 0xe8, 0x5f, 0x58, 0x8c, 0xf1, 0x70, 0x4c, 0xb4, 0xa2, 0x4c, 0xfa, 0xd7, 0xdd, 0x93, 0xce,
- 0x12, 0xa3, 0x74, 0x10, 0xd0, 0x71, 0xc8, 0x9d, 0xf4, 0x0a, 0xc1, 0x80, 0xe4, 0xb9, 0xd4, 0x00,
- 0xad, 0x5a, 0xc6, 0x68, 0x0d, 0x82, 0x58, 0x2b, 0xcb, 0x1f, 0x20, 0x16, 0x5e, 0xa4, 0xa9, 0xa9,
- 0x17, 0x09, 0x8f, 0x69, 0x95, 0xd4, 0x63, 0xfb, 0x1b, 0x82, 0xab, 0x57, 0x2f, 0xdb, 0xa5, 0xee,
- 0xe4, 0x10, 0x73, 0xdc, 0xfc, 0x50, 0x80, 0xb5, 0x03, 0xd7, 0x25, 0x8c, 0x75, 0x7c, 0xc6, 0xbb,
- 0x13, 0xf4, 0x10, 0xaa, 0xee, 0x00, 0xfb, 0xe1, 0x99, 0xdf, 0x97, 0xe4, 0x55, 0xec, 0xbf, 0xbf,
- 0xa9, 0xda, 0xf2, 0x3f, 0xe2, 0xf4, 0xc9, 0xe1, 0x4d, 0x62, 0x94, 0xdd, 0xd4, 0x74, 0x32, 0xa3,
- 0xbf, 0x94, 0x25, 0xbf, 0x56, 0x96, 0xc2, 0xf7, 0xcb, 0xa2, 0x7c, 0x5d, 0x96, 0xe2, 0xe7, 0xb2,
- 0x94, 0x7e, 0x9c, 0x2c, 0xe5, 0x5b, 0xb2, 0x60, 0xa8, 0x62, 0xc9, 0x2d, 0x61, 0x9a, 0xda, 0x28,
- 0xb4, 0xaa, 0xbb, 0xbf, 0x99, 0x5f, 0x9e, 0x5e, 0x33, 0xd5, 0xa0, 0x3b, 0x1e, 0x0d, 0x89, 0xdd,
- 0xb8, 0x4c, 0x8c, 0xdc, 0x4d, 0x62, 0x40, 0xbc, 0x10, 0xe6, 0xe2, 0xad, 0x01, 0x97, 0x32, 0x39,
- 0x8b, 0x6b, 0x53, 0xe5, 0x2b, 0x2b, 0xca, 0xc3, 0x15, 0xe5, 0xab, 0xeb, 0x94, 0x6f, 0xc2, 0xfa,
- 0xd1, 0x84, 0x93, 0x90, 0xf9, 0x34, 0xfc, 0x6f, 0xc4, 0x7d, 0x1a, 0xb2, 0xe5, 0x34, 0x67, 0x33,
- 0xa5, 0xc3, 0xad, 0x4f, 0x31, 0xf7, 0x49, 0x6f, 0x6f, 0x11, 0xbf, 0x00, 0xf0, 0x97, 0x95, 0x2d,
- 0xe0, 0x10, 0x36, 0xa2, 0x21, 0x93, 0x74, 0xc8, 0x41, 0x06, 0xe9, 0x9c, 0xca, 0xd9, 0xb5, 0xa0,
- 0x32, 0xa4, 0x1e, 0xd3, 0xf2, 0x92, 0x8a, 0x5f, 0xd7, 0x51, 0xd1, 0xa1, 0x9e, 0x23, 0x81, 0xe8,
- 0x67, 0x58, 0x88, 0x08, 0x97, 0x2d, 0x51, 0x73, 0x84, 0x89, 0xb6, 0xa1, 0x1a, 0x07, 0x67, 0x24,
- 0x8a, 0x68, 0x94, 0x8d, 0x57, 0x39, 0x0e, 0x8e, 0x84, 0x2b, 0x42, 0xa2, 0x8b, 0xc6, 0x8c, 0xf4,
- 0xa5, 0xc4, 0x8a, 0x53, 0xf6, 0x30, 0xbb, 0xc7, 0x48, 0x3f, 0x2d, 0x76, 0xd7, 0x87, 0x85, 0x53,
- 0xe6, 0xa1, 0x1e, 0x84, 0xb7, 0xb6, 0xd6, 0xef, 0xeb, 0xaa, 0x58, 0x79, 0x56, 0xbd, 0x7d, 0x27,
- 0xd8, 0xfc, 0xf5, 0xb6, 0x7d, 0x39, 0xd3, 0xc1, 0xd5, 0x4c, 0x07, 0xef, 0x66, 0x3a, 0x78, 0x76,
- 0xad, 0xe7, 0xae, 0xae, 0xf5, 0xdc, 0xeb, 0x6b, 0x3d, 0xf7, 0xa0, 0x75, 0xab, 0xbf, 0xf8, 0x00,
- 0x47, 0xcc, 0x67, 0xd6, 0x72, 0xd9, 0x4e, 0xe4, 0xba, 0x95, 0x5d, 0xd6, 0x2b, 0xc9, 0xcd, 0xb9,
- 0xf7, 0x31, 0x00, 0x00, 0xff, 0xff, 0x32, 0x13, 0x74, 0x7d, 0x11, 0x06, 0x00, 0x00,
+ // 829 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x55, 0x4d, 0x6f, 0xf3, 0x44,
+ 0x10, 0x8e, 0x13, 0x27, 0x76, 0x36, 0xe1, 0x15, 0xb2, 0xca, 0x2b, 0x37, 0x48, 0x76, 0x14, 0x04,
+ 0x8a, 0x90, 0x62, 0xab, 0x2d, 0xa7, 0x9e, 0xa8, 0xfb, 0xa5, 0x56, 0xa9, 0x40, 0x56, 0x10, 0x12,
+ 0x1c, 0xa2, 0x8d, 0xb3, 0x75, 0x56, 0xc4, 0x5e, 0xcb, 0xbb, 0xb1, 0x12, 0x7e, 0x01, 0x37, 0xf8,
+ 0x09, 0x9c, 0x7b, 0x85, 0xdf, 0x80, 0x7a, 0xac, 0x38, 0x21, 0x0e, 0x06, 0xa5, 0xb7, 0x1e, 0xb9,
+ 0x70, 0x45, 0xbb, 0x76, 0x92, 0x86, 0x92, 0xaa, 0x94, 0xa2, 0xf7, 0x94, 0x19, 0xcf, 0xb3, 0x33,
+ 0xb3, 0xf3, 0x3c, 0xd9, 0x01, 0x26, 0x62, 0x23, 0x14, 0x07, 0x38, 0x64, 0x36, 0x4a, 0x02, 0x3b,
+ 0xd9, 0x81, 0xe3, 0x68, 0x04, 0x77, 0x6c, 0x36, 0xb5, 0xa2, 0x98, 0x30, 0xa2, 0xbd, 0x5e, 0x02,
+ 0x2c, 0x94, 0x04, 0xd6, 0x02, 0xd0, 0xd8, 0xf2, 0x89, 0x4f, 0x04, 0xc4, 0xe6, 0x56, 0x86, 0x6e,
+ 0x6c, 0xfb, 0x84, 0xf8, 0x63, 0x64, 0x0b, 0x6f, 0x30, 0xb9, 0xb4, 0x61, 0x38, 0x5b, 0x84, 0x3c,
+ 0x42, 0x03, 0x42, 0xfb, 0xd9, 0x99, 0xcc, 0xc9, 0x43, 0xcd, 0x0d, 0x4d, 0xf0, 0x82, 0x02, 0xd1,
+ 0xfa, 0x56, 0x02, 0x6f, 0x5d, 0x50, 0xff, 0x98, 0xe3, 0xd0, 0x24, 0xe8, 0x4d, 0xb5, 0x36, 0x90,
+ 0x87, 0x90, 0x41, 0x5d, 0x6a, 0x4a, 0xed, 0xda, 0xee, 0x96, 0x95, 0x15, 0xb6, 0x16, 0x85, 0xad,
+ 0x83, 0x70, 0xe6, 0x0a, 0x84, 0xb6, 0x0d, 0x64, 0x8a, 0xbf, 0x46, 0x7a, 0xb1, 0x29, 0xb5, 0x25,
+ 0xa7, 0x7c, 0x97, 0x9a, 0x52, 0xc7, 0x15, 0x9f, 0x34, 0x13, 0xc8, 0x23, 0x48, 0x47, 0x7a, 0xa9,
+ 0x29, 0xb5, 0xab, 0x4e, 0xed, 0x8f, 0xd4, 0x54, 0xe2, 0x71, 0xb4, 0xdf, 0xea, 0xb4, 0x5c, 0x11,
+ 0xd0, 0x34, 0x20, 0x5f, 0xc6, 0x24, 0xd0, 0x65, 0x0e, 0x70, 0x85, 0xbd, 0x2f, 0x7f, 0xf3, 0xbd,
+ 0x59, 0x68, 0xfd, 0x50, 0x04, 0x6a, 0x17, 0xf9, 0xd0, 0x9b, 0xf5, 0xa6, 0xda, 0x16, 0x28, 0x87,
+ 0x24, 0xf4, 0x90, 0xe8, 0x46, 0x76, 0x33, 0x47, 0x3b, 0x05, 0x55, 0x1f, 0xf2, 0x0b, 0x63, 0x2f,
+ 0xab, 0x5e, 0x75, 0x3e, 0xfc, 0x35, 0x35, 0x3f, 0xf0, 0x31, 0x1b, 0x4d, 0x06, 0x96, 0x47, 0x82,
+ 0x7c, 0x0c, 0xf9, 0x4f, 0x87, 0x0e, 0xbf, 0xb2, 0xd9, 0x2c, 0x42, 0xd4, 0x3a, 0x0b, 0x99, 0xab,
+ 0xfa, 0x90, 0x7e, 0xca, 0xcf, 0x6a, 0x06, 0x28, 0xf9, 0x90, 0x8a, 0x2e, 0x65, 0xa7, 0x3e, 0x4f,
+ 0x4d, 0xf5, 0x14, 0xd2, 0x2e, 0x0e, 0x30, 0x73, 0x79, 0x40, 0x7b, 0x05, 0x8a, 0x8c, 0xe4, 0x3d,
+ 0x16, 0x19, 0xd1, 0xce, 0x41, 0x39, 0x81, 0xe3, 0x09, 0xd2, 0xcb, 0xa2, 0xe8, 0x47, 0x4f, 0x2f,
+ 0x3a, 0x4f, 0xcd, 0xca, 0x41, 0x40, 0x26, 0x21, 0x73, 0xb3, 0x14, 0x7c, 0x02, 0x62, 0xce, 0x95,
+ 0xa6, 0xd4, 0xae, 0xe7, 0x13, 0xad, 0x03, 0x29, 0xd1, 0x15, 0xf1, 0x41, 0x4a, 0xb8, 0x17, 0xeb,
+ 0x6a, 0xe6, 0xc5, 0xdc, 0xa3, 0x7a, 0x35, 0xf3, 0xe8, 0xfe, 0x2b, 0x3e, 0xab, 0x9f, 0x7f, 0xec,
+ 0x54, 0x7a, 0xd3, 0x23, 0xc8, 0x60, 0xeb, 0xcf, 0x12, 0xa8, 0x1f, 0x78, 0x1e, 0xa2, 0xb4, 0x8b,
+ 0x29, 0xeb, 0x4d, 0xb5, 0x2f, 0x81, 0xea, 0x8d, 0x20, 0x0e, 0xfb, 0x78, 0x28, 0x86, 0x57, 0x75,
+ 0x3e, 0xfe, 0x57, 0xdd, 0x2a, 0x87, 0xfc, 0xf4, 0xd9, 0xd1, 0x5d, 0x6a, 0x2a, 0x5e, 0x66, 0xba,
+ 0xb9, 0x31, 0x5c, 0xd1, 0x52, 0xdc, 0x48, 0x4b, 0xe9, 0xbf, 0xd3, 0x22, 0x3f, 0x4e, 0x4b, 0xf9,
+ 0x21, 0x2d, 0x95, 0x97, 0xa3, 0x45, 0xb9, 0x47, 0x0b, 0x04, 0x2a, 0x14, 0xb3, 0x45, 0x54, 0x57,
+ 0x9b, 0xa5, 0x76, 0x6d, 0xf7, 0x3d, 0xeb, 0x9f, 0xff, 0xbd, 0x56, 0xc6, 0x41, 0x6f, 0x12, 0x8d,
+ 0x91, 0xd3, 0xbc, 0x4e, 0xcd, 0xc2, 0x5d, 0x6a, 0x02, 0xb8, 0x24, 0xe6, 0xea, 0x37, 0x13, 0xac,
+ 0x68, 0x72, 0x97, 0x69, 0x33, 0xe6, 0xab, 0x6b, 0xcc, 0x83, 0x35, 0xe6, 0x6b, 0x9b, 0x98, 0xff,
+ 0x49, 0x06, 0xf5, 0xa3, 0x59, 0x08, 0x03, 0xec, 0x9d, 0x20, 0xf4, 0x66, 0x98, 0x3f, 0x07, 0x35,
+ 0xce, 0x3c, 0xc3, 0x51, 0xdf, 0x83, 0xd1, 0x33, 0xb8, 0xe7, 0xc2, 0xe9, 0xe1, 0xe8, 0x10, 0x46,
+ 0x8b, 0x5c, 0x97, 0x08, 0x89, 0x5c, 0xf2, 0xb3, 0x72, 0x9d, 0x20, 0xc4, 0x73, 0xe5, 0x42, 0x2a,
+ 0x3f, 0x2e, 0xa4, 0xca, 0x43, 0x21, 0x29, 0x2f, 0x27, 0x24, 0x75, 0x83, 0x90, 0xaa, 0xff, 0xa3,
+ 0x90, 0xc0, 0x9a, 0x90, 0x6a, 0x6b, 0x42, 0xaa, 0x6f, 0x12, 0x52, 0x0b, 0x34, 0x8e, 0xa7, 0x0c,
+ 0x85, 0x14, 0x93, 0xf0, 0x93, 0x88, 0x61, 0x12, 0xd2, 0xd5, 0x5a, 0xc8, 0x1f, 0x67, 0x03, 0xbc,
+ 0xfe, 0x3b, 0xe6, 0x73, 0x34, 0xd8, 0x5b, 0xc6, 0xaf, 0x24, 0xf0, 0xce, 0xda, 0x3a, 0x71, 0x11,
+ 0x8d, 0x48, 0x48, 0xc5, 0x38, 0xc4, 0x46, 0x90, 0xb2, 0x07, 0x5f, 0x2c, 0x01, 0x1b, 0xc8, 0x63,
+ 0xe2, 0x53, 0xbd, 0x28, 0x46, 0xf1, 0xee, 0xa6, 0x51, 0x74, 0x89, 0xef, 0x0a, 0xa0, 0xf6, 0x36,
+ 0x28, 0xc5, 0x88, 0x09, 0x7d, 0xd5, 0x5d, 0x6e, 0x6a, 0xdb, 0x40, 0x4d, 0x82, 0x3e, 0x8a, 0x63,
+ 0x12, 0xe7, 0xef, 0xb4, 0x92, 0x04, 0xc7, 0xdc, 0xe5, 0x21, 0x2e, 0xa4, 0x09, 0x45, 0xc3, 0x4c,
+ 0x01, 0xae, 0xe2, 0x43, 0xfa, 0x19, 0x45, 0xc3, 0xac, 0xd9, 0x5d, 0x0c, 0x4a, 0x17, 0xd4, 0xd7,
+ 0x06, 0x00, 0xdc, 0x5b, 0x7f, 0xef, 0x6f, 0xea, 0x62, 0xed, 0x5a, 0x8d, 0xce, 0x93, 0x60, 0x8b,
+ 0xdb, 0x3b, 0xce, 0xf5, 0xdc, 0x90, 0x6e, 0xe6, 0x86, 0xf4, 0xfb, 0xdc, 0x90, 0xbe, 0xbb, 0x35,
+ 0x0a, 0x37, 0xb7, 0x46, 0xe1, 0x97, 0x5b, 0xa3, 0xf0, 0x45, 0xfb, 0x9e, 0xbe, 0xd8, 0x08, 0xc6,
+ 0x14, 0x53, 0x7b, 0xb5, 0xb5, 0xa7, 0x62, 0x6f, 0x0b, 0x95, 0x0d, 0x2a, 0x62, 0x05, 0xef, 0xfd,
+ 0x15, 0x00, 0x00, 0xff, 0xff, 0xf9, 0x5f, 0x67, 0x36, 0x5a, 0x08, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@@ -722,6 +790,136 @@ func (m *AccessListTx) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
+func (m *DynamicFeeTx) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *DynamicFeeTx) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *DynamicFeeTx) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if len(m.S) > 0 {
+ i -= len(m.S)
+ copy(dAtA[i:], m.S)
+ i = encodeVarintTx(dAtA, i, uint64(len(m.S)))
+ i--
+ dAtA[i] = 0x62
+ }
+ if len(m.R) > 0 {
+ i -= len(m.R)
+ copy(dAtA[i:], m.R)
+ i = encodeVarintTx(dAtA, i, uint64(len(m.R)))
+ i--
+ dAtA[i] = 0x5a
+ }
+ if len(m.V) > 0 {
+ i -= len(m.V)
+ copy(dAtA[i:], m.V)
+ i = encodeVarintTx(dAtA, i, uint64(len(m.V)))
+ i--
+ dAtA[i] = 0x52
+ }
+ if len(m.Accesses) > 0 {
+ for iNdEx := len(m.Accesses) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Accesses[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTx(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x4a
+ }
+ }
+ if len(m.Data) > 0 {
+ i -= len(m.Data)
+ copy(dAtA[i:], m.Data)
+ i = encodeVarintTx(dAtA, i, uint64(len(m.Data)))
+ i--
+ dAtA[i] = 0x42
+ }
+ if m.Amount != nil {
+ {
+ size := m.Amount.Size()
+ i -= size
+ if _, err := m.Amount.MarshalTo(dAtA[i:]); err != nil {
+ return 0, err
+ }
+ i = encodeVarintTx(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x3a
+ }
+ if len(m.To) > 0 {
+ i -= len(m.To)
+ copy(dAtA[i:], m.To)
+ i = encodeVarintTx(dAtA, i, uint64(len(m.To)))
+ i--
+ dAtA[i] = 0x32
+ }
+ if m.GasLimit != 0 {
+ i = encodeVarintTx(dAtA, i, uint64(m.GasLimit))
+ i--
+ dAtA[i] = 0x28
+ }
+ if m.GasFeeCap != nil {
+ {
+ size := m.GasFeeCap.Size()
+ i -= size
+ if _, err := m.GasFeeCap.MarshalTo(dAtA[i:]); err != nil {
+ return 0, err
+ }
+ i = encodeVarintTx(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.GasTipCap != nil {
+ {
+ size := m.GasTipCap.Size()
+ i -= size
+ if _, err := m.GasTipCap.MarshalTo(dAtA[i:]); err != nil {
+ return 0, err
+ }
+ i = encodeVarintTx(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.Nonce != 0 {
+ i = encodeVarintTx(dAtA, i, uint64(m.Nonce))
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.ChainID != nil {
+ {
+ size := m.ChainID.Size()
+ i -= size
+ if _, err := m.ChainID.MarshalTo(dAtA[i:]); err != nil {
+ return 0, err
+ }
+ i = encodeVarintTx(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
func (m *ExtensionOptionsEthereumTx) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@@ -962,6 +1160,63 @@ func (m *AccessListTx) Size() (n int) {
return n
}
+func (m *DynamicFeeTx) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.ChainID != nil {
+ l = m.ChainID.Size()
+ n += 1 + l + sovTx(uint64(l))
+ }
+ if m.Nonce != 0 {
+ n += 1 + sovTx(uint64(m.Nonce))
+ }
+ if m.GasTipCap != nil {
+ l = m.GasTipCap.Size()
+ n += 1 + l + sovTx(uint64(l))
+ }
+ if m.GasFeeCap != nil {
+ l = m.GasFeeCap.Size()
+ n += 1 + l + sovTx(uint64(l))
+ }
+ if m.GasLimit != 0 {
+ n += 1 + sovTx(uint64(m.GasLimit))
+ }
+ l = len(m.To)
+ if l > 0 {
+ n += 1 + l + sovTx(uint64(l))
+ }
+ if m.Amount != nil {
+ l = m.Amount.Size()
+ n += 1 + l + sovTx(uint64(l))
+ }
+ l = len(m.Data)
+ if l > 0 {
+ n += 1 + l + sovTx(uint64(l))
+ }
+ if len(m.Accesses) > 0 {
+ for _, e := range m.Accesses {
+ l = e.Size()
+ n += 1 + l + sovTx(uint64(l))
+ }
+ }
+ l = len(m.V)
+ if l > 0 {
+ n += 1 + l + sovTx(uint64(l))
+ }
+ l = len(m.R)
+ if l > 0 {
+ n += 1 + l + sovTx(uint64(l))
+ }
+ l = len(m.S)
+ if l > 0 {
+ n += 1 + l + sovTx(uint64(l))
+ }
+ return n
+}
+
func (m *ExtensionOptionsEthereumTx) Size() (n int) {
if m == nil {
return 0
@@ -1903,6 +2158,440 @@ func (m *AccessListTx) Unmarshal(dAtA []byte) error {
}
return nil
}
+func (m *DynamicFeeTx) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTx
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: DynamicFeeTx: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: DynamicFeeTx: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ChainID", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTx
+ }
+ 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 ErrInvalidLengthTx
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTx
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ var v github_com_cosmos_cosmos_sdk_types.Int
+ m.ChainID = &v
+ if err := m.ChainID.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Nonce", wireType)
+ }
+ m.Nonce = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTx
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Nonce |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field GasTipCap", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTx
+ }
+ 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 ErrInvalidLengthTx
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTx
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ var v github_com_cosmos_cosmos_sdk_types.Int
+ m.GasTipCap = &v
+ if err := m.GasTipCap.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field GasFeeCap", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTx
+ }
+ 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 ErrInvalidLengthTx
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTx
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ var v github_com_cosmos_cosmos_sdk_types.Int
+ m.GasFeeCap = &v
+ if err := m.GasFeeCap.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 5:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field GasLimit", wireType)
+ }
+ m.GasLimit = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTx
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.GasLimit |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field To", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTx
+ }
+ 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 ErrInvalidLengthTx
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTx
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.To = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 7:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTx
+ }
+ 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 ErrInvalidLengthTx
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTx
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ var v github_com_cosmos_cosmos_sdk_types.Int
+ m.Amount = &v
+ if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 8:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTx
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return ErrInvalidLengthTx
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTx
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Data = append(m.Data[:0], dAtA[iNdEx:postIndex]...)
+ if m.Data == nil {
+ m.Data = []byte{}
+ }
+ iNdEx = postIndex
+ case 9:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Accesses", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTx
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTx
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTx
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Accesses = append(m.Accesses, AccessTuple{})
+ if err := m.Accesses[len(m.Accesses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 10:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field V", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTx
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return ErrInvalidLengthTx
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTx
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.V = append(m.V[:0], dAtA[iNdEx:postIndex]...)
+ if m.V == nil {
+ m.V = []byte{}
+ }
+ iNdEx = postIndex
+ case 11:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field R", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTx
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return ErrInvalidLengthTx
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTx
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.R = append(m.R[:0], dAtA[iNdEx:postIndex]...)
+ if m.R == nil {
+ m.R = []byte{}
+ }
+ iNdEx = postIndex
+ case 12:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field S", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTx
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return ErrInvalidLengthTx
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTx
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.S = append(m.S[:0], dAtA[iNdEx:postIndex]...)
+ if m.S == nil {
+ m.S = []byte{}
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTx(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return ErrInvalidLengthTx
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
func (m *ExtensionOptionsEthereumTx) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
diff --git a/x/evm/types/tx_data.go b/x/evm/types/tx_data.go
index 73edaa79..b9c841ef 100644
--- a/x/evm/types/tx_data.go
+++ b/x/evm/types/tx_data.go
@@ -7,7 +7,11 @@ import (
ethtypes "github.com/ethereum/go-ethereum/core/types"
)
-var _ TxData = &AccessListTx{}
+var (
+ _ TxData = &LegacyTx{}
+ _ TxData = &AccessListTx{}
+ _ TxData = &DynamicFeeTx{}
+)
// TxData implements the Ethereum transaction tx structure. It is used
// solely as intended in Ethereum abiding by the protocol.
@@ -22,6 +26,8 @@ type TxData interface {
GetNonce() uint64
GetGas() uint64
GetGasPrice() *big.Int
+ GetGasTipCap() *big.Int
+ GetGasFeeCap() *big.Int
GetValue() *big.Int
GetTo() *common.Address
@@ -37,6 +43,8 @@ type TxData interface {
func NewTxDataFromTx(tx *ethtypes.Transaction) TxData {
var txData TxData
switch tx.Type() {
+ // case ethtypes.DynamicFeeTxType:
+ // txData = newDynamicFeeTx(tx)
case ethtypes.AccessListTxType:
txData = newAccessListTx(tx)
default: