雙重支付是什麼?Double Spending 原理、交易確認與 51% 攻擊的關係

2026/10/28 00:05
雙重支付是什麼?Double Spending 原理、交易確認與 51% 攻擊的關係
未命名設計 (3)

作者|桑幣區識編輯團隊
發布|2023/06/08
更新|2026/10/28

同一筆比特幣,可以先拿去付款,再轉回自己的錢包嗎?

在同一條符合共識規則的有效鏈上,同一筆可花費輸出不能被重複使用。不過,如果收款人太早交付商品,或原本依賴的付款紀錄後來被替代,就可能承受雙重支付造成的損失。

本文以 Bitcoin 為主,說明雙重支付的意思,以及它和交易確認、區塊重組、51% 攻擊的關係。

雙重支付是什麼?

雙重支付(Double Spending,又稱雙花)是指試圖將同一筆可花費資產用於互相衝突的付款。

重點不在於兩筆交易金額相同,而是它們競爭使用同一筆資金來源。你用兩筆不同資產各支付 0.1 BTC,並不構成雙重支付。

成功的雙重支付詐騙,也不表示區塊鏈最終承認兩筆衝突付款同時有效。常見的損失是:收款人先相信其中一筆付款並交付商品,最後有效鏈卻接受另一筆衝突交易。

用付款買商品的例子理解

假設小明控制一筆比特幣輸出,準備向商家購物:

  1. 商家看到一筆支付給自己的交易,但它尚未取得足夠確認。
  2. 商家先交付商品。
  3. 最後被有效鏈接受的,是使用同一筆輸出、卻未支付給商家的衝突交易。
  4. 商家交出了商品,卻沒有保住原本預期收到的款項。

這是概念示例,省略交易費與找零。若原付款已被區塊收錄,要讓衝突交易取代它,就必須涉及相應鏈上歷史的改變,與單純替換未確認交易不同。

比特幣如何防止同一筆資產被花兩次?

UTXO:每筆輸出只能被花費一次

Bitcoin(比特幣)使用 UTXO,也就是未花費交易輸出。錢包顯示的餘額,來自它可以使用的一筆或多筆輸出。

交易的輸入會指向先前輸出;完成花費後,則產生新的輸出,例如收款與找零。若兩筆交易要使用同一筆輸出,它們便互相衝突,不能都在同一條有效鏈上成立。

延伸閱讀:UTXO 是什麼?比特幣交易輸入、輸出與找零機制完整解析

簽章與共識,各自解決不同問題

簽章用來驗證交易是否符合花費授權;共識則讓節點對有效交易歷史取得一致。只有簽章還不夠,因為控制資產的人也可能簽出互相衝突的交易。

Bitcoin 透過節點驗證及 PoW 工作量證明,在有效候選鏈之間依累積工作量選擇歷史。累積工作量較高的分支仍須符合規則,不能讓無效簽章或重複花費因此合法化。

零確認、已確認與最終確認有什麼差別?

狀態代表意義不能直接推論的事情
已廣播/零確認交易已被部分節點看到,尚未收進目前有效鏈的區塊不代表收款已穩定成立
一次確認交易所在區塊已被目前有效鏈接受不代表永遠不會重組
更多確認交易所在區塊後方又增加區塊不代表任何情境下都絕對不可逆
最終確認需依各鏈共識與結算機制理解不能把不同鏈的確認數直接當成相同保障

在 Bitcoin 中,交易所在區塊算第一次確認,後面再增加一個區塊,便是第二次確認。通常確認越深,替換相關歷史需要克服的累積工作越多。

這種以確認深度提高信心的方式,可搭配 Finality 最終確認理解;它不是一個所有區塊鏈通用的固定秒數。

雙重支付、Reorg 與 51% 攻擊有什麼關係?

三個詞描述不同層次:

概念描述的重點
雙重支付競爭使用同一筆資金,可能讓收款人失去預期付款
Reorg節點撤回部分舊分支狀態,改採另一段有效鏈歷史
51% 攻擊在 PoW 情境下,掌握優勢算力以干擾交易歷史與確認

Reorg(區塊重組)可能讓原本確認的付款失去確認,但不一定涉及雙重支付;交易仍可能被新分支重新收錄。

若替代分支接受衝突付款,原付款便不能同時在該有效歷史中成立。當收款人已依原付款交付資產時,就可能形成雙重支付損失。

51% 攻擊是可能促成惡意重組的途徑之一,但雙重支付不全都需要多數算力。對未確認付款的詐騙,與推翻已有多次確認的付款,所需條件不同。

交易被替換,就代表雙重支付成功嗎?

RBF 不是雙重支付成功的證明

RBF(Replace-by-Fee)是交易替換相關機制,可用於調整未確認交易的費用。BIP 125 描述的是其中的選擇性替換信號與政策;實際接受與轉發方式還取決於節點政策及版本,不能將該舊提案當成所有節點目前唯一規則。

看到交易被替換,應核對新交易是否仍支付原收款人,以及最後確認的是哪一筆。若只是提高費用並保留付款,就不能直接稱為成功的雙重支付詐騙。

延伸閱讀:RBF 是什麼?比特幣交易加速、替換與取消教學

重組也不等於收款永久消失

原交易離開有效鏈後,可能重新等待確認、被新區塊收錄,或因衝突交易已成立而無法再確認。需要查看替代鏈的實際結果,而非只憑錢包短暫顯示判斷。

為什麼交易所入金需要等待確認數?

交易所可能讓用戶在入金後立即交易或提走其他資產,因此需要判斷鏈上付款是否已取得足夠保障。

「鏈上已查到」與「平台允許使用」是不同狀態。交易所可依幣種、網路及自身政策,設定入帳與提領所需確認條件,並在異常時調整處理方式。

Bitcoin 約每十分鐘產生一個區塊是長期平均,不能用來保證每筆付款的到帳時間。等待確認也不是付費給交易所就能跳過的鏈上程序。

延伸閱讀:Mempool 是什麼?比特幣交易池、轉帳等待與手續費解析

六次確認就絕對安全嗎?

不是。六次確認是常見參考,不是協議規定所有收款都必須等待六次,也不是保證任何攻擊都不會成功。

應依交易價值、鏈上狀況與接收平台規則判斷;其他區塊鏈不能直接照搬 Bitcoin 的數字。

收款或入金時,可以檢查哪些資訊?

  • 確認使用正確網路、收款地址與交易 ID(TxID)。
  • 區分已廣播、區塊確認及平台入帳三種狀態。
  • 以接收平台當期規則查看確認要求,不只相信付款截圖。
  • 若交易顯示替換或衝突,核對最後確認交易的實際收款內容。
  • 若確認數突然減少,查看是否發生重組或服務顯示延遲。

雙重支付常見問題 FAQ

同一筆比特幣能在鏈上同時花兩次嗎?

同一筆輸出不能在同一條符合規則的有效鏈上被重複花費。雙重支付詐騙的問題,是收款人依賴的付款可能未成為最後有效紀錄。

轉帳兩次相同金額就是雙重支付嗎?

不是。若使用不同資金來源,兩筆交易可以都有效;金額相同本身不是判斷依據。

沒有 51% 算力就不能雙重支付嗎?

不是。未確認付款的衝突與已有確認付款的歷史替換,是不同情境,不能統一套用同一算力門檻。

交易被 RBF 替換代表遭到攻擊嗎?

不一定。替換也可能是正常加速,需查看新交易的付款內容與確認結果。

等待時間越久,就一定有更多確認嗎?

不一定。尚未收進區塊的交易,即使等很久也可能仍是零確認;要查看實際區塊狀態。

雙重支付等於盜走別人的私鑰嗎?

不是。干擾交易歷史不代表取得其他人的私鑰,也不代表能偽造任意付款授權。

資料來源

*本文由桑幣區識編輯團隊依據官方資料及公開資訊整理,內容僅供資訊與教育用途,不構成投資建議。

join Zombit

加入桑幣的社群平台,跟我們一起討論加密貨幣新資訊!

桑幣區識 Zombit

桑幣筆記 Zombit 為專業的區塊鏈財經自媒體,利用自身的金融和區塊鏈知識,提供區塊鏈相關的時事新聞、專題專欄、新手教學和趨勢週報...等,協助大眾吸收正確的資訊,並和社群朋友站在一起,互相扶持成長。

桑幣熱門榜

關閉廣告 關閉廣告
zombie

桑幣正在徵文中,我們想要讓好的東西讓更多人看見!
只要是跟金融科技、區塊鏈及加密貨幣相關的文章,都非常歡迎向我們投稿
投稿信箱:[email protected]

為提供您更多優質的服務與內容,本網站使用 cookies 分析技術。若您繼續閱覽本網站內容,即表示您同意我們使用 cookies,關於更多相關隱私權政策資訊,請閱讀我們的隱私權及安全政策宣示。