从IPFS的特性,看其与NFT浪潮如何结合
小鼹鼠挖矿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
翻译&校对 | 林芒果
本文由矿视界(奇迹摩尔)翻译整理编辑,如需转载,请标明出处