精通IPFS之一:IPFS入门简介

乔疯
个人专栏
热度: 12918

精通IPFS之入门简介,包括IPFS是什么、Merkle DAG、节点和网络模型、协义栈。

1、IPFS 是什么

IPFS 是一个可快速索引的版本化的点对点文件系统。

1.  IPFS是一个协议

l  定义了基于内容的寻址文件系统

l  协助内容分发

l  结合了分布式哈希、p2p传输、版本管理系统

2. IPFS是一个文件系统

l  有文件夹和文件

l  可挂载文件系统(通过 FUSE)

3. IPFS是一个web

l  可以像 web 那样查看文档

l  可能通过 https://ipfs.io/<path> 访问文件

l  浏览器或扩展可以直接支持 ipfs:/ 或者 dweb:/ipfs/

l  基于哈希确保内容真实性

4. IPFS是个模块化

l  通过任何网络协议的连接层

l  路由层,寻找/定位文件所在位置

l  使用路由层的 DHT(kademlia/coral)

l  使用基于路径的命名服务

l  使用bittorrent-inspired 的区块交换

5.  IPFS 使用加密

l  加密哈希内容寻址

l  区块级的去重

l  文件完整性和版本控制

l  文件系统级的加密和签名支持

6.  IPFS是一个p2p系统

l  世界范围内的 p2p 文件传输网络

l  完全分散的架构

l  没有单点失效问题

7.  IPFS天生是一个CDN

l  文件添加到本地文件系统,将会在全世界可用

l  缓存友好(内容哈希命名)

l  基于 bittorrent 的带宽管理

8.  IPFS有一个命名服务

l  IPNS,一个受SFS启发的名称系统

l  基于PKI的全局命名空间

l  有助于建立信任链

l  与其他NSes兼容

l  可以将DNS,.onion,.bit等映射到IPNS

2、Merkle DAG

IPFS 的核心是MerkleDAG,一个有向无环图,其链接是哈希。这为 IPFS 中的所有对象提供了有用的属性:

·          认证可以对内容进行哈希处理并根据链接进行验证

·          持久化一旦获取,对象可以永久缓存

·          通用任何数据结构都可以表示为merkledag

·          分布式对象可以由任何人创建,没有集中的编写者

IPFS 是一个网络协义栈,用于组织代理网络以创建,发布,分发,提供和下载merkledag。它是经过身份验证的,分散的,永久性的网络。

3、节点和网络模型

IPFS网络使用基于身份的 PKI。 IPFS 节点是一个可以查找、发布和复制 merkledag 对象的程序。其身份由私钥定义。特别:

privateKey, publicKey := keygen()
nodeID := multihash(publicKey)

3.1、multihash和可升级的哈希

IPFS 中的所有哈希都使用 multihash 进行编码,multihash 是一种自描述哈希格式。使用的实际哈希函数取决于安全性要求。IPFS的密码系统是可升级的,这意味着当哈希函数被破坏时,网络可以转移到更强的哈希值。

目前 IPFS 节点必须支持:

·          sha2-256

·          sha2-512

·          sha3

4、协义栈

IPFS 有一个模块化的协义栈,每一个模块都有多种实现,全部在不同的模块中。此规范仅解决层之间的接口,并简要提及可能的实现。详细信息留待其他规格。

IPFS 有5层:

1.  命名自我认证的PKI命名空间(IPNS)

2.  merkledag数据结构格式

3.  交换区块传输和复制

4.  路由定位对等体和对象

5.  网络在对等体之间建立连接

入门简介

4.1 网络层

网络层在网络中的任何两个 IPFS 节点之间提供点对点传输。 它处理:

·          NAT遍历

·          支持多种传输

·          支持加密,签名或清除通信

·          多路复用

具体参考 libp2p。

4.2、路由

路由层有两个重要的目标:

1.  节点路由发现其他的节点

2.  内容路由发现发布到 IPFS 上的数据

路由系统是一种满足各种实现的接口。 例如:

·          DHTs

·          mdns

·          snr

·          dns

具体参考 libp2p。

4.3、区块交换

区块交换负责协商批量数据传输。 一旦节点彼此了解,并且连接,交换协议就会控制内容寻址块的传输方式。

区块交换是一种满足各种实现的接口。 例如:

·          Bitswap

·          HTTP

4.4、Merkledag

理解数据。merkledag 数据结构是:

message MDagLink {
  bytes Hash = 1;    // multihash of the target object
  string Name = 2;   // utf string name. should be unique per object
  uint64 Tsize = 3;  // cumulative size of target object
}

message MDagNode {

 MDagLink Links = 2;  // refs toother objects

 bytes Data = 1;      // opaqueuser data

}

参考 merkledag 规范和路径解析规范。

4.5、命名-PKI命名空间和可变指针

IPFS 主要关注内容寻址数据,这些数据本质上是不可变的:更改对象会改变其哈希值,从而改变其地址,使其成为一个完全不同的对象。(将其视为写时复制文件系统)。

IPFS命名层(或 IPNS )处理以下内容的创建:

·          可变指向对象的指针

·          人类可读的名字

IPNS基于SFS。 它是PKI命名空间,名称只是公钥的哈希。 控制私钥的人控制名称。记录由私钥签名并分布在任何地方(在 IPFS 中,通过路由系统)。这是一种在互联网上分配可变名称的平等主义方式,没有任何集中化或证书颁发机构。

参考命名规范。

 

作者:乔疯,加密货币爱好者,ipfs 爱好者,黑萤科技CTO。

声明:本文为入驻“火星财经 专栏”作者作品,不代表火星财经官方立场。
转载请联系网页底部:内容合作栏目,邮件进行授权。授权后转载时请注明出处、作者和本文链接。未经许可擅自转载本站文章,将追究相关法律责任,侵权必究。
提示:投资有风险,入市须谨慎,本资讯不作为投资理财建议。
本内容旨在传递行业动态,不构成投资建议或承诺。