当前位置:首页 > 知识 >

IPFS入门简介

  • IPFS
  • 2023-06-29 06:10:36
  • 14
摘要:精通IPFS系列之一:IPFS入门简介,包括IPFS是什么、MerkleDAG、节点和网络模型,以及协义栈。

1、IPFS是什么 IPFS是一个可快速索引的版本化的点对点文件系统。它是一个协议,定义了基于内容的寻址文件系统,结合了分布式哈希、p2p传输和版本管理系统。IPFS是一个可以挂载文件夹和文件的文件系统(通过FUSE)。它可以像web那样通过https://ipfs.io/访问文件浏览器或扩展,也可以直接支持ipfs:/或dweb:/ipfs/。IPFS使用哈希来保证内容的真实性。它是一个模块化的文件系统,可以通过任何网络协议连接,具有路由层和基于路径的命名服务,以及类似bittorrent的区块交换。IPFS还提供加密哈希内容寻址、区块级的去重、文件完整性和版本控制,以及文件系统级的加密和签名支持。IPFS是一个全球范围内的p2p文件传输网络,具有完全分散的架构,没有单点失效问题。它天生就是一个CDN,可以将文件添加到本地文件系统,并在全世界范围内进行缓存。基于bittorrent的带宽管理也是IPFS的特点。IPFS还有一个命名服务IPNS,它是受SFS启发的名称系统,基于PKI的全局命名空间,可以与其他命名系统兼容,可以将DNS、.onion、.bit等映射到IPNS。

2、MerkleDAG IPFS的核心是MerkleDAG,它是一个有向无环图,其中的链接使用哈希进行编码。MerkleDAG为IPFS中的所有对象提供了有用的属性,包括认证和持久化。任何数据结构都可以表示为merkledag,分布式对象可以由任何人创建,没有集中的编写者。

3、节点和网络模型 IPFS网络使用基于身份的PKI。IPFS节点是可以查找、发布和复制merkledag对象的程序。每个节点都有一个私钥来定义其身份,并且具有一个与公钥相关的nodeID。

3.1、multihash和可升级的哈希 IPFS中的所有哈希都使用multihash进行编码,它是一种自描述哈希格式。实际使用的哈希函数取决于安全性要求。IPFS的密码系统是可升级的,当哈希函数被破坏时,网络可以迁移到更强的哈希值。目前,IPFS节点必须支持sha2-256、sha2-512和sha3。

4、协义栈 IPFS具有一个模块化的协义栈,其中每个模块都有多种实现,分布在不同的层中。本规范仅解决了层与层之间的接口,并简要提及可能的实现。详细信息留待其他规格。IPFS的协义栈包括5个层:命名、自我认证的PKI命名空间(IPNS)、merkledag数据结构、格式交换、区块传输和复制、路由定位、对等体和对象网络之间的连接。

4.1、网络层 网络层提供了点对点传输功能,负责在任何两个IPFS节点之间进行通信。它处理NAT遍历、多种传输支持、加密、签名或清除通信以及多路复用。具体实现可以参考libp2p。

4.2、路由 路由层有两个重要的目标:节点路由用于发现其他节点,内容路由用于发现发布到IPFS上的数据。路由系统是一种满足各种实现的接口,包括DHT、smdns、snr和dns等。具体实现可以参考libp2p。

4.3、区块交换 区块交换负责协商批量数据传输。一旦节点之间相互了解并建立连接,交换协议就会控制内容寻址块的传输方式。区块交换也是一种满足各种实现的接口,例如Bitswap和HTTP。

4.4、Merkledag Merkledag是用于理解数据的数据结构,其中包括MDagLink和MDagNode。MDagLink用于表示对象之间的链接,MDagNode包含了对象的数据。具体实现可以参考merkledag规范和路径解析规范。

4.5、命名-PKI命名空间和可变指针 IPFS的命名层(或IPNS)处理创建可变指向对象的指针和人类可读的名称。IPNS基于SFS,并且是一个PKI命名空间,名称只是公钥的哈希。控制私钥的人控制名称。记录由私钥签名并分布在IPFS的路由系统中。IPNS是一种在互联网上分配可变名称的平等主义方式,没有任何集中化或证书颁发机构。具体参考命名规范。

(原文链接:[IPFS - A Peer-to-Peer File System](https://github.com/ipfs/ipfs))

猜你喜欢

微信二维码

微信