如何在 JavaScript 中生成一个新的以太坊地址

  • QuickNode
  • 发布于 2024-08-09 20:53
  • 阅读 11

本文介绍了如何使用JavaScript中的Ethers.js库生成以太坊地址,包括必要的环境设置、地址生成过程以及相关代码示例。文章在技术上深入探讨了以太坊地址的生成原理及所需的加密算法,适合初学者和开发者学习。

概述

在编程领域几乎没有人没用过或听说过 JavaScript。JavaScript 最初是为客户端脚本创建的,但如今已经成为功能齐全的面向对象和过程式编程语言,广泛用于客户端和服务器应用程序。JavaScript 的语法借鉴自 Java 和 C++,并基于 ECMAScript 规范。今天,JavaScript 拥有超过 1,444,231 个库,并且还在不断增加,几乎在所有地方都被使用,包括在以太坊上创建去中心化应用程序(dApps)。在本指南中,我们将讨论如何使用 Ethers.js 在 JavaScript 中创建以太坊地址。

前提条件

  • 系统上已安装 NodeJS。

  • 文本编辑器

  • 终端或命令行

什么是以太坊地址?

在互联网上登录任何平台时,你需要使用一组凭据进行身份验证。将以太坊地址视为你的用户名,对应的私钥则是密码。你的以太坊地址是公共的,可以被分享,而私钥必须始终保密。使用这组凭据可以让你与以太坊区块链进行交互。以太坊地址是你在区块链上的身份,格式如下 “0x6E0d01A76C3Cf4288372a29124A26D4353EE51BE”。拥有有效的以太坊地址是必须的,用于:

  • 接收/发送以太坊货币

  • 签署/发送交易

  • 连接去中心化应用程序

以太坊地址是如何生成的:

首先生成一个 64 个字符(十六进制)长度(256 位 / 32 字节)的随机私钥。例如:

0xf4a2b939592564feb35ab10a8e04f6f2fe0943579fb3c9c33505298978b74893

然后使用椭圆曲线数字签名算法(ECDSA)从生成的私钥导出一个 128 个字符(十六进制)长度(64 字节)的公钥。例如:

0x04345f1a86ebf24a6dbeff80f6a2a574d46efaa3ad3988de94aa68b695f09db9ddca37439f99548da0a1fe4acf4721a945a599a5d789c18a06b20349e803fdbbe3

随后对这个公钥(128 个字符 / 64 字节)应用 Keccak-256 哈希函数,获得一个 64 个字符(32 字节)的哈希字符串。将这个字符串最后的 40 个字符 / 20 字节前加上 0x,得到最终的以太坊地址。例如:

0xd5e099c71b797516c10ed0f0d895f429c2781142

注意:在编码中,0x表示该数字/字符串以十六进制格式书写。

什么是 Ethers.js?

Ethers.js 是 Web3.js 的一种轻量级替代方案,后者是目前最常用的以太坊库。Ethers.js 被认为比其他库更加稳定且较少出现漏洞,并且拥有丰富的文档。该库也非常友好于初学者。Ethers.js 的维护非常好,被许多新开发者优先选择而逊色于 Web3.js。

你可以通过 这里了解更多关于 Ethers.js 的信息以及如何使用 Ethers.js 连接以太坊网络。

在 JavaScript 中生成以太坊地址

我们的第一步是检查系统是否已安装 node.js。为此,请将以下内容复制粘贴到你的终端/命令行中:

$ node -v

如果未安装,你可以从 官方网站 下载 LTS 版本的 NodeJS。

如果 Node.js 安装正确,我们来使用 npm(Node.js 的一部分)添加 Ethers.js(版本 6)库。

$ npm i ethers

在此步骤中最常见的问题是`node-gyp`内部故障。你可以按 这里的 node-gyp 安装说明进行操作

注意:如果你在遇到 node-gyp 问题时,请确保你的 Python 版本与上述说明中列出的兼容版本之一匹配。

另一个常见问题是缓存过期;通过输入以下命令清除 npm 缓存:

$ npm cache clean

如果 Ethers.js 安装成功,我们继续创建以太坊地址。

创建一个名为 address.js 的文件,这是一个简短的脚本,用于从一个随机私钥生成一个以太坊地址,复制并粘贴以下内容到你的 address.js 文件中:

var ethers = require('ethers');
var crypto = require('crypto');

var id = crypto.randomBytes(32).toString('hex');
var privateKey = "0x"+id;
console.log("保存但不要分享此密钥:", privateKey);

var wallet = new ethers.Wallet(privateKey);
console.log("地址: " + wallet.address);

上面的代码解释

第 1-2 行:导入 ethers 库和随 Node.js 提供的 crypto 模块

第 4 行:使用 crypto 对象生成一个随机的 32 字节十六进制字符串,并将其存储在 id 变量中。

第 4 行:在 id 中的字符串前加上 '0x' 前缀,并将新字符串存储在名为 privateKey 的变量中。

第 6 行:打印我们的私钥并给出警告。

第 8 行:使用 privateKey 创建一个新钱包,并将其存储在 wallet 变量中。

第 9 行:打印新创建的 wallet 的地址,并附上“一地址:”的消息。

保存并运行你的脚本以生成新的以太坊地址。

$ node address

如果你的代码成功执行,输出将类似于下面的屏幕截图。第一行是私钥,第二行是你的新以太坊地址。

结论

你的以太坊地址是你在以太坊网络上的身份。它是与网络交互和进行交易所必需的。要继续学习 Ethers.js,请查看关于 如何使用 Ethers.js 发送以太坊交易 的指南。有关 Ethers.js 的更多信息,请参阅其 官方文档。正如你所看到的,使用 JavaScript 和最新库快速生成新的以太坊地址。以太坊区块链上的 dApps 开发得到各种工具的支持,这些工具由快速增长的以太坊社区不断更新和改进。请关注 QuickNode 更多易于遵循的指南 - 你负担得起且快速的 以太坊节点。了解 如何开始使用 QuickNode 并在几分钟内设置自己的以太坊端点。

订阅我们的 新闻通讯,以获取更多关于以太坊的文章和指南。如果你有任何反馈,请随时通过 Twitter 与我们联系。你也可以在我们的 Discord 社区服务器上与我们聊天,那里有一些你会遇到的最酷的开发者 :)

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

0 条评论

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