36 / 691CHG

找零输出

返回输出将所选比特币输入中未发送给接收者的部分或将费用发送给付款人控制的脚本。这是正常的交易输出:区块链不包含“更改”标志,因此钱包知道所有权,只能由其他人猜测。

“更改地址”是此输出的脚本地址表示法,但从技术上讲,它是 scriptPubKey 和新的 UTXO,而不是帐户余额。有了输入 I、向接收者的输出 R 和费用 F 的总和,C = I − R − F 成立。在确切提取或非经济剩余的情况下,钱包可能根本不会创造零钱。

比特币花掉所有UTXO;不能从一个输入中仅减去一部分。如果钱包选择输入 120,000 sat 来支付 100,000 sat 并收取 2,000 sat 费用,则必须将剩余的 18,000 sat 放入下一个输出或保留为费用。接收者输出和变化在序列化中具有相同的位置,并且顺序没有共识意义。一旦确认,变化就是一个新的UTXO,有自己的出点、确认和未来的花费价格。 【比特币开发者指南——交易】

硬币选择一起选择输入、费用和可能的找零。精确的组合不会产生输出;否则,钱包会将余额与创建余额和稍后支出的成本进行比较。资金 RPC Bitcoin Core 最多可以填充一个找零输出并返回其位置,而 send-all 则没有。硬币控制会改变所使用的输入,从而改变,但每个手动选择的输入都会被全部消耗。检查最终条目、受益金额、费用和找零。 [比特币核心 - 硬币选择实现] [比特币核心 RPC - fundrawtransaction] [比特币 Optech - 硬币选择]

HD钱包通常在外部分支上派生接受脚本并在内部分支上进行更改。 BIP44 将change=0 标记为外部,将change=1 标记为内部:例如,对于本机SegWit 帐户,m/84'/0'/0'/0/i 和m/84'/0'/0'/1/i 。这是一个应用约定,而不是共识;描述符钱包可能有不同的政策。新的内部地址限制地址重用,而返回原地址有效但链接历史记录。 [BIP 32 — 分层确定性钱包] [BIP 44 — 多账户分层结构]

输出描述符结合了脚本类型、密钥、来源和指定所有权的派生通配符。 wpkh([fingerprint/84h/0h/0h]xpub…/0/*) 和 …/1/* 对描述接收更改; BIP389 允许多路径写入。内部标志选择要更改的描述符,它不会更改脚本本身。即使密钥存在,没有帐户信息、脚本类型和派生策略的种子可能会在刷新后使有效更改不可见。 [BIP 380 — 输出脚本描述符] [BIP 389 — 多路径描述符键表达式] [比特币核心 — 输出描述符]

该块包含值和 scriptPubKeys,而不是付款人、收款人或更改标签。钱包从衍生记录中识别出自己的变化,探索者只是猜测。输出顺序或“第二输出”规则不可靠。一笔交易可以没有零钱、一个、多个自控输出或多个参与者的输出。因此,零钱是与钱包相关的分类,而不是协议写入的属性。 【比特币开发者指南——交易】

常见的启发式方法将与输入相同脚本类型的输出、不讨人喜欢的舍入量、新地址或与输入的算术相对应的值指定为更改。它们通常用于具有两个输出的普通支付,但每个都有反例。 BIP78 Payjoin 有意打破通用输入、脚本类型和回合金额启发式; CoinJoin、批量和自转移进一步增加了模糊性。结果旨在具有一定程度的确定性和支持,而不是协议证明状态。 [BIP 78 — Payjoin] [Meiklejohn 等人。 ——一把比特币]

Dust 是节点的中继策略,根据输出类型、未来支出的预计规模以及可调整的 Dust 中继费率计算得出;这不是普遍的聪计数或共识禁令。当零钱的创造和随后的花费超过其价值时,钱包可能会拒绝高高在上的零钱。经济限制取决于当前和长期的费用以及脚本的大小。抑制变更会增加今天的费用,变更太少可能会陷入困境。 【比特币核心——交易中继政策】

PSBT 中,输出 BIP32 派生允许硬件或离线签名者派生建议的输出并验证返回到相同的钱包策略。 BIP174 描述了单密钥和多重签名的检测;对于多重签名,匹配单个本地密钥是不够的。恶意协调员可以用自己的输出替换更改,或者以高昂的费用隐藏其余部分。签名者必须在可信显示屏上验证接收者、总费用和每项声明的更改。 [BIP 174——部分签名的比特币交易格式]

费用替代改变了未确认交易的经济性。 Bitcoin Core中的bumpfee可以通过减少找零、增加输入或创造找零来支付更高的费用;在低于政策或经济中间层变化之后,它就会消失。花费未经确认的找零会产生依赖于父代替换的后代,并且 CPFP 使用钱包控制的输出来增加包费率。在解决替换之前,不要考虑未确认的 txid/outpoint 最终。 [比特币核心 RPC——bumpfee]

完全恢复需要种子或签名密钥以及接收/内部描述符、密钥来源、帐户、网络、脚本策略、派生范围和足够旧的扫描开始。缺少 /1/* 通常会截断余额,因为找不到更改。对于多重签名,请在两个分支上保留所有共同签名者 xpub、阈值和排序。通过匹配已知的接收/更改脚本、重建 UTXO、创建 PSBT 并验证每个签名者的更改来测试恢复。 [BIP 32 — 分层确定性钱包] [BIP 380 — 输出脚本描述符] [BIP 389 — 多路径描述符关键表达式]

要获得更完整的理解,请将本词条与以下词条结合阅读: 比特币地址, UTXO, Coin Control, 钱包, Coin Selection, HD Wallet. 反向关联还来自: 比特币地址, Coin Control, Bitcoin 隐私, 假名性.

DOC · 001Bitcoin Developer Guide — Transactions文档DOC · 002BIP 32 — Hierarchical Deterministic Wallets规范DOC · 003BIP 44 — Multi-Account Hierarchy规范DOC · 004BIP 78 — Payjoin规范DOC · 005BIP 174 — Partially Signed Bitcoin Transaction Format规范DOC · 006BIP 380 — Output Script Descriptors规范DOC · 007BIP 389 — Multipath Descriptor Key Expressions规范DOC · 008Bitcoin Core — Output Descriptors文档DOC · 009Bitcoin Core — Coin Selection Implementation文档DOC · 010Bitcoin Core RPC — fundrawtransaction文档DOC · 011Bitcoin Core RPC — bumpfee文档DOC · 012Bitcoin Core — Transaction Relay Policy文档DOC · 013Bitcoin Optech — Coin Selection文档DOC · 014Meiklejohn et al. — A Fistful of Bitcoins文档
复核于2026年8月1日来源优先 · 非投资建议