Contract-Development
網路上的新節點是否應該從一開始就執行所有交易?
這個問題可能很愚蠢,我很抱歉。我只有那麼多時間來獲得專業知識。
假設有一個巨大的工作區塊鏈,其中充滿了智能合約和這些智能合約上的交易。
據我了解,所有節點都必須執行所有這些智能合約以及所有改變這些合約狀態的交易。
然後有一個新節點加入這個舊區塊鏈。為了獲得所有合約的正確狀態,它應該下載整個區塊鏈,然後執行與智能合約相關的所有交易嗎?
這個願景是否正確,我在哪裡錯過了什麼?謝謝!
據我了解,所有節點都必須執行所有這些智能合約以及所有改變這些合約狀態的交易。
是的,沒錯。
有一點細微差別——區塊鏈上的執行只發生一次。一個完整的節點將根據這些執行來執行區塊驗證,確認鏈的狀態是否正確——它更多的是重播/模擬,而不是重新執行。正是這種驗證部分地保證了區塊鏈的安全,因為更多的節點驗證了狀態並且只保留了符合協議規則的塊(最長的鏈獲勝)。