BTD 存储节点所产出的 BTD 总量为 224000 万个。 BTD 的产出数量根据当日新增的 HDT 数量决定。每日 BTD 产出数量与 HDT 数量的相互关系为
即当每日 HDT 增长时,对应产出更多的 BTD。但当每日新增 HDT 超过 500 万后,每天新增 BTD 固定保持为 35 万,直到 BTD 产出完毕。BTD 产出完毕后,存储节点每天还会继续产生新增的 HDT,此时每个 BTD 可行权获得的 HDT 数量会继续持续增加。
又一个WordPress站点
用户对已存储的文件进行检索和内容读取时,根据文件 HASH 标识在 BTD 存储链中进行广播检索,有该 HASH 资源的存储节点收到广播后通知用户,用户验证确认后,根据存储节点的的网络情况,选择网络信道最优的多个节点,同步读取该文件的不同数据分片实现并行下载,取得足够的文件片数后解密从而恢复文件。 5.10 小结 BTD 项目是由分布于全球的存储节点共同组成的分布式存储网络,每个存储节点都对外提供一定的存储容量资源和网络带宽保证从而形成海量和弹性的存储资源池,共同对外提供私密安全的共享存储服务。除了用户自身,包括存储节点以及比特米基金会技术团队在内的任何其他方都无法获得文件内容,保证了 BTD 项目具有非常高等级的私密性; 而全球海量节点的冗余备份,也避免了单节点失效对文件存储服务的影响,从而保证了 BTD 项目具备天然的异地容灾备份能力和数据安全保障能力. 同时 BTD 项目不依赖任何中心服务器,这也意味着任何恶意的单节点攻击都将失效。
恶意用户攻击指存储节点真实完成存储服务后,恶意拒绝支付存储节点所应得的 HDT 激励的行为. 为防止上述攻击,BTD 项目采取了创造性的信任机制进行防范。用户 A 在第一次存文件时其地址信任度为 0(因为其历史上从未成功执行过存储任务),所以该用户即使其申请保存某个巨大文件,但其请求也会被存储节点的智能合约拆分成微小文件,并在微小文件存储任务完成后和用户 A 进行结算,只有结算完成,存储节点获得该部分文件所应得的 HDT 激励后,此时用户 A 信任度才能提升,从而才会自动允许加大存储量,自动继续执行后续任务。因此用户的信任度是必须通过花费 HDT 才能提升。因此恶意用户必须支付前置成本(发起攻击前其地址信任度必须大于 0,从而意味着恶意用户为实施攻击必须支付前置成本),且该成本会随着其试图恶意消耗存储容量的大小而迅速提升造成攻击成本难以承受;此外恶意用户的恶意攻击行为也会在极短时间之内被存储节点所发现,存储节点将删除其已保存的文件,并将此用户列入恶意用户名单,从而可防止恶意用户对存储链产生广泛和实质性影响。
BTD 项目用户进行文件存储时,需要使用 HDT 对 BTD 项目进行驱动。 BTD 项目文件系统使用 BDFS 分布式文件系统作为底层文件系统5.8.1 典型存储过程 BTD 项目用户 A 存文件时,先将所需存储的文件进行分片和冗余加密,并形成文件分片的 Merkle 树,然后向存储链广播相应的分片存储请求消息,内容包含任务序号、文件分片大小、Hash 值,以及所需存储的副本数量、节点向下广播跳数、广播有效期和所支付的 HDT 等相关信息。智能合约核实用户 A 的 HDT 后将其所支付的 HDT 进行冻结,然后广播消息才能对外发送,以防止 HDT 不足的用户浪费存储资源行为的产生。用户 A 在 BTD 项目上的临近节点和路由节点收到该任务广播后,先校验用户 A 的 BTD 项目地址是否真实,以及合约任务所输入的 HDT 是否充足,校验任务真实性后,决定是否响应本次存储任务。如果该临近节点决定执行本任务,则将该信息的广播跳数减 1 后继续向自己的临近节点进行广播。如果临近节点决定不参与执行本任务,则不减广播跳数,直接向临近节点进行广播。节点依次类推进行消息广播,直到跳数减到 0 时截止广播。所有决定参与该任务的节点,都直接与用户 A 建立连接。此时用户 A 将根据响应存储文件的节点个数 N 和所需存储的份数 M,决定下一步操作:如果 N>=M,则智能合约根据节点的响应时间次序和节点存储服务质量加权,选择 M 个节点执行本次存储,由最终所确定和验证存储服务完成的 M 个节点共享用户 A 对本次存储服务所支付的 HDT。如果 N将根据 Hash 值判断已执行而选择忽略本次存储任务,不减广播跳数直接向临近节点广播。依次类推,直到用户 A 的存储任务被完整执行并验证后,同时用户 A 向最终的 M 个节点完全支付本次存储服务所对应的 HDT。无恶意节点情况时,典型存储任务一般在最多 2 次广播内完成。 BTD 项目创造性地使用 HDT 的成功交易作为信任度判断。某个存储服务用户的信任度与该用户地址为存储所花费的 HDT 总数正相关,而某个存储节点的信任度则与该存储节点地址因为提供存储服务而获得的 HDT 总数正相关。因此正常完成的存储任务,在将用户 A 用于存储服务所支付的 HDT 转移到存储节点的同时,既增加了用户 A 的信任度,也增加了存储节点的信任度。
如果将 BTD 项目看作一个虚拟经济体,则随着存储网络规模的持续运行以及执行存储任务, 其产出的 HDT 积分总和代表了虚拟经济体的总经济规模。另一方面,作为整个 BTD 项目价值承载体系的 BTD 而言,其产出的 BTD 代表了虚拟经济体的总交换价值。因此可以认为在任意时刻,当前已流通 BTD 总价值 = 所有已流通的 HDT 总价值+ BTD 流通性溢价。如果 BTD 流通性溢价>0,在任意时刻,可以认为: 1 BTD >= ( 系统当前流通 HDT 总量/系统当前流通 BTD 总量) * 1 HDT 。因此,BTD 项目通过链上智能合约赋予用户使用 BTD 兑换 HDT 的权利,但兑换用户只能将所兑换的 HDT 用于驱动存储服务。智能合约:1 BTD= ( 系统当前流通 HDT 总量/系统当前流通 BTD 总量) * 1 HDT 。智能合约通过合约形式进一步确定了 BTD 的内在价值和行权权利。 BTD 持有者可自行评估是否使用,以及何时使用该项权利。为保障该智能合约的执行, BTD 项目设立系统 HDT 池。每日系统新增 HDT 总量=全网节点新增 HDT+系统池新增 HDT。系统池新增 HDT = 全网节点新增 HDT* 系统池占比。系统池占比取值 5%- 20%。智能合约的执行:用户地址向智能合约地址打入 BTD,智能合约按照对应比例向用户地址打入 HDT。智能合约被执行后,相当于对应的 BTD 已完成了行权,这一部分 BTD 将永久锁定在系统池智能合约地址被销毁,不再参与流通。除用于保障 BTD 智能合约执行,HDT 池还用于支持基于 BTD 存储链的 dApp 业务。在计算节点 HDT 对全网的贡献比例时,系统 HDT 池余额不参与计算。当系统 HDT 池出现不足时,智能合约会延期执行,并会调整 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 项目的持续健康稳定运行。