Nissenice发帖(New Study About The Emule Credit System [1])转了一篇论文,本人将其粗略翻译了一下。才疏学浅必多有不当,欢迎多提意见。
文件名为:[浅析P2P文件共享系统中用于维系系统公平的信用系统][Yunshao Li, Don Gruenbacher][2010][Ejack译].pdf
百毒文库链接:http://wenku.baidu.com/view/cc89727da26925c52cc5bf32.html [2]
纳米盘链接:http://d.namipan.com/d/b409da2e880258fccb8cd8b3fec6d84d0e1c5189bffc0500
另外附上本人的读后感。
胡言乱语一句先:
某日张飞饥肠辘辘倒伏路旁。关羽路过,给了张飞一张饼。
张飞衷心感谢关羽,关羽却说:“要不是当初刘备玄德给我一张饼,我早就饿死了,哪里还能给你饼吃!”
张飞动情地说:“日后不论云长还是玄德遇到难处,燕人必当倾力以助!”
尽管这篇论文中的数学模型进行了太多不切实际的假设,导致其结论很难站得住脚,但是文章作者所提出的对信用系统的改进方案却很有意义。
概而言之作者的思路就是“散播信用积分”(请注意,这个概念跟SA的信用传播通道没有什么关系),简单来说就是允许有效的上传者声明一个或多个他所知道的良好上传者。整体思路大体如下仅供参考:
- a) A向B上传了180kB的文件块;
- b) 在验证此180kB数据块都是有效数据之后,B将认为A是有效的上传者,记录其信用积分。之后B向A发送一个CREDITSPD_REQ报文请求其提供优良的共享者(一个或多个Userhash);
- c) A可能会有以下的反应:
c-1) 如果A的客户端支持“信用传播”新功能,并且记录了一些对其上传贡献较大的用户,那么就会通过CREDITSPD_RES报文给B发送用户C的userhash(或是多个用户userhash的列表);
c-2) 如果A的客户端支持“信用传播”新功能,但是他本身主要上传、很少下载,那么可以无需应答。B等待超时后不再索取;
c-3) 如果A的客户端较旧,那么因为无法解析CREDITSPD_REQ就不会应答。B等待超时后不再索取;
- d) B如果得到了A的应答知道了C,就记录C的积分(即记录一些从C的下载,例如180kB/4)。
通过这种方式我们就能够实现信用积分的传播,让良好上传者能够在更多用户间拥有口碑,促进大家养成规规矩矩上传的习惯。同时并未更改原有的信用工作方式:仍然是下载方保留上传者的积分,不必担心被盗、被黑或者是唱双簧伪造积分之类的问题。
当然,这种方式下理论上系统内的信用积分并不平衡,上传的数据量总是会造成更多的积分。不过考虑到现实系统中信用积分实际上一直是在流失(用户hash变更,或者上传给了吸血骡、肉包子打狗),这样的改造我认为没什么害处。
请注意,我们的目的仍然是重“信用”而不是重“积分”,只是想略微改善当前信用仅局限于两人之间的情况,同时避免复杂而又脆弱的“上传贡献分”制度。