跳转至主要内容

如何使用 JavaScript 生成一个新的以太坊地址

更新于
2025年11月26日

阅读时间 4 分钟

概述

说到编程,几乎没有人没用过或没听说过 JavaScript。JavaScript最初是为客户端脚本而创建的,但如今已成为一种功能齐全的面向对象和过程式语言,广泛应用于客户端和服务器端应用程序。 JavaScript 的语法借鉴了 Java 和 C++,并基于ECMAScript规范。目前,JavaScript 拥有超过 1,444,231 个库(且数量仍在持续增加),几乎无处不在,包括在以太坊上开发去中心化应用(dApps)。在本指南中,我们将介绍如何使用Ethers.js 在 JavaScript 中创建以太坊地址。

先决条件

  • 您的系统上已安装 Node.js。
  • 一个文本编辑器
  • 终端(又称命令行)

什么是以太坊地址?

在登录任何互联网平台时,您都需要使用一组凭据进行身份验证。可以将以太坊地址视为您的用户名,相应的私钥则视为密码。虽然您的以太坊地址是公开的且可以分享,但私钥必须始终保密。通过这种组合,您可以与以太坊区块链进行交互。 以太坊地址是您在区块链上的身份标识,其格式如下:“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 的一个轻量级替代方案,而Web3.js 是目前最常用的以太坊库。一些人认为 Ethers.js 比其他库更稳定、错误更少,并且拥有详尽的文档。该库对初学者也非常友好。Ethers.js 维护得非常好,许多新入行的开发者更倾向于使用它而非 Web3.js。

可以在此处进一步了解 Ethers.js以及如何使用 Ethers.js 连接到以太坊网络。

使用 JavaScript 生成以太坊地址

这里,我们的第一步是检查系统上是否安装了 Node.js。要进行此操作,请将以下内容复制并粘贴到终端/命令提示符中:

$ node -v

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

如果 Node.js 已正确安装,那么我们就使用 npm(Node 包管理器,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;
控制台.log("请保存但不要分享此内容:", privateKey);

var wallet = new ethers.钱包(privateKey);
控制台.log("地址:" + 钱包.地址);

上述代码的说明

第 1-2 行:导入 node.js 自带的 ethers 库和 crypto 模块

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

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

第 6 行:打印私钥并显示警告。

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

第 9 行:打印新创建的钱包地址,并附上“地址:”这一提示信息

保存并运行您的脚本,以生成一个新的以太坊地址。

$ node address

如果您的代码执行成功,输出结果将与下图所示类似。第一行是私钥,第二行是您的新以太坊地址。

结论

您的以太坊地址是您在以太坊网络上的身份标识。与网络交互并执行交易时,该地址必不可少。若要继续学习 Ethers.js,请参阅这篇《如何使用 Ethers.js 发送以太坊交易》指南。您还可以从 Ethers.js的官方文档中获取更多信息。 如您所见,借助 JavaScript 和最新库,生成一个新的以太坊地址非常快捷。以太坊区块链上的去中心化应用(dApp)开发得到了多种工具的支持,这些工具由快速发展的以太坊社区持续更新和改进。敬请关注 Quicknode(您经济实惠且速度极快的以太坊节点提供商)发布的更多易于理解的指南。了解如何开始使用 Quicknode,并在几分钟内设置您自己的以太坊端点。

订阅我们的通讯,获取更多关于以太坊的文章和指南。如果您有任何反馈,欢迎通过Twitter 联系我们。您还可以随时在我们的Discord社区服务器上与我们交流,那里聚集了您能遇到的最酷的开发者们 :)

分享本指南