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

captura1 2

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ó.

captura2 1

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.

captura3

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *