术语表 /挖矿与共识
自私挖矿
- 自私挖矿是什么?
- 自私挖矿是一种策略:矿工隐藏已解出的区块,仅在能使对手的区块作废时才将其发布,从而获得超出其算力份额应得的收益。
扣留已解出的区块通常得不偿失,因为对手可能抢先发布,您的工作量就变得毫无价值。Ittay Eyal 和 Emin Gun Sirer 于2013年发表的一篇论文表明,当算力超过全网算力的约三分之一时,收益计算就会逆转;若再具备传播速度优势,门槛会降至约25%。在比特币主链上,尚未记录到任何类似的情况。
运作方式
自私挖矿把私下领先的优势变成其他所有人白白浪费的电力。
自私矿工找到一个区块后,对此只字不提。此后有几种走向。如果在秘密区块仍然隐藏时,网络其余部分发布了一个区块,自私矿工会立即发布自己的区块,迫使两个等高的链端展开竞争;只要有足够多的诚实算力恰好先收到它的区块,它就可能获胜。如果它转而在私下又找到第二个区块,就拥有了两个区块的领先优势,可以让诚实矿工继续在一条注定失败的分支上挖矿。待他们最终发布区块时,隐藏的两个区块随即发布,他们的区块被丢弃,其工作量没有带来任何收益。
收益是相对的,而非绝对的。每个被丢弃的诚实区块都会减少全网接受的区块总数,因此短期内自私矿工赚到的比特币比正常挖矿时更少。改变的是比例:它在一块更小的蛋糕中分得了更大的一份。随后,蛋糕由难度调整恢复:难度每2,016个区块重新计算一次,并因区块出块缓慢而调高目标。只有在这次重新调整之后(最长可能需要两周),这种策略才会获利。因此,任何尝试者都必须承担为期两周的收入下降,同时其行为在外部从统计上清晰可见。
门槛取决于网络拓扑,而这恰恰是多数概述略去的部分。相关变量是在竞争期间,有多大比例的诚实矿工在自私区块上继续挖矿。若该比例为零,自私挖矿需要超过全网算力的三分之一才能获利;若为一半,四分之一即可;若矿工能够稳定地最先触达每一个对等节点,获利所需的份额还会大幅降低,这就是区块传播速度属于安全属性、而非性能细节的原因。
在哪里会遇到它
自私挖矿出现在学术文献和中继软件的设计中,而不是比特币已观察到的历史中。
三个实际情况使它停留在这些地方。传播近乎即时:Bitcoin Core 0.13于2016年加入的紧凑区块中继,会发送区块的简短摘要,由对等节点根据自己的内存池重建,专用中继网络则进一步缩短其余时间,因此被扣留的区块在竞争中获胜的时间窗口极小。矿池也是公开的:几乎每个区块的 coinbase 脚本中都带有矿池标签,若某个矿池出现异常的最后一刻发布模式,就会因其并不拥有的算力而很快被识别,因为其客户可以在几分钟内将矿机指向别处。
这一术语还常与两个相近概念混淆。区块扣留是针对矿池的破坏行为,参与者提交部分份额,却丢弃真正解出区块的那一份,受损的是矿池,而不是网络。51%攻击则会改写已确认的历史。自私挖矿两者都不是:它没有违反任何共识规则,不会撤销任何付款,窃取的是其他矿工的收入,而不是用户的币。对购买或持有比特币的人来说,唯一的症状是陈旧区块的比例升高,而确认的含义仍与今天完全一致。