最近有些朋友问我,声望分越高的人给别人点赞,对方的声望分增加的越快吗?其实我直观的感受不是这样的,而是有效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 score
与reputation数值
的关系,换句话说是把原本线性变化的数值变成了对数变化的分值。
真正影响你声望分(分值)变化的是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有关。- 给老帖点赞不会增加作者声望数值
(注:声望数值为负和声望分为负是两个概念哦)
写到这里,声望分越高对别人声望分影响越大,是真理还是谎言,还用我额外给出结论吗?