我们创建合约、铸造代币、构建应用程序以查看通过该合约生成的 NFT 以及创建市场以将 NFT 转移给其他用户的示例。 让我们从合约的创建和代币铸造开始。

设置工具
在您的系统上安装 Flow CLI。根据不同的操作系统,有不同的命令用于安装 CLI。
例如,要在 macOS 上安装 Flow CLI,请使用以下命令:
冲泡安装流-cli
在 Windows 上: iex “& { $ ( irm 'https://storage.googleapis.com/flow-cli/install.ps1 ') }”
在 Linux 上: sh -ci “$ ( curl -fsSL https://storage.googleapis.com/flow-cli/install.sh )”
资产文件将存储在 IPFS 上。在这个例子中,我们将使用 Pinata 来存储文件。您可以在此处注册免费帐户并获取 API 密钥。 安装 NodeJS 和文本编辑器以突出显示 Flow 智能合约代码也很重要。
第二步是使用命令为项目创建目录: mkdir 皮纳塔派对 初始化一个新的流程项目并将其更改为该目录: cd pinata-party

现在,在代码编辑器中打开项目,让我们开始工作。首先,创建一个名为 cadence 的文件夹。在该文件夹中添加另一个名 为 contracts 的 文件夹。最后,在名为 PinataPartyContract.cdc 的合同文件夹中创建一个文件。

在继续之前,有必要指出我们对 Flow 区块链平台所做的一切。为模拟器环境设置文件,然后我们就可以开始编写合约了。 我们需要使用以下代码更新 flow.json 中的合约对象:
“合同”:{ “PinataPartyContract”:“./cadence/contracts/PinataPartyContract. 疾控中心” }
使用以下代码更新该文件中的部署对象: “部署”:{ “模拟器”:{ “模拟器帐户”:[ “PinataPartyContract” ] }}它将使 Flow CLI 能够使用模拟器来部署我们的合约。该代码还引用了我们即将编写的帐户和合约。

合约

我们需要创建用于铸造 NFT 的合约,将元数据与 NFT 相关联,并确保元数据指向存储在 IPFS 上的基础资产。
打开 PinataPartyContract.cdc 并执行以下代码:
酒吧合同 PinataPartyContract { 发布资源 NFT { 酒吧让 id: UInt64 初始化(初始化 ID:UInt64 ){ 自己。id = initID }}}

第一步是定义合同。让我们从定义 PinataPartyContract 开始并在其中创建一个资源。资源是保存在用户帐户中的项目,可 通过访问控制措施访问。NFT 需要可识别,并且 id 属性允许您识别令牌。

然后,创建一个资源接口来定义哪些功能可供其他人使用。

发布资源接口 NFTReceiver { pub fun 存款(令牌:@NFT,元数据:{ String : String }) pub fun getIDs () : [ UInt64 ] pub fun idExists ( id: UInt64 ) : Bool pub fun getMetadata ( id: UInt64 ) : { String : String } }

将上述代码放在 NFT 资源代码下方。NFTReceiver 资源接口表示资源可以调用以下方法:

 获取 ID  身份存在  订金  获取元数据

然后,我们必须定义令牌收集接口。将其视为存储所有用户的 NFT 的钱包。

发布资源集合:NFTReceiver { pub varownedNFTs: @ { UInt64: NFT } pub var metadataObjs: { UInt64: { String : String }} 初始化(){ 自己。拥有的 NFT < - {} 自己。元数据对象= {} }酒吧乐趣撤回(撤回 ID :UInt64 ):@NFT { 让令牌< - 自我。拥有的 NFT 。删除(键:withdrawID )! 返回< -token }pub fun deposit ( token: @NFT, metadata: { String : String }) { 自己。元数据对象[令牌。id ] = 元数据 自己。拥有 NFTs [令牌。身份证] < - !令牌 }pub fun idExists ( id: UInt64 ) : Bool { 回归自我。拥有 NFTs [ id ] != nil }发布乐趣 getIDs () : [ UInt64 ] {
回归自我。拥有的 NFT 。钥匙 }pub fun updateMetadata ( id: UInt64, metadata: { String: String }) { 自己。metadataObjs [ id ] = 元数据 }pub fun getMetadata ( id: UInt64 ) : { String : String } { 回归自我。元数据对象[ id ] ! }销毁(){ 毁灭自我。拥有的 NFT }}

变量 ownNFTs 跟踪用户可以从接触者拥有的所有 NFT。一个名为 metadataObjs 的变量是独一无二的,因为我们正在扩 展 Flow NFT 合约功能以存储每个 NFT 的元数据映射。 它将令牌 id 映射到其相关的元数据,这意味着在我们设置之前需要令牌 id。变量被初始化以在 Flow 中的资源中定义它们。

最后,我们将拥有 NFT 集合资源所需的所有可用功能。默认 NFT 合约被扩展为包含 metadataObjs 映射的方式,我们将 扩展默认存款函数以采用额外的元数据参数。这样做是为了确保只有令牌铸币者才能将元数据添加到令牌中。我们将最初添加 的元数据限制在铸币执行中,以保持其私密性。在 Collection 资源下添加以下代码:

酒吧乐趣 createEmptyCollection () : @Collection { return < - 创建集合() }发布资源 NFTMinter { pub var idCount:UInt64 初始化(){ 自己。idCount = 1 }酒吧乐趣 mintNFT () : @NFT { var newNFT < - 创建 NFT ( initID: self.idCount ) 自己。idCount = 自我。idCount + 1 作为 UInt64 返回< -newNFT }}

首先,我们将有一个函数在调用时创建一个空的 NFT 集合。与合约交互的用户将拥有一个映射定义的 Collection 资源的存 储位置。 之后我们将再创建一个资源。没有它,我们就无法铸造代币。NFTMinter 包含一个每次都会增加的 idCount,以确保我们没 有 NFT 的重复 id。它还包含创建 NFT 的功能。 在 NFTMinter 资源下方添加主合约初始化程序:

初始化(){ 自己。帐户。保存(< -self。createEmptyCollection () ,以便:/存储/ NFTCollection ) 自己。帐户。链接< & { NFTReceiver }>( /public/NFTReceiver,target:/storage/NFTCollection ) 自己。帐户。保存(< -create NFTMinter () ,以便:/存储/ NFTMinter ) }

初始化函数仅在部署合约时调用。它执行三件事:

 为集合部署者创建一个空集合,以便所有者合约可以从合约中创建和拥有 NFT。

 NFTMinter 资源存储在合约创建者的帐户存储中。这意味着只有合约创建者才能铸造代币。

 Collection 资源参考开头创建的 NFTReceiver 接口发布在公共位置。这就是我们告诉合约任何人都可以调用 NFTReceiver 上定义的函数的方式。 一旦我们准备好合同,让我们部署它。

在部署之前:

  1. 在 Flow Playground 上进行测试。
  2. 转到 Flow Playground 并单击左侧边栏中的第一个帐户。
  3. 将所有代码替换为合约代码,然后单击部署。
    如果一切顺利,您应该在屏幕底部查看日志: 16:48:55 部署 部署合约至:0x01 现在是时候将合约部署到本地运行的模拟器了,请运行以下命令: 流程项目启动模拟器 运行模拟器并配置 flow.json 文件后,可以使用以下命令部署合约: 流程项目部署 如果一切顺利,您应该查看如下输出: 为账户部署 1 个合约:emulator-account PinataPartyContract → 0xf8d6e0586b0a20c7

现在,我们将转向 NFT 的铸造。

2022年开发 NFT 市场技术主要功能部署相关推荐

  1. 2022年最新NFT 开发平台解决方案

    开发 NFT 市场主要功能技术实现 我们创建合约.铸造代币.构建应用程序以查看通过该合约生成的 NFT 以及创建市场以将 NFT 转移给其他用户的示例. 让我们从合约的创建和代币铸造开始. 以太坊 以 ...

  2. 爬虫技术驱动的数据洞察力:解析Nifty Gateway上的NFT市场动态

    摘要: 本文通过运用爬虫技术,深入研究了Nifty Gateway上的NFT市场动态.首先,介绍了NFT的概念和爬虫技术的应用背景.接着,从四个方面展开讨论,包括NFT的定义和特点.NFT市场的发展趋 ...

  3. 租车APP开发的市场优势和主要功能

    伴随移动互联网时代的发展,租车APP开发应用能为用户带来只需一部手机就能轻松实现低价自驾出行的便捷服务,也为租车市场带来无限商机,公司-河南御之谷软件开发公司将对移动用车的租车手机软件进行分析. 租车 ...

  4. Fanuc数控系统程序传输开发接口的系统结构、功能及相关技术

    Fanuc数控系统是一种用于控制工业机器人和机床的计算机数控系统,它具有高可靠性.高精度.高效率等特点.在使用Fanuc数控系统进行编程时,程序传输是非常重要的一环.本文将介绍Fanuc数控系统程序传 ...

  5. 博奥智源科技,发布阅卷系统开发性能及技术功能分享

    在原有教育平台之阅卷系统一期的基础上,进行二次开发,满足市.校各级各类考试需求:考试流程与质量分析一体化设计,无需模块或系统间导入导出:要求平台既支持先扫后阅(客观题边扫描边识别边评分.主观题打破流水 ...

  6. Gartner 发布 2022 年汽车行业五大技术趋势

    来源 | CSDN云计算 Gartner发布2022年汽车行业五大技术趋势,帮助企业首席信息官更好地应对汽车行业的软件.硬件和数字变革. Gartner高级研究总监Pedro Pacheco表示:&q ...

  7. 【比特熊故事汇】X Microsoft Build 2022——微软专家+MVP,技术亮点全解析

    大家好!我是爱吃.爱玩.更爱学习技术,IT届的新晋小网红,开发者的好朋友比特熊! 比特熊:特别联名Microsoft Build 2022,本期[比特熊故事汇]请来重量级嘉宾,突破直播间嘉宾数新高!由 ...

  8. 巴比特 | 元宇宙每日必读:云南首个元宇宙产业园落户昆明,预计总投资 2600 万元,将探索开发NFT产品...

    摘要:据昆明发布消息,12月13日,一个打破区域限制,产业在云端聚集形成实体与虚拟结合的元宇宙服务贸易虚拟产业园(以下简称"元宇宙产业园"),正式落户中国(云南)自由贸易试验区昆明 ...

  9. 【OpenSea 创始人访谈录】听OpenSea 创始人谈 NFT 市场爆炸式增长的秘密

    ​文 | Tritium Ventures 编辑 | Daniel OpenSea 交易量近期增长了 500% 以上,在本访谈录中,Opensea联合创始人 Devin Fizner 和 Alex A ...

最新文章

  1. GraphPad Prism —— 简单又好用的生物数据统计绘图软件
  2. CodeForces - 932D Tree(树上倍增,好题)
  3. 算法 --- reduce的使用.
  4. Struts2的Action编写
  5. python tqdm自定义更新进度条
  6. 关于项目中一些时间转换的问你题 -紫叶and妍
  7. 计算机正数和负数的除法运算,正数与负数——整数的乘除法与四则运算.pdf
  8. java工作日志,如何写工作日志
  9. 游戏建模:模型场景制作过程分享
  10. 吊打何同学?猛肝24小时,用6000元成本打造 AirDesk!
  11. Java模拟账户---关键字this
  12. 极简主义、人工智能与Readhub的产品哲学
  13. 转载 测试开发岗--高频知识整理
  14. NDP1415 40V输入20A外置MOS大电流同步降压控制器IC
  15. h5调用支付宝 php支付源码,友价源码如何集成支付宝H5接口(即支付宝手机支付接口)...
  16. ECN Trade:全球经济疲软,美国国债成新宠
  17. 第8天:鼠标控制与32位模式切换
  18. 简单说说 Servlet
  19. Spark SQL:基本介绍(特点)
  20. html5图片锐化,让照片达到最佳“锐度” 这5种“锐化”方式需掌握

热门文章

  1. 浅谈滚服游戏如果实现一键合服
  2. 关闭搜狗 ShowInfo.exe 天猫618超级狂欢红包 毒瘤广告
  3. 2022年重庆二级建造师市政公用工程《城市桥梁工程质量检查与检验》每日练习及答案
  4. 从零开始学Python
  5. 服务器内部的硬盘不是dns,dns无响应是不是欠费?这个还需了解
  6. Nacos(配置中心)实践
  7. Java冷知识(三)编译器的花招之synthetic修饰符
  8. iOS开发 - 模拟苹果通讯录
  9. libxlsxwriter在单元格中间划斜线
  10. html旋转及自适应