美文网首页区块链技术
十分钟轻松入门——以太坊白皮书解读

十分钟轻松入门——以太坊白皮书解读

作者: 自由心的成长空间 | 来源:发表于2018-03-21 11:42 被阅读156次

    白皮书比较偏学术,有很多语言对于没有计算机知识背景的小白来说很难理解。所以在写这篇文章的时候,我就对自己说,要用最简短的语言最白话的文字,以最通俗的方式介绍以太坊开发中涉及的各晦涩的概念,轻松带大家入门。

    目录

    一、以太坊是什么?

    二、以太坊的设计哲学

    三、以太坊的基础区块创建

    四、智能合约及应用

    五、费用

    六、结论

    大名鼎鼎的以太坊发明人V神 以太坊Logo

    一、以太坊是什么呢?

    以太坊(Ethereum)是一个建立在区块链技术之上, 去中心化应用平台。它允许任何人在平台中建立和使用通过区块链技术运行的去中心化应用。

    怎么理解这句话呢?你可以把以太坊理解为一个Android系统,就是一个开发平台,在这个系统上可以加载各种应用。用户可以把以太坊当作“金融积木”来用,在这上面可以发行货币、定制金融衍生品,构建身份系统和去中心化组织也变得非常容易。因此,它也被称为加密货币2.0版本。

    为什么需要这个新平台呢?

    在比特币的脚本中,我们讲到过比特币的交易是可以编程的,但是比特币脚本有很多的限制,能够编写的程序也有限,人们很想把比特币应用到货币以外的领域。但是很难实施,因为比特币的脚本系统,比如基于比特币的彩色币和所谓“元币”等下一代加密货币运行一些复杂运算受到限制。

    在没有以太坊之前,写区块链应用是这样的:拷贝一份比特币代码,然后去改底层代码如加密算法,共识机制,网络协议等等(很多山寨币就是这样,改改就出来一个新币,比如莱特币)。

    而以太坊平台对底层区块链技术进行了封装,相当于底层框架都已经搭建好了,让区块链应用开发者可以直接基于以太坊平台进行开发,开发者只要专注于应用本身的开发,从而大大降低了难度。

    二、以太坊的设计哲学

    1.简洁原则

    以太坊的设计非常简单。一个普通的程序员也能够完美地去实现完整的开发说明。

    2.通用原则

    以太坊设计哲学的一个根本性部分就是没有”特性“。它提供了一个内部非常图灵完备的脚本语言,用户可以基于此做各种想要的智能合约或交易类型。

    3.模块化原则

    这个很好理解,你可以把以太坊看作乐高积木的一个个小块,以太坊的不同部分都被设计成这种模块化、可分割的小块,但是组合搭建在一起可以变换出千变万化的花样来。

    4.无歧视原则

    以太坊的协议没有特定地阻碍或者限制某些特定的类目或用法,对所有人都是一视同仁。你甚至可以运行一个无限循环的脚本,只要你愿意支付交易费用。

    三、以太坊的基础区块创建

    1.修改的幽灵协议

    幽灵协议,名字很唬人,其实就是一个英文的缩写Greedy Heaviest Observed Subtree” (GHOST) protocol--GHOST。

    协议要解决什么问题呢?如果出块时间比较短那么同时出块的概率增加那么就容易产生分叉问题和区块作废的问题,这个协议就是用来减少作废区块的。

    以太坊的出块速度是15秒远快于比特币的10分钟,那么同一时间两个不同的节点通过POW计算出结果的概率大幅上升,比特币中可以作废一个保留另外一个,以太坊中有可能作废的不止一个,那么一个矿工的计算结果有可能被连续作废,甚至有矿工有可能跟着这个未被主网认可的区块继续挖矿,这样会引起混乱,这些区块被称为孤块。文章中有一个很形象的比喻,这些孤块相当于“游荡的幽灵”,这个协议叫做幽灵协议就非常形象了。

    以太坊为了防止孤块引起的混乱,就引入了幽灵协议(就是前面那个减少孤块的协议),减少的方式是将其链接在主网上面并给予奖励。相当于八路军收编土匪一样,不让土匪演变成太平军。

    不过以太坊只采用了幽灵协议的最基础部分,即废区块只能以叔区块的身份被它的兄弟区块的子区块,而不是更远关系的后辈区块纳入计算。

    这样是为了防止计算哪一个叔块合法带来的复杂性,以及防止剥夺矿工在主链上挖矿的激励。

    2.货币及其发行

    以太坊网络包含了它内建的货币——以太币。

    相对于比特币系统来说,以太坊系统更加复杂,就拿以太坊总量的计算来说,全世界2100万个,但是以太坊就不一样,他有一套公式去计算,即矿钱+区块奖励+叔块奖励+叔块引用奖励这样的方式计算,具体的计算公式如下:

    以太坊发行总量=X+0.099X+0.099X

    以太币有两个作用:一是奖励给矿工促进网络安全。二是用来支付交易费用。

    发行的模型如下所示:

    通过发售活动,以太币将以每BTC 1337-2000以太的价格发售,一个旨在为以太坊组织筹资并且为开发者支付报酬的机制已经在其它一些密码学货币平台上成功使用。早期购买者会享受较大的折扣,发售所得的BTC将完全用来支付开发者和研究者的工资和悬赏,以及投入密码学货币生态系统的项目。

    0.099x (x为发售总量)将被分配给BTC融资或其它的确定性融资成功之前参与开发的早期贡献者,另外一个0.099x将分配给长期研究项目。

    自上线时起每年都将有0.26x(x为发售总量)被矿工挖出。

    正如白皮书所说:

    我们看到这种模式降低了比特币那种财富过度集中的风险,并且给生活在现在和将来的人们公平地获取财富的机会,同时能够激励人们获取和持有以太币,因为从长远来看通胀率是趋近于0的。

    3.挖矿算法

    比特币用的是POW工作量证明方式,Pow算法概念简单,即工作端提交难以计算但易于验证的计算结果,其他节点通过验证这个结果来确信工作端完成了相当的工作量。

    但其缺陷也很明显:1、随着节点将CPU挖矿升级为GPU、甚至矿机挖矿,节点数和算力已渐渐失衡;2、比特币等网络每秒需完成数百万亿次哈希计算,资源大量浪费。

    为此,业内提出了Pow的替代者如PoS权益证明算法,即要求用户拥有一定数量的货币,才有权参与确定下一个合法区块。另外,相对拥有51%算力,购买超过半数以上的货币难度更大,也使得恶意攻击更加困难。

    以太坊的挖矿采用POW(工作量证明)+POS(权益证明机制)相结合的方式。

    四、智能合约及应用

    1.智能合约是什么?

    以太坊上的程序称之为智能合约, 它是代码和数据(状态)的集合。

    智能合约可以理解为在区块链上可以自动执行的(由事件驱动的)、以代码形式编写的合同(特殊的交易)。

    相比比特币,以太坊则更加完备(在计算机科学术语中,称它为是“图灵完备的”),让我们就像使用任何高级语言一样来编写几乎可以做任何事情的程序(智能合约)。

    2.DAO是什么?

    DAO去中心化自治组织(DAO, decentralized autonomous organization)对应的是中心化自治组织DAC(decentralized autonomous corporation)。

    去中心化:想各种办法让参与者共同说了算,以太坊白皮书中说的67%同意只是设定的规则之一,可以让持币多的占更多话语权,也可以按照参与者的数量平均分配话语权。自治:即自动执行,通过一系列公开公正的规则,可以在无人干预和管理的情况下自主运行。

    延伸阅读:说到后来导致以太坊分叉的DAO更多称为 The DAO,The DAO项目是区块链物联网公司Slock.it发起的一个众筹项目。原本该公司只想采用DAO(去中心化自治)来运作自己的系统Universal Sharing Network (USN)。后来发现这个机制也适合其他项目,因此决定创建The DAO,意为“DAO之母”。DAO是去中心化的自治组织,这个项目募集了超过1.5亿美元的资金。在接近尾声的时候被黑客攻击。近6000万美元ETH被盗走。以采访社区,最终做出投票表决,大部分参与者同意更改以太坊代码,把黑客偷走的资金转移回来,重新回到投资者的钱包里。从这个过程当中是看到区块链的共识不是一成不变的,代码毕竟是人写出来。也并非想改就随意的改,而是通过社区投票表决,听大多数人的意见,最终做出对于社区成员有利的事情。去中心化和中心化并不矛盾,这是为我们想要达到的目的服务,并非死守一个原则不变化。

    3.Dapp:去中心化的应用程序

    以太坊社区把基于智能合约的应用称为去中心化的应用程序(Decentralized App)。如果我们把区块链理解为一个不可篡改的数据库,智能合约理解为和数据库打交道的程序,那就很容易理解Dapp了,一个Dapp不单单有智能合约,比如还需要有一个友好的用户界面和其他的东西。

    智能合约非常适合对信任、安全和持久性要求较高的应用场景,比如未来可以应用的场景有:数字货币、数字资产、投票、保险、金融应用、预测市场、产权所有权管理、物联网、点对点交易、去中心化自治组织等等。

    以太坊的应用

    目前除数字货币之外,真正落地的应用还不多(就像移动平台刚开始出来一样),相信1到3年内,各种杀手级会慢慢出现。

    五、费用

    GAS即费用的意思

    和云计算相似,占用区块链的资源(不管是简单的转账交易,还是合约的部署和执行)同样需要付出相应的费用(天下没有免费的午餐对不对!)。

    以太坊上用Gas机制来计费,Gas也可以认为是一个工作量单位,智能合约越复杂(计算步骤的数量和类型,占用的内存等),用来完成运行就需要越多Gas。

    任何特定的合约所需的运行合约的Gas数量是固定的,由合约的复杂度决定。

    而Gas价格由运行合约的人在提交运行合约请求的时候规定,以确定他愿意为这次交易愿意付出的费用:Gas价格(用以太币计价) * Gas数量。

    Gas的目的是限制执行交易所需的工作量,同时为执行支付费用。EVM(Ethereum Virtual Machine)以太坊虚拟机是以太坊中智能合约的运行环境。当EVM执行交易时,Gas将按照特定规则被逐渐消耗,无论执行到什么位置,一旦Gas被耗尽,将会触发异常。当前调用帧所做的所有状态修改都将被回滚, 如果执行结束还有Gas剩余,这些Gas将被返还给发送账户。

    如果没有这个限制,就会有人写出无法停止(如:死循环)的合约来阻塞网络。作为图灵完备的以太坊,GAS的设计也预防了无限循环攻击。

    因此实际上(把前面的内容串起来),我们需要一个有以太币余额的外部账户,来发起一个交易(普通交易或部署、运行一个合约),运行时,矿工收取相应的工作量费用。

    六、结论

    看好以太坊

    综上所述,以太坊致力于减少复杂性减少特性,成为一个通用的底层平台,在这上面可以创建各种各样的应用,它是开放的、去中心化的平台。它值得拥有。

    相关文章

      网友评论

      本文标题:十分钟轻松入门——以太坊白皮书解读

      本文链接:https://www.haomeiwen.com/subject/qpdbqftx.html