EOS区块链应用开发指南(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-03 05:49:05

点击下载

作者:虞家男

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

EOS区块链应用开发指南

EOS区块链应用开发指南试读:

前言

科技界的发展规律遵循“天下大势,分久必合,合久必分”,区块链世界的发展也许正得益于“分”这个大势。

从中心化的传统信息系统世界逐渐过渡到去中心化的区块链新世界,我们正有幸经历着一场从“合”到“分”的生产关系伟大变革。在这个过程中,区块链也在现有如 PoW、PoS 这些完全去中心化的共识方式的基础上,开始了一些从“分”到“合”的有益探索,就像EOS的DPoS+BFT这种去中心化与中心化相结合的共识模式一样。

在分分合合的大势下,EOS 主网正式上线。经历了比特币、以太坊两代区块链的发展,EOS被称为区块链3.0。

对开发者来说,应该怎样学习并进入EOS的世界?如何使用EOS开发DApp?本书希望能够在这些问题上给还未进入区块链世界的开发者们提供一些帮助。第1章 初识EOS1.1 区块链操作系统1.1.1 什么是EOS

EOS 是 Block.One 公司正在研发的一个区块链底层公链系统,其目的是解决现有区块链应用性能低、安全性差、开发难度高以及过度依赖手续费的问题。基于 EOS,任何团队都可以以比较快的速度开发出所需要的DApp(基于区块链的分布式应用),这些应用可以让普通人无须任何手续费(例如,以太坊的Gas)就方便地使用,甚至很难感受到正在使用的是区块链应用。1.1.2 EOS要解决什么问题

目前的区块链技术缺乏使终端用户与开发者连接起来的能力,也缺乏建立大规模业务的技术。因此,Block.One公司提出了EOS,一种高性能以及自治的区块链,一个大规模的面向消费者的分布式应用操作系统。

EOS 的系统设计围绕解决目前阻碍分布式应用被广泛采用的一些主要问题展开。持有EOS代币的第三方分布式应用开发者可以在EOS上发布一个或多个应用。EOS 分布式应用的解决方案对开发者的吸引力在于其可扩展性,例如,在子链、侧链和跨链技术成熟后,EOS 每秒可以处理上达数百万笔交易并且无须用户支付交易手续费。EOS 的团队和合作伙伴都很强大,目前关于EOS的资料和研究团队越来越多。1.1.3 EOS的解决方案1.技术架构方面

通俗地讲,EOS 的技术架构就是可以实现现有任何高性能去中心化应用的基础架构,提供给开发者透明的网络带宽、计算资源、存储资源,并且对开发者友好。

我们可以把EOS看成一个去中心化的阿里云或者AWS生态。它的性能比以太坊(ETH)高许多倍,因此如果拿它做去中心化交易系统、社交网络、即时通信、预测平台等应用,都会有非常好的用户体验,Steem 和BitShares已经是其成功案例。ETH虽然提出了分片和PoS的方案,但目前其扩容进度总体较慢,而EOS已经上线的主网的TPS(代表系统处理能力的性能指标,即每秒处理交易数)最高可达2000多(作者完稿时)。2.经济模型方面

经济模型对于区块链很重要的原因有如下两个。

第一,区块链为了避免网络攻击每次交易需要收取Gas或者手续费。

第二,经济模型作为Token 价值的载体,在整个系统的激励机制中扮演着重要角色。

Gas费用的存在,导致很多小白用户使用区块链应用的门槛很高。试想注册需要发起一个交易,发帖、点赞、删除也需要,并且使用之前还要给ETH 充值。这不符合目前绝大多数用户的互联网免费思维(即用户认为互联网上的产品可以免费使用),而 EOS 平台从机制上支持用户完全免费使用,在初始时可以由应用开发者为用户抵押资源。拥有的代币是一种权益证明,证明你能够使用多少资源。从商业逻辑上看,EOS 支持“B 端收取服务费,C端免费”的模式。3.应用开发方面

EOS的超高性能可以承载数量众多的DApp应用,所以我们可以预见,EOS将成为可以孵化出众多独角兽项目的超级独角兽平台。

EOS为什么那么快呢?核心原因是它使用了DPoS共识机制,ETH全网的节点都参与生产或验证区块,而EOS只有21个超级节点,因此EOS可以更快地达成一致、生产区块。

这些EOS超级节点都是经过社区投票选择出来的,为了保持自己处在投票前列,这些超级节点会投入巨大的成本来升级硬件配置,随着EOS超级节点的逐步竞争和升级,不久的将来它们都会成为一个个超级数据中心。而同时,成为超级节点所获得的代币奖励也非常丰厚,并会随着EOS生态的发展进一步增值。

EOS 的另一个特点是,具有比较好的标准化和封装。作为区块链中的底层公链系统,就像手机的Android系统或iOS系统,开发者在EOS上开发出一款应用,普通用户就可以直接使用,而不需要安装其他辅助性软件。

我们可以把EOS类比成微信,微信为用户提供了账户、支付系统、朋友圈等各种基础设施,然后由开发商在上面直接开发一些小程序,所有的微信用户就都可以使用了。在EOS上,开发商开发的是DApp应用,而且与微信不同的地方是,EOS网络并不受某个公司的控制,它属于整个EOS社区的用户。1.1.4 EOS的生态发展需要哪些支持

EOS 的生态发展需要三个方面的支持:用户、开发者和超级节点,并在他们的互相作用下发展壮大。1.如何满足用户

对普通用户来说,选择DApp应用时的基础需求是用户体验好、免费、安全、可靠。

EOS针对基础需求的解决方案如下。(1)秒级事务处理

所谓秒级事务处理,最简单的例子就是,你在EOS网络上转账,只需要1s就到账了。

不同数字货币的每秒交易处理峰值或者TPS不同,比特币是最少的,每秒最多可处理7笔交易,以太坊每秒15笔,以太坊用户应该都经历过以太坊网络拥堵的时候,一笔转账交易需要接近半天才能到账。

而EOS的终极目标是每秒处理上百万个请求(通过子链和侧链实现)。(2)支持免费使用模型

使用基于 EOS 开发的 DApp,用户并不需要支付任何转账费用、交易费用。

EOS 免费的实现逻辑主要有两种。第一种是抵押机制,这种机制类似于游戏中的回血机制,当你在短时间内大量使用资源时,你的血槽会耗尽,但过一段时间后,你又可以恢复使用资源,而且这种恢复是免费的。第二种是代理机制,由别人来承担用户的系统资源费用,而这个别人可以是服务平台,这种实现逻辑和现在的互联网模式很像。(3)安全、可靠

由于EOS的DPoS共识机制,EOS代码的更新和修改都是比较容易的,只要获得超过15个超级节点的同意,EOS就可以快速地对某个出现的安全问题进行处理,而不会像其他公链那样出现分叉、重大智能合约漏洞无法修复等问题。

基于以上的解决方案,EOS 的用户可以低门槛地使用上面的 DApp 应用,这些也是开发者最关心的问题,因为谁都不想辛辛苦苦开发的 DApp没有用户使用。2.如何吸引DApp开发者

对于DApp开发者,当考虑使用哪条公链开发DApp时,主要考虑的问题包括:能否实现想要的功能?公链的设计对开发者是否友好?公链本身是否自带流量?下面针对这些问题进行解答。(1)能否实现想要的功能

EOS本身是一个开源代码库,代码研发完成后,通过EOS社区启动这条公链,开发者可基于这条公链部署自己的DApp。

EOS 目前已经能够提供一些基础功能,如提供账户、身份验证、数据库、智能合约的开发和部署等。而未来EOS的子链和侧链将为DApp带来持续可伸缩性和可靠的高性能基础服务。

EOS 的基础架构基于 BM(Dan Larimer,EOS 之父)之前设计的BitShares、Steem,两者都已经正常运行几年,而在它们的基础上开发的EOS则更加稳定和强大。(2)是否对开发者友好

EOS可以帮助开发者迅速实现以下这些需求。

● 更灵活和简单的权限控制。

● 可以升级的智能合约。

● 允许开发者指定某些消息必须等待至少一段时间后才能被应用到一个块中,在此期间,消息可以被取消。比如,买房支付时可以延迟72小时确认到账,给买家缓冲时间。

● EOS提供开放的RPC标准接口,供Web程序调用。任何具有基本Web开发经验的人都可以比较轻松地通过EOS RPC API进行DApp开发。

● 资源免费。

在ETH的架构下,开发者每运行一次程序占用的带宽都需要付出Gas,随着ETH代币价格的水涨船高,Gas费用也越来越高。

在EOS的整体架构中,只要开发者账户中有EOS代币,即可享受公链的计算资源、带宽资源。这些资源是可恢复的,不过存储资源除外,因为内存是需要购买的,如果之后不需要这些存储资源了,开发者可以销毁这些资源占用的空间,将释放的内存卖掉。

开发者所持有的EOS代币并不会像ETH的Gas一样被消耗掉,这也就意味着,基于EOS使用CPU和带宽资源相当于免费。

当然,因为EOS系统刚刚上线不久,所以也存在一些问题,比如,目前EOS的智能合约使用C++开发,这对于一些开发者来说可能会有门槛,EOS社区正在继续开发以支持其他语言。另外,目前EOS主网的内存费用较高,这也在一定程度上影响了DApp的开发成本,不过随着EOS逐步升级,这些问题应该都会得到解决。(3)公链本身有没有用户基础

在主流的公链项目中,EOS生态不管在关注度、用户数上都占据优势。

有EOS用户生态的流量作为基础,前期进入的开发者会获得足够多的关注,获得大量低成本的种子用户。(4)开发者生态和投资

Block.One承诺,将成立EOS VC并在EOS的生态项目上投资数十亿美元,做成EOS生态系统基金,通过基金会投资更多的开发者,并在全球举办多场EOS黑客马拉松。

EOS 黑客马拉松目前正在全球多个城市举办,有兴趣参与的读者可以进入其官网了解。3.如何保证系统的“安全、稳定”

超级节点的参与是EOS系统能够“安全、稳定”的关键。

安全、稳定的具体表现如下。(1)用户想参与就参与,不被任何机构裹胁。(2)网络不会因为出现单点故障而导致全局故障。(3)在遭受大规模攻击的情况下,网络可复原。

区块链的治理机制,本质上是在“去中心化”和“效率”中间寻找平衡点。去中心化的本质是为了信任,避免“中心节点”作恶影响整个系统,进一步导致单点故障影响全网络。

若单纯地看去中心化,比特币的PoW共识机制一枝独秀,但其转账速度慢是众所周知的。EOS 想要达到的目标是效率高,同时又安全、稳定,因此可以说,EOS的“DPoS共识机制”在试图找到其中的平衡点。

因为超级节点的奖励机制,所以所有节点参与者的利益、所有EOS用户的利益和整个 EOS 系统的“安全、稳定”是绑定在一起的,DPoS 共识机制正是依靠这种经济博弈机制让系统自动找到那个平衡点的。

通过 DPoS 共识机制,EOS 系统筛选出那些能给整个系统提供最好支持的超级节点作为出块和验证者,保证整个网络的安全、稳定。1.2 EOS开发团队

EOS的创始团队于2017年成立Block.One公司,主要由Dan Larimer、Brendan Blumer、Brock Pierce、Ian Grigg等组成。“EOS之父”Dan Larimer(BM)建立了BitShares和Steem,这两种均是市值排名前50的虚拟货币,非常成功,而BM被广泛地认为是一位有远见的程序员,是区块链技术Graphene(石墨烯)的核心开发者。1.Block.One公司CTO——“EOS之父”Dan Larimer(BM)

Dan Larimer,也就是江湖传闻中的BM(ByteMaster),他可能是目前世界上唯一一个连续成功开发了3个基于区块链技术的去中心化系统(BitShares、Steem和EOS)的人。

Dan 是一名程序员,他在生活中坚信自己的使命是“找到自由市场的解决方案来保护所有人的生命、自由和财产安全”。而这也是EOS项目所追求的最高境界,即“建立一种去中心化的社会,人们身处其间,确保彼此的生命、自由和财产不受侵犯!”

BM创立EOS的初衷和愿景,也是区块链发展的最高境界——建立一个适合人类生存的、安全的区块链社会!

BM 比较有争议的地方是,他先后离开了自己创建的项目,包括BitShares和Steem。BM最近接受采访,主持人问他:“你做了BitShares、Steem,再做EOS,那你会不会放弃EOS做其他项目?”他回答,EOS其实是前面两个项目的抽象,可以帮助其他人在其上做出类似Steem的项目,如果说自己将来要离开,那么下一个项目也是在EOS上开发应用,其实做EOS 也是在为自己将来要做的事情打基础。就像中本聪离开比特币,后来BM 离开 BitShares 和 Steem,创始人离开有时候正是一个项目社区成熟的标志。2.Block.One公司CEO——Brendan Blumer

Brendan是一个连续成功的创业者。2005年,Brendan到香港发展,期间,他极大地推动了IGE业务的增长,其营业部使公司年利润超过500万美元。两年后,Brendan 创立了 Accounts.net,这是全球最大的游戏账户买卖平台。后来的几年,Brendan 成立了香港房地产企业软件公司 Okay.com和科技发展平台ii5。3.Block.One公司合伙人——Brock Pierce

Brock Pierce是比特币基金会(Bitcoin Foundation)的董事会主席,他有过多种迥异的身份,包括儿童演员、《魔兽世界》职业玩家、川普顾问等。与Brendan一样,Brock也是从游戏行业起家的,从起初进行游戏币的交易,到后来创建游戏媒体公司ZAM(该公司在2012年1月被腾讯收购)。

与BM很相似,Brock Pierce也是一个非常有抱负、有思想的人,他致力于打造慈善类区块链。他曾表示,打算用自己的10亿美元创造一个名为“ONE”的慈善代币(如果你把MY从MONEY中移除,就会只剩下ONE)。加拿大服饰公司Nygard创始人的后裔、加密数字货币投资者Kai Nygard这样形容Brock Pierce:“他关注的是更高的使命,他超越了金钱。”

Dan Larimer(BM)和Brock Pierce具有基本相同的理想和抱负,都希望能够为人类社会的进步发挥自己应有的作用。前者致力于打造一种去中心化的社会,人们身处其间,确保彼此的生命、自由和财产不受侵犯;而后者也已经超越了金钱,一心致力于慈善事业,想创立慈善代币,造福人类。具有如此思想境界的两个人合作,能擦出什么样的火花?能在人类文明史上留下何种印记?让我们拭目以待。

而Brendan和Brock除了创业领域都集中在游戏和加密数字货币上,他俩的经历还有相同之处——与中国社区渊源深厚。Brendan从18岁起来到香港,到现在已经待了13年,其创建公司的服务对象大部分为亚洲客户;Brock 也在2002年开始活跃于香港和上海,并资助了游戏玩家Sky,助力其成为首位获得WCG大赛冠军的华人。4.Block.One公司合伙人——Ian Grigg

Ian Grigg是李嘉图合约(Ricardian Contract)的发明人,三式记账法共同发明人。三式记账法是区块链的基础,而EOS的智能合约中也用到了李嘉图合约,所以Ian的实力和对于EOS的价值不言而喻。1.3 EOS基础名词解释1.3.1 区块链

对于那些刚接触加密数字货币和区块链技术的人来说,最重要的是准确地理解什么是区块链。从本质上看,区块链是一个去中心化的系统,其核心是一个公共的数字账本。账本主要用记账的方式来描述系统当前状况(例如,每个账户持有多少加密数字货币)。除了这个公共账本,区块链技术还包含了一种共识机制,它决定了去中心化的网络(例如,由运行在区块链上的电脑组成的网络)如何在公共账本中更新当前的状态。1.3.2 比特币

比特币(BTC)是基于去中心化信用的且具有稀缺性的商品。去中心化信用,本质上是由所谓的账务公开决定的,只要你想,你可以追溯每笔钱从诞生至到你手里的所有过程。在由初始设定保证了稀缺性的前提下,由密码学实现了绝对的个人权利。比特币极端地保护个人权益,没有人可以从你的账户不经过许可地划拨任何一个比特币;比特币不可通胀,没有人可以用任何手段从你手里获得一丝一毫的价值;比特币永远不会丢失,它永远在万千网络的某一个比特里,等待有相应权力的人拿着他的钥匙过来。

比特币代表着存放资产没有摩擦成本,只要网络在,资产就永远在。比特币另外的身份是这个价值网络的分红权,这个网络有多少价值,比特币自然而然地就拥有这么多权益,比特币永远不能被伪造,能伪造的从来就不是比特币。

比特币是近乎完美的数字货币。我们甚至可以在极端情况下这样理解,比特币可以适用于所有的经济体系,而其他通证都是针对某个具体场景的数字代币。

比特币同时也是一个区块链应用。我们这里对区块链技术加上一个冒昧的定义,区块链技术是人类在技术上排除时间之外,重新定义了不可变性。区块链和数据库的区别在于,区块链上数据的不可变性是默认的,可变性是可选择的,而这点和数据库是相反的。区块链可以给特定数据维度加上可追溯的时间维度。1.3.3 以太坊

以太坊(Ethereum/ETH)试图用区块链实现一台“永不停止的世界电脑”来执行智能合约。

以太坊其实解决了两个问题,一个是BTC Script的完善,另一个是脚本可以更改本地其他存储状态。在F(tx,state,localstate)-> state,localstate中,localstate与Gas相关,想让智能合约运行起来,每次都要销毁一定的Gas,这从经济上来说,是有成本的,所以即使你在以太坊智能合约代码中编写了一个无限循环,智能合约也不会无限制地运行下去,一旦到达Gas上限,智能合约便会报错并结束。

以太坊把地址分为两类,普通地址和智能合约地址。以太坊转币到地址,便会触发对当前地址的检查,如果当前地址是有智能合约的,则会根据data参数执行智能合约。

以太坊的运行模式是通过广播交易进行全网分发的,相当于所有的ETH 全节点都会执行这个智能合约,具体是谁执行完成的,则依赖一致性协议反向判断。ETH智能合约和BTC比较大的不同点在于,其智能合约地址上是可以存储代币资源的。另外,对以太坊本身来说,可以存储结构化的其他相关信息。

任何一个Token,都是ETH上的智能合约。现在以太坊的Token会被要求遵守ERC20,ERC20实际上就是智能合约编程的接口,你若实现了这些功能,那么你就可以被认为是一个以太坊Token。

以太坊的问题在于资源隔离。之前曾经有 DDoS 攻击以太坊网络的事情发生,原因也在于此。更抽象地说,以太坊就是一条跑着许多代币和智能合约的链,任何智能合约的执行都是在竞争同一计算资源。

除此之外,ETH对于Token来说是非常成熟的,但是ETH目前还很难支撑起成熟的DApp,其原因如下。

一、基础设施不完善。基于以太坊智能合约去创建 DApp 的业务,实际上成本还是相当高的,开发和实现任何实际业务的难度都是创建 Token的10倍以上。

二、资源的竞争,不考虑现有执行效率的问题,在ETH解决资源隔离问题之前,DApp是无法运行的,某一个DApp的爆发会造成整条链的拥堵,导致其他 DApp 受到影响。打个比方就是,淘宝流量增大之后,腾讯的所有服务都不可用了,这对 DApp 的服务商来说是不可控的,也是不可接受的。

三、ETH 是基于状态的系统,基于状态的系统实际上就是要有非常多的锁去做竞态限制,以太坊目前的设计很难充分利用机器资源。1.3.4 智能合约

如果把区块链想象成iPhone,智能合约就是iPhone的自带应用,其在一定程度上扩展了宿主的能力。

智能合约能够以透明的方式促成货币或财产的转移和交换,同时避免了中间人的服务。

智能合约还规定了协议中涉及的所有义务和潜在的惩罚方式,就像传统的合同一样,不过智能合约平台会自动强制执行所有的这些义务和惩罚。智能合约平台实际上允许去中心化应用程序直接在网络上运行,而非在某台特定服务器上运行。

交易其实本身就是目前使用最广的智能合约。而分发代币的智能合约只做一件事,即给特定区块链资产赋予自由且自动兑换链上权益证明的能力。至于权益证明的兑换过程,没必要且暂时无法上链,链只需记录权益能否兑现,市场会给予权益合适的估值。

以太坊是目前为止最大、最成功的智能合约平台,但是EOS将解决以太坊网络面临的诸多挑战。

关于智能合约还有一段有趣的历史,一位名为Nick Szabo的密码学家在1994年发现,一个去中心化的账本系统可以被用来执行智能合约(也被称为自执行智能合约)。Szabo 先生实际上创造了“智能合约”这一词语,其目标是将合同法的实践整合到陌生人通过互联网进行电子商务协议的设计当中。1.3.5 DApp去中心化应用

DApp就是前端界面加智能合约,前端界面和用户交互,智能合约和区块链交互。

一个好的DApp公链需要具备两个条件,分别介绍如下。

一个条件是要有足够支撑起数据存储的部分。毕竟任何一个 DApp 除了区块信息,还会有大量的领域信息和数据。为了保证智能合约的可靠性,与智能合约相关的内容都是要上链的。但是如果所有信息都上链,那必然会导致区块膨胀。

另一个条件是处理能力的合理分配。实际上,每个智能合约的处理能力都依托于区块链,在这个角度上,每个 DApp 都会是链的性能杀手,而链上的资源始终是有限而且昂贵的。

EOS 不是针对智能合约平台设计的,其目标是成为DApp 平台。关于资源分配,EOS 实际上依靠代币对 DApp 进行资源隔离,触发智能合约的计算资源由DApp持有的代币决定,这样从本质上就隔离了所有的DApp,防止了资源竞争和恶意的 DDoS 攻击。这样就把一个技术问题转化成了一个经济问题。

EOS预设DApp的一些基础框架,其智能合约本身要求用C++编写,之后编译成 WebAssembly 文件,部署在区块链上解释运行。与 Solidity 目前的设计相比,EOS 的设计可能灵活性稍差,但是从之后的智能合约大小和执行效率上来说,其更占优势。这也是EOS为了满足上面提到的两个条件做出的权衡。

BTC带来了智能合约的雏形,ETH真正带来了智能合约的爆发,而EOS将带来DApp的爆发。1.3.6 共识机制

共识机制是区块链对于出块、验证、奖励等规则的约定,一般包括PoW、PoS、DPoS、PBFT等共识机制,EOS使用的是DPoS共识机制,在后面的章节中会展开讨论。1.3.7 出块时间

区块链的出块时间决定了链上交易确认时间和区块大小。

比特币的出块时间是10min,最终确认的话可能要等出两三个到六个块,这样就可能变成经过60min 才能确认已经到账。而在以太坊做运行环境的情况下,出块时间会缩短,以太坊的出块时间大约是15s。

在BitShares的石墨烯框架中,默认的出块时间是0.5s。EOS因为使用与BitShares一样的DPoS共识机制,所以出块时间也是0.5s。

另外,区块链的区块大小是有限制的,通过出块时间,我们限制了每个区块的大小。1.3.8 IPFS

IPFS 是一种去中心化的文件存储协议,基于该协议可以通过去中心化的方式实现一个文件存储网络。

根据EOS白皮书的介绍,EOS将来会内置一个IPFS标准的文件系统。IPFS与EOS的结合可以实现很多有用的应用场景,下面分别进行介绍。1.区块数据存储

EOS的交易量非常大,而且0.5s会产生一个区块的数据。如果所有数据全部记录在主链上,那么将会产生非常巨大的数据量。通过IPFS可以极大地降低主链本身的数据存储成本。2.前端页面存储

DApp在用户访问前端时需要静态的页面分发服务,比如在以太坊上拍卖一个加密猫,它的前端文件目前是中心化的。通过把这些前端程序或者网站前端放到基于IPFS的文件存储上,可以实现Web服务的去中心化和低成本。可以想象,未来在EOS上开发应用将不需要购买云服务器,也不用考虑需要哪种主机、什么 CPU、多大内存和硬盘,以及装什么系统、如何启动Apache,DApp开发者只需要将前端代码部署到IPFS,将后端业务逻辑的智能合约部署到EOS链上即可,而且只要抵押了EOS代币,这一切都是免费的。3.媒体内容存储

如果我们要在EOS上做一个类似YouTube的DApp,那么我们可以将账户系统和付费系统放在EOS链上,将前端页面和视频文件全部放到IPFS上。通过这个架构,整个付费系统的模型是非常容易实现的,我们可以预见这种DApp服务应该很快会到来。4.文件交易

在互联网时代所有文件都是通过复制的形式传播的,这其实也降低了文件本身的价值,另外造成了盗版横行的现象。如果我们通过EOS实现一个文件交易DApp,那么所有文件便可以通过IPFS存储,并用密钥加密,而通过修改密钥可实现链上的产权转移,以达到文件交易的目的。最终区块链必将带来价值互联网时代。1.4 EOS系统的特点1.4.1 设计理念

EOS 与以太坊网络的一个关键区别在于背后的设计理念不同。以太坊的核心设计理念之一是,对所有潜在应用都表现中立。这正如GitHub上以太坊的设计原理文档中所述的:以太坊“没有特性”,拒绝内置“甚至是极为常见的高级用例作为协议的内在部分”。这种基本原理降低了应用程序的臃肿程度,但依然要求许多不同的应用程序进行代码重用。而如果平台本身能够提供更多的常用功能,那么必然可以帮助应用程序开发者提升效率。但这种开放性,也导致了类似Parity多重签名钱包的重大安全问题。从这个角度来讲,以太坊很像区块链世界的Android系统。

不同于以太坊的设计理念,EOS 意识到许多不同的应用程序需要一些相同类型的功能,并竭力提供这些功能的实现方法,例如,许多应用程序所需的加密和应用/区块链通信工具。基于这样的理念,EOS系统内置了如下特性:基于角色的权限管理、用于界面开发的RPC自描述接口、自描述数据库体系,还有一个声明式的许可方案。EOS 提供的这些功能对于简化用户账户生成和管理以及防范安全问题(类似声明权限和账户恢复)将特别有效。

EOS的系统设计有以下几个特点,分别进行介绍。1.标准化(1)提供标准化账户、文件命名方法、权限体系。(2)拥有标准化的资源使用规则、规范。(3)提供标准化的社区治理“宪法”。

而且,这一切都以代码这种最标准化、数字化的方式写在系统底层协议里了。EOS 启动时用代码的形式移除超级权限,并通过多重签名算法将权限移交到由所有用户选出的21个超级节点手中。EOS用逻辑程序代码的形式,实现了最彻底的标准化,最大限度地去除了人为因素。2.强扩展性

EOS 可实现侧链扩展和跨链通信,支持并行处理,这也是实现其白皮书中所描述的百万级TPS的核心逻辑和基础。正因为跨链通信和高TPS,它的生态可容纳更大数量的各类应用并发运行,可扩展性极大地增强了。3.层次结构

基本的I/O底层规则 > 社区治理结构 > EOS通证经济 > 链上应用生态 > 整体投资布局,EOS构成了完整的区块链公链生态运转层次结构。4.有序性

在各层次上,都有明晰的“宪法”、规则和共识机制保证运转,实现了统一的开发、参与、生态协同,形成了更高层次的有序作业。

所以,如果以太坊是区块链世界的Android系统,那么EOS就是区块链世界的iOS系统。1.4.2 功能特性

从功能上看,EOS 做了很多之前的公链未能实现的特性,分别进行如下介绍。1.高并发

以太坊仅仅因为以太猫一个应用引起的高并发转账,就导致了网络几乎瘫痪,各大交易所不得不禁止提币来缓解网络堵塞。而 EOS 会采用BitShares之前开发的闪电网络,其目标是每秒处理上百万笔交易。2.免费使用

这个免费其实也是相对于以太坊来说的,以太坊上运行的每一行代码都是要“烧”Gas的,这点对于早期用户来说很不友好。而EOS的方案是让企业来承担费用,从而降低了用户进入的门槛。3.智能合约可升级

以太坊的每一次代码升级都异常麻烦,类比一下就像iOS的App每次升级都要去苹果商店审核,你说烦不烦?EOS可以让发版更容易,就像《王者荣耀》一样,打开App下载一个更新包就能搞定。4.低延迟

EOS白皮书里强调了响应速度。大家有没有觉得在苹果手机和Android手机配置相同的情况下,苹果手机跑程序会更流畅?答案是肯定的,这就体现出苹果手机的响应速度优于Android手机。而EOS具有响应速度快、延迟低的特性。5.系统用户基础属性

EOS 还提供了作为操作系统的必备功能,相对于以太坊,这对开发者来说极具吸引力。如果笔者是开发者,肯定会选择一个可以帮自己处理用户登录、权限管理、用户数据等的平台。1.4.3 经济模型

EOS 和以太坊网络使用不同的经济模型。从本质上说,这是所有权模式和租赁模式的对比。

对以太坊来说,交易中每次的计算操作、存储操作、带宽使用等都需要 Gas 费用。而且这些必需的费用价格是波动的,能够设置得非常高,因为矿工总会优先处理手续费高的交易。这在最近的众筹合约中显现得尤为明显,你需要将 Gas 费用价格调到非常高,否则交易将一直无法进入打包阶段。

此外,这种经济模型创造出一种情景,富有的玩家们可能会用高手续费交易淹没网络并导致整个网络的冻结阻塞,并且这种经济模型要求所有人在应用的开发、部署和使用过程中不停地“烧”Gas费用。

相比之下,EOS会采用所有权模式,在这种模式下持有EOS代币会提供给用户相应比例的网络带宽、存储空间和计算能力。这意味着如果用户拥有1%的 EOS 代币,无论网络其余部分的负载如何,他将始终可以访问1%的网络带宽。这样小型初创企业和开发者通过购买相对较小的网络份额,便可获得稳定可靠的、可以预见的网络带宽和计算能力。当需要扩展他们的应用程序时,只要简单地购买更多的EOS代币即可。此外,由于网络是零交易费用的,除了首次购买EOS代币,将没有其他的网络服务器等投入成本。当然如果愿意,也可以出售这些代币以便收回初始的投资。1.5 EOS技术意义1.5.1 EOS与BTC

在区块链领域,比特币(BTC)似乎是数字现金和智能合约的代名词,虽然它吸引了加密爱好者、媒体和基金持有人的关注,但它没有在商业应用上有所突破。比特币受到每秒7笔交易(TPS)的限制,此后的交易可能会被严重拖延。

EOS 因为其秒级转账的性能,以及对智能合约的支持,在 DApp 应用的体验上远超BTC。1.5.2 EOS与ETH

以太坊(ETH)被誉为第一台全球电脑,因为它在比特币的基础上,加入了智能合约的功能,突破了比特币的功能限制。

但目前以太坊有15 TPS的速度限制,最近的一个标志性拥堵事件是,有一笔交易支付了2000美元的交易费来试图跳过排队队列。而限制区块链吞吐量的原因有很多,比如需要验证之前的块、处理新的块和挖矿等。

EOS与ETH的一个显著差异在于,区块链的共识机制和总体的区块链治理方法不同。ETH使用工作证明PoW模式(之后会切换到PoS模式),而EOS使用采取委托股权证明(DPoS)机制的石墨烯技术。

目前实行PoW的以太坊网络背后呈现出一个问题,即难以处理那些破坏性的应用程序。比如,之前DAO遭遇了致命的Bug、黑客攻击和事故。需要特别说明的是,那些拥有“代码即法律”思想的人认为,对DAO的黑客攻击也是一种“特性”,而不是一个故障,因而用户应当更加负责任、更加细心地审视代码。不管怎样,DAO事故都表明,以太坊上破坏性的应用程序会导致投资者要么面临潜在的实质性损失,要么面临导致混乱的硬分叉。根据当前以太坊的PoW共识机制,每次的硬分叉也能引起产生多重竞争链的风险,比如,在DAO事故之后分裂出来的以太坊经典ETC。但为了处理一个破坏性的应用,一个扰乱了整个以太坊网络分裂性的硬分叉又是必需的。

相比之下,EOS包含一个冻结和处理破坏性或冻结类应用程序的机制。举例来说,假如DAO在EOS上发生了,它可以被冻结、处理或更新而不干扰其他应用程序。此外,EOS 的 DPoS 共识机制使得在硬分叉时没有伴生出多重竞争链的潜在可能性。Steem网络经历的18次成功的硬分叉已经证明了这一点,它同样也运行在石墨烯技术上。此外,EOS 将包含一个有法律约束力的“宪法”,确立共同管辖权用于解决用户争端,它还包含一个基于股权权重投票产生的自治的社区。1.5.3 EOS与腾讯服务器集群

EOS由21个超级节点进行出块和验证,围绕着超级节点,外围还有大量同步节点,提供数据查询和交易发送等功能,如图1-1所示。

对比一下腾讯服务器网络(参见图1-2),会发现EOS服务器网络和腾讯服务器网络很像,那么这是否意味着这两个服务器网络都是中心化的呢?笔者觉得这个结论是不对的。图1-1 EOS服务器网络图1-2 腾讯服务器网络

其最大的问题是把21个节点看成21台电脑。但实际上,21个EOS超级节点是一台电脑。如果非要类比,那么21个节点之间的通信应该类比成腾讯一台服务器上的总线通信。因为21个EOS超级节点是一台电脑,所以每一个EOS用户都可以看到这台电脑上的数据,运行这台电脑上的程序。

在腾讯的服务器中,你能够看到的数据,只是其允许你看到的那部分,你能够操作的,也是其允许你操作的。

信息和程序的透明、对称、可审计是区块链应用和互联网应用的本质区别。1.5.4 并行执行智能合约

在EOS.IO 1.0版本中并没有出现并行执行智能合约功能。但是,其区块结构会预先定义好,并在后续的版本中升级,而且这种升级不需要经过硬分叉即可实现。

异步的并行执行智能合约功能对于区块链智能合约平台来说,将是一个跨越性的进步,不仅极大地提升了执行效率,同时也可以获得由此带来的规模化成本优势——执行智能合约的成本会显著下降。

考虑到区块链的特性,每个智能合约的操作都需要在所有节点重现至少一次(这就是说,所有节点能够重做一遍相同的操作,并且得到相同的输出)才能获得共识。考虑到每个账户都可能需要访问自己的私有数据库,同时由于区块结构的限制,EOS并没有线程锁的概念,所以EOS将会在账户层对智能合约进行并行化处理。即每个线程都会按顺序串行处理该账户本次提交的所有智能合约,而同一个区块可以包含多个不同账户提交的智能合约。并行执行的意思就是,将这些不同账户的智能合约分配给不同“线程”同时进行并行异步处理。因为没有锁,账户之间的智能合约调用(跨账户调用)将会由一个轮询执行线程调度程序来进行分配、传递和执行,但和一般电脑上并行执行的程序一样,这种跨线程传递消息的地方都会有性能瓶颈,而EOS跨账户调用消息的接收将是并行的,以减少可能的性能损失。打个比方,并行执行10份相同智能合约的速度并不完全是执行1份智能合约速度的10倍,具体速度要看这份智能合约中有多少跨账户调用的操作以及是否强制要求原子性执行(所有关联的跨账户的智能合约都在一个“线程”内串行地按顺序执行)。

但即便如此,若能确立好整个并行执行的区块结构和系统架构,那么横向地对硬件扩容以提升性能就会变得十分容易。比如,原来每秒平均有10份智能合约分配给10台服务器并行执行,而随着用户量加大,每秒平均增加到了100份智能合约,那么只需要直接增加更多台服务器就可以增加数十倍的处理能力以满足需求,在平均执行速度上其肯定会比以太坊和其他智能合约平台快几个数量级。这也是目前其他智能合约区块链平台完全不可能做到的。打个比方,以太坊像是一台运行着DOS系统的386处理器(串行处理程序),而EOS就像是一台可以并行执行程序并且随时扩容的超级计算机。1.5.5 数据中心级节点

为了最大限度地发挥并行执行效能,BM认为时刻都在出块的21个超级节点(矿工)必须配置足够性能的硬件设施,甚至每个超级节点都需要运营一个数据中心级别的节点来执行智能合约,这些节点必须配备集群服务器、万兆位光纤来连接各个超级节点的数据中心以确保快速出块,而这种成本规模是相当巨大的。维系节点的费用将会从系统通胀中支出,而具体的费率暂定为封顶1%,但是这些超级节点之间可以互相商议以达成共识,在不超过1%限度的基础上寻求一个所有人都可以接受的费率。持币用户如果觉得超级节点费率太高,或者对其提供的服务不满意,也可以将某些超级节点选举下台。

虽然总体开销如此巨大,但是只要具备了大量的需求,大量的智能合约通过EOS进行处理,得益于集群化、规模化的成本优势,依然可以使每一份智能合约的执行成本比现在的智能合约平台低几个数量级。1.5.6 跨链通信与更加轻量级的默克尔树证明

跨链部分的实现同样未包含在EOS.IO 1.0版本中。

根据白皮书的介绍,EOS 将会内置一个跨链通信机制用于与其他区块链或者子链互相通信。白皮书举了一个例子,在21个超级节点,3s确认速度的前提下,一笔跨链交易只需要45s即可确认。这应该是指EOS子链或者其他基于EOS的联盟链与公链之间的通信。而在与其他区块结构不一样的跨链交易里(比如,比特币),需要的时间会更长,因为前提是跨链交易必须被两条或多条链都确认不可逆后才可以达成共识。

EOS 里引入了一个更加轻量级的用于轻客户端的默克尔树证明(LCV),与比特币的SPV(Simplified Payment Verification,简单支付验证)相比,这种结构的验证速度更快,需要传输和保留的数据更少,也更利于跨链操作。如 EOS 白皮书所说,“EOS 操作系统的轻量级证明只需要验证包含某个特定的不可逆交易之后的区块头数据(使用哈希链表架构,数据集保持在1024B以内),即可证明任何一笔交易是否存在。这将基于验证节点保留的前一天的所有区块头数据(2 MB大小),然后证明这些交易只需要200B大小的证明数据。”

这种结构更加灵活、更加适合智能合约平台采用。同时超轻量级的轻节点并不需要经过长时间的初始同步以及存储全部区块头数据。并且 EOS提供了一个灵活的裁剪历史交易功能来缩小节点所需要存储的数据量,通过裁剪功能可以根据不同场合、不同情况来对存储容量和验证速度进行调节。所以在EOS网络中可能会有超轻量级的节点(比如,用于智能手机的客户端)、保留全部数据的“全节点”(比如,超级节点有义务保留全部历史数据)、只保留部分数据的“半全节点”,或者那些选择只保留一天历史数据的验证节点。

跨链通信是终极的可扩展性功能,业界一直在寻找诸如侧链、Plasma和分片等技术来实现跨链通信。

跨链通信使一个区块链能够以可证实的安全方式验证另一个区块链上的事件的真实性,目标是让区块链之间的通信像智能合约之间的内部链式沟通一样安全。1.5.7 拓展性

EOS将很可能成为唯一可以真正处理商业级去中心化应用的平台。

EOS依赖已经在压力测试中展现出具有每秒1万至10万笔交易处理能力的石墨烯技术,另外EOS将使用并行化来扩展网络,或将达到每秒数百万笔交易的处理能力。如果这些基准得以实现,EOS 将能够支持数千个商业级规模的DApp。EOS将通过异步通信并使认证与执行过程分离来实现加速,并且由于没有交易费用,EOS也不需要计数操作。1.5.8 拒绝服务攻击DDoS

DDoS 攻击的意思是,黑客通过几千台甚至上万台“肉鸡”(傀儡机,指被黑客远程控制的机器)每秒向你的网站IP发送几GB甚至几TB的流量,对你的网站IP进行流量攻击,一般受攻击的网站会因为流量猛涨、内存占用过高而无法打开。

互联网产品特别害怕这种攻击,比如你做了一个网站,购买的服务器只能接受1秒100次访问,但有人恶意使用100台“肉鸡”不停地访问你的网站,这时正常用户将无法访问。

为比特币设计矿工费最根本的目的就是防止 DDoS 攻击。如果没有矿工费,用户便可以无成本地攻击比特币网络。比如,攻击者构造一种自己给自己发币的交易,因为没有矿工费,所以可以无限制地发币。交易都需要占用完整节点的带宽、硬盘和CPU资源,如果遇到这种无限制的交易,那么节点很快就会挂掉,无法正常接收和验证交易,整个网络就会崩溃。

以太坊主要提供了一个智能合约平台,用户可以在其节点上运行任意程序。但如果用户编写了一个无限循环的程序,那么这些节点的 CPU、存储、带宽资源就会被消耗光,从而导致整个系统崩溃。以太坊同样为了防止这样的DDoS攻击设计了矿工费Gas机制,Gas就是以太币。任何运行在以太坊网络上的程序,都会按需要消耗的资源划分计算步骤,每个步骤需要支付一定的Gas。而当用户运行这个程序时,需要提前支付一定量的Gas总额,如果在运算过程中提前支付的 Gas 消耗光了,那就强行停止这个程序。通过这种方式可以阻止用户对以太坊网络发起DDoS攻击。

相比之下,EOS更不容易受到DDoS攻击。

EOS 代币的所有者给予用户相应比例的网络带宽、存储空间和计算能力,因此恶意攻击者只能消耗与其EOS代币占比相对应的网络资源。DDoS攻击或许可能在某个特定的应用程序中可用,这取决于应用的设计,但是这些攻击永远不会扰乱、中断整个网络。即使在许多恶意代理人试图给几个大型的网络应用制造垃圾阻塞的情况下,EOS 也能保证网络上小规模初创投资项目的带宽可靠性和计算能力。

EOS白皮书中提到的第二个对抗DDoS的办法就是抵押币租赁系统资源。虽然用户可以免费使用EOS网络上的资源,但却需要抵押EOS代币来租用网络资源。比如,全网有10亿个EOS代币,如果你只有1个EOS代币,那你就只能使用10亿分之一的网络资源。所以任何DDoS攻击者若想发起对网络的攻击,就需要持有和抵押EOS代币,从经济动机来看,这种攻击行为并不成立。

EOS被定位为一条治理型区块链,所以EOS第三个对抗DDoS的办法是直接冻结异常账户。根据EOS白皮书的介绍,智能合约的行为会发生异常或者变得不可预测,不再按预期执行,有时应用程序或账户会发现某个行为导致其过度消耗资源,当这些问题不可避免地发生时,区块生产者有权纠正这些问题。

这种可冻结“异常”账户的设计让EOS变成一个需要“人治”的系统,这和区块链的“自治”理论稍微有点不一样,通俗地讲,绝大多数区块链产品的运营都不需要人值班,但EOS的运营是需要人值班的,目前EOS主链的值班人员就是EOS仲裁委员会的成员。1.6 开发进度规划

以下是EOS官方发布的开发进度规划,截至本书写作完成时整个产品进度都按照规划准时推进着,这也让我们非常期待其下一步“实现集群”的落地实现。1.6.1 阶段1:最小可行的测试环境(2017年夏季)

本阶段的目标是创建API,满足开发者在EOS.IO上构建和测试应用的需要。(假设处于一个可靠的环境,开发者只在其中运行自己的代码。)

为了让开发者可以着手测试他们所开发的应用,需要完成以下内容。1.独立节点(Dan & Nathan)

在一个独立节点上,可运行一个测试区块链,提供了相关API,可产生区块。这一节点上没有与P2P网络相关的代码。2.本地智能合约(Nathan)

EOS.IO软件中有若干本地智能合约。这些智能合约用于管理区块链的核心操作,存在于WebAssembly接口之外。这些智能合约包括:

● @eos——管理EOS Token的转移。

● @stake——管理锁定的EOS、投票和生产者选举。

● @system——管理权限、信息和智能合约代码更新。3.虚拟机API(Dan)

智能合约会被编译为WebAssembly(WASM),WASM必须通过定义好的 API 才能与区块链交互。开发者开发应用需要依赖虚拟机 API,所以在开发者真正着手于EOS上构建程序之前,该API需要达到相对稳定的状态。4.RPC接口(Arhag & Nathan)

提供一个简单的JSON RPC HTTP接口,以便开发者能够广播交易信息,查询应用的状态。

对广播信息和与测试程序交互而言,该接口很关键。5.命令行工具(Arhag)

提供命令行工具,方便开发者将RPC接口集成到应用的构建环境中。6.基础开发文档(Josh)

用于指导开发者在 EOS.IO 区块链上构建程序的文档,包含了 WASM API、RPC接口以及命令行工具的文档。1.6.2 阶段2:最小可行的测试网络(2017年秋季)

在部署一个可行的测试网络之前,有一些额外的特性需要完成开发和测试,下面分别进行介绍。1.P2P网络代码(Phil)

这是一个插件,用于在两个独立的节点之间同步区块链的状态。2.WASM清理&CPU沙盒化(Brian)

WASM 代码需要进行清洁处理,以便检查异常行为,如浮点数运算异常和无限循环等。3.资源使用情况跟踪&限速(Arhag)

为了防止滥用,根据已有的 EOS、资源监控和使用情况追踪,对用户进行限制。4.Genesis导入测试(DappHub)

需要开发工具,用于从EOS Token发布状态导入数据,并创建一个创世设置文件(Genesis Configuration File)。这可以让参与Token众筹发布的人们获得一些初始的测试EOS(TEOS)代币。5.区块链内通信(Nathan)

这一特性包括验证交易的Merkle哈希值是否有效。1.6.3 阶段3:测试&安全审计(2017年冬季,2018年春季)

在这一阶段,会对平台进行大量的测试,找出安全问题和程序 Bug。在阶段3结束时,会给软件打上版本1.0的标签。1.开发示例程序

为了验证平台是否提供了真实开发者所需要的功能,示例程序的开发非常关键。2.对成功的网络攻击给予奖励

使用垃圾信息、虚拟机滥用、错误崩溃、非正常的操作来实施网络攻击,这是一个很复杂的过程,但是为了确保软件1.0版本可以稳定使用,这又是很必要的操作。3.编程语言支持

增加对其他可以编译为WASM的编程语言的支持,如C++、Rust等。1.6.4 阶段4:并行优化(2018年夏季/秋季)

在EOS.IO 1.0稳定版发布后,会继续优化代码,提升并行执行性能。1.6.5 阶段5:实现集群(未来)

未来会有大量的企业和团队将业务和应用放到链上,这时EOS将通过集群来解决扩容问题。1.7 EOS系统当前面临的挑战1.7.1 开发者的成本

目前来看,EOS开发者的成本主要是学习成本和购买系统内存的成本。

学习成本主要是因为EOS 系统本身和它的智能合约需要使用 C++开发,而 C++程序员目前不是太多。这个问题也许会随着支持第三方开发语言而逐步被解决。

购买系统内存的成本,主要是因为内存是通过购买而非抵押获得的,因此内存价格可能会存在炒作的空间。1.7.2 潜在的攻击EOS系统的方法

有两种针对EOS系统的潜在攻击方法。

第一种攻击来自系统内部,超级节点内部竞争可能会导致军备竞赛式的攻击。EOS共21个生产者主节点,49个备用节点。这两类节点的收益是不一样的,存在竞争关系。备用节点为了上任成为主节点,因此有动机去攻击主节点,只要让主节点出几次错,就有机会把它们挤下来,从而自己上任成为主节点。

这种机制会导致内部相互攻击的情况发生。潜在的防御机制是使用“宪法”对这种内部作乱进行惩罚,但规则制定得再详备,也会有一定的漏洞,“宪法”不可能完备到杜绝所有的恶意竞争。

第二种攻击来自系统外部。EOS系统上面可以建立DApp,如果DApp的开发者通过抵押代币来为其用户提供免费的EOS系统资源,攻击者就可以伪装成用户,无成本地(只需要支付发起 DDoS 攻击本身的流量成本)攻击一个DApp,从而间接地发起对EOS系统的攻击。更为可怕的是,DApp之间的相互竞争会催生 DApp 之间的相互攻击,这种相互攻击是一个大问题,可能会导致原本设计的免费模式很难被实现。1.7.3 超级节点的服务器成本和稳定性

EOS 系统的免费机制可能需要史无前例的超强服务器才能稳定运行,而且要求EOS的所有超级节点自身拥有足够强大的抗攻击的潜能。EOS的超级节点们需要区块链产品设计里最强大的硬件——带宽、存储(包括内存和硬盘)、CPU,这3个资源都要达到顶级配置,尤其是内存,其扩容可能会遇到硬件瓶颈,而进一步地成为EOS下一步发展的瓶颈。1.8 总结

本章主要介绍了什么是EOS,EOS要解决什么问题,以及它的特点和技术意义等。

基于EOS的特点,EOS将带来更高的TPS、更有扩展性的跨链通信、更友好的开发方式,并支持用户免费使用,这将极大地降低用户和开发者的使用和开发成本,提升开发、交易、使用效率。EOS生态一旦良性运转,有可能带动其他公链应用迁移到 EOS,甚至重塑区块链经济分工,产生围绕EOS生态的上下游产业链,包括超级节点的安全防护、各类应用市场、各类代理、出租市场、教育培训市场、基于EOS的去中心化交易所、钱包等,这也是EOS最大的价值和意义所在。

在第2章中,我们将介绍EOS的工作原理,读者可以看到EOS如何基于其基本的设计理念来逐步开发各个模块,并最终组成一个完整的区块链操作系统。第2章 EOS的工作原理2.1 EOS系统架构

如图2-1所示,这是EOS早期版本Dawn 1.0的系统架构图,和目前的EOS.IO 1.0版本有比较大的区别,部分架构做了修改,部分架构在当前版本中还未实现。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载