共识理论问题
6. 抗 ASIC 的工作量证明
解决该问题的一种方法是基于一种很难专门化的计算类型来创建工作量证明算法。有关抗 ASIC 的硬件的更深入讨论,请参见 https://blog.ethereum.org/2014/06/19/mining/。
状态:已在最大限度上解决。
在《难题》一文发表的 6 个月后,以太坊决定选用抗 ASIC 的算法 Ethash 作为其工作量证明算法。众所周知,Ethash 是一种内存密集型算法。理论上来说,普通计算机对内存的随机读写已经是充分优化的了,所以很难为专门的应用进一步提高效率。Ethash 正是企图让内存读取变成 PoW 计算的主要部分,以此实现 ASIC 抗性。Ethash 不是第一种内存密集型算法,但它加入了一项创新:运行算法需要在一个双层(two-level)的 DAG(有向无环图)执行伪随机查找,这就提供了两种计算函数的方式:第一种,如果你拥有整个 DAG 文件(约 2GB),那么你可以快速计算出函数值,这是一种内存密集型的 “快速计算路径”;第二种,如果你只拥有 DAG 的顶层,那么计算速度就会慢很多,但仍能快速验证一个给定的值是不是一个合适的解,这可以用于区块验证。
Ethash 在抵抗 ASIC 方面被证明非常成功。以太坊上线三年并成功发放数十亿美元的区块奖励之后,ASIC 确实出现了,但其算力和效率充其量最多比 GPU 高 2-5 倍。有人提出 ProgPoW 作为 Ethash 替代方案,但越来越多的共识认为,抗 ASIC 的算法注定不能长久,并且 ASIC 抗性有缺点,因为它使 51% 的攻击便宜(例如,参见对以太坊经典的 51% 攻击) )。
我相信,具备中等程度的 ASIC 抗性的 PoW 算法是有可能存在的,但是这种抵抗力只在有限时间内有用,并且 ASIC 和非 ASIC 的工作证明都各有缺点。从长远来看,区块链共识的更好选择是权益证明。
7. 具有实际效用的工作量证明
所谓实用性工作量证明就是让工作量证明的结果也对其它领域有用;常见的对标项目类似于 Folding@home:Folding@home 的用法是用户下载来软件,在自己的计算机上模拟蛋白质折叠并提供数据给研究者,帮助他们治疗病症。
现状:也许是不可能的,但可能有一个例外。
有用的工作量证明所面临的挑战是,工作量证明算法需要许多属性:
1 难以计算
2 易于验证
3 不依赖大量外部数据
4 对小量级的数据可以高速运算
不幸的是,没有多少实用的计算项目可以保留所有这些属性。并且,大多数具有所有这些属性,而且 “有用” 的计算 “有用” 的时间太短,无法基于它们构建密码货币。但是,有一个可能的例外:零知识证明生成。区块链有效性方面的零知识证明(例如,数据可用性根)难以计算且易于验证。而且,它们的计算难度能长久保持,如果对 “高度结构化” 的计算的证明变得太容易了,可以调整到验证区块链的整个状态转换,由于需要对虚拟机和随机内存访问进行建模,它需要消耗大量的计算资源。
区块链有效性的零知识证明为区块链用户提供了巨大的价值,因为它们可用于代替对区块链历史的直接验证;Coda 已经在做这件事,而且使用了一种专门为可证明性优化过的简化区块链设计。这些证明可以极大地帮助改善区块链的安全性和可扩展性。不过,实际需要完成的计算总量仍然远远小于工作量证明矿工当前完成的计算量,所以,最好把它作为权益证明区块链的附加部分,而不是用作共识算法。
点击关注币海启行微信公众号,了解更多