未確認的比特幣交易會自己過期嗎?

未確認的比特幣交易會自己過期嗎?的文章封面插畫

一筆付款在比特幣錢包裡等待多日後,有時會從待處理清單消失,區塊鏈瀏覽器也可能突然查不到。對習慣信用卡授權期限的人來說,最直覺的解釋是:這筆交易大概已經過期,資金也自動回來了。

不過,比特幣沒有管理所有未確認交易的中央主機。每個全節點只保留自己收到、驗證後願意暫存的交易;不同節點可以因記憶體空間、手續費門檻、連線狀況與本機政策,在不同時間移除同一份資料。某個畫面不再顯示交易,最多只能說它所依賴的系統目前沒有把那份交易列在清單裡。

因此,「交易過期」需要拆成兩個問題:網路上的某些電腦是否還記得它,以及它引用的資產是否仍能按照原內容花用。前者是暫存狀態,後者才決定原交易再次出現時,還有沒有資格進入區塊。

記憶池沒有全網統一的保存期限

未確認交易通常先進入節點自己的記憶池。這是一份暫時工作清單,方便檢查、轉送與挑選候選交易,並非共同帳本的一部分。節點操作者可以限制記憶池容量,也能設定接收政策;當空間吃緊時,費率較低的交易可能被優先移除。

軟體也可能依資料停留時間清理長久未確認的項目,但這類期限是本機資源政策,並非比特幣交易內建的全網截止日。甲節點清掉一筆交易時,乙節點可能仍保留它;礦工也可能透過自己的節點或其他管道取得同一份資料。

這解釋了為何不同查詢服務會出現矛盾畫面。一處顯示「找不到」,另一處仍可能顯示等待確認。兩者描述的是各自看見的候選集合,沒有任何一處能單憑記憶池狀態宣布全網已永久遺忘。

從畫面消失,不會銷毀原始交易

一筆已簽署交易本質上是一份資料。錢包、其他節點或付款雙方只要仍保存原始內容,就可能把完全相同的資料再次廣播。重送同一份交易不會憑空多扣一次款,也不會替它建立第二份可花資產;資料內容相同時,它引用的輸入與產生的輸出也相同。

能否再次被接受,關鍵在那些輸入。比特幣以 UTXO 表示目前可花用的交易輸出。若原交易引用的 UTXO 在最新有效帳本中仍未被其他交易花掉,簽章與格式也仍符合規則,那份舊交易可能重新進入部分記憶池,甚至日後被收錄。

可是,重新廣播不會改善原本過低的費率,也不保證每個節點都願意接收。網路壅塞程度與本機最低費率可能已經改變;原交易若仍缺乏收錄誘因,重送後照樣可能停留一段時間,再被部分節點移除。

真正的失效通常來自輸入狀態改變

假如另一筆交易花用了同一組 UTXO,兩個版本就會競爭同一份資產。在其中一個版本尚未取得交易確認前,不同節點可能各自保留先看到或政策願意接受的版本。當其中一筆進入有效區塊,帳本狀態隨之更新,另一筆便因輸入已被花用而無法在同一段有效歷史中成立。

這和單純被記憶池移除有根本差別。前一種情況只是某些電腦不再暫存資料;後一種情況已有可共同驗證的新紀錄,使原交易失去可用輸入。若原交易依賴的上游未確認交易被替換或失效,它也可能跟著失去成立基礎。

交易本身還可能帶有最早生效條件。這類時間鎖限制「何時起可以收錄」,通常不提供「何時後必須作廢」的倒數終點。普通付款也不會因廣播後經過固定天數,就自動把輸入解鎖成某個全網一致的新狀態。

錢包說「已放棄」,描述的可能只是本機判斷

錢包需要把複雜網路狀態整理成餘額與提示文字。有些軟體在長時間看不到交易後,會停止主動追蹤或重新廣播,並把相關輸入重新顯示為可用;另一些軟體仍會保留警告,避免使用者誤以為事情已完全結束。這些差異會影響操作畫面,無法直接改寫其他節點保存的資料。

於是,同一筆付款可能在發送端顯示「已放棄」,在某個服務裡查不到,卻仍留在另一個節點的記憶池。只要原輸入還能花,舊交易就保有再次傳播的可能;若錢包又建立一筆花費相同輸入的新交易,兩個版本便可能在取得確認前競爭。

判斷狀態時,證據強度依序來自目前有效區塊是否已收錄某個版本、相關 UTXO 是否仍可花,以及個別節點是否暫存交易。前兩項能回答資產狀態,最後一項只回答某個觀察者眼前記得什麼。區塊鏈瀏覽器的「找不到」因而不能單獨充當交易作廢證明。

「消失」代表不確定性增加,不代表事情歸零

未確認交易離開部分記憶池後,付款結果通常更難只靠單一畫面判斷。原資料可能再度出現,衝突版本也可能先被確認;低費率、上游相依與各節點政策,又會改變傳播範圍。對收付款雙方而言,這段期間仍保留尚未定案的風險。

較準確的結論是:比特幣交易沒有一個全網共同倒數、時間到便自動銷毀的機制。節點可以忘記候選資料,錢包可以停止顯示或重播;只有當輸入被有效歷史中的其他交易花掉,或交易不再符合必要規則時,原版本才真正失去被確認的資格。把暫存清單與帳本狀態分開,就能理解一筆交易為何看似消失,仍未必已經結束。