VIEW THIS AS

Auto mode follows the Route Engine until you choose a viewpoint.

YOU ARE HERE

ROUTE CHECK

CONNECTED TO

WHAT NEXT

Use the canonical route for this room, or HELP if you are unsure.

UTXO 交易与找零输出:跟踪记录,而不只看余额

Three students in school uniforms work through open books at a classroom table, with textbooks and stationery nearby and study notes on the whiteboard behind them.

English version · 区块链学习导航 · 上一篇

区块链学习 · 文章 BC032

三名学生在教室桌旁一起阅读书本,身边放有课本和文具。
学习场景配图;不代表照片中的学生正在学习区块链。

在 UTXO 模型中,交易指明具体未花费输出,满足其花费条件,并消耗它们来创建新输出。钱包显示的余额,是相关输出的汇总,不一定是交易直接减去金额的单一账户数值。

本篇使用虚构整数点数,让记录变化清楚可见。你将消耗两个具名输出,分配接收者输出、找零输出与费用差额,再检查哪些记录仍可花费。练习不涉及真实币、密钥、地址或网络交易。

选择适合你的阅读路线

本篇目录

先看输出标识与三记录账本,再计算主要交易并检查前后 UTXO 集合。后面的失败案例解释:总价值足够和签名有效,为什么本身还不是完整交易检查。

练习只考虑普通、已经可以花费的输入,不讨论特殊发行交易与成熟规则。比特币是明确的技术参考,但小额点数和符号条件只是教学对象,不是有效比特币交易编码。

返回目录 · 下一节

1. UTXO 是一条具体输出记录

UTXO 指未花费交易输出。关键词是“输出”:它是先前交易创建的具体结果,具有数值与花费条件。在后续已接受交易按规则消耗它之前,它仍然可用。

比特币输入通过交易标识和输出索引,指出一个旧输出。因此,同一交易产生的两个输出也是不同记录。单凭地址,不能唯一识别一项可花费输出。

比特币交易指南介绍了这种输入输出结构,并把钱包余额解释为相关未花费输出之和。文中有较早的脚本形式例子;本篇采用基本记录模型,不声称那些例子列出了当前全部输出类型。

工作表中的 alpha:0,表示虚构交易 alpha 的索引 0 输出;beta:1 表示虚构交易 beta 的索引 1 输出。这些是符号名字,不是真实交易哈希。

标识告诉我们检查哪条记录,却不能单独证明记录存在、仍未花费,或提交者有权花费。这些需要另外检查。

返回目录 · 下一节

2. 初始账本包含三个输出

教学账本提供三项普通未花费输出,K 可以依据简化条件花费它们:

  • alpha:0 的数值为 7,要求题设 K 授权。
  • beta:1 的数值为 5,要求同样的简化授权。
  • gamma:0 的数值为 4,也要求 K 授权。

相关总量为 7+5+4=16 点。这是这些记录对应的钱包式汇总,工作表里并不存在一个数值为 16 的单独 UTXO。

使用整数,是为了精确检查每个等式。这些不是价格、汇率或建议交易金额。练习假定三项记录都存在于所选前状态,且没有另外未建模的限制。

K 希望课堂交易为接收者 R 创建 9 点的新输出。题目另行规定费用差额为 1 点。任务是确定消耗哪些现有记录,以及剩余部分去哪里。

返回目录 · 下一节

3. 选择具名输入,不是抽象余额切片

主要交易选择 alpha:0 与 beta:1,输入总量为 7+5=12。gamma:0 未被选择,因此如果交易获接受,它原有的 4 点记录保持不变。

被选择的输入会作为记录整体消耗。交易不是只从 alpha 花掉 5 点,再把 alpha:0 改成剩余 2 点。如果有剩余价值需要继续由 K 花费,必须以新输出表示。

这就是找零的来源。它不是额外奖励,也不是自动出现在交易之外的退款。本例交易明确包含一项新输出,用来为 K 保留剩余部分。

其他输入选择,可以在规定政策下产生其他输出安排。本篇采用当前选择是为了便于检查算术,不是推荐真实钱包选币策略。实际选择可能涉及大小、隐私、政策及模型之外的其他约束。

返回目录 · 下一节

4. 分配接收者、找零与费用差额

所选输入总量为 12。交易创建索引 0 输出:数值 9,采用 R 的花费条件;以及索引 1 输出:数值 2,采用 K 的条件。输出总量为 11。

剩余差额为 12−11=1,本题把它作为交易费用。守恒等式是 12=9+2+1,每一点都得到解释,没有创造额外价值。

找零输出,是给 K 的 2 点记录;费用,是 1 点差额。混淆两者,会同时算错新 UTXO 集合及 K 仍能控制的价值。

在比特币普通交易模型中,费用由输入与输出金额之差推导,而不是一项标为“费用”的普通接收者输出。交易参考文档说明了理解这一区别所需的输入与输出结构。

虚构交易称为 first,其新输出分别为给 R 的 first:0,以及给 K 的 first:1。这些名字让后续花费路径容易跟踪,不是根据序列化字节算出的真实哈希。

返回目录 · 下一节

5. 接受后更新 UTXO 集合

交易之前,相关集合包含 alpha:0=7、beta:1=5、gamma:0=4。在题设状态中成功获接受后,alpha:0 与 beta:1 已花费,不能再作为未花费输入使用。

新的相关集合包含 gamma:0=4、采用 R 条件的 first:0=9,以及采用 K 条件的 first:1=2。K 的剩余汇总为 4+2=6,R 获得新 9 点输出,1 点费用差额解释了原来 16 点中的剩余部分。

注意 K 的余额减少 10,而不是 9:9 进入 R 的新输出,1 成为费用差额。算式是 16−9−1=6。未变的 gamma 记录与新的找零记录,共同形成剩余余额。

这次集合更新,以交易在指定历史中被接受为条件。构造或广播候选,本身不能证明其引用输出已经被已接受链消耗。

本算术练习不展开最终性与分支变化。真实应用需要把 UTXO 观察连接到相关链状态,而不是把待处理候选当成已确定历史。

返回目录 · 下一节

6. 把找零作为新输入花费

假设下一笔课堂交易花费 first:1,即 2 点找零输出。它不再引用 alpha:0 或 beta:1 里面所谓剩余的一部分,因为那些旧记录已被第一笔交易消耗。

第二笔交易规定接收者输出为 1 点,费用差额为 1 点。这个特定算式不需要正值找零输出:2=1+1。

第二笔交易获接受后,first:1 已花费。gamma:0 仍为 4,未被触碰,因为两笔交易都没有选择它。第二笔的接收者输出,又有自己的新标识与花费条件。

这个过程显示了图状结构:输入指向较早输出,输出以后又可以成为输入。显示汇总看似一个不断变化的数字,底层实际变化却是具体记录的创建与消耗。

例子不声称每个小额输出都能通过所有真实节点的转发政策。实际最小输出及费用政策,与抽象守恒练习不同,需要在相关系统中核对。

返回目录 · 下一节

7. 花费条件不只是所有权标签

“要求 K 授权”只是教学简化。真实输出可以规定条件,由适用脚本或验证规则检查是否满足。条件可能比在余额旁写一个人名复杂得多。

金额计算正确,不能满足缺失的花费条件。反过来,签名有效,也不能证明输出仍未花费或交易金额有效。授权与状态检查都必须通过。

满足输出条件所需的具体资料,取决于输出类型及协议规则。本篇不教授过时的通用脚本模板,也不要求读者构造真实解锁脚本。

“能够满足花费条件”,也不应被当成完整法律所有权判定。协议检查其定义的授权机制;现实权利与机构权限,可能需要其他证据。

本工作表把授权作为假设提供,让学习者集中分析记录身份和守恒。如果移除这个假设,仅凭算术不能批准交易。

返回目录 · 下一节

8. 四种无效候选

第一,候选把 alpha:0 列两次,仿佛它提供 14 点。这是两次引用同一输出。重复输入标识不会复制记录价值,不是合法增加总量的方法。

第二,first 已经消耗 alpha:0 后,另一个候选试图在同一已接受历史环境里再次花费 alpha:0。该记录已不再未花费,不能作为新输入使用。

第三,候选使用 alpha:0 与 beta:1,总量 12,却创建总计 13 的输出。它分配了超过输入的价值,在普通、非发行模型中违反守恒规则。

第四,候选金额完全平衡,却没有为所选记录提供有效 K 授权。即使等式成立,它仍不满足花费条件。

这些失败的原因分别是重复引用、引用已花费记录、输出超额和缺少授权。好的审查应记录实际失败检查,而不是把全部拒绝放进一个没有区别的错误类别。

返回目录 · 下一节

9. 汇总价值足够,不能回答全部选择问题

初始钱包式余额为 16,但由三条记录构成。仅说“使用我的余额”,并没有规定选择及输出构造。交易仍然需要真实对应的输入和输出。

假设课堂请求需要给接收者 15 点,并留 1 点费用差额。在相同资格假设下,全部三个输入总计 16,可以恰好支持该安排。只选 alpha 与 beta 则不够,尽管钱包整体显示 16。

真实钱包某些显示类别可能包含待处理、锁定、尚未成熟或其他不可用金额。本题通过明确普通可花费输入避开这些复杂性,但读者不应把每种显示余额都当成马上可选的价值。

钱包掌握的信息,也不一定等于完整网络状态。如果它缺少相关记录,或对某次花费的信息过时,显示值就未必支持用户的结论。状态环境与证据仍然重要。

返回目录 · 下一节

10. 输出身份与接收意图不同

first:0 的数值为 9,采用题设 R 条件;first:1 的数值为 2,采用 K 条件。把后者叫找零,是描述它在本交易中的角色,不代表它豁免普通输出规则。

如果构造的找零输出使用了非预期条件,算术仍可能平衡,结果却违背 K 的意图。守恒证明金额关系,不能证明接收者及找零条件就是用户想授权的内容。

同样,交易标识与输出索引可以区分记录,却不解释为什么创建某个输出。应用可能需要额外标签与证据,把输出关联到请求、账单或课堂用途。

本非金融练习同时检查数值与给定 K/R 条件。这把 UTXO 机械计算,与此前“构造指令必须匹配用户意图”的课程连接起来。

返回目录 · 下一节

11. 隐私与政策需要自己的分析

在一笔交易中合并输出,可能暴露观察者会尝试解释的关系。但题设直接提供 K 控制关系,不代表每笔真实多输入交易都属于同一个人。协作构造与服务安排会使归因复杂化。

同样,识别某个输出可能是找零,往往是一种推断,不是直接观察到的所有权事实。工作表明确标找零是为算术清楚;真实分析者不应把不确定启发式当成已验证身份。

转发政策与费用估计,也不同于核心记录模型。数学上平衡的候选仍可能违反某项相关规则或政策。本篇不规定真实费率、输出大小或交易构造设置。

课程刻意划清范围:先理解消耗、创建和守恒,再分别学习具体系统政策及隐私假设。简单例子不应悄悄变成真实交易建议。

返回目录 · 下一节

12. 六道练习与答案

  1. K 初始 16 点汇总由几个 UTXO 组成?三个:alpha:0、beta:1、gamma:0。
  2. 第一笔交易消耗哪些记录?alpha:0 与 beta:1,总计 12;gamma:0 未被选择。
  3. 接收者输出为 9、费用差额为 1,需要多少找零?2,因为 12−9−1=2。
  4. 第一笔交易后,K 的题设条件下还剩多少?6,即 gamma:0 的 4 加 first:1 的 2。
  5. 第二笔交易能否花费“alpha:0 里面没用完的两点”?不能。alpha:0 已被消耗,找零存在于新输出 first:1。
  6. 普通输入总计 12,输出总计 13,正确签名能使候选有效吗?不能,它违反模型价值守恒条件。

扩展练习:保留第一笔交易的输入和接收者输出,却省略找零输出。此时输出总量为 9,差额变成 3,而非原计划的 1。在抽象普通输入模型下,省略的剩余部分不会自动回到 K。它说明找零构造必须明确,不是建议构造或提交这种交易。

返回目录 · 下一节

13. 一张简洁的 UTXO 审查卡

记录每个所选输出引用、数值、相关前状态中的未花费状态,以及满足花费条件的证据。检查没有任何引用重复出现。

接着记录每个新输出的数值与条件。分别求输入和输出总和,推导费用差额,并核对接收者和找零安排是否符合意图。不能仅从算术推断角色正确。

最后,区分候选计算与已接受状态证据。签名草稿、广播确认和观察到的已接受交易,是不同对象。UTXO 集合更新属于实际已接受历史环境。

返回目录 · 下一节

14. 常见问题

找零与费用相同吗?

不同。找零是按预期花费条件保留价值的新输出;普通模型里的费用,是输入与输出总量之差。

花费输出,会减少它原先存储的数值吗?

本模型中,所选输出作为记录被消耗。保留价值放入新输出,不是把旧输出编辑成较小余数。

钱包余额会识别一个单独输出吗?

不会。它可以汇总多个输出,也可能显示不同余额类别。交易需要具体合格输入记录。

所有区块链都采用 UTXO 吗?

不是。其他系统使用账户或其他状态模型。下一课研究账户计数器,不把它与输出引用混为一谈。

返回目录 · 下一节

资料来源与下一步学习

主要资料于新加坡时间 2026 年 10 月 12 日核对:比特币交易指南与交易参考。本篇只采用已说明的普通输入输出、输出引用及费用差额概念,不把历史脚本例子和政策列表当成完整当前实现指南。

全部符号标识、整数点数与花费条件,均为原创教学材料。下一步比较账户状态与交易 nonce:每账户计数器如何约束有序指令,以及它为什么与识别具体未花费输出承担不同角色。

返回目录