Receive
SolidityDé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;
}
}Pages Liées
Pratique ce concept sur Solingo
Maîtrise Receive avec des exercices interactifs et un IDE intégré.
Commencer gratuitement