1.
部署合约
在以太坊上发送一笔交易,部署创建NFT的智能合约。该合约包含创建NFT以及交易等相关的功能。2. 创作内容在创作者本地完成NFT的内容创作,如一幅画.png或一篇文章.pdf,并上传、固定到IPFS或Filecoin网络,得到一个内容数据的链接:Content URI(ipfs://+CID)。注:CID是对一段内容的描述的唯一标识符(内容的哈希值)。3. Token化将创作的内容加上它的名字和一些说明构成元数据(metadata)完成创作内容的Token化,形成一笔数字资产。并将元数据上传IPFS,获得metadata URI(ipfs://+CID)。4. 资产上链创作者从他的外部账户发送一笔包含NFT元数据URI的交易到1中的智能合约,来调用合约中的 铸造方法,然后返回该枚NFT在当前合约中的唯一标识符—— Token ID。Token ID的返回标志着NFT 创建成功。待这笔交易矿工打包进区块并获得确认后,合约会触发一个转移事件(transfer event),将Token ID发送给创作者。该事件的发生标志着NFT 所有权和使用权的确认。如此一来,你可以在以太坊上查看并验证你NFT背后的数字资产。换句话说,以太坊上的NFT是完整的。但是,IPFS上保存的NFT元数据和NFT资产数据并不能提供在区块链上验证该NFT的全部信息。也就是IPFS上的NFT并不完整。以下是Minty(或者其他工具)在IPFS上存储的NFT全部数据。
我们看到,IPFS上的NFT数据只有元数据和元数据中包含的内容数据(上图中的asset data),缺少token的链上信息。如果我们要通过Chainlink这样的预言机网络实现IPFS或Filecoin的双向通信,这部分链上信息必不可少。那么,IPFS上完整的NFT资产到底应该长什么样子?我们需要先了解如何定位一个NFT。在ERC-721标准的智能合约中,每个NFT都有一个唯一的uint256 ID标识。NFT的所有数据都存在智能合约的数据库中。此标识码在本合约存续的有效期内不得变更。
(合约地址,uint256 tokenId)是以太坊链上某个特定资产的全局唯一标识符,并且能够完成NFT的查询和验证。
所以,
我们的做法是:在上传metadata信息的方法中,如minty中的createNFTFromAssetData(),在NFT铸造完成后,添加下面的链上信息,执行方法后存储在IPFS上。Contract address + TokenID + Owner address(可选)根据合约地址和TokenID可以检索到创建NFT时创作者发送的创建交易,也能跟踪到后续NFT变更所有者的交易数据。因此,这里所有者地址并不是必要数据项。综上,(metadata + Contract address + TokenID)才是IPFS上NFT资产的完整信息。引用https://eips.ethereum.org/EIPS/eip-721https://docs.ipfs.io/how-to/mint-nfts-with-ipfs/#mintyhttps://blog.ipfs.io/2021-04-05-storing-nfts-on-ipfs/https://www.trufflesuite.com/boxes/filecoin#gallery-uiPS:本文仅供研究分析,不做投资建议,忘投资者谨慎投资。