news 2026/4/16 12:00:10

19.ETH-挖矿算法-北大肖臻老师客堂笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
19.ETH-挖矿算法-北大肖臻老师客堂笔记

北京大学肖臻老师《区块链技术与应用》公开课第 19 讲的主题是**“以太坊的挖矿算法 (Ethash)”**。

以下是第 19 讲的深度总结:


一、 核心设计哲学:为什么不一样?

肖老师首先抛出了一个问题:为什么以太坊不直接沿用比特币的 SHA-256 挖矿算法?

  1. 比特币的教训 (ASIC 化)
  • SHA-256 是计算密集型 (CPU-bound)的。这意味着谁的运算速度快,谁就挖得快。
  • 发展路径:CPU GPU FPGAASIC (专用矿机)
  • 后果:ASIC 矿机的出现导致算力高度集中在少数大矿场手中,普通人无法参与,违背了“去中心化”的初衷。
  1. 以太坊的目标 (ASIC Resistance)
  • 为了抗 ASIC,以太坊采用了内存硬依赖 (Memory Hardness)的设计思路。
  • 原理:限制挖矿速度的瓶颈不再是芯片的计算速度,而是内存的读取带宽。因为提升内存带宽在硬件物理上很难(比提升 CPU 频率难得多),ASIC 即使做出来,优势也不会像比特币矿机那么夸张。
  • 结果:这使得以太坊在很长一段时间内都是显卡 (GPU)挖矿的主力,保证了算力的分散。

二、 Ethash 算法详解 (核心机制)

Ethash 是早期DaggerHashimoto两个算法的结合变体。它的核心在于使用了两个大小悬殊的数据集:CacheDAG

1. 两个数据集
  • Cache (小数据集)

  • 大小:初始约16MB

  • 生成:由一个种子 (Seed) 生成。Seed 每隔 30,000 个区块(一个 Epoch,约 5 天)改变一次。

  • 特点:非常小,全节点和轻节点都能轻松存下。

  • 对应你的截图mkcache函数的代码。

  • DAG / Dataset (大数据集)

  • 大小:初始约1GB,每年线性增长(目前已超过 5GB)。

  • 生成完全由 Cache 生成。通过伪随机的方式,从 Cache 中读取数据并混合而成。

  • 特点:非常大,必须存放在显存中。

2. 挖矿流程 (Hashimoto 算法)

这是矿工每秒钟进行几百万次的实际工作:

  1. 读取输入:获取区块头 (Header) 和一个随机数 (Nonce)。
  2. 计算索引:用 SHA-3 计算出一个初始哈希,映射到 DAG 中的某个位置。
  3. 循环读取 (关键步骤)
  • 进入 64 次循环。
  • 根据当前的哈希值,去DAG (1GB+)中读取相邻的 128 字节数据。
  • 将读取的数据与当前的哈希值进行混合运算。
  1. 比较结果:最后算出一个最终哈希,判断是否小于目标值 (Target)。

为什么抗 ASIC?
因为 DAG 太大了,塞不进芯片的 L1/L2 缓存,必须放在显存里。这 64 次循环中的每一次读取都是随机访问。矿工的算力实际上被显存带宽给卡住了——芯片计算得再快也没用,因为必须等数据从显存里读出来。


三、 绝妙的设计:轻节点如何验证?

如果挖矿需要 1GB+ 的内存,那手机上的轻节点岂不是没法验证交易了?Ethash 设计了一个“时间换空间”的策略:

  • 矿工 (Miner)

  • 策略空间换时间

  • 做法:预先算出完整的 DAG (1GB+) 存在显存里。挖矿时直接读取,速度极快。

  • 轻节点 (Light Node)

  • 策略时间换空间

  • 做法:只保存16MB 的 Cache。当需要验证某个区块是否合法时,轻节点不需要整个 DAG。它根据哈希值算出“我需要用到 DAG 里的哪一个数据块”,然后利用 Cache临时计算出那一个数据块。

  • 代价:计算一次哈希的时间比矿工慢很多(因为要临时算 DAG 数据),但验证只需要做一次,几毫秒就能完成,完全可接受。


四、 其他课程重点

  1. Pre-Mining (预挖矿)
  • 视频最后提到了以太坊启动时,有约 7200 万个 ETH 是通过“预售”发行的,而不是挖出来的。这是为了筹集开发资金。肖老师指出,这在当时引发了争议,但现在已成为一种常见的融资模式 (ICO 的雏形)。
  1. DAG 的增长
  • DAG 的大小随着区块高度增加而增加。当 DAG 超过 4GB 时,所有 4GB 显存的显卡就瞬间被淘汰了(无法加载 DAG 文件),这被称为“DAG 时代终结”。

🧠 课程逻辑思维导图 (Ethash)

我将这节课的逻辑整理成了 Mermaid 思维导图:

轻节点: 时间换空间

利用 Cache 临时计算

只存 Cache

收到新区块

需要用到 DAG 特定位置

生成特定 DAG 数据

验证哈希合法性

矿工: 空间换时间

随机读取 DAG

计算哈希

存储完整 DAG

Header + Nonce

Hashimoto 循环

内存带宽成为瓶颈

提交结果

双数据集设计

每3万块更新

伪随机生成

Seed 种子

Cache 小数据集 (16MB+)

DAG 大数据集 (1GB+)

目标: 抗ASIC中心化

内存硬依赖 Memory Hardness

Ethash 算法

挖矿过程 (Miner)

验证过程 (Light Node)

💡 总结

第 19 讲的核心在于理解Ethash 的不对称性

  • 对挖矿者:必须拥有大内存(存 DAG)和高带宽,迫使算力停留在通用硬件(GPU)上。
  • 对验证者:只需极小内存(存 Cache),保证了轻节点(手机/个人电脑)也能参与网络安全验证。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/3 4:35:55

MCP 2026跨服务器编排到底多难?权威基准测试显示:92.7%的团队在Stage 3失败——你卡在哪一步?

第一章:MCP 2026跨服务器编排的演进逻辑与失败全景MCP 2026并非一次孤立的技术升级,而是对分布式系统编排范式持续重构的必然产物。其核心驱动力源于传统单集群控制器在多云、边缘异构、跨地域低延迟协同等场景下的结构性失能——当服务实例横跨AWS us-e…

作者头像 李华
网站建设 2026/4/3 2:27:32

3分钟上手!零代码金融数据获取神器:pywencai实战攻略

3分钟上手!零代码金融数据获取神器:pywencai实战攻略 【免费下载链接】pywencai 获取同花顺问财数据 项目地址: https://gitcode.com/gh_mirrors/py/pywencai 在金融投资领域,数据获取一直是普通投资者和分析师面临的重大挑战。传统方…

作者头像 李华
网站建设 2026/3/16 4:00:15

AI读脸术镜像优势:免配置环境一键启动快速部署教程

AI读脸术镜像优势:免配置环境一键启动快速部署教程 1. 什么是AI读脸术——人脸属性分析的轻量级实现 你有没有想过,一张普通照片里藏着多少信息?比如这张自拍,系统不仅能框出你的脸,还能告诉你“Male, (35-42)”或者…

作者头像 李华
网站建设 2026/4/14 13:10:40

【独家解密】MCP 2026审计底稿模板(含银保监备案编号JG-2026-AUD-001):如何用1份报告同时满足现场检查与远程飞检双要求

第一章:MCP 2026审计底稿模板的监管定位与合规价值 MCP 2026审计底稿模板并非行业自发形成的实践工具,而是由国家金融监督管理总局联合中国银行业协会于2026年正式发布的强制性技术规范文件,其法律效力直接嵌入《银行业金融机构信息科技风险监…

作者头像 李华
网站建设 2026/4/5 17:08:52

Qwen3-ASR-1.7B应用场景:科研组实验室组会录音→自动生成待办事项与论文引用点

Qwen3-ASR-1.7B应用场景:科研组实验室组会录音→自动生成待办事项与论文引用点 1. 科研场景下的语音识别痛点 科研组每周的实验室组会通常会产生大量有价值的讨论内容,包括实验进展、待办事项、论文引用建议等关键信息。传统的人工记录方式存在几个明显…

作者头像 李华
网站建设 2026/4/10 20:33:25

手把手教你用Qwen3-ASR-0.6B搭建语音转文字工具

手把手教你用Qwen3-ASR-0.6B搭建语音转文字工具 你是否遇到过这些场景: 会议录音堆在文件夹里,想整理成文字却懒得听一遍?学术讲座视频没有字幕,看回放时总要暂停记笔记?客服通话需要质检,人工转录一条5分…

作者头像 李华