我在Javascript中寻求Proof Of Work可实现的功能。首先,我想使用一些基于hashcash的方法,但意识到这可能不会产生可接受的保护。 这是因为部分散列反向任务最多是CPU密集型。在这里,使用二进制文件生成此部分反向哈希的攻击者很可能会击败任何浏览器性能。 (甚至可能是JIT的增强版)。
因此,我寻求一个工作证明,它在CPU上并不重,但强制完成一定数量的内存访问,我认为这将是一个任务,浏览器的Javascript enines将更多地与编译的二进制文件配对解决相同的任务。我寻求一个提示如何/在哪里找到一些内存绑定的工作证明实现的实现。
答案 0 :(得分:3)
在https://github.com/tromp/cuckoo
尝试我的Cuckoo Cycle工作证明摘自自述文件:
"杜鹃循环代表了三个重要方面的突破:
1)它对每次随机访问内存只执行一次非常便宜的siphash计算,
2)(预期)内存使用量随图形大小线性增长,可以任意设置。在没有过度减速的情况下减少内存使用的机会可能非常有限。
3)工作证明的验证是即时的,需要2个sha256和42x2 siphash计算。
Cuckoo Cycle中的运行时间由内存延迟(67%)决定。"
答案 1 :(得分:2)
基于JavaScript的工作证明中的最新技术似乎是kaPoW,其来源可用here。
您提供的维基百科链接为内存限制的工作证明提供了许多很好的参考,如果您想使用现有的框架,kaPoW应该适合使用其中一个。
答案 2 :(得分:0)
你可以将比特币作为工作证明。没有关于破坏价值的更好证据。你在Javascript"中实现的任何东西会很可爱......但是如果你的连锁店有任何价值,最终有人会用CUDA建立一个更好的,然后Javascript就没用了。