Transfer

Solidity

Définition

Fonction pour envoyer de l'ether depuis un contrat vers une adresse payable. Syntaxe : recipient.transfer(amount). Limite de 2300 gas (suffisant pour un receive() simple, mais pas pour du code complexe). Revert automatiquement en échec. Déprécié au profit de call{value: amount}("") qui offre plus de contrôle.

Version anglaise

Function to send ether from contract to payable address. Syntax: recipient.transfer(amount). 2300 gas limit (enough for simple receive(), but not complex code). Automatically reverts on failure. Deprecated in favor of call{value: amount}("") which offers more control.

Exemple de Code

contract Payment {
  // ⚠️ Ancienne méthode (déconseillée)
  function sendOld(address payable recipient, uint256 amount) public {
    recipient.transfer(amount); // Limite 2300 gas
  }

  // ✅ Méthode moderne (recommandée)
  function sendNew(address payable recipient, uint256 amount) public {
    (bool success, ) = recipient.call{value: amount}("");
    require(success, "Transfer failed");
  }
}

Termes Liés

Pratique ce concept sur Solingo

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

Commencer gratuitement