From bc0e6a5e68904b2a1251240b85dd97dc8fa07e11 Mon Sep 17 00:00:00 2001 From: Jim McDonald Date: Tue, 1 Aug 2017 09:59:46 +0100 Subject: [PATCH] ethclient: add NetworkID method (#14791) There is currently no simple way to obtain the network ID from a Client. This adds a NetworkID method that wraps the net_version JSON-RPC call. --- ethclient/ethclient.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/ethclient/ethclient.go b/ethclient/ethclient.go index 02df03fff4..48639d9492 100644 --- a/ethclient/ethclient.go +++ b/ethclient/ethclient.go @@ -256,6 +256,19 @@ func (ec *Client) SubscribeNewHead(ctx context.Context, ch chan<- *types.Header) // State Access +// NetworkID returns the network ID (also known as the chain ID) for this chain. +func (ec *Client) NetworkID(ctx context.Context) (*big.Int, error) { + version := new(big.Int) + var ver string + if err := ec.c.CallContext(ctx, &ver, "net_version"); err != nil { + return nil, err + } + if _, ok := version.SetString(ver, 10); !ok { + return nil, fmt.Errorf("invalid net_version result %q", ver) + } + return version, nil +} + // BalanceAt returns the wei balance of the given account. // The block number can be nil, in which case the balance is taken from the latest known block. func (ec *Client) BalanceAt(ctx context.Context, account common.Address, blockNumber *big.Int) (*big.Int, error) {