想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
2年前关闭。
Improve this question
昨天我读了一篇关于区块链的文章,据它说,区块链非常安全吗?我无法理解它的安全性?
区块链如何使数据安全甚至普通人也可以使用?
最佳答案
@saurabh提供了很好的解释,
这是一个复杂的主题,需要详细的解释,请阅读有关不同共识和工作量证明算法的更多信息,以实际了解区块链的美丽。互联网上有大量的好博客供您浏览。让我尝试为您提供我的分布式账本知识有限的简短摘要。
区块链实际上在理论上是防篡改的(仍然有人可以对区块链进行51%的攻击,但这需要巨大的计算能力)
为什么会这样呢?两个原因:
每个区块唯一的加密指纹
共识协议,网络中的节点就共享历史达成共识的过程。
指纹(称为哈希)最初需要花费大量的计算时间和精力(此时间和精力的增加或减少取决于矿工的总计算能力)。因此,这可以证明将区块添加到区块链中的矿工完成了计算工作来获得比特币奖励(因此,据说比特币使用了“工作量证明”协议)。此哈希只是此块中包含的所有交易的Merkle哈希。它也可以作为一种密封,因为更改块将需要生成新的哈希。但是,验证散列是否匹配其块很容易,并且一旦节点这样做,节点便会使用新块更新其各自的区块链副本。这是共识协议。
最终的安全性要素是,哈希还可以充当区块链中的链接:每个区块都包含前一个区块的唯一哈希。因此,如果您想追溯性地更改分类账中的条目,则不仅要为其所在的区块还要为每个后续区块计算一个新的哈希。而且您必须比其他节点向链中添加新块的速度更快(平均每10分钟添加一个新块)。因此,除非您拥有的计算机的功能比其余节点的总和还要强(即使那样,也不能保证成功),所有更改都需要在10分钟的时间内完成,否则您添加的任何块都会与现有的块冲突,其他节点将自动拒绝您的更改。这就是使区块链防篡改或“不可变”的原因。
如果您使用工作证明来部署自己的区块链会怎样?
这实际上取决于您的区块链上已经存在多少块以及工作量证明算法的难度。如果复杂度较低,并且几乎没有矿工在争夺下一个区块,那么将所有矿工加在一起拥有更高计算能力的任何人都可以制定自己的有效分叉,并进行适合其需求的交易。
我想在第n-10块操作交易吗?
可以说,截至目前,比特币区块链中的区块数量为n,而您想在第n-10个区块处更改交易,即回溯10个区块。
矿工将竞争将下一个区块放在第n + 1个区块上,该区块的时长约为10分钟,您也可以竞争,但要赢得胜利,与矿工相比,您必须具有计算能力,约为51200544 TH / s。
概率地讲,如果您具有1TH / s的采矿能力,则解决区块的机会是1/51200544,可以说,计算1TH / s成本约为1000 $的硬件,只需计算成本即可。
如前所述,每个区块的标头中都包含一个Merkle哈希值,而该哈希值又取决于区块中所包含的每个事务以及需要解决的困难(矿工的计算)。该merkle根包含在下一个块的标题中。
因此,如果您要在第n-10个区块更改一个或多个事务,则需要对第n-10个区块做两件事。
1.随着交易发生变化,再次计算Merkle根。
2.解决困难。
由于merkle根已更改,因此需要解决此块之后的每个块的困难,直到此时此刻,才能使其成为有效分支。
完成所有这些操作的时间只有10分钟,因为在接下来的10分钟内,矿工将在链中推下另一个障碍。