[ad_1]
任何进行过加密货币交易或投资的人都可能知道钱包地址。 当您设置 Metamask 或 Trust 钱包帐户时,会自动生成一个地址。 更重要的是,将加密代币保存在 Binance、Coinbase 和 KuCoin 等中心化交易所的用户也可以获得钱包地址。
本文旨在揭开生成钱包地址的幕后花絮。
从外行的角度来看,地址是您的银行帐户或电子邮件地址的同义词。 加密钱包地址为您提供了互联网上唯一的数字身份,特别是区块链网络。 您的地址使您能够在区块链上签署交易、接收资金并将加密货币发送给其他用户。
以太坊是市值第二大的区块链平台,紧随比特币之后,比特币是有史以来第一个基于区块链的加密货币。 以太坊同样是使用率最高的平台之一,有许多用例和项目,包括去中心化金融、元宇宙、NFT 等。也就是说,研究以太坊地址是如何由 Metamask 等 DApp 生成的是有意义的。
根据设计(来自黄皮书),以太坊地址是 20 个字节或 40 个字符长的十六进制字符。 它们通常以 0x 为前缀,使它们的长度为 42 个字符。 一个示例地址是 0x6B96f06B72D5A21d64b9D460534977799c332434. 这 42 个长字符是使用公钥密码术生成的,也称为非对称密码术。 在非对称密码方案中,需要两个密钥(公钥和私钥)来提供安全加密。 原来你的地址是你公钥的输出。
要生成以太坊地址,您需要
- 一个 256 位(或 32 字节)的随机私钥。 私钥可以有多种格式:二进制字符串、助记符或秘密的十六进制字符串。
- 然后,您通过椭圆曲线数字签名算法 (ECDSA) 传递您的 256 位私钥,与生成比特币地址时使用的曲线相同。 ECDSA 是一种加密算法,可为通信提供强大而安全的加密。
- 然后使用哈希函数对 ECDSA(公钥)的输出进行哈希处理,特别是 Keccak-256。
- 您的以太坊地址是哈希输出的最后 20 个字节或 40 个字符,前缀为 0x。
我们将使用流行的以太坊加密库之一。 使用此实用程序,我们可以执行加密操作,例如散列、签署交易和生成不同算法的公钥。
让我们首先使用 node.js 初始化我们的项目文件夹并安装库。
npm 安装以太坊加密
第 1 部分:生成私钥
我们需要使用加密随机数生成器 (RNG) 函数生成随机的 256 位或 32 字节(8 位等于 1 字节)十六进制字符串。 请参阅下面的代码片段。
运行代码(节点索引.js) 给你下面的输出——你的私钥。
第 2 部分:使用 ECDSA 生成公钥
在这一部分中,我们将使用 secp256k1 曲线为我们的私钥导出一个公钥。 请参阅下面的代码。
输出是一个 64 字节的整数。
第 3 部分:使用 Keccak-256 散列公钥
最后一个技术部分是使用著名的 keccak-256 哈希算法对 secp256k1 曲线的输出进行哈希处理。 最后,我们从散列(摘要)中取出最后 40 个字符
输出值(0xdf86c04b91b0d2711158d89bf62387f6bba0fb8b) 是我们的以太坊地址。
PS:我已使用 Polygon Test 区块链在此地址上成功收到 0.5 个 MATIC 代币。 请参阅下面的屏幕截图。
结论
如果您已经做到这一点,我希望您现在了解钱包提供商(例如 Metamask)和加密货币交易所(例如 Binance)如何为每个加密货币用户提供新地址。 通过这些简单的步骤,任何人都可以生成他们的以太坊地址,因为有 2^256 个可能的地址可供拥有。 生成一个不可能被暴力破解或破解的强大私钥至关重要。
[ad_2]
Source link