This article has been translated from English to Simplified Chinese.

比特币回答了“保留哪笔交易”的问题。

比特币回答这个问题的方式非常巧妙。

具体如下

比特币网络上的每个节点都会共享新交易的信息。

在比特币网络上进行的交易不会直接添加到区块链中。它们首先被收集并存储在所谓的“内存池”中。

每台运行比特币程序的计算机都会创建一个名为“内存池”的 交易临时存储区。简称“内存池”。

每个比特币节点都有自己的内存池,用于存储其检查并认为有效的交易队列。Bitcoin Node's Memory Pool

广义上来说,内存池是一个有序的队列,交易在添加到新创建的区块之前,会先在此存储和排序

  • 内存池保存“新鲜”或未经确认的交易(以单个交易的形式存储)。
  • 区块链保存的是“已归档”或已确认的交易(打包为“区块”)。

所有比特币交易都是“未确认”交易,在“确认”并添加到区块链之前,它们只存在于内存池中。

在比特币网络中,所有完整节点都有一个内存池。

All Bitcoin nodes have a memory pool

假设你在网络的这一侧发起一笔交易(紫色交易)。

然后走到这边,使用相同的比特币,将红色交易插入这台电脑。

如果你注意到,这两笔交易并没有直接写入文件。这两笔交易只是先存储在每台计算机的内存池中。

Both transactions are stored in memory pool

因此,这两笔交易将在网络中传播。

这台电脑将拒绝红色交易,因为它们已经收到了紫色交易

Transaction is rejected from mempool

所以现在两个事务都在网络上。

但它们尚未写入文件,因此文件仍未更新

Both transactions are waiting in mempool

接下来会发生什么?所有这些计算机都会工作,并尝试将它们在内存池中的事务写入文件

它们会争相成为第一个将内存池中的事务添加到文件顶部。Bitcoin mining nodes compete

假设这台电脑(黄色)是第一个能够做到这一点的。

Bitcoin node first to add transaction to blockchain

将内存池中的事务添加到文件中

Bitcoin nodes adds transaction to blockchain

完成后……

将把文件的更新副本传递给与其连接的其他人……

Bitcoin node shares blockchain copy

然后他们更新自己的副本

在下面的图中,这个节点接收了包含紫色交易的更新文件,该交易花费了相同的比特币。

Bitcoin node kicks out conflicting transaction

内存池中冲突的红色交易会怎样?

由于紫色交易已经使用了相同的比特币,它将把红色交易从内存池中踢出!

然后,该节点将传递更新的文件。

其他节点也会做同样的事情……它会从内存池中剔除任何冲突的交易。

All Bitcoin nodes kick out conflicting transaction

现在所有的计算机都拥有更新的文件。

这就是解决网络中两个冲突事务的方法。

你实际上只是为待处理事务提供了一个“等待区”(内存池),各个节点相互竞争,试图将各自的事务添加到文件中

在这个例子中,紫色的人会收到比特币……Bitcoin transaction is successful

但是,当您试图用同一笔比特币与红衣男子交易时,就会失败。Bitcoin transaction fails

节点竞争将交易从内存池中写入文件(“区块链”)的过程称为“挖矿”。