Tamaño máximo de los contratos en Solidity
Existe un tamaño máximo que los contratos desplegados en la mainnet de Meter (y todas la blockchain compatibles con EVM) no pueden superar. El tamaño límite de todo contrato en Solidity es de 24576 bytes.
En este pequeño tutorial aprenderemos sobre una utilidad de Hardhat la cual nos permite ver el tamaño de nuestros contratos un vez compilados. De esta manera podremos averiguar si nuestro contrato es demasiado grande para ser desplegado.
Iniciamos un nuevo proyecto Hardhat, seleccionando las opciones por defecto.
hardhat init
Instalamos la utilidad llamada hardhat-contract-sizer
yarn add --dev hardhat-contract-sizer
Ahora tenemos que editar el fichero hardhat.config.js para añadir la siguiente línea al principio del fichero.
require('hardhat-contract-sizer');
Finalmente ejecutamos el siguiente comando para que la utilidad nos informe del tamaño de nuestro contrato.
yarn hardhat size-contracts
Si añadimos más código al contrato y ejecutamos de nuevo la utilidad veremos como el tamaño aumenta. La utilidad incluso es capaz de indicarnos cuánto ha aumentado el contrato desde la última vez que se modificó.
Existe una configuración que nos permite optimizar el binario que se genera, consiguiendo reducir su tamaño. Editamos el fichero hardhat.config.js una vez y modificamos module.exports para que quede de la siguiente manera.
module.exports = {
solidity: {
version: "0.8.4",
settings: {
optimizer: {
enabled: true,
runs: 200
}
}
},
};
Ejecutamos de nueva la utilidad y vemos que el tamaño del contrato compilado ha bajado considerablemente.
Recommended Posts
Decodificando variables dinámicas con Foundry
julio 28, 2023
Funciones call y delegatecall en Solidity
junio 5, 2023