一分钟了解星际文件系统IPFS原理与应用
如果你对区块链有兴趣,你应该要了解IPFS ,区块链本身是一项去中心化的分布式资料库系统,由于必须做到去中心化的程度,它本身仅是适合纪录数字的简单储存系统,无法载入文件或是图片。但区块链技术若要成功商业化,则必须拥有更复杂的储存系统,用来提供复杂程式、文件、图片及影片的储存功能,而IPFS 能补足区块链的储存性能问题。
目前去中心化应用(DAPP)只有计算作为筹码用的加密货币时才会动到区块链,其余网页、文件以及程式码仍然储存在单一伺服器上,例如AWS 、 GCP 这些平台,本质上仍是中心化的产品。
照理说DAPP 不该仰赖中心化的储存空间,一旦伺服器被关闭,所有的网页内容也就跟着消失,无法满足区块链当初设计的初衷,为了补足区块链当前的缺陷,「IPFS 星际文件系统」(InterPlanetary File System) 被设计出来。
它能提供分布式的P2P网络储存服务,每一个节点都掌握部份的分割文件,一旦上传成功,文件将以「DAG 有向无环」的形式被纪录在Merkle Tree 上而且无法修改与删除,每个文件都有唯一的HASH 值,允许使用者利用该唯一的HASH 值访问并下载文件。
利用IPFS 持久储存文件
IPFS 本身不是区块链(Blockchain),也不是服务(Service),而是「协议(Protocol)」,性质上跟BitTorrent 很像,是一项文件储存与分享系统,只要是有点网络年纪的人一定知道BitTorent ,简称BT 这项P2P 服务,过去网络内容还不发达的时代,过去你可以透过BT 找到所有想要的文件,但你要先下载BT 种子文件,然后让电脑从别人的电脑下载目标文件。
IPFS 则更为先进,只要使用者持有文件的加密金钥,是一连串的乱数值,该协议就能引导使用者在「IPFS 节点群」中搜寻到特定的文件,而「IPFS 节点群」是由数个伺服器节点组成,每台伺服器各自储存及备份了部份的文件。
如果我在IPFS 节点群存入一个影片,该影片会被分拆成多个分割文件,并且标上一个Hash 值标签,以有向无环DAG 树状图的模式存在于IPFS 地图中,接着这些分割文件模块会被备份在两个以上的伺服器中,即使其中一个节点被删除也有其他节点进行备份供使用者取用及下载,借此达到持久储存的功能,很适合用来储存一些「敏感且危险」的影片及文件。
当然由于采用DAG 储存文件位址,每一个文件都拥有唯一的Hash 值,挡案上传后便无法修改或删除,后续的文件更新则可以透过IPNS 的命名功能把原有的文件位址导向更新后的地址,但原先的文件仍然会存在。
那要如何找到这些文件呢IPFS 协议运用了区块链类似的分布式哈希表(Distributed Hash Table),使用者必须使用对应的加密金钥才能透过IPFS 协议找到特定文件, IPFS 协议会利用杂凑表解密该金钥并产生对应的文件地址(From key to value),使用者一般无法透过搜寻的方式在分布式网络中找到文件,只能持有对应的金钥才能找到。
简单说,使用者只要输入对应的Hash 值,就能快速在IPFS 网络中找到对应的文件,然后文件以多个分割模块的方式储存在IPFS 网络中,由于节点分布在全球网络中可以有更高的稳定性。
所以IPFS 比起单纯的NAS 储存,它的形式更像是一种内容传递服务(Content Delivery Network),只要文件存入IPFS 节点群中,该文件就会被分割并备份到全球不特定的伺服器之中。
什么是CDN 服务
所谓的CDN 服务是指在全球各地建置许多的资料中心,让就近客户取用资料。
举例来说,如果企业的网站设置在美国,但是客户位于日本,那么客户就得走太平洋电缆连到美国的伺服器,过程将产生一段可观的延迟。但是透过CDN服务可以事前把网页内容快取到日本的伺服器,那么位于日本的客户直接连到日本当地的伺服器即可。如此一来将可以大幅加速网站的存取速度,目前微软的Azure也有提供IPFS的PAAS服务,实务上可以透过Cloudfare的CDN服务来加速文件存取。
解决BT 的效率问题
BitTorrent 是很早期的P2P文件分享装置,当有使用者出来作种(文件来源的标签),以自家的电脑与频宽为起点分享特定文件,作种的人可以将种子分享给他人,其他人可以利用该种子从起点下载文件,并且借此互相分享文件,而且越多人作种速度就越快。
BT存在效率问题,同一种文件可以重复存在,种子彼此也无法整合,导致使用者必须找到最多人使用的种子文件才有办法拥有较快的下载速度,但IPFS中文件拥有唯一的Hash值。当然更棒的是后续分享文件只需要提供唯一的Hash值就能提供其他人下载,由于任一文件都被纪录在IPFS的DAG树状图中,都会被标记唯一的Hash值,所以都可以任意下载文件夹中的任一文件。
假设小明的节点拥有歌曲A ,阿华的节点也拥有歌曲A 的文件,这个歌曲A 有唯一的Hash 值,使用者可以依据这个Hash 值找到歌曲A ,不需要种子文件下载,而且可以同时从小明及阿华的节点下载文件。
BT只能依据种子文件下载整个文件内容,比如说你只想要A专辑的一首歌03.mp3 ,如果采用BT系统,你必须下载整张A专辑再从中取出你想要的歌曲03.mp3 ,然而在IPFS中只需要该歌曲的Hash值便能直接下载03.mp3,不用先下载整张专辑,节省了许多时间与下载频宽。如果BT要直接下载03.mp3则需要再重新产生一份种子文件,这样网络就便会存在两个种子文件,然后再重新发布到网络上,过程不但繁琐也缺乏效率, IPFS则直接从原本的专辑文件中利用hash抓出文件即可,不用重新再做一个种子文件。
IPFS 与区块链结合, Hash 索引可存入交易备注并导引至特定文件
根据上述的解释, IPFS 看起来只是BitTorent 的改良版,可以提供文件分布式储存与Hash 值索引的功能,为何跟区块链会产生关联
其实IPFS 的Hash 索引功能可以起到很大的作用,只要将特定文件的Hash 存入区块链的「交易备注」中,便可以直接引导到特定且唯一的文件,而且该文件会被分割到多个节点并备份,可以提供更持久且安全的保护,这是BT 无法作到的精准度与专有性,让IPFS 很适合与主链结合,可以发展出更完整的去中心化应用。
虽然说IPFS 具有许多优点,但目前网络的文件分享还是以BitTorent 为主流,因为BitTorent 具有丰富的社群与资源之外,你几乎可以在上面找到任何你想要的文件,而且IPFS 客户端的使用界面与普及度还有很大的改善空间,现在区块链的DAPP 也还在发展与实验期,使用者仍停留在小众族群,现有储存需求透过中心化储存早已足够。
但是未来随着去中心化应用成熟,对于分布式储存的需求将越来越大。区块链会带来直接金流,只要牵涉到利益问题,参与者对于应用上的文档、图片及影片的保存也会越来越重视, IPFS 将可以提供更安全及分布式的储存方案。
对了, IPFS 与BT 同样能储存一些被极权政府禁止的文件,一旦上传便无法删除及修改。
问题来了,过去BitTorent 都是社群中的志愿者分享文件来源,可能基于自己的喜好,但回归商业考量,谁会愿意无偿提供自己的电脑作为储存空间呢
所以像是Filecoin 这类的项目就是希望结合区块链的经济模型与IPFS 的储存协议,让提供储存与下载频宽的节点可以获得报酬,上传或下载文件的使用者都需要付费使用,如此便可形成一个经济模型,促使越多节点愿意提供空间与频宽,使用者也能享受到更高速且稳定的下载速度。
声明:本站所提供的资讯信息不代表任何投资暗示, 本站所发布文章仅代表个人观点,仅供参考。