前言
这个专题记录我在学习 SUI-MOVE 时相关的心得, 供需要的人参考.
以下所有内容均以 macOS 为环境, 其他操作系统请自行改变操作.
SUI官网
SUI有一个开发者门户, 不过教程都是英文的, 这个系列将官网的内容以及网上一些有帮助的第三方内容进行整合, 作为个人的学习心得记录. 希望可以帮助到有需要的人
安装 SUI-WALLET
就像 metamask 一样, SUI有一个官方的浏览器插件, 而且支持 zkLogin(不需要助记词, 使用 Google 账号登陆)
chromewebstore.google.com/detail/sui-…
在这里下载, 可以导入一个自己的钱包, 或者让他去创建一个新的钱包, 这个插件可以帮你直接在测试网上领取测试币(在设置中切换网络)
安装 sui-cli
如果你不是 macOS 你可以结合本文, 参考官网来安装:
sui-cli 是一个命令行工具, 用于发布和调用, 调试 move 合约.
安装之前需要先安装 homebrew(macos), 如果你没有, 请自行搜索教程并安装
另外, 如果您需要跑本地网络, 还需要安装一个 postgresql 的依赖, 否则无法启动 sui-test-validator
brew install postgresql@14
然后去到 sui 的 GitHub-repo 下载一个最新版的 mainnet-release
M系列芯片请选择ARM64的版本, 其他选择x86
下载后解压, 找到 target/release, 如果下载的文件带有架构和系统的尾缀, 我们需要手动改名将它去掉
在 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/ 移动).
校验安装
在终端其他任何位置输入以下命令, 如果正常输出软件版本, 那么就是安装成功了, 如果失败可以重启终端再试.
安装 vscode 插件
我们刚才安装的 move-analyzer 是需要配合 vscode 使用的, 直接在 vscode 插件列表安装即可.
如果这个插件在使用过程中提示找不到 move-analyzer 的后端, 那么请你在这个插件的设置中手动指定位置 (~/.local/bin/move-analyzer), 一般情况下不做处理.
如何升级
sui 一直在不断地迭代开发中, 如果你的客户端提示版本过旧, 那么根据上面的内容重新去 GitHub 下载一个最新版本的二进制分发, 然后将其覆盖复制到 ~/.local/bin/ 目录下即可.
启动 sui-test-validator
sui-test-validator 是一个本地环境的验证器, 相当于在 remix 中的本地虚拟EVM.
在本地环境中进行开发, 可以将数据与其他开发者隔离, 避免混淆或者泄密.
在任何目录, 终端下执行
sui-test-validator
如果正常执行, 你会看到一堆出块的信息, 请注意, 每次执行这个命令, 所有区块链的数据都会重置, 所以, 如果你还需要在终端中执行其他操作, 请打开一个新的窗口或者标签页.
在 sui-explorer 查看本地链状态
是的, 你没听错 sui-explorer 也可以查看你本地链的状态, 前提是你用的是默认端口.
打开 sui-explorer, 在右上角选择 Local
如果你看到了相似的节点信息, 说明你的节点在正常运行.
sui-cli 切换到本地网络
如果你希望在本地网络进行开发, 那么你需要将 sui-cli 切换到本地的网络上
# 添加网络
sui client new-env --alias local --rpc http://127.0.0.1:9000
# 切换网络
sui client switch --env local
看到类似的字样说明已经成功, 如果失败, 请检查网络
本地网络领水
尽管我们运行了本地网络, 但是我们的账户依然没有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>"
}
}'
如果成功, 执行 sui client gas, 可以看到账户已经有 Gas 了.
使用浏览器钱包领水(可选)
使用浏览器钱包可以配合自己开发的 WEBUI 来调试, 同时领水也只需要按一下按钮.
方式1: cli钱包导入到浏览器
sui-cli 的钱包信息存放在 ~/.sui/sui_config/sui.keystore
可以看到这些都是 base64 编码的密钥, 我们使用 sui keytool 来解码
这样就可以得到我们钱包的密钥, 然后将这个 hex 密钥复制到浏览器导入即可.
这样就可以正常领水啦~
方式2: 浏览器钱包导入到 sui-cli
这个方法这里不再赘述, 大概逻辑就是在浏览器钱包创建一个账户, 然后使用 sui keytool import 将其导入到 cli 中.
总结
到这里, sui 开发环境的搭建就告一段落, 关于 sui-cli 的更多使用方法, 可以看这里