跳转到正文
buybitcoinsmart

术语表 /交易与手续费

交易输入

又称输入、TxIn。

交易输入是什么?
交易输入是一笔支付的一半,它指明您已拥有的某一枚特定的币,并证明您有权花费它,同时将其完全消耗。

每个输入都是一个指针加一份证明,其成本取决于所花费的币的类型:Taproot 币约为57.5虚拟字节,原生 SegWit 币约为68,传统(legacy)币约为148。由于输入总是被整个消耗,持有许多小额充币的钱包,为同一笔支付付出的费用高于持有一枚大额币的钱包。您收到的每一笔充币,都是日后需要付费的一个输入。

运作方式

一个输入有四个字段,其中只有一个是签名。

首先是输出点(outpoint),共36字节:包括创建该币的交易的 ID,以及该币在那笔交易输出列表中的位置。这就是指针,也是比特币可审计的原因,因为任何人都可以沿着它向前追溯到价值被创建的那个区块。

第二是脚本长度,第三是签名脚本,在较早的币类型中,它包含满足上一笔输出锁定条件的签名和公钥。SegWit 改变的是这些数据存放的位置,而不是数据的内容:对于 bc1 币,脚本字段为空,解锁材料转移到单独的见证部分,其中每个字节只计为四分之一个权重单位。密码学完全相同,计费只有四分之一。

第四是序列号,共4字节。它最初是为一种在内存池中替换交易的方案设计的,但该方案从未奏效,后来被改作他用。BIP68 赋予它相对时间锁的含义,闪电网络通道正是借此表示“可以花费,但须在144个区块之后”,小于0xfffffffe 的值还表示该交易可以被手续费更高的版本替换。

最让人意外的特性是消耗。输入是要么全花、要么不花。如果您持有一枚0.4 BTC 的币,想支付0.01 BTC,该输入会花掉整个0.4,钱包再创建一个找零输出,把剩余部分退还给您。不存在部分花费,也没有扣减某个金额的概念。

有一种输入比较特殊。币基交易(coinbase transaction)即向矿工支付的那笔交易,恰好有一个输入,其输出点不指向任何东西:32个零字节,索引为0xffffffff。它的脚本携带的是任意数据而不是签名,区块高度就记录在这里,创世区块中的那条留言等信息也写在这里。

在哪里会遇到它

在区块浏览器中,输入是左侧一列,也是您什么都没改、钱包的手续费估算却发生变化的原因。

在币控制界面中,它们就是那些复选框。选择一枚大额币而不是四枚小额币,就是一个输入和四个输入的差别,按每个输入68虚拟字节、费率20 sat/vB 计算,单笔支付约可节省4,080聪。

它们还会泄露信息。同一笔交易中的两个输入会让所有观察者知道,这两枚币由同一方控制,几乎所有区块链聚类分析都基于这一假设。因此,选择合并哪些输入,既是成本决策,也是隐私决策。

对于定期积累比特币的人,实用的结论是:把购买合并为更少的提币。每月提币一次,一年下来就有十二个输入在等待,其费用要等到您最终花费的那一天才结算,按届时市场收取的费率计算。

交易输入 vs 交易输出

输入是对过去的主张,输出是对未来的要约,同一份价值在其存续期间扮演这两种角色。它作为输出诞生,停留在未花费集合中,最后在花费它的那笔交易中作为输入消亡。真正重要的不对称是经济上的:输出创建成本低,每个为31至43字节,而输入花费成本高,每个为57.5至148虚拟字节。接收几乎不花钱,花费却要花真金白银,这恰恰与大多数人对支付网络计费方式的预期相反。

请勿混淆

常见问题

为什么我的钱包花费的币的总额大于我发送的金额?

因为输入不能被部分花费。花费一枚币就会将其全部消耗,所以钱包会选取足以覆盖您的支付金额和手续费的若干枚币,并通过一个找零输出把剩余部分退还给自己。

输入越多,交易就越贵吗?

是的,这是比特币手续费的主要决定因素。每增加一个原生 SegWit 输入,就增加约68虚拟字节,因此花费八枚小额币的一笔支付,其费用可能是花费一枚大额币的同一笔支付的数倍。

接着阅读

相关术语

交易与手续费中的更多术语

阅读本页英文版