Proof of work - 工作量证明

来源:互联网 发布:淘宝怎么看买家退款率 编辑:程序博客网 时间:2024/05/06 17:48

简述:
在垃圾邮件防范和DOS系统中,可能会用到“工作量证明”这个工具。简而言之,就是一份证明,它能够说明你为此工作了一定量的时间了。

 


当然,这只是对于一方而言的,游戏的另一方应该有一个很简单的办法验证你的答案是否正确。

 


举例子:
B给A出了一个难题,或者A自己找来一个难题,A花费了10分钟时间证明一个问题,然后把答案发送给B,B只要1秒钟不到就验证了答案是否正确。

 


这样在计算机系统中,可以用于这样的情形:

A请求一个B的服务,如果A可以段时间大量的请求,可能会造成B的崩溃,于是B对于服务的请求者出题,或者约定一种“解答-验证”协议

,这个题需要花费一定的时间去计算,计算好了以后,发送个B验证,B瞬间可以验证完毕,验证通过,再给A提供服务。

 


如果A是一个攻击者,这个时间花费×它要攻击的对象n是一笔可观的cpu计算量投入,因此可以有效阻止恶意攻击。

 


“工作量证明”工具:
 

Here is a list of known proof-of-work functions:

Integer square root modulo a large prime[8]
Weaken Fiat–Shamir signatures[8]
Ong–Schnorr–Shamir signature broken by Pollard [8]
Partial hash inversion[9][10][11][12] as Hashcash
Hash sequences[13]
Puzzles[14]
Diffie–Hellman-based puzzle[15]
Moderate[4]
Mbound[5]
Hokkaido[6]
Merkle tree based[16]
Guided tour puzzle protocol[7]

 

Hashcash
比如说,Adam Back提出的HASHCASH工具,启发比特币分布式货币系统。

 


hashcash可以用于防止垃圾邮件。

 


发信者需要对邮件头head,附加一个random,然后对这个string进行sha1-160,如果hash的前20个bit是0,那么就算solved,于是发送邮件给receiver。

 


收信人拿到以后,也对这个由sender发现的string进行hash,发现前20个bit确实是0,于是认为sender确实做了辛苦的hash搜索工作,于是相信sender不是一个垃圾制造者,sender可能是一个正常的邮件对象发送过来的。

 


这个案例中,工作量大概是,2的20次方个随间random搜索以后,大概可以找到一个前20bit是0的hash,也就是答案。因为前20个bit,每一bit是0的概率都是1/2,所有总的概率就是1/(2的20次方)。

 


而接收方的验证是极其简单的。

0 0