本页面由英文自动翻译而成。自动翻译。

Switch to EnglishView in English报告翻译问题提出修改建议

返回课程

第 3 章-已通过 0/10 道测验

哈希(hash):数字指纹

密码学哈希是一种单向函数,它让篡改变得可见,并使工作量证明成为可能。

  • 说明密码学哈希起什么作用,以及雪崩效应为何重要
  • 描述 Merkle root 如何使一个区块承诺其全部交易

快速解答

比特币(Bitcoin)中的哈希是什么?

数据的单向指纹:易于计算,实际上不可能逆向,而且数据的任何改动都会产生一个完全不同的哈希。

Merkle root 是什么?

一个哈希,它使一个区块承诺其中的每一笔交易,因此改动任何一笔交易都会改变该 Merkle root。

为什么不能更改比特币(Bitcoin)的历史?

每个区块头都绑定前一个区块,因此要更改一个旧区块,就必须为它以及它之后的每一个区块重新完成工作量证明。

单向指纹

密码学哈希(hash)函数接受任意输入——一个词、一张图像、一整部百科全书——并返回固定长度的摘要。这个过程是单向的:你可以验证该输入会产生这个摘要,但你实际上无法从摘要反推出输入。比特币使用 SHA-256,它返回 256 位,通常写成 64 个十六进制字符。区块哈希和交易 ID 会将它应用两次(SHA-256d)。

雪崩效应

好的哈希函数高度敏感。在一份 500 页的文档里改动一个逗号,摘要就会完全改变。这称为雪崩效应。正因为如此,哈希才适合用作承诺:摘要锁定确切的字节,之后的任何改动都显而易见。

Merkle root

区块不会把每一笔交易逐一哈希进区块头。它先把交易 ID 两两配对做哈希,再把结果两两配对,如此重复,直到只剩一个哈希:Merkle root。区块头包含其版本、该 Merkle root、前一个区块的哈希、时间、难度目标、nonce。更改任意一笔交易,Merkle root 就会改变,区块头哈希随之改变,其后的工作链也会断裂。

可发现篡改的历史

每个区块头都包含前一个区块头的哈希。要改写一笔旧交易,攻击者就必须比诚实网络更快地重做该区块以及它之后每一个区块的工作量证明。哈希链使历史易于验证,也使改写代价高昂。节点会拒绝无效区块,但会跟随累计工作量更大的有效竞争链。节点不能仅仅因为一条工作量更多的有效链是攻击者构建的,就拒绝它。

试一试

SHA-256(message)4dcc1ea262605c83028cacc1bbdf06e8266b07bb2faef406bc353d4457b86abc
SHA-256(message + !)354bca96603c2e39e25fb099fb1003886bc363e82cc55f8366d88b9c6a07c7f7

添加一个字符后,256 位中有 124 位发生了变化。

你应该掌握的要点

哈希是单向承诺。Merkle root 将区块与其全部交易绑定,每个区块头又绑定前一个区块,因此更改历史就必须重做其后的工作量证明。

先回忆,再应用

在演示中改动一个字符。什么会改变,哈希不能证明什么?

核对你的解释

摘要会大幅改变。相符的摘要核验的是数据一致性;它不能证明数据为真或已获授权。授权需要签名。

检查点

第 1 题,共 3 题

有人编辑了埋在 100 个区块深处的一个区块里的一笔交易。是什么暴露了这次编辑?

第 2 题,共 3 题

你对一份文档做哈希,改动一个逗号,再做一次哈希。摘要会怎样?

第 3 题,共 3 题

一个区块的 Merkle root 绑定的是什么?

关键术语

来源

审阅于 2026年10月25日;不构成财务建议