2026/4/18 14:02:02
网站建设
项目流程
响应式网站设计软件,常用的网站打不开,宁波网站关键词,做网页代码的素材网站北京大学肖臻老师《区块链技术与应用》公开课第 19 讲的主题是**“以太坊的挖矿算法 (Ethash)”**。
以下是第 19 讲的深度总结#xff1a; 一、 核心设计哲学#xff1a;为什么不一样#xff1f;
肖老师首先抛出了一个问题#xff1a;为什么以太坊不直接沿用比特币的 SH…北京大学肖臻老师《区块链技术与应用》公开课第 19 讲的主题是**“以太坊的挖矿算法 (Ethash)”**。以下是第 19 讲的深度总结一、 核心设计哲学为什么不一样肖老师首先抛出了一个问题为什么以太坊不直接沿用比特币的 SHA-256 挖矿算法比特币的教训 (ASIC 化)SHA-256 是计算密集型 (CPU-bound)的。这意味着谁的运算速度快谁就挖得快。发展路径CPU GPU FPGAASIC (专用矿机)。后果ASIC 矿机的出现导致算力高度集中在少数大矿场手中普通人无法参与违背了“去中心化”的初衷。以太坊的目标 (ASIC Resistance)为了抗 ASIC以太坊采用了内存硬依赖 (Memory Hardness)的设计思路。原理限制挖矿速度的瓶颈不再是芯片的计算速度而是内存的读取带宽。因为提升内存带宽在硬件物理上很难比提升 CPU 频率难得多ASIC 即使做出来优势也不会像比特币矿机那么夸张。结果这使得以太坊在很长一段时间内都是显卡 (GPU)挖矿的主力保证了算力的分散。二、 Ethash 算法详解 (核心机制)Ethash 是早期Dagger和Hashimoto两个算法的结合变体。它的核心在于使用了两个大小悬殊的数据集Cache和DAG。1. 两个数据集Cache (小数据集)大小初始约16MB。生成由一个种子 (Seed) 生成。Seed 每隔 30,000 个区块一个 Epoch约 5 天改变一次。特点非常小全节点和轻节点都能轻松存下。对应你的截图mkcache函数的代码。DAG / Dataset (大数据集)大小初始约1GB每年线性增长目前已超过 5GB。生成完全由 Cache 生成。通过伪随机的方式从 Cache 中读取数据并混合而成。特点非常大必须存放在显存中。2. 挖矿流程 (Hashimoto 算法)这是矿工每秒钟进行几百万次的实际工作读取输入获取区块头 (Header) 和一个随机数 (Nonce)。计算索引用 SHA-3 计算出一个初始哈希映射到 DAG 中的某个位置。循环读取 (关键步骤)进入 64 次循环。根据当前的哈希值去DAG (1GB)中读取相邻的 128 字节数据。将读取的数据与当前的哈希值进行混合运算。比较结果最后算出一个最终哈希判断是否小于目标值 (Target)。为什么抗 ASIC因为 DAG 太大了塞不进芯片的 L1/L2 缓存必须放在显存里。这 64 次循环中的每一次读取都是随机访问。矿工的算力实际上被显存带宽给卡住了——芯片计算得再快也没用因为必须等数据从显存里读出来。三、 绝妙的设计轻节点如何验证如果挖矿需要 1GB 的内存那手机上的轻节点岂不是没法验证交易了Ethash 设计了一个“时间换空间”的策略矿工 (Miner)策略空间换时间。做法预先算出完整的 DAG (1GB) 存在显存里。挖矿时直接读取速度极快。轻节点 (Light Node)策略时间换空间。做法只保存16MB 的 Cache。当需要验证某个区块是否合法时轻节点不需要整个 DAG。它根据哈希值算出“我需要用到 DAG 里的哪一个数据块”然后利用 Cache临时计算出那一个数据块。代价计算一次哈希的时间比矿工慢很多因为要临时算 DAG 数据但验证只需要做一次几毫秒就能完成完全可接受。四、 其他课程重点Pre-Mining (预挖矿)视频最后提到了以太坊启动时有约 7200 万个 ETH 是通过“预售”发行的而不是挖出来的。这是为了筹集开发资金。肖老师指出这在当时引发了争议但现在已成为一种常见的融资模式 (ICO 的雏形)。DAG 的增长DAG 的大小随着区块高度增加而增加。当 DAG 超过 4GB 时所有 4GB 显存的显卡就瞬间被淘汰了无法加载 DAG 文件这被称为“DAG 时代终结”。 课程逻辑思维导图 (Ethash)我将这节课的逻辑整理成了 Mermaid 思维导图轻节点: 时间换空间利用 Cache 临时计算只存 Cache收到新区块需要用到 DAG 特定位置生成特定 DAG 数据验证哈希合法性矿工: 空间换时间随机读取 DAG计算哈希存储完整 DAGHeader NonceHashimoto 循环内存带宽成为瓶颈提交结果双数据集设计每3万块更新伪随机生成Seed 种子Cache 小数据集 (16MB)DAG 大数据集 (1GB)目标: 抗ASIC中心化内存硬依赖 Memory HardnessEthash 算法挖矿过程 (Miner)验证过程 (Light Node) 总结第 19 讲的核心在于理解Ethash 的不对称性对挖矿者必须拥有大内存存 DAG和高带宽迫使算力停留在通用硬件GPU上。对验证者只需极小内存存 Cache保证了轻节点手机/个人电脑也能参与网络安全验证。