[Ethereum] the difference between a “call” , “message call” and a “message”


Is a transaction a type of a message? Is message call a call? And which of these results in any state change?

Best Answer

Good question. Both "message" and "call" are, arguably, overloaded terms. This question connects similar-sounding practical concerns and internal formal concerns making it challenging to address.

See Eth's answer for formal definitions of terms. I suspect the intent of the question is of a more practical nature. That is, how to work with the protocol as a developer more than how the protocol itself is defined.

First thing, understand the two modes of interacting with the chain. This can be read-only or with network verification. Adding to confusion, the Web3 method for forcing read-only mode is .call().

See this: What is the difference between a transaction and a call?

And this: https://blog.b9lab.com/calls-vs-transactions-in-ethereum-smart-contracts-62d6b17d0bc2

A message can be a transaction signed by an Externally Owned Account, or from a contract to another account. The latter are deterministic and can be considered instantanious. The former are subject to mining delays.

Hope it helps.

Related Topic