IPFS(星际文件系统),是一个分布式文件系统协议。IPFS协议定义了文件在分布式系统中如何存储、索引、传输。IPFS的目标是通过一个文件系统将网络中的所有的设备连接在起来
简介基于内容寻址,而非基于域名寻址。文件具有唯一存在的唯一性,一个文件加入到IPFS的网络,基于计算对内容赋予一个唯一加密的哈希值。
提供文件的历史版本控制器(如git),并且让多个节点使用保存不同版本的文件;
IPFS的网络运行着一条区块链,即用来存储互联网文件的哈希值表,每次有网络访问,即要在链上查询该内容(文件)的地址;
通过使用代币(FileCoin)的激励作用,让各节点有动力去存储数据。FileCoin是一个由加密货币驱动的存储网络。矿工通过为网络提供开放的硬盘空间获得FileCoin,而用户则用FileCoin来支付在去中心化网络中存储加密文件的费用。
工作机制IPFS为每一个文件分配一个独一无二的hash值,这个方式使得IPFS可以支持基于文件内容寻址。IPFS在整个网络范围内去掉重复的文件,并且为每一个文件建立版本管理。
当查询文件的时候,IPFS网络根据文件的hash值进行查找。为了让用户更好的记文件存放的hash,IPFS利用IPNS将hash值映射一个比较容易记忆的IPNS名字,每个节点除了存储自己需要的数据,还需要存储一张hash表,用来记录文件存储的位置,进行文件的查询下载。
实验操作 IPFS环境搭建Ubuntu 18.04.5 LTS 在此平台开发用正常步骤 之后演示是在win10平台
sudo apt-get update 更新一下软件列表
还需安装golang sudo apt-get install golang-go -y,安装过的可以忽略
下载IPFSwget https://gitee.com/plusz/go-ipfs.git 这里用gitee同步的github镜像
或者直接 git clone https://gitee.com/plusz/go-ipfs.git
WINDOWS平台下载地址: (选windows binary,需要梯子)
配置环境变量将解压的路劲添加到PATH环境变量,不加也行
在解压路径下ipfs version 查看版本
初始化本地仓库和git类似,ipfs节点也需要先初始化一个本地仓库
执行 ipfs init
此处的peer identity 即是属于自身的IPFS网络哈希值,相当于ID,通过ID可以访问到节点
安装输入上面最后一行的内容
出现这个即为安装成功
ipfs安装的默认配置IPFS安装后的配置放在系统用户文件夹目录下C:\Users\xxxx.ipfs , xxxx 为pc名,config为配置信息,可以按需修改,这里暂时不修改
运行 1. 输入 ipfs daemon 启动IPFS服务监听目的是用于监听IPFS网络通信数据,使用的监听端口是5001。注意要并保持开启状态,才能守护监听的进程。
2. IPFS的基础命令通过ipfs help可以查看一些基础命令
基本命令: init ——初始化IPFS本地配置 Add ——添加一个文件到IPFS cat —— 展示IPFS对象数据 get —— 下载IPFS对象 ls —— 从一个对象中列出链接 refs —— 从一个对象中列出链接哈希 数据结构命令: block —— 与数据存储中的原始块交互 object —— 与原始DAG节点交互 高级命令: daemon —— 开启一个开始运行的后台进程 mount —— 挂载一个IPFS只读的挂载点 name —— 发布并解析IPFS名字 key —— 创建并列出IPFS名字密钥对 pin —— 将对象锁定到本地存储 网络命令: id —— 展示IPFS节点信息 bootstrap —— 添加或删除引导文件 swarm —— 管理p2p网络连接 工具命令: config —— 管理配置 version —— 展示IPFS版本信息 update —— 下载并应用go-ipfs更新 commands —— 列出所有可用命令此时我们通过ipfs id 可以查看属于自己的通信ID信息