Let's Move 从0开始开发Sui工具类应用 (1)
本系列开始讲述sui平台工具类应用的0基础的开发
有消息称 Sui官方的黑客松将要启航了
(具体日期请关注Sui官网)
最近Sui平台就要开始黑客松了,本次黑客松包含了很多课题。
主要有7个赛道:
- 基础工具
- zklogin
- 游戏
- Move高级特性
- DeFi
- 随机数
- 移动端和大众应用
相信很多小伙伴们都跃跃欲试了吧?(奖金非常诱人哦)
今天Summer.XJ给大家带来一个Sui工具类应用的开发基础教程,目的是让大家可以快速了解掌握Sui平台的应用开发。
由此抛砖引玉 ,希望大家从中能爆发出更多的灵感和想法,积极参与到黑客松当中去。 灵感来自于 rzexin 大佬的 《SUI Move开发必知必会------SUI Move常用命令之client(网络交互命令)》
有兴趣的朋友可以先拜读一下。
我计划的工具类开发,主要包含以下内容:
- 工具本身 一个命令行提示工具(带界面UI的窗口工具)
- 合约奖励 结合sui平台合约奖励机制,开发一个合约,用来激励开发者
- dApp 开发一个dApp,用来后台管理
- github 多人协作开发和维护
工具本身部分
项目名: Sui Assistant (暂定)
概要分析,目前sui命令行已经有很多指令,这些指令需要用户自己记忆和总结,容易前用后忘。 所以,我们开发一个sui助手工具,帮助用户快速使用sui指令。 核心思想就是,
- 用户输入命令,然后sui助手工具自动生成对应的指令。
- 通过查询功能获取对应指令的参数和用法。
- 参考官方文档和一些第三方教程来丰富指令集。
- 初步计划使用 rust 语言开发。
设计草案如下:
工具合约奖励部分
sui平台合约奖励机制
- 贡献者获得Sui代币 : 为工具数据库提供正确数据或完善工具功能
- 开发者获得Sui代币 : 提供工具的全部开发工作
- 社区获得Sui代币 : 社区对工具的宣传推广
- 工具盈利模式 : 广告收入
合约部分架构
首先 使用sui cli 建立合约框架
arduino
sui move new samv
samv是给本次工具集的合约目录名称,执行成功的话会生成以下目录和文件
-
samv
- sources
- Move.toml
soucres目录下是合约源文件,目前里面没有任何内容,Move.toml是sui的配置文件。
新版本的sui生成的Move.toml文件内容如下:
ini
[package]
name = "samv"
# edition = "2024.alpha" # To use the Move 2024 edition, currently in alpha
...
[dependencies]
Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" }
...
[addresses]
samv = "0x0"
...
[dev-dependencies]
...
[dev-addresses]
...
生成的toml文件比以前的sui版本多了很多内容 注意这句
arduino
# edition = "2024.alpha"
toml文件的注释是#,意思是#后面的内容是注释。目前2024语法暂未正式发布,所以需要指定alpha版本。 我们尝试一下老语法情况下的编译情况。
bash
UPDATING GIT DEPENDENCY https://github.com/MystenLabs/sui.git
INCLUDING DEPENDENCY Sui
INCLUDING DEPENDENCY MoveStdlib
BUILDING samv
各位同学编译的时候有可能碰到
rust
82 │ let scaled_numerator = numerator as u128 << 64;
│ ^^
│ │
│ Unexpected 'as'
│ Expected ';'
error[E03003]: unbound module member
┌─ C:Users\Administrator.move\https___github_com_MystenLabs_sui_git_testnet\crates\sui-framework\packages\sui-framework\sources\address.move:43:9
这个问题是因为sui的版本问题, 请使用 1.22.1 版本。因为目前sui的testnet版本已经达到了1.22.1。
合约部分设计:
- 数据库贡献者列表
rust
struct Contributors has store{
user:address,
score:u64
}
- 奖励统计表
kotlin
public fun Bonuses()
- 奖励发放
kotlin
public fun Distributebonuses(){
...
}
dApp部分
采用官方的dApp开发框架做后台管理界面。
github部分
初步想法是:
参与者把指令集和简介已json的形式提交到相应的github仓库。 管理员负责合并和记录。
以上是本章全部了,如果感兴趣的请继续关注后续文章。
想要参与的请联系我。
(未完待续)
Let's Move 中文社区
telegram: t.me/move_cn
QQ群: 79489587