比特币回答了这个问题,“要保留哪笔交易?”
比特币回答这个问题的方式非常棒。
就是这样…
比特币网络上的每个节点都共享有关新交易的信息。
在比特币网络上进行的交易不会直接添加到区块链中。它们首先被收集并存储在所谓的“内存池”中。
每台运行比特币程序的计算机都会为交易创建一个临时存储区域,称为“内存池”。也简称为“内存池”。
每个比特币节点都有自己的内存池,它存储已检查并认为有效的交易队列。
从广义上讲,内存池是一个有组织的队列,其中交易在添加到新创建的块之前被存储和排序。
- 内存池保存“新鲜”或未确认的交易(存储为单个交易)。
- 区块链保存“存档”或确认的交易(打包在“块”中)。
所有比特币交易都是简单的“未确认”交易,仅在“确认”并添加到区块链之前存在于内存池中。
在比特币网络中,所有全节点都有一个内存池。
假设您在网络的这一侧发起交易(紫色交易)。
然后到这里,用同样的比特币,在这台电脑里插入红色的交易。
如果您注意到,这两个事务不会直接写入文件。两个事务首先简单地存储在每台计算机的内存池中。
因此,这两个交易都将在网络中传播。
这台计算机将拒绝红色交易,因为他们已经收到了紫色交易。
所以现在两个交易都在网络上。
但是它们还没有写入文件,所以文件还没有更新。
然后会发生的是所有这些计算机都将工作并尝试将它们的事务从它们的内存池中获取到文件中。
假设这台计算机(黄色)是第一台能够做到这一点的计算机。
它将内存池中的事务添加到文件中:
当它完成时……
它会将他们更新的文件副本传递给他们连接到的其他所有人……。
他们将更新他们的副本。
在下图中,此节点在此处接收更新的文件,其中包含花费相同比特币的紫色交易。
其内存池中的冲突红色事务会发生什么?
由于紫色交易中已经使用了相同的比特币,它将从他们的内存池中踢出红色交易!
然后该节点将传递更新的文件。
其他节点也会做同样的事情……它会踢出内存池中的任何冲突事务。
现在所有计算机都有更新的文件。
这就是您解决网络上有两个冲突交易问题的方法。
您实际上只有一个“等待区”(内存池)用于待处理的交易,并且节点竞争并尝试将它们的交易添加到文件中。
在这个例子中,紫色的家伙会收到比特币……
但是当你阴暗的自我试图与红色家伙花费相同的比特币时,它就行不通了。
节点竞争尝试将其事务从其内存池中获取到文件(“区块链”)的过程称为MINING。
[…] 在这里,我们再次拥有包含示例中提到的冲突交易的比特币网络。从上一课开始。 […]