Evm

合約是如何在節點上執行的?

  • June 23, 2016

合約是如何在全節點上執行的?

它們是在先進先服務的基礎上逐個執行,還是在隔離環境中同時執行?如果它們並行執行,我想它可能會很快耗盡資源。

如果它們在隔離的沙箱中執行,儲存的數據是否也是隔離的?如果是這樣,它們之間如何共享數據修改,或者它們不是?

當一個節點正在驗證一個區塊時,交易會按照區塊指定的順序依次執行;這是必要的,因為一個塊可能包含呼叫同一合約的多個交易,並且合約的執行可能取決於先前呼叫者修改的狀態。

當礦工在探勘一個區塊時,它會選擇要包含哪些交易以及以什麼順序;它們仍然按上述順序執行。

每個合約在其自己的 EVM 實例中執行;它只能訪問輸入數據、自己的儲存和各種區塊鏈數據(例如其他合約的程式碼和最近的區塊雜湊)。它還可以呼叫其他合約。一個合約不能直接訪問另一個合約的儲存。

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