一文读懂 Contrato inteligente的 Verificación formal

Introducción

Con el rápido aumento del valor de los activos on-chain, los diferentes proyectos están lanzando una variedad de aplicaciones económicas encriptadas. En esta situación, es más importante que nunca prevenir posibles vulnerabilidades y amenazas.

BTC inicialmente fue diseñado para reemplazar a los bancos, pero la tecnología de Cadena de bloques ha demostrado tener la capacidad de reemplazar a todos los intermediarios. En este proceso, ha traído nuevas posibilidades de Dinero Digital, como la moneda programable, que no puede lograrse con papel moneda. Este Dinero Digital impulsa el desarrollo de la Descentralización al permitir la ejecución automática de contratos de manera transparente y sin intervención humana. Como resultado, los abogados y los contratos pueden ser reemplazados en transacciones financieras. Sin embargo, ¿cómo funciona realmente el Contrato inteligente? ¿Podemos confiar en este sistema sin confianza?

Este artículo profundizará en la Verificación formal de los contratos inteligentes, analizando sus ventajas y desventajas, así como su impacto en el ecosistema de encriptación, especialmente en la aplicación de Ethereum.

Historia del desarrollo de contratos inteligentes

Fuente: CryptoSlate

Nick Szabo, científico de la computación y criptógrafo estadounidense, a menudo se considera el propio Satoshi Nakamoto. Como fundador de contratos inteligentes, presentó por primera vez el concepto de 'contrato inteligente' en 1994. Szabo define los 'contratos inteligentes' como protocolos de transacción digital destinados a ejecutar automáticamente términos de protocolo. Su intención original era mejorar los métodos de transacción electrónica, como los sistemas POS, y ampliar su capacidad al ámbito digital.

La visión de futuro de Sabo para protocolo sería como una máquina expendedora automatizada, automatizada, confiable e inmutable. Aunque la tecnología de la época no podía lograr completamente su visión, sentó las bases para la transformación de la industria de la cadena de bloques. En 2015, el lanzamiento de Ethereum permitió la verdadera aplicación de Contrato inteligente, y la teoría de Sabo también se convirtió en una tecnología clave para la Descentralización aplicada.

Su visión es permitir que los contratos puedan gestionar las relaciones de ambas partes con términos precisos y automatizados, reduciendo la necesidad de intervención y supervisión humana. Este método proporciona una forma más segura y eficiente de gestionar protocolos, allanando el camino para el desarrollo de contratos inteligentes y haciéndolos una herramienta importante en el ecosistema de blockchain. Las ideas tempranas de Szabo siguen influyendo en el desarrollo de transacciones digitales y contratos inteligentes.

¿Qué es la Verificación formal?

Fuente: [Medium](https://medium.com)

La verificación formal es un proceso que consiste en verificar rigurosamente si un sistema (como un contrato inteligente) cumple con las reglas o especificaciones establecidas. En pocas palabras, se trata de verificar si un sistema puede funcionar según lo esperado, asegurando que cumple con las condiciones necesarias y ejecuta sus funciones previstas sin errores.

Para lograr este objetivo, esta tecnología de verificación primero describe el comportamiento esperado del sistema a través de un modelo formal, luego utiliza un lenguaje de especificación para definir las condiciones concretas que el contrato debe cumplir. A medida que avancemos en el artículo, veremos más casos prácticos. La tecnología de verificación formal contrasta la ejecución real del contrato con sus especificaciones de manera matemática para garantizar su precisión. Una vez que el contrato cumple con estas especificaciones, se considera "correcto funcionalmente" o "correctamente diseñado", lo que confirma su fiabilidad y seguridad en el entorno de la Cadena de bloques.

Tipo de especificación formal de contrato inteligente

Fuente: Ever Scale

Las especificaciones formales verifican si la ejecución del programa es correcta mediante razonamiento matemático. Estas especificaciones pueden describir el comportamiento general (alto nivel) o los detalles internos de ejecución del contrato (bajo nivel). Al definir matemáticamente el comportamiento del contrato, las especificaciones formales garantizan que el contrato funcione como se espera.

Normas de alto nivel

Las normas de alto nivel, también conocidas como normas orientadas al modelo, describen el estado de funcionamiento general de los contratos inteligentes como una máquina de estados finitos (FSM) que se mueve entre diferentes estados a través de operaciones específicas. La lógica de tiempo se utiliza a menudo para definir las reglas de transición y para describir detalladamente cómo cambia el estado del contrato con el tiempo y qué condiciones deben cumplirse.

Las regulaciones de alto nivel hacen hincapié en dos aspectos principales: seguridad y liquidez. La seguridad evita eventos inesperados, como cuando el saldo de la cuenta del remitente no es suficiente para realizar una transacción. La liquidez garantiza que el contrato pueda funcionar correctamente, manteniendo suficiente liquidez para que los usuarios puedan retirar fondos en cualquier momento. Ambos aspectos aseguran la seguridad y confiabilidad de los contratos inteligentes, protegiendo los activos y la experiencia de interacción de los usuarios.

Especificación de nivel inferior

La especificación de bajo nivel, también conocida como especificación orientada a atributos, se centra en definir si el comportamiento de un contrato es correcto mediante el análisis del proceso de ejecución interno del contrato. A diferencia de la especificación de alto nivel, que considera el contrato como una máquina de estado finito, la especificación de bajo nivel considera el contrato inteligente como un sistema de funciones matemáticas y analiza el orden de ejecución de las funciones (llamadas trayectorias), que provocan cambios en el estado del contrato.

Tecnología de verificación formal para contratos inteligentes

Fuente: Ever Scale

Detección de modelos

La verificación del modelo es un método de validación que utiliza el algoritmo para verificar si el modelo del contrato inteligente cumple con las especificaciones previstas. El contrato inteligente suele representarse como un sistema de transición de estados, y sus propiedades se definen mediante lógica temporal. Este método consiste en crear un modelo matemático y describir su comportamiento mediante fórmulas lógicas, para que el algoritmo verifique si el modelo cumple con los requisitos.

Prueba del teorema

A diferencia de la verificación de modelos, la demostración de teoremas es un método matemático utilizado para verificar la corrección de los programas (incluidos los contratos inteligentes). Este método convierte el modelo y las especificaciones del contrato en fórmulas lógicas para verificar su equivalencia lógica, es decir, si una proposición es verdadera, la otra también lo es. Al expresar esta relación como un teorema, las herramientas automáticas de demostración de teoremas pueden verificar la corrección del modelo del contrato y sus especificaciones.

A diferencia de la verificación de modelos limitada a sistemas de estado finito, la demostración de teoremas puede analizar sistemas de estado infinito, pero generalmente requiere orientación humana para resolver problemas lógicos complejos. Por lo tanto, la demostración de teoremas a menudo es más lenta y laboriosa que la verificación de modelos completamente automatizada.

Ejecución de símbolos

La ejecución simbólica es un método poderoso de análisis de contratos inteligentes que ejecuta funciones utilizando valores simbólicos en lugar de entradas específicas. Este método convierte la ruta de ejecución del contrato en una fórmula matemática (llamada predicado de ruta) y utiliza un solucionador SMT para determinar si estos predicados son verdaderos, es decir, si existen entradas que cumplan con las condiciones.

Por ejemplo, si una función de contrato retrocede cuando el valor está entre 5 y 10, la ejecución simbólica puede encontrar rápidamente el valor que desencadena esta condición evaluando la condición X > 5 y X < 10. Este método es más efectivo que las pruebas tradicionales, tiene una tasa de informes erróneos más baja y puede generar valores numéricos específicos que desencadenan errores, lo que lo convierte en una herramienta poderosa para garantizar la confiabilidad de los contratos inteligentes.

¿Qué es contrato inteligente?

Fuente: Tenderly

Contrato inteligente es un programa automatizado que se ejecuta en la cadena de bloques, que realiza automáticamente las operaciones correspondientes cuando se cumplen condiciones específicas. Pueden ir desde protocolos simples hasta programas complejos, capaces de gestionar activos de millones e incluso miles de millones de dólares.

Los contratos inteligentes no solo tienen el potencial de transformar completamente áreas como la votación política, la gestión de la cadena de suministro, la atención médica y la industria inmobiliaria, sino que este artículo se centra en su aplicación en el campo de los Activos Cripto. El diseño de los contratos inteligentes permite una colaboración más larga sin riesgo de manipulación, proporcionando un marco transparente y seguro que mejora la eficiencia y la innovación. Sin embargo, también debemos ser conscientes de que los contratos inteligentes todavía enfrentan vulnerabilidades y desafíos de seguridad.

Contrato inteligente的安全漏洞

El 安全漏洞 en el código del contrato inteligente puede llevar a consecuencias catastróficas, como la pérdida de todos los activos en el contrato. Los eventos recientes ilustran claramente este punto.

Estos ejemplos muestran que, antes de implementar los contratos inteligentes, se debe garantizar la precisión de su código. Los contratos inteligentes son de código abierto, una vez implementados, el código es público y los Hackers pueden aprovechar fácilmente las vulnerabilidades descubiertas. Además, la inmutabilidad de los contratos inteligentes determina que una vez publicado el código, las vulnerabilidades de seguridad suelen ser irremediables. Por lo tanto, si el desarrollo no es lo suficientemente preciso, siempre estarán en riesgo.

¿Cómo se realiza la verificación de los contratos inteligentes?

Fuente: Certik

Este proceso incluye los siguientes pasos:

  • Usar lenguaje formal para definir las especificaciones y funcionalidades esperadas del contrato.
  • Convertir el código del contrato en modelos matemáticos, expresiones lógicas u otras representaciones formalizadas.
  • Utilice un verificador automático de teoremas o un verificador de modelos para confirmar la especificación y las propiedades del contrato son válidas.
  • Al verificar repetidamente, se descubren y corrigen errores o desviaciones que no coinciden con las propiedades esperadas.

Características clave de los contratos inteligentes

Fuente: Certik

Se puede considerar un contrato inteligente como un "protocolo grabado en piedra", una vez creado no se puede modificar. Estos contratos se ejecutan en un libro mayor inmutable de blockchain y se ejecutan automáticamente sin intermediarios para acelerar las transacciones y soltar costos. Esta característica fija no solo mejora la seguridad, sino que también logra una gestión descentralizada, lo que reduce en gran medida el riesgo de fraude y corrupción.

¿Por qué es tan importante la verificación de los contratos inteligentes?

A través del razonamiento matemático, la Verificación formal asegura que el Contrato inteligente no tenga vulnerabilidades, errores o comportamientos inesperados. El proceso de ejecución del contrato ha aumentado rigurosamente la confianza de las personas en el contrato, ya que sus funcionalidades y propiedades han sido completamente verificadas.

El éxito de los casos de verificación de contratos inteligentes destaca su papel crucial en la prevención de pérdidas financieras significativas.

Uniswap

Por ejemplo, el famoso AMM Uniswap realizó Verificación formal durante el desarrollo de su Contrato inteligente V1, descubriendo y corrigiendo errores que podrían causar pérdida de fondos.

Equilibrador

De manera similar, otro AMM Balancer V2 descubrió un error de cálculo de tarifas relacionado con Flash Loans a través de Verificación formal, evitando así el posible riesgo de robo.

SafeMoon

SafeMoon V1, después de su implementación, se encontró un pequeño fallo mediante Verificación formal. Este fallo permite al propietario renunciar a la propiedad y recuperar el control en condiciones específicas, un detalle que la mayoría de las auditorías manuales pasaron por alto debido a su complejidad. Verificación formal analiza combinaciones específicas de valores de variables para capturar problemas que podrían haber sido omitidos durante una auditoría manual.

¿Cómo colaboran la verificación formal y la auditoría manual?

La Verificación formal es un método automatizado y sistemático para verificar si la lógica y el comportamiento del Contrato inteligente cumplen con sus funciones esperadas. Este método puede simplificar el proceso de detección y corrección de errores, especialmente en problemas complejos que podrían pasar desapercibidos en una auditoría manual.

Mientras que la auditoría manual implica una revisión exhaustiva del código, diseño e implementación del contrato por parte de expertos. Los auditores utilizan su experiencia para identificar posibles riesgos de seguridad y evaluar la seguridad general del contrato. También pueden verificar la precisión del proceso de Verificación formal y encontrar vulnerabilidades que las herramientas automáticas puedan pasar por alto. La combinación de la Verificación formal y la auditoría manual ofrece una evaluación completa de la seguridad, aumentando las posibilidades de descubrir y solucionar vulnerabilidades. Esto permite establecer una sólida línea de defensa basada en la experiencia y el análisis automatizado.

Ventajas y desventajas de los contratos inteligentes

Fuente: Blockonomi

Aunque los contratos inteligentes no son perfectos, sus ventajas superan significativamente sus desventajas. Simplifican las transacciones complejas, ahorran tiempo y costos, al tiempo que aumentan la transparencia y reducen las disputas en los flujos de trabajo. Además, los contratos inteligentes dependen de la ejecución de código, lo que también reduce los errores humanos. Su encriptación garantiza una alta seguridad. Sin embargo, los contratos inteligentes carecen de flexibilidad y pueden ser difíciles de manejar en situaciones imprevistas. Además, configurar contratos inteligentes requiere habilidades de programación especializadas, lo que puede ser un obstáculo para algunas personas. A pesar de los desafíos, los contratos inteligentes están impulsando la transformación en múltiples industrias.

Ventajas de los contratos inteligentes

  • Operaciones automatizadas para mejorar la eficiencia, ahorrar tiempo y dinero.
  • Aumentar la transparencia, reducir las disputas y permitir que todas las partes accedan a la misma información.
  • Reducir los errores, ya que dependen del código y eliminan los errores humanos.
  • A través de la tecnología de encriptación, se refuerza la seguridad y es difícil de ser manipulado.

Desventajas de los contratos inteligentes

  • Falta de flexibilidad para hacer frente a situaciones imprevistas.
  • Se requieren habilidades de programación profesionales y un amplio uso dependiente de la barrera técnica.

Herramienta de Verificación formal de contratos inteligentes en Ethereum

Fuente: Calibraint

Lenguaje para escribir especificaciones formales

  • Act: Act permite a los usuarios definir la actualización del almacenamiento, las condiciones previas, las condiciones posteriores y la inmutabilidad del contrato. Su conjunto de herramientas proporciona un backend de verificación que puede utilizar Coq, solucionadores SMT o hevm para verificar diversas propiedades.

(https://github.com/ethereum/act)[GitHub]

Documento de uso

  • Scribble: Scribble puede convertir los comentarios de código escritos en su lenguaje específico en afirmaciones de especificación de verificación.

使用文档

  • Dafny: Dafny es un lenguaje de programación diseñado especialmente para verificar diseños, que utiliza anotaciones avanzadas para ayudar en la inferencia y verificación de la corrección del código.

(https://github.com/dafny-lang/dafny)[GitHub]

Herramienta para verificar la corrección del contrato inteligente

  • Certora Prover: Certora Prover es una herramienta automatizada de Verificación formal, especialmente diseñada para verificar la corrección del código del Contrato inteligente. Utiliza el lenguaje de verificación Certora (CVL) para crear especificaciones de contrato y detectar posibles infracciones de propiedades a través de análisis estático y técnicas de resolución de restricciones.

Sitio web oficial

使用文档

  • Solidity SMTChecker: Este es el comprobador de modelos incorporado en Solidity, que utiliza la teoría de satisfacibilidad modular (SMT) y la técnica de resolución de Horn para garantizar que el código fuente del contrato cumpla con las especificaciones previamente establecidas durante la compilación, y para detectar si existen propiedades de seguridad que estén en violación.

(https://github.com/ethereum/solidity)[GitHub]

  • Solc-verify: Solc-verify es una versión mejorada del compilador Solidity, que puede lograr la verificación automatizada del código Solidity a través de comentarios y verificación formal modular.

(https://github.com/SRI-CSL/solidity)[GitHub]

  • KEVM: KEVM es una representación formal de la Máquina Virtual Ethereum (EVM) creada a través del marco K. Puede ejecutar y verificar propiedades específicas utilizando lógica de accesibilidad.

(https://github.com/runtimeverification/evm-semantics)[GitHub]

使用文档

Herramienta de marco para demostración de teoremas

  • Isabelle: Isabelle/HOL es un asistente de prueba que ayuda a los usuarios a expresar fórmulas matemáticas en lenguaje formal y proporciona herramientas para probar estas fórmulas. Se utiliza principalmente para la prueba de la corrección de hardware, software y lenguajes de programación mediante la formalización de pruebas matemáticas.

(https://github.com/isabelle-prover)[GitHub]

使用文档

  • Coq: Coq es una herramienta interactiva de demostración de teoremas que ayuda a los usuarios a definir programas y teoremas a través de un proceso interactivo, y a crear pruebas de corrección verificables por máquina.

(https://github.com/coq/coq)[GitHub]

使用文档

Herramienta de detección de vulnerabilidades basada en la ejecución simbólica

  • Manticore - Manticore es una herramienta que utiliza análisis de ejecución simbólica para analizar el código de bytes EVM y se especializa en detectar vulnerabilidades.GitHub

使用文档

  • Hevm - hevm es un motor de ejecución simbólica utilizado para verificar la equivalencia del código de bytes de EVM.

(https://github.com/dapphub/dapptools/tree/master/src/hevm)[GitHub]

  • Mythril - Mythril es una herramienta de ejecución simbólica diseñada específicamente para descubrir posibles vulnerabilidades en los contratos inteligentes de Ethereum.

(https://github.com/ConsenSys/mythril-classic)[GitHub]

使用文档

Conclusión

Para garantizar la seguridad de los contratos inteligentes, es crucial combinar la verificación formal con auditorías manuales. Esta combinación permite una evaluación completa de la seguridad del contrato. Aunque la verificación formal consume recursos, es una medida de seguridad que vale la pena invertir para contratos de alto riesgo o que involucran grandes cantidades de dinero. Los contratos inteligentes no son solo un concepto popular, ya están desempeñando un papel importante en los negocios globales. A pesar de algunos desafíos, los contratos inteligentes tienen ventajas únicas en términos de mejorar la eficiencia, reducir errores y aumentar la seguridad. Simplificarán los procesos comerciales y mejorarán la confianza en las transacciones digitales. Aquellas empresas que adoptan esta tecnología ahora tendrán una ventaja en el futuro en el entorno económico de encriptación que enfatiza la transparencia y la confiabilidad.

Ver originales
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
  • Recompensa
  • Comentar
  • Compartir
Comentar
0/400
Sin comentarios
Opere con criptomonedas en cualquier momento y lugar
qrCode
Escanee para descargar la aplicación Gate
Comunidad
Español
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)