Le gas mesure le coût de calcul et de stockage d'une transaction sur Ethereum ou une autre chaîne EVM. Chaque opération a un coût de gas fixe ; le sender paie un gas price (en gwei) par unité de gas consommée.
Pour la sécurité, le gas compte de deux manières :
- Gas griefing : un attaquant force le protocole ou un utilisateur à consommer du gas de manière pathologique, en reverting dans des fallback, en gonflant les itérations de boucle, ou en passant des valeurs extrêmes de
gasleft(). - DoS par out-of-gas : une fonction qui boucle sur un tableau non borné peut dépasser le block gas limit et devenir définitivement inappelable.
La best practice est de ne jamais itérer sur des tableaux fournis par l'utilisateur ou non bornés, de borner toute boucle dans une fonction dont le coût en gas est payé par l'utilisateur, et d'éviter de faire dépendre une logique de refund d'hypothèses sur les gas stipends qui changent entre forks (le comportement du stipend de 2300 gas a changé entre hard forks et a cassé des contrats).