Receive

Solidity

Définition

Fonction spéciale exécutée quand le contrat reçoit de l'ether sans données (msg.data vide). Déclarée avec receive() external payable. Introduite en Solidity 0.6 pour séparer la réception d'ether (receive) des appels de fonctions inexistantes (fallback). Limite de 2300 gas si appelée via transfer() (pas assez pour écrire dans le storage).

Version anglaise

Special function executed when contract receives ether without data (empty msg.data). Declared with receive() external payable. Introduced in Solidity 0.6 to separate ether reception (receive) from non-existent function calls (fallback). 2300 gas limit if called via transfer() (not enough to write to storage).

Exemple de Code

contract Vault {
  event Received(address sender, uint256 amount);

  // Reçoit l'ether directement
  receive() external payable {
    emit Received(msg.sender, msg.value);
  }

  // Si msg.data n'est pas vide, fallback est appelé
  fallback() external payable {
    revert("Use receive()");
  }

  function getBalance() public view returns (uint256) {
    return address(this).balance;
  }
}

Pratique ce concept sur Solingo

Maîtrise Receive avec des exercices interactifs et un IDE intégré.

Commencer gratuitement