Skip to content

Commit

Permalink
eth: return error from eth_chainID during sync before EIP-155 activat…
Browse files Browse the repository at this point in the history
…es (#21686)

This changes the chainID RPC method to return an error when EIP-155 is not yet
active at the current block height. It used to simply return zero in this case, but
that's confusing.
  • Loading branch information
renaynay authored Jan 12, 2021
1 parent 39b3b8f commit 984e752
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions eth/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,12 +67,12 @@ func (api *PublicEthereumAPI) Hashrate() hexutil.Uint64 {
}

// ChainId is the EIP-155 replay-protection chain id for the current ethereum chain config.
func (api *PublicEthereumAPI) ChainId() hexutil.Uint64 {
chainID := new(big.Int)
func (api *PublicEthereumAPI) ChainId() (hexutil.Uint64, error) {
// if current block is at or past the EIP-155 replay-protection fork block, return chainID from config
if config := api.e.blockchain.Config(); config.IsEIP155(api.e.blockchain.CurrentBlock().Number()) {
chainID = config.ChainID
return (hexutil.Uint64)(config.ChainID.Uint64()), nil
}
return (hexutil.Uint64)(chainID.Uint64())
return hexutil.Uint64(0), fmt.Errorf("chain not synced beyond EIP-155 replay-protection fork block")
}

// PublicMinerAPI provides an API to control the miner.
Expand Down

0 comments on commit 984e752

Please sign in to comment.