公链新宠Move合约如何快速入手

目录

引言

什么是 Move 合约

Move 项目工程结构

Move 的源码结构

Move 的数据存储

尝试一下 Move 的 hello-world

工具&环境准备

合约编译&测试

合约发布&调试

Move 的一些优质学习资源

欢迎关注笔者 twitter: @wallywxy沟通交流


引言

Move 语言伴随着新公链 Aptos 和 Sui 迅速崛起,其设计理念“资源是一等公民”,非常适合进行资产的数字化编程。Move 的白皮书中指出数字化资源应该不可以被复制,不能被隐式丢弃,只能在程序的存储地址之间进行移动,依据该理念 Move 为资产的稀缺性表达访问控制提供了高于 Solidity 的表达能力。本文主要探求一下 Move 的基本概念,体验基本语法,感受在 Aptos 上如何部署和调用 Move 的hello world

什么是 Move 合约

Move 是基于 Rust 演化出来的合约编程语言,基本的语法结构和 Rust 的范式类似,但是更加简单,也做了一些支持资源特征表达方面的专门设计。

Move 项目工程结构

如下所示是 Move 工程的典型结构,其中 Move.toml 和 sources 是必备的,其他部分按需安排,其中 Move.toml 是工程的配置管理文件,包括版本号、依赖、包名什么的。sources 里面就是源码,源码以 .move 作为后缀名。

a_move_package
├── Move.toml      (required)
├── sources        (required)
├── examples       (optional, test & dev mode)
├── scripts        (optional)
├── doc_templates  (optional)
└── tests          (optional, test mode)

Move 的源码结构

如下所示为一个简单的 Move 的源码实例, 在 Move 中代码组织形式包括两种,一种是 module 一种叫 script

  • 模块(module): 定义结构体以及函数,类似于 solidity 中的合约,会被发布到链上永久存储,模块进一步可以分为系统模块如 std 和 用户自定义模块,不同的区块链如 Aptos, Sui 又根据自身链的特性提供了一些链的特殊能力模块。
  • 脚本(script): 可执行的入口函数,类似传统程序中的 main 函数,一半儿也直接定义为 main, 属于执行过程中的临时代码,不存储到链上
// module example
module 0xCAFE::BasicCoin {
    struct Coin has key {
        value: u64,
    }

    public fun mint(account: signer, value: u64) {
        move_to(&account, Coin { value })
    }
}

// script example
script {
    // Import the Debug module published at the named account address std.
    use std::debug;

    const ONE: u64 = 1;

    fun main(x: u64) {
        let sum = x + ONE;
        debug::print(&sum)
    }
}

其中 module 的完整语法定义为:


module <address>::<identifier> {
    (<use> | <friend> | <type> | <function> | <constant>)*
}

module : 关键词
address: 该 module 发布到链上的用户的地址,在写合约代码时,可以用别名标识
identifier: 模块名称,一般大写驼峰结构表示

Move 的数据存储

从区块链或者智能合约虚拟机的视角而言,Move 在链上存储的数据大体上分为 module 和 state 两块,也就是合约的字节码和合约运行过程中产生数据,它们的存储示意图如下, 可以看到 Move 的数据都存储在账户地址下,这为其权限控制提供了很好的帮助。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值