Smart Contract

octubre 31, 2019 - 10 minutes read

Para entender que es un smart contract, recordaremos lo que significa un contrato. Un acuerdo no es más que un trato entre 2 o más partes. Un smart contract o acuerdo inteligente, se ejecuta y se hace cumplir por sí mismo. Esto de manera autónoma y automática, sin intermediarios ni mediadores. Pero ¿de qué trata un smart contract? Estos se tratan de scripts informáticos, escritos en lenguajes de programación, haciendo que los términos del contrato sean puras sentencias y comandos en el código que lo forman.

También este como un contrato convencional puede ser llamado por personas físicas o jurídicas. Un smart contract tiene validez sin depender de las autoridades, debido a su naturaleza. Es un código visible por todos y no se puede modificar al existir sobre tecnología blockchain, esto debido a su carácter descentralizado, inmutable y transparente. Lo destacable de esto es que, al estar distribuido, se evita así que una gran compañía los custodie, elimina la burocracia censuras y los grandes costos y tiempos implícitos en este proceso.

Los primeros contratos inteligentes

La primera vez que se tiene constancia de forma pública sobre los Smart Contracts es a través de Nick Szabo, jurista y criptógrafo Nick Szabo que mencionó públicamente el término en un documento en 1995. Dos años después, en 1997, desarrolló un documento mucho más detallado explicando los Smart Contracts. El problema es que este no contaba con la infraestructura adecuada y demoró alrededor de 15 años para volverse realidad. Debido a este acontecimiento se cree que él fue el padre de la primera moneda virtual que todos conocemos como Bitcoin, pero solo son teorías de la comunidad.

Un Smart Contract no es lo que piensas

Hoy en día todo está controlado por sistemas informáticos. Todo interactuar con ellos. En el desarrollo de aplicaciones es normal que los programadores creen una serie de “puertas” a su aplicación (llamadas APIs) con las que otros programadores pueden entrar a tu aplicación para crear y obtener información. Casi todas las web o programas tienen las suyas. Es decir, se define un protocolo, un contrato, una forma conocida en la que se llama a la aplicación con una estructura de datos, por la cual vamos a obtener una respuesta, pero con la estructura de datos predecible, en este caso para que no falle la comunicación, y consiga los programas. Sin embargo,  no está garantizado, el servidor de la aplicación está controlado por alguien que tiene la capacidad de hacer que mañana el programa funcione diferente. Está centralizado y puede mutar la decisión de ese tercero. No es “Smart”. La gente necesita entornos predecibles, transparentes e incorruptibles.

Los smart contracts son pedazos de códigos similares, es decir tienen formas de llamarlos y obtener respuestas, tienen un contrato, pero además son inmutables pues están distribuidos en miles de nodos que no pueden alterar su contenido. De esa forma obtienes un programa que siempre va a actuar de la misma manera sin requerir de la buena voluntad de ese tercero, algo que para casi cualquier caso de uso es necesario. Los Smart Contracts son programas en la nube que siempre actúan igual, y permiten almacenar información que no puede ser modificada a traición. Son los programas más seguros jamás creados en la humanidad y solo fallan cuando están mal programados.

Peligros de un smart contract

Los Smart Contracts son capaces de gestionar activos digitales, sujetos a un determinado valor económico, por lo que en realidad los Smart Contracts pueden gestionar dinero. Esto requiere que se haga especial énfasis en la correcta programación del mismo, pues el Smart Contract podría tener fallos de seguridad o fallos que generasen errores de ejecución o comportamientos inesperados. Cuando esto ocurre el dinero puede perderse por completo, ha ocurrido pocas veces, y sin el Know How suficiente les seguirá ocurriendo a muchas iniciativas. Lamentablemente esto ocurre con frecuencia, por lo que es realmente importante prestar especial atención en el desarrollo y testeo de estas piezas de software.

¿Cómo se realiza un smart contract en BTC?

Para que todo esto sea posible, tiene que haber un proceso completamente seguro que garantice que, al menos dos partes, puedan ejecutar el contrato sin necesidad de confiar uno en el otro. Los contratos utilizan el sistema descentralizado de Bitcoin para hacer cumplir acuerdos financieros sin dependencia de agentes externos, como sistemas judiciales, disminuyendo el riesgo de tratar con entidades desconocidas en transacciones financieras. Existen varios pasos para la creación de smart contracts seguros. Ejemplifiquemos con el caso de realizar depósitos seguros en cualquier página web que acepte bitcoins. ¿A nadie le gusta perder su dinero, verdad?

-El usuario y la página web se envían entre sí una clave pública recién generada.

-El usuario crea la primera transacción sin transmitirla poniendo por ejemplo 5 BTC en un output que requiere tanto el usuario como el sitio web para firmarlo.

-El usuario envía el hash de la primera transacción a la página web.

El portal crea una segunda transacción correspondiente al contrato. En esta segunda transacción se gasta la primera y se devuelve al usuario a través de la dirección que proporcionó en el primer paso, pero cómo la primera transacción requería dos firmas (usuario y página web) esta operación todavía no estaría completa. Aquí es donde toma importancia un nuevo parámetro: nLockTime. Este se puede añadir en una transacción de bitcoin estableciendo una fecha futura, por ejemplo 6 meses, antes de esta fecha, esos fondos no se podrían incorporar en ninguna transacción. El Sequence Number del input también se pone a 0.

Finalmente, la transacción sin firmar por completo se devolvería al usuario y este comprobaría que todo está correcto y que las monedas volverían a su posesión. Eso sí, tras los 6 meses que se estipularon con nLockTime. Al tener el Sequence Number en 0, este contrato podría ser modificado en un futuro si ambas partes así lo creen conveniente. Pero claro… si los administradores de la página web desaparecen, ¿cómo podría el usuario recuperar los fondos?

Hay que tener en cuenta que él script del input (instrucciones grabadas en cada transacción) todavía no ha finalizado. El espacio reservado para la firma del usuario todavía está formado por un conjunto de ceros después de que el portal creará la segunda transacción. Ahora tan sólo faltaría la firma del usuario en dicho contrato. A partir de aquí, tras los 6 meses que se delimitaron si se transmitirían tanto la primera como la segunda transacción y los 5 BTC de la primera transacción, se devolverían al usuario en cuestión.

En conjunto, todas estas características no solo permiten construir nuevas e interesantes herramientas financieras sobre la cadena de bloques Bitcoin, sino que, al estar cada contrato inteligente formado por personas o máquinas, las posibilidades de innovación para el ámbito del Internet of Things, Insurtech, Logística, Administración son tan amplias que es probable que empiecen a salir muy pronto las primeras killer app o aplicaciones revolucionarias de estos ámbitos.

Por: Martín Hernández