上篇文章,我们完成了数据库的连接,本章节,我们将完成ethclient的配置以及初始化
本系列文章 1、【使用go开发区块链】之获取链上数据(01) 2、【使用go开发区块链】之获取链上数据(02) 3、【使用go开发区块链】之获取链上数据(03) 4、【使用go开发区块链】之获取链上数据(04)
在命令行终端输入下面代码安装:
go get github.com/ethereum/go-ethereum在config目录下新建ethclient.go,添加下面代码:
package config
import (
    "github.com/ethereum/go-ethereum/ethclient"
    "go-chain-data/global"
)
func NewEthRpcClient() (*ethclient.Client, error) {
    client, err := ethclient.Dial(global.BlockChainConfig.RpcUrl)
    if err != nil {
        return nil, err
    }
    return client, nil
}通过ethclient.Dial()方法,传入区块链的Rpc调用地址,就可以创建一个ethclient的实例对象,通过该对象,我们就可以跟区块链进行交互
打开global.go,在全局变量里加入 EthRpcClient定义:
    EthRpcClient     *ethclient.Client打开config.go,新增SetupEthClient()方法, 代码如下:
func SetupEthClient() {
    var err error
    EthRpcClient, err = config.NewEthRpcClient()
    if err != nil {
        log.Panic("config.NewEthRpcClient error : ", err)
    }
}修改main.go里面的init()方法,在最后面加上对SetupEthClient()的调用:
func init() {
    config.SetupConfig()
    config.SetupDBEngine()
    err := config.MigrateDb()
    if err != nil {
        log.Panic("config.MigrateDb error : ", err)
    }
    config.SetupEthClient()
}打开main.go文件,在main()方法里,添加下面代码:
    blockNumber, err := global.EthRpcClient.BlockNumber(context.Background())
    if err != nil {
        log.Panic("EthRpcClient.BlockNumber error : ", err)
    }
    log.Println("blockNumber is : ", blockNumber)然后我们运行 main()方法
 如果出现如上图的报错,我们需要在终端里执行下面命令,来把缺少的依赖添加到项目里:
如果出现如上图的报错,我们需要在终端里执行下面命令,来把缺少的依赖添加到项目里:
go mod tidy然后,我们再来运行main()方法,终端输出如下:
 说明我们ethclient已经正确配置完成了
说明我们ethclient已经正确配置完成了
通过本篇文章的学习,我们完成了ethclient的配置以及初始化工作,并成功的获取到了区块链的区块高度信息,下一章,我们将正式进入获取链上数据的实操
请关注公众号:外柏叁布道者(web3_preacher),回复 “go获取链上数据” 领取完整代码
 
                如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!
