Un Block Withholding Attack ocurre cuando un minero entrega al pool pruebas ordinarias de trabajo, pero oculta deliberadamente una solución válida de bloque. El pool puede contabilizar su trabajo sin recibir las correspondientes oportunidades de obtener recompensas de bloque.
Un Mining Pool reúne el trabajo de mineros y reparte recompensas según unas reglas acordadas. No puede esperar a que cada participante pequeño encuentre un bloque entero. Como explica el Bitcoin Developer Guide, utiliza shares: resultados que cumplen un requisito más fácil y acreditan trabajo de forma continua. Un resultado poco frecuente también cumple el requisito más exigente de la red Bitcoin. El atacante envía las shares ordinarias, pero descarta ese hallazgo más valioso. La máquina realiza cálculos y consume electricidad de verdad; no está fingiendo minar sin coste. [3]
Depende del modelo de pago. Meni Rosenfeld distingue Pay Per Share (PPS), donde el operador paga por las shares aceptadas, de Pay Per Last N Shares (PPLNS), donde las recompensas reales de bloques se reparten según las shares recientes aceptadas dentro de un intervalo definido. En PPS, el operador soporta el déficit de bloques si cumple los pagos prometidos. En PPLNS queda menos dinero para los participantes, incluido el atacante. Por tanto, un mismo hallazgo descartado puede perjudicar a personas distintas. Importan las reglas concretas del pool, no solo la etiqueta «minería» del panel. [1]
Descartar hallazgos puede ser un sabotaje costoso. El atacante paga equipos y electricidad y renuncia a ingresos que podría haber obtenido honestamente. Ittay Eyal estudia también un caso más complejo: un pool competidor dedica parte de su capacidad a minar honestamente y otra parte a atacar otro pool. Bajo ciertos supuestos, esa distribución puede aumentar sus ingresos totales. Pero un resultado matemático no promete beneficios después de todos los costes. La pérdida de la víctima no demuestra, por sí sola, que el atacante haya salido ganando. [2]
Ambos conceptos incluyen un bloque sin publicar, pero su destino es distinto. Eyal y Emin Gün Sirer describen Selfish Mining como minería sobre una rama privada de la cadena cuyos bloques se publican estratégicamente. El atacante quiere que esa rama prevalezca y cobrar sus recompensas. En cambio, el Block Withholding Attack clásico dentro de un pool descarta los bloques encontrados; no necesita construir una rama privada ganadora. Otras variantes solo retrasan la entrega. Al leer un análisis debemos identificar qué estrategia estudia realmente. [4]
Supongamos un período en el que un minero honesto encontraría, de media, 1 bloque según su potencia y la dificultad. El modelo de Poisson, utilizado también por Rosenfeld, describe hallazgos aleatorios independientes con un ritmo esperado constante. Da aproximadamente un 37% de probabilidad de no encontrar ninguno. Con 3 bloques esperados, esa probabilidad ronda el 5%. No es la probabilidad de culpabilidad: calculamos un resultado nulo suponiendo minería honesta, no la probabilidad de fraude tras observarlo. El ejemplo requiere condiciones estables adecuadas y un período definido de antemano. Una media no es una fecha límite para encontrar un bloque. [1]
Eyal señala la dificultad de atribuir un ataque a un minero pequeño concreto. No basta con mostrar una cuenta sin bloques encontrados. Hay que comparar shares aceptadas y bloques durante el mismo período, considerando la dificultad de las shares y el trabajo que representan. Hashrate significa velocidad de cálculo; su estimación a partir de estas pruebas también fluctúa. Además deben revisarse interrupciones, registros incompletos y cambios de condiciones. Un pool puede tener motivos para investigar sin disponer de pruebas suficientes para acusar a alguien. [2]
Eyal examina un bono por encontrar bloques, la creación de reputación y tareas de prueba con solución conocida. Cada propuesta cambia algo. El bono concentra más recompensa en quien encuentra el bloque y puede aumentar la variabilidad de ingresos de los mineros pequeños. Las reglas de reputación dificultan cambiar de pool; las tareas de prueba necesitan mantenimiento e interpretación fiable. No es una protección universal que simplemente se activa. El operador debe valorar efectos y consecuencias secundarias, y explicar qué detectan realmente sus medidas. [2]
El Bitcoin Developer Guide distingue encontrar un bloque de su validación por la red. Ocultar un hallazgo no cambia las reglas de validez de las transacciones ni permite por sí mismo gastar monedas ajenas o reescribir el historial confirmado. El daño afecta principalmente a la economía y la confianza dentro de la cooperación minera. Conviene mantener tres preguntas: qué se ocultó, quién perdió dinero según las reglas acordadas y qué pruebas existen. Describir este mecanismo no acusa a ningún pool actual. [3]
Para obtener la imagen más completa, lee esta entrada junto con Mining Pool, Pay Per Last N Shares, Hashrate, Selfish Mining.