加密钱包如何工作?(以及我是如何构建一个的)

本文介绍了加密钱包的工作原理,重点解释了助记词(mnemonic phrases)、种子(seed)以及分层确定性钱包(HD Wallets)的概念。文章还展示了如何使用JavaScript来生成加密钱包,并强调了钱包的可移植性,即可以在不同的钱包应用之间导入和使用。

如果你曾经想知道加密钱包在底层如何工作,你并不孤单。几个月前,我也问了自己同样的问题,而这种好奇心引导我深入研究了助记词、种子短语和密钥推导路径。

今天,我不仅了解了它们的工作原理,甚至还使用 JavaScript 构建了我自己的钱包生成器。在本文中,我将分解加密钱包的核心概念,并向你展示我用来构建钱包的实际代码。让我们揭开幕后之谜。

什么是加密钱包?

加密钱包的核心并不是真正存储你的币。它更像是一个存储密钥以访问你在区块链上的资产的工具。你的实际资金存在于区块链,你的钱包持有私钥来证明所有权和进行交易。如果你好奇公钥和私钥在底层是如何工作的(加密、签名、验证),我写了一个简单的指南在这里解释了它。

步骤 1:助记词短语 — 人性化的密钥

加密钱包通常以称为助记词短语的东西开始 — 你被告知要写下来并且永远不要分享的 12 或 24 个单词。

这些单词不是随机的。它们是使用称为 BIP-39 的标准生成的。以下是底层发生的事情:

  • 助记词由随机的 128 到 256 位熵(表示随机性的花哨词)创建。
  • 然后,此熵被映射到一组来自 2048 个单词列表的预定义英语单词。
  • 与长十六进制字符串相比,这些单词更易于人类编写、记忆和恢复。
// 使用 ethers
import { ethers } from "ethers";
const wallet = ethers.Wallet.createRandom();
const mnemonic = wallet.mnemonic.phrase;

//使用 bip39 - 用于 solana
import { generateMnemonic, mnemonicToSeedSync } from "bip39";
const mnemonic = generateMnemonic();

步骤 2:从助记词生成种子

助记词只是开始,它使用一种称为 PBKDF2 的密钥拉伸算法转换为二进制种子。此种子充当我们可用于派生无限数量钱包地址的主密钥。

// 使用 ether
const hdNode = ethers.HDNodeWallet.fromPhrase(mnemonic);

//使用 bip39 - 用于 solana
const seed = mnemonicToSeedSync(mnemonic);

步骤 3:一个种子,多个钱包 (HD 钱包)

现在是神奇的时刻:使用单个种子,你可以生成多个钱包。这个概念称为 分层确定性 (HD) 钱包,在 BIP-32/44 中定义。

我们使用所谓的推导路径从主种子创建新钱包。例如:

//使用 ethers
const childNode = hdNode.derivePath(`${1}`);

//使用 bip39 - 用于 solana
const path = `m/44'/501'/${i}'/0'`;

//44' = BIP44 标准
//501' = 币种类型(501 是 Solana)
//${i}' = 钱包索引 (0, 1, 2...)
//0' = 更改(通常 0 表示外部地址)

从每个推导路径,我们可以派生一个新的密钥对(公钥/私钥):

//使用 ethers
console.log( "public address: " + childNode.address)
console.log( "private address: " + childNode.privateKey)

//使用 bip 39 - 用于 solana
import { Keypair } from "@solana/web3.js";
const derivedSeed = derivePath(path, seed.toString("hex")).key;
const secret = nacl.sign.keyPair.fromSeed(derivedSeed).secretKey;
console.log(Keypair.fromSecretKey(secret).publicKey.toBase58());

便携性:为什么你可以将你的钱包导入到任何应用

该系统最酷的功能之一是便携性。由于你的种子短语(助记词)遵循广泛使用的标准 (BIP-39),因此它可以在 Phantom、MetaMask、Trust Wallet 等钱包中使用。

只要钱包应用支持 BIP-39/Ethers 和相同的推导路径,你就可以导入你的密钥并访问你的资金。

我的第一个钱包

这是我使用自定义构建的逻辑生成的第一个钱包的快照

想看看我是如何构建它的吗?你可以在 GitHub 上查看代码

了解加密钱包的工作原理既能增强能力,又出乎意料地容易上手。你不需要成为区块链专家 — 只需要一点好奇心和一些时间来探索 BIP-39 和 BIP-44 等标准。

如果这激起了你的兴趣,请关注我,因为我会在我的旅程中发布更多 web3 内容!

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

0 条评论

请先 登录 后评论
CoinsBench
CoinsBench
https://coinsbench.com/