距离上次发布EOSIO Dawn 2.0过去了四个月时间,这次EOSIO Dawn 3.0到底给我们带来了那些变化?下面我参照官方提供的资料介绍一下大家关心的话题。
我们都知道EOS是基于BM之前bitshares和Steemit两个至今成功运行的项目经验进行研发的,对于EOS团队来说这里面最大的考验是怎样将之前项目经验转换成一个平台产品。项目经验和平台之间的差别就是平台需要更高的性能、方便扩展以及便于开发人员进行DAPP的开发。可喜的是Block.one公司目前推出的Dawn 3.0已经完成了一个项目到产品转换,团队在eos开发的过程中一边学习,一边设计,最终做出了一个超出想象的产品——Dawn 3.0。 截止到现在Dawn 3.0是EOS整个一年开发周期里一个最重要的里程碑,在这个过程中全球的开发人员夜以继日的努力工作才使得这项伟大的工作得以顺利实现。
可扩展性一直是EOS在设计开发过程中重点考虑的一个因素,在这个版本里只做了部分的优化而已。虽然目前这个版本还不支持并行运算,但在设计上已经考虑到了未来并行运算的需要,这样做的好处是能够保证EOS未来在不分叉的情况下实现并行计算并可以大幅度提高吞吐量。
跨链通讯是提高扩展性的圣杯。提高扩展性方面现在的商用解决方案有侧链、Plasma和分片。跨链通讯使得区块链可以通过一种安全的方式验证另一个区块链时间的真实性,这个版本目前已经实现这个特性,使得跨链通讯可以像智能合约之间通讯一样安全。
跨链通讯只不过是实现了一个轻量级客户端智能合约,这个客户端可以在不需要处理整个区块链的情况下验证交易的有效性。需要说明的是,轻量级客户端验证必须在一开始研发的时候就考虑到设计中,而不是之后进行改造。
在跨链通讯方面,EOS采用了拜占庭容错部分头部验证(sparse-header validation),具体来说,它需要2/3以上区块链生产者为了欺骗一个轻量级客户端而进行作恶,进一步来说轻量级客户端只需验证在线的区块生产者相关的信息。这样的做法就可以显著的减少拜占庭容错轻量级客户端的天花板,有效提高跨链通讯的效率。
上下文无关的行为也是提高跨链通讯性能的一个关键特征。举个例子,在验证一个默克证明和签名时,由于这些计算是上下文无关的行为因此可以并行进行验证和计算。
在区块链中有许多数据需要压缩。其中一个不可避免的就是智能合约代码,还有一些接口文档和账户合约。在实际应用中,类似社交媒体有许多用户产生的内容需要进行压缩。通过压缩事务可以提高事务存储和交换的效率。
从Dawn2.0到Dawn3.0一个最大的变化就是WebAssembly运行环境的变化,Dawn3.0默认使用Binaryen WebAssembly解释器而不是更快的JIT编译器。这个决定降低了性能但是提高了稳定性和一致性,同时允许我们在需要更高性能时使用JIT环境。将来我们会使用更慢但是更低延迟的解释器,在执行新合约时候同时进行合约的后台编译和优化。这种双重实现意味着我们所有的单元测试都是针对编译和解释的代码进行测试的,因此在部署之前,我们可以发现潜在的不确定性或不符合标准的行为。
在Dawn3.0时代,我们现在有了一个全新的资源限制系统。也许最大的变化是引入了一个相对客观的指令计数算法。这样做的一主要原因是允许单个事务执行比以前可能更多的计算。另外的变化是允许EOSIO在没有Token情况下被使用私有链和联盟链中。
在Dawn3.0中,我们已经将区块间隔从3秒降低到了0.5秒,这大大减少了确实的延迟时间。在使用了BFT DPOS后,事务可以在1秒内保证不可逆。不可逆性的延迟时间对区块链跨链通信有着重要的影响,因为另一个区块链在合并证明时必须等待事务不可逆。两个基于eos的区块链应该能够在3秒内完成往返通信。在Ethereum上类似的通信模式需要9分钟。
BIOS架构是Dawn2.0后的一个重要架构变化。在Dawn3.0中,主要的区块链逻辑都被移到一个智能合约中,这样做的好处是以后升级无需分叉。一个基本架构的区块链只需要一个生产者,不需要token、投票和DPOS,唯一要做的事情是创建账户、部署合约和资源分配。所有需要DPOS共识机制的token、投票、资源分配都是基于系统合约定义的WEB Assembly。
有了这个新的体系结构,我们就能够将开发集中于区块链的静态非webassembly部分。这部分对系统的稳定性至关重要,而且最难升级。在EOSIO Dawn 3.0和EOSIO 1.0的发布之间,我们将讨论系统合同的最终细节和投票。
对计算机系统安全是非常重要的事情,EOSIO是目前市场上最安全的公链。安全涉及到方方面面的因素,包括黑客攻击、硬件故障、硬件丢失、密码丢失。硬件钱包可以有效的防止黑客攻击,但是硬件故障会使得你无法控制账户,进一步来说,纸钱包和硬件钱包都可能存在丢失或者被盗。
Dawn3.0最重要特征是增加了用户不同行为的延迟。有了延迟,一个事务在生效之前必须等待几个小时或者几天才能广播到区块链网络中。在这个期间用户可以采取措施重置自己的账户和取消交易。这方面相对其他公链EOS解决了现在区块链账户管理的难题。
在EOS中每个账户至少有两个不同权限的账号: “owner” and “active”。owner账户可以使用合作伙伴进行多重签名,但合作伙伴不会拥有你的owne私钥。在active账户私钥丢失或者被盗的情况下,owner账户有权限重置active账户。如果你丢失了owner私钥或者合作伙伴不配合,在主账户30天不活动的情况下,active账户可以申请重置owner账户,owner账户有7天的时间质疑active账户的行为。
在这种账户体系下,硬件钱包可以防御黑客攻击和硬件丢失。如果你使用了带了指纹或者人脸识别的Apple iPhone保护私钥,攻击者需要偷到你的iPhone、指纹或者人脸,通常情况下你的合作伙伴也会使用生物识别技术保护硬件设备,这使得黑客攻击变得几乎不可行。
对于智能合约开发,EOS支持C语言开发、支持浮点运算、支持标准的C库、支持自动的数据范围、支持多索引的数据库API。
Dawn3.0目前的单机性能最差不低于1000TPS,在使用JIT编译器的情况下使用多节点单线程方式性能可以达到3000TPS,一旦实现了并行签名验证,在使用JIT编译器的情况下使用多节点单线程方式性能可以达到6000TPS,理论上是可以支持8000TPS。
从目前比特币、以太坊的实际情况来看,EOS性能已经是最好的了。
跨链通讯可以将负载分担到不同的区块链上,token可以安全可靠的在不同链之间进行通讯。一旦有一个1000个链并行计算EOS的性能将会达到每秒百万级的性能。这就代表了其它区块链给出的理论性能建议的实际实现。
我们强烈建议区块链生产者基于公链运行更多的链以满足用户的需求。所有链都使用相同的token作为基础进行持股和分配资源。这样使用eos token可以创建最大可能的网络效应,并利用由高市值代币创建信任和安全的经济刺激。
后续我们会围绕Dawn3.0核心平台的稳定性开展工作。在主网上线之前,我们会准备最终的系统合约实现所有的股份、投票和治理机制,我们也会确定token标准。
一旦系统合约成熟我们将会启动一个新的测试网络,到时候会简化启动测试网络和开发应用的流程,之后几周我们也会关闭当前的测试。
EOSIO Dawn3.0是一个功能完整开发者版本,我们相信平台已经足够强大足以支撑开发者构建自己的应用。到目前为止EOSIO与我们一年前期望的一样已经变得更加强大和易于开发。
我们的团队正在快速的发展中,在过去的一个月中,我们在github提交的代码是最活跃的10个c++库之一,一切都按计划在高质量的开展中,EOSIO 1.0六月份正式发布。
本文参考了EOS官方最新发布的文章,原文请查看EOSIO Dawn 3.0 Now Available