Pools de Mineria: qué son y como funciona la mineria

En este artículo voy a explicar cómo funciona la minería y cuál es el objetivo y funcionamiento general de las pools o grupos de minería. Esto incluye definir y aclarar en qué consisten conceptos como la dificultad de minería, la tasa de hashing, el esfuerzo, el descubrimiento de bloques, la recompensa, el rendimiento y cómo conectarse a un pool de minería.

En primer lugar: comprendiendo la emisión de criptomoneda

Las criptomonedas que se minan son emitidas por la red de la criptomoneda, según el ritmo de emisión de bloques por minuto indicado por el servidor principal de la criptomoneda. Para ello se sortea una recompensa de cierta cantidad de criptomonedas al primer minero que averigüe el hash del bloque. Los pasos que se siguen son estos:

  1. La red de la criptomoneda anuncia la emision de un nuevo bloque. Los mineros deben averiguar el hash del siguiente bloque que enlazará con este, para formar la blockchain. La red además anuncia la dificultad de cálculo del hash, y la recompensa que se llevará el minero que lo averigüe.
  2. Todos los mineros de la criptomoneda se pondrán a calcular posibles hash, pero sólo uno lo acertará, y ese se llevará la recompensa. Habitualmente, los mineros se agrupan, y en realidad, la recompensa se la repartirán de acuerdo a la cantidad de hashes que cada minero del grupo haya aportado hasta el acierto. Cuando se averigua el hash ganador, se dice que el bloque ha sido descubierto.
  3. La red determinará cada cierto número de bloques, si conviene o no elevar o reducir la dificultad de la criptomoneda. Ello se calcula en base a si los bloques han sido descubiertos mucho antes o mucho después de la velocidad a la que está planeado emitir la criptomoneda. Por ejemplo, si se espera que aparezca un bloque cada 10 minutos, pero éstos son descubiertos cada 5 minutos, antes de lo esperado, entonces la red de la criptomoneda aumentará la dificultad de los N siguientes bloques.

Este es el proceso general. Ahora vemos los detalles.

Los hash como boletos de la suerte

En realidad descubrir los bloques de criptomoneda es, en realidad, un sorteo, donde todos los mineros juegan.  Para tener opción a que todos los que juegan ganen algo, los mineros se agrupan en pools o grupos de minería, similares a las peñas de loterías o quinielísticas. De esa manera, la cantidad de jugadas o(o hashes) con posibilidad de ganar se incrementa.

Sin entrar en aburridos detalles técnicos (que contaré en otro artículo mucho más profundo), pero manteniendo intacta la idea de fondo, el hash ganador es un número que cumple cierta característica matemática. La problemática de averiguarlo estriba en que su cálculo está basado en ciertos campos del bloque a descubrir (como el timestamp, el nonce, el hash del bloque anterior, etc…), y un número (o números)  desconocido(s). Los mineros, generalmente usando un algoritmo de fuerza bruta, van probando  diferentes valores de ese o esos número desconocidos, combinados según una cierta regla (SHA-256, Ethash, Criptonight, etc ), y van generando hashes.  Es fácil saber si el hash es el hash ganador, pues basta con aplicar al mismo una sencilla regla matemática, y ver cuántos ceros consecutivos y a la izquierda tiene el resultado tras aplicar esa regla. Eso lo puede hacer el mismo minero. La dificultad del bloque está directamente relacionada con la cantidad de ceros a la izquierda de ese otro resultado.  Si la dificultad es pequeña, se necesitan pocos ceros, y si es alta, se requieren muchos ceros, lo cual es estadísticamente menos probable que ocurra.

Es imposible saber matemáticamente cuál es el hash que consigue el número de ceros indicado por la dificultad. Por tanto los mineros se basan en la velocidad de proceso y generación de hashes candidatos, para generar la mayor cantidad posible de opciones ganadoras. Cuanto más rápido sea el minero, más posibilidades tendrá de averiguar el hash que genere la cantidad de ceros mínima necesaria. El tipo de hardware de minería de que disponga el minero, así como el buen aprovechamiento que el software de minería hace de dicho hardware, determina la tasa de hash que produce el minero. Cabe resaltar una idea y es que el minero, por sí solo es capaz de darse cuenta de si ha conseguido un hash con la característica de dificultad necesaria para saber si es el ganador. Cuando eso es así, lo hace saber a la red, que inmediatamente solicita a todos los mineros que se pongan a buscar el hash ganador del siguiente bloque.

Para evitar que todos los mineros realicen los mismos cálculos de hash, el software de minería toma la dirección de la billeteras donde el minero recibe sus ganancias, como dato aleatorio a la hora de comenzar a hacer la búsqueda por fuerza bruta del hash ganador. Esta característica es importante sobre todo cuando los mineros se agrupan en pools de minería.

El papel de las pools de minería

Las pools de minería tienen varias funciones:

  1. La primera es comportarse como un único minero cara a la red de la criptomoneda, representando a todos los mineros que lo forman. El pool tiene un programa minero madre que se encarga de gestionar con la red el procesamiento de bloques.
  2. La segunda es repartir el trabajo de cálculo de hashes a los mineros. Estos encargos consisten pedir un hash con una dificultad inferior a la realmente necesaria. Los trabajos repartidos por el programa madre del pool de minería son de dificultad asumible por el hardware de minería de los mineros, en el tiempo de emisión de cada bloque. El minero de la pool, una vez recibe el encargo del pool, iterará el cálculo  de hashes en su hardware, descartando hashes que él mismo genere, hasta alcanzar uno que tenga la dificultad mínima que se le indicó (número de ceros a la izquierda del hash procesado). Es posible que, casualmente, el hash generado tenga mayor dificultad que la solicitada, lo cual podría significar que ese sea el hash ganador del bloque. Observar que si se pidiera a los mineros una dificultad igual a la del bloque, éstos tardarían mucho tiempo en resolver el hash ganador, y los mineros no obtendrían ningún beneficio de la asociación si todos a la vez trataran por sus medios de buscar el hash ganador, ya que si lo encontraran podrían minar en solitario y recibir integramente la recompensa.
  3. La tercera es recolectar los hash candidatos de los mineros y chequear si son el ganador, o si son hashes ya repetidos por parte de otro minero del pool, en cuyo casi sería rechazado. Estos hashes candidatos se llaman acciones (shares) en el argot de minería, y son también llamados PoW (Proof of work, prueba de trabajo en inglés). Si es nuevo, lo acepta aunque no sea el ganador, y lo contabiliza a efectos de reparto de ganancias. Lo que realmente se contabiliza es la dificultad encargada a cada minero, no la dificultad resultante de cada hash. Cuanto mayor sea la cantidad de dificultades de hash encargadas y resueltas, en relación al resto de compañeros del pool, mayor será el porcentaje de la recompensa del bloque que será destinado al minero (esto es así en el modo de cobro PPLNS, que un poco más abajo comento).
  4. La cuarta es repartir los pagos de recompensas proporcionalmente a los hash encargados. Habitualmente el pool establece un mínimo de la moneda antes de emitir un pago al minero. Además, el importe de las recompensas de los bloques descubiertos no son directamente utilizables por parte de los mineros recompensados, sino que son necesarios que un cierto número de bloques futuros sean descubiertos antes, segun las reglas de funcionamiento de la propia criptomoneda. Esto último se denomina madurez de un bloque. Por lo general hace falta el descubrimiento de 10 a 50 bloques posteriores para que los mineros afortunados dispongan de la recompensa. Por eso en el pool se notifica al minero el saldo pendiente de cobro, y el importe ya transferido a la billetera del minero.

Una vez un bloque ha sido descubierto en la red, el pool anuncia a todos los mineros este hecho y solicita el comienzo de la búsqueda del nuevo hash ganador, para el siguiente bloque.

¿Y cómo se cobra?

Existen dos grandes modalidades de cobro por parte de un minero de un pool:

  • PPS: (pay per share): el minero cobra por las acciones que emite a la pool, independientemente de si se descubre el bloque o no, y del ritmo del minero. Este método no es el método más rentable. Sin embargo, es un método ideal para hardware de minería relativamente poco potente.
  • PPLNS: (pay per last N share): El minero cobra cuando el pool ha conseguido colectivamente descubrir el bloque. En este modo se tienen en cuenta las N acciones del minero, con las correspondientes dificultades que fueron encargadas por la pool, para repartir la parte proporcional de la recompensa al minero. En época de bonanza, con un pool potente, que descubre con facilidad los bloques, este es un método muy rentable.

La tasa de hash global y su efecto en la dificultad

Cada pool de minería de una cierta criptomoneda realiza la contabilidad de las acciones que cada usuario o minero aporta, expresandolas en hash/segundo. Esa contabilidad la realiza por cada minero y para el conjunto de todos los mineros del pool. El cálculo instantaneo para un minero concreto (o de todos los mineros) se realiza así:

  • En primer lugar el pool determina una ventana de tiempo de una cierta duración en la cual va a considerar todas las acciones de ese minero. Esa ventana de tiempo es más o menos un orden de magnitud inferior al del tiempo estipulado para descubrir un bloque. Una duración típica de esa ventana de tiempo oscila entre 20 segundos y 1 minuto. Ese será el tiempo de promedio. Llamemosle INTERVALO, y se medirá en segundos.
  • En segundo lugar, el pool calculará la dificultad que ha sido resuelta mediante acciones exitosas, por parte del minero (o todos los mineros) dentro del intervalo de tiempo del punto anterior. Llamemosle a esa cantidad HASHES MINERO, y se calcula simplemente como la suma de las dificultades de las PoW devueltas exitosamente por el minero (o por todos los mineros del pool, en cuyo caso llamermos HASHES POOL), siempre dentro de la duración dada por INTERVALO. Se expresa en hashes. Suponiendo que hubiera N trabajos encargados por el pool al minero con dificultades diferentes, la cantidad de hashes del minero sería:

HASHES MINERO =  DIFICULTAD PoW1 + DIFICULTAD PoW2 + …. + DIFICULTAD PoW_N

Y de la pool sería, suponiendo que hubiera M mineros:

HASHES POOL =  HASHES MINERO 1 + HASHES MINERO 2 + …. + HASHES MINERO M

  • En tercer lugar , el pool calculará la tasa de hash del minero (o de todos los mineros), que llamaremos TASA HASH MINERO (o TASA HASH POOL para el caso de todos los mineros), expresada en hash/segundo (H/s) como:

TASA HASH MINERO = HASHES MINERO / INTERVALO

Y del pool en su globalidad:

TASA HASH POOL= HASHES POOL/ INTERVALO

  • Para la globalidad de la red se obtiene la tasa de hash de la red, formada por K pools (o mineros que minan en solitario), como

TASA HASH CRIPTOMONEDA =TASA HASH POOL 1 + TASA HASH POOL 2 + … + TASA HASH POOL K

El efecto que tiene una tasa de hash muy grande en una criptomoneda es que simplemente significa que hay un número muy grande de mineros trabajando en el cálculo del hash ganador, lo cual indica que hay mayor competencia entre los pools y que la recompensa del bloque descubierto se tendra que repartir entre muchos mineros. Pero además se produce otro efecto, derivado de la abundancia de mineros, y es que la dificultad del descubrimiento de un bloque se incrementará, para hacer que el ritmo al que los bloques se deben descubrir sea el estipulado por los creadores de la criptomoneda, sea éste de 1 bloque cada 10 minutos o un bloque cada 30 segundos. Por tanto, a mayor tasa de hash de la red global, mayor será la dificultad de la criptomoneda.

El esfuerzo y el rendimiento

Uno de los conceptos que se suelen encontrar en pools de minería es el esfuerzo (llamado a veces luck o effort en las web de las pools). Esta es una medida de cuánto está costando encontrar el siguiente bloque por parte del pool. Se mide como la suma de las dificultades de las acciones que se necesitaron por parte del pool para descubir el bloque (que llamaremos DIFICULTAD DEL POOL), dividido por la dificultad del bloque descubierto (DIFICULTAD DEL BLOQUE). Es decir:

ESFUERZO = DIFICULTAD DEL POOL / DIFICULTAD DEL BLOQUE

Si por ejemplo este valor fuera del 100% significa que hizo falta exactamente la misma cantidad de dificultades de acciones pedidas a los mineros por parte del pool, que la dificultad del bloque. Si hubiera sido del 1% significa que hicieron falta cien veces menos acciones de dificultades acumuladas entre todos los mineros, que la dificultad del bloque, lo cual es signo de buena suerte (luck, en inglés). Sin embargo si el esfuerzo tomara el valor del 300% significa que hizo falta tres veces más dificultades de acciones que la dificultad del bloque. Es habitual que el esfuerzo crezca bastante si el pool no ha conseguido descubrir varios bloques seguidos. Es algo normal, ya que no siempre va a ser la misma pool la que va a descubrir todos los bloques.

Otro término algo más complejo es el rendimiento. Esto tiene que ver con la cantidad de moneda fiat ($ USD, € euros, etc) que se pueden conseguir al día mediante la minería. Los factores que intervienen son:

  • La tasa de hash que el minero ofrece al pool. Cuanto mayor sea, más porcentaje de las recompensas le corresponde al minero. Llamemosle al porcentaje de la tasa del minero como MINERO, y es un número entre 0 y 1.
  • La tasa de hash que tiene el pool en relación a la totalidad de la red. Llamemosle al porcentaje de la tasa del pool en relación a la red como POOL, y es un número entre 0 y 1.
  • La velocidad de emisión de los bloques/recompensas: cuanto mayor sea, más veloz será la recolección de las partes proporcionales de las recompensas. Llamemosle VELOCIDAD y se medirá en bloques/minuto, o en bloques/dia.
  • El tamaño de las recompensas por bloque, que llamaremos BLOQUE y se medirá en criptodivisas, y
  • El precio de mercado de la criptomoneda, que llamaremos PRECIO, y se medirá en €/criptomonedas.

El rendimiento lo llamaremos RENDIMIENTO y se medirá en €/dia. Se puede calcular con estas sencillas operaciones:

RENDIMIENTO = MINERO x POOL x VELOCIDAD x BLOQUE x PRECIO

Las criptomonedas en los inicios de su emisión ofrecen una recompensa grande. Y además al ser relativamente desconocidas estas monedas tienen una baja tasa de hash global de la red, por lo que un minero tiene una participación relativamente grande en la minería de esas criptomonedas. Las criptomonedas además van reduciendo la recompensa a lo largo del tiempo de emisión de la moneda, por lo que el rendimiento podría reducirse. Para que sea rentable la minería de monedas donde la minería está muy madura, la opción es que el precio de la criptomoneda compense o sea sufucientemente alto como para resultar atractivo al minero, o bien disponer de un harware de minería muy potente en cuanto a la tasa de hash que puede producir.

Conectarse a una pool de minería

Para conectarse a una pool de minería, hacen falta los siguientes elementos:

  • Hardware de minería, que se encargará de realizar los cálculos de los hashes según la dificultad indicada por el pool, y generar las acciones. Los distintos tipos de minería existentes, según el hardware son a) basadas en CPU o procesadores de uso general, como por ejemplo los portátiles, móviles, tablets…, b) basadas en GPU o procesadores de gráficos, mas potentes que las CPUs o bien c) basadas en ASICs que son procesadores especialmente diseñados para realizar las operaciones de minería.
  • Software de minería, que se encargará de controlar el hardware para que realice los cálculos matemáticos, comunicarse con el pool y permitir al usuario elegir qué pool desea para minar, qué tipo de moneda, la dirección de la billetera a la que el pool nos enviará los pagos, entre otras opciones de uso.
  • Una billetera de la criptomoneda que deseemos minar. Muchos mineros suelen optar por utilizar la dirección de billetera que porporcionan los exchanges para realizar depósitos. En general esta no es una opción 100% fiable ya que estas direcciones son temporales.
  • Una pool de minería donde deseemos minar. Típicamente nos tendremos que dirigir a la página web de la pool donde se especifica el nombre del servidor y el puerto que el software de minería debe utilizar para acceder al pool.

Los pasos que deberemos seguir son:

  1. Instalar el software de minería en el hardware de minería.
  2. Configurar el software de minería, para indicar qué criptomoneda queremos minar, y la billetera donde queremos que nos realicen los pagos.
  3. Ejecutar el software de minería. Con esto ya estaremos minando.
  4. Monitorizar la marcha de la minería, lo cual se puede hacer midiante el acceso a la web del pool de minería. Así podermos ver estadísticas sobre cómo marcha nuestro minero (hardware y software) y nuestras ganancias. Esta parte de supervisión es muy importante, pues incluso puede que nos haga falta reiniciar el minero en caso de que haya tenido un problema de conexion.

Estos son los pasos que en general han de seguirse, pero lógicamente existen muchas configuraciones de hardware de minería (rigs de 6 GPUs, arrays de ASICs para diferentes algoritmos,…), y muchos posibles programas de minería (xmrig, smw-stak, etc, y cada uno de ellos requiere una extensa explicación de los detalles necesarios para poder ponerlo en marcha. En este artículo describo en todo detalle cómo poner en marcha uno de las configuraciones hardware más potentes del momento: un RIG de minería basada en 6 GPUs VEGA 56.

Diferencia entre la tasa de hash hardware y la tasa de hash entregada al pool

Un término que suele causar bastante confusión en los mineros es la diferencia entre la tasa de hash que el propio software de minería indica que es capaz de computar, y la tasa de hash que el pool detecta que un minero es capaz de producir. Pues bien, en realidad ambas son cosas bien diferentes.

Por un lado consideremos que la CPU/ASIC/GPU del harware de minería, con ayuda del software de minería, es capaz de realizar la generación de un cierto número de cálculos de hash a partir de los parámetros del bloque, los cuales son calculados en modo fuerza bruta, probando sucesivamente numeros aleatorios. La tasa de hash local es la cantidad de hashes candidatos a cumplir el criterio de dificultad indicado por el pool, que conjuntamente el software y el hardware del minero son capaces de generar, cada segundo. Esta tasa es mostrada por el sofware de minería que estamos ejecutando. Esta velocidad puede ser optimizada empleando técnicas de overclocking del hardware, optimizaciones en los procesos del software, la elección de la arquitectura hardware interna de los procesadores, la arquitectura del hardware en si (tamaños de memorias, buses de acceso a las mismas, flujos de datos de alta velocidad, etc…). El cálculo de estos hash tentativos se produce a un ritmo fijo, ya que son simples intentos que se calculan de manera sistemática con un proceso cíclico e incesante.

Por otro lado, cada vez que el minero detecta que ha conseguido encontrar por azar un hash con la dificultad que le indicó el pool, envía dicho hash. Ese azar es el que hace que el pool reciba de manera intermitente y en un momento impredecible, el hash del minero. Por tanto es fluctuante. Esta sería la tasa de hash del pool: la suma de la dificultad pedida al minero por cada segundo necesario para resolverla. Además, como antes indiqué, lo que valora el pool es la cantidad de dificultad que ha sido resuelta por el minero.

Muchas gracias por tu tiempo leyendo este artículo. Espero que te haya sido de utilidad y si quieres y te apetece, puedes dejar un comentario.

 

Fiscalidad de las criptomonedas

En el momento actual, no existe marco regulatorio en España (y en la práctica mayoría de paises del mundo) acerca del tratamiento fiscal/laboral de las criptomonedas. Existe, eso sí un interés creciente en el plano político, a nivel internacional, sobre este asunto. Ello tiene un signicado muy positivo acerca del futuro de las criptomonedas, ya que sólo pierde valor aquello a lo que se ignora. Y este no parece precisamente el caso. Por ello creo que las criptomonedas están llamadas al éxito, a pesar de los vaivenes de la cotización de las mismas, que son más resultado del tira ya floja propio de los mercados, que de una falta de interés generalizada.

Asimismo otra de las preocupaciones de los Estados es acerca de cómo el sector bancario encaja/está encajando/encajará la presencia de estos medios de pago y activos económicos. Evidentemente, los poderes políticos no van a ignorar la preocupación de la fuerza bancaria y tratarán de defender este importante estamento de la economía del mundo actual. Por tanto todo apunta a que la coexistencia bancos-criptomonedas será necesaria. Otras voces más osadas piensan que incluso las criptomonedas serán las únicas divisas del mundo, dentro de apenas 15 a 20 años.

Puede encontrarse noticias acerca del movimiento de estas ideas en prensa online especializada sobre criptomonedas como:

Como ciudadano de a pie, me pregunto cómo deberé tributar mis ganancias, bien por trading en los mercados de criptomoneda, bien por minería. Dos nuevos modelos retributivos vienen a mi mente:

  • Inversor de criptomonedas: ¿Cómo deberán declararse en un futuro este tipo de ganancias? ¿Tendrán un tratamiento fiscal favorable? ¿Será reconocida la figura del “trader” de criptomonedas?
  • Minero de criptomonedas: Esta es sin duda una profesión emergente, tanto en las facetas de explotar la capacidad de computo de un hardware especial, como en la faceta de facilitar las pools de minería o vender capacidad de cómputo en la red. Como profesión reconocida, ¿qué gastos serán susceptibles de ser declarables? ¿Existirá tratamiento fiscal si se consumen energías limpias para la minería?

Son muchas las preguntas a responder.  Y aún estamos muy el principio del sendero. Las criptomonedas han aparecido con fuerza y ahora debemos aprender a convivir con ellas. Mientras tanto, puedes contar con el asesoramiento de profesionales de la gestión económica y legal de empresas como Pérez Parras Economistas y abogados. Ellos pueden orientarte no sólo en este, sino en cualquier otro aspecto sobre la legislación de las tecnologías.

Por el momento mi postura personal, en espera de marco legal regulado, será la de declarar fiscalmente los beneficios en moneda corriente (en mi caso euros), que se produzcan como consecuencia del balance de ingresos menos gastos, cuando estos ingresos se obtengan por conversión de criptomoneda en moneda corriente. Creo que es lo más razonable y justo.

Si te ha gustado este artículo, y si quieres y te apetece, puedes dejar un comentario. Muchas gracias por tu tiempo y leer este artículo.