如何在区块链中验证交易?

How a transaction is verified in a blockchain?

如果矿工 A 创建了一个包含交易 A 的区块,而矿工 B 大约同时创建了一个不包含交易 A 的区块,那么其他一些矿工将首先收到矿工 A 的区块,并且其他人将收到矿工 B 的区块。

如果矿工B的链增长速度快于矿工A的链,那么交易A将永远不会被接受(就像从未发生过一样)。那么,创建交易A的用户A如何通过区块链确定交易A是accepted/verified呢?

另外,是否有可能交易A在某个时候被区块链验证,然后在未来另一个不包含交易A的子链会增长得更快,从而拒绝交易A?

是否创建了所有矿工都应同意的时间检查点?

注意:由于区块链非常不同,我假设我们在谈论比特币。

如果第一个区块 B 被挖出,交易 A 将返回到节点的内存池(内存)中,并且有可能被包含在下一个区块中。如果交易未被开采,内存池将在 2 周后将其踢出。

不包含该区块的另一条链可能增长得更快,但可能性很小,因为每个区块平均需要 10 分钟,并且矿工被激励在主链(而不是分叉链)上工作,因此他们当主链挖出一个新区块时会立即切换。他们不会在分叉链上工作足够长的时间来超越网络,从而浪费时间和资源。它需要至少 51%(平均)的网络算力才能超过主链,称为 51% 攻击。这从未发生在比特币上,但发生在像比特币黄金这样的小型链上。