Los smart contracts, o contratos inteligentes, son códigos informáticos, escritos con lenguajes de programación. Facilitan y ejecutan acuerdos entre dos o más partes. Ayudan en la negociación y definición de estos acuerdos, que especificarán que ciertas acciones sucedan bajo ciertos parámetros. 

***

¿Qué son los smart contracts?

En español se llaman contratos inteligentes.  Son códigos informáticos, escritos con lenguajes de programación, que facilitan y ejecutan acuerdos registrados entre dos o más partes. Ayudan en la negociación y definición de estos acuerdos, que especificarán que ciertas acciones sucedan bajo ciertos parámetros.

Se trata de una serie de instrucciones almacenadas en Blockchain.

Mientras que los contratos jurídicos tradicionales, tales como los conocemos, requieren, para ser validados, de la presencia de un notario o mediador que los certifique, los smart contracts son capaces de ejecutarse y hacerse cumplir por sí mismos, de manera autónoma y automática. No necesitan de estos intermediarios humanos o institucionales.  Asimismo logran evitar la confusión que puede devenir de la interpretación humana, pues no es verbal ni escrito en los lenguajes que hablamos, sino que se trata de scripts o códigos informáticos. Ello significa que los términos del contrato son comandos.

Un smart contract puede ser creado por personas, pero también por máquinas que funcionan de manera autónoma.  Tiene validez propia, no depende de una institución: es un código visible que vive en la tecnología Blockchain. Por lo tanto es descentralizado, inmutable y transparente.

¿Quién creó el término?

El término “smart contracts” lo creó el informático Nick Szabo, alrededor de 1993, para el diseño de protocolos de comercio electrónico entre extraños en Internet.

Antes de Blockchain no existía ninguna plataforma que pudiera hacer realidad los contratos inteligentes, por lo que únicamente estaban definidos conceptualmente. Bitcoin en sí mismo es un ejemplo de un contrato inteligente.  Allí las reglas de juego están codificadas y aceptadas por sus participantes.

Por su parte, Ethereum entre otras plataformas, permite crear contratos inteligentes Turing completos (significa que cualquier programa que se pueda crear en un computador estándar, es también posible de ser programado aquí) y también almacenar el código fuente en su cadena de bloques. Así crea una infinidad de programas que se ejecutarán en cada computador de la red y que tendrán todos los beneficios de la tecnología Blockchain.

Ethereum y smart contracts

Ethereum es la plataforma más reconocida en el sector de los smart contracts. Es una plataforma open source, descentralizada, que permite ejecutar contratos inteligentes P2P (entre los nodos, sin servidores centrales) en una máquina virtual descentralizada llamada Ethereum Virtual Machine (EVM).

Ethereum ha creado un intérprete de lenguaje de programación que permite añadir lógica mucho más compleja dentro del Blockchain. Con Ethereum los smarts contracts son programas con muchas más funcionalidades y posibilidades.

La red Ethereum funciona de manera descentralizada a través de una máquina virtual llamada Ethereum Virtual Machine (EVM). Esta máquina ejecuta un código intermedio o bytecode el cual es una mezcla de LISP, ensamblador y bitcoin script.

Ethereum no es como la mayoría de las criptodivisas existentes, ya que no es solamente una red para reflejar las transacciones de valor monetario, sino que es una red para la alimentación de los contratos basados en Ethereum. Estos contratos de código abierto se pueden usar para ejecutar de forma segura una amplia variedad de servicios, entre los que se incluyen: sistemas de votación, intercambios financieros, plataformas de micromecenazgo, propiedad intelectual y organizaciones descentralizadas autónomas.

Asimismo, en Ethereum, los desarrolladores también escriben la lógica de negocio y acuerdos en forma de contratos inteligentes. Estos se ejecutan automáticamente cuando sus condiciones son satisfechas por ambas partes e informadas a la red. Estos contratos pueden almacenar datos, enviar y recibir transacciones e interactuar con otros contratos, independientemente de cualquier control.

Smart Contracts y Solidity

Solidity es un lenguaje de programación orientado a objetos para escribir contratos inteligentes. Se utiliza para implementar contratos inteligentes en varias plataformas de Blockchain, sobre todo, Ethereum.

En la actualidad, es el lenguaje principal en Ethereum, así como en otras Blockchains privadas que se ejecutan en plataformas que compiten con Ethereum.

Asimismo, se trata de un lenguaje de programación estático diseñado para desarrollar contratos inteligentes que se ejecutan en la Ethereum Virtual Machine (EVM). Con Solidity, los desarrolladores pueden escribir aplicaciones que implementan la lógica empresarial autoimpulsada incorporada en contratos inteligentes, dejando un registro de transacciones no repudiable y autoritario.

Ejemplo de Solidity

Aquí un ejemplo del lenguaje Solidity tomado de Solidity.es

solidity
Ejemplo de lenguaje Solidity. Fuente: Solidity-es

La primera línea indica que el código fuente se escribió en la versión 0.4.0 de Solidity o en otra superior. Esto garantiza que el contrato no se comportará de una forma diferente con una versión más nueva del compilador. La palabra “pragma” al inicio se llama así porque, en general, los “pragmas” son instrucciones para el compilador que indican como este debe operar con el código fuente.

Un contrato para Solidity es una colección de código y datos que residen en una dirección específica en el Blockchain de Ethereum. La línea “uint storedData” declara una variable de estado llamada storedData del tipo uint.  Se entiende como una parte única en una base de datos que puede ser consultada o modificada llamando a funciones del código que gestiona dicha base de datos. En el caso de Ethereum, este es siempre el contrato propietario. Y en este caso, las funciones set y get se pueden usar para modificar o consultar el valor de la variable

 

Artículo de DiarioBitcoin

 

« Volver al índice del glosario