一文读懂 QKFILE

QKF

一文读懂 QKFILE

QKFile如何实现分布式的互联网?

首先你需要了解,我们现在是如何从网上获取内容的。假设你想从网上下载一张照片,你需要告诉电脑去哪里找这张照片,也就是照片所在的IP地址或域名——这就叫"地址寻址"。

但如果这个地址不存在了,也就是说服务器关闭了,你就无法获取那张照片了。不过很可能有人之前已经下载过那张照片,并且在他的电脑中仍然保存着备份,可你的电脑却无法从那个人那里获得该备份。为了解决这个问题,QKFile把“地址寻址”改为“内容寻址”。这样一来,你不用再告诉电脑去哪里寻找资源,而只需告诉它你想要什么资源。怎么做到这一点呢?每个文件都有其独特的哈希值,也可以理解为指纹,当你想下载某个文件时,只需问网络“谁有含有这个哈希值的文件?”然后QKFile网络上的某个人就会将文件提供给你。如何确保向你提供文件的那个人没有篡改过该文件呢?因为你是使用哈希值获取文件,所以收到文件以后,你可以检查该文件的哈希值是否符合你要求的哈希值,这就是——内嵌防伪功能。使用哈希值来定位内容的另一大好处是自动删除重复数据,当多个人在QKFile上发布同样的文件时,该数据只会被生成一次,这就使得网络效率极高,避免资源浪费。

QKFile如何找到数据?

每一个QKFile节点上都会存一个地图,每个地图之间互相连接,所有QKFile节点地图加起来变成一个分布式哈希表。当我向这个网络请求数据的时候,会根据数据本身的ID哈希值,采用一种数学计算的方式,来查找你的资源在哪台机子上,然后建立起一种连接,下载你需要的数据。

QKFile如何存储并共享文件呢?

QKFile上的文件都存储在QKFile对象中,每个对象最多可存储256 KB的数据,也可包含连接其它QKFile对象的链接,一个简单的极小的“Hello World”文字文档可以储存在单个QKFile对象中。

 

那么超过256 KB的文件怎么办呢?比如一张图片或是一个视频,这些大型文件会被分割成数个QKFile对象,每一个对象都是256 KB,之后系统会生成一个空白QKFile对象与包含这个文件的其它所有QKFile对象链接。QKFile的数据结果非常简单但却非常强大,这一结构使我们可以真正把它作为文件系统来使用,这是一个包含了一些文件的简单的索引结构,我们也可以将其转成QKFile对象,每一个文件和索引都生成一个QKFile对象。但QKFile能做的还不止这些,因为IPFS使用内容寻址,一旦某个文件加入了网络,它就不能再被更改了。这是一个不能篡改的数据存储库,非常类似于区块链。

如何更改文件内容?

QKFile支持文件的多个版本,比如说你正在做一个重要的文件,并且想与QKFile上的所有人分享,在进行分享时,QKFile会为你生成一个新的“提交对象”,这个“提交对象”构造很基础,它只是告诉你QKFile之前提交了哪个文件版本,并且链接到你文件的QKFile对象。假设过了一会儿你想要上传这个文件,只需把更新的文件加到QKFile网络上,软件会自动为你的文件生成一个新的提交对象,这个提交对象会链接到之前的提交对象上。这一过程可以被无限次地重复,QKFile会确保你的文件以及它完整的历史都能被网络上的其它节点所获取。