二、共识理论问题
6.抗ASIC的PoW
现状:已尽力解决
在“难题”列表发布6个月之后,以太坊决定采用其抗ASIC的工作量证明算法:Ethash。Ethash被称为内存难解的算法。该理论是说,常规计算中的随机RAM已经取得很好优化,因此对专门应用来说很难有更大的提升。Ethash旨在通过将内存访问成为运行PoW计算的主导部分来实现抗ASIC。
Ethash并不是第一个内存难解的算法,但它确实增加了一项创新:它在两层DAG上使用伪随机查找,从而提供两种评估函数的方式。首先,如果一个人有整个DAG(~2 GB),则可以快速计算它;这是内存难解的“快速通路”。其次,如果一个人只有DAG的顶层,那么,计算它会慢得多(仍然足够快,以检查提供的单个解);这用于区块验证。
Ethash在抗ASIC方面被证明是非常成功的。在经过三年和数十亿美元的区块奖励之后,ASIC确实也存在,但其算力和成本效率只比GPU高2-5倍。
ProgPoW被提出来作为替代方案,但不断增长的共识认为,抗ASIC算法将不可避免地存在有限的生命周期,并且抗ASIC也有缺点,因为它让51%的攻击更便宜(例如,可以参看ETC 的51%攻击)。
我相信,可以创建能达到中等级别的抗ASIC的PoW算法,但这种抗ASIC也是有期限的,且ASIC和抗ASIC都有缺点。从长远看,区块链共识算法的更好选择是PoS。
7.有用的PoW
使得工作量证明功能同时有用。(蓝狐笔记:这里的所谓“有用”是指,PoW的算力只用来寻找一个谜题的解,并没有产生什么实际的用途,所以是“无用”,而“有用”是说将算力用于解决实际的问题,例如寻找素数等等,但是更关键的是POW算法需要具有难以计算易于验证等属性,这是核心。PoW的本质是将能源和算力转为价值存储,关于是否“有用”是存在争议的)
常见的“有用”候选者是类似于Folding@home这样的,它是现有的程序,其用户可以下载软件到自己的计算机上,模拟蛋白质折叠并给研究人员提供大量的数据,以帮助他们治愈疾病。
现状:可能不可行,只有一个例外。
有用的工作量证明所面临挑战是,工作量证明算法需要很多属性:
难以计算
易于验证
不依赖大量外部数据
可用小“字节-大小”的块进行有效计算
遗憾的是,没有多少“有用”的计算拥有全部这些属性,并且大多数有这些属性的“有用”计算只是“有用”的时间太短,无法基于它们构建加密货币。
然而,有一个可能的例外:零知识证明的生成。区块链有效性方面的零知识证明难以计算但易于验证。
此外,他们很难计算。如果“高度结构化”计算的证明变得很容易,则可以简单地切换到验证区块链的整体状态转换,由于需要对虚拟机建模和随机内存访问,因此这会变得非常昂贵。
区块链有效性的零知识证明为区块链用户提供了巨大的价值,因为它们可以替代直接验证链的需求。尽管是简化的区块链设计,而其可验证性进行了极大的优化,Coda在做这个事情了。
这些证明可以极大地帮助改善区块链的安全性和可扩展性。也就是说,实际需要完成的计算总量仍然远远小于当前PoW矿工当前完成的计算量,因此,其充其量不过是PoS区块链的附加项,而不是完整的共识算法。
8.PoS
解决挖矿集中化问题的另外一个方法是完全取消挖矿,并转向其他机制来计算共识中每个节点的权重。迄今为止,讨论中最流行的替代方法是PoS,也就是说,不是将共识模型视为“一CPU算力一票”,而是变成“一币一票”。
现状:理论上取得巨大进展,现实落地有待更多评估
在2014年底之前,对PoS社区来说,这一点越来越清晰:某种形式的“弱主观性”是不可避免的。为了维持经济安全,节点在首次同步时需要获取最近的检查点协议,如果节点离线超过几个月则需要再次获取。
这是难以下咽的药。许多PoW拥护者仍然坚持PoW,因为在PoW链中,可以发现链的“头部”,作为可信来源的唯一数据(也就是区块链客户端本身)。
然而,PoS的拥护者愿意吞下这个药丸,因为增加的信任要求并不大。从那里开始,通过长期安全抵押资产通往PoS的路径变得明晰。
如今,最让人感兴趣的共识算法从根本上类似于PBFT,但它用动态列表替换了固定的验证者集,任何人都可以通过发送代币到具有时间锁定的系统级智能合约中来参与验证(提取代币在某些情况下可能长达4个月)。
在很多情况下,也包括以太坊2.0,这些算法通过惩罚那些在某些方面违法协议的恶意验证者来实现“经济最终性”。(关于PoS的哲学观点,可查阅蓝狐笔记之前发布的文章《以太坊创始人V神眼中的PoS设计哲学》)
以太坊2.0的Phase 0阶段,以太坊链会实施FFG,目前正在实施中,并已经取得巨大的进展。
此外,Tendermint以Cosmos链的形式已经运行了好几个月。在我看来,关于PoS的剩余争论与优化经济激励和进一步规范应对51%攻击的策略有关。此外,Casper CBC规范仍可以使用具体的效率改进。
9.存储证明(Proof of Storage)
解决这个问题的第三种方法是使用稀缺的计算资源而不是计算能力或代币。在这方面,两个主要的替代方案已经提出,是存储和带宽。
原则上,没有办法提供给定或使用带宽的事后加密证明,因此,带宽证明(Proof of bandwidth)应最准确地视为社会证明的一个子集,这在后面的问题中会讨论。但存储证明(Proof of Storage)是肯定可以通过计算完成的。存储证明的优势是它完全是抗ASIC的,我们在硬盘驱动器中的存储类型已接近于最优。
现状:理论上取得了很多进展,尽管还有很多工作要做,同时也需要更多的落地评估
有很多计划使用存储证明协议的区块链,其中包括Chia和Filecoin。也就是说,这些算法还没有经过实战检验。我个人的主要担心是在集中化:这些算法实际上由使用闲置存储容量的较小用户主导?还是由大型矿场主导?(蓝狐笔记注:按目前的趋势,矿场主导的可能性更大)
点击关注币海启行微信公众号,了解更多