以太坊漫談(一)
2018-8-12 19:04
來源:
兄弟連教育
以太坊的代碼執行
以太坊合約的代碼使用低級的基于堆棧的字節碼的語言寫成的,被稱為“以太坊虛擬機代碼”或者“EVM代碼”。代碼由一系列字節構成,每一個字節代表一種操作。一般而言,代碼執行是無限循環,程序計數器每增加一(初始值為零)就執行一次操作,直到代碼執行完畢或者遇到錯誤,STOP或者RETURN指令。操作可以訪問三種存儲數據的空間:
代碼可以像訪問區塊頭數據一樣訪問數值,發送者和接受到的消息中的數據,代碼還可以返回數據的字節隊列作為輸出。
EVM代碼的正式執行模型令人驚訝地簡單。當以太坊虛擬機運行時,它的完整的計算狀態可以由元組(block_state, transaction, message, code,memory, stack, pc, gas)來定義,這里block_state是包含所有賬戶余額和存儲的全局狀態。每輪執行時,通過調出代碼的第pc(程序計數器)個字節,當前指令被找到,每個指令都有定義自己如何影響元組。例如,ADD將兩個元素出棧并將它們的和入棧,將gas(瓦斯)減一并將pc加一,SSTORE將頂部的兩個元素出棧并將第二個元素插入到由第一個元素定義的合約存儲位置,同樣減少最多200的gas值并將pc加一,雖然有許多方法通過即時編譯去優化以太坊,但以太坊的基礎性的實施可以用幾百行代碼實現。
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。