-
Braiins anunció Stratum V2, la segunda generación del protocolo de minería Stratum.
-
El desarrollo del Stratum V2 fue inspirado por BetterHash.
Para obtener un flujo de ingresos más confiable en comparación con la minería en solitario, la mayoría de los mineros de Bitcoin hoy minan a través de grupos de minería conocidos como pools. Esta opción está habilitada por el protocolo de minería de código abierto «Stratum» utilizado actualmente por casi todos los pools de minería, diseñado por Slush Pool y anunciado por primera vez hace casi siete años.
Ahora, Braiins, la compañía detrás de Slush Pool, ha anunciado Stratum V2: la segunda generación del protocolo de minería Stratum. Después de haber comenzado a trabajar en él hace dos años, la compañía minera con sede en Praga cree que ha mejorado el primer protocolo Stratum (ahora denominado «Stratum V1») de varias maneras clave, lo que hace que la nueva versión sea notablemente mejor.
«Resuelve problemas técnicos y de seguridad históricos, en general es mucho más eficiente y permite algunos casos de uso avanzados, como la selección de trabajo o la administración de la granja minera más fácil», dijo el co-CEO de Braiins, Pavel Moravec, a la revista Bitcoin. «Esto debería haberse hecho hace años, realmente.»
Stratum V1
Como breve repaso, así es como funciona el pool de minería con Stratum V1.
Primero, un hasher (el usuario de un pool de minería, a veces simplemente llamado «minero») conecta su computadora de minería (típicamente una máquina con chips especializados ASIC) a un pool de minería. O, más específicamente, conectan su computadora a un equipo manejado por el operador del pool de minería.
La computadora minera luego solicita una «plantilla de bloque» parcial del operador del pool. Esta plantilla de bloque parcial es esencialmente un bloque de Bitcoin incompleto, sin la prueba de trabajo para que sea válida.
Es importante destacar que las transacciones en este bloque son seleccionadas por el operador del pool de minería. Las transacciones en sí mismas no se envían al minero en absoluto; sino solo la ruta de Merkle -una serie de hashes– de todas las transacciones.
Además de eso, el operador del pool puede elegir qué versión de cliente Bitcoin se incluye. Esto puede ser relevante para la activación del protocolo de actualización soft fork.
Luego, el minero inicia la producción de hashes en la plantilla de bloque parcial, esperando que uno de los hashes dé como resultado un encabezado de bloque válido, cumpliendo con el requisito de prueba de trabajo de la red. Si el hash tiene un encabezado de bloque válido, se lo devuelve al operador del pool de minería, que lo agrega a la parte restante del bloque y lo transmite a la red de Bitcoin. Luego, el operador del pool de minería distribuye la recompensa de bloque entre todos los participantes en el pool, en función de la cantidad de trabajo realizado por cada minero. (Esto se mide haciendo que los mineros también envíen encabezados de bloque «casi válidos» que demuestren que el minero desempeñó un trabajo).
Stratum V1, por lo tanto, le da al operador del pool minero una posición relativamente poderosa en el pool. No solo se encargan de distribuir la recompensa, sino que también deciden qué transacciones se incluyen en un bloque y qué versión de cliente Bitcoin se incluye. Un operador de pool de minería podría, si quisiera, decidir censurar ciertas transacciones o bloquear ciertas actualizaciones de protocolos.
Inspirado por BetterHash
Inspirado por BetterHash, una propuesta presentada el año pasado por el ingeniero de Chaincode Labs y el colaborador de Bitcoin Core Matt Corallo, Stratum V2 opcionalmente da vuelta al protocolo Stratum V1. En lugar de hacer que un operador de pool envíe a los mineros una plantilla de bloque (parcial), los mineros pueden optar por enviar una plantilla de bloque al operador del pool de minería. Esta «selección de trabajo» permite a los mineros elegir transacciones ellos mismos y elegir una versión en bloque.
Para que esto funcione, Braiins (con la ayuda de Corallo) tuvo que resolver algunos de los problemas más prácticos de BetterHash. Lo más importante es que existía la posibilidad de que el minero extrajera una plantilla de bloque no válida (porque incluye una transacción no válida, por ejemplo). Incluso si el minero puede encontrar un hash válido, el bloque en sí mismo no será válido, por lo tanto, no ayudará a la agrupación, mientras que el mismo minero se beneficiaría de los bloques válidos encontrados por otros mineros.
Una solución a este problema sería que el operador de la agrupación verifique primero que la plantilla de bloque de un minero sea válida antes de permitirle ingresar a la agrupación. Pero en un pool grande y público, este paso también tendría dificultades técnicas.
Moravec explicó:
Imagine lo que sucede cuando se encuentra un nuevo bloque en la red de Bitcoin y cada minero en el pool quiere comenzar a trabajar en una nueva plantilla de bloque. Cada uno de ellos puede tener una versión ligeramente diferente del mempool [transacciones no confirmadas], y posiblemente diferentes reglas de selección de transacciones … y todos quieren comenzar a extraer de inmediato. Hacer que todos envíen sus plantillas de bloque al pool para su aprobación básicamente estaría denegando el servicio cada primer segundo después de que una red encuentre un bloque. El mecanismo necesita escalar para ser útil en la práctica.
Pavel Moravec, co-CEO de Braiins.
Braiins resolvió este problema permitiendo que los operadores de la agrupación verificaran la validez de las nuevas plantillas de bloque de forma asincrónica. Tan pronto como un minero envía una plantilla de bloque, puede comenzar a procesarla de inmediato. Mientras tanto, el operador del pool comienza a verificar todas las plantillas de bloque.
Moravec agregó:
Si una plantilla de bloque se considera inválida más tarde, las recompensas del minero se pueden ajustar en consecuencia. Por lo tanto, tiene el incentivo para trabajar en bloques adecuados y proporcionar todos los datos de manera oportuna. Sin embargo, puede trabajar continuamente en sus plantillas sin demora.
Pavel Moravec, co-CEO de Braiins.
Seguridad, eficiencia y flexibilidad
Además del cambio en la selección de la transacción, Stratum V2 incluirá más mejoras, algunas de las cuales probablemente serán al menos igual de importantes para muchos mineros.
En Stratum V1, no existe una autenticación de datos criptográficos para garantizar que la formación de los hashs de la computadora está realmente conectada a la computadora del operador de pool y la computadora del pool sola. Esto deja la puerta abierta para ataques «man-in-the-middle» o de intermediario: un atacante podría interceptar la comunicación entre el hash y el operador de la agrupación y hacer que el hash funcione en un bloque proporcionado por el atacante, por ejemplo. El atacante podría hacer que la recompensa de bloque de un bloque específico se pague en una de sus propias direcciones, «secuestrando» efectivamente el poder hash del minero.
Stratum V2 contrarresta este ataque al permitir que los operadores de los pools firmen criptográficamente las plantillas de bloques parciales. Si un minero conoce la clave pública del operador del pool de minería, puede verificar que la plantilla de bloque parcial viene con una firma válida y, por lo tanto, es realmente proporcionada por el operador del pool.
Stratum V2 también es más eficiente que su predecesor. Mientras la comunicación Stratum V1 ocurre a través de texto legible por humanos (JSON), la comunicación Stratum V2 se realiza en binario (código legible por computadora). Moravec cree que, combinado con una cierta eliminación de datos en el nivel del protocolo en sí, esto reduciría los datos compartidos entre los operadores de la agrupación a la mitad o a dos tercios, haciendo que la comunicación sea más rápida y económica.
Además, Stratum V2 tiene un mecanismo incorporado para «multiplexación». Esto significa que los mineros pueden tener canales de comunicación independientes en la misma conexión, permitiendo que sus máquinas compartan datos sobre temperaturas, voltajes de chips o cómo se comporta su fuente de alimentación, por ejemplo. Los pools mineros podrían ofrecer servicios adicionales basados en esta información, o el hash podría compartirlo con otro servicio o servidores.
Stratum V2 también permitirá a los pools «adivinar» cuál será el próximo bloque. Cada vez que se encuentra un nuevo bloque, el pool de minería tarda un momento en determinar qué transacciones se incluyeron en ese bloque y, por lo tanto, qué transacciones no se pueden incluir en el siguiente bloque. Hoy en día, muchos pools de minería comienzan a minar el siguiente bloque vacío: no incluyen ninguna transacción en absoluto durante un par de segundos, para asegurarse de que no incluyen un doble gasto (lo que invalidaría el bloque).
Con Stratum V2, los operadores de pools (o mineros si son ellos los que seleccionan las transacciones) pueden en su lugar hacer una conjetura sobre qué transacciones se incluirán, en función de todas las transacciones no confirmadas. En estos primeros segundos, pueden comenzar a extraer lo que creen que probablemente será un próximo bloque válido. Especialmente, a medida que cada subsidio de bloque se convierte en una pequeña parte de la recompensa de bloque que eventualmente será reemplazada por tarifas, esta pequeña eficiencia podría beneficiar a los novatos.
Mejoras aún por venir
Finalmente, el equipo de Braiins dice que habrá algunas mejoras más que aún no se han anunciado. Si bien la compañía tiene un prototipo en funcionamiento, la especificación del protocolo aún no está finalizada.
“Ahora queremos recopilar comentarios de las personas para finalizar la propuesta internamente, luego se publicará una Propuesta de Mejora de Bitcoin (BIP por sus siglas en inglés). Supongo que esto provocará otra ronda de discusiones … y mientras tanto implementaremos Stratum V2 en Slush Pool, y lo lanzaremos como parte de la versión de prueba del sistema operativo Braiins para obtener una experiencia de la vida real”, dijo Moravec. «Lo estamos implementando lo más rápido posible para que todos tengan algo con lo que jugar pronto».
Versión traducida del artículo de Aaron van Wirdum, publicado en Bitcoin Magazine.