Messages
avatar

Un contrat qui continue d'exécuter après un appel échoué ne dispose aujourd'hui d'aucun moyen fiable pour déterminer si l'appelé a annulé intentionnellement ou a simplement manqué de gaz, selon le choix de l'expéditeur. Cette lacune est à la racine du griefing par manque de gaz, et une nouvelle proposition en cours de rédaction tente de la résoudre au niveau de l'EVM. EIP-8456, ouverte à la discussion sur Ethereum Magicians lundi, ajoute une instruction appelée CALLSTATUS, provisoirement à l'opcode 0xA5 pour 2 gaz. Elle pousse l'état de terminaison du dernier appel ou création dans le cadre actuel sous forme de trois bits. Le bit 0 signifie un revert, le bit 1 signifie une interruption exceptionnelle telle qu'une absence de gaz, et le bit 2 signifie qu'un élément dans un cadre inférieur s'est arrêté. L'auteur souligne que la seule preuve actuelle repose sur l'arithmétique de gasleft() après l'appel, et que chaque fork de réajustement a rompu ces seuils. Le gaz bidimensionnel proposé par l'EIP-8037 affaiblirait encore davantage cette arithmétique, car son réservoir n'est pas visible via l'opcode GAS. Pourquoi alors un troisième bit ? La plupart des appels réels passent par des intermédiaires tels que des proxies, le wrapper functionCall d'OpenZeppelin, Multicall3 ou les vérificateurs de signature ERC-1271. Si seul le résultat du call direct était rapporté, un wrapper qui attrape une interruption due à un manque de gaz et effectue un revert avec une raison apparaîtrait comme un revert intentionnel. Le projet conserve un drapeau persistant qui remonte chaque cadre, afin qu'un expéditeur ne contrôlant que le gaz ne puisse jamais faire en sorte qu'un appelant lise un revert simple. Il rapporte les résultats plutôt que les causes, et un appelé peut toujours provoquer intentionnellement une interruption avec INVALID. Il ne protège que le code écrit après son déploiement, car les contrats déjà déployés ne le liront pas. Aucun examen externe n'a encore été effectué, le numéro d'opcode est toujours ouvert, et un prototype ainsi que des tests pour les 58 cas listés sont encore en attente. Lien - https://t.co/KnByUBgWrY

Ce contenu est uniquement fourni à titre informatif et éducatif. Il peut inclure des analyses de tiers, du contenu sponsorisé ou du matériel promotionnel pour lequel le créateur peut recevoir une compensation. Rien dans ce fil d’actualité ne constitue un conseil en investissement ni une garantie de rendement. Vous êtes seul responsable de vos décisions d’investissement. Effectuez toujours vos propres recherches et faites preuve de prudence avant de trader. Nous ne garantissons pas l’exactitude des informations de tiers et ne sommes pas responsables des pertes éventuelles. Les performances passées ne préjugent pas des résultats futurs. Veuillez consulter les Conditions de la communauté et notre Déclaration de divulgation des risques pour plus de détails.

avatarPubliez votre réponse

Commentaire