What are Ethereum transactions?


A transaction is a message that is sent from one account to another account. It can include binary data (which is called “payload”) and Ether.

If the target account contains code, that code is executed and the payload is provided as input data.

If the target account is not set (the transaction does not have a recipient or the recipient is set to null), the transaction creates a new contract. The address of that contract is an address derived from the sender and its number of transactions sent (the “nonce”).

The payload of such a contract creation transaction is taken to be EVM bytecode and executed. The output data of this execution is permanently stored as the code of the contract. This means that in order to create a contract, you do not send the actual code of the contract, but in fact code that returns that code when executed.

See: https://ethereum.org/en/whitepaper/#messages