Chère Communauté ULille blockchain,
Dans le cadre de l’évaluation proposée par M. @sorin.cristescu, deux questions théoriques me sont proposées.
Voici la première question à laquelle je vais répondre, la seconde question fera l’objet d’un second post :
Question 1. a - Comment s’appellent communément les programmes que la blockchain Ethereum peut exécuter et comment s’appelle le composant informatique qui lui permet d’exécuter des programmes ?
Question 1. b - Quels seraient trois risques à utiliser de tels programmes ?
Comme mentionné dans l'énoncé disponible à ce lien Blockchains publiques et privées en 2022-2023, je commencerai par poser la question à ChatGPT afin d'obtenir une première réponse, que je reproduirai ici dans mon post. Ensuite, je ferai une analyse personnelle et critique de la réponse ChatGPT. Pour cela :
Soit de dire avec quoi je suis d'accord, avec explication.
Soit d'indiquer avec quoi je ne suis pas d'accord.
Soit de souligner ce que ChatGPT auarait pu approfondir ou n'a pas mentionné.
1. a - Réponse Question 1. a - ChatGPT :
1. b - Analyse Question 1. a - ChatGPT :
- Nom des programmes exécutés par Ethereum :
Ce sont des smart contracts (contrats intelligents). Il s'agit de programmes informatiques stockés et exécutés sur la blockchain. Ils s’activent automatiquement lorsque des conditions prédéfinies sont remplies. Utilisés notamment dans les applications décentralisées (dApps), la finance décentralisée (DeFi), les NFT, etc.
Je comprends que les smart contracts sont des programmes automatisés, très puissant, qui fonctionnent sans intervention humaine une fois lancés. Je réalise aussi qu'ils ont fondamentaux pour Ethereum, car ils permettents la création d'applications innovantes comme les dApps, les services DeFi ou encore les NFT. De plus, le fait qu'ils s'exécutent automatiquement me fait penser qu'ils sont pratiques, mais aussi potentiellement risqués s'ils sont mal programmés.
- Composant informatique d’exécution :
Il s’appelle l’EVM (Ethereum Virtual Machine). C’est une machine virtuelle décentralisée qui exécute les smart contracts de manière identique sur tous les nœuds du réseau. Elle garantit que tous les résultats des programmes sont cohérents et reproductibles, sans besoin d’une autorité centrale.
Il est clair que l'EVM est au coeur technique d'Ethereum. Je vois aussi grâce à cette machine virtuelle que tous les ordinateurs du réseau peuvent exécuter les mêmes programmes de manière fiable et sécurisée. Ce me frappe, c'est l'idée qu'il n'y a pas besoin d'un serveur central : tout est décentralisé, ce qui renforce la sécurité et la transparence. Je prends aussi l'idée de l'importance de cette infrastructure pour garantir que les smart contracts fonctionnent de la même manière parout.
1. c - Analyse critique Question 1. a - ChatGPT :
Nom des programmes exécutés par Ethereum :
Je vois pas que les smart contracts sont autant plus complexes qu'ils n'en ont l'air. En réalité, ils demandent une expertise techniques avancée. Il ne suffit pas de connaître un langage de programmation classique. Il faut maîtriser des langages spécifiques à savoir Solidity, comprendre les règles de la blockchain et anticiper tous les comportements possibles du contrat.
Je comprends également qu'une erreur de codage peut être catastrophique. Contrairement à une application classique, si un smart contract contient une faille de sécurité ou une erreur logique, il n'est pas possible de le corriger facilement après son déploiement.
Exemple :
Un bug peut être exploité pour voler des fonds, comme dans l'affaire de The DAO en 2016, où des millions de dollars ont été détournés à cause d'un contrat mal conçu.
Je remarque que la logique d'un smart contract est immuable.Une fois qu’un contrat est enregistré sur la blockchain, il devient impossible de le modifier. C’est un élément fondamental, car cela renforce la confiance (personne ne peut changer les règles en secret), mais cela crée aussi un gros problème en cas d’erreur ou de changement de besoin.
Je pense qu'il manque aussi une explication sur les mécanismes de mise à jour. Il existe des techniques comme les smart contracts modulaires ou les proxys pour contourner cette immuabilité, mais elles sont complexes. Comprendre ces mécanismes est essentiel pour tout utilisateur qui souhaite bâtir des systèmes durables sur Ethereum.
Exemple de mécanisme :
En réalité, ce proxy agit comme une interface intermédiaire : il redirige automatiquement les appels vers un autre contrat, qui contient la logique métier réelle. Cette redirection est effectuée grâce à une instruction spéciale de l’Ethereum Virtual Machine appelée delegatecall, qui permet d’exécuter le code du contrat logique tout en utilisant les données stockées dans le contrat proxy. Ce mécanisme rend possible la mise à jour du code sans toucher aux données ni à l’adresse du contrat utilisé par les utilisateurs. Si je souhaite modifier ou améliorer le comportement du contrat, il me suffit de déployer une nouvelle version de la logique, puis de changer l’adresse que le proxy pointe. De cette manière, l’état (les données) reste intact, l’adresse d’interaction ne change pas, et seule la logique du programme évolue, ce qui permet d’introduire des correctifs ou des fonctionnalités nouvelles sans interrompre le service.
Composant informatique d’exécution :
Je trouve que l'explication de l'EVM reste trop absraite. On parle de machine virtuelle, mais on ne dit pas clairement ce qu'elle fait concrètement. En réalité, l'EVM exécute un code binaire appelé Bytecode. bytecode est généré à partir de langages de haut niveau comme Solidity. Donc, lorsque j’écris un smart contract en Solidity, ce n’est pas ce code qui est directement exécuté, mais sa version compilée. Je pense que ce point est essentiel pour comprendre le lien entre développement et exécution sur la blockchain.
Je ne voit pas clairement que l'EVM garantit que tous les résultats sont cohérents. En effet, en pratique, cette cohérence dépend du bon fonctionnement du consensus du réseau (Proof of Stake). Si un bug, une attaque, ou un désaccord survient entre les noeuds, les résultats peuvent diverger temporairement, et des forks peuvent apparaître. Donc, cette garantie de cohérence n'est pas absolue, elle est conditionnée par l'intégrité du réseau lui-même.
Exemple de fonctionnement du consenus :
Le consensus Proof of Stake (PoS) d’Ethereum, mis en place après "The Merge", repose sur la sélection aléatoire d’un validateur ayant déposé (ou "staké") au moins 32 ETH. Ce validateur propose un nouveau bloc de transactions. Ensuite, un comité d’attesteurs vérifie ce bloc et vote pour valider son contenu. Si le bloc est approuvé, il est ajouté à la blockchain et devient irréversible. Les validateurs honnêtes reçoivent une récompense en ETH, tandis que ceux qui trichent risquent une sanction appelée "slashing", pouvant entraîner la perte de leur mise. Ce système renforce la sécurité tout en étant économe en énergie.
Je remarque que l'EVM a des limites en puissance de calcul. Elle est délibérément conçue pour être simple, lente et sécurisée, afin de garantir que tous les noeuds du réseau puissent valider les mêmes instructions. Cela signifie que je ne peux pas y faire des calculs complexes ou longs comme sur un ordinateur classique. Chaque opération, même basique (comme additionner deux nombres), a un coût en gas, payé en ETH. Ce coût limite ce que je peux faire dans un smart contract : plus c’est complexe, plus c’est cher. La réponse à la question n’en parle pas, mais c’est un facteur majeur dans la conception d’une application décentralisée.
Exemple de coût en gas :
Chaque instruction exécutée dans l’EVM consomme une certaine quantité de gas. Ci-contre quelques exemples de coûts standards :
Instruction | Gas utilisé |
---|---|
ADD (ADDITION) | 3 gas |
MUL (MULTIPLICATION) | 5 gas |
SLOAD (LECTURE DANS STOCK) | 2100 gas |
SSTORE (ECRITURE DANS STOCK) | 20 000 à 100 000 gas |
CALL (APPEL A UN AUTRE CONTRAT) | ~ 700 gas + coûts variables |
Le calcul du coût réel en ETH dépend de deux facteurs qui sont le gas utilisé et le prix du gas en Gwei.
Par exemple si une transaction qui consomme 50 000 gas à un prix de 20 Gwei, alors :
50000 x 20 Gweil = 1 000 000 Gwei = 0.001 ETH
2. a - Réponse Question 2. a - ChatGPT :
2. b - Analyse critique Question 2. a - ChatGPT :
- L'immuabilité est une qualité fondamentale de la blockchain, mais je réalise que cela devient un problème si le contrat contient une erreur. Une fois un contrat déployé, je ne peux pas le modifier. Je dois souvent en redéployer un nouveau et informer les utilisateurs, ce qui peut créer de la confusion ou perdre des données.
- Pour les frais de transactions élevés (gas) : à chaque fois que j'interagis avec un smart contract : par exemple - achat de NFT, vote, prêt DeFi, je dois payer des frais en gas. Ces frais ne sont plus fixes : ils augmentent fortement lors des pics de congestions sur le réseau Ethereum. Je vois aussi que ces coûts sont un impact direct sur le fonctionnement de l'EVM, mais ils rendent certains applications inaccessibles pour les petits utilisateurs.
Sources :