3分钟看懂Grin的混合算法原理

Grins-Long-And-Short-On-Privacy-Standards-(1).jpg

发布于 10 月 18 日的 Grin 4 号测试网(Testnet 4.0)是最新的一版而且据说是最后一版 Grin 的测试网络。在其包括 BIP32 整合的各种特征中,新发布的版本引入了一种双重工作模式证明(Proof-of-Work)的系统。但是它到底是什么?它是怎么运作的?我们将详细解释此次发布版本的工作机制的诱因和其内部工作原理。


一些关于专有词汇的解释

为了了解这次发布的版本,需要为一些我们将要使用的术语作一些说明解释。


    AF:ASIC 友好(ASIC Friendly)的简写

    AR:抗 ASIC(ASIC Resistant)的简写

    Cuckoo Cycle:一种由 John Tromp 发明的图论式工作模式证明(PoW)

    Cuckatoo Cycle: 一种用以简化 ASICs 的 Cuckoo Cycle 的变种

    Cuckaroo Cycle: 一种设计成为抗 ASIC 的 Cuckoo Cycle 的变种

    Edge Bits: 在 Cuckoo/Cuckatoo/Cuckaroo Cycle 图像中的边缘规模指数

    Secondary Scaling: 一个藏于每个区块首部的整数

    Target difficulty: 当前区块总体难度与以前区块总体难度的差异

    Total difficulty: 在所有时间里累积的所有区块目标难度(target difficulty)



现在我们已经定义了一些基本词汇,接下来我们将详细阐释两种工作模式证明(Proof-of-Work)


为什么使用两种工作模式证明(Proof-of-Work)?

你可能听说过 Grin 使用一种由 John Tromp 发明的被称为 Cuckoo Cycle 的工作模式证明(Proof-of-Work)。

Grin 起始于一个其应该能够被所有人用适当的设备开采的想法。但是,Grin 对于「秘密 ASICs」来说也是脆弱的,这意味着一个拥有充足资金的 ASIC 生产商能够开发出一种专业设备来秘密挖 Grin 币,这对于个体的 GPU 矿工们是不公平的。

虽然长期的 ASIC 矿机挖矿是不可避免且应该被支持的,但是在 Grin 刚发布时就有矿场用矿机秘密开采的现象是必须要不惜一切代价来避免的。算力集中会让单一个体掌握大部分的算力,进而掌控这个数字加密货币的市值。

这就是为什么 Grin 引入了两种工作模式证明(Proof-of-Work)算法。主要算法是被设计为 ASIC 友好的,而次要算法是抗 ASIC 的。在最初发布时,90% 的区块将会被次要算法挖出,而主要算法只会挖出大约 10% 的区块。随着挖矿的进行这个比例将进一步提升,比如说在两年内,100% 的区块将会由主要算法(对矿机友好的 ASIC 算法)开采,以此来激励 ASIC 生产商去开发针对主要算法的矿机。

接下来我们将详细阐释在 Grin 测试网 4 中的主要算法和次要算法。


主要工作模式证明(Proof-of-Work)

主要算法是被设计为 ASIC 友好的,并且预期不会在未来进行改变。矿机生产商设计专业 ASIC 设备去进行挖掘是被支持的。

从这个算法允许一个 GPU 通过使用数百 MB 的 SRAM 来提高效率,但仍被存储 IO 所阻碍的现象而言,这个算法是对 ASIC 友好的。

Cuckatoo30+是 Grin 测试网 4 上运行的主要工作模式证明。「+」代表着矿工们能递交一个更大的边缘数据(Edge Bits)方案(这需要更多的存储量和更多的时间但却有更大机会被接受),但最小体积(size)是 30。

在主网上,Grin 将会使用 Cuckatoo31+算法。


次要工作模式证明(Proof-of-Work)

这个算法是抗 ASIC 矿机的。因为 ASIC 矿机对于一种算法来说是不可避免的,因此每六个月次要算法将会进行参数的微调来阻碍 ASICs 生产商研发专业的设备进行开采。

(GrinUp 注:ASIC 矿机芯片生产出来后无法进行修改,所以算法修改意味着矿机芯片作废。而 Grin 的次要算法主要针对分散在全球的中高端显卡和处理器,实现前期的去中心化挖矿)

测试网 4 使用 Cuckatoo 29 算法。这种算法和主要算法是一样的,不同点在于其边缘数据(Edge Bits)是 29。但是,使用这种算法挖掘区块的难度和使用主要算法挖掘的难度是不一样的。

为了推断出使用次要算法方案实现的实际难度,你将需要利用在区块首部的二次定标(Secondary Scaling)去衡量方案难度。


整合在一起

现在我们已经阐释了两种 PoW 算法,我们将进一步阐 Grin 是如何保证主要/次要区块比例的。

每个被主要算法挖掘的区块倾向于增加二次定标(Secondary Scaling)因素,具体来说就是每当一个「主要」区块被发现,使用次要算法挖掘将会变得越来越容易。

相比之下,每当一个「次要」区块被发现,二次定标(Secondary Scaling)因素趋向于减少。这代表着使用次要算法去开采会变得越来越难(因为你需要一个更高的方案难度来达到目标难度(Target Difficulty)),而用主要算法开采会变得越来越容易。


关于主网的 POW 算法

至于主网,Grin 将会使用两种 PoW 算法:

主要算法将会是 Cuckatoo31+

次要算法将会是 Cuckaroo29


|特别感谢为 GrinUp 本篇文章的翻译做出贡献的志愿者:千里走单骑
|原文作者:Quentin Le Sceller

0 个评论

要回复文章请先登录注册