作者:UDFS / 来源:Ulord社区
UDFS作为分布式文件系统,使用的系统资源主要存储和网络。存储负责文件的存放,网络负责文件的传播。因此用户提供的节点所作的贡献即为提供给UDFS网络使用的存储空间和网络流量。此外这种奖励不应该有累计效应,即每次结算都于上一次结算所做的贡献无关,所以贡献要相对于某一段时间来统计。
对用户来说,奖励有点类似于“挖矿”,但是UDFS并不直接产生币,不能使用常见的共识算法来提供coinbase奖励。所以UDFS提供的奖励必然不是直接产生的(相对于共识算法中的一旦挖到矿,就给予奖励来说)。因此我们需要量化出贡献值,然后根据贡献值来进行奖励,具体的奖励方式,可根据具体的使用场景来定。
这里需要量化的指标又两个,流量和存储空间:
一、流量
流量又分两种:
用户直接访问该节点所产生的流量
用户直接访问节点的下行流量主要为用户上传文件产生,下行流量主要是用户获取文件产生。这部分流量其他节点无法感知到,因此无法被证明是否真实有效。
节点和其他节点数据交换所产生的流量
节点之间交换数据的上行流量,主要为该节点提供资源给其他节点产生,下行流量则主要是该节点向其他节点拉取资源产生。这部分流量对端节点存在对应的数据,是可以进行证明有效性的。
因此,在流量方面,我们只量化节点之间数据交互所产生的流量。
二、存储空间
存储空间反映了当前节点所提供的资源量,指定时间段内存储空间增长越多,表明该节点在这段时间内新增加了更多的资源。这些资源来源有:
用户直接增加到该节点上(add、push),这种情况相应的用户下行流量会比较高。
其他节点发起的备份请求(backup),这种情况相应的节点下行流量会比较高。
用户通过该节点获取资源时该节点主动缓存(get、cat),这种情况相应的用户上行流量会比较高。
综上,我们需要让UDFS的每个节点都能定期的上报指标数据,最终到一个大的周期来进行统计其贡献值。具体的统计流程如下:
- 进行节点之间的流量验证
- 统计A上报的B的流量Lb
- 统计B上报的A流量LA
- 对比这两个数值,超过一定的误差则过滤掉
- 统计好各节点的指标
- 统计A上报的存储变化量Sa
- 循环2-6过程,统计其他节点的流量和存储变化量
- 根据各指标及指标的相应权重,计算出节点的得分
- 公示得分榜单,公示期间允许做相应调整