如何在JavaScript中生成新的比特币地址

  • QuickNode
  • 发布于 2024-12-17 20:29
  • 阅读 18

本文详细介绍了如何使用 JavaScript 的 CryptoCoinJS 库生成比特币地址,内容涵盖比特币地址的类型、生成过程以及具体的代码实现。文章结构清晰,有理论支持,同时提供示例代码和输出结果,使读者能够深入了解比特币地址的创建过程。

概述

在比特币区块链上进行任何类型的交易,你需要一个公钥或比特币地址。在本指南中,我们将介绍如何使用 CyrptoCoinJS 在 JavaScript 中生成新的比特币地址。

什么是比特币地址?

你可以将比特币地址视为银行帐户的账号。主要区别在于,它用于在交易中指引比特币,而不是存储比特币。比特币地址是由字母和数字组合而成的字符串,代表比特币网络上的一个目的地。每当有人想接收比特币时,他们理想情况下会利用钱包应用程序或代码为每笔交易生成一个新的独特的单次使用地址。有三种类型的比特币地址:

  1. 传统地址 (P2PKH): 传统地址是原始比特币地址,它们全部以“1”开头。它是最兼容的,受到钱包的广泛支持。示例: 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2
  2. 嵌套的 SegWit (P2PSH): 嵌套的 SegWit 对传统地址进行了改进;它们的交易费用比传统地址低40%,并且支持多重签名。以“3”开头。示例: 3EktnHQD7RiAE6uzMj2ZifT9YgRrkSgzQX
  3. 原生 SegWit (Bech32): SegWit 是 Segregated Witness 的缩写,具有更小的交易规模;与传统地址相比,它们可以节省80%的交易费用。以“bc1”开头。示例: bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4

比特币地址是如何生成的?

  • 首先生成一个由64个(十六进制)字符(256位/32字节)组成的随机私钥字符串,它可以是0到n-1之间的任何数字,其中n是一个常数(n = 1.1578*10^77)。
  • 将一个小于n的256位数字字符串输入到 SHA256 哈希算法中,这样就会生成一个新的256位数字。这就是我们的私钥。
  • 然后通过生成的私钥导出一个128个(十六进制)字符(64字节)的公钥,它以“04”作为前缀。公钥是使用 secp256k1 从私钥生成的,secp256k1是 ECDSA(椭圆曲线数字签名算法) 的一种曲线。因此,公钥是使用公式 P = p*G 生成的,其中 p 是私钥,G 是生成器点。生成器点 G 是secp256k1曲线上定义的一个点。例如:
04d0988bfa799f7d7ef9ab3de97ef481cd0f75d2367ad456607647edde665d6f6fbdd594388756a7beaf73b4822bc22d36e9bda7db82df2b8b623673eefc0b7495

图像来源: O’Reilly.

  • 通过对公钥应用 SHA256 哈希算法,然后计算结果的 RIPEMD160 哈希,生成34字符的地址。A = RIPEMD160(SHA256(P)),其中 P 是公钥,A 是比特币地址。比特币地址总是按照 Base58Check 编码,该编码使用58个字符(Base58数字系统)和一个校验和,以避免模糊性、地址复制错误,并帮助人类可读性。

例如:

16UjcYNBG9GTK4uq2f7yYEbuifqCzoLMGS

注意: 可以通过私钥生成公钥,但公钥无法转换回私钥,因为该算法是单向函数。

什么是 CryptoCoinJS?

CryptoCoinJS 是一个 JavaScript 库,用于帮助你与不同的加密货币接口,例如 比特币莱特币狗狗币

在 JavaScript 中生成比特币地址

首先,我们需要安装 CryptoCoinJs 库。我们将使用 npm(节点包管理器),它与 node.js 一起提供,以安装该库。

让我们通过在终端/命令提示符中输入以下内容,检查我们的系统上是否安装了 node.js:

node -v

这应该返回系统上安装的 node.js 版本。如果出现错误,请从 官方网页下载并安装 node.js 的 LTS 版本

现在,让我们创建一个新的项目目录,并将其设为我们的工作目录:

mkdir Bitcoin
cd Bitcoin

要安装库,请在终端/命令提示符中键入以下内容:

npm i coinkey

此步骤中最常见的问题是 node-gyp 的内部失败。你可以在 这里查看 node-gyp 安装说明

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

另一个常见问题是缓存过期;只需在终端中输入以下内容以清除你的 npm 缓存:

npm cache clean

如果一切顺利,CryptoCoinJS 将在你的系统上安装完成。

现在打开你选择的文本编辑器,创建一个新的 JavaScript 文件 address.js,并将以下内容复制粘贴到其中:

var CoinKey = require('coinkey');

var wallet = new CoinKey.createRandom();

console.log("保存但勿分享此内容:", wallet.privateKey.toString('hex'));
console.log("地址:", wallet.publicAddress);

以上代码的解释

第1行: 导入 CryptoCoinJS 库。

第2行: 使用 Coinkey.createRandom 方法创建一个带有密钥的随机地址,并将其存储在 wallet 变量中。

第3行: 将私钥与警告一起打印到控制台。

第4行: 将地址与字符串一起打印到控制台。

保存脚本文件并使用以下命令运行它:

node address

它将输出类似于以下内容的结果。

结论

恭喜你生成了自己的比特币地址,你可以使用该地址接收资金! 有许多算法和函数齐心协力,创造出你最喜欢的钱包软件的功能。你现在知道了其中的一小部分,并亲眼见证了其内部工作过程!

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

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

0 条评论

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