Traducción al español de “Marlowe 3: financial contracts”
Publicado en el canal de Youtube de Simon Thompson el 15 de Abril de 2020
Enlace a la versión doblada al español
En este video lo que me gustaría hacer es hablar de contratos financieros como se describen en un DSL, así que estamos pensando sólo en los contratos financieros, aún no sobre cómo funcionan en la blockchain, así que voy introducir este lenguaje y luego en un video siguiente veremos cómo tiene que ser adaptado si queremos que funcione en una blockchain, bien, empecemos. Bueno, una de las razones por las que queremos mirar un contrato financiero sobre blockchain era que había una cantidad sustancial de trabajo, realmente en las últimas dos décadas, han estado mirando cómo los contratos pueden ser descritos usando lenguajes de dominio específico, una de las primeras piezas de trabajo fueron de Simon Peyton Jones, John Mack y Julian Seward de los académicos e industriales trabajando en este área y lo que hemos hecho, lo que haré ahora, es mostrarte una variante de lo que hicieron, el tipo de cosas que necesitamos expresar en un lenguaje de contrato financiero.
El contrato en el que estamos pensando aquí es lo que se llama un contrato de garantía, Alice quiere comprarle un gato a Bob puedes ver que Alice tiene el dinero, Bob tiene el gato, pero ninguno confía en el otro, así que te puedes imaginar la situación, Alice pone el dinero, Bob no le da el gato, así que ella pierde su dinero, Bob entrega el gato y Alice no le paga, así que él pierde su gato, ¿cómo se pueden asegurar, cuando hay una falta de confianza, de que el contrato se ejecuta correctamente? Bueno, la respuesta aquí es que tenemos un contrato de tres personas que implica un amigo mutuo de confianza, así que Alice conoce a Carol, Bob conoce a Carol y ambos Alice y Bob confían en Carol. Así que podemos escribir un contrato que asegurará que o el gato se transfiere y el dinero se transfiere o ninguno de los dos, así que veamos cómo esto funciona.
Alice primero pone el dinero en el contrato y entonces esperamos a ver si Bob le transfiere el gato a ella. Alice y Bob en este punto preguntan ¿están de acuerdo en que ambos hicieron la transferencia?, en el caso de que lo hagan, el dinero puede ser liberado y transferido a Bob, así que tanto si Alice como Bob están de acuerdo en esa situación no hay ningún problema. Pero retrocediendo, supongamos que Alice pone el el dinero y espera, espera al gato pero ella no recibe el gato, así que no quiere hacer el pago, Bob quiere recibir el dinero, así que no están de acuerdo, ella no quiere liberar el dinero, él quiere, así que, ¿qué pasa?, lo que pasa ahora es que Carol intervendrá y Carol dirá “oh bueno, puedo ver que en esta situación Alice quiere su dinero de vuelta y eso es lo correcto”, ella debería recibir su dinero de vuelta así que en este caso Carol hace esa decisión y el dinero puede ser devuelto a Alice. Así que, ¿qué estamos viendo aquí?, estamos viendo dinero depositado en un contrato, vemos pagos siendo realizados, vemos elecciones siendo tomadas por múltiples participantes, así que veamos cómo se ve en un ejemplo de contrato de ejemplo.
Aquí podemos ver una manera en que podemos escribir este contrato y dice cuándo esperar por Alice para hacer una elección, cuándo esperar por Bob para hacer una elección y luego dice que si lo que Alice ha elegido es lo mismo que lo que Bob ha elegido, hacemos lo que ellos han acordado, de otra manera tenemos que arbitrar, así que hemos llegado aquí y lo que he hecho es, en la primera versión que viste, estoy diciendo que hay un contrato de acuerdo, podemos expandir eso para ver lo que dice, lo que dice es que “si” Alice ha elegido hacer el pago, entonces hacemos un pago de Alice a la parte Bob del precio y si Alice no ha elegido hacer un pago, entonces el contrato sólo se cierra porque nada ocurrirá y cualquier dinero que quede en el contrato será devuelto, en este caso el dinero será devuelto a Alice.
Así que aquí tenemos un contrato y pueden ver las cosas que se ilustran aquí en rosa, estas son las partes constituyentes, el combinador en el que el contrato se hace. De modo que con el “cuándo” esperamos que algo suceda, con un “si” comprobamos “¿se mantiene una condición particular?” si lo hace hacemos una cosa, si no hacemos algo más. Y una de las cosas que a menudo hacemos es hacer un pago y luego tenemos un punto en el que el contrato se cierra y algo de dinero puede quedar en el contrato y ese dinero se devuelve a las personas que originalmente lo pusieron.
Así que ahí tenemos nuestro contrato de garantía en una vista general, así que sólo para recorrer con un poco más de detalle lo que cada una de estas cosas hace el “cuando” espera que algo suceda, en este caso una elección de Alice y cuando esa elección ha sucedido, hace lo que el resto del contrato dice que se debería hacer. En este caso tenemos un “si”, comprobamos ¿es la elección que hizo Alice de hacer un pago?, si lo es, el pago va de Alice a Bob, si no, cerramos el contrato. Y, como dije, la última cosa que vemos aquí es que, justo en el corazón de estas cosas, es que nuestros pagos se hagan de una persona a otra. Así que ahí tenemos en esencia lo que un lenguaje de contrato financiero hace. Lo que haremos a continuación es echar un vistazo, dar un paso atrás, y decir bien “¿cómo podríamos adaptar esto cuando nos movemos en el mundo blockchain, qué podría ser diferente ?”