扣块攻击是什么?矿工在矿池里“出工不出力”的账本 图 1
扣块攻击是什么?矿工在矿池里“出工不出力”的账本 · 图 1

矿池的信任缺口:它凭什么信你

矿池把上千台矿机打包成一个虚拟矿工,靠的是“份额”制度:每台矿机周期性提交达到较低难度目标的证明,池主据此估算各家的算力并按约定模型分红。问题在于份额只是抽样——达到低难度的解并不保证也能达到出块难度,反过来,一个真找到了完整区块的矿工完全可以不交。他不会立刻暴露:下一个回合继续交低难度份额,池主眼里他仍是那台老实干活的机器。这就是扣块攻击(block withholding attack):贡献是账面上的,收益是真实的。

两种动机,两种形态

最早的形态是“内部搭便车”:矿工同时挂在开放矿池上,所有低难度份额照常提交,找到的块一个都不交。他按比例分红,成本全由诚实成员的期望收益垫付。这个场景在比特币论坛早期就被反复讨论,Rosenfeld 2011 年对矿池策略的形式化分析把它列为开放池的经典威胁。更深一层的形态是“矿池打矿池”:A 池把自家一部分算力伪装成散户注册进 B 池,只交份额不交块。被渗透的 B 池把收入分给 A 池的“间谍”,两家的收益天平就此偏移。

《矿工的困境》:不攻击才是冤大头?

密码学研究者 Itay Eyal 在 2015 年的论文《The Miner’s Dilemma》把矿池对攻写成重复博弈:每个池主持续决定“渗透别人”还是“被渗透而不还手”。结论相当灰暗——只要对手可能动手,“双方都攻击”成了均衡;集体收益明明在“都不攻击”时更高,却防不住单个池主的理性背叛,结构上就是迭代囚徒困境。论文同时给了缓冲垫:渗透消耗的算力是自家真金白银,当所有池规模与渗透成本落在某个区间时,攻击的边际收益会被压低。这也是为什么现实中大规模矿池互扣没有成为日常新闻——理论上的均衡不等于已经发生的均衡。

和自私挖矿隔在哪

常被混谈:自私挖矿是给自己留块、在公链的长链竞争里抢占出块位置,收益来自全网奖励再分配,阈值明显低于一半算力且随延迟模型变化;扣块攻击的战场在矿池内部,收益来自分红账本,不需要任何链上竞争。一个骗的是共识层的排序,一个骗的是分配层的记账。两者共同点是“扣留一个已找到的证明”,但惩罚与防御手段完全不同。

防御为什么都贵

单矿工层面的对症药是概率验证:池主随机抽查“你交低难度份额时的原始随机数”,按难度比例折算你理应也交得出接近出块难度的解,长期缺席者露馅。这只能统计性怀疑,抓现行难,且对大流量池的验证开销不低。协议层的方案(如让一次计算天然同时证明两个难度层级的 oblivious shares 思路)需要改 PoW 结构,各链为兼容性一致却步。矿池对矿池层面,治理上只剩“联盟化披露渗透者”的灰色协调。一个只靠份额抽样的系统,防御上限天然受限。

一笔算术:渗透多少才划算

给直觉装个计算器。设受害池诚实算力为 H,攻击池派入渗透算力 x。受害池挖块的概率没变(它的真实算力没动),但分红蛋糕多切了 x 份给不交块的人:诚实成员的单位算力收益近似被稀释为 H/(H+x) 的比例。对攻击方,收益约等于这被稀释转移的部分,减去自家算力离开本池的机会成本。Eyal 的模型给出的启示正在于此:池越小、分母越小,同样的渗透算力稀释越狠;规模悬殊时,大池渗透小池的性价比通常更好。这套算式不依赖任何身份——它解释了为什么威胁模型里“人人可疑”,也解释了当算力集中到少数几家后,公开互扣反而收敛:盯得住的对手少了,声誉报复才变得可行。

快速问答

池主能直接封号止损吗? 能封 IP 与账号,但攻击者可无限换身份重新注册,这正是开放池的准入自由反噬。为什么小池更怕? 同样一股渗透算力,池越小分红稀释越狠。散户怎么自保? 选择披露审计记录、运营主体的矿池;收益模型无法消除扣块,只能提高发现概率。

常见误区

第一,把扣块攻击当成 51% 攻击的低配版——它不改账本历史,不碰双花。第二,把论文均衡读成现实常态:矿池行为受声誉、监管与运维成本约束,模型只是下界参考。第三,认为封闭矿池天然免疫——封闭只挡住匿名准入,内部合谋反而更容易组织。

风险提示:本文讨论矿池机制与博弈研究,不构成任何投资建议或挖矿收益承诺。