查看原文
其他

Sui 极速上手 | Move dApp 极速入门(拾贰)

李大狗就是我 李大狗LDG
2024-11-19

本文对 Sui 的官方文档有所参考:

https://docs.sui.io

Sui, a next-generation smart contract platform with high throughput, low latency, and an asset-oriented programming model powered by Move.

0x01 安装 Sui 的二进制程序集

1)检查 Rust 版本,如果版本太低,可以先升级:

$ rustc --version
rustc 1.65.0 (897e37553 2022-11-02)
$ cargo --version
cargo 1.65.0 (4bc8f24d3 2022-10-20)

2)下载 repo:

$ git clone https://github.com/MystenLabs/sui.git --branch devnet

3)切换到 dev 分支

cd sui
$ git checkout devnet

4)安装 binaries

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

5)检验安装结果

$ sui

0x02 账户操作

1)激活账户

$ sui client active-address

会得到一个账户以及其对应的Secret Recovery Phrase

2)账户切换

$ sui client switch --address 0x913cf36f370613ed131868ac6f9da2420166062e

3)领取测试币(Faucet)

在 discord 的 #devnet-faucet 频道领取:

https://discord.com/channels/916379725201563759/971488439931392130

发送如下指令:

!faucet [你的地址]

4)查看余额

$ sui client gas

image-20221224111600668

5)查看对象合集

$ sui client objects

image-20221224111435346

6)查看单个对象

$ sui client object [object id]

0x03 创建 NFT

$ sui client create-example-nft

我们可以在浏览器中查到创建的示例 NFT:

https://explorer.sui.io/address/[your_address]

0x04 合约操作

https://docs.sui.io/devnet/build/move

1)创建合约项目

$ sui move new my_first_package

2)在 sources文件夹中新建my_module.move文件:

module my_first_package::my_module {
    // Part 1: imports
    use sui::object::{Self, UID};
    use sui::transfer;
    use sui::tx_context::{Self, TxContext};

    // Part 2: struct definitions
    struct Sword has key, store {
        id: UID,
        magic: u64,
        strength: u64,
    }

    struct Forge has key, store {
        id: UID,
        swords_created: u64,
    }

    // Part 3: module initializer to be executed when this module is published
    fun init(ctx: &mut TxContext) {
        let admin = Forge {
            id: object::new(ctx),
            swords_created: 0,
        };
        // transfer the forge object to the module/package publisher
        transfer::transfer(admin, tx_context::sender(ctx));
    }

    // Part 4: accessors required to read the struct attributes
    public fun magic(self: &Sword): u64 {
        self.magic
    }

    public fun strength(self: &Sword): u64 {
        self.strength
    }

    public fun swords_created(self: &Forge): u64 {
        self.swords_created
    }

    // part 5: public/ entry functions (introduced later in the tutorial)
    // part 6: private functions (if any)
}

3)编译合约

cd my_new_package
$ sui move build

4)部署合约

$ sui client publish ./  --gas [gas-object] --gas-budget 30000 --verify-dependencies

image-20221224121456133

前文链接:
Move 高阶语法 | 共学课优秀笔记
Move 基础语法 | 共学课优秀学习笔记
scaffold-aptos 脚手架 | Move dApp 极速入门(拾壹)
Aptos NFT 发行指南 | Move dApp 极速入门(十)
对 DID Document 的思考 | Move dApp 极速入门(九)
DID中地址聚合器的实现 | Move dApp 极速入门(八)
Aptos 中的智能合约形式化验证 | Move dApp 极速入门(七)
Aptos CLI使用指南与REPL设计建议 | Move dApp 极速入门(六)
实现一套 DID 之总体设计 | Move dApp 极速入门(五)
合约数据类型综述 | Move dApp 极速入门(四)
操作资源 | Move dApp极速入门(三)
第一个 Move dApp | Move dApp极速入门(二)
Hello Move | Move dApp极速入门(一)
继续滑动看下一个
李大狗LDG
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存