当前位置: 首页 > news >正文

【使用go开发区块链】之获取链上数据(03)

上篇文章,我们完成了数据库的连接,本章节,我们将完成ethclient的配置以及初始化

1·、ethclient配置

1.1、安装go-ethereum

在命令行终端输入下面代码安装:

go get github.com/ethereum/go-ethereum

1.2、Ethclient配置

1.2.1、新建ethclient.go

在config目录下新建ethclient.go,添加下面代码:

package configimport ("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的实例对象,通过该对象,我们就可以跟区块链进行交互

2、初始化ethclient

2.1、新增配置

2.1.1、修改global.go,

打开global.go,在全局变量里加入 EthRpcClient定义:

	EthRpcClient     *ethclient.Client

2.1.2、修改config.go

打开config.go,新增SetupEthClient()方法, 代码如下:

func SetupEthClient() {var err errorEthRpcClient, err = config.NewEthRpcClient()if err != nil {log.Panic("config.NewEthRpcClient error : ", err)}
}

2.2、调用方法

修改main.go里面的init()方法,在最后面加上对SetupEthClient()的调用:

func init() {config.SetupConfig()config.SetupDBEngine()err := config.MigrateDb()if err != nil {log.Panic("config.MigrateDb error : ", err)}config.SetupEthClient()
}

3、验证配置

3.1、测试获取区块链最新高度

打开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的配置以及初始化工作,并成功的获取到了区块链的区块高度信息,下一章,我们将正式进入获取链上数据的实操

请关注公众号:外柏叁布道者(web3_preacher),回复 “go获取链上数据” 领取完整代码

http://www.lryc.cn/news/118940.html

相关文章:

  • js 动态设置transformOrigin
  • docker使用tab无法自动补全命令
  • 既然jmeter也能做接口自动化,为什么还需要pytest自己搭框架?
  • Objective-C获取变量类型的方法
  • 相机可见区域,使用鼠标拖拽模型
  • Vue 2 与 Vue 3 的全面比较
  • Unity学习笔记--如何优雅简便地利用对象池生成游戏对象(进阶版)LRU + 对象池
  • 【Spring专题】Bean的声明周期流程图
  • C++实现俄罗斯方块(源码+详解)
  • 01:STM32点灯大师和蜂鸣器
  • linux pwn 基础知识
  • Unity Poisson分布 【由ChatGPT生成】
  • permission denied while trying to connect to the Docker daemon socket 错误
  • pytorch nn.ModuleList和nn.Sequential的用法笔记
  • SQL | 高级数据过滤
  • ARM架构银河麒麟docker,源码编译安装GDAL
  • (3)原神角色数据分析-3
  • skywalking日志收集
  • ASL国产CS5212规格书 DP转VGA 替代RTD2166低成本方案 兼容IT6516设计原理图
  • 关于Jquery的Validate插件--rules添加自定义方法(强密码验证方法)
  • 股票自动交易接口开发原理及源码分享
  • 2023/8/11题解
  • 构造函数
  • JS 原型与继承
  • 解决 Oracle 数据库中表被锁问题的方案和方法
  • ORACLE行转列、列转行实现方式及案例
  • AI自动驾驶
  • 思维导图在职业规划中的应用:从职业选择到职业发展的思维导图
  • antv l7每次刷新无法加载iconFont
  • 28 玻尔兹曼机