Memory-hard puzzles
刚性内存解谜(Memory-hard puzzles)需要大量的内存计算,而不是靠大量的CPU时间
- 大多数被设计成反ASIC的解谜程序中,最普遍被应用的叫做刚性内存解谜(Memory-hard puzzles)。一个相似但又不一样的概念是内存限制解谜(memeory-bound puzzles),花在读取内存上的时间,占据了这种程序大部分的计算时间。
- 一个解谜可以是刚性内存类而不是内存限制类,或是内存限制类而不是刚性内存类,或是二者兼而有之。一个微妙但重要的区别在于,虽然CPU的速度是计算时间的瓶颈,但平行运算大量解谜的成本,还是被内存的成本所左右,或者反之亦然。
- 通常对于运算类的解谜程序,要做到刚性内存和内存限制,就需要保证在运算过程中大量的内存被要求使用,使之成为一个限制性因素。
为什么刚性内存解谜或内存限制解谜可以反ASIC?
- 因为用来计算哈希函数的逻辑运算只占了CPU里的一小部分,意思是在比特币的解谜计算里,ASIC不需要执行一些不必要的功能,而只需要执行计算哈希函数的相关功能,所以占了很大的优势。另外一个相关的元素是,不同的内存性能上的差异(和单位性能的成本)比不同处理器之间运算速度上的差异要小很多,所以如果设计一个刚性内存类解谜,计算时需要相当简单的算力但需要大量的内存,这就意味着,解谜成本的上升速率将会像内存成本提升速率那样,在一个相对低一些的水平。