真理还是谎言: 声望分越高对别人声望分影响越大吗?/ 代码&测试:到底什么影响声望分的增加?

最近有些朋友问我,声望分越高的人给别人点赞,对方的声望分增加的越快吗?其实我直观的感受不是这样的,而是有效SP越多的给别人点赞,对别人的声望分影响越大。

但是直观的感觉有时候可能会得出错误的结论,自己凭感觉做事到无所谓了,但是如果给他人造成误导,就不妥了。恰巧,我对声望分如何增加以及都受哪写因素影响,一直不甚清楚,那么就这个机会调查一下,帮别人也是帮自己答疑解惑吧。


(图源 :pixabay)

声望分与声望数值

在五个多月以前,我曾经做过一组图形,来展示了一下声望分升级曲线。比如说以下两幅图形:


图一: 声望分-20到70 / Reputation Score -20 to 70


图二: 声望分25到60 / Reputation Score 25 to 60

从这些图形中我们不难得出结论:

  • 声望分以25为中心,对称分布的
    Reputation score using 25 as the axis, symmetrically distributed.

  • 声望分越高,提升越困难
    The higher the reputation score, the more difficult to raise it up.

但是,上述分析其实只是reputation scorereputation数值的关系,换句话说是把原本线性变化的数值变成了对数变化的分值

真正影响你声望分(分值)变化的是reputation这个数值,而上述分析中,我们没能体现出来这个数值是如何变化的。为了搞懂这个数值很什么有关系,我尝试去代码找到答案并做了一些测试。

代码

调整reputation的代码位于这个文件中,其中相关的代码如下:

影响声望数值的原则

从注释和代码中我们不难看到以下原则:

  • 点赞者声望数值为负不会对他人声望分产生影响
    if( voter_rep != rep_idx.end() && voter_rep->reputation < 0 ) return;
  • 声望数值比作者声望数值低,差评没有影响
    • 作者尚无声望数值
      if( cv->rshares < 0 && !( voter_rep != rep_idx.end() && voter_rep->reputation > 0 )) return;
    • 作者已有声望数值
      if( cv->rshares < 0 && !( voter_rep != rep_idx.end() && voter_rep->reputation > author_rep->reputation ) ) return;

什么影响声望数值

那么去掉以上对声望数值没影响的情况,什么会对声望数值产生影响呢?我们再来看代码:

  • 作者尚无声望数值

  • 作者已有声望数值

也就是说,影响声望数值的唯一因素就是投票产生的rshares.

说到rshares,我们在前边文章中不止一次讲过,除了区块链本身一些因素,rshares只跟投票者的有效SP、投票百分比、投票者当前Voting Power有关。

测试

为了证实上述结论:影响声望数值的唯一因素就是投票产生的rshares

我使用测试账户进行了一下测试:

测试账户之前的声望数值:

测试账户发表个回复,我们对其点赞:

点赞后的声望数值:

通过计算我们可得:
77092232437 + 29363586547 / 64 = 77511038476

计算结果有公式:r.reputation += ( cv->rshares >> 6 );相符。

点7天以上老帖的情况

你可能会问,你上边没有说明对7天以上老帖子点赞是否会影响声望数值,那么是不是意味找给老帖点赞也会增加作者的声望数值啊?

好吧,为了不让代码霸屏,我截取的有点短,其实还有这样一段代码:

也就是说给老帖点赞不会增加作者声望数值

结论


(图源 :pixabay)

  • 点赞者声望数值为负不会对他人声望分产生影响
  • 声望数值比作者声望数值低,差评没有影响
  • 影响声望数值的唯一因素就是投票产生的rshares
  • rshares只跟投票者有效SP、投票百分比、Voting Power有关。
  • 给老帖点赞不会增加作者声望数值

(注:声望数值为负和声望分为负是两个概念哦)

写到这里,声望分越高对别人声望分影响越大,是真理还是谎言,还用我额外给出结论吗?

相关链接

H2
H3
H4
3 columns
2 columns
1 column
32 Comments