获得ChainID和BlockNumber
以太坊节点提供JSON-RPC
服务,如果开启了,就可以通过HTTP/HTTPS
协议访问节点。
该服务是可选的,有一些自用节点不一定会开启。远程节点是专门提供该服务的,自然是开着的。本地调试节点(Hardhat、anvil等)默认都是开启的。
从本节开始后的章节,基本都使用远程节点,不再特殊说明。
在连接到以太坊之后,我们就可以开始发起请求了。
常见请求有:
- 获取ChainID用于核实网络是否匹配
- 获取网络信息,如
BlockNumber
、账户余额等
- 与智能合约交互
- 监听网络事件
我们先从获取ChainID
和BlockNumber
开始讲起。
在EVM
兼容网络之间,ChainID
是区分网络的重要手段,每一个网络都有唯一的ID
与其对应。
比如,以太坊的ID
是1
,Polygon的ID
是137
,而BSC的ID
是56
。想知道一个网络的具体ID
,可以参考https://chainlist.org/。
获取ChainID
比较简单,传入ctx
即可,返回值是*big.Int
类型。
chainId, err := client.ChainID(ctx)
获取BlockNumber
也类似,都不复杂,返回值是uint64
。
bn, err := client.BlockNumber(ctx)
完整的代码见上一节连接以太坊。