En Solo Mining, el minero recibe la recompensa por los bloques que encuentra con su propia potencia y que se incorporan a la cadena. Un bloque es un grupo de transacciones añadido a la cadena, el historial público de Bitcoin. «Encontrar un bloque» significa hallar un resultado de cálculo que permite proponer ese grupo al resto de la red, que todavía debe comprobar que cumple todas las reglas. Los hallazgos de otros no le generan ingresos regulares. Puede usar infraestructura propia o un servidor externo que cobre una comisión. «Solo» describe sobre todo cómo se reparten las recompensas.
Jan compra un ASIC, una máquina especializada en los cálculos de minería. El panel muestra actividad, pero a su cartera no llega nada. En Solo Mining eso, por sí solo, no indica un fallo. La potencia le da una oportunidad de encontrar un bloque, no un sueldo por hora. Un Mining Pool convencional reparte recompensas según sus reglas; en solitario, Jan espera su propio hallazgo. Conectarse a un servidor mediante Stratum, un protocolo de comunicación para mineros, tampoco implica participar en pagos compartidos. [1] [6]
Supongamos, para facilitar el ejemplo, una participación constante del 1 % en la potencia de la red. Es una proporción grande e ilustrativa, no una estimación para un equipo doméstico. En los siguientes 100 bloques de la red, el número esperado de hallazgos propios es uno. Pero la probabilidad de encontrar al menos uno es solo 1 − 0,99^100, aproximadamente un 63,4 %. La fórmula calcula primero la probabilidad de que otros mineros encuentren todos esos bloques y la resta de la certeza. Lo que queda es la probabilidad de que Jan encuentre al menos uno. Puede haber varios o ninguno. Esperar mucho no mejora el siguiente intento: la minería no recuerda fracasos anteriores. Los cambios de dificultad, potencia relativa o disponibilidad alteran además las condiciones del modelo. [1]
Jan paga electricidad cualquiera que sea el resultado, además del equipo, la refrigeración y el mantenimiento. El ingreso medio esperado no es dinero disponible cada mes para pagar facturas. Compartir ingresos en un pool reduce sus fluctuaciones; no da más Hashrate al mismo aparato, es decir, más cálculos por segundo. También varían las comisiones y las reglas de pago. Para un experimento doméstico, Jan puede fijar un coste que pueda asumir incluso sin encontrar nada. La noticia del éxito de otra persona no estima sus propios ingresos. [1]
Solo CKPool es un ejemplo de servicio que proporciona trabajo de minería, conexión a la red y estadísticas. La recompensa del bloque de Jan no se reparte entre otros participantes como en un pool convencional, aunque puede descontarse una comisión. Debe conocer la dirección de cobro, las condiciones y qué ocurre durante una caída. Por otra parte, un Full Node, un nodo que verifica las reglas de Bitcoin, no sustituye la potencia del ASIC. La infraestructura y el reparto de recompensas son decisiones distintas. Una lista de bloques encontrados muestra ganadores, no las probabilidades de cada máquina conectada. [6]
La máquina calcula repetidamente un hash, una huella numérica de la cabecera del bloque propuesto. La cabecera es un conjunto breve de datos sobre el bloque que lo vincula con el bloque anterior y con las transacciones que contiene. Bitcoin Core comprueba que sea menor o igual que el objetivo de la red, target, codificado en nBits. El servidor también puede aceptar resultados que cumplan un objetivo más fácil: las shares. En un servicio solo permiten observar el trabajo del equipo; no son por sí mismas bloques encontrados ni derechos a pequeños pagos. Bajar su dificultad produce más avisos, no más posibilidades por cálculo frente al objetivo de la red. Ni siquiera la mejor share demuestra que exista un bloque válido. [2] [6]
Antes de buscar, el software prepara un borrador de bloque, una plantilla. BIP 22 describe getblocktemplate, una interfaz que aporta, entre otros datos, previousblockhash, la referencia al bloque anterior, transacciones y coinbasevalue, el máximo disponible para la recompensa. El software construye la coinbase, la primera transacción especial que paga la recompensa, y la cabecera; el ASIC prueba variantes de cálculo. Cuando avanza la red, necesita trabajo actualizado. Un equipo rápido con un destinatario equivocado o una plantilla obsoleta no está bien configurado. [3]
No basta con un hash suficientemente bajo. Los demás nodos comprueban también transacciones, coinbase y encaje en la cadena. Dos mineros pueden encontrar bloques competidores y la red continuar por la otra rama. Un bloque fuera de la cadena activa se llama stale; su recompensa no puede gastarse en esa cadena. La difusión rápida y el trabajo actualizado importan. Jan comprueba la aceptación del bloque completo y las confirmaciones posteriores, no solo un aviso verde de share aceptada en el panel. [3] [4]
La recompensa puede incluir bitcoin recién creado, el subsidio de bloque, y comisiones de sus transacciones. La altura de un bloque indica su posición en la cadena. En la red principal, desde la altura 840000 hasta el bloque anterior a 1050000, el subsidio es de 3,125 BTC. Las comisiones varían y un servicio puede descontar su parte. La coinbase no puede pagar más que el subsidio y esas comisiones juntos. También se aplica COINBASE_MATURITY: la recompensa solo puede gastarse en un bloque cuya altura sea al menos 100 mayor que la del bloque que la creó. Son bloques, no 100 minutos. Encontrar un bloque, tener una recompensa confirmada y disponer de dinero para gastar no son lo mismo. [4] [5] [7]
Para obtener la imagen más completa, lee esta entrada junto con Minería, Mining Pool, getblocktemplate, Hashrate, Pay Per Share, Pay Per Last N Shares. También enlazan con esta entrada Mining Pool, Pay Per Share.