Facebook Move 语言简介

简介

Move 是一种新型编程语言,旨在为 Libra 区块链提供安全及可编程的基础。

语言组织

Move 语言的目录一般由五个部分组成:

  • 虚拟机(VM),它包含了字节码格式、字节码解释器和用于执行区块链交易的基础结构。此目录还包含生成区块链的基础结构。
  • 字节码验证器,它包含一个用于拒绝无效 Move 字节码的静态分析工具。虚拟机在执行每一段新的 Move 代码之前,先对它的字节码进行验证。编译器运行字节码验证器时会向程序员显示错误。
  • Move 中间表示层(IR)编译器,它将人类可读的程序文本编译成 Move 字节码。警告:IR 编译器是一种测试工具。它有可能会生成无效的字节码,从而该字节码可能会将被 Move 字节码验证器所拒绝。IR 语法正在修订当中,随时都会经历重大的变化。
  • 标准库,其中包含核心系统模块(如 LibraAccount 和 LibraCoin)的 Move IR 代码。
  • 对虚拟机、字节码验证器和编译器的测试。这些测试是用 MoveIR 编写的,并由一个测试框架运行,该框架从注释中解析编码的特殊指令并运行测试的预期结果。

Move 语言与 Libra 区块链的融合

Libra 核心组件通过 VM 与 Move 组件交互。具体说,就是保证在接纳组件的控制下,只有通过了 VM 清理那些无效的交易之后才能进入内存池(mempool)进行协商(Consensus),这个 VM 不是完全的,而是裁剪出来一个有限制功能子集的 VM。最后执行组件通过 VM 来执行区块链的交易。

探索 Move IR

  • 您可以在测试中找到许多 Move IR 的小示例。试验 Move IR 的最简单方法是在此目录中创建一个新的测试,并按照运行测试的说明进行操作。
  • 在标准库中可以找到一些更实质性的例子。最典型的两个是 LibraAccount.mvir,它实现了 Libra 区块链上的帐户,还有 LibraCoin.mvir,它实现了 Libra 区块链货币。
  • Libra 测试网中的四个事务脚本,也在标准库目录中。它们是点对点传输、帐户创建、发币(仅适用于有权限的帐户)和密钥循环。
  • 有关 Move IR 最完整的文档是其语法。您还可以参阅 Move IR 的解析器
  • 有关 Move IR 代码编写的更多详细信息,请参阅 IR编译器自述

目录组织

├── README.md          # 自述文档
├── bytecode_verifier  # 字节码验证器
├── functional_tests   # Move 语言测试框架
├── compiler           # Move IR 字节码编译器 
├── stdlib             # 核心Move 模块和事务脚本
├── test.sh            # 用于运行所有语言测试的
└── vm
    ├── cost_synthesis # 字节码指令的成本综合
    ├── src            # 字节码语言定义、序列化程序和反序列化程序
    ├── tests          # VM测试
    ├── vm_genesis     # 创建状态创建和块链生成写入集
    └── vm_runtime     # 字节码解释器

译自:https://developers.libra.org/docs/crates/move-language

发布了293 篇原创文章 · 获赞 260 · 访问量 232万+

猜你喜欢

转载自blog.csdn.net/zhangxin09/article/details/93845690
今日推荐