【每日一题】比特币的交易是怎样的一个

资讯 6个月前 manoon
0

抛开代码,我们来看一下比特币交易的流程:

如下图,A、B、C、D四个人,都有比特币钱包钱包私钥由自己持有。钱包地址(由各自的钱包公钥生成)在比特币网络上公开,用于 UTXO 锁定和验证

最初,A给C0.7BTC,在比特币网络中的记录为UTXO(1):A给C0.7BTC;B给C0.5BTC,在记录中比特币网络中为UTXO(2):乙给丙0.5BTC。此时C的比特币钱包账户余额为这两个UTXO之和,C的比特币总数= UTXO(1)+UTXO(2)=1.2BTC。如下图:

这一天,B从丁某处购买了一批货物,需要向丁某支付0.8BTC。C通过比特币网络向Ding转账比特币交易原理,但是C现有的两个UTXO小于0.8BTC,需要两个UTXO一起使用,类似于现金交易:向Ding支付1.2BTC, Ding 发现 Give C0.4BTC。但在比特币网络中,这项变革工作是由 C 本人发起的。

整个交易流程如下:

C 通过比特币钱包准备交易信息。交易信息包括输入输出两部分。输入为UTXO(1)和UTXO(2)),还有C的钱包私钥签名(因为UTXO(1)和UTXO(2)都被C的钱包公开锁了) key,使用前需要用C的私钥签名解锁

交易的输出是一个未确认的UTXO(3):C给丁0.8BTC。这个新的UTXO指向D的钱包公钥。交易确认后,会被D的钱包公钥锁定钥匙。

这时候还有0.4BTC需要改成C,所以需要输出一个未确认的UTXO(4):C给C0.3999BTC,这个新的UTXO指向C的钱包公钥,交易确认后,会被C的钱包公钥锁定。

为什么变化量不是0.4BTC?由于比特币网络的要求,交易转账需要向比特币网络支付交易费用。剩余的0.0001BTC 不指向任何钱包公钥,将作为转账费用支付给打包交易的矿工(如未发现变化,所有剩余的未指定比特币将用作费用对于打包交易的矿工来说,但是目前的改签工作是钱包自动完成的,不用担心)。

交易信息准备好后,C的钱包验证交易合法(UTXO合法、签名合法、输入输出金额合法等)后,将交易广播到比特币网络。交易经过挖矿节点验证后,将交易打包(交易记录在比特币区块中)并广播到比特币网络,交易完成。

【每日一题】比特币的交易是怎样的一个

旧的 UTXO 被消耗掉,新的 UTXO 生效。这时D的钱包里有一个未使用的UTXO(3):C给丁0.8BTC,C的钱包有一个未使用的UTXO(4):C给C0.@ >3999BTC。

以上是一个比较抽象的比特币交易流程,涉及到比特币交易的构建、签名验证、节点验证、交易广播、加入挖矿节点内存池、矿工构建初步区块、最终区块确认的过程。后续将分别介绍,本文不再展开。

从这个抽象的交易过程中,我们可以发现比特币交易本质上是一堆UTXO的输入输出过程。随着旧的 UTXO 被消耗,新的 UTXO 产生比特币交易原理,一次又一次地完成比特币交易。交易过程受到非对称加密和散列算法的双重保护。比特币持有者可以安全地完成交易而不必担心身份泄露。交易过程中也会消耗一部分比特币,用于奖励打包交易的矿工。矿工很高兴完成自己维护比特币网络的任务。

版权声明:manoon 发表于 2021-11-11 5:57:14。
转载请注明:【每日一题】比特币的交易是怎样的一个 | 198区块链导航

暂无评论

暂无评论...