2021年见证了NFT的大爆发,NFT的核心价值主张是持久性(Permanence)和不可变性(Immutability)。然而,由于设计缺陷,市面上许多用于出售的NFT都做不到这两点。我们经常听到卖家宣称NFT将永远存在区块链上,但实际上,出于成本和链上存储空间的限制,真正被存储上链的只有NFT所有权的记录和指示NFT存储位置的链接。
很多时候,这些链接是脆弱的,它们使用HTTP协议将用户引导到特定的存储位置而不是链接到NFT资产本身。这意味着链接指向的内容可能会在未来被更改或者离线,使原始资产永远丢失,所有权记录也变得毫无价值。
?IPFS系统(InterPlanetaryFileSystem)则可以帮助解决这些问题,只要遵守系统规则就能确保存储在IPFS上的数据的持久性和真实完整性。
随着NFT受欢迎程度激增,现在正是重新审视NFT数据存储这个IPFS最佳用例之一的好时机。在这篇文章中,我们将着重讨论IPFS存储的两个特性:内容可寻址性(ContentAddressing)和内容真实完整性(ContentIntegrity)。
内容可寻址性
?IPFSCIDs(ContentIdentifers)是一种极其强大和灵活的内容识别方式,它可以单独识别任何内容,无论其存储地点或方式如何。首先,读者需要了解一下IPFS储存涉及到的几个概念:
CID
内容标识符(CID)是一个唯一描述存储内容的ID。
例:bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi
我们建议在将CID存储在硬盘上时将其转换为IPFSURIs,尤其是元数据等重要内容,为CID添加标注能够使用户和自动化工具日后检索文件时更方便。
IPFSURI
统一资源标识符用于标识特定场景下的特定内容,这个特定内容是由URI场景自定义的。
例:ipfs://bafybeigvafaks2bvivtv46n2z7uxszpvl25jhvzc6dbhnjjgjkbeia5jta/nft.mp4
?IPFSURIs是IPFS链接指向文件或目录的规范形式。当从智能合约链接到IPFS数据时,使用IPFSURIs明确指示了数据需要使用IPFS检索。
HTTP网关URL
HTTP网关为无法解析IPFSURIs的传统浏览器提供了可互操性。此类链接只能用在应用程序的展示层,而不应存储在区块链上或NFT元数据内。
例:https://dweb.link/ipfs/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi
请注意,HTTP网关将分布式的内容分发重新中心化,因此会出现中间人和单点失败的风险,如果网关操作者离线或出现故障,链接将中断。不过一些具有IPFS内置支持的浏览器则可以规避这些问题,因为它们可以自动从这些链接中提取CID,并根据用户偏好从IPFS加载数据。
在不同环境中内容寻址
开发人员应根据不同的生产环境来处理链接。
链上(On-Chain)
NFT智能合约将会向与每个NFT资产和元数据返回IPFSURI。
我们建议在铸造每个NFT资产之前先生成IPFSURI并将完整的URI存储在链上。这是符合智能合约接口的最简单方法,ipfs://URI场景使任何去中心化应用都能够轻松查看数据是否可通过IPFS获得。
元数据(Metadata)
在NFT资产的元数据中,IPFSURIs是最明确的以纯文本形式链接到IPFS资源的方法。
开发人员可能希望包含指向公共HTTP网关的链接,以实现传统的互操作性。最好避免使用其他链接到内容的替代方案。由于来自特定位置的通过HTTP提供的内容可能会发生更改,这种链接只能依靠临时内容镜像。在区块链上,数据存储是持久且不可变的,因此通过HTTP来查询内容是脆弱和有风险的。
与之相对的,IPFSURI是永久有效的,因此,可以将其视为数据存储的规范链接。通过使用IPFSURI作为链接的“真实来源”,应用程序只需生成新的网关链接,就可以轻松地支持多个存储解决方案或切换到不同的网关。这比将特定网关“硬编码”永久存储到区块链上更灵活。
应用(Application)
在面向用户的应用程序中,开发人员应通过以下两种方式链接到IPFS内容:
1.IPFSURI
2.HTTP网关URL直到更多的浏览器支持IPFSURI场景的本地解析为止,这两种链接都可以根据需要从原始CID或IPFSURI轻松生成。
内容的真实完整性
NFT的一个主要问题是资产的真实完整性,这包括资产本身以及与资产相关的任何数据。IPFS通过使用CID验证自创建链接以来没有任何更改,从而证明NFT数据的完整性。将元数据链接到资产代币的元数据应被视为NFT价值的一部分,因此,为了保护资产的价值,应将元数据与资产一起存储在IPFS上,以确保两者都可访问。
实现此目的的首选方法如下:
1创建两个新目录。
2将资产添加到其目录。
3将资产目录存储到IPFS,并记下CID。
4将元数据添加到其目录,并指向资产,使用中的CID创建IPFSURI。URI应包含目录的CID和资产的文件名。
5将元数据的目录存储到IPFS,并记下CID。
6.使用中的CID为元数据创建IPFSURI,并将URI存储在链上以形成所有权记录这个过程确保了元数据和资产互相独立,又能够互相链接。
_____________________________
作者|?YusefNapora
翻译&校对|林芒果
本文由矿视界翻译整理编辑,如需转载,请标明出处
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。