¿Qué es un contrato inteligente o Smart Contract?

Tiempo de lectura: 8 minutos Que es Smart Contract o contrato inteligente

Un smart contract, traducido al español como contrato inteligente o contrato autónomo, es un programa o código informático cuya ejecución no requiere la intervención de un tercero de confianza. En el contexto de blockchain, es un programa que se activa automáticamente en una red distribuida cuando se cumplen ciertas condiciones en el libro mayor compartido.

Los contratos inteligentes fueron conceptualizados por Nick Szabo a partir de 1994, pero no fue hasta 2009 y Bitcoin para ver su primera implementación en un sistema viable. Estos contratos autónomos ahora se aplican ampliamente en la plataforma especializada Ethereum, lanzada en 2015 para este propósito.

Origen de los Smart Contracts (contratos inteligentes)

El concepto de contrato inteligente fue formalizado por el informático, abogado y criptógrafo estadounidense Nick Szabo. En su primer escrito público sobre el tema en 1994, lo describió como «un protocolo de transacción computarizado que ejecuta los términos de un contrato». Más tarde refinó su idea en varios escritos como Smart Contracts: Building Blocks for Digital Markets en 1996 o Formalizing and Securing Relationships on Public Networks en 1997.

El término «contrato inteligente», acuñado por el propio Szabo, es un poco confuso, porque un contrato inteligente no es realmente inteligente, ni realmente un contrato en el sentido legal, sino que es un programa que se ejecuta en condiciones simples. Szabo ha dado forma a esta expresión para la comunicación: la palabra smart en inglés se usa regularmente para presionar el lado inteligente y evolutivo de una nueva tecnología. Un teléfono multifunción se llama así un teléfono inteligente tanto en inglés como en español. Una tarjeta inteligente es una tarjeta inteligente, hablamos de ciudad inteligente para una ciudad conectada, bombas inteligentes para bombas guiadas, etc.

Aunque atrajo la atención de muchos cypherpunks en la década de 1990, el concepto de contrato inteligente no se implementó porque ninguna tecnología permitió que se aplicara de una manera lo suficientemente robusta. No fue hasta la aparición de la tecnología blockchain con la aparición de Bitcoin en 2009 que la idea se implementó realmente: aunque su capacidad para administrar contratos es limitada, de hecho es un sistema monetario programable.

La verdadera revolución llega en 2015 con el lanzamiento de Ethereum, que permite construir contratos autónomos más complejos, incluido el uso de un lenguaje de programación específico llamado Solidity. Este último permite a los desarrolladores escribir procesos avanzados en un corto período de tiempo.

Esta aparición ha permitido que aparezcan muchas otras plataformas basadas en el mismo modelo, como Tezos, Cardano, EOS, NEO o TRON. El auge de estos protocolos ha permitido renacer la idea del smart contract para automatizar y mejorar muchos procesos. Un contrato inteligente permite prescindir de un intermediario, y por tanto de un tercero de confianza para llevar a cabo determinadas cláusulas previstas en el contrato.

¿Qué es un Smart Contract?

Los contratos inteligentes, son programas informáticos que se ejecutan sin la intervención de un tercero de confianza, generalmente en una blockchain como la de Ethereum. Consisten en cláusulas, que son las condiciones que deben cumplirse para que se aplique una parte del contrato. Estas condiciones son definidas de antemano por el creador del contrato y están escritas inmutablemente en la cadena de bloques. El contrato se puede activar automáticamente cuando se cumplen ciertas condiciones en la cadena. A diferencia de un contrato tradicional, ningún tercero procederá con la ejecución del contrato, todo está automatizado.

En la cadena de bloques Ethereum, creada por Vitalik Buterin, un contrato inteligente se identifica por una dirección pública, por ejemplo, 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f. Además de administrar las transacciones de ether, esta dirección contiene código y datos, que son necesarios para el correcto funcionamiento del programa. A diferencia de una cuenta clásica que le pide a una persona que firme transacciones, un contrato reaccionará a las diferentes interacciones por sí solo, de forma autónoma.

Por ejemplo, una lotería se puede configurar a través de un contrato inteligente: una persona despliega el contrato en una dirección, y todos pueden comprar un boleto interactuando con el contrato. Se pueden implementar dos cláusulas:

  • Si, en una fecha determinada, el saldo de la cuenta excede una cierta cantidad, entonces se envía a un participante seleccionado al azar.
  • De lo contrario, los participantes son reembolsados.

Este es solo un ejemplo y las posibilidades que ofrecen los contratos autónomos son mucho más amplias que eso: representación y transferencias de activos (tokens, escrituras de propiedad, etc.), juegos de todo tipo, servicios de intercambio descentralizados, préstamos, organismos autónomos descentralizados, etc.

Tenga en cuenta de paso que los contratos inteligentes forman la base de lo que se llaman aplicaciones descentralizadas o DApps.

¿Qué lenguaje de programación se utiliza?

Cada blockchain utilizada para gestionar contratos autónomos tiene lo que se denomina una máquina virtual, que funciona simultáneamente en cada ordenador de la red e interpreta las diferentes transacciones. Por lo tanto, los contratos son interpretados de la misma manera por todos los nodos y, por lo tanto, es necesario tener un lenguaje para comunicarlos entre las diferentes máquinas.

Como se mencionó anteriormente, los primeros contratos se implementaron en la cadena de bloques de Bitcoin. Esto podría hacerse porque Bitcoin es un sistema de moneda programable en el que todas las transacciones son contratos: gracias a un lenguaje, simplemente llamado Script, una moneda de bitcoin puede ser bloqueada bajo ciertas condiciones predefinidas. Por lo general, la mayoría de los fondos están bloqueados en una dirección por un script como:

DUP HASH160 <adresse> EQUALVERIFY CHECKSIG

👉 Para obtener más información sobre el lenguaje Script, lo invitamos a leer el siguiente artículo: Script, el lenguaje de programación de contratos inteligentes de Bitcoin.

Sin embargo, la máquina virtual de Bitcoin no está completo de Turing y se limita deliberadamente a operaciones de procedimiento. Por ejemplo, es imposible hacer bucles y practicar la recursión con el lenguaje Script. Es por eso que se creó Ethereum: para construir una computadora global versátil y descentralizada que le permita ejecutar una diversidad extrema de contratos autónomos.

Por lo tanto, la máquina virtual Ethereum (EVM) ha sido diseñada para ser casi Turing-completa: es posible realizar bucles y recursiones, pero está limitada por un sistema de gas para que un contrato no pueda funcionar infinitamente y paralizar la red. Se basa en un código de bytes similar al Script de Bitcoin. Sin embargo, la mayoría de los contratos generalmente se escriben en un lenguaje de nivel superior, que se compila en código de bytes, lo que facilita enormemente la tarea del desarrollador. El más extendido es el lenguaje Solidity, un lenguaje inspirado en Javascript, creado en 2014 por iniciativa de Gavin Wood y actualizado regularmente desde entonces.

Aquí hay un ejemplo simple de un contrato escrito en Solidity (ejemplo de Ethereum Mastering). Se trata de un sistema de «faucet» (grifo en español) que da ethers (ETH) de forma gratuita a quien los solicite en el contrato:

pragma solidity ^0.4.19;

contract Faucet
{

// Fonction donnant des ETH
function withdraw(uint withdraw_amount) public
{

// Montant de retrait limité à 0.1 ETH
require(withdraw_amount <= 100000000000000000);

// Send the amount to the address that requested it
msg.sender.transfer(withdraw_amount);
}

// Le contrat accepte les paiements entrants (renflouement)
function () public payable {}

}

👉 Para obtener más información sobre el lenguaje Solidity, le recomendamos que consulte nuestra guía sobre Solidity.

Bitcoin y Ethereum no son los únicos protocolos que admiten contratos inteligentes: casi todos los sistemas de criptomonedas tienen capacidades de programación, con la excepción de algunos sistemas como Monero. Aquí hay una lista de algunas cadenas con sus respectivos idiomas:

Cadena de bloquesLenguaje de máquina (interpretado)Lenguaje de desarrollo (convertido /compilado)
BitcoinScriptMiniscripto, Policy
Bitcoin CashScript (modificado)CashScriptSpedn
EthereumEVM bytecodeSolidityVyper
TezosMichelsonLiquidityLIGOSmartPyArchetype
CardanoIELE bytecodePlutusMarlowe

¿Para qué sirven los contratos inteligentes?

Aunque todavía no se explotan en todo su potencial, los contratos autónomos son útiles para todo tipo de cosas. Los usos actuales son múltiples y diversos, pero la mayoría de las veces estarán más cerca del campo financiero.

Estos son algunos ejemplos de aplicaciones de contratos inteligentes:

  • Cuentas multifirma: permiten el establecimiento de cuentas conjuntas que requieren varias firmas para realizar transferencias.
  • Pago en garantía, permitiendo el secuestro de fondos pendientes del envío diferido de la propiedad. Este tipo de contrato es, por ejemplo, implementado por la plataforma de compra/venta peer-to-peer LocalCryptos.
  • Canales de pago, que dan a dos usuarios la oportunidad de realizar micropagos entre ellos. Es en estos canales que se basa la red Lightning.
  • La representación de activos en una blockchain por un token: esto se llama tokenización. Esto puede referirse a bienes fungibles (como monedas estables que están respaldadas por monedas fiduciarias), así como a bienes no fungibles (como, por ejemplo, bienes raíces con RealT).
  • Recaudación de fondos, que se basa principalmente en la preventa de un token digital con utilidad futura. Hablamos de Oferta Inicial de Monedas (ICO), Oferta Inicial de Intercambio (IEO) u Oferta de Token de Seguridad (STO) dependiendo del contexto y la naturaleza del token.
  • Intercambios descentralizados de criptoactivos. Esto puede referirse a criptomonedas en diferentes cadenas (a través de intercambios atómicos) o criptos en la misma cadena (Uniswap, Kyber Network, Binance DEX, etc.).
  • Préstamos descentralizados, con Maker y Compound por ejemplo.
  • El mercado predictivo con Augur.
  • Organizaciones autónomas descentralizadas, como MakerDAO o Moloch DAO.

Tenga en cuenta que la mayoría de estos ejemplos se pueden clasificar como pertenecientes a las finanzas descentralizadas.

También hay muchos otros casos de uso que aún no se han explotado por completo. Estos incluyen:

  • El notariado, permitiendo automatizar procesos como actas de nacimiento, passassions de propiedad, etc.
  • Seguro: conducir en un día despejado y en una carretera despejada daría una compensación diferente a conducir de noche en una carretera llena de baches.
  • La cadena de suministro: dependiendo de los pedidos de sus clientes, una empresa pediría automáticamente el número de piezas necesarias para la realización de este o aquel producto.

Estos ejemplos requerirían la existencia de los llamados oráculos que se asegurarían de ingresar datos del mundo real en la blockchain. Esto plantea la cuestión de la fiabilidad: ¿se puede confiar en un oráculo para su aplicación descentralizada? Hoy en día, los sistemas de oráculos existen, pero necesitan ser mejorados.

¿Cuáles son los riesgos?

Como en todo en TI, el principal riesgo con los contratos inteligentes es el riesgo de piratería.

Dado que el código se publica en la cadena, es posible que un hacker identifique sus debilidades y las explote. Esto ya ha sucedido varias veces en Ethereum, y esto por cantidades extremadamente altas: el caso más conocido es el hackeo del contrato de TheDAO el 17 de junio de 2016, que había permitido a alguien apoderarse de 3,6 millones de ethers, o más de 150 millones de dólares en ese momento. Este caso llevó a la división entre Ethereum (ETH) y Ethereum Classic (ETC): Ethereum ha optado por cancelar la transferencia para reembolsar a los inversores de TheDAO, mientras que Ethereum Classic ha preferido seguir el principio de inmutabilidad.

Así, antes de proceder al despliegue en la red, es necesario asegurarse de que todo funciona bien en el código que se ha escrito, porque es imposible (en principio) modificar o detener un contrato si no se ha programado para él. Hay formas de mitigar el riesgo de piratería, que incluyen:

  • El uso de estándares verificados y probados por la comunidad, por ejemplo, el estándar ERC-20 que se usa ampliamente para crear nuevos tokens en Ethereum.
  • El uso de auditorías con firmas especializadas.

👉 Más información: la seguridad de los contratos inteligentes en Ethereum

¿Cuál es el valor legal de los contratos inteligentes?

Un error común que cometen muchos principiantes es creer que un contrato inteligente es un contrato en el sentido legal. ¡Pero este no es el caso! Son simplemente programas informáticos que se ejecutan en sistemas distribuidos, que aplican cláusulas predefinidas, de ahí la analogía con los contratos.

Los contratos inteligentes actualmente no tienen valor legal. Si, de una manera u otra, los fondos en su contrato son desviados por un hacker, no hay recurso posible porque no se considera robo.

Sin embargo, es posible que en el futuro (y con la maduración de los diversos protocolos criptoeconómicos) los sistemas legales reconozcan la validez de la información ubicada en ciertos canales. En realidad, la idea no es adaptar las diferentes blockchains al sistema legal existente, sino basar, a largo plazo, todo el sistema legal en estas cadenas de bloques.

Además, incluso si los sistemas de gobernanza de blockchain a veces pueden reparar una falla como fue el caso del Hack de TheDAO que había sido cancelado en Ethereum, debe tenerse en cuenta que tales medidas solo pueden tener lugar cuando la seguridad de la cadena está en juego (aquí el 4.5% de los ethers robados). De esta manera, la congelación accidental de más de 500.000 ETH (150 millones de dólares) del contrato de Parity en noviembre de 2017 no fue lo suficientemente grande como para revertir el proceso.

👉 Nuestro artículo sobre el tema: Blockchain: ¿qué valor jurídico para los contratos inteligentes?

¿Cuál es tu opinión sobre este artículo?
(Votos: 0 Promedio: 0)

Últimas noticias sobre Blockchain

Sobre la autora: Fátima Ruiz

Fátima Ruiz
Deja un comentario

Este sitio web utiliza cookies propias y de terceros para recopilar información que ayude a optimizar tu visita. No se utilizarán las cookies para recoger información de carácter personal. Puedes aceptar o rechazar su uso siempre que lo desees. Encontrarás más información en nuestra política de cookies. Más información

Los ajustes de cookies en esta web están configurados para «permitir las cookies» y ofrecerte la mejor experiencia de navegación posible. Si sigues usando esta web sin cambiar tus ajustes de cookies o haces clic en «Aceptar», estarás dando tu consentimiento a esto.

Cerrar