本文介绍了如何使用 Go 语言创建以太坊地址,详细阐述了以太坊地址的概念及其生成过程,包括所需的包和代码示例。此外,还涵盖了如何检查 Go 语言的安装以及设置项目的依赖性,结构清晰并提供了必备的背景知识,是一个实用的入门指南。
Golang 在后端开发者中非常受欢迎,用于构建基础设施和微服务。Go 是一种程序设计语言。由 Robert Griesemer、Rob Pike 和 Ken Thompson 在 2007 年于谷歌开发,并于 2009 年作为开源编程语言推出,Go 在管理依赖关系方面非常高效。Go 中的程序是通过使用包来组装的。
在过去几年中,Go 获得了大量市场份额,目前被众多大型企业使用。在本指南中,我们将介绍如何使用 Go-Ethereum Client library 在 Go 中创建以太坊地址。
学习 如何使用 Go 连接以太坊网络在这里。
今天我们将使用 go-ethereum 的 crypto 和 common 包。
先决条件
安装 Go 版本 1.13 或更高版本。
一个文本编辑器
CLI
在任何互联网平台上的身份验证都需要用户名和密码。你可以将以太坊地址视为你的用户名,随之而来的私钥则是你的密码(你不需要记住)。以太坊地址是你在区块链上的独特身份,它的格式类似于“0x6E0d01A76C3Cf4288372a29124A26D4353EE51BE”。实际地址是公开的,可以共享,但你的私钥显然必须保密。你自己的以太坊地址在 ETH 网络上至少需要进行以下操作。
收发 ETH 货币
签名/发送交易
连接到应用程序
以下是使用私钥生成以太坊地址的过程。
例如:
0xf4a2b939592564feb35ab10a8e04f6f2fe0943579fb3c9c33505298978b74893
例如:
0x04345f1a86ebf24a6dbeff80f6a2a574d46efaa3ad3988de94aa68b695f09db9ddca37439f99548da0a1fe4acf4721a945a599a5d789c18a06b20349e803fdbbe3
例如:
0xd5e099c71b797516c10ed0f0d895f429c2781142
go-ethereum 是以太坊的官方 GOlang 实现,用于开发以太坊节点。go-ethereum 包含许多用于在 Go 中与以太坊区块链进行交互和交易的包。
让我们看看如何轻松地在 Go 中生成新的以太坊地址。
这里的第一步是检查 Go 是否已安装在我们的系统上。为此,请在你的终端/命令行中复制粘贴以下内容:
$ go version
如果未安装 Go,请按照你具体操作系统的官方 安装指南 进行安装。
确保你也已安装 GCC 编译器。
对于 Ubuntu - 使用 apt-get install build-essential
对于 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
首先创建一个名为 address.go 的文件,并将以下代码复制粘贴到其中。这段代码将创建一个私钥、使用该私钥生成一个公钥以及一个以太坊地址。
package main
import (
"crypto/ecdsa"
"fmt"
"log"
"github.com/ethereum/go-ethereum/common/hexutil"
"github.com/ethereum/go-ethereum/crypto"
)
func main() {
privateKey, err := crypto.GenerateKey()
if err != nil {
log.Fatal(err)
}
privateKeyBytes := crypto.FromECDSA(privateKey)
fmt.Println("保存但不分享这个 (私钥):", hexutil.Encode(privateKeyBytes))
publicKey := privateKey.Public()
publicKeyECDSA, ok := publicKey.(*ecdsa.PublicKey)
if !ok {
log.Fatal("无法断言类型: publicKey 不是 *ecdsa.PublicKey 类型")
}
publicKeyBytes := crypto.FromECDSAPub(publicKeyECDSA)
fmt.Println("公钥:", hexutil.Encode(publicKeyBytes))
address := crypto.PubkeyToAddress(*publicKeyECDSA).Hex()
fmt.Println("地址:", address)
}
以上代码的解释
第 1-10 行:声明主包并添加生成密钥和地址所需的必要依赖项。
第 12 行:调用主函数。
第 13 行:使用 crypto 包中的 GenerateKey 方法生成随机私钥。
第 14-16 行:检查错误。
第 18 行:使用 crypto/ecdsa 包中的 FromECDSA 方法将私钥转换为字节。
第 19 行:使用 hexutil 包的 Encode 方法将私钥转换为十六进制字符串,并打印出新字符串及警告信息。
第 21 行:使用 crypto 包的 Public 方法从私钥生成公钥。
第 22-28 行:检查公钥的类型,然后按上述与私钥相同的方式将其转换为十六进制字符串,并打印公钥及信息。
第 30 行:使用 crypto 包的 PubkeyToAddress 方法生成以太坊地址,该方法接受 ECDSA 公钥并返回以太坊地址,并将其存储在变量 address 中。
第 31 行:打印地址及信息“地址:”
接下来,让我们创建一个模块来跟踪依赖关系。如果你对 Go 不太熟悉,这是设置项目依赖关系的一个基本步骤。使用 Go 非常简单。
只需输入:
$ go mod init address
这将确保代码中包含的 crypto 和 common 包从 GitHub 下载并在本地安装。它是自动发生的,最新版本应在你的环境中与内置的 Go 模块一起拉取。
现在,让我们运行我们的模块。
$ go run address.go
如果你正确地按照说明进行操作且一切顺利,输出将类似于此。第一行显示私钥,第二行显示公钥,第三行显示你的以太坊地址。
恭喜你使用 Go 创建了一个新的以太坊地址。这个地址可以用来与以太坊区块链网络互动并执行各种操作。请关注 QuikNode 更多易于遵循的指南 - 你实惠且快速的 以太坊节点供应商。学习 如何开始使用 QuikNode 并在几分钟内启动自己的以太坊节点,构建下一个大 dApp!
订阅我们的 新闻通讯 以获取更多关于以太坊的文章和指南。如果你有任何反馈,请随时通过 Twitter 联系我们。你还可以在我们的 Discord 社区服务器中与一些非常酷的开发者交流,你会遇到一些有趣的人 :)
- 原文链接: quicknode.com/guides/eth...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!