Is a transaction a type of a message? Is message call a call? And which of these results in any state change?
[Ethereum] the difference between a “call” , “message call” and a “message”
go-ethereumyellow-paper
go-ethereumyellow-paper
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.