加密货币里的哈希算法,决定了区块数据怎样被校验,也决定了矿工要靠什么硬件竞争出块。比特币使用 SHA-256,莱特币采用 scrypt,门罗币则转向 RandomX,背后对应的是完全不同的计算路径与挖矿生态。
哈希本质上是一种密码学函数:输入任意长度的数据,输出固定长度的结果,也就是哈希值或摘要。它和加密不是一回事。加密可以用密钥还原原文,哈希通常是单向过程,主要用于校验完整性、生成交易 ID、构造区块哈希,以及支撑工作量证明(PoW)机制。
哈希为什么会成为区块链的基础部件
区块链需要一种容易验证、却难以篡改的数据指纹。哈希正好承担这个角色。只要交易内容、时间戳、随机数 nonce 或默克尔根出现细微变化,输出结果就会明显不同,这种特性常被称为“雪崩效应”。对节点来说,验证很简单;对攻击者来说,想反推出原始输入,或者找到不同输入却产生同样结果的碰撞,计算成本会高得多。
这也是区块能够串起来的原因。区块头里会包含前一个区块的哈希,旧区块一旦被改动,后续链接就会断开。攻击者若想伪造历史,不只要改一个区块,还得重做之后每个区块的工作量证明。
区块哈希、交易 ID 与默克尔根各做什么
哈希并不只在挖矿时出现。区块哈希通常来自区块头的哈希值,在比特币里,区块头以 80 字节格式序列化,包含版本号、前一区块哈希、默克尔根、时间戳、nBits 和 nonce 等字段。这个哈希既是区块的紧凑标识,也用来证明矿工完成了足够的计算工作。
交易层面同样依赖哈希。交易 ID 一般是交易数据的哈希,钱包、区块浏览器和节点都用它来引用具体交易。默克尔根则把一整个区块内的交易集合压缩成一个哈希承诺,节点无需下载区块里的全部交易,也能验证某笔交易是否被纳入该区块。
工作量证明如何使用哈希竞争出块
在 PoW 网络里,矿工不断尝试不同的 nonce,反复计算候选区块头的哈希,目标是让结果低于网络设定的阈值。以比特币为例,矿工对候选的 80 字节区块头执行 双重 SHA-256,如果结果不满足要求,就继续修改 nonce 或其他可变字段再试一次。
这里有几个核心概念。target 决定哈希结果必须低到什么程度,difficulty 则反映找到有效哈希有多难,hash rate 表示设备每秒能完成多少次哈希运算。出块难,验证却不难,完整节点只需重新计算并检查区块是否符合���识规则。
SHA-256、scrypt、RandomX:不同算法对应不同矿机
SHA-256 是比特币使用的算法,输出为 256 位,也就是 32 字节。这类计算模式后来高度适合专用芯片,ASIC 因而成为比特币挖矿主流。文章指出,这也是为什么理解哈希后,就能明白比特币挖矿为何越来越依赖 ASIC。
scrypt 被莱特币用于 PoW。它同样产生 256 位输出,但设计上更强调内存使用。早期这让通用硬件与 GPU 仍有一定空间,ASIC 优势没有像比特币那样迅速扩大,不过这种延缓并不意味着能永久阻止 ASIC 进入。
RandomX 则是门罗币当前采用的算法。素材提到,门罗币在 2019 年切换到 RandomX,此前基于 CryptoNight 的挖矿已更容易受到 ASIC 开发影响。RandomX 不能让 ASIC 彻底消失,但它更符合门罗币让消费级硬件、尤其是 CPU 保持可参与性的目标。
Equihash、X11 与以太坊旧时代的 Ethash
Zcash 使用 Equihash,这是一种偏重内存的 PoW 算法,建立在广义生日问题之上。其参数通常写作 Equihash(n, k),Zcash 最初采用的是 Equihash(200, 9)。这一设计让 GPU 挖矿在早期具备可行性,但后续仍出现了对应 ASIC,Zcash 也没有持续通过更换算法去阻止它们。
Dash 采用 X11,会把输入依次送入 11 种哈希函数:BLAKE、BMW、Grøstl、JH、Keccak、Skein、Luffa、CubeHash、SHAvite、SIMD 和 ECHO,前一个函数的输出作为下一个函数的输入。它原本试图提高硬件专用化的门槛,结果仍走向 ASIC 主导。
以太坊历史上曾使用 Ethash 进行 PoW,如今已不再依赖挖矿。素材把它放进算法对比中,目的很直接:理解哈希算法,不只是在看矿工如何算力竞赛,也是在理解为什么不同公链会形成完全不同的安全结构和硬件门槛。

