EOSIO-2介绍—性能更好、安全性更好、新的开发者工具 百科 第1张

2020年1月10日更新:本次发布已更新到稳定的EOSIO 2.0版本,我们对先前的版本再安全性、稳定性和其它各方面都做了调整。您可以在GitHub上看到详细信息和发布通知。

构建EOSIO 2的时候,我们为开发人员考虑很多。我们的目标:在EOSIO上搭建(应用)更快速、更简单、更安全。

我们相信,区块链开发最大的瓶颈在于它们执行智能合约的速度。

EOSIO是第一个利用WebAssembly(WASM)引擎改进性能的区块链软件,但是,随着时间的推移,现有的通用WASM引擎已经不能满足我们的需求,我们能做的其实更多。

我们的解决方法:建立我们自己的引擎——以区块链为核心,从头建立我们自己的引擎。这个专门为区块链构建的WASM引擎就是EOS VM,相比和EOSIO1.0同时发布的Binaryen,EOS VM运行EOS Mechanics WASM CPU最高可快16倍。

接下来,我们打算解决新开发者——打算参加 #EOSIO黑客马拉松 或者第一次在EOSIO上搭建应用的开发人员——进入区块链的屏障。一般来说,建立区块链开发环境是一个多步骤的过程,可能需要几小时,甚至几天,来完成,所以我们才要建立EOSIO 快速入门 Web IDE,这个开发工具能够让新手在几分钟内就从入门到就绪。

最后,对任何开发人员来说,吸引新用户使用区块链应用的一个主要痛点就是如何保护私钥和公钥以及操作不当会产生的安全风险。本版本实现了WebAuthn对EOSIO的支持,这样,开发者可以在自己的EOSIO应用中测试带有WebAuthn签名的交易,这就给私钥带来了新一层的保护,而这是现在任何区块链都没有的。

以下是EOSIO 2.0候补版四大主要部件的详细介绍。

  • EOS VM:高性能、专为区块链应用设计的WebAssembly (WASM)引擎,在处理智能合约和显著提高性能的同时能够带来更加高效的系统资源利用。

  • EOSIO 快速入门 Web IDE:我们最新的、功能强大的、自包含Web集成的开发环境,它可以用来建立EOSIO智能合约和相应的Web应用。设置只需要几分钟、兼容各个浏览器、帮助减少新EOSIO区块链开发者的入门障碍。

  • WebAuthn 支持:这是一个倍广泛接受的安全验证标准,不需要浏览器扩展或者其它软件,它就可以实现交易签名。


EOS VM

我们开发了新的专用WebAssembly (WASM)引擎,EOSVM,来满足日益增长的在EOSIO区块链上进行安全的确定性执行的需求。尽管Binaryen和WABT解释器也完全满足其设计目的,但是它们都存在内存分配不受限制、加载时间延长、堆栈溢出的问题,同时,它们也缺少运行时沙箱。这些问题结合在一起就影响了整体性能和可靠性。

Binaryen解释器最早是作为初版WASM解决方案随EOSIO1.0在2018年6月发布的,同年九月,被EOSIO1.3支持的WABT取代,这个变化让EOSIO性能提高了两倍。EOSIO2.0时代,我们发布新的WASM引擎EOS VM,它由三个部分组成,每个部分都有自己的特点,每一个都会带来一些性能增强。

区块链WEBASSEMBLY执行的强大组件三重奏

EOS VM解释器是一个WebAssembly解释提,它能带来非常快的解析/加载以及确定性和高效的时限执行。因为我们是从头开始设计解释器,我们就能给未来对智能合约的调试留下了空间。

EOS VM Just In Time (JIT)编译器是WebAssembly编译器,它采用WASM并即时生成本机代码。这个架构实现了WASM智能合约的高速执行,同时给WABT,Binaryen和EOS VM解释器等解释器带来了显著的性能提高。JIT解决方案因为其速度之快,应用于区块链的时候就免去了其它解决方案带来了块编译时间过长的问题。

EOS VM的第三个组件是EOS VM优化编译器,这个编译器使用了利用多遍编译架构的专用编译框架(LLVM)。优化编译器生成的本机代码一般比在WABT,Binaryen,EOS VM解释器和EOS VM JIT中执行的相同代码要快上一个数量级。更重要的是,它甚至比现有的WAVM引擎还快,但和WAVM不同的是,利用我们的分层设计,它可以安全地在区块链上使用。

极快的执行性能

在测试环境中,我们针对不同组件的基准测试产生了以下性能增强:

EOSIO-2介绍—性能更好、安全性更好、新的开发者工具 百科 第2张

1 EOS机制基准测试来源是EOSIO社区写的基准测试,它在AWS z1d.metal实例中运行2 回放基准对比了在对应WASM引擎上由EOSIO系统提供的回放能力完成相同回放的时间,并在AWS z1d.metal实例中执行。

上述性能基准体现了各种EOS VM部件的相对优势。EOSIO 2把EOS VM JIT作为大多数智能合约执行的一线编辑器,而EOS VM优化编译器则在后台编译同一智能合约并以极快的速度在链上部署该合约。这样的分层架构让EOSIO 2能实现快速启动和智能合约代码的优化编译。

EOS VM及其组件还可以实现高度自定义,所以开发者可以根据他们的需求用特定的方式利用这些组件的不同层面。了解更多请在GitHub上浏览EOS VM 存储库。

网络代码的重大改进

我们向net_plugin添加了多线程支持。几乎所有在net_plugin上的处理,包括块传播、交易处理、块/交易打包/解压等其它处理,现在都由和主应用程序线程不同的单独线程处理。隔离这些处理过程之后,我们在多节点的EOSIO网络上进行交易处理和块处理的性能都有了显著的提高。更多的细节请参考EOSIO 2.0.0-rc1 发布说明。

EOSIO 快速入门 WEB IDE

EOSIO 2的增强功能心系开发者,这个新的工具能够让他们对EOSIO项目更快上手、更好地分享、更顺利地合作。

启动EOSIO的开发环境目前需要开发人员在本地计算机运行一个多步骤过程,这对于刚入门的开发人员来说可能是非常复杂的。现在我们在alpha支持阶段,EOSIO 快速启动 Web IDE的想法是要移除开发者的入门障碍。它在云上运行,它让新的开发者启动智能合约和web应用开发环境以及完全集成的单节点个人测试网,这样他们在几分钟内就可以实现入门到构建。

EOSIO快速入门Web IDE让新的区块链开发者更好入门、简化了过程、使学习EOSIO开发更快速更简单。开发者可以以演示应用程序开始、无缝地进行修改、实时看到更新、直接从浏览器把代码提交到git存储库。

随着新的开发者开始利用EOSIO 快速入门 Web IDE构建应用,我们也期待着社区的反馈。

WEBAUTHN对EOSIO的支持

WebAuthn是强大的用户验证器标准,它由万维网联盟(W3C),在线快速身份验证(FIDO)联盟、在谷歌、Mozilla、微软、Yubico和其它公司帮助下进行协作。WebAuthn让用户能利用硬件设备进行验证,在浏览器中签署交易而不用在设备上安装扩展程序或其它软件。

WebAuthn在诸如YubiKey等设备上建立加密密钥对,同时,只在安全且经过验证的渠道和远程服务器共享公钥。WebAuthn验证凭证管理完全在硬件中进行,因此它几乎完全减轻了钓鱼等各种攻击的影响。因为硬件是必须的,密码也没有储存在中央服务器中,采用基于WebAuthn的验证其甚至有助于阻止密码被盗的情况下出现的高规格数据泄露。

随着WebAuthn对EOSIO支持的发布,开发者可以开始在他们的EOSIO应用上测试带有WebAuthn签名的交易。EOSIO支持WebAuthn让我们朝着无需追踪私钥或其它账户信息就能获得安全和无缝的交易签名这个目标更进一步。我们会继续研究各种机制,支持希望其应用和WebAuthn集成的面向社区的和企业级的参与者,我们也鼓励应用开发者能加入第一批使用者的行列,测试该技术在私人应用上使用。

加权阈值多签名区块生产

超级节点必须能够提供绝对足够的运行区块链的核心服务。一般为了达成此目的需要搭设多余的基础架构,保证在出现硬件故障或者网络问题的时候也能够高效地维护块生产。而在大量的功能中,加权阈值多签名区块生产是第一个试图给超级节点提供完整、充足的解决方案。

现在的共识规则要求每个超级节点有且仅有一个加密区块签名密钥。然而这个密钥,不管是存在磁盘上通过软件加载还是受硬件钱包保护,都代表超级节点运行过程中的单点故障。如果密钥丢失,或者储存密钥的硬件模块暂时无法访问,超级节点只能丢弃区块,结果就影响到整个网络的吞吐量。

为了改进区块生产的安全性和规模化,加权阈值多签名区块支持提供了一个允许层,这样多个区块签名密钥就可以灵活运行,多余的区块签名架构就不用分享任何敏感数据而存在。您可以在GitHub的加权阈值多签名区块生产页面获得更多信息。

文章来源:Hi区块链

免责声明:版权归原作者所有,如有内容、版权等问题,本站24小时内删除