首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

共识算法系列分享(2):PoW

共识算法系列分享(2):

PoW

引言

共识算法是近年来区块链领域最热门的创新,新型共识算法不断提出,在各种号称百万TPS公链的白皮书中对PoW嗤之以鼻,以致于很多人都觉得PoW貌似已是昨日黄花。但必须指出的是,PoW作为区块链共识算法的鼻祖,尽管有各种不足,但是仍没有一种共识算法可以全方面超过它,或在安全性、或在中心化程度等方面比它差。当前运行最久、最稳定的两大主链,比特币和以太坊仍是PoW,所以认真研究PoW是极其重要的。

1.

PoW的本质

我们在本系列的第一篇《从问题说起》[1]中提到,在一个分布式网络中对节点可能发生的错误分为两种:一类为Fail-stop错误,另一类为Byzantine错误。Fail-stop错误假设网络处于一个封闭的环境,节点只会发生宕机;而Byzantine错误则假充网络是开放的,任何人都可以接入,节点不仅会发生宕机,而且有可能会发生作恶。比特币是第一个真正意义上解决了Byzantine的网络,在假设接入节点有可能会恶意修改源代码的情况下,仍然保证全体网络达成共识。这是一个伟大的创举,实现了开放和免中介化的特性。

PoW的使命就是使网络中作恶的节点不能轻易得逞。PoW的全称是Proof of Work,翻译为“工作量证明”。工作量证明的设立就是针对作恶节点,让作恶的成本急剧上升,使得无法通过作恶获得比做为一个诚实节点更大的回报,导致没有作恶的动力。工作量证明有一个关键的特性就是:计算困难,验证简单。也就是说,提供工作量需要花费大量的计算,而验证却非常快,这种特性使得诚实节点可以轻松验证节点是否在作恶。

PoW源于1993年Cynthia Dwork 和 Moni Naor 的工作[2],用来解决垃圾邮件问题。通常人们总是从事后的角度来解决垃圾邮件问题,利用人工智能等技术分析垃圾邮件的特点,例如,邮件有多个不同域名的接收者、邮件标题包含广告等特殊关键字,通过这些特征判断是否垃圾邮件。但垃圾邮件制造者总是能轻易地绕开这些特点,制造更多具有新特征的垃圾邮件。Cynthia Dwork 和 Moni Naor认为,垃圾邮件泛滥的主要原因在于制造垃圾邮件的成本太低,提高发送邮件的代价将使垃圾邮件制造者知难而退。其具体方法就是针对每封邮件的时间戳、每个接收者和邮件内容,寻找一个随机数,使得H(Email,)的哈希结果以t个0开头。当有s个接收者的时候,至少需要计算s*2t个次哈希才能把邮件发出去,而每当邮件再次发送或内容有微小改动时都需要重新计算哈希。对于邮件验证者来说,只需计算一次哈希就能判定邮件是否正确计算了值。而对于正常的邮件发送者来说,由于发送邮件的数量有限,也能承受计算值多出来的工作量。

比特币中的POW算法与此类似,每个节点根据手续费多少、时间戳等特性对所接收到的交易进行排序打包进一个block,并不停地变化随机数nonce计算block的hash以满足小于难度值。一旦某个节点计算完成,就及时将block通过gossip协议广播出去,只要多于1/2的节点接受了这个block并基于其上进行下一次block的计算,这就能有希望在最长的链中存在。

POW满足了CAP中的A和P,对Consistent进行了一定的取舍,整个系统是弱一致性,在某个时刻点不能保证所有节点返回的结果一致,但随着最大高度的block的不断传播会将最新的结果同步至所有节点。

2.

PoW的缺点

PoW最大的优点是开放,对参与者没有准入要求。但同时也带来了一系列的问题:

性能较低。比特币的区块时间是 10 分钟,以太坊的区块时间大约是 14 秒。Off-chain和sharding等都是提高PoW性能常用方法。

1/2抵抗和矿池的问题。PoW的安全性与网络规模成正比,网络规模越大就越安全。甚至出现了专门的网站[3]统计对PoW主链发起1/2攻击需要的算力。另外,矿机逐渐被中心化的矿池垄断也是一个问题,最大的矿池BTC.com占了约20%的算力。

资源浪费。这是PoW受批评比较多的一个问题,在寻找Hash的过程中的计算其实是无意义的,造成了能源浪费。这也是当前公链共识算法的可持续性问题[4]的争议点。

下图是著名的区块链信息网站统计的比特币Hashrate变化图[5],算力高达40EH/S,每秒做400亿亿次运算!折合成电力消耗,超过了伊朗整个国家的电力消耗总量。

(图一:比特币的Hash Rate)

矿机霸权。比特币PoW采用SHA256哈希,一些ASIC专用芯片能更快速地计算出来,容易导致被这些ASIC专用矿机垄断,不利于整个生态的平衡。

3.

PoW的发展

3.1、解决资源浪费问题

在解决资源浪费的问题上,有素数币、治疗币、比原链等典型代表:

PrimeCoin[6]素数币将SHA256改成了搜索素数算法,要求矿工找出一个符合条件的大素数。Primecoin的Block分为三种,Cunningham I型,Cunningham II 型和孪生素数型。Cunningham I型要求新块的素数小于前一个Block中的素数2倍,Cunningham II 型要求大于前一个的2倍,孪生素数型则要求新块的素数与前一个块的素数是孪生关系,即+2。素数是数学领域的一个重要的基础问题,哥德巴赫猜想、黎曼猜想、孪生素数猜想、RSA算法等都与素数相关,所以素数币的PoW计算意义很大。

Curecoin[7]治疗币将SHA256算法与蛋白质褶皱结构的研究进行了结合。蛋白质褶皱研究需要对蛋白质进行生化反应的模拟,用于发现治愈疾病的新药,计算量较大。

比原链在PoW中引入了矩阵运算,其计算本身仍是无意义的。但因为矿机支持了矩阵运算,可以复用于人工智能计算等场景。

3.2 解决矿机霸权问题

在解决矿机霸权的问题上,PoW算法从比特币的CPU消耗型逐步向内存消耗型、网络消耗型发展。

早期的典型代表有莱特币和达世币。莱特币使用刚性内存哈希函数Scrypt取代SHA256,达世币混合使用11种哈希函数;

以太坊Ethash是内存消耗型算法,预生成1G的DAG内存Cache,并线性增长。使得计算nonce需要大量内存和带宽,这样即使运算超快的机器也无法同时寻找nonce值,使得ASIC机器难以生产,保证了挖矿的公平性。

3.3解决性能较低问题

目前公链层出不穷,重点都在强调自己的高性能,动辄百万TPS。但需要指出的是,区块链领域另一个不可能三角是:去中心化、安全和计算环保,PoS、dPoS等共识算法虽然无需浪费算力去反复搜索Hash、在性能上优于PoW,但在去中心化程度上是不如PoW的。

(图片二:区块链的不可能三角)

4.

ATN与PoW

ATN的一个愿景就是将共享算力用于人工智能计算,包括人工智能模型训练、预测和在线服务。素数币和治疗币给了我们一些启示,将人工智能中一些标准计算抽取出来,成为共识算法中的计算目标,但这样做能覆盖到的人工智能计算场景非常有限,无法满足AI研究者的算力要求。同时,寻找外星人的SETI@HOME[8]、医学研究的FOLDING@HOME[9]等算力共享项目是另一种思路,对数据和计算任务进行分发,不限制计算函数,更容易满足上层应用需求。ATN采用链下计算和链上共识相结合的方式,链下计算满足人工智能复杂的运行环境,通过链上共识与区块链结合起来。

[总结:本文是共识算法系列分享的第二篇,主要阐述了PoW的历史、现状和发展趋势,对PoW的特点进行了讨论。“计算困难、验证简单”是PoW设计的核心思想,通过提高作恶者的代价来保证网络的安全。PoW在性能较低、资源浪费和矿机霸权等方面有一定的不足,近年来在改进这些方面的研究成果颇多。]

[2] Cynthia Dwork and Moni Naor. Pricing via processing or combatting junk mail. In Ernest F. Brickell, editor, CRYPTO’92, volume 740 of LNCS, pages 139–147. Springer, August 1993

[3] https://www.crypto51.app/

[4] https://medium.com/@preethikasireddy/fundamental-challenges-with-public-blockchains-253c800e9428

[5] https://www.blockchain.com/zh-cn/charts/hash-rate?timespan=all

[6] http://primecoin.io/

[7] https://curecoin.net/

[8] https://setiathome.berkeley.edu/

[9] https://foldingathome.org/

加入ATN社区,了解更多最新动态

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180716G0WPF200?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券