# 《区块链技术与应用》12 ETH以太坊挖矿算法与难度调整 **Published by:** [Minna Yu](https://paragraph.com/@minna-yu/) **Published on:** 2022-06-18 **URL:** https://paragraph.com/@minna-yu/12-eth ## Content 这个系列的内容是根据肖臻老师《区块链技术与应用》公开课的内容进行的内容整理,以及部分延伸的思考。文末附有公开课链接。 课程基于18年5月的版本所讲述,但是对理解最近(2022.6)讨论很多的ETH 2.0有很大的帮助。本篇主要回答以下5个问题: 1、和比特币对比,以太坊Mining puzzle的设计有什么特点? 2、如果普通机器都能参与挖矿,可能有什么坏处? 3、以太坊挖矿算法中的难度炸弹是什么?最大的特征是什么? 4、难度炸弹设置的目的是什么? 5、为什么2017年以太坊的挖矿难度激增?官方的处理方案是什么?前述Blockchain is secured by mining. 比特币的算法是天然的bug bounty,有捷径的话会获益很多。目前的算法经受考验。 但是也有值得改进的点,其中一个就是挖矿设备的专业化。 One cpu, one vote.【中本聪最早的论文的想法】参与的人越多,越民主。 所以后续的mining puzzle设计都是ASIC resistance,以抵制专业的挖矿设备,普通计算机能参与,最好是连GPU 都resistance。 ASIC算力强,计算能力是普通计算机的几千倍,但是内存性能很差。 所以ASIC resistance的方向,主要就是设计对内存需求比较强的Memory hard mining puzzle。 早期的一个代表是LiteCoin,用了scypt哈希算法,对内存要求比较强。以太坊Mining puzzle的设计以太坊:小的16M cache ;大的1G dataset;数据体量在逐步增加。 轻节点是临时计算出用到的dataset的元素,矿工是直接访存,必须在内存里存着1G的dataset ethash以太坊的挖矿算法,需要1G的内存,目前是GPU挖矿为主。 以太坊没有出现专有矿机,还有个原因是从最早开始,就是在设计不用工作量证明(PoW),而是权益证明(PoS)来进行投票,这对于ASIC芯片厂商而言,非常不友好。 以太坊有pre-mining,提前预留的币,早期参与的人都收益很高,类似的有pre-sale,早期买入,类似早期投资。 2018年5月份的数据,矿池的集中程度头部的比较高。 hashrate指的是系统中所有的矿工每秒钟计算哈希的次数,不同的虚拟货币Mining puzzle不一样,hashrate不可比。 Q:普通机器都能参与挖矿,可能有什么坏处? 有人认为,普通机器都能参与也不好。原因是,专用机器参与成本比较高,矿机投入大。如果是普通机器可以参与,比如大的互联网公司,在全球几百万台计算器,需要的时候联合起来发动攻击。(或者有恶意的组织,利用云服务,租用机器来做这个事情会变得比较可行。)ETH挖矿难度调整比特币每2016个区块(2周)调整难度,保持出块时间在10分钟左右,比特币每个区块都可能调整挖矿难度,改过很多版本。本篇的内容基于以太坊2018年5月左右的版本所写的。早期的时候,数值比较小,越后期,数值越大。等难度炸弹释放的时候,挖矿越来越难,大家往Pos的迁移意愿会更强,传统的工作量挖矿很难。 但是权益证明的共识机制,比较难设计。 所以实操上,17年的时候挖矿的时间越来越长。当时的解决方案是把区块号往前减少了300万个。 减少300万个区块号之后,降低了挖矿难度,所以减少了挖矿的奖励,出块奖励从5个到3个。BIP:BitCoin Improvement Proposal EIP:Ethereum Improvement Proposal**挖矿难度的增长曲线:**早期平缓,17年开始,指数上升,主要是难度炸弹的威力开始释放。难度上升是回调之后,竞争加剧了。出块时间早期稳定在15s左右,达到预期效果,17年开始指数上升,回调之后出块时间基本稳定在15s。视频课程链接 https://www.bilibili.com/video/BV1Vt411X7JF?spm_id_from=333.337.search-card.all.click&vd_source=6807dc8dcddb18fe6db9d949c12b670c ## Publication Information - [Minna Yu](https://paragraph.com/@minna-yu/): Publication homepage - [All Posts](https://paragraph.com/@minna-yu/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@minna-yu): Subscribe to updates - [Twitter](https://twitter.com/Captai_addicted): Follow on Twitter