Ergo与Autolykos共识机制:第二部分

This page is machine-translated.
Ergo Platform

2022年6月20日

上周,我们介绍了对Ergo的Autolykos共识机制的深入探讨。通过这篇文章,我们完成了该讨论的第二部分,并深入探讨了更多细节。在阅读本文之前,建议读者先查看第一部分。

作为提醒,这里是区块挖掘和哈希函数的伪代码。

Autolykos区块挖掘伪代码
unnamed (4).png

基于Blake2b256的哈希函数
unnamed (5).png

第3、4行 – 开始while循环和猜测

在计算完_list R_后,矿工创建一个随机数猜测并进入循环,以测试该随机数是否最终生成低于给定目标值的输出。

第5、6行 – 生成索引的种子

第5行,i = takeRight(8, H(m||nonce)) mod N,生成一个在[0,N)范围内的整数。使用算法3,但输入为_m_和_nonce_。一旦哈希_H(m||nonce)_返回,保留8个最低有效字节,然后通过_mod N_传递。顺便提一下,8字节的最高可能整数值为264 – 1,假设_N = 226,8字节哈希_mod N_将导致前几个数字为零。随着_N_的增长,_i_中的零的数量减少。

第6行生成_e_,用于索引生成的种子。算法3使用输入_i_(在第5行生成)、h_和_M。然后,丢弃数字哈希的最高有效字节,保留剩余的31个字节作为值_e_。还应注意,值_e_可以从_list R_中检索,而不是计算,因为_e_是一个_r_值。

第7行 – 索引生成器

元素索引_J_使用算法6创建,输入为_e、m_和_nonce_。函数genIndexes是一个伪随机单向函数,返回一个在[0,N)范围内的_k_(=32)个数字的列表。

genIndexes函数
unnamed (6).png

有几个额外的步骤未在伪代码中显示,例如字节交换。genIndexes的创建和应用可以通过以下示例进行解释:

GenIndexes(e||m||nonce)...

hash = Blake2b256(e||m||nonce) = [0xF963BAA1C0E8BF86, 0x317C0AFBA91C1F23, 0x56EC115FD3E46D89, 0x9817644ECA58EBFB]

hash64to32 = [0xC0E8BF86, 0xF963BAA1, 0xA91C1F23, 0x317C0AFB, 0xD3E46D89 0x56EC115F, 0xCA58EBFB, 0x9817644E]

extendedhash(即字节交换并通过重复前4个字节连接4个字节)= [0x86BFE8C0, 0xA1BA63F9, 0x231F1CA9, 0xFB0A7C31, 0x896DE4D3, 0x5F11EC56, 0xFBEB58CA, 0x4E641798, 0x86BFE8C0]

以下python代码展示了切片扩展哈希的过程,返回k个索引。在这个例子中,我们假设_h_ < 614,400,因此N = 226(67,108,864)。

切片和mod N[1]
for i in range(8):
idxs[i << 2] = r[i] % np.uint32(ItemCount)
idxs[(i << 2) + 1] = ((r[i] << np.uint32(8)) | (r[i + 1] >> np.uint32(24))) % np.uint32(ItemCount)
idxs[(i << 2) + 2] = ((r[i] << np.uint32(16)) | (r[i + 1] >> np.uint32(16))) % np.uint32(ItemCount)
idxs[(i << 2) + 3] = ((r[i] << np.uint32(24)) | (r[i + 1] >> np.uint32(8))) % np.uint32(ItemCount)

主要的收获是切片返回_k_个索引,这些索引是从种子即_e、m_和_nonce_派生的伪随机值。

return [0x2BFE8C0, 0x3E8C0A1, 0xC0A1BA, 0xA1BA63, 0x1BA63F9, 0x263F923, 0x3F9231F, 0x1231F1C, 0x31F1CA9, 0x31CA9FB, 0xA9FB0A, 0x1FB0A7C, 0x30A7C31, 0x27C3189, 0x31896D, 0x1896DE4, 0x16DE4D3, 0x1E4D35F, 0xD35F11, 0x35F11EC, 0x311EC56, 0x1EC56FB, 0x56FBEB, 0x2FBEB58, 0x3EB58CA, 0x358CA4E, 0xCA4E64, 0x24E6417, 0x2641798, 0x179886, 0x39886BF, 0x86BFE8]

这个索引可以转换为十进制值,因为它指的是[0, N)范围内的数字。例如,0x2BFE8C0 = 46131392,0x3E8C0A1 = 65585313,0xC0A1BA = 12624314,等等。矿工使用这些索引来检索_k r_值。

genIndexes函数防止了优化,因为找到一个种子使得genIndexes(seed)返回所需索引是极其困难的,基本上是不可能的。

第8行 – 给定k的r元素之和

使用在_第7行_生成的索引,矿工从_list R_中检索相应的_k(=32)r_值并对这些值求和。这可能听起来令人困惑,但让我们分解一下。

继续上面的例子,矿工存储以下索引:

{0 | 46,131,392},
{1 | 65,585,313},
{2 | 12,624,314},
{3 | 10,599,011},

{31 | 8,830,952}

根据上述索引,矿工从存储在内存中的_list R_中检索以下r值。

{0 | 46,131,392} → dropMsb(H(46,131,392||h||M))
{1 | 65,585,313} → dropMsb(H(65,585,313||h||M))
{2 | 12,624,314} → dropMsb(H(12,624,314||h||M))
{3 | 10,599,011} → dropMsb(H(10,599,011||h||M))

{31 | 8,830,952} → dropMsb(H(8,830,952||h||M))

注意,_Takeright(31)在32字节哈希上操作也可以写为_dropMsb – 丢弃最高有效字节。

由于矿工已经在RAM中存储了_list R_,矿工不需要计算_k(= 32)个Blake2b256函数,而是查找这些值。这是ASIC抗性的一项关键特性。具有有限内存的ASIC需要计算32个Blake2b256迭代以获取可以在内存中查找的值,而从内存中获取所需的时间要少得多。更不用说,具有有限内存的ASIC需要在芯片上物理上拥有32个Blake2b256实例,以实现每个周期一个哈希,这将需要更多的面积和更高的成本。很简单地证明,将_list R_存储在内存中是非常值得的。假设以下情况,GPU的哈希率为_G = 100MH/s,N = 226k = 32,区块间隔_t = 120秒,并且每4个哈希查找一次元素。我喜欢假设每4个哈希查找一次元素,因为对于每个随机数猜测,多个元素如_i、J_和_H(f)需要算法3,即blake2b哈希实例。我们可以估计每个r值平均将被使用(G * k * t)/(N*4)_ = 1430.51次。

一旦查找了32个_r_值,它们就会被求和。

第9、10、11、12行 – 检查和的哈希是否低于目标

32个_r_值的和使用算法3进行哈希,如果输出低于目标_b_,则PoW成功,m_和_nonce_被返回给网络节点,矿工获得ERG奖励。如果和的哈希高于目标,则重复_第4 – 11行,使用新的随机数。

如果你能看到这里,恭喜你!在阅读了所有这些信息后,你应该对Autolykos v2有了很好的理解!如果你想看到Autolykos的可视化演示,请查看本文档末尾的图形。如果你想要视频解释,可以在这里找到。

ASIC抗性

我们从以太坊知道,“内存硬”算法可以通过在ASIC上集成内存来征服。Ergo是不同的,但让我们首先回顾一下为什么具有有限内存的ASIC不具竞争力,以及矿工为什么需要存储_list R_。Autolykos区块挖掘的第8行阻止了具有有限内存的机器。如果ASIC矿工不存储_list R_,他们需要大量核心来实时生成31字节的数字哈希。32个_r_值不能通过单核心循环有效计算,因为每32个哈希周期只会生成一个输出。给定_J_,要计算一个随机数_每个哈希周期_,至少需要32个Blake2b256实例运行_dropMsb(H(j||h||M))_。正如我们上面提到的,这显著增加了芯片的尺寸和成本。显然,存储_list R_是值得的,因为拥有32个,甚至16个核心是非常昂贵的。更重要的是,读取内存的速度比每次测试随机数时计算Blake实例的速度要快。

让我们看看具有足够内存的ASIC是否具有竞争力,因为这与讨论更相关。比较Ethash和Autolykos,区别在于Ethash在哈希随机数和头部时涉及N个元素,并且混合64次,而Autolykos在根据生成的索引获取32个_r_值时涉及N个元素。对于每个测试的随机数,Autolykos大约运行4个Blake2b256实例和32次内存获取,而Ethash大约运行65个SHA-3类实例和64次内存获取。更不用说,_k_目前设置为32,但如果需要,可以增加该值以检索更多_r_值。运行Ethash的ASIC有很大的空间来提高SHA3哈希速度,因为每个测试的随机数完成65个哈希,而Autolykos大约完成4个。内存获取与哈希实例的比率在Autolykos上要大得多。因此,Autolykos比Ethash更具内存硬性,因为内存带宽在哈希速度中扮演了更大的角色。

Autolykos优化的一个领域是填充_list R_。填充_list R_需要_N_个Blake2b256函数实例。N_很大并且只会变得更大,因此这需要大量的哈希。ASIC可以优化Blake2b256的速度,从而为区块挖掘赢得更多时间,因为_list R_会更快填充。尽管可以这样做,但填充_list R_需要遍历[0, N),而具有32宽多处理器的GPU已经可以非常快速地填充_list R(在几秒钟内)。要显著更快,需要一个具有许多Blake核心的ASIC – 再次,非常昂贵,并且可能不值得,因为瓶颈可能变成内存_写入_带宽(即,将_list R_写入RAM而不是哈希速度)。

可以优化Autolykos的最后一个领域是内存读/写速度。与GPU相比,Ethash ASIC矿工的读取速度稍快,因为内存时钟更高而不受GPU节流的影响。然而,这种差异相当微不足道,并且预计随着GPU的进步而变得更加微不足道。这是因为内存硬件本身是相同的:DRAM。人们可能会质疑是否可以利用更快的内存硬件,从而使内存读写速度更快……例如,SRAM可能是打破内存硬算法的下一个想象步骤,然而,SRAM并不是一个可行的解决方案,因为它的密度较低。

FPGA上的SRAM[2]

unnamed (7).png

上面的照片是一个前面有8个内存芯片的FPGA,背面还有8个。总SRAM内存只有576MB。在芯片上放置足够的SRAM是行不通的,因为SRAM需要放置得离核心更远,因为它的密度不足以在核心周围放置一层。这可能导致读/写延迟,因为电流需要走更长的距离,尽管硬件本身更快。此外,为了挖掘Ergo,内存需求随着N的增加而增加,因此随着时间的推移,放置足够的SRAM是不可行的。因此,即使有人有足够的现金来购买SRAM,SRAM ASIC也不值得探索。

Blake2b256

像Autolykos这样的算法与其他算法之间的一个主要区别是使用Blake2b256。这并非偶然。Blake在哈希混合中严重依赖加法运算,而不是XOR运算。像XOR这样的操作可以逐位进行,而加法则需要进位位。因此,Blake相比SHA算法需要更多的功率和核心面积,但它仍然是安全的,实际上更快。正如Blake2网站上提到的,“BLAKE2在软件中运行快速,因为它利用了现代CPU的特性,即指令级并行性、SIMD指令集扩展和多个核心。”[3]因此,虽然ASIC可以更快地输出Blake实例,但该函数的固有特性通过要求加法和涉及CPU以及GPU中发现的特性来限制优化。

Blake2b相对于其他哈希函数的速度

unnamed (8).png

结论

Autolykos是一项伟大的创新,是对抗PoW优化ASIC机器崛起的必要回应。我们希望这两部分系列文章能帮助你更深入地理解Autolykos及其为何比Ethash更具内存硬性。随着以太坊过渡到PoS网络,将会有大量矿工寻找一个地方来指引他们的哈希率,而Ergo应该在吸引这些矿工方面发挥重要作用。

如果你喜欢这篇文章,作者邀请你通过他们的Twitter账号**@TheMiningApple**查看更多内容。

unnamed (9).png

[1] 感谢Discord上的Wolf9466#9466
[2] http://www.ldatech.com/_images/imageGallery/SBM09P-3_front.jpg
[3] https://www.blake2.net/#:~:text=A%3A%20BLAKE2%20is%20fast%20in,of%20the%20designers%20of%20BLAKE2).

Share post

Ergo基础设施DAO:去中心化Ergo生态系统的支柱

Ergo基础设施DAO:去中心化Ergo生态系统的支柱

Ergo的使命一直根植于去中心化,不仅在共识层面,而是在整个技术栈中。随着Ergo基础设施DAO (InfraDAO)的推出,这一愿景正在扩展到每天为生态系统提供动力的服务和基础设施。 InfraDAO现在在Paideia上正式上线,经过成功的治理投票。最初.

Ergo Platform

2025年8月13日

Mew Finance:一个为Ergo生态系统提供的有趣DeFi工具包

Mew Finance:一个为Ergo生态系统提供的有趣DeFi工具包

Mew Finance是一个基于Ergo区块链的去中心化应用套件。该项目于2024年10月启动,将DeFi、数字资产和跨链功能整合到一个统一的平台中。长期社区开发者HQΣr和Aco Šmrkas领导该项目。设计上偏向模块化、易用性和深度生态系统集成。 本文是.

Ergo Platform

2025年8月12日

Lithos:通过链上矿池实现去中心化挖矿

Lithos:通过链上矿池实现去中心化挖矿

Lithos是一个新协议,旨在通过将矿池转移到链上来彻底改革矿池的运作方式,使矿工完全控制,并消除对中心化矿池运营商的需求。与之前大多数去中心化挖矿的尝试不同,Lithos旨在高效、可扩展和安全。 什么是Lithos? Lithos是一个去中心化的矿池协议.

Ergo Platform

2025年7月24日

Sigma 6.0:更智能、更灵活的Ergo

Sigma 6.0:更智能、更灵活的Ergo

Sigma 6.

Ergo Platform

2025年7月23日

塑造Rosen的未来:关于五项关键财政提案的社区呼吁

塑造Rosen的未来:关于五项关键财政提案的社区呼吁

Rosen的联合创始人Armeanio已向Rosen财政提交了五项新提案。这些提案概述了Rosen Bridge的增长、实用性和可扩展性的战略愿景,这是Ergo互操作性基础设施的核心组成部分。 这是Ergo社区审查和讨论这一重要跨链服务未来方向的关键时刻。以.

Ergo Platform

2025年7月9日

Ergo的扩展UTXO与人工经济智能的崛起

Ergo的扩展UTXO与人工经济智能的崛起

自主经济代理的实用愿景 Ergo区块链上的自主经济代理在真实的数字经济中执行有用的工作。它们通过创建内容和提供数据分析、模式识别等服务来产生收入。它们利用收入支付运营费用,如托管费和服务器成本,并使用现代工具,如SSH和加密友好的托管服务提供商。当有额外资金.

Ergo Platform

2025年5月12日

ErgoHACK X:在Ergo区块链上的人工智能

ErgoHACK X:在Ergo区块链上的人工智能

庆祝去中心化创新的十年 加入第十届ErgoHACK,站在Ergo区块链AI革命的最前沿!释放你的创造力,与其他创新者合作,共同构建去中心化AI的未来。 关于ErgoHack ErgoHACK,旗舰社区黑客马拉松,庆祝其十周年!这一里程碑事件是Ergo生态系统.

Ergo Platform

2025年4月10日

ERG正式上线Kucoin(库币)交易所

ERG正式上线Kucoin(库币)交易所

据Kucoin官方通告,Ergo平台原生代币ERG于8月3日正式上线Kucoin(库币)交易所。目前支持的交易对是ERG/USDT。现已开放充值;2021年8月5日UTC时间上午10:00开放交易;2021年8月6日UTC时间上午10:00开放提币。 .

Ergo Foundation

2021年8月3日

Ergo两周年纪念——早期采用者应了解的核心知识

Ergo两周年纪念——早期采用者应了解的核心知识

Normal 0 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.

root7Z

2021年7月5日

关于Ergo启用官方QQ频道的公告

关于Ergo启用官方QQ频道的公告

由于Ergo官方微信号暂无法使用,Ergo官方现新增Ergo官方QQ频道:796039547。全球中文用户可通过扫描下面的二维码加入Ergo中文社区,及时了解Ergo最新官方动态. .

Eva Qing

2021年6月30日

Ergo首届黑客松大赛ERGOHACK圆满结束

Ergo首届黑客松大赛ERGOHACK圆满结束

Ergo首届黑客松大赛已经圆满结束,它正如计划那样:规模小而富有实验性,但依然收到了一些很棒的作品提交。Kushti以他的开场视频拉开了活动的序幕,然后我们总共有六个团队,其中来自anon_real(AuctionHouse、SigmaUSD UI等项目的创建.

Curia Regis Crypto

2021年6月29日

关于举办首届Ergo中国社区驱动践行活动的公告

关于举办首届Ergo中国社区驱动践行活动的公告

为了进一步提高Ergo公链平台在中国的知名度,让更多用户深入了解Ergo,同时为了践行Ergo社区驱动的理念,Ergo中国社区现特别举办“首届Ergo中国社区驱动践行活动”。活动参与者积极向新用户布道Ergo并将其引至Ergo官方指定社群,将有机会赢取ERG奖.

Eva Qing

2021年6月4日

比特币的前进之路是努力追赶Ergo ——Ergo率先实现扩展UTXO智能合约

比特币的前进之路是努力追赶Ergo ——Ergo率先实现扩展UTXO智能合约

比特币 比特币是一头野兽。是的,其底层软件需要认真升级。它真的太慢了。但是,您也必须承认它的优势,网络效应是非常强大的------比特币是加密货币之王。在全球范围内,比特币正成为一个常见、被理解和被采用的术语。大型信托、投资巨头和对冲基金经理,都被比特币的主.

Curia Regis Crypto

2021年5月23日

关于Ergo基金会任命谭声情先生担任中国区大使的公告

关于Ergo基金会任命谭声情先生担任中国区大使的公告

经Ergo基金会批准,现任命谭声情先生(英文名:Tango)担任Ergo中国区大使。 为了提升Ergo在中国的知名度与影响力,Ergo基金会现授权谭声情先生以Ergo中国区大使身份进行Ergo在中国的品牌宣传、商务洽谈、社区活动、主题推广等事宜。 此任命自.

Ergo Team

2021年5月16日

硬分叉事后说明

硬分叉事后说明

英文链接: 应@kushti的请求,我现在给大家说明一下今天在硬分叉升级期间发生的事情。有一些BUG导致矿工无法出块,现已修补好这些BUG,矿工可以出块。 version2ActivationDifficultyHex中出现往返编码失败(Round-T.

Eva Qing

2021年2月3日

硬分叉升级后Ergo挖矿须知

硬分叉升级后Ergo挖矿须知

Ergo将在区块#417,792上进行硬分叉协议升级。此次升级会引入重大更改,包括将关闭不可外包功能(Non-Outsourceability)。经过此次硬分叉之后,新的PoW(被称为Autolykos v2.

Eva Qing

2021年2月1日

如何设置和配置Ergo全节点

如何设置和配置Ergo全节点

如何设置和配置Ergo全节点 本教程说明了如何安装和运行Ergo全节点,不涵盖挖矿。  Windows用户还可以观看视频教程。 如何在Windows上设置和配置Ergo全节点 视频链接: 节点安全 这里是节点使用的一些重要方面,您的钱包及代币是否安全.

Eva Qing

2021年1月21日

既想享受乐趣,又想赚取利润? ——那就赶紧来挖ERG

既想享受乐趣,又想赚取利润? ——那就赶紧来挖ERG

Ergo GPU挖矿 本文将帮助您开始使用GPU挖矿Ergo原生代币ERG。 Ergo挖矿基于Autolykos,即一种工作量证明(PoW)算法,被设计为阻碍ASIC矿机和矿池。矿工须执行存储困难的计算(需要至少4 GB的内存,但是当前最有效的实现使用的是.

Eva Qing

2021年1月21日

适用于AMD GPU的Autolykos v2(Ergo)的OpenCL挖矿软件

适用于AMD GPU的Autolykos v2(Ergo)的OpenCL挖矿软件

适用于ergoplatform.

Eva Qing

2021年1月19日

适用于Nvidia GPU的Autolykos v2(Ergo)用Cuda挖矿软件

适用于Nvidia GPU的Autolykos v2(Ergo)用Cuda挖矿软件

用于ergoplatform.

Eva Qing

2021年1月19日

尔格基金会为主要去中心化应用(dApp)基础设施提供资助

尔格基金会为主要去中心化应用(dApp)基础设施提供资助

尔格基金会将考虑支持重大生态系统开发项目提供资助的建议。 尔格是一个面向社区的项目,该生态系统的方方面面都有许多贡献者。尔格基金会会拿出一部分资金资助此项工作,这对于构建用户所需的日常产品与服务以及更多样化的金融去中心化应用至关重要。该基金会正在积极寻求.

Guy Brandon

2020年11月17日