您如果執行過加密貨幣交易(如將資金髮送給另一個錢包地址),那麽應該註意到這個過程可能産生的延遲。延遲的交易通常會保存在一個叫“內存池”的地方。
本文詳細介紹了內存池的概念和運作原理,併探討了它爲什麽是加密貨幣交易的重要組成部分。
內存池(Mempool)是區塊鏈節點上的一種“等候室”,用於存儲未經挖掘的交易。“內存池”這一術語由“內存”和“池”兩個詞組合而成,指的是待處理交易在添加到區塊鏈之前排隊等待的空間。
比特幣是第一個引入併利用交易內存池概念的區塊鏈。其他區塊鏈(例如以太坊)後來也採用了這一概念。所有區塊鏈都有某種形式的內存池,隻不過叫法可能不盡相衕。例如,Parity 區塊鏈使用“交易隊列”一詞來錶示鏈上的內存池。
內存池在區塊鏈節點的運作中髮揮著重要作用。要讓一筆交易完成併記録在區塊鏈上,必鬚首先將其添加到區塊中。然而,併非區塊鏈網絡上的所有節點都可以創建新區塊。例如,在使用工作量證明機製的比特幣等區塊鏈上,僅礦工可以將交易添加到新塊中。至於使用權益證明機製的以太坊等區塊鏈中,隻有驗證者或提議者才能將交易添加到區塊中。
用戶髮起一筆交易後,必鬚依賴礦工或驗證者來批準交易併將其添加到區塊鏈中。這不會立即髮生。交易在啟動後到完成前存在一定時間的延遲。在此期間,交易被存儲在內存池中等待確認。
需要註意的是,區塊鏈不隻有一個內存池。在特定的區塊鏈網絡中,每一個節點都有自己的交易內存池。例如,比特幣區塊鏈中的每個節點都有自己的等待加入公共賬本的交易池。各個節點中的內存池共衕構成了一個集體內存池。
用戶髮起交易後,交易會被髮送到節點。然後,節點會將交易添加到其內存池併排入隊列,等待驗證。一旦交易通過驗證,它將被標記爲“待處理”。礦工隻能將標記爲“待處理”的交易添加到新區塊中。
爲了更好地理解內存池動態和交易生命周期,我們假設您曏朋友髮送 0.01BTC。
首先,輸入朋友的錢包地址,確認區塊鏈交易費用,然後點擊“髮送”。
該交易將作爲“已排隊”交易添加到最近的內存池中。
接下來,該交易將被廣播到網絡中的其他節點,但它暫時不會出現在區塊鏈上。每個節點都會執行獨立測試,以驗證交易的真實性。
如果節點批準該交易,則其狀態從“已排隊”更改爲“待處理”。
待處理的交易將最終被礦工選中併添加到新的區塊中。
接下來,礦工會將這個區塊廣播給所有節點。因此,所有節點現在都可以訪問新塊中包含的所有交易。
在此階段,內存池中仍存儲有您的交易的節點將刪除該交易。
最後,交易完成,您的朋友收到 0.01 BTC。
當交易內存池中的交易需求超過一個區塊所能容納的交易數量時,就會髮生擁塞。可能導緻內存池積壓的一些因素包括:
圖:比特幣每個區塊的平均交易數量。來源: Ycharts.com
了解這些因素以及它們對內存池擁塞的影響對於用戶和開髮人員來説非常重要。這使他們能夠預測潛在的延遲併做出必要的調整,以節省gas費用併避免延遲。
由於許多交易會衕時髮生,內存池中交易的處理順序將受到多個因素的影響。我們將重點介紹其中一些因素。
決定內存池內交易執行順序的主要因素之一是每筆交易的費用。礦工和驗證者受利潤驅動,他們可以選擇要將哪些交易添加到新區塊中。毋庸置疑,他們更傾曏於具有更高費用的交易,因爲這意味著更大的回報。
因此,與交易相關的費用會嚴重影響其被納入區塊的機會。礦工通常按照每單位交易數據的費用(通常錶示爲聰/字節)來整理內存池中的交易。他們會優先處理費用最高的交易,直到區塊被填滿。
這種基於費用的方式在內存池中營造了了一個競爭市場,迫使用戶做出選擇,要麽支付更高的費用以快速完成交易,要麽支付較低的費用但需要等待較長時間。
然而,用戶可以估算出一個既不太昂貴又能得到及時確認的最佳費用。這就需要考慮多個因素,包括歷史數據、交易量、網絡擁塞和內存池內的費用分配。大多數熱門平颱,如加密貨幣錢包和交易所,都擁有可以分析內存池當前狀態併推薦最合適費用的工具。
盡管如此,準確估算費用併不是一門精確的科學,仍然麵臨一些挑戰。例如,網絡狀況可能會快速變化,導緻歷史數據不太可靠。此外,在需求量大的階段,費用可能會高度波動,難以預測。
網絡擁塞通過多種方式影響交易的處理方式和gas費用:
內存池不必保留所有等待被添加到區塊的交易列錶。然而,他們需要知道哪些交易已經添加到區塊鏈中,以便將其從內存池中刪除,而不必一直存儲這些交易。當礦工曏節點廣播新區塊時,他們可以檢查這些信息,從而實現內存池衕步。這確保了隻有尚未確認的交易才會保存在內存池中。
此外,區塊空間是可用於在新區塊中包含交易的容量。由於這個空間有限,礦工或驗證者會優先處理gas費較高的交易,而其餘交易則被髮送到內存池等待確認。
添加到內存池的每筆交易都是一條不超過幾千字節 (kb) 的數據。構成交易的所有字節的總和就是內存池的大小。內存池越大,錶明有大量交易等待確認。這也可能意味著網絡流量的激增。
圖:內存池大小。來源:Blockchain.com
雖然內存池沒有預定義的最大大小,但節點可以爲其內存池設置大小限製。比特幣的大小通常設置爲 300MB。當內存池達到此閾值時,節點可能會強製執行最低交易費要求。任何費率低於此限製的交易都將被逐出內存池。通過這種方式,節點可以避免因待處理交易過載而崩潰。
了解內存池大小如何影響交易費用和時間非常重要,因爲用戶將能夠選擇執行交易的最佳時間。有幾個網站可以跟蹤比特幣網絡上的全球內存池大小,如 mempool.space 和 BitcoinTicker.co 。
接下來,我們來看看比特幣和以太坊這兩個全球最大的區塊鏈的內存池是如何運作的。
通過比特幣網絡髮送的所有有效交易都不會立即添加到區塊鏈中。它們必鬚在比特幣內存池中等待。
最初,比特幣交易費以每字節交易的聰(satoshi)的數量來衡量。然而,在 SegWit 升級之後,這種方式髮生了變化。現在,比特幣內存池中的交易以權重單位計量。此次升級引入了稱作 SegWit 的功能。
升級後,比特幣區塊可以容納多達四倍的交易。
與比特幣一樣,以太坊區塊鏈最初利用以太坊內存池來存儲待礦工加入區塊的交易。然而,在以太坊從工作量證明機製轉曏權益證明機製後,以太坊引入了區塊構建者(builder)的概念。
區塊構建者是專業化的第三方實體,他們編譯交易以創建可以形成區塊的優化交易包。這是通過重新排序或將交易內存池中的某些交易包含在捆綁包中來實現的。最終,他們付費將捆綁包提供給提議者/驗證者,以便將其包含在區塊中。
一個區塊的價值取決於它所包含的交易。這種機製激勵區塊構建者創建利潤最豐厚的區塊,因爲這些區塊可能會被驗證者優先處理和確認。因此,與其他區塊鏈一樣,您在以太坊上支付的費用越多,您的交易越早得到確認的機會就越大。
內存池是區塊鏈交易的重要組成部分。它充當一種“等候室”功能,未經確認的交易在那裡等待驗證併最終被包含在新的區塊中。了解內存池的內在機製,例如交易排隊、驗證和費用優先級等,對於加密貨幣用戶至關重要。
您如果執行過加密貨幣交易(如將資金髮送給另一個錢包地址),那麽應該註意到這個過程可能産生的延遲。延遲的交易通常會保存在一個叫“內存池”的地方。
本文詳細介紹了內存池的概念和運作原理,併探討了它爲什麽是加密貨幣交易的重要組成部分。
內存池(Mempool)是區塊鏈節點上的一種“等候室”,用於存儲未經挖掘的交易。“內存池”這一術語由“內存”和“池”兩個詞組合而成,指的是待處理交易在添加到區塊鏈之前排隊等待的空間。
比特幣是第一個引入併利用交易內存池概念的區塊鏈。其他區塊鏈(例如以太坊)後來也採用了這一概念。所有區塊鏈都有某種形式的內存池,隻不過叫法可能不盡相衕。例如,Parity 區塊鏈使用“交易隊列”一詞來錶示鏈上的內存池。
內存池在區塊鏈節點的運作中髮揮著重要作用。要讓一筆交易完成併記録在區塊鏈上,必鬚首先將其添加到區塊中。然而,併非區塊鏈網絡上的所有節點都可以創建新區塊。例如,在使用工作量證明機製的比特幣等區塊鏈上,僅礦工可以將交易添加到新塊中。至於使用權益證明機製的以太坊等區塊鏈中,隻有驗證者或提議者才能將交易添加到區塊中。
用戶髮起一筆交易後,必鬚依賴礦工或驗證者來批準交易併將其添加到區塊鏈中。這不會立即髮生。交易在啟動後到完成前存在一定時間的延遲。在此期間,交易被存儲在內存池中等待確認。
需要註意的是,區塊鏈不隻有一個內存池。在特定的區塊鏈網絡中,每一個節點都有自己的交易內存池。例如,比特幣區塊鏈中的每個節點都有自己的等待加入公共賬本的交易池。各個節點中的內存池共衕構成了一個集體內存池。
用戶髮起交易後,交易會被髮送到節點。然後,節點會將交易添加到其內存池併排入隊列,等待驗證。一旦交易通過驗證,它將被標記爲“待處理”。礦工隻能將標記爲“待處理”的交易添加到新區塊中。
爲了更好地理解內存池動態和交易生命周期,我們假設您曏朋友髮送 0.01BTC。
首先,輸入朋友的錢包地址,確認區塊鏈交易費用,然後點擊“髮送”。
該交易將作爲“已排隊”交易添加到最近的內存池中。
接下來,該交易將被廣播到網絡中的其他節點,但它暫時不會出現在區塊鏈上。每個節點都會執行獨立測試,以驗證交易的真實性。
如果節點批準該交易,則其狀態從“已排隊”更改爲“待處理”。
待處理的交易將最終被礦工選中併添加到新的區塊中。
接下來,礦工會將這個區塊廣播給所有節點。因此,所有節點現在都可以訪問新塊中包含的所有交易。
在此階段,內存池中仍存儲有您的交易的節點將刪除該交易。
最後,交易完成,您的朋友收到 0.01 BTC。
當交易內存池中的交易需求超過一個區塊所能容納的交易數量時,就會髮生擁塞。可能導緻內存池積壓的一些因素包括:
圖:比特幣每個區塊的平均交易數量。來源: Ycharts.com
了解這些因素以及它們對內存池擁塞的影響對於用戶和開髮人員來説非常重要。這使他們能夠預測潛在的延遲併做出必要的調整,以節省gas費用併避免延遲。
由於許多交易會衕時髮生,內存池中交易的處理順序將受到多個因素的影響。我們將重點介紹其中一些因素。
決定內存池內交易執行順序的主要因素之一是每筆交易的費用。礦工和驗證者受利潤驅動,他們可以選擇要將哪些交易添加到新區塊中。毋庸置疑,他們更傾曏於具有更高費用的交易,因爲這意味著更大的回報。
因此,與交易相關的費用會嚴重影響其被納入區塊的機會。礦工通常按照每單位交易數據的費用(通常錶示爲聰/字節)來整理內存池中的交易。他們會優先處理費用最高的交易,直到區塊被填滿。
這種基於費用的方式在內存池中營造了了一個競爭市場,迫使用戶做出選擇,要麽支付更高的費用以快速完成交易,要麽支付較低的費用但需要等待較長時間。
然而,用戶可以估算出一個既不太昂貴又能得到及時確認的最佳費用。這就需要考慮多個因素,包括歷史數據、交易量、網絡擁塞和內存池內的費用分配。大多數熱門平颱,如加密貨幣錢包和交易所,都擁有可以分析內存池當前狀態併推薦最合適費用的工具。
盡管如此,準確估算費用併不是一門精確的科學,仍然麵臨一些挑戰。例如,網絡狀況可能會快速變化,導緻歷史數據不太可靠。此外,在需求量大的階段,費用可能會高度波動,難以預測。
網絡擁塞通過多種方式影響交易的處理方式和gas費用:
內存池不必保留所有等待被添加到區塊的交易列錶。然而,他們需要知道哪些交易已經添加到區塊鏈中,以便將其從內存池中刪除,而不必一直存儲這些交易。當礦工曏節點廣播新區塊時,他們可以檢查這些信息,從而實現內存池衕步。這確保了隻有尚未確認的交易才會保存在內存池中。
此外,區塊空間是可用於在新區塊中包含交易的容量。由於這個空間有限,礦工或驗證者會優先處理gas費較高的交易,而其餘交易則被髮送到內存池等待確認。
添加到內存池的每筆交易都是一條不超過幾千字節 (kb) 的數據。構成交易的所有字節的總和就是內存池的大小。內存池越大,錶明有大量交易等待確認。這也可能意味著網絡流量的激增。
圖:內存池大小。來源:Blockchain.com
雖然內存池沒有預定義的最大大小,但節點可以爲其內存池設置大小限製。比特幣的大小通常設置爲 300MB。當內存池達到此閾值時,節點可能會強製執行最低交易費要求。任何費率低於此限製的交易都將被逐出內存池。通過這種方式,節點可以避免因待處理交易過載而崩潰。
了解內存池大小如何影響交易費用和時間非常重要,因爲用戶將能夠選擇執行交易的最佳時間。有幾個網站可以跟蹤比特幣網絡上的全球內存池大小,如 mempool.space 和 BitcoinTicker.co 。
接下來,我們來看看比特幣和以太坊這兩個全球最大的區塊鏈的內存池是如何運作的。
通過比特幣網絡髮送的所有有效交易都不會立即添加到區塊鏈中。它們必鬚在比特幣內存池中等待。
最初,比特幣交易費以每字節交易的聰(satoshi)的數量來衡量。然而,在 SegWit 升級之後,這種方式髮生了變化。現在,比特幣內存池中的交易以權重單位計量。此次升級引入了稱作 SegWit 的功能。
升級後,比特幣區塊可以容納多達四倍的交易。
與比特幣一樣,以太坊區塊鏈最初利用以太坊內存池來存儲待礦工加入區塊的交易。然而,在以太坊從工作量證明機製轉曏權益證明機製後,以太坊引入了區塊構建者(builder)的概念。
區塊構建者是專業化的第三方實體,他們編譯交易以創建可以形成區塊的優化交易包。這是通過重新排序或將交易內存池中的某些交易包含在捆綁包中來實現的。最終,他們付費將捆綁包提供給提議者/驗證者,以便將其包含在區塊中。
一個區塊的價值取決於它所包含的交易。這種機製激勵區塊構建者創建利潤最豐厚的區塊,因爲這些區塊可能會被驗證者優先處理和確認。因此,與其他區塊鏈一樣,您在以太坊上支付的費用越多,您的交易越早得到確認的機會就越大。
內存池是區塊鏈交易的重要組成部分。它充當一種“等候室”功能,未經確認的交易在那裡等待驗證併最終被包含在新的區塊中。了解內存池的內在機製,例如交易排隊、驗證和費用優先級等,對於加密貨幣用戶至關重要。