


系列介绍
欢迎来到新系列:Zero to Zero Knowledge!
在这个系列中,我们将学习构成隐私保护协议的各种技术基础知识。
今天我们从哈希函数开始——这是区块链中使用的一项关键密码学组件。在本系列的后续内容中,我们会介绍一些依赖其性质的主题。
哈希函数接受任意长度的输入,并生成固定长度的输出。

让我们借助这个工具来获得直观理解!
输入任意文本,生成固定长度的输出。观察在不同哈希算法下,输出会如何变化。
立即体验: https://cryptii.com/pipes/hash-function
密码学哈希函数必须具备以下3 个性质:
哈希函数有若干类别。示例如下:
BLAKE2 入门介绍: https://www.blake2.net
数据完整性校验是“完整性哈希”的一个例子。它们用于为数据文件生成校验和,并向用户提供正确性保证。

哈希树或默克尔树由分支和叶子节点组成,这些节点都标记有某个数据块的密码学哈希值。

默克尔树是密码学承诺方案的一个例子。树根 Root 可被视为一个承诺,而叶子节点则可被证明属于该原始承诺的一部分。
它们用于验证在 P2P 网络中存储或传输的数据,确保从对等节点接收到的数据未被篡改。
在 Zcash 的 Sapling 和 Orchard 屏蔽池中,Note Commitment Tree 用于验证交易在共识规则下是有效的,同时完美隐藏发送者、接收者和消耗的金额。
SHA256 是一种“签名哈希”的例子,用于强制保证比特币链上每个区块的不可变性。矿工在生成新区块时,会使用前一个区块的哈希 + 当前区块中所有交易的哈希(hashMerkleRoot)+ 时间戳 + 随机值 / 网络难度。

Equihash 是用于挖矿 Zcash 的哈希算法。它也被 Komodo 和 Horizen 等网络使用。
Equihash:基于广义生日问题的非对称工作量证明(Biryukov 和 Khovratovich):https://eprint.iacr.org/2015/946
如果你想更深入理解不同类型的哈希函数及其相关用途,下面这个资源非常值得阅读:
https://en.wikipedia.org/wiki/Hash_function
ZecHub(@ZecHub)发布的线程
原始 X 线程: https://x.com/ZecHub/status/1621240109663227906
本页面根据 ZecHub wiki 的原始 Zero to Zero Knowledge 线程整理而成。