您如何验证 blockchain/DLT 未被篡改?

How can you verify that a blockchain/DLT has not been tampered with?

我了解分布式账本如何使用链式链表数据模型确保完整性,其中每个块都链接到它之前的所有块。

我还了解在 PoW/PoS/PoET/(在此插入任何无信任共识机制)上下文中,验证过程如何使恶意(或一群)个人难以篡改区块,因为他们没有必要的向所有网络成员广播分类帐实例的资源,以便他们将其版本更新为错误版本。

我的问题是,如果有人确实设法更改了一个块,完整性检查过程是否会发生?它是验证机制的实际部分吗?如果是,它在历史上走了多远? 是否有必要验证区块的完整性,即总共 10000 个区块中的第 500 个区块,如果是这样,我该怎么做?我是否需要从区块 10000 开始验证所有区块直到区块 500?

首先,由于向所有节点广播错误账本的资源短缺,篡改区块并非几乎不可能。广播不一定是资源密集型的。这是一个您只需触发的连锁反应。篡改区块链块的挑战来自于重新计算所有连续块(被篡改之后的块)的有效哈希值(满足块难度级别)的困难。因为改变一个块会改变它的哈希值,这又会改变下一个块的先前哈希值属性,从而使其先前正确的哈希值无效,依此类推直到最新的块。如果说最新的块索引是 1000。如果你篡改第 990 个块。这意味着您将不得不重新挖掘(通过随机更改 nonce 值重新计算有效哈希)块从 990 到 1000。这本身就很难做到。但是说你以某种方式设法做到了这一点,但是当你广播你更新的区块链时,已经有其他矿工开采了其他区块(索引号为 1001、1002)。所以你的不会是最长的有效区块链,因此会被拒绝。

根据这篇文章,当一个新块被广播到网络时,其交易的完整性将根据交易历史进行验证和验证。只有当一个恶意的较长的区块链被广播到网络时,才会出现完整性检查的问题。在这种情况下,协议强制节点接受这条最长的链。请注意,这条最长的链保持其自身的完整性并自行验证。但它是根据它自己的真理版本来验证的。不过请注意,这只有在攻击者的哈希能力至少为网络哈希能力的 51% 时才有可能。而这种力量被认为几乎是不可能的。 https://medium.com/coinmonks/what-is-a-51-attack-or-double-spend-attack-aa108db63474

My question is, if let's say some one does manage to change a block, does an integrity checking process ever happen?

更改块哪里?如果您的意思是更改我计算机中的块副本,他们会怎么做?闯入我的电脑?这对其他人有何影响?

Is it an actual part of the verification mechanism and if so, how far in history does it go? Is it ever necessary to verify the integrity of i.e. block number 500 out of a total of 10000 and if so, how do I do that? Do I need to start from block 10000 and verify all blocks from there until block 500?

大多数区块链的通常规则是,每个完整节点都会检查它收到的每个块,以确保它遵循每个系统规则的有效性。

虽然您可以重新检查您已经检查过的每个块以确保您的特定副本未被篡改,但这通常没有任何意义。可以篡改您本地块存储的人也可以篡改您的本地检查代码。所以这种检查通常不会提供任何额外的安全性。