Ethereum : deux bugs découverts et corrigés dans le compilateur

Ethereum est une blockchain proposant l’utilisation de smart contracts dits « complexes ». Deux bugs ont été découverts puis corrigés dans le compilateur d’Ethereum, la machine chargée de traduire les smart contracts. 

Le compilateur Ethereum est l’outil qui permet de transformer le code des smart contracts écrit et compréhensible par l’humain, en bytecode compréhensible par l’EVM (Ethereum Virtual Machine).

Les deux bugs découverts ont été causés par des problèmes au niveau du stockage des tableaux.

Signed Integer Array Bug

Dans le premier bug, appelé « Signed Integer Array Bug« , ce sont les tableaux d’entiers négatifs qui ont causé la faille. Les tableaux sont une représentation informatique d’un ensemble de valeurs, dans notre cas des entiers négatifs.

[-1, -2, -3] //Tableau d’entiers négatifs

Ce problème apparaissait, lors de l’utilisation simultanée de deux types de tableaux différents. Dans ce cas, une conversion est réalisée afin qu’ils soient tous les deux du même type. Cependant, un problème pouvait arriver lors de cette conversion et transformer le tableau d’entier négatif en entier positif.

[-1, -2, -3] => conversion => [1, 2, 3]

ABIEncoderV2 Array Bug

Le second bug, appelé « ABIEncoderV2 Array Bug« , quant à lui affecte la version expérimentale – même si déployée sur le mainnet – de l’ABI Encoder. L’ABI est une interface permettant aux modules d’un programme de communiquer entre eux.

Dans ce cas, lors du processus d’encodage, l’ABI ne traite pas les éléments du tableau dans le bon ordre, rendant la sortie de l’encodeur est différente de l’entrée.

[[1, 2], [3, 4], [5, 6]] => encodage => [[1, 2], [2, 3], [3, 4]]

Ce bug a été reporté et corrigé par le développeur Ming Chuan Lin de secondstate.io.

Quelles conséquences ?

Les deux bugs ont été corrigés dans la version 0.5.10 du compilateur et le seront dans la série de versions 0.4.x si la communauté en fait la demande.

Pour l’instant aucune conséquence critique de ces bugs – hack, fuite de données, etc. – n’a été trouvée ou communiquée.

[es_tradingview symbol= »bitfinex:ethbtc » interval= »D » height= »500″ colors= »Light »]

Renaud H.

Ingénieur en software et en systèmes distribués de formation, passionné de cryptos depuis 2013. Touche à tout, entre mining et développement, je cherche toujours à en apprendre plus sur l’univers des cryptomonnaies et à partager le fruit de mes recherches à travers mes articles.