家园(Homestead)发行版¶
代号“家园”的版本是以太坊平台的第二个大版本,同时也是以太坊的第一个发行版。它包含一些协议的修改,同时包含为了以后网络升级而对网络协议做的修改。以太坊的第一个版本叫做“前沿”,它是一个测试版本,供开发者学习、体验以及构建一些以太坊应用和工具。
以太坊开发里程碑¶
原始发展路线图 在以太坊上线前列出了如下里程碑:
- 预发行版0:Olympic测试网络 - 2015年5月启动
- 发行版一:前沿(Frontier) - 2015年7月末启动
- 发行版二:家园(Homestead) - 2016年3月14日启动(圆周率日)
- 发行版三:大都会(Metropolis) - 2017年10月左右
- 发行版四:宁静(Serenity) - 时间待定
- 虽然表面上按照上面日程推进,但是背后发生了很多事情。
- Olympic测试网络阶段 (前沿版本发行之前)做了很多重大改进,紧接着前沿版本就正式发行了。家园版本的发行标志着测试阶段的结束,进入稳定的发行版本,家园版本发行在1,150,000个块这个位置,时间在2016年3月14日(圆周率日)。
如果你运行的节点连接在以太坊的公网上,那么更新升级到家园版本的客户端就是非常必要的,否则你最终将停留在错误的分支上,不能同步网络中剩余的区块。你可以从这里获取客户端列表 以太坊客户端。
一旦以太坊区块同步到1,150,000,以太坊将进行了硬分叉,主要的改变在下面的章节中解释。
家园版本硬分叉变更¶
以太坊从狭义上来说就是一系列的协议。 家园版本因为引入了一些反向不兼容的协议,所以需要进行硬分叉。这些变更遵从于 Ethereum Improvement Proposals ,主要内容如下:
- EIP 2:
- 通过交易创建智能合约的费用从21000提高到53000,通过
CREATE
操作码创建智能合约不受影响。 - s-value值大于
secp256k1n/2
的交易签名被认为是无效的。 - 如果创建合约时没有足够的gas用来支付合约状态改变所需要的费用,那么合约就会创建失败而不是留下一个空合约(比如:缺少足够gas)。
- 改变调整算法的难度
- 通过交易创建智能合约的费用从21000提高到53000,通过
- EIP 7: DELEGATECALL: 增加了一个新的操作码
DELEGATECALL
(0xf4
),这个操作码和CALLCODE
比较类似, 只是它只使用给定地址的代码,其他信息会使用父作用域的信息,也就是说:创建的调用和原始的调用,具有相同的发送者和价值,这对新创建的合约来说是一件好事情,意味着不用为存储这些信息话费额外的费用。参见: comments on EIP 7 - EIP 8: devp2p 向前兼容的特性符合鲁棒性原则 RLPx发现协议和RLPx TCP传输协议以确保以太坊网络上所有的客户端都适应以后以太坊网络的升级。对于老版本的客户端,网络协议升级不会被接受,如果发现收到hello包不是预先设定的格式,通信就会被拒绝。这次更新意味着将来所有版本的客户端都会接受升网络升级和握手通信。
这些变更会带来如下好处:
- EIP-2/1 限制了通过交易创建合约的过度激励,成本是21000,通过合约创建合约的成本32000。
- EIP-2/1 同时修复了通过自杀式退款帮助下的协议漏洞,目前消耗11664gas就能进行以太币转移。
- EIP-2/2 修复了交易可扩展性方面的问题(不是系统隐患,仅仅是用户界面的修改)。
- EIP-2/3 创建了更加直观的“错误和失败”状态,相对于现在的“错误、失败和空合约”更加清晰明了。
- EIP-2/4 将消除时间戳差异的过量激励减少到1,以创建难度更加高的块,这样就能搞定可能出现的分叉。将出块时间保持在10-20秒的范围,根据模拟可以恢复目标15秒区间的出块时间(现在的出块时间是17秒)。
- EIP-7 让调用更加方便,代码可以使用和父环境相同的环境(除了减少gas话费和增加调用栈深度)。
- EIP-8 确保未来以太坊上的客户端都能应对网络协议升级带来的影响。
更多资源: - Reddit discussion on Homestead Release - 以太坊改进提案(EIPs)