以太坊(Ethereum,货币符号ETH)在设计之初就决定最终要采取权益证明(PoS)去维护交易的安全性,取代效率低下,资源消耗大的工作量证明(PoW)。前期通过PoW建立起一套可以信赖的数字加密货币体系,之后就将基于该货币转到PoS体系,通过权益人交保证金的方式去保证其作为一个诚实的节点验证交易的有效性。为此,以太坊的创始人们为它设定了4个发展阶段:Frontier,Homestead,Metropolis,Serenity,阶段之间的转换需要通过硬分叉的方式实现。

Frontier是2015年7月以太坊发行初期的试验阶段,那个时候的软件还不太成熟,但是可以进行基本的挖矿,学习,试验。系统运行之后,吸引了更多的人关注并参与到开发中来,以太坊作为一个应用平台,需要更多的人去开发自己的去中心化应用来实现以太坊本身的价值。随着人气渐旺,以太坊的价值也水涨船高。

Homestead是以太坊第一个正式的产品发行版本,于2016年3月发布。目前以太坊仍运行在该阶段,100%采用PoW挖矿,但是挖矿的难度除了因为算力增长而增加之外,还有一个额外的难度因子呈指数级增加,这就是难度炸弹(Difficulty Bomb)。由于PoS的运用将会降低挖矿的门槛,因为你不需要再去购买价格高昂的硬件矿机,只需要购买一定数量的ETH,将其作为保证金通过权益证明的方式验证交易有效性,即可拿到一定的奖励。因此,对矿工来说他们花高价购买的矿机将无用武之地,这势必会引起矿工的不满。为了防止PoW转PoS的过程中矿工联合起来抵制,从而分叉出两条以太坊区块链,难度炸弹被引入。难度炸弹指的是计算难度时除了根据出块时间和上一个区块难度进行调整外,加上了一个每十万个区块呈指数型增长的难度因子。计算公式如下,最右的相加项即为难度炸弹:

block_diff = parent_diff + parent_diff / 2048 * max(1 - (block_timestamp - parent_timestamp) / 10, -99) + int(2^((block.number / 100000) - 2))

这有点像一个温水煮青蛙的过程,一开始附加的难度并不引人注意,但是随着区块高度的增加,呈指数增长的难度因子比重将会显著提高,使得出块难度大大增加,矿工将难以挖出新的区块。目前以太坊的区块高度超过420万,难度炸弹已经开始发挥威力,出块时间从之前很长一段时间维持的平均15秒左右渐渐增加到了25秒,每天新产生的ETH降到了19000以下(2017年9月2日数据)。由于出块越来越艰难,到最后区块将被完全冻结,这个过程又被称作“冰川时代”(Ice Age)。有了这个预期,那么转PoS引起的硬分叉就不会是一个困难的选择,毕竟没有人会继续待在那条将要走向凛冬的区块链。

难度炸弹影响下的出块时间变化

然而PoS的机制设计中有很多问题需要解决,开发时间比原本计划的要长。根据最近的以太坊改进建议EIP-649(2017年8月26日被接受 ), 转换到权益证明(PoS)的时间节点将被延迟约一年半,工作量证明(PoW)将会继续担当大任。为了不堵塞交易,维持系统稳定运行,难度炸弹也需要被相应地延迟,实现方式是将挖矿难度按照回退300万个区块的高度去计算,因此出块时间又将回到15秒左右,如果不采取任何行动,则ETH的供应量会明显超出按原本难度炸弹时间表规划的供应量,这会导致通货膨胀,降低ETH的价值,为了使ETH的供应量与原本计划的数量相当,于是需要减少每个区块的奖励,从原本的5个ETH减少为3个ETH,叔块的奖励也将相应减少。

Homestead的下一阶段Metropolis又被分成了两个阶段:Byzantium和Constantinople。Byzantium预计在9月下旬发布,届时难度炸弹延迟和区块奖励减少将被执行。Constantinople的规划与开发预计将在今年晚些时候进行。

Byzantium的区块高度计算调整:

fake_block_number = max(0, block.number - 3_000_000) if block.number >= BYZANTIUM_FORK_BLKNUM else block.number

Byzantium的区块奖励计算调整,3*10e18 wei,即3ETH:

new_block_reward = 3_000_000_000_000_000_000 if block.number >= BYZANTIUM_FORK_BLKNUM else block.reward

乐观估计,以太坊的最后一个阶段Serenity,即转成PoS的软件版本至少要到2018年底发布了,具体实施要到2019年春季后。到时PoS的实行将会吸引更多分布式节点的加入,为各种分布式应用(Dapp)的运行打下物理基础,以太坊将有希望成为去中心化领域的app store,互联网的新时代也将到来。从软件开发的性质来说,总是会有各种意想不到的问题和难度出现,所以谁也不知道以太坊设想的乌托邦Serenity最终将在何时到来,不过这是一个值得期待的事件。如果说比特币是数字加密货币开创性的先驱,那么以太坊就是继往开来的主将,它有着更宏伟的蓝图。

以太坊的4个发展阶段与难度炸弹相关推荐

  1. 以太坊完整工作原理和运行机制!

    以太坊完整工作原理和运行机制! 2018年04月28日 00:00:00 阅读数:26 作者 | Preethi Kasireddy 编译 | 老曹.Aholiab 链圈的人提起「以太坊」三个字想必是 ...

  2. 给Web开发人员的以太坊入坑指南

    以太坊现在各种学习资料数不胜数,但由于以太坊正处于飞速发展阶段,有些学习资料很快就过时了.所以想找到有价值的资料无异于大海捞针.我费了很大功夫,才建立起对以太坊的整体认识,搞清楚它的工作机制.我相信很 ...

  3. 区块链扫盲之7,区块链与以太坊

    通过深入了解比特币系统我们已经知道,区块链是源自比特币的底层技术,它让我们可以无须借助任何第三方中介直接进行价值表示和价值转移,它还给数字世界带来了价值表示物--通证.区块链将使互联网从"信 ...

  4. 为你的以太坊应用程序设计架构

    这会带来一系列围绕在你的应用程序架构和蓝图设计周围的新挑战:传统的客户端-服务器应用程序中现在又有一个新部件,区块链. 在本篇文章中,我将提及以太坊应用程序中最经典的一些场景.它们的出现源于这三个部件 ...

  5. 以太坊的发展阶段、特点、组成部分、重要概念

    以太坊的发展阶段 "前沿"(Frontier)-Block#0 以太坊的初始阶段,持续时间为2015年7月30日至2016年3月 "家园"(Homestead) ...

  6. 分片提升容量难度大,时间长,故而Vitalik提出使用BCH或者ETC作为以太坊数据层

    7月25日晚,莱比特矿池CEO江卓尔在巴比特在线直播节目She Knows中表示,分布式系统(去中心化系统)有一个不可能三角,称为分布式系统CAP定理,指的是在一个分布式系统中,Consistency ...

  7. 欧科云链OKLink:以太坊网络难度达到5.74P的历史新高

    据欧科云链OKLink数据显示,当前以太坊网络难度达到5.74P,全网算力约合435.5 TH/s,近一周分别上升5.32%和5.7%,均刷新历史新高.今年以来,以太坊网络挖矿难度持续刷新历史新高,当 ...

  8. 以太坊的难度(Difficulty)计算

    一.什么是难度 难度(Difficulty)一词来源于区块链技术的先驱比特币,用来度量挖出一个区块平均需要的运算次数. 难度(Difficulty)通过控制合格的解在空间中的数量来控制平均求解所需要尝 ...

  9. 深入理解以太坊 P2P 网络设计

    前言 在设计公链时,节点与节点之间建立连接需要 P2P 协议,从而实现数据的同步,于此同时上层应用还需要封装一些通信逻辑,比如节点之间的区块同步.交易数据同步等. 本篇文章将对 P2P 网络发展进行简 ...

最新文章

  1. js在线压缩工具 支持Base62 encode 和 Shrink variables
  2. 黑马程序员--学习while、do-while、for循环、try-catch的用法
  3. 功能性农业实用技术 谋定·农业大健康-李喜贵:粤黔东西协作
  4. easy html css tree 简单的HTML css导航树
  5. python多级索引修改
  6. HttpClient 发送 HTTP、HTTPS 请求的简单封装
  7. c语言 程序统计注释比例,C语言统计单词数量程序 超详解
  8. 软工视频(33~36)-用户界面设计
  9. 转:PHP程序里的敏感信息处理方法
  10. Leetcode 5
  11. 数字信号处理--7.4--数字滤波器
  12. R语言-误差修正模型的建立和结果解读
  13. viper4android fx2.7,ViPER4Android FX下载-ViPER4Android FX(蝰蛇音效fx)2.7.1.0 安卓版下载_东坡手机下载...
  14. snownlp情感分析
  15. 计算机桌面图标乱了,如何解决电脑桌面图标乱跑的问题
  16. 世界上最大的二房东上市了
  17. Tableau 网站流量分析案例汇总
  18. 手机后端开发用php,【后端开发】php如何获取手机型号
  19. 用Python删除含有特定字符串的行
  20. 双屏幕显示,两个显示器分辨率不一样处理

热门文章

  1. python里format有什么用_python format用法详解
  2. C语言-目标文件/链接文件
  3. Bootstrap-datetimepicker控件使用
  4. html引入layer.js,require.js引用jquery、layer的简单实例用法
  5. 什么是php 的精华,在用PHP开发中的精华和技巧总结
  6. python全栈和java全栈_Python是全栈式开发语言吗?原因竟是这样!
  7. div嵌套,内层的margin-top会跑到外层
  8. [转]Java8 Lambda表达式教程
  9. 中兴F412光猫超级密码破解、破解用户限制、关闭远程控制、恢复路由器拨号
  10. 牛客网模拟笔试——黑化的牛牛(JavaScript)