@saurabh 提供了非常好的解释,
这是一个复杂的主题,需要详细的解释,请阅读更多有关不同共识和工作量证明算法的内容,以真正了解区块链的美妙之处。互联网上有大量优秀的博客供您探索。让我尝试以我对分布式账本有限的知识为您提供一个简短的总结。
区块链实际上理论上是防篡改的(有人仍然可以对区块链进行51%攻击,但这需要巨大的算力)
为什么会这样呢?两个原因:
每个区块都有唯一的加密指纹
共识协议,网络中的节点就共享历史达成一致的过程。
指纹(称为哈希)最初需要大量的计算时间和能量来生成(此时间和能量的增加或减少取决于矿工的总计算能力)。因此,它可以证明将区块添加到区块链的矿工进行了计算工作以获得比特币奖励(因此,据说比特币使用“工作量证明”协议)。该哈希只是该块中包含的所有交易的默克尔哈希。它也可以用作一种密封,因为更改块需要生成新的哈希值。然而,验证哈希值是否与其块匹配很容易,一旦节点完成验证,它们就会使用新块更新各自的区块链副本。这就是共识协议。
最后一个安全要素是哈希值还充当区块链中的链接:每个块都包含前一个块的唯一哈希值。因此,如果您想追溯更改分类帐中的条目,您不仅必须为其所在的块计算新的哈希值,还必须为每个后续块计算新的哈希值。而且您必须比其他节点向链添加新块的速度更快(平均每 10 分钟添加一个新块)。因此,除非您拥有比其余节点组合更强大的计算机(即使如此,也不能保证成功),所有更改都需要在 10 分钟内完成,您添加的任何块都会与现有块发生冲突,其他节点将自动拒绝您的更改。这就是区块链防篡改或“不可变”的原因。
如果您部署自己的带有工作量证明的区块链会发生什么?这实际上取决于您的区块链上已有多少块以及工作量证明算法的难度。如果复杂性较低,并且很少有矿工竞争下一个区块,那么任何具有更多计算能力的人都可以将所有矿工组合起来创建自己的有效分叉,并进行适合他们需求的交易。
我想操纵第 n-10 个区块的交易?
假设此时比特币区块链中的区块数量为 n,并且您想要在第 n-10 个区块(即 10 个区块之前)更改交易。
矿工们将竞争下一个区块第n+1个区块,时间范围约为10分钟,你也可以竞争,但要获胜你必须拥有与矿工相比大约51200544 TH/s的计算能力。
从概率上来说,如果你有 1TH/s 的挖矿能力,你解决一个区块的机会是 1/ 51200544,假设计算 1TH/s 的硬件成本约为 1000$,只需计算一下成本即可。
如前所述,每个区块的标头中都包含一个默克尔哈希值,而该哈希值又取决于该区块中包含的每笔交易以及需要解决的难度(矿工计算的内容)。该默克尔根包含在下一个区块的标头中。
所以如果你想改变第n-10个区块的一笔交易或多笔交易,你需要对第n-10个区块做两件事。
1. 当交易发生变化时,重新计算merkle root。
2、解决困难。
由于merkle根发生了变化,您需要解决该块之后的每个块直到此时此刻的难度,以使其成为有效分支。
完成这一切的时间框架仅为 10 分钟,因为在接下来的 10 分钟内,链上的矿工将推送另一个区块。