Contratos inteligentes

 





Si bien los contratos regulares presumiblemente han estado en uso desde que surgieron los alfabetos, el concepto de contrato inteligente solo existe desde hace un par de décadas y está inextricablemente unido con la tecnología blockchain.

El contrato inteligente de redacción fue utilizado por primera vez por el criptógrafo Nick Szabo en 1997, quien al año siguiente diseñó un mecanismo para una moneda digital descentralizada que llamó bit gold. Si bien nunca lo implementó, Bit Gold ha sido nombrado "un precursor directo de la arquitectura Bitcoin".

Más de una década después, el Ethereum Yellow Paper escrito por Gavin Wood, cofundador de Ethereum (la segunda criptomoneda más grande después de Bitcoin), describe los contratos inteligentes como "cumplimiento algorítmico de los acuerdos" y agrega que "el futuro de la ley se vería muy afectado". por dichos sistemas". El documento describe además cómo se pueden escribir contratos inteligentes utilizando Solidity, una "biblioteca de idiomas con similitudes con C y JavaScript" que ganó impulso progresivamente a medida que crecía la plataforma Ethereum.

Pero, ¿para qué puedo usar un contrato inteligente y cómo se ve?



Un caso de uso interesante está contenido en la patente presentada por Nasdaq sobre un cable de noticias basado en un contrato inteligente, que "publica" información solo en el momento programado o la empresa conjunta IBM-Maersk que tiene como objetivo hacer envíos globales sin papel mediante el uso de contratos inteligentes en lugar del rastro de papel regular. Un contrato inteligente podría usarse, por ejemplo, para asegurarse de que un pago se libere automáticamente, inmediatamente después de que se haya producido un determinado evento; otra aplicación es una plataforma de votación donde tanto la votación como el conteo se procesan mediante contratos inteligentes y se almacenan en una cadena de bloques a prueba de manipulaciones, al igual que el "piloto de Barcelona" de Decode.

Si echamos un vistazo más de cerca a Solidity, un contrato inteligente simple que envía criptomonedas, se parece más a un código de software (programa) que a un contrato regular:

contract GavCoin

{
mapping(address=>uint) balances;
uint constant totalCoins = 100000000000;

/// Endows creator of contract with 1m GAV.
function GavCoin(){
balances[msg.sender] = totalCoins;
}

/// Send $((valueInmGAV / 1000).fixed(0,3)) GAV from the account of $(message.caller.address()), to an account accessible only by $(to.address()).
function send(address to, uint256 valueInmGAV) {
if (balances[msg.sender] >= valueInmGAV) {
balances[to] += valueInmGAV;
balances[msg.sender] -= valueInmGAV;
}
}

/// getter function for the balance
function balance(address who) constant returns (uint256 balanceInmGAV) {
balanceInmGAV = balances[who];
}

}

Hoy en día se utilizan lenguajes de contratos inteligentes más avanzados, por ejemplo, Formalidad, que permite "pruebas formales" (puede probar que lo que se expresa es lo que se ejecuta), todavía presenta una sintaxis similar a un lenguaje de programación, lo que lo hace prácticamente inaccesible para no -programadores.

¿Qué es Zenroom y qué lo hace especial?




Zenroom es una creación del fundador de Dyne, Denis "Jaromil" Roio, cuyo interés en la criptografía abarca más de una década y su participación en la criptomoneda está marcada por varios compromisos importantes con el código fuente de Bitcoin, mientras estaba en su infancia. Zenroom proporciona la criptografía y la manipulación de datos confidenciales para todo el proyecto Decode, implementando el esquema de credenciales de Coconut desarrollado por UCL en 2018.

Zenroom implementa un intérprete de lenguaje natural (léase: "lenguaje humano simple tipicamente el inglés") basado en BDD, lo que hace que los contratos inteligentes se parezcan mucho más a los contratos de lápiz y papel a los que estamos acostumbrados. Un contrato inteligente simple de Zenroom que solicita un par de claves criptográficas y lo almacena localmente, se puede escribir en tres líneas:

Given that I am known as 'Citizen'
When I create my new credential request keypair
Then print all data


Un contrato inteligente más complejo, que permita votar por una petición, donde una autoridad digital verifique la elegibilidad de forma anónima y el resultado se almacene en una cadena de bloques, se vería así:

Given that I am known as 'Citizen'
and I have my keypair
and I have a signed credential
and I use the verification key by 'State Digital Authority'
When I aggregate all the verification keys
and I sign the petition 'To not build the wall'
Then print all data




Si bien cada línea de estos contratos inteligentes corresponde a varias líneas de lenguaje de programación, el contrato es fácil de entender para cualquier hablante de inglés y puede escribirse con una capacitación mínima, como se define en las especificaciones de implementación del piloto de Barcelona de Decode. Lo que es más importante, mientras que todos los demás lenguajes de contratos inteligentes se ejecutan dentro de Blockchain, Zenroom es una máquina virtual independiente, por lo que puede ejecutarse en un entorno independiente de Blockchain y puede usar un archivo o una base de datos regular para entrada/salida, opcionalmente junto con un cadena de bloques.


Zenroom también se destaca por su capacidad de operar "sin permiso" (en cualquier momento un nuevo nodo de blockchain debería ser capaz de interpretar el lenguaje y el código malévolo no debería afectar el sistema) y por ser "determinista" (cualquier nodo en la red puede verificar resultados de contratos ejecutados por otros nodos). Zenroom está escrito en lenguaje C: no necesita hardware específico y puede ejecutarse en una variedad de dispositivos, incluidas PC, teléfonos móviles, Raspberry Pi y placas ARM Cortex M de ultra bajo voltaje.

Comentarios

Entradas populares