Contract-Development

EVM 是處理交易還是僅用於執行合約程式碼?

  • January 31, 2022

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();
   }
}

混音呼叫操作碼

引用自:https://ethereum.stackexchange.com/questions/26053