区块链不可篡改的原因是什么?

本文探讨了区块链的不可篡改性,并强调经济激励在保持区块链安全性与完整性方面的重要性。通过Hash函数和分散的网络结构,区块链能够防止单一实体对历史数据的操纵。文章深入阐述了不可篡改性的原理、实现及其与经济激励之间的关系,并介绍了去中心化和分布式账本的概念。

注意:本文旨在让非技术读者易于理解,如需深入了解,请在阅读本文后参考我们的 区块链训练营

与普遍信念相反,区块链之所以不可篡改,并不是因为加密技术,而是因为经济激励。加密技术只是一个有用的工具,它使经济激励更容易应用。

文件如何保持不可变?

区块链归根结底就是一个文件——它是一个包含网络交易历史的文件。我们都知道文件可以被编辑。那么是什么让区块链保持不可变呢?

如果你将同一个文件存储在数千台独立的计算机上,并且这些计算机之间不相互串通,那么在所有计算机上进行完全相同的更改几乎是不可能的。

如果你在某台计算机上进行更改(例如删除一条交易),那么该计算机上的文件将与其他计算机上的文件不一致。

保持不可变性的下一步是使更改易于检测。区块链的大小以千兆字节计,因此每次你需要比较记录以查看历史是否被篡改时,发送整个文件跨越网络将是非常昂贵的。

所有文件都可以通过 hash function 简洁地表示。一个 hash function 接受一个任意文件并输出一个介于 0 和
115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,913,129,639,935 之间的数字。

你可以把 Hash Function 看作是为一个大文件生成数字指纹。如果文件中即使只有一个比特发生改变,指纹也会变成一个完全不同的数字。因此,只要查看这个数字,我们就可以很容易地确定文件是否发生更改。

指纹是通过对文件使用滑动窗口并利用文件内容触发大数字的“打乱”生成的。仅仅更改一个字母,打乱的结果就完全不同。这里提供了一个动画示例

计算文件的哈希
计算文件的哈希

例如,你很容易比较以下两个数字并看到:

25699748482000334349659950178510113434625287339471322686429384401650686920510

111615780842736058021275746192495359629127277574153577922775094394736461370563.

相比,这两个数字是不同的。

当你看到两个不同的非常大数字时,你能看到这两个不同的文件指纹是不同的。

这些非常大的数字被称为 blockhashes

文件 → Hash Function → 非常大的数字

如果你使用区块浏览器如 etherscan.io,你会看到这个非常大的数字被称为 blockhash。 在本文其余部分我们也将称之为 blockhash。

以太坊上的 Blockhash
以太坊上的 Blockhash

网络中的计算机分享的是 blockhash,而不是整个文件。

交易顺序

当一台计算机分享一项交易时,它需要分享三样东西:

  1. 交易前的 blockhash
  2. 新的交易
  3. 新交易后的 blockhash

如果步骤 1 中的 blockhash 与计算机本地的 blockhash 不匹配,该计算机将拒绝它。如果步骤 3 中的 blockhash 并没有在步骤 2 中的交易之后产生,交易将被拒绝。

说服成千上万台计算机相信你的数字是有效的唯一方法是使用与大多数计算机相同的 blockhash(它代表了你的历史)。顺应多数比尝试说服大多数人是错误的容易得多,而这种与大多数人对抗的巨大困难正是使区块链不可篡改和安全的原因。

确保不串通

即使你在全世界有成千上万台计算机,如果这些计算机实际上都由一个实体控制,那么更改区块链历史将对控制实体来说很容易。

关键是要让一个人很难参与大多数网络。我们称之为“去中心化”。

比特币设计上消耗大量电力,因为假设没有任何单一实体能够全球消耗大多数的能源。

以太坊使用权益证明(you need to lock up Ethereum to participate in the Ethereum),因为假设无人能够买下大多数以太坊并锁定它以控制网络中的大多数计算机。

网络中参与者越少,串通的可能性就越高,这就是为什么拥有大量计算机的区块链会宣传这个数字的原因。

与分布式账本的关系

区块链有时被称为“分布式账本。”换句话说,是分布且被广泛接受的交易历史。这一点很关键,因为分布性是保持不可变的重要部分。

正如我们在第一部分看到的,除非由不串通参与者在全球各地存储多个区块链文件的副本,否则文件可能会被篡改。

如果文件仅由少数几台计算机管理,那么它并不真正是分布式的,因此也不是真正的区块链。

经济激励

网络中的计算机如果认为某一交易会对自己造成伤害,就不会将该交易包含在网络中。例如,你在网络中运行一台计算机,你看到一项交易,上面写着“Bob突然无缘无故得到了百万美元。”有人白白获得金钱(并错失利润)并不是大多数计算机能接受的情况,因此它们会拒绝该交易,并且不接受与该交易相对应的 blockhash。知道人们不会接受你伪造对你有利的交易,阻止人们尝试包含这样的交易。

但如果所有的计算机联合在一起说“我们每个人都来打印自己一百万个币?”会发生一个非常有趣的经济现象:货币的价值不会改变。

想象某一天,政府说“所有人可以把一美元纸币换成十个新美元,五美元纸币换成五十个新美元,依此类推。”货币的价值会发生什么?什么也不会发生!经济中所有商品的价格只是前面多了一个零,事情会照常进行。

这种串通发生的前提是每个人必须完全 同意他们将获得多少额外的资金。如果存在分歧,每个人将拥有不同的 blockhash 代表他们的历史。如果出现这样的分歧,网络将停滞不前,因为上面的交易顺序将不再有效。如果网络崩溃,系统中的每个人都会失去他们的钱,因此有一种利益驱使人们 去破坏网络。

当经济激励不足时

为显示不可变性主要是经济性的,而非加密性的,想象一组大学生启动一个新的区块链,我们称之为 college-coin。它们的共同净资产不足 20,000 美元。然后我以一个无法拒绝的条件出现,一个邪恶的亿万富翁:每人给他们 20,000 美元以按照我想要的方式编辑区块链。这个条件是他们无法拒绝的。

因为他们都进行了相同的编辑,他们都会得到相同的 blockhash,网络正常运行。人们在进行交易时会互相展示这个新 blockhash,大家可以正常花钱——只是有了我添加到历史中的新项目。

小型区块链由于经济激励不足,容易受到此类攻击的威胁。

共同的自我利益

如果你篡改你的文件,你的 blockhash 将与其他计算机的 blockhash 不匹配。如果你的 blockhash 与其他计算机的 blockhash 不匹配,你就无法花钱。

因为每个参与者都有激励不篡改他们本地的区块链副本(从而不会被剥夺花钱的能力),区块链不会被篡改。这就是区块链不可变的原因。

所有计算机文件都是可变的。但如果你设定适当的经济激励,人们就不会随意更改它们。

最初发布于 2023年2月10日

  • 原文链接: rareskills.io/post/what-...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
RareSkills
RareSkills
https://www.rareskills.io/