Proof of work - 工作量证明

简述:

在垃圾邮件防范和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次方)。


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





你可能感兴趣的:(Proof of work - 工作量证明)