🤫 自私挖矿 Selfish Mining
工作量证明(PoW)区块链上的一种作弊策略:矿工挖到块后不立刻广播,而是偷偷扣下来,私下养出一条更长的隐藏私链,再挑准时机放出,抢走超出本分的出块奖励。
🏃 一句话版本 — 偷偷领跑的人
想象一场接力赛,有个选手偷偷躲在一条隐藏跑道上猛冲。诚实的那一队还在规规矩矩地跑。眼看就要追到同一个点,作弊者突然冒出来说「我早就跑在前头了」。这下诚实队的努力全归零,功劳只算在作弊者头上。自私挖矿就是这么回事:矿工挖到新块却按下不报,私下默默养出一条更长的链,直到诚实矿工快追上来,才把它亮出来。
⛏️ 具体怎么玩,一步步看
- 🔍 挖到了,却不吭声 — 自私矿工解出难题、挖到一个有效块,不广播出去,而是悄悄扣在手里
- 🛤️ 私下接着挖 — 在那个秘密块上继续往下挖,养出一条领先于公开链的隐藏链
- 🎉 挑准时机放出 — 等到诚实矿工快追上时,把这条更长的私链一口气公布
- 🗑️ 把诚实块弃成孤块 — 因为工作量证明认最长链,诚实块就被丢弃,那些算力全白干
📌 这里没有任何代码被攻破。作弊者只是照着最长链规则走,并自己掌控什么时候才把块放出来。所以自私挖矿是一种策略,而不是黑客攻击。
📉 为什么 51% 不是那个魔法数字
很长一段时间里,大家都以为要攻击比特币,得掌握过半的算力才行。自私挖矿改写了这个印象。研究发现,只要攻击者握有全网约 25% 到 33% 的算力(哈希率),就能赢过诚实挖矿——远远不到一半。具体门槛取决于攻击者把自己的块扩散给其他节点的速度有多快:网络连接越好,门槛越低。
| 原本的假设 | 自私挖矿揭示的真相 |
|---|---|
| 🛡️ 「算力没过 51% 就安全」 | 只握有约 25%–33% 的矿工,就已经能多捞不公平的一份 |
| 🐞 「任何攻击都必然是漏洞」 | 它钻的是正常规则和出块时机的空子——技术上什么都没坏 |
📜 它从哪儿来
这个想法出自 2013 年的一篇论文,题为 「Majority is not Enough: Bitcoin Mining is Vulnerable」(多数派还不够:比特币挖矿存在弱点),作者是康奈尔大学的 Ittay Eyal 与 Emin Gün Sirer。它后来又登上了 Communications of the ACM(第 61 卷第 7 期,2018 年)。论文最核心的一点是:比特币的挖矿奖励并不「激励相容」(incentive-compatible)——也就是说,这套机制并不总能让诚实行为成为最赚钱的选择。
🧲 为什么这件事重要
真正的危险在于中心化的压力。如果一个搞自私挖矿的矿池能多赚一份,理性的矿工就有理由加入它,去分那份更高的奖励。矿池越滚越大,聚拢的算力也越来越多,把网络一步步推离去中心化——而去中心化正是工作量证明的全部意义所在。到目前为止,比特币上从未被证实出现过大规模的自私挖矿攻击;它更多还是一项暴露弱点的研究成果,而非已被证实的真实事件。
❓ 常见问题
- 自私挖矿算是黑客攻击或代码漏洞吗?
- 不算。技术上没有任何东西出故障。作弊者完全遵守正常规则(包括「最长链获胜」这条),只是掐准了什么时候才把块放出去。难就难在这里:它是在钻规则的空子,而不是把规则打破。
- 攻击挖矿不是需要掌握全网 51% 的算力吗?
- 这是一个流行的看法,而自私挖矿恰恰挑战了它。2013 年的研究表明,只要掌握全网约 25% 到 33% 的算力,矿工就已经能拿到超出本分的份额,远不到 51% 的多数。
- 比特币上真的发生过自私挖矿吗?
- 比特币上从未被证实出现过大规模的自私挖矿攻击。它主要是一项揭示弱点的研究成果。但它依然重要,因为它点明了算力过度集中为什么危险。