作者:杨尉(waynewyang),转载请注明出处
此资源库编写于2018年9月-10月,开源于2019年5月。
- IPFS协议总览
- 基础
- IPFS协议分析
- 协议层分析
- network, routing, exchange, merkledag, naming
- IPFS应用层数据结构
- unixfs
- debug方法
- 协议层分析
- IPFS API
- 对外接口
- IPFS主要API概要分析
- init、daemon、add、get、cancel
- 应用
-
定义
白皮书:IPFS是一种内容可寻址、版本化、点对点超媒体的分布式文件系统
官网:IPFS是分布式Web,一种点对点超媒体协议,使网络更快,更安全,更开放。
-
参考技术
- ice协议——网络连通性
解释:解决peers之间的连通性
- DHT技术,KAD、coral算法——分布式路由
解释:解决peers之间的路由、内容路由(内容寻址)、以及分布式哈希key-value存储
重要特征:内容寻址、或者说哈希寻址
- bt——交换技术
解释:解决peers之间的内容交换
重要特征:P2P分布式、更快、更开放
- git——数据结构
解释:MerkleDAG借鉴git的数据存储方式,解决数据的防篡改、去重
重要特征:防篡改、去重
- sfs——命名系统
解决哈希难以记忆、以及由于DAG特性导致的动态数据变更导致的更新成本问题
重要特征:版本化(通过ipns的发布记录)、ipns解析(人类更容易识别操作)、dns解析
- unixfs系统
特征:unixfs挂载特性,挂载的ipfs类似一个文件系统,可以使用unix方式访问全球哈希。
第一步:在PEER A上,在IPFS添加another.txt文件
D:\go-ipfs>ipfs add another.txt
29 B / 29 B [===================================================
added QmamQ2prV7FTfFm1eJc5o6QRA2BAkUJAbc5JCrLpu9dY2z another.txt
第二步:在peer B上,挂载ipfs文件系统(全球性的),直接通过unix的方式,cat第一步的哈希,可以查询到文件内容
wayne@wayne:~$ ipfs mount
IPFS mounted at: /ipfs
IPNS mounted at: /ipns
wayne@wayne:~/go/src$ cat /ipfs/QmamQ2prV7FTfFm1eJc5o6QRA2BAkUJAbc5JCrLpu9dY2z
"This is new another file"
- [IPFS项目进度]
- pm记录
- - 规范制定中,不成熟。
- - 草稿完成,很有可能做较大变更。
- -接近稳定,只会做较小变更。
- - 规范稳定,本质不变,可能做小的改善。
- - 完全稳定,永久不变。
- 协议总览
- MerkleDAG vs IP 瘦腰图
- ipfs通过MerkleDAG访问资源、http通过IP访问资源
- 向下提供支撑,向上提供应用
- MerkleDAG vs IP 瘦腰图
-
基于multiaddr的一些支撑包(网络层)
-
repo
-
其他
-
block exchange
-
merkledag
- DAG的相关的数据结构
cid -> block -> node(dag)
link -> node(dag)
-
- mount
- 挂载在unix文件系统之上进行操作
- mount 示例
- files(mfs)参考
- 其他
- 源码分析
- mount
ipfs log tail
-
[Paratii - 分布式策展协议和流媒体引擎](Paratii - 分布式策展协议和流媒体引擎)
-
文章