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

主网NFT的发布合约

1.什么是nft?

NFT:Non-fungible-token
非同质化货币

2.新建suimove项目

使用sui move new 项目名命令新建sui move项目

sui move new nft_qyx

项目结构如下:
在这里插入图片描述

3.写nft合约

module qyx123::nft{use sui::object::{Self, UID};use sui::transfer;use sui::tx_context::{Self, TxContext};use sui::display;use sui::package;use std::string::utf8;struct NFT has drop {}//我的nft结构体,属性id和tokenidstruct MyNFT has key,store{id: UID,tokenId: u64}struct State has key {id: UID,count: u64}fun init(witness: NFT, ctx:&mut TxContext){//键值对,键名和值一一对应//键名let keys = vector[utf8(b"name"),utf8(b"collection"),utf8(b"image_url"),utf8(b"description")];//value值let values = vector[utf8(b"MyNFT #{tokenId}"),utf8(b"MyNFT Collection"),utf8(b"自己的头像地址"),utf8(b"This is My NFT")];//使用 packge和display发布地址//创建发布者let publisher = package::claim(witness,ctx);//创建displaylet display = display::new_with_fields<MyNFT>(&publisher, keys, values, ctx);display::update_version(&mut display);transfer::public_transfer(publisher, tx_context::sender(ctx));transfer::public_transfer(display, tx_context::sender(ctx));//计数器transfer::share_object(State{id: object::new(ctx),count: 0});}entry public fun mint( state:&mut State, ctx: &mut TxContext){let sender = tx_context::sender(ctx);//计数器state.count = state.count + 1;let nft = MyNFT {id: object::new(ctx),tokenId: state.count,};transfer::public_transfer(nft, sender);}}

4.引入图片

找到一张图片,转为base64,代码放到上面的value中的图像地址中

		//value值let values = vector[utf8(b"MyNFT #{tokenId}"),utf8(b"MyNFT Collection"),utf8(b"自己的头像地址"),//此处utf8(b"This is My NFT")];

5.发布到开发网testnet

5.1列出当前所有网络别名和当前网络:

sui client envs

此处显示我目前为devnet
在这里插入图片描述

5.2切换网络命令可以切换到对应网络

切换网络:

sui client switch --env [network alias]

5.3编译代码

跳过拉取最新git依赖

sui move build --skip-fetch-latest-git-deps

编辑不通过记得在mint函数前加上

  #[lint_allow(self_transfer)]

编译通过
在这里插入图片描述

5.4发布到testnet

sui move test  --skip-fetch-latest-git-depssui client publish --skip-fetch-latest-git-deps --skip-dependency-verification --gas-budget 500000000

不成功在init函数前加上

    #[allow(unused_function)]

发布成功
在这里插入图片描述
通过sui浏览器查询packageID
https://suiexplorer.com/
在这里插入图片描述

6.mint

在这里插入图片描述

复制计数器id到mint处执行在这里插入图片描述
支付后mint成功

http://www.lryc.cn/news/313835.html

相关文章:

  • 分享2024年在家轻松兼职赚钱的5个副业
  • 电脑小问题:Windows更新后黑屏
  • C++指针(四)万字图文详解!
  • 商品管理系统设计100问?
  • Python的反射
  • 【Spring云原生系列】Spring RabbitMQ:异步处理机制的基础--消息队列 原理讲解+使用教程
  • UE5.1_Varest_Warning
  • 硬盘温度过高会怎么办?机箱温度多少算正常?
  • fs模块_写入文件
  • flutter无法在windows平台上拖拽文件到它的窗口中
  • [递归、搜索、回溯]----递归
  • XS2100S:IEEE 802.3af/at 兼容、用电设备接口控制器,集成功率MOSFET V1.0.3
  • 智慧城市如何助力疫情防控:科技赋能城市安全
  • Chromium内核浏览器编译记(四)Linux版本CEF编译
  • NextJs教程系列(一):介绍安装
  • python界面开发 - Menu (popupmenu) 右键菜单
  • 微服务架构 | 多级缓存
  • 怎么将pom在文件放到src下方
  • 浅谈网络爬虫与Web安全
  • C++vector的使用方法
  • 视频生成模型Sora的全面解析:从AI绘画、ViT到ViViT、DiT、VDT、NaViT、VideoPoet
  • 4.1k star,官方出品的redis桌面管理工具——redislnsight
  • 论文目录3:大模型时代(2023+)
  • FPGA IBUFG
  • 探索数据结构:单链表的实战指南
  • 短视频矩阵系统----矩阵系统源码搭建(技术门槛?)
  • Spring事务注解@Transactional的流程和源码分析
  • 在别的地方下载的二次封装Windows镜像怎么安装?GHO镜像详细安装教程
  • 使用Lerna + Yarn Workspace管理Monorepo项目
  • 如何将gzip后缀压缩包重命名任意后缀名并依然通过gzip.open()读取压缩包文件内容