Estoy tratando de averiguar qué tan grande podría ser un contrato. ¿Es posible tener 10k funciones? ¿Un millón? ¿Más?
¿Hay alguna restricción en el tamaño del cuerpo de la función?
¿Un contrato más grande necesita más gas para desplegarse?
¿Es un contrato más grande más lento que uno más pequeño?
Los contratos de solidez se compilan en el código de bytes EVM. El código de bytes del contrato cuesta 200 gas por byte de código de byte, y dado que el límite de gas del bloque es de 8 millones en este momento, teóricamente podría obtener un contrato de ~ 40,000 bytes (un poco menos ya que hay un extra para implementación/datos de tx) implementado. Sin embargo, es poco probable que pueda crear un contrato de este tamaño, ya que los bloques generalmente no tienen tanto espacio adicional. Con respecto a la velocidad de ejecución, esto depende totalmente de su implementación.
Editar: como señaló @Ismael, en realidad hay un límite de 32 kb por transacción como se explica aquí . Esa página también dice que también hay un límite de 24576 bytes para el tamaño del contrato, ¡así que estoy corregido! El EIP para el límite de bytes del contrato se puede encontrar aquí .
Edit2: si está buscando una explicación formal para el límite de tamaño del contrato, consulte la definición 97 del papel amarillo :
Es decir, el tamaño de salida del código del cuerpo final no debe ser superior a 24576 bytes.
Puede eludir la limitación del tamaño del contrato utilizando el Estándar de contrato transparente: https://github.com/ethereum/EIPs/issues/1538
mikko ohtamaa
Nick Mudge