Move语言 教程

Move语言是 Diem 项目 专为表达数字资产发明的一种安全可靠的智能合约编程语言。

Move语言是一种静态类型语言,许多简单的程序 Bug 可以在编译过程中就被检测出来,而不是等到执行程序的时候才被发现。

Move语言是一种专为数字资产设计的编程语言,用于发行数字货币等数字资产、处理区块链上交易及管理验证节点。

目前,Move语言仅能在内置的智能合约使用,如发行Libra、处理与Libra相关的交易及管理验证节点等等。

Move 最早出现在 Facebook 的区块链项目 Libra 中,最大的特点是资源 Resource 作为Move的一等公民。不同于以太坊的开发语言Solidity,Move的资源永远不能被复制或隐式丢弃,只能在程序之间移动。

Move语言的设计原则

1. 资源优先

在区块链中,我们需要通过程序来存取数字资产,这个数字资产和普通程序中的变量(如boolean,integer,string)有着明显的区别。

我们需要一个特别的方式来表示区块链中的数字资产,这就是资源 resource。

Move语言的 resource 就是特别为数字资产定义的,resource 是不能被拷贝和隐式销毁的,它只能在不同的用户之间移动。

除了这个特殊的限制,resource 和其他普通的资源一样,可以存储在数据结构中,可以作为参数传给过程。

Move语言的 module 类似于以太坊中的智能合约,module 声明了 resource 类型和过程。module 中的定义的 type 和过程可以被其他的 module调用。

2. 灵活性

Move语言可以通过 transaction 脚本,自由组合各种 transaction 来实现不同的功能,一个 Move 脚本可以调用多个 transaction。

Move语言中的 module/resource/procedure 的关系,类似于面向对象程序语言中 classe/object/method 的关系。

3. 安全性

Move语言定义了资源的安全性、类型的安全性和内存的安全性,任何违背这些安全性的操作都会被拒绝。

Move编译的字节码提交到链上后,会被字节码验证器校验,然后经由字节码解释器执行。

4. 可验证性

Move语言具有多种验证方式。通常,最好的验证方式就是将字节码提交到链上进行真实验证,但这样很明显会加重链的负担,影响交易的速度。所以,我们在 Move 中尽可能多在链上做轻量级的验证,而在语言级别做线下的静态验证。

与任何编程语言一样,Move 应用程序也需要一组适当的工具来编译、运行和调试。由于 Move 语言是为区块链创建、并且仅在区块链中使用,因此在链下运行程序不是一件容易的事,因为每个应用都需要一个编辑环境、账户处理和 ...