En este primer artículo de Desarrollo aprenderemos como crear nuestra primera aplicación descentralizada con Ethereum.

Para empezar, si vamos a la página oficial de Ethereum, podemos ver qué es un Smart Contract, una aplicación distribuida que en vez de ejecutarse en un sólo servidor y hacer que los demás se conecten a esta app, el Smart Contract se ejecuta en cada servidor o nodo de la red Ethereum.

Estas aplicaciones se ejecutan en una Ethereum Virtual Machine que se encuentra en cada nodo del blockchain. No está sólo en un sandbox, sino que de hecho esta completamente aislada, lo que significa que el código que se ejecuta dentro del EVM no tiene acceso a internet, el sistema de archivos u otros procesos. De hecho, los smart contracts tienen incluso acceso limitado a otros smart contracts.

Los contratos viven en el blockchain en un formato binario especifico de Ethereum (EVM bytecode). Aunque los contratos se escriben en un lenguaje de alto nivel para Ethereum, compilado en código binario utilizando el compilador EVM y finalmente subido al blockchain usando un cliente Ethereum.

Una vez nuestra app se despliegue en el blockchain, no podrá ser parada o modificada en el tiempo a no ser que la implementación de nuestra app así lo indique en alguna de sus operaciones.

La programación de estos Dapps se encuentra disponible en varios lenguajes como JavaScript y Python. Solidity es el lenguaje de alto nivel más avanzado y utilizado por el momento para crear Smart Contracts.

También existen herramientas de linea de comandos para trabajar con la red Ethereum, uno de los clientes más famoso está escrito en Go, se llama Geth o go-ethereum.

Existe una gran variedad de proyectos creados por la comunidad ejecutándose actualmente en el blockchain de Ethereum, échale un vistazo a esta página para encontrar algunos de ellos.

Por lo que una vez hecha la introducción, vamos a crear nuestro primer Smart Contract, para ello vamos a abrir un IDE online, Browser Solidity, ya que el contrato que crearemos será sencillo y nos será suficiente con esta herramienta que simula un entorno de Blockchain completo en el navegador.

Como hemos comentado anteriormente, al desplegar un contrato en el blockchain, no hay forma de pararlo a no ser que esté implementado en su código. Por lo que vamos a crear un contrato sencillo que almacene la dirección del creador y que tenga una función kill() que acabe con el contrato y que solo pueda ejecutarla esa dirección.

pragma solidity ^0.4.15;

contract CryptoXContract {
address creator;

function CryptoXContract() {
creator = msg.sender;
}

function getCreator() constant returns (address) {
return creator;
}

function kill() {
if (msg.sender == creator) {
suicide(creator);
}
}
}

Una vez publicado el contrato en una dirección del blockchain, nos aparecerán los métodos del contrato en el entorno de desarrollo y como nuestra dirección ha sido la que ha creado el contrato, podemos llamar a la función kill y esperar a que la transacción sea minada para que se produzca la destrucción del contrato.

En un próximo artículo aprenderemos cómo desplegar nuestros contratos en la red real de Ethereum utilizando Mist en vez de usar un entorno de pruebas como Browser Solidity.