EOS区块链应用开发指南
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.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 系统筛选出那些能给整个系统提供最好支持的超级节点作为出块和验证者,保证整个网络的安全、稳定。