干货 | 密码货币难题 5 年回顾:共识理论
作者: Vitalik
翻译&校对: 阿剑、陈亮 & 阿剑
来源:以太坊爱好者
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 的用法是用户下载来软件,在自己的计算机上模拟蛋白质折叠并提供数据给研究者,帮助他们治疗病症。
现状:也许是不可能的,但可能有一个例外。
有用的工作量证明所面临的挑战是,工作量证明算法需要许多属性:难以计算;易于验证;不依赖大量外部数据;对小量级的数据可以高速运算。
不幸的是,没有多少实用的计算项目可以保留所有这些属性。并且,大多数具有所有这些属性,而且 “有用” 的计算 “有用” 的时间太短,无法基于它们构建密码货币。但是,有一个可能的例外:零知识证明生成。区块链有效性方面的零知识证明(例如,数据可用性根)难以计算且易于验证。而且,它们的计算难度能长久保持,如果对 “高度结构化” 的计算的证明变得太容易了,可以调整到验证区块链的整个状态转换,由于需要对虚拟机和随机内存访问进行建模,它需要消耗大量的计算资源。
区块链有效性的零知识证明为区块链用户提供了巨大的价值,因为它们可用于代替对区块链历史的直接验证;Coda 已经在做这件事,而且使用了一种专门为可证明性优化过的简化区块链设计。这些证明可以极大地帮助改善区块链的安全性和可扩展性。不过,实际需要完成的计算总量仍然远远小于工作量证明矿工当前完成的计算量,所以,最好把它作为权益证明区块链的附加部分,而不是用作共识算法。
8.权益证明
解决挖矿中心化问题的另一种方法是完全取消挖矿,并转向其他机制来决定共识过程中每个节点的权重。迄今为止,在讨论中最受推崇的替代方案是 “权益证明”。亦即,不再是 “一个 CPU 一票” 而是 “一块钱一票”。
现状:理论上取得重大进展,尚待进行更多实际评估。
在2014年底,权益证明社区便清楚地知道,某种形式的 “弱主观性” 是不可避免的。为了维护资金安全,节点在首次同步时需要在协议进程外获取最近的检查点,如果节点离线超过几个月则需要再次获取。这是很难解决的弱点。许多 PoW 拥护者仍然坚持使用 PoW,就是因为在 PoW 链中,链的起点是可以被发现的,而你唯一需要信任的数据来源就是区块链客户端软件本身。但是,PoS 倡导者愿意承担这个弱点,因为这里引入的信任要求并不高。从那开始,借由要求安全保证金长期存储来实现权益证明机制的路径就变得清晰了。
如今,最有趣的共识算法从根本上类似于 PBFT,但是用一个动态列表替换了固定的验证者集,任何人都可以通过将代币发送到具有锁定时间的系统级智能合约中来加入动态列表(例如,在某些情况下,代币可能最多需要 4 个月才能取出)。在许多案例中(包括以太坊2.0),这些算法通过对违反协议某些条款的验证者进行处罚,而实现了 “经济确定性”(有关权益证明取得的成果,请参见此处的高度凝练的观点)。 截止到今天,我们有(还有许多其他算法):
Casper FFG: https://arxiv.org/abs/1710.09437
Tendermint: https://tendermint.com/docs/spec/consensus/consensus.html
HotStuff: https://arxiv.org/abs/1803.05069
Casper CBC: https://vitalik.ca/general/2018/12/05/cbc_casper.html
人们还在对这些算法继续进行优化(例如,这里和这里)。Eth2 阶段0将使用FFG算法,目前正在开发中,并已取得了巨大进展。另外,使用 Tendermint 的 Cosmos 链已经运行好几个月了。我认为,关于权益证明的其余论点与优化经济激励措施有关,以及进一步规范应对 51% 攻击的策略。此外,Casper CBC 规范仍需要很多效率上的改进。
9.存储证明
解决该问题的第三种方法是使用计算能力或货币以外的稀缺计算资源。在这个议题上,已提出的两个主要替代方案是存储容量和带宽。原则上,提供拥有或使用过相应带宽的密码学证据是不可能的,因此,带宽证明应被视为社会证明的一个子集(因此我们会在后面的问题中讨论)。但是存储容量证明是必然可以通过计算完成的,存储容量证明的一大优势是完全抗 ASIC。硬盘驱动器中的存储类型已经接近最优(效率不可能更高了)。
现状:理论上有很多进步,但是还有很多工作要做,尚待实际场景中的评估。
有许多计划使用存储容量证明协议的区块链,包括Chia和Filecoin。也就是说,这些算法尚未经过实际测试。我自己的主要担忧是集中化:这些算法最终是由使用备用存储的、容量较小的用户主导;还是由大型矿场主导?
(未完)