La prochaine mise à jour d’Ethereum, Constantinople, a récemment été intégrée dans la dernière version des principaux clients et est programmée pour le bloc 7 600 000, attendu pour le 16 janvier. Constantinople apporte quelques nouveautés majeures, mais ne remet pas en cause les fondements d’Ethereum. Revue en détail des nouveautés et mini-FAQ. 

Visite de Constantinople

Carlo Bossoli - Intérieur de Sainte Sophie à Constantinople - 1839

Carlo Bossoli – Intérieur de Sainte Sophie à Constantinople – 1839

Constantinople comprend 5 Ethereum Improvement Proposals (EIPs):

  • 145: Nouvelles instructions natives dédiées au déplacement de bits
  • 1014: Nouvelle opération machine: Skinny CREATE2
  • 1052: Nouvelle opération machine: EXTCODEHASH
  • 1234: Report de l’accélération de la difficulté de minage et ajustement des gains par bloc
  • 1283: Changement de fonctionnement du gas pour l’opération SSTORE

En résumé, au 16 janvier la Machine Virtuelle Ethereum (EVM) sera optimisée par 4 EIPs (dont le très attendu Skinny CREATE2 pour les State Channels, cf. infra) tandis que le nombre d’ethers créés par bloc sera réduit de 3 à 2 pour compenser le report de la « bombe de difficulté » (difficulty bomb) pour les 12 prochains mois.

  • EIP-145 : Nouvelles instructions natives dédiées au déplacement de bits

L’EVM reçoit des instructions natives pour déplacer des bits (Bitwise shifting). L’EVM peut d’ores et déjà effectuer toutes les opérations logiques et arithmétiques. Les déplacements de bits sont ainsi possibles via plusieurs opérations arithmétiques. Chacune de ces opérations consommant du gas, le déplacement d’un bit à gauche ou à droite coûte actuellement 35 gas contre seulement 3 gas avec l’EIP-145 qui crée les instructions natives SHL et SHR

  • EIP-1014 : Nouvelle opération machine : Skinny CREATE2

Cette nouveauté proposée à l’initiative de Vitalik Buterin avait été à l’origine du report de Constantinople, qui devait initialement avoir lieu à la mi-octobre, du fait de la complexité de son implémentation. L’opération CREATE2 se comporte comme l’opération CREATE et déploie un nouveau contrat dans la blockchain Ethereum, mais CREATE2 n’utilise pas le même principe pour déterminer l’adresse où est déployée le contrat. Cette nouvelle façon de déployer des contrats permet d’interagir avec des contrats qui ne sont pas encore déployés mais dont l’adresse est unique et partagée entre les utilisateurs, voire de demander leur déploiement ou la mise à jour de leur état avant d’interagir avec eux. Il s’agit sans doute de l’innovation la plus importante apportée par Constantinople. En effet, il est ainsi possible dans le cas de State Channels par exemple de procéder à des instantiation contrefactuelles de contrats, généralisant cette solution de scalabilité avec une approche orientée objet dans le conception des States Channels.

Eugène Delacroix L'Entrée des Croisés à Constantinople 1840

Eugène Delacroix L’Entrée des Croisés à Constantinople 1840

Prenons l’exemple d’un Smart Contract permettant à Alice et Bob de jouer aux échecs. Un élève de Christian Reitweisner (le créateur de Solidity) à la Technische Universität Berlin avait écrit un article remarquable sur son projet de faire un tel Smart Contract. Sa conclusion à l’époque était que la vérification qu’un joueur était en situation d’échec et mat était beaucoup trop lourd en calcul pour l’EVM car il fallait tester l’impossibilité des mouvements de toutes les pièces. Une solution possible serait de mettre au défi le joueur en échec de trouver un mouvement possible en quelques minutes ou bien d’accepter sa défaite. L’analyse d’un échec et mat peut aussi être faite entre les deux joueurs dans un State Channel. Alice et Bob créent une nouvelle partie et jouent ensemble hors de la blockchain via un smart contract instancié entre eux seulement et non déployé. Ils se passent alors des frais de transaction (à chaque mouvement et pour vérifier si la partie est terminée) tout en pouvant à tout moment envoyer à la blockchain l’état qu’ils partagent du smart contract instancié dans leur State Channel en le déployant via CREATE2.

Pour plus de détails sur ce sujet vous pouvez consulter cet article et une introduction au State Channels généralisés ici.

  • EIP-1052 : Nouvelle opération machine : EXTCODEHASH

Carte postale de Constantinople avec un groupe de Bachibouzouke.jpg

Carte postale de Constantinople avec un groupe de Bachibouzouke.jpg

La nouvelle opération EXTCODEHASH renvoie le hash du code d’un smart contract afin, notamment, de vérifier de façon efficiente que le code correspond à une implémentation reconnue avant d’exécuter d’autres instructions.

  • EIP-1283 : Changement de fonctionnement du gas pour l’opération SSTORE

Pour rappel, l’opération SSTORE entraîne la création d’une nouvelle case mémoire dans l’EVM afin d’y stocker la valeur d’une variable d’un smart contract. Le coût en gas de l’opération SSTORE a fait depuis longtemps l’objet de nombreuses attentions et une projet universitaire a même lancé un gastoken qui stocke du gas pour une utilisation ultérieure via SSTORE. C’est l’EIP-1283 qui va optimiser son fonctionnement, l’option de EIP-1087 ayant été écartée car créant trop complexe. SSTORE aura un coût dépendant de l’état de la case mémoire suite à son exécution :

    • Occuper une case mémoire initialement vide avec une valeur non-nulle coûte 20,000 gas,
    • Le changement de la valeur d’une case mémoire initialement vide et dont la valeur est nulle à la fin de l’exécution coûte 200 gas par changement ,
    • L’utilisation d’une case mémoire initialement vide et dont la valeur est non-nulle à la fin de l’exécution coûte 20,000 gas et 200 gas par changement lors de l’exécution,
    • L’utilisation d’une case mémoire initialement non-vide et dont la valeur est non-nulle à la fin de l’exécution coûte 5,000 gas et 200 gas par changement lors de l’exécution ,
    • L’utilisation d’une case mémoire initialement non-vide et dont la valeur est nulle à la fin de l’exécution coûte 5,000 gas et 200 gas par changement et permet de bénéficier du remboursement infra,
  • Le fait d’attribuer à la fin d’une exécution une valeur nulle à une case mémoire initialement non-vide entraîne un remboursement de 20,000 gas.

Cette typologie permet de fortement réduire le coût en gas des transactions réalisant des opérations SSTORE successives sur les mêmes cases. Il est attendu que de nombreux contrats verront leur coût d’utilisation baisser.

  • EIP-1234 : Report de l’accélération de la difficulté de minage et ajustement des gains par bloc

Tout comme cela avait était le cas lors du hard fork Byzantium et son EIP-649, la question du nombre d’ethers émis par bloc fut indéniablement le feuilleton qui a le plus retenu l’attention sur Ethereum cet été. Lors de la conférence vidéo des core developers d’Ethereum du 31 août où furent invités à participer de nombreux mineurs représentant au total environ 70% du hashrate, il a été décidé que ce montant sera porté à 2 ETH par bloc contre 3 ETH aujourd’hui.

Pour mémoire ces ETH sont attribués au mineur ou le pool de mineurs qui trouve le bloc. Le rythme d’émission des ETH va donc être réduit de 7 % à 4 % environ après un long débat qui a duré quelques mois concernant les trois voies envisagées :

  • EIP-858, une réduction à 1 ETH / bloc
  • EIP-1234, une réduction à 2 ETH / bloc
  • EIP-1295, aucune réduction mais une réduction de la récompense attribuée aux mineurs pour les uncles et les nephews

Au final c’est la proposition de compromis EIP-1234 qui a été choisie.

En conclusion gageons que la prise (par hard fork) de Constantinople marquera le début d’un nouvel âge pour Ethereum puisque celle-ci permet des gains en scalabilité substantiels tandis que des changements majeurs sont à venir.

Foire aux questions

1) Je possède des ethers, que dois-je faire ?

Rien. La mise à jour Constantinople n’est pas contentieuse et ne devrait pas, sauf imprévu majeur, entrainer la création d’une nouvelle cryptomonnaie. Vos ethers seront donc conservés sur la version mise à jour d’Ethereum Constantinople sans qu’aucune manipulation soit nécessaire. Ceci est valable à la fois pour les ethers conservés sur des clés privés qui vous appartiennent (par ex. MetaMask, MyCrypto, MyEtherWallet, Jaxx, Coinbase Wallet, etc.), sur des smart-contracts ou encore que vous déteniez ces ethers sur des plateformes d’échange (Kraken, Coinbase, Bitfinex, etc.).

Si vous recevez un email vous indiquant de réaliser une opération spécifique pour conserver ou mettre à jour vos ethers, il s’agit d’une arnaque.

2) J’ai un noeud Ethereum / je suis mineur, que dois-je faire ?

Mettez à jour votre noeud ou votre client de minage avant le 15 janvier 2019.

Dernières versions des clients principaux :

3) J’ai entendu parler de Ethereum Classic Vision et de Ethereum Nowa, quid ?

Ces deux soi-disant forks d’Ethereum programmés de façon suspecte à une date très proche du fork Constantinople sont très probablement des arnaques. Tenez-vous éloignés de ces projets jusqu’à nouvel ordre. Si l’un deux s’avérait être légitime, nous en parlerons sur ce site.

(Merci à Simon Polrot pour ses ajouts et ses commentaires)

751px-Benjamin-Constant-The_Entry_of_Mahomet_II_into_Constantinople-1876

751px-Benjamin-Constant-The_Entry_of_Mahomet_II_into_Constantinople-1876