🇪🇸 Breve Introducción a los Contratos Inteligentes | CH 17 Oct 2015

:es: Transcripción al español de “A Brief Introduction to Smart Contracts”

Publicado en el canal de Youtube de Charles Hoskinson el 17 de Octubre de 2015

Enlace a la versión doblada al español


Hola, soy Charles Hoskinson, director general de Input Output Hong Kong, y esta es una breve introducción a contratos inteligentes.

Así que, ¿qué son los contratos inteligentes y por qué debería importarnos, cómo comenzamos incluso a explicar eso? Yo encontré que la forma más fácil de comenzar a entender la noción de un contrato inteligente es primero pensar acerca de Bitcoin, mirar a Bitcoin en sí mismo. Lo que el protocolo Bitcoin realmente hace es permitir empujar pagos. Tienes a Alice y Bob, y Alice quiere empujar valor a Bob, ella va a hacer eso a través de una transacción. El valor de Alice está vinculado a una dirección, como lo está el valor de Bob, y la dirección de recepción no tiene riesgo de contraparte. Así que Alice es capaz de empujar valor a Bob y usualmente luego de 60 minutos o 6 confirmaciones la titularidad está probabilísticamente casi garantizada. Y este es un hermoso, muy elegante, muy simple protocolo de pago. La mayoría del foco de diseño e innovación que hemos visto durante los últimos seis años en Bitcoin se ha focalizado fuertemente en mejorar la seguridad de transacción, así como la robustez. Así que decimos que tenemos cosas como firmas multipartitas, tenemos cosas como billeteras jerárquicas, tenemos cosas como soluciones de almacenamiento en frío, incluso tenemos hardware especializado que nos permiten tener un alto grado de control sobre a quién le queremos enviar fondos y las condiciones detrás de ello, en términos de cuántos firmantes son requeridos, etc, así como también como cuánto valor va a ser almacenado. Pero uno de los grandes problemas es ¿qué pasa si quiero ampliarlo más allá de sólo firmas y de hecho quiero adjuntar reglas arbitrarias y un manual de instrucción detrás de esa transacción?

Así que por ejemplo digamos que Alice quiere empujar veinte dólares en valor de Bitcoin a Bob, sí y sólo sí Bob corta su césped. Bueno, desde la perspectiva de Bob tiene que saber que ella tiene esos fondos, y desde la perspectiva de Alice ella tiene que saber que el trabajo ha sido realizado. El protocolo central Bitcoin y cualquier otro protocolo derivado de las mismas mecánicas no tiene la suficiente robustez en su diseño para ser capaz de facilitar este tipo de transacción, e incluso si lo tiene, esa es una transacción muy especializada de sólo dos partes. Así que esto, en esencia, es la noción de un contrato inteligente, el modelo mental más efectivo, básicamente verlos como un flujo de valor, al igual que en Bitcoin Alice le está enviando valor a Bob o a otra fuente. En lugar de eso vamos adjuntar reglas a ese flujo de valor, así que en general, uno no puede utilizar ese valor a menos que esas reglas sean satisfechas, eso es realmente lo que es un contrato inteligente. Y hay dos grandes categorías de contratos inteligentes, hay contratos inteligentes determinísticos y contratos inteligentes no determinísticos. El principal diferenciador es básicamente si la red tiene información suficiente para determinar un resultado sin necesidad de información externa, pronto iremos en mucho más detalle sobre esto. En ambos casos, el objetivo general de los contratos inteligentes, en general, es usualmente tomar alguna forma de servicio centralizado o federado y descentralizar ese servicio, para incrementar transparencia, reducir la necesidad de confianza, y en muchos casos ganas mucha eficiencia económica porque ya no tienes que pagarle a un actor central para hacer algo. Así que en resumen esto es lo que es un contrato inteligente, básicamente es un flujo de valor de una parte a otra, con alguna clase de reglas adjuntadas a él y puedes separarlos en dos categorías, un caso determinístico y un caso no determinístico.

Así que primero examinemos el caso determinístico porque es más simple. El ejemplo canónico que uno generalmente utiliza para el caso determinístico es la idea de una lotería. Así que examinemos una lotería estándar, una lotería sin ningún contrato inteligente. En una lotería normal tendrás a Alice y Bob, son amigos, todos enviarán valor y seleccionarán algún conjunto de números a un actor central, que a su vez es confiado para almacenar esos fondos, eso se denomina confianza de custodio, y tiene que conducir un juego justo, eso se denomina confianza de la casa, así que de hecho estás confiando que un actor haga dos cosas separadas, almacenar el dinero así como también conducir un juego. El actor central ejecutará alguna clase de generador de número aleatorio y luego tendrá alguna forma de regla para determinar si hay algún ganador de la gente que ha presentado números. El gran asunto aquí es que tienes que confiar en un actor central, y han habido muchos, muchos, muchos casos de loterías siendo fraudulentas, y esto es típicamente porque están altamente reguladas. Y también porque usualmente los ganadores deben ser identificados, de lo contrario ¿cómo sabemos que la lotería de hecho le está pagando a la gente? Así que este es uno de los problemas con el sistema de lotería central, así que, ¿qué pasaría si pudiéramos construir una lotería con contratos inteligentes determinísticos, así que veamos eso.

Con un contrato inteligente determinístico Alice, Bob y sus amigos van a enviar valor junto con los números elegidos, así que esto en muchas formas se ve idéntico al modelo de transacción Bitcoin, y la dirección va a ser una dirección especial escogida específicamente para un contrato inteligente, así que van a enviar valor a ella. Y van a poner un conjunto de reglas y condiciones, tales como las reglas del juego, cómo va a funcionar la validación del ganador, cuánto tiempo serán almacenados los fondos, y otra información. Luego la red en sí misma va a ejecutar ese contrato de lotería y va a utilizar alguna clase de mecanismo para determinar aleatoriedad, tal como digamos el hash de un bloque a una altura predeterminada, así que podrías decir a una altura de 100 mil, toma el hash de ese bloque y la distancia XOR a ese hash, el que sea que esté más cerca será el ganador, este puede ser un ejemplo. Y hay muchas otras maneras de hacer esto, pero esta está considerada como una manera muy segura.

En cualquier evento lo que básicamente hemos hecho es crear una situación en la que Alice, Bob y las otras personas participando, ahora han enviado su valor a una dirección especializada, no a una parte central, la enviaron con reglas, y la red en sí misma tiene suficiente información para siempre ser capaz de determinar un ganador, y el pago a ese ganador está absolutamente garantizado. Esta es una idea realmente poderosa, para resolver una clase de problema simple. Nuestra ventaja, bueno, primero los participantes pueden ser anónimos, generalmente este no es caso con la mayoría de las loterías porque usualmente te gustaría saber que a los ganadores se les ha pagado, y a menos que tengas alguna clase de sistema blockchain detrás de ello es muy difícil verificar eso. Con una lotería basada en contratos inteligentes de hecho puedes. Segundo, las reglas y mecánicas pueden muy fácilmente ser cambiadas, simplemente cambiando el contrato inteligente, y eso se realiza de una manera muy transparente, pero puede ser realizado para de hecho agregar pagadores terceros tales como impuestos, también quizás algunas condiciones de observancia regulatoria para los participantes. Los pools de fondos sólo pueden ser gastados de la forma en que los participantes lo previeron. Así que toda la confianza de custodia es completamente removida, y ningún actor central tiene que ser pagado, esa es una enorme ventaja, porque muchos de estos actores centrales reciben tarifas y no agregan valor a la gente participando.

Ok, así que ese es un sentido determinístico, el sentido determinístico es muy simple, es sólo que Alice y otros actores enviarán su valor ya sea a otra persona o a una dirección especializada, adjuntarán reglas a esa transacción y la red en sí misma tiene medios suficientes para determinar cómo ese valor debe ser operado y gastado. Pero, ¿qué pasa si la red no tiene información suficiente?, este es el caso no determinístico, así que la red facilitando el contrato inteligente no posee suficiente conocimiento en sí mismo para de hecho decir quién es un ganador. Así que necesitas alguna clase de parte externa o fuente de confianza, y típicamente llamamos a esa parte externa un oráculo. Estos generalmente son los tipos de problemas que aparecen cuando estás hablando acerca de comportamiento humano, estás hablando acerca de ciertos eventos, estás hablando acerca de predicciones. Así que por ejemplo, si vos y tus amigos están teniendo un juego de bebida y le apuestas a alguna persona que no puede beber diez shots de alguna bebida, sin desmayarse, bueno, vos y tus amigos son testigos de eso, pero ¿cómo Bitcoin, Ethereum u otra red incluso conocerán ese evento? Así que este es un ejemplo de un contrato inteligente no determinístico, necesitas alguna clase de fuente de terceros, una fuente de confianza, para ser capaz de hacer un juicio de valor acerca de si ese evento ocurrió, o alguna información. Otra cosa podría ser el flujo de precios, ¿cuál es el valor de Bitcoin en términos de dólares de USA?, esto es algo que la red Bitcoin de hecho no puede saber, así que estos son problemas no determinísticos, y requieren un oráculo para resolverlo.

Así que el ejemplo canónico típicamente son apuestas deportivas, debido a que es el ejemplo más fácil para mantener en tu mente. Yo soy un gran fan de los Denver Broncos, me encantan los Broncos, con suerte ganen el súper tazón. No importa cuán duro yo lo intente o que bit yo proponga, no creo que en ningún momento cercano la red Bitcoin tendrá la habilidad de determinar si los Denver Broncos han ganado o perdido un juego, o las estadísticas de un jugador particular de los Broncos, esto es algo que simplemente está fuera de la red, y tengo que confiar en un tercero para importarlo. Así que mientras que los participantes pueden estar de acuerdo de una manera determinística acerca de reglas, términos y condiciones así como también las posibilidades y otros factores. En el caso no determinístico siempre tendrás que especificar alguna clase de oráculo para dar al contrato inteligente la información que requiere para esos términos, condiciones y reglas, para determinar quién ganó o cuánto valor va a fluir. Así que si los Broncos ganan o pierden yo necesito alguna clase de alimentación para decirle eso al contrato inteligente. La buena noticia sin embargo es que todas esas reglas, las probabilidades, y cómo la gente será pagada contingente a la victoria, eso pueden ser establecido deterministicamente, similar al contrato de lotería. Pero esto tiene un efecto reduciendo la seguridad del sistema, a básicamente la fiabilidad del oráculo en muchos sentidos.

Así que, ¿qué podemos hacer al respecto?, bueno podemos pensar cuidadosamente y quizás federar oráculos, o crear un proceso arbitrario, y esta es como la noción de proyectos como Truth Coin o Agar, y están utilizando ideas como análisis de componente principal, donde tratan de crear, utilizando matemáticas ingeniosas, maneras de reducir la confianza general, una que tendrías en una alimentación particular e incrementar la fiabilidad general de la alimentación de información. En general, es desafortunado pero cierto que las aplicaciones más deseables de contratos inteligentes, tales como crear monedas estables de valor, así que esa sería una moneda que estabiliza digamos al precio del dólar de USA, o al Euro, o construyendo una organización autónoma descentralizada, usualmente requieren algún grado de no determinismo. Pero en cualquier evento, incluso aunque los oráculos son centralizados, es realmente importante entender que una de las oportunidades de los contratos inteligentes es que en todos los casos, oráculos o no, remueve los riesgos de custodio, del pool de capital. Así incluso aunque quizás tengas que obtener información de una fuente de tercero, esa fuente de tercero de ninguna manera tiene que mantener custodia de los fondos, y esto reduce drásticamente la responsabilidad y reduce un montón de fraude. También es importante mencionar que ya hay servicios que proporcionan alimentación de precios de confianza y alimentación de información de confianza, no tienes que mirar más lejos que los terminales Bloomberg. Así que los contratos inteligentes no determinísticos de hecho encajan bien en los sistemas del legado.

Ok, así que pongamos todo junto, los contratos inteligentes son componibles, y lo que eso básicamente significa es que de hecho puedes tomar unidades fundamentales de comportamiento, tales como un generador de números al azar, o contrato de custodio, o un contrato de lotería, y de hecho puedes combinar estas cosas juntas para crear un comportamiento altamente complejo que es emergente de componentes estandarizados. Así que sabes que todos los componentes se comportan de cierto modo y si se ponen juntos como bloques Lego, de hecho pueden producir algo incluso mejor, y esa una característica increíblemente deseable de cualquier sistema. Segundo tu modelo de confianza siempre es entendible antes del flujo de valor, así que esa también es una característica muy poderosa. Generalmente cuando yo envio valor a un tercero, usualmente hay un montón de cosas ocurriendo detrás de la cortina y yo tengo como que tener esperanza de que la reputación sea buena, o tengo que tener esperanza de que la regulación sea buena, para que ellos se comporten de cierta manera. Pero con los contratos inteligentes, una de las características más poderosas es que generalmente tengo algún grado de control sobre ese modelo de confianza o al menos yo lo entiendo antes de incluso enviar una pieza de dinero, un flujo de fondos. El costo de cambiar las reglas también es muy bajo, así que no hay costo de menú aquí, simplemente puedes reescribir algo del código o cambiar algunos de los módulos que estás utilizando, y ahora puedes tener resultados completamente diferentes. El riesgo de custodio siempre puede ser tomado por la red alojando el contrato inteligente, esa es una característica muy poderosa porque ahora estamos separando las preocupaciones y permitiendo a la gente especializar y tener mucha menos responsabilidad.

Y la otra cosa asombrosa es que ninguna de las técnicas de anonimato de comunicación o transacciones que han sido desarrolladas para Bitcoin tienen que ser sacrificadas para utilizar contratos inteligentes. Así que puedes utilizar contratos inteligentes en tándem con servicios mezclados, o si cero efectivo fuera implementado, de hecho podría utilizarse junto, hay muchas características de composiciones de eso. Así que este un ejemplo de ejecutar una lotería anónima, o quizás un sistema de votación anónimo por ejemplo, donde de hecho puedes tener resultados determinísticos y predecibles, sin embargo no necesitas revelar la identidad de alguien para eso. Una de las desventajas, desafortunadamente, es que los oráculos son requeridos y representan problemas teóricos así como también problemas prácticos. Y hay un montón de investigación adicional que será requerida para reducir esas desventajas, y con suerte los proyectos Agar, Trust Coin y otros aparecerán con ideas geniales para hacer estos sistemas un poco más estandarizados y robustos. Así que aquí hay algunos recursos útiles, probablemente el punto de partida para la mayoría debería ser el documento de Nick Szabo sobre contratos inteligentes. Esto apareció en 1997, a menudo es considerado el primer trabajo académico sobre contratos inteligentes. Nick Szabo es considerado el padre de contratos inteligentes, hay una versión HTML de él en el sitio web del instituto Nakamoto aquí.

El proyecto Ethereum es el más grande y mejor financiado proyecto de contratos inteligentes en el mundo y aquí está su dirección web, altamente recomiendo ir ahí y mirar algo de su documentación. De hecho Ethereum ha desarrollado un lenguaje de contrato inteligente llamado Solidity, y la corporación Eris Industry ha sido lo suficientemente amable para crear una serie de tutoriales explicando cómo utilizar Solidity y escribir tus propios contratos inteligentes. Así que si estás interesado en esto y de hecho quieres comenzar a explorar cómo funcionan estas cosas con mayor detalle, hay un enlace al primer tutorial que se convierten en otros cuatro. También hay un asombroso libro de Tim Swanson, llamado la gran cadena de números o algo así, aquí está su dirección web, y creo que lo liberó bajo licencia de creativos comunes, así que altamente recomiendo leerlo.

Ok, bueno, eso es todo lo que tengo que decir acerca de contratos inteligentes, pueden contactarme en Twitter a través de IOHK_Charles, si tienen alguna pregunta sientánse libres de enviarme un mensaje directo o tuitiarme, o dejarme un comentario en Youtube. Muchas gracias por escuchar, y espero que esto los ayude a entender un poquito más acerca de cómo funcionan los contratos inteligentes y qué son, así como también quizás por qué pueden ser útiles.

1 Like