区块链 · 数字资产知识 · 行业资讯
文章库关于本站

区块链基础

UTXO区块链模型入门|输入、输出和找零如何配合

摘要

比特币钱包展示一个余额,底层却可能对应多笔尚未花费的交易输出。用一笔包含付款、找零和手续费的假设交易,可以看清UTXO模型怎样组织账本。

utxo区块链模型的科技主题配图

余额背后可能是一组可花费输出

UTXO是“未花费交易输出”的缩写。在比特币里,一笔普通交易的输入引用此前的输出,新的输出则规定金额及后续花费条件。钱包把自己能够管理的相关输出整理后,显示成用户熟悉的余额。

这与账户里直接记录一个可增减的数字不同。一次到账可以形成一个输出,多次到账也可能积累多个输出;它们的金额、确认情况和花费条件未必相同。

输入需要指明此前哪一笔输出

定位一个输出,通常需要原交易的交易标识和该输出在交易中的序号。序号不可省略,因为同一笔交易可以同时产生多个输出。花费时还要满足对应脚本条件,并不是知道交易标识就能使用其中的资产。

在有效链上,一个输出不能被重复花费。普通交易把选中的旧输出作为整体消耗,再创建新的输出;不会在旧输出上直接划掉一部分金额,让剩余部分继续留在那里。

区块链交易确认流程的科技主题配图

付款与找零可以在同一笔交易完成

假设钱包选中0.006和0.004 BTC两个输出,总输入为0.010 BTC。本次希望支付0.007 BTC,并假设手续费为0.0001 BTC,那么可以产生两个新输出:0.007 BTC给收款方,0.0029 BTC作为找零回到自己控制的地址。

这里的金额只用于解释算术,不是当前手续费建议。旧的两个输出被花费后,找零成为一个新的输出。账面减少的是付款和手续费,而不是因为选中了两个输入,就把全部输入金额都交给收款人。

手续费不是按付款金额简单抽成

对普通比特币交易而言,输入金额总和减去输出金额总和,就是这笔交易的手续费。钱包在构造交易时,需要同时考虑支付金额、可选输入、找零与费率,而不是只比较想转出多少钱。

费率常以每虚拟字节多少聪表达。输入和输出的数量、类型会影响交易体积,因此金额相同的两笔付款,所需费用也可能不同。理解这一点有助于读懂费用估算,但不意味着应随意手工修改钱包选币结果。

查看账单时把三类金额分开

核对交易时,先看输入引用,再看每个输出的金额与去向,最后核对差额。对自己的钱包,还应确认哪些输出属于付款、哪些可能是找零。陌生人的交易不能仅凭输出顺序就断定身份和用途,钱包展示也可能采用不同排版。

UTXO是理解记录结构的方法,不是交易收益策略。本文说明的是普通交易;矿工创建区块补贴的特殊交易具有额外规则,不能把普通输入输出的讲解直接套用过去。

← 返回全部文章

延伸阅读 · 相关栏目

区块链基础技术原理数字资产知识资料与核验