木星链 木星链
Ctrl+D收藏木星链
首页 > TRX > 正文

NBS:NFT教程:用Flow和IPFS创建NFT

作者:

时间:1900/1/1 0:00:00

非同质化代币(NFT)市场正在进入狂热,回顾 NFT 早期的发展历程,回忆CryptoKitties所暴露出挑战是很有意思的。CryptoKitties 由Dapper Labs的团队打造,是让以太坊第一次出现“大规模”使用的案例。

从那之后,NFT 就开始成长之路,Rarible、OpenSea、Foundation、Sorare等平台纷纷涌现。这些平台每月都有数百万元的流量。尽管磕磕碰碰,但大部分依旧在以太坊区块链上发生着。但 Dapper Labs 的团队在经历了 CryptoKitties 之后,着手建立一个新的通用的,很适合 NFT 使用场景区块链。他们这样做的目标是想解决在以太坊上看到的许多 NFT 的问题,同时为该领域的开发者和收藏者提供更好的体验。他们的新区块链Flow,已经证明了自己能够落地,并吸引一些大牌。,如 NBA、UFC、甚至 Dr. Seuss 都在使用 Flow。

我们最近写了使用 IPFS 上保存标的资产来创建 NFT,并且讨论 NFT 领域的责任问题,以及 IPFS 如何提供帮助。现在,这篇文章谈谈如何在 Flow 上创建 IPFS 支持的 NFT。Flow 区块链早期的主要应用之一是NBA 巅峰对决 (NBA Top Shot)。我们要重新建立一个非常基本的 NFT 铸币过程,然后在 IPFS 上回溯 NFT 元数据和标的资产。

由于我们喜欢 pi?atas,所以我们的 NFT 将不再是 NBA 精彩的视频,而是一个可交易的 pi?atas 视频。

本教程有 3 篇文章

创建合约和铸造代币(本文是第一篇)

创建一个应用程序,以查看通过该合约创建的 NFT。

创建一个市场,将 NFT 转让给他人,同时也转移在 IPFS 上的标的资产。

我们需要安装 Flow CLI。在Flow 的文档中有一些很好的安装说明:

macOS

brew install flow-cliLinux

sh -ci “$(curl -fsSL https://storage

”我们将在 IPFS 上存储资产文件。我们使用Pinata 来简化操作, 可以在这里注册一个免费账户,获取一个API 密钥。在本教程的第二篇文章中会使用 Pinata API,但在本篇文章中我们使用 Pinata 网站。

我们还需要安装 NodeJS 和一个文本编辑器,它可以帮助高亮显示 Flow 智能合约(这是用一种叫做Cadence的语言编写)代码的语法。Visual Studio Code 有一个支持 Cadence 语法的插件。

让我们为项目创建一个目录:

mkdir pinata-party进入该目录,并初始化一个新的 flow 项目:

cd pinata-partyflow project init现在,使用你最喜欢的代码编辑器中打开项目(如果你使用 Visual Studio Code,可以安装下 Cadence 插件),让我们开始工作。

你会看到一个flow

然后,更新该文件中的 deployments对象,代码如下:

"deployments": {     "emulator": {          "emulator-account": ["PinataPartyContract"]     }}这是在告诉 Flow CLI 使用模拟器来部署我们的合约,它也在引用(在模拟器上)我们即将写的合约 ...

阿迪达斯世界杯期间在迪拜哈利法塔展出BAYC #8774二创NFT“Indigo Herz”:金色财经报道,据阿迪达斯基于 BAYC #8774 的二创 NFT“Indigo Herz”在社交媒体披露,世界杯期间该 NFT 已在世界最高建筑迪拜哈利法塔上展出。[2022/11/22 7:55:58]

Flow 有一个关于创建 NFT 合约的出色教程。他是一个很好的参考,但是正如 Flow 自己指出的,他们还没有解决 NFT 元数据的问题。他们希望在链上存储元数据。这是个好主意,他们一定会想出一个合理的办法来。然而,我们现在想要铸造一些带有元数据的代币,并且我们想要关联上对应的媒体文件(标的)。元数据只是其中一个组成部分。我们还需要指出代币最终代表的媒体文件。

如果你熟悉以太坊区块链上的 NFT,你可能会知道,许多代币的标的资产都存储在传统的云服务器上,这样做是可以的,但又弊端。我们曾写过关于IPFS内容可寻址,以及在传统云平台上存储区块链数据的弊端,归结起来主要有两点:

资产应可核查

应该很容易转移维护责任

IPFS解决了这两点。而 Pinata 则以一种简单的方式将该内容长期保存在 IPFS 上。这正是我们的 NFT 关联的资料所需要的?我们要确保能够证明拥有 NFT 的所有权,并确保我们能控制对标的资产(IPFS)--媒体文件或其他内容,确保不是复制品。

考虑到这一点,让我们写一份合约,它可以铸造 NFT,将元数据关联到 NFT,并确保元数据指向存储在 IPFS 上的标的资产。

打开PinataPartyContract

  }}第一步是定义合约,后面会添加更多的内容,但我们首先定义PinataPartyContract,并在其中创建一个resource。资源是存储在用户账户中并通过访问控制措施进行访问。在这里,NFT资源最终用来代表 NFT 所拥有的东西。NFT 必须是唯一的, id属性允许我们标识代币。

接下来,我们需要创建一个资源接口,我们将用它来定义哪些能力可以提供给其他人(即不是合约所有者)。

pub resource interface NFTReceiver {  pub fun deposit(token: )  pub fun getIDs(): [UInt64]  pub fun idExists(id: UInt64): Bool  pub fun getMetadata(id: UInt64) : {String : String}}把这个代码放在 NFT resource 代码的下面。这个NFTReceiver资源接口用来定义对资源有访问权的人,就可以调用以下方法:

deposit

getIDs

idExists

getMetadata

接下来,我们需要定义代币收藏品( Colletion )接口。把它看成是存放用户所有 NFT 的钱包。

pub resource Collection: NFTReceiver {    pub var ownedNFT: @{UInt64: NFT}    pub var metadataObjs: {UInt64: { String : String }}    init () {        self

    pub fun withdraw(withdrawID: UInt64): ) {        self

    pub fun idExists(id: UInt64): Bool {        return self

    pub fun getIDs(): [UInt64] {        return self

    pub fun updateMetadata(id: UInt64, metadata: {String: String}) {        self

    pub fun getMetadata(id: UInt64): {String : String} {        return self

    destroy() {        destroy self

}这个资源里有很多东西,说明一下。首先,有一个变量叫ownedNFT。这个是很直接的,它可以跟踪用户在这个合约中所有拥有的 NFT。

育碧CEO:旗下NFT项目处于Web3相关技术整合的研究阶段:金色财经报道,游戏巨头育碧首席执行官Yves Guillemot在采访中表示,NFT游戏项目Quartz处于Web3相关技术整合的“研究模式”,“我们正在研究所有Web3功能。我们最近测试了一些东西,这些东西为我们提供了更多关于如何使用Web3以及我们应该打造怎样游戏的世界”,并表示,Ubisoft现阶段主要希望了解“NFT如何应用于游戏以及它们是否会使游戏玩家受益”。

据悉,Ubisoft在推出Ubisoft Quartz Beta版后,于12月宣布首次涉足NFT,旨在为游戏玩家提供可玩的NFT,这些NFT可用于Tom Clancy的Ghost Recon Breakpoint等游戏。

此前报道,育碧CEO表示,正在构建跨元宇宙的Web3工具。(Cointelegraph)[2022/9/13 13:26:12]

接下来,有一个变量叫metadataObjs。这个有点特殊,因为我们扩展了 Flow NFT 合约功能,为每个 NFT 存储元数据的映射。这个变量将代币 id 映射到其相关的元数据上,这意味着我们需要在设置代币 id 之前,将其设置为元数据。

然后我们初始化变量。定义在 Flow 中的资源中的变量必需初始化。

最后,我们拥有了 NFT Collection 资源的所有可用函数。需要注意的是,并不是所有这些函数大家都可以调用。你还记得在前面,NFTReceiver资源接口中定义了任何人都可以访问的函数。

我尤其想指出 deposit函数。正如我们扩展了默认的 Flow NFT 合约以包含 metadataObjs映射一样,我们正在扩展默认的 deposit函数,以接受额外的 metadata参数。为什么要在这里做这个?因为需要确保只有 token 的 minter 可以将该元数据添加到 token 中。为了保持这种私密性,将元数据的初始添加限制在铸币执行中。

合约代码就快完成了。因此,在 Collection资源的下面,添加以下内容:

pub fun createEmptyCollection(): pub resource NFTMinter {    pub var idCount: UInt64    init() {        self

    pub fun mintNFT(): 首先,我们有一个函数,在调用时创建一个空的 NFT Collection。这就是第一次与合约进行交互的用户如何创建一个存储位置,该位置映射到定义好的 Collection资源。

之后,我们再创建一个资源(resource)。它很重要的,因为没有它,我们就无法铸造代币。NFTMinter资源包括一个idCount,它是递增的,以确保我们的 NFT 不会有重复的 id。它还有一个功能,用来创造 NFT。

在NFTMinter资源的下方,添加主合约初始化函数;

init() {      self

  execute {      let metadata : {String : String} = {          "name": "The Big Swing",          "swing_velocity": "29",          "swing_angle": "45",          "rating": "5",          "uri": "ipfs://QmRZdc3mAMXpv6Akz9Ekp1y4vDSjazTx2dCQRkxVy1yUj6"      }      let newNFT <- self

}这是一个非常简单的交易代码,这在很大程度上要归功于 Flow 所做的工作,但让我们来看看它。首先,你会注意到顶部的导入语句。如果你还记得,在部署合约时,我们收到了一个账户地址。它就是这里引用的内容。因此,将0xf8d6e0586b0a20c7替换为你部署的账户地址。

阿迪达斯宣布已购买Bored Ape Yacht Club NFT #8774:12月3日消息,阿迪达斯宣布已购买了Bored Ape Yacht Club NFT #8774,并将在其基础上创造一个名为Indigo Herz的角色,以进入元宇宙。根据通过市场OpenSea公开的以太坊区块链数据,该NFT是在9月份以46ETH的价格购买的,当时价格为15

},如果你打算在 github 或任何远程 git 仓库上存储这个项目的任何内容,请确保你不包含私钥。你可能想

恭喜你!你成功创建了一个 Flow 智能合约,铸造了一个代币,并将元数据关联到该代币,并将该代币的底层数字资产存储在 IPFS 上。作为教程的第一部分,还算不错。

接下来,我们有一个关于构建前端 React 应用的教程,通过获取元数据和解析元数据,让你显示你的 NFT。

本翻译由 Cell Network 赞助支持。

来源:

https://medium.com/pinata/how-to-create-nfts-like-nba-top-shot-with-flow-and-ipfs-701296944bf

参考资料

登链翻译计划: https://github.com/lbc-team/Pioneer

翻译小组: https://learnblockchain.cn/people/412

Tiny 熊: https://learnblockchain.cn/people/15

正在进入狂热: https://www.cnbc.com/2021/02/25/nfts-why-digital-art-and-sports-collectibles-are-suddenly-so-popular.html

CryptoKitties: https://www.cryptokitties.co/

Dapper Labs: https://www.dapperlabs.com/

Rarible: https://rarible.com/

OpenSea: https://opensea.io/

Foundation: https://foundation.app/

Sorare: https://sorare.com/

着手建立一个新的通用的,很适合NFT使用场景区块链: https://medium.com/dapperlabs/introducing-flow-a-new-blockchain-from-the-creators-of-cryptokitties-d291282732f5

Flow: https://www.onflow.org/

NBA: https://www.nbatopshot.com/

写了使用IPFS上保存标的资产来创建NFT: https://learnblockchain.cn/article/2247

责任问题: https://medium.com/pinata/who-is-responsible-for-nft-289"    src="https://img.jinse.com/3638511_image3.png"   >

译文出自:登链翻译计划

译者:翻译小组

校对:Tiny 熊

标签:NBSBSPNFTQUOnbs币未来价格BSPAYNFT IndexQUO币

TRX热门资讯
ULT:Multicoin Capital合伙人:Loot与元宇宙无关 它可能是更好的DAO

注:原文作者是Multicoin Capital管理合伙人Kyle Samani,其最近透露Multicoin已购买了价值千万美元的Loot,在这篇文章中,他讲述了自己对Loot的看法.

1900/1/1 0:00:00
以太坊:金色观察|新手指南:如何运行自己的以太坊验证者节点

文/William M. Peaster,Bankless作者如果你是以太坊的支持者,有一件最重要的事情你现在就可以做,那就是运行以太坊验证者.

1900/1/1 0:00:00
NFT:如何理解艺术在NFT上的迁移?

内容导引元宇宙访谈进行到了第九期,我们邀请到了THiNG FOUND的创始人Pucs。他在游戏行业大约已有20年左右的创作经验,于2017年加入了区块链行业,现在是Flow社区的核心成员之一.

1900/1/1 0:00:00
NFT:NFT工具合集

“ 上个月中我们更新了当时热门的NFT项目以及工具大全,但在NFT板块火爆的这段时间,蓬勃发展的生态每天都有不同的新鲜事,我们需要用好工具辨别项目才能在这波浪潮中找到适合自己的.

1900/1/1 0:00:00
WEB:Web3的真面目

近期,Web3.0直接带动资本热情的,是国际知名投资机构的动作。2月,全球最大风险投资之一的红杉资本,宣布推出一支专注于投资Web3.0相关技术创业公司的基金,资金规模在5亿至6亿美元之间.

1900/1/1 0:00:00
NFT:?为什么GameStop NFT 平台意义重大?

GameStop 是一家从 2021 年初流行的 WallStreetBets 运动中受益的公司,最近宣布他们将推出一个NFT市场.

1900/1/1 0:00:00