当前位置: 首页 > news >正文

长春火车站电话门户网站开发需要

长春火车站电话,门户网站开发需要,推广app赚钱,城市建设协会网站后端合约 执行 sui move new resource_manage 创建一个包 接着就可以开始编写合约了 首先创建两个 Struct 用来创建 Profile 并记录在 State 中 public struct State has key {id: UID,users: Table<address, address>, }public struct Profile has key {id: UID,nam…

后端合约

执行 sui move new resource_manage 创建一个包

接着就可以开始编写合约了

首先创建两个 Struct 用来创建 Profile 并记录在 State 中

public struct State has key {id: UID,users: Table<address, address>,
}public struct Profile has key {id: UID,name: String,description: String,
}

接着创建一个事件来检测 Profile 的创建过程

public struct ProfileCreated has copy, drop {profile: address,owner: address,
}

下一步初始化合约将 State 共享

fun init(ctx: &mut TxContext) {transfer::share_object(State{id: object::new(ctx), users: table::new(ctx),});
}

下面开始写一个创建 Profile 的函数

public entry fun create_profile(name: String, description: String, state: &mut State, ctx: &mut TxContext) {let owner = tx_context::sender(ctx);assert!(!table::contains(&state.users, owner), ProfileExit);let uid = object::new(ctx);let id = object::uid_to_inner(&uid);let new_profile = Profile {id: uid,name: name,description: description,};transfer::transfer(new_profile, owner);table::add(&mut state.users, owner, object::id_to_address(&id));event::emit(ProfileCreated { profile: object::id_to_address(&id), owner,});
}

​ 函数的大致逻辑就是先从 State.users 中判断交易者是否已经记录过,如果没有则创建一个 Profile 并将所有权转移给交易者,并将交易者的 address 和 Profile 的 id 转换成 address 类型后一并记录到 State 中去,最后触发事件表示资源的创建

接着创建一个检查是否创建的函数

public fun check_has_profile(state: &State, user: address): Option<address> {if(table::contains(&state.users, user)) {option::some(*table::borrow(&state.users, user))}else {option::none()}
}

这里 * 号的作用是“解引用”,table::borrow() 返回的是一个引用,但是 option::some() 函数需要接收一个值

到此我们的合约就编写完成了

执行 sui move build 编译执行 sui client publish 部署

image-20250104142827630

前端调用

执行命令 npm create @mysten/dapp 开始初始化项目

image-20241112202825435

这里选择第一个生成一个简单的 dapp 模板,第二个是携带 Move 代码的计算器示例

接着进入项目内执行 npm install 下载依赖包,这时可能会提示 eslint 版本不兼容

image-20250104130647602

我们需要在 package.json 中将 eslint 设置为 ^8.56.0

image-20250104132129994

重新执行 npm install 即可成功

注意:如果安装不成功通过执行 npm install -g npm 来升级版本,以获得更好的兼容

可以在项目根目录执行 npm run dev 来检验项目是否部署成功

image-20250104132515706

如果浏览器出现此界面就代表成功了

往下我们先学习 Sui SDK 一些基本用法

  1. ConnectButton:就是用于连接钱包的按钮

    import { ConnectButton } from '@mysten/dapp-kit';export function App() {return <ConnectButton />;
    }
    
  2. useCurrentAccount :检索当前选择的钱包账户

    import { ConnectButton, useCurrentAccount } from '@mysten/dapp-kit';function MyComponent() {const account = useCurrentAccount();return (<div><ConnectButton />{!account && <div>No account connected</div>}{account && (<div><h2>Current account:</h2><div>Address: {account.address}</div></div>)}</div>);
    }
    
  3. SuiClient:用来连接到网络并进行交互

    import { getFullnodeUrl, SuiClient } from '@mysten/sui/client';const suiClient = new SuiClient({url: getFullnodeUrl('testnet'),
    });
    
  4. Transaction:用来打包交易块,可以使用 PTB

    import { Transaction } from "@mysten/sui/transactions";export const Test = async(name: string, description: string) => {const tx = new Transaction();tx.moveCall({package: packageID,module: "module_name",function: "fun_name",arguments: [tx.pure.string(name),tx.pure.string(description),tx.object(state),],});return tx;
    }
    
  5. useSignAndExecuteTransaction:进行签名并交易

    import { useSignAndExecuteTransaction } from "@mysten/dapp-kit";const {mutate: signAndExecute} = useSignAndExecuteTransaction();const tx = await Test(name, description);
    signAndExecute({transaction: tx
    }, {onSuccess: () => {console.log("success!");},onError: (error) => {console.log(error);}
    });
    

完整代码:https://github.com/Ch1hiro4002/Sui_Frontend_Study/tree/main/week_1

展示效果:

 更多相关信息,请,,https://t.me/gtokentool

http://www.yayakq.cn/news/620546/

相关文章:

  • seo网站首页推广网站空间买多大的
  • 微信导航网站怎么做东莞企网站建设
  • 做素材网站如何赚钱wordpress免登录支付宝
  • 长沙好的网站建设品牌合肥专门做网站
  • 类似稿定设计的网站简单的网站开发模板
  • 做自己视频教程的网站网站建设合同 代码应不应该给
  • 可视网站开发工具每天三分钟新闻天下事
  • 郑州企业网站开发深圳商标注册公司
  • 网站制作网站开发设计公司的网站详情
  • 温州网站建设培训学校wordpress开发文档pdf
  • 阜南做网站公司长春制作网站企业
  • app 移动网站建设东莞寮步华衍学校
  • 苏州创元投资集团网站wordpress主题制作下载
  • 重庆巴南区网站开发公司服务器上构建企业网站
  • 阿里云搭建网站教程ppt模板大全免费简约大气
  • 响应式网站设计图备案的网站名称可以改吗
  • 四川省省建设厅网站九牧全球市场地位
  • 安徽网站建设产品介绍网站开发需要准备什么软件
  • 宁波网络公司做网站新东方烹饪学校学费价目表
  • 广州专业网站优化公司网站要能被搜到需要做推广嘛
  • 做盗版电影网站wordpress主题英文改中文
  • 山东省住房和城乡建设局网站首页西安网站建设xs029
  • 晋州住房保障建设局网站wordpress多用户博客
  • 中山网站外包太原再次发出通告
  • 免费网站的app怎么让网站排名下降
  • wordpress 颜色选择器关键词排名优化到首页
  • 网站建设入账哪个科目常熟滨江开发区人才网
  • 天津网站优化公司电话软件制作开发
  • php个人网站源码下载什么网站可以做海报
  • 网站搜索引擎优化案例南宁市网站维护与推广公司