这个系列的内容是根据肖臻老师《区块链技术与应用》公开课的内容进行的内容整理,以及部分延伸的思考。文末附有公开课链接。
课程基于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哈希算法,对内存要求比较强。
以太坊:小的16M cache ;大的1G dataset;数据体量在逐步增加。
轻节点是临时计算出用到的dataset的元素,矿工是直接访存,必须在内存里存着1G的dataset
ethash以太坊的挖矿算法,需要1G的内存,目前是GPU挖矿为主。
以太坊没有出现专有矿机,还有个原因是从最早开始,就是在设计不用工作量证明(PoW),而是权益证明(PoS)来进行投票,这对于ASIC芯片厂商而言,非常不友好。
以太坊有pre-mining,提前预留的币,早期参与的人都收益很高,类似的有pre-sale,早期买入,类似早期投资。
2018年5月份的数据,矿池的集中程度头部的比较高。
hashrate指的是系统中所有的矿工每秒钟计算哈希的次数,不同的虚拟货币Mining puzzle不一样,hashrate不可比。
Q:普通机器都能参与挖矿,可能有什么坏处?
有人认为,普通机器都能参与也不好。原因是,专用机器参与成本比较高,矿机投入大。如果是普通机器可以参与,比如大的互联网公司,在全球几百万台计算器,需要的时候联合起来发动攻击。(或者有恶意的组织,利用云服务,租用机器来做这个事情会变得比较可行。)
比特币每2016个区块(2周)调整难度,保持出块时间在10分钟左右,比特币每个区块都可能调整挖矿难度,改过很多版本。

早期的时候,数值比较小,越后期,数值越大。等难度炸弹释放的时候,挖矿越来越难,大家往Pos的迁移意愿会更强,传统的工作量挖矿很难。
但是权益证明的共识机制,比较难设计。
所以实操上,17年的时候挖矿的时间越来越长。当时的解决方案是把区块号往前减少了300万个。
减少300万个区块号之后,降低了挖矿难度,所以减少了挖矿的奖励,出块奖励从5个到3个。

BIP:BitCoin Improvement Proposal
EIP:Ethereum Improvement Proposal

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

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

视频课程链接
