Transaction-Propagation

比特幣的八卦協議完美嗎?

  • March 2, 2021

使用比特幣的八卦協議,我們是否可以理所當然地認為,如果我發送了一筆交易,例如,1:00 PM on 1st January 2018 UTC那麼在下午 1:00 連接到網路的每個節點都會收到該交易,比如說(對於網路延遲)1:05 PM 1st January 2018,因為八卦協議有效嗎?

我所說的每個人都是指當時連接到網路的每個節點。

給定一些網路延遲時間,消息是否會到達所有連接的對等點,如果是,它們需要多長時間才能做到這一點?

給定一些網路延遲時間,消息是否絕對會到達所有連接的對等點,它們需要多長時間才能做到這一點?

通常,支付足夠的費用以被大多數記憶體池接受且網路上沒有任何衝突的標準交易將在一分鐘左右到達幾乎所有節點。

但是,不能保證它會到達所有節點。每個節點都有自己的中繼策略,即使行為完全正確的節點也可能選擇根本不中繼任何東西。

大多數延遲是由於傳播中的故意延遲。在轉發之前添加隨機延遲以掩蓋事務的來源。每跳平均需要 5-10 秒。

比特幣有一個具有絕對傳播保證的子系統——區塊鏈。雖然顯然不受網路分區的影響,但每個節點最終都會學習到最好的鏈。無法保證需要多長時間或其中包含哪些交易。

通常,所有完整節點都應該在幾分鐘內輕鬆收到您的交易。不過也有一些例外。

  1. 非標準交易只有在被包含在一個塊中時才會被傳播。這也意味著,如果您要發送隔離見證交易,非隔離見證節點不會將其添加到他們的記憶體池或傳播它,因為它對他們來說是不標準的。這應該只影響今天的少數完整節點,例如比特幣無限節點和早於 0.13.0 的比特幣核心節點。
  2. 如果您的交易的費率低於minRelayTxFee500,則大多數節點都不會傳播和請求該交易。
  3. 如果有大量超過預設記憶體池大小的交易在等待,並且您的交易費率低於臨界值,則大多數節點在記憶體池放鬆之前不會了解您的交易。
  4. 節點通常不會接受與他們已經知道的另一個交易衝突的任何交易到他們的記憶體池。例如,如果一個節點聽說有兩個交易花費相同的輸入,它只會認為第一個有效(除非另一個被包含在一個塊中)。

引用自:https://bitcoin.stackexchange.com/questions/76789