如何在比特币中处理假链?

How is a fake chain handled in bitcoin?

我想知道 bitcoin/crypto 中是如何处理以下场景的: 假设 evilminer 拥有一个硬币的 10% 的采矿能力,他在真实链从区块高度 900 增长到 1000 时秘密地开采区块。他从一个伪造的区块 995 开始并在区块 1005 停止。在区块高度 1000(真实链)他发布他的假 chain.A 节点现在将 request/get 下一个区块。它现在会从 evilminer 获得区块编号 1001。

这个节点会用它做什么?我想知道 evilminer 制作的链是否证明错误或正确,它必须下载块 1000 到 95 才能最终看到块 95 是假的。

这是正确的还是有其他节点处理它的方式?

你所说的情况是绝对不会出现的。

  1. 如果你想让你的链最长,那么你需要拥有50%以上的算力,这样在未来的某个时候你最终会赶上主链,超越它。追赶的速度将取决于你有多少超过 50%。这种攻击之所以有效,是因为通过这种方式,您在新区块的生成速度上击败了任何其他潜在矿工,因此您总是比网络上的任何其他人更快地生成区块,从而确保您的链将变得最长。

  2. 所以你的邪恶矿工,假设他有 10% 的挖矿能力,将永远无法将他的链的长度推进到主链之外。唯一可能的方法是使用难度较低的随机数来加速区块生产,但这样的区块会被网络中的任何其他节点认为其无效而拒绝。

因此,简而言之,邪恶矿工让其他节点接受他的区块的唯一方法就是让他的链最长,而且只有当他拥有超过 50% 的网络挖矿能力时才能做到这一点。

编辑 1 : 考虑网络中每个参与者的计算能力,并假设当你将这些加起来时,你得到 100。现在如果你有这个总数的 10%,这意味着你找到一个新区块的可能性高于其他计算较少的人比你强。但是,这并不能保证您一定会首先找到随机数。

找到满足难度的hash要靠概率。您强行通过大量数字,直到您的哈希值满足难度。可能只有总计算能力的 0.5% 的人最先找到随机数。但是,处理这些数字的速度越快,您首先找到随机数的机会就越大。

因此,如果您以某种方式拥有超过 50% 的总计算能力,这意味着您处理这些哈希的速度比其他任何人都快,因此这增加了您在大多数情况下最先找到随机数的可能性。

另外,这个寻找随机数的过程,对每个区块都会重复。所以每个区块都得重新做一遍