矿池 18
矿工 无
矿机 无
矿池政策

扣块攻击:矿池无法从单个份额发现的攻击

最后更新:2026年8月15日

矿工提交真实的份额,却把本可成为区块的那一个藏起来。这里说明它造成的损失、由谁承担,以及如何被发现。

这种攻击是什么

您发送给矿池的每个份额都是一个真实的解,只是没有达到区块目标。偶尔会有一个解同时低于区块目标,那个份额就是一整个区块。在矿池检查它之前,它看起来和其他份额完全一样。

扣块攻击是指一个矿工诚实地做工作,发送每一个普通份额,却悄悄丢掉那个本该成为区块的份额。矿池统计这些份额并为它们付费,而本该收到的区块永远不会到来。

为什么单个份额永远暴露不了它

正是这一点让这种攻击值得研究,而不仅仅是令人讨厌。从任何单个份额上看,攻击者都没有异常。硬件是真的,算力是真的,份额有效,到达频率也正常。矿池检查任何一个份额都看不出任何问题。

缺少的是一种“不存在”,而“不存在”只有随着时间推移才会显现。一个占矿池一定比例算力的矿工,应该大致找到同样比例的区块。在一个小时内这说明不了什么,因为找到区块是随机过程,安静的时段很正常。但在足够长的时间窗口里,它能说明很多问题。

一个攻击矿工向矿池持续发送普通份额,而那个达到区块目标的解在到达矿池之前被拦下并丢弃
份额照常流动。真正重要的那一次提交被丢掉了,而单个份额不会暴露任何迹象。

代价是什么,实际由谁承担

矿池失去了本该得到的区块奖励。但损失其实并不真正落在矿池身上,如果您在任何矿池挖矿,这一点值得理解。

在按比例分配的方式下,这一轮会一直持续,直到其他人找到区块。这一轮里的每个人都为一个本不该这么长的轮次贡献了工作,所以每个人单位工作的收益都略有减少。代价由诚实的矿工分摊。

在按份额付费的方式下,对矿池运营者来说更糟,因为矿池已经自掏腰包为每个份额付了钱,靠区块到来回本。针对按份额付费矿池的持续攻击会直接消耗运营者的资金,历史上人们最担心的也正是这种情况。

为什么有人会这么做

攻击者同样丢掉了区块奖励,所以乍一看这纯粹是损己。只有当攻击者在矿池看不到的地方获益时,这才说得通。

常见的动机是竞争。一个经营自己矿池的人可以租用算力或把算力指向竞争对手,压低对方的成绩,让自己的矿池相比之下显得幸运值更高。这场破坏的成本由攻击者仍能领取的份额收益来支付。

还有一种更隐蔽的变体:攻击者不丢弃区块,而是扣住它,私下在其上继续挖矿,并在对自己有利的时机再提交。这更难实施,而且需要占有很大比例的算力才值得尝试。

实际上如何发现它

检测只能依靠统计,因为没有其他信号可用。衡量方法说起来很简单:在一个足够长、能让运气平均掉的时间窗口内,比较某个贡献者实际找到的区块数,与其份额数所对应的应找到的区块数。

难点在于时间窗口。窗口太短,普通的坏运气看起来就像攻击,这意味着会不断冤枉诚实的矿工。窗口太长,真正的攻击者在数据说明问题之前已经活动了一段时间。这个取舍没有巧妙的绕法,它是随机性本身的属性,而不是软件的问题。

这就是为什么认真的检测机制会把问题交给人来判断,而不是自行采取行动。由统计数字驱动的自动封禁,迟早会封掉一个只是运气不好的人,而让一个正当的矿工下线,比攻击本身的后果更糟。

如果您是诚实的矿工,这意味着什么

几乎没有影响,这正是要把话说清楚的原因。

无论如何,您的份额都会被同样地统计和支付。运气不好不是过错,也不可能是,因为在任何短时间窗口内,大多数矿工都是运气不好的。您贡献了大量工作、矿池却连续几轮什么都没找到,这是正常的波动,矿池统计中的幸运值正是为了让您看到这有多正常。

唯一值得了解的是:这是矿池关心谁把算力指向自己的原因之一,也是一个诚实公布区块和幸运值的矿池比不公布的矿池更值得信任的原因。检查矿池所需的一切都在「区块」页面上。

准备好付诸实践了吗?
在矿池总览中选择一种币,打开它的挖矿教程,即可获得可直接运行的命令。
选择矿池