Conceptos teóricos del minado de criptomonedas


#1

La minacion de criptomonedas trata de un proceso a través del cual las transacciones de criptomoneda se verifican y se ofrecen nuevas unidades.

El objetivo de la minería o mineros es recopilar las últimas transacciones en bloques (es decir, conjuntos de transacciones verificadas) y así poder encontrar una solución a un complejo algoritmo. Esto se hace para obtener una recompensa: una cantidad fija de criptomoneda. Esta cantidad varía según la criptomoneda en la que se trabaje; la recompensa de bitcoin, por ejemplo, es actualmente de 12,5 bitcoins.

La solución a este algoritmo supone un proceso continuo y dependiendo de los resultados de algoritmos anteriores para poder realizar el siguiente cálculo. De igual modo, la dificultad del algoritmo puede ser (y es) ajustada frecuentemente, con el fin de hacer que el trabajo de los mineros sea constante -y aunque la capacidad de procesamiento vaya mejorando. Esto se asemeja al ritmo al que materias primas como el oro entran en el mercado (de ahí el término ‘minar’).


#2

Te he editado el titulo, minacion queda raro.
Venga, me animo yo, voy a intentar explicar el concepto de hasheo de la mineria de forma esquematica y lo mas sencillo que pueda.
Lo primero es entender que es un hash. Un hash, segun la Wikipedia:

Es decir, con cualquier entrada que le pongamos, vamos a obtener una salida de una longitud determinada por el algoritmo que usemos. No importa que pongamos 1 carácter o todo el Quijote, siempre nos devolverá una cadena alfanumérica de una determinada longitud. Además, un cambio en un solo carácter, altera por completo el hash, un hash es facil calcular a partir de una entrada, pero a partir de una salida es imposible saber que entrada lo ha generado. Bien, teniendo esto claro, seguimos. Un minero, para validar un bloque, ha de calcular un hash que como minimo cumpla con la dificultad establecida. La dificultad al calculo de un hash valido para Bitcoin se añade exigiendo que el hash en cuestion empiece por un determinado n° de 0’s. Por ejemplo este es el hash del ultimo bloque minado:
000000000000000000139a2e2dd336fdb403c9ab765129e7761d149e183fc7a5.
Para calcular este hash, se toman distintos valores:
-El hash del bloque anterior
-El hash de cada transaccion incluida en el bloque (en realidad un hash que resume todos los hashes de todas las transacciones incuidas, se conoce como Merkle Root)
-Un numero aleatorio conocido como Nonce. Se usa para introducir una variable en los datos del bloque y asi poder buscar un hash valido.
El hash del ultimo bloque y el merkle root son 2 numeros fijos, los cuales, si hasheamos, lo mas probable es que no de un un hash con una dificultad igual o superior a la exigida. Asi que lo que hacen los mineros es añadir el Nonce a los otros 2 datos y se hashea, si el hash resultante no llega a la dificultad establecida, se prueba con otro nonce hasta que se consiga un hash que si cumpla la dificultad. La dificultad sirve para que, como encontrar un hash valido es cuestion de probabilidad, y a mas minero antes se encontrara, mantener el ritmo de 1 bloque cada 10 minutos que marca el protocolo. Nótese, que como todos los hashes estan al final relacionados, un solo cambio en una transaccion en un bloque ya validado, haria que todos los hashes calculados a posteriori fueran erroneos, de ahi la fortaleza del sistema. Espero que se entienda algo, si no es asi, decirlo e intento explicar mejor algunas partes.