以太坊作为区块链的一个较为成熟的平台,以其安全可靠和易用性被很多开发者和公司所信任。以太坊整体架构如图所示。
以太坊最底层主要包括p2p协议,这是一种不存在中心服务器、两个节点之间直接进行网络通信的协议,只有基于p2p,区块链才能提供去中心化的服务。共识算法是区块链平台的核心组成部分,是不同节点之间达成一致性的算法和策略,目前以太坊最重要的两种共识算法是pow和pos。evm即以太坊虚拟机,是去中心化应用运行的容器,智能合约被编译成字节码后可以运行在evm中。LevelDB是以太坊底层的数据库,是有谷歌实现的非常高效的键值数据库,目前很多基于企业级的区块链平台底层也是使用Le velDB进行存储的。多种不同的非对称加密、哈希算法从密码学角度保证了在以太坊平台上的账户安全和交易信息安全,并使用数字签名和验证签名等机制保证了数据的不可篡改。Solidity是目前编写智能合约的主要语言是以太坊推荐的旗舰语,也是最流行的智能合约语言之一。RPC远程过程调用是以太坊提供给外界访问的接口,上层应用可以用JSON-RPC的方式和以太坊进行交互,来调用合约或者发送以太币,所有的业务逻辑通过智能合约来实现。
## 以太坊共识机制
共识机制是多个节点之间达成一致性的 一种数学算法。在区块链中,共识机制的作用显得尤为重要。由于区块链中的每个节点都是相互独立的,而每一个极点都存有分布式账本的完全备份,如何对这些账本数据进行一致性验证就是共识机制需要考虑的问题。换句话说,共识机制就是在不同节点之间建立信任,获取权益的数学算法。它允许关联机器连接起来进行工作,并在某些成员失效的情况下仍能正常运行。
常见的共识机制有工作量证明算法、权益证明、股份授权证明和拜占庭容错,基于不同的应用场景和共识机制等特性,可以通过以下纬度来拼价共识机制的优劣。
(1)合规监管: 是否支持超级权限节点对全网节点、数据进行监管。
(2)性能效率:交易达成共识并且确认的效率。
(3)容错性:防攻击、防欺诈的能力。
(4)资源消耗:共识过程中的资源消耗,如CPU、网络IO、存储等计算资源。
下面就几种常见的共识机制介绍如下。
(1)PoW:工作量证明。依赖于机器进行数学运算来获取记账权,资源消耗相比其他共识机制高,可监管性弱。并且每次达成共识都需要全网共同参与运算,性能效率相对较低,在容错性方面,允许全网50%的节点出错,也就是51%攻击。目前以太坊采用的就是这种PoW共识机制。
(2)PoS:权益证明。属于PoW的升级版本。根据每个节点所占代币的比例和时间,等比例地降低计算难度,从而加快查找随机数的速度。PoS在一定程度上缩短了共识达成的时间,但是还是需要消耗时间,本质上没有解决商业应用的痛点,在容错性方面于pow类似。以太坊之后将会转为pos算法。
(3)DPoS:股份授权证明机制。于PoS不同之处在于投票选举一定数量的节点,进行代理验证和记账。DPoS大幅缩减参与验证和记账的节点的数量,可以达到妙级的共识验证,但是整个共识机制还依赖于代币,而很多商业应用是不需要代币存在的。
(4)Paxos:一种基于选举领导者的共识机制。领导者节点拥有绝对权限,并允许强监管节点参与。性能高,资源消耗。选举过程中不允许有作恶节点,不具备容错性。
(5)PBFT:拜占庭容错。与Paxos类似,也是一种采用许可投票、少数服从多数来选举领导者进行记账的共识机制。该共识机制允许拜占庭容错,允许强监管节点参与,具备权限分级能力,性能更高,耗能更低,允许33%的节点作恶,不具备容错性。
与以太坊有关的是PoW 和Pos算法。以太坊项目分为Frontier、Homestead、Metropolis和Serenity四个阶段。在前面三个阶段,以太坊共识算法采用的是PoW,在第四个阶段会转移到PoS。
PoW共识机制已经非常成熟,但它的实现需要消耗大量的电力成本,PoS虽然仍处于发展阶段,但在效率和成本方面有诸多优势,不再需要为了安全产生区块而消耗大量电能。未来一点时间,PoS将会得到快速发展。