Los cripto-préstamos son instrumentos financieros innovadores que permiten préstamos entre pares sin confianza y, potencialmente, brindan una fuente de liquidez segura y conveniente para los titulares de criptomonedas. En este documento exploramos un marco de contrato inteligente para construir cripto-préstamos estandarizados utilizando el lenguaje específico de dominio de Marlowe y con el estándar ACTUS en su núcleo.
Los contratos inteligentes que se ejecutan en un entorno de cadena de bloques pueden definirse de diversas maneras. Muchos de estos lenguajes son de propósito general, y pueden pueden utilizarse para programar cualquier tipo de contrato que tenga sentido ejecutar en una cadena de bloques. Además, tienden a ser lo suficientemente expresivos como para ser Turing completo (en algunos
casos con restricciones en el entorno de ejecución). Por ejemplo, Plutus, el
lenguaje de propósito general que se ejecuta en la cadena de bloques Cardano, es un dialecto de Haskell. Otro enfoque es el desarrollo de lenguajes de propósito especial o de dominio específico (DSLs) que encarnan un dominio de aplicación particular: Marlowe es un DSL de alto nivel para escribir contratos financieros en la cadena de bloques Cardano.
En este artículo exploramos las formas en que los contratos descritos en ACTUS (Algorithmic Contract Types Unified Standards) pueden definirse en los lenguajes de contratos Marlowe, Plutus y otros. Marlowe, Plutus y Haskell.
Por supuesto, Plutus o Haskell son capaces de de expresar estos contratos, pero su representación en Marlowe aporta ventajas adicionales. Marlowe está definido para proporcionar una serie de garantías por diseño: un contrato Marlowe sólo realizará un número finito de interacciones con su entorno, y su vida útil puede leerse en el código de un contrato; además cuando el contrato finaliza, los activos que posea se devuelven automáticamente a los participantes.
Cripto-préstamos
Un préstamo es una forma de deuda contraída por un individuo u otra entidad. El prestamista adelanta una suma de dinero al prestatario. A cambio, el prestatario acepta una serie de condiciones, incluidos los gastos de financiación, los intereses, la fecha de reembolso y otras condiciones.
Los préstamos respaldados por criptomonedas deben tener una garantía cuando no hay confianza entre la parte y la contraparte. Mientras que un préstamo se suele liquidar en una moneda estable (por ejemplo, USDT/USDC), la garantía suele estar denominada en una criptodivisa (por ejemplo, BTC). El propósito de este tipo de préstamo es dar al prestatario acceso a el valor fiduciario de sus cripto-fondos sin tener que venderlos por dinero fiduciario. El prestatario paga intereses a cambio de obtener liquidez.
Riesgo de contrapartida. Las configuraciones sin confianza, especialmente las del mundo de las criptomonedas incluyendo los contratos inteligentes descentralizados y los intercambios, no requieren confianza entre parte y la contraparte involucradas en un contrato. En el caso de un préstamo, esto significa literalmente que la contraparte no tiene ninguna obligación de devolver el dinero, lo que hace que el préstamo sea inútil para una de las partes. Estos riesgos suelen abordarse introduciendo colaterales, como en el siguiente escenario.
- Alice quiere pedir un préstamo de 1000 USD
- Tiene activos de Bitcoin que cuestan alrededor de 1500 USD, que pretende mantener a lo largo de un año, por lo que Alice tiene una gran confianza en el mercado (espera que los precios se dupliquen o tripliquen)
- Bob quiere prestar 1000 USD y obtener un interés superior al tradicional que ofrecen los bancos (digamos un 15% en lugar de un 10%). Él es bajista o neutral con respecto a Bitcoin.
- Alice transfiere su BTC como garantía a un contrato, y Bob transfiere su USD a Alice
- Si Alice paga los intereses y el capital a tiempo, y el precio del BTC no hace que la garantía no tenga valor, ella puede recuperar su garantía; de lo contrario, el préstamo se liquida y la garantía se transfiere a Bob.
ACTUS
Los Estándares Unificados de Tipos de Contratos Algorítmicos (ACTUS) definen la
lógica incorporada en los acuerdos legales que eventualmente convierten los términos del contrato en flujos de caja reales, o más generalmente en eventos comerciales. La mayoría de sus tipos de contratos básicos representan diferentes variaciones de los contratos de préstamo.
ACTUS ofrece la ventaja adicional de ser fácil de regular, y la fundación ACTUS proporciona un conjunto de herramientas que permiten realizar simulaciones de Monte-Carlo de los contratos ACTUS.
Generación de contratos Marlowe a de ACTUS
Los contratos de Marlowe son finitos, y en particular Marlowe no tiene construcciones para funciones o recursividad; éstas están disponibles en las incrustaciones de Haskell y JavaScript de Marlowe, pero son desenrolladas en la traducción a Marlowe puro.
Marlowe no permite contratos de duración indefinida, aunque su recursividad sea productiva, como sería el caso de un contrato de permuta perpetua, por ejemplo.
Por lo tanto, no podemos admitir ciertos tipos de contratos de la especificación ACTUS, concretamente los que no tienen una fecha de vencimiento definida.
El lenguaje Marlowe se diseñó explícitamente como un conjunto de bloques de construcción para contratos financieros que pudieran ser combinados por cualquier persona familiarizada con la programación básica.
Los generadores de Marlowe ACTUS mejoran esto al proporcionar una forma de combinar automáticamente los bloques basándose en los requisitos estandarizados especificados por el usuario. Además, Marlowe ACTUS ofrece un conjunto de herramientas para realizar pruebas cruzadas con la especificación original de ACTUS, un marco para añadir nuevos tipos de contratos, visualizaciones de flujos de caja y herramientas de verificación.
Tokenización
Cada participante de un contacto Marlowe se describe mediante un rol que, a su vez, está representado a través de un token único no fungible, creado en el momento en que el contrato se instancie en la blockchain. Esto hace que cada contrato ACTUS un valor negociable, permitiendo a un participante vender su participación en un contrato mediante la venta de un token de rol correspondiente.
Los tokens de rol pueden permitir potencialmente una manipulación más compleja sobre dichas acciones, especialmente cuando la acción representa un flujo de efectivo entrante; en ese caso los participantes envían fondos a una parte representada por un token determinado. Un token de este tipo representaría un flujo de caja positivo, que a su vez no sólo podría ser negociable, sino que también podría permitir la derivación de tokens que representen partes fraccionarias de un determinado flujo de caja en un contrato.
Además, este proceso convierte los préstamos del ACTUS en derivados. Por ejemplo contratos como el Swap (intercambio) de tipos de Interés (y los Swaps en general) podrían ser aproximados por un Swap atómico de tokens que representan los flujos de caja entrantes de los préstamos. En ejemplo, si Alice tiene ingresos fijos de un préstamo, o alguna otra inversión, y Bob tiene ingresos comparables pero variables (fluctuantes), Bob puede cubrirse intercambiando flujos de efectivo con Alice. Si los ingresos de Alice están bloqueados con el token1 y los de Bob está bloqueado con el token2, entonces un intercambio atómico de esos tokens es equivalente a un intercambio de flujos de efectivo.