Odaily星球日报|科普:比特币的交易过程( 二 )


Odaily星球日报|科普:比特币的交易过程
文章图片
这天 , 丙向丁买了一批货物 , 需要向丁支付0.8BTC 。 丙通过比特币网络向丁转账 , 但丙现有的两个UTXO均不足0.8BTC , 需要将两个UTXO一起使用 , 类似现金交易:给丁支付1.2BTC , 丁找给丙0.4BTC 。 但在比特币网络中 , 这个找零的工作是由丙自己发起的 。
整个交易的流程如下:
丙通过比特币钱包准备交易信息 , 交易信息包括输入和输出两个部分 , 输入是UTXO(1)和UTXO(2) , 以及丙的钱包私钥签名(因为UTXO(1)和UTXO(2)均被丙的钱包公钥锁定 , 需要通过丙的私钥签名来解锁后 , 进行使用)
交易的输出是未确认的UTXO(3):丙给丁0.8BTC , 这个新的UTXO指向丁的钱包公钥 , 待交易确认后 , 将被丁的钱包公钥锁定 。
此时还有0.4BTC需要找零给丙 , 因此还需要输出一个未确认的UTXO(4):丙给丙0.3999BTC , 这个新的UTXO指向丙的钱包公钥 , 待交易确认后 , 将被丙的钱包公钥锁定 。
为什么找零的数额不是0.4BTC呢?因为比特币网络要求 , 交易转账 , 需要向比特币网络支付交易手续费 。 剩余0.0001BTC未指向任何钱包公钥 , 将作为转账手续费支付给打包这笔交易的矿工(如果未找零 , 剩余所有未指定的比特币将全部作为手续费给打包交易的矿工 , 不过目前找零工作都由钱包自动完成 , 不用担心) 。
【Odaily星球日报|科普:比特币的交易过程】交易信息准备完毕后 , 经过丙的钱包验证交易合法(UTXO合法 , 签名有效 , 输入输出金额有效等等)后 , 将交易广播到比特币网络中 , 由挖矿节点验证交易后 , 打包交易(将交易记入比特币区块中) , 并向比特币网络广播 , 交易完成 。
旧的UTXO被消耗 , 新的UTXO开始生效 , 此时丁的钱包里有一个未使用的UTXO(3):丙给丁0.8BTC , 丙的钱包里有一个未使用的UTXO(4):丙给丙0.3999BTC 。
Odaily星球日报|科普:比特币的交易过程
文章图片
以上是较为抽象的比特币交易的过程 , 有关比特币交易的构造 , 签名验证 , 节点验证 , 交易广播 , 加入挖矿节点mempool , 矿工构造预备区块 , 以及最终的出块确认的过程 , 后续会分别介绍 , 本篇不做展开 。
从这个抽象的交易过程 , 我们可以发现 , 比特币的交易实质上是一堆UTXO的输入和输出的过程 , 伴随旧的UTXO被消耗 , 新的UTXO产生 , 完成了一次又一次的比特币交易 。 交易的过程由非对称加密和哈希算法进行双重保护 , 比特币持有者可以放心完成交易而不必担心身份被泄露 , 交易过程中也消耗了一部分比特币 , 用于奖励打包交易的矿工 , 使矿工乐于完成自己维护比特币网络的任务 。