sui-move快速入门实践

🖐🏻 免责声明

本教程仅供学习交流使用,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,请各读者自觉遵守相关法律法规。

# 学习资料

视频资料 (opens new window)

中文书籍 (opens new window)

# 学习过程

# 配置开发环境

# Linux-Centos8Stream

具体参考地址 (opens new window)

# 遇到的具体问题

1.linux上的网络问题

  • dns配置8.8.8.8
  • 建议是搞定vpn,我这里用的是clash+购买的订阅,最后配置为终端代理,可以解决90%的网络下载问题

2.libssl-dev,libclang-dev,libpq-dev这三个库我的linux不支持,对应分别用yum安装openssl,clang,postgresql-libs解决了问题

# Windows

# 预安装包

Rust and Cargo (opens new window)

# win操作系统额外依赖

https://docs.sui.io/guides/developer/getting-started/sui-install#additional-prerequisites-by-operating-system

  • cURL
  • Rust and Cargo
  • Git CLI
  • CMake
  • C++ build tools
  • LLVM compile
# 安装sui

cargo install --locked --git https://github.com/MystenLabs/sui.git --branch testnet sui sui --version 查看是否安装成功

# 升级sui

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

# 开发工具配置

1.vscode

2.sui move analyzer插件

  • 插件需要额外配置一个path,需要去下载一个sui move analyzer的可执行文件

# sui-cli主要用法

# 管理网络

1.添加测试网络 sui client new-env --alias testnet --rpc https://fullnode.testnet.sui.io:443

2.切换测试网络 sui client switch --env testnet

3.列出所有网络 sui client envs

# 管理地址

1.查询当前保存了密钥的地址: sui client addresses

2.查询当前启用的地址: sui client active-address

3.按私钥导入地址

  • 根据私钥获取byte32 sui keytool convert <private key>

  • 根觉byte32导入新地址 sui keytool import <byte32> ed25519

4.切换激活地址sui client switch --address <地址>

# 获取测试币

获取到当前激活地址sui client faucet

# 查看余额

sui client gas

# 创建项目

sui move new hello_world

# 发布项目

sui client publish --gas-budget 10000000 --skip-fetch-latest-git-deps 跳过更新依赖

发布关键信息:

1.最上面一行是发布的交易hash

2.最下面有packageid

# 调用方法

sui client call --function <function_name> --module <module_name> --package <package_id> --args <arguments> --gas-budget <gas_budget>

# 实战

# 任务1-HelloWorld

代码仓库 (opens new window) packageID:0x8b79c94da042350f128cc8071950409fa1e124de06db986fb1c3fc6fb22c0aac

链上记录 (opens new window)

# 任务2

# 1.nft

代码仓库 (opens new window)

# 2.猜数字游戏

游戏规则:

  1. 玩家和计算机各猜一个 0 到 9 之间的数字。
  2. 谁猜的数字大,谁就获胜。
  3. 如果双方猜的数字相同,则平局。

游戏逻辑:

  • 玩家输入一个 0 到 9 之间的数字。
  • 计算机随机生成一个 0 到 9 之间的数字。
  • 比较玩家和计算机的数字大小,并显示游戏结果。

游戏玩法:

sui client call --function play --module guess_number_game --package <package_id> --args <你的数字> 0x6 --gas-budget <gas_budget>

控制台会打印,你的数字,电脑数字,游戏结果

代码仓库 (opens new window) packageID:0x4a374a6fd8bc863a6f8bad0564e6935619f86a36fe980ed9d7a1ca83228c5c20

链上记录 (opens new window)

play命令:只需要把第一个参数2换为你想输入的数字即可

sui client call --function play --module mygame --package 0x4a374a6fd8bc863a6f8bad0564e6935619f86a36fe980ed9d7a1ca83228c5c20 --args 2 0x6 --gas-budget 10000000

游戏结果展示:

╭──────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Transaction Block Events                                                                             │
├──────────────────────────────────────────────────────────────────────────────────────────────────────┤
│  ┌──                                                                                                 │
│  │ EventID: 5TUrD2QhmzgfyQuiNWdaLqJPfUpfqvdjVeLkg4nJEKpJ:0                                           │
│  │ PackageID: 0x4a374a6fd8bc863a6f8bad0564e6935619f86a36fe980ed9d7a1ca83228c5c20                     │
│  │ Transaction Module: mygame                                                                        │
│  │ Sender: 0xba64eccae040d94e77f478f26bb0bbc868afd673757116ee52a7901c9686e465                        │
│  │ EventType: 0x4a374a6fd8bc863a6f8bad0564e6935619f86a36fe980ed9d7a1ca83228c5c20::mygame::GameResult │
│  │ ParsedJSON:                                                                                       │
│  │   ┌─────────────────┬─────────┐                                                                   │
│  │   │ computer_number │ 3       │                                                                   │
│  │   ├─────────────────┼─────────┤                                                                   │
│  │   │ result          │ you win │                                                                   │
│  │   ├─────────────────┼─────────┤                                                                   │
│  │   │ your_number     │ 9       │                                                                   │
│  │   └─────────────────┴─────────┘                                                                   │
│  └──                                                                                                 │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────╯╭

# ☕ 请我喝咖啡

如果本文章对您有所帮助,不妨请作者我喝杯咖啡 :)

pay


# ☀️ 广告时间

现承接以下业务,欢迎大家支持:)

  • Web 2.0 & Web 3.0应用定制
  • Web 3.0专项脚本定制与优化
  • 数据爬虫需求快速响应
  • 网站/公众号/小程序一站式开发
  • 毕业设计与科研项目支持
  • 企业管理软件定制:ERP, MES, CRM, 进销存系统等

联系方式:

X:@motuoka

V:ck742931485

wx