What Is a Smart Contract—and Why Its Rules Cannot Be Changed Retroactively?

Disclaimer: This article is for educational purposes only. It is not financial, legal, or investment advice.

A smart contract is often described as a “digital agreement.” That is a useful analogy, but it is not the full picture. More precisely, a smart contract is a program deployed on a blockchain that stores data and executes predefined instructions.

Par exemple, il peut n’autoriser un transfert qu’une fois une condition remplie, tenir un registre des participants ou mettre à jour un enregistrement après une opération réussie. Lorsqu’une personne envoie une transaction, le réseau exécute le code et enregistre le résultat.

Deux limites doivent être prises en compte dès le départ :

  • Le terme « smart » ne signifie pas que le programme peut réfléchir ou interpréter une intention.
  • Le terme « contrat » ne confère pas automatiquement au code la valeur juridique d’un accord.

Un smart contract exécute exactement ce que son code autorise. Si sa logique contient un bug, une fonction administrative dangereuse ou une hypothèse erronée, la blockchain ne le corrige pas automatiquement.

Points essentiels

  • Un smart contract est constitué de code et de données stockés à une adresse blockchain.
  • Le réseau exécute ses fonctions selon des règles prédéfinies.
  • Une opération confirmée ne peut pas être simplement modifiée après coup.
  • Certains contrats sont conçus avec des paramètres ajustables ou une logique évolutive.
  • Les utilisateurs doivent vérifier non seulement l’adresse du contrat, mais aussi ses rôles, ses autorisations et son mécanisme de mise à niveau.

Une manière simple de comprendre les smart contracts

Imaginez une consigne automatisée.

  1. Sa règle indique : « Le destinataire ne peut ouvrir la consigne qu’après une date donnée. »
  2. L’expéditeur dépose un actif.
  3. Le destinataire tente de l’ouvrir trop tôt, et la machine refuse.
  4. Une fois la date atteinte, la même demande aboutit si toutes les autres conditions sont remplies.

La différence tient au fait qu’un smart contract n’est pas exécuté par le serveur d’une seule entreprise. Un réseau blockchain traite l’instruction, parvient à un résultat partagé et l’enregistre.

Cela ne signifie pas que le contrat sait automatiquement si un colis a été livré, quel temps il fait ou quel devrait être un taux de change. Une blockchain fonctionne de manière fiable avec les données dont elle dispose. Les informations provenant du monde extérieur nécessitent des sources supplémentaires, souvent appelées oracles. Le résultat dépend alors également de ces sources.

Code, état et transactions

Un smart contract présente trois dimensions utiles :

  • Code: its available functions and checks.
  • State: its current data, such as balances, statuses, and configuration values.
  • Transaction history: the sequence of operations that changed that state.

La lecture de données publiques ne modifie normalement pas l’état. Une action qui entraîne une modification, comme le transfert d’un jeton ou l’enregistrement d’une participation, nécessite une transaction. L’utilisateur la signe, le réseau la traite et des frais sont généralement facturés.

Une fois incluse et finalisée, une transaction fait partie de l’historique de la blockchain. Une transaction ultérieure peut modifier l’état actuel si le code le permet, mais elle ne réécrit pas l’enregistrement précédent. Les deux événements restent visibles.

Ce que signifie réellement « ne peut pas être modifié rétroactivement »

Supposons qu’un contrat enregistre un transfert de 100 jetons de l’adresse A vers l’adresse B. Après confirmation, un administrateur ne peut pas ouvrir ce bloc et remplacer 100 par 10 comme si l’opération initiale n’avait jamais eu lieu. Il ne peut pas non plus remplacer discrètement le destinataire dans la transaction déjà confirmée.

If the code includes a refund, reversal, or compensation function, using it creates a new transaction. The blockchain will show the original action and the later response.

C’est pourquoi l’historique on-chain permet une vérification indépendante : différents observateurs peuvent interroger le réseau et examiner la même séquence d’événements.

Il reste inexact d’affirmer qu’une blockchain « ne peut jamais changer en aucune circonstance ». Les réseaux possèdent leurs propres modèles de finalité et restent exposés aux défaillances du protocole ou aux attaques. Le point pratique est plus précis : dans des conditions normales, un utilisateur ou l’administrateur d’une application ne peut pas modifier un enregistrement blockchain confirmé comme une ligne d’une base de données privée.

Cela signifie-t-il qu’un contrat ne peut jamais changer ?

Pas toujours. C’est précisément là que l’expression « contrat immuable » est souvent mal comprise.

1. Contrat non évolutif

Le code déployé continue de fonctionner selon sa logique d’origine. Les développeurs peuvent déployer un nouveau contrat à une nouvelle adresse, mais l’ancienne adresse et son historique demeurent. Les utilisateurs doivent choisir explicitement de passer à la nouvelle version.

2. Contrat aux paramètres ajustables

Le code peut inclure des fonctions d’administration permettant de modifier une limite, de suspendre une opération, de gérer une liste d’autorisation ou de changer le destinataire de frais. Ces fonctions nécessitent toujours de nouvelles transactions et ne peuvent exercer que les pouvoirs prévus dans le code.

Cela ne réécrit pas le passé, mais peut modifier les règles des opérations futures.

3. Architecture évolutive

Une architecture courante utilise un contrat proxy. L’adresse du proxy reste identique tandis que les appels sont transmis à un contrat d’implémentation distinct. Si la gouvernance peut modifier cette implémentation, le comportement futur associé à l’adresse du proxy peut changer.

Cela signifie que « l’adresse n’a pas changé » ne veut pas nécessairement dire que « la logique n’a jamais changé ». Un examen rigoureux pose les questions suivantes :

  • L’adresse correspond-elle à un proxy ?
  • Qui peut mettre à niveau l’implémentation ?
  • Une seule signature suffit-elle ou plusieurs sont-elles requises ?
  • Existe-t-il un délai d’attente ?
  • Les opérations peuvent-elles être suspendues ?
  • Quels paramètres les administrateurs peuvent-ils modifier ?

Exemple : modification d’une limite

Imaginez un contrat avec une limite quotidienne de 1 000 unités.

  • Lundi, un utilisateur effectue une opération de 800 unités.
  • Mardi, une adresse autorisée modifie la limite à 500 au moyen d’une nouvelle transaction.
  • L’opération de lundi ne disparaît pas et ne devient pas un autre enregistrement.
  • À partir de mardi, le contrat applique la limite de 500 unités si sa logique le prévoit.

Un explorateur de blocs peut afficher les deux transactions. Pour comprendre leurs conséquences, il faut néanmoins savoir quelles fonctions ont été appelées et quels pouvoirs elles confèrent.

Ce qu’une blockchain prouve — et ne prouve pas

Une blockchain publique peut aider à vérifier :

  • adresses participantes ;
  • heure et état de la transaction ;
  • actifs et montants transférés ;
  • la fonction appelée, lorsque les données sont correctement décodées ;
  • événements et séquence des opérations ;
  • code source, lorsqu’il a été vérifié par rapport au bytecode déployé.

Deployment on a blockchain does not by itself guarantee:

  • l’absence de bugs ou de vulnérabilités ;
  • développeurs honnêtes ;
  • viabilité économique ;
  • l’exactitude des données externes ;
  • l’absence de pouvoirs administratifs ;
  • protection juridique ;
  • récupération après un transfert incorrect.

La transparence signifie que les éléments probants peuvent être examinés. Elle ne signifie pas que tout ce qui est visible est sûr.

Une liste de contrôle pratique avant toute interaction

  1. Verify the address. Obtain it from an official project source and compare it carefully.
  2. Verify the network. The same address format may exist across several EVM networks.
  3. Check source verification. Published source code makes analysis easier, but it is not a security audit.
  4. Look for proxies and upgrades. Identify the implementation and the upgrade authority.
  5. Review administrator powers. Look for owner, admin, pause, upgrade, fee, and access-control functions.
  6. Review token approvals. Before approving, confirm the token, spender, and allowance.
  7. Start small. For a first interaction, consider a small test amount while accounting for fees.

Pourquoi la signature de l’utilisateur est importante

Un smart contract n’obtient pas automatiquement accès à l’ensemble d’un portefeuille. Il reçoit un appel précis et ne peut utiliser que les autorisations qui lui ont été accordées.

Une signature peut toutefois autoriser bien plus qu’un simple transfert. Elle peut approuver la dépense de jetons, accorder une autorisation illimitée, échanger des actifs, transférer un NFT ou déclencher une séquence complexe d’appels.

Si le portefeuille ne peut pas expliquer clairement la requête, l’utilisateur s’expose au risque de « signature à l’aveugle ». Une transaction ne doit pas être approuvée simplement parce qu’un lien provient d’une conversation familière ou qu’un site ressemble au site officiel.

Conclusion

Un smart contract n’est ni une promesse ni une garantie magique d’équité. C’est un programme qui exécute des règles codées et laisse un historique vérifiable.

A confirmed operation cannot be quietly edited after the fact. However, future parameters or logic may be changeable if the architecture was designed that way. The most useful question is therefore not only “Is there a smart contract?” but also: “What does its code allow, and who can influence how it works in the future?”


Sources et lectures complémentaires