create account

EVM & Smart Contracts : Quand la Blockchain Devient Intelligente by iamludal

View this thread on: hive.blogpeakd.comecency.com
· @iamludal ·
$1.01
EVM & Smart Contracts : Quand la Blockchain Devient Intelligente
![Article Banner](https://images.ecency.com/DQmVgRnBYbxG3R9scnXD87HHJdBwwRzkUkBmRKEaXRNfvkm/untitled.png)

> Article écrit en collaboration avec @nissou31. 

Ethereum a récemment fait beaucoup parler de lui avec sa migration du *Proof of Work* au *Proof of Stake* pour son mécanisme de consensus. On a cependant tendance à oublier la révolution qu’a apporté Ethereum dans le domaine de la blockchain et des cryptomonnaies : les *Smarts Contracts* (en français : les contrats intelligents). Peut-être vous a-t-on expliqué que ces derniers permettaient d’exécuter du code dans la blockchain, mais vous a-t-on expliqué comment est-ce que tout cela fonctionne réellement ? En l’occurrence, où ce code est-il stocké ? Qui l’exécute ? Combien de fois est-il exécuté ? C’est notamment à ces questions que nous allons répondre au travers de cet article.

## Fonctionnement des Smart Contracts

Tout d’abord, il faut savoir qu’un smart contract n’est autre qu’une adresse sur la blockchain Ethereum ayant un solde dédié et pouvant être la destination de transactions. À ceci près que cette dernière n’appartient pas à un utilisateur réel : c’est un *Contract Account*. À la différence des comptes appartenant à des utilisateurs réels (*EOA:* *Externally Owned Accounts),* les Contract Accounts possèdent en plus un stockage et un code source. Les autres utilisateurs du réseau peuvent interagir avec ce smart contract en lui envoyant des transactions qui exécuteront le code défini par ce dernier. Les interactions réalisées avec celui-ci sont irréversibles, et son code ne peut par défaut pas être supprimé non plus. Les smarts contracts sont déclenchés lorsqu’un ensemble de conditions sont rassemblées, généralement entre un acheteur et un vendeur rendant ainsi toute transaction traçable et transparente en plus d’être irréversible. Leur exécution n’est donc pas contrôlée par une autorité centrale, mais plutôt par le réseau entier qui exécute leur code sur tous les noeuds. Plusieurs langages de programmation peuvent être utilisés pour développer un smart contract, le plus connu d’entre eux étant *Solidity.* Lorsqu’il est prêt à être déployé, le code source du smart contract doit être compilé vers un jeu d’instructions bas niveau qui pourra être exécuté par la machine virtuelle Ethereum : l’EVM.

## Qu’est-ce que l’EVM ?

L’Ethereum Virtual Machine (EVM) est la machine à états qui exécute les instructions définies dans le smart contract. C’est un système [Turing-complet](https://fr.wikipedia.org/wiki/Turing-complet), ce qui signifie que les étapes d’exécution sont limitées à un nombre fini d’étapes de calcul. Cette machine virtuelle s'exécute dans chaque noeud du réseau.

![Figure 1 : Architecture de l’EVM](https://images.ecency.com/DQmY36J4Ay96BFd6JmriSkmhkDTeKzgAbRdKKNA1KQZLnJq/evm.png)
> Figure 1 : Architecture de l’EVM ([ethereum.org](https://ethereum.org/en/developers/docs/evm/))

Le bytecode du smart contract est composé d’une série d’octets, chacun correspondant à une instruction à exécuter. Les instructions peuvent accéder de différentes manières à du stockage si elles en ont besoin :

- La *Stack* (pile), une structure *LIFO (Last-In-First-Out)* de taille limitée (1024 éléments de 32 octets chacun) ;
- La *Memory*, un espace de stockage temporaire. C’est un tableau d’octets dont la taille est ajustable ;
- Le *Storage*, un espace de stockage clé/valeur persistent de taille importante (`2^256` slots de 32 octets chacun).

Les instructions sont également appelées *Opcodes*, et sont aujourd’hui au nombre de 140. 

![Figure 2 : Listes des Opcodes (techfi.tech)](https://images.ecency.com/DQmcQctByASw9PToBnhLG9iQX1b7v97XRatqyWEGVsZGYwn/opcodes.png)
> Figure 2 : Listes des Opcodes ([techfi.tech](https://techfi.tech/what-is-ethereum-virtual-machineand-how-it-works/))

Ces instructions peuvent d'ailleurs être divisées en différentes catégories :

| Catégorie | Exemples |
| --- | --- |
| Manipulation de la pile | PUSH, POP, DUP |
| Arithmétique, comparaison | ADD, SUB, AND, OR, GT |
| Environnement | CALLER, CALLVALUE |
| Manipulation de mémoire | MLOAD, MSTORE |
| Manipulation du stockage | SLOAD, SSTORE |
| Arrêt | STOP, RETURN, INVALID |
| … | … |

## Pourquoi une machine virtuelle ?

Une question pourrait nous venir à l’esprit en parlant de l’EVM : mais pourquoi avoir besoin d’une machine virtuelle ? Les calculs ne peuvent-ils pas être effectués directement sur les noeuds eux-mêmes ? Si les calculs étaient effectivement lancés par les noeuds sans passer par une machine virtuelle, ces derniers ne pourraient pas arriver à un même résultat en un temps identique de part leur différence de puissance. Cela aboutirait à une désynchronisation totale, et des centaines de versions de la même blockchain existeraient même temps. L’intérêt de la machine virtuelle est donc d’obtenir le même environnement et les mêmes performances pour tout le monde, indépendamment de la machine physique du noeud.

## Fonctionnement de l’EVM

L’EVM a pour but de mettre à jour la *World State*. La World State correspond à l’état à un instant *t* de la blockchain (adresses publiques associées à leur balance, stockage, code source des smart contracts…). Elle se présente sous forme d’un arbre [Merkle Patricia Trie](https://ethereum.org/en/developers/docs/data-structures-and-encoding/patricia-merkle-trie/) qui, après chiffrement, devient une racine de [Merkle](https://en.wikipedia.org/wiki/Merkle_tree). Pour la mettre à jour, l’EVM dispose d’une *STF* (*State Transition Function*, ou fonction de transition d’états) qui se traduit par la description mathématique formelle suivante :

```
Y(S, T) = S'
```

Avec *S* un ancien état valide, *T* un ensemble de nouvelles transactions, *Y* la fonction de transition et *S’* le nouvel état valide.

Pour interagir avec la blockchain Ethereum, deux types d’interactions sont possibles : les *calls* et les *transactions*. Alors que les calls peuvent uniquement lire l’état de la blockchain, les transactions peuvent le modifier. Ces deux types d’interactions utilisent du *gas*, qui sont des frais permettant d’éviter le spam inutile sur le réseau.

Lorsqu’un nouveau bloc est miné, les transactions associées doivent être traitées. En premier lieu, on traite les transactions simples entre comptes externes (ceux appartenant à des vrais utilisateurs, les EOAs), puis on traite les transactions incluant un contrat. Pour ces dernières, le code du contrat est exécuté de manière isolée (sans accès à aucun fichier ou réseau) par *tous* les noeuds du réseau car l’état de la blockchain se verra modifié.

## Bénéfices

Là où les smart contracts vont jouer un rôle essentiel, c’est dans les domaines les plus importants de notre société actuelle : la santé publique, la finance, le système de vote du gouvernement, la supply chain, etc. Tout ce beau monde requiert une précision et une sécurité importantes au niveau des [EDI](https://www.edipourtous.fr/ce-qu-est-l-edi/), et offertes par l'utilisation des smart contracts : 

- **Autonomie et économie.** Plus besoin de brokers qui confirment les agréments, et donc plus besoin d’intermédiaires qui chargent des frais de transaction ;
- **Backup.** Dans le cas où une des parties se retrouve dans une situation de perte de données importantes, notamment des contrats et données clients ;
- **Sécurité**. Notamment liée à la cryptographie des smart contracts ;
- **Vitesse**. Où chaque smart contract est automatisé et ainsi réduit le temps des processus business ;
- **Précision**. Pour éviter les erreurs dûes au remplissage manuel classique.

## Limites

Contrairement aux applications que l’on a l’habitude d’utiliser au quotidien, les smarts contracts ne peuvent pas communiquer avec le monde extérieur au travers de requêtes HTTP. Cette frontière a été définie volontairement, et permet de ne pas se fier à des informations externes qui pourraient compromettre le consensus, celui-ci étant fondamental pour assurer la sécurité et la décentralisation. En effet, le code des smarts contracts doit absolument être déterministe : tous les noeuds traitant les mêmes transactions doivent à tout prix arriver au même résultat final, le cas échéant cassant le consensus.

> Mais pas de panique : des solutions existent pour palier à cette restriction. Il s’agit des [oracles](https://ethereum.org/en/developers/docs/oracles/), qui ne sont autres que des flux de données, apportant aux smart contracts des informations en dehors de la blockchain (*off-chain*) vers celle-ci (*on-chain*) afin qu’ils puissent les utiliser, et ce tout en maintenant le consensus.
> 

Une autre limitation des smarts contracts concerne leur taille, qui ne peut pas dépasser 24Ko. Dans le cas où cette limite est franchie, le contrat tombera à cours de gas.

> Là encore, des contre-mesures existent, l’une d’entre elles reposant sur la proposition d’amélioration [EIP-2535: Diamonds, Multi-Facet Proxy](https://eips.ethereum.org/EIPS/eip-2535).
> 

Enfin, la taille du réseau Ethereum ainsi que son nombre d’utilisateurs ont abouti aujourd’hui à des frais élevés et à un ralentissement de la vitesse d’exécution, devenus des freins à son adoption de masse. Des blockchains se sont donc construites dans le but de réduire ces frais et d’améliorer les performances du réseau, tout en restant compatible avec l’EVM : [BNB Chain (BNB)](https://www.bnbchain.org/en), [Polygon (MATIC)](https://polygon.technology/), [Avalanche (AVAX)](https://www.avax.network/)…

## Sources

- [Introduction to smart contracts | ethereum.org](https://ethereum.org/en/developers/docs/smart-contracts/)
- [Qu'est-ce que la machine virtuelle Ethereum (EVM) ?](https://cryptoast.fr/quest-ce-que-la-machine-virtuelle-ethereum/)
- [What is Ethereum Virtual Machine and How it works](https://techfi.tech/what-is-ethereum-virtual-machineand-how-it-works/)
- [What are Smart Contracts?](https://blockgeeks.com/guides/smart-contracts)
- [What Are Smart Contracts on the Blockchain and How They Work](https://www.investopedia.com/terms/s/smart-contracts.asp)
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
properties (23)
authoriamludal
permlinkevm-and-smart-contracts-quand
categoryhive-114606
json_metadata"{"links":["https://fr.wikipedia.org/wiki/Turing-complet","https://ethereum.org/en/developers/docs/evm/","https://techfi.tech/what-is-ethereum-virtual-machineand-how-it-works/","https://ethereum.org/en/developers/docs/data-structures-and-encoding/patricia-merkle-trie/","https://en.wikipedia.org/wiki/Merkle_tree","https://www.edipourtous.fr/ce-qu-est-l-edi/","https://ethereum.org/en/developers/docs/oracles/","https://eips.ethereum.org/EIPS/eip-2535","https://www.bnbchain.org/en","https://polygon.technology/"],"image":["https://images.ecency.com/DQmVgRnBYbxG3R9scnXD87HHJdBwwRzkUkBmRKEaXRNfvkm/untitled.png","https://images.ecency.com/DQmY36J4Ay96BFd6JmriSkmhkDTeKzgAbRdKKNA1KQZLnJq/evm.png","https://images.ecency.com/DQmcQctByASw9PToBnhLG9iQX1b7v97XRatqyWEGVsZGYwn/opcodes.png"],"thumbnails":["https://images.ecency.com/DQmVgRnBYbxG3R9scnXD87HHJdBwwRzkUkBmRKEaXRNfvkm/untitled.png","https://images.ecency.com/DQmY36J4Ay96BFd6JmriSkmhkDTeKzgAbRdKKNA1KQZLnJq/evm.png","https://images.ecency.com/DQmcQctByASw9PToBnhLG9iQX1b7v97XRatqyWEGVsZGYwn/opcodes.png"],"users":["nissou31"],"tags":["hive-114606","fr","ethereum","blockchain","smart-contracts"],"description":"Article écrit en collaboration avec @nissou31 Ethereum a récemment fait beaucoup parler de lui avec sa migration du Proof of Work au Proof of Stake pour son mécanisme de consensus. On a cependant tendance","app":"ecency/3.0.29-vision","format":"markdown+html"}"
created2022-11-28 10:22:27
last_update2022-11-28 10:22:27
depth0
children6
last_payout2022-12-05 10:22:27
cashout_time1969-12-31 23:59:59
total_payout_value0.338 HBD
curator_payout_value0.670 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length10,025
author_reputation1,091,105,646,105
root_title"EVM & Smart Contracts : Quand la Blockchain Devient Intelligente"
beneficiaries
0.
accountnissou31
weight5,000
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id118,671,825
net_rshares2,757,625,041,765
author_curate_reward""
vote details (37)
@eniolw ·
Blogging in English can get you more readers.
properties (22)
authoreniolw
permlinkre-iamludal-2022124t03958634z
categoryhive-114606
json_metadata{"tags":["hive-114606","fr","ethereum","blockchain","smart-contracts"],"app":"ecency/3.0.29-vision","format":"markdown+html"}
created2022-12-04 04:39:57
last_update2022-12-04 04:39:57
depth1
children0
last_payout2022-12-11 04:39:57
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length45
author_reputation254,800,780,119,503
root_title"EVM & Smart Contracts : Quand la Blockchain Devient Intelligente"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id118,833,312
net_rshares0
@hivebuzz ·
Congratulations @iamludal! You have completed the following achievement on the Hive blockchain And have been rewarded with New badge(s)

<table><tr><td><img src="https://images.hive.blog/60x70/http://hivebuzz.me/@iamludal/upvoted.png?202211281605"></td><td>You received more than 500 upvotes.<br>Your next target is to reach 600 upvotes.</td></tr>
<tr><td><img src="https://images.hive.blog/60x70/http://hivebuzz.me/@iamludal/payout.png?202211281605"></td><td>You received more than 10 HP as payout for your posts, comments and curation.<br>Your next payout target is 50 HP.<br><sub>The unit is Hive Power equivalent because post and comment rewards can be split into HP and HBD</sub></td></tr>
</table>

<sub>_You can view your badges on [your board](https://hivebuzz.me/@iamludal) and compare yourself to others in the [Ranking](https://hivebuzz.me/ranking)_</sub>
<sub>_If you no longer want to receive notifications, reply to this comment with the word_ `STOP`</sub>



**Check out the last post from @hivebuzz:**
<table><tr><td><a href="/hive-102201/@hivebuzz/wc2022-recap-day9"><img src="https://images.hive.blog/64x128/https://i.imgur.com/uNPMgnd.png"></a></td><td><a href="/hive-102201/@hivebuzz/wc2022-recap-day9">HiveBuzz World Cup Contest - Recap of Day 9</a></td></tr><tr><td><a href="/hive-122221/@hivebuzz/pud-202212"><img src="https://images.hive.blog/64x128/https://i.imgur.com/805FIIt.jpg"></a></td><td><a href="/hive-122221/@hivebuzz/pud-202212">Hive Power Up Day - December 1st 2022</a></td></tr><tr><td><a href="/hive-102201/@hivebuzz/wc2022-ranking"><img src="https://images.hive.blog/64x128/https://i.imgur.com/8kplXrX.png"></a></td><td><a href="/hive-102201/@hivebuzz/wc2022-ranking">HiveBuzz World Cup Contest - Check your ranking</a></td></tr></table>

###### Support the HiveBuzz project. [Vote](https://hivesigner.com/sign/update_proposal_votes?proposal_ids=%5B%22199%22%5D&approve=true) for [our proposal](https://peakd.com/me/proposals/199)!
properties (22)
authorhivebuzz
permlinknotify-iamludal-20221129t153730
categoryhive-114606
json_metadata{"image":["http://hivebuzz.me/notify.t6.png"]}
created2022-11-29 15:37:30
last_update2022-11-29 15:37:30
depth1
children0
last_payout2022-12-06 15:37:30
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length1,970
author_reputation370,621,049,074,111
root_title"EVM & Smart Contracts : Quand la Blockchain Devient Intelligente"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id118,705,597
net_rshares0
@itharagaian ·
Merci pour cet article, je pense qu'il devrait plaire à @lemouth pour son côté sciences.

!PGM
!PIZZA
!LOL

---------
ItharaGaian
Principauté du Bastion (@hive-143869 Community)
**Curation Manuelle**

![BlasonPrincipautéBastionTransparentSmall.png](https://files.peakd.com/file/peakd-hive/itharagaian/23uQrMVdp89ivaHaUemFEiexqo3YAmscDVWxgL4sQEbUoj7PTtRknjMn8fGgK7fP4Cn4z.png)
properties (22)
authoritharagaian
permlinkre-iamludal-rm20rc
categoryhive-114606
json_metadata{"tags":["hive-114606"],"app":"peakd/2022.11.1"}
created2022-11-28 10:50:00
last_update2022-11-28 10:50:00
depth1
children1
last_payout2022-12-05 10:50:00
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length375
author_reputation141,552,722,130,676
root_title"EVM & Smart Contracts : Quand la Blockchain Devient Intelligente"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id118,672,248
net_rshares0
@pgm-curator ·
<center>Sent 0.1 PGM - 0.1 LVL- 1 STARBITS  - 0.05 DEC - 15 SBT - 0.1 THG - tokens to  @itharagaian</center>

<center><sub>remaining commands 0</sub></center>


**BUY AND STAKE THE PGM TO SEND A LOT OF TOKENS!**

The tokens that the command sends are: 0.1 PGM-0.1 LVL-0.1 THGAMING-0.05 DEC-15 SBT-1 STARBITS-[0.00000001 BTC (SWAP.BTC) only if you have 2500 PGM in stake or more ]

5000 PGM IN STAKE = 2x rewards! 

![image.png](https://files.peakd.com/file/peakd-hive/zottone444/23t7AyKqAfdxKEJPQrpePMW15BCPhbyrf5VoHWxhBFcEcPLjDUVVQAh9ZAopbmoJDekS6.png)
Discord [![image.png](https://files.peakd.com/file/peakd-hive/hive-135941/23wfr3mtLS9ddSpifBvh7mwLx1rN3eoaSvbwUxTngsNR1GQ8EiZTrC9P9RwZxHCCfK8e5.png)](https://discord.gg/KCvuNTEjWw)


Support the curation account @ pgm-curator with a delegation [10 HP](https://hivesigner.com/sign/op/WyJkZWxlZ2F0ZV92ZXN0aW5nX3NoYXJlcyIseyJkZWxlZ2F0b3IiOiJfX3NpZ25lciIsImRlbGVnYXRlZSI6InBnbS1jdXJhdG9yIiwidmVzdGluZ19zaGFyZXMiOiIxMCJ9XQ..) - [50 HP](https://hivesigner.com/sign/op/WyJkZWxlZ2F0ZV92ZXN0aW5nX3NoYXJlcyIseyJkZWxlZ2F0b3IiOiJfX3NpZ25lciIsImRlbGVnYXRlZSI6InBnbS1jdXJhdG9yIiwidmVzdGluZ19zaGFyZXMiOiI1MCJ9XQ..) - [100 HP](https://hivesigner.com/sign/op/WyJkZWxlZ2F0ZV92ZXN0aW5nX3NoYXJlcyIseyJkZWxlZ2F0b3IiOiJfX3NpZ25lciIsImRlbGVnYXRlZSI6InBnbS1jdXJhb3RyIiwidmVzdGluZ19zaGFyZXMiOiIxMDAifV0.) - [500 HP](https://hivesigner.com/sign/op/WyJkZWxlZ2F0ZV92ZXN0aW5nX3NoYXJlcyIseyJkZWxlZ2F0b3IiOiJfX3NpZ25lciIsImRlbGVnYXRlZSI6InBnbS1jdXJhdG9yIiwidmVzdGluZ19zaGFyZXMiOiI1MDAifV0.) - [1000 HP](https://hivesigner.com/sign/op/WyJ0cmFuc2Zlcl90b192ZXN0aW5nIix7ImZyb20iOiJfX3NpZ25lciIsInRvIjoicGdtLWN1cmF0b3IiLCJhbW91bnQiOiIxMDAwIn1d)

Get **potential** votes from @ pgm-curator by paying in PGM, here is a [guide](https://peakd.com/hive-146620/@zottone444/pay-1-pgm-and-get-4-votes-itaegn)



<sub>I'm a bot, if you want a hand ask @ zottone444</sub>

***
properties (22)
authorpgm-curator
permlinkpgm-curatoritharagaian1669632618968
categoryhive-114606
json_metadata{"tags":[],"app":"pgm/0.1","format":"markdown+html"}
created2022-11-28 10:50:21
last_update2022-11-28 10:50:21
depth2
children0
last_payout2022-12-05 10:50:21
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length1,884
author_reputation3,409,490,822,394
root_title"EVM & Smart Contracts : Quand la Blockchain Devient Intelligente"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id118,672,254
net_rshares0
@laruche ·
Bonjour !

En tant que membre francophone de Hive, vous avez été ajouté à l'auto-vote de @laruche et avez reçu un vote à 100% en guise de cadeau de bienvenu.

La puissance de vote de base est de 25%, deux votes par tranche de 24h et 7 max par semaine.
Vous pouvez augmenter la puissance de vote en déléguant à la Ruche si vous le souhaitez. Voici notre serveur Discord si vous avez des questions ou juste pour discuter avec d'autres francophones de Hive !

https://discord.gg/46gdrud

Bienvenue dans la Ruche !
properties (22)
authorlaruche
permlinkre-iamludal-rm4nye
categoryhive-114606
json_metadata{"tags":["hive-114606"],"app":"peakd/2022.11.2"}
created2022-11-29 21:06:15
last_update2022-11-29 21:06:15
depth1
children0
last_payout2022-12-06 21:06:15
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length510
author_reputation16,189,721,327,218
root_title"EVM & Smart Contracts : Quand la Blockchain Devient Intelligente"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id118,715,244
net_rshares0
@pizzabot ·
<center>🍕 PIZZA !


I gifted <strong>$PIZZA</strong> slices here:
@itharagaian<sub>(4/5)</sub> tipped @iamludal (x1)


<sub>Join us in <a href="https://discord.gg/hivepizza">Discord</a>!</sub></center>
properties (22)
authorpizzabot
permlinkre-evm-and-smart-contracts-quand-20221128t105017z
categoryhive-114606
json_metadata"{"app": "beem/0.24.19"}"
created2022-11-28 10:50:18
last_update2022-11-28 10:50:18
depth1
children0
last_payout2022-12-05 10:50:18
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length201
author_reputation7,498,028,255,956
root_title"EVM & Smart Contracts : Quand la Blockchain Devient Intelligente"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id118,672,252
net_rshares0