當比特幣流量變得龐大時,一個滿區塊並不會阻止網路;它會把下一個可用空間變成一場現場拍賣,在那裡,緊迫感有其價格。
重點整理
把它想成尖峰時段的擁擠捷運月台。每位新乘客都有有效車票,但到站的列車空間有限。在比特幣上,交易會先進入節點的 mempool,這是暫時的保留區,用於尚未被確認的有效支付。關鍵的細節在於,並不存在單一、通用的 mempool。每個節點都有自己的版本,套用各自的本地政策,而且看見的待處理交易集合可能會略有不同。
週一美東時間上午 8 點時,比特幣大約有 90,617 筆未確認的轉帳在 mempool 裡等待。圖片來源:Mempool.space 滿區塊與滿 mempool 也是不同事件。依共識,比特幣區塊上限為 400 萬權重單位;這個度量會考量交易資料的結構方式。比特幣核心節點預設會為本地 mempool 留下約 300 MB 的記憶體,並可能保留交易長達 336 小時。即使記憶體裡還有大量交易等待下一班列車,區塊也可能先滿。
礦工通常不會按年齡(等待時間長短)來挑選交易。他們會圍繞費用、交易權重,以及支付之間的相依關係,建立區塊模板。使用者實際看得到的單位是每虛擬位元組的 satoshis,亦即 sat/vB。費率越高,礦工在相同稀缺的區塊空間中能獲得更多收入,因此最強勢的費用封包通常會先移動。
這意味著,先送出的支付可能會在幾分鐘後送出的那筆之後被確認。高費用交易可能會在整個網路廣泛傳播,並落入礦工下一批區塊模板。低費用交易則可能始終停留在截斷線之下,就算已經過了好幾個區塊。確認估算可以提供參考,但它們不是保證,因為新的交易會持續進來,而區塊本身也會以不規則的間隔出現。
當足夠多的待處理交易在每一個區塊之間競爭時,mempool 就不太像有禮貌的排隊隊伍,而更像是機場的升等候補清單。新的、願意付更高價的乘客可以取代較弱的出價。如果某個比特幣核心節點達到其設定的記憶體上限,它會裁剪在經濟上最弱、且與之相連的一組交易,並上調滾動式的本地費用下限。被逐出的交易並未失效,區塊鏈也沒有取消它;該節點只是停止替它承擔承載。
對一般使用者而言,第一個後果是延遲。錢包可能會表示某筆支付在數小時內仍在等待,而較新的交易已被確認。對交易員、交易所或資金調度(treasury)團隊來說,這種延遲可能會推遲交易所的入金、拖慢擔保品移動、打斷套利轉帳,或在快速市場中讓資金在可用性上被卡住。
由於費用主要與交易權重綁定,而非與轉帳金額綁定,當交易結構相近時,一筆 50 美元的支付與一筆 500 萬美元的轉帳可能會在類似條件下競爭。轉帳越是時間敏感,未足額出價(低估費用)所帶來的成本就可能越高。
Mempool.space 上的綠色區塊代表在 mempool 裡等待被礦工選取的未確認比特幣交易集合。每個區塊都會估算哪些交易可能會在未來某個區塊中容納,依據其費率衡量,費率以每虛擬位元組的 satoshis(sat/vB)計算。礦工通常會先優先處理費用最高的交易,因為這能最大化區塊收入。由於新區塊大約每 10 分鐘挖出一次,交易會從 mempool 移除;同時新廣播的交易會持續補充 mempool,形成一個不斷變動的隊列。 第二個後果是更高的費用市場。比特幣沒有像以太坊那樣的協定層級基本費用(base fee)。相反地,使用者彼此競爭的是礦工能放進下一個區塊的邊際費率;而每個節點也會維持一個本地的入場費下限。在壓力之下,這個動態下限可能會遠高於軟體的基本中繼設定。昨天顯示的費用,甚至是 20 分鐘前的費用,可能已經不足以買到相同的確認速度。
第三個後果是在結算前的不確定性。看到某筆交易出現在區塊瀏覽器中,代表某些節點知道它,而不是證明每一位礦工都知道。未確認的支付可能在某個節點的視角中被替換、被逐出,或消失,但仍然仍是一種有效的可能支出。釋出商品、給帳戶入帳,或在零確認時把入金視為最終的企業,正在承擔一種風險:擁塞可能讓風險變得更顯眼。
比特幣本身為使用者提供兩種主要方式來重新定價延遲的支付。替換費用(Replace-by-fee),也就是 RBF,允許支出方用一筆支付更多費用的交易去取代尚未確認的交易。把它想成取消低出價,然後對同一個座位提交更強的出價。子支付給父交易(Child-pays-for-parent,CPFP)走的是另一條路:從延遲交易中可支出的輸出(output)會被用於一筆新的、高費用子交易,藉此讓礦工有動機把父交易與子交易一起納入。
這兩種工具都不是魔法。RBF 的替換必須符合節點政策,並且要支付足夠的費用,同時要擊敗它所取代的那筆交易,以及目前市場費率。CPFP 的子交易必須提升整個封包(父+子)的綜合費率,而不只是看起來在自己身上很貴。在市場急速上漲時,即使只是小幅上調,也可能仍讓支付落在移動中的截斷線之下。真正的目標不是最低中繼費(minimum relay fee)。而是下一個可能區塊尾端附近的費率。
ViaBTC 的轉帳加速器每小時提供 20 次免費推送。 在這兩種選項之外,挖礦加速器是部分比特幣挖礦礦池提供的服務:當交易在 mempool 中卡住且費用偏低時,允許使用者提交交易以獲得優先考量。加速器並不改變比特幣的共識規則;它只是請與之參與的礦工把該交易納入他們下一批挖到的區塊中的某一個。有些加速器是免費的,但有資格條件;另一些則會收費,或要求交易達到最低費率。
比特幣核心 31.0 改變的是那場競逐背後的一些機制。它的叢集型 mempool(cluster mempool)會把彼此連接的未確認交易分組,並依照預期該叢集會被挖出的費率來排序。叢集的預設限制為 64 筆交易與 101 kB 的虛擬大小(virtual size)。此設計旨在在不改變比特幣 400 萬權重單位這個共識上限的前提下,改善區塊建構、逐出(eviction)、交易中繼(relay)以及替換決策。
比特幣核心叢集型 mempool 概念的示意圖。 其他工程工作則試圖降低在網路中傳播滿區塊的成本。緊湊區塊中繼(compact block relay)讓節點能從它已持有的交易中重建大部分的新區塊,從而降低傳播所需的資料量與時間。這很重要,因為較慢的傳播可能提高風險:兩位礦工會在短暫的時間內各自基於不同的鏈頭(chain tip)進行建構。更多的區塊容量或許能降低短期的費用壓力,但也可能增加頻寬、驗證與傳播需求。
最重要的教訓很簡單:當一個比特幣區塊滿了,什麼都不會壞掉,也不會讓任何交易因為「等待」而獲得資歷(seniority)。礦工會確認最具經濟吸引力、且能被容納的有效封包;較便宜的支付會保持在待確認狀態,被重新定價,或失去中繼觸及。對投資人與企業而言,費用不是郵票。它是對稀缺結算空間的出價。將確認時間視為一個機率,並在例行延遲變成昂貴的營運問題之前,留意當前的費用狀況。
英雄/特色圖片來源:mempool.space
14.69萬 熱度
6.46萬 熱度
1.18億 熱度
116.84萬 熱度
91.03萬 熱度
當一個比特幣區塊滿了會發生什麼?每個位元組都引爆一場即時手續費競標
當比特幣流量變得龐大時,一個滿區塊並不會阻止網路;它會把下一個可用空間變成一場現場拍賣,在那裡,緊迫感有其價格。
重點整理
區塊還沒來,隊伍就先排好了
把它想成尖峰時段的擁擠捷運月台。每位新乘客都有有效車票,但到站的列車空間有限。在比特幣上,交易會先進入節點的 mempool,這是暫時的保留區,用於尚未被確認的有效支付。關鍵的細節在於,並不存在單一、通用的 mempool。每個節點都有自己的版本,套用各自的本地政策,而且看見的待處理交易集合可能會略有不同。
滿區塊把等待變成拍賣
礦工通常不會按年齡(等待時間長短)來挑選交易。他們會圍繞費用、交易權重,以及支付之間的相依關係,建立區塊模板。使用者實際看得到的單位是每虛擬位元組的 satoshis,亦即 sat/vB。費率越高,礦工在相同稀缺的區塊空間中能獲得更多收入,因此最強勢的費用封包通常會先移動。
這意味著,先送出的支付可能會在幾分鐘後送出的那筆之後被確認。高費用交易可能會在整個網路廣泛傳播,並落入礦工下一批區塊模板。低費用交易則可能始終停留在截斷線之下,就算已經過了好幾個區塊。確認估算可以提供參考,但它們不是保證,因為新的交易會持續進來,而區塊本身也會以不規則的間隔出現。
當足夠多的待處理交易在每一個區塊之間競爭時,mempool 就不太像有禮貌的排隊隊伍,而更像是機場的升等候補清單。新的、願意付更高價的乘客可以取代較弱的出價。如果某個比特幣核心節點達到其設定的記憶體上限,它會裁剪在經濟上最弱、且與之相連的一組交易,並上調滾動式的本地費用下限。被逐出的交易並未失效,區塊鏈也沒有取消它;該節點只是停止替它承擔承載。
擁塞抵達錢包
對一般使用者而言,第一個後果是延遲。錢包可能會表示某筆支付在數小時內仍在等待,而較新的交易已被確認。對交易員、交易所或資金調度(treasury)團隊來說,這種延遲可能會推遲交易所的入金、拖慢擔保品移動、打斷套利轉帳,或在快速市場中讓資金在可用性上被卡住。
由於費用主要與交易權重綁定,而非與轉帳金額綁定,當交易結構相近時,一筆 50 美元的支付與一筆 500 萬美元的轉帳可能會在類似條件下競爭。轉帳越是時間敏感,未足額出價(低估費用)所帶來的成本就可能越高。
第三個後果是在結算前的不確定性。看到某筆交易出現在區塊瀏覽器中,代表某些節點知道它,而不是證明每一位礦工都知道。未確認的支付可能在某個節點的視角中被替換、被逐出,或消失,但仍然仍是一種有效的可能支出。釋出商品、給帳戶入帳,或在零確認時把入金視為最終的企業,正在承擔一種風險:擁塞可能讓風險變得更顯眼。
幾種解救卡住支付的方法
比特幣本身為使用者提供兩種主要方式來重新定價延遲的支付。替換費用(Replace-by-fee),也就是 RBF,允許支出方用一筆支付更多費用的交易去取代尚未確認的交易。把它想成取消低出價,然後對同一個座位提交更強的出價。子支付給父交易(Child-pays-for-parent,CPFP)走的是另一條路:從延遲交易中可支出的輸出(output)會被用於一筆新的、高費用子交易,藉此讓礦工有動機把父交易與子交易一起納入。
這兩種工具都不是魔法。RBF 的替換必須符合節點政策,並且要支付足夠的費用,同時要擊敗它所取代的那筆交易,以及目前市場費率。CPFP 的子交易必須提升整個封包(父+子)的綜合費率,而不只是看起來在自己身上很貴。在市場急速上漲時,即使只是小幅上調,也可能仍讓支付落在移動中的截斷線之下。真正的目標不是最低中繼費(minimum relay fee)。而是下一個可能區塊尾端附近的費率。
核心 31.0 改的是機制,而非上限
比特幣核心 31.0 改變的是那場競逐背後的一些機制。它的叢集型 mempool(cluster mempool)會把彼此連接的未確認交易分組,並依照預期該叢集會被挖出的費率來排序。叢集的預設限制為 64 筆交易與 101 kB 的虛擬大小(virtual size)。此設計旨在在不改變比特幣 400 萬權重單位這個共識上限的前提下,改善區塊建構、逐出(eviction)、交易中繼(relay)以及替換決策。
最重要的教訓很簡單:當一個比特幣區塊滿了,什麼都不會壞掉,也不會讓任何交易因為「等待」而獲得資歷(seniority)。礦工會確認最具經濟吸引力、且能被容納的有效封包;較便宜的支付會保持在待確認狀態,被重新定價,或失去中繼觸及。對投資人與企業而言,費用不是郵票。它是對稀缺結算空間的出價。將確認時間視為一個機率,並在例行延遲變成昂貴的營運問題之前,留意當前的費用狀況。
英雄/特色圖片來源:mempool.space