Considérations de conception pour les contrats intelligents blockchain

La plateforme CoTrust de HCLTech accélère l’adoption de la chaîne de blocs avec des solutions pour des secteurs comme la finance, la logistique et la santé, offrant des outils éprouvés pour un déploiement de la chaîne de blocs efficace et évolutif.
6 min de lecture
Ranjeet Patel
Ranjeet Patel
Directeur adjoint, numérique et analytique
6 min de lecture
Considérations de conception pour les contrats intelligents blockchain

Nous vivons à une époque dynamique et en rapide évolution, où les interventions technologiques sont la voie de l'avenir. Bien qu'il existe de nombreuses technologies en circulation, la plupart des experts s'accordent à dire que la chaîne de blocs jouera un rôle majeur dans la transformation des entreprises à travers les secteurs et les zones géographiques. Les plateformes numériques et les applications seront renforcées par la vision écosystémique rendue possible grâce à la technologie de chaîne de blocs; toute discussion sur la technologie de chaîne de blocs dans le cadre d'une application d'entreprise serait incomplète si elle n'abordait pas les contrats intelligents. Dans cet article, nous examinerons en profondeur les principes et les considérations de conception pour les contrats intelligents.

Pour commencer, examinons rapidement la nature des contrats intelligents. Un contrat intelligent est essentiellement un ensemble de codes informatiques qui s'exécutent au sommet de la pile de la chaîne de blocs. Ces codes constituent un ensemble de termes préalablement convenus par toutes les parties prenantes, et lorsque les conditions prédéfinies sont réunies, l'accord est automatiquement exécuté selon la logique d'affaires sous-jacente.

Les contrats intelligents peuvent être visualisés comme l'étape suivante de l'évolution des applications de la chaîne de blocs, car ils étendent la capacité de cette technologie, passant de l’enregistrement immuable de transactions à l'exécution automatique de contrats. Simples et efficaces, les contrats intelligents permettent la modernisation des applications numériques basées ou intégrant la chaîne de blocs grâce à leur capacité à automatiser les processus d'affaires. Pour cette raison, les principes de conception et la mise en œuvre des contrats intelligents sont devenus des éléments essentiels pour la réussite de la migration des applications s'appuyant sur la chaîne de blocs.

Les contrats intelligents peuvent être visualisés comme l’étape suivante de l’évolution des applications de la chaîne de blocs.

Caractéristiques des contrats intelligents :

Un contrat intelligent s’appuie sur des informations provenant d’une source interne, c’est-à-dire des bases de données ou registres des parties impliquées, et/ou de sources externes, où l’entrée requise est transmise grâce à l’utilisation d’oracles pour l’exécution sur les plateformes numériques.

Les principales caractéristiques déclarées d’un contrat intelligent sont :

  • Autovérification
  • Auto-exécution
  • Inaltérabilité

Comprenons maintenant le processus de création d’un contrat intelligent

  1. Définition du contrat intelligent : Lors de cette première étape, il faut définir l’accord dans son périmètre et établir les termes de l’entente entre tous les intervenants.

    Puis, on identifie toutes les parties impliquées dans l’exécution du contrat et on détermine la stratégie de consensus. Aussi, il faut réfléchir à des scénarios de mise à jour/changement futurs du code intelligent afin que l’architecture définisse un périmètre pour ces situations.

  2. Conception du contrat intelligent :
    • L’étape suivante consiste à concevoir le contrat. On commence par déterminer les événements susceptibles de déclencher l’exécution du contrat
    • Vérifier si des entrées influent sur la faisabilité de l’exécution
    • Identifier la/les limitation(s) de la plateforme de chaîne de blocs sous-jacente
    • Définir les éléments de données
    • Établir les conditions d’exécution selon la logique d’affaires
  3. Codage de la logique d’affaires

    Un ensemble de codes est développé et testé afin de représenter le contrat d’affaires visé. De plus, le protocole de messagerie et d’authentification sécurisée est établi entre les parties impliquées dans le contrat.

  4. Exécution

    Les modalités du contrat déterminent la circulation de valeur. Le résultat est stocké dans un registre de chaîne de blocs inaltérable.

  5. Mise à jour du réseau

    Une fois le contrat exécuté, chaque nœud du registre est mis à jour avec le nouvel état acquis. Toute nouvelle mise à jour ne peut qu’être ajoutée.

Par conception, le contrat intelligent peut aller d’un contrat simple (échange de valeur numérique simple) à un contrat très complexe (organisation autonome distribuée).

13 principaux principes de conception pour les contrats intelligents

Voici quelques-uns des principes clés à garder à l’esprit lors de la création d’un contrat intelligent. L’élaboration des principes ci-dessous s’appuie sur les contrats intelligents Ethereum comme référence. Cependant, la plupart de ces principes sont valables pour le développement de contrats intelligents sur n’importe quel moteur de chaîne de blocs :

  1. Code du contrat intelligent simple et cohérent
    • S’assurer que le contrat en question répond à un problème spécifique. Cela permet de garder les choses simples et d’éviter les erreurs de conception et de code
    • Modulariser le code pour que les contrats et fonctions demeurent concis
  2. Ne conserver que les données nécessaires dans le contrat intelligent
    • La chaîne de blocs doit être utilisée uniquement pour les parties du système qui nécessitent la décentralisation
    • Analyser les données de l’application et les séparer en données sur chaîne (on-chain) et hors chaîne (off-chain)
    • Concevoir les variables d’état du contrat intelligent pour qu’elles offrent un stockage efficace des données sur chaîne
    • Laisser la gestion des données hors chaîne aux applications de plus haut niveau
    • Les informations confidentielles ne doivent pas être stockées dans un contrat intelligent
  3. Éviter les schémas coûteux en gas (pour Ethereum seulement)

    Le créateur et l’utilisateur des contrats intelligents peu optimisés seront toujours surfacturés lors du déploiement et de l’utilisation, car ces contrats consomment plus de gas que nécessaire.

  4. Prévoir et anticiper l’échec

    Le code du contrat intelligent doit pouvoir réagir aux erreurs et vulnérabilités. Cela inclut :

    • Insérer des règles/codes pour mettre le contrat en pause en cas d’écart observé
    • Il devrait y avoir une limite quant à l’argent géré par le contrat, afin de limiter les risques
    • Il devrait y avoir une disposition pour la mise à niveau, les correctifs et l’amélioration
  5. Oraclisation du contrat intelligent

    Les oracles peuvent aider le contrat à s’amender en intégrant des flux externes de sources fiables; cependant, il faut faire preuve de prudence pour les appels de contrats externes, car ils peuvent permettre l’exécution de codes malveillants

  6. Concevoir en prévoyant l’attaque de réentrée
    • Éviter autant que possible les appels externes, car les appels à des contrats non fiables peuvent introduire des risques ou erreurs imprévus
    • Terminer tous les travaux internes (c.-à-d. les changements d’état) en premier, puis seulement appeler la fonction externe
  7. Concevoir en prévoyant l’attaque de type déni de service (DoS)

    Utiliser la méthode « pull » plutôt que « push » pour les appels externes afin d’éviter une attaque de déni de service, ou attaque DoS. Cela s’avère particulièrement pertinent lorsqu’il s’agit de paiements. Dans ces cas, il est conseillé de créer un mécanisme de retrait pour obtenir des fonds plutôt que de pousser les fonds vers l’utilisateur. Cela aidera à contourner l’attaque DoS

  8. Les horodatages sont imprécis sur une chaîne de blocs et peuvent être influencés
    • L’horodatage du bloc peut être manipulé à la marge de quelques secondes, ce qui crée une faille lorsque l’exécution d’un contrat intelligent dépend de l’horodatage. Cela comporte des risques sérieux lorsque le contrat est programmé pour transférer des fonds.
    • Les horodatages ne sont pas aléatoires et ne doivent pas être utilisés dans ce contexte.
    • Éviter d’utiliser l’horodatage comme période d’expiration du contrat
  9. Sélection appropriée des types de données

    Un examen minutieux du type de données doit être effectué avant leur utilisation dans un contrat intelligent. Les plus appropriés doivent être sélectionnés pour éviter les erreurs.

    Par exemple, la machine virtuelle Ethereum (EVM) est un processeur de 256 bits. Elle est donc mieux adaptée aux calculs d’entiers. Or, une chaîne de caractères (string), qui est un autre type de données, est une variable de taille dynamique dans un contrat intelligent; ainsi, il faut privilégier l’utilisation des entiers à celle des chaînes de caractères.

  10. Comprendre le modificateur de visibilité des données

    Toute variable sur la chaîne de blocs est visible de tous, peu importe le modificateur de visibilité

  11. Prêter attention à l’ordre des instructions dans une fonction
  12. Utiliser un hachage sécurisé pour protéger les données

    Le hachage est une fonction très importante sur une chaîne de blocs; les données y sont visibles par tous, donc un hachage sécurisé doit être utilisé pour en protéger la visibilité

  13. Utilisation des modificateurs d’accès

    Les modificateurs d’accès devraient être utilisés pour définir les règles d’accessibilité. Cela garantit que seule l’autorité appropriée exécute les fonctions critiques touchant tout contrat intelligent. Les domaines où les modificateurs d’accès doivent impérativement être mis en œuvre sont :

    • Mise en œuvre des politiques, règles et règlements.
    • Définition de l’accessibilité d’une fonction pour tout utilisateur
    • Déclaration des éléments auditables d’un contrat intelligent. Cela facilitera l’audit et la vérification de la conformité du contrat intelligent.

Mener la voie grâce à une conception judicieuse des contrats intelligents :

Les contrats intelligents nous ont permis de développer de nouveaux modèles d’affaires et de favoriser des relations d’affaires fondées sur la confiance technologique. Fondés sur la technologie de chaîne de blocs, les contrats intelligents offrent intrinsèquement l’inaltérabilité, la sécurité et la transparence, ce qui les distingue des contrats traditionnels et offre aux parties impliquées un mécanisme crédible pour exécuter leurs ententes commerciales avec une sécurité cryptographique accrue.

Les principes directeurs ci-dessus aideront toute personne à concevoir de meilleurs contrats intelligents, mais il convient de rappeler que, « Un contrat intelligent ne peut être plus intelligent que ceux qui le programment. »

Il convient de rappeler que « Un contrat intelligent ne peut être plus intelligent que ceux qui le programment. »

Les programmes de chaîne de blocs sont nouveaux, complexes et hautement expérimentaux. Des changements constants sont à prévoir dans les domaines du développement et de la sécurité, à mesure que de nouveaux bogues et risques de sécurité sont découverts et que de nouvelles pratiques exemplaires émergent.

Enfin, si l’on souhaite confier au contrat intelligent quelque chose ayant une valeur importante, il ne faut jamais se passer d’un audit complet et même offrir une prime pour la découverte de bogues. Néant n’est parfait, et l’absence totale de défauts reste un objectif difficilement réalisable.

À propos de la pratique Blockchain Services chez HCLTech

HCLTech Blockchain Services est une pratique axée sur la solution, fondée sur les valeurs fondamentales de HCLTech, et soutenue par un réseau d’experts de l’industrie possédant une vaste expérience sectorielle. La Plateforme CoTrustMC en est un élément clé, offrant des solutions et accélérateurs pour aider les entreprises à accélérer leur parcours blockchain.

En utilisant des cadres éprouvés, HCLTech offre des services conseil, de consultation et des services infonuagiques en chaîne de blocs pour concevoir et exécuter des programmes blockchain, rationalisant les opérations dans divers secteurs comme les services financiers, le transport maritime et la logistique. CoTrustMC réduit le temps, le coût et le risque en proposant des capacités fondamentales et des cas d’utilisation réutilisables tels que la provenance, la traçabilité, les paiements, le KYC décentralisé, la tokenisation et la gestion des essais cliniques.

HCLTech est la première à lancer des solutions blockchain sur les places de marché infonuagiques. La Plateforme CoTrustMC est disponible en SaaS pour divers secteurs ainsi qu’en version PaaS sur AWS et GCP pour une mise en œuvre rapide et évolutive de la chaîne de blocs.

Partager sur
DBS Conseil en transformation d'entreprise Blogues Considérations de conception pour les contrats intelligents blockchain