如何使用 Go 连接到以太坊网络

  • QuickNode
  • 发布于 2024-03-28 19:52
  • 阅读 53

本文介绍了如何使用Go语言连接以太坊网络,并利用QuickNode的基础设施提升后端的速度和可靠性。文章详细说明了Go语言的关键特性、安装步骤以及如何通过Go的ethclient包与以太坊网络进行交互。

概述

Go 可以帮助你构建更快、更具扩展性的后端,本指南将向你展示如何将你的后端连接到以太坊(并使其更快、更可靠且全球可访问,这一切都归功于 QuickNode 的全球基础设施)。

什么是 GoLang?

Go 是一种由 Google 工程师于 2009 年推出的开源编程语言。它部分源自 C,采用了 C 的语法和特性,但具有内存安全、垃圾回收、结构类型和并发性。Go 具有超级高效的并发机制,充分利用了现代多核硬件以及分布式网络基础设施。

Go 的关键特性:

  1. 静态类型和快速编译,生成二进制可执行文件——速度非常快
  2. 跨平台并支持移动设备,可在大多数平台上运行并具有原生库
  3. 对并发性有强大的支持,内置原语。使用 Goroutines,消耗的内存非常少,启动时间快,并且可以运行多个线程
  4. 简单且极简(完整参考仅 50 页)
  5. 强大的标准库,具有许多附加组件
  6. 指针和引用传递参数——你不怀念这些吗?

使用 Geth(即 go-ethereum)连接到以太坊

go-ethereum 是以太坊在 Go 中的官方实现(也称为 Geth),ethclient 包可用于以太坊 RPC API。

先决条件

  • 安装 Go 1.13 或更高版本

  • 文本编辑器

  • CLI

如何安装 Go 及基本错误处理

如前所述,如果我们想使用 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

设置你的 QuickNode 端点

任何以太坊节点都可以用于本指南的目的——Geth 或 OpenEthereum(原名 Parity)。为了简单起见,我们将在 QuickNode 这里 创建一个免费账户并创建一个以太坊端点。创建免费以太坊端点后,复制你的 HTTP Provider 端点,因为你稍后将需要它。QuickNode 使启动、运行和维护你自己的节点变得轻松无忧。开发人员不再需要等待数天才能完成完全同步,不再需要牺牲数 TB 的存储空间,也不再需要担心安全性和维护问题。

QuickNode 入门页面的截图,显示了以太坊端点的 HTTP 和 WSS 链接

你稍后需要这个,所以复制并保存它。

通过 Go 连接

以下内容将向你展示如何初始化你的 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

如果一切顺利,你将看到以下消息:

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 端点地址。

成功执行后,你将看到类似的消息:

更新后的 quiknode.go 的输出

就是这样!你现在可以使用你自己的 QuickNode 并使用 Go 构建下一个出色的 dApp。

结论

本指南向你展示了如何使用 Go 和免费的 QuikNode 以太坊节点连接到以太坊网络。我们鼓励你了解更多关于 ethclient 文档 中的各种 RPC 方法,并探索 go-ethereum 的 GitHub 以了解其他模块。

此外,请在我们的教程“ 如何安装和运行 Geth 节点”中学习如何启动你自己的 go-ethereum/geth 节点。

订阅我们的 新闻通讯 以获取更多关于以太坊的文章和 QuikNode 指南。在 Twitter 上分享你的反馈,并在 Discord 上向我们提问。

  • 原文链接: quicknode.com/guides/eth...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
QuickNode
QuickNode
江湖只有他的大名,没有他的介绍。