Call

Solidity

Définition

Fonction bas niveau pour interagir avec des contrats. Plus flexible que transfer() ou send(), permet d'envoyer de l'ether ET d'appeler des fonctions, avec un gas limit personnalisable. Retourne (bool success, bytes memory data). Contrairement à transfer(), ne revert pas automatiquement en cas d'échec, nécessite une vérification manuelle du succès. Préféré depuis Solidity 0.8+.

Version anglaise

Low-level function for interacting with contracts. More flexible than transfer() or send(), allows sending ether AND calling functions with customizable gas limit. Returns (bool success, bytes memory data). Unlike transfer(), does not automatically revert on failure, requires manual success check. Preferred since Solidity 0.8+.

Exemple de Code

// Envoyer de l'ether avec call
(bool success, ) = recipient.call{value: 1 ether}("");
require(success, "Transfer failed");

// Appeler une fonction d'un autre contrat
(bool success, bytes memory data) = target.call(
  abi.encodeWithSignature("transfer(address,uint256)", recipient, 100)
);
require(success, "Call failed");

// Avec gas limit personnalisé
target.call{gas: 50000}(data);

Pratique ce concept sur Solingo

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

Commencer gratuitement