了解ipfs
IPFS 是什么
IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。
内容可寻址:通过文件内容生成唯一哈希值来标识文件,而不是通过文件保存位置来标识。相同内容的文件在系统中只会存在一份,节约存储空间
版本化:可追溯文件修改历史
点对点超媒体:P2P 保存各种各样类型的数据
IPFS采用的索引结构是DHT(分布式哈希表),数据结构是Merkle DAG(Merkle 有向无环图)
- 把单个文件拆分成若干个256KB大小的块( block,这个就可以理解成扇区 );
- 逐块(block)计算block hash,hashn = hash ( blockn );
- 把所有的block hash拼凑成一个数组,再计算一次hash,便得到了文件最终的hash,hash ( file ) = hash ( hash1……n ),并将这个 hash(file) 和block hash数组“捆绑”起来,组成一个对象,把这个对象当做一个索引结构;
- 把block、索引结构全部上传给IPFS节点(这里先不介绍细节),文件便同步到了IPFS网络了;
- 把 Hash(file)打印出来,读的时候用;
小文件(小于 1KB) 的文件,IPFS会把数据内容直接和Hash(索引)放在一起上传给IPFS节点,不会再额外的占用一个block的大小。
IPFS 使用场景
IPFS 的发明者 Juan Benet(juan@benet.ai)在 IPFS 技术白皮书中假设了一些使用场景:
在 /ipfs 和 /ipns 下挂载全球文件系统
挂载的个人同步文件夹,拥有版本功能
文件加密,数据共享系统
可用于所有软件的带版本的包管理器(已经实现了:https://github.com/whyrusleeping/gx)
可以作为虚机的根文件系统
可以作为数据库:应用可以直接操作 Merkle DAG,拥有 IPFS 提供的版本化、缓存以及分布式特性
可以做(加密)通讯平台
各种类型的 CDN
永久的 Web,不存在不能访问的链接
使用
查看自己的 id 信息
ipfs id
启动后台进程
ipfs daemon
使用 web ui
浏览器访问 http://localhost:5001/webui 进入管理界面,查看系统状态、管理文件以及配置系统。
查看目录信息
ipfs files ls /
使用 IPFS 网关访问资源
使用 IPFS Gateway 访问
https://ipfs.io/ipfs/YOUT-PATH