以太坊介绍|第14讲
大家好,欢迎来到《王毅带你认知区块链》第十四讲:以太坊介绍。从本节课开始咱们进入专栏的第二大模块:技术架构篇。我会依次为大家介绍目前的几个主流框架:以太坊、fabric、ripple、EOS以及分布式文件存储IPFS技术。今天咱们先从以太坊讲起。
01
什么是以太坊
以太坊由俄罗斯开发者Vitalik在2013年创建的,咱们先看一下官网原版对以太坊的定义,我把官方网址附到文稿里:https://www.ethereum.org
以太坊是运⾏在一个计算机网络中的软件,它确保数据以及称为智能合约的⼩程序可以在没有中心协调者的情况下被所有网络中的计算机复制和处理。以太坊的愿景是创建一个无法停⽌,抗屏蔽(审查)和自我维持的去中⼼心化世界计算机。
读起来比较拗口,但从这个定义中我们可以看出以太坊和比特币相似,是一个基于区块链技术的分布式计算平台,不过它更强调自己是一个智能合约系统。其实它的本质是和比特币一样的,只不过,你可以在这个平台里自己生成任意多个不同的比特币系统而已。
02
比特币和以太坊
下面咱们对比一下比特币和以太坊,我们之前学过比特币的原理,但是它也有很多的不足,比如说比特币区块链缺少图灵完备(图灵完备是指一切可计算的问题都可以计算)。比特币不能支持所有种类的计算,也无法为账户或取款额度提供精细的控制,导致比特币区块链的扩展性比较差,不能应用在除了比特币以外的其他领域,而以太坊就建立一个图灵完备的底层系统,在这个区块链之上,你可以通过简单的程序来实现各类数字资产的生产,也就是对资产进行精确的控制,比如说资产是待支付还是被锁定、额度限制,黑白名单,以太坊和其他资产的自由兑换等等,同时,以太坊还是一个可编程,图灵完备的区块链网络,在这个网络之上我们也可以实现更多的非资产类的功能型产品,比如说把以太坊的智能合约应用到日常生活和企业活动中也是可以的,简单说以太坊技术就是区块链技术加上智能合约。
03
以太坊的四阶段介绍
以太坊发展的四个阶段:Frontier,Homestead,Metropolis,Serenity,翻译成中文分别是:前沿、家园、大都会和宁静。这几个阶段之间的转换需要通过硬分叉的方式来实现。
Frontier(前沿)
前沿是以太坊的最初版本,只有命令行界面,主要使用者是开发者。始于2015年7月30日,该阶段的用途是:将挖矿和交易所运行起来,建立一个让人们可以在里面测试分布式应用(Dapps)的应用。
Homestead(家园)
2016年3月14日,以太坊发布第二个版本:家园。家园可以说是以太坊第一个正式的产品发行版本,与前沿相比,家园增加了类似Windows系统那样的图形界面,普通用户也可以方便地体验以太坊的功能。
目前以太坊仍运行在该阶段,100%采用PoW挖矿,但是挖矿的难度除了因为算力增长而增加之外,还有一个额外的难度因子呈指数级增加,这就是难度炸弹(Difficulty Bomb)。
这里解释一下难度炸弹,难度炸弹指的是计算难度时除了根据出块时间和上一个区块难度进行调整外,加上了一个每十万个区块呈指数型增长的难度因子。这有点像一个温水煮青蛙的过程,一开始附加的难度并不引人注意,但是随着区块高度的增加,呈指数增长的难度因子比重将会显著提高,使得出块难度大大增加,矿工将难以挖出新的区块。这主要是为后期转型PoS机制做准备,由于PoS的运用将会降低挖矿的门槛,因此你不需要再去购买价格高昂的硬件矿机,只需要购买一定数量的ETH,将其作为保证金通过权益证明的方式验证交易有效性,即可拿到一定的奖励。因此,对矿工来说他们花高价购买的矿机将无用武之地,这势必会引起矿工的不满。为了防止PoW转PoS的过程中矿工联合起来抵制,从而分叉出两条以太坊区块链,所以难度炸弹被引入。
Metropolis(大都会)
接下来说一下第三个版本,大都会。大都会加入了一个像谷歌浏览器那样的浏览器,除了使用方便之外,它还拥有一个强大的应用商店,可以安装插件实现更多功能。
Serenity(宁静)
最后一个版本:宁静。到时PoS的实行将会吸引更多分布式节点的加入,为各种分布式应用(Dapp)的运行打下物理基础,以太坊将有希望成为去中心化领域的App Store,互联网的新时代也将到来。
04
以太坊的共识机制与挖矿
以太坊有四个版本,前沿、家园、大都会和宁静。从以太坊的规划来看,前三个版本使用共识机制POW,到宁静时,再转为POS。
4.1共识机制
以太坊目前处于第二阶段,也就是家园阶段,100%采用PoW挖矿。从家园到宁静,从PoW到PoS,这个过程中,以太坊通过难度炸弹的调节来避免以太坊被分成两条链,引导大家平稳过渡到PoS。
以太坊计划采用基于保证金的经济激励共识协议,我们称它为Casper。协议中的节点,作为“锁定保证金的验证人(bonded validators)”,必须先缴纳保证金才可以参与出块和共识。Casper共识协议通过对这些保证金的直接控制来约束验证人的行为。具体来说就是,如果一个验证人作出了任何Casper认为“无效”的事情,他的保证金将被罚没,出块和参与共识的权利也会被取消。保证金的引入解决了"nothing at stake",也就是经典POS协议中做坏事代价很低的问题。现在有了代价,而且被客观证明做错事的验证人将会付出这个代价。
以太坊PoS的共识机制还在商讨中,所以到宁静阶段,PoS的具体细节可能才能完全敲定。
4.2挖矿原理
以太坊当前的共识机制是 PoW(Proof of Work 工作量证明机制),使用的算法是Ethash,它是Dagger-Hashimoto算法的改良版本。挖矿的流程大概如下:
-
对于每一个块,首先计算一个种子,该种子只和当前块的信息有关,然后根据种子生成一个32M的随机数据集(Cache)。
-
根据随机数据集Cache生成一个1GB大小的数据集合DAG(有向非循环图),它是一个完整的搜索空间,挖矿的过程就是从DAG中随机选择元素(类似于比特币挖矿中查找合适Nonce)再进行哈希运算,可以从Cache快速计算DAG指定位置的元素,进而哈希验证。
在这要求对Cache和DAG进行周期性更新,每1000个块更新一次,并且规定DAG的大小随着时间推移线性增长,从1G开始,每年大约增长7G左右。
05
基础概念名词
为了便于后续课程的理解,接下来给大家介绍一些基础名词。
第一个概念是以太币,简称ETH,以太币是以太坊的内部燃料,为以太坊上各种币的自动交易提供主动的流动性,同时也适用于智能合约执行的费用支付,它是以太坊内置的资产,是用来支付智能合约运行的,这个概念理解起来相对比较简单,所以这就是以太坊上运行智能合约的门槛,这个门槛对于认真想做开发的人员来说成本较低,但是对于大量运行垃圾项目的开发者,就会是一个较大的负担了,不过以太坊的这个门槛就是燃料,我们叫做gas,gas是用以太币来进行兑换的。
第二个概念就是以太坊虚拟机:EVM,在一个编程系统之上,通常会有一些编译或者执行虚拟机做支撑,那么在以太坊里面也会有相应的虚拟机来支撑执行任何复杂的代码和算法,这就是EVM,后续章节中会做深入介绍。
第三个概念智能合约,指的是由计算机程序定义自动执行的承诺和协议,其实说白了就是脚本代码,智能合约早在互联网发展之初就被提出来了,之所以到以太坊才被使用,是因为以太坊为智能合约的运行提供了一个安全不可篡改的环境,这样才有了智能合约存在的意义,智能合约一旦创建,就会自动运行,并且没有人能阻止其运行。
结尾
以太坊的基础认知就介绍到这里。从下节课开始,我会带着大家深入了解以太坊技术,包括:以太坊账户管理、区块结构解析、以太坊交易及GAS计算、以太坊的运行原理(上和下)和以太坊虚拟机的安装及部署介绍等内容。咱们下周五见。