如何创建和部署ERC-721(NFT)?_币世界+登链社区

2021-03-26 08:49 栏目:行业动态 来源:网络整理 查看()

自从引入Cryptokities [1]以来,与ERC-721标准兼容的加密收藏已经变得非常流行,并且在最近几个月已经朝着大规模采用的方向发展。

概述

自从引入cryptokities[1]以来,与ERC-721标准兼容的加密收藏变得非常流行,并在最近几个月大规模采用。本指南将涵盖使用0xcert/ethereum-erc721[2]智能合同库创建和部署我们自己的ERC-721(NFT)。

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

同质化意味着相同或可互换的含义。例如,以太网令牌和特定令牌类的所有硬币具有相同的值。卡达诺令牌也是如此。同质化的代币可以在1:1兑换。

NFT是独一无二的,每个人都不一样。每个令牌都有自己独特的特征和价值。可以成为NFT的东西包括收藏卡、艺术品、机票等等。两者有明显区别,不能互换。将非同质代币(NFT)视为稀有收藏品;每个令牌都有独特的特征和不寻常的属性。很多时候是用元数据来表示的。

什么是 ERC-721?

ERC是以太网征求意见的缩写,721是建议号。ERC是以太网生态系统中的应用级标准,可以是令牌的智能合同标准,如ERC-20[3]。ERC的作者负责与以太网社区建立共识,一旦提案被社区批准,它将成为一个标准。你可以在这里追踪最近ERC的提议[4]。ERC-721的创建是为了提出在智能合同中跟踪和转移NFT的功能。

ERC-721[5]是一个开放标准,它描述了如何在EVM(以太网虚拟机)兼容的区块链上构建非同构令牌;它是非同构令牌的标准接口。这是一套便于与NFT互动的规则。NFT不仅是ERC-721令牌,也是ERC-1155[6]令牌。

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

ERC20 类函数:

name:用于定义令牌的名称。

Symbol:用于定义标记令牌的符号。

函数totalSupply:用于定义区块链中的令牌总数,供应不必是常数。

BalanceOf:返回一个地址拥有的NFT数。

Ownership 函数

该函数返回令牌所有者的地址。因为每个ERC-721令牌都是唯一且非同质的,所以它们在区块链由一个标识来表示。其他用户、合同和应用程序可以使用该标识来确定令牌的所有者。

批准:此功能代表所有者批准另一个实体转让令牌的权利。

TakeOwnership:这是一个可选函数,它的作用类似于取款函数,因为外界可以调用它从另一个用户的帐户中提取令牌。当一个用户被批准拥有一定数量的令牌时,可以使用获取所有权。

Transfer:这是另一个传递函数;它允许所有者将令牌转移给另一个用户,就像加密货币一样。

TokenOfOwnerByIndex:这是一个可选函数,但建议使用。每个所有者可以同时拥有多个NFT。它的唯一标识可以识别每个NFT,这可能会使跟踪标识变得困难。因此,契约将这些标识存储在一个数组中,而tokenOfOwnerByIndex函数允许我们从数组中检索这些信息。

元数据

令牌元数据:(可选)允许我们发现令牌元数据或其数据链接的界面。

事件

转移:当当代货币的所有权从一个人转移到另一个人时,会触发此事件。发送的消息包括哪个帐户转移了令牌、哪个帐户接收了令牌以及哪个令牌被转移(通过标识)。

批准:当用户批准另一个用户获得令牌所有权时,将触发此事件,也就是说,每当执行批准功能时,都会触发此事件。它发出的信息包括:当前哪个账户拥有令牌,哪个账户被批准以后拥有令牌,哪个令牌(通过ID)被批准转移所有权。

非同质化代币的使用场景

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

获得测试 ETH

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

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

如何创建和部署ERC-721(NFT)?_币世界+登链社区

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

{

名称' : '开始',

描述' : '此图像显示真实自然模糊,

图像' : ' https://ipfs . io/ipfs/qmzzbdkf 7 sqx 1 q 49 cqgmreuzhxt 9 svb 3 HTC 3 ttxycvz 7 JC ',

}立即添加JSON文件:

$ipfsaddnft.json从Qm复制哈希值,并添加https://ipfs.io/ipfs/前缀。必须是这样的:https://ipfs . io/ipfs/qmwkqwmjqhsfpfrfguvgpfftkbj5 wkfzhjqpruhsltlwxb,保存这个URL。我们需要这个来打造NFT。

创建我们自己的代币。

为了方便和安全,我们将使用0xcert/ethereum-erc721[11]合同来创建我们的NFT合同。使用0xcert/ethereum-erc721,我们不需要编写整个ERC-721接口。相反,我们可以导入库合同并使用其功能。转到Ethereum的Remix[12]IDE,制作一个新的Solidity文件,比如nft.sol,将下面的代码粘贴到Solidity文件中。

//SPDX-许可证标识符:兆位

pragmasolidity 0 . 8 . 0;

import ' https://github.com/0x cert/ether eum-ERC 721/src/contracts/token/nf-token-metadata . sol ';

import ' https://github.com/0x cert/ether eum-er c721/src/contracts/ownership/own able . sol ';

contractnewNFTisNFTokenMetadata,Ownable{

constructor(){

nftName=' SynthNFT

nftSymbol=' SYN

}

functionmint(address_to,uint256_tokenId,stringcalldata _ uri)ExternalOnlyowner {

超级。_mint(_to,_ TokenID);

超级。_setTokenUri(_tokenId,_ uri);

}

}以下是对代码的解释:

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

第二行:声明实度版本。

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

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

第9-12行:初始化构造函数并设置名称和标记。

第14行:声明函数mint有三个参数:地址类型的variable _to,存储NFT令牌接收者的地址,uint256类型的variable _tokenId,字符串类型的variable _URI,JSON文件的URI。声明mint为外部函数,可以从其他智能合同和当前合同之外访问。

第15行:使用收件人的地址和令牌标识来铸造令牌。

第16行:用JSON文件的令牌id和URI设置令牌URI。

编译智能契约,用Injected Web3部署(编译契约前,在元掩码上选择Ropsten testnet)。将事务批准到元掩码。

如何创建和部署ERC-721(NFT)?_币世界+登链社区

参考资料

[1]

Cryptokitties:https://www.cryptokitties.co/

[2]

0x cert/ether eum-er c721:https://github.com/0x cert/ether eum-er c721

[3]

ERC-20:https://

[4]

这里,https://github.com/ethereum/EIPs/issues

[5]

ERC-721:https://eips.ethereum.org/EIPS/eip-721

[6]

ERC-1155:https://eips.ethereum.org/EIPS/eip-1155

[7]

Metamask:https://metamask.io/

[8]

:https://faucet.ropsten.be/水龙头公司

[9]

IPFS:https://learnblockchain.cn/tags/IPFS

[10]

ipfs文档中的安装指南:https://IPFS.io/#install

[11]

0x cert/ether eum-er c721:https://github.com/0x cert/ether eum-er c721

[12]

Remix:https://remix.ethereum.org/伊泰车间

[13]

:https://spdx.org/licenses/SPDX许可证

[14]

0xcert/ethereum-erc721的GitHub:https://github.com/0xcert/ethereum-erc721

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发