Cuckoo Cycle 布谷鸟周期挖矿算法

原文: http://cryptorials.io/beyond-hashcash-proof-work-theres-mining-hashing/

许多人将工作量证明(PoW)与它的一个特定实例等同起来。不难理解为什么。 Hashcash(译注: 翻译为基于Hash算法, 下同)的PoW不仅在比特币中使用,而且在绝大多数山寨币中也使用。

在Hashcash挖矿中,所有矿工都竞相寻找所谓的“ nonce”(随机数),如果将其作为哈希函数的输入(连同块头的其他部分一起提供),则产生的输出在数值上足够小,可以要求下一个块奖励。

大多数加密货币的不同之处在于哈希函数的选择; Hashcash的也有很多不同"风味"。除了比特币具有SHA256的“香草”风味外,还有Litecoin的Scrypt,CryptoNote的CryptoNight(译注:门罗币采用的),Darkcoin(黑暗币, 后改名为现在的Dash(达世))的X11等(译注: X11即将11种不同Hash算法综合起来, 相当于黑暗料理)。大多数替代"口味"都有明确声明的目标,即通过使用内存或纯粹的复杂性来缩小自定义硬件与商用硬件之间的性能差距。

但是矿工只是其中的一部分。每个客户(包括智能手机和其他资源有限的设备)不仅要挖矿,还必须对挖矿结果进行验证。在Hashcash中,验证等于评估给定随机数上的哈希函数,并将输出与难度阈值进行比较。这与一次证明尝试完全相同。

因此,为了使验证便宜,Hashcash中的哈希函数还必须限制其资源使用。这就是将scrypt配置为仅使用128KB内存的原因。

非哈希现金工作量不受此限制;它们是不对称的,验证比证明尝试便宜得多。第一个这样的PoW是Primecoin,它发现素数几乎翻倍的链。最近的例子是我的布谷鸟骑行PoW,它在1月的BITCOIN 2015研讨会上进行了介绍。可以在github.com/tromp/cuckoo上找到该白皮书,该白皮书还包含各种实现以及改进它们的奖励。

在布谷鸟循环中,证明采用某种随机数定义的大型随机图中长度为42的循环(循环)的形式。想象两个国家,每个国家拥有十亿个城市,并想象选择一条将一国中的一个随机城市连接到另一国中的一个随机城市的十亿个过境道路(PoW实际上使用廉价计算的哈希函数来绘制随机数道路数字,以及城市的国家/地区)。我们被问到是否有42条道路循环访问42个不同的城市。如果有人将您的随机数和42个道路编号交给您,那么确实很容易验证,所需的时间和内存可以忽略不计。

但是,找到这样一个周期绝非易事。但是请注意,连接一条道路的城市既不能成为解决方案的一部分,也不能成为该道路的一部分。大卫·安德森(David Andersen)指出,可以彻底消除这种死胡同的道路,使用每条道路的一点内存来记住那条道路是否有用,使用每座城市的两位记忆来计算该道路是否有零,一条或多条有用道路市。

杜鹃花周期采矿的本质是这种计算城市数量的过程,并将通往城市的道路标记为无用的道路,这是Cuckoo Cycle采矿的本质,约占工作量的98%。它导致数十亿次随机全局存储器访问,以读取和写入计数器。因此,大约2/3的运行时是内存延迟,这使其成为一种低功耗算法,可保持计算机正常运行。

经过足够多的计数和标记回合后,剩下的有用的路就很少了,以至于受杜鹃哈希技术启发,另一种算法可以快速识别周期(将内存重新用于不再需要的计数器)。

杜鹃周期也有一些缺点。首先,证明是巨大的,并且将使块头的大小大约增加三倍。其次,它非常慢,在高端CPU(或GPU,提供大致相同的速度)上花费一分钟的大部分时间来寻找十亿条道路之间的周期。

为了给较慢的CPU赢得(多少)公平的机会,块间隔应该比一次证明尝试长得多,因此,布谷鸟周期可以使用的内存量受块间隔长度选择的限制。

这些似乎是对即时可验证的内存绑定PoW的合理妥协,而PoW在延迟而不是计算方面独树一帜。从这种意义上讲,“布谷鸟周期”的挖掘是ASIC挖掘的一种形式,其中DRAM芯片用于随机读取和写入数十亿位的应用程序。

当甚至可以为通宵充电的电话进行挖矿时,效率不会下降几个数量级,不是以盈利为目的,而是通过玩彩票而发掘的,挖矿硬件领域将看到巨大的扩展,受益于采用以及分散化。

你可能感兴趣的:(区块链)