IELE:区块链的一个新虚拟机

本文由币乎社区(bihu.com)内容支持计划奖励。

Runtime Verification (RV)很自豪的发布了他们第一个版本的IELE,区块链的一个新虚拟机。

什么是IELE?

IELE是 LLVM 的一个变种,专门用于在区块链上执行智能合约。它的设计、定义以及实现都是在最高的数学标准下完成的,遵循语义优先的方式,以验证智能合约为主要目标。具体来说,我们使用 K 架构定义了IELE正式的语法和语义,这不仅给我们提供了一系列的程序分析工具包括程序验证器,还提供了一个可执行的参考模型。K 是由我们的团队在过去15年中创建出来的,它将语言设计,语义和形式化方法融入了现代艺术。 IELE的设计是建立一定的经验之上的,该经验就是我们用 K 正式定义了几十种语言,特别是用 K 语言正式定义了两种其他虚拟机的近期经验,即:

与基于栈的EVM不同,IELE是基于寄存器的机器,就像LLVM。它支持无限的寄存器以及无界整数。为了感受一下IELE程序看起来是什么样子的,这里有两个程序(这些还没有被验证,可能会改变):

设计原理

以下是推动 IELE设计的因素:

  • 想成为将高级语言的智能合约翻译并执行的统一、低级平台。合约可以使用ABI的方法进行交互。ABI是IELE的核心元素,而不仅仅只是个公约。无界整数和无限的寄存器应该可以让高级语言的编译更加的直接和优雅,并且看看LLVM的成功,从长远来看更加的高效。事实上,LLVM的很多优化将会继续下去。因此,IELE会尽可能的跟随LLVM的设计选择和表现。团队还包括了来自Illinois大学(LLVM的创造地)的LLVM专家。

  • 为所有语言提供一个统一的gas模型。IELE中gas计算的一般思想是“没有限制,但是你消耗多少就需要支付多少”。例如,一个IELE程序使用的寄存器越多,gas消耗的也会越多。或者在运行期计算的数字越大,消耗的gas越多。使用的内存越多,根据位置和存储在位置上数据的大小,消耗的gas也越多,等等。

  • 为了让编写安全的智能合约更加的简单。这包括编写智能合约必须要遵守的需求规范,同样也使得开发自动化技术更加的容易,该自动化技术以数学方式验证/证明智能合约就此类规范是正确的。例如,在当前智能合约的规范下,将一个可能计算的数字压入栈中,然后跳转到它的地址,这样让验证变得非常的困难,从而也使得安全性变弱。IELE和LLVM一样,命名了标签,跳转语句只能跳转到这些标签。而且,它还避免了使用有界的堆栈,因此就不用担心堆栈和算术溢出问题,这让智能合约的规范和验证变得容易了很多。

就像 KEVM 一样,我们之前定义的EVM的正式语义,是使用 K 架构进行验证和评估的,IELE的设计也同样使用 K 架构且基于语义的风格。加上目前还在开发的快速执行 K 后端,预计从IELE语义中自动获得的解释器将会成为IELE实现的有效参考。

下一步是什么?

为了充分发挥 IELE的潜力,我们计划下一步该做的事情:

  • K 的高效后端。然后是 K 的语义,包括IELE,都可以在一个可接收的性能下被执行。正如我们在KEVM白皮书讨论的那样,当前版本的 K 可以执行EVM的语义,性能与C++实现的EVM参考的性能在一个数量级之内。如果能做到的话,那么就没有动机以特殊的方式来实现IELE:K 可执行的IELE语义也会成为它的实现,所以它的构建是正确的,因此VM本身的实现缺点就不能被利用了。并且,IELE本身会更容易维护一点,未来版本也更容易部署一点。

  • SolidityPlutus到IELE的编译器/翻译器。直接在IELE中编写智能合约比直接在EVM中编写智能合约的可行性要稍微高一点,因为 IELE是跟随LLVM IR的,LLVM IR的设计是人类可读的,但是 IELE 的代码仍然是低级语言的,因此容易出错。为了正确的测试IELE并获得对其整体设计和功能的信心,我们将会实现一个从Solidity到IELE的编译器/翻译器,也是使用K。因为Plutus在智能合约的函数式编程语言中成为明星,而且我们也定义了Plutus正式语义,所以Plutus到IELE 的编译器会在Solidity之后立即开发。

  • 基于语义的编译。除了提升 K 的性能之外,我们还计划实现一个工具,该工具建立在 K 之上,我们称它为基于语义的编译器。请看我们前一篇博客文章了解更多细节。它的思想就是使用一个编程语言语义L和用L编程的程序P,然后生成(使用大量符号执行)一个新的语言语义L',L‘就是P的专用L。我们预期性能至少有一个数量级的增加。更重要的是,这会让我们拥有一个统一的机制将任何拥有K语义的程序语言的任何程序翻译成IELE,因此让IELE和 K 成为使用任何语言执行智能合约的通用平台。

  • 在Cardano区块链上部署IELE。

技术细节和下载

IELE拥有UIUC许可证(类似MIT许可证),它可以自由评论以及在Github上可以免费获取:

除了上面提到的两个IELE程序 erc20.iele和forwardingWallet.iele可以显示IELE代码是人类可读的之外,下面github仓库的链接也可以让你感受一下什么是IELE以及它与EVM和LLVM的区别:

  • iele-syntax.md—IELE语言完整的正式语义
  • iele.md—IELE语言完整的正式可执行语义
  • Design.md—IELE设计原理,也是与LLVM和EVM比较的细节
  • iele-gas.md—IELE的当前gas模型(在我们开发IELE编译器的时候仍然需要调整)

进行参与

本着开源、社区主导的发展精神,我们将会在我们的渠道上进行所有的IELE讨论:

我们鼓励任何感兴趣的人来找我们,提出问题、贡献代码或使用我们的工具进行熟悉。我们也一直在寻找能够处理文档的贡献者,为新开发人员提供有效的安装/快速启动过程,以及更多的示例和测试。 我们正在招聘,并将保持对有帮助的贡献者的留意。

我们也将会在我们新的Twitter页@rv_inc发表我们的更新,希望任何感兴趣的开发者follow我们以及互动。

让我们一起为所有人建立一个更加安全的智能合约。

致谢

我们热烈地感谢IOHK对IELE和KEVM的慷慨资助。 尤其是IELE,如果没有IOHK的支持,它的持续研究会议,以及与研究团队的激烈技术讨论,IELE将是不可能会实现的。

我们同样感谢 K 团队,他们定义了KEVM语义(参见技术报告)并验证了ERC20合规性的智能合约。他们在EVM层面的努力和不平凡的证明引导了寻求新的虚拟机,能够更好地支持智能合同验证的新虚拟机。

翻译作者: 许莉
原文地址: IELE: A New Virtual Machine for the Blockchain

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容