《区块链技术与应用》12 ETH以太坊挖矿算法与难度调整

这个系列的内容是根据肖臻老师《区块链技术与应用》公开课的内容进行的内容整理,以及部分延伸的思考。文末附有公开课链接。

课程基于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月左右的版本所写的。

post image

早期的时候,数值比较小,越后期,数值越大。等难度炸弹释放的时候,挖矿越来越难,大家往Pos的迁移意愿会更强,传统的工作量挖矿很难。

但是权益证明的共识机制,比较难设计。

所以实操上,17年的时候挖矿的时间越来越长。当时的解决方案是把区块号往前减少了300万个。

减少300万个区块号之后,降低了挖矿难度,所以减少了挖矿的奖励,出块奖励从5个到3个。

post image

BIP:BitCoin Improvement Proposal

EIP:Ethereum Improvement Proposal

post image

**挖矿难度的增长曲线:**早期平缓,17年开始,指数上升,主要是难度炸弹的威力开始释放。难度上升是回调之后,竞争加剧了。

post image

出块时间早期稳定在15s左右,达到预期效果,17年开始指数上升,回调之后出块时间基本稳定在15s。

post image

视频课程链接

https://www.bilibili.com/video/BV1Vt411X7JF?spm_id_from=333.337.search-card.all.click&vd_source=6807dc8dcddb18fe6db9d949c12b670c