Entiende rápidamente cómo verificar un contrato inteligente tanto si eres principiante como si tienes conocimientos técnicos:
Índice
Cómo verificar un contrato inteligente en la Blockchain – Explicación sencilla
Imagina que un contrato inteligente es como un robot programado para hacer cosas automáticamente cuando se cumplen ciertas condiciones. Para asegurarnos de que este robot hace exactamente lo que debe hacer y no puede ser manipulado, se siguen varios pasos.
1. Creación y Despliegue del Contrato
- Escribir las Instrucciones: Primero, alguien escribe las instrucciones (el código) que el contrato debe seguir.
- Enviar a la Blockchain: Luego, estas instrucciones se envían a la blockchain, que es un gran libro de registros público que todo el mundo puede ver.
2. Comprobación de los Mineros o Validadores
Cuando las instrucciones del contrato llegan a la blockchain, las computadoras (llamadas nodos o mineros) revisan si todo está en orden y si la persona que envía el contrato tiene suficientes recursos (llamados «gas«) para hacerlo funcionar.
3. Ejecución del Contrato
- Recibir Órdenes: Una vez que el contrato está en la blockchain, puede recibir órdenes (transacciones) de las personas para hacer cosas. Por ejemplo, podría ser un contrato que paga automáticamente a alguien cuando llega una fecha específica.
- Ejecución de Órdenes: Cada vez que el robot recibe una orden, las computadoras de la blockchain ejecutan las instrucciones del robot para asegurarse de que haga exactamente lo que se le dijo.
4. Verificación por la Comunidad
- Revisión Comunitaria: Todas las computadoras de la red ejecutan las mismas instrucciones y comparan los resultados. Si todas las computadoras obtienen el mismo resultado, significa que el robot ha hecho su trabajo correctamente.
- Aprobación y Registro: Cuando todas las computadoras están de acuerdo, registran lo que el robot hizo en el gran libro de registros público (la blockchain) para que quede constancia de ello y no se pueda cambiar.
5. Obtención de Datos: Oráculos
A veces, es necesario extraer información del mundo real para hacer su trabajo, como el precio de un producto.
Para ello se usan oráculos, que son servicios especiales que proporcionan esta información a la blockchain. Varias computadoras revisan estos datos para asegurarse de que sean correctos.
6. Monitorización Continua
Incluso después de que el contrato está funcionando, es importante supervisarlo para asegurarse de que siga haciendo su trabajo correctamente y no haya problemas.
Ejemplo de verificación de un contrato inteligente:
Imagina un contrato inteligente como una máquina expendedora mágica:
- Creación: Alguien programa la máquina para que entregue una bebida cuando se introduce una moneda.
- Revisión Inicial: Antes de ponerla en la calle, varios técnicos revisan que funcione bien y que no se pueda hackear.
- Uso: La máquina recibe monedas y entrega bebidas automáticamente.
- Verificación: Cada vez que alguien usa la máquina, varios técnicos en diferentes partes del mundo revisan que la máquina entregó la bebida correctamente y registran esta transacción en un libro de registros.
- Datos Externos: Si la máquina necesita saber el precio actual de las bebidas, consulta a varias fuentes confiables y se asegura de obtener el precio correcto.
- Supervisión Continua: Técnicos siguen revisando la máquina para asegurarse de que funcione bien y no haya problemas.
Verificación de un contrato inteligente – Explicación técnica
Verificación y Validación de un Contrato Inteligente en la Blockchain
Cuando hablamos de verificar un contrato inteligente en la blockchain, nos referimos a los mecanismos que aseguran que el contrato se ejecuta correctamente y de acuerdo con las reglas predefinidas. Este proceso de verificación y validación implica varios pasos clave:
1. Despliegue del Contrato Inteligente
- Compilación del Código Fuente: Antes de implementar un contrato inteligente en la Máquina virtual de Ethereum (EVM), los desarrolladores compilan el código fuente del contrato, que consiste en instrucciones escritas en Solidity u otro lenguaje de programación de alto nivel, en bytecode. Dado que la EVM no puede interpretar instrucciones de alto nivel, es necesario compilar el código fuente a bytecode (es decir, instrucciones de bajo nivel para la máquina) para ejecutar la lógica del contrato en la EVM.
- Transacción de Despliegue: El bytecode compilado se envía a la blockchain a través de una transacción. Esta transacción incluye el código del contrato y, opcionalmente, datos de inicialización.
- Validación por Mineros/Nodos: Los mineros (en un sistema de Prueba de Trabajo) o los validadores (en un sistema de Prueba de Participación) validan la transacción de despliegue, asegurándose de que cumple con las reglas de la red y que el emisor tiene suficientes fondos para cubrir el coste del gas.
2. Ejecución del Contrato Inteligente
- Verificación Formal: La verificación formal de los contratos inteligentes se lleva a cabo presentando la lógica y el comportamiento deseado de los contratos como enunciados matemáticos. Los auditores luego utilizan herramientas automatizadas para verificar si los enunciados son correctos.
- Recepción de Transacciones: Una vez desplegado, el contrato inteligente puede recibir transacciones de usuarios o de otros contratos. Cada transacción que interactúa con el contrato es registrada en la blockchain.
- Ejecución del Contrato: Los contratos inteligentes funcionan siguiendo la simple regla “if then” (si/cuando… entonces…), es decir, declaraciones que están escritas en código en una cadena de bloques. Una red de computadoras ejecuta las acciones cuando se han cumplido y verificado las condiciones predeterminadas. La Ethereum Virtual Machine (EVM) ejecuta el código del contrato en cada nodo que valida la transacción. La EVM asegura que la ejecución es determinista, es decir, que todos los nodos llegarán al mismo resultado dada la misma entrada.
3. Verificación de la Ejecución
- Validación de Estados: Los nodos de la red validan la ejecución del contrato inteligente verificando que el nuevo estado (estado post-transacción) es correcto. Esto implica que cada nodo de la red ejecuta el mismo código con los mismos parámetros y comprueba que el resultado es consistente en toda la red.
- Consenso: La mayoría de los nodos deben estar de acuerdo en el nuevo estado de la blockchain después de la ejecución del contrato. Este proceso de consenso asegura que no se pueden incluir estados inválidos en la blockchain.
4. Inmutabilidad y Registro
- Registro en la Blockchain: Una vez que una transacción que involucra un contrato inteligente es validada y agregada a un bloque, esa transacción y el nuevo estado resultante se registran permanentemente en la blockchain. Esto proporciona una auditoría completa y transparente de todas las interacciones con el contrato.
- Inmutabilidad: Debido a la naturaleza inmutable de la blockchain, una vez que una transacción es registrada, no puede ser alterada. Esto asegura que el historial de ejecuciones de un contrato inteligente es confiable y verificable por cualquier persona.
Oráculos
Para contratos inteligentes que necesitan datos del mundo real:
- Uso de Oráculos: Los oráculos son servicios que proporcionan datos externos a la blockchain. Cuando un contrato inteligente requiere información que no está disponible en la blockchain (por ejemplo, el precio de una criptomoneda), se consulta a un oráculo.
- Verificación de Datos: Los datos suministrados por oráculos también son validados por múltiples nodos para asegurar su precisión y evitar manipulación. Algunos sistemas utilizan oráculos descentralizados que agregan datos de múltiples fuentes para mayor fiabilidad.
Monitorización y Seguridad Continua
Incluso después del despliegue, es crucial seguir monitoreando la actividad del contrato:
- Herramientas de Monitoreo: Herramientas específicas pueden supervisar las transacciones y ejecuciones del contrato en tiempo real, alertando sobre comportamientos anómalos o posibles ataques.
- Actualizaciones: Si se detectan errores o vulnerabilidades, aunque el contrato original no puede ser modificado, se puede desplegar una nueva versión del contrato. Los usuarios y datos pueden ser migrados al nuevo contrato, manteniendo la funcionalidad y seguridad.
Diferencia entre verificación del código fuente y verificación formal del contrato
Es importante destacar que la verificación del código fuente no es lo mismo que la verificación formal:
- La verificación del código fuente se refiere a constatar que el código fuente proporcionado de un contrato inteligente en un lenguaje de alto nivel (por ejemplo, Solidity) se compila en el mismo bytecode que se va a ejecutar en la dirección del contrato.
- La verificación formal hace referencia a verificar la corrección de un contrato inteligente, lo que significa que el contrato se comporta según lo esperado.
Fuente: 26/5/2024 Verificación de contratos inteligentes | ethereum.org. https://ethereum.org/es/developers/docs/smart-contracts/verifying/.


