In order to receive ethers in Solidity (or any other native coin in any EVM blockchain), we need to create a receive()
function with the payable
modifier.
This shot is written for Solidity versions newer than 0.6. It may not work on older versions.
The receive()
function does not take parameters, has no return value, and must be external
.
This function will be called every time we send ethers to the contract.
If no
receive
function is provided, a fallback function should be defined to handle everything.
Below is a visual representation of the workflow of a transaction.
// SPDX-License-Identifier: GPL-3.0pragma solidity >=0.6.0 <0.9.0;// This contract keeps all Ether sent to it with no way// to get it back.contract HelloWorld {event Received(address, uint);receive() external payable {emit Received(msg.sender, msg.value);}}