备份非密钥数据
钱包数据库中最重要的数据是其私钥。如果您无法访问私钥,您将无法花费比特币。确定性密钥派生和恢复码为备份和恢复您的密钥及其控制的比特币提供了一个相当健壮的解决方案。然而,重要的是要考虑到许多钱包数据库存储的不仅仅是密钥,它们还存储了关于每笔交易的用户提供的信息。
例如,当 Bob 在向 Alice 发送发票的一部分时创建一个新地址时,他会向他生成的地址添加一个标签,以便他可以区分她的付款与他收到的其他付款。当 Alice 支付 Bob 的地址时,她也会将交易标记为支付给 Bob 的原因相同。一些钱包还会向交易中添加其他有用的信息,例如当前的汇率,在某些司法管辖区计算税收时可能很有用。这些标签完全存储在它们自己的钱包中,而不与网络共享,保护了它们的隐私,并将不必要的个人数据排除在区块链之外。请参阅表 5-1 中的示例。
表 5-1. Alice 的每笔交易历史及其标记
2023-01-01
Bought bitcoins from Joe
+0.00100
2023-01-02
Paid Bob for podcast
−0.00075
然而,由于地址和交易标签仅存储在每个用户的钱包数据库中,并且因为它们不是确定性的,所以它们不能仅通过使用恢复码来恢复。如果唯一的恢复方式是基于种子的,那么用户将只能看到一个近似的交易时间和比特币金额的列表。这可能会让人很难弄清楚过去如何使用自己的钱。想象一下回顾一年前的银行或信用卡对账单,上面列出了每笔交易的日期和金额,但“描述”字段为空白。
钱包应该为用户提供一种方便的方式来备份标签数据。这似乎是显而易见的,但有许多广泛使用的钱包应用程序可以轻松创建和使用恢复码,但却没有提供备份或恢复标签数据的方式。
此外,钱包应用程序提供一种标准化格式导出标签可能会很有用,以便它们可以在其他应用程序(例如会计软件)中使用。该格式的标准提议在BIP329中。
钱包应用程序实现了超出基本比特币支持的其他协议,可能也需要或希望存储其他数据。例如,截至2023年,越来越多的应用程序已经添加了支持通过闪电网络(LN)发送和接收交易的功能。尽管闪电网络协议提供了一种在数据丢失时恢复资金的方法,称为静态通道备份,但它无法保证结果。如果您的钱包连接的节点意识到您丢失了数据,它可能会窃取您的比特币。如果它在您丢失数据库的同时丢失了其钱包数据库,并且您两者都没有充足的备份,那么您两者都将损失资金。 再次强调,这意味着用户和钱包应用程序需要做的不仅仅是备份恢复码。
一些钱包应用程序实现的解决方案是频繁地自动创建完整的备份,将其钱包数据库加密,加密密钥是从其种子派生的。比特币密钥必须是无法猜测的,而现代加密算法被认为是非常安全的,因此除了能够生成种子的人之外,没有人应该能够打开加密备份。这使得在不受信任的计算机上存储备份成为可能,例如云托管服务甚至是随机网络节点。
稍后,如果原始的钱包数据库丢失了,用户可以将其恢复码输入到钱包应用程序中以恢复其种子。然后,应用程序可以检索最新的备份文件,重新生成加密密钥,解密备份,并恢复用户的所有标签和其他协议数据。
Last updated