﻿---
title: "Contrat intelligent"
description: "Découvrez ce qu'est un contrat intelligent, comment les nœuds l'exécutent, où interviennent données externes et pouvoir de mise à niveau, et quoi vérifier avant d'interagir."
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Contrat intelligent

> À but éducatif uniquement ; ceci ne constitue pas un conseil en investissement. Les transactions avec des contrats intelligents peuvent causer des pertes irréversibles.

<a id="answer"></a>

## Réponse directe

Un contrat intelligent est un programme déployé sur une blockchain ou un réseau d'exécution distribuée comparable. Il contient du code et, sur de nombreuses plateformes, un état persistant. Une transaction ou un autre contrat peut appeler ses fonctions ; les nœuds exécutent les mêmes règles et acceptent la modification d'état issue du processus de validation et de consensus du réseau.

« Intelligent » ne signifie pas que le programme comprend l'intention, et « contrat » n'en fait pas automatiquement un accord juridiquement exécutoire. Le terme désigne du code capable d'imposer des conditions précises dans les limites des fonctions et données accessibles à son environnement d'exécution.

Les contrats intelligents peuvent :

- détenir ou transférer des actifs numériques selon des conditions programmées ;
- enregistrer et mettre à jour l'état d'une application ; et
- se combiner à d'autres contrats pour créer des plateformes d'échange, systèmes de prêt, jeux, outils de gouvernance et autres applications on-chain.

Leur prévisibilité se limite au code mis en œuvre et aux entrées. Un contrat peut s'exécuter exactement comme écrit et produire néanmoins un résultat indésirable en raison d'un défaut, d'une conception malveillante, de privilèges compromis ou de données externes erronées.

<a id="mechanism"></a>

## Fonctionnement

Une interaction classique suit ces étapes :

1. Les développeurs écrivent et testent le code source, le compilent si la plateforme l'exige, puis déploient le programme obtenu dans une transaction.
2. Le déploiement attribue au programme un identifiant ou une adresse on-chain et peut initialiser son état et ses rôles administratifs.
3. Un utilisateur, une application ou un autre contrat envoie un appel contenant un sélecteur de fonction, des paramètres et parfois des actifs.
4. Chaque nœud validateur exécute l'appel selon les mêmes règles de machine virtuelle et de protocole. Si une condition requise échoue, l'appel peut être annulé alors que les frais de transaction peuvent tout de même être facturés.
5. Si l'appel réussit et que le réseau l'inclut, les modifications d'état et événements émis rejoignent le registre de la blockchain.

L'exécution n'est déterministe que pour les informations disponibles dans le contexte convenu. Un contrat ne peut pas récupérer seul sur internet la météo, un cours de marché ou un paiement bancaire. Les applications ayant besoin de faits hors chaîne utilisent un oracle, un message signé, un pont ou un opérateur privilégié, ajoutant des hypothèses de confiance et de défaillance au-delà du code.

Le code déployé ne constitue pas toujours tout le système. Certains contrats sont immuables, tandis que des modèles de proxy et de gouvernance peuvent acheminer les appels vers une nouvelle logique ou modifier des paramètres. Il faut donc examiner les clés de mise à niveau, pouvoirs administratifs, contrôles de pause, conception de l'oracle et contrats connectés, en plus de l'interface visible.

Avant de signer une interaction, vérifiez :

- le réseau et l'adresse complète du contrat auprès d'une source indépendante et fiable ;
- la fonction décodée, les paramètres, les montants d'actifs et le destinataire ;
- les autorisations de jetons ou droits d'opérateur créés par l'appel ;
- si le contrat est vérifié, évolutif, suspendu ou contrôlé par des comptes privilégiés ; et
- lorsque c'est possible, qu'un petit test couvre le parcours d'entrée et de sortie prévu.

<a id="example"></a>

## Exemple

Prenons un contrat de séquestre pour un service numérique. L'acheteur dépose 1,000 USDC, et le contrat enregistre acheteur, vendeur, montant et condition de règlement. Si l'acheteur approuve la livraison, le contrat verse les fonds au vendeur. Si la condition n'est pas remplie dans les 24 heures, le remboursement programmé devient disponible.

Le contrat ignore si le service est satisfaisant, sauf si la conception lui fournit ce fait. Si l'approbation dépend de la clé de l'acheteur, une clé compromise peut autoriser le versement. Si un oracle ou administrateur décide du résultat, cette partie entre dans le modèle de confiance. Un défaut de contrôle d'accès ou de traitement du jeton peut aussi faire échouer la règle prévue. L'automatisation réduit certaines opérations manuelles, mais ne dispense pas d'évaluer chaque dépendance.

<a id="risks"></a>

## Risques et contrôles

- **Défauts du code :** réentrance, comptabilité erronée, appels externes dangereux ou cas limites peuvent perdre ou bloquer des actifs. Privilégiez des conceptions réduites et bien testées et examinez le code déployé, pas seulement un label d'audit.
- **Risque de privilège et de mise à niveau :** un administrateur peut suspendre le système, remplacer la logique, modifier les frais ou déplacer des actifs. Vérifiez le contrôle de chaque rôle, l'emploi d'un verrou temporel ou d'une multisignature et ce qui peut changer.
- **Risque d'oracle et d'intégration :** un code correct peut agir sur des données périmées, manipulées ou mal calibrées ; les défaillances de jetons, ponts ou autres contrats peuvent se propager par composition.
- **Risque de transaction et d'autorisation :** une interface malveillante peut afficher une mauvaise adresse, fonction, destination ou autorisation illimitée. Décodez la demande et limitez les droits au périmètre nécessaire.
- **Risque de conception économique :** des transactions valides peuvent encore déclencher liquidation, manipulation de prix, échec des incitations ou ruée sur une liquidité limitée. La correction du code n'est pas la solvabilité économique.
- **Risque opérationnel :** congestion, réorganisations de chaîne, panne de séquenceur ou interface indisponible peuvent retarder une action même si le contrat demeure déployé.
- **Irréversibilité :** les transactions sur chaîne publique n'offrent généralement pas de rétrofacturation. Des fonds envoyés par la mauvaise fonction ou à un contrat hostile peuvent être irrécupérables.

Un audit constitue un élément de preuve sur une version et un périmètre définis, pas une garantie. Vérifiez que le bytecode déployé ou la source vérifiée correspond à la version examinée et si des mises à niveau, dépendances ou configurations ultérieures sortent du périmètre.

<a id="misconceptions"></a>

## Idées reçues

- **« Le code s'exécute automatiquement sans transaction. »** La plupart des fonctions modifiant l'état nécessitent une transaction ou un autre appel on-chain ; les actions temporelles peuvent exiger un déclencheur externe.
- **« Le code ne peut pas changer. »** Un contrat immuable ne réécrit pas son bytecode déployé, mais les proxys, la gouvernance et les migrations peuvent modifier la logique atteinte par les utilisateurs.
- **« Un code public est sûr. »** La visibilité facilite l'examen, mais ne prouve ni exactitude, ni administration honnête, ni économie saine.
- **« Un audit garantit la sécurité. »** Les examens sont limités dans le temps et leur périmètre, peuvent manquer des défauts ou exclure les risques opérationnels et économiques.
- **« Une transaction réussie signifie que l'action voulue a eu lieu. »** Le succès signifie seulement que le code appelé n'a pas été annulé ; destination, événements, mouvements d'actifs et droits obtenus restent à vérifier.

<a id="related"></a>

## Thèmes associés

- [Ethereum](/fr/crypto/ethereum/)
- [Machine virtuelle Ethereum](/fr/crypto/evm/)
- [Audit de contrat](/fr/crypto/contract-audit/)
- [Oracle](/fr/crypto/oracle/)
- [Contrat proxy](/fr/crypto/proxy-contract/)

<a id="sources"></a>

## Sources

- [Présentation de la technologie blockchain](https://doi.org/10.6028/NIST.IR.8202) - NIST (consulté le : 2026-08-21)
- [Introduction aux contrats intelligents](https://ethereum.org/developers/docs/smart-contracts/) - Ethereum.org (consulté le : 2026-08-21)
- [Considérations de sécurité](https://docs.soliditylang.org/en/latest/security-considerations.html) - Solidity documentation (consulté le : 2026-08-21)

Source: https://wiki.fcontext.com/fr/crypto/smart-contract/index.mdx
