区块链2.0:以太坊应用开发指南
上QQ阅读APP看书,第一时间看更新

1.2 区块链2.0:以太坊

区块链1.0主要是“虚拟币”的相关应用;区块链2.0是以太币与智能合约相结合,实现除金融领域外更广泛的场景和流程应用,其典型代表有以太坊、超级账本,其中以太坊由于对智能合约近乎完美的支持,而被称为“全球计算机”。

1.2.1 区块链2.0特征

区块链2.0实现了智能合约的功能,从而使区块链系统具有图灵完备的计算能力,可以在区块链上传和执行应用程序,并且程序的有效执行能得到保证。相对于区块链1.0,区块链2.0有如下优势。

(1)支持智能合约。区块链2.0定位于应用平台,在这个平台上,可以发布各种智能合约,并能与其他外部IT系统进行数据交互和处理,从而实现各种行业应用。

(2)交易速度更快。通过采用实用拜占庭容错(PBFT)、权益证明(POS)、分布式权益证明(DPOS)等新的共识机制,区块链2.0的交易速度有了很大的提高,峰值速度已经超过了3 000TPS(每秒处理交易数量),远远高于区块链1.0的5TPS,已经能够满足大部分的金融应用场景。

(3)支持信息加密。区块链2.0因为支持完整的程序运行,可以通过智能合约对发送和接收的信息进行自定义加密和解密,从而达到保护企业和用户隐私的目的,同时零知识证明等先进密码学技术的应用进一步推动了其隐私性的发展。

(4)绿色环保。为了维护网络共识,比特币使用的算力超过122 029 TH/s,相当于5 000台天河2号A运算速度,每天耗电超过2 000MWh。区块链2.0采用PBFT、DPOS、POS等新共识机制的客户端,将不再需要通过消耗算力达成共识,使其能绿色环保地部署。

1.2.2 以太坊及关键支撑技术

以太坊是区块链2.0的代表,由1994年出生的程序员维塔利克·布特瑞带头创建,该平台可以通过编程来执行任意复杂度的计算,因此可支持诸多去中心化应用场景,很多分布式应用均可基于该平台来开发和部署。作为一个支持各类去中心化应用开发的基础性平台,以太坊当前受到区块链业界非常广泛的关注和重视,是目前区块链应用开发领域中最耀眼的明星之一。

以太坊沿用了区块链1.0中已实践证明行之有效的技术与机制,如非对称加解密、散列(Hash)计算、共识机制、P2P协议等,另外也加入了一些自身的独到创新,如虚拟机、智能合约。以太坊所采用的关键算法及技术如下。

1.非对称加解密

非对称加解密算法包括两个密钥:公开密钥和私有密钥。公钥与私钥是一对,如果用公钥对数据进行加密,只有对应私钥才能解密;如果用私钥对数据加密,那么只有对应公钥才能解密。加密和解密使用的是两个不同的密钥,这种算法称为非对称加解密算法。

非对称加解密算法实现机密信息交换的基本过程:甲方生成一对密钥并将其中的一个作为公用密钥向其他方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一个专用密钥对加密后的信息进行解密。区块链中使用非对称加解密来建立用户的账户,并对交易和消息签名和签收。

2.散列算法

散列算法是一种单向密码体制,它是一个从明文到密文的不可逆映射,只有加密过程,没有解密过程。散列函数可以将任意长度的输入经过变化后得到固定长度的输出。散列函数的这种单向特征和输出数据长度固定的特征使得它可以生成消息或者数据。散列算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为散列值。散列值的数据是唯一的,且通过极其紧凑的数值来表示。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的散列都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上是不可能的,所以数据的散列值可以检验数据的完整性。

散列算法在区块链中获得了广泛的应用,如区块、交易的编号(地址)和内容验证、共识机制中挖矿节点对随机数的搜索与区块散列验证。常见的散列算法有SHA1、SHA256、SHA512,在以太坊中就运用了SHA256。

3.P2P网络

P2P网络,即对等计算机网络,是一种在对等者(peer)之间分配任务和工作负载的分布式应用架构,是对等计算模型在应用层形成的一种组网或网络形式。网络的参与者共享他们所拥有的一部分硬件资源(处理能力、存储能力、网络连接能力、打印机等),这些共享资源通过网络提供服务和内容,能被其他对等节点直接访问而无 须经过中间实体。在此网络中的参与者既是资源、服务和内容的提供者(Server),又是资源、服务和内容的获取者(Client)。

区块链网络就是一个P2P网络,每个区块链网络节点就是一个Peer。

4.共识机制

共识机制是区块链事务达成分布式共识的数学算法,由于点对点网络下存在较高的网络延迟,各个节点所观察到的事务先后顺序不可能完全一致。因此,区块链系统需要设计一种机制对在差不多时间内发生的事务的先后顺序进行共识。这种对一个时间窗口内的事务的先后顺序达成共识的算法被称为“共识机制”。区块链常用的共识机制主要有工作量证明(POW)和权益证明(POS)两种。

POW:具有算法简单,容易实现,节点间无须交换额外的信息,破坏系统需要投入极大的成本等优点,但也具有浪费能源、区块的确认时间难以缩短、容易产生分叉、需要等待多个确认等缺点。

POS:将POW中的算力改为系统权益,拥有权益越大则成为下一个记账人的概率越大。这种机制的优点是不像POW那么费电,但也具有容易产生分叉、需要等待多个确认、需要检查点机制来弥补最终性等缺点。DPOS在POS的基础上,将记账人的角色专业化,先通过权益来选出记账人,然后记账人之间再轮流记账。

5.以太坊虚拟机

以太坊虚拟机(Ethereum Virtual Machine,EVM)是由以太坊客户端软件提供的具有完整系统功能,可灵活支持各类去中心化应用的代码执行环境。它可以执行任意复杂度的算法代码,因而在计算机科学术语中,以太坊是图灵完备的。开发人员能够使用编程友好的高级语言,如类JavaScript和Python,创建运行在以太坊虚拟机上的应用程序。此部分内容将在第2章进行详细介绍。

6.智能合约语言——Solidity

Solidity是以太坊中用于编写智能合约的面向对象的程序设计语言。Solidity可用于各类区块链平台智能合约的实现编程。由加文·伍德(Gavin Wood)、克瑞斯·锐伟斯勒(Christian Reitwiessner)、亚历克斯·柏瑞扎兹(Alex Beregszaszi)、姚奇·哈瑞(Yoichi Hirai)和几个前以太坊核心人员创建。Solidity是一种类JavaScript语言,编码风格与JavaScript的类同,支持图灵完备的程序代码设计。

1.2.3 以太坊:区块链2.0工业开发标准

目前区块链2.0的技术架构主要有以太坊和Linux基金会于2015年发起的超级账本(Hyperledger)。以太坊由于技术架构的清晰定义、行业的广泛支持与生态系统的成熟,已逐步成为区块链上的工业开发标准,是区块链从业者应该首选的学习内容之一。

从体系结构上来看,以太坊共包括6层结构,如图1.1所示。

1.数据层

以太坊数据层是一个“区块”+“链”的数据结构,本质是一个分布式区块链,以非对称加解密、散列计算等技术为基础,确保一个区块链数据账本决定一个网络,每个区块链的数据不易篡改。

图1.1 以太坊体系结构

2.网络层

以太坊网络层遵循P2P协议,确保网络的开放和稳定服务,互联网用户的自由、平等参与和区块链数据的同步等。

3.共识层

共识层决定区块链的记账权获取机制。采用POW,电脑的性能越好,封装区块越容易成功并获得“虚拟币”奖励;采用POS,类似股份公司股权的概念,会根据持有的“虚拟币”数量和时间,由“股权”拥有者按其“权益”比例获得区块封装权利,并根据封装区块获得挖矿奖励。

4.激励层

激励层即以太坊的挖矿机制,是对为网络提供计算及验证服务的矿工的奖励措施。当前以太坊对成功封装并被网络确认一个区块的奖励是系统通过增发授予矿工5个“虚拟币”,同时矿工获得当前区块所有交易所发送的燃料。此外,以太坊对成功挖矿并成功封装区块但未被纳入主链的“叔区块”也有奖励,奖励金额为正常区块的87.5%。

5.合约层

在区块链1.0中是没有这一层的(或者这一层功能很弱,仅能执行一些简单功能),所以区块链1.0只能进行“虚拟币”的相关应用,而无法用于其他领域或说是无法进行其他的逻辑处理。合约层的出现,使得在“虚拟币”以外的其他领域使用区块链有了可能,比如用于物联网(IOT)。在以太坊中,本部分包括了以太坊虚拟机和智能合约两个组成部分。

6.应用层

区块链的展示层与业务层,以太坊通过使用Web3等应用接口,使各类应用与区块链集成,区块链的应用层可以是移动端、Web端,或是直接融合进现有的业务服务器,把当前的业务服务器当成应用层。

以太坊通过6层技术架构的清晰分工协作,有效地保证了区块链技术体系的系统性、完整性、灵活性与开放性,将为区块链技术不断发展、演变和广泛应用奠定坚实的基础。