El smart contract no es nuevo 

Si está remotamente interesado en el ecosistema de la blockchain, probablemente ya haya oído hablar del "contrato inteligente". Una tecnología bastante opaca y confusa al principio, pero terriblemente eficaz una vez que se comprende su potencial. Sin embargo, estos contratos tienen importantes limitaciones para su adopción masiva tanto en el ámbito comercial como en el de consumo. Veamos un contrato como ningún otro.

Este concepto fue introducido en 1996 por Nick Szabo, informático, abogado y criptógrafo estadounidense, que quería reducir el nivel de riesgo entre las partes contratantes. Escribe en su artículoFormalizing and Securing Relationships on Public Networks” :

"Los contratos inteligentes reducen los costes de transacción mentales y computacionales impuestos por los mandantes, los terceros o sus herramientas. Las fases contractuales de búsqueda, negociación, compromiso, ejecución y decisión constituyen el ámbito de los contratos inteligentes. Este artículo cubre todas las fases, en particular el rendimiento. Los contratos inteligentes combinan protocolos e interfaces de usuario para facilitar todas las etapas del proceso de contratación. Esto proporciona nuevas formas de formalizar las relaciones que son mucho más funcionales que sus ancestros inanimados escritos en papel".

La idea principal del contrato inteligente es poder registrar contratos directamente en lenguaje informático. Estos no serían ejecutados por individuos (terceros de confianza), sino que se activarían automáticamente cuando se cumplan las condiciones. Hasta ahora, nada nuevo. En la actualidad, los terminales de pago pueden considerarse contratos inteligentes.

La tarjeta bancaria y el cajero automático son una especie de contrato inteligente

Tomemos el ejemplo del cajero automático. Cuando elige la cantidad a retirar del cajero, por ejemplo 50 euros, e introduce su tarjeta de crédito, los algoritmos informáticos detectarán (automáticamente) su cuenta bancaria en función de la tarjeta introducida, y entonces recibirá (si está autorizado) los fondos a través de la ranura situada en la parte inferior del cajero.

Usted podría decirme "¡Pero al fin y al cabo el smart contract no es nada nuevo!" Sí, pero en el caso de nuestro cajero, el tercero de confianza es el banco (un organismo de control centralizado) mientras que con la aparición de la blockchain y su conjunto de ordenadores conectados, el tercero de confianza se traslada del banco a la red descentralizada, es decir, a todos los ordenadores que la componen. Aunque el contrato inteligente no es conceptualmente nuevo, el validador de transacciones es tecnológicamente inédito. La siguiente sección será un poco técnica pero necesaria para cubrir todos los aspectos de los contratos inteligentes. Que no cunda el pánico, he inventado algunos casos de uso a continuación.

Contratos inmutables respaldados por código informático

Los contratos inteligentes son esencialmente acuerdos automatizados y autoejecutables cuyos términos entre el creador del contrato y el destinatario están escritos en líneas de código en la blockchain, lo que los hace inmutables e irreversibles. Podemos pensar en el contrato inteligente como la versión digital de un contrato estándar en papel. Sólo que esta vez, la aplicación y ejecución del contrato no requiere la intervención humana, sino la de la cadena de bloques. Estos contratos han sido ampliamente popularizados por Ethereum, la segunda blockchain más popular del mundo por detrás de Bitcoin. 

Escribir un contrato en la blockchain permite que se replique en muchos ordenadores que componen la red, lo que garantiza que los términos del contrato se faciliten y se ejecuten de forma transparente y segura. Además, una red descentralizada le permite ser resistente a las averías y a los posibles ataques de los hackers, ya que la blockchain no tiene un único punto central. Como estamos empezando a entender en esta saga, una entidad centralizada (un banco, una empresa, una organización) está más expuesta al hackeo de datos en comparación con una red global descentralizada, porque en este caso no habría que hackear una sola base de datos sino todas las bases de datos de la mitad de los ordenadores de la red. Habría que generar una cantidad colosal de energía, lo que por el momento tiene el efecto de desanimar a cualquier hacker. Con casi 15.000 validadores en la red de Bitcoin, el hackeo parece extremadamente complicado, si no imposible, y la historia demuestra que Bitcoin ha demostrado ser irrompible desde su creación en 2008. 

Bitcoin

Número de nodos validadores en la red Bitcoin
Fuente: Bitnodes

Volvamos a nuestros contratos inteligentes. Los "smart contracts" suelen utilizarse para automatizar la ejecución de un acuerdo, de modo que todas las partes puedan estar seguras de que las reglas se cumplen sin necesidad de intermediarios humanos. Cada parte se compromete a cumplir con las obligaciones legales acordadas en el acuerdo escrito una vez firmado el contrato. Los eventos que son sencillos de automatizar, como la activación de un pago o el registro de un envío de paquetes, pueden ser objeto de un smart contract

El funcionamiento de un contrato inteligente:

Smart contract

Cómo funciona el contrato inteligente
Fuente: ihodl.com

 

Veamos con más detalle esta infografía.

Cómo funciona un contrato inteligente

Para entender cómo funciona un contrato inteligente, considere el contrato con la siguiente declaración: "Si se produce el evento X, ENTONCES se producirá el evento Y". En otras palabras, si se cumplen las condiciones, se puede cumplir el acuerdo entre las partes. Tomaremos varios ejemplos para que quede claro:

El mercado tailandés de la berenjena con un smart contract

  • Un supermercado pide al agricultor en cuestión que le entregue 1000 berenjenas.
  • Se lleva a cabo una negociación formal entre el productor y el supermercado para determinar el precio de venta. 
  • Una vez determinado el precio, las dos partes determinan las siguientes condiciones en un contrato inteligente:
  1. Fecha de entrega: 02/02/2022
  2. Cantidad: 1000
  3. Precio de venta por unidad: 0,50 dólares
  4. Factura: 500 dólares

Vamos a poner un ejemplo sencillo, pero podríamos imaginar condiciones adicionales como descuentos en el precio de venta si la entrega no se cumple a tiempo o la cancelación del pedido si la calidad no está a la altura. Continuemos.

El supermercado deposita la suma asociada: $1000 dentro del contrato inteligente y se liberará SI y solo SI se cumplen las condiciones (mencionadas anteriormente). Una vez que las berenjenas hayan sido depositadas y comprobadas por el supermercado, los fondos se entregarán inmediatamente al productor.

En términos un poco más técnicos, la idea de un contrato inteligente se puede desglosar en algunos pasos. En primer lugar, un contrato inteligente requiere un acuerdo entre dos o más partes. Una vez establecido, ambos pueden acordar las condiciones en las que el contrato inteligente se considerará completo. La decisión se escribiría en el contrato inteligente, que luego se encripta y se almacena en la red blockchain.
 
Una vez completado el contrato, la transacción se registra en la cadena de bloques como cualquier otra transacción. Entonces, todos los nodos (ordenadores conectados a la red) actualizarán su copia de la cadena de bloques con esta transacción, actualizando el nuevo "estado" de la red.
 
A partir de este ejemplo, veamos otros dos posibles casos de uso concretos:
La compra una casa en el fondo de Salamanca

Digamos que Tommy quiere comprar la casa de vacaciones de Etienne en Salamanca. Este acuerdo se forma en la blockchain de Ethereum mediante un contrato inteligente. Este contrato inteligente contiene un acuerdo entre las partes contratantes.

En términos más sencillos, el acuerdo será así: "CUANDO Tommy pague a Etienne 200 éteres, ENTONCES Tommy se convertirá en el propietario de la casa". Una vez que se ha establecido este acuerdo de contrato inteligente, no se puede cambiar, lo que significa que Tommy puede sentirse seguro al pagar a Etienne 200 Ether por la casa.

Sin el uso de un contrato inteligente en este escenario, Tommy y Etienne tendrían que pagar numerosas tasas a terceras empresas. Incluyendo el banco, un abogado y un agente inmobiliario. Como pequeño inciso conceptual, es obvio que hay una noción de confianza implicada, tanto entre los dos individuos como en la red que alberga el propio contrato inteligente, pero volveremos a ello un poco más abajo.

Seguro de vuelo Montreal - Madrid
 
Tommy extrañaba su casa en Andalucía. Está a punto de volar de Montreal a Madrid . Para ello, envía 5 dólares de criptodivisas al contrato inteligente de una compañía de seguros, imaginemos que Mapfre, y les proporciona su número de vuelo. Sí, porque Tommy prefiere contratar un seguro en caso de que su vuelo se retrase o se cancele. Por otro lado, Mapfre envía 95 dólares al contrato inteligente. Así que hay 100 dólares en el contrato inteligente.
 
Si el vuelo de Tommy llega a tiempo, la Mapfre recibe 100 dólares del contrato inteligente (Tommy habrá perdido 5 dólares para cubrir el riesgo de retraso/cancelación). Pero si el avión se retrasa, se envían 100 dólares a Tommy automáticamente desde el contrato inteligente.
Smart contract: no todo es de color de rosa...

Un reto importante en la adopción generalizada de los contratos inteligentes es que lo más probable es que las partes tengan que depender de un experto técnico de confianza para registrar el acuerdo de las partes en código o para confirmar que el código escrito por un tercero (un programador) es válido. Una persona que no sea programadora sería completamente incapaz de entender el contrato inteligente más tradicional y, por tanto, es mucho más probable que confíe en un experto para que le explique lo que "dice" el contrato. 
 
Para matizar, hasta cierto punto, la incapacidad de las partes contratantes para entender el código de los contratos inteligentes no será un obstáculo para celebrar acuerdos de código. De hecho, para muchas funciones básicas, se pueden crear plantillas de texto y utilizarlas para indicar qué parámetros deben introducirse y cómo se ejecutarán esos parámetros.
 
Por ejemplo, supongamos una función simple de contrato inteligente que extrae una tasa de retraso de la cartera de una contraparte si un pago definido no se recibe en una fecha determinada. La plantilla de texto podría pedir a las partes que introduzcan el importe del pago previsto, la fecha de vencimiento y el importe de la multa por retraso. Sin embargo, es posible que una parte desee confirmar que el código subyacente realizará realmente las funciones especificadas en el texto, y que no hay condiciones o parámetros adicionales, especialmente cuando la plantilla renuncia a cualquier responsabilidad por la exactitud del código subyacente. Esta revisión requerirá un tercero de confianza con experiencia en programación. Por último, la extinción de los terceros de confianza no parece tan obvia ni fácil de aplicar.
 
Además, las partes también pueden querer declaraciones escritas del programador de que el código funciona según lo previsto. El resultado neto es que para los acuerdos personalizados que no se basan en un modelo existente, las partes pueden tener que celebrar un acuerdo por escrito con el programador de contratos inteligentes, de forma muy similar al contrato que las partes pueden celebrar con un proveedor de servicios.
Dependencias de los datos "fuera de la cadena"
 
Muchos casos de uso propuestos por los contratos inteligentes suponen que el contrato inteligente recibirá información o parámetros de recursos que no están en la propia cadena de bloques ("on-chain"), llamados recursos "off-chain". Por ejemplo, supongamos que un contrato de seguro inteligente está programado para transferir valor a un asegurado si la temperatura cae por debajo de 0 grados en cualquier momento. El contrato inteligente tendrá que recibir estos datos de temperatura de una fuente acordada. Esto plantea dos problemas. 
 
En primer lugar, los contratos inteligentes no tienen la capacidad de extraer datos de recursos fuera de la cadena. En cambio, esta información debe ser "empujada" al contrato inteligente.
 
En segundo lugar, si los datos en cuestión están en flujo constante y el código se replica en múltiples nodos de la red, diferentes nodos pueden recibir información diferente incluso con segundos de diferencia. En nuestro ejemplo, el nodo 1 (validador en la red) puede recibir información de que la temperatura es de -0,1 grados, mientras que el nodo 2 puede recibir información de que la temperatura es realmente de 0 grados. Dado que se requiere el consenso entre los nodos para que una transacción sea validada, estas fluctuaciones pueden hacer que la condición se considere "no cumplida" o, al menos, retrasada.
 
Las partes contratantes pueden resolver este problema utilizando un "oráculo". Los oráculos son terceros de confianza que recuperan información fuera de la cadena y la transmiten a la cadena de bloques en momentos predeterminados. En el ejemplo anterior, el oráculo monitorizaría la temperatura diaria, determinaría que se ha producido el evento de congelación y luego transmitiría esta información al contrato inteligente.

bitcoin
Ejemplo del oráculo Chainlink
Fuente: Chainlink.com

Aunque los oráculos presentan una solución elegante para acceder a los recursos fuera de la cadena, este proceso añade otra parte con la que los contratistas tendrían que contratar para realizar un contrato inteligente, lo que de nuevo diluye un poco los beneficios descentralizados de los contratos inteligentes. También introduce un potencial "punto de fallo". Por ejemplo, un oráculo puede encontrar un fallo en el sistema y ser incapaz de proporcionar la información necesaria, proporcionar datos erróneos o simplemente dejar de funcionar. Los contratos inteligentes tendrán que tener en cuenta estas eventualidades. 
Contratos inteligentes: los retos del futuro
 
Uno de los atributos clave de los contratos inteligentes es su capacidad para ejecutar transacciones de forma automática y continua sin intervención humana. Sin embargo, esta automatización y el hecho de que los contratos inteligentes no puedan modificarse o rescindirse fácilmente, a menos que las partes incorporen estas capacidades al crear el contrato inteligente, presentan algunos de los mayores retos a los que se enfrenta la adopción generalizada de los contratos inteligentes.
 
Por ejemplo, con los contratos tradicionales basados en textos, una parte puede excusar fácilmente un incumplimiento simplemente no aplicando las sanciones disponibles. Si un cliente se retrasa un mes, el vendedor puede decidir en tiempo real que preservar la relación comercial a largo plazo es más importante que cualquier derecho de rescisión o penalización por retraso. Sin embargo, si esta relación se hubiera reducido a un contrato inteligente, un retraso en el pago habría dado lugar a la extracción automática de una penalización por retraso en la cuenta del cliente o a la suspensión del acceso del cliente a un software o a un dispositivo conectado a Internet, si así se hubiera programado el contrato inteligente. Por lo tanto, la aplicación automatizada que proporcionan los contratos inteligentes puede no coincidir con la forma en que muchas empresas operan en el mundo real.
 
De hecho, dado que las cadenas de bloques son inmutables, cambiar un contrato inteligente es mucho más complicado que cambiar un código de software estándar que no reside en una cadena de bloques. El resultado es que la modificación de un contrato inteligente puede implicar mayores costes de transacción que la modificación de un contrato basado en texto.

¿Transacción compleja = contrato híbrido? 

En la actualidad, es de esperar que para los contratos complejos se prefiera un contrato híbrido que utilice texto y código. El texto debe especificar claramente el código del contrato inteligente con el que se asocia, y las partes deben tener plena visibilidad de qué variables se pasan al contrato inteligente, cómo se definen y qué eventos desencadenarán la ejecución del código.

En definitiva, entendemos que en el caso de un contrato inteligente, en una transacción compleja al menos, es difícilmente imaginable un mundo sin terceros de confianza. Se pueden prever pequeñas operaciones transaccionales, pero en el contexto de las relaciones complejas, la necesidad de terceros de confianza parece inevitable, sobre todo para los no iniciados en la programación. 

Para ello, y al pensar en los contratos inteligentes, es importante no limitarse a pensar en cómo se pueden portar los conceptos y estructuras existentes a esta nueva tecnología. Más bien, la verdadera revolución de los contratos inteligentes vendrá de paradigmas totalmente nuevos que aún no hemos considerado. 

Obsérvese que la confianza en un contrato es en realidad la confianza en un sistema que rodea y garantiza el contrato: la ley, los representantes de la ley y, más generalmente, el Estado. En la actualidad, estas son las entidades en las que nos apoyamos para garantizar la seguridad de los contratos. El paso de esta confianza a un protocolo descentralizado poblado por mineros suena a utopía digital lejana, a vudú. ¿Pero por cuánto tiempo? Nos vemos pronto con un nuevo episodio de la saga que desvelará una nueva faceta de la Web 3.0.

Episodios anteriores :