使用 Cursor 和 Devbox 快速开发基于 Rust 的 WASM 智能合约

本教程以一个智能合约(使用 NEAR 的一个官方 Fungible Tokens 来实现)的例子来介绍一下 Devbox 的强大功能,轻松构建环境,轻松发布。

NEAR 是一个去中心化的应用平台,使用了分片技术的区块链。

免责申明:本教程仅适合用来学习智能合约。

Fungible Tokens 我就不解释了,有兴趣的自己去搜索,我是想用这个东西做公司内部的一个积分系统,可以通过积分对企业成员实时奖励。

话不多说,正式开始:

秒开 Rust 环境

首先登录 Sealos,然后打开 Devbox,直接选 Rust 环境即可。

如果你非要在自己电脑上装环境,你可能会遇到以下问题:

  • 下载半天,不一定能装成功。
  • 可能会把环境搞乱,不方便推到重来。
  • 如果你是 m 系列的 MacBook,则是 arm64 架构,而上线到服务器一般都是 x86 架构,各种跨平台编译能搞死人。

等待状态变成 Running 之后,在操作选项中选择使用 Cursor 连接,首次打开会提示安装 Devbox 插件,安装后即可自动连接开发环境。

这样基础干净的编程环境就搞定了,环境全部在云端,通过本地 Cursor 去连接。

安装 NEAR CLI

在 Cursor 终端中输入以下命令:

bash 复制代码
rustup target add wasm32-unknown-unknown 
curl --proto '=https' --tlsv1.2 -LsSf https://mirror.ghproxy.com/https://github.com/near/near-cli-rs/releases/latest/download/near-cli-rs-installer.sh | sh 
curl --proto '=https' --tlsv1.2 -LsSf https://mirror.ghproxy.com/https://github.com/near/cargo-near/releases/latest/download/cargo-near-installer.sh | sh

你能感受到神一般的速度,特别是海外可用区,如果在本机,估计以上三个动作又可以刷半个小时抖音了

克隆代码

bash 复制代码
git clone https://mirror.ghproxy.com/https://github.com/fanux/FT 
cd FT 
# 编译代码 
./scripts/build.sh

30s 不到,又全搞定了,而且不会出错,因为环境和代码的一致性很好,不会出现任何不符合预期的事。

创建 NEAR 账户

bash 复制代码
$ near login
If your browser doesn't automatically open, please visit this URL:
	 https://testnet.mynearwallet.com/login/?title=NEAR+CLI&public_key=edAi3rTjgAd5g7racV3GAkBt4RtqDjjKa1

你就可以复制这个连接到浏览器上创建账户,如果你还没有账户,可以在测试网中创建一个新账户。

后面的 12 个单词请务必记好,助记词可以生成公钥和私钥。

成功后可以看到这个文件,这里面有私钥,请勿泄漏:

bash 复制代码
sealos@sealospoint:~/project/FT$ ls ~/.near-credentials/testnet/
sealospoint.testnet  sealospoint.testnet.json

部署合约

bash 复制代码
sealos@sealospoint:~/project/FT$ ID=sealospoint.testnet
sealos@sealospoint:~/project/FT$ echo $ID
sealospoint.testnet
bash 复制代码
near deploy $ID res/fungible_token.wasm 

发行 FT

near call $ID new \
    '{"owner_id": "'$ID'", "total_supply": "1000000000000000", \
    "metadata": { "spec": "ft-1.0.0", "name": " Sealos Point", \
    "symbol": "SLPT", "decimals": 8 }}' --accountId $ID

之后就可以看到钱包里面有自己发行的 FT 了。

发布版本

如果测试代码没什么问题了,就可以使用 Devbox 对整个环境打一个包了:

这就自动给你打好了 Docker 镜像,100% 成功,100% 不需要你关心 Dockerfile 以及 Docker 和 K8s 的任何知识。

线上运行

刚才发布的版本点 Deploy 就可以线上运行,这样我们的开发环境和线上环境可分开。本教程的合约是运行在区块链上的,所以这里就不需要再部署了。

总结

我以前在没有 Devbox 的情况下想做这个东西,环境我就没搞定。安装特别慢,而且我本机装了很多乱七八糟的东西很容易依赖包版本冲突。

一编译 Rust 代码电脑都可以煎鸡蛋,ARM 的架构和 x86 还有很多不兼容还需要搞跨平台编译。好不容易搞定的环境就也保留不下来给我下次继续用。

开发完了又要配置 HTTPS 数据库负载均衡等等东西,累觉不爱,想想写个代码要搞这么多无关的事,我就不想写了。

然而有了 Devbox,几分钟这些事全搞定了,而且环境非常干净且丰富,下载包也非常快,编译也直接在云端完全不卡。真是神器!