Network

(詳細)交易歷程

  • November 6, 2017

我想更好地理解比特幣交易的路徑。雖然熟悉一般設置(送出付款,使用您的私鑰進行驗證,但網路中的每個人都可以使用您的公鑰驗證您的交易是否正確,探勘開始,有人找到隨機數,您的交易包含在區塊鏈中。 ..)但是,缺少塊:是否有可能(事後)通過網路(它到達的節點以及隨後在其他節點之間的傳播)退出我的交易旅程?我只是出於一些說明性​​的原因想知道在我的交易出現在例如chainquery的原始記憶體池中之前必鬚髮生的事情。

網路上的每個節點都連接到一個或(希望)更多的節點。任何時候發生活動(添加事務,找到新塊等),它啟動該活動的節點將其發送到它連接到的所有節點,它們也會這樣做。每個節點將通過驗證來執行交易,以驗證它認為它是一個有效的交易。這些驗證中的大多數都是硬性規則,但其中一些更靈活。例如,節點用於決定是否將交易添加到目前工作塊的邏輯可能取決於是否包含交易費用。對於這樣的驗證,一個人可以修改他們的程式碼來改變他們是否接受交易的規則,而不會導致他們的節點被認為是一個“壞”節點

由於所有這些活動,並且節點發送到節點發送到節點,在任何給定時間,一個節點可能沒有與另一個節點完全相同的資訊,所以你的下一個問題可能是如何處理它,答案是它取決於節點之間的不同之處,但這裡有幾個範例:

假設您找到了一個新區塊(恭喜!),並且您的節點上有 100 個待處理的交易。但是還有 5 筆其他節點從未向您發送過的交易(或者您因為他們沒有支付費用或其他原因而拒絕)。在這種情況下,發生的事情很簡單:您確實擁有的 100 筆交易將被記錄並成為鏈的一部分,而您沒有的 5 筆交易則不會(並且可能會出現在下一個區塊中)。

更棘手的事情,例如兩個節點,A 和 B,同時解決一個塊呢?在這種情況下,A 和 B 都將他們的解決方案發送到他們的節點,並且在(希望是短暫的)一段時間內,鏈中將會出現分裂,一些節點在 A+1 上工作,而一些節點在 B+ 上工作1. 最終網路處理得很好。其中一個節點將獲勝,而另一個節點將失去。獲勝的節點將成為永久鏈的一部分,而失敗的節點將永遠失去。這正是大多數網站在區塊深度達到 X 級之前不認為交易完成的原因。隨著交易變得越來越老,它成為最終被丟棄的鏈的一部分的可能性越來越小。

可能還有另外十幾種事物對於它們在節點上移動時發生的情況有不同的規則,但我希望這能讓您了解它是如何在網路上發生的兩種主要活動類型中工作的。

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