读书笔记N231:知乎上Ipfs学习笔记二

299 字

读书笔记N231:知乎上IPFS学习笔记二

本笔记内容主要采自知乎以下专栏
https://www.zhihu.com/people/flytofuture/posts
飞向未来(董天一)

互联网是建立在HTTP协议上的. HTTP协议是个伟大的发明, 让我们的互联网得以快速发展.但是互联网发展到了今天HTTP逐渐出来了不足:HTTP的中心化是低效的, 并且成本很高;Web文件经常被删除;中心化限制了web的成长;互联网应用高度依赖主干网

IPFS是一个协议,类似http协议:
定义了基于内容的寻址文件系统;
内容分发;
使用的技术分布式哈希、p2p传输、版本管理系统

IPFS是一个文件系统:
有文件夹和文件;
可挂载文件系统

IPFS是一个web协议:
可以像http那样查看互联网页面;
未来浏览器可以直接支持 ipfs:/ 或者 fs:/ 协议

IPFS是模块化的协议:
连接层:通过其他任何网络协议连接;
路由层:寻找定位文件所在位置;
数据块交换:采用BitTorrent技术

IPFS是一个p2p系统:
世界范围内的p2p文件传输网络;
分布式网络结构;
没有单点失效问题

IPFS天生是一个CDN:
文件添加到IPFS网络,将会在全世界进行CDN加速;
bittorrent的带宽管理

IPFS拥有命名服务:
IPNS:基于SFS(自认证系统)命名体系;
可以和现有域名系统绑定

IPFS是如何工作的?
IPFS为每一个文件分配一个独一无二的哈希值(文件指纹: 根据文件的内容进行创建), 即使是两个文件内容只有1个比特的不相同, 其哈希值也是不相同的.所以IPFS是基于文件内容进行寻址, 而不像传统的HTTP协议一样基于域名寻址.
IPFS在整个网络范围内去掉重复的文件, 并且为文件建立版本管理, 也就是说每一个文件的变更历史都将被记录(这一点类似版本控制工具git, svn等), 可以很容易个回到文件的历史版本查看数据.
当查询文件的时候, IPFS网络根据文件的哈希值(全网唯一)进行查找. 由于每个文件的哈希值全网唯一, 查询将很容易进行.
如果仅仅使用哈希值来区分文件的话, 会给传播造成困难, 因为哈希值不容易记忆, 就像ip地址一样不容易记忆, 于是人类发明的域名. IPFS利用IPNS将哈希值映射为容易记的名字
每个节点除了存储自己需要的数据, 还存储了一张哈希表, 用来记录文件存储所在的位置. 用来进行文件的查询下载.

IPFS都可以用来干啥:
在 /ipfs 和 /ipns 下面挂载全球文件系统:就是说我们所有的文件都可以存到上面.
挂载个人同步的文件夹, 可以自动进行版本管理, 自动备份. 也就意味着未来我们将拥有无限空间的网盘, 不用担心数据丢失, 不用担心隐私泄露(非对称加密).
作为加密文件和数据共享系统。IPFS天生视乎就具备这样的能力, 文件加密, 数据共享, 都是小菜一碟.
作为带版本控制的软件包管理系统.
作为虚拟机的根文件系统;
作为利用管理程序, 把IPFS作为虚拟机的引导文件系统:在线操作系统;
作为数据库:应用可以直接操作IPFS的Merkle DAG数据结构, 并且可以使用IPFS的版本控制, 缓存. 试想一下我们的数据库直接存在IPFS的文件系统是什么体验? 自动备份, 永不丢失, 安全加密, 无限空间, 高速连接, 想想就美好. 科技改变生活, 未来会有多美好....
作为加密通讯平台,谁都别想窃听消息通信了;
作为加密CDN, 作为web的CDN, CDN功能全包了.
永久web, 不存在不能访问的链接, 跟 404 说 byebye.

共享经济从人类诞生就开始了:
国家就是一个最大的共享体, 我们要共享国防, 共享安全,共享一切。。。
城市是组成国家的共享体单位, 你的生存, 你的工作,无不是共享, 你乘坐的地铁,飞机,公交。你使用的自来水,电力等等, 哪一样不是共享的呢;
IPFS和filecoin的诞生极大提高了我们数据存储的共享,这就是价值。

BTC的价值如何确定:
1 用马克思经济学来解释BTC的价值是耗费的能源+计算成本+无差别的人类劳动;
2 用西方经济学来解释:BTC的价值是供需平衡;
3 用时下互联网流行说法解释是:IP。BTC创造了自己的IP,就像黄金一样。一个巨大的IP。

IPFS上已经出现了哪些应用?
akasha: 基于以太坊和IPFS的社交网络;
Alexandria:去中心化的内容发布平台;
Arbore:朋友之间的文件共享系统--相信很快就可以抛弃某度的云盘了;
dtube:利用IPFS作为存储的视频分享网站;
git-ipfs-rehost:可以把github上的项目存储到IPFS上;
Interplanetary Wiki:建立在IPFS上的wiki(土耳其封锁了wiki,借助于IPFS,现在已经恢复了访问);
ipfs-search:基于IFPS的搜索引擎;
ipfs-share:基于IFPS的文件分享;
ipfs.pics:基于IFPS的图片分享网站;
Orbit:基于IFPS的分布式聊天工具;
Partyshare:一个简单的文件共享系统;
http://computes.io:基于IPFS的分布式计算机(这个牛,把世界上的计算资源收集起来,构建一个巨大的分布式计算机);
OpenBazaar:openbazaar是一个去中心化的淘宝,口号是“买卖自由/Buy and Sell Freely”,问题是一旦用户停止运行软件,商店就下线了,借助于IPFS,openbazaar2.0 打造一个离线商店。
Ubuntu:著名的linux发行版本Ubuntu正在计算把发行版本转移到IPFS上来,目前正在讨论方案。

Storj是一个区中心化的云存储平台,跟百度云盘一样的服务,业务流程是,用户从Storj处付费租用空间,矿工共享自己的磁盘获取代币。Storj的挖矿软件(GUI界面)做的不错,设置比较简单。下载软件,一步步跟Next就可以完成,中间需要输入自己的代币获取地址,由于Storj使用的ERC20协议,代币地址使用自己的以太坊地址就可以了。

Sia跟 Storj非常像,也是一个去中心化的云存储平台,文件被切成小块,加密存储到分布式的网络里面。Sia使用的GPU挖矿,如果要参与就需要买显卡了。Sia挖矿跟BTC一样需要加入矿池,挖矿设置也比较复杂。Sia的挖矿和共享硬盘是分开的(这一点跟Storj不一样),如果参与Sia的硬盘共享,只需要下载钱包,在里面简设置一下就可以了。

https://zhuanlan.zhihu.com/p/32711805 IPFS的竞争对手们(一)
https://zhuanlan.zhihu.com/p/32733211 IPFS和竞争对手们(二)

Burst作为第一个使用容量证明(Proof-of-capacity)的项目还是具有很大的进步意义的。按官方的说法是挖矿很简单,只需要下载AIO client就可以了,项目地址:https://github.com/burst-team/burstcoin/graphs/contributors,根据官网介绍,挖矿很简单,只需要按照说明可以了。

Genaro号称是第一个具有图灵完备公有链的分布式存储区网络,图灵完备的意思就是:可以实现图灵机,解决所有可计算问题。Genaro网络 = 公有链+去中心化存储;
去中心化的存储网络共识机制:SPoR (Sentinel Proof of Retrievability);
公有链共识机制:权益证明 proof of stake(跟以太坊一样);

MaidSafe,官网地址:https://maidsafe.net/,项目源代码主页:https://github.com/maidsafe-archive,共识机制:资源证明(Proof of Resouce),资源包括,CPU,存储,带宽,在线时长

Filecoin涉及到的证明概念:
数据持有性证明(Provable Data Possession ,PDP):用户发送数据给矿工进行存储,矿工证明数据已经被自己存储,用户可以重复检查矿工是否还在存储自己的数据;
可检索证明(Proof-of-Retrievability,PoRet):和PDP过程比较类似,证明矿工存储的数据是可以用来查询的。
存储证明(Proof-of-Storage ,PoS):利用存储空间进行的证明。工作量证明的一种,Filecoin上一篇论文使用了这个名字,新的论文则升级为PoRep;

复制证明(Proof-of-Replication,PoRep):新的 PoS(Proof-of-Storage),PoRep可以保证每份数据的存储都是独立的,可以防止女巫攻击,外源攻击和生成攻击;
工作量证明(Proof-of-Work,PoW):证明者向检验者证明自己花费了一定的资源,PoW被用在加密货币,拜占庭共识和其他各种区块链系统。BTC使用的就是这种类型的证明,依赖巨量的哈希计算和能源消耗来建立共识和保证btc网络的安全性;
空间证明(Proof-of-Space,PoSpace):Filecoin提出的概念,存储量的证明,PoSpace是PoW的一种,不同的是PoW使用的计算资源,而PoSpace使用的是存储资源;
时空证明(Proof-of-Spacetime,PoSt):时空证明,矿工证明自己花费了spacetime资源, 即:一定时间内的存储空间的使用,PoSt是基于PoReps实现的;
复制证明(Proof of Replication,PoRep):PoRep 是PoS的进化版:用来证明 数据(data)已经被矿工存储。

把ipfs和filecoin放在一起,事情变得奇妙起来:filecoin是运行在ipfs上面的一个激励层。ipfs有巨大存储需求和节点需求,我们都知道p2p网络节点越多下载越快,如果没有激励机制,谁愿意贡献如此多的节点和存储呢,于是filecoin来了。filecoin可以为ipfs贡献很多很多节点,同时filecoin带着一个巨大的分布式存储空间,同时解决了ipfs的存储问题。于是ipfs跟http对比拥有了更强的优势。filecoin代币的作用:filecoin协议的代币也叫filecoin ( 说filecoin的时候可能说的filecoin网络, 也可能说的是 filecoin代币 ) ,符号FIL,代币是沟通资源使用者(用户)和资源提供者(矿工)的中介桥梁,filecoin协议拥有两个交易市场,数据检索和数据存储,双方在市场里面提交自己的需求,达成交易。filecoin和ipfs相互促进

ipfs协议也没有发明什么,大多数工作是在前人已有的基础进行的,ipfs集成了如下已有的系统:
DHT(distributed hash tables):分布式哈希表;
Git:版本管理工具;
BitTorrent:数据交换协议;
SFS(self-certified filesystems):自认证文件系统

Filecoin包含什么?
1 blockchain,区块链; 跟其它区块链项目一样,这是filecoin的基础,一切都是围绕block和chain进行的。
2 交易市场; filecoin拥有两个交易市场,检索市场和存储市场,矿工和用户在这两市场里面达成交易,实现价值交换。
3 共识机制; 有交易和区块链必然要有谁记账的问题,filecoin也一样,必然要解决的一个问题是,共识机制。
4 智能合约; filecoin采用了两个基本的api供用户使用,数据存储put,数据获取get,在这两种操作的基础上filecoin支持文件合约(File Contracts),让用户可以有更精细化的控制。
filecoin开发了桥(Bridge)工具,它可以链接不同的区块链

IPFS在BitTorrent的基础上实现了p2p数据交换协议:BitSwap协议; BitSwap协议必须能够激励节点去乐于分享数据,即使这个节点暂时没有数据需求。IPFS根据节点的之间的数据收发建立了一个信用体系:有借有还,再借不难。

BitSwap可以采取不同的策略来实现,每一种策略都会对系统的整体性能产生不同的影响。策略的目标是:
节点数据交换的整体性能和效率最高;
阻止“吃白食”(freeloaders)的现象。就是不能够只下载数据不上传数据;
可以有效的防止一些攻击行为(比如:女巫攻击);
对信任节点建立宽松机制(lenient)

BitSwap节点会记录下来和其他节点通信的账单(数据收发),可以保持节点间数据交换的历史和防止篡改。

什么是DHT ( Distributed Hash Tables ) ?DHT是一个分布式系统, 它提供了一个类似哈希表一样的查询服务: 键值对存储在DHT中, 任何参与的节点都可以有效的检索给定键对应的值. 键值对的映射由网络中所有的节点维护, 每个节点负责一小部分路由和数据存储. 这样即使有节点加入或者离开, 对整个网络的影响都很小, 于是DHT可以扩展到非常庞大的节点(上千万)。
DHT广泛应用于各种点对点系统, 用来存储节点的元数据。

跟IPFS有关的三种DHT技术:
Kademlia DHT:
高效查询:查询的平均复杂度是 log2(n),例如:10,000,000个节点只需要20次查询;
低开销:优化了发往其它节点的控制消息的数量;
可以抵御各种攻击;
广泛应用于各种点对点系统,包括:Guntella和BitTorrent,可以构建超过2千万个节点的网络;
Coral DSHT:
Coral继承了Kademlia并且做了一些改造 ( 它认为直接在DHT上存储数据是浪费存储和带宽);
S/Kademlia DHT:
S/Kademlia DHT同样是继承了Kademlia,并且做了一些改进,系统可以防止恶意攻击,例如女巫攻击。

新创建的节点必须知道至少一个已经在网络上的节点地址,连上那个节点,就可以加入网络了,所以ipfs系统提供了bootstrap命令来完成这个工作(通常情况不需要自己来做这样的造作,除非有一些特殊需求,例如:指定自己比较近的启动节点,搭建IPFS私有网络等)。

Merkle DAG是IPFS系统的核心概念之一,Merkle DAG的全称是 Merkle directed acyclic graph(默克有向无环图)。它是在Merkle tree基础上构建的,Merkle tree是由美国计算机学家merkle于1979年申请的专利。Merkle DAG跟Merkle tree很相似,但不完全一样,比如:Merkle DAG不需要进行树的平衡操作,非叶子节点允许包含数据等。

Merkle DAG拥有如下的功能:
内容寻址:使用多重哈希来唯一识别一个数据块的内容;
防篡改:可以方便的检查哈希值来确认数据是否被篡改;
去重:由于内容相同的数据块哈希是相同的,可以很容去掉重复的数据,节省存储空间。

执行ipfs add 命令,添加文件;使用命令 ipfs -ls -v 来查看文件的分片,当执行 ipfs add 的时候,文件first.JPG的数据被分成了一个个大小均等的block并且构造一个Merkle DAG把文件数据片组织起来;

https://zhuanlan.zhihu.com/p/35141862 IPFS: 私有网络(private network)的搭建与使用

Filecoin是IPFS的激励层,二者互补形式一对协议。为我们的互联网提供了很好的基础设施。
如果开发者仅仅想要的是一个安全、快速的云存储,那么选择Filecoin即可。
如果开发者除了数据存储需求,还需要分发数据,那么选择IPFS即可。
如果开发者既有数据存储需求,又有数据的分发需求,那么可以单独选择IPFS,也可以IPFS+Filecoin一起。注意:IPFS可以做Filecoin的事情,存储,而filecoin并不能做IPFS的事情,数据传输

https://zhuanlan.zhihu.com/p/46735451 IPFS vs Filecoin: 开发者该如何选择