比特幣手續費詳解:sat/vB、記憶池與提高手續費
瞭解比特幣交易大小、sat/vB、記憶池需求、手續費估算、RBF 與 CPFP 如何影響鏈上轉帳成本和確認的可能性。
本指南內容手續費是對比特幣區塊空間的支付
簡短摘要
比特幣交易手續費通常根據交易的虛擬大小和費率計算:以聰計的手續費 = 以 vB 計的虛擬大小 × 每個虛擬字節的聰數(sat/vB)。發送的 BTC 數量本身並不是手續費的計價依據。手續費估算反映的是不斷變化的網絡狀況,無法承諾確認時間。
手續費是對比特幣區塊空間的支付
比特幣交易會花費一個或多個尚未花費的交易輸出(UTXO),並創建新的輸出。輸入總價值與輸出總價值之間的差額就是交易手續費。將該交易納入區塊的礦工會收到手續費。協議不會從發送金額中扣除一定比例,這筆費用也不同於錢包服務商收取的服務費。
交易會競爭有限的區塊空間。構建區塊的礦工可以考慮各筆交易提供的手續費,以及交易之間的依賴關係。在其他條件相近時,較高費率可能讓交易更有吸引力,但不會為它預留下一個區塊中的固定位置。最終結果取決於手續費市場、交易依賴關係、礦工的選擇,以及交易是否傳達到相關節點。
本文討論使用比特幣網絡進行的鏈上比特幣交易。交易所提幣可能另收交易所自己的費用,而閃電網絡支付採用不同的交易路徑和費用結構。錢包可能在同一屏幕上合併多項成本,因此要確認顯示的數字是網絡手續費、服務費,還是兩者都有。Bitcoin.org 的手續費指南介紹了交易大小、sat/vB 與區塊空間需求之間的關係。
總手續費與費率回答的是不同問題
總手續費是該筆交易支付的聰數。手續費率表示每個虛擬字節支付多少聰,寫作 sat/vB。用總手續費除以交易的虛擬大小即可得到費率;用虛擬大小乘以所選費率,則可估算總手續費。錢包通常允許用戶選擇或查看費率,因為大小不同的交易即使採用相同費率,總手續費也可能不同。
假設有一筆虛擬大小為 140 vB、費率為 25 sat/vB 的示例交易。手續費為 140 × 25 = 3,500 聰。1 BTC 等於 100,000,000 聰,因此 3,500 sats 等於 0.000035 BTC。如果同樣大小的交易改用 40 sat/vB,手續費就是 5,600 sats,即 0.000056 BTC。這些數字只用於展示計算方法,並非當前手續費估算或建議。
費率不是相對於付款金額的百分比。如果兩筆交易的虛擬大小和費率相同,即使發送的 BTC 數量不同,手續費也可能相同。如果一筆小額支付需要更多輸入數據,或者使用更高費率,它的成本可能高於金額更大的支付。找零輸出也會佔用空間:當輸入總額高於付款額時,交易可能創建一個輸出,把差額退還給發送者。
虛擬大小反映交易佔用的區塊空間
比特幣錢包通常使用虛擬大小(vsize)計算手續費,而不是把序列化後的每個字節都視為相同。SegWit 交易數據有相應的權重。按 BIP 141 的公式,weight = 3 × base size + total size,其中 total size 包含 witness 數據。隨後 vsize = weight ÷ 4,並向上取整到下一個整數 vB。這個公式考慮了 witness 數據適用的不同權重,並不等同於原始文件大小。
輸入和輸出增加的數據量不同。輸入必須引用之前的輸出,並提供滿足其花費條件的數據。具體大小取決於輸出類型和解鎖數據,其中包括簽名。輸出則指定金額和鎖定腳本。因此,即使總發送金額相同,包含多個小額輸入的交易也可能比只有一個輸入的交易更大。
當錢包合併許多小額收款輸出來支付款項時,輸入數量尤其重要。交易必須花費每個選中的輸出,而每個輸入都會增加數據。錢包也可能創建找零輸出,進一步增加字節數。不同地址和腳本類型的大小可能不同,簽名長度也會變化。因此,“典型交易”的顯示大小只是示例,並不是每筆比特幣支付的固定大小。
選擇不同的幣、添加收款人、更換找零地址類型或修改費率,都可能讓錢包的估算發生變化。所以只檢查付款金額並不足夠。交易構成決定 vsize,費率決定每個 vB 提供多少聰。BIP 141定義了用於處理 witness 數據的虛擬大小計算方式。
記憶池記錄未確認交易,但全網並沒有一個統一隊列
廣播之後,交易可能保存在已收到並接受它的節點的記憶池(mempool)中。記憶池是各節點本地保存的未確認交易集合,並不是全網同步共享的單一隊列。不同節點看到交易的順序可能不同,採用的轉發政策和容量限制也可能不同;某些節點甚至可能完全沒有收到特定交易。
礦工會根據共識規則和自己的篩選政策,從已知交易中選擇候選區塊的內容。花費其他未確認交易所創建輸出的交易存在依賴關係。在這種情況下,礦工可能會把父交易與一個或多個後代交易放在一起評估,而不是將每筆交易都視為帶有獨立費率的單獨條目。因此,第三方網站顯示的簡單“排名”可能不完整,也可能只是暫時的。
當更多用戶爭奪區塊空間時,可能較早被納入區塊的費率會升高。需求緩和時,低費率交易可能重新變得更有競爭力。競爭程度,以及錢包或節點已知的交易集合,都可能迅速變化。一筆交易出現在某個瀏覽器或錢包的記憶池視圖中,並不能證明所有礦工或節點看到的狀態都一樣。
沒有顯示為已確認的交易仍是未確認狀態;這個標籤本身不表示交易丟失或無效。根據節點政策和不斷變化的記憶池狀況,一筆未確認交易可能不再出現在某個節點的記憶池中,之後又被重新廣播或接受。如果錢包仍將其標記為待處理,不要假定其輸入已經可以用於另一筆支付。再次嘗試花費之前,請查看交易狀態和錢包的官方說明。

手續費估算是目標,不是確認保證
錢包可能顯示經濟、普通、優先等選項,或給出目標區塊數。這些都是根據已觀察到的狀況估計一個可能具有競爭力的費率。Bitcoin Core 的手續費估算文檔說明:當估算器擁有足夠歷史數據時,會給出一個大致費率,目標是在指定區塊數內開始確認。如果近期數據不足,可能無法提供估算。其他錢包和服務可能採用不同的數據、模型、刷新間隔和目標定義。
“下一個區塊”目標並不代表交易一定會進入下一個區塊。在交易傳播期間,估算所依據的條件可能已經變化,新的高費率交易也可能參與競爭。交易之間的依賴關係同樣會影響區塊篩選。目標區塊數只是估算的一個輸入,並不是與礦工簽訂的協議。
請查看手續費報價的更新時間,並確認錢包顯示的是費率還是只有總額。如果交易並不緊急,可以有意選擇較低費率等待,但確認時間仍然不確定。如果交易對時間敏感,請將錢包的估算與當前手續費信息對照,並瞭解狀況變化時錢包會採取什麼措施。“以防萬一”提高費率可能會增加成本,卻不能保證進入某個特定區塊。
估算器給出的費率也不能決定每個節點願意轉發交易的最低費率。轉發政策、記憶池限制、錢包設置和確認時間估算彼此相關,但回答的是不同問題。Bitcoin Core 的記憶池設計文檔說明交易依賴關係如何影響篩選和替換政策。不要把某個軟件版本或單個節點的政策當成全網永久不變的規則。
RBF 可以讓錢包用高費率版本替換待處理交易
按費用替換(Replace-by-fee,RBF)是在錢包及相關節點政策允許時,用一筆支付更高手續費、與未確認交易衝突的新交易來替換原交易。替換交易至少會花費一個相同的輸入,因此兩個衝突版本不能同時作為對該輸入的有效花費得到確認。錢包可能提供“提高手續費”功能,但該選項是否可用、有什麼要求以及新手續費是多少,都取決於錢包和交易結構。
不要再照搬“交易必須以特定方式聲明支持 RBF 才能替換”的舊規則。Bitcoin Core 當前的政策文檔說明,自 28.0 版本起,full RBF 是默認政策;在該政策下,替換交易不再需要信號。其他節點、錢包、服務或舊版本軟件的行為可能不同。錢包中的按鈕不可用,並不意味著所有節點都採用相同政策;這也可能是錢包自身的限制或交易結構造成的。
替換通常不只是「多付一個聰」。根據 Bitcoin Core 當前政策,替換交易的絕對手續費至少要達到原交易手續費的總和,並須支付替換交易額外佔用的轉發頻寬成本,以及改善 mempool 的費率圖。相關交易可能令計算更複雜,不能只選一個較高的數字。當前替換政策列明這些條件。
RBF 不是撤銷按鈕,也不能逆轉已確認的交易。它是在互相競爭的未確認花費中進行替換。若收款方把未確認付款視為最終到賬,就可能面臨被替換的風險;未確認交易並不等同於已確認付款。如果你正在收款,請遵循接收服務的確認政策,不要假定最先看到的版本最終會被確認。
CPFP 可能提高礦工同時打包父子交易的動力
子為父付費(Child Pays for Parent,CPFP)會創建一筆新的子交易,花費尚未確認的父交易輸出。子交易可以提供足夠高的費率,讓礦工有動力把兩筆交易一起納入區塊。需要考慮的是兩筆交易的總手續費和總虛擬大小;子交易不會消除父交易的手續費,也不會讓兩筆交易免費合併。
錢包需要控制一個適合使用的未確認輸出,並支持構建子交易。父子關係、轉發和交易包政策,以及礦工的篩選都會產生影響。合計手續費可能高於你為單筆交易選擇的金額,而且仍無法保證納入區塊。如果你不瞭解子交易會花費哪個輸出,以及錢包如何處理找零,就不要手動創建子交易。
RBF 和 CPFP 處理的是相關但不同的情況。RBF 創建一個與待處理交易衝突的新版本。CPFP 添加一筆依賴交易,可能提高礦工打包父子交易包的動力。錢包可能支持其中一種、兩種都支持,也可能都不支持。Bitcoin Core 的記憶池設計和具體版本的政策決定節點接受什麼,因此這些是交易機制,不是確認時間承諾。
交易所提幣費可能不同於比特幣網絡手續費
交易所可以按照自己的費率表設定提幣費用。它可能是固定金額、定期調整,也可能反映交易所批量處理客戶提幣的方式。因此,交易所收取的金額不一定等於單筆鏈上交易的費率。交易所可能把多筆提幣合併到一筆交易中,而自托管錢包通常會針對你選定的輸出構建交易。
提幣之前,請查看頁面是否列出了提幣費、實際到賬金額和目標網絡。不要據此推斷交易所費用就是實時 sat/vB 費率。即使平台將某項費用標為“網絡手續費”,它也可能是平台計算的金額,而不是針對你這筆具體交易直接估算的結果。請核對平台公佈的費率表和預覽詳情。
反過來,錢包也可能只顯示網絡手續費,不含任何服務商費用。被納入區塊的比特幣交易支付鏈上手續費;錢包界面不會按轉帳金額的百分比收取它。比較交易所提幣和自托管錢包鏈上轉帳時,請一起比較收款方實際收到的金額、所選網絡和分項費用。發送前可使用加密貨幣轉帳檢查清單檢查網絡和地址。以太坊採用另一種 gas 費用計算方式,詳見以太坊 Gas 費用指南。
簽名前檢查交易詳情
確認比特幣付款前,請檢查網絡、收款地址、金額、總手續費,以及錢包顯示時的費率。確認這是鏈上比特幣交易,而不是另一種支付路徑。選擇收款方和輸入後,請查看費用預覽,因為交易構成發生變化時,即使費率不變,虛擬大小和總手續費也可能變化。
如果交易仍在等待,請先確認錢包是否支持 RBF 或 CPFP,以及適用條件,再決定如何操作。沒有弄清原交易是否仍可能確認之前,不要把同一筆付款作為一筆獨立的新交易重新發送。保存交易 ID,並在錢包或可信的區塊瀏覽器中查看狀態。交易從某個服務消失,並不能單獨證明它已確認、已取消或可以安全替換。
請根據緊急程度和可等待時間選擇費率,同時記住任何報價都不會承諾進入某個區塊。如果手續費看起來異常高,請檢查輸入數量和輸出結構;轉帳金額本身無法解釋交易大小。如果錢包只顯示總額,請打開詳情頁或官方文檔,確認其中包含哪些費用。本文中的數字都是假設示例,不是實時報價。
常見問題
Q1比特幣手續費是我發送金額的百分比嗎?
不是。網絡手續費通常根據交易的虛擬大小和費率計算。如果 vsize 和費率不變,即使付款金額不同,手續費也可能相同。
Q2交易尚未確認,是否表示我的比特幣丟失了?
不一定。交易可能仍在等待,而且不同節點的記憶池狀態可能變化。請檢查交易 ID 和錢包狀態;不要假定待處理交易已經取消或可以安全重發。
Q3提高 sat/vB 就能保證進入下一個區塊嗎?
不能。在條件相近時,較高費率可能讓交易更有競爭力,但手續費市場、交易依賴關係、轉發和礦工篩選都會變化。估算無法承諾進入某個區塊。
資料來源與延伸閱讀
回報問題
我們會準備一封包含本文連結的電郵。寄出後,Mark 才會收到你的回報
快速檢查
讀完指南後,用 3 道題檢查一下
問題 01
一筆假設交易的大小為 140 vB,費率為 25 sat/vB。總手續費是多少?
選擇答案即可查看解釋