diff --git a/CHANGELOG.md b/CHANGELOG.md index c9500c32..e1eb6abc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,12 @@ Ref: https://keepachangelog.com/en/1.0.0/ # Changelog +## Unreleased + +### Bug Fixes + +* (rpc) [tharsis#769](https://github.com/tharsis/ethermint/pull/769) Fix default Ethereum signer for JSON-RPC. + ## [v0.8.0] - 2021-11-17 ### State Machine Breaking diff --git a/rpc/ethereum/namespaces/eth/api.go b/rpc/ethereum/namespaces/eth/api.go index d52ea534..d46b4edc 100644 --- a/rpc/ethereum/namespaces/eth/api.go +++ b/rpc/ethereum/namespaces/eth/api.go @@ -56,7 +56,7 @@ func NewPublicAPI( backend backend.Backend, nonceLock *rpctypes.AddrLocker, ) *PublicAPI { - epoch, err := ethermint.ParseChainID(clientCtx.ChainID) + eip155ChainID, err := ethermint.ParseChainID(clientCtx.ChainID) if err != nil { panic(err) } @@ -80,13 +80,18 @@ func NewPublicAPI( // The signer used by the API should always be the 'latest' known one because we expect // signers to be backwards-compatible with old transactions. - signer := ethtypes.LatestSigner(backend.ChainConfig()) + cfg := backend.ChainConfig() + if cfg == nil { + cfg = evmtypes.DefaultChainConfig().EthereumConfig(eip155ChainID) + } + + signer := ethtypes.LatestSigner(cfg) api := &PublicAPI{ ctx: context.Background(), clientCtx: clientCtx, queryClient: rpctypes.NewQueryClient(clientCtx), - chainIDEpoch: epoch, + chainIDEpoch: eip155ChainID, logger: logger.With("client", "json-rpc"), backend: backend, nonceLock: nonceLock,