51% 攻擊能偷走你的比特幣嗎?

51% 攻擊能偷走你的比特幣嗎?的文章封面插畫

比特幣用挖礦決定誰能提出下一個區塊,而算力愈多,找到合格區塊的機會就愈高。於是,當人們聽見「51% 攻擊」時,很容易把它理解成某個參與者一旦掌握過半算力,就取得整個網路的管理權,甚至能打開任何錢包拿走資產。

可是,「能影響哪一段歷史勝出」與「能任意寫下任何內容」是兩種不同權力。多數算力確實可能推翻近期交易、重複花費攻擊者自己的幣,或干擾別人的交易確認;它仍然無法憑空產生他人的有效簽章,也不能強迫全節點接受違反規則的區塊。

51% 是持續優勢,不是魔法開關

挖礦是一場反覆嘗試的機率競賽。某一方若長期掌握全網過半算力,平均而言,它產生工作量的速度會超過其餘礦工合計,因此較有能力在私下建立另一段有效區塊歷史,再讓那一段累積的工作量超越公開版本。

51% 只是方便溝通的名稱,並不存在一條跨過後就立即接管所有功能的魔法界線。算力低於一半的攻擊者仍有小機率在短距離競賽中領先;算力高於一半也要維持設備、電力、網路連線與協調,才能把優勢延續下去。攻擊能做到多少,還會受到持續時間、目標交易埋得多深,以及其他參與者如何反應影響。

攻擊者能重組近期的有效歷史

想像攻擊者先向商家付款,並讓這筆交易進入公開帳本。商家看到若干次確認後交付商品;與此同時,攻擊者私下挖掘另一條分支,在那條分支裡排除原付款,或放入一筆把同一批UTXO轉回自己控制處的衝突交易。

如果私下分支後來累積了更多工作量,攻擊者便可將它公布。節點依鏈選擇規則改接到工作量較多的有效歷史時,原付款所在的近期區塊會被重組出去。商家失去原本以為已收到的款項,攻擊者則保留商品與仍可支配的幣,這就是雙重支付攻擊的核心。

這類攻擊改動的是攻擊者有權簽署的支出與交易排序。它也可能藉由持續排除特定交易、反覆蓋過誠實礦工的區塊,使某些付款難以獲得穩定確認。攻擊維持得愈久,網路作為結算系統受到的破壞就愈嚴重。

算力跨不過簽章與驗證規則

每個全節點都會檢查交易簽章、資產是否仍未花費、區塊大小、發行數量與其他共識規則。在常見的單一私鑰控制情境中,攻擊者若想花掉陌生地址裡的幣,就必須掌握對應私鑰才能產生有效簽章;挖出再多區塊也不會補上這項缺失。

同樣地,多數算力不能憑空增加超出規則的新幣、讓一筆無效交易變有效,或單方面改掉供給上限。全節點會直接拒絕不合規資料,不把它計入自己承認的區塊鏈歷史。攻擊者可以在有效交易之間挑選、排序與重組,卻沒有權力改寫驗證者正在執行的條件。

因此,把 51% 攻擊描述成「破解比特幣密碼學」也不精確。礦機擅長的是反覆計算工作量證明所需的雜湊;從他人的公開資訊推回私鑰,屬於另一個密碼學問題,增加挖礦算力不會直接取得這種能力。

為什麼確認數仍然重要

一筆交易剛進入區塊時,攻擊者要追趕的歷史較短。後續每多一個區塊,若攻擊者只有少數算力,想重組這段歷史就通常需要更多運氣、時間與成本。這正是交易確認不只看「有沒有收錄」,還要看後面累積多少工作量的原因。

不過,確認數沒有提供絕對保證。面對能長期維持多數算力的攻擊者,等待更多確認主要是在增加攻擊所需時間,無法靠某個固定數字消除風險。收款方採用的等待門檻,必須考量交易規模、可承受損失與當時是否已出現異常重組;小額付款和重大結算自然不會採用完全相同的判斷。

真正的安全邊界在哪裡

工作量證明把改寫歷史變成一件要持續付出資源的事。要攻擊大型網路,參與者不只需要取得可觀算力,也要承擔電力、設備、營運與被其他礦工察覺後重新分配算力的風險。這些成本能形成嚇阻,卻不能當成攻擊永遠不會發生的數學證明。

若大規模重組真的出現,交易平台與商家可以暫停入帳、提高確認要求,礦工也可能調整連線或算力去向。更激烈的軟體與規則回應需要開發者、節點操作者和使用者協調,過程可能緩慢、具爭議,還會干擾正常交易。比特幣沒有一個中央管理員能按下復原鍵,這既是它分散權力的特徵,也是事故處理的現實限制。

所以,51% 攻擊最值得警惕的地方,是它能破壞近期交易的可信度與網路的正常結算秩序。它沒有萬能鑰匙,無法直接奪走任意使用者妥善保護的幣;然而,若把「不能任意偷幣」推論成「多數算力沒有危險」,同樣會低估雙重支付、交易審查與信任受損的代價。理解簽章規則與歷史排序這兩層邊界,才看得清楚工作量證明究竟保護了什麼,又留下哪些風險。