如何创建自己的多币种加密钱包?

How to create own multi-currency crypto-wallet?

我想创建自己的加密货币钱包。我知道钱包中使用的私有和 public 密钥概念,但我不明白我的钱包如何验证其他 public 地址?我的钱包如何验证其他用户? coinomi 如何管理他们的钱包来存储各种货币?谁能解释一下钱包的完整逻辑?

我认为您正在寻找的是分层确定性钱包(或 "HD Wallets")。这些钱包是作为 bip32. Further along with bip39, bip43 and bip44 的一部分提出的,您可以创建一个完整的 HD 钱包。

  1. Bip32:提出了HD钱包的规范。它包含所有技术细节,例如应该如何实施 HD 钱包。它描述了如何使用选定长度(128 到 512 位之间;建议使用 256 位)的单个种子以唯一且确定的方式为不同加密货币的各种帐户生成密钥数量。

  2. Bip39:它提出了一种将种子编码为人类可读的 12(或 15/18/21/24)个单词的密码短语的方案。

  3. Bip43:BIP32 规范为实现者提供了太多的自由度。多个实现可能声称它们是 BIP32 兼容的,但实际上它们可以生产具有不同逻辑结构的钱包,使它们不可互操作。不幸的是,这种情况使 "BIP32 compatible" 语句变得毫无用处。因此,引入了Bip43。

  4. Bip44:包含HD钱包的实际实现细节

什么是钱包?

通俗地说,它们非常像您的实体钱包,可以帮助您存钱。然而,由于加密货币更像是数字货币,因此存储(读取管理)它们所需的钱包也是数字化的。 现在,有两种钱包。

  1. 硬件钱包
  2. 软件钱包

如前所述,加密钱包实际上并不存储加密货币。与银行一样,加密货币的所有权详细信息位于分类账上,如果是加密货币,则分类账就是区块链。现在,这些数字钱包仅用于管理它们。此外,这种管理意味着它赋予您使用自己的加密货币的专有权。 现在,加密货币附属于某些账户,就像我们在银行账户中拥有数字货币一样。为了管理这些数字货币,我们提供了各种设施,如网上银行、信用卡等,我们可以使用这些设施来花费这些钱。同样,为了使用加密货币,我们需要钱包。

所以,钱包只不过是一些数字密钥的包装。它们更像是您的网上银行凭证或信用卡的 4 位数密码。要查看以太坊钱包的外观,请查看 this 文章。

什么是HD钱包?

现在,在比特币繁荣之后,出现了大量的加密货币。现在,要管理每种加密货币,需要一个具有各自密钥的不同帐户。此外,在同一个加密域中,一个人拥有数百个帐户及其各自的密钥。因此,使用个人钱包管理来自不同域的各种密钥变得非常困难。此外,一旦您与某个供应商创建了钱包,就不可能将其迁移到其他供应商,因为每个供应商都根据自己的想法和幻想实施钱包结构。因此,钱包便携性成为一个大问题。为了解决所有这些问题,引入了 HD 钱包。

关于bips的一些详细解释,可以参考其对应的github wiki,也可以参考这些文章here and here.

编辑: 为了实现,您可以使用库。例如如果您使用 JavaScript,则可以使用 ethereumjs-wallet. Here is a constructor function to create a v3 wallet object. For creating a HD wallet, you can use this

现在,问题来了如何使用它。那么你可以参考任何标准的以太坊钱包。更好的起点可能是探索 metamask-extension 的代码,它完全依赖于 ethereumjs-wallet 库。