【Aptos与Sui智能合约】 (长话短说) #01 - 基础知识

Sui区块链以其灵活性命名,源于日本哲学中的水元素概念。Sui Move基于Move语言,但有别于Move,如使用对象为中心的全局存储。Move包含module和script,module是库,script为执行入口,script调用module更新全局存储。Sui安装可通过多种方式,如直接安装、Docker或二进制包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0x0 Sui名字的由来

Sui,发音swē,这个单词是来自日本哲学里的一个水元素,类比sui的力量就像水一样,可以在任何环境下自由适应变换。因此Sui blockchain的追寻就是提供一个灵活多变的Web3.0土壤,对其加以利用和塑性。

0x1 Sui Move和Move

Sui Move源自于Move。具体的不同点将在以后的编写示例中标出。

不同点类别:

  • 1.Global Storage Operators(全局存储操作符)
  • 2.Key Abilities(关键能力)

关键的不同点:

  • 1.Sui使用基于对象为中心的全局存储
  • 2.地址表示对象ID
  • 3.Sui对象有全局唯一ID
  • 4.Sui有模块初始化器
  • 5.Sui的程序进入点以对象引用作为输入

0x2 Modules和Scripts

Move有两种类型的程序,分别是module和script

Modules: 是一种library(库),可以定义struct类型,struct里可以定义函数并操作数据,在struct里定义的数据是global storage的,并且module里的函数定义是用来更新global storage的数据的;Module本身也是在全局存储的。

Scripts: 是可执行进入点,类似其他语言中的main函数。一般script调用一个已经部署的module的函数是可以更新global storage的,并且script是短时效的代码,因为它没有在global storage里发布。

一个Move源文件,或者编译后单元(compilation unit)可能包含多个module和script,并且发布一个module或者执行一个script是独立的VM操作。

0x3 Script

script存在的主要目的是调用module函数。
script本身不能定义struct和friends,也不能访问global storage。
例如:

script {
    // 1.可以使用use指令
    use std::debug;
	// 2.可以声明constant
    const ONE: u64 = 1;
	// 3.仅有一个函数,参数类型和个数不限,无返回值,函数名也可以不叫做main
    fun main(x: u64) {
        let sum = x + ONE;
        debug::print(&sum)
    }
}

0x4 Module

例如:

module 0x42::test {
    struct Example has copy, drop { i: u64 }

    use std::debug;
    friend 0x42::another_test;

    const ONE: u64 = 1;

    public fun print(x: u64) {
        let sum = x + ONE;
        let example = Example { i: sum };
        debug::print(&sum)
    }
}

第一行代码指定了test的module会被发布到0x42账户下,并存储到global storage里。

  • 一个module就可以是作为包含types和functions的集合。
  • use关键字表示导入其他的module
  • friend关键字表示一组完全可信的module导入
  • const关键字表示定义私有常量

0x5 安装Move

下载/克隆move语言核心库

git clone https://github.com/move-language/move.git

直接安装

// 运行安装
cd move
./scripts/dev_setup.sh -ygt

或者通过docker安装

docker build -t move/cli -f docker/move-cli/Dockerfile .

或者通过二进制安装包安装SUI命令行工具

cargo install --locked --git https://github.com/MystenLabs/sui.git --branch devnet sui



Reference

  • https://docs.sui.io/learn/sui-move-diffs
  • https://docs.sui.io/learn
  • https://move-language.github.io/move/modules-and-scripts.html
  • https://docs.sui.io/build/install#prerequisites
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值