从“分布式”角度看IPFS对区块链的重要性
作者丨李画编辑|熊吉区块链是一个分布式系统,但包括以太坊、EOS在内的诸多公链本身实现的都只是数据的分布式计算,而没有提供数据的分布式存储,这导致分布式的区块链系统无法真正彻底地做到分布式。IPFS(InterPlanetaryFileSystem,星际文件系统)协议解决的正是这样一个问题,它是分布式文件系统,可以实现数据的分布式存储。
本文将去繁从简,以数据的存取过程为线索,通过对IPFS最关键的三个系统技术的分析,看它是如何满足区块链数据的分布式存储需求的。01MerkleDAG当把文件存储到IPFS系统中时,文件并不是以一个完整的个体被存储,文件数据以平均分割法的方式被切分成若干个256KB大小的块。这些块在经过哈希运算后,也并不是存储在单个中心化的服务器上,而是分开存储在网络中的各个分布式的节点之中,没有节点拥有特权。
当从网络中获取文件时,先从可信的节点获得文件的MerkleTree树根哈希值。一旦获得了树根,就可以从其他不可信的节点获取MerkleTree的各个节点的哈希值。通过可信的树根来检查接收到的MerkleTree节点,如果MerkleTree某节点是损坏的或者虚假的,就从其他存储节点获得另一个MerkleTree节点,直到最终获得一个与可信树根匹配的MerkleTree。
DHT是分布式系统的关键技术,实现它的方法有很多种,IPFS采用的是基于S/Kademlia和Coral的算法。03BitSwap仅仅实现数据的分布式存储还远远不够,数据还需要在节点之前有效的交换,从而使得整个系统能够高效运转。IPFS协议受BitTorrent的启发,通过对等节点间交换数据块来分发数据。
领取专属 10元无门槛券
私享最新 技术干货