sui前端共学week_2笔记
sui前端共学week_2笔记
请关注 sui 前端共学营及其社区,在这里你可以学到前端和 move 合约语言的知识。
新增核心功能,用户create_profile
创建的profile下可再create_folder
创建多个folder,通过vector来进行存储,folder下还可以add_coin_to_folder<T>
添加管理有多种不同的coin,通过动态字段存储。而实现扩展资源管理系统。
在Sui上代币的标准一般就有这三种。Token结构功能只有key,限制用户在合约外不能进行自由传输。 这三者的转化关系如下:
to_coin ==> to_balance ==>
Token Coin Balance
<== from_coin <== from_balance
在 type/index.ts
中定义了一系列 type 类型,用于管理与 Sui 区块链 相关的数据。具体来说,这些类型包括:
EventProfileCreated
、EventFolderCreated
和 EventCoinWrapped
。这些type类型帮助系统更好地组织数据、实现用户管理功能、处理代币和文件夹操作,以及触发相关的事件。
在contracts/index.ts
中核心目的是通过一系列的query
方法查询Sui区块链上的数据,获取原始信息,并将其解析处理成在type/index.ts
预定义的 type 类型。具体来说,这些操作是为了将Sui区块链上返回的原始数据转换成应用中定义的结构化数据类型,便于进一步的操作和展示。
前端可以直接调用合约中create_profile
,create_folder
, add_coin_to_folder<T>
等方法实现资源的管理扩展。
前端调用合约方法:
export const createProfileTx = async (name: string, description: string) => {
const tx = new Transaction();
tx.moveCall({
package: networkConfig.testnet.packageID,
module: "week_two",
function: "create_profile",
arguments: [
tx.pure.string(name),
tx.pure.string(description),
tx.object(networkConfig.testnet.state)
]
})
return tx;
}
export const createFolderTx = async (name: string, description: string, profile: string) => {
if (!isValidSuiAddress(profile)) {
throw new Error("Invalid profile address");
}
const tx = new Transaction();
tx.moveCall({
package: networkConfig.testnet.packageID,
module: "week_two",
function: "create_folder",
arguments: [
tx.pure.string(name),
tx.pure.string(description),
tx.object(profile)
]
})
return tx;
}
export const addCoinToFolderTx = async (folder: string, coin: string, coin_type: string,amount: number) => {
if (!isValidSuiAddress(folder) || !isValidSuiAddress(coin)) {
throw new Error("Invalid folder or coin address");
}
const tx = new Transaction();
const [depositCoin] = tx.splitCoins(tx.object(coin), [tx.pure.u64(amount)]);
tx.moveCall({
package: networkConfig.testnet.packageID,
module: "week_two",
function: "add_coin_to_folder",
arguments: [
tx.object(folder),
tx.object(depositCoin)
],
typeArguments: [coin_type]
})
return tx;
}
这样,前端应用能够通过这些交易操作,创建profile、folder,并管理foder中的coin,从而扩展了 Sui 区块链上的资源管理功能。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!