NFT,终极意义上说,是一种数字媒体形式,就像其他数字媒体一样,从Decrypt文章中的文字到YouTube视频和流媒体音乐,最基本的形式都是由1和0组成的数据,NFT也不列外。
理解这点这很重要,因为与NFT相关的一切,从它所在的智能合约到你用来查看它的URL再到图像本身,最终都可以被归结为存储在计算机上的1和0。
然而,并非所有NFT存储技术都是一样的。
01、相关核心概念
事实上,一些NFT持有者可能只是拥有一个URL或令牌ID。因此,在考虑购买或制作NFT之前,值得花些时间了解一下NFT存储的工作原理。
首先,需要搞明白以下这些核心概念:
服务器——服务器就是一台计算机,就像您正在阅读本文的那台计算机(如果您正在用电脑阅读本文的话)一样。然而,与您正在阅读本文的计算机不同,服务器异常强大,可以同时运行许多不同的程序。从根本上讲,NFT存在并存储在服务器上。
托管——绝大多数人不运行自己的服务器,因此,无论是否意识到,他们都依赖其他人来提供该服务。托管通常是指服务器提供的服务集合,包括存储。所有NFT都托管在某个地方。
元数据——元数据是描述其他数据的数据。元数据帮助服务器更有效地查找、处理和存储数据。比如对于对于PFP NFT,其元数据描述了名称、颜色、大小、形状、帽子类型、眼镜类型等特征。
哈希——哈希是一种加密函数,给定一些输入,每次都会产生相同的输出。哈希通常用于对大量信息进行可验证且有效的编码。NFT及其所有元数据可以存储在单个哈希中。要想亲身体验哈希函数,可以去查看相关哈希生成器。
智能合约——智能合约是存在于区块链上的编码指令。它们是去中心化应用程序(dapps)的一部分,包括大多数NFT。铸造和交换NFT的规则存在于智能合约中。
02、链上存储与链下存储
将NFT存储在链上意味着整个NFT(图像及其所有元数据)都存在于区块链上。相反,链下存储的NFT意味着部分或大部分NFT存储在区块链之外。
链上存储的方式更可取,因为这意味着用户可以验证NFT的所有方面。但是,很少有NFT项目选择这种存储方法。因为数据太多就会导致需要大量存储空间,这意味着费用也很高昂。
Autoglyphs就是一个例子。原因很简单——JPEG图像包含大量数据,尤其是当这些图像存在于数千或数万个集合中时。
因此,大多数NFT项目选择将实际图像存储在链下。许多知名的NFT项目,如CryptoPunks和Bored Ape Yacht Club都选择了链下存储。
03、集中式与分散式托管
在链下存储的情况下,NFT的智能合约包含指向实际存储NFT JPEG图像的某个链下位置的信息。通常,NFT图像及其元数据存储在哈希函数中,即指集中式或分散式托管服务提供商。
包括亚马逊和谷歌,都属于集中式托管服务提供商。集中式托管服务提供商运行的服务器存储构成NFT的1和0数据。
中心化托管服务提供商的风险在于(尽管不太可能)他们可能随时关闭服务器,可能会导致所有者的NFT丢失。在某些情况下,所有者可能将只剩下智能合约中存在的一个无用的哈希数值。
这就是为什么许多项目选择使用去中心化解决方案来托管他们的NFT。最常见的解决方案是在星际文件系统(IPFS:见文末注释)上托管NFT数据。IPFS是一个分布式的点对点网络,文件存储在多个节点上,使其能够抵抗单点故障,例如服务器故障问题。
虽然存储在IPFS上的NFT在技术上并未存储在链上,但它们在理论上更安全,因为IPFS具有抗审查性;且没有任何一个实体有权关闭它。