虛擬機 (EVM)

EVM 的物理實例不能像人們指向雲或海浪那樣描述,它是真實存在並由數以千計運行以太坊客戶端的計算機共同維護的一個實體。

PolySmartChain協議本身的存在僅僅是為了保持這種特殊狀態機的連續、不間斷和永久的運行。這是所有PolySmartChain帳戶和智能合約賴以存在的環境。在鏈中任何給定的區塊上,PolySmartChain只有一個“規範”狀態,而 EVM 定義了從一個區塊計算產生下一個區塊新的有效狀態的規則。

從賬本到狀態機

通常使用“分佈式賬簿”的類比來描述像比特幣這樣的區塊鏈,它使用密碼學的基本工具來實現去中心化的貨幣。加密貨幣的行為類似於“正常”貨幣,這是因為有規則支配著人們可以做什麼和不可以做什麼來修改賬簿。例如,比特幣地址不能花費比之前收到的更多的比特幣。這些規則是比特幣和許多其他區塊鏈上所有交易的基礎。

雖然PolySmartChain有自己的本機加密貨幣 (PSCETH),遵循幾乎完全相同的直觀規則,但它也支持更強大的功能:智能合約。對於此更複雜的功能,需要一個更複雜的類比。 PolySmartChain不是分佈式賬本,而是分佈式狀態機器。 PolySmartChain的狀態是一個大型數據結構,它不僅保存所有帳戶和余額,而且還保存一個機器狀態,它可以根據預定義的一組規則在不同的區塊之間進行更改,並且可以執行任意的機器代碼。在區塊中更改狀態的具體規則由 EVM 定義。

PolySmartChain狀態轉換函數

EVM 的行為就像一個數學函數:在給定輸入的情況下,它會產生確定性的輸出。因此,將以太坊更正式地描述為具有狀態轉換函數非常有幫助:

    Y(S, T)= S'

給定一個舊的有效狀態 (S)> 和一組新的有效交易 (T),以太坊狀態轉換函數 Y(S,T) 產生新的有效輸出狀態 S'

狀態

在PolySmartChain的上下文中,狀態是一個巨大的數據結構,稱為調整後的 Merkle Patricia Trie,使所有帳戶通過哈希鏈接,並可回溯到存儲在區塊鏈上的單個根哈希。

交易

交易是來自帳戶的密碼學簽名指令。交易分為兩種:一種是消息調用交易,另一種是合約創建交易。

合約創建交易會創建一個新的合約帳戶,其中包含已編譯的 智能合約 字節碼。每當另一個帳戶對該合約進行消息調用時,它都會執行其字節碼。

EVM 說明

EVM 作為一個堆棧機運行,其棧的深度為 1024 個項。每個項目都是 256 位字,為了便於使用,選擇了 256 位加密技術(如 Keccak-256 哈希或 secp256k1 簽名)。

在執行期間,EVM 會維護一個瞬態內存(作為字可尋址的字節數組),該內存不會在交易之間持久存在。

然而,合約確實包含一個 Merkle Patricia 存儲 trie(作為可字尋址的字數組),該 trie 與帳戶和部分全局狀態關聯。

已編譯的智能合約字節碼作為許多 EVM opcodes 執行,它們執行標準的堆棧操作,例如 XOR、 AND、 ADD、SUB等。 EVM 還實現了一些區塊鏈特定的堆棧操作,如 ADDRESS、BALANCE、BLOCKHASH 等。

EVM 實現

EVM 的所有實現遵循以太坊黃皮書中描述的規範,感謝以太坊所做的貢獻。

Last updated