Move 合约在设计时,充实思量了安详性。首先 Move 完全不支持动态指派(Dynamic Dispatch)。好,我这里表明下什么是Dynamic Dispatch,通俗地说,这是一种很是机动的语言机制。在措施内里是可以写许多的函数,可能进程,可能子措施。然后一个主措施可以来挪用这些函数 / 进程 / 子措施,来别离完成差异的成果。
与以太坊 EVM 平台对比,Move 模块系统不支持轮回递归依赖,完美办理合约重入裂痕(Re-entrancy)。
强悍的模块系统Move 模块系统回收的是一种函数式编程语言(OCaml、Coq、SML)气势气魄的设计,凭据白皮书的说法:
Well-typed programs never get stuck.
Move 语言对合约可修改变量举办了很是严格的限制,而且从 Rust 语言何处偷师了一些设计理念。担保任何时刻只能由一个指针对可修改变量举办修改,这样不会造成杂乱。以太坊 Solidity 内里,可以界说许多的指针指向同一个变量,假如代码逻辑没思量清楚,就会很容易出问题。
我为什么有点喜欢上了 Move,想了想,或许下面三个原因:
Facebook 提倡的加密数字钱币项目 Libra6 月 18 日正式果真表态。Libra 同步宣布了多语言官网和白皮书,定位为面向数十亿人的全球钱币和金融处事基本设施。Libra 还宣布了多个技能白皮书,具体先容了其新开拓的编程语言 Move 和共鸣协议 LibraBFT。
摘用白皮书摘要中的一句话:
作者:安比尝试室 SECBIT 郭宇在区块链规模内里,每每套用传统要领的方案,无一胜出,唯有创新才有将来。Libra 的一系列宣布中,新的编程语言 Move 尤为吸人眼球,这也许才是将来智能合约语言该有的样子。
Libra 源码已在 GitHub 开源,测试网络也已上线。今朝设计为许可链(同盟链),其声称当前非许可链(公链)不存在成熟的办理方案可以或许支撑数十亿人的利用需求,并表白将在宣布五年内开始转向非许可链的过渡事情。
Move modules are similar to smart contracts in other blockchain languages. …,However, modules enforce strong data abstraction — a type is transparent inside its declaring module and opaque outside of it.
数字资产不能凭空消失
相信列位和我一样,本日被 Facebook 刷爆伴侣圈。
可是机动也意味着更容易出问题。现代许多编程语言都或多或少支持动态指派,也就是从语言层面直接支持,好比面向工具语言中的「担任」导致的「动态绑定」。动态特性是倒霉于措施的推理,更倒霉于形式化验证(Formal Verification),也更容易出安详问题。在以太坊智能合约设计中就存在很多「动态特性」,好比支持函数指针做参数,合约做参数,Delegatecall 等等。而在 Move 语言中,完全不支持任何形式的「动态指派」可能「动态特性」,所有的合约执行路径都能在编译的时候确定,然后可以举办很是充实的阐明、验证。
数字资产不能被复制
First-class Resources 的真正寄义是数字资产是一等国民,这句话可以引申出,Move 是为操纵数字资产而生的智能合约语言。从技能角度讲,数字资产可以作为合约的变量,数字资产可以存储,可以赋值,可以作为函数 / 进程的参数,也可以作为函数 / 进程的返回值。而 Move 的静态范例系统使得智能合约代码可以或许在编译期,也就是陈设前就可以通过编译器查抄出绝大大都的资源利用错误。担保智能合约不再像以前那样的懦弱不堪。
那么资源,Resources又是什么呢? 这也是一个很学术的名字。Resources是和 Value 相对应的观念。Value是可以随意拷贝的,而Resources只能被耗损,不能被拷贝。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。