Recibo el siguiente error al implementar mi contrato en Remix:
La inicialización de la creación del contrato devuelve datos con una longitud de más de 24576 bytes. Es probable que la implementación falle. Más información: eip-170
El contrato se divide en 2 contratos. A con 250 líneas y B (B es A) con 500 líneas. También creé una biblioteca y exporté algunas de mis funciones a esta biblioteca. Actualmente estoy subiendo al entorno Javascript VM. Vale la pena señalar que cuando hago válida la casilla de verificación Habilitar optimización en la pestaña Compilar, todavía no funciona. Tengo un par de preguntas:
1) ¿Cómo puedo verificar el tamaño de los datos en Remix? Recibo un error de que tiene más de 24kb, ¿cómo puedo verificar cuánto es exactamente?
2) ¿Qué está causando esto? ¿Está esto relacionado con la longitud del código o la cantidad de gas que se ejecuta? Si es el gas, ¿cómo es que cuando agrego mucho más gas al límite de gas en la pestaña Ejecutar en remix, todavía me da el mismo error?
3) ¿Alguna forma común de disminuir el tamaño de los datos para poder implementarlos?
Gracias
El problema del tamaño del código que informó significa simplemente que su código se compila en un programa de bajo nivel demasiado grande. Demasiados bytes en él.
Nada relacionado con gas o sin gas: simplemente es más grande de lo permitido.
Normalmente este tipo de problemas surgen con listados muy largos y/o en presencia de constantes estáticas muy grandes (matrices, tablas, etc). En ese caso, debería tener algunas unidades de software separadas (como aparentemente ya lo hizo) y reducir la cantidad de almacenamiento requerido.
PERO puede ser un problema relacionado con la remezcla de IDE. Antes de continuar, guarde sus archivos, borre el caché del navegador y reinicie el navegador. (Por cierto, Chrome parece tener una mejor relación con Remix que otros navegadores...)
Por otro lado, si está desarrollando progresivamente su código agregando nuevas funciones y probándolas antes de continuar, simplemente intente tener un paso atrás para eliminar la última función agregada y asegúrese de que el error deje de aparecer. Después de eso, simplifica todo lo que puedas.
Si el error no deja de aparecer al eliminar su último agregado, el diseño general puede ser deficiente y consumir demasiada memoria por naturaleza.
Consulte ¿Cómo calcular el tamaño de mi código de contrato? ¡Es demasiado grande para implementar ahora también!
Es importante subrayar que dividir el contrato en más de un contrato/biblioteca reduce el tamaño del código de bytes si, y solo si, se pueden implementar por separado y usted los implementa por separado. De lo contrario, el código de bytes resultante es más grande.
Compruebe también sus variables públicas: puede ser que algunas de ellas se conviertan en 'privadas'. En ese caso, el compilador no crea un captador para ellos (el resultado neto de esta intervención, en aras de la claridad, depende de muchas otras cosas... de todos modos, inténtelo).
Habilite la optimización para contratos inteligentes en remix. Tendrá éxito
sp4c3
Contenidoop
sp4c3
Contenidoop
sp4c3