Errores de contratos inteligentes más comunes de 2020 de Manoj P R Solidificado Noviembre de 2020

En algunos escenarios, la ejecución del bucle puede costar más que el gas máximo permitido en cada bloque y, cuando sucede, la transacción no se ejecutará. Esto puede ser temporal y afectará solo a una transacción específica o puede ser permanente si el recuento de iteraciones aumenta con el tiempo. Nos hemos encontrado con algunos casos de DoS que pueden ocurrir con o sin la presencia de un ataque intencional.

Supongamos que la función compute se usa en una función esencial para calcular dinámicamente un valor. Dado que el tamaño de la matriz puede crecer hasta un número muy grande, el contrato eventualmente se detendrá debido al límite de gas del bloque.

Estos son difíciles de detectar durante las pruebas, ya que los desarrolladores tienden a usar conjuntos de datos más pequeños como entradas y algunas redes de prueba a menudo son indulgentes cuando se trata de límites de gas. Se recomienda encarecidamente evitar bucles de tamaño desconocido. Si el bucle es necesario para su contrato inteligente, divida la transacción en varios bloques realizando un seguimiento de hasta qué punto se ejecutó el bucle hasta el momento. Esto ayudará a reanudar la iteración en bloques posteriores.