BYTECODES

IPFS基础原理

IPFS核心基础

  1. 内容寻址

  2. 内容通过DAG相互连接

  3. 通过分布式Hash表实现内容发现

内容寻址

IPFS内容中每一块内容都有一个内容标识(CID),也就是Hash值。许多分布式系统都采用Hash,并且通过hash把内容串起来,但这些分布式系统并不是可以相互操作的。所以IPFS的IPLD(Interplanetary Linked Data)就是用来处理各个不同的系统内容。IPLD可以识别不同的内容寻址结构。

DAG

IPFS使用Merkle DAG, 每个节点有这个节点内容的Hash

  1. 如果是文件,那每个文件都有CID

  2. 如果是文件夹,那文件夹的CID是它包含的那些文件的CID的Hash

  3. 如果文件分块,那每个块都有CID

###分布式Hash表(DHT)

这个Hash表分布在各个节点中,如果要查找内容,需要向节点查询这个表。libp2p项目提供DHT和节点连接通信功能。

通过DHT找到那些节点存放了内容后,还需要再通过DHT找到这些节点的当前位置(Location)

接下来就需要exchange交换数据(使用Bitswap协议)


最后

libp2p还使用multiplexing技术,使用一个连接,完成所有通讯

CID是使用multihash生成的,multihash的前面一部分表示用的是什么hash算法以及多少位, 可以打开[这个地址][1]体验

IPLD: Meta-format for understanding, encoding, and decoding merkle linked data.

IPLD Data Model: 一种灵活的、基于JSON的数据模型,用于表示merkle-dags.


[1]: https://cid.ipfs.io/