This website is available in your language EN   EN Close

Académie. > Parcours Académie > Maîtriser – Les Smart contracts (Avancé)

Maîtriser – Les Smart contracts (Avancé)

30 août 2023

Temps de lecture 5 minutes

Canelle de Balasy

Partagez cet article

Share on LinkedIn
Share on Twitter
Share on Facebook
Share on Instagram
Share on Whatsapp

Dans les articles précédents, nous avons pu voir les différentes facettes générales et techniques pour les smart contract (notamment et principalement Ethereum). Dans cette partie avancé, nous allons voir : 

  • Le déploiement des Smart contract (Bytecode & ABI)
  • Les différents types de transaction pour changer l’état d’un smart contract

 

Déploiement d’un smart contract

 

En prenant Ethereum comme exemple, Ethereum utilise l’EVM ( Ethereum Virtual Machine) comme cœur du mécanisme. Les smart contracts doivent être compilés en Bytecode afin de pouvoir être déployés au sein de l’écosystème.

 

Le bytecode est une représentation bas niveau d’un programme ou d’un smart contract, exprimée en une séquence d’instructions compréhensibles par une machine virtuelle. C’est ce qui correspond chez les ordinateurs classiques au langage machine. Dans le contexte d’Ethereum par exemple , le bytecode se réfère au code qui est exécuté par l’EVM (Ethereum Virtual Machine), la machine virtuelle d’Ethereum. 

 

Lorsque vous écrivez un smart contract en langage de programmation Solidity, par exemple. Ce code source est ensuite compilé à l’aide d’un compilateur Solidity en un ensemble d’instructions, c’est-à-dire le bytecode.

 

Le bytecode est constitué d’une série d’instructions, chaque instruction effectuant une opération spécifique. Ces opérations incluent les opérations arithmétiques, la manipulation de la mémoire, les appels de fonctions, l’accès aux données de stockage, et bien d’autres.

Une transaction de déploiement contenant le bytecode du contrat est ensuite envoyée sur la blockchain. Cette transaction est incluse dans un bloc par les mineurs ou les validateurs.

 

Lorsque la transaction de déploiement est confirmée et ajoutée à la blockchain, le bytecode du smart contract est exécuté par l’EVM. L’EVM parcourt chaque instruction dans le bytecode et exécute les opérations correspondantes.

 

L’EVM (Ethereum Virtual Machine) est le cœur de la blockchain Ethereum. C’est un environnement de traitement distribué et isolé dans lequel les smart contracts Ethereum sont exécutés. L’EVM permet l’exécution de code de manière décentralisée et sécurisée sur l’ensemble du réseau Ethereum.

 

Le bytecode peut contenir des instructions qui modifient l’état d’un smart contract en ajoutant des données au stockage ou en émettant des événements. Ces modifications sont enregistrées de manière permanente sur la blockchain Ethereum.

 

Les utilisateurs qui souhaitent interagir avec un smart contract doivent payer des frais en gaz pour que ces opérations soient exécutées. Plus les opérations sont complexes, plus les frais de gaz seront élevés. Le déploiement d’un smart contract est une opération coûteuse en gaz.

 

Tandis que le bytecode est le code exécutable, L’ABI, ou Interface Binaire Abstraite (Abstract Binary Interface en anglais) est l’interface afin d’interagir avec le bytecode. Il s’agit d’un ensemble de règles et de spécifications qui définit comment les fonctions et les données d’un smart contract Ethereum doivent être encodées et communiquées avec d’autres contrats ou applications externes.

 

En d’autres termes, l’ABI est un moyen de standardiser la manière dont les interactions avec un smart contract sont effectuées. Elle permet aux développeurs d’interagir avec les fonctions d’un smart contract en spécifiant les paramètres attendus et en interprétant les résultats retournés.

Source: https://hackernoon.com/hn-images/1*Sz1a7G2pQ62UnkHoieve4w.jpeg

L’ABI est généralement présentée sous deux formes :

 

ABI en JSON : Il s’agit d’une représentation JSON (JavaScript Object Notation) de l’ABI. Elle décrit les fonctions, les événements et les types de données du smart contract, ainsi que les paramètres de fonction, les types de retour et les identifiants uniques de chaque élément. Cette représentation permet aux développeurs de créer des appels de fonction appropriés en respectant les conventions de codage.

 

ABI en binaire : L’ABI peut également être représentée sous forme binaire, qui est utilisée pour encoder les appels de fonction et les résultats de transaction avant de les envoyer à la blockchain Ethereum. Cela permet aux contrats et aux applications externes de communiquer de manière cohérente avec le smart contract sans avoir à connaître les détails complexes de son implémentation.

 

Afin d’interagir avec le smart contract déployé, il est nécessaire d’effectuer des transactions. Il existe différents types de transactions. Les transactions internes et non internes sont liées aux interactions entre contrats et aux transactions sur la blockchain Ethereum.

 

Transactions Non Internes (ou Transactions Externes) :

Les transactions non internes, souvent simplement appelées “transactions”, sont des interactions entre des adresses Ethereum distinctes, qu’il s’agisse d’adresses de comptes externes ou de smart contracts. Ces transactions sont initiées par un acteur externe à la blockchain (un utilisateur ou un autre contrat) et impliquent généralement un transfert d’ETH ou l’appel d’une fonction d’un smart contract. Ces transactions sont visibles par tous les participants du réseau Ethereum.

 

Transactions Internes :

Les transactions internes, également connues sous le nom de “transactions de message interne”, se produisent lorsqu’un smart contract exécute des appels de fonction à d’autres contrats depuis l’intérieur de sa propre exécution. En d’autres termes, un smart contract peut appeler une fonction d’un autre smart contract en cours d’exécution, et cela est enregistré comme une transaction interne. Ces transactions sont invisibles pour les participants extérieurs à la transaction d’origine, car elles ne sont pas ajoutées à la blockchain principale en tant que transactions indépendantes.

 

Les transactions internes sont souvent utilisées pour gérer la complexité des contrats, notamment pour réduire les coûts de gaz en effectuant des opérations au sein de la même transaction plutôt que d’envoyer plusieurs transactions indépendantes. Cependant, leur nature interne signifie qu’elles ne sont pas traçables directement depuis la blockchain principale.

 

Les transactions “d’état” sont généralement des transactions externes. Cela signifie qu’elles sont initiées par des entités externes à un contrat ou à la blockchain Ethereum, telles que des utilisateurs ou des contrats. Ces transactions sont soumises à la blockchain pour exécuter des opérations qui modifient l’état d’un compte.

 

L’état d’un smart contract est également modifiable. Lorsqu’une transaction d’état est envoyée à la blockchain, elle peut contenir des instructions pour exécuter des fonctions ou des méthodes du smart contract. L’exécution de ces fonctions peut potentiellement modifier l’état du contrat en modifiant les valeurs de ses variables internes (comme la valeur d’un paramètre comme un nombre). 

Conclusion 

 

Dans cet article, nous avons vu comment les smart contracts sont compilés et déployés sur la Blockchain et quels types de transactions peuvent changer l’état du smart contract et l’utilité de l’ABI.

Avec le compte Premium de Coinhouse, la crypto n’aura plus de secrets pour vous. Un accompagnement construit sur-mesure, pour vous apporter toutes les connaissances et les conseils de nos experts afin de tout savoir de la crypto et de maîtriser vos investissements. Le compte premium de Coinhouse, ce sont des contenus exclusifs toutes les semaines, des formations et des webinaires réguliers, une formation initiale en direct pour maîtriser l’intégralité des bases crypto, et des rendez-vous fréquents avec votre chargé de compte pour gérer votre portefeuille.

Vous aimerez aussi.

Devenez un investisseur averti !