Una razón por la que Ethereum ha sido un proyecto exitoso durante todos estos años debido a su comunidad activa que contribuye a la mejora del proyecto. El reciente programa de recompensas de errores vio lo mismo cuando el equipo de desarrollo recibió un informe sobre una falla en el nuevo codificador ABI experimental (denominado ABIEncoderV2) y dos errores de bajo impacto.
Ethereum lanza la versión 0.5.7 para corregir el error
La Fundación Ethereum, el jugador clave detrás del desarrollo de Ethereum, lanzó una publicación de blog el 26 de marzo titulada como "Solidity Optimizer y ABIEncoderV1 Bug", que habló sobre un error descubierto en el codificador ABI y dos errores encontrados en el optimizador.
En la entrada del blog, la Fundación declaró que había recibido un informe sobre la "falla" en el "nuevo codificador ABI experimental", también conocido como ABIEncoderV2 a través del programa de recompensas de errores. El equipo reveló además que hubo dos errores descubiertos en Solidity Optimizer en las últimas dos semanas. Sin embargo, estos errores tenían "bajo impacto".
Este error se refiere a aquellos que han implementado contratos que utilizan el codificador experimental ABI V2, por lo que podrían verse afectados. Esto significa que solo los contratos que utilizan la siguiente directiva dentro del código fuente pueden verse afectados:
- pragma experimental ABIEncoderV2;
La Fundación ha identificado que hay aproximadamente 2500 contratos en vivo en la red principal que usan el ABIEncoderV2 experimental, pero no está claro cuántos de ellos contienen el error.
El error solo se manifiesta cuando se cumplen todas las condiciones siguientes:
- Los datos de almacenamiento que involucran matrices o estructuras se envían directamente a una llamada de función externa, a abi.encode oa datos de eventos sin una asignación previa a una variable local (memoria) Y
- hay una matriz que contiene elementos con un tamaño inferior a 32 bytes o una estructura que tiene elementos que comparten una ranura de almacenamiento o miembros de tipo bytes más cortos que 32 bytes.
.