Cómo crear un smart contract mediante términos y condiciones

Smart Contracts: teoría, práctica y cuestiones legales

Los smart contracts o contratos inteligentes son quizá uno de los términos más de moda en las nuevas vertientes tecnológicas de sectores tan diversos como Legaltech, del que ya hablamos largo y tendido, Fintech (proyectos relacionados con la “nueva” industria financiera) o Insurtech (proyectos relacionados con el “nuevo” sector de los seguros).

Pero, ¿por qué la tendencia de los smart contracts es capaz de unir a sectores tan diversos? A mi parecer, por verlo como el instrumento legal que si llega a convertirse en algo común, puede seriamente alterar el día a día de las transacciones comerciales. Es decir, dado que el contrato inteligente consiste en software, muchas de las ventajas asociadas al mismo como son su rapidez, predecibilidad y automatización, podrían acabar llegando a estas áreas a gran escala.

Ahora bien, si los contratos inteligentes son el elemento legal que une a industrias tan variadas, el elemento tecnológico que permite los actuales smart contracts, y une a todavía más sectores, sería blockchain o la cadena de bloques. Es decir, la tecnología bajo la que funcionan monedas como bitcoin o ether. De hecho, en algunos ámbitos se está empezando a considerar a blockchain como uno de los desarrollos más revolucionarios de Internet.

En resumen, de esta algo críptica introducción, debemos quedarnos con 2 términos alrededor de los cuales hablaremos en este largo post y sus bloques teórico, práctico y legal. Para ello veremos la mucha teoría relacionada con los contratos inteligentes, cómo hacer uno (incluso mortales como nosotros :p) y finalmente los aspectos legales más a destacar. No va a ser un viaje breve, y aunque he intentado simplificarlo al máximo (eliminando incluso términos importantes para facilitar la comprensión de lo básico), tampoco será sencillo. Pero vamos allá.

Comencemos con lo dicho, pues. Dos términos son los que nos interesa memorizar y alrededor de los que gira toda esta historia. Hablamos de Smart Contract y Blockchain.

Contratos Inteligente vs Contrato normal
“A gentle introduction to smart contracts”, por Marcus Swanepoel

1.- Vayamos al origen, ¿qué es un smart contract?

Un smart contract o contrato inteligente se refiere al uso de código informático para articular, verificar y ejecutar un acuerdo entre las partes. Mientras que un contrato habitual está redactado mediante lenguaje natural, los términos de un contrato inteligente se expresan en código informático, como si de un script se tratara. De ahí que digamos que es software.

El smart contract es luego ejecutado por un ordenador, de acuerdo a los términos e inputs establecidos en el mismo. De esa forma, el contrato inteligente hace cumplir sus propios términos. Eso significa que un contrato inteligente estará habitualmente lleno de instrucciones y condiciones propias del código informático. Esas instrucciones seguirán el patrón típico de: “Si esto ocurre, haz eso. Pero si no ocurre, haz esto otro”.

Luego, una vez iniciada la ejecución del contrato, las partes dejan de tener control sobre su cumplimiento (pero más sobre esto en el tercer bloque).

Por tanto, un contrato inteligente es un programa informático con instrucciones condicionales que uno (o múltiples) ordenadores verifican y ejecutan para asegurar su fiabilidad.

Suena novedoso y futurista, ¿verdad? Sin embargo, y como en tantas otras ocasiones, el smart contract no es un concepto nuevo.

El término en sí fue acuñado por el jurista y criptógrafo húngaro Nick Szabo a principios de los años 90. Si bien ya había hablado de ellos antes (en 1996 en Smart Contracts: Building Blocks for Digital Markets y no mucho más tarde en Formalizing and Securing Relationships on Public Networks), para muchos es un breve paper escrito en 1997, y denominado The Idea of Smart Contracts, el que da comienzo a todo.

Allí Szabo comienza hablando sobre cómo la formalización de nuestras relaciones mediante contratos proporciona el marco adecuado para un nivel de seguridad ideal.

Para Szabo la máquina expendedora de refrescos es seguramente el contrato inteligente original: un dispositivo diseñado para trasmitir la propiedad de un bien (el refresco) a cambio del input adecuado (las monedas). Como la máquina controla el bien, al estar asegurado en su interior, es capaz de hacer cumplir los términos del contrato.

Sin embargo, Szabo argumenta que su idea de smart contract va más allá de la máquina de refrescos. Para él sería posible incrustar un contrato en cualquier objeto de valor que sea controlado por medios digitales. “Propiedad inteligente” la llega a denominar en su glosario. En cualquier caso, el punto de partida es siempre un sistema de seguridad maduro para el bien/servicio a proteger. Luego, el continuo refinamiento de ese sistema de seguridad lo acabará aproximando a la lógica propia de los contratos (menciona un ejemplo muy bueno sobre vehículos). Y en ese refinamiento basado en la seguridad criptográfica del bien a proteger, es donde nace el contrato inteligente.

Nick Szabo
“Nick Szabo: Block Size Increase a ‘Huge Security Risk’ “, por The Cointelegraph
1.1.- Por tanto, ¿qué podría hacer alguien con un smart contract?

Ahora ya sabemos que hoy en día un contrato inteligente es un contrato que se auto-ejecuta de acuerdo a lo que las partes han establecido en su código. Que sus términos están escritos en un lenguaje que puede ser interpretado y ejecutado por un ordenador. Y que ese ordenador adopta la figura de algo así como un administrador y ejecutor del contrato.

¿Qué podríamos hacer de acuerdo a esa definición? Pues el cielo es el límite, a decir verdad. En teoría, podría programarse:

1) Poner en marcha una opción de compra de acciones a un precio fijo durante un periodo de tiempo concreto, con el simple envío de un mensaje.

2) Se podría verificar y pagar una apuesta deportiva una vez que se comprueba automáticamente el resultado en Internet.

3) Se podría comprobar el inicio y finalización de un periodo de desistimiento en una compra online, a partir del tracking del pedido.

4) Verificar las votaciones en una encuesta sobre si Juego de Tronos es mejor que Star Wars. :p

Y así hasta el infinito.

Como puede apreciarse, una gran particularidad de los contratos inteligentes es que la necesidad de intermediarios humanos de confianza desaparece por completo. No por ser la intermediación innecesaria, sino ya que su papel lo adopta el ordenador que verifica y ejecuta el código.

Todo ello suena atractivo, en verdad. Ahora bien, si el concepto tiene casi 20 años y el potencial es tan enorme, ¿cómo es que hasta hace muy poco nadie hablaba de smart contracts?

La verdad es que hasta desarrollos muy recientes, los smart contracts han sido mayormente una hermosa teoría. Si bien hay ejemplos de contratos inteligentes entre nosotros, los sistemas de DRM o Digital Rights Management para gestionar licencias sobre contenido digital son uno de los más visibles, llevarlos a la práctica tal y como hemos comentado era misión casi imposible.

Resulta que los contratos inteligentes han estado sujetos a 3 importantes limitaciones desde su concepción:

A) Para empezar, ¿cómo podía controlar el smart contract los activos reales a efectos de hacer cumplir el acuerdo? La máquina de refrescos tiene control físico sobre el bien ya que está sellado en su interior. ¿Pero cómo podría hacer el código informático lo mismo sobre activos como el dinero o acciones?

B) El dinero en su formato digital, al igual que las reservas de los bancos, está sujeto a una estricta regulación, del mismo modo que su uso por particulares. ¿Cómo realizar pues contratos que incluyan transacciones económicas? Que además son las más habituales con diferencia.

C) Por último, ¿qué ordenador obtendría el voto de confianza suficiente como para ejecutar los términos del acuerdo? Debería ser un ordenador en el que ambas partes pudieran confiar. Es decir, las partes no solo deben estar de acuerdo en el código de los términos, sino en el ordenador que lo interpretará y lo ejecutará. Además, el ordenador debería ser verificable por las partes para evitar el engaño, manipulación o acceso no autorizado.

Esas limitaciones han hecho que durante todos estos años se haya hecho muy poquito con smart contracts. Pero, ¿y entonces?

1.2.- Entonces llegó Bitcoin (y con él, Blockchain)

bitcoin_logo

El asunto de los contratos inteligentes da un gran vuelco con la llegada de Bitcoin por allá un 3 de enero de 2009 (aunque no se apreciarán sus implicaciones hasta años después).

Simplificadamente, Bitcoin es un sistema de pago y un activo o moneda digital (ya sé que hay debate sobre si es moneda o no, pero para facilitar el tema la denominaremos así), inventado por el misterioso Satoshi Nakamoto (para los fans de las conspiraciones, hay teorías sobre que Nick Szabo es en realidad Nakamoto).

El usuario de Bitcoin dispone de un monedero personal, lo que le permite enviar y recibir bitcoins con él. Lo que hace que para la mayoría de usuarios Bitcoin sea igual a “Dinero de Internet”.

Sin embargo, lo verdaderamente interesante para los contratos inteligentes, y quizá la verdadera revolución, es la tecnología que permite la existencia de Bitcoin.

En ese sentido, Bitcoin como sistema de pago descentralizado permite transacciones que ocurren directamente entre los usuarios y sin necesidad de intermediarios. Esas transacciones las verifica la propia red de ordenadores sobre la que se mueve Bitcoin y son registradas en una base de datos llamada cadena de bloques o blockchain.

He aquí nuestro segundo gran concepto.

1.3.- ¿Qué es blockchain?
blockchain
“Blockchain and Smart Contracts”, por Mike Smolenski

Blockchain, o la cadena de bloques en su versión en castellano, es una base de datos autorizada y distribuida que permite “anotar” datos de todo tipo que no pueden ser revisados o alterados.

En su analogía más poética, blockchain es un libro que en principio tiene páginas infinitas y en el que puede escribirse casi cualquier cosa (desde una canción a un programa informático). Ahora bien, lo escrito no puede modificarse aunque sí consultarse en cualquier momento. De hecho, está accesible a todo el mundo. Y en verdad, que haya millones de ojos observando lo escrito en el libro, es lo que hace materialmente imposible que lo escrito pueda manipularse.

En plan un poco más técnico ahora.

La particularidad de esa base de datos que es blockchain es la forma en la que se mantiene y actualiza, ya que ello le otorga un alto nivel de confianza. Como blockchain no está controlado por una persona, entidad u organización, no hay nadie que tenga control final sobre la misma y su contenido.

La pregunta lógica es, ¿quién mantiene, actualiza y asegura blockchain, pues? Todos los ordenadores que forman parte de la cadena (que pueden ser unos cientos o millones).

De ese modo, cada ordenador que integra blockchain mantiene siempre una copia de todas las “anotaciones” realizadas. Cada copia se mantiene sincronizada con las restantes. En caso de discrepancia entre las copias existentes, por consenso matemático se da mayor puntuación a la versión más común. Entonces, esa copia será la compartida entre la red de ordenadores y en la que se seguirá “anotando”.

O lo que es lo mismo, para alterar con éxito una blockchain se debería atacar y modificar simultáneamente el 51% de la misma (para que así el consenso matemático diera prioridad a la base de datos más común, que en este caso sería la alterada). Sin embargo, eso es algo materialmente imposible en las blockchain sobre las que funcionan monedas como bitcoin o ether, dado su tamaño.

Por otro lado, como blockchain se constituye como una base de datos “append-only” (es decir, que solo permite escribir y recuperar datos antiguos, pero no borrar o modificar los datos), nunca puede eliminarse lo allí escrito. Además, como cada anotación en la cadena se asegura con un proceso criptográfico, la propia cadena puede así detectar y rechazar cualquier intento de distribuir una copia alterada de las transacciones registradas.

Por lo tanto, el carácter constantemente sincronizado, distribuido y autorizado de blockchain garantizan que únicamente exista 1 registro de las transacciones anotadas. Eso por ejemplo evita que una persona pueda gastar 1 mismo bitcoin en múltiples transacciones a la vez. Solventando así el llamado “Problema del Doble Gasto” en sistemas con monedas digitales.

Por si fuera poco, las blockchain sobre las que funcionan monedas como bitcoin o ether son públicas, pudiendo uno ver (con matices) todas las transacciones que se han realizado. A lo que debemos sumar que la tecnología es código abierto, lo que facilita saber qué hace o no el software en todo momento. Es decir, máxima transparencia.

Todo ello es lo que convierte a blockchain en una tecnología tan interesante, ya que proporciona un sistema para crear bases de datos cuyas anotaciones serán altamente fiables, al ser tan improbable su manipulación. Anotaciones que pueden ir del simple texto a código informático (código que puede ejecutar la propia blockchain).

Como cierre de este punto, una reciente TED Talk muy interesante sobre blockchain y su gran potencial:

1.4.- Pero, ¿cómo afecta blockchain a los contratos inteligentes?

El paciente lector que haya llegado hasta aquí (¡casi la mitad del post!), dirá: “Todo esto está muy bien y tengo el cerebro medio frito, ¿pero cómo encaja con los smart contracts?” Buena pregunta.

Ahora ya sabemos que blockchain es una tecnología. Eso significa que no hay una única cadena de bloques. De hecho, puede haber infinitas (si alguien quiere crear la suya propia, puede recurrir a servicios como Chain o Slock.it).

Usando la tecnología de blockchain pueden crearse sistemas de pagos (y sus correspondientes monedas) como Bitcoin, Ethereum o Ripple, seguramente las tres más populares. Pero no es imprescindible.

De hecho, ni tan siquiera el carácter público, auditable y 100% distribuido de blockchain es imprescindible. Es decir, el sector financiero está trabajando en blockchains privadas y semi-controladas (lo que hace que se cuestione si esos proyectos usan en realidad la cadena de bloques). Además, se trabaja en side-chains (en Bitcoin), que serían como cadenas laterales a la principal que permitirán innovar sin necesidad de empezar desde cero y pudiendo nutrirse de la cadena principal (para contratos inteligentes es probable que sean útiles).

Dicho esto, de las 3 cadenas de bloques más populares, Ethereum sea seguramente la más pensada para contratos inteligentes. Es decir, si bien la blockchain sobre la que se sostiene Bitcoin permite realizar smart contracts, el proceso allí es más complejo.

Y fue esa complejidad de la cadena de Bitcoin la que hizo que en 2013 el desarrollador y criptógrafo ruso Vitalik Buterin propusiera la creación de una cadena de bloques alternativa a Bitcoin. Una mucho más pensada para el desarrollo de aplicaciones como por ej. los contratos inteligentes. Nace así Ethereum y la actual fiebre por los smart contracts.

Pero volviendo al nexo entre smart contracts y blockchain, hemos comentado que el concepto de smart contract tiene casi dos décadas y que aún así se ha utilizado escasamente debido a tres grandes limitaciones: 1) la dificultad del código informático para afectar a activos reales; 2) la estricta regulación en cuanto al movimiento de activos como el dinero y 3) la dificultad de encontrar un ordenador en el que confiar al ejecutar el contrato inteligente.

Pues bien, blockchain como tecnología resuelve por completo o en buena parte esas tres limitaciones. Ethereum, llamada por algunos como la blockchain 2.0, lo hace todavía un poco más fácil. ¿Pero cómo solventa blockchain esas limitaciones?

En cuanto al primer límite, blockchain permite la existencia de activos completamente digitales como dinero, acciones, bonos, registros y demás que puedan ser controlados por el código informático del contrato inteligente. La cadena de bloques no controla el activo propiamente, pero sí la clave criptográfica que puede asociarse al mismo. Y como esa clave no podrá alterarse, sabemos que ese bitcoin es ése y no otro. Además, la tremenda digitalización de la economía y la sociedad, junto a la llegada del Internet de las Cosas (que permite conectar a Internet hasta la mesa en la que comemos), elimina el problema incluso en relación a los objetos físicos.

En relación a la segunda limitación, obviamente la estricta regulación sobre el uso del dinero sigue existiendo. Pero blockchain ha generado la creación de nuevos sistemas de pago y monedas que en la práctica están operando al margen de cualquier regulación presente. Por tanto, al crear una carretera alternativa, se ha reducido muy considerablemente la influencia de esa regulación.

Por último, la tercera limitación también es solventada por completo gracias a la cadena de bloques. El ordenador sobre el que ejecutar el código del smart contract es la propia blockchain. Es decir, no 1 ordenador especial que puede ser hackeado, sino los cientos de miles de ordenadores sincronizados que garantizan que el contrato no podrá ser modificado y que se ejecutará cómo se le ha indicado. El consenso matemático se convierte en confianza matemática que no requiere a terceros intermediarios humanos ni a ordenadores de poco fiar.

El código (informático) se convierte en más ley que nunca.

Como curiosidad, ¿hay proyectos que ya usan blockchain en el ámbito legal? Por mencionar unos pocos: 1) Blockai y su registro de propiedad intelectual para fotógrafos/dibujantes; 2) Ujo para que los músicos puedan cobrar directamente de sus fans y resolver a la vez el tema licencias mediante contratos inteligentes; 3) NevTrace y su registro de refugiados para crisis migratorias o 4) Suecia y sus pruebas para un registro de la propiedad sobre blockchain.

Por tanto, combinar smarts contracts y blockchain es lo que puede convertir a uno en el instrumento legal del futuro, y al otro en la tecnología que puede obligar a rehacer muchos de los esquemas conocidos.

2.- ¿Qué tal si pasamos a la práctica?

Servicio para crear smart contracts
SmartContract”, potente servicio para crear contratos inteligentes mediante interfaz gráfica y sin necesidad de programar

Presentada la extensa teoría, lo interesante sería ponerse manos a la obra.

Ahora bien, si los contratos inteligentes son software, ¿hace falta saber programar para crearlos? No, pero definitivamente puede ayudar. Especialmente ahora, que todo está muy verde. Además, si uno sabe programar sus propios contratos, el nivel de control será máximo. Aunque esto puede generar problemas que luego comentaremos en el tercer bloque.

Por tanto, ¿por dónde comenzar?

Tal y como se explica en A Lawyer’s Introduction to Smart Contracts, el contrato inteligente es simplemente un componente dentro del sistema. Por tanto, el smart contract sería el componente final de la infraestructura que permite crearlos y operarlos. El módulo de esa infraestructura que permite su creación sería la Plataforma de Smart Contracts (en adelante SCP). Por otro lado, luego disponemos de un componente que puede añadirse sobre el SCP y facilitarnos mucho la vida, sería el Sistema de Gestión de Smart Contracts (en adelante SCMS).

Es decir, la plataforma de smart contracts o SCP serían por ejemplo la blockchain de Bitcoin o Ethereum. Así como cualquier otra blockchain que permita interpretar, ejecutar e incluso almacenar los contratos inteligentes creados sobre ella.

Quien quiera trabajar directamente sobre esta capa necesitará tener ciertos conocimientos de programación para crear sus smart contracts. Si quiere hacerlo sobre la blockchain de Ethereum aquí tiene un tutorial para iniciarse. Si prefiere la de Bitcoin, aquí un comienzo.

Por su parte, los SCMS son una superestructura que se sitúa encima del SCP que permiten usar los smart contracts como si fueran un servicio más. De esa forma, se podría disponer de forma gráfica y fácilmente usable de: una base de datos de los contactos que han suscrito smart contracts, de un calendario en el que programar su inicio y final, de un editor para crear borradores de los contratos o de un lugar en el que almacenarlos y comprobar su registro de actividad. Y lo dicho, todo ello con una interfaz gráfica y sin necesidad de programar.

Por tanto, mientras blockchain serían los cimientos, el SCP sería el mobiliario y el SCMS la fachada, el embaldosado y la pintura de la casa.

Si no sabemos o no queremos programar un smart contract y todos sus aspectos, lo que nos interesa es un SCMS. Ya que es lo más parecido que vamos a encontrar a un “Smart Contract as a Service”.

¿Existen muchos así? No demasiados, por ahora. Codius podría encajar pero requiere conocimientos de programación. El navegador/monedero Mist de Ethereum permite algo así pero muy simple. De los más útiles, potentes y sencillos que he visto es el que encabeza este apartado: SmartContract. Una empresa norteamericana que proporciona la opción de crear diferentes tipos de contratos inteligentes sobre las blockchain de Bitcoin y Ethereum, además de programar bonos inteligentes o la realización de pagos según la geoposición de un bien. Todo ello sin necesidad de saber programar.

smart_contract_opciones
Algunos de los contratos inteligentes que permite crear “SmartContract”

Si alguien quiere probar el servicio, hoy por hoy es gratuito, le recomiendo hacerlo sobre la plataforma de pruebas (que está algo más escondida que la normal). Así se puede experimentar más libremente.

¿Cuál ha sido el objetivo al crear nuestro smart contract? Experimentar con el concepto y hacerlo con un contrato inteligente no relacionado con pagos, que normalmente es el modelo más habitual. Por tanto, nuestra intención era usar únicamente el smart contract para la verificación, el intercambio y/o el suministro de información.

2.1.- Usar los cambios en términos y condiciones para crear un contrato

Hemos comentado que los contratos inteligentes son código informático basado en la idea de “Si ocurre esto, haz eso”. Por tanto, el contrato necesita una fuente externa de información para comprobar regularmente si ese algo ocurre o no. Esa fuente puede ser por ejemplo los resultados de búsqueda de Google, a través de un rango de SEO inteligente. Por ejemplo, “Cuando una web alcance la primera página de Google, realiza el pago”. Ésa es una opción proporcionada por el servicio través del contrato “Service Level”, por ejemplo.

smart_contract_seo_search

Pero quizá las mejores fuentes externas a las que recurrir, para verificar o ejecutar un contrato inteligente, sean las basadas en formatos de texto que puedan ser interpretados fácilmente por un programa informático. Ya que así se podrá recurrir a datos mucho más precisos. Pero no nos referimos a formatos como PDF, sino a fuentes en formato Javascript JSON.

En este sentido, la información recopilada por nuestro Boletín de Términos y Condiciones respecto a todos los textos que monitoriza, se almacena en formato JSON. Eso significa que respecto a cada modificación detectada, datos como el nombre del servicio, el tipo de documento, la fecha del cambio o el porcentaje de texto alterado, se almacenan en un formato que luego puede ser leído y verificado por un programa informático. En este caso ese programa informático será nuestro smart contract.

terminos_json
Algunos de los datos que pueden usarse de un documento monitorizado por el Boletín de Términos y Condiciones para crear un contrato inteligente

¿Qué queremos que haga nuestro contrato inteligente? Dado que los términos y condiciones cambian muy habitualmente, y que esos cambios no siempre se comunican, planteamos un esquema en el que un servicio pueda configurar mediante contratos inteligentes su deber de información e incluso la reaceptación de las condiciones cuando éstas son modificadas. Todo ello en función del porcentaje de cambio del documento monitorizado. Lo que además de cumplir con la ley, automatizar una obligación legal y reducir costes en su cumplimiento, puede ofrecer el extra de transparencia y fiabilidad que la cadena de bloques proporciona.

O lo que es lo mismo, los términos y condiciones siempre incluyen una cláusula relativa a la eventual modificación de los textos. Esas modificaciones muchas veces son menores, pero en otras ocasiones son sustanciales y aún así no se comunican al usuario ni se requiere nuevamente el consentimiento del usuario. Parte del problema es que raramente se define el concepto “cambio sustancial”. Pues bien, nuestra propuesta/experimento es que esa cláusula se solucione mediante un smart contract.

El proceso seguido para ello, a una escala muy pequeña y experimental, ha sido el siguiente.

2.2.- ¡Creemos un contrato inteligente!

En primer lugar creamos una falsa Política de Privacidad y comenzamos a monitorizarla con el Boletín de Términos y Condiciones. En el texto de la Política, en lenguaje natural, establecemos que cuando se dé un cambio sustancial de las condiciones, avisaremos de ello mediante correo electrónico, un aviso en la web y se volverá a solicitar el consentimiento del usuario. Además, indicamos que “cambio sustancial” equivaldrá a una modificación igual o superior al 15% del texto (para hacer la prueba era la forma más objetiva de intentar valorar algo así).

A continuación, creamos un perfil de prueba en “SmartContract“, le damos a “Creat Contract”, elegimos la opción “Bitcoin Oracle” y hacemos clic en “Create Oracle”. Nos interesa esta opción por la posibilidad de establecer condiciones que evalúen si un valor sube, se mantiene o baja.

Entonces podemos comenzar a “redactar” las cláusulas inteligentes de nuestro contrato inteligente (ver imagen inferior). También deberemos luego añadir una descripción al contrato, adjuntar los archivos que deseemos (en nuestro experimento una copia completa en formato PDF de la Política de Privacidad), para finalmente firmar y enviar el contrato. En esta fase el contrato se puede ir trabajando y guardando en nuestro perfil, en plan editor.

smart_contract_cambios
Campos a completar en nuestra cláusula inteligente

En nuestra cláusula inteligente o smart term, vamos a elegir la opción de monitorizar comportamiento (“performance monitoring”), ya que queremos saber cuándo se producen cambios sustanciales en nuestra Política de Privacidad. Es decir, si la modificación es igual o superior al 15% del texto. Cuando eso ocurra en el periodo de tiempo establecido, además de dejar constancia en la cadena de bloques y aportar a nuestros usuarios la máxima transparencia sobre nuestra forma de actuación, podríamos vincular y automatizar ese resultado a las acciones indicadas en la cláusula escrita en la Política. Es decir, el envío de un email, el aviso en la web y la solicitud de nuevo de consentimiento. Y todo ello en función del resultado de este contrato inteligente.

Por tanto, vamos a crear dos cláusulas inteligentes. Para comenzar, en “IF the API location” colocamos la versión JSON de nuestra Política de Privacidad. Para esta primera cláusula seleccionamos la opción “HAS a value equal to 15″. A continuación, hacemos clic en “Data Path” y seleccionamos “variationPercentage” en la ventana que se mostrará con todos lo datos disponibles para ese documento. Finalmente, elegimos una fecha de expiración y añadimos un nuevo “Smart Term”. En esta segunda cláusula repetiremos el proceso anterior, pero en el segundo campo ahora debemos seleccionar “HAS a value more than 15”.

Rellenamos el campo “Description”, adjuntamos los archivos que consideremos y firmamos y enviamos el contrato a alguna alma cándida con la que hacer el experimento todavía más social (no tiene porque ser usuario del servicio). Debería mostrarse algo tal que así:

smart_contract_final
Smart contract hecho, firmado y enviado. Es tan inamovible que no puedo ni corregir el error de su título :p xD

Ahora, mientras el contrato está en progreso, simplemente es cuestión de hacer modificaciones (o no) en la fuente externa que el smart contract está regularmente monitorizando, es decir, nuestra falsa Política de Privacidad. De ese modo, añadiendo y eliminando texto del documento monitorizado podremos forzar el cumplimiento o incumplimiento de nuestro contrato inteligente.

Y con esto y un dolor de cabeza :p, tenemos un contrato inteligente.

Todo lo comentado en este segundo apartado es la versión práctica de la teoría indicada en el primer bloque. Por lo tanto, aquí hemos creado un smart contract sobre blockchain (con todas sus implicaciones). Si bien el experimento es extremadamente simple e incompleto, creo que puede ayudar a comprender el concepto de los contratos inteligentes en la realidad. A su vez, demuestra la existencia de servicios potentes y sencillos que ya permiten el uso de este nuevo instrumento legal sin necesidad de saber programar. Por tanto, algo que ya podemos usar como abogados, pero que nuestros clientes también pueden usar.

Dicho esto, ¡adelante con las pruebas! Ya que este mini experimento a duras penas rasca la cáscara.

Por cierto, si alguien quiere usar el Boletín de Términos y Condiciones como una fuente externa para sus contratos inteligentes, o incluso monitorizar un texto creado expresamente (como el usado en este ejemplo), adelante con los ya disponibles o que se ponga en contacto con nosotros para un caso especial.

Finalmente, vamos a ver algunas pinceladas legales de todo lo comentado.

3.- ¿Y de lo legal qué hay?

Llegados a este punto, deberíamos tener una pequeña idea sobre qué es un smart contract desde un punto de vista técnico, para qué puede usarse y cómo podría crearse. Ahora bien, ¿legalmente qué ocurre?

Hay ya varios buenos artículos sobre las vertientes legales de los contratos inteligentes, dos buenos ejemplos son el ya citado a A Lawyer’s Introduction to Smart Contracts o Smart contracts: aproximación al concepto y problemática legal básica. Por tanto, como esto ya está quedando muy largo :p, simplemente haré una reseña de algunas problemáticas que me parecen llamativas, con fuentes de consulta extra.

Vamos allá:

1.- Si bien es habitual oír hablar de contratos inteligentes como instrumentos que no son ni contratos ni inteligentes, la verdad es que pueden perfectamente bien acoger todos los elementos propios de un contrato y llegar a “pensar” por sí mismos. Es cierto que muchos smart contract no son más que un simple redireccionamiento de un importe desde una cuenta a otra, sin más. Pero puede construirse un contrato inteligente puro, como algunos lo denominan, y que sea un contrato perfectamente legal, en forma y fondo. Por tanto, depende un poco del uso.

2.- Sobre su inteligencia, ciertamente la mayoría de smart contract son autómatas que bajo un principio de neutralidad absoluto simplemente hacen lo que se les indica. Pero hay desarrollos en ese ámbito que los llevarán a más. Desde la inclusión de IA en su redacción y cumplimiento a experimentos tan complejos y curiosos como los DAO u Organizaciones Autónomas Descentralizadas. ¿Qué es un DAO? Muy resumidamente, un smart contract de smart contracts. O como dicen algunos, cuando un bot dirige la empresa. Su concepción y desarrollo es muy interesante, al igual que sus defectos y consecuencias legales (el mayor DAO del mundo fue hackeado hace unos meses).

3.- Un último apunte sobre su inteligencia, me parece interesante la idea de que con el tiempo un smart contract pueda “representarme legalmente”. Es decir, un contrato inteligente puede perfectamente identificar a un usuario, controlar determinados bienes digitales del mismo y contratar o no servicios en función de las instrucciones programadas. Por tanto, es cuestión de tiempo que alguien cree su “representante digital”.

4.- La redacción, corrección e interpretación de los contratos inteligentes será una tarea más compleja, sobretodo al inicio. Para empezar, por no estar escritos en lenguaje natural. Por otro lado, al ser tan veloces y automáticos en su ejecución, será importante analizar bien su falta de errores en el código (un debug legal será necesario). Todo ello sin olvidar que quizá incluyan código de tercero desconocido o no auditado. En todo caso, los contratos de lenguaje natural no desaparecerán, simplemente convivirán unos y otros o incluso se mezclarán (nuestro ejemplo era así). Después de todo, la flexibilidad del lenguaje natural será muchas veces buscada por las partes.

5.- Que los contratos inteligentes se ejecuten y almacenen sobre una red distribuida como blockchain es un problema en materia de ley y jurisdicción aplicable (si las partes no la indican en el clausulado). Sobretodo en esos contratos en los que las partes no sean identificables e incluso se cifre el contenido del contrato. Es decir, si el contrato se verifica, ejecuta y almacena en millones de ordenadores a la vez, está en todos sitios y en ninguno simultáneamente. ¿Qué jurisdicción aplicamos si las partes no han dicho nada?

6.- Que los contratos inteligentes se almacenen en blockchain, sin posibilidad de modificación y con un nivel de transparencia máximo, puede generar problemas en materia de privacidad y confidencialidad de la información. De hecho, eso está potenciando la creación de cadenas de bloques privadas. ¿Y qué ocurrirá con el derecho al olvido en una cadena de bloques? ¿No habrá cierto choque entre lo establecido en el nuevo Reglamento Europeo de Protección de Datos y lo que permite la tecnología? Seguramente por eso se trabaja ya en blockchains (privados) editables.

7.-  Lo lógico es que sistemas como el usado en el ejemplo sean la forma habitual de realizar contratos inteligentes. En ese caso, los términos y condiciones del servicio pueden ayudar en materia de legislación y jurisdicción aplicable. Por tanto, lo razonable es que esos servicios sean también el principal foco de regulación por parte de los gobiernos. Y es que no olvidemos que estos servicios tendrán acceso a miles de contratos, a la información personal y confidencial que puedan contener y se encargarán de su custodia. ¿Deberán velar por la legalidad de su objeto? ¿Impedir quizá que se cifren ante un eventual contratiempo? ¿Y hará falta algún conocimiento legal para suministrar plantillas de smart contracts? Al fin y al cabo son un programa informático que hoy por hoy crean mayormente los programadores, no los abogados, pero con una connotación legal importante. De hecho, ya hay mercados para comprar y vender smart contracts.

8.- Finalmente, servicios como el usado y otros similares tienen el potencial para propiciar que unas pocas personas afecten seriamente a grandes negocios altamente regulados, como por ejemplo las apuestas deportivas, loterías o préstamos. Es decir, si puedo hacer plantillas de smart contracts fácilmente replicables y a gran escala, es cuestión de tiempo que alguien acabe montando desde su casa una alternativa a Bet365 o cualquier otro de esos servicios. Pero obviamente sin cumplir los muchos requisitos necesarios para ese tipo de negocios.

En resumen, la parte legal de los contratos inteligentes va a presentar retos nuevos interesantes. En cualquier caso, hasta aquí llega mi primer contacto con ellos o “Los contratos inteligentes son para el verano”. :p

Para mí ha sido un buen ejercicio para aprender con cierto detalle todo lo que rodea a esta nueva área de conocimiento. A su vez, este mega este post pretende (con los tecnicismos justos) poner en orden muchas de esas ideas y que más gente pueda tener acceso al mismo. Ya que lo aquí explicado es simplemente la punta del iceberg y hay mucho por explorar.

Y si bien es cierto que el mundillo smart contract y blockchain está en fase de burbuja total, con el tiempo se relajará y las revoluciones darán paso a las aplicaciones reales. Pero es innegable que la tecnología y sus usos tienen un gran potencial que ya está presente y disponible. Incluso para simples mortales. ;D

¡Feliz contrato inteligente!
—–

16 opiniones en “Cómo crear un smart contract mediante términos y condiciones”

  1. GRAN post Jorge, muy bien documentado y donde se aprecia el esfuerzo que has hecho para tratar de des-complicar la comprensión de los Smart Contract y la Blockchain.
    Llevaba preguntándome hace unos días cómo se podría “programar” un Smart Contract para diseñar un pacto de sindicación de acciones que contenga obligaciones sobre el ejercicio de los derechos de voto de las acciones sindicadas, la cesión en comodato de las acciones sindicadas y delegación de votos, unas restricciones a la transmisibilidad de las acciones sindicadas, y cláusulas penales que se activarían en caso de incumplimiento de los acuerdos. ¿Crees realmente que la blockchain resuelve “por completo” las tres limitaciones que padecían los Smart Contract en sus orígenes, y más concretamente, en los pactos parasociales como este sindicato de acciones? Imagina que alguna cláusula del pacto fuera declarada nula por un juzgado, ¿el “código informático” como ejecutaría la retroactividad?, o imagina que hubiera interpretaciones diferentes en cuánto a los alcances de una cláusula del pacto y que un juez la interpretara en un sentido diferente a lo que dice el “lenguaje de programación” del contrato inteligente. ¿qUÉ PIENSAS?
    Un abrazo y gracias.

    1. Hola Ricardo,

      ¡Muchas gracias! Si la intención por simplificar la materia se ha conseguido, ya estoy satisfecho. :-)

      Por otro lado, propones un tipo de contrato inteligente muy avanzado. :p Madre mía, algo así da para un post independiente. xD Y aunque societario no es lo mío, vamos a probar.

      Antes de nada, no tomaría los contratos inteligentes como la solución a un problema que no existe. Es decir, no siempre tendrá sentido hacer un “Contrato de…” en versión smart contract. Yo creo que si se buscan los elementos propios del software: rapidez, automatización, fiabilidad y/o media/gran escala, un smart contract puede ser un buen instrumento.

      Si el “acuerdo” es máquina a máquina o máquina a humano, también ganan puntos como alternativa. En un esquema humano a humano, personalmente no creo que vayan a ser tan comunes de inicio.

      Por otro lado, aunque esos elementos se den, no hay necesidad de redactar un contrato de 10 páginas en versión inteligente. Como experimento puede ser divertido, sin duda. Pero quizá únicamente algunas cláusulas encajan en la idea del contrato inteligente y el restante sería generarse problemas donde no hay necesidad. Es decir, un modelo de contrato normal con algunos elementos automatizados me parece una opción interesante a explorar.

      Dicho esto, la estructura de los DAO tiene algunos elementos que podrían funcionar en ese tipo de acuerdo: son plurilatetales, cierto secretismo sobre sus intenciones y permiten la posibilidad de gestionar votos. Pero tienen un fuerte componente basado en aportaciones económicas que no incluye la sindicación. Mira esto para mucho mayor detalle: https://forum.daohub.org/t/the-legal-status-of-the-dao/81/21

      Luego tienes el inconveniente del típico carácter secreto de esos pactos. Pero la cadena de bloques pretende máxima transparencia. Por tanto deberás recurrir a hacer ilegible objeto y quizá participantes.

      ¿A qué fuentes externas recurrirías para controlar las condiciones suspensivas? El carácter secreto del pacto puede dificultar eso. Por ej, ¿como puedo saber si las penalizaciones se deben ejecutar cuando no tengo medio externo Isabel para comprobar la emisión del voto de alguien?

      La retroactividad es un inconveniente, pero puede complementarse el código del contrato con cláusulas en lenguaje natural para solventar en parte el problema. Además, según el tipo de blockchain podría llegar a ser editable la anotación. También me me parece recordar que se hacen smart contracts con inclusión de cláusulas/código que intentan reducir el efecto de eso (pero ahora no encuentro la referencia).

      Y sobre la interpretación, bueno, es el problema de trabajar en unos y ceros. Si tu contrato necesita cierta flexibilidad, no recurras a un smart contract.

      No sé, es un ejemplo muy complejo para “iniciarse”. :p Como trabajo de investigación seguro que merece la pena, pero en la práctica creo que corres riesgos en exceso.

      Saludos

  2. muchas GrACias por tu aclaración, jorge. me quedo con tu frase: “Yo creo que si se buscan los elementos propios del software: rapidez, automatización, fiabilidad y/o media/gran escala, un smart contract puede ser un buen instrumento”.

    una cuestión final que debo precisar es que hay un tipo de pacto parasocial que “no es secreto”: se trata de los pactos parasociales de sociedades cotizadas a los que se refieren los artículos 530 y 531 del texto refundido de la ley de sociedades de capital (y donde se encuentran, precisamente, los sindicatos de voto, que fue el pacto que puse de ejemplo en mi comentario previo).
    Un abrazo.

  3. hOLA QUISIERA TU AYUDA PARA ENCONTRAR LA MANERA DE QUE ME PROGRAMEN UN CONTRATO INTELIGENTE YA QUE NO SE PROGRAMAR SIN EMBARGO TENGO YA ESTRUCTURADA LA IDEA COMPLETA Y SE QUE ES POSIBLE CON UN CONTRATO YA QUE ES UNA IDEA INNOVADORA PARA INCORPORAR DINERO , MULTIPLICACIÓN Y CONFIANZA .

    1. Hola,

      Podemos comentarlo más en detalle mediante email, si lo deseas. Puedes encontrarnos aquí: hola@terminosycondiciones.es

      En todo caso, en la actualidad hay ya bastantes plataformas para crear contratos inteligentes (pensadas para abogados) y sin necesidad de saber programar. Puedes encontrar un repaso a las mismas aquí: https://legaltechies.es/2017/08/23/las-numerosas-iniciativas-blockchain-enfocadas-al-sector-legal/

      Gracias y saludos

  4. Excelente post, definitivamente los contratos inteligentes se están volviendo populares por su privacidad y transparencia, la manera en que explicas como crearlos es bastante completa, leí de estos contratos en Webchain es el sitio donde estoy minando desde hace un tiempo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.