I know that EOA's can send transactions between each other, but also to contracts.

However, contracts can only send so-called messages, i.e. data without signature (authentication).

I'm confused, whether contracts may only send messages between each other in the Ethereum execution environment (EVM), or they can also send messages to EOA's (e.g., send ether).

Can someone clarify?

1 Answer 1


No, contracts can only execute transactions on each other. A contract can send ether to an EOA but only on another contract's or EOA command.

  • EOA executes contract function which uses the transfer function to send ether to an EOA

  • EOA executes a contract function which in turn executes a function on another contract which uses transfer to send ether to an EOA.

In any case, an EOA (a user) has to start the transfer by executing a transaction on the smart contract, as they can't just execute a transaction on their own without someone signing it.

  • To transfer ether, I use the address.send() function of Solidity, right?
    – Shuzheng
    Dec 5, 2017 at 16:31
  • Don’t you mean that contracts can only send messages that execute code to each other? EOA’ don’t have any code. In case that a contract transfer ether to an EOA, does this create a transaction in the EVM?
    – Shuzheng
    Dec 5, 2017 at 16:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.