NFT : la collection Aku perd $34 millions à cause d’une erreur de code

C’est pas moins de $34 millions qui sont bloqués sur le smart contract AkuDreams à cause d’une erreur de code.
aku erreur code
Getting your Trinity Audio player ready...

Dernière modification effectuée le 07.09.2023 00:15

AkuDreams est une collection NFT hébergée sur la blockchain Ethereum dont la totalité des fonds liée au mint est bloquée sur un smart contract suite à une erreur de code.

Le projet est dirigé par Micah Johnson un ancien joueur en MLB, mais également artiste digital. La collection a fait sensation en février 2021 lorsque le premier chapitre a vu le jour, avec la vente d’un Aku, qui a atteint les $2 millions de dollars.

Un événement physique unique a eu lieu à l’art Basel de Miami. L’artiste y avait organisé une exposition de 3 jours autour de l’univers Aku. Les visiteurs pouvaient venir se balader dans le monde de cette collection et y créer leurs propres petits avatars. Ces avatars pouvaient être ensuite mis sous forme de NFT pour être commercialisés.

Ces événements ont contribué à faire grandir la hype autour du projet et de ses chapitres et le monde des NFT commencé à porter de plus en plus d’attention à cette collection.

Graphique de la collection AkuDreams
image tiré du site officiel : aku.world

Le mint du projet Aku se termine mal

La collection Aku était assez sélective au cours de ces premiers chapitres, seul un petit nombre de personnes sur la whitelist pouvaient prétendre à récupérer un de ces NFT dans son wallet.

Cependant, le projet Aku avait prévu une public sale pour ce 22 avril 2022, afin de laisser l’occasion à quiconque veut, de récupérer un Aku. L’Événement était attendu et la communauté présente. Près de 40% de la supply, allait pouvoir être récupéré par les plus rapides.

Cette public sale, va être un succès. $34 millions vont être récupérés par le smart contract AkuDreams… Mais seulement par le smart contract. En effet, une erreur dans le code Aku va rendre impossible la récupération des 11 539 ETH issus de la vente.

Le développeur du smart contract a en réalité commis 2 erreurs. La première est dans le processus de remboursement. Le développeur aurait dû empêcher l’envoi de requête via d’autres contrats sur son smart contract AkoDreams. Cela, n’ayant pas était fait, une personne malveillante a pu envoyer une requête de remboursement falsifiée via un contrat malveillant qui a cassé la boucle de remboursement du smart contract. Ce dernier étant conçu pour qu’aucun fond ne puisse être retiré, tant que tous les remboursements ne sont pas faits, cela a complètement bloqué le système. Remboursement cassé -> les remboursements ne sont plus faits -> il manque des remboursements donc fond bloqué par le smart contract.

Cependant, un des développeurs anonymes du smart contract a réussi à relancer la boucle de remboursement. Donc, le contrat est relancé, les utilisateurs ont pu récupérer leurs fonds et les créateurs de la collection, leurs bénéfices ?

Enfait non, c’est à moitié vrai. Les remboursements ont fonctionné, car la boucle de « refund » est repartie.

Cependant, comme dit plutôt il y a 2 erreurs dans le code. Et c’est la qu’intervient la deuxième.

Les données sont stockées dans un index et cet index est lié à l’utilisateur, il sert au stockage des données d’enchères pour les remboursements. En suivant la logique des développeurs, le nombre dans cet index devrait être le même que le nombre de requêtes de remboursement demandé par les utilisateurs soit 5 495.

Cependant, la variable qui s’occupe de faire varier le chiffre de cet index ne s’incrémente que de 1 par 1. Ainsi, une fois que toutes les demandes de remboursements ont était faite, l’index n’affichait que 3669. Cela est dû aux multis-mints qui ont eu lieu, donc plusieurs demandes de remboursements, mais qu’un seul utilisateur donc qu’une seule incrémentation. Cela donne donc 5 495 requêtes de remboursement recensé, mais seulement 3 669 comptées.

Comme dit plus haut, le smart contract étant fait de sorte à ce que les fonds ne puissent être retirés qu’une fois tous les remboursements effectués, le smart contract, bloque.

Le système identifie 5 495 requêtes de remboursement, mais son index n’en compte que 3 669, il considère donc que tous les remboursements ne sont pas faits. Les fonds restent ainsi bloqués.

Un développeur a expliqué en détail les problèmes sur le smart contract via un thread twitter :

Un événement qui rappelle que la crypto monnaie de par ses aspects insaisissables présente beaucoup d’avantages révolutionnaires en un point. Mais, peut également être particulièrement cruel en bloquant notamment plusieurs dizaines de millions de dollars entre quelques lignes de code, à cause d’une erreur de calcul.

Articles qui pourraient vous intéresser