什么是虚拟机?
以太坊的智能合约的部署和调用结构,EVM 就是虚拟机。简单来说,以太坊虚拟机是建立在以太坊区块链上的一个代码运行环境,但虚拟机本身并没有存储在区块链内,而是和区块链一样同时存储于各个节点计算机上。每个参与以太坊网络中的校验节点都会运行虚拟机,并将其作为区块有效性校验协议的一部分。每个节点都会对合约的部署和调用进行相同的计算,并存储相同的数据,以确保将最权威(最真实)的结果记录在区块链内。
以太坊虚拟机是一个图灵完备的 256 位虚拟机,这说明以太坊虚拟机可以进行任何种类的计算。但为了防止恶意用户设计无限循环代码使虚拟机的运行瘫痪,以太坊虚拟机中执行的代码严格受到一个参数的制约,这个参数就是 GAS。
MIT虚拟机
现在介绍一下我们正在研发虚拟机的一些设计理念,预计2019年中旬或下旬能出原型或测试版。我们希望把主流的编程语言比如C++、C#,Java引入进智能合约体系里。因为我们认为目前我们在智能合约生态里不是需要更多看起来很光鲜的工具,而是编程的稳定性和可预测。MIT虚拟机支持i686指令集。基本上意思是编译器本来就可以用,唯一需要做的就是把类似C++、C#等的编译器引入到MIT的智能合约操作系统中。虚拟机也是运行在去中心化的分布在区块链上,所以也可以使用时间戳和其他功能。MIT虚拟机最突出的有点就是会比以太坊虚拟机(EVM)在调用和引入智能合约时更快、代码运行成本更低。因为需要调用节点的资源更少,所以代码运行成本费用更低。
鼓励高效的智能合约
在项目开发过程中遇到的一个最头疼的问题就是所有的东西都是开放的,所以我们在设置代码运行成本的时候需要假定开发者会适用我们提供给他们的所有功能。在这个假设下,MIT虚拟机对那些设置了限制同时定义所需功能的智能合约给与代码运行成本折扣。我们鼓励开发者优化和简化智能合约。假定一个DAPP每天有100笔交易,那我们所指定的这个奖励机制就会帮开发团队省下一笔可观的钱。具体包括依赖关系提示、仅适用于静态、不可重入、non-payable等等。可以显示是用了哪种依赖,可能有一个智能合约需要查询这个主链上的某个智能合约,或者这个主链上的某个库。如果把这些依赖关系都明确出来,那主链在运行该合约的时候就会很清楚哪些能够并行运行,两者之间没有共享可变状态。仅适用静态,是指合约没有可以执行的状态,唯一的状态就是返回的任何状态。 我们将利用这些手段让所有的智能合约开发者和DAPP开发者在这个生态系统中自然而然地通过自由市场手段走到一起,确保开发环境的便洁。
可信库
在以太坊生态系统中另一个常见的麻烦是delegate call系统。这实际上也是是Parity multi-sig亏损了一亿美元的原因。他们有一个delegate call系统,这意味着他们拥有一个核心智能合约,是其他智能合约的基础。而这个为数百个其他账户提供依赖的主合约自毁,不再存在。所以导致钱仍然在,但确定谁可以访问它自已的合约不存在,所以没有人可以访问它。这个问题的答案是可信库(Trusted Library)。一个可信库合约本身非常明确,可以预先给自己设定不同的限制。这样做的目的是一旦写完了,所有的东西都可以由节点甚至手工进行简单的预编译。Trusted Library不能被支付,因为没有必要;这个库不能存储状态,因为理想的情况是它只存储功能的结果,然后返回合约所需要的结果。可以执行非常简单的code,比如确定字符串名称,或者非常复杂的code比如加密算法。这背后的想法是,我们用去中心化治理协议(MGP)来让某些功能更快,用更少的MIT。我们把这个可信库特殊处理,它执行的是本地代码,速度非常快。通过MGP,在不用分叉或者任何强制性的节点升级或者导致任何生态系统终端的前提下,我们可以把执行该合约的MIT设定在某个固定的值,而不是一些动态的。
错误处理
另外,MIT虚拟机实际上可以处理错误。如果在Solidity程序中有错误,那么基本上没有什么可以补救的。它会消耗掉所有代码运行成本的MIT,没法预先捕捉到错误,或从故障中恢复或恢复代码运行成本的MIT。相反,MIT具有错误处理功能,可以预先捕捉错误并确定错误发生的位置,并确定要做什么,是保留所有的代码运行成本的MIT,还是可以恢复状态,将剩下的MIT返还给执行合约的账户。这与“MIT提示”类似。智能合约开发类似于实时操作系统开发。时间没有限制,但是MIT有限。如果合约需要比预期更多的MIT,那么MIT将最终用完,而且将无法恢复它。因此部署一个计时器系统,提醒MIT消耗量,以及确定要做什么。这样如果合约运行完全出乎意料,或者MIT不够,可以回到某种紧急状态。这一块是MIT项目方目前重点研究的方向。
个人认为以太坊使用的WebAssembly非常有趣,但是它非常年轻,而且在设计上并不完善和完整,还只是一个pre-α的预测试版本。在安全性能上写起来更加复杂,因为这是非传统方法。 从他们的核心开发团队也能看得出来,基本没有智能合约虚拟机开发背景的人员。所以大致可以看出来它还是主要针对浏览器,而不是智能合约。
对MIT虚拟机的介绍就到这里,如果对曌链MIT的技术感兴趣请关注我们的每周快讯和开发简报,会及时更新项目开发进度。
官方网址:mit.club
微信公众号:MitFortuneClub
网友评论