SUI MOVE 学习日记: SUI开发环境的搭建

853 阅读5分钟

前言

这个专题记录我在学习 SUI-MOVE 时相关的心得, 供需要的人参考.

以下所有内容均以 macOS 为环境, 其他操作系统请自行改变操作.

SUI官网

SUI有一个开发者门户, 不过教程都是英文的, 这个系列将官网的内容以及网上一些有帮助的第三方内容进行整合, 作为个人的学习心得记录. 希望可以帮助到有需要的人

sui.io/developers#

安装 SUI-WALLET

就像 metamask 一样, SUI有一个官方的浏览器插件, 而且支持 zkLogin(不需要助记词, 使用 Google 账号登陆)

chromewebstore.google.com/detail/sui-…

在这里下载, 可以导入一个自己的钱包, 或者让他去创建一个新的钱包, 这个插件可以帮你直接在测试网上领取测试币(在设置中切换网络)

image.png

image.png

安装 sui-cli

如果你不是 macOS 你可以结合本文, 参考官网来安装:

docs.sui.io/guides/deve…

sui-cli 是一个命令行工具, 用于发布和调用, 调试 move 合约.

安装之前需要先安装 homebrew(macos), 如果你没有, 请自行搜索教程并安装

另外, 如果您需要跑本地网络, 还需要安装一个 postgresql 的依赖, 否则无法启动 sui-test-validator

brew install postgresql@14

然后去到 suiGitHub-repo 下载一个最新版的 mainnet-release

image.png

M系列芯片请选择ARM64的版本, 其他选择x86

下载后解压, 找到 target/release, 如果下载的文件带有架构和系统的尾缀, 我们需要手动改名将它去掉

image.png

image.png

release 文件夹处打开终端

这里我们把他移动到 ~/.local/bin 文件夹下, 并添加到 path 变量中, 这样我们就可以在任何地方使用 sui-cli

mkdir -p ~/.local/bin

mv * ~/.local/bin/

# 添加环境变量
echo "export PATH="$HOME/.local/bin:\$PATH"" >> ~/.zshrc

# 生效变量
source ~/.zshrc

安装 move-analyzer

move-analyzer 是用来校验 move 语法的工具, 需要配合 vscode 使用

我们回到解压的顶层文件夹, 找到 external-crates/move/target/release 下有一个 move-analyzer-xxx-xxx 文件, 需要同样将其 xxx-xxx 的尾缀去掉, 然后移动到 ~/.local/bin 中. (用访达自己拖过去也可以, 或者使用命令行 mv * ~/.local/bin/ 移动).

image.png

校验安装

在终端其他任何位置输入以下命令, 如果正常输出软件版本, 那么就是安装成功了, 如果失败可以重启终端再试.

image.png

安装 vscode 插件

我们刚才安装的 move-analyzer 是需要配合 vscode 使用的, 直接在 vscode 插件列表安装即可.

如果这个插件在使用过程中提示找不到 move-analyzer 的后端, 那么请你在这个插件的设置中手动指定位置 (~/.local/bin/move-analyzer), 一般情况下不做处理.

image.png

如何升级

sui 一直在不断地迭代开发中, 如果你的客户端提示版本过旧, 那么根据上面的内容重新去 GitHub 下载一个最新版本的二进制分发, 然后将其覆盖复制到 ~/.local/bin/ 目录下即可.

启动 sui-test-validator

sui-test-validator 是一个本地环境的验证器, 相当于在 remix 中的本地虚拟EVM.

在本地环境中进行开发, 可以将数据与其他开发者隔离, 避免混淆或者泄密.

在任何目录, 终端下执行

sui-test-validator

如果正常执行, 你会看到一堆出块的信息, 请注意, 每次执行这个命令, 所有区块链的数据都会重置, 所以, 如果你还需要在终端中执行其他操作, 请打开一个新的窗口或者标签页.

image.png

在 sui-explorer 查看本地链状态

是的, 你没听错 sui-explorer 也可以查看你本地链的状态, 前提是你用的是默认端口.

打开 sui-explorer, 在右上角选择 Local

suiexplorer.com/

image.png

如果你看到了相似的节点信息, 说明你的节点在正常运行.

sui-cli 切换到本地网络

如果你希望在本地网络进行开发, 那么你需要将 sui-cli 切换到本地的网络上

# 添加网络
sui client new-env --alias local --rpc http://127.0.0.1:9000

# 切换网络
sui client switch --env local

看到类似的字样说明已经成功, 如果失败, 请检查网络

image.png

本地网络领水

尽管我们运行了本地网络, 但是我们的账户依然没有SUI代币供我们进行开发测试, 这时候我们需要在我们自己的本地网络领水

领水有多种方式, 这里介绍官方的方法

使用cli领水

先找到自己 cli 的钱包地址, 随后复制这个地址

sui client active-address

然后使用 CURL 发送领水的请求, 如果没有安装 CURL 请先安装:

brew install curl

然后向本地节点发送领水的请求, 注意替换掉 <YourAddress>

curl --location --request POST 'http://127.0.0.1:9123/gas' \  
--header 'Content-Type: application/json' \  
--data-raw '{  
    "FixedAmountRequest": {  
        "recipient": "<YourAddress>"  
    }  
}'

image.png

如果成功, 执行 sui client gas, 可以看到账户已经有 Gas 了.

image.png

使用浏览器钱包领水(可选)

使用浏览器钱包可以配合自己开发的 WEBUI 来调试, 同时领水也只需要按一下按钮.

方式1: cli钱包导入到浏览器

sui-cli 的钱包信息存放在 ~/.sui/sui_config/sui.keystore

image.png

可以看到这些都是 base64 编码的密钥, 我们使用 sui keytool 来解码

image.png

这样就可以得到我们钱包的密钥, 然后将这个 hex 密钥复制到浏览器导入即可.

image.png

这样就可以正常领水啦~

方式2: 浏览器钱包导入到 sui-cli

这个方法这里不再赘述, 大概逻辑就是在浏览器钱包创建一个账户, 然后使用 sui keytool import 将其导入到 cli 中.

总结

到这里, sui 开发环境的搭建就告一段落, 关于 sui-cli 的更多使用方法, 可以看这里

docs.sui.io/references/…