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