你存在IPFS上的NFT还缺点什么?
目前,社区中出现了一些工具,如IPFS社区的Minty和Filecoin社区的Filecoin box,帮助我们把在去中心化网络(IPFS或Filecoin)创建并存储的数字资产(如画作、著作、音视频等)发布到以太坊网络中Token化,制作成NFT(非同质化代币)。然而,这些工具帮你在IPFS上存储的资产信息完整吗?
笔者就当前IPFS上存储的NFT信息的完整性提出了一些自己的思考:
NFT的创建过程是怎样的?
怎么样的NFT信息才是完整的?
IPFS上的NFT缺少了什么信息?
“不在IPFS上的NFT,不是你的NFT”
在这之前,由于以太坊数据存储成本过高的问题,数字资产本身由各个中心化网站的服务器保管。资产和区块链之间是靠NFT的链上元数据(metadata)中的一段URI链接的。
带来的弊端就是一旦网站瘫痪或者服务器数据丢失,该链接失效,数字资产随即丢失或损毁,也因此丢掉了NFT永久保存和不可篡改的两个最基本的属性。
打个比方,你的NFT是一幅画,那么IPFS是画的纸,区块链是保险箱或者是艺术馆的相框,而你的私钥就是打开它们的钥匙。如果纸这个载体不稳定,存在风险,数字资产也就有可能化为乌有。
在去中心化网络这个载体中存储体积较大的数字资产可以避免这一问题。
NFT的创建过程是怎样的?
下面,我们来看看近期出现的这些工具的做法,并发现一些问题。
我们可以在opensea.io轻松地铸造一个NFT:
连接钱包,给你即将创建的NFT们一个所有者地址;
创建一个新项目,输入NFT的名称、描述和NFT资产的链接;
最后,点击添加即可完成。
最为核心的上链操作由opensea代为执行。然而,从Minty(https://github.com/yusefnapora/minty)我们可以窥见这个黑盒,即NFT在以太坊中实际的创建过程:
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并不完整。
怎么样的NFT信息才是完整的?
以下是Minty(或者其他工具)在IPFS上存储的NFT全部数据。
我们看到,IPFS上的NFT数据只有元数据和元数据中包含的内容数据(上图中的asset data),缺少token的链上信息。如果我们要通过Chainlink这样的预言机网络实现IPFS或Filecoin的双向通信,这部分链上信息必不可少。
那么,IPFS上完整的NFT资产到底应该长什么样子?
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-721
https://docs.ipfs.io/how-to/mint-nfts-with-ipfs/#minty
https://blog.ipfs.io/2021-04-05-storing-nfts-on-ipfs/
https://www.trufflesuite.com/boxes/filecoin#gallery-ui
微信扫描关注公众号,及时掌握新动向
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场