比特币的交易确认

A君给B君转1个比特币,除了要输入交易金额1个比特币外,还需要设置一定量的矿工费,在输入秘钥并点击发送之后,需等待交易打包和6个区块确认,才能完成这笔转账,而这个过程大概需要花费30分钟~1小时。

那么这个交易确认一个什么样的过程呢?为何需要6个区块确认?
比特币交易确认过程
1
钱包创建交易
钱包软件通过收集UTXO、 提供正确的解锁脚本、 构造支付给接收者的输出这一系列的方式来创建交易。 产生的交易随后将被发送到比特币网络临近的节点, 从而使得该交易能够在整个比特币网络中传播。
2交易独立效验
每一个收到交易的比特币节点将会首先验证该交易,有效的交易将被传递到临近的节点,这将确保只有有效的交易才会在网络中传播, 而无效的交易将会在第一个节点处就被废弃。
3验证的交易添加到交易地
验证交易后, 比特币节点会将这些交易添加到自己的交易池, 用来暂存尚未被加入到区块的交易记录。
4节点确认交易
假设有个比特币网络节点A,其收集到了区块277,314。
接下来A节点做两件事:1.尝试挖掘新区块;2.监听其他节点是否挖出新的区块。 如果A节点监听到了区块277315,则标志着277,315区块竞争结束。与此同时开启区块277,316的竞赛。


A节点在接收并验证区块277,315后,会检查内存池中的全部交易, 移除已经在区块277,315中出现过的交易记录,确保任何留在内存池中的交易都是未确认的,等待被记录到新区块中,而被移除的交易记录获得一次确认交易。把包含在区块内且被添加到区块链上的交易称为确认交易。

6个确认
比特币网络上有很多节点,假设B和C节点在短时间差内都计算出工作量证明解,然后把自己挖到的区块传播到网络中,先传播给邻近节点,而后传播到整个网络。

B和C矿工的区块数据是不一样的,但都是正确的,因此在这一刻出现了两个都满足要求的不同区块,B和C附近进的D、E、F等等矿工在监听到这个两个区块时,是有先后顺序区别的。怎么办,先入为主,节点把先监听的区块复制过来,然后开启新区块的挖矿工作。


那这个时候不同节点,同时有不同版本的区块链,而这两个版本的区块链,都被矿工们继续开采。但是两个版本的区块链其增长速是不一样的,总有一条链的长度要超过另一条链。当D、E、F等等矿工发现全网络中有一个条更长链的时候,他们会抛弃当前较短的链,转到更长链上进行挖矿。

而那些被矿工成功挖掘的块,因为不是在最长链上而被抛弃了,他们叫过时块。这些过时块中的数据,又需要等待重新被写入区块中。


当一笔交易获得6个区块确认后,从而以确认该交易是在最长分支的区块链里,不可篡改,此时阿呆才能够花费小星转他的比特币。

猜你喜欢

转载自blog.csdn.net/weixin_42517554/article/details/80774149