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

本文介绍了如何使用 CryptoCoinJS 这个 JavaScript 库生成比特币地址。文章详细解释了比特币地址的类型、生成原理,并提供了使用 CryptoCoinJS 生成随机比特币地址的示例代码,最后提醒用户注意私钥安全。

概述

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

什么是比特币地址?

你可以将比特币地址视为你银行账户的账号。主要区别在于,它用于在交易期间引导比特币,而不是存储它。比特币地址是一个字符串,结合了字母和数字,代表比特币网络上的一个目的地。每次有人想要接收比特币时,他们最好使用钱包应用或代码为每笔交易生成一个新的唯一的单次使用地址。比特币地址有三种类型:

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

如何生成比特币地址?

  • 首先生成一个由 64 个(十六进制)字符(256 位/32 字节)组成的随机私钥字符串,它可以是 0 到 ≤ n-1 之间的任何数字,其中 n 是一个常数(n = 1.1578*1077)。
  • 将小于 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 包管理器),它随 node.js 一起提供,来安装该库。

让我们通过在终端/cmd 中键入以下内容来检查我们的系统上是否安装了 node.js:

node -v

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

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

mkdir Bitcoin
cd Bitcoin

要安装该库,请在终端/cmd 中键入以下内容:

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("SAVE BUT DO NOT SHARE THIS:", wallet.privateKey.toString('hex'));
console.log("Address:", wallet.publicAddress);

以上代码的解释

第 1 行:导入 CryptoCoinJS 库。

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

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

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

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

node address

它将给出一个类似于此的输出。

结论

恭喜你创建了自己的比特币地址,你可以使用它来接收资金!许多算法和函数协同使用,以在你最喜欢的钱包软件中创建功能。你现在知道了其中的一小部分,并且已经看了一下幕后,亲自了解了内部运作!

订阅我们的 newsletter 以获取更多关于 Ethereum 的文章和指南。如果你有任何反馈,请随时通过 Twitter 与我们联系。你还可以随时在我们的 Discord 社区服务器上与我们聊天,其中包含一些你将遇到的最酷的开发人员 :)

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

0 条评论

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