非同质化通证(Non-Fungible Token,NFT)是一种架构【18I链上合约-259l开发系统3365】在区块链技术上的,不可复制、篡改、分割的加密数字权益证明,可以理解为一种去中心化的“虚拟资产或实物资产的数字所有权证书”。
从技术层面来看,NFT以智能合约的形式发行,一份智能合约可以发行一种或多种NFT资产,包括实体收藏品、活动门票等实物资产和图像、音乐、游戏道具等虚拟资产。
从物理层面来看,NFT仅仅是一串机器生成的数据,由于底层技术赋予的不可篡改性等特点,它被用于权利证明。
理解NFT本质:简而言之——由智能合约创建、维护、执行的非同质化数字资产通证。NFT智能合约记录了每个NFT资产的token ID、资源存储地址及它们的各项信息。
NFT储存于区块链上,但受到成本影响,其映射的实物资产或数字资产一般不上链,而是储存于其他中心化或非中心化的存储系统中,如IPFS,并通过哈希值或URL映射上链。
我们将使用web3的合约方法,使用ABI和地址创建合约示例,在你的mint-nft.js文件中,添加以下内容:
const contractAddress = "0x81c587EB0fE773404c42c1d2666b5f557C470eED"
const nftContract = new web3.eth.Contract(contract.abi, contractAddress)
使用ipfs为NFT配置元数据
如果你还记得第一部分的教程,我们的mintNFT智能合约函数接收了一个tokenURI参数,这是一个描述NFT元数据的JSON文档--这才是真正给NFT带来生命的东西,可许它有可配置的属性,如名称、描述、图像和其他属性。
星际文件系统(IPFS)是一个去中心化的协议和点对点网络,用于在分布式文件系统中存储和共享数据。
我们将使用Pinata,一个方便的IPFS API和工具包,来存储我们的NFT资产和元数据,以确保我们的NFT是真正去中心化的。如果你没有Pinata账户,请注册一个免费账户这里,并完成账户电子邮件验证。
在你创建完账户后:
导航到Files页面,点击页面左上方的蓝色Upload按钮。
上传一张图片到pinata-这将是你的NFT的图片资产。随意给资产起个你想要的名字
上传后,你会在文件页面的表格中看到文件信息。你还会看到一个CID列。你可以通过点击旁边的复制按钮来复制CID。
{
"attributes":[
{
"trait_type":"Breed",
"value":"Maltipoo"
},
{
"trait_type":"Eye color",
"value":"Mocha"
}
],
"description":"The world's most adorable and sensitive pup.",
"image":"ipfs://QmWmvTJmJU3pozR9ZHFmQC2DNDwi2XJtf3QGyYiiagFSWb",
"name":"Ramses"
}