本教程以一个智能合约(使用 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,几分钟这些事全搞定了,而且环境非常干净且丰富,下载包也非常快,编译也直接在云端完全不卡。真是神器!