Bitcoin-Core

比特幣交易驗證流程

  • September 28, 2020

我對建構塊有一個大致的了解。但我希望有人可以填寫細節/空白。另外,如果有不對的地方,你能糾正嗎?謝謝。

設想:

  1. 比特幣交易被廣播到比特幣網路。
  2. 節點接收交易。
  3. 每個節點都將交易放入自己的內部記憶體池 - 還是所有節點都從中提取交易的網路記憶體池?
  4. 在某個時候,一些節點開始探勘(散列以找到帶有前導零的正確散列)。這從什麼時候開始?我會盡快假設,因為這是一場比賽。那麼,它不一定使用完全建構的塊中的數據,對吧?
  5. 在某些時候,挖礦節點會用來自記憶體池的交易填滿一個區塊(它們會提取費用最高的交易)。每個節點都會針對整個區塊鏈驗證它放入其塊中的每筆交易。
  6. 當一個節點找到一個獲勝的雜湊值時,它會向網路宣布獲勝的參數。
  7. 網路可以使用獲勝節點發出的參數(數據集、nonce 值等)輕鬆檢查雜湊。

所以這裡我有點不清楚。獲勝區塊中的交易如何/何時得到網路其他部分的驗證?是在他們驗證獲勝雜湊的時候嗎?他們是否也驗證了當時所有的交易都是好的?

有多少節點必須批准/驗證獲勝的雜湊值才能被比特幣網路接受為下一個要添加的區塊?

謝謝。

MCCCS 寫的一切都很好,但只是為了澄清你的最後一個問題:

有多少節點必須批准/驗證獲勝的雜湊值才能被比特幣網路接受為下一個要添加的區塊?

這個問題有點誤導:沒有“接受一個區塊進入比特幣網路”,因為這假設必須達到一些網路範圍的接受門檻值,或者某種中央是/否開關來接受一個區塊。

現實情況是網路是由獨立行動的節點組成的。每個節點自己決定一個塊是否有效,正是通過這些“共識規則”,網路碰巧就最長(最多工作)的區塊鏈達成了一致。一旦有效區塊被廣播,每個節點將獨立工作以驗證它是否有效,然後如果它通過所有測試,則將其添加到區塊鏈的本地副本中。該網路的設計使得我們期望遵循這些共識規則的所有節點都將保持共識,即使它們是獨立行動的。

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