Reino: Code Quality

Códigos de baixa qualidade levam a comportamentos imprevisíveis. Da perspectiva do usuário, isso normalmente se manifesta como usabilidade ruim. Para um invasor, trata-se de uma oportunidade para atacar o sistema de formas imprevistas.

Solidity Bad Practices: Hardcoded Gas Amount

Abstract
O contrato define uma quantidade fixa de gás ou invoca uma função com uma quantidade fixa de gás.
Explanation
O custo da transação em termos de gás pode variar com base nas condições atuais da rede, por exemplo, o custo do gás das instruções EVM (Ethereum Virtual Machine) durante um hard fork pode ser significativamente afetado. Isso pode interromper a funcionalidade existente que depende de quantidades fixas de gás ou pode afetar transações usadas para transferência de valor, como transfer() e send(), que usam uma quantidade fixa de gás 2300.

Exemplo 1: O código a seguir realiza uma chamada e especifica uma quantidade fixa de gás.


interface ICallable {
function callMe() external;
}

contract HardcodedNotGood {
function callWithArgs() public {
callable.callMe{gas: 10000}();
}
}
References
[1] Enterprise Ethereum Alliance Gas and Gas Prices
[2] Standards Mapping - CIS Azure Kubernetes Service Benchmark 2
[3] Standards Mapping - CIS Amazon Elastic Kubernetes Service Benchmark 5
[4] Standards Mapping - CIS Amazon Web Services Foundations Benchmark 3
[5] Standards Mapping - CIS Google Kubernetes Engine Benchmark normal
[6] Standards Mapping - Common Weakness Enumeration CWE ID 665
[7] Standards Mapping - Smart Contract Weakness Classification SWC-134
desc.structural.solidity.swc134