安装 Rust 由于 Sui 是用 Rust 开发的,现阶段还没有独立的安装包,必须安装 Rust 的运行环境为前提,安装命令可参考:https://www.rust-lang.org/tools/install ,根据自己的操作系统选择不同的命令, 例如我的环境是 windows + wsl2(Ubuntu22.04), 选择:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh安装 rust 后,执行如下命令验证其版本:rustup show显示结果 rust 的版本是 1.61.0 :
....... stable-x86_64-unknown-linux-gnu (default) rustc 1.61.0 (fe5b13d68 2022-05-18)安装 Sui binaries
安装 Rust 完成后,进入 Sui 本身的安装,Sui官方开发文档有详细介绍:https://docs.sui.io/build/install 。
2.1 安装 curl 工具包,检查系统是已安装curl:
which curl,如果已经安装 curl 会显示如下信息:/usr/bin/curl如果没有可以通过命令
sudo apt install curl安装 curl,安装成功后可以重新运行which curl验证是否安装成功。2.2 安装 clang 系统包
sudo apt install clang2.3 可选安装 build-essential 系统包,
sudo apt install build-essential,如果 cargo 编译 rust 代码时出现如下错误就需要安装:the error linker 'cc' not found 。2.4 安装 Sui 开发网版本:
cargo install --locked --git https://github.com/MystenLabs/sui.git --branch "devnet" sui,目前 Sui devnet 已经release 0.5.0了,但安装时显示 0.2.0, 不影响使用。 注意,在国内网络安装 Sui 时,可能会遇到如下连接github错误:fatal: unable to access 'https://github.com/MystenLabs/mysten-infra/': GnuTLS recv error (-110): The TLS connection was non-properly terminated. 我是重试超过10次才安装成功。安装成功后,执行验证命令:which sui-movewhich walletwhich rpc-server至此 Sui 安装成功。
wallet 连接 Sui devnet 或 本地网络
安装好 Sui binaries 后,可以通过 wallet 命令与 Sui 网络交互,无论是 devnet 还是 本地开发网络, Sui官方开发文档有详细介绍:https://docs.sui.io/build/wallet。 第一次启动
wallet命令,会默认连接 devnet,连续两次回车使用默认设置连接 devnet,默认的钱包配置文件路径是:~$HOME/.sui/sui_config/wallet.key和wallet.yaml两个文件。 注意新版本的 Sui 配置文件使用yaml格式,不是文档中说的conf。如果不想使用 devnet,可以指定配置参数启动本地开发网络(记得修改配置配置参数路径以适配所在电脑的文件路径):
sui start --config /home/lshoo/.sui/network/config, Sui 网络启动后,可以看到配置参数上当创建了network,wallet,gateway,genesis, validator等配置文件,以及存储网络数据的目录:


之后可以通过指定网络配置文件重启本地网络:`sui start --config ~/.sui/network/config/network.yaml`
wallet 连接 Sui 网络有两种模式,一种是interactive shell(交互式):`wallt -i`,启动后不用再输入 wallet 命令,用输入子命令就行,还有自动补全功能,推荐此模式。例如获取当前地址,效果如下:

一种是Command line mode(命令行),每次都输入wallet + 子命令,例如: wallet active-address

wallet 连接到 devnet 后,需要到 discord 上的 dev-faucet (俗称水龙头)频道领取 gas,格式为:!faucet 0x7f9237bda5c21b44f2071cc659df7b8a27f9c4b1 (记得修改为自己的address),每个address只能领一次, devnet 升级会 把原来的数据清空,devent 升级后需要重新领取 gas,可以用创建地址命令 wallet new-address 生成个地址,然后再用新地址去领。

本地创建 Move-lang pacakge
首先下载 sui 的源码:
git clone https://github.com/MystenLabs/sui.git, 官方推荐目录是: ~/sui:

在用户目录下创建 sui_code_repos 存放所有 sui 的 package 代码,在其目录下创建 medieval_cavalier_package,目录结构如下:

注意: Move.toml 中的 sui dependencies 的路径必须与实际的 sui 代码一致,否则会编译错误:

代码写完后在命令行执行编译命令:sui-move build,确保能编译成功:

部署 Move-lang package 到 devnet 或 本地网络
把当前目录的 package 部署到 Sui 网络:
wallet publish --path . --gas-budget 30000,部署结果如下:

其中红框内的 object id 就是 package 在网络的上 id,调用package的功能需要引用此 id。
调用已经部署的 Smart contract
例如调用module m1 中的
sword_createentry 函数后,数据已经变化:

可以看到 wallet call 命令中 --package 参数的值就是刚才部署后 package的 object id 。
源码如图:

至此,部署 Sui 本地或 devnet 开发环境全部完成!
欢迎引用!备注出处!感谢支持!
