Consensus

智能合約程式碼:乙太坊中的節點在共識過程中實際達成的共識是什麼?

  • June 2, 2016

當合約被觸發時,所有節點執行程式碼;共識到底來自哪裡?他們是同意 OUTPUT 還是只是程式碼本身?

我期望通過閱讀文件會發生什麼(我還沒有親自跟踪程式碼或共識過程):

  • 每個挖礦節點從交易池中選擇一個待處理的交易列表並執行這些交易(包括智能合約程式碼的插入和執行)。
  • 上述執行的結果將改變賬戶餘額和智能合約程式碼儲存的數據(包括將新的合約程式碼插入區塊鏈)。
  • 交易和更新的數據被打包成一個區塊,交易雜湊+區塊雜湊+隨機數迭代求解,計算出雜湊。如果這個計算出的雜湊值小於一個目標數字(由目前難度級別決定),則挖礦節點已經解決了這個區塊,並在 P2P 網路上廣播這個獲勝的區塊結果。
  • 接收到這個廣播塊的每個節點都按照獲勝塊指定的順序執行交易和智能合約程式碼,並記錄由此產生的賬戶餘額變化和智能合約程式碼儲存的數據。
  • 然後每個節點計算交易雜湊 + 區塊雜湊 + 隨機數,並驗證計算出的雜湊 us 小於目標數(由目前難度級別確定)。
  • 如果計算出的雜湊值小於目標值,則每個節點都將獲勝區塊視為有效並將其添加到它的區塊鏈副本中。

總之,我希望所有節點都執行程式碼(和交易)並驗證區塊“數字”是否有效,然後才能在共識過程中接受區塊為有效。

編輯 12/05/2016 - 如前所述@Nick Johnson,比較狀態樹,因為這提供了目前和所有先前塊中的數據的校驗和。

問:他們同意 OUTPUT 還是只是程式碼本身?

答:他們根據每個事務的執行(包括執行程式碼)就輸出達成一致。

共識是在每個節點獨立執行合約後,某個區塊的合約值。

歡迎您瀏覽各種合約並查看共識狀態:

https://live.ether.camp/contracts

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