lunes, 22 de marzo de 2021

A minar Ethers

ūüéĶ Cavar cavar cavar cavar, en la mina quiero yo... ūüéĶ

Creo que la mayor parte de la gente que trabaja en tecnolog√≠a ya sabe que es una blockchain, por tanto no vamos a centrarnos en contar qu√© es, sino como es el proceso de minado en la blockchain de Ethereum. El proceso de minado es aquel con el que se van a realizar una serie de cambios en los datos que se almacenan en la blockchain. 

Todo empieza enviando transacciones a los nodos de la blockchain. Una transacci√≥n consiste en una modificaci√≥n de la blockchain, por ejemplo para cambiar el saldo de las cuentas o para cambiar el estado de los smart contracts.

En el caso de Ethereum podemos enviar estas transacciones a dos tipos de cuentas:

  • Cuenta de contrato: cuenta donde se encuentra el c√≥digo de un smart contract. Se env√≠an transacciones a este tipo de cuentas con el prop√≥sito de ejecutar una parte del c√≥digo.
  • Cuenta externa: una cuenta donde se almacenan los Ethers y que controla una persona. Se usa para enviar, recibir y almacenar criptomonedas.

Ambas transacciones quedan registradas en la blockchain, y podemos verlas en tiempo real desde la p√°gina de Etherscan.


Al enviar las transacciones, estas se quedan en estado pendiente hasta que los mineros las seleccionan para a√Īadirlas al siguiente bloque. Esta selecci√≥n se basa en el beneficio que les vayan a reportar las transacciones elegidas. Siempre escoger√°n primero aquellas que m√°s gas vayan a utilizar y en las que el precio dispuesto a gastar por cada unidad de gas sea mayor, para obtener el mayor beneficio posible por bloque.




El gas es b√°sicamente una unidad que mide la capacidad de computaci√≥n necesaria para realizar las transacciones y podemos encontrar el coste en unidades de gas de cada operaci√≥n que haya que utilizar al realizar la transacci√≥n en el Ap√©ndice G del yellow paper de Ethereum. Este concepto permite que la blockchain sea m√°s segura evitando por ejemplo el ataque del 51% adem√°s de que las unidades de gas * precio de gas es una parte de la recompensa que se va a llevar el minero por minar un bloque.



Un bloque es un almac√©n donde se van a guardar permanentemente las transacciones que no se han a√Īadido anteriormente en otro bloque. Se puede ver como una una hoja de un libro de contabilidad donde se van apuntando las entradas y salidas y se lleva un control del saldo de cada cuenta.

No solo se guardan las transacciones, tambi√©n se guarda otra serie de datos como el n√ļmero del bloque, el total del gas utilizado, el nonce (que ahora explicar√©), el hash del bloque anterior...



Una vez que se han a√Īadido las transacciones al bloque, comienza el proceso de minado. En Ethereum se usa el algoritmo de consenso de Proof of Work (PoW) o prueba de trabajo, por tanto los mineros tienen que calcular un hash a partir de toda la informaci√≥n que guarda el bloque. El problema matem√°tico a resolver para que el bloque se considere minado correctamente es que dicho hash tiene que representar un valor num√©rico menor a un n√ļmero X dado, y para ello solo pueden ir modificando el campo del nonce.

El n√ļmero X va cambiando dependiendo de la dificultad del bloque, que a su vez va cambiando seg√ļn el tiempo medio de minado de un bloque que deber√≠a de estar entre 10 y 15 segundos. Si el tiempo medio de los bloques supera los 15 segundos entonces la dificultad del bloque baja, y por el contrario, si el tiempo medio baja de 10 segundos, la dificultad aumentar√° haciendo que la X sea un n√ļmero m√°s grande o m√°s peque√Īo.

Debido a que este algoritmo de consenso no es muy sostenible, Ethereum cambiar√° pr√≥ximamente su algoritmo de consenso dejando atr√°s el  de PoW para empezar a utilizar el de Proof of Stake (PoS) o prueba de participaci√≥n.


Resuelto el problema que se pide, el minero tiene que avisar al resto de nodos de que ya ha terminado para que los demás comprueben que el bloque es válido. Para ello les envía el nuevo bloque.

El resto de nodos seg√ļn van recibiendo el bloque minado, tienen que validar que el problema se ha resuelto correctamente, adem√°s de comprobar que las transacciones que van en el bloque se pueden realizar, es decir, que tienen el saldo necesario para realizar el cambio de estado en la blockchain.


Si el resto de nodos validan el bloque entonces este se a√Īade definitivamente a la blockchain y el minero recibir√° su recompensa: 2 Ethers + el gas total utilizado para realizar los cambios de estado en la blockchain.

Y una vez terminado este proceso, los nodos empiezan de nuevo la carrera por ser los primeros en minar el siguiente bloque de la blockchain para llevarse su recompensa.

Uyy, esto me gusta, voy a poner mi ordenador a minar... Dado que actualmente hay empresas que se dedican exclusivamente a la miner√≠a, no tiene mucho sentido poner nuestros ordenadores a minar en esta blockchain ya que es muy improbable que una √ļnica m√°quina consiga resolver el problema propuesto antes que todas aquellas que trabajan en armon√≠a para estas empresas mineras.

ūüéĶ Ay ho, ay ho la hora ya lleg√≥... ay ho, ay ho, a casa vuelvo yo..ūüéĶ 

0 Comments:

Publicar un comentario