以太坊虛擬機(EVM)
是以太坊中智能合約的運行環境賬戶(Accounts)
以太坊中有兩類賬戶外部賬戶、合約賬戶。兩類賬戶唯一的區別是:合約賬戶存儲了代碼,外部賬戶則沒有
交易(Transactions)
一筆交易是一條消息,從一個賬戶發送到另一個賬戶Gas
以太坊上的每筆交易都會被收取一定數量的gas,gas的目的是限制執行交易所需的工作量,同時爲執行支付費用存儲,主存和棧(Storage, Memory and the Stack)
每個賬戶有一塊持久化內存區域被稱爲存儲內存區被稱爲主存
EVM不是基於寄存器,而是基於棧的虛擬機。因此所有的計算都在一個被稱爲棧的區域執行
指令集(Instruction Set)
EVM的指令集被刻意保持在最小規模,以儘可能避免可能導致共識問題的錯誤實現消息調用(Message Calls)
合約可以通過消息調用的方式來調用其它合約或者發送以太幣到非合約賬戶代碼調用和庫(Delegatecall / Callcode and Libraries)
存在一種特殊類型的消息調用,被稱爲callcode。