PoW 共识算法中“矿工困境”问题分析

2021-03-31 16:08:40 4660

区块链技术本质上是一个去中心化分布式账本,共识机制是区块链技术的核心内容。目前,区块链技术的共识机制主要有:工作量证明 PoW(Proof of Work)、权益证明(Proof of Stake)以及委托权益证明(Delegated Proof of Stake)等几种方式。不同的共识机制各有优劣,其中采用工作量证明共识机制进行挖矿的币有 BTC、ETH等主流虚拟货币。

本文先对主流虚拟货币共识机制工作量证明 PoW算法的概念介绍,对工作量证明共识机制相关概念厘清。接着对工作量证明共识机制“矿工困境”产生的原因分析,最后提出解决PoW算法“矿工困境”的策略。

一、PoW共识算法的概述

(一)概念

在《比特币:一种点对点的电子现金系统》文中,将工作量证明共识机制表述为“在进行随机散列运算时,引入对某一个特定值的扫描工作,比方说SHA-256下,随机散列值以一个或多个0开始。那么随着0的数目的上升, 找到这个解所需要的工作量将呈指数增长,而对结果进行检验则仅需要一次随机散列运算。我们在区块中补增一个随机数(Nonce),这个随机数要使得该给定区块的随机散列值出现了所需的那么多个0。我们通过反复尝试来找到这个随机数,直到找到为止,这样我们就构建了一个工作量证明机制[1]。”以上是在密码学与共识算法的角度对PoW算法概念予以阐述,但是较晦涩难懂。

简言之,PoW算法是指区块链节点用较大的电力资源与能源消耗来解决特定密码学问题,获取新区块的过程。这些节点被称为矿工节点,矿工发现新区块的过程就是挖矿的行为。挖矿收益就是矿工在挖矿行为中获得的区块奖励与交易手续费收入。从该共识机制的运行模式中可以发现,随着算力的逐渐增大,单独矿工获取新区块的难度会越来越大,因此一些矿工就会联合起来组成算力较大的矿池进行挖矿。

(二)关联概念

采用工作量证明共识机制挖矿,矿工在争夺记账权的过程中,需要明确“诚实矿工与攻击者”、“有效算力与无效算力”等关联概念。

1. 诚实矿工与攻击者

以比特币矿工为例,诚实矿工是遵照比特币链上协议约定,在发现新区块的时候,矿工将该消息在全网进行广播,让其他节点获知,同时诚实矿工将网络中的最长链视为主链[2]。那些不遵循相应的区块链协议,在挖到新的区块时拒绝向全网其他矿工节点广播挖到的区块,拒绝接受网络中最长的链为主链的节点通常被称为攻击者。

2. 有效算力与无效算力

在工作量证明共识机制中,当矿工挖到的区块没有被纳入主链而成为孤块时,矿工在该区块上花费的算力就是无效的,即为无效算力;当区块被纳入主链成为主链的一部分,矿工花在该区块上的算力就是有效的,即为有效算力[3]。

区块中的有效算力主要受到区块中的主链增长速度与矿工挖矿难度影响。应当注意的是,当链上的节点均为诚实矿工节点时,该区块链上总算力之和即为所有节点的算力之和。之后,矿工每挖出一个新的区块,主链的长度就会随之增加相应的长度。

二、“矿工困境”的产生原因与解决措施

(一)产生原因

在传统自私挖矿系统中,攻击者在挖矿的过程中,因为对自身挖矿行为所得收益产生错误的预期,导致陷入“矿工困境”。在多攻击者系统中,攻击者预期之外的竞争、攻击者拍卖式发布挖到的区块与攻击者高估自身影响力均是自身对挖矿收益预期产生偏差的原因[4],也使得自身陷入“矿工困境”的境地。

(二)解决措施

为了实现内部攻击者、诚实矿工与外部攻击者组成的攻击者系统中,三者的联系逐渐减少甚至消失的目的,同时也为降低外部攻击者对于内部攻击者收益下降的影响,内部攻击者主要可寻找更优的挖矿攻击策略作为对外部攻击者的对抗。

目前,有学者提出使用部分主动发布策略的半诚实挖矿策略,攻击者可以通过主动发布半诚实挖矿策略,获取更高的收益,从而打破PoW算法“矿工困境”的局面[5]。从而防止自身算力被其他攻击者浪费,浪费诚实矿工与其余攻击者的算力助力自身收益的实现。

References

[1] 阮娜,刘汉卿,斯雪明.采用工作量证明共识机制的区块链中挖矿攻击者间的“鲶鱼效应”[J].计算机学报,2020(01):177-191.

[2] 同[1].

[3] 廖浩德,邹晓凤,王兵,肖辞源.模糊随机碰撞工作量证明共识算法[J].计算机工程与应用,2021(03).

[4] 同[3].

[5] 同[1].

声明:所有在本站发表的文章,本站都具有最终编辑权。本站全部作品均系微算力原创或来自网络转载,转载目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责,所产生的纠纷与本站无关。如涉及作品内容、版权和其它问题,请尽快与本站联系。

相关推荐

  • 微信:aspcool
  • QQ:580076
  • 手机:18992859886
  • 工作时间:9:00~18:00(周一至周五)