Entendiendo los contratos inteligentes | Introducción

Gabriel Pérez
4 min readMay 21, 2021

--

La importancia que se le da al precio de monedas cómo ETHER o BNB, opaca la real importancia de estos blockchain, los cuales tienen el potencial de revolucionar muchas industrias de formas que aún ni hemos imaginado.

El objetivo de esta serie es introducir al mundo de los contratos inteligentes, y de ser posible, generar la curiosidad necesaria para empezar algún proyecto.

Si ya conoces estos conceptos básicos te invito a pasar a la parte 2, donde empezaremos a aplicar estos conocimientos.

Ethereum

Originalmente lanzado en 2015, es el primer blockchain en implementar contratos inteligentes. Su ecosistema ha dado lugar a desarrollos de multiples conceptos tales como tokens, stablecoins, DAO (organizaciones autónomas descentralizadas), DeFi (finanzas descentralizadas) o las tan famosas NFT (non-fungible token, o esos memes que se venden por sumas increíbles).

Su influencia es tal, que otros blockchains (TRON, Binance smart chain, entre otros) han desarrollado contratos inteligentes compatibles con los de Ethereum.

Contratos inteligentes

Los contratos inteligentes no son nada más que códigos que corren en la maquina virtual de Ethereum (EVM). Los resultados de la ejecución de estos contratos se guarda en el blockchain, permitiendo interacciones más complejas que simples transferencias de saldo.

Al igual que las billeteras personales, los contratos inteligentes tienen una dirección que los identifica de forma única.

Solidity

Es el lenguaje en que se escriben los contratos inteligentes, el cual es posteriormente compilado a bytecode que es lo que finalmente ejecuta la EVM.

Un ejemplo simple es el siguiente contrato, el cual tiene una método para dividir una monto entre 2 personas (2 address).

La gran diferencia que podemos notar respecto a otros lenguajes en este simple ejemplo es el uso del modifier payable , el cual nos da la posibilidad de enviar ether a este método, ese ether nos llega mediante msg.value , el cual lo dividimos de entre 2 y lo transferimos a las direcciones correspondientes.

Gas

Como podemos imaginar, cada ejecución toma distinto tiempo de procesamiento, dependiendo de tanto la implementación del código, como los parámetros con que se ejecute el código. Para tener esto en cuenta, cada ejecución gasta gas, gas es una medida estándar de este procesamiento.

Por ejemplo, imaginemos que una habitación gasta 1 litro de parafina (o 1 gas) para calentarse durante un día, luego, siempre sabremos cuanta parafina necesitaremos para calentar esa misma habitación, en cambio, el precio de la parafina es lo que fluctúa, haciendo imposible saber en términos monetarios cuanto nos va a costar calentar la habitación por un día, pero sí saber cuanta parafina nos costará.

Tal cual, existe un gas price en Ethereum, el cual esta determinado por oferta (de los mineros) y demanda (de los usuarios). Podemos ver un gráfico de su precio histórico aquí.

Volviendo a nuestro ejemplo, vamos a usar 3 direcciones, donde la primera va a repartir 10 ETH entre las 2 siguientes direcciones.

Podemos ver en los detalles de la transacción, que usamos 37845 de gas.

Si volvemos a usar el mismo método con otro valor, por ejemplo 12 ETH, el gas usado sigue siendo el mismo.

ETH, GWEI, WEI?

Ether es la moneda nativa de Ethereum, algo así como el dólar de los contratos inteligentes. Tal como existe el dólar y los centavos, aquí existen los ethers y los WEI.

1 WEI es la denominación más baja posible y equivale a 10^-18 ETH.

En nuestro ejemplo anterior, msg.value llegaba en WEI, el gas price de las transacciones anteriores también está en WEI, etc.

GWEI viene de gigawei, lo que equivale a 10^-9 ETH y es generalmente usado para medir el gas price .

Finalmente, 1 ETH = 10^9 GWEI = 10^18 WEI.

Redes

Probablemente hayas leído que X proyecto fue desplegado en alguna testnet (Ropsten, Rinkeby, Kovan o Goerli por ejemplo).

Esto se debe a que en realidad en cualquier momento, cualquier persona puede crear una nueva red (ver Ganache) en donde puedes probar tus contratos con ether de esa red.

Entonces por qué no hay un mercado de ether de Ropsten por ejemplo?

Esto se debe a que al no ser la red principal (mainnet), no tiene la validez de la mainnet, además estos ether son regalados para poder hacer pruebas, por lo que no tienen ningún valor comercial.

Generalmente los contratos se prueban en una red local, luego en una testnet y finalmente se despliegan a la mainnet.

Conclusión

Después de la lectura de esta primera parte se espera tener un entendimiento claro de conceptos básicos de los contratos inteligentes en Ethereum. En la siguiente parte ahondaremos más en las aplicaciones y estándares existentes, así también como herramientas para desarrollo y despliegue de estos contratos.

En concreto, hablaremos sobre qué son los tokens ( ERC20 ) y las NFT ( ERC721 ) y desarrollaremos nuestros propios tokens y NFTs.

--

--