比特币为什么不可破解?挖矿到底在挖什么?

2009年比特币刚出来的时候,大部分人觉得这是个笑话。一串数字代码,没有政府背书,没有实物抵押,凭什么值钱?

十五年过去了。比特币价格从几美分涨到几万美元,期间被「宣告死亡」了四百多次。每次暴跌都有人喊「骗局终于崩了」,但每次它又活回来了。

不是说它永远会涨——而是它底层的设计,在密码学层面确实做到了「不可破解」。这不等于它完美无缺,但「破解比特币网络」和「黑掉一个银行数据库」,技术难度完全不在一个量级。

这背后是一整套精妙的密码学机制。挑开看看。

比特币是什么?——一本全世界一起记账的账本

最核心的理解:比特币不是「币」,是一本公开账本。

这本账本叫「区块链」。全世界所有比特币交易都记在上面,谁都能下载、谁都能查看。没有任何中央机构管理——没有任何银行的服务器存着你的余额。

那你怎么证明「你有1个比特币」?

你没有「持有」任何东西。你只是在账本上有一条记录:「地址A收到了1个BTC,还没花掉」。你的「余额」就是所有指向你地址的「未花掉记录」的总和。

花钱(转账)就是:用你的私钥在账本上新增一条记录:「我用地址A的1个BTC,转0.5个给地址B,转0.5个给自己作为找零」。

听起来很普通。那凭什么不可破解?答案在三个环节。

第一道防线:椭圆曲线签名(ECDSA)——只有你能动你的钱

你要花自己的比特币,必须在交易上附上一段「数字签名」。别人拿到这个签名,能验证「确实是地址A的主人签的」,但没法伪造。

这用的是ECDSA(椭圆曲线数字签名算法),跟HTTPS用的是同一类东西。

简化逻辑:

  1. 你的「私钥」是个256位的随机数(2²⁵⁶种可能)
  2. 通过椭圆曲线乘法,从私钥算出「公钥」,再从公钥算出「地址」
  3. 这个过程是单向的——从地址反推私钥,在数学上等价于「破解椭圆曲线离散对数问题」,目前全球算力加起来也解不开

从私钥到地址:单向数学过程

私钥 256位随机数


椭圆曲线乘法

公钥 椭圆曲线上的点


SHA-256 + RIPEMD-160

地址 1A1zP1eP5QG...

✅ 任何人记不住
✅ 别人看不到
✅ 公开收款用

⟵ 不可能
⟵ 不可能

逆向:解决椭圆曲线离散对数问题
目前已知最快算法仍需要约 2^128 次运算

2^128 = 340,282,366,920,938,463,463,374,607,431,768,211,456 如果你每秒能试 10 亿亿次(比全球算力还大),仍然需要几万亿年

有人会说:那我把所有可能的私钥都试一遍?这就是「暴力破解」。

2²⁵⁶是多大?大约10⁷⁷。宇宙中原子总数大约是10⁸⁰。你有比宇宙原子数稍少一点那么多的密钥要试。别说人类,太阳烧完了你都试不完。

所以只要你保护好私钥不泄露,你的比特币在密码学层面就是你的,天王老子来了也动不了。

第二道防线:SHA-256工作量证明——账本不能被篡改

这就引出一个问题:如果账本是公开的,谁都能往上面写东西。那怎么防止有人篡改历史记录?

比如小明昨天转了0.5个BTC给小红。今天小明想把这条记录删掉,假装这笔钱没花过。

中本聪的解法极其巧妙:让修改历史记录的成本高到不可能承受。

具体怎么做的?

区块链是一连串的「区块」,每个区块里装着一批交易记录。关键设计是:每个区块的头部都包含了前一个区块的SHA-256哈希值。

SHA-256有个雪崩效应——输入改一个bit,输出面目全非。

结果就是:如果你改了历史中的任何一个区块的数据,从那个区块往后所有区块的哈希全变了。链就断了。

区块链:每个区块存着前一个区块的哈希

区块 #100 数据: 交易记录 PrevHash: #99→abc Hash: #100→def

区块 #101 数据: 交易记录 PrevHash: #100→def Hash: #101→ghi

区块 #102 数据: 交易记录 PrevHash: #101→ghi Hash: #102→jkl 区块 #100' (被改) 数据被篡改 Hash 变了!→XYz ❌ 链断裂!

⚠ 改一个区块 ≠ 成功。要同时重算所有后续区块——这需要天文量级的算力
而这正是「挖矿」的作用:让重算成本高到不可能

但图里有个漏洞:如果攻击者有超强算力,他能把#100改了之后,重新把#101、#102也全重新算一遍——毕竟他只是改数据然后重新算哈希,不是什么复杂的事。

这就是工作量证明登场的地方。 每个区块不是随随便便就能「算出来」的——你必须找到一个符合条件的哈希值,比如「哈希以17个0开头」。

这只能靠暴力试:不断换一个随机数(nonce),重新算哈希,直到运气好碰到满足条件的。

这整个过程,就是挖矿

第三道防线:挖矿——造一个区块的成本

很多人以为挖矿是在「解题」,不是。挖矿是在抽奖

SHA-256是一个纯粹的随机函数,你扔进去一个输入,它吐出来一个完全不可预测的输出。没有人能「聪明地」找到满足条件的hash——唯一的办法就是一次一次换nonce去试。

每试一次,概率小得可以忽略。但全体矿工一起试,每秒几百兆兆次的哈希计算,平均10分钟就有一个幸运儿命中。

挖矿的本质:不停换Nonce,算SHA-256,直到哈希值符合条件

SHA-256 哈希机

输入 = 区块数据 + Nonce

Nonce=0 → Hash: 0a7b3c... ❌ 不符合 Nonce=1 → Hash: f28d4e... ❌ 不符合 ... 几万亿次尝试后 ... Nonce=2857394102 → 00000000000000000001a7... ✅ 命中! Nonce 取值范围: 0 ~ 2^32 (约43亿)

2^32 次都不够? 那也正常

当前难度下,每次尝试命中的概率 ≈
1 / 10^22

全球矿工算力 ≈ 500 EH/s (每秒10^20次哈希)
平均10分钟出一个块

攻击者要篡改一个历史交易,需要:
重新挖出 被改区块 + 所有后续区块(6个确认 = 6个区块)
需要超过全网 51% 的算力,持续一小时以上。成本:数十亿美元 + 海量电力

这就叫工作量证明:你想参与记账?先证明你付出了巨大的计算代价。

挖矿的经济激励也很直白:第一个算出合格hash的矿工,获得「区块奖励」(目前3.125 BTC,约20万美元)+ 该区块里所有交易的手续费。这是比特币唯一的发行方式——没有央行印钱,只有矿工挖矿获得新币。

为什么必须用挖矿?直接投票不行吗?

你可能会问:为什么要浪费这么多电?直接让所有节点投票决定谁记账不行吗?

不行。这叫「女巫攻击」——如果投票成本是零,一个攻击者可以创建一百万个假节点,投票权就是他的了。

挖矿的精妙之处在于:投票权不按「人头」算,按「算力」算。 而且算力是实打实的物理资源,要花钱买矿机、要付电费。想伪造一百万份投票权?先建一百万个矿场再说。

这就是中本聪最天才的设计——把数字世界的投票权绑定到物理世界的能源消耗上。你可以说谎,但你不可以在不烧电的情况下说谎。

那所谓「51%攻击」呢?

理论上,如果你控制了整个比特币网络超过51%的算力,你就能:

  • 阻止新交易被确认
  • 撤销你自己最近花过的币(双花攻击)
  • 决定哪个链是「最长链」(重写历史)

但你不能

  • 偷别人的币(你没有别人的私钥,ECDSA保着呢)
  • 凭空造币(其他人不会接受超发交易)
  • 改变已经深度确认的历史(要重挖几百个区块)

而且在实际操作层面,51%攻击的成本大到不理性:

  • 需要至少50亿美元的矿机
  • 每天电费上千万美元
  • 一旦攻击暴露,比特币价格会暴跌,你手上囤的币也一起变废纸

你花几十亿美元去毁掉一个你重仓持有的资产——这脑子多少有点问题。

三层防线,层层叠加

回到最初的问题:比特币到底为什么不可破解?

第一层:ECDSA 椭圆曲线签名 保护:你的币只有你的私钥能动。破解私钥 ≈ 2²⁵⁶次尝试 ✅ 不可能 第二层:SHA-256 工作量证明 保护:改写历史需重新挖矿。篡改一个6确认的交易 ≈ 重挖6个区块 ✅ 成本几十亿美元 第三层:经济博弈 保护:就算有51%算力,攻击会让币价归零,你的巨额投入打水漂 ✅ 理性人不干

三道防线独立又互补——攻破任何一道都做不动下一道

比特币不是靠某一种技术「无敌」的。它是一种精巧的密码学和博弈论的组合:

  • 密码学保证「技术上做不到」
  • 经济学保证「就算做得到,也不划算」

这就是为什么十五年了,它经历了无数攻击、做空、监管打击——网络本身一次都没被攻破过。

它当然有自己的问题:慢、贵、耗电、波动大。但这些是「设计取舍」问题,不是「安全缺陷」问题。

中本聪用密码学和博弈论搭了一座数字黄金的堡垒。你可以不喜欢它,但你很难绕过数学去把它拆了。

一名痴迷于计算机技术的学生~