比特幣交易沒確認,手續費還會被扣掉嗎?

比特幣錢包送出交易後,畫面可能立刻降低可用餘額,並列出一筆手續費。可是,交易過了很久仍沒有取得交易確認,甚至從某些查詢工具裡消失。此時最直覺的疑問是:款項還沒完成,費用是不是已經先被扣走?
不過,比特幣沒有一個在廣播瞬間收費的中央櫃檯。交易資料只會提出要花哪些 UTXO、建立哪些新輸出,以及輸入總額與輸出總額之間留下多少差額。全節點可以暫時保存這份候選資料,錢包也可以先把相關輸入標成不可重複使用,但這些動作還沒有把交易寫進帳本。
因此,判斷手續費是否真正支付,關鍵在交易有沒有進入目前有效的區塊。只有被收錄並通過共識規則的版本,差額才會計入該區塊的交易費用,讓成功建立區塊的礦工取得。錢包畫面的即時變化,則主要是在避免使用者再次動用同一批輸入。
手續費藏在交易的差額裡
一筆普通比特幣交易會消耗既有 UTXO,再建立給收款人、找零或其他用途的新輸出。假設輸入合計十萬聰,輸出合計九萬八千聰,剩下的兩千聰就是這份交易提出的手續費。交易裡沒有另一筆獨立扣款,也沒有先把兩千聰匯進礦工共同管理的帳戶。
在交易仍待處理時,這個差額只是候選交易的一部分。不同節點可能已經接收它、尚未收到它,或因費率與資源政策而沒有保留。礦工也只有在實際把交易放進候選區塊、成功產生有效結果後,才能把區塊補貼與其中全部交易費用合併計入自己的領取上限。
若交易從未進入有效區塊,沒有礦工能只憑看過這份資料就單獨拿走差額。原輸入在鏈上歷史中仍未被這筆候選交易花掉,費用也尚未成為任何區塊收入。
錢包先降低的是可用餘額
錢包知道自己剛建立並廣播了一筆支出。為了避免使用者在交易等待期間又選到相同 UTXO,它通常會先把這些輸入保留起來,並把收款、找零與預估費用反映在介面上。畫面因此可能像已經完成扣款,實際描述的卻是錢包目前打算如何使用資產。
不同軟體會用「總餘額」「可用餘額」「待確認」或「已送出」等欄位呈現這段狀態。有些把尚未確認的找零暫時列為不可用,有些會依自身政策允許繼續花用;同一筆交易在兩套錢包裡,看起來可能不完全相同。
這種本機保留不會改寫公開帳本。若錢包刪除交易紀錄或重新同步,畫面可能重新計算;外部節點仍可能保存原交易並再次轉送。介面把輸入放回可用清單,也不等於全網已共同宣布原交易失效。
從記憶池消失不等於費用已付或交易永遠失效
全網沒有一個共同記憶池。某台節點可能因為容量限制、費率過低、停留太久或軟體重啟而移除交易,其他節點卻仍保存副本。交易資料本身也沒有一個由全網同步執行的倒數計時器;只要輸入仍可花,原交易日後仍可能被重新廣播並取得確認。
如果所有可見來源都不再保存它,而且沒有任何衝突版本確認,鏈上 UTXO 仍受原本的私鑰與花費條件控制。錢包在重新評估狀態後,可能允許持有人建立另一筆交易。此時資產沒有經歷「先扣費再退款」,因為舊候選交易從未成為有效歷史。
相反地,原交易即使一度從某個查詢網站消失,只要後來被礦工取得並收進區塊,輸入、輸出與手續費就會一起生效。單一網站顯示「找不到」,不足以證明它永遠不會確認。
衝突版本確認時只會有一個結果生效
未確認交易有時能以較高費率的新版本替換。新舊版本若花用同一批 UTXO,就不可能同時存在於同一條有效歷史;其中一個版本確認後,另一個會因輸入已被花費而失效。
提高費用後,鏈上結算以實際進入區塊的版本為準。替換版本會依它自己的輸入與輸出差額支付手續費。若加速方式另外建立子交易,父交易與子交易都被收錄時,兩份交易各自留下的差額才都會成為區塊費用。
錢包介面可能同時保留舊紀錄與新紀錄,甚至把舊版本標成失敗、已替換或衝突。這些標籤是在整理候選資料之間的關係;要確認最終結果,仍需查看哪個版本進入目前有效帳本。
平台收費要和鏈上手續費分開
交易所或其他託管服務可以在內部帳戶扣除提領費、服務費或取消費。這些金額由平台規則決定,可能在鏈上交易送出前就記入內部帳務,也未必和最後支付給礦工的差額相同。
因此,平台提領失敗時會不會退費,要看平台的實際處理與契約;不能直接用比特幣鏈上規則推論。反過來,自託管錢包顯示的網路費用,也不代表某家公司已經先收走同額款項。兩者畫面可能都寫著「手續費」,收款者與生效條件卻不同。
先看狀態屬於哪一層
面對長時間未確認的交易,可以把資訊分成三層理解。錢包畫面回答哪些輸入目前被軟體保留;各節點的記憶池回答哪些候選交易仍被本機保存;有效區塊則回答哪個版本已真正改變鏈上狀態,以及其中多少差額成為礦工收入。
所以,未確認交易不代表鏈上手續費已經確定支付。錢包先降低可用餘額,是為了管理仍在競爭中的輸入;只有交易進入有效區塊,費用才隨那個生效版本一起結算。若交易被移除、替換或長期沒有收錄,還要檢查輸入是否仍未花費,以及其他版本是否已確認,不能只靠介面上曾出現的一筆費用判定資產去向。