欲抢占天时的IPFS激励层Filenet中文版白皮书

File Network白皮书 V1.0 

Filenet.io

作者丨IP君(转载)

文章来源丨www.ipfs.cn

前言

自人类社会进入互联网时代以来,为保障网络世界的自由、平等、开放,实现信息的充分流动,科学、技术、工程人员通过不间断的创新或技术变革来突破种种人为的管制与分割。

早在90年代末期,IBM、微软等即开始研发基于内容而不是基于地址的文件寻址方案,用于解决http协议中存在的弊端。

2014年,胡安·贝尼特(Juan Benet)提出了全新的IPFS构想,旨在创建一个持久且分布式存储和共享文件的网络传输协议。

一直到2017年,随着区块链技术的发展,Siacoin、Storj、再到Filecoin等一系列去中心化存储项目的涌现,这一理想才在工程层面露出了胜利的曙光。

Filenet是一个IPFS社区开发者发起的全新IPFS激励层,它的目标是与IPFS形成商业闭环,创建出低成本且高效率的数据分发网络,成为未来区块链网络世界的技术基石。

它尊重互联网用户“免费”的行为习惯,无需支付任何代币即可获得存储资源,保证早期开发者能免费开发出各种Dapp。

扫描二维码关注公众号,回复: 3361955 查看本文章

它通过代币流转,鼓励用户创造内容、分享内容,解决去中心化文件分发贡献度问题。

整个网络生态,通过使用者在使用环节“燃烧”代币的模式,实现经济生态的自平衡,获得长久的生命力。


1. Filenet 介绍

1.1Filenet 是什么

Filenet 是构建在 IPFS(星际数据系统)之上的一个激励层,以奖励矿工共享自己的存储资源和网络资源,Filenet 同时是一个令牌,它运行在分发证明机制上,是一种基于 IPFS 提供内容共享的超级云系统,致力于存储和分发有价值内容。


1.2Filenet 技术背景

      1.2.1 共识机制

      区块链的核心技术是共识机制,目前比较常用的共识机制有 PoW(Proof-Of-Work,工作量证明),PoS(Proof-Of-Stake,权益证明),DPoS(Delegated-Proof-of-Stake,委托权益证明),PoC(Proof-of-Contribution,贡献证明)。PoW 机制,需要矿工解决复杂的密码数学难题,依赖计算能力,优点是系统安全可靠,缺点是消耗能源和计算能力,有 51%算力×××可能,吞吐量小。

PoS 机制,根据权益选举矿工打包数据,优点是不消耗资源,缺点是安全性较低,股权越多的人话语权越高。

DPoS 机制,多数有投票权的人将投票权委托给少数节点来代理,优点是系统效率高,吞吐量和并发数高,缺点是话语权掌握在少数节点手上不安全。

PoC 机制,根据节点所做的贡献来分配打包权,优点是不浪费资源,按劳分配,缺点贡献计算方法要根据具体的场景来定。区块链 3.0 时代,共识机制朝着不浪费资源,适当考虑安全性,提高吞吐量和并发数方向发展。

    1.2.2 有向无环图

图 1 有向无环图图 1 有向无环图

比特币的区块链结构是一个单向链表,这种结构是区块链早期采用的,存在很多问题,如区块存储容量小,交易速度慢,数据总量大,单节点存储压力大,每秒交易数少。DAG(Directed Acirclic Graph,有向无环图)是一种新型的区块链数据结构。

DAG 和链表结构都能由上一个节点来确定下一个节点,所不同的是,链表结构只能是一对一,而 DAG 支持一对多,多对一,只要不产生回环就行,也就是通过前面节点来验证后面节点二者一致,但链表结构同一时间只能有一个分支,而 DAG 结构可以有多个分支,所以 DAG 结构并发数更高,同时存储的数据更多。同时,DAG 记账是一个异步的过程,数据是弱同步,可以接受一定程度的数据差异,在后续异步确认过程中再来修正。这样可以大大节省确认时间,提高交易速度。


    1.2.3 默克尔树

图 2 默克尔树图 2 默克尔树

默克尔树是快速验证数据的一种方式,在比特币中有采用,在点对点数据传输等领域也广泛采用。默克尔树将数据分成很多小块,每一块计算出一个 hash 值,多个数据块合并生成一个 hash 值(一般是两个),最终生成汇集到一个根节点,生成一棵树(一般是二叉树)。由于数据分块,并且提供了 hash 值索引,在数据很大,或者是点对点系统中,不用得到所有数据,再验证数据是否正确。哪怕只得到了一小块数据,

只需要在这棵树上找到数据所在的位置,确定树上关键位置上的数据和 hash 值,就能验证数据是否正确。


    1.2.4 星际文件系统

    IPFS(Interplanetary File System,星际文件系统)是一种点对点的分布式文件系统,旨在连接所有有相同的文件系统的计算机设备。在某些方面,IPFS 类似于 web,但 web 是中心化的,而 IPFS 是一个单一的 Bittorrent 集群,用 git 仓库分布式存储。

换句话说,IPFS 提供了高吞吐量的内存寻址块存储模型,具有内容寻址的超链接。这形成了一个广义的 Merkle DAG 结构,可以用这个结构构件版本文件系统,区块链,甚至是永久性网站。IPFS 结合了分布式哈希表,带有激励机制的块交换和自我认证命名空间。IPFS 没有单故障点,节点不需要相互信任。

未来,IPFS 将会在 WEB,文件系统,区块链三个领域发挥巨大的作用。

首先,在互联网中用 IPFS 取代传统的 http 协议,IPFS 的优势在于节省存储与带宽资源,大幅度节省成本,同时还提高传输效率。分布式 web 站点的设计让 IPFS 更安全,更稳定,更开放。

其次,IPFS 将构建一个面向全球的分布式文件系统,它将全人类公开的文件全部组织起来,并且通过版本管理,使文件各个历史版本得以保留,形成一个非常全面的文件宝库。

再次,IPFS 将与区块链技术紧密结构,将区块链带入一个全新的时代。IPFS 的底层数据结构完美兼容区块链数据结构,目前常见的区块链数据都能表示成统一的 IPFS底层数据结构。各种异构的区块链都可以选择 IPFS 作为存储媒介,从而解决目前区块链技术面临的最大难题,数据存储问题。在此基础上,各种性能更好,更方便的区块链产品应运而生。


1.3 优势

建立一个去中心化的文件存储和分享网络,这是一个非常有吸引力和激动人心的愿景[2]。然而,没有激励的驱动,谁来提供这些存储?如何防止垃圾文件耗费系统资源?文件如何才能得到最高效率的分发?这些问题不回答,这个网络就难以真正发挥它本来应该具有的价值。这些问题的答案,在于一个合理的激励层。

时至今日,不止一种激励层已经被提出,其中有相当多的项目是要求系统使用者付费的。付费当然是问题可能的解决方案之一,但是难道必须要付费吗?毕竟绝大多数网络使用者在使用时并没有准备好付费,互联网带给人们的习惯也是免费使用大多数基础服务,很难想象用户浏览个普通网页还得从自己账户中扣款。

Filenet 提出了一个创新的激励层,解决了这个问题。其要旨在于:首先,用户可以自由向网络中上传文件,但存储的文件缺省得不到奖励也得不到分发,即使被分发,如果不能持久也无法长期占据网络资源,如此解决了垃圾文件的问题;其次,文件被检索时会被分发和保存到更多节点,且这些节点会得到奖励,解决了谁来提供存储和分发的问题;再次,系统对文件上传者不但免费,而且在文件被检索量足够大时,还会给予文件上传者奖励,解决了费用的问题。免费且具有良好的激励机制,是 Filenet的优势所在。

我们坚信,Filenet 的上述优势,将带给它巨大的实用价值和广阔的想象空间。


2.Filenet 构成和运行机制

2.1 架构

图 3 Filenet 架构图图 3 Filenet 架构图

Filenet 与 IPFS 一起构成一个完整的产品。分布式数据存储、P2P 网络传输、分布式计算等底层功能由 IPFS 协议和 Mine 物理设备一起完成。

在 IPFS 中,包含两种类型的节点:普通节点和专属节点。各节点通过 P2P 网络互联互通。专属节点一般是用户的私有节点,上传数据时,数据首先被存储于专属节点,待数据被多次检索至一定阈值,专属节点上的数据才能进入 IPFS 网络中的任意节点,即数据晋级制度。

在我们的设计中,数据流入节点没有代币奖励,数据流出节点才有代币奖励。数据流出节点的目标既可以是 DApp,也可以是 IPFS 中其它节点。

Filenet 作为激励层,需要完成区块管理、共识机制、智能合约。DApp 运行在IPFS 及 Filenet,User 可以直接通过 Filenet 和 DApp 上传数据。

图 4 Filenet 存储管理示意图 4 Filenet 存储管理示意

Filenet 去中心化存储网络(Decentralized File Network)(DFN),提供数据晋级制度。当用户通过一个设备上传数据,此数据存储在本地,当数据被检索次数越来越多,数据就会逐步进入公开网络,成为热门数据,此数据才可以参与挖矿。


2.2 数据结构

Filenet 区块保存所有数据痕迹参数,上传至 Filenet 数据种类多,数量多。传统的链表结构会使区块冗余,表达非常麻烦,而 Filenet 采用 Merkle 树和 DAG(有向无环图)结构的区块链数据结构。DAG 结构比传统区块链链式结构更灵活,性能更高,速度更快,极大的提高了区块打包的效率,从而提高了 Filenet 网络的性能。

Merkle树不需要完整的区块信息,只需要关键的 Merkle 节点信息,就能对区块链数据进行验证,从而让节点变得更轻巧,更多精力用于业务处理和为 Filenet 网络提供服务。同时 Merkle 树也能简化验证流程,进一步提高网络性能。

具体的区块结构我们会在黄皮书中详细说明。

2.2.1 账本

用户的数据、矿工状态表和信任表,我们称之为账本,在任何时间内都可以访问,账本是一个按照时间推进不断增加的数据链。

2.2.2 表格

a  数据的检索量表格检索量表格是比较复杂的数据关系,里面涉及的数据类型、数据被访问的时间、数据访问量、且这些数据都是不断的变化的,不过我们采用 DAG 结构来保存这张表格,变化的参数不会前后相互受影响。

b  矿工运行状态表格储存和检索数据的话,矿工运行状态、空间闲置量、网络环境会存储在当前的区块中,这种表格是公开可查的。

2.3 角色

   2.3.1 使用者

   使用者即使用客户端上传文件的用户。用户可以通过 Filenet 客户端(DApp)直接参与数据存储和检索。用户的存储和检索操作均是免费。

  2.3.2 服务者

服务者即矿工。矿工提供存储资源,存储数据,为用户提供数据检索分发,通过被检索使用获取收益。

矿工存储了用户的数据,根据特定的时间生成分发证明并提交到区块链网络来证明在这段时间内数据分发量即活跃度。根据分发量在全网占比获得 Filenet 奖励,如果不能提供证明或者无效即不能获得奖励。

矿工存储了用户数据间断性向区块链网络上报自己的运行状态,当用户检索数据时,Filenet 会依照网络状态和设备状态去检索数据,如果矿工不能在规定的时间内上报自己的状态或者自己状态有虚假,可能会影响矿工的收益。

矿工要获取数据资源时,要不间断提供自己的空间、带宽、运行状态、这些参数共同保存一个表格里,我们称之矿工的信任表。Filenet 会依照信任情况来分配数据,如果数据容量小但是使用频次很高,我们会将它保存在网络环境稳定矿工设备中,如果数据容量大但是使用频次低,我们会将它保存在空间很大的设备中,如果矿工设备出现故障或者环境不稳定,Filenet 就会减少数据派发量。

2.4 协议

我们把用户和矿工抽象成两种实例,实例均有属性和状态。用户和矿工遵守共同的 Filenet 协议规则。

2.5 挖矿(mining)

Filenet 为高频数据提供更好的存储和分发,同时也不会让低频数据占用系统的存储资源,所有的用户都是通过 DApp 将自己原文件发布,这些文件随着逐渐被用户检索,流传到 Filenet 网络中而分配到矿机中,这些 DApp 可能会是一个云盘、社交软件、新闻客户端等等,上传的文件的同时将其 hash 值记录到 Filenet 网络。

    2.5.1 概述

用户存储的数据可以分为低频数据和高频数据。Filenet 挖矿的一种方式是共享高频数据来获得,通过 Filenet 的激励机制,让这些高频数据在其生命周期内,极大限度的传播,进而获得增益的财富,同时也因其共享,让数据成为人们共有的财富资源。

    2.5.2 资格获取与保证金

服务者钱包里必须持有一个以上 Filenet 代币,才能作为实际账户,获得挖矿资格。我们采用一种“保证金”模式,鼓励服务者认真维护自己的节点,保障节点稳定可靠地工作。这可以看作一种抵押模式,但是不会因为节点的断电断网而扣罚押金。

    2.5.3 收益

IPFS 出矿的概率与活跃度成正比。上传的数据必须要有其他用户下载使用才能确定其为有共有数据,下载的用户越多活跃度越高,就能获得相对应更多挖矿奖励。

    2.5.4 硬件

Filenet 志在连接一切闲置存储空间,理论上凡是可以连接上网的存储空间都可以参与到挖矿之中,包括不限于云服务、数据服务中心、电脑、笔记本、手机,甚至车载电脑、智能手环等各类移动终端,都可以通过网络参与贡献数据,获得收益。


3. 共识机制

     3.1 检索分发证明

分发证明 Podt(Proof-of-distribution)是一种新型的证明方式,我们提出方案减少了技术实现难度,无须构建复杂机制防止×××难题,分发证明只要证明数据分发的频次和使用度,分发证明与挖矿结合是一个完整方案。

在 Filenet 中有两种证明,来证明矿工在认认真真工作且真实反映出自己的付出,证明矿工有能力继续服务价值数据,一种是检索量证明(Proof-of- retrieval)、一种是状态证明(Proof-of-state)。

Proof-of-retrieval 简称 Pore 协议,汇总矿工数据分发的次数,间接反映 CDN的消耗,每个周期定时检测 CDN 的消耗,但是这种方法是单向的,没有相互检查矿工的真实情况,这些协议依赖零知识证明机制(Zero-Knowledge Proof),证明者(被验证者)能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。

    3.1.1 Pore 协议

用户将数据发到 Filenet 网络,Filenet 跟踪和考核发送给矿工,矿工存储了用户数据。以下是 Filenet 对检索进行验证的过程:

1.Send:

输入:

Prover Key pair(M,D)

证明者的钥匙对数据参数产生的公钥

Prover send key Pksend

Parameter P,矿工的数据参数

Date D,矿工提供的数据

Relation P&D→N

输出

Replice R 数据的参数 P 的一个副本。

DAG Root rt of R 对副本产生有向无环的 hash 根

Proof πseed 副本分发证明

过程:

1.计算数据的 hash 值 HN:=CH(N);

2.封装 R:=seal(N,skM);

3.计算 R 的 hash 根 rt:=DAG CH(N);

4.》X:=(pk HN,rt);

5.》W:=(skP,N);

6.计算 R 的分发证明 πsend:=SCIP.prove(pkseed ,X,W);

7.输出结果 R rt πseed

Prove

输入:

Prove proof-of-distribute key pkPodt 数据的分发公钥。

Replica R

Random challenge C 检查随机数,代表 hash 子节点。

输出:

πPodt 分发证明

   3.2 信用度度量

Filenet 网络选举矿工执行数据检索、数据分发、区块打包的任务时,依据的是各矿工的信用度值。为保证各信用度等级的矿工都有机会被选中,同时发挥信用度的作用,我们采取了如下策略:信用度分等级,首先按照信用度等级进行初次选举,信用度等级越高,被选中的概率越高;初次选举后,即对同一级信用度的矿机实行等概率选举。矿工的信用度值计算公式:

T:信用度值;m:持币量;c:调节因子T:信用度值;m:持币量;c:调节因子

图 5 信用度曲线图 5 信用度曲线

Filenet 的去中心化存储网络可以建立在诸多共识协议上,只要能证明分发证明的验证即可。


3.3 通过 Podt 方式计算矿工的算力

因为在每个周期都会产生一个区块,矿工 Yn 都会被要求生产一个分发证明到网络,只有网络中的大多数验证通过,分发证明才会被添加到区块链中,然后所有的 Filenet全节点更新矿工的空间信息,并将失效的记录删除,因此矿工的 Yn 的算力可以通过累加并检验矿工的分配情况确定。对于大节点,通过累计从创世区块到当前区块的关于Yn 的所有分发记录计算出 Yn 的算力。

对于小节点可以通过信任的大节点读取 Yn 的所有分发记录,一个关于最新区块的hash 树路径和一个创世区块到当前区块的区块头信息。通过这个方式小节点可以把验证 Podt 证据的工作委托给网络。

如果矿工要恶意伪造自己的算力,就需要伪造自己分发证明。如果要伪造自己的分发证明就需要执行 send 操作。在 send 操作中就要伪造虚假证明到区块链上,send 有校验过程,如果能伪造 send 操作那么 Filenet 就认为是真实的证明,因此Filenet 完全是依靠 Podt 协议维护真实性。在分发证明章节已经证明了 Podt 是安全的。

Filenet 通过算力达成共识,把分发量贡献度简称 PoC(Proof ofContribution), 把信任度和保证金量和时长做股份因此是改进版的 POS,采用PoC+PoS 机制,然后每一个周期概率选举出多名个矿机共同出块,被选举的矿工会增值信任分。

POC+POS 是一种随机选举,无法预测,选举出矿工作用就是在一个区块周期创建区块并广播到全网,数据块以 DAG 的数据结构管理,因此区块越多主链越安全。


3.4 共识机制算法

T:某一出块周期的结算时刻。

Random(t):随机数

P J t :在出块周期内矿工的算力。

L:H(Yn)是一个 hash 函数 L 是其中长度。

<Yn>msn:矿机 Yn 对消息 msn 的签名。

<Yn>msn=((Yn)SIGmsn(H(Yn))) --------------1

Mine:Yn

Compute

H(<t||random(t)>Yn)*2 L ≦Pt/∑ P J t

j

--------------2

π=<t.r>i

verifier Node: Verfy(π,t,Yn) --------------3

1.π is valid signature。

2 P J t : is Power of Yn at time t

3. check H(π)/2 L = Pt/∑ P J t

j

矿工通过上面的不等式来确认自己是否是当选出块者,其中公式 1 表达当前出块的时间生成一个随机数。根据时间生成一个随机数 hash,Yn 对 hash 值签名,然后再做一次 hash2 将 hash2 除以 2 的 L 次方,得到一个 0~1 之间的数字。

表达式 2 是本矿机在全网的算力比例。

此共识机制是公平的。

每个参与者在一个出块周期内只有一次选举机会,所有选举都为随机选举。

Random(t)是无法预测的。计算是无法并行且不能被恶意操控。

恶意矿工无法伪造其他矿工签名,因为 Yn 不能获得其他 Yn 的私钥。

同时是可公开验证的,矿机计算出自己为胜出者,那么他需要向全网提交验证证据,而任何时候都可以验证矿机的算力和他产生的随机数 hash 值。


4.智能合约

Filenet 是面向开发者的一条公链,面向 DApp 或私链开发者采用是冻结释放模式,冻结释放时长比例依据流通量占比,释放算法在智能合约已经写入,无法修改。

矿工持币模式均在合约表现出来。我们所开发的智能合约可能会采用 Ethereum技术来快速实现。

Filenet 本身具有实现智能合约机制的潜力,它的某个未来版本会实现相应的功能并充分利用 Filenet 本身的优势。


5.生态应用开发

目前大部分区块链项目都是基于 Ethereum 开发,但是在面对大数据并发和大存储的应用时束手无策,比如需要开发去中心化的视频、游戏、直播平台,以及更广阔的物联网应用时,而基于 Filenet 的技术特点,则能提供有效的解决方案。

我们开发这条公链是希望开发者能轻松开发自己的超级应用,践行自己改变世界的梦想,公链将持续优化开发语言,并提供 DApp 运行必要的存储空间和网络。

    

6.后续关注

本文档为 Filenet 白皮书(初版),主要是想阐述我们当下的思考及技术规划,技术 Filenet 黄皮书会在后续工作中公布。

开发小组的技术实现方案,会采用社区化的开发方式,后续的技术问题我们将在Filenet.io 或者社区公开征集。

Filenet.io 项目采用社区自治方式,任何开发者都可以参与,只要你愿意加入并付出自己的时间。

感谢 IPFS 社区开发者朋友提供的众多技术指导意见。

目前,Filenet 所有的信息和公告只有一个通知窗口 Filenet.io,请广大社区支持者关注 Filenet.io 网站。


参考文献

[1]Filecoin: A Decentralized Storage Network, Protocol Labs

[2]IPFS - Content Addressed, Versioned, P2P File System, Juan

Benet

[3]Disrete Mathematics and Applications Seveth Edition,Chinese

Abridgement

[4]Computer Networking A Top-Down Approach Sixth Edition,

James F.Kurose Keith W.Ross

[5] Peter J. Braam. The Coda Distributed File System, School

of Computer Science,Carnegie Mellon University,

http://www.coda.cs.cmu.edu

[6] Lustre File System White Paper

http://www.sun.com/software/products/lustre/index.xml

[7] The Google File System, SOSP'03, Sanjay Ghemawat,Howard

Gobioff, Shun-Tak Leung

[8] Network File System, http://www.faqs.org/rfcs/rfcl094.html


IPFS是一个底层的协议,就好比最基础的区块链技术,谁规定了区块链上面只有一个比特币?IPFS上面只有一个Filecoin?

只要任何有想法、有野心的团队都可以在上面建立激励层,开发属于自己的分布式存储项目。

Filenet就是这样一个有野心的项目。

如果你有兴趣了解

欢迎扫下面的二维码加小助手

领取Filenet白皮书PDF班

加入Filenet社群

还有机会获得Filenet初期的测试资格哦



猜你喜欢

转载自blog.51cto.com/13970494/2285726