当我们将数据导入IPFS节点时,我们将获得所谓的内容标识符或CID。CID使IPFS在存储方面独一无二,因为CID寻址内容,而不是典型https://的基于位置的寻址。
需要注意的是,CID是内容的加密散列。这意味着:
1)对内容的任何更改都会产生不同的CID。
2)使用相同设置添加到两个不同IPFS节点的相同内容,将产生相同的CID。
CID对NFT存储非常重要,因为它们有助于防止“地毯式拉动”,或者当NFT地址被更改,导致除原始NFT内容之外的其他内容时的问题。CID 允许长期更安全的NFT存储。
为了帮助NFT创建者和所有者更轻松地使用CID存储他们的 NFT,IPFS 和 Filecoin 提供NFT.Storage,一种专为存储链下NFT数据而构建的全新服务。数据分散存储在 IPFS 和 Filecoin 上。
那么,具体来讲,CID是什么?
当我们再Filecoin和IPFS这样的去中心化网络的节点间交换数据的时候,会通过内容寻址,而不是像中心化网络中的根据服务器位置的寻址方式——HTTP,去安全地定位并且识别数据。
内容标识符或CID是自描述的内容寻址标识符,通过巧妙地结合内容寻址、加密散列算法和自我描述,唯一地标识任何内容,而不管其存储再何处或如何存储。
具体来讲,它不指示内容存储在哪里,而是根据内容本身形成一种地址。CID 中的字符数取决于基础内容的加密哈希,而不是内容本身的大小。由于 IPFS 中的大多数内容都是使用哈希的sha2-256,因此我们遇到的大多数 CID 的大小都相同(256 位,相当于 32 字节)。这使它们更易于管理,尤其是在处理多个内容时。
创建CID最重要的一步是使用加密算法来转换输入的数据,该算法将任意大小的输入(数据或文件)映射到固定大小的输出,这种转换称为散列或哈希摘要。
使用的加密算法必须生成具有以下特征的哈希:
1)确定性:相同的输入(数据或文件)产生相同的哈希值。
2)不相关:输入(数据或文件)的微小变化会生成完全不同的哈希值。
3)一种方式:从哈希中重建数据是不可行的。
4)唯一:只有一个文件可以产生一个特定的哈希。
加密散列可以从数据本身的内容派生而来,这意味着对同一数据使用相同算法的任何人都将到达同一哈希值。如果小王和小明都使用相同的分布式Web协议(例如IPFS)来分享完全相同的小猫的照片,则两个图像将具有完全相同的哈希值。通过比较这些散列并确认它们是相同的,我们可以保证这两张照片的每个像素都是相同的。
加密哈希是唯一的,如果小明使用PS为那只猫咪P了一条项链,则更新后的图像将具有新的哈希,只需查看该哈希,即使没有访问文件本身,也很容易看出该文件现在包含不同的数据。
这与典型https://的基于位置的寻址完全不同,其给定地址 (URL) 的内容可以随时间变化。