159 / 736LABEL

Transaction Labeling

让你日后仍能看懂付款的备注

几个月后,金额和日期未必足以让你想起为什么付款。标签为钱包历史补充个人背景。需要弄清它们说明什么、不能保证什么,以及恢复钱包时怎样保留。

钱包是接收和发送比特币的应用程序或设备。Transaction Labeling 是为交易、地址或其他钱包记录添加说明和备注。你可以记录付款用途或收款来源。这些称为元数据的信息保存在应用中,不属于 Bitcoin 交易本身,也不能单独证明对方身份。

打开钱包历史,你看到一笔旧付款。它是服务定金、礼物,还是转到自己的另一账户?“自行车维修定金”这样的标签,能让记录在很久之后仍有意义。修改标签只会改变应用备注,不会改变交易或其标识 txid,也无须因此向区块链(已确认交易的公开历史)写入新内容。恢复钱包时也要区分:Seed Phrase,也就是恢复钱包密钥的助记词,本身不包含你的个人备注。恢复花费能力和恢复付款背景,是两项不同的任务。 [1] [3] [5]

有用的备注记录你知道的事情,例如发票号、付款用途或资金来源。但自己写的备注,与应用自动关联的信息或分析人员的说法,并不是同一回事。例如,BTCPay Server 用 invoice 标记通过账单收款,用 payout 标记付款或退款,也支持自定义标签。这些背景有助于 Coin Control,也就是手动选择 UTXO,即尚未花费的输出。每个这样的输出记录一笔金额以及花费它所需满足的条件。但写上“不要合并”本身不会阻止任何操作。下一笔付款会把哪些收款关联起来,仍取决于实际选择的输入。 [1] [2]

有些钱包能冻结输出,使应用不选它来花费。BIP 329 用 spendable 传递这种本地状态,而且仅适用于 output 类型。spendable:false 使用布尔值 false;文本字符串 "false" 是另一回事。对使用者而言,关键区别很简单:冻结防止的是这个应用意外选中资金,不是阻止所有可能的花费。它不是 Timelock,即 Bitcoin 规则强制执行的时间条件。另一个拥有正确密钥的钱包,只要满足输出真正的花费条件,仍能花掉它。 [1] [3]

因此,更换应用时也要考虑单独导出备注。文件可能把姓名、发票及付款历史与地址或 XPUB 联系起来;XPUB 是扩展公钥,可用于计算钱包相应部分的后续地址,但单靠 XPUB 不能签署付款。如果导出文件包含 spscan 类型的记录,该记录就包含用于查找入账 Silent Payments 的扫描私钥。它本身不授权花费,但泄露仍会损害隐私。所以,没有花费私钥,不代表文件无害。对保存的副本和传输过程都应使用加密,并在正确账户中测试恢复。 [1] [4] [5]

BIP 329 区分 tx、addr、pubkey、input、output、xpub 和 spscan,分别代表交易、地址、公钥、输入、输出、扩展公钥及 Silent Payments 扫描表达式。类型决定如何解释 ref。input 引用的是交易标识及该交易的输入索引;output 引用的是创建输出的交易标识及输出索引。因此,单有 txid:1 而没有类型是不够的。它可能表示输入,也可能表示输出,两者不是同一个对象。把这类引用统统当成“付款地址”并不安全。 [1] [4]

BIP 329 使用 JSON Lines 交换数据:UTF-8 文本文件,每行一条结构化记录。你不必手写文件,重要的是两个应用都能理解它。必填字段 type 和 ref 标识记录对象,label、origin 和 spendable 则是可选的。导入时,省略 label 或 spendable 不应覆盖已有值。符合规范的导入程序应忽略未知类型。因此,成功打开文件,并不意味着新钱包保留了全部备注和设置。 [1]

同一笔交易可以出现在不同账户或钱包中,各自有不同备注。origin 用来区分这些视角。它包含简化的 Output Descriptor,也就是软件能读取的钱包描述,保留密钥来源信息,但不含实际密钥、子派生路径或校验和。它说明标签涉及哪个钱包,却不是文件签名,也不能证实作者填写的付款用途真实。确定正确账户与信任备注内容,是两件不同的事。 [1]

停用旧应用前,先在独立测试副本上尝试迁移。挑几笔熟悉的付款,对比对象和 ref、文字以及可能存在的 spendable 冻结状态。检查重音字符、多账户、未知类型和省略可选字段时的行为。导入程序可能跳过不支持的记录,或截短标签。建议的 255 个字符只是默认上限,不是所有应用的保证。在确认重要背景已保留之前,留下原始备份。“导入完成”这条提示本身并不能证明恢复完整。 [1]

要获得更完整的理解,请将本词条与以下词条结合阅读: Coin Control, UTXO, Bitcoin 隐私, Address Clustering, Seed Phrase, Output Descriptor. 反向关联还来自: Chain Surveillance.

DOC · 001BIP 329 — Wallet Labels Export Format规范 DOC · 002BTCPay Server — Wallet文档 DOC · 003Bitcoin Developer Guide — Transactions文档 DOC · 004BIP 392 — Silent Payment Output Script Descriptors规范 DOC · 005Bitcoin Developer Guide — Wallets文档
修订日期: 来源优先 · 非投资建议