其他分享
首页 > 其他分享> > P2P共享

P2P共享

作者:互联网

官方文档

DHT

Kademlia

Dual DHT

Routing Tables

Lookup algorithm

Routing particulars

对于每种记录的类型,其查找路由算法有略微的不同:

提供者记录

对于Multihash H的块来说:
PUT

  1. SHA256(H)做一次标准查询,得到K个最近的对等节点
  2. 将提供者记录provider record存储在这K个最近节点,同时自己也存储
  3. 目前,节点只能广播/存储自己的拥有记录provider record,即不能替其他节点声明/广播

GET

  1. X=SHA256(H)做一次查询,得到K个最近节点
  2. 查询每个节点(并发)它所知道的离X最近的K个节点
  3. 如果节点直接存储了该记录,返回X对应的记录即可

IPNS记录

对于一条IPNS记录,其key的multihash H来说:
PUT

  1. SHA256(/ipns/H)做一次查询,得到最近的K个节点
  2. 将这条IPNS记录存储到这K个对等节点,同时自己也存储

GET

  1. X=SHA256(/ipns/H)做一次查询,得到最近的K个节点
  2. 询问每个节点,它所知道的离X最近的K个对等节点
  3. 如果节点有该条记录,直接返回X对应的记录
  4. 注意的是:如果我们接收到了一个更高IPNS序号,需要更新改记录,直到查询结束
  5. 当查询结束时,如果离X最近的K个对等节点没有最新的IPNS记录,需要向它们发送最新的记录

节点记录

对于节点的ID(公钥的哈希)为H来说:
PUT
当libp2p对等节点连接时,他们会自动交换节点信息。作为DHT的一部分,无论是客户端还是服务器,都需要与自己的K个最接近的对等节点频繁联系;因此,他们最终会得到你的对等节点记录peer record。

GET

  1. X=SHA256(/ipns/H)做一次查询,得到最近的K个节点
  2. 询问每个节点,它所知道的离X最近的K个对等节点
  3. 如果节点有该条记录,直接返回X对应的记录
    IPFS一旦得知ID为H的对等节点的地址,就会尝试连接到它。如果我们最终连接到了该节点,查找就会提前结束。

标签:记录,查询,最近,P2P,节点,IPNS,SHA256,共享
来源: https://www.cnblogs.com/Nilx/p/15383233.html