El código que publicamos dentro de las cadenas de bloques es inmutable, esto quiere decir, que más vale analizarlo antes que arrepentirse después. Es por ello que hoy traemos unas herramientas utiles para analisis dinámico de smart contracts compatibles con la EVM.
Empezaremos por MythX que analiza, despliega y prueba bytecode. Esta herramienta puede ser muy útil en casos dónde el contrato no este verificado y no podamos acceder a su código en solidity.
Además, cuenta con una fácil y rápida instalación que nos permitirá ponernos manos a la obra lo antes posible. Para instalarlo simplemente tenemos que ejecutar lo siguiente en la consola: pip3 install mythril. Y para ejecutarlo solo hay que lanzar el comando: myth analyze [smartContractFiles] o myth analyze -a [address].
Otro proyecto desarrollado por trailofbits, empresa con renombre en el ecosistema web3, sería Manticore. Esta es una herramienta de ejecución simbólica para el análisis de contratos inteligentes y binarios. Algunas de sus caracaterísticas son:
- Exploración de programas: Manticore puede ejecutar un programa y explorar todos los estados posibles a los que puede llegar.
- Generación de entradas: Manticore puede producir automáticamente entradas concretas que den como resultado un estado determinado del programa.
- Detección de errores: Manticore puede detectar cuelgues y otros casos de fallo en binarios y contratos inteligentes
- Instrumentación: Manticore proporciona un control detallado de la exploración del estado a través de devoluciones de llamada de eventos y ganchos de instrucciones.
- Interfaz programática: Manticore ofrece acceso programático a su motor de análisis a través de una API de Python.
Además, dicha herramienta puede analizar los siguientes tipos de programas:
- Contratos inteligentes Ethereum (bytecode EVM)
- Binarios ELF de Linux (x86, x86_64, aarch64 y ARMv7)
- Módulos WASM
Dado que aún quedan proyectos de análisis tanto dinámico como estático por examinar, regresaremos con una segunda publicación sobre el tema. Hasta entonces, ¡les deseamos un despliegue seguro!