Blockchain
區塊鏈狀態和乙太坊單例有什麼區別?
我正在閱讀 Mastering Ethereum 的書,並遇到了這篇文章:
一旦被探勘到一個塊中,交易也會修改乙太坊單例的狀態,要麼通過修改賬戶餘額(在簡單支付的情況下),要麼通過呼叫改變其內部狀態的合約。
進一步閱讀我遇到:
如前所述,重要的是要記住不能更改合約的程式碼。但是,可以“刪除”合約,從其地址中刪除程式碼及其內部狀態(儲存),留下一個空白帳戶。
這再次讓我認為乙太坊有兩個狀態來源。一個在區塊鏈上,另一個通常稱為內部狀態。
有人可以幫助我更好地理解這一點嗎?
實際上有兩種狀態需要考慮嗎?如果是這樣,有什麼區別?如果不是,那麼區塊鏈狀態與乙太坊單例內部狀態有何不同。
這裡的“內部狀態”是指給定乙太坊賬戶的儲存狀態。它包含在乙太坊的狀態中。請記住,乙太坊的狀態包含所有帳戶,包括它們的儲存和余額。
要修改賬戶的“內部狀態”(或儲存),交易必須在乙太坊目前狀態下執行,涉及到新的乙太坊目前狀態的轉換。
在乙太坊中一次只有一種狀態。來自黃皮書:
乙太坊作為一個整體,可以被視為基於事務的狀態機:我們從創世狀態開始,逐步執行事務以將其轉變為目前狀態。正是這種目前狀態被我們接受為乙太坊世界的規範“版本”。
另外,請記住,合約只不過是一個在其“codeHash”欄位中具有非空字元串的帳戶。有關帳戶欄位的更多資訊,請參閱檢查帳戶。