MSTR Cat

区块链/等级 II · 运作机制/2.3 区块与链/课程 3

哈希链

牢不可破的联系与重写历史的代价

材料提供详细区块头信息的区块浏览器用于验证 SHA-256 哈希值的计算器或脚本用于记录哈希值的笔记本

好奇

  1. 一串数字记录如何比实体账本更有效地抵御篡改?
  2. 为什么添加一个新区块就会让之前的所有交易更难被修改?
  3. 攻击者试图修改过往记录时,需要承担多少计算成本?

探索

  1. 1991年,斯图尔特·哈伯和W·斯科特·斯托内塔发表了《如何为数字文档加盖时间戳》一文。他们提出将文档串联成链,每条新记录都包含前一条记录的密码学哈希值。这种结构形成了不可更改的历史:一旦修改任何过往文档,其哈希值就会改变,进而切断与后续所有记录的链接。中本聪在比特币白皮书中引用了这篇1991年的论文,将其作为区块链结构完整性的基础灵感来源。
  2. 每个比特币区块头都包含一个名为“上一个区块哈希”的32字节字段。该值是整个前一个区块头的双SHA-256哈希。矿工在开始挖矿之前就把这个哈希放入新区块头中,因为它是被哈希的数据的一部分。结果便形成了一条链,其中每个区块都在密码学上对其父区块作出承诺。没有这一链接,各个区块就会像彼此孤立的岛屿;有了它,区块便构成一条以2009年1月3日创世区块为锚点的连续序列。
  3. 区块头中的默克尔根将该区块内的所有交易与哈希绑定在一起。如果攻击者修改了某个历史区块中的哪怕一笔交易,默克尔根就会改变,该区块自身的哈希也随之改变。由于下一个区块把这个被修改区块的旧哈希存为“上一个区块哈希”,链接就此断裂。从这一点往后,整条链都变为无效。要修复它,攻击者必须为这个区块重新完成工作量证明。
  4. 只重新挖出一个区块是不够的,因为其后所有区块所包含的哈希也都不再匹配。攻击者必须为被修改区块之后的每一个区块重做工作量证明,才能构建出一条有效的链。这需要巨大的计算能力。诚实网络在不断添加新区块,攻击者则在与之赛跑。如果攻击者的算力超过网络其余部分的总和,就能追上并超越现有链,改写历史。
  5. 节点并不按区块数量追随最长链,而是追随累计工作量证明最多的链,这一累计值称为“chainwork”(链工作量)。该指标计入了难度调整的影响,后者使后来的区块更难挖出。一个区块更多但总工作量更少的分支不会被追随,即使其中的区块可能都有效。一笔交易在链中埋得越深,攻击者要撼动它所需复制的工作量就越多。每一次确认都会为逆转历史所需的计算投入再加上一层。
  6. 打开任意区块浏览器,选择一个最近的区块。记下它的“上一个区块哈希”字段。点击该哈希,跳转到父区块。验证父区块自身的区块头哈希与子区块中存储的值一致。重复这一过程三次,沿着链接向前追溯这条链。这种手动验证可以确认每个区块都在密码学上对其前一个区块作出承诺,构成一条经工作量验证、一直延伸到创世区块的连续记录序列。

关键事实

  • 斯图尔特·哈伯与W·斯科特·斯托内塔1991年提出的链式时间戳方案被比特币白皮书引用。
  • 每个区块头都包含前一个区块头的32字节哈希值,从而实现它们之间的顺序连接。
  • 修改一笔过往交易会改变其所在区块的默克尔根和哈希,从而切断后续所有链接。
  • 节点追随累计工作量证明(“chainwork”)最多的链,而不仅仅是区块数量最多的链。
  • 攻击者必须为被修改区块之后的每一个区块重做工作量证明,才能超越诚实网络。
  • 2009年1月3日挖出的创世区块,成为了这条区块链中不可更改的基准点。

练习 九、六、三、一

9收集列出9种不同的数字账本或记录系统。说明每种系统是如何防止对历史记录进行篡改的。
6归类根据实现不可篡改性的机制,将这9种系统分为6类:密码学链接、共识投票、中央权威审计、物理冗余、法律契约或其他。
3提炼将这6组归纳为3个根本原因,解释为何在没有可信第三方的情况下,大多数系统无法提供可察觉篡改的历史记录。
1凝结用一句话解释工作量证明如何将一个由哈希链接而成的列表,转变为一条受经济安全保障的所有权链。

事实核查

日期、数字及数据均依据下方列出的已发表资料进行核实。

在互动学院中打开 →

EN PT ES JA KO RU DE FR MS