Durante gran parte del año 2017, no se podía hacer nada para que las OCIs prometieran usar contratos inteligentes para revolucionar la forma en que realizamos transacciones y hacemos negocios. La criptosfera sigue inundada de artículos que explican la revolución de los contratos inteligentes que se avecina.
Cómo los contratos inteligentes van a desbaratar todo, desde la logística hasta los bienes raíces. Van a dejar sin trabajo a los abogados de todas partes, y van a dejar obsoletos miles de años de avances en el derecho de los contratos humanos.
Pero ahora estamos en 2019, ¿y qué nos aportan los contratos inteligentes?
Esto es un poco duro para las ICOs y CryptoKitties, que son innegablemente importantes, al menos como pruebas de concepto. Pero, ¿qué más hay? ¿Dónde están los miles de millones de dólares que se prometen a las empresas que perturban el mercado? ¿Dónde están las dApps que cambian la vida?
De todas las dApps de Ethereum escritas hasta ahora. Sólo el 10% se utilizan en un día determinado. EOS dApps tiene un poco más de éxito, pero menos del 5% tiene más de 2.000 usuarios activos diarios.
El hecho es que los contratos inteligentes son inútiles y seguirán siéndolo en un futuro previsible. No hay nada inteligente en ellos. Son programas tontos con capacidades limitadas que sólo pueden acceder a los datos almacenados en la cadena de bloques y no pueden hablar con el mundo exterior.
Los expertos en criptografía afirman que todos los contratos no son más que cadenas elegantes de sentencias IF-THEN anidadas. Por lo que obviamente pueden ser replicadas en lenguaje de máquina, no han captado la primera cosa acerca de lo que hace que los contratos sean útiles, cómo y por qué funcionan, y por qué surgen problemas y disputas.
¿Cómo hemos terminado en este callejón sin salida, y qué deberíamos estar haciendo en su lugar?
Primero, veamos cómo funcionan los contratos inteligentes, y luego explicaremos por qué no funcionan de manera significativa.
¿Cómo funcionan los contratos inteligentes?
Los contratos inteligentes son pequeños programas informáticos que cada nodo de la cadena de bloques debe ejecutar periódicamente. Los nodos no tienen control sobre las instrucciones que ejecuta un contrato inteligente y, por lo tanto, no deben confiar en que tengan acceso total a los recursos de la máquina en la que se ejecuta el nodo.
Debido a esta falta de control. Los proyectos de cadenas de bloques vienen con máquinas virtuales (VMs) que se centran en hacer que la ejecución inteligente de contratos sea segura.
La VM sirve como la caja de arena que evita que los contratos inteligentes causen estragos en el equipo host. Cada VM ejecuta un conjunto muy limitado de instrucciones, también llamadas códigos de bytes. Que comprenden cada contrato inteligente (por ejemplo, operadores aritméticos, transacciones en cadena de bloques, etc.).
Naturalmente, esto significa que la funcionalidad de los contratos inteligentes es súper-limitada en comparación con el código de máquina que se ejecuta de forma nativa.
Tampoco se puede permitir que los contratos inteligentes se ejecuten para siempre. Atando indefinidamente los recursos de su ordenador central. Los contratos inteligentes son huéspedes en la casa de otra persona y deben irse eventualmente.
Desafortunadamente, uno de los resultados más famosos de la teoría de la computación significa que es imposible saber si tu contrato inteligente promedio alguna vez dejará de funcionar. Por lo que los VMs recurren a contar el código de bytes y obligan al contrato inteligente a detenerse en algún momento.
Esta es la única manera de asegurar que los contratos inteligentes se detengan sin restringir aún más la funcionalidad. Pero hace que su uso sea extremadamente desagradable.
¿Eres propietario de un contrato inteligente? ¿Pagaste lo suficiente para implementar el contrato inteligente? ¿No? Entonces tu contrato parará a mitad de la ejecución. Incluso si tú eres cuidadoso, el precio de la gasolina fluctúa todo el tiempo. Por lo que es imposible presupuestar adecuadamente los costos de ejecutar los contratos.
El ganador del bloque
Y los problemas no se limitan a los propietarios. El ganador del bloque actualiza la cadena de bloques con los resultados de la ejecución inteligente del contrato y es compensado con recompensas de bloque y cargos por transacción.
Pero el resto de la red debe ejecutar el mismo contrato inteligente para comprobar estos resultados de ejecución sin recompensa. ¿Eres un operador de nodos que no ganó el derecho a firmar el bloque? Mala suerte, todavía tienes que desperdiciar ciclos de cálculo ejecutando el contrato inteligente. Y no, ¡no te pagarán por ello!
A menudo se argumenta que muchos o la mayoría de los contratos del mundo real pueden expresarse como colecciones de sentencias IF-THEN. Si se cumple alguna condición, entonces procese la cláusula apropiada del contrato. Si recibo 100BTC, entonces transfiera la propiedad de mi casa.
Ahora bien, si el cliente no devuelve su coche de alquiler en la fecha acordada, aplique la multa. Si entonces las declaraciones son el pan de cada día de la computadora, y la cadena de bloques nos permite ejecutar estos programas en un entorno sin confianza, entonces, ¿por qué deberíamos gastar 200 $ la hora en un abogado?
Esto puede sonar convincente, pero es un astuto juego de manos. Los abogados y notarios y los miles de años de aparato legal no son sólo un torpe sistema de procesamiento de entrada/salida. El problema de validar si se han cumplido las condiciones del mundo real y luego llegar a un acuerdo sobre esa validación es extremadamente difícil. Los contratos inteligentes no nos llevan precisamente a ninguna parte para resolverlo.
Imagínate: Decir cómo se resuelve tu contrato depende de la hora en que se ejecute. Eso parece razonable, ¿verdad? Pero las cadenas de bloqueo no tienen una fuente objetiva de tiempo. Así que tu contrato inteligente necesita acceder a un servicio externo. Al llamar al servicio de hora, la hora actual se reduce a milisegundos. Lo que se utiliza para ejecutar el contrato. Los resultados de la ejecución de este contrato se añaden a la cadena de bloques.
Pero como los resultados se añaden a la cadena de bloques. Todos los nodos deben estar de acuerdo con ellos. Esto es parte integral del mantenimiento del consenso de la cadena de bloques. Pero recuerda, cada nodo está ejecutando estos contratos independientemente en su propia VM.
Así que todos ellos están accediendo al servicio de tiempo a horas ligeramente diferentes y reciben marcas de tiempo diversas. Así que cuando llegue el momento de validar el siguiente bloque. Los resultados de la ejecución inteligente del contrato serán diferentes para cada nodo.
Y no es bueno decir que no nos importa el nivel de precisión de milisegundos. Vamos a redondear al segundo, minuto, hora, lo que sea más cercano. Con miles de nodos que acceden al mismo servicio a diferentes horas, la diferencia entre las decisiones de redondeo se reducirá inevitablemente a un milisegundo, y volverás al mismo problema.
No importa cómo se balancee. Los nodos nunca se pondrán de acuerdo entre sí y la cadena de bloques nunca llegará a un consenso.
Entra en los oráculos
Puesto que los contratos inteligentes no pueden acceder al mundo exterior. El mundo exterior debe ser llevado a los contratos inteligentes. Alguna entidad puede poner datos del mundo exterior en la cadena de bloques. Poniéndolos a disposición de todos los futuros contratos inteligentes que se ejecuten a través de la red. Estas entidades se llaman oráculos.
Pero esto no nos ayuda mucho. Los datos deben estar en la cadena antes de utilizarlos, pero ¿cómo podemos saber qué datos necesitaremos? No podemos poner todos los hechos de la vida en la cadena. Todas las cadenas de bloques modernas ya sufren de hinchazón.
Así que los oráculos se limitan a una visión muy estrecha del mundo real. Pero el problema no termina ahí. Incluso si nos ponemos de acuerdo en un puñado de fuentes de datos para tener oráculos. Esos datos evolucionarán con el tiempo. Y cada vez que lo hace, el oráculo debe añadir más datos a la cadena de bloques.
Los datos antiguos a menudo se vuelven obsoletos, pero permanecen en la cadena. Piense en el servicio de tiempo mencionado anteriormente y lo increíblemente derrochador que sería incluir marcas de tiempo en una cadena de bloques que mantiene todo el historial de transacciones.
Los oráculos deben ser pagos
Los oráculos necesitan incentivos para poner datos en la cadena de bloques, quieren que se les pague. Pero los oráculos no son como los validadores de cadenas de bloques, que reciben recompensas continuas por mantener la cadena de bloques.
Una vez que un oráculo ha puesto datos en la cadena de bloques, esos datos estarán disponibles para que cualquiera pueda acceder a ellos. El desarrollador del oráculo no tiene control sobre cuántas veces se accederá a los datos.
Lo que puede extender potencialmente ese pago único a miles o millones de invocaciones de contratos inteligentes y reducir el pago por acceso a una cantidad minúscula. Esto reduce los incentivos para que los oráculos proporcionen información verdaderamente valiosa.
Los oráculos deben ser de confianza
Se supone que los contratos inteligentes no son confiables. Pero esto sólo se aplica cuando están atados a la naturaleza no confiada del consenso de la cadena de bloqueo. Tan pronto como salen del arenero de la cadena de bloques, se introduce un elemento de confianza.
Los desarrolladores y usuarios de contratos inteligentes deben confiar en que el oráculo proporcione información verdadera y precisa. La falta de incentivos adecuados para los oráculos fomenta la proliferación de oráculos fraudulentos que proporcionan datos basura.
Un oráculo de este tipo esperaría obtener al menos un pago de alguien antes de que el desarrollador de contratos inteligente se dé cuenta de que los datos son basura y deje de usar el oráculo.
Los desarrolladores de Blockchain podrían tratar de prevenir la plaga de estafas de oráculos construyendo un sistema de reputación en su plataforma. Pero no hay nada que impida que un desarrollador de oráculos astuto se construya una reputación proporcionando algunas respuestas valiosas antes de pasar a proporcionar datos obsoletos o basura y cobrar los pagos de forma gratuita. El estigma social no se traduce en código automático.
Tampoco se puede evitar esto obteniendo respuestas de múltiples oráculos y cotejándolas o promediándolas. Confiar en múltiples oráculos para las respuestas aumenta la seguridad y disminuye la necesidad de confiar en una sola respuesta de oráculo.
Pero rápidamente se convierte en un asunto de consenso de cadena de bloques por sí mismo. Piensa en ello como el problema del consenso del oráculo. Además, el problema, aún no resuelto, de la incentivación de los oráculos ha empeorado exponencialmente.
Los oráculos deben ser incentivados para dar respuestas correctas y castigados por dar información falsa. Es necesario llegar a un consenso sobre la única respuesta verdadera entre las que ofrecen los diferentes oráculos. Y este mecanismo debe ser barato de utilizar para los desarrolladores de contratos inteligentes. De lo contrario no se utilizará.
Ninguna de estas cosas es posible sin introducir un elemento de confianza, y si estás preparado para hacer eso. Entonces ¿por qué estás jugando con cadenas de bloques? Tenemos un montón de sistemas basados en la confianza de larga data que son mucho más baratos y sencillos de usar.
Eres lo que comes
Pero quizás sus ambiciones de contratos inteligentes son menos elevadas. La cadena de bloques y los contratos inteligentes se han propuesto como una forma de agilizar la logística. Mediante el seguimiento de los envíos y el seguimiento de las materias primas y los productos a lo largo de toda la cadena de suministro.
El seguimiento automático, por ejemplo, de las naranjas desde la granja hasta nuestros fruteros parece el tipo de tedioso trabajo en el que los ordenadores son excelentes.
Sin embargo, el uso de contratos inteligentes para liberar automáticamente los pagos cuando llega un envío se topa con los mismos problemas de confianza. Todavía tenemos que confiar en un humano para asegurarnos de que las naranjas están en buenas condiciones y para introducir los datos correctos en el sistema que pondrá los datos en la cadena de bloques.
También necesitamos confiar en algún sistema externo para verificar correctamente que las naranjas llegaron. Ciertamente hay algunos beneficios de la auditoría aquí. Pero todavía está a mil millones de millas del paraíso automatizado que la gente creía durante el auge de la ICO.
Los contratos inteligentes no tienen poder
Así que esa es la parte IF de nuestras declaraciones IF-THEN. ¿Qué hay entonces? Bueno, resulta que las cosas tampoco son mejores allí. Los contratos inteligentes no tienen poder para gobernar en el mundo exterior. Sólo pueden adjudicar sobre activos digitales.
Claro, tú puede hacer un token de tu casa, venderla en la cadena y tratar de cobrar los pagos de la hipoteca a través de un contrato inteligente. Pero el contrato inteligente no será capaz de recuperar la casa en tu nombre en caso de impago.
El contrato inteligente tampoco podrá acceder al registro del gobierno para actualizar la propiedad de la casa. Así que todavía vas a necesitar abogados y notarios y gobiernos y alguaciles y todo el desordenado aparato basado en la confianza que hemos estado usando durante miles de años.
Un callejón sin salida
Y esos son sólo los problemas teóricos. Los aspectos prácticos también son una pesadilla. A pesar de que los contratos inteligentes se presentan como la simple alternativa a los contratos en papel. La gente es absolutamente terrible a la hora de escribirlos y asegurarlos. Se han perdido y robado miles de millones de dólares debido a lagunas y errores en los contratos inteligentes.
En resumen, los contratos inteligentes están tratando de resolver el problema equivocado. Están mirando IF-THEN y decidiendo que la parte importante es el guión.
Los contratos realmente inteligentes son los contratos legales que hemos estado utilizando durante siglos. No necesitamos una computadora para ejecutar estos contratos. ¡Tenemos la mejor computadora para interpretarlos justo entre nuestros oídos! Podemos usar los tribunales para adjudicar estos contratos y el poder del gobierno para hacerlos cumplir.
Pero basta de quejas. Espero haberte convencido de que los contratos inteligentes no son más que un callejón sin salida. Pero, ¿qué deberíamos hacer en su lugar?
Agentes autónomos en la cadena de bloques
Los contratos inteligentes son inútiles. Pero la cadena de bloques sigue siendo una innovación increíble. Los libros de contabilidad descentralizados facilitan la contabilidad por partida triple.
También conocida como la invención más importante de los últimos 500 años que todos se han perdido. Piensa en blockchain como el ledger maestro en el que se introducen todas las operaciones y desde el que se actualizan otros sistemas internos.
En lugar de intentar que la cadena de bloques acceda al mundo exterior, concentrémonos en hacer lo contrario. Las capacidades de los contratos inteligentes palidecen en comparación con las aplicaciones que pueden acceder directamente a la cadena de bloques.
El libro mayor distribuido y el consenso son grandes mecanismos para implementar aplicaciones web, móviles y de otro tipo. Como las que hemos estado escribiendo e implementando desde hace años.
Nos hemos vuelto muy buenos en la construcción de aplicaciones informáticas utilizando toda la potencia del hardware que tenemos a nuestra disposición. El eslabón perdido es cómo permitir que las aplicaciones se comuniquen de forma privada y segura de manera tal que todas las partes puedan confiar. Todo ello sin tener que pagar a alguna autoridad centralizada para gestionar (y sin duda espiar) los procedimientos.
Lo que realmente necesitamos es un bus de mensajes descentralizados que estas aplicaciones puedan utilizar para comunicarse.