售前客服二维码
文章均源于网络收集编辑侵删
提示:仅接受技术开发咨询!
自从引入Cryptokities [1]以来,与ERC-721标准兼容的加密收藏已经变得非常流行,并且在最近几个月已经朝着大规模采用的方向发展。
NFT是独一无二的,每个人都不一样。每个令牌都有自己独特的特征和价值。可以成为NFT的东西包括收藏卡、艺术品、机票等等。两者有明显区别,不能互换。将非同质代币(NFT)视为稀有收藏品;每个令牌都有独特的特征和不寻常的属性。很多时候是用元数据来表示的。
ERC-721[5]是一个开放标准,它描述了如何在EVM(以太网虚拟机)兼容的区块链上构建非同构令牌;它是非同构令牌的标准接口。这是一套便于与NFT互动的规则。NFT不仅是ERC-721令牌,也是ERC-1155[6]令牌。
以下是ERC-721标准中定义的一组功能和事件:ERC-721定义了一些符合ERC-20的功能。这使得现有钱包更容易显示简单的令牌信息:
Symbol:用于定义标记令牌的符号。
函数totalSupply:用于定义区块链中的令牌总数,供应不必是常数。
BalanceOf:返回一个地址拥有的NFT数。
批准:此功能代表所有者批准另一个实体转让令牌的权利。
TakeOwnership:这是一个可选函数,它的作用类似于取款函数,因为外界可以调用它从另一个用户的帐户中提取令牌。当一个用户被批准拥有一定数量的令牌时,可以使用获取所有权。
Transfer:这是另一个传递函数;它允许所有者将令牌转移给另一个用户,就像加密货币一样。
TokenOfOwnerByIndex:这是一个可选函数,但建议使用。每个所有者可以同时拥有多个NFT。它的唯一标识可以识别每个NFT,这可能会使跟踪标识变得困难。因此,契约将这些标识存储在一个数组中,而tokenOfOwnerByIndex函数允许我们从数组中检索这些信息。
批准:当用户批准另一个用户获得令牌所有权时,将触发此事件,也就是说,每当执行批准功能时,都会触发此事件。它发出的信息包括:当前哪个账户拥有令牌,哪个账户被批准以后拥有令牌,哪个令牌(通过ID)被批准转移所有权。
我们将在Ropsten测试在线部署合同。在开始之前,您需要安装元屏蔽[7]浏览器扩展来创建一个ETH钱包,并获得一些测试ETH,这可以通过进入Ropsten水龙头[8]来获得。你需要在Metamask钱包上选择Ropsten测试网络,将你的钱包地址复制粘贴到水龙头中的文本字段,然后点击“Send me test Ether”。
步骤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。
//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)。将事务批准到元掩码。
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
文章均源于网络收集编辑侵删
提示:仅接受技术开发咨询!