Skip to content

Commit

Permalink
fix!: bump ethermint to fix EIP712 message signing (#2042)
Browse files Browse the repository at this point in the history
* fix!: bump ethermint to fix EIP712 message signing

Previous version of ethermint used a value for the `verifyingContract`
in the domain separator that was not compliant with the spec. This field
and `salt`, which was unused, have been removed.

This is a state breaking change because it changes which EIP712 txs are
considered valid, and therefore, which txs are allowed to be included in
a block.

* update third party proto definitions

* disable check-proto-breaking-remote
  • Loading branch information
pirtleshell authored Oct 31, 2024
1 parent 6ec2513 commit 9d10634
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 18 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/proto.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ jobs:
- run: make check-proto-lint
- run: make check-proto-format
- run: make check-proto-breaking-remote
- run: BUF_CHECK_BREAKING_AGAINST_REMOTE="branch=$GITHUB_BASE_REF" make check-proto-breaking-remote
if: github.event_name == 'pull_request'
# - run: BUF_CHECK_BREAKING_AGAINST_REMOTE="branch=$GITHUB_BASE_REF" make check-proto-breaking-remote
# if: github.event_name == 'pull_request'
- run: make check-proto-gen
- run: make check-proto-gen-doc
- run: make check-proto-gen-swagger
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,11 @@ Ref: https://keepachangelog.com/en/1.0.0/

## [unreleased]

### State Machine Breaking Changes

- (ethermint) [ethermint#75] Remove unused fields `verifyingContract` & `salt` from EIP712 domain separator.
- Resolves inability to sign EIP712 messages with Metamask.

### Features

- (cli) [#2017] Support CLI `completion` for bash, zsh, fish, & powershell.
Expand Down Expand Up @@ -402,6 +407,7 @@ the [changelog](https://github.com/cosmos/cosmos-sdk/blob/v0.38.4/CHANGELOG.md).

[ethermint#82]: https://github.com/Kava-Labs/ethermint/pull/82
[ethermint#77]: https://github.com/Kava-Labs/ethermint/pull/77
[ethermint#75]: https://github.com/Kava-Labs/ethermint/pull/75
[#2017]: https://github.com/Kava-Labs/kava/pull/2017
[#1988]: https://github.com/Kava-Labs/kava/pull/1988
[#1973]: https://github.com/Kava-Labs/kava/pull/1973
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ replace (
// See https://github.com/cosmos/cosmos-sdk/pull/13093
github.com/dgrijalva/jwt-go => github.com/golang-jwt/jwt/v4 v4.4.2
// Use ethermint fork that respects min-gas-price with NoBaseFee true and london enabled, and includes eip712 support
github.com/evmos/ethermint => github.com/kava-labs/ethermint v0.21.0-kava-v26.6
github.com/evmos/ethermint => github.com/kava-labs/ethermint v0.21.0-kava-v27.0
// See https://github.com/cosmos/cosmos-sdk/pull/10401, https://github.com/cosmos/cosmos-sdk/commit/0592ba6158cd0bf49d894be1cef4faeec59e8320
github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.9.0
// Downgraded to avoid bugs in following commits which causes "version does not exist" errors
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -891,8 +891,8 @@ github.com/kava-labs/cometbft-db v0.9.1-kava.2 h1:ZQaio886ifvml9XtJB4IYHhlArgA3+
github.com/kava-labs/cometbft-db v0.9.1-kava.2/go.mod h1:PvUZbx7zeR7I4CAvtKBoii/5ia5gXskKjDjIVpt7gDw=
github.com/kava-labs/cosmos-sdk v0.47.10-iavl-v1-kava.2 h1:rbUXwJFlrRd05G1D5S5zAlmTTBbkcf0w36QFf5+i9tk=
github.com/kava-labs/cosmos-sdk v0.47.10-iavl-v1-kava.2/go.mod h1:OwLYEBcsnijCLE8gYkwQ7jycZZ/Acd+a83pJU+V+MKw=
github.com/kava-labs/ethermint v0.21.0-kava-v26.6 h1:9MUnu1xe7Oc3kv0CtvRtBMbPBUcpKZnQsbVJhWA8L0M=
github.com/kava-labs/ethermint v0.21.0-kava-v26.6/go.mod h1:zGcUyJhdcoO0VfxAQwiXpGjBAV8w+Hig1yaH2l7KB5k=
github.com/kava-labs/ethermint v0.21.0-kava-v27.0 h1:TzFhLQULsyQUA+b620FMGvZHTNriRuWLFGShwW/4xCA=
github.com/kava-labs/ethermint v0.21.0-kava-v27.0/go.mod h1:zGcUyJhdcoO0VfxAQwiXpGjBAV8w+Hig1yaH2l7KB5k=
github.com/kava-labs/iavl v1.2.0-kava.2 h1:RfEqQ9u7fvhzXOfYxxqEnVNCTb3pYJiT7X86N6cgI0M=
github.com/kava-labs/iavl v1.2.0-kava.2/go.mod h1:nNoeUFw64lfPvcj3yZ7W7BvmlTxu9ANGsJcUiPSOAdw=
github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
Expand Down
19 changes: 6 additions & 13 deletions third_party/proto/ethermint/evm/v1/evm.proto
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,12 @@ message Params {
repeated int64 extra_eips = 4 [(gogoproto.customname) = "ExtraEIPs", (gogoproto.moretags) = "yaml:\"extra_eips\""];
// chain_config defines the EVM chain configuration parameters
ChainConfig chain_config = 5 [(gogoproto.moretags) = "yaml:\"chain_config\"", (gogoproto.nullable) = false];
// eip712_allowed_msgs contains list of allowed eip712 msgs and their types
// list of allowed eip712 msgs and their types
repeated EIP712AllowedMsg eip712_allowed_msgs = 6
[(gogoproto.customname) = "EIP712AllowedMsgs", (gogoproto.nullable) = false];
// allow_unprotected_txs defines if replay-protected (i.e non EIP155
// signed) transactions can be executed on the state machine.
bool allow_unprotected_txs = 7;
// enabled_precompiles contains list of hex-encoded evm addresses of enabled precompiled contracts.
// Precompile must be registered before it can be enabled.
// enabled_precompiles should be sorted in ascending order and unique.
// sorting and uniqueness are checked against bytes representation of addresses
repeated string enabled_precompiles = 8;
}

// ChainConfig defines the Ethereum ChainConfig parameters using *sdk.Int values
Expand Down Expand Up @@ -251,20 +246,20 @@ message TraceConfig {

// EIP712AllowedMsg stores an allowed legacy msg and its eip712 type.
message EIP712AllowedMsg {
// msg_type_url is a msg's proto type name. ie "/cosmos.bank.v1beta1.MsgSend"
// msg's proto type name. ie "/cosmos.bank.v1beta1.MsgSend"
string msg_type_url = 1;

// msg_value_type_name is a name of the eip712 value type. ie "MsgValueSend"
// name of the eip712 value type. ie "MsgValueSend"
string msg_value_type_name = 2;

// value_types is a list of msg value types
// types of the msg value
repeated EIP712MsgAttrType value_types = 3 [(gogoproto.nullable) = false];

// nested_types is a list of msg value nested types
// nested types of the msg value
repeated EIP712NestedMsgType nested_types = 4 [(gogoproto.nullable) = false];
}

// EIP712NestedMsgType is the eip712 type of a single message.
// EIP712MsgType is the eip712 type of a single message.
message EIP712NestedMsgType {
// name of the nested type. ie "Fee", "Coin"
string name = 1;
Expand All @@ -275,8 +270,6 @@ message EIP712NestedMsgType {

// EIP712MsgAttrType is the eip712 type of a single message attribute.
message EIP712MsgAttrType {
// name
string name = 1;
// type
string type = 2;
}

0 comments on commit 9d10634

Please sign in to comment.