第十九讲 || 以太坊:夯实区块链的地基

​以太坊是区块链二代技术的代表,其最核心的贡献是提出并实现了智能合约,从此使区块链真正成为了一个底层技术。以太坊也是目前业界影响最大、生态最完整,社区开发者支持最多的区块链开源技术体系。以以太坊技术为基础的以太坊主网络ETH,目前的市场仅次于比特币。


2013年年末,以太坊创始人Vitalik Buterin发布了以太坊白皮书,区块链技术开始进入新的历史阶段。以太坊继承了比特币最核心的技术特征,如非对称加解密实现不依赖第三方的点对点可信交互,P2P网络实现用户的自由参与与相互服务,共识算法确保全网区块数据的一致性,激励机制激发互联用户的参与热情。但与比特币不同的是,以太坊让这些底层的技术转变为基础支撑技术,而不再支持单一的虚拟币应用,因此以太坊重点通过对智能合约及虚拟机的实现来支持开放与灵活的各类区块链应用。

比特币区块链纯粹就是帐号之间的系列转帐交易列表。在以太坊中,帐号也是基础的工作单元,以太坊区块也是记载帐号之间的交易列表信息,不同的是以太坊所记录的交易信息的内容有了较大的扩展,不仅包括有转帐信息,还包括有智能合约代码信息、输入及计算结果数据等。以太坊区块链跟踪每个帐号的状态,区块链上的状态改变就是帐号之间相关数值和信息的传输。以太坊有两类帐号:外部用户帐号和合约帐号,对大多数用户而言,两类帐号的主要区别是:自然人用户控制用户帐号,因为他们拥有能够控制用户帐号的私钥;合约帐号由他们的内部代码控制。当然,本质上来讲,合约代码仍然是由自然人用户所控制,因为合约代码的触发执行是由具有确定地址的用户帐号触发,而用户帐号又由掌握私钥的自然人控制。通用术语“智能合约”指的是合约帐号中的代码程序,当交易消息发送给该帐号时可自动运行。用户能够通过在区块链中部署代码创建新的智能合约。

合约帐号只能在用户帐号发出指令后执行相应操作。因此合约帐号不可能自发地执行象随机数发生器或API调用等操作,它只能在用户帐号的触发下操作这些功能,合约的执行必须具有确定性,即合约在创建和部署时,就能很确定合约执行的过程及可预期的结果。合约的达成是在部署前就已明确,要让以太坊节点用户认同计算的结果,这就需要严格地保证执行的确定无误。以太坊引入了可编程的智能合约,这就使以太坊网络可能面临用户无休止循环执行智能合约代码,从而造成网络计算资源巨大浪费并最终崩溃的危险。以太坊通过交易有偿计算来解决这个问题,用户必须给以太坊网络支付少量的交易费用。采用这个措施有效避免了网络受到随意浪费、恶意攻击或滥用等计算任务的损害,如DDoS攻击或无休止循环。交易发送者必须为他们所触发交易的每个程序步骤支付费用,包括计算和数据存储。这些费用用以太坊内生基础币——以太币支付。

交易费用由验证网络的节点所收取,这些验证网络的节点被称为矿工,它们在以太坊网络中接收、传播、验证和执行交易。这些矿工把所接收到的交易(包括很多以太坊区块链中的帐号状态更新)组成所谓的“区块”,然后相互竞争谁的区块能被加入到区块链中作为下一个区块。对成功竞争获得加入区块链下一个区块的矿工将获得以太币奖励。这个经济激励措施鼓励大家把他们自身的硬件和电力资源投入到以太坊网络中。正如比特币网络,矿工要成功“挖”到一个区块,必须要解决一个复杂的数学问题。这个机制被称为工作量证明(POW)。任何解答问题比验证答案难度系数大得多的算法都可以用于POW方案。为了不出现如比特币网络中那样大规模中心化使用特殊的硬件(如ASICs),以太坊采用“内存困难”计算问题。如果一个问题既需要内存也需要CPU,理想的硬件将是通用计算机。这个特点使以太坊的POW具有抗ASIC计算的能力,使以太坊网络相较其它被特殊硬件主宰的区块链,如比特币网,更加具有去中心化的分布式安全能力。

以太坊的客户端实现按照数据层、网络层、共识层、激励层、合约层和应用层六层构建,所包括的软件模块如上图所示。

以太坊的矿工(Miner)在一个分布式的网络(Network)中进行着挖矿操作,就是实现POW(或者POS)的一个共识算法过程。网络(network)的同步(sync)是指各矿工共识过程同步,共识后产生的新区块链(blockchain)形成的最新账本也需要通过同步模块(sync)在个节点间实现数据同步。
每产生一个新的区块(block),需要通过共识过程对区块验证(blockvalidator),即需要哈希计算验证、签名、定序等。因此 区块链(blockchain)、共识算法、矿工(miner)、网络(network)是以太坊产生和维护区块链的核心部件。

以太坊平台上的各种去中心化应用(Dapps),需要编写并部署智能合约代码。智能合约代码通过虚拟机(EVM)调用和解释执行,处理区块链(blockchain)与共识的相关事务,同时基于RPC协议(一种用于规范网络从远程计算机程序上请求服务的协议)进行挖矿和网络层事务的交互,从而实现各种交易如转账等具体应用。

以太坊是一个平台,它上面提供各种模块让用户来搭建应用,如果将搭建应用比作造房子,那么以太坊就提供了墙面、屋顶、地板等模块,用户只需像搭积木一样把房子搭起来,因此在以太坊上建立应用的成本和速度都大大改善。具体来说,以太坊通过一套图灵完备的脚本语言(Ethereum Virtual Machinecode,简称EVM语言)来建立应用,它类似于汇编语言。我们知道,直接用汇编语言编程是非常痛苦的,但以太坊里的编程并不需要直接使用EVM语言,而是类似C语言、Python、Lisp等高级语言,再通过编译器转成EVM语言。

上面所说的平台之上的应用,就是合约,这是以太坊的核心。合约是一个活在以太坊系统里的自动代理人,他有一个自己的以太币地址,当用户向合约的地址里发送一笔交易后,该合约就被激活,然后根据交易中的额外信息,合约会运行自身的代码,最后返回一个结果,这个结果可能是从合约的地址发出另外一笔交易。需要指出的是,以太坊中的交易,不单只是发送以太币而已,它还可以嵌入相当多的额外信息。如果一笔交易是发送给合约的,那么这些信息就非常重要,因为合约将根据这些信息来完成自身的业务逻辑。合约所能提供的业务,几乎是无穷无尽的,它的边界就是你的想象力,因为图灵完备的语言提供了完整的自由度,让用户搭建各种应用。

以太坊于2013年年末发布了以太坊初版白皮书,启动了项目。2014年7月24日起,以太坊进行了为期42天的以太币预售。2016年初,以太坊的技术得到市场认可,价格开始暴涨,吸引了大量开发者以外的人进入以太坊的世界。中国三大比特币交易所之二的火币网及OKCoin币行都于2017年5月31日正式上线以太坊。 自从进入2016年以来,那些密切关注数字货币产业的人都急切地观察着第二代加密货币平台以太坊的发展动向。作为一种比较新的利用比特币技术的开发项目,以太坊致力于实施全球去中心化且无所有权的的数字技术计算机来执行点对点合约。简单来说就是,以太坊是一个你无法关闭的世界计算机。加密架构与图灵完整性的创新型结合可以促进大量的新产业的出现。反过来,传统行业的创新压力越来越大,甚至面临淘汰的风险。

比特币网络事实上是一套分布式的数据库,而以太坊则更进一步,它可以看作是一台分布式的计算机:区块链是计算机的ROM,合约是程序,而以太坊的矿工们则负责计算,担任CPU的角色。这台计算机不是、也不可能是免费使用的,不然任何人都可以往里面存储各种垃圾信息和执行各种鸡毛蒜皮的计算,使用它至少需要支付计算费和存储费,当然还有其它一些费用。最为知名的是2017年初以摩根大通、芝加哥交易所集团、纽约梅隆银行、汤森路透、微软、英特尔、埃森哲等20多家全球顶尖金融机构和科技公司成立的企业以太坊联盟。而以太坊催生的加密货币以太币近期又成了继比特币之后受追捧的资产。

以太坊平台上的众筹项目还存在诸多风险,首先以太币不是去中心数字货币,存在巨庄而且持有80%以上的币值,一直未动,相当于每一个币民头顶都悬着一把利刃;其次以太坊的众筹货币分4-5轮进行解禁,需要变现,所以众筹的项目越多,解禁的压力越大;第三众筹基金的融资效应,每一次众筹都需要十倍百倍的以太坊数字货币等待融资,而不是参与交易,众筹结束后这部分货币重新进入市场进行打压;第四众筹基金的参与获利,众筹基金的目的便是获利,融到以太币不是积极参与众筹而是抛售,然后等待币值下降的时候购入再返还给用户,这便是标准的“做空获利”;第五以太坊所有的众筹项目都没有确立以太坊的货币地位,而是以积分、交易税费的形式进行抵扣,也就相当于淘宝币、天猫积分一样的性质,可抵用但是永远无法取代货币的功用。

以太坊的智能合约潜在应用很多。彭博社商业周刊称它是“所有人共享但无法篡改的软件”。更高级的软件有可能用以太坊创建网络商店。以太坊可以用来创建去中心化的程序、自治组织和智能合约。应用目标涵盖金融、物联网、农田到餐桌(farm-to-table)、智能电网、体育赌博等。去中心化自治组织有潜力让许多原本无法运行或成本过高的营运模型成为可能。目前有许多方案正在研究使用以太坊创建许可制的区块链。摩根大通打算用以太坊上创建一个私人区块链“Quorum”。苏格兰皇家银行用以太坊的分布式记账和智能合约平台创建了一个结算交割机制(Clearing and Settlement Mechanism, CSM),可以达成每秒100笔交易、模拟六间银行,平均每个(交易)trip在3到8秒间完成,