Transactions

事務的逐步生命週期是什麼?

  • March 16, 2016

我試圖了解交易的生命週期,但尚未找到 P2P 交易發生時發生的事件的技術性、線性“時間線”。

到目前為止,這是我的理解;請根據需要更正:

  1. 一個人使用他們的 RSA 私鑰簽署一條消息,上面寫著“從我的帳戶中扣除 X 金額並將其發送到 YYY 地址”。在此消息中,他們還引用了目前的塊編號。
  2. 客戶端應用程序(錢包)將此交易發送到 6 個節點進行“確認”。(目的地是礦工還是錢包?)
  3. ?? 確認實際上是做什麼的?
  4. 挖礦節點將這些交易添加到稱為塊的單個消息中(並以幾乎任何順序保存它們
  5. 挖礦節點競爭以找到以預定數量的零開頭的塊的 SHA256(SHA256(x)) 雜湊。
  6. 生成獲勝雜湊的第一個探勘節點(或節點池)收集獎品並增加塊計數。(請注意,目前這似乎需要 30 分鐘,並且塊大小限制為 1MB)
  7. 礦工通知錢包,然後錢包將新區塊複製給任何請求它的人,並將更新推送給一定數量的同行。任何與系統時間相差大於 120 分鐘的塊都將被丟棄。
  8. 任何引用已解決塊的進行中交易都必須由原始客戶端重新送出並引用目前塊。
  9. 在比特幣客戶端中檢測到衝突交易(雙花)並丟棄。
  10. 錢包將跟踪任何分叉的鏈,並且具有最大計算能力支持它的鏈獲勝。由於網路分裂或惡意活動,可能會發生此分叉)。此外,目前沒有一個錢包或中央機構知道網路中發生的所有無效交易或分叉。
  11. 一旦發送了 100 個(或 120 個)確認,就可以使用該塊生成的 BTC。資源

事務的生命週期是這樣的:

  1. 你從一個客戶、一個包含你的密鑰對的錢包和一些未使用的交易開始(你從其他人那里或通過挖礦獲得這些交易)。
  2. 您創建一個新交易,花費一些未使用的比特幣,並使用您的私鑰對其進行簽名。您的客戶將儲存它的副本。
  3. 您的客戶開始通過比特幣網路廣播新交易。據我所知,它不會向每個對等方廣播,而是向每 8 個對等方廣播,以保護您的匿名性。每分鐘,客戶端還將向其中一個對等方廣播它知道的所有交易,其中也包括您的新交易。
  4. 每個收到你的交易的客戶都會仔細檢查它——他們檢查簽名是否正確,是否有任何錯誤,以及你是否試圖執行雙花。如果您的交易不符合任何條件,則客戶端將完全忽略它。否則,客戶端會在臨時記憶體中記錄事務。
  5. 所有知道您的交易的客戶端都遵循與您類似的廣播路線 - 將其發送給 1/8 對等方,然後每分鐘發送給一個對等方。如果在給定時間其費用太小,他們也不會廣播您的交易(這取決於要包含在一個塊中的交易數量等)。一般來說,如果你不支付費用,你就會在這裡受到交易廣播速度慢的懲罰。
  6. 最終您的交易會到達一些礦池和交易的接收者。後者將在他們的錢包中看到新交易並無限期地儲存它的副本,但它將顯示為 0 個確認。礦池會將其視為一項新交易,並且(很可能)會將其包含在他們嘗試創建的每個區塊中。他們將儲存臨時塊的本地副本,並將相應的工作交給他們的礦工解決。
  7. 礦工對你的交易一無所知,除了一個或多個交易它散列到給定的默克爾根。他們的工作是處理數字,而不是檢查區塊有效性,因為這是礦池的任務。
  8. 最終你的交易被包含在一個被解決的區塊中。它通過比特幣網路自豪地廣播,從現在開始每個人都會記錄下來(以了解是否有一些新交易在雙花嘗試中與它發生衝突)。現在您的交易有 1 個確認。
  9. 塊創建過程繼續進行,隨著越來越多的塊在您的交易被包含的塊上建構,它會獲得更多的確認。最終達到 6 次及以上的確認,就被認為是完全確認了。
  10. 一旦被另一筆交易花費,該交易就完成了它的生命週期,這意味著它的輸出可以從“未使用”的記憶體中被遺忘,並且忽略任何其他嘗試使用它們。但是,只要人們跟踪整個鏈,它就會一直保留在區塊鏈中。

在 51% 攻擊等過程中有一些複雜情況,但這是標準交易的主要流程。

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