43

Cómo funciona Ethereum: conceptos básicos para entender

14496Puntos

hace 3 años

Ethereum, la máquina del infinito, el corazón de las dapps, es hoy por hoy la blockchain con más usuarios activos en el mundo. Muchos de estos usuarios interactúan todos los días con esta supercomputadora decentralizada al comprar NFTs, hacer stake en protocolos de DeFi, o enviar tokens ERC-20, pero desafortunadamente solo una minoría conoce cómo funciona la blockchainen la que están construidos.

Si bien no es necesario que todos los usuarios de la red conozcan a profundidad cómo funciona  la red de Ethereum, si lo es para aquellos que deseen programar en la Web 3.0.

Por esta razón, en este artículo vamos a adentrarnos en cada uno de los pilares que hicieron a esta blockchain capaz de soportar la infraestructura de la web descentralizada.

Antes de comenzar siquiera a describir la blockchain de Ethereum debemos de conocer la razón por la que fue creada: la ejecución de los Smart Contracts.

Aprender sobre Ethereum es solo el inicio. Explora más con nuestros cursos de blockchain.

¿Qué son los Smart Contracts?

Un Smart Contract  es un contrato programable y ejecutable realizado entre dos o más partes. El ingeniero, abogado y cypherpunk, Nick Szabo, autor del término, lo define así:

“Un contrato inteligente es un protocolo de transacción computarizado que ejecuta los términos de un contrato. Los objetivos generales del diseño de contratos inteligentes son satisfacer condiciones contractuales comunes, minimizar las excepciones tanto maliciosas como accidentales y minimizar la necesidad de intermediarios de confianza. Los objetivos económicos relacionados incluyen reducir las pérdidas por fraude, los costos de arbitraje y ejecución, y otros costos de transacción” —Nick Szabo, 1994

En 1994, año en el que Szabo creo el concepto de contratos inteligentes no existía la tecnología que permitiese ejecutarlos de manera descentralizada, por lo que se pensaban como un recurso extra de la ley, ya que solo un tribunal de justicia podría garantizar su inmutabilidad. No fue hasta 2009 que Satoshi Nakamoto pudo darle vida a la idea de Szabo sin la necesidad de un intermediario, a través de la creación de Bitcoin.

¿Entonces bitcoin tiene Smart Contracts?

Si, Bitcoin al igual que Ethereum tiene  smart contracts.

Tal vez no te diste cuenta pero operaciones a las que estamos acostumbrados como Transacciones de tipo multifirma, Atomic Swaps o Lightning Network cumplen con las condiciones de un Contrato Inteligente. Si bien está es una implementación ingeniosa, lo cierto es que con bitcoin nunca podrían haber alcanzado su máximo potencial, pues el lenguaje con el que son escritos no es Turing Complete.

Un lenguaje Turing Complete para Blockchain

En definición, un lenguaje Turing Complete es aquel que tiene un poder computacional equivalente a la máquina de Turing universal. Entre los lenguajes que pertenecen a clase podemos mencionar a Python, Javascript o C++, y por otro lado están los que como HTML, no lo son.

Bitcoin Script, el lenguaje del protocolo de Bitcoin tampoco es un lenguaje Turing Complete, esto se debe a que no se puede escribir loops con su sintaxis. Esto es bastante peculiar, pero es así debido a que Satoshi Nakamoto quería evitar un problema que en computacion es conocido como el Halting Problem.

El Halting Problem o Problema de Parada  se refiere a la imposibilidad de una máquina de determinar si un programa finalizará en algún momento o correrá para siempre antes de ejecutarlo. Esta problemática sucede en cualquier Maquina de Turing o computadora, de hecho, tu mismo puedes experimentarlo corriendo este código en la consola de tu navegador:

while(true){

console.log(‘Esto es un loop’);
}

Lo que hace este código es ejecutar  un bucle infinito en tu navegador,  el cual no tiene forma de saber que no tiene condiciones que lo detengan en algún momento, por lo cual en teoría, correrá eternamente. Es precisamente esto a lo que Satoshi le temía, pues al incluir loops en Bitcoin Script corría el riesgo que un usuario malicioso enviará un script como el anterior congelando la red por completo, por ello decidió omitirlos. No obstante, fue hasta 2013 que un programador franco- canadiense se atrevería a colocar un lenguaje Turing Complete en una blockchain: Vitalik Buterin. Veamos como lo hizo.

La Ethereum Virtual Machine: volviendo finito lo infinito

La problemática que se enfrentó Buterin al crear Ethereum era crucial y se resume en una pregunta:

¿Cómo evito que un usuario malicioso congele la red con un loop infinito?

Si bien no puedes evitar que un usuario envie un script con un bucle infinito, ya que es una red abierta, si puedes evitar que haga daño poniendo límites para la ejecución de ese y cualquier otro codigo. Para establecer ese limite dentro de la ejecucion de Smart Contracts, Vitalik crearia dos conceptos fundamentales para Blokchain: La Ethereum Virtual Machine y el Gas.

La EVM o Ethereum Virtual Machine es el motor de la blockchain de Ethereum capaz de validar transacciones y ejecutar un lenguaje Turing Complete. Cada uno de los procesos ejecutados en su núcleo tiene un costo contabilizado en una unidad de medida la cual se denomina gas.

Por ejemplo, cada vez que interactúas con un Smart Contract de DeFi, compras un NFT, o juegas en Axie Infinity estás utilizando el poder de cómputo de la EVM, por tanto estas “quemando gas”. Cada unidad de gas tiene un precio que es pagado en forma de comisiones con el token nativo de la plataforma: “El Ether”. Veamos cómo se compaginan estos conceptos en una transacción.

eth.png
DIagrama de ejecucion de la Ethereum Virtual Machine

Imaginemos una transacción en la blockchain de Ethereum, en la cual  Alice desea enviarle 10 ethers a Bob. Lo primero que Alice tiene que hacer es poner la dirección Bob y  el monto que desea enviar . Después, tendrá que especificar dos parámetros más: El Gas Limit y el Gas Price.  Veamos en qué consiste cada uno.

En Ethereum, el Gas Limit es un estimado de las unidades de gas a gastar al ejecutar la transacción. Pongamos este parámetro con un valor 25000. Si la cantidad de gas que se necesita para ejecutar la operación es mayor a la especificada en el Gas Limit, la EVM detendrá el proceso al justo al llegar a 25000 unidades de gas  y la transacción no se validará. Por otro lado si el gas “quemado” es menor o igual al Gas Limit, la transacción se validará y se propagara por toda la red.

Conociendo el funcionamiento del Gas Limit podemos deducir que es prácticamente imposible ejecutar un loop infinito dentro de la EVM. Al momento de establecer este parámetro con un valor arbitrario, por muy alto que este fuese, digamos por ejemplo 1 millón, ya sabemos de antemano que se detendrá y se invalidará una vez que este proceso gasta 1 millón de unidades de gas. En conclusión, cada vez que le establecemos el Gas Limit estamos poniendo un límite para que no se ejecuten procesos infinitos**. Un hechizo simple pero inquebrantable.**

Por último tenemos el Gas Price, que es el precio a pagar por cada unidad de gas quemado en la transacción. Supongamos que  estamos dispuestos a pagar 0,0000001 ethers por unidad de gas y la transacción utiliza 25000 unidades. Ahora solo queda multiplicar estas dos cantidades (Gas Price x Gas Limit) y de esta forma obtendremos la comisión de la transacción, la cual  será de 0.0025 ethers.

eth-gast.png

Gas Limit y Gas Price en Metamask

Una vez establecidos la cuenta de destino, el monto y la comisión por transacción determinada por el Gas Price y el Gas Limit podemos firmar la transacción con nuestra llave privada y transmitirla a la blockchain.

Los nodos, quienes ejecutan una instancia de la EVM, reciben y ejecutan la transacción, y si esta tiene el suficiente gas se validará y se propagara a través de los demás nodos. Posteriormente, la transacción llegará a un minero que la incluirá en un bloque más o menos pronto dependiendo que tan alto haya sido el valor establecido en el Gas Price.

Finalmente, cuando el bloque que lleva nuestra transacción se propague por toda la red podremos dar finalizada la operación, ya que se habrá incluido en la blockchain satisfactoriamente.

Cryptocositas

Si llegaste hasta aqui te felicito: ¡Ya conoces los fundamentos de Ethereum!

Ahora conoces conceptos como Smart Contracts, EVM, Gas, los cuales te ayudaran de inicio en tu camino para convertirte en un desarrollador de la Web 3.0.

Por último, no olvidemos que Platzi no da consejos de inversión, este contenido es netamente educativo. Recuerda hacer tu propia investigación antes de tomar decisiones de inversión y que tenemos un audiocurso de Historia de Ethereum y Smart Contracts.

En Platzi, tenemos una comunidad increíble de Cryptocositas. En dónde nuestra misión es aprender juntos día a día. Sin consejos de inversión, sin tomar el camino fácil, compartiendo con todos nuestro conocimiento y siendo parte de este ecosistema que va más allá del #hold o #tothemoon sino de la posibilidad de ser parte de una tecnología que está y va a revolucionar el mundo.

Esto es apenas la punta del iceberg, pero si deseas que profundicemos algún tema en próximas entregas o tienes alguna duda, déjela en los comentarios

Francisco Javier
Francisco Javier
mengeroshi

14496Puntos

hace 3 años

Todas sus entradas
Escribe tu comentario
+ 2
Ordenar por:
3
13307Puntos

muy interesante, como abogado me interesa

2
15373Puntos

Justo lo que buscaba, no había entendido por qué existía el gas. También había googleado lo de Turing complete y no lo había entendido.
Excelente explicación

2
13270Puntos

Hay un pequeño error ya que Vitalik Buterin es de nacionalidad rusa, estudió en Canadá eso si.

1
5002Puntos

Muy muy interesante. ¿Existe algun curso en platzi de Criptomonedas y Blockchain?

1
13427Puntos
3 años

Existe toda una escuela dedicada al tema, puedes revisar los cursos aqui:
https://platzi.com/blockchain-criptomonedas/
Con tomar los primeros cursos ya tienes la informacion suficiente para invertir en crytomonedas (solo si te sobra un dinero extra).
Saludos.

1
3781Puntos

Tengo un proyecto, o tenía, para desarrollarlo en la web, Html, CSS, Javascript, etc. ¿Lo puedo pensar ahora en la web3, y esto implicaría olvidarse de Html, y el desarrollo implica aprender toda la tecnología cryptográfica, bitcoin, ether, smartcontrac?

4
29956Puntos
3 años

Con HTML, CSS y Javascript desarrollas la interfaz gráfica con la cual el usuario va interactuar, por lo que aún vas a utilizarlos para ese apartado (Front-End). Para desarrollar la parte del servidor (Back-End), al ya no ser un servidor centralizado, hay pasos distintos en la implementación y ahí entra lo que son las tecnologías de Web3.