这里是段博士。以太坊的架构基于比特币,但同时是将区块链作为了一个可编程的分布式信用基础设施,并支持智能合约应用,与仅作为虚拟货币支撑的比特币区块链有明显优化改进。本章从工作量证明及收益、叔块的概念、高级语言等三个方面说明以太坊区块与比特币区块链的不同。
一、工作量证明及收益
按照比特币的挖矿设计难度,整个网络产生新区块的速度被动态控制在10分钟左右,并且工作量证明仅依靠CPU的计算难度。而以太坊的PoW(工作量证明)算法经过优化,相比比特币的工作量证明更加简单和灵活。首先,新区块的产生被控制在15秒左右,同时以太坊的工作量证明机制加入了内存难度,该特点具有抵抗针对单哈希优化的ASIC挖矿机属性,避免了算力局部集中化的风险。下图给出的是比特币算力高度集中的情况。
比特币的算力高度集中在全球前几大矿场、矿池手中
而在矿工的收益方面,以太坊的奖励制度更加复杂。类似比特币,以太坊在产生一个新的区块时会获取一定的区块挖矿静态收益(5个以太币),矿工还可以依靠交易用户支付的gas来获取收益(如上章所述),此外还会获得产生“叔区块”上链的额外奖励。
二、叔块
“叔区块”——也称为“废块”,是指符合以太坊难度条件产生的区块,但是该区块里的交易未被确认而失效,这种情况通常发生在A、B矿工同时产生符合条件的区块,之后因为网络延迟确认及区块重组导致一方区块无效时出现,即临时分叉现象。“叔区块”的引入一方面完善了因为以太坊网络每15秒一次更新可能产生大量非区块的算力浪费的经济补偿,另一方面增强了整个区块量的安全性,使攻击者不易模拟带有废块的区块链主链。下面详细介绍。
比特币区块链的设计
根据区块链去中心化的设计,全世界所有的矿工同时工作,各自独立的挖掘满足要求的区块。由于各自独立工作,就有可能出现两个独立的矿工先后发现了两个不同的满足要求的区块,就像下面这种情况,被称为临时分叉。
临时分叉
两位矿工都发现了高度2的区块,那么该采用谁的呢?区块链只承认最长的链,黄色和绿色的区块谁先有后继区块,变成最长的链,谁就会被承认,失败的就会被抛弃。为了成为最长的链,两个矿工都拼命的把自己挖到的区块通过广播的方式告诉更多的节点,并希望他们能把自己的区块传播得更广,从而使更多的矿工在自己挖出的区块下挖掘下一个区块,最终让自己的区块变成最长链的一部分。
然而,胜利者只有一个,胜利者书写历史,失败者将被抛弃,其中的交易重新打包到之后的区块中。下面这张图就是绿色区块获得了胜利,黄色区块成为孤块,被抛弃。
黄色的孤块被区块链抛弃
这种事其实每时每刻都在上演,并不罕见。区块如果被废弃了,其中包含的挖矿奖励怎么办?对比特币来说,赢者通吃,失败者将一无所有,只能等待下一次机会。下面我们看看以太坊的设计是怎么处理临时分叉出现的孤块的。
2. 以太坊的叔块设计
以太坊创造了一个新的名词叔块(Uncle Block)。对高度3的区块来说,绿色区块是他的父区块。黄色区块虽然失败了,但好歹也是高度1的区块的子区块,绿区块的兄弟区块。于是,高度3的区块就称这个黄区块为叔叔,叔块就是这么得名的。
叔块概念的引入
不能成为主链一部分的孤块,如果有幸被后来的区块通过uncles字段收留进区块链就变成了叔块。如果一个孤块没有被任何区块收留,这个孤块还是会被丢弃,不会进入区块链,也就是说孤块被收留后才会变成叔块。
以太坊的设计比比特币人性的多,叔块也是可以获得奖励的,矿工们有较大的概率不白忙乎了。而且收留了叔块的区块还有额外的奖励,收留叔块也被称为包含叔块。
下图就是高度3的区块包含了一个叔块,不过叔块也就仅仅是被包含而已,叔块中的交易会重新回归交易池,等待重新打包。一个区块最多只能包含2个叔块。
叔块被包含
以太坊为什么要这么设计呢?因为以太坊的区块时间是15秒左右,相对于比特币,更容易出现临时分叉和孤块。较短的区块生成时间,使得区块在整个网络中更难以充分传播,尤其是对那些网速慢的矿工,这是一种极大的不公平。为了平衡各方利益,才设计了这样一个叔块机制。叔块在全部挖掘出来的区块中占的比例叫叔块率,目前叔块率为16.5%,呈上升趋势。
三、高级语言
以太坊相比比特币的创新即引入图灵完备,进而使智能合约的应用成为可能。同时,还具备一个基础计算环境——以太坊虚拟机(EVM),合约代码的执行均在EVM上进行。
同时,以太坊提供高级语言便于编写智能合约,最终高级语言会被编译成为EVM中执行的EVM字节码,并部署在以太网区块链上。以太坊目前提供三种编程语言:
(1)Solidity,类似JavaScript语言;
(2)Serpent,类似Python语言,整合了低级语言的效率及易用性;
(3)LLL(Lisp like language),像Lisp的语言。
参考文献:
1. 比特币、以太坊的区块链架构比较及浅析(下)
2.以太坊(Ethereum ETH)的奖励机制
领取专属 10元无门槛券
私享最新 技术干货