位置寻址我们都很熟悉,无论是寻找文件还是浏览网页,我们通常需要输入一个地址来定位或找到需要的内容。这种方式在互联网上和现实生活中都被广泛使用。比如,如果有人要你帮忙找一本书,按照位置寻址的模式,他会告诉你这本书的具体位置,比如“xx大街xx号,上二楼,在左手边的书架从上到下第二层,从右到左第三本书”。只要他提供的信息准确且书架和住处没有变动,你就能找到他需要的书。
内容寻址是根据内容进行搜索。继续以上述找书的例子,如果要找的是一本名为《xxx》的书,那么对方会告诉你这本书的ISBN编号。这样,无论这本书在什么位置,你都能通过书名来找到它。即使在图书馆,你也可以通过正确的ISBN编号来找到这本书。
当数据转移到互联网上时,通常使用URL进行位置寻址,以便链接数据的主要位置。这种方式很方便,但也存在一些问题。
首先,我们往往会通过URL推测内容是什么。比如,如果一个URL以dog.jpg结尾,我们会认为这个URL指向一张小狗的图片,但实际上它可能是一段音乐或者一个视频。这种情况下,信息传达很容易出错。
其次,URL指向的数据通常存储在中心化服务器上。在访问之前,我们无法确定访问它的权限、安全性或者该链接是否正确指向我们需要的内容,除非我们专门去确认。
如果数据被从服务器删除,那么通过这个URL将永远无法找到所需的数据。要再次找到它变得非常困难。
最后,位置寻址会导致数据被反复存储和链接到新的URL,从而导致大量冗余。例如,某张图片可能被多个URL保存多次。随着时间的推移,网络会变得混乱,难以判断和清理。
那么如何解决这些问题呢?答案是内容寻址。内容寻址是一种新的概念,对许多人来说可能还很陌生。在内容寻址中,不是通过内容本身进行搜索,而是使用一种新的链接形式,即加密哈希(Cryptographic hash function)。加密哈希是一种单向数字算法,可以将任何大小的数据映射到固定长度的位字符串。我们可以将这个字符串看作是数据的唯一标识符。
加密哈希确保了数据的安全性,因为它是从数据内容中生成的。这意味着任何人对相同的数据使用相同的算法都会得到相同的哈希值,从而减少了冗余存储。
此外,加密哈希是唯一的。即使对一张图片进行一个像素的改动,哈希值也会完全不同。这意味着我们只需查看哈希值,即使无法访问文件本身,也很容易确定文件是否包含相同的数据。
加密哈希还可以解决中心化网络中的信任问题。在过去,我们更倾向于相信权威机构,但权威机构对数据具有绝对掌控权。如果不是权威机构提供的URL,我们经常会遇到错误内容的恶意欺骗。在去中心化网络中使用内容寻址,即使不了解数据托管方,我们也可以通过哈希值确认文件内容是否受到篡改。
前面我们提到,如果文件丢失,我们将无法找到它。但加密哈希可以解决这个问题。在全网范围内,只要我们找到相同的哈希值,无论是论文、视频还是JSON对象,我们一定可以找到完全相同的文件。
IPFS和Filecoin是如何使用内容寻址的呢?答案是CID(Content Identifier)。CID是包含加密哈希和编解码器的单个标识符,它包含了关于“如何解释该数据”的信息。编解码器以特定的格式对数据进行编码和解码。
CID还有一个作用,就是统一不同的加密哈希。目前,在去中心化网络中,许多工具和协议开始使用内容寻址,如Git工具、以太坊和比特币等协议。但不同的协议和工具在解释数据和加密函数的方式上有所不同。CID可以为不同的系统创建一个统一的标识符。
无论是中心化还是去中心化网络,我们都需要依靠“链接”将资源联系在一起,传达信息,使网络具有交互性。为了网络的安全和进步,不断改进这个链接是非常必要的。IPFS和Filecoin通过CID传达数据结构之间的关系,这是我们迈向web3的必经之路。