版上真应该多一些这样讨论技术的文章!
LZ的思路和我的基本一致,但也有些地方不同,我也写写我的看法。
首先说说计算需要大量内存,但验证只需要很少内存的算法。
在bitcoin及其衍生出的各种coin体系中,计算的算法和验证的算法其实是同一个算法。挖矿的本质实际上是在不同组合中搜索找到一个能满足验证要求的组合,由于这种算法本身的特性,使得搜索结果不可预测,因此只能采用类似穷举的方法去逐一尝试。
如果想提升验证算法的复杂性和内存占用量,从而伤害矿工收益,那么这些复杂性的提高也会同等程度地伤害到普通客户端的验证工作;反之,若想让一般用户得益于验证的简单,矿工也会同等程度地受益。也就是说现有体系内,算法是对称的。
LZ想引入求解问题(或优化问题)的方式来区别普通用户和矿工的复杂度,但如LZ所说,问题由谁来出是一方面。另一方面,这类问题很容易触到数学中的NP问题,使得难度不可控,最后整个体系不可控。
所以满足这类要求的算法,恐怕很难实现。
另外,关于内存容量问题。我的观点是:我认为能限制ASIC矿机速度疯涨的不是内存容量,而是内存带宽。
看LZ的讨论似乎没有涉及到ASIC设计制造相关的话题,我就假定LZ没有IC设计经验了。
事实上,要在一个芯片中集成内存是非常容易的事情,各大工艺厂商基本上都提供的现有的内存单元。在ASIC矿机中集成大量内存没有技术上的难度,但有成本上的劣势:增加芯片面积导致成本增加。但成本问题会随着币值上升得到改善。最近LTC的行情不也带来的LTC ASIC矿机么,即便它的性能并不如人意,至少证明了它是可能的。
一般来说,ASIC中每次内存写需要一个时钟周期,每次内存读需要两个时钟周期(良好的流水线设计可能可以改进到一个周期)。以LTC使用的128K内存为例,假定时钟周期为200M,那么若要实现一个周期完成一次scrypt算法(即200MHash/s),那么内存带宽至少需要200M*128K=25600Gbit/s。显卡的内存带宽算比较高了,但不用去查证也能猜到远达不到这样的要求。而且这里还没有讨论高带宽内存带来的各种信号串扰的问题。
再看看最近出的Gridchip LTC矿机,有60kHash/s算力,那么它的带宽至少有60k*128K=7.68Gbit/s。这样的带宽不低了,所以我觉得Gridchip团队芯片设计能力还是很强的!
最后,另一位朋友提到可调整算法。我的观点是可调整算法也是算法,只要算法的功能行为可以预测,那么就可以在ASIC中实现它,ASIC始终活着。唯一需要考虑的是成本效率等各方面其他因素。
以上是我的一些想法,欢迎讨论!