如何创建和部署ERC-721(NFT)?

这篇文章主要介绍了如何创建和部署ERC-721(NFT)? ,文中通过代码以及文档配合进行讲解,很详细,它对在座的每个人的研究和工作具有很经典的参考价值。 如果需要,让我们与区块链资料网一起学习。

https://www.interchains.cc/21071.html

如何创建和部署ERC-721(NFT)?是很好的区块链资料,他说明了区块链当中的经典原理,可以给我们提供资料,如何创建和部署ERC-721(NFT)?学习起来其实是很简单的,

不多的几个较为抽象的概念也很容易理解,之所以很多人感觉如何创建和部署ERC-721(NFT)?比较复杂,一方面是因为大多数的文档没有做到由浅入深地讲解,概念上没有注意先后顺序,给读者的理解带来困难

如何创建和部署ERC-721(NFT)?

  • ERC721
  • NFT

创建自己的NFT .

概述

自Cryptokitties推出以来,兼容ERC-721标准的加密收藏品已经非常流行,并在最近几个月向大规模采用的方向发展。 本指南将涵盖使用0xcert/ethereum-erc721智能合约库创建和部署我们自己的ERC-721(NFT)。

什么是非同质化(Non-Fungible)代币?

同质化是指相同或可互换的意思。 例如,以太坊eth代币、特定代币类的所有币,都具有相同的价值。 Cardano代币也是如此。 同质化代币可1:1互换。

而NFT是独一无二的,每个人都是不同的。 每一个代币都有独特的特点和价值。 可以成为NFT的东西类型有收藏卡、艺术品、飞机票等。 它们之间都有明显的区别,不能互换。 将非同质化代币(NFT)视为稀有的收藏品;每个代币都有独特的特征,不寻常的属性,大多数时候,它利用元数据表示。

什么是ERC-721?

ERC是以太坊eth建议请求(Ethereum Request for Comment)的缩写,721是提案编号。 ERC是以太坊eth生态系统中的应用级标准,它们可以是代币的智能合约标准,如ERC-20,ERC的作者负责与以太坊eth社区建立共识,一旦提案被社区审核通过,就会成为标准。 你可以跟踪最近的ERC提案这里。 ERC-721的创建是为了提出在智能合约内跟踪和转移NFT的功能。

ERC-721是一个开放的标准,它描述了如何在EVM(以太坊eth虚拟机)兼容的区块链blockchain上构建非同质化代币;它是非同质化代币的标准接口;这是一套规则,使其易于与NFT 交互。 NFT不仅是ERC-721 代币,还可以是ERC-1155代币。

以下是ERC-721标准中定义的一组函数和事件: ERC-721定义了一些符合ERC-20的函数。 这使得现有钱包更容易显示简单的代币信息:

ERC20类函数:

  • name: 用于定义代币的名称。
  • symbol: 用于定义标记代币的符号。
  • totalSupply: 这个函数用来定义区块链blockchain上的代币总数,供应量不必是恒定的。
  • balanceOf: 返回一个地址拥有的NFT数量。

Ownership 函数

本函数返回代币所有者的地址。 由于每个ERC-721代币都是独一无二的,非同质化的,它们在区块链blockchain上由一个ID来表示。 其他用户、合约、应用可以使用这个ID来确定代币的所有者。

  • approve: 此函数批准另一个实体代表所有者转让代币的权限。
  • takeOwnership: 这是一个可选的函数,它的作用就像一个取款函数,因为外界可以调用它从另一个用户的账户中取出代币。 当一个用户被批准拥有一定数量的代币,可以使用takeOwnership。
  • transfer: 这是另一个转移函数;它允许所有者将代币转让给另一个用户,就像加密货币一样。
  • tokenOfOwnerByIndex: 这是一个可选的函数,但建议使用。 每个所有者可以同时拥有一个以上的NFT。 其独特的ID可以识别每一个NFT,结果可能会变得难以跟踪ID。 所以合约将这些ID存储在一个数组中,tokenOfOwnerByIndex 函数让我们从数组中检索这些信息。

元数据

tokenMetadata: (可选)一个接口,让我们可以发现代币的元数据或其数据的链接。

事件

  • Transfer:当代币的所有权从一个人变为另一个人时,该事件被触发。 发出的信息包括哪个账户转移了代币,哪个账户收到了代币,以及哪个代币(通过ID)被转移。
  • Approve: 当用户批准另一个用户获得代币的所有权时,该事件就会被触发,也就是说,每当approve函数被执行时,该事件就会被触发。 它发出的信息包括:当前哪个账户拥有该代币,哪个账户被批准在未来拥有该代币,以及哪个代币(通过ID)被批准转让其所有权。

非同质化代币的使用场景

数字艺术(或实物艺术):艺术作品是NFT最受欢迎的使用案例。 数字艺术拍卖是NFT的第一个应用,并且还在继续发展。 游戏:提供游戏内购和游戏收藏。 房地产:将房产和智能合约Token化,并进行买卖。 金融:贷款、期货等金融工具,并承担其他责任。 软件标题:软件授权,确保反盗版和隐私。 演唱会门票/体育比赛门票:为了保证在卖票过程中不发生欺诈行为,粉丝可以在一个地方查看以往的经历。 KYC合规性:为特定用户的KYC创建代币。

获得测试ETH

现在我们知道了什么是ERC-721代币以及它们是如何工作的,让我们看看如何构建和部署自己的代币。

我们将在Ropsten测试网上部署合约。 开始前,你需要安装Metamask浏览器扩展来创建一个ETH钱包和获取一些测试ETH,你可以通过进入Ropsten水龙头来获得。 你需要在Metamask钱包上选择Ropsten测试网络,并将自己的钱包地址复制粘贴到水龙头中的文本字段中,然后点击“Send me test Ether”。

如何创建和部署ERC-721(NFT)?

将文件添加到IPFS

在写NFT合约之前,我们需要托管好NFT所对应的艺术作品,并创建一个元数据文件;为此,我们将使用IPFS–一个点对点文件存储和共享的分布式系统。 按照IPFS文档中的安装指南下载并安装基于你的操作系统的IPFS CLI。

以下是托管图像和元数据文件的步骤:

步骤1:创建IPFS repo。 在终端窗口中输入以下内容来初始化IPFS repo

 $ ipfs init

步骤2:启动IPFS守护进程。 打开一个单独的终端窗口,输入以下内容:

$ ipfs daemon

步骤3:添加图像到IPFS , 进入第一个终端窗口,将图像添加到IPFS中(这里是art.png)。

$ ipfs add art.png

如何创建和部署ERC-721(NFT)?

复制从Qm开始的哈希值,并添加 https://ipfs.io/ipfs/前缀,它必须看起来像这样https://ipfs.io/ipfs/QmdrswwrbcfPeknN2BRLVmyWbWRsKSC3vSNhV9Gkvhk1mL。

步骤4: 向IPFS添加JSON文件。 创建一个JSON文件nft.json,并将其保存在与图像相同的目录中。 JSON文件格式:

{     "name": "NFT Art",     "description": "This image shows the true nature of NFT.",     "image": "https://ipfs.io/ipfs/QmZzBdKF7sQX1Q49CQGmreuZHxt9sVB3hTc3TTXYcVZ7jC", }

现在添加JSON文件:

$ ipfs add nft.json

复制从Qm开始的哈希值,并添加 https://ipfs.io/ipfs/前缀,它必须看起来像这样https://ipfs.io/ipfs/QmWKqwMJQHSfpfRFGUVGPFFtkBJ5WkFzhjQpruhSLtLWXB, 保存这个网址。 我们需要这个来铸造NFT。

创建我们自己的代币。

为了方便和安全,我们将使用0xcert/ethereum-erc721合约来创建我们的NFT合约。 有了0xcert/ethereum-erc721,我们不需要写整个ERC-721接口。 相反,我们可以导入库合约并使用它的函数。 前往以太坊eth Remix IDE,制作一个新的Solidity文件,例如 nft.sol, 将以下代码粘贴到Solidity 文件中。

// SPDX-License-Identifier: MIT pragma solidity 0.8.0;  import "https://github.com/0xcert/ethereum-erc721/src/contracts/tokens/nf-token-metadata.sol"; import "https://github.com/0xcert/ethereum-erc721/src/contracts/ownership/ownable.sol";  contract newNFT is NFTokenMetadata, Ownable {    constructor() {     nftName = "Synth NFT";     nftSymbol = "SYN";   }    function mint(address _to, uint256 _tokenId, string calldata _uri) external onlyOwner {     super._mint(_to, _tokenId);     super._setTokenUri(_tokenId, _uri);   }  }

以下是代码的解释:

第1行: 指定SPDX许可证类型,这是在Solidity ^0.6.8之后增加的。 每当智能合约的源代码向公众开放时,这些许可证可以帮助解决/避免版权问题。 如果你不想指定任何许可证类型,你可以使用一个特殊的值UNLICENSED,或者直接跳过整个注释(它不会导致错误,只是一个警告)。

第2行: 声明 Solidity 版本。

第4-5行:导入0xcert/ethereum-erc721合约。

第7行: 合约命名为newNFT,它继承了NFTokenMetadata和Ownable合约。

第9-12行: 初始化构造函数并设置名称及代币符号。

第14行:声明函数mint有三个参数,类型为地址的变量_to,存储NFT代币接收者的地址,类型为uint256的变量_tokenId,将保存代币id,类型为字符串的变量_uri,将存储JSON文件的URI。 将mint声明为外部函数,可以从其他智能合约和当前合约之外访问。

第15行:使用接收方的地址和代币ID来铸造代币。

第16行:使用代币id和JSON文件的URI设置代币URI。

编译智能合约,并使用Injected Web3进行部署(编译合约前一定要在Metamask上选择Ropsten testnet)。 批准来metamask的交易。

如何创建和部署ERC-721(NFT)?

如果你在部署前收到一条错误消息:此合约可能是抽象的,请确保在合约选项卡下选择适当的合约。在Metamask中确认交易。

如何创建和部署ERC-721(NFT)?

现在进入Remix中的 Deployed Contracts(部署的合约)部分,展开部署的合约。 你会看到一堆函数/方法。 展开mint函数并添加以下参数:

  1. 在_to中添加你的Ropsten地址。

  2. 在 _tokenid 中输入任何数字值 (建议为1,因为它是第一个)。

  3. 在_uri字段中,添加上一节获得的JSON文件的URI。

如何创建和部署ERC-721(NFT)?

点击交易,并从metamask确认交易。 (需要你已经有了Ropsten链上的ETH)

你可以通过输入我们之前提到的token id来查看其他细节,如名称、符号、所有者或tokenuri。

如何创建和部署ERC-721(NFT)?

结论

恭喜你创建了自己的NFT,帮助你的艺术家朋友把他们的艺术作品发布到以太坊eth区块链blockchain上,或者自己也成为一名艺术家。 查看0xcert/ethereum-erc721的GitHub获取更多例子。


原文:原文: https://www.quiknode.io/guides/solidity/how-to-create-and-deploy-an-erc-721-nft

部分转自网络,侵权联系删除www.interchains.cchttps://www.interchains.cc/21071.html

区块链毕设网(www.interchains.cc)全网最靠谱的原创区块链毕设代做网站 部分资料来自网络,侵权联系删除! 最全最大的区块链源码站 ! QQ3039046426
区块链知识分享网, 以太坊dapp资源网, 区块链教程, fabric教程下载, 区块链书籍下载, 区块链资料下载, 区块链视频教程下载, 区块链基础教程, 区块链入门教程, 区块链资源 » 如何创建和部署ERC-721(NFT)?

提供最优质的资源集合

立即查看 了解详情