时间:2023-07-29|浏览:175
然而,这些工具帮你在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网络,得到一个内容数据的链接:ContentURI(ipfs://+CID)。 注:CID是对一段内容的描述的唯一标识符(内容的哈希值)。 3. Token化 将创作的内容加上它的名字和一些说明构成元数据(metadata)完成创作内容的Token化,形成一笔数字资产。并将元数据上传IPFS,获得metadataURI(ipfs://+CID)。 4. 资产上链 创作者从他的外部账户发送一笔包含NFT元数据URI的交易到1中的智能合约,来调用合约中的铸造方法,然后返回该枚NFT在当前合约中的唯一标识符——TokenID。TokenID的返回标志着NFT创建成功。待这笔交易矿工打包进区块并获得确认后,合约会触发一个转移事件(transferevent),将TokenID发送给创作者。该事件的发生标志着NFT所有权和使用权的确认。
如此一来,你可以在以太坊上查看并验证你NFT背后的数字资产。换句话说,以太坊上的NFT是完整的。但是,IPFS上保存的NFT元数据和NFT资产数据并不能提供在区块链上验证该NFT的全部信息。也就是IPFS上的NFT并不完整。
怎么样的NFT信息才是完整的?
在上传metadata信息的方法中,如minty中的createNFTFromAssetData,在NFT铸造完成后,添加下面的链上信息,执行方法后存储在IPFS上。
Contractaddress+TokenID+Owneraddress(可选)
根据合约地址和TokenID可以检索到创建NFT时创作者发送的创建交易,也能跟踪到后续NFT变更所有者的交易数据。因此,这里所有者地址并不是必要数据项。
结论
综上,
(metadata+Contractaddress+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
PS:本文仅供研究分析,不做投资建议,忘投资者谨慎投资。
来源:原力区