跳转到主要内容

什么是软件钱包?

U
作者:UKey Wallet

加密资产与硬件钱包常见问题

软件钱包使用随机数来生成主私钥

然后,通过确定性且不可逆的算法,它可以从该主私钥派生出无限数量的子私钥

为什么我们需要确定性且不可逆的算法?
因为确定性意味着所有子私钥总是可以从同一个主私钥生成,而不可逆意味着主私钥不能从任何子私钥重构。

这就是为什么它被称为分层确定性(HD)钱包。私钥的派生结构类似于一棵树:一个父密钥可以派生出多个子密钥,每个子密钥可以派生出多个孙密钥,并且这个过程可以无限期地继续下去。

首次创建 HD 钱包或备份钱包时,会生成助记词。助记词由一组英文单词按顺序组成。该序列会用于生成种子,再由种子生成钱包中的所有私钥。也就是说,助记词就是钱包备份,可用于恢复钱包;而种子则对应确定性钱包背后的原始随机数。

HD 钱包的一大优点,是只需要主公钥就能生成任意数量的子公钥。也就是说,可以从主公钥创建新的公开地址,而无需访问主私钥或子私钥。不过,这些生成的地址最终仍由主私钥控制。

当然,这种设计也存在风险。如果助记词被暴露,本质上就等于暴露了所有私钥。一旦发生这种情况,钱包中的数字资产的安全性实际上就会丧失。

为什么需要这么多私钥?

用户为什么需要这么多私钥,可以通过比特币交易中的找零机制来理解。

比特币交易是一种包含输入输出的数据结构,同时也包含将价值从来源(输入)转移到目的地址(输出)所需的脚本信息。

要理解比特币的输入和输出,首先需要了解 UTXO未花费的交易输出)。UTXO 是比特币交易的基本单位,代表尚未被花费的交易输出。单个比特币实际上可能以 UTXO 的形式分布在多笔交易和多个区块中。比特币并不存在一份集中记录的简单账户余额;相反,链上只有分散的 UTXO,并由各自所有者控制。

UTXO 可以代表任何数量的价值,但一旦创建,它就不可分割,就像实体硬币不能分成两半一样。如果 UTXO 的价值大于交易所需的金额,则仍然必须花费整个 UTXO,超出的部分将作为找零返还。

例如,假设您有一个价值 20 个单位的 UTXO,并且想要支付 1 个单位。该交易必须消耗完整的 20 单位 UTXO,并创建两个输出:一个输出将 1 个单位发送给接收者,另一个输出将 19 个单位作为找零发送回您的钱包。因此,大多数比特币交易都会产生找零。

这就引出了另一个问题:找零应该发送回原地址,还是发送到新生成的地址?

当中本聪设计比特币时,引入了找零地址机制:通常会创建一个新地址来接收每笔交易的找零。这样做有助于保护用户隐私,并降低部分安全风险。

在现实生活中,这类似于在不同银行以不同名称和身份开设多个银行账户。即使有人可以观察每个账户中的资金流动,他们也很难将所有资金追溯到数字资产的真正所有者。这是比特币相对匿名性的部分原因。

这就是钱包用户需要大量私钥的原因。由于公钥和私钥总是成对存在,并且每次交易都可能产生新的找零地址,逐一存储和备份这些地址对应的私钥会带来很高的管理成本。HD 钱包通过一个根密钥派生任意数量的子公钥和子私钥,解决了这个问题,也显著提升了数字钱包的可用性。

这是否解答了您的问题?