以太坊上用戶編寫的合約是不可控的晾匠,要保證這些合約能夠正確執(zhí)行并且不會影響區(qū)塊鏈的穩(wěn)定茶袒,虛擬機需要做安全方面的考慮。
1 在程序執(zhí)行過程中采取的每個計算步驟都必須提前支付費用, 從而防止DoS攻擊凉馆。先消耗gas再執(zhí)行薪寓,增加了攻擊者制造和運行無效合約的成本,使攻擊者無法制造大量的無效合約澜共。
2 EVM是一個沙盒程序向叉,它只能執(zhí)行合約更改自身賬戶狀態(tài),或者調(diào)用另一合約嗦董,不能做其它操作母谎。
3 程序的執(zhí)行必須保證一致性和確定性,不能出現(xiàn)不同節(jié)點執(zhí)行相同程序出現(xiàn)不同結(jié)果的情況
4 程序執(zhí)行必須可終止展懈,不能無限執(zhí)行销睁,以太坊通過gas保證可終止性。
5 一個合約不能直接訪問另一合約的狀態(tài)存崖,合約之間的通信只能通過傳遞任意長度的binary數(shù)組冻记。