Publicidad

Prueba de contrato inteligente para su implementación


Publicidad







Los contratos inteligentes
son programas inmutables: una vez que se implementa un contrato, no se puede
modificar. Esto permite a los usuarios asegurarse de que no se cambiarán las
reglas por las cuales se operan sus fondos. Sin embargo, la misma
característica hace que la creación de contratos inteligentes seguros sea
extremadamente complicada. Si crea un contrato con un error o vulnerabilidad,
estará ahí para siempre. Es por eso que las pruebas son aún más cruciales para
los contratos inteligentes que para las aplicaciones tradicionales.

Relacionado: ¿Qué son los
contratos inteligentes? Guía para principiantes

Por
qué es necesario realizar pruebas

Primero, aclaremos qué
problemas pueden y no pueden resolver las pruebas. Para este propósito, señalemos
la siguiente diferencia entre errores y vulnerabilidades:

→ Si un problema lleva a que
no se ejecute un escenario planificado, es un error.

→ Si un problema lleva a una
ejecución no planificada, es una vulnerabilidad.

Las pruebas no previenen
vulnerabilidades. Una vulnerabilidad es, por definición, algo no planificado,
por lo que no puede tenerla en cuenta en la etapa de prueba. Para tratar las
vulnerabilidades, necesita otras herramientas y acciones, que se describen al
final de este artículo.

Las pruebas nos ayudan a
asegurarnos de que todos los escenarios planificados se ejecuten según lo
previsto. En otras palabras, las pruebas ayudan a prevenir errores. Este hecho
tiene varias consecuencias importantes:

     Regla general: cada línea de lógica de
negocios debe tener una prueba correspondiente. Si tiene un escenario en lógica
empresarial, lo tendrá en el código, lo que significa que debe probarlo.

     Los escenarios más importantes deben ser
probados más a fondo. Los escenarios que serán ejecutados por la mayoría de los
usuarios o que implementarán funcionalidades críticas requieren atención
adicional.

Las pruebas atrapan errores
tontos. Incluso los desarrolladores experimentados cometen errores tontos y
pueden ser muy peligrosos.

    Las pruebas son excelentes para casos
extremos. ¿Qué pasa si un usuario intenta comprar tokens cero? ¿Qué pasa si el
número de usuarios alcanza el límite? Deben considerarse estos casos, y la
mejor solución para esta tarea es usar pruebas.

Debe tener una
especificación detallada para su proyecto para crear pruebas. Discutamos este
punto con más detalle.

Especificación

No puede probar un escenario
planificado si no sabe lo que está planificado. Por lo tanto, debe crear una
especificación.

Esto parece obvio, pero
muchos equipos de blockchain rompen esta regla. Escriben un libro blanco, y
después de eso, escriben inmediatamente el código. Esto puede y a menudo
conduce a una implementación incorrecta de la funcionalidad deseada. En algún
momento, el equipo puede llegar a la conclusión de que ellos mismos no
entienden cómo quieren que se comporte el sistema. Además, la funcionalidad
deseada podría no ser coherente y, por lo tanto, no se puede implementar.

Por lo tanto, una
especificación es imprescindible. Esto nos lleva a una observación interesante:
cuando comienzas a probar tu código, no solo obtienes pruebas. Tienes que
mejorar todo tu procedimiento de desarrollo. Trabaja más de lo que esperaba,
pero también se beneficia más.

Herramientas para probar

Las pruebas son una rama
completamente separada del conocimiento, por lo que no las voy a cubrir en un
artículo. Sin embargo, nombraré las primeras herramientas necesarias.

Para probar sus contratos
inteligentes de manera fácil y correcta, necesitará un marco de prueba. Mis
colegas recomiendan usar uno de los siguientes: Truffle, Embark o Etherlime.

Además, deberá medir la
cobertura de la prueba. La cobertura de prueba es un porcentaje del código que
está cubierto por las pruebas, por lo que una cobertura del 100% significa que
cada instrucción de código de bytes se prueba. Sin embargo, esta es una
situación ideal, no real. En la práctica, este número siempre será inferior a
100, dependiendo de cuántas pruebas cree. Estas son algunas de las herramientas
más populares para medir la cobertura de prueba: cobertura de solidity-coverage
and @0x/sol-coverage.

Relacionado: Lenguajes de programación utilizados en Blockchain, explicados

Expandiendo
el contexto

Entonces, si la cobertura de prueba es del 95% y tengo pruebas para todas las funciones críticas, puedo considerar mi código seguro, ¿verdad? Pero la respuesta correcta es: «¡Incorrecto!» Las pruebas son solo uno de los procedimientos de seguridad necesarios.

Cuando comience a escribir su código, primero debe usar un linter para que el código sea claro y legible. Luego, necesita pruebas para asegurarse de que todos los escenarios planificados funcionen correctamente. Luego ejecuta herramientas de seguridad para encontrar vulnerabilidades estándar y fácilmente detectables. Después de eliminarlos del código, puede proceder a la auditoría externa del código. En cada etapa de desarrollo, el diseño del código será crucial para la seguridad, así como para la usabilidad.

Todos estos pasos tienen sus
complicaciones, pero están más allá del alcance de este artículo.

Ivan Ivanitskiy es el director de análisis de SmartDec y coanfitrión del podcast Basic Block. Es experto en seguridad de aplicaciones, blockchain y contratos inteligentes. Ivan es un apasionado de Bitcoin y siente curiosidad por los contratos inteligentes.

Referencia: cointelegraph.com

Descargo de responsabilidad: InfoCoin no está afiliado con ninguna de las empresas mencionadas en este artículo y no es responsable de sus productos y/o servicios. Este comunicado de prensa es sólo para fines informativos, la información no constituye consejo de inversión o una oferta para invertir.

Noticia original de Infocoin


Publicidad
Otros artículos
Cerrar

Venezuela: detenidos dos hermanos que prometían falsas inversiones en bitcoin

Autoridades policiales venezolanas informaron que los indiciados habrían estafado unos USD 150.000 ofreciendo ganancias al invertir en bitcoin. Leer más Noticia original de Criptonoticias
A %d blogueros les gusta esto: