本文介绍了如何使用Go语言连接以太坊网络,并利用QuickNode的基础设施提升后端的速度和可靠性。文章详细说明了Go语言的关键特性、安装步骤以及如何通过Go的ethclient包与以太坊网络进行交互。
Go 可以帮助你构建更快、更具扩展性的后端,本指南将向你展示如何将你的后端连接到以太坊(并使其更快、更可靠且全球可访问,这一切都归功于 QuickNode 的全球基础设施)。
什么是 GoLang?
Go 是一种由 Google 工程师于 2009 年推出的开源编程语言。它部分源自 C,采用了 C 的语法和特性,但具有内存安全、垃圾回收、结构类型和并发性。Go 具有超级高效的并发机制,充分利用了现代多核硬件以及分布式网络基础设施。
Go 的关键特性:
使用 Geth(即 go-ethereum)连接到以太坊
go-ethereum 是以太坊在 Go 中的官方实现(也称为 Geth),ethclient 包可用于以太坊 RPC API。
先决条件
安装 Go 1.13 或更高版本
文本编辑器
CLI
如前所述,如果我们想使用 go-ethereum 客户端,我们需要检查你的系统上是否安装了 Go:
$ go version
如果未安装 Go,请按照官方的安装指南针对你的特定操作系统进行安装。
确保你已安装 gcc 编译器。
对于 Ubuntu - 使用 apt-get install build-essentials
对于 Windows - 使用 https://jmeubank.github.io/tdm-gcc/download/
对于 Mac - 使用 homebrew
$ brew install gcc
另一个更快的选项是使用以下命令获取 XCode 命令行工具:
$ xcode-select --install
如果你不熟悉 Go,我们建议你运行他们的交互式教程,该教程将涵盖基本语法、方法和并发处理。你可以运行一些练习,所有这些都不需要离开你的环境。只需在命令行/终端中输入以下命令即可在本地运行教程:
$ go get golang.org/x/tour
现在输入:
$ tour
任何以太坊节点都可以用于本指南的目的——Geth 或 OpenEthereum(原名 Parity)。为了简单起见,我们将在 QuickNode 这里 创建一个免费账户并创建一个以太坊端点。创建免费以太坊端点后,复制你的 HTTP Provider 端点,因为你稍后将需要它。QuickNode 使启动、运行和维护你自己的节点变得轻松无忧。开发人员不再需要等待数天才能完成完全同步,不再需要牺牲数 TB 的存储空间,也不再需要担心安全性和维护问题。
你稍后需要这个,所以复制并保存它。
以下内容将向你展示如何初始化你的 Go 项目,连接到以太坊网络并获取最新的区块号,快速、轻松且无头痛,前提是你已在环境中安装了最新版本的 Go。
1. 创建一个名为 quiknode.go 的文件
package main
import (
"fmt"
"log"
"github.com/ethereum/go-ethereum/ethclient"
)
func main() {
_, err := ethclient.Dial("ADD_YOUR_ETHEREUM_NODE_URL")
if err != nil {
log.Fatalf("Oops! There was a problem", err)
} else {
fmt.Println("Success! you are connected to the Ethereum Network")
}
}
将 ` ADD_YOUR_ETHEREUM_NODE_URL ` 替换为你之前保存的 provider 端点。
2. 创建一个模块来跟踪依赖项。如果你不熟悉 Go,这是设置项目依赖项的重要步骤。使用 Go 非常简单
只需输入:
$ go mod init quiknode
这将确保你代码中包含的 ethclient 从 GitHub 下载并安装在本地。它会自动发生,最新版本应与你内置的 Go 模块一起拉入你的环境。
如果你在安装 ethclient 时遇到任何问题,你可以使用以下命令替代下载:
$ go get github.com/ethereum/go-ethereum/ethclient
3. 运行你的模块
$ go run quiknode.go
如果一切顺利,你将看到以下消息:
这很简单!你现在正在运行你自己的节点,该节点已连接并同步。接下来,检查你的节点是否正常工作并从区块链中提取一些信息。
4. 修改你的代码以从 ETH 区块链获取更多信息:
package main
import (
"context"
"fmt"
"log"
"github.com/ethereum/go-ethereum/ethclient"
)
func main() {
client, err := ethclient.Dial("ADD_YOUR_ETHEREUM_NODE_URL")
if err != nil {
log.Fatalf("Oops! There was a problem", err)
} else {
fmt.Println("Sucess! you are connected to the Ethereum Network")
}
header, err := client.HeaderByNumber(context.Background(), nil)
if err != nil {
log.Fatal(err)
} else {
fmt.Println(header.Number.String())
}
}
快速解释上面的代码:
第 1-9 行:声明主包并添加连接到区块链所需的依赖项。
第 11 行:调用主函数。 第 12 行:设置我们的客户端并将其连接到由 QuickNode 托管的以太坊节点。 第 14 行:检查连接错误。
第 18 行:显示成功连接的消息。
第 20 行:向我们的节点发送请求以获取最新的区块号。
第 21-26 行:检查请求错误,如果没有错误则输出成功消息,将哈希号转换为字符串并显示。
不要忘记将 ` ADD_YOUR_ETHEREUM_NODE_URL ` 替换为你自己节点的 http 端点地址。
成功执行后,你将看到类似的消息:
就是这样!你现在可以使用你自己的 QuickNode 并使用 Go 构建下一个出色的 dApp。
本指南向你展示了如何使用 Go 和免费的 QuikNode 以太坊节点连接到以太坊网络。我们鼓励你了解更多关于 ethclient 文档 中的各种 RPC 方法,并探索 go-ethereum 的 GitHub 以了解其他模块。
此外,请在我们的教程“ 如何安装和运行 Geth 节点”中学习如何启动你自己的 go-ethereum/geth 节点。
订阅我们的 新闻通讯 以获取更多关于以太坊的文章和 QuikNode 指南。在 Twitter 上分享你的反馈,并在 Discord 上向我们提问。
- 原文链接: quicknode.com/guides/eth...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!