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

这篇具有很好参考价值的文章主要介绍了【使用go开发区块链】之获取链上数据(01)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在我们实际开发项目中,很多时候都需要从链上获取区块数据,将数据加工处理后存入到数据库中,本章开始,我们来学习一下如何从链上获取数据(主动拉取)并存储到数据库中

本系列文章
1、【使用go开发区块链】之获取链上数据(01)
2、【使用go开发区块链】之获取链上数据(02)
3、【使用go开发区块链】之获取链上数据(03)
4、【使用go开发区块链】之获取链上数据(04)

1、配置文件

首先我们新建go项目,然后在项目根目录新建目录:config、internal、global、pkg,完成后的项目看起来应该是这样的:
go 区块链项目,使用go获取链上数据,# 区块链/Web3.0,使用go开发区块链,golang,开发语言,区块链,web3

config目录主要存储配置文件、配置文件操作相关类
internal目录主要存储内部类,如model、dao、service等等
global目录主要存储全局类
pkg目录主要存储第三方类

1.1、新建配置文件

在config目录下新建文件 config.yml,填写如下信息:

Database:
  DbType: mysql  #数据库类型
  DbName: go-chain-data  #数据库名称
  Host: #数据库链接,如 127.0.0.1:3306
  Username: #用户名
  Pwd: #数据库密码
  Charset: utf8  #数据库编码
  ParseTime: True

BlockChain:
  RpcUrl: https://goerli.infura.io/v3/    #  区块链rpc地址  infura.io 可以获取 

Database配置的是数据库链接信息,我们示例里使用的是mysql数据库
BlockChain配置的是区块链的rpc地址,如果没有可以访问infura.io申请

1.2、新建setting.go文件

首先在config目录下创建setting目录,然后在setting目录下新建setting.go文件,代码如下:

package setting

type DbConfig struct {
	DbType    string
	DbName    string
	Host      string
	Username  string
	Pwd       string
	Charset   string
	ParseTime bool
}
type BlockChainConfig struct {
	RpcUrl string
}

这里的结构与我们yml配置文件是一致的,后面我们会将yml配置读取到这些对象里

1.3、新建config.go文件

首先,在项目终端下执行如下命令安装viper包:

go get github.com/spf13/viper

然后,在config目下新建 config.go文件,代码如下:

package config

import (
	"github.com/spf13/viper"
)

type Config struct {
	vp *viper.Viper
}

func NewConfig() (*Config, error) {
	vp := viper.New()
	vp.SetConfigName("config")
	vp.AddConfigPath("config")
	vp.SetConfigType("yaml")
	err := vp.ReadInConfig()
	if err != nil {
		return nil, err
	}
	return &Config{vp}, nil
}

func (config *Config) ReadSection(k string, v interface{}) error {
	err := config.vp.UnmarshalKey(k, v)
	if err != nil {
		return err
	}
	return nil
}

NewConfig方法里我们创建了viper的实例对象,并读取了yml文件的配置信息
ReadSection方法可以通过给定的 k值 读取配置文件对应的 配置信息 并存到 v 变量里

2、全局变量配置

2.1、新建global.go

在global目录下新建global.go,代码如下:

package global

import (
	"go-chain-data/config/setting"
)

var (
	DbConfig         *setting.DbConfig
	BlockChainConfig *setting.BlockChainConfig
)

这里定义的变量,我们接下来会在各个类中进行调用

2.2、初始化配置

2.2.1、新建配置读取方法

首先,在config.go文件里新建SetupConfig()方法:

func SetupConfig() {
	conf, err := NewConfig()
	if err != nil {
		log.Panic("NewConfig error : ", err)
	}
	err = conf.ReadSection("Database", &global.DbConfig)
	if err != nil {
		log.Panic("ReadSection - Database error : ", err)
	}
	err = conf.ReadSection("BlockChain", &global.BlockChainConfig)
	if err != nil {
		log.Panic("ReadSection - BlockChain error : ", err)
	}
}

通过调用conf.ReadSection()方法,我们将yml里的配置读取到全局变量里,这样在其他的地方我们就可以通过global.DbConfig.X的方式进行调用

2.2.2、调用配置初始化方法

首先,在项目根目录新建main.go文件,记得把package改成main
然后,在main.go文件里新建init()方法:

func init() {
	config.SetupConfig()
}

在init()方法里,我们调用SetupConfig()方法,这个init()是go内置方法,默认会在调用类加载之前自动执行

2.3、验证配置

在main.go里新建main()方法:


func main() {
	log.Println(global.BlockChainConfig.RpcUrl)
}

接下来我们运行main()方法,输出如下:
go 区块链项目,使用go获取链上数据,# 区块链/Web3.0,使用go开发区块链,golang,开发语言,区块链,web3
说明我们的配置已经能正确的写入到了全局变量,并可以在项目里进行读取

通过本章课程学习,我们搭建了项目的基础环境,并成功的完成了配置文件的读取操作,在下节课里我们将要进一步完善项目,让我们的项目可以访问数据库,没有学会的同学可以照着教程反复练习几遍,那么下节课见吧!

请关注公众号:外柏叁布道者(web3_preacher),回复 “go获取链上数据” 领取完整代码文章来源地址https://www.toymoban.com/news/detail-815015.html

到了这里,关于【使用go开发区块链】之获取链上数据(01)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Web3 的开发者,如何评估以及选择调用链上数据的解决方案

    FP是链上数据分析平台以及数据处理基础设施,使命是让链上数据分析以及使用随手可得。目前,Footprint 从 22 条公链上收集、解析和清理数据,把无语义以及无序的链上数据,转化成让用户能使用无代码拖放界面、SQL等多种形式构建图表以及仪表盘。除了提供链上原始数据,

    2024年02月02日
    浏览(52)
  • Web3 整理React项目 导入Web3 并获取区块链信息

    上文 WEB3 创建React前端Dapp环境并整合solidity项目,融合项目结构便捷前端拿取合约 Abi 我们用react 创建了一个 dapp 项目 并将前后端代码做了个整合 那么 我们就来好好整理一下 我们的前端react的项目结构 我们在 src 目录下创建一个 components 用来存放我们的 大规模组件 然后 在

    2024年02月02日
    浏览(46)
  • Web3 开发指南:使用 NFTScan NFT API 构建一个 NFT 链上追踪器

    对于大多数 Web3 团队来说,构建一个完整的链上 NFT 数据追踪系统是一项具有挑战性的任务,构建一个 NFT 链上追踪器更是如此。涉及到处理区块链上的智能合约和交易数据,并将其与外部数据源进行整合和分析工作量是十分巨大的: 区块链数据的复杂性:区块链上的数据结

    2024年02月15日
    浏览(43)
  • 如何开发和搭建一个优质的Web3.0/区块链项目?

    在区块链世界和 加密领域 中 、Web3 绝对算得上是一个耀眼的明星了,现在的风头明显盖过前两位老大哥了。 相信许多人也都想尝试熟悉或者参与区块链,加密领域和 Wed3之中,今天我们就来谈谈如何以软件开发的角度,来搭建一个优质的区块链相关项目。 如何创建一个优质

    2024年01月16日
    浏览(59)
  • 给Web3应用新增区块链数据(Web3项目一实战之六)

    当您在浏览首页以卡片形式来展示区块链列表数据(Web3项目一实战之五)时,不禁发问,既然首页读取了 区块链 列表数据,那么,那些列表数据总得在哪个页面进行添加进去吧!绝不会凭空冒出这许多数据的。 没错,如您所想,也正是您所猜测的那般, DApp 与传统 App 一样

    2024年02月05日
    浏览(42)
  • 使用Golang Web3库进行区块链开发

    区块链作为一种分布式账本技术,在近年来取得了巨大的发展。而Golang作为一种高效、并发性强的编程语言,被广泛用于区块链开发中。在Golang中,我们可以使用Web3库来与以太坊或其他区块链网络进行交互。 Web3库是一个用于与区块链进行交互的工具库。它提供了一套API,用

    2024年02月07日
    浏览(50)
  • 浅析『链上数据分析』 : 区块链 + 数据分析

    什么是链上数据分析? 01 区块链 02 链上数据 03 为什么要分析链上数据 04 数据分析思维 05 数据分析技能 06 数据分析工具 07 业务逻辑理解 链上数据分析,顾名思义,就是对区块链上的数据进行分析。 其实就是将数据分析运用到区块链行业上,和其他的如电商数据分析一样,

    2023年04月08日
    浏览(36)
  • python 基于 Web3.py 和 Infura 网关采集链上数据

    Web3.py是与Ethereum交互的Python库。功能包括连接到以太坊网络节点、检索数据和向以太坊网络广播数据。 目前以太坊全节点数据量高达数TB,自建本地全节点不太现实,因此一般通过Infura等的网关来实现数据查询。在 Infura 新建一个项目获取API KEY 需求:识别当前用户地址持有的

    2024年02月02日
    浏览(45)
  • 首页以卡片形式来展示区块链列表数据(Web3项目一实战之五)

    我们已然在 Web3 分布式存储 IPFS(Web3项目一实战之四) 介绍了什么是 IPFS ,以及在本地电脑如何安装它。虽然在上一篇讲解了该怎么安装 IPFS ,也做了相应的配置,但在本地开发阶段,前端总是无法避免 跨域 这个远程请求 api 的”家常便饭的通病“。 很显然,对于出现 跨域

    2024年02月05日
    浏览(44)
  • 【WEB3】如何使用Web3J库开发应用连接到以太坊区块链网络

    ​ Web3j 是一个与以太坊智能合约交互并与以太坊节点集成的 Java 库。它是高度模块化、类型安全和反应式的,专为以太坊上的 Java 和 Android 开发而构建。Web3j 消除了编写自定义集成代码以连接到以太坊区块链网络的开销。 通过 HTTP 和 IPC 实现完整的 Ethereum JSON-RPC客户端 API,

    2024年02月02日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包