雙花攻擊
想像你有一張 1000 元的鈔票。
最後更新:2026 年 1 月
雙重支付(Double Spending)是數位貨幣的「原罪問題」——同一筆錢被花兩次。比特幣的誕生,就是為了解決這個問題。
想像你有一張 1000 元的鈔票。
你拿去買咖啡,老闆收走,你的手上就沒有這張鈔票了。
物理世界天生防止雙重支付。
但如果這 1000 元是一個電腦檔案呢?
你可以複製貼上,同時傳給咖啡店和便利商店。
兩邊都收到「1000 元」,但你只有一筆錢。
這就是雙重支付問題。
為什麼這是大問題?
在比特幣出現之前,數位貨幣一直無法解決這個問題。
傳統的解決方案是:找一個中間人來記帳。
銀行就是這樣運作的:
你的帳戶有 1000 元
你轉帳給 A,銀行記錄「-1000」
你再轉帳給 B?銀行說「餘額不足」
問題解決了,但代價是什麼?
你必須信任銀行
銀行可以凍結你的帳戶
銀行可以審查你的交易
銀行可能倒閉
中本聰想要的是:不需要信任任何中間人的數位現金。
比特幣如何解決?
比特幣的答案是:讓全世界一起記帳。
每一筆交易都被廣播到整個網路,被打包進區塊,由所有人共同驗證。
關鍵機制:
UTXO 模型:每筆「幣」都有唯一的來源記錄
時間戳:區塊有順序,先來先贏
共識機制:全網同意哪筆交易是「真的」
不可逆:一旦確認,無法竄改
雙重支付攻擊的類型
雖然比特幣解決了基本的雙重支付問題,但攻擊者仍有幾種方式嘗試:
1. 競爭攻擊(Race Attack)
攻擊者同時發送兩筆衝突的交易給不同的節點。
防範方式:不要接受「0 確認」的交易。
2. Finney 攻擊
攻擊者是礦工,預先挖好一個包含「轉給自己」的區塊,但先不廣播。
然後去商家消費,等商家接受 0 確認交易後,立刻廣播預挖的區塊。
防範方式:等待多個區塊確認。
3. 51% 攻擊
這是最強大的雙重支付方式。
攻擊者掌控超過 50% 的算力,可以在交易被確認後,重新挖一條更長的鏈把交易「撤銷」。
詳見 51% 攻擊。
確認數的重要性
區塊鏈上的「確認數」代表安全程度:
0 確認
交易已廣播但未打包
極小額、可承受損失
1 確認
進入一個區塊
小額交易
3 確認
相對安全
中等金額
6 確認
比特幣標準
大額交易
60+ 確認
接近不可逆
交易所大額提款
為什麼要等?
因為每多一個確認,要逆轉這筆交易就需要更多算力。
6 個確認(約 1 小時)後,即使攻擊者有 10% 算力,成功機率也只有 0.024%。
不同幣種的處理方式
比特幣
約 10 分鐘
6 次
以太坊
約 12 秒
12-32 次
萊特幣
約 2.5 分鐘
12 次
Solana
約 0.4 秒
即時最終性
有些區塊鏈有「最終性」機制,一旦確認就不可逆轉,不需要等待多個區塊。
現實世界的雙重支付
雙重支付不只是理論:
2018 年 Bitcoin Gold:攻擊者透過 51% 攻擊,雙重支付了約 1800 萬美元。他們在交易所存入 BTG,換成其他幣提走,然後用算力把存款交易撤銷。
教訓:
小型幣種更容易被攻擊
交易所需要更嚴格的確認數
算力集中是危險訊號
為什麼這很重要?
理解雙重支付問題,就理解了區塊鏈存在的意義。
在比特幣之前,所有數位貨幣嘗試都失敗了,因為無法解決「複製貼上」的問題。
比特幣用去中心化的共識機制,第一次讓「不需要信任中間人的數位現金」成為可能。
這不只是技術突破,更是對金融體系的根本挑戰。
相關條目
Last updated