概述
星际文件系统(InterPlanetary File System,缩写ipfs)是一个旨在创建持久且分布式存储和共享文件的网络传输协议。它是一种内容可寻址的对等超媒体分发协议。在IPFS网络中的节点将构成一个分布式文件系统。它是一个开放源代码项目,自2014年开始由Protocol Labs在开源社区的帮助下发展。其**初由Juan Benet设计。
开发者
Protocol Labs
稳定版本
0.4.13 (2017年11月16日,6个月前 )
开发状态
活跃
编程语言
协议实现:Go(参考实现)、JavaScript、C语言, Python
客户端库:Go、Java、JavaScript、Python、Scala、Haskell、Swift、Common Lisp、Rust、Ruby、PHP、C#、Erlang
操作系统
FreeBSD、Linux、macOS、Windows
语言
Go、JavaScript、Python
类型
协议、分布式文件系统、内容分发网络
历史
在2014年,IPFS协议利用比特币区块链协议和网络基础设施的优势来存储不可更改的数据,移除网络上的重复文件,以及获取存储节点的地址信息——用以搜索网络中的文件。
目前的实现采用Go和JavaScript,并有Python的实现正在发展。Go实现被认为是开发正式规范时的“参考实现”
描述
IPFS是一个对等的分布式文件系统,它尝试为所有计算设备连接同一个文件系统。在某些方面,IPFS类似于万维网,但它也可以被视作一个独立的BitTorrent群、在同一个Git仓库中交换对象。换种说法,IPFS提供了一个高吞吐量、按内容寻址的块存储模型,及与内容相关超链接。这形成了一个广义的Merkle有向无环图(DAG)。IPFS结合了分布式散列表、鼓励块交换和一个自我认证的名字空间。IPFS没有单点故障,并且节点不需要相互信任。分布式内容传递可以节约带宽,和防止HTTP方案可能遇到的DDoS攻击。
该文件系统可以通过多种方式访问,包括FUSE与HTTP。将本地文件添加到IPFS文件系统可使其面向全世界可用。文件表示基于其哈希,因此有利于缓存。文件的分发采用一个基于BitTorrent的协议。其他查看内容的用户也有助于将内容提供给网络上的其他人。IPFS有一个称为IPNS的名称服务,它是一个基于PKI的全局名字空间,用于构筑信任链,这与其他NS兼容,并可以映射DNS、.onion、.bit等到IPNS。
Merkle数据格式
每个Merkle都是一个有向无环图 ,因为每个节点都通过其名称访问。每个Merkle分支都是其本地内容的哈希,它们的子节点使用它们的哈希而非完整内容来命名。因此,在创建后将不能编辑节点。这可以防止循环(假设没有哈希碰撞),因为无法将**个创建的节点链接到**后一个节点从而创建**后一个引用。
对任何Merkle来说,要创建一个新的分支或验证现有分支,通常需要在本地内容的某些组合体(例如列表的子哈希和其他字节)上使用一种哈希算法。IPFS中有多种散列算法可用。
1、下载IPFS
打开官网https://ipfs.io/ ,点击【Try it】
点击 【Install IPFS now】
点击【Download go-ipfs】, 下载对应版本的IPFS安装文件
或(链接:https://pan.baidu.com/s/1ODX15GNQKxKyKdmpQs9oWw 提取码:7Jda 复制这段内容后打开百度网盘手机App,操作更方便哦)下载完之后,将文件解压到你想要存放的目录,如:E:\Workplace\BlockChain\go-ipfs
2、安装IPFS
打开CMD,进入ipfs文件目录
E:
cd E:\Workplace\BlockChain\go-ipfs
输入 dir 查看目录信息,然后输入ipfs init 开始初始化 ipfs网络环境,并且系统会分配一个属于你自己的IPFS网络哈希值(类似你在IPFS网络中的一张身份证ID)。有了这个ID,别人就可以访问到你的节点
~>dir // 查看目录信息
~>ipfs init // 初始化 ipfs网络环境
输入上面获取的内容 ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme,
出现 Hello and Welcome to IPFS!
那恭喜你!说明你的电脑已经成功安装IPFS并已经加入到IPFS网络了。
3、IPFS环境配置
IPFS安装的默认配置将存放到你的用户文件夹根目录下(C:\Users\abc\.ipfs)文件夹名.ipfs,接下来打开config,里面的是ipfs的一些基础配置数据,可以根据自己的需求修改里面的配置
配置修改请参考官网文档
4、运行测试
输入 ipfs daemon 启动IPFS服务监听,目的是用于监听IPFS网络通信数据,使用的监听端口是5001。注意要并保持开启状态,才能守护监听的进程
另开一个cmd,同样进入ipfs目录,试着执行一些基础命令
输入 ipfs help,获取一些常用的命令
输入 ipfs id,可以查看你的通信ID信息
除ipfs外,类似的还有tcfs(有点小复杂即有一定的安全机制)。
迅雷链文件系统文档(对比参考下哈)
1. 文档说明
1.1 阅读对象
本文档适用于有高安全性、高隐私性、知识产权等数据存储、分发、商业化等需求的企业和个人。通过本文档,指导开发者使用迅雷链文件系统,进行数据的上传、下载、复制、删除、授权等行为,并基于此文档进行二次开发,使产品具备大数据分布式存储与信息上链等特性,让产品快速集成海量存储、不可篡改、可追溯、永不丢失、安全加密、授权转移等能力。
1.2 版本说明
v2.9(2018/8/13)
2. 专业术语
2.1 迅雷链文件系统
迅雷链文件系统(简称TCFS,全称为ThunderChain File System)是迅雷在百万级共享计算节点的基础上,使用独创的分布式技术专为区块链打造的数据云存储与授权分发的开放式文件系统。开发者可使自己的产品具备文件数据分布式存储与信息上链等特性,从而快速集成公开透明、不可篡改、可追溯、高可靠、安全加密、海量存储、授权转移等能力。
主要有四个特性:
公开透明:数据使用安全加密哈希索引,修改后的文件是新的哈希,确保数据无法被篡改;基于merkle DAG结构独创的文件管理技术,保留文件的全部变更历史,公开可查询和追溯。
高安全性:数据使用安全切片存储,使用公私钥签名技术验证用户和文件的持有关系。独创的令牌授权机制,仅有授权的用户才可以访问数据。
高可靠性:数据使用FEC(前向纠删码)编码后,冗余存储在各个共享计算节点上,在系统级别采用了文件自动修复机制,数据具有超过15个9的可靠性。使用智能合约实现存储激励机制,确保参与节点稳定,使文件存储具有更高的可靠性。
海量数据存储:文件数据分布式存储在百万级的共享计算节点上,拥有高达数百PB且不断扩展的存储空间,可存储数百亿的文件量,充分满足业务需求。
3. 专业术语
3.1 APP ID
APP ID指开发者在开放平台注册时生成的用于标名所属应用的编号。
3.2 APP Key
APP Key指开发者APP ID对应的加密key,作为APP ID的令牌,不可外露。
3.3 Public Key/Private Key/Address
公钥(Public Key)与私钥(PrivateKey)是通过非对称加密算法得到的一个密钥对(即一个公钥和一个私钥)。地址(Address)是由公钥经过单向的加密哈希算法计算得到的编码值。在系统中,Address是用来标识用户, 标识文件的拥有者信息。Public Key/Private Key/Address是以keyjson的格式存储,生成方法见6.6.2节。
3.4 签名Sign
迅雷链文件系统所有的接口均需要用户对接口参数进行签名,用于验证Address身份是否合法。签名一般有以下几种获取方式:
调用链克口袋进行签名
通过服务器SDK进行签名
签名函数进行签名
3.5 TCFS Path
TCFS Path是基于授权的内容寻址规范,是将用户授权与merkle DAG目录结构结合的一种路径形式,格式定义如下: /tcfs/[owner]:[visitor]:[ts]:[sign]:[pathlength]/[newest/hash]/[path]/[filename]
注意:APPID/APPKey的验证逻辑在迅雷链文件系统的所有接口中均需要使用,key_md5的md5计算方式为: md5(APPID+APPKey+ts)。迅雷链文件系统要求ts的有效期不超过10分钟,如果迅雷链文件系统时间超过key_md5计算时间10分钟,则验证不通过。
使用截图如下: