Un contrato es un acuerdo entre personas. Los contratos están escritos en español, inglés, francés, etc., pero un contrato inteligente o “Smart Contract” está escrito en un lenguaje de programación como Javascript, PHP o Solidity.
La forma en que nos aseguramos que un contrato se cumpla es con confianza, abogados, jueces, o con los pacos si es necesario. La forma en que uno se asegura de que un contrato inteligente se lleve a cabo es publicándolo en un blockchain como el de Ethereum.
El de Ethereum, al igual que cualquier blockchain, es un almacén de datos compartido entre muchos computadores, donde cada computador participante puede ver toda la información. La gracia de un blockchain como el de Ethereum es que cualquier persona puede agregar ahí el código de un contrato y estar muy confiado de que nadie podrá eliminarlo. Además puede estar seguro de que se ejecutará: ni siquiera el dueño de uno de los computadores que operan el blockchain podrá evitarlo.
El código de un contrato dentro del blockchain de Ethereum sólo puede modificar cosas en el mismo almacén de datos. No puede interactuar directamente con cosas que están fuera del blockchain. (Aunque se puede lograr que un smart contract mande un email, no se puede asegurar que lo hará, porque para enviar el email tiene que usar un servicio externo cuyo dueño tal vez podría bloquear el envío del email si es que no le gusta lo que dice.)
Pero en el blockchain de Ethereum no solo se guardan contratos, sino también cuentas con Ethers. Los Ethers tienen un valor económico y ahí es donde se pone interesante el asunto: lo que sí puede hacer un smart contract es enviar dinero a distintas cuentas de destino dependiendo de lo que diga su código. Dicho de otra forma, un “contrato inteligente” es una forma de automatizar el funcionamiento de una billetera de Ethers. Un contrato inteligente podría decir, por ejemplo, que cuando el dueño de los fondos intente enviarlos a otro lugar, el sistema espere 2 minutos antes de que realmente se haga la transferencia, pudiendo así el dueño cancelarlo si es que se equivocó. Otro contrato podría decir que si el monto que se intenta enviar es mayor a 10 Ethers, entonces se necesita la firma de otra persona para gastar la plata. Como estas, hay muchas otras cosas que se pueden lograr con un contrato inteligente que maneja plata.
Lo que finalmente hace un contrato inteligente con la plata también podría depender de cosas que pasan fuera del blockchain, pero para que eso resulte, el contrato debe definir ciertas fuentes de dato confiables conocidas como “Oráculos”.
Por ejemplo, un contrato inteligente podría funcionar como un seguro de vida:
- Para ser parte del contrato debes depositar 10 Ethers a la dirección del contrato e informarle la dirección Ether de tu señora.
- El código dice que si el oráculo nos informa que estás muerto, se le pagarán 100 Ethers a tu señora.
- El oráculo es un computador que está continuamente mirando el obituario en la web del diario. Cuando ve tu nombre ahí, le avisa al contrato y el contrato ejecuta el depósito a tu señora.
Como probablemente te darás cuenta, este ejemplo tiene fallas importantes: Si llegaras a tomar control del oráculo, podrías hacer que éste le mienta al smart contract y así lograr irte de vacaciones con tu señora y los 100 Ethers. Por otro lado, si llegas a convencer a El Mercurio de que publique tu nombre en el obituario aunque sigas vivo, también puedes lograr burlar el sistema.
Este es justo uno de los temas que hoy necesita trabajo en el mundo de los smart contracts: ¿Cómo asegurarnos de que un oráculo sea confiable? Hay avances interesantes.
Aunque hay mucho más de qué hablar, voy a dejarlo hasta acá. Creo que es suficiente información para digerir y ya sabes lo que es y lo que no es un smart contract!
Join the conversation.