世链nft数藏网  /  NFT资讯  /  2022年开发NFT商城系统市场技术主要功能部署

2022年开发NFT商城系统市场技术主要功能部署

原标题:2022年开发 NFT 商城系统 市场技术主要功能部署

2022年开发 NFT 商城系统 市场技术主要功能部署

我们创建合约、铸造代币、构建应用程序以查看通过该合约生成的 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 上定义的函数的方式。 一旦我们准备好合同,让我们部署它。

在部署之前:

在 Flow Playground 上进行测试。

转到 Flow Playground 并单击左侧边栏中的第一个帐户。

将所有代码替换为合约代码,然后单击部署。

如果一切顺利,您应该在屏幕底部查看日志: 16:48:55 部署 部署合约至:0x01 现在是时候将合约部署到本地运行的模拟器了,请运行以下命令: 流程项目启动模拟器 运行模拟器并配置 flow.json 文件后,可以使用以下命令部署合约: 流程项目部署 如果一切顺利,您应该查看如下输出: 为账户部署 1 个合约:emulator-account PinataPartyContract → 0xf8d6e0586b0a20c7

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

责任编辑:

免责声明:
世链NFT作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链NFT无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:
本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
相关阅读
最新文章
热门资讯
标签
nft 元宇宙 藏品 数字藏品 nft艺术品交易平台 nft头像 热门nft nft概念 NFT平台 NFT项目 nft系统 nft概念是什么意思 nft盲盒 nft艺术 币安NFT nft发行 数字 头像NFT 周杰伦nft被盗 头像 nft艺术品 nft是什么意思 nft科普 区块链 艺术品 交易平台 日本nft 周杰伦持有nft被盗 nft数字藏品 交易 nft实盘 平台 艺术 周杰伦持有的nft被盗 价值 国内nft nft怎么买 币安 项目 概念 市场 以太坊 加密货币 后悔 游戏 NFT市场 风口 系统 艺术家 板块