Web3 NFT – 使用 Python、Pinata、Opensea 构建和列出 NFT

使用 Python、Openzeppelin 和 Pinata 构建您的 Web3 NFT 集合,这些集合可以在 Opensea 市场上上市。

通证经济是商界的热门词汇。代币主要有两种类型,可替代代币和不可替代代币。 NFT(不可替代代币)是记录在区块链中的、无法复制、替换或细分的唯一数字标识符。它提供真实性的公共证书或所有权证明。

与传统的无形资产评估相比,资产,特别是无形资产可以以绝对透明和颠覆性的方式持续、公开地评估,尽管 NFT 所有权本身没有固有的法律意义。

在本文中,我将介绍如何使用 Python、Openzeppelin 和 Pinata 构建 Web3 NFT 集合,这些集合可以在 Opensea 市场上列出。

Web3 NFT 的组成部分 – 使用 Python、Openzeppelin、Solidity 构建 NFT

目录

NFT智能合约

除了可替代代币之外,我们还需要从 NFT 开发中的智能合约代码开始。

首先,我们可以充分利用现有的模块,比如Openzeppelin,这样可以节省一些开发常用功能的时间。请务必在 Brownie-config.YAML 中添加依赖项。如果您对此有任何疑问,请参阅 Easy2Digital web3 集合中的其他文章。

// contracts/GameItem.sol

// SPDX-License-Identifier: MIT

pragma solidity ^0.6.0;

import "@openzeppelin/contracts/token/ERC721/ERC721.sol" ;

正如您所看到的,ERC721 与同质化代币 ERC20 不同,它是标准的非同质化代币。因此,在这个模块下,我们使用 ERC721 创建一个合约。

  • 这里ERC721中有两个参数,一是全名,二是创建的NFT的简称。它以代币开头,就像您在创建的集合中看到的那样,当您一个接一个地创建 NFT 时,其中包括一个加号函数。

contract SimpleCollection is ERC721 {

   uint256 public to encounte;

   constructor () public ERC721 ("LouisNFT", "LVnft") {

tokenCounter = 0 ;

}

   function createCollection ( string memory tokenURI ) public returns ( uint256 ) {

       uint256 newTokenId = tokenCounter;

       _safeMint ( msg.sender , newTokenId);

       _setTokenURI (newTokenId, tokenURI);

tokenCounter = tokenCounter + 1 ;

       return newTokenId;

}

}

  • 然后,每个新的 NFT 都有一个唯一的代币 URI 和代币 ID。令牌 ID 根据令牌计数器编号由 uint256 进行哈希处理。而token URI基本上包含了NFT的所有物质信息,其中就包括图像。我稍后会讲一下。

元数据

元数据是一个 JSON 文件,允许 OpenSea 等应用程序提取丰富的数字资产数据并轻松在应用程序中显示它们。以下是基本元数据文件中包含的元素:

除了那些脚本文件之外,在区块链上存储数据可能非常昂贵。然而,图像、视频和音频这些大尺寸的材料在区块链上存储起来可能会很昂贵。

所以通常我们可以利用IPFS等去中心化存储。 IPFS(星际文件系统)是一种协议、超媒体和文件共享点对点网络,用于在分布式文件系统中存储和共享数据。

将 NFT 材料上传到 IPFS 基本上有两种方法。一是在本地安装IPFS环境来与IPFS网络交互。另一种是通过第三方平台运行,比如Pinata。

将 NFT 图像和 JSON 文件上传到 Pinata 以生成令牌 URI。

首先,第一步是创建一个 Pinata 帐户并准备您想要转换为 NFT 的图像。

然后,将图像作为文件上传到 Pinata 上,然后您可以从该材料中获取 CID 密钥。稍后将使用该密钥来创建 JSON 文件。

此外,由于令牌 URI 是 JSON 文件,下一步是将与 NFT 相关的所有信息添加到 JSON 文件中。这是使用 VSC 的示例,如下所示:

  • 姓名
  • 图片:IPFS URL结构, https://ipfs.io/ipfs/ + image CID key (Generated just now)
  • 描述
  • 属性

最后但并非最不重要的一点是,一旦 JSON 文件准备就绪,请返回 Pinata 并上传 JSON 并生成 JSON 文件 CID 密钥。以下是 IPFS URL 的最终令牌 URI 的示例。

https://ipfs.io/ipfs/QmV8rPonNpVaKnH2ri826AWqJ5XxeKYdeJupjKch4kA1UK?filename=NFT1.json

Opesea 账户整合

OpenSea 是世界上第一个也是最大的 NFT 和加密收藏品的 web3 市场。使用 OpenSea 浏览、创建、购买、出售和拍卖 NFT。对于任何 NFT 来说,无论是否出于出售目的,在市场上上市都是很常见的。值得注意的是,大多数公司利用这一点来建立品牌知名度并协助实施忠诚度计划。

对于这种情况,我们可以使用opensea测试网来模拟NFT上币过程。创建 opensea 测试网帐户是完全免费的。在我们的例子中,我们将使用 MetaMask 来列出 NFT。因此,请务必注册与 MetaMask 测试网络帐户连接的 opensea 测试帐户。

对于 opensea testnext NFT URL,基本上,它有两个变量,即加密货币网络和

对于 opesea 列表 URL,该结构有两个变量,以下是示例

https://testnets.opensea.io/assets/ goerli/0x8eeb73f75e6d80a6a21302d1ec36d0ead0ceb295/0

  • 网络地址: goerli/0x8eeb73f75e6d80a6a21302d1ec36d0ead0ceb295
  • Token Counter:0(这个数字代表NFT的顺序,0表示是第一个)

稍后我们将在 Python 部署脚本中使用它。

Python部署脚本

除了导入 Brownie 和 Assistscript 模块以及构建可替代代币之外,NFT 部署还需要两个变量。它们是sample_collection_URI 和 OPEASEA_URL

sample_collection_URI = "https://ipfs.io/ipfs/QmV8rPonNpVaKnH2ri826AWqJ5XxeKYdeJupjKch4kA1UK?filename=NFT1.json"

OPENSEA_URL = "https://testnets.opensea.io/assets/ {} / {} "

然后在主函数中,我们需要使用之前在NFT智能合约中创建的createcollection函数

def main ():

   account = get_account ()

   Simple_Collection = SimpleCollection.deploy({ "from" : account })

   tx = Simple_Collection .createCollection(

       sample_collection_URI , { "from" : account })

   tx .wait( 1 )

Brownie-config、ENV 和 AssistScripts

除了可替代代币开发之外,我们还需要添加这些脚本。欲了解更多详情,请参阅这些文章

在 Python 脚本中使用 Infura 和 MetaMask 在真实的以太坊区块链网络上部署 Web3 智能合约

使用 Python 和 Web3 在以太坊上部署 Brownie FundMe 智能合约

脚本准备好后,我们可以在特定网络上运行脚本,这里的结果表明它已完成,并且 NFT 已在市场上列出。

Brownie run scripts/deploy_NFTCreate.py –network goerli

使用 Python、Openzeppelin、Pinata 构建 NFT 的完整脚本

如果您对 Web3 NFT – 使用 Python、Openzeppelin、Pinata 构建和列出 NFT 感兴趣,请添加消息“Web3.0教程7”来订阅我们的新闻通讯。我们会立即将脚本发送到您的邮箱。

我希望您喜欢阅读 Web3 NFT – 使用 Python、Openzeppelin 和 Pinata 构建和列出 NFT。如果您这样做了,请通过执行下列操作之一来支持我们,因为这总是对我们的频道有所帮助。