fix(eip-712)!: encoding was using default evm chain id instead of actual chain id #918
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
tldr; cosmos multisigs with ledgers break when signing due to the EIP-712 not taking into account the chain-id. I do not think it is state breaking but it may be?
Description
Ledger multisig transactions using EIP-712 signing failed on-chain verification with
signature verification failed: unauthorized, even though local validate-signatures succeeded. This does not allow a ledger to be apart of a multisig whenWithKeyringOptions(evmkeyring.Option()).is used (CoinType 60 / EthSecpK1)The EIP-712 encoding uses a global eip155ChainID variable (262144) that is set during app initialization via encoding.MakeConfig(evmChainID). When CLI commands like tx multi-sign or tx validate-signatures run, they create a temporary app with simtestutil.EmptyAppOptions{}, which causes the EVM chain ID to default to 262144 instead of the chain's actual EVM chain ID.
This meant:
Testing
Before this fix it was impossible to submit any signature from a ledger (it works just fine for hotwallets though) via the multisig.
I have...
mainbranch