El éxito del Bitcoin demostró al mundo que era posible crear y transferir una moneda virtual utilizando la tecnología blockchain sin tener que depender de un banco u otra institución financiera. Sin embargo, los fundadores de Ethereum creían firmemente que una blockchain podía ser más que un libro contable descentralizado y que podía aportar más valor que solamente ser un sistema de transmisión de monedas virtuales sin intermediarios.
En el White Paper de Ethereum se propone que la red blockchain no sea solo una entidad para almacenar y validar transacciones, sino que también, de forma automática y consensuada, pudiera actuar de intermediario con ejecución de contratos. De ahí nació el concepto de “smart contract” en una blockchain, una forma de añadir cierta inteligencia y aprovechar el procesamiento en la ejecución de actividades sobre todas las transferencias o eventos que pudieran procesar dentro de la red. El White Paper de Ethereum comienza de la siguiente forma:
“La publicación de Bitcoin en 2009 por parte de Satoshi Nakamoto a menudo se ha aclamado como un avance radical en el ámbito del dinero y las divisas, siendo el primer ejemplo de un activo digital que a la vez no tiene respaldo o valor intrínseco ni un emisor o mando centralizado. Sin embargo, otra parte, quizás más importante, del experimento de Bitcoin es la tecnología subyacente de blockchain como una herramienta de consenso distribuido, aspecto del Bitcoin sobre el cual se está empezando rápidamente a centrar la atención. Las aplicaciones alternativas que se citan comúnmente de la tecnología de blockchain incluyen el uso de los activos digitales blockchain para representar divisas a medida e instrumentos financieros (monedas coloreadas), la propiedad de un artefacto físico subyacente (propiedad inteligente), activos no fungibles como nombres de dominio (Namecoin), así como aplicaciones más complejas que involucran activos digitales controlados directamente por un fragmento de código que implementa reglas arbitrarias (contratos inteligentes) o incluso organizaciones autónomas descentralizadas basadas en blockchain (DAO). Lo que Ethereum pretende es proporcionar una blockchain con un lenguaje integrado Turing completo y plenamente desarrollado que se puede usar para crear “contratos” que, a su vez, se pueden utilizar para codificar funciones arbitrarias de transición de estados, permitiendo a los usuarios crear cualquiera de los sistemas descritos anteriormente, así como otros que todavía no hemos imaginado, tan solo escribiendo la lógica en unas pocas líneas de código”.
En tal sentido, una de las grandes diferencias entre la blockchain de Bitcoin y la de Ethereum radica en lo que se conoce como la “Ethereum Virtual Machine” o EVM. La EVM es una de las piezas claves en el funcionamiento de la blockchain de Ethereum. Su función es la de permitir la ejecución de programas o smart contracts con la finalidad de desplegar sobre dicha blockchain una serie de funcionalidades añadidas para que los usuarios puedan disfrutar de las mismas. La EVM permite el diseño y la ejecución de smart contract y se utiliza un lenguaje de programación denominado solidity.
Ahora bien, la idea de los contratos inteligentes es más antigua de lo que podría pensarse. En la década de los 90, el jurista, informático y criptógrafo Nick Szabo trató ampliamente la tesis de los contratos inteligentes definiéndolos como un protocolo de transacción computarizado que ejecuta los términos de un contrato, que sirviera para dar lugar a unas relaciones contractuales donde el incumplimiento contractual fuera costoso para quien lo incumpliera. Se observa cómo la idea básica que reside detrás de esta tesis es la de aportar seguridad al cumplimiento de un contrato, evitando así conflictos y, consecuentemente, la necesidad de acudir a los tribunales; ello permite concluir que los smart contracts cumplen una especie de autoayuda (self-help).
Cabe preguntarse por qué en los años 90s esta idea no tuvo tanta repercusión. La razón de ello es que, desde su concepción, existieron una serie de problemas que impedían llevar a la práctica su implementación, tales como la imposibilidad del código informático de poder controlar los activos a efectos de hacer cumplir los acuerdos, así como la dificultad de encontrar un código informático sobre el que recaiga la confianza de las partes contratantes, en tanto ejecute lo acordado por ellas y que no pueda ser manipulado. Si bien no es necesaria la tecnología blockchain para codificar y automatizar un contrato, lo cierto es que esta tecnología resuelve el primer problema en mención ya que permite controlar el activo a través de un código o clave escrita en lenguaje criptográfico asociado a ese activo. Asimismo, lo que permite esta tecnología es masificar y globalizar el uso de los smart contracts debido a sus características de inmutabilidad, trazabilidad, descentralización y seguridad.
En este orden de ideas, un smart contract o contrato inteligente es un programa informático que se almacena en la blockchain, cuyas líneas de código reemplazan los términos y condiciones que se encuentran en un contrato tradicional que sigue un “script” (secuencia de comando) a fin de ejecutarse de forma automática sin que medie un tercero entre las partes. Es decir, mediante el uso del código informático se verifica y ejecuta un acuerdo entre partes sin intervención de estas. Esta tecnología permite la ejecución automática e independiente de aquellos términos de un contrato que sean objetivables mediante la siguiente fórmula matemática: “If + Then”, esto es, “Si ocurre esto…entonces sucederá lo siguiente…”. Esto permite que las cláusulas contractuales sean vinculantes y automáticas, dado que pueden autoejecutarse a través de la información que reciben. Además, permiten garantizar la ejecución de un contrato de forma neutral y ser más eficientes en la distribución de bienes y servicios. Por lo que para que el contrato pueda ser verificado y ejecutado de manera automática, necesitamos que dichas cláusulas o condiciones sean objetivas u objetivables, ya que los smart contracts utilizan la lógica booleana.
En efecto, como bien señala Abel Revoredo, los smart contracts son acuerdos, escritos en código de programación, que ejecutan automáticamente funciones programadas cuando se cumplen ciertas condiciones preestablecidas. En otras palabras, cuando la condición “A” se cumple, genera que la acción “B” se realice. Esta es la idea simplificada detrás de los smart contracts. El funcionamiento de los contratos inteligentes parte de un acuerdo entre las partes contractuales, las cuales deciden valerse de las características de un smart contract para ejecutar los términos del acuerdo una vez se verifiquen las condiciones preestablecidas en dicho acuerdo. Especial relevancia tiene el hecho de que el acuerdo, de forma total o parcial, se codifica y se almacena en una cadena de bloques, dotándole de inmutabilidad y seguridad.
En el Tedx Talk denominado “How Smart Contracts Will Change the World”, Olga Mack señala que un smart contract es una suerte de “máquina expendedora (vending machine) con esterioides”. De hecho, Nick Szabo también hace el símil. Esta speaker sostiene que los smart contracts cumplen tres funciones esenciales: (i) Guardan reglas; (ii) Verifican el cumplimiento de las reglas; (iii) Autoejecutan el comando una vez verificado el cumplimiento de la regla. Esto también ocurre con una máquina expendedora de snacks. En primer lugar, la máquina tiene guardada la regla de que una vez insertadas las monedas equivalentes al precio del producto, el consumidor obtendrá el producto elegido. En segundo lugar, una vez insertada la moneda, verifica el valor de la misma y el producto de elección. Finalmente, luego de culminar el proceso de verificación, la máquina ejecuta la orden y el consumidor obtiene el snack que eligió. ¿Por qué se dice que es una vending machine con esteroides? Porque la complejidad en la automatización del contrato depende de la complejidad del contrato. Por ejemplo, en un contrato inteligente de compraventa de una acción, cuando el comprador le hace el pago del dinero al vendedor, el smart contract comunica inmediatamente a la sociedad, quien a su vez registra al nuevo titular de la acción y expide un certificado digital de acciones.
En este orden de ideas, podemos apreciar cómo los smart contracts se sirven de la tecnología blockchain para ejecutar automáticamente un contrato al darse la verificación de las condiciones preestablecidas en el mismo; lo cual permite que sea un proceso especialmente rápido y eficiente. Por otro lado, el uso de los contratos inteligentes no necesita de terceras partes ni intermediarios, lo cual, además de permitir mayor rapidez, repercute positivamente en la reducción de costes y en que la confianza se traslada al código, difícilmente manipulable una vez almacenado en la cadena de bloques. Sin embargo, ¿cómo podemos beneficiarnos de los smart contracts?
Literalmente, existen cientos de ejemplos:
En el sector de seguros, una persona podrá someterse a una operación y ni bien salga de ella podrá ver en su cuenta el reembolso del pago sin tener que estar peleándose con la aseguradora.
En el sector de transportes, si un avión o tren se demora, automáticamente se transferirá el precio del ticket más una indemnización por los daños y perjuicios ocasionados.
En el sector de apuestas, quien gane la apuesta no tendrá que estar persiguiendo al perdedor para que le pague.
En el sector financiero, los bancos podrán ejecutar hipotecas o garantías cuando el deudor deje de pagar.
En tal sentido, los contratos inteligentes aportan transparencia, previsibilidad, control y facilidad de cumplimiento a las relaciones contractuales a la vez que mitigan los riesgos asociados con la participación humana, ya que buscan reducir los costos transaccionales, eliminar a los intermediarios y simplificar la ejecución de los contratos. Esto sin duda repercute en el ordenamiento jurídico, dado que la actividad comercial que se ejecuta vía un smart contract no puede separarse del Derecho Contractual. Entonces, ¿cuál es la naturaleza jurídica de los smart contracts? Al hilo de lo indicado anteriormente, los smart contracts pueden ser vistos desde dos perspectivas distintas: por un lado, desde una perspectiva informática que los concibe como un código informático, y, por otro lado, desde una perspectiva jurídica que concibe al código informático como una herramienta al servicio de un acuerdo que se redacta total o parcialmente en código para servirse de la autoejecución con la verificación de condiciones estipuladas en un acuerdo que posee relevancia jurídica.
Con base a lo anterior, ¿un smart contract puede ser considerado como un contrato para el Derecho Civil peruano? Desde el punto de vista formal, el hecho de que los contratos legales inteligentes se redacten, en todo o en parte, en forma de código informático no supone ningún obstáculo para reconocerles la consideración de un contrato dado que el Código Civil peruano consagra en su artículo 143° el principio de libertad de forma, esto es, que las personas pueden manifestar su voluntad de la forma que estimen conveniente, salvo que se exija una formalidad determinada para ciertos actos jurídicos. Es decir, ante el silencio de la ley, las partes son libres de escoger cualquiera modalidad de exteriorización del querer. Por tanto, observamos que la libertad de forma que prevé la legislación peruana significa que las partes pueden elegir plasmar un contrato en la forma de smart contract, sin perjuicio de requisitos formales que puedan establecerse.
Recordemos que nuestro Código Civil permite explícitamente la utilización de medios electrónicos para manifestar la voluntad al momento de celebrar un acto jurídico debido a una reforma llevada a cabo en junio del año 2000, a través de la promulgación de la Ley N° 27291, la cual modificaba los artículos 141º y 1374º del Código Civil, así como, agregaba el nuevo artículo 141º-A a dicho cuerpo normativo. En ese sentido, los smart contracts se caracterizan por su naturaleza electrónica y no son más que una variante de los contratos electrónicos, entendidos como aquel acuerdo de dos o más personas que se obligan entre sí o respecto de otra u otras, para crear, modificar o extinguir una relación jurídica de carácter patrimonial (como puede ser, dar alguna cosa o prestar algún servicio), con la particularidad de que el consentimiento de las partes que se presta por medios electrónicos, es permitido en nuestro ordenamiento jurídico.
Los contratos electrónicos, al igual que cualquier otro tipo de contrato, deberán reunir los requisitos esenciales para la validez de todo contrato; esto es, que los agentes capaces hayan manifestado su consentimiento, el objeto contractual sea física y jurídicamente posible, que cuente con un fin lícito y que siga la formalidad exigida por ley. Los contratos electrónicos se perfeccionan cuando el remitente obtiene un acuse de recibo, de conformidad con el artículo 1374° del Código Civil.
Como bien señala, Agustina Pérez, es importante entender que en el caso de los smart contracts no nos encontramos ante un nuevo tipo de contracto, sino ante una nueva herramienta para contratar con medios electrónicos que permite aplicar de manera profunda el famoso principio de “pacta sunt servanda” (la eficacia o cumplimiento no puede dejarse al arbitrio de una de las partes), de forma que la naturaleza de los contratos “tradicionales” es aplicable, sin necesidad de tener una norma expresa, siempre que el mismo sea “programado” con el consentimiento de ambas partes.
Al haber concluido que los contratos legales inteligentes pueden llegar a tener la consideración de contratos, resulta inevitable señalar que a la fecha existen más dudas que certezas en la aplicación de esta tecnología al mundo contractual.
¿Qué ocurre con aquellos contratos que necesitan de una formalidad específica? Tal como hemos mencionado anteriormente, en el ordenamiento jurídico peruano existe el principio de libertad de forma. Sin perjuicio de ello, una práctica recomendable es que igual se redacten los contratos de la forma “tradicional” y posteriormente los términos y condiciones del mismo se traduzcan a solidity u otro lenguaje de programación. De este modo, las partes tendrán el contrato por escrito e inclusive podrán cumplir con todas las formalidades exigidas por ley y a su vez tener un smart contract que sea una representación de dicho contrato. De esta forma, se puede conseguir cumplir con los requisitos de validez del acto jurídico y poder ejecutar automáticamente las prestaciones del contrato una vez que se cumplan determinadas condiciones. Esta buena práctica podría lograrse al exigir a las partes contratantes que acepten términos en lenguaje natural que confieren un efecto contractual vinculante sobre la transacción realizada por el código. El contrato inteligente sería entonces “lanzado” y autoejecutado con efecto legal de acuerdo con los términos codificados. En consecuencia, con las medidas adoptadas para garantizar que se cumplan las formalidades legales y los elementos constitutivos de un contrato, es muy probable que un contrato inteligente y el resultado de su autoejecución puedan considerarse jurídicamente vinculantes. La versión en “word” o “pdf” del contrato podría ser hasheada para que quede registrada en la blockchain.
¿Cómo se firma un smart contract? En principio, quien tiene acceso a su wallet puede autenticarse y celebrar operaciones con otra wallet. Sin embargo, en el mundo “off-chain” quien celebra un contrato, en muchas ocasiones, debe tener poderes suficientes para poder llevar a cabo dicho acto jurídico. Es por ello que una forma para firmar electrónicamente un smart contract podría ser a través de una videofirma que cuente con varias formas de autenticación y luego esta firma electrónica se registre en la blockchain a través de un hash.
¿Qué ocurre si el smart contract tiene ciertos vicios e irregularidades? Con la perfección del contrato, éste deviene en obligatorio y vincula a las partes, las cuales deberán cumplir lo expresado en el mismo (art. 1361 C.C.) No obstante, el contrato puede tener ciertos vicios e irregularidades que impidan que el contrato sea válido y, por ende, vincule a las partes. Esta cuestión resulta de enorme calado a la hora de relacionarlo con los contratos inteligentes dado que la automatización característica de los mismos es ajena a la concurrencia de toda clase de vicisitudes porque el software seguirá ejecutando los términos reflejados en el código, sean estos legales o no. Sin embargo, un smart contract debe respetar lo dicho por el ordenamiento jurídico. En ese sentido, a pesar de que las prestaciones se ejecuten de forma automática a pesar de tener algún vicio, esta ejecución genera una serie de efectos jurídicos que el Derecho no puede dejar al margen. Por tanto, en caso de que concurran causales de nulidad o de anulabilidad, las partes podrán solicitar la restitución de las prestaciones. En otras palabras, al igual que un contrato “tradicional” se anula, un smart contract también podrá ser anulado. Por consiguiente, es importante que las partes prevean este supuesto.
¿Qué cláusulas se deberían considerar a la hora de programar el smart contract? Como bien señala Agustina Perez, la etapa de preparación del contrato inteligente puede considerarse una de las etapas más importantes de todo su proceso, por eso es importante tener un asesoramiento adecuado y un armado de estructura meticuloso y conservador. Mas allá de que es claro que no pueden contemplarse todos los posibles desarrollos, es pertinente tener algunos aspectos contemplados de forma previa a su ejecución. En todo el procedimiento, siempre debemos tomar en cuenta la regulación prevista en nuestro derecho y respetarla de acuerdo al tipo de contrato que estemos programando.
Sin perjuicio de que se contrate a un programador para redactar el contrato inteligente o se utilice un modelo, las partes deben incluir cuando menos las siguientes cláusulas:
Identificación de las partes: La posibilidad de que no sea posible o sea muy complicado identificar a las partes y que el smart contract se almacene en una red blockchain supone un serio obstáculo de cara a determinar la ley aplicable al contrato legal inteligente y la jurisdicción competente para conocer de las posibles disputas que puedan derivar del mismo. Es por ello que para que el contrato se cumpla, evidentemente se requiere conocer la identidad de las partes. Esta identidad debe estar vinculada a las claves públicas que utilizarán.
Ley aplicable y jurisdicción competente: Uno de los principales retos de la tecnología blockchain y la aplicación de los contratos inteligentes es que son un fenómeno multijurisdiccional, es decir, las partes están situadas en distintos países y el activo sobre el que se está transaccionando puede ser algo virtual, sin una presencia física. Esto es muy importante porque la mayoría de las veces se aplica una norma u otra en función de dónde esté físicamente el activo o las partes. Es por ello que es imperativo que las partes fijen voluntaria y expresamente cuál es la ley que rige el contrato y cuál es la jurisdicción competente en caso exista alguna controversia.
Cláusula de resolución de conflictos: Resulta importante que las partes prevean ex ante cómo es que se van a resolver los conflictos que pudieran darse en el futuro. Nada impide a las partes acudir alternativamente a un árbitro, que podría ser una opción más interesante que la de acudir al juez ordinario dada la especialización de los árbitros. Dicha cláusula podría recogerse tanto “off-chain” como en el propio smart contract, pudiendo articularse asimismo un mecanismo mediante el que se suspendiera la ejecución del smart contract hasta que el árbitro resolviera.
Interpretación del contrato: Se debe establecer si la programación prevalece sobre el contrato escrito o viceversa.
Utilización de oráculos: La verificación de las condiciones preestablecidas en el smart contract requerirá normalmente de la concurrencia de los denominados “oráculos”, encargados de conectar el código con el mundo exterior y comunicar al primero la concurrencia de las condiciones preestablecidas en el smart contract. Una limitación de los smart contracts es que se encuentran limitados a obtener información de la misma blockchain y para autoejecutarse requiere de información “off-chain”. Un oráculo tiene como principal función, ser un servicio mediante el cual un smart contract se nutre de información externa a la blockchain sobre la que se ejecuta. Este “input” puede desencadenar una acción específica dentro de la misma según una determinada programación. Es por ello que resulta trascendental que el oráculo sea fiable y seguro al fin de evitar una auto ejecución equívoca.
Auditoría técnica antes de la ejecución del smart contract: Una auditoría de seguridad técnica proporciona un análisis detallado de las vulnerabilidades de un smart contract. Por lo general, los auditores examinan el código de los contratos inteligentes, redactan un informe y lo proporcionan al proyecto para que este trabaje con él. Luego, se publica un informe final en el que se detallan los errores pendientes y el trabajo ya realizado para abordar problemas de rendimiento o seguridad.
Cláusula de escape: ¿Un contrato inteligente es reversible? Si no lo es, ¿qué ocurre si se ejecuta automáticamente una operación incorrecta ya sea por un error humano en la codificación o por una situación “gris”? Es claro que la inalterabilidad del contenido del contrato inteligente debido a la característica propiciada por el uso de la tecnología blockchain tiene muchos beneficios como la seguridad y transparencia del acuerdo. Sin embargo, la inmutabilidad también genera un “riesgo de actuación” en la ejecución contractual, ya que las partes no están en la capacidad de prever con exactitud todos los supuestos de hecho a los que se enfrentarán. No existe contrato perfecto. Por tanto, esta característica de la blockchain haría que las partes se vean obligadas a trazar en detalle y con mucha minuciosidad cada una de las facetas y vías por las que el contrato debe desenvolverse. Esto sin duda genera enormes costos de transacción por lo que es importante tener un mecanismo de escape. Para ello debería el contrato codificarse con un plan B alternativo si el plan A falla y no se puede llevar a cabo la operación inicialmente deseada por las partes. Por ejemplo, el código tiene una ruta alternativa ejecutable en caso de que concurran determinadas circunstancias.
Remedios para errores de codificación, bugs, oráculos erróneos u otros fallos tecnológicos: En aquellos supuestos donde la inejecución contractual no es imputable a las partes, ya sea por un error de programación o un “bug” en el smart contract o porque el oráculo fue hackeado y dio información falsa, se daría un resultado no deseado por las partes. Si bien, una vez ejecutado el smart contract, se generaría una pretensión de restitución de lo pagado por la configuración de un enriquecimiento indebido, además de existir una pretensión de cumplir con la prestación debida, bien mediante un segundo smart contract correctamente redactado o bien por un contrato tradicional; esto en la práctica supondría que las partes incurran en altos costos de transacción. Por consiguiente, se deben pactar “off-chain” los remedios ante estas situaciones y asignar el riesgo ante el malfuncionamiento del smart contract.
A modo de conclusión, los smart contracts surgieron con la idea de aportar seguridad al cumplimiento de lo estipulado en una relación contractual haciendo que el incumplimiento contractual fuera costoso para el que lo incumpliera, evitando así la necesidad de acudir a los tribunales. En este sentido, la ejecución automática de los smart contracts no requiere de la intervención de las partes contractuales, lo cual restringe de forma importante el incumplimiento. Sólo el tiempo dirá si la sociedad se adecuará a esta realidad. También debemos de observar cómo es que esta tecnología se potenciará con el machine learning conllevando a que ese código sea capaz de hacer valoraciones subjetivas por sí mismo, como determinar si una sociedad está válidamente constituida para después ejecutar sobre ella esas órdenes.
Alejandro Morales Cáceres- Abogado Asociado Senior y Líder del Área de Derecho y Nuevas Tecnologías de TYTL Abogados
Leer la noticia completa aquí.