Contract-Development
EVM 是處理交易還是僅用於執行合約程式碼?
EVM 是處理交易還是僅用於執行合約程式碼?
我想知道 EVM 是否用於處理交易?我知道它用於執行(或解釋)合約的字節碼,但它是否也在賬戶之間轉移資金或向合約發送消息的交易中呼叫?
你可以在這裡閱讀:
乙太坊虛擬機是執行交易程式碼的引擎,是乙太坊與其他系統的核心區別特徵。
我想知道 EVM 是否用於處理交易?我知道它用於執行(或解釋)合約的字節碼,但它是否也在賬戶之間轉移資金的交易中呼叫……
僅當交易發送到合約地址時。在這種情況下,是的,字節碼將被載入,EVM 將解釋指令。
…或向契約發送消息?
是的。假設您的意思是message call,黃皮書將其定義為:
Message Call: The act of passing a message from one Account to another.
在這種情況下,是的,這是由 EVM 使用
CALL
操作碼處理的。如果你把這段程式碼放到remix中,然後發送一個事務到
B.getA()
,然後查看調試器,你可以看到它在執行。pragma solidity ^0.4.10; contract A { uint public value = 1; } contract B { A a = new A(); function getA() returns(uint){ return a.value(); } }