Para explicar la labor de los analistas de smart contracts y los aspectos a tener en cuenta para que nuestros contratos inteligentes superen las auditorías, entrevistamos a Billy-jitsu, desarrollador y especialista, para que puedas aprovechar sus tips y su gran experiencia en el tema.
El concepto tradicional de contrato ha evolucionado en Web3 a contrato inteligente o smart contract, y se ha vuelto una herramienta mucho más segura que prescinde de la existencia de personas, porque está respaldado por la tecnología blockchain.
Sin embargo, ha surgido la figura de los auditores de smart contracts para realizar revisiones y asegurar que no den lugar a otras interpretaciones.
Billy-jitsu desarrollador y especialista en smart contracts nos comparte su experiencia y tips para que nuestros contratos inteligentes superen con éxito cualquier auditoría.
La definición tradicional de “contrato” señala que es un acuerdo entre dos partes en el que ambas se comprometen a cumplir y respetar una serie de condiciones. A lo largo de la historia, muchas veces estos acuerdos han sido ignorados, las partes han caído en incumplimiento o no han logrado dar soluciones claras. Y muchas veces han sido utilizados para reforzar el dicho de “hecha la ley, hecha la trampa”, porque sus letras pequeñas han complicado a más de uno.
Sin embargo, uno de los instrumentos que la blockchain ha logrado evolucionar es justamente el contrato. En Web3 se le llama contratos inteligentes o smart contracts, básicamente porque tal como lo define Billy-jitsu, es un conjunto de instrucciones que siempre hace lo mismo pero sin el factor más falible de todos: la interferencia humana. No necesitamos confiar en el otro, porque la confianza está puesta en la tecnología que lo sustenta. “Piensa en ello como una máquina expendedora, pone dinero y recibe el producto. Ninguna persona en el medio está ejecutando eso, así funcionan los contratos inteligentes”, explica Billy.
Pero si no tienen intervención humana y no pueden ser modificados, ¿por qué entonces es necesaria la tarea de un auditor o analista de smart contracts? ¿Por qué es un campo profesional altamente demandado y bien remunerado?
No es porque exista una debilidad en el instrumento de estos contratos que corren sobre la blockchain, lo que sucede es que las instrucciones que se programan en el código pueden estar abiertas a diferentes interpretaciones. En la parte humana del contrato inteligente es en lo que tenemos que enfocarnos.
Billy-jitsu lo explica mejor: “Usemos el ejemplo de la máquina expendedora. ¿Qué pasaría si alguien encontrara una manera de obtener fichas gratis poniendo una moneda de veinticinco centavos falsa? ¿Qué pasaría si a alguien se le ocurriera comprobar que sólo presionando botones te dará artículos gratis igual que si los pagaras? No es que estas cosas sucedan, sino que podrían suceder si el código permite esas posibilidades”.
Existen 5 fallas comunes en los smart contracts que pueden ser aprovechados por los ciberdelincuentes.
- Los errores aritméticos con números enteros: como expresan los valores en números enteros, realizar cálculos erróneos con los números enteros (conocidos como errores de coma flotante) es uno de los problemas más comunes en los smart contracts.
- Vulnerabilidad en el límite del Block Gas: si un smart contract usa demasiado gas no cabrá en el bloque y podrá ser revertido.
- Falta de controles de precondición: si no se realizan las comprobaciones necesarias para que la operación sea válida sin errores de carácter humano y suceden cuando el proceso de diseño no se hizo con la atención que se requiere.
- Front-running: se produce cuando las transacciones están en "mempool" y son visibles. Es entonces cuando pueden aparecer usuarios, que manejan esta información, interesados en adelantar contratos por su contenido pagando tarifas más altas, cuando esto sucede se provoca un desorden en el orden de las transacciones y es la vulnerabilidad más común. En estos casos de práctica ilegal, es necesaria la refactorización total del smart contract.
- Errores de programación: un pequeño error de especificación puede tener graves consecuencias en la funcionalidad y seguridad del contrato inteligente. Por eso, la cantidad de auditores para entender el código es clave en estos casos.
Las auditorías ayudan a obtener una perspectiva diferente y, a veces, a probar situaciones que no pensaríamos que sucederían pero que pueden ocurrir. "Es muy importante hacer pruebas de posibilidades que no estuvieron pensadas pero entran igual dentro de las variables programadas, ya que los contratos inteligentes no se pueden cambiar”, detalla Billy.
Es por eso que es tan necesario el trabajo de los auditores, porque si la auditoría no resulta positiva, lo que sigue es solucionar esos problemas con ajustes en el código antes de lanzar el producto o servicio de que trate el contrato. “Sólo tienes una oportunidad, por lo que debes asegurarte de que sea lo más impecable posible”, advierte Billy-jitsu.
Y es que el tema no es tan sencillo, porque cuando el auditor soluciona un problema en el código generalmente puede ocurrir otro debido a esa solución. Si el auditor está disponible, ayudará a solucionar el problema de la mejor manera posible y a veces eso requiere una refactorización total de cómo hizo el contrato inteligente por eso es que las auditorías son muy costosas y toman tiempo.
Muchos proyectos que manejan grandes cantidades de volumen obtienen auditorías de muchas empresas diferentes especializadas en esto. “Cada firma tiene su propio equipo y diferentes pares de ojos. Ninguna firma de auditoría es perfecta, por lo que tener muchas personas verificando el código y hacerlo de manera periódica es la situación ideal, aunque muy caro de realizar”, detalla el desarrollador.
Por eso es que funcionan tan bien las recompensas abiertas a la comunidad que se ofrecen por encontrar errores en el código. “Aquí es donde tenemos hackers de sombrero blanco/negro que pueden informar el problema o en algunas ocasiones también, aprovecharse”, comenta.
Entonces la pregunta evidente es: ¿qué aspectos debe tener en cuenta un desarrollador para pasar con éxito una auditoría de su smart contract?
“En mi experiencia personal, ejecuto muchas pruebas en mi entorno local, tengo pruebas alfa y beta con tantas personas como pueda para revisar bien mi DApp. He movido mi pila a Foundry porque tiene un excelente conjunto de pruebas para un solo usuario”, aconseja.
Pero Billy-jitsu también aprende de otros trucos que han sucedido en el pasado. “Se trata de aprender de los demás y de los propios errores. Es entonces cuando un auditor logra mejoras. No perfecto, pero seguramente será mejor” aclara.
“Yo siempre digo que tienen que leer el código de otras personas, tratar realmente de entender lo que está pasando. Sigo a bastantes expertos en seguridad de Twitter como Samczsun y Mudit_Gupta, ya que tienen excelentes desgloses de lo que sucede cuando ocurren ataques. He aprendido mucho de esos hilos de Twitter”, finaliza.
Billy es especialista en smart contracts y un desarrollador muy activo en Web3. Si sus consejos te fueron de utilidad, no dejes de compartir este contenido y coméntanos también los tips que tú has aprendido para lograr la realización eficaz de tus smart contracts. Si quieres más información y seguir aprendiendo de este tema, puedes seguir a Billy-jitsu en su Twitter.