Transactions

非礦工節點是否同時驗證單個交易和整個區塊?

  • November 8, 2018

我的理解是,發起節點向其鄰居廣播交易,他們都驗證交易以確保(a)簽名有效和(b)狀態更改有效,然後再將交易廣播給他們的鄰居。此時節點不執行事務。

最終,交易將到達一個探勘節點,然後將其包含在一個塊中。如果礦工成功,它會將區塊廣播到網路。

然後,正常節點將驗證該塊,如果有效,將執行其中的交易。

它是否正確?

…和 ​​(b) 在將交易廣播給他們的鄰居之前,狀態變化是有效的。此時節點不執行事務。

檢查狀態轉換是否有效實質上是執行事務而不保留任何關聯的狀態更改。所以從某種意義上說,節點將“執行”交易。

然而,在這個階段,我不相信非挖礦節點會驗證與交易池內容相關的狀態變化。對於低功率節點來說,這樣做的成本太大了。(我會嘗試找到這個斷言的來源。)

然後,正常節點將驗證該塊,如果有效,將執行其中的交易。

是的*。為了驗證區塊,他們首先檢查工作證明是否正確,然後應用與區塊交易相關的狀態轉換。(第二步本質上是“執行交易”。)

請注意,一些挖礦節點可能會執行一種策略,即他們不*驗證與新收到的塊相關的狀態更改。通過盲目地接受一個塊而不驗證它,他們可以更快地開始探勘下一個塊。大概他們’會在某個時候驗證它…)

引用自:https://ethereum.stackexchange.com/questions/61947