Saltar al contenido principal
Change page

Introducción a los contratos inteligentes

¿Qué es un contrato inteligente?

Un "contrato inteligente" es simplemente un programa que se ejecuta en la cadena de bloques de Ethereum. Es una colección de código (sus funciones) y datos (su estado) que reside en una dirección específica en la cadena de bloques de Ethereum.

Los contratos inteligentes son un tipo de cuenta de Ethereum. Esto significa que tienen un saldo y pueden ser el destino de transacciones. Sin embargo, no están controlados por un usuario, sino que se despliegan en la red y se ejecutan según lo programado. Las cuentas de usuario pueden interactuar con un contrato inteligente enviando transacciones que ejecutan una función definida en el contrato inteligente. Los contratos inteligentes pueden definir reglas, como un contrato normal, y aplicarlas automáticamente a través del código. Los contratos inteligentes no se pueden eliminar por defecto, y las interacciones con ellos son irreversibles.

Requisitos previos

Si recién estás comenzando o buscas una introducción menos técnica, te recomendamos nuestra introducción a los contratos inteligentes.

Asegúrate de haber leído sobre las cuentas, las transacciones y la máquina virtual de Ethereum antes de adentrarte en el mundo de los contratos inteligentes.

Una máquina expendedora digital

Quizás la mejor metáfora para un contrato inteligente sea una máquina expendedora, tal como la describe Nick Szabo (opens in a new tab). Con las entradas correctas, se garantiza un resultado determinado.

Para obtener un bocadillo de una máquina expendedora:

dinero + selección de bocadillo = bocadillo dispensado

Esta lógica está programada en la máquina expendedora.

Un contrato inteligente, al igual que una máquina expendedora, tiene lógica programada en él. Aquí hay un ejemplo simple de cómo se vería esta máquina expendedora si fuera un contrato inteligente escrito en Solidity:

Al igual que una máquina expendedora elimina la necesidad de un empleado vendedor, los contratos inteligentes pueden reemplazar a los intermediarios en muchas industrias.

Sin permisos

Cualquiera puede escribir un contrato inteligente y desplegarlo en la red. Solo necesitas aprender a programar en un lenguaje de contratos inteligentes y tener suficiente ETH para desplegar tu contrato. Desplegar un contrato inteligente es técnicamente una transacción, por lo que debes pagar gas de la misma manera que necesitas pagar gas por una simple transferencia de ETH. Sin embargo, los costos de gas para el despliegue de contratos son mucho más altos.

Ethereum tiene lenguajes amigables para los desarrolladores para escribir contratos inteligentes:

  • Solidity
  • Vyper

Más sobre lenguajes

Sin embargo, deben compilarse antes de poder desplegarse para que la máquina virtual de Ethereum pueda interpretar y almacenar el contrato. Más sobre la compilación

Composabilidad

Los contratos inteligentes son públicos en Ethereum y pueden considerarse como API abiertas. Esto significa que puedes llamar a otros contratos inteligentes en tu propio contrato inteligente para ampliar enormemente lo que es posible. Los contratos incluso pueden desplegar otros contratos.

Aprende más sobre la composabilidad de los contratos inteligentes.

Limitaciones

Los contratos inteligentes por sí solos no pueden obtener información sobre eventos del "mundo real" porque no pueden recuperar datos de fuentes fuera de la cadena. Esto significa que no pueden responder a eventos en el mundo real. Esto es por diseño. Depender de información externa podría poner en peligro el consenso, lo cual es importante para la seguridad y la descentralización.

Sin embargo, es importante que las aplicaciones de la cadena de bloques puedan usar datos fuera de la cadena. La solución son los oráculos, que son herramientas que ingieren datos fuera de la cadena y los ponen a disposición de los contratos inteligentes.

Otra limitación de los contratos inteligentes es el tamaño máximo del contrato. Un contrato inteligente puede tener un máximo de 24 KB o se quedará sin gas. Esto se puede eludir utilizando el patrón diamante (opens in a new tab).

Contratos multifirma

Los contratos multifirma (de firmas múltiples) son cuentas de contratos inteligentes que requieren múltiples firmas válidas para ejecutar una transacción. Esto es muy útil para evitar puntos únicos de falla en contratos que contienen cantidades sustanciales de ether u otros tokens. Las multifirmas también dividen la responsabilidad de la ejecución del contrato y la gestión de claves entre múltiples partes y evitan que la pérdida de una sola clave privada provoque la pérdida irreversible de fondos. Por estas razones, los contratos multifirma se pueden utilizar para la gobernanza simple de una DAO. Las multifirmas requieren N firmas de M firmas aceptables posibles (donde N ≤ M, y M > 1) para poder ejecutarse. N = 3, M = 5 y N = 4, M = 7 se utilizan comúnmente. Una multifirma 4/7 requiere cuatro de siete firmas válidas posibles. Esto significa que los fondos aún se pueden recuperar incluso si se pierden tres firmas. En este caso, también significa que la mayoría de los titulares de claves deben estar de acuerdo y firmar para que el contrato se ejecute.

Recursos sobre contratos inteligentes

Contratos de OpenZeppelin - Biblioteca para el desarrollo seguro de contratos inteligentes.

Lecturas adicionales

Tutoriales: Firmas de contratos inteligentes (EIP-1271) en Ethereum