我想创建自己的加密货币钱包。我知道钱包中使用的私钥和公钥概念,但我无法理解我的钱包如何验证其他公共地址?我的钱包如何验证其他用户? coinomi如何管理他们的钱包来存储所有种类的货币?任何人都可以解释钱包的完整逻辑吗?
答案 0 :(得分:2)
我认为你所寻找的是等级确定性钱包(或“高清钱包”)。这些钱包是bip32的一部分。再加上bip39,bip43和bip44,您可以创建一个完整的高清钱包。
Bip32:这提出了高清钱包的规格。它包含所有技术细节,例如如何实施高清钱包。它描述了如何使用所选长度的单个种子(介于128和512位之间;建议使用256位)来为不同加密货币的各种账户生成多个密钥,这些密钥具有独特和确定的方式。
Bip39:它提出了一种将种子编码为12(或15/18/21/24)字的人类可读密码的方案。
Bip43:BIP32规范为实现者提供了太多的自由度。多个实现可能声称它们与BIP32兼容,但实际上它们可以生成具有不同逻辑结构的钱包,使它们不可互操作。不幸的是,这种情况使得“BIP32兼容”声明相当无用。因此,引入了Bip43。
Bip44:这包含高清钱包的实际实施细节。
什么是钱包?
通俗地说,它们非常像你的物理钱包,有助于存钱。然而,由于加密货币更像是数字货币,因此存储(读取管理)它们所需的钱包也是一种数字货币。 现在,有2种钱包。
如前所述,加密钱包实际上并不存储加密货币。与银行一样,加密货币的所有权细节位于分类账上,如果是密码则是区块链。现在,这些数字钱包仅用于管理它们。此外,这种管理意味着它为您提供了使用自己的加密货币的专有权。 现在,密码已经附属于某些帐户,例如我们在银行帐户中拥有数字资金。为了管理这些数字货币,我们已经提供了各种设施,如网上银行,信用卡等,我们可以用这些钱。同样,对于花费密码,我们需要钱包。
所以,Wallets只不过是一些数字键的包装。它们更像是您的网上银行凭证或信用卡的4位数信息。要查看以太坊钱包的外观,请查看this文章。
什么是高清钱包?
现在,在比特币热潮之后,出现了大量的密码。现在,为了管理每种密码,需要一个具有各自密钥的不同帐户。此外,在相同的加密域内,一个拥有数百个帐户及其各自的密钥。因此,使用各自的钱包管理来自不同领域的各种密钥变得非常困难。此外,一旦您使用某个供应商创建钱包,就不可能将其迁移到其他供应商,因为每个供应商都根据他的想法和幻想实现钱包结构。因此,钱包便携性正成为一个巨大的问题。为了解决所有这些问题,我们推出了高清钱包。
有关bips的一些详细说明,您可以参考相应的github wiki,也可以参考这些文章here和here。
编辑:对于实施,您可以使用库。对于例如如果您使用的是JavaScript,则可以使用ethereumjs-wallet。 Here是用于创建v3钱包对象的构造函数。要创建高清钱包,您可以使用this。
现在,问题是如何使用它。那么你可以参考任何标准的以太坊钱包。更好的起点可能是探索metamask-extension的代码,它完全依赖于ethereumjs-wallet库。