【摘要】 BTD开放分布式边缘云存储第一链 使用稳定积分+激励积分体系
BTD 项目铸就全球分布式边缘云存储第一链,打造一个分布于全球、贴近网络终端用户进行部署和快速响应、永不停机、永不断电、天然异地容灾、容量无限扩展、具备自我修复能力、数据私密安全的超级云存储和拥有海量数据的超级媒体。
BTD 项目的海量存储和计算资源面向技术合作伙伴开放。技术合作伙伴可基于 BTD 项目开发面向个人用户的云盘服务、面向企业用户的数据备份服务、面向其他应用领域的各种存储和计算服务应用,利用闲置存储和计算资源创造出巨大价值,领跑于分布式存储、边缘云存储的数据存储时代,开创区块链应用真实落地的新时代。
BTD 项目向全球存储硬件开放,用户可通过贡献其存储空间成为 BTD 节点。全网节点协同工作,形成容量无限扩展、天然异地容灾、具备自我修复能力的分布式存储链;而节点则按照其存储容量、在线率、网络性能、实际服务质量等综合贡献获得相应的 HDT 存储积分。
根据节点对全网稳定运行所做的当日贡献比例、历史贡献比例、未来发展贡献比例的综合贡献,节点获得相应的 BTD激励积分。HDT 根据 PoCR(可信赖存储证明)算法产生,是价值稳定和成本低廉的存储积分,便于链上各类 dApp 应用为 BTD 项目获取裂变式海量用户;BTD 根据 PoS(权益证明)算法产生,代表了全网的存储价值,其总量有限,且一部分 BTD 在运行过程中会被销毁,具备天然内在的价值增长动力。
HDT+BTD 立体激励体系是全球分布式存储领域第一个立体激励体系,是存储链上的云盘应用率先落地之后的必然需求,代表了分布式存储领域的必然趋势,意义深远。BTD 项目预言所有的分布式存储项目在其打造的应用真正落地后都必将主动或被动调整其激励体系,从单一激励体系调整为与 BTD 项目类似的“稳定积分+激励积分”立体激励体系。HDT+BTD 所代表的优秀激励机制也将极大激发节点激情,为 BTD 存储链持续快速发展奠定长期和坚实基础。
BTD 项目帮助用户将闲置的存储空间和计算资源通过共享实现商品化,未来还可帮助用户将所存储的原创数字内容(照片、视频、文章、直播等)通过分享实现价值化,以区块链技术实现价值流通,以分布式技术重构云存储产业生态。BTD 项目是面向物联网和 5G 时代数据存储需要的边缘云存储基础设施,将创造出巨大的经济价值和社会价值。
BTD节点
BTD 项目面向全球存储硬件开放,用户可通过贡献其闲置存储成为节点。BTD 项目支持非专用和专用的2种类型存储节点:
1. 非专用存储节点
当前市场上广泛存在各类有存储能力的智能硬件和PC电脑等私人硬件。一般来说,私人硬件的存储能力主要用于自用存储,但有时也会有不少存储空间长期处于闲置状态,如果用户愿意将闲置存储长期稳定贡献出来,则用户的私人硬件也成为了一个非专用的存储节点。
2. 专用的 BTD 存储节点
专用的 BTD 存储节点,其核心功能就是为 BTD 项目提供存储空间、带宽资源和计算资源,不承载其他业务。根据专用节点所部署位置的不同,BTD 项目专用节点可以分为家用型和专业型2大类。
家用型体积相对较小,噪音相对较低、适用于普通家庭用户参与 BTD 网络的建设。
专业型则一般采取标准机架式服务器设计,更适合放置在小型机房,尤其是具备较好带宽资源的区域,为 BTD 网络提供更优良的网络资源,更适用于专业用户参与 BTD 网络的建设。
在 BTD 网络的测试网运行期间,已有多个合作伙伴不同品牌不同型号的非专用的 BTD 存储节点和专业的 BTD 节点加入了 BTD 项目,各类 BTD 存储节点也已历经多次软硬件版本迭代,BTD 网络已具备了良好的网络基础。
BTD项目的区块链基本框架
1. 什么是区块链
区块链技术是在多方无需互信的环境下,通过共识技术实现系统中参与方的协作以达到对信息的认可与验证。这种协作是通过去中心化的方式达成多节点共同记录、维护、确认一个不可篡改、可靠的数据日志。区块链技术能够实现无需单节点中心服务器环境下,用户对数据的完整控制权和信任,从而让数字时代的生产关系更合理、更安全、对用户提供更有效的激励。
由于每个区块数据(Block)都是通过密码学技术来生成,并且数据块之间通过数据指纹链接(Chain)在一起,所以我们称这种结构为“区块链(BlockChain)”;又由于每个全节点都拥有所有的交易记录或数据日志总账,所以我们也称它为“分布式总账技术(Dributed Ledger Technology)”。
区块链技术的代表性项目和第一个成功应用就是比特币(BITCOIN)网络。
2. 项目开源平台
BTD 项目基于开源项目平台 ChainSQL 进行开发。ChainSQL 是将区块链与传统数据库相结合的开源区块链平台,其核心思想是:把对数据库的操作看作一次交易,在底层构建一种基于区块链网络的日志式数据库平台,从而使得对数据的操作历史可追溯、不可篡改,从而实现一个分布式去中心化的数据库。
ChainSQL 基于区块链的四个主要特性:去中心化(Decentralized)、去信任(Trustless)、集体维护(Collectively maintain)、可靠数据库(Reliable Database),建立账务系统。系统采用模块化设计,对共识算法、P2P 通讯协议、区块写入等功能进行封装,各模块可无缝对接。在区块链中保存共享凭证,执行激励发放,通过区块链的可回溯、不可篡改的机制,确保 BTD项目运行数据的公开、透明、公正。
基于 ChianSQL 平台,BTD 项目在构建时采用以下区块链底层技术:
2.1 共识算法
共识算法采用 RPCA(Ripple Protocol Consensus Algorithm)。
针对拜占庭将军问题,目前常见的有比特币与以太坊采用的 POW 算法,HyperLedger 采用的 PBFT 算法。然而,在些这种分布式支付系统中,由于海量节点间需要同步沟通,导致共识效率比较低。在 RPCA 算法中,为了降低这种同步沟通的成本,使用了一种子网络内部互相信任,由这些内部信任的子网络构成大的网络的方案。
这里子网络的信任成本非常低,可以被进一步降低为网络节点对于子网络内部其它节点的原子性选择。另外,为了维护全网节点数据的一致性,子网络之间需要的连接度不能小于一个阈值。通过以上解决方案,RPCA 实现了一种高性能,同时拥有较高拜占庭容错的算法。RPCA 算法已经应用在Ripple 共识协议中,并得到了大量实际应用验证。
该共识算法支持高网络吞吐量,平均期望超过 1000TPS。该网络下,每个节点均为非匿名节点;每个参与共识的服务器均维护 UNL(Unique Node LBTD)列表,列表上的服务器集合代表整个网络受信任的代表,即记账节点,由列表上的记账节点决定最终共识。
2.2 共识算法所解决的问题
近些年,针对分布式共识系统的研究越来越多,研究的目标是实现一种高性能,低花费,同时去中心化的交易系统。在这类系统的研究过程中主要问题可归为三类:正确性、一致性、可用性。
正确性指的是分布式系统要能识别正常交易与欺诈交易。在中心化系统中,这个问题是通过机构之间的信任以及数字签名来保证交易确实是由某个机构发出来解决的。而在去中心化系统中,大家甚至都不认识对方,自然无法建立类似的信任关系,因此,必须找到一种替代方案来保证交易的正确性。
一致性指的是要在去中心化系统中保证能达成全局唯一的共识。与正确性不同的是,一个恶意用户也许不会发起欺诈交易,但是他可以通过同时发起多笔正确的交易来谋利。在区块链中,典型的例子是“双花”问题。因此一致性问题可被归结为如何保证系统中只能有一个全局唯一识别的交易集的问题。
可用性在去中心化支付系统中一般指的是性能问题。假设一个系统既能保证正确性又能保证一致性,但是需要一年时间才能确认一笔交易 ,那很显然这个系统的可用性很低。另外,可用性的其它方面包括达成正确性与一致性需要的算力水平、为避免一个用户被欺诈所应用的算法复杂度等。
RPCA 算法的实现,可以很好的解决以上三个问题。
2.3 共识算法的基本概念
服务节点,就是可以接收交易的区块链节点,包括验证节点与非验证节点两种,验证节点是指被其它节点加入到信任列表中的节点,可参与共识过程,非验证节点不参与共识过程。
区块和区块记录交易,在 RPCA 中有两种区块比较关键,一个是最新关闭的区块,也就是最新被共识过的区块,另一个是开放区块,开放区块是指当前正被共识的区块,当开放区块被共识过,也就成了新的最新关闭的区块。
UNL(Unique Node LBTD)信任节点列表,每个服务节点都会维护一个信任节点列表,这里的信任是指这个列表中的节点不会联合起来作弊。在共识过程中,系统功能只接受来自信任节点列表中节点的投票。在底层链中,信任节点通过配置文件中加入其它验证节点的公钥的方式来指定 UNL。
2.4 共识过程
底层链网络每隔几秒就会产生一个新的区块,这个区块的产生过程就是所有网络节点 RPCA 共识的过程。假设共识过程是成功的,并且网络中没有分叉产生,那么新生成的区块就是全网唯一的。
RPCA 对交易分两个阶段完成,第一阶段是达成交易集的共识,第二阶段是对新生成的区块进行提议,最终形成被共识过的区块。
达成交易集的共识分轮进行,在每一轮中进行下面的操作:
每个节点在共识开始时尽可能多的收集所能收集到的需要共识的交易 并放到“候选集”里面;
每个节点对它信任节点列表中的 “候选集”做一个并集,并对每一个交易进行投票;
UNL 中的服务节点交流交易的投票结果,达到一定投票比例的交易会进入到下一轮,达不到比例的交易要么被丢弃,要么进入到下一次共识过程的候选集中;
在最终轮中,所有投票超过 80%的交易会被放到共识过的交易集中,这里的交易集与比特币类似,也是 Merkle 树的数据结构。
形成交易集后,每个节点开始打包新的区块,打包区块的过程如下:
把新的区块号、共识交易集的 Merkle 树根 Hash、父区块 Hash、当前时间戳等内容放到一起,计算一个区块哈希;
每个节点广播自己得出的区块哈希到它可见的节点,这里的可见节点不仅仅指可信列表中的节点,而是通过节点发现过程能发现的节点;
节点收集到它所有可信列表中节点广播过来的区块哈希后,结合自己生成的区块哈希,对每个区块哈希计算一个比例,如果某一哈希的比例超过一个阈值(一般是 80%),则认为这个哈希是共识通过的区块哈希。如果自己的哈希与之相同,则说明自己打包的区块得到了确认,是新的被共识过的区块,直接存到本地,并且更新状态。如果自己的哈希与共识通过的哈希不同,那就需要去某个区块哈希正确的节点索要新的区块信息,要到之后存储到本地并且更新当前状态;
如果上面没有对某一区块哈希超过设定的阈值,那么重新开始共识过程,直到满足条件。
至此,一个区块的共识过程结束,开启下一轮共识过程。
2.5 验证
更为快速有效的区块认证技术:由全网所有的信任节点负责记账,超过半数的记账节点维护的区块链为有效链。区块生成后,广播到全网由记账节点进行投票,记账节点按收到的对某一区块的投票多少来决定选取哪个区块为有效区块,大约 3S 可以生成一个区块。
正确性:RPCA 中正确性的验证方式很简单,因为共识需要 80%的阈值,那么只要 UNL 中有 80%的诚实节点,就能达成共识,另外即使有超过 20%的欺诈节点,也不能破坏正确性,因为欺诈节点也必须达到 80%以上才能达成共识。无论欺诈节点还是诚实节点,达不到 80%,都无法通过共识。
一致性:一致性是通过子网络与其它子网络的连通性来保证的,要保证区块链不分叉,必须确保每个子网络必须至少与整个网络节点中的 20%保持连通性。
可用性:在每一轮投票过程中,节点会搜集它 UNL 中每个节点的响应时间,一直响应时间慢的节点将会被剔除出去,这样 UNL 就能保持一个较高的沟通效率。在高效沟通的前提下,RPCA 算法能保证每 3-10 秒产生一个区块,TPS>1000。
2.6 多点数据同步
节点数据不全时,向相邻节点索取数据,通过数据离散、多节点同时索取、本地再组合的方式,使系统具备了数据快速传输,断点续传等优秀特性。
2.7 Radix-Merkle 存储算法
区块中的状态与交易,根据哈希后的结果以 Merkel 树的形式进行组装。以基数树的结构来设计多个叶子节点,通过 key 值可以快速索引到具体的某一个交易或者状态。
2.8 改进的 lz4 压缩算法
交易内容中的每个字段,按名称进行排序,得到固定顺序的数据内容,通过改进后的 LZ4 算法,得到较高的压缩比及压缩速度。
2.9 智能合约
项目的存储积分和激励积分的发放基于智能合约执行,对提供存储服务的节点用户进行激励。
3. 分层框架
BTD 项目的技术分层框架包括:应用层、网络节点层、存储节点层、文件系统层、区块链共识层等多个不同层级。
分布式存储节点:为 BTD 项目提供存储、带宽、计算资源的存储节点;
分布式网络节点:为 BTD 项目提供 P2P 穿透和域路由功能的网络节点;
分布式文件系统:BTD 项目分布式文件系统 BDFS。
区块链共识层:基于 ChainSQL 平台,共识机制基于 RPCA。
应用层:BTD 钱包 APP(IOS、Android、Windows 等)。
4. BTD钱包
BTD 钱包分为用户层、应用层、服务层、交易层和技术平台层,提供去中心化账号管理和结算接口,内置安全交易功能,主体是一个轻量级区块链客户端(light-weight client)。
基本功能
地址注册、账号导入与导出和交易密码管理等功能。用户的钱包文件和私钥由用户自行保管,将用户的权利完全归还用户,系统更私密安全。用户私钥一旦丢失,钱包将永远不可找回。交易密码只用于保护用户日常操作安全性,可通过私钥进行重置。
资产功能
HDT/BTD 的相互转账、兑换等各种功能。
查询功能
HDT/BTD 交易查询,让一切数据尽在掌握。
BTD项目的技术方案
1. 存储资源池的形成
BTD 项目的存储资源池来源于所有愿意贡献其闲置存储空间的用户。用户通过贡献其闲置存储空间来参与建设 BTD 项目,并获得相应的数字资产 HDT+BTD 回报。
加入 BTD 项目后,节点所贡献的存储空间将会成为 BTD 项目分布式存储池的一部分,海量的存储节点共同构建一个海量、弹性、可持续增长的存储池。
2. 存储节点与和存储链建设
每一个运行 BTD 项目存储服务的节点,既作为存储服务的提供者,同时也是存储服务的校验者和存储链信息的传递者。
所有存储节点共同实时协调工作,保障 BTD 项目的稳定运行。
3. 存储节点的HDT存储积分
BTD 项目根据经典的工作量证明共识机制和分布式存储的技术特点,结合分布式硬件节点的工作特性,提出基于可信赖存储证明 PoCR(Proof of Capacity Reliability)算法,根据节点所共享的存储空间大小、在线率、网络上下行带宽、实际存储、检索、读取服务质量等对节点的服务进行校验和激励,节点获得其HDT 存储积分。
每天每个存储节点所获得的存储积分 HDT 的数量 A,按照如下算法进行计算:
A=节点贡献存储容量*在线率评分系数*网络带宽评分系数*节点硬件评分系数*节点信任度评分系数。
定义1HDT=1G*1 月,代表存储节点不间断地提供1个月1个G存储空间的服务工作量。
一台贡献1T 存储容量,标准化环境(在线率评分系数=1,网络带宽评分系数=1, 节点硬件评分系数=1,节点信任度评分系数=1)下的 BTD 存储节点,每天可产出 HDT 数量为:
A=(1024G*12 月/365 天)*1*1*1*1=33.7 HDT。
节点每天的实际产出数量会因为上述各项系数不同而产生差异。
在线率评分系数:根据存储节点在线率进行评估。当在线率低于70%时,评分系数为0。在线率70%-90%时,评分系数为50%;在线率90%以上不足100%时,评分系数80%;在线率100%时评分系数100%。
网络带宽评分系数:参考上行带宽5MB/s,下行带宽20MB/s。如果一条宽带下面运行了过多存储节点设备,则存储节点设备的收益比将降低。
节点硬件评分系数:参考处理器等硬件处理能力指标,以及实际评估节点硬件运行 BTD 客户端软件的效率,取值范围 0.8-1 之间。
节点信任度系数:当节点信任度机制被启动时,所有节点信任度初始值为5%。如果次日在线率 100%,则信任度增加 5%,连续保持 20 天后节点信任度系数达到 1,节点信任度达到 1 后不再增加。运行期间任何一天在线率低于 90%,节点信任度将重新从 5%开始计起。信任度机制启动后,节点也可通过质押 BTD 来增加该节点地址的信任度并承诺在失信时接受惩罚扣除其质押的 BTD,被扣除的BTD 将会被销毁。节点信任度机制将于每天 HDT 数量产出达到一定高度时被激活。
结算周期: 每 24 小时结算一次。
4. 存储节点的BTD激励积分
HDT 积分体现的是节点为 BTD 项目运行所贡献的工作量。而 BTD 则体现的是节点对全网的价值贡献比例。BTD 基于 PoS 算法进行计算。
每天某个节点获得的 BTD 激励积分的数量 B,按照如下算法进行计算:
B=该节点对全网的价值贡献比例 C*当日全网新增 BTD 总量。
【备注:当日全网新增 BTD 总量根据当天全网新增 HDT 的数量而定,具体方案见白皮书中“BTD 的分配与产出”章节】
每天某个节点对全网的价值贡献比例 C,按照如下算法进行计算:
C=(该节点当日新增 HDT/全网节点当日新增 HDT)*当日存力占比+(该节点 HDT 余额/全网节点 HDT 总产出)*历史存力占比+(该节点当日BTD 余额/全网节点 BTD 总额)*未来发展占比;
当日存力占比:取值范围 0%-100%。
历史存力占比:取值范围 0%-30%。
未来发展占比:取值范围 0%-100%。
BTD 的产出,综合考虑了节点对全网的当日贡献(类比现实世界中企业为员工发放的每日工资),历史贡献(类比现实世界中企业为老员工发放的长期贡献奖),以及未来发展贡献(类比现实世界中企业为核心骨干发放的期权),代表了分布式存储领域最为合理的贡献机制。
BTD 项目通过每日 HDT 产出量的变化趋势、系统 HDT 池余额和消耗比例、BTD 持币账户集中度等运行指标来判断当前存力是否满足存储市场的需要以及市场是否过热或过冷,综合指标超过阈值会触发智能合约,对当日存力占比、历史存力占比、未来发展占比等参数进行调节,在全网存力不足时鼓励更多节点加入存储网络提升存力,在 BTD 持币账户过度集中时鼓励新增用户分散 BTD 持币比例,从而促进和保障 BTD 项目的持续健康稳定运行。
5. 智能合约和系统HDT池
如果将 BTD 项目看作一个虚拟经济体,则随着存储网络规模的持续运行以及执行存储任务, 其产出的 HDT 积分总和代表了虚拟经济体的总经济规模。
另一方面,作为整个 BTD 项目价值承载体系的 BTD 而言,其产出的 BTD 代表了虚拟经济体的总交换价值。
因此可以认为在任意时刻,当前已流通 BTD 总价值 = 所有已流通的 HDT总价值+ BTD 流通性溢价。
如果 BTD 流通性溢价>0,在任意时刻,可以认为:
1 BTD >= ( 系统当前流通 HDT 总量/系统当前流通 BTD 总量) * 1 HDT 。
因此,BTD 项目通过链上智能合约赋予用户使用 BTD 兑换 HDT 的权利,但兑换用户只能将所兑换的 HDT 用于驱动存储服务。
智能合约:1 BTD= ( 系统当前流通 HDT 总量/系统当前流通 BTD 总量) * 1HDT 。
智能合约通过合约形式进一步确定了 BTD 的内在价值和行权权利。
BTD 持有者可自行评估是否使用,以及何时使用该项权利。
为保障该智能合约的执行, BTD 项目设立系统 HDT 池。
每日系统新增 HDT 总量=全网节点新增 HDT+系统池新增 HDT。
系统池新增 HDT = 全网节点新增 HDT* 系统池占比。系统池占比取值 5%-20%。
智能合约的执行:用户地址向智能合约地址打入 BTD,智能合约按照对应比例向用户地址打入 HDT。
智能合约被执行后,相当于对应的 BTD 已完成了行权,这一部分 BTD 将永久锁定在系统池智能合约地址被销毁,不再参与流通。
除用于保障 BTD 智能合约执行,HDT 池还用于支持基于 BTD 存储链的dApp 业务。
在计算节点 HDT 对全网的贡献比例时,系统 HDT 池余额不参与计算。
当系统 HDT 池出现不足时,智能合约会延期执行,并会调整 BTD 产出算法中的当日存力占比、历史存力占比、未来发展占比等参数,并在满足智能合约执行条件后继续执行智能合约。
6. BTD的价值
由于 HDT 总量会随时间和网络规模的快速增加而持续增长,其增长速度比BTD 增长速度要快;而 BTD 总量有限且会因节点信用度质押违约销毁、智能合约执行销毁、回购销毁等各种场景使得 BTD 因销毁而数量减少;根据 BTD 的兑换智能合约,这意味着单位 BTD 所能对应的 HDT 数量会持续增加。
因此,当 BTD 项目存储网络持续稳定运行和发展时,单位 BTD 所能对应的存储服务能力会持续增多,BTD 具有天然的内在价值增长属性。
7. BTD项目的具体实现
BTD 项目的每个用户账户实际上是一个 BTD 钱包地址。每个用户保存自己的私钥,并将公钥对应的算法保存至 BTD 项目。
BTD 项目的用户使用 HDT 对存储服务进行驱动。一方面,BTD 项目用户对文件的存储、读取、和分享等行为驱动整个 BTD 项目实现相关功能;另一方面,用户在存储和读取文件时需支付 HDT,从而来激励 BTD 项目上的存储服务节点和辅助验证节点的有序运行。
BTD 项目的具体技术实现,由文件存储、文件检索和读取等环节构成。
8. 文件存储
BTD 项目用户进行文件存储时,需要使用 HDT 对 BTD 项目进行驱动。
BTD 项目文件系统使用 BDFS 分布式文件系统作为底层文件系统。
9. 文件检索和读取
用户对已存储的文件进行检索和内容读取时,根据文件 HASH 标识在 BTD存储链中进行广播检索,有该 HASH 资源的存储节点收到广播后通知用户,用户验证确认后,根据存储节点的的网络情况,选择网络信道最优的多个节点,同步读取该文件的不同数据分片实现并行下载,取得足够的文件片数后解密从而恢复文件。
10. 小结
BTD 项目是由分布于全球的存储节点共同组成的分布式存储网络,每个存储节点都对外提供一定的存储容量资源和网络带宽保证从而形成海量和弹性的存储资源池,共同对外提供私密安全的共享存储服务。
除了用户自身,包括存储节点以及比特米基金会技术团队在内的任何其他方都无法获得文件内容,保证了 BTD 项目具有非常高等级的私密性;
而全球海量节点的冗余备份,也避免了单节点失效对文件存储服务的影响,从而保证了 BTD 项目具备天然的异地容灾备份能力和数据安全保障能力。
同时 BTD 项目不依赖任何中心服务器,这也意味着任何恶意的单节点攻击都将失效。(BTD)