比特幣交易卡住時,為什麼花掉找零反而能加速?

比特幣錢包顯示一筆付款仍在等待交易確認時,直覺上只能提高原交易的手續費。可是,有些錢包會提出另一種做法:先花掉這筆交易剛產生的找零,替後續交易支付較高費用。看起來前一筆都還沒完成,後一筆理應更晚,怎麼反而能讓兩筆一起加快?
關鍵在於兩筆交易具有先後相依關係。後一筆若要成立,前一筆必須先被收錄;礦工若想取得後一筆提供的較高費用,就得把前一筆也放進同一個區塊。因此,礦工可以把它們視為一個交易套件,評估兩筆合計占用的空間與合計費用,而不只孤立地看那筆費率偏低的原交易。
這種方法稱為「子為父償」(Child Pays for Parent,CPFP)。「父交易」是仍未確認的前一筆交易,「子交易」則花用父交易剛建立的輸出。子交易多付的費用不會改寫父交易,卻能提高整個套件對礦工的吸引力。
子交易必須花用父交易的輸出
每筆交易會消耗既有的 UTXO,再建立新的輸出。付款時,父交易通常產生給收款人的輸出,以及回到付款方控制範圍的找零輸出。即使父交易尚未確認,這些新輸出仍可成為後續交易的輸入,只是後續交易也會依賴父交易先成立。
付款方若能控制找零輸出,可以用它建立子交易;收款方若急著讓付款確認,也可能花用自己剛收到的輸出。兩種情況的共同點,都是子交易直接引用父交易產生的資產。若手上沒有可控制且金額足夠的父交易輸出,就無法憑空建立這條相依關係。
這也解釋了為什麼任意從錢包裡另選一筆舊資產、送出高費率交易,通常幫不到卡住的付款。兩者若沒有輸入與輸出的依賴,礦工可以只收費率較高的新交易,完全略過原交易;只有子交易非得等父交易先進入區塊時,兩筆費用才會被綁在同一個選擇裡。
礦工看的是套件的整體費率
區塊空間有限,礦工通常會比較每單位資料能帶來多少費用。父交易占用一部分空間,子交易也占用另一部分;評估 CPFP 時,重點是兩筆費用相加後,除以兩筆合計的虛擬大小。子交易需要付到足夠高,才能補回父交易偏低的部分,讓整體費率接近當下有競爭力的水準。
因此,只把子交易的費率設得比父交易稍高,不一定足夠。父交易若很大、費率又遠低於其他候選交易,子交易就必須承擔更高的費用,才能把整包平均拉上來。若父交易前面還依賴其他未確認交易,礦工評估的範圍可能進一步擴大,所需補足的資料量也會增加。
全節點仍會依序驗證每一筆交易。父交易引用的資產必須可花、簽章與格式必須有效,子交易引用父交易輸出的方式也要符合規則。較高費用只能改善收錄誘因,不能替無效交易取得通行資格,也不能把尚未符合條件的資料強行寫進帳本。
它和以手續費替換有何不同
以手續費替換(Replace-by-Fee,RBF)會建立一個與原交易衝突、費用更高的新版本,爭取讓新版本取代舊版本。CPFP 保留父交易,再新增一筆相依的子交易;兩筆都要進入區塊,原本的收款安排不需被替換。
這項差異會影響成本。RBF 有機會用較高費率的新版本直接取代原交易,CPFP 則額外增加一筆交易的資料量,總費用可能較高。不過,收款方通常無法替付款方重做原交易,卻能在自己可花用收到的輸出時建立子交易,因此 CPFP 也讓收款方有機會主動改善整組交易的費率。
兩種方法都不是撤銷付款。RBF 競爭的是同一組輸入的不同版本;CPFP 利用的是前後交易必須一起成立的依賴。錢包是否支援、原交易是否允許替換、哪一方控制新輸出,會決定實際可用的方法。
加費仍不等於保證下一區塊確認
CPFP 仍受現實條件限制。不同參與者可能採用不同的交易轉送與套件政策;父交易或子交易若沒有順利傳到礦工、套件費率仍不夠高,或相依交易太多而觸及資源限制,等待就可能繼續。父交易一旦被另一個衝突版本取代,依賴舊輸出的子交易也會失去成立基礎。
此外,子交易支付的費用來自它的輸入與輸出差額。若可用輸出本身很小,能提高費率的空間就有限;為了加速而花掉找零,也可能改變原本的資產整理與隱私安排。費率估算描述的是當下競爭情況,下一個區塊何時出現仍帶有隨機性。
所以,花掉找零之所以可能加速前一筆交易,原因不在於後送的資料能插隊,而在於礦工若要收取子交易的高費用,就必須一併收錄它所依賴的父交易。CPFP 把兩筆交易的命運與費率綁在一起;理解這個套件視角,也就能看懂它何時有用,以及為何有時提高費用後仍要等待。