Passer au contenu principal
Change page

Interagir avec les contrats intelligents

Vous n'avez pas toujours besoin d'écrire et de déployer votre propre contrat intelligent. La plupart du temps, en tant que développeur, vous voudrez interagir avec des contrats intelligents que d'autres ont déjà déployés sur le réseau Ethereum.

Cette page couvre les deux manières fondamentales d'interagir avec un contrat intelligent — la lecture de données et l'écriture de données — ainsi que les outils dont vous avez besoin pour faire les deux.

Prérequis

Vous devriez comprendre :

Deux façons d'interagir avec un contrat intelligent

L'interaction avec un contrat intelligent se divise en deux catégories :

Lire depuis un contrat

La lecture est une opération gratuite qui ne crée pas de transaction et ne modifie aucun état sur la chaîne de blocs.

Lorsque vous lisez depuis un contrat, vous interrogez simplement des données qui existent déjà. Par exemple :

  • Vérifier le solde d'un jeton ERC-20
  • Lire le prix actuel sur un échange décentralisé
  • Obtenir le propriétaire d'un NFT

Étant donné que les lectures ne modifient pas l'état, elles ne coûtent pas de gaz et peuvent être effectuées par n'importe qui sans avoir besoin d'ETH.

Écrire dans un contrat

L'écriture est une opération modifiant l'état qui nécessite une transaction et coûte du gaz.

Lorsque vous écrivez dans un contrat, vous déclenchez une fonction qui modifie l'état de la chaîne de blocs. Par exemple :

  • Transférer des jetons
  • Échanger des jetons sur un échange décentralisé
  • La frappe d'un NFT

L'écriture nécessite toujours :

  1. Un compte détenu par un tiers (EOA) avec suffisamment d'ETH pour le gaz
  2. Une transaction signée par la clé privée du compte
  3. Que la transaction soit minée et incluse dans un bloc

Avec l'abstraction de compte, un compte de contrat intelligent peut également initier des écritures, et un paymaster peut couvrir le gaz au nom de l'utilisateur — un EOA détenant de l'ETH n'est donc pas strictement requis.

Comprendre les ABI de contrat

Pour interagir avec un contrat intelligent, votre application doit savoir ce que le contrat peut faire. C'est là qu'intervient l'Interface Binaire d'Application (ABI).

Une ABI est un document JSON qui décrit :

  • Chaque fonction exposée par le contrat (nom, entrées, sorties)
  • Chaque événement que le contrat peut émettre
  • Comment encoder et décoder les données lors de la communication avec le contrat

Considérez l'ABI comme le manuel d'instructions du contrat — sans elle, votre application ne sait pas quelles fonctions existent ni quels paramètres elles attendent.

Où trouver l'ABI d'un contrat

  • Contrats vérifiés sur Etherscan - Etherscan (s'ouvre dans un nouvel onglet) expose automatiquement l'ABI pour le code source vérifié
  • Auprès du développeur - de nombreux projets publient leurs ABI dans leur documentation ou leurs paquets npm
  • Générer à partir de la source - si vous avez le code source Solidity, vous pouvez le compiler pour produire l'ABI

Outils et bibliothèques pour interagir avec les contrats

Les développeurs utilisent généralement une bibliothèque JavaScript/TypeScript pour interagir avec les contrats depuis une application web, un backend ou un script.

Bibliothèques client (JavaScript/TypeScript)

Bibliothèques backend

Exemple : lire le solde d'un jeton avec Viem

Exemple : envoyer une transaction avec ethers.js

Événements et journaux

Les contrats intelligents peuvent émettre des événements pour signaler que quelque chose s'est produit. Votre application peut écouter ces événements pour réagir en temps réel.

Simuler des transactions

Avant d'envoyer une transaction, vous pouvez la simuler pour vérifier si elle réussirait — et pour voir sa valeur de retour — sans dépenser de gaz. C'est utile pour détecter les erreurs tôt et pour prévisualiser les résultats.

La plupart des bibliothèques client prennent cela en charge via eth_call :

// Avec Viem
const result = await client.simulateContract({
  address: contractAddress,
  abi,
  functionName: 'swap',
  args: [amountIn],
  account: userAddress,
})

Portefeuilles et signature

Dans une application décentralisée (dapp), le portefeuille de l'utilisateur (comme MetaMask, Rainbow ou WalletConnect) gère la signature. Vous ne gérez pas les clés privées directement.

Les bibliothèques de portefeuilles et les outils de connexion font abstraction de cela afin que vous puissiez vous concentrer sur la construction de la logique de votre application.

Lectures complémentaires