我们在本文中系统梳理以太坊从工作量证明到权益证明的演进路径,深入解析 Ethash 的缓存与 DAG 机制以及 Casper 共识的核心逻辑,帮助读者把握技术细节与未来趋势,后续章节将进一步揭示实现细节与迁移挑战,值得细读。
以太坊共识算法是什么?
以太坊共识算法是基于工作量证明的Ethash算法,正在向权益证明的Casper协议过渡。该算法利用大数据集和缓存防ASIC,Serenity 阶段将全面采用 Casper PoS。
大小数据集的生成原理

1. 小 cache(缓存)
- 初始大小为 16 MB,每 30 000 个区块会更新一次。
- 通过 seed 种子进行哈希运算得到第一个元素,后续每个元素均由前一个元素的哈希值生成。轻节点只需存储此 cache 即可完成区块验证。
2. 大 DAG(有向无环图)
- DAG 的每个元素均由 cache 按伪随机顺序计算得到。
- 具体过程:先在 cache 中选取位置 A 的值,再对 A 进行哈希得到 B 位置的值,循环 256 次后得到 DAG 的第一个元素,随后依次生成全部元素。
3. 挖矿过程
- 与比特币相同,挖矿成功的条件是找到一个 nonce 使得 `H(header) ≤ target`。
- 具体步骤(以太坊):
- 取随机 nonce,使用 DAG 与区块头计算初始哈希,映射到位置 A。
- 读取位置 A 与其相邻位置 A' 的元素,依据这两个值计算下一个位置 B 与 B'。
- 重复上述过程共 64 次,累计读取 128 个元素。
- 对这 128 个元素进行哈希,得到最终值并与 target 比较,满足条件即挖矿成功。

整体挖矿流程如下图所示:

4. 验证过程
- 验证仅需一次哈希运算,步骤与挖矿类似。
- 全节点:内存中保存完整 DAG,执行 64 次迭代后比较哈希值。
- 轻节点:先利用小 cache 重建所需的 DAG 部分,再执行相同的验证步骤。
ETH 使用的共识协议介绍
以太坊的共识机制经历了四个发展阶段:
| 阶段 | 名称 | 主流共识机制 |
|---|---|---|
| 1 | Frontier(前沿) | **PoW**(Ethash) |
| 2 | Homestead(家园) | **PoW** |
| 3 | Metropolis(大都会) | **PoW** |
| 4 | Serenity(宁静) | **PoS**(Casper) |
PoW(工作量证明)
- 采用 Ethash,通过构造大规模 DAG 与 cache,限制单纯算力优势,提升去中心化程度。
PoS(权益证明)与 Casper
- PoS 用节点持有的代币数量(即 币龄/币天数)决定记账权。
- Casper 为以太坊实现的 PoS 变体,核心特点:
- 出块:验证人收集交易、生成区块并签名。
- 投注(投票):验证人根据其他验证人的投票情况,在 0‑1 区间进行加权决策,采用类似拜占庭容错的 33% 规则。
- 惩罚机制:若验证人提交重复序号的投注或无法被合约处理的投注,将失去全部保证金,从而防止恶意行为。
- 客户端状态确认流程:
- 下载全部区块和投注记录。
- 对每个区块高度进行观察,仅在投票概率 > 0.5 时接受区块。
- 依次处理后得到的链状态即为当前区块链状态。
小结
以太坊的 Ethash 通过庞大的数据集和缓存限制 ASIC 矿机的优势,实现了更高的去中心化。Serenity(以太坊 2.0)将全面转向 Casper PoS,在保证安全性的同时引入经济惩罚机制,提升网络的效率与可持续性。
以上即为“以太坊共识算法是什么?ETH 使用的共识协议介绍”。想获取更多以太坊共识算法的深入解读,请关注 Bitaigen(比特根)其他相关文章!
关键要点
- 以太坊正从PoW的Ethash向PoS的Casper迁移
- Ethash采用16 MB缓存并每30 000区块更新DAG
- 挖矿需进行64次迭代读取128个DAG元素并比较目标
- 轻节点只保存cache,可在验证时重建所需DAG部分
- Serenity阶段将全面采用Casper PoS共识
常见问题
以太坊的共识算法经历了哪些阶段?
以太坊共识从最初的工作量证明(PoW)Ethash 逐步演进,经历 Frontier、Homestead、Metropolis 三个 PoW 阶段,随后在 Serenity(又称合并)阶段切换至权益证明(PoS)实现的 Casper 协议。
Ethash 中的 cache 与 DAG 有何区别?
cache 是约 16 MB 的小型数据集,每 30 000 区块更新一次,轻节点只需保存它即可验证区块;DAG 是由 cache 按伪随机顺序生成的数 GB 大的有向无环图,完整节点需在内存中保持整张 DAG 用于挖矿和完整验证。
以太坊 PoW 挖矿的基本流程是什么?
矿工先随机取 nonce,利用 DAG 与区块头计算初始哈希并映射到位置 A;读取 A 与相邻位置的元素,循环 64 次共读取 128 个元素;对这 128 个元素再哈希,若结果小于目标值 target,则算作成功出块。
全节点和轻节点在验证时如何使用 cache 与 DAG?
全节点在内存中保存完整的 DAG,直接进行 64 次迭代哈希并比较结果;轻节点只保存 cache,根据需要重建对应的 DAG 部分后执行同样的验证步骤,从而无需存储整张 DAG。
Casper 共识是如何决定出块权并惩罚违规验证人的?
Casper 依据验证人持有的 ETH 量(币龄)进行权益投票,出块权通过加权投票决定,采用 33% 拜占庭容错阈值;若验证人提交重复区块或故意失误,会被扣除质押的部分或全部代币作为惩罚(slashing)。
相关阅读
- 以太坊 Gas 费用全解析:概念、计费机制与预算计算方法
- 区块链 Gas Fee 全面解析:计费原理、费用结构与降费技巧
- 深入解析以太坊矿工费:基本费与数据费全攻略
- 以太坊 Gas Fee 详解:概念、原因与查询计算全指南
💡 注册币安使用邀请码 B2345 享平台手续费折扣。详见 币安完整教程。