Warcry anuncia una gira por España y casualmente para por nuestra ciudad y nos apetece ir a verlo. En el anuncio indican que las entradas para el concierto se pueden adquirir en su página web. Accedemos al portal, rellenamos los campos, ponemos los datos de nuestra tarjeta, pagamos y nos llega al correo la entrada para el concierto. Este proceso realmente es un smart contract por el cual nosotros adquirimos el derecho a asistir al concierto de Warcry.
Índice de contenidos
Qué es un smart contract o «contrato inteligente?
Pues en realidad no es un contrato y no es inteligente, es un código que establece una serie de condiciones que se deben cumplir para habilitar unos beneficios para alguna de las partes.
Los smart contracts son propuestos en 1996 por parte de Nick Szabo, un científico informático, jurista y criptógrafo muy ligado a Bitcoin. Su propuesta busca ofrecer una herramienta que permita formalizar acuerdos entre partes para entornos de redes de ordenadores como pueda ser internet.
Estos smart contracts vendrían a ser aplicaciones que se ejecutan dentro de una blockchain. Se componen de una serie de acuerdos digitales que se deben cumplir obligatoriamente y que se basan en unas reglas concretas. Las reglas se establecen en un código informático que se distribuirá por toda la red.
Permiten los smart contracts que dos partes que no se conocen establezcan una serie de compromisos mediante una blockchain sin necesidad de un tercero confiable. Si las condiciones no se cumplen por las partes, el contrato no se liquidara. Un proceso mucho más sencillo, sin necesidad de terceros confiables, que no está limitado por fronteras y que reduce los costes y tiempo de constitución.
Cómo funciona un smart contract
Son programas que tienen una finalidad determinista, ejecutándose de manera continuada hasta que las condiciones establecidas se cumplen. Normalmente los smart contract se suelen basar en unas determinadas condiciones que permiten avanzar hasta el cumplimiento del mismo. Un ejemplo sencillo serían los videojuegos, en los cuales debes completar unas acciones para pasar al siguiente nivel y así hasta completarlo.
Los smart contract requieren de una blockchain donde almacenarse y ejecutarse, ya que realmente son fragmentos de código. En Ethereum los smart contracts se ejecutan y administran operaciones que se producen cuando direcciones (usuarios) interactúan entre ellos.
Todas las direcciones (de usuarios) en una blockchain que no son un smart contract reciben el nombre de cuenta externamente controlada (Externally Owned Account; EOA). Las EOAs lo que hacen es controlar el código informático que establecen las condiciones y características de los smart contracts.
Un smart contract en cualquier blockchain se basa en un código que determinada unas acciones y un conjunto de claves públicas. Se deben dar al menos dos claves públicas, la del creador del contrato inteligente y la del propio contrato, que hace el papel de identificador único.
Se realiza luego una ejecución del mismo mediante una transacción en la blockchain elegida. El smart contract solo se ejecutará cuando sea llamado por una EOA o por otros contratos inteligentes.
Características de los smart contracts
Presentan el siguiente conjunto de características únicas:
- Distribuidos: Cualquier smart contract es replicado y distribuido por todos los nodos conectados a la red. Se garantiza que todos tengan una copia de las condiciones establecidas y no se puedan cambiar a voluntad por una de las partes
- Determinísticos: Únicamente pueden realizar acciones para las que ha sido diseñado, pero solo cuando las condiciones dadas se cumplen. El resultado final no variará nunca, sin importar quien lo ejecute
- Autónomo: Tienen la capacidad de automatizar cualquier tipo de tarea, funcionando como un programa con autoejecutables. Normalmente si un smart contract no recibe una activación, este permanecerá en espera y no hará nada
- Inmutable: Cuando son lanzados a la red estos ya no pueden ser modificados. Una vez desplegados solo pueden ser eliminados, siempre y cuando se haya implementado esta función particular previamente
- Personalizables: Tienen la capacidad de poder ajustar el código antes de ser lanzados para que hagan lo que deseamos. Se pueden utilizar para la creación de diferentes tipos de aplicaciones descentralizadas (DApps).
- Trustless: Estos no se requieren de terceras partes de confianza que verifiquen la integridad del proceso y que se cumplan las condiciones marcadas. Además, la tecnología blockchain es valedora de la precisión de los datos
- Transparentes: Se almacenan siempre en una blockchain pública, así que el código puede ser visto por todos, sean o no participantes en el smart contract
Se puede eliminar un smart contract
La realidad es que los smart contract tienen la capacidad de ser eliminados, si así se ha programado. Dentro de la blockchain de Ethereum los smart contract pueden añadir una función en el código que es: SELFDESTRUCT. Esta implementación en el código permite borrar el contrato inteligente en el futuro si se detecta un error o sustituirlo por uno nuevo. Si no se añade este elemento, el smart contrat jamás se podrá borrar
Se puede modificar un smart contract
No. Una vez el smart contract está lanzado no puede ser modificado. Normalmente lo que se hace es que un contrato inteligente realice llamadas a otros contratos inteligentes con funciones determinadas. Esto nos permite borrar un smart contrat (si hemos habilitado la opción de borrado) concreto para sustituir un smart contract por otro nuevo más completo o mejorado.
Qué podemos crear con un smart contract
El límite de las capacidades de un smart contract lo pone la capacidad de imaginación de las personas y la habilidad de un/unos programadores para crear el código.
Bitcoin presenta algunas dificultades en cuanto a la creación y despliegue de smart contracts que se corregirá con Taproot, en gran parte. Ethereum por su parte permite la creación, despliegue y ejecución sin límites técnicos gracias a su EMV de tipo Turing completo, que a grandes rasgos funciona como un gran ordenador descentralizado.
Dentro de Bitcoin las implementaciones más habituales son las Colores Coins, una especie de tokens con prestaciones y capacidades más limitadas que en Ethereum.
Ethereum por otro lado permite crear smart contracts muy ricos y que permiten hacer una enorme cantidad de cosas. Se pueden crear organizaciones autónomas descentralizadas (DAO), aplicaciones descentralizadas (DApps), tokens fungibles y no fungibles (NFT, por ejemplo), aplicaciones de finanzas descentralizadas (DeFi), exchange descentralizadas (DEX) y todo lo que podamos imaginar.
Problemas de los smart contracts
Son código. Cualquier software, juego o sistema operativo tienen código y es fácil que presenten diferentes tipos de problemas. Los smart contract no son más que código y son desarrollados por personas, así que pueden tener fallos que pueden terminar siendo catastróficos.
The DAO, una organización autónoma descentralizada creada basándose en un smart contract fue hackeada en 2016 debido a un fallo en el contrato inteligente desarrollado para su creación. Esto permitió a un atacante robar nada más y nada menos que 3.6 millones de ether (moneda de la blockchain de Ethereum).
Precisamente que estos contratos inteligentes sean inmutables hace que un fallo en el código no se pueda corregir. Es por esto que normalmente si se quiere crear un smart conract muy complejo se divida en una gran cantidad de estos, por si alguno presentara algún fallo de seguridad poder suprimirlo y lanzar uno nuevo que funcione correctamente.
Palabras finales sobre los smart contracts
Debe quedar claro que pese a su nombre no son ni un contrato (en el sentido convencional del término) ni son inteligentes. Son simplemente código que tiene una serie de condiciones establecida por él o los desarrolladores del mismo.
La particularidad que los hace tan atractivos es que son inmutables, por lo que una vez lanzados no se pueden modificar las variables que lo rigen. Aunque se pueden eliminar, siempre que se habilite esta función y si se detecta algún problema en el código o se quieran añadir funcionalidades.
Te recomendamos nuestro artículo sobre qué es y cómo funciona Ethereum
Sus capacidades y posibilidades son infinitas, simplemente limitadas por la imaginación de los desarrolladores y la capacidad de sintetizarlo en un código. Puede ser que alguna blockchain, como la de Bitcoin, tenga algunas limitaciones en cuanto a soporte o facilidad de creación y despliegue de los smart contracts.