开发者友好度最高公链是如何炼成的——NEO再获两项大奖

2019年的第一周,NEO收获喜讯,斩获两项大奖,分别是赛迪(青岛)区块链研究院评选的“2018年度公有链基础技术十强”和鉴识·2019区块链价值榜评选的“最具价值去中心化应用平台”。

◆ ◆ ◆  ◆ ◆

这些奖项是对NEO的认可,不论是底层技术还是生态价值层面,都将NEO指向了开发者友好度最高公链。NEO的开发者友好度体现在生态、社区和智能合约体系等多个维度,作为智能合约体系中的重要一部分,NeoVM的意义不言而喻,以下为《NeoVM的2018进化之路》,帮助开发者更深层次的理解NEO。

《NeoVM 的2018进化之路》

在公有链的竞争上,首要维度是是否能为开发者提供友好型足够的基础设施。随着智能合约成为区块链的必要元素,能否为智能合约提供良好的运行环境越发成为叩开区块链世界的大门。虚拟机(VM),就是那把看似简单,却必不可少的钥匙。

众所周知,推动NEO前行的核心力量是社区,和源源不断涌入的开发者,这些开发者最为重视的基础设施之一就是易用、友好、稳定的VM。NEO也是第二个推出自有VM的公有链项目,随着时间的推移与无数个日夜的打磨,NEO VM也越发趋于完美。

2018年初,首届NEO DevCon上,NEO创始人张铮文亲自为到场的开发者演示NeoVM。随后,NeoVM迎来里程碑式更新!2018年6月,NEO VM从2.2.1升级到2.3.0。NeoVM从此开始实现了栈隔离!2018年11月,2.3.3版本发布,进一步拓展NeoVM的使用范围可以将其部署在NEO网络以外的地方。

以非开发者角度去理解栈隔离有一定的难度,但这是一次重大的升级,就好比是电脑从dos时代升级到windows时代一样。在 dos 时代,所有的程序共享所有的内存。如果有一个程序出了问题,就有可能影响破坏其它的程序,从而电脑就不再响应了。而到了 Windows时代,所有的程序都运行在保护模式上,即使有一个调皮的程序员写的程序不能稳定的运行,也不会影响到其它程序。NeoVM的这次升级,在技术上描述时就是解决了同样问题。不同的智能合约在相互调用时,从共享同一个数据堆栈改为各自使用隔离的堆栈,从而提高了智能合约的安全可靠性。

如果你是一个对此有兴趣的开发者,以下的NeoVM发展历程将让你大呼过瘾:

下图是 NeoVM 2.2.1。运行中的所有相互调用的智能合约共享了同一个EvaluationStack(执行堆栈)和AltStack (临时堆栈),而在动态调用时,被调用的智能合约可能会影响到调用者堆栈的运行。。

图1:v2.2前的NeoVM架构

如果智能合约在互相调用的时候,出现意外差错,就会导致智能合约不能正常运行以及安全问题。如果被调用的智能合约没有良好的管理自身的数据堆栈,将有可能破坏调用方智能合约的正常运行。

为了解决这个问题,NeoVM 从2.3.0开始,实现了智能合约之间的堆栈隔离。实现如下图。

图2:实现栈隔离后的NeoVM 2.3

图片显示v2.2中的每一个所有智能合约,拥有专属都共享一个的EvaluationStack(计算堆栈)和AltStack(临时堆栈),但v2.3给每个智能合约都配置了一个专属的计算堆栈和临时堆栈。同时,v2.2的运行结果均储存在计算堆栈。。此外,为了保存智能合约的最终执行结果,v2.3新增了一个独立的ResultStack(结果堆栈)来存储虚拟机的最终运行结果,从而也就支持了智能合约可以返回多个值。

在实现了完全独立的堆栈管理以后,每个合约只能访问自己的堆栈,因此也就避免了调用方堆栈受到影响,也大大提高了智能合约安全可靠性。对智能合约的运行的可靠性就大大提高了。

新运行指令

同时,针对栈隔离以后的智能合约间的调用场景,增加了丰富的指令来满足不同的场景下的需求。CALL_I, CALL_E, CALL_ED, CALL_ET, CALL_EDT。每个指令的具体内容就不在这里秀了,有兴趣的童鞋可以先看看源代码,另外,详细的说明文档可能会在2019 NEO DevCon公开,敬请期待。

汇总

2018年8月,NEO VM从2.3.0升级到2.3.1。这次升级,主要是修复了一些bug,同时为所有的虚拟机指令增加了文档,方便对虚拟机指令感兴趣的童鞋一起研究。

2018年9月,NEO VM从2.3.1升级到2.3.1.1。这是一个小版本号的升级,将Struct数据结构的克隆方法从递归复制改为了循环复制,从而修复了可能引起的无限递归的问题。

2018年11月,NEO VM从2.3.1.1升级到2.3.3。修复了Encoding的一个小问题。同时为交互服务提供了一个哈希字典。然后,又将交互服务从一个类改成了接口IInteropService,从而实现了NeoVM更为彻底的解耦。可以更方便的将NeoVM虚拟机部署到Neo网络以外的地方。

2018年12月,NEO VM的维护仍然在紧锣密鼓的进行中,从各种不同的角度对NeoVM进行精雕细刻以提高NeoVM的安全性和可靠性。

寒冬之中,保持初心,作为能够为开发者提供的更好用的基础设施,NeoVM进化的脚步从来就没有停下来。2019已经来临,相信在新的一年里,NeoVM将与NEO一起去往更高更远的地方。

转自NEO智能经济:https://mp.weixin.qq.com/s/J2zo-bTu_VCW0hGZl6M0sA

发表评论

Top