# 什么是51%算力攻击？

By [withyou](https://paragraph.com/@ratbat) · 2022-08-01

---

[crowdfund://0x888C6D14a5d2B65b578F8a85D76efcAeE8bAF8be?version=factory\_5&network=mainnet](https://etherscan.io/address/0x888C6D14a5d2B65b578F8a85D76efcAeE8bAF8be)

01 什么是51%算力攻击？

比特币白皮书中，有过这样的表述：诚实节点控制算力的总和，大于有合作关系的攻击者算力的总和，该系统就是安全的。

换句说，当系统中有合作关系的恶意节点所控制的算力，超过诚实节点所控制的算力，系统就是有被攻击的风险。

这种由恶意节点控制超过50%算力所发起的攻击，称为51%算力攻击。

那是不是所有的加密货币系统都有可能遭遇51%算力攻击的风险呢？

其实并不是的，只有基于 PoW（工作量证明）共识机制的加密货币，才存在51%算力攻击，比如比特币、比特现金和目前阶段的以太坊等。

 02 这种攻击能做哪些坏事？

在了解了51%算力攻击之后，你肯定好奇，这种攻击能做哪些坏事。

1、双花（Double Spending）。

双花的意思是一份"钱"花了两次甚至多次。51%算力攻击是如何做到双花的呢？

假设小黑有 666 BTC，他把这些 Token 支付的大白同时，也把这些 Token 发到自己的另一钱包地址上。

换一句话说，小黑的一份钱，同时转给两个人。最终，发给大白那笔交易先被得到了确认，并打包在区块高度为 N 的区块内。

这时，控制了超过50%算力的小黑，发起51%算力攻击。他通过重新组装第 N 个区块，将发给自己那笔交易打包进区块里，并持续在这条链上延展区块。

由于算力的优势，这条量将成为最长合法链。这样小黑666BTC双花成功，大白钱包里的 666 BTC"不翼而飞"了。

2、压制某些地址发送/接受比特币

除此之外，51%的算力攻击还能做什么呢？它还可以压制某个地址发送/接收比特币。

小黑和大白吵架了，小黑仰仗自己掌控了51%算力，他在知道大白比特币地址情况下，可以让与大白相关的交易一直无法确认。

比如大白为了向中本聪表达自己的敬意，想往"创世地址"发送 1 枚比特币。掌控超过半数算力的小黑，不会打包这条交易，不仅如此小黑还能做到让其他矿工也不会打包这条交易。

小黑是怎么做到的呢？

如果其他矿工挖出的新区块打包了这笔交易，小黑会选择不在这个区块之后继续挖矿，他会选择在上一个区块之后，重新构建新区块，并把大白这笔交易拒绝在外，仰仗自己算力优势，小黑分叉出的这条链，将成为最长合法链。

在这种情况下，其他矿工也就只好不打包与大白有关的交易，否则挖出的区块也会被小黑给孤立，得到出块奖励也将被作废。

 03 小结

那拥有超过50%的算力，就可以为所欲为，什么坏事都可以做吗？其实并不是的。

即使控制超过50%的算力，也不能转移其他人的 Token，因为这个操作是需要私钥进行签名，如果想伪造签名来“偷币”，这种行为是诚实的矿工所不能容忍的，这将颠覆系统共识。

---

*Originally published on [withyou](https://paragraph.com/@ratbat/51)*
