Rubén Planes LlinaresPerito judicial informático

Auditoría o peritaje de smart contracts

Publicado por , perito judicial informático (AEPEJU nº 1556), el .

Una auditoría sirve para encontrar fallos antes de desplegar un contrato. Un peritaje sirve para demostrar ante un juzgado qué hizo un contrato ya desplegado. Se parecen en lo técnico y se diferencian en casi todo lo demás.

Desliza

Una auditoría no es una prueba pericial

Una auditoría es un servicio privado y preventivo: el equipo de un proyecto contrata a revisores para encontrar vulnerabilidades en su código antes de publicarlo o actualizarlo. Su objetivo es mejorar el contrato, no acreditar hechos.

Un peritaje es un dictamen técnico para un procedimiento: explica a un juez qué ocurrió, por qué y con qué grado de certeza. Lo firma un perito que declara bajo juramento o promesa que actúa con la mayor objetividad posible, como exige el artículo 335.2 de la Ley de Enjuiciamiento Civil, y que puede ser llamado a explicarlo en el juicio.

Por eso un informe de auditoría aportado a un pleito suele valer como documento de parte: dice lo que el auditor encontró en un momento y con un alcance pactado, pero no responde a las preguntas concretas del litigio.

Las diferencias, una a una

La forma más rápida de verlo es comparar para qué sirve cada encargo y quién responde de él.

  • Objeto. Auditoría: encontrar fallos en un código antes de desplegarlo. Peritaje: demostrar qué hizo un contrato concreto en la cadena y si eso encaja con lo prometido o con lo que alega cada parte.
  • Momento. Auditoría: antes, de forma preventiva. Peritaje: después de un incidente, una pérdida o un conflicto.
  • Alcance. Auditoría: el repositorio y la versión que fija el cliente, con exclusiones. Peritaje: el contrato realmente desplegado en una dirección y un bloque concretos, y su historial de transacciones.
  • Destinatario. Auditoría: el equipo del proyecto. Peritaje: el juzgado, el abogado, la aseguradora o la otra parte.
  • Independencia. Auditoría: la contrata y la paga el propio proyecto, a menudo con descargos de responsabilidad amplios. Peritaje: el perito debe ser objetivo, puede ser tachado o recusado y responde de lo que firma.
  • Resultado. Auditoría: una lista de hallazgos por severidad. Peritaje: conclusiones motivadas, con la diferencia entre hecho comprobado e inferencia y con los límites del análisis.
  • Juicio. Auditoría: nadie va a defenderla en sala. Peritaje: se ratifica y se explica ante el juez cuando hace falta.

Qué analizo en un peritaje de smart contracts

Lo primero es asegurar que hablamos del código correcto. Compruebo que el código fuente que se analiza corresponde al bytecode desplegado en la dirección y en el bloque relevantes; si el código no está verificado públicamente, trabajo sobre el bytecode.

Después respondo a las preguntas del caso, no a una lista genérica de vulnerabilidades. Las más habituales son estas.

  • Funciones privilegiadas: quién podía acuñar tokens, pausar el contrato, cambiar comisiones, congelar cuentas o retirar fondos, y si se usaron.
  • Actualizaciones: si el contrato era actualizable mediante un proxy, quién controlaba la actualización y qué cambió en cada versión.
  • Oráculos y precios: de dónde salían los precios y si se podían manipular.
  • Permisos de los usuarios: qué aprobaciones de gasto habían concedido las víctimas y quién las ejecutó.
  • Rug pulls y tokens trampa: si el código impedía vender, cobraba comisiones ocultas o permitía al creador vaciar la liquidez.
  • Reconstrucción: reproducir el estado de la cadena en el bloque del incidente para comprobar que las conclusiones son verificables por un tercero.

Solidity y Cairo: dos lenguajes, el mismo método

Trabajo con contratos en Solidity, el lenguaje habitual de Ethereum y sus redes de segunda capa, y en Cairo. El método pericial es el mismo; cambian las herramientas y los riesgos típicos.

En Solidity el análisis gira en torno a la máquina virtual de Ethereum: llamadas externas, reentradas, aprobaciones de tokens, proxies y almacenamiento. Cairo compila a una representación intermedia (Sierra) y después a código ejecutable, y tiene su propio modelo de cuentas, de llamadas entre contratos y de actualización, así que la verificación de que el código desplegado corresponde al fuente se hace con su propia cadena de compilación.

¿Cuándo necesitas cada uno?

Si vas a lanzar o actualizar un contrato y quieres reducir riesgos, necesitas una revisión de seguridad o una auditoría. Si ya hay una pérdida, una disputa o un procedimiento, necesitas un peritaje.

A veces se combinan: un protocolo que ha sufrido un ataque necesita entender la causa raíz para corregirla y, a la vez, un informe defendible para su aseguradora o para el juzgado. En ese caso conviene separar los dos encargos para que el informe pericial mantenga su independencia.

  • Proyecto antes de lanzar: revisión de seguridad.
  • Inversor que cree que el token era una trampa: peritaje del contrato y de las transacciones.
  • Protocolo atacado: peritaje del exploit, con la reconstrucción transacción a transacción. Más en exploits DeFi.
  • Litigio entre socios o contra un desarrollador: peritaje de lo que hacía el código frente a lo pactado.

Qué no puede afirmar ninguno de los dos

Ni una auditoría ni un peritaje pueden garantizar que un contrato no tiene ningún fallo. Una auditoría limpia significa que no se encontraron problemas en el alcance revisado; un peritaje responde a preguntas concretas con el grado de certeza que permiten los datos.

Desconfía de quien te ofrezca certezas absolutas sobre un código. Lo profesional es decir qué se ha comprobado, cómo, y qué queda fuera.

Preguntas frecuentes

Respuestas cortas a las dudas habituales.

¿Puedo usar en un juicio la auditoría que pagó el proyecto?

Puedes aportarla como documento, pero la otra parte podrá cuestionar su alcance y su independencia, y no responde a las preguntas del litigio. Para eso lo adecuado es un dictamen pericial.

¿Se puede peritar un contrato sin código verificado?

Sí. Se trabaja sobre el bytecode desplegado y sobre las transacciones. Lleva más tiempo y el informe indica qué partes se reconstruyen por inferencia.

¿Haces auditorías?

Hago revisiones de seguridad de contratos en Solidity y Cairo, y peritajes. Si el contrato puede acabar en un procedimiento, te recomiendo que la revisión y el peritaje sean encargos separados.

¿Cuánto cuesta un peritaje de smart contracts?

Se presupuesta a medida según el tamaño del código y las preguntas del caso. Tienes la referencia de los demás servicios en precios.

Cuéntame tu caso

Consulta gratuita de 30 minutos y presupuesto gratis en 24 h laborables.

No incluyas datos sensibles. Los detalles del caso se piden después por un canal seguro.

Consulta gratis WhatsApp