假如A给B发送1个比特币的交易,那么需要6个“确认”,这个0.999个比特币才能到达B的账户并可以使用。为什么是0.999个而不是1个比特币呢,那0.001个比特币是用来支付交易手续费的。
那么这个确认一个什么样的过程呢?
钱包创建交易
钱包软件通过收集UTXO、 提供正确的解锁脚本、构造支付给接收者的输出这一系列的方式来创建交易。产生的交易随后将被发送到比特币网络临近的节点,从而使得该交易能够在整个比特币网络中传播。
交易独立校验
每一个收到交易的比特币节点将会首先验证该交易,有效的交易将被传递到临近的节点,这将确保只有有效的交易才会在网络中传播, 而无效的交易将会在第一个节点处就被废弃。
验证的交易添加到交易池
验证交易后, 比特币节点会将这些交易添加到自己的交易池, 用来暂存尚未被加入到区块的交易记录。
节点确认交易
假如D节点的区块链已经收集到了区块277,314, 那么D节点会继续监听网络上的交易, 在尝试挖掘新区块的同时, 也监听着由其他节点发现的区块。 当D节点在挖掘新区块时, 它从比特币网络收到了区块277,315。 这个区块的到来标志着终结了产出区277,315竞赛, 与此同时也是产出区块277,316竞赛的开始。
D节点在接收并验证区块277,315后,会检查内存池中的全部交易, 移除已经在区块277,315中出现过的交易记录,确保任何留在内存池中的交易都是未确认的,等待被记录到新区块中,而被移除的交易记录获得一次“确认”交易。
把包含在区块内且被添加到区块链上的交易称为“确认”交易, 交易经过“确认”之后, 当达到6个“确认”数后,认为交易是安全不可更改的,新的拥有者才能够花费他在交易中得到的比特币。
比特币交易没有过期和超时
一笔交易现在有效,那么它就永远有效。如果一笔交易只在全网广播了一次, 那么它只会保存在一个挖矿节点的内存中,一旦这个节点重新启动, 内存池中的数据就会被完全擦除。如果一笔有效交易被传播到了全网,但长时间未处理,它将从挖矿节点的内存池中消失。
交易本应该在一段时间内被处理而实际没有,那么钱包软件应该重新发送交易或重新支付更高的矿工费。
领取专属 10元无门槛券
私享最新 技术干货