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



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

我认为您正在寻找的是分层确定性钱包(或"HD钱包")。这些钱包是作为bip32的一部分提出的。除了bip39,bip43和bip44,您还可以创建一个成熟的HD钱包。

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

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

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

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

什么是钱包?

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

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

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

因此,钱包只不过是一些数字密钥的包装器。它们更像是您的网上银行凭证或信用卡的 4 位数 PIN。要了解以太坊钱包的外观,请查看本文。

什么是HD钱包?

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

有关 bips 的一些详细说明,您可以参考他们相应的 github wiki,也可以参考这些文章 这里 和 这里.

编辑:对于实现,您可以使用库。例如,如果您使用的是JavaScript,则可以使用ethereumjs-wallet。下面是一个用于创建 v3 钱包对象的构造函数。要创建HD钱包,您可以使用它。

现在,问题来了如何使用它。为此,您可以参考任何标准的以太坊钱包。更好的起点可能是探索完全依赖于以太坊钱包库的元狐狸钱包扩展代码。

最新更新