IPFS星际文件系统初识

【IPFS综合评价】


流通量:     200,000,000 FIL (Filecoin代币销售硬顶)

代币总量:: 2,000,000,000 FIL 

ICO成本:顾问成本0.75 USD/FIL (锁定期至少1年)

                   众筹成本>=1 USD/FIL (随着众筹的进行,代币的众筹成本将逐渐增长,FIL价格= Max($1,AmountRaised/$40000000)USD/FIL,锁定期至少6个月,最后其成交价格大约为2.5USD/Filecoin)

(1年锁定期7.5%折扣;2年锁定期15%折扣;3年锁定期20%折扣)

ICO时间:2017.8.11~2017.9.7 (19:00 UTC) 

协议实验室官网: https://protocol.ai/ (IPFS是协议实验室的其中一个项目,FIL是IPFS的挖矿代币,协议实验室官网能够链接到具体项目的网站)

概述:IPFS是一种用于去中心化网络的新型协议。它可使用内容寻址和数字签名,创建完全去中心化和分布式应用, 使网络更快,更安全,更开放。

创始团队:协议实验室(Protocol Labs),由 IPFS发明者 Juan Benet 所创立,毕业于斯坦福大学。他和他的团队创建的Protocol Labs(协议实验室)在2014年夏季入选美国顶级孵化器Y-Combinator (此处有没有想起QSP),团队已经成功开发出多个项目。IPFS项目在2015年就已经启动,目前尚处于实验阶段。IPFS社区有数百位贡献者共同完成整个系统的创建工作。虽然团队低调,不过它在开源社区内部却得到了迅速的口碑传播。


【协议实验室 Protocol Labs 项目一览】

协议实验室(Protocol Labs)是一家专注网络协议研究,开发和部署的实验室。由 IPFS发明者 Juan Benet 所创立,其下项目包括 IPFS,Filecoin,CoinList 等投资者包括 Union Square Ventures, BlueYard, Y Combinator, Naval Ravikant 等。

主要项目具体有:

(1) IPFS (星际文件系统),一种用于去中心化网络的新型协议。IPFS可使用内容寻址和数字签名,创建完全去中心化和分布式应用。IPFS 使网络更快,更安全,更开放。

(2) Filecoin是一个加密货币驱动的存储网络。矿工通过为网络提供开放的硬盘空间,赚取Filecoin;用户则花费 Filecoin,将文件加密存储于去中心化网络。

(3) libp2p 是一个模块化网络堆栈。libp2p 汇集了各种传输和点对点协议,使开发人员可轻松构建大型,强壮的p2p网络。

(4) IPLD是用于去中心化网络的数据模型。它通过加密哈希,连接所有数据,且可轻松遍历(traverse)并链接到。

(5) Multiformats 项目,现在是未来证明系统的一个协议集合。自描述格式,使你的系统可互操作,可升级。

(6) CoinList 是一个协议代币筹款平台。AngelList+Kickstarter+协议代币的组合体。

(7) SAFT,用于协议代币筹款的法律框架。

其中,IPFS将是本文介绍的主角,Filecoin将在IPFS里面扮演虚拟货币角色,SAFT是众筹时的法律协议书,CoinList是当时用来众筹的平台,支持ETH, BTC, ZEC, USD四种方式参加,目前感觉FIL很有可能采用新的代币机制而不是ERC20,笔者倒是查到了一个可能的合同地址(0x435ef32fd35dd847a0eea3f10396ea76b8457c32),但使用的可能性应该不大。

(更多原味信息可前往https://protocol.ai/blog/protocol-labs-creating-new-networks/


【IPFS星际文件系统】

一、概况

IPFS(InterPlanetary File System,星际文件系统)是一个将现有的成功系统分布式哈希表(Distributed Hash Tables (DHTs))、BitTorrent、版本控制系统Git、自认证文件系统(Self-Certified Filesystems - SFS)区块链相结合的文件存储和内容分发网络协议。这些系统的综合优势给它带来的显著特性:

1.永久的、去中心化保存和共享文件 (区块链模式下的存储DHTs)

2.点对点超媒体:P2P 保存各种各样类型的数据(BitTorrent)

3.版本化:可追溯文件修改历史(Git - Merkle DAG默克尔有向无环图))

4.内容可寻址:通过文件内容生成唯一哈希值来标识文件,而不是通过文件保存位置来标识。相同内容的文件在系统中只会存在一份,节约存储空间

二、实现过程

1.传统BitTorrent共享模式.

DHTs全称为分布式哈希表(Distributed Hash Tables),是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。使用支持该技术的BT下载软件,用户无需连上Tracker就可以下载,因为软件会在DHT网络中寻找下载同一文件的其他用户并与之通讯,开始下载任务。

为了完成一次部署,至少需要个tracker和一个seed所谓tracker,是一个服务器,负责帮助peers之间相互建立连接。而seed,通常是第一个向tracker注册,然后它就开始进入循环,等待为别人提供文件,也就是说,第一个seed只负责上传文件。一旦有一个peer向tracker注册后,就可以取得seed的信息,从而与seed建立连接。从seed处读取文件。由于原始的文件,只有seed拥有,所有说,seed至少要上传原始文件的一份完整拷贝。如果又有一个peer加入进来,那么它可以同时和seed和前一个peer建立连接,然后从这两者处获取文件。

为了跟踪每个peers都拥有什么,BT将文件切割为固定大小的片(典型的大小是256k)。每个下载者必须通知其它peers,它拥有哪些片。为了验证文件的完整性,对每个片断都通过SHA1算法计算出它的hash信息,并保存在torrent文件中。Peers只有在检查了片断的完整性之后,才会通知其它peers它拥有这个片断。

对一个下载者来说,在选择下一个被下载的片断时,通常选择的是它的peers们所拥有的最少的那个片断,也就是所谓的“最少优先”。这种技术,确保了每个下载者都拥有它的peers们最希望得到的那些片断,从而一旦有需要,上载就可以开始。这也确保了那些越普通的片断越放在最后下载,从而减少了这样一种可能性,即某个peer当前正提供上载,而随后却没有任何的被别人感兴趣的片断了。

BitTorrent不仅仅早已经实现,而且早已经被广泛的使用,它为许多并发的下载者提供成百兆的文件下载。已知的最大的部署中,同时有超过1000个的下载者。当前的瓶颈(实际还没有达到)看来是trakcer的带宽。它(trakcer的带宽)大概占用了带宽总量的千分之一,一些小的协议扩展可能会使它降到万分之一。

2.IPFS的实现过程


IPFS是8个元素的组合:(每个对等节点的)身份+(管理与其他对等点的连接的)网络+(定位对等点和存储对象需要的信息的)路由(分布式哈希表)+数据交换(BitTorrent)+(可寻址又不可篡改)Merkle-DAG + (版本控制)GIT+命名(自我认证文件系统)+ 应用程序(Web)。

每个节点采用nodeID作为身份识别,节点存储着公钥和加密过的私钥,技术上使用基于S/Kademlia和Coral的分布式松散哈希表DSHT来寻找匹配的节点和特定节点的地址信息,小值(等于或小于1KB)直接存储在DHT上生成一个NodeID,对于更大的值,IPFS会拆成小块,DHT存储拥有这些块的节点NodeIds。

数据交换使用基于BitTorrent的BitSwap协议来发送和接收分布式数据区块。BitSwap 维持着两个列表,想要获得的块和已保存的块。但与 BitTorrent 不同的是,BitSwap 不限于一个torrent中的块。BitSwap 节点可以从整个IPFS网络获取所需的块,而不管这些块属于哪些文件,这大大提高了下载效率。同时,网络中存在一些激励节点会主动缓存和传播稀有的文件片段。

DHT 和 BitSwap 技术让 IPFS形成一个用于快速而强大的存储和分发块的 P2P 系统。在此之上,IPFS还构建了一种有向无环图 Merkle DAG,使用嵌入数据源中的目标哈希散列构建对象之间的链接。Merkle DAGs 为IPFS提供了许多有用的属性,包括:

1.内容寻址:所有内容(包括链接)都由其多哈希校验和进行唯一标识

2. 防篡改:所有内容都使用其校验和进行验证。如果数据被篡改或损坏,则IPFS会检测到该数据。

3. 去冗余:所有内容完全相同的对象,只存储一次。

IPFS并不会要求每一个节点都存储所有的内容,节点的所有者可以自由选择想要维持的数据,在备份了自己的数据之外,自愿的为其他的关注的内容提供服务。(数据的保存是Pinning,是将文件长期保留在本地)

如果IPFS得以普及,节点数达到一定规模,即使每个节点只存放一点点内容,所累计的空间、带宽和可靠性(共享模式)将超过HTTP以中心服务器传输的模式

显然,整个系统要正常运行起来,除了需要有大量人参与外,还得避免出现BT中很多人不愿意做种的问题,代币Filecoin(FIL)就是为了奖励“矿工”,矿工负责贡献存储和数据检索服务,让IPFS网络真是的变得实用起来,而需要储存服务的用户需要为服务购买和支付代币。(FIL的作用类似玩客币WKC或流量矿石LLT)

三、代币分发机制

Filecoin的70%奖励给矿工,可见挖矿生态的建立对IPFS至关重要。

参考:https://coinlist.co/filecoin

四、Github代码

IPFS的代码一直属于爆款了,众多项目纷纷加入IPFS相关部分,如MANA等

五、疑问

1.节点的所有者可以自由选择想要维持的数据,如果有个数据大家都不愿意存储,是不是意味着如果上传者删除了该数据,那么这个数据也就从此消失了呢?

2.相同内容的文件在系统中只会存在一份,节约存储空间。如果这份文件都没有人Pinning,是不是意味着也有消失的可能?是不是IPFS还有一部分主动备份所有数据的功能?

3.如何保证节点的所有者可以自由选择想要维持的数据?共享了硬盘后,写入的数据貌似我们是不知晓的,只是做了一个传播的媒介?

4.如果数据不可被删除,万一是有问题或有错误的内容,想人为删除应该怎么办呢?

也许很多问题是笔者尚未参透IPFS的技术核心,也可能是正在逐渐细化的问题,IPFS真正能够替代HTTP应该还需要一段时间,不过它的思想将现有的技术和区块链结合起来,形成了一个“水到渠成“的新型协议。

【重要备注】

1.目前Filecoin 代币尚未发放,Gate.io和Lbank等上的IPFS期货,FIL6/FIL12/FIL36 分别代表6个月/12个月/36个月的期货。

2.目前Filecoin的挖矿方式看起来和玩客币WKC或流量矿石LLT相似(主要是上传网速和共享硬盘),https://filecoin.io/已经有早期矿工项目(需要翻墙)有兴趣的同学可以前往。(代币机制70%奖励挖矿,开始时间未知,应该就是今年上半年)

3.在查询FIL合同地址的时候,发现了FILC币(Filecoin candy)。查证了一下是http://ipfser.org/发行的糖果,将来主要功能是用来购买Filecoin的矿机,不过目前只是好奇真的需要专业矿机么?(里面文章对IPFS研究都比较透彻和更新及时)。