Mastering Bitcoin
10. Minería y Consenso » Minería y la Carrera de Hashing » Pools de Minería
Página 77 de 98
Minería y la Carrera de Hashing
La minería bitcoin es una industria extremadamente competitiva. La potencia de hash se ha incrementado exponencialmente cada año de existencia de bitcoin. Algunos años el crecimiento ha reflejado un cambio completo de la tecnología, como en 2010 y 2011, cuando muchos mineros pasaron de utilizar la minería CPU a utilizar minería GPU y FPGA. En 2013 la introducción de la minería ASIC supuso otro paso de gigante en el poder minería, mediante la colocación de la función SHA256 directamente en chips de silicio especializados para el propósito de la minería. El primero de estos chips podía ofrecer más potencia de minería en una sola caja que toda la red bitcoin en 2010.
La siguiente lista muestra la potencia total de hash de la red bitcoin durante los primeros cinco años de operación:
2009 - 0.5 Mega-Hashes/segundo a 8 Mega-Hashes/segundo (crecimiento × 16)
2010 - 8 Mega-Hashes/segundo a 116 Giga-Hashes/segundo (crecimiento × 14500)
2011 - 16 Giga-Hashes/segundo a 9 Tera-Hashes/segundo (crecimiento × 562)
2012 - 9 Tera-Hashes/segundo a 23 Tera-Hashes/segundo (crecimiento × 2.5)
2013 - 23 Tera-Hashes/segundo a 10 Peta-Hashes/segundo (crecimiento × 450)
2014 - 10 Peta-Hashes/segundo a 150 Peta-Hashes/segundo en agosto (crecimiento × 15)
En el gráfico Potencia de hash total, gigahashes por segundo, durante dos años, vemos el aumento de potencia de hash de la red bitcoin en los últimos dos años. Como puede ver, la competencia entre los mineros y el crecimiento de bitcoin se ha traducido en un aumento exponencial de la potencia de hash (total de hashes por segundo a través de la red).

Figura 7. Potencia de hash total, gigahashes por segundo, durante dos años
La potencia de hash aplicada a la minería de bitcoin ha subido muchísimo, por lo que la dificultad ha aumentado proporcionalmente. La métrica de dificultad mostrada en el apartado sobre las métricas de dificultad se mide como una relación entre la dificultad actual y la dificultad mínima (la dificultad del primer bloque).
La métrica de dificultad para la minería de bitcoin, durante dos años se ve en la imagen.
En los últimos dos años, los chips de minería ASIC se han vuelto cada vez más densos, acercándose al límite de la fabricación de silicio con un tamaño de elemento (resolución) de 22 nanómetros (nm).
Actualmente, los fabricantes de ASIC tienen el objetivo de superar a los fabricantes de chips de CPU de propósito general, con el diseño de chips con un tamaño de elemento de 16 nm, debido a que la rentabilidad de la minería está impulsando esta industria aún más rápido que la computación general.
Ya no quedan más saltos de gigante en la minería bitcoin, porque la industria ha llegado a la vanguardia de la Ley de Moore, que establece que la densidad de computación se duplicará aproximadamente cada 18 meses. Sin embargo, la potencia de minería de la red sigue avanzando a un ritmo exponencial a medida que crece la carrera por chips de mayor densidad y por centros de datos también de mayor densidad, donde se pueden desplegar miles de estos chips. Ya no se trata de cuánto se puede minar con un chip, sino de cuántos chips se pueden incluir en un edificio, mientras se mantiene un entorno apropiado para disipar el calor y proporcionar la energía adecuada.
La Solución de Nonce Extra
Desde 2012, la minería de bitcoin ha evolucionado para resolver una limitación fundamental en la estructura de la cabecera de bloque. En los primeros días de bitcoin, un minero podía encontrar un bloque iterando a través del nonce hasta que el hash resultante fuera inferior al objetivo. A medida que la dificultad aumentaba, los mineros a menudo daban la vuelta por todos los 4 mil millones de valores del nonce sin encontrar un bloque. Sin embargo, esto se resolvió fácilmente mediante la modificación del sello de tiempo del bloque para tener en cuenta el tiempo que había transcurrido.
Como el sello de tiempo es parte de la cabecera, el cambio permitiría a los mineros iterar a través de los valores del nonce de nuevo y obtener resultados diferentes. Sin embargo, una vez que el hardware de minería superó los 4 GHash/seg, este enfoque se hizo cada vez más difícil ya que los valores del nonce se agotaban en menos de un segundo. A medida que los equipos de minería ASIC comenzaban a superar la velocidad de THash/seg, el software de minería necesitaba un espacio mayor en los valores nonce para encontrar bloques válidos. El sello de tiempo podría extenderse un poco, pero si se movía demasiado lejos en el tiempo, el bloque se convertiría en inválido. Se necesitaba una nueva fuente de «cambio» en la cabecera del bloque. La solución fue usar la transacción coinbase como una fuente de valores nonce adicionales. Debido a que el script coinbase puede almacenar entre 2 y 100 bytes de datos, los mineros comenzaron a utilizar ese espacio como espacio nonce extra, lo que les permitía explorar una gama mucho más amplia de valores de cabecera de bloque para encontrar bloques válidos. La transacción coinbase está incluida en el árbol merkle, lo que significa que cualquier cambio en la secuencia de comandos coinbase provoca que la raíz merkle cambie. Ocho bytes de nonce extra, además de los 4 bytes de nonce «estándar» permiten a los mineros explorar un total de 296 (8 seguido de 28 ceros) posibilidades por segundo sin tener que modificar la fecha y hora. Si, en el futuro, los mineros agotaran todas estas posibilidades, entonces podrían modificar el sello de tiempo. También hay más espacio en el script coinbase para la futura expansión del espacio nonce extra.
Pools de Minería
En este entorno altamente competitivo, los mineros individuales que trabajan solos (también conocidos como mineros en solitario) no tienen ninguna oportunidad. La probabilidad de que encuentren un bloque para compensar sus costos de electricidad y hardware es tan baja que pasa a ser una apuesta, como jugar a la lotería. Incluso el sistema de minería de consumo ASIC más rápido no puede mantenerse al día con los sistemas comerciales que acumulan decenas de miles de estos chips en almacenes gigantes cerca de centrales hidroeléctricas. Los mineros ahora colaboran para formar pools de minerías, poniendo en común su potencia de hash y compartiendo la recompensa entre miles de participantes. Al participar en un pool, los mineros reciben una parte más pequeña de la recompensa total, pero por lo general se ven recompensados todos los días, lo que reduce la incertidumbre.
Veamos un ejemplo específico. Supongamos que un minero ha comprado hardware de minería con una potencia de hash total de 6000 gigahashes por segundo (GH/s), o 6 TH/s. En agosto de 2014 este equipo costaba aproximadamente $10.000. El hardware consume 3 kilovatios (kW) de electricidad cuando se ejecuta, 72 kilovatios-hora al día, a un costo de $7 o $8 por día en promedio. Con la dificultad bitcoin actual, el minero podrá minar en solitario un bloque cada 155 días aproximadamente, esto es, cada 5 meses. Si el minero encuentra un solo bloque en ese plazo, el pago de 25 bitcoins, a aproximadamente $600 por bitcoin, se traducirá en un solo pago de $15.000, que cubrirá todo el costo del hardware y de la electricidad consumida en ese período de tiempo, dejando un beneficio neto de aproximadamente 3000 dólares. Sin embargo, la posibilidad de encontrar un bloque en un período de cinco meses depende de la suerte del minero. Podría darse el caso de que encontrara dos bloques en cinco meses, y obtener un gran beneficio. O podría no encontrar un bloque durante 10 meses y sufrir una pérdida financiera. Peor aún, con el crecimiento actual de la potencia de hashing, es probable que la dificultad del algoritmo de prueba de trabajo de bitcoin suba significativamente durante ese período, lo que significa que el minero tendría, como máximo, seis meses para amortizar el hardware antes de que quede obsoleto y deba ser reemplazado por hardware de minería más potente. Si este minero participa en un pool de minería, en lugar de esperar a que una vez en cinco meses obtenga una ganancia inesperada de $15.000, ahora será capaz de ganar aproximadamente de $500 a $750 por semana. Los pagos regulares de un pool de minería le ayudarán a amortizar el costo del hardware y de la electricidad a lo largo del tiempo sin tomar un riesgo enorme. El hardware terminará siendo obsoleto al cabo de seis a nueve meses y el riesgo sigue siendo alto, pero el ingreso es por lo menos regular y fiable a lo largo de ese período.
Las pools de minería coordinan muchos cientos o miles de mineros, mediante protocolos especializados para pools de minería. Los mineros individuales configuran sus equipos de minería para conectarse a un servidor de pool, después de haber creado una cuenta con el pool. Su hardware de minería permanece conectado al servidor del pool mientras están minando, sincronizando así sus esfuerzos con los otros mineros. Por lo tanto, los mineros de pool comparten el esfuerzo para extraer un bloque y luego comparten las recompensas.
Los bloques exitosos pagan la recompensa a una dirección bitcoin del pool, en lugar de a los mineros individuales. El servidor del pool hará periódicamente pagos a las direcciones bitcoin de los mineros, cuando su parte de la recompensa haya llegado a un cierto umbral. Normalmente, el servidor de pool cobra una tarifa de porcentaje de los beneficios por la prestación del servicio de minería en pool.
Los mineros que participan en un pool dividen el trabajo de búsqueda de una solución para un bloque candidato, ganando «cuotas» (en inglés, «shares») por su contribución de minería. El pool de minería fija un objetivo de dificultad menor para ganar una cuota, por lo general más de 1000 veces más fácil que la dificultad de la red bitcoin. Cuando alguien en el pool mina con éxito un bloque, el pool gana la recompensa y luego la comparte con todos los mineros en proporción al número de cuotas con que contribuyeron a este esfuerzo.
Los pools están abiertos a cualquier minero, grande o pequeño, profesional o aficionado. Por lo tanto, un pool tendrá algunos participantes con una sola máquina pequeña minera, y otros con un garaje lleno de hardware de minería de gama alta. Algunos minarán con unas pocas decenas de kilovatios de electricidad, mientras que otros lo harán en un centro de datos consumiendo un megavatio de potencia. ¿Cómo mide un pool de minería las contribuciones individuales, con el fin de distribuir equitativamente los beneficios, sin la posibilidad de hacer trampa? La respuesta es utilizar el algoritmo de prueba de trabajo de bitcoin para medir la contribución de cada minero del pool, pero fijado a una dificultad menor para que incluso los mineros más pequeños del pool ganen cuotas con la suficiente frecuencia como para que les valga la pena contribuir al pool. Al establecer una dificultad menor para ganar cuotas, el pool mide la cantidad de trabajo realizado por cada minero. Cada vez que un minero del pool encuentra un hash de cabecera de bloque que es menor que la dificultad del pool, demuestra que ha hecho el trabajo de hashing para encontrar ese resultado. Más importante aún, el trabajo para encontrar cuotas contribuye, de manera estadísticamente medible, al esfuerzo global para encontrar un hash más bajo que el objetivo de la red bitcoin. Con el tiempo, los miles de mineros que intenten encontrar hashes de bajo valor van a encontrar uno lo suficientemente bajo como para satisfacer el objetivo de la red bitcoin.
Volvamos a la analogía de un juego de dados. Si los jugadores de dados están tirando los dados con el objetivo de lanzar menos de cuatro (la dificultad general de la red), un pool fijaría un objetivo más fácil, contando cuántas veces los jugadores del pool lograron tirar menos de ocho. Cuando los jugadores del pool tiran menos de ocho (el objetivo de cuota del pool), ganan cuotas, pero no ganan el juego, ya que no alcanzan el objetivo del juego (menos de cuatro). Los jugadores del pool lograrán el objetivo del pool, que es más fácil, con mucha más frecuencia, ganando cuotas muy regularmente, incluso cuando no logran el objetivo más difícil de ganar el juego. De vez en cuando, uno de los jugadores del pool lanzará un tiro de dados combinado de menos de cuatro y en ese caso, el pool gana.
Entonces, las ganancias se pueden distribuir a los jugadores del pool sobre la base de las cuotas que habían conseguido. A pesar de que el objetivo de ocho-o-menos no significaba ganar, era una forma razonable de medir el número de lanzamientos de dados de los jugadores, y que de vez en cuando produce un tiro de menos-que-cuatro.
Del mismo modo, un pool de minería establecerá una dificultad de pool que asegure que un minero individual del pool pueda encontrar bastante a menudo hashes de cabecera de bloque que sean menores que la dificultad del pool, ganando cuotas. De vez en cuando, uno de estos intentos producirá un hash de cabecera de bloque que sea menor que el objetivo de la red bitcoin, por lo que será un bloque válido y toda el pool gana.