热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

(张翰)PoW浴火重生,初链抗ASIC的挖矿原理

2018-09-07火星公开课第167期|初链张翰:PoW浴火重生?从根本上抗ASIC做起|文章来源:火星财经(微信:hxcj24h)PoW真的应该被历史淘汰了么?要点速览:在不同

2018-09-07 火星公开课 第167期 | 初链张翰:PoW浴火重生?从根本上抗ASIC做起 | 文章来源:火星财经(微信:hxcj24h)

PoW真的应该被历史淘汰了么?

要点速览:

  1. 在不同的一代币中出现了诸多PoW算法,其中一个核心考量就是如何抗ASIC。
  2. 目前抗ASIC的方式一般都是给ASIC增加内存压力或传输压力,并没有从根本上对它压制。
  3. 在第三代公链中,除了初链之外,几乎没有其它项目仍然采用PoW。
  4. 从根本上对抗ASIC的方法其实很简单,就是想办法把矿工拉回冯诺依曼瓶颈之内。
  5. 根本上抗ASIC的算法需满足三点:令S为一个算法集合,欲实现S中的所有算法,必须经过冯诺依曼瓶颈;每T个区块切换一次算法,切换方式必须满足可验证且不可预测;算法切换没有人为干预。

9月7日20:00,TrueChain初链基金会理事张翰做客「火星财经创始学习群」,从POW的困局、ASIC的前世今生、根本上抗ASIC的理论基础三个方面,分享了“PoW 的救赎:根本上抗ASIC的挖矿原理”。

他表示,ASIC的出现使得算力空前集中在少数矿池手里,降低了网络去中心化的程度,但目前抗ASIC的方式只是增加了设计ASIC的难度,并没从根本上抗ASIC。

如何才能从根本上抗ASIC呢?他认为需要想办法把矿工拉回冯诺依曼瓶颈之内,将改算法的机制设计在挖矿算法之内,让所设计的算法足够丰富,使得运算通用性再次变的重要。

以下为张翰分享原文,由火星财经(微信:hxcj24h)整理:

一、PoW的困局

2008年,中本聪创造了比特币,宗旨是创造任何人都能参与的去中心化金融体系

由于ASIC的出现,使得算力空前集中在少数矿池手里,从而降低了网络去中心化的程度。此后,在不同的一代币中,出现了诸多PoW 算法,其中一个核心考量就是如何抗ASIC。不过这些抗ASIC的方式,通常只是增加了设计ASIC的难度,并没有实现从根本上抗ASIC。因此,这些算法在足够经济利益出现后,被ASIC厂商一一击溃。

我这里列了个清单:

《(张翰)PoW浴火重生,初链抗ASIC的挖矿原理》 抗ASIC清单

因此,项目方与ASIC厂商的这轮对抗,战术上以完败的结果而告终。

但是战略上却出现了新的变化。以 Casper、EOS、ADA、NEO为首的币种,抛弃PoW转而使用PoS或DPoS。这个变化对PoW来说是灭顶之灾,因为在第三代公链里面,除了初链之外,几乎没有其它项目仍然采用PoW。

那么PoW就真的应该被历史淘汰了么?

显然不是的,但PoW必须先解决一系列自身的问题,才有可能浴火重生。这里,我们重点介绍关于挖矿算法层面上的突破,以及给出一套根本上抗ASIC的算法基础

二、ASIC的前世今生

下面我们讲一下ASIC为什么那么强大。

其实想理解这个问题,我们应该问CPU为什么那么弱?

这个道理其实很简单,CPU的设计为了通用计算的需求,采取了冯诺依曼架构。

冯诺依曼架构分三个部分:内存、计算单元与控制单元

《(张翰)PoW浴火重生,初链抗ASIC的挖矿原理》 冯诺依曼瓶颈

数据和程序通常存在内存中,执行计算是需要传送到计算单元。这个有限的传输带宽被称之为冯诺依曼瓶颈

那么问题来了,如果我们只需要做单一计算呢?

比如说,比特币挖矿的 Sha-256d。它的inner loop结构很简单,简单到可以直接用硬件方法,把它刻到计算单元里去。因为是直接刻的,所以这个芯片除了算Sha-256,什么也干不了,这就是我们的 ASIC(Application specific integrated circuit)

《(张翰)PoW浴火重生,初链抗ASIC的挖矿原理》 ASIC的内部架构

如上图所示,ASIC的内部大概这样。

目前抗ASIC的方式,一般都是给ASIC增加内存压力或传输压力,例如,Ethash需要矿工读大表,Equihash也类似。但这只是给ASIC增加难度而已,并没有从根本上对它压制。

例如,最近比特大陆出的Antminer E3,它的芯片大概如下图:

《(张翰)PoW浴火重生,初链抗ASIC的挖矿原理》 比特大陆出的Antminer E3

在计算单元周围布一圈ddr颗粒,主要的计算部分还是在计算单元内部完成的。

三、根本上抗ASIC的理论基础

最后讲一下如何设计出从根本上对抗ASIC的挖矿算法。

在第二部分,我讲了ASIC挖比特币快,是因为比特币挖矿算法单一,ASIC 可以拜托冯诺依曼架构,从而跳过冯诺依曼瓶颈。那么,从根本上对抗ASIC的方法其实很简单,就是我们要想办法把矿工拉回冯诺依曼瓶颈之内。

怎么拉呢?

大致上说,我们所设计的算法需要有足够丰富,使得运算通用性再次变的重要。

我们可以借鉴门罗的经验——周期性改算法。但门罗自己也是有问题的,社区投票hard fork太没技术含量,但更大的问题是没有任何人知道项目方(目前基本上可以左右投票结果)是否事先准备了新算法的ASIC

因此,我们必须将改算法的机制设计在挖矿算法之内。

根本上抗ASIC的算法,需要满足以下几点:

  1. 令S为一个算法集合,欲实现S中的所有算法,必须经过冯诺依曼瓶颈。
  2. 每T个区块切换一次算法,切换方式必须满足可验证且不可预测。
  3. 算法切换没有人为干预。

大致分析一下,我们需要矿工使用通用计算,意味着他必须掌握一个大集合的算法,但因为每次只能用一个算法,所以必须加入切换算法的机制,才能保证通用性得到奖励。

切换算法时,我们又必须保证没有人可以事先准备下一周期的 ASIC,因此我们需要可验证且不可预测性。有没有实现的可能?

Truehash的实现方式是基于对置换群的表示论,以及RSK correspondence。置换群非常大,数学界以前研究的也比较透,比较容易产生大量的不同算法。

令G为一个群,对每个群元素g,令rho_V(G)为G在向量空间V上的表示。

在普通挖矿算法中,将 blockheader、nonce等信息经过padding等运算之后,会形成一个向量v(nonce)。通过穷举不同nonce值,来寻找 hash(v(nonce))小于难度系数的结果。

Truehash的改动部分是,将hash(v(nonce))改为hash(rho(g)*v(nonce))。

只要G足够复杂,这个算法集合就不可能全部写死在计算单元内**。由于算法会随机切换,冯诺依曼瓶颈将不可避免。

Truehash的算法切换原理是,每12000个PoW区块换一次群元素,12000 个PoW区块大概需要83天的时间生成。

新的群元素信息由上个周期的第1–8192个区块所组成,组成方式通过分析第11001-11256个区块的哈希值所产生。由于区块的哈希值不可提前预知,在第11256个区块出现之前,任何人都不可能知道关于新算法的任何信息。

从上周期的第11257个区块到该算法作废,总共只有88天的时间,这么短的时间内生产ASIC没有任何意义。

问答环节

Q1: True坚持使用POW,而且优化为fPOW,背后的思考是?fPOW如何优化POW?

A1: 回到PoW 自身的问题上,fPoW 是为了解决挖矿的公平性。大致上说,算力矿池除了自身算力强悍之外,还可能用 ASIC Boost、Selfish mining、Eclipse attack等种种手段,使得 “出块率>算力占例” 。经济上增加了他们的垄断能力,网络安全上他们并不需要 51%的算力,就可以实施51%攻击

这里面有个很好的案例是 XVG,大家可以查下资料,看看 XVG 是怎么被掌握10%的算力矿池实施51%攻击的

Q2:冯诺依曼瓶颈的确是制衡ASIC的好方式,但速度、效率是否不可避免的下降?这套制衡策略是否让采取POW的公链回到旧有的问题上去?**

A2: 全网算力1Th/s还是1Ph/s对网络本身安全影响不大,所以拼算力这个问题,更多是节点与节点之间的竞赛。如果全网hash rate降了1000 倍,但每个节点也都等比下降1000倍,且任意节点很难恢复原来算力,这个不会有任何影响。

Q3:解决了PoW的公平性,那么怎么看待PoW的效率,如何看待PoW与PoS?

A3: PoW的效率其实不比PoS 低,这里面可能有个误区:大家认为PoW 要经过很复杂的计算才能出块,PoS不用,所以 PoS会更快。事实上区块链的真正瓶颈是网速

Q4: 能耗环境效率呢?

A4: 如果PoW圈资源,圈来的全是哈希计算器,那这确实是极大的浪费。因为1Ph/s和1Th/s对网络本身根本没有任何区别。所以混合共识的一个好处是,PoW将只是节点的一个入口,节点通过PoW来竞争当选PBFT 委员

PBFT的算力是真实用来处理交易的,所以说只要PBFT部分占比越来越高(例如,通过 Sharding 来实现多委员会),那么能源效率也会越来越高。

Q5: ASIC的出现未必是坏事?抗ASIC的过程中公链在不断迭代自己的算法变换方式,ASIC芯片自身也不断迭代、优化,降低能耗,便携,进入电脑甚至手机,逐渐靠近真正实现算力去中心化?张老师怎么看?

A5: ASIC和公链项目方之间的对抗,确实使得项目方搞出了很多很复杂的哈希算法,同时ASIC厂商也见招拆招,搞出了很多很牛的矿机芯片。但这跟PoW圈哈希计算器那个问题一样,似乎项目方和厂商圈来的资源都没什么实际意义。同时还把 PoW真真地伤到了,项目方现在都搞 PoS了,ASIC 厂商再牛又有什么用

关于挖矿进入电脑、手机这个问题,我的观点是真不推荐。别的不说,CPU占用直接到100%,电脑、手机立刻卡死、变热、变慢,至少用台式机挖矿吧。

嘉宾简介

嘉宾简介——张翰 / TrueChain初链基金会理事

初链研究负责人,澳大利亚新南威尔士大学数学系博士,曾任麦格理银行量化分析师,澳大利亚奥林匹克数学国家队教练,中国科学院高性能计算研究团队研究员。曾部分证明 Gangolli 猜想,获得过两项美国先行专利。

对话发起人——岳汉超 / DoraHacks合伙人

全球最大Hacker组织DoraHacks合伙人,对外合作负责人;作为发起人举办过数十场大型黑客马拉松,对接全球数百个顶尖前沿科技组织+社区;清华大学经济学学士。

文章声明:本文根据「火星财经创始学习群」嘉宾分享内容整理,不代表火星财经立场,转载须在文章标题后注明“文章来源:火星财经(微信:hxcj24h)”。


推荐阅读
  • 投融资周报 | Circle 达成 4 亿美元融资协议,唯一艺术平台 A 轮融资超千万美元 ... [详细]
  • 本文详细介绍了如何在 EasyUI 框架中实现 DataGrid 组件的分页功能,包括配置方法和常见问题的解决方案。 ... [详细]
  • 探讨了生成时间敏感的一次性伪随机密码的方法,旨在通过加入时间因素防止重放攻击。 ... [详细]
  • 深入解析Java并发之ArrayBlockingQueue
    本文详细探讨了ArrayBlockingQueue,这是一种基于数组实现的阻塞队列。ArrayBlockingQueue在初始化时需要指定容量,因此它是一个有界的阻塞队列。文章不仅介绍了其基本概念和数据结构,还深入分析了其源码实现,包括各种入队、出队、获取元素和删除元素的方法。 ... [详细]
  • 本文将详细介绍如何配置并整合MVP架构、Retrofit网络请求库、Dagger2依赖注入框架以及RxAndroid响应式编程库,构建高效、模块化的Android应用。 ... [详细]
  • 本文汇集了作者在准备研究生入学考试过程中的心得体会,包括备考策略、复习重点及应对考试的心理调适技巧,旨在为即将参加考研的学生提供实用建议。 ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • 汇总了2023年7月7日最新的网络安全新闻和技术更新,包括最新的漏洞披露、工具发布及安全事件。 ... [详细]
  • 视觉Transformer综述
    本文综述了视觉Transformer在计算机视觉领域的应用,从原始Transformer出发,详细介绍了其在图像分类、目标检测和图像分割等任务中的最新进展。文章不仅涵盖了基础的Transformer架构,还深入探讨了各类增强版Transformer模型的设计思路和技术细节。 ... [详细]
  • 本文探讨了如何将个人经历,特别是非传统的职业路径,转化为职业生涯中的优势。通过作者的亲身经历,展示了舞蹈生涯对商业思维的影响。 ... [详细]
  • spring boot使用jetty无法启动 ... [详细]
  • 解决jQuery Spinner按钮垂直排列问题
    本文探讨了如何通过CSS调整jQuery Spinner组件中的上下按钮,实现它们的垂直堆叠布局。 ... [详细]
  • 深入解析轻量级数据库 SQL Server Express LocalDB
    本文详细介绍了 SQL Server Express LocalDB,这是一种轻量级的本地 T-SQL 数据库解决方案,特别适合开发环境使用。文章还探讨了 LocalDB 与其他轻量级数据库的对比,并提供了安装和连接 LocalDB 的步骤。 ... [详细]
  • 本文介绍了进程的基本概念及其在操作系统中的重要性,探讨了进程与程序的区别,以及如何通过多进程实现并发和并行。文章还详细讲解了Python中的multiprocessing模块,包括Process类的使用方法、进程间的同步与异步调用、阻塞与非阻塞操作,并通过实例演示了进程池的应用。 ... [详细]
  • 基于51单片机的多项目设计实现与优化
    本文探讨了基于51单片机的多个项目的设计与实现,包括PID控制算法的开关电源设计、八音电子琴仿真设计、智能抽奖系统控制设计及停车场车位管理系统设计。每个项目均采用先进的控制技术和算法,旨在提升系统的效率、稳定性和用户体验。 ... [详细]
author-avatar
让自己更加成熟一点
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有