Es un conjunto abierto de protocolos: reglas para intercambiar mensajes. Mining Protocol transmite las tareas y los resultados; las partes opcionales Template Distribution y Job Declaration permiten utilizar una plantilla de bloque propia. Conectarse mediante V2 no basta para tener esa capacidad.
Eva tiene un ASIC, un equipo especializado en minería de Bitcoin. Lo ha conectado a un pool, que coordina a varios mineros y reparte las recompensas. Las máquinas buscan un resultado de cálculo que permita añadir un nuevo bloque, un conjunto de transacciones, al historial de Bitcoin. Necesita que su máquina reciba las instrucciones correctas y que sus resultados lleguen al pool que realmente eligió. Más adelante también quiere decidir qué transacciones intentará incluir en un bloque. Stratum V2 organiza la comunicación entre estos participantes. Mining Protocol es la base; Template Distribution y Job Declaration son partes opcionales que proporcionan los datos del bloque y permiten acordar un trabajo propio. Por eso dos pools que anuncian V2 pueden ofrecer capacidades distintas. [1] [3]
Stratum V1 facilitó la colaboración entre mineros, pero su conexión habitual sin cifrar dejaba los mensajes legibles durante el trayecto. Además, el pool solía elegir las transacciones. En 2019, Jan Čapek y Pavel Moravec, de Braiins, presentaron Stratum V2 junto con Matt Corallo y otros desarrolladores. Buscaban una comunicación protegida y más eficiente, además de mayor autonomía para los mineros. La especificación es pública y el desarrollo continúa como proyecto abierto. No introduce nuevas reglas de validez para los bloques de Bitcoin ni promete automáticamente mayores ingresos. [8] [6]
Un tercero situado entre Eva y el pool no debería poder leer o modificar discretamente los mensajes de minería. V2 utiliza comunicación cifrada y una comprobación de integridad llamada AEAD. Según la especificación, el intercambio criptográfico inicial Noise es obligatorio en conexiones remotas; en una red local su uso puede ser opcional. El cliente verifica el servidor mediante la clave pública de la autoridad del pool, obtenida por una vía fiable. Esa clave permite comprobar la firma digital con la que se identifica el servidor. Esto protege la transmisión, no todo lo demás: el pool sigue viendo los datos que recibe y el cifrado no demuestra que el firmware sea seguro, la contabilidad correcta o el pool capaz de pagar. [2] [10]
Eva no siempre necesita sustituir sus equipos. Un Translation Proxy es un intermediario que puede recibir Stratum V1 de una máquina antigua y usar V2 hacia el pool. Proteger este segundo tramo no cambia la comunicación original entre el ASIC y el proxy: sigue siendo V1 y necesita su propia protección. El proxy también puede atender varias máquinas conjuntamente y reducir el envío repetido de los mismos datos. Traducir los protocolos no significa por sí solo que Eva elija las transacciones. Para ello hacen falta otras funciones y un pool que coopere. [7] [8]
Para elegir transacciones, Eva necesita saber cuáles son válidas y sobre qué bloque debe construir. Puede obtener esos datos de su propio nodo completo, que comprueba las reglas de Bitcoin de forma independiente. Un Template Provider es un programa que entrega una plantilla de bloque: un borrador del futuro bloque, no un bloque terminado. Puede utilizar Bitcoin Core u otro nodo con el soporte necesario. Template Distribution envía las actualizaciones directamente, sin consultar repetidamente getblocktemplate. NewTemplate y SetNewPrevHash anuncian la plantilla y su enlace con el bloque anterior; RequestTransactionData solicita los datos de las transacciones y SubmitSolution devuelve una solución encontrada. [5]
Eva utiliza un Job Declarator Client, un programa que recibe sus plantillas y acuerda su uso con un pool compatible con Job Declaration. En modo Full-Template solicita un identificador de trabajo mediante AllocateMiningJobToken, enumera las transacciones en DeclareMiningJob y, si hace falta, responde a ProvideMissingTransactions. Después envía SetCustomMiningJob al servidor de minería. El modo Coinbase-only no revela previamente la lista de transacciones ni utiliza DeclareMiningJob; trabaja con el identificador asignado y los datos de la coinbase, la transacción especial que contiene la recompensa del bloque. El pool puede rechazar la propuesta, así que también importan las conexiones alternativas. Elegir de forma independiente las transacciones de un bloque puede repartir las decisiones entre más mineros, pero no elimina la obligación del pool de pagar las recompensas. [4]
El ejemplo anterior se puede comprender sin conocer los nombres de los mensajes. Al configurar o desarrollar programas, sin embargo, importa su formato exacto. V2 transmite datos binarios, una representación acordada para las máquinas. La cabecera del mensaje tiene 6 bytes; extension_type, msg_type y msg_length identifican la extensión, el tipo de mensaje y la longitud de su contenido. Tras establecer la comunicación criptográfica, el primer mensaje del protocolo es SetupConnection, que negocia el protocolo, la versión y las funciones requeridas. SetupConnection.Success confirma el éxito. La etiqueta V2 de un servicio no sustituye ese acuerdo real entre programas concretos. [1]
Un canal es una sesión de minería separada dentro de una conexión, no otra blockchain ni un canal de pago. Un Standard Channel asigna trabajo sobre la cabecera del bloque, un resumen breve de sus datos. Un Extended Channel permite al intermediario repartir un conjunto mayor de intentos mediante extranonce, una parte variable de la transacción coinbase. Un Group Channel facilita enviar tareas a varios canales a la vez. OpenStandardMiningChannel y OpenExtendedMiningChannel abren las sesiones correspondientes. La razón práctica es sencilla: si dos máquinas probaran posibilidades idénticas, gastarían electricidad haciendo el mismo trabajo. [3]
El pool necesita medir continuamente la contribución de Eva. Una mining share es un resultado que cumple el umbral de dificultad asignado; la mayoría no alcanza el umbral más exigente de la red para un bloque, aunque alguna puede hacerlo. NewMiningJob o NewExtendedMiningJob entrega la tarea, SetNewPrevHash activa el enlace con el bloque anterior y SetTarget establece el umbral del canal. SubmitSharesStandard o SubmitSharesExtended envía los resultados con el identificador de la tarea, un número de secuencia y los datos variables de la cabecera. Un resultado aceptado todavía no es un pago a la cartera. La remuneración del pool y la validez del bloque según Bitcoin siguen siendo asuntos distintos. [3]
Primero comprueba la compatibilidad de su equipo, su programa y el pool elegido. Después averigua qué tramo está protegido, de dónde procede la clave de verificación y si busca solo una transmisión más segura o también elegir transacciones. Esto último requiere un Template Provider, un Job Declarator Client y soporte correspondiente del pool que funcionen juntos. Vigila los retrasos, las shares rechazadas u obsoletas, los registros de errores y el comportamiento ante una interrupción. Las instrucciones deben corresponder a la versión utilizada. Stratum V2 puede mejorar la coordinación de la minería; no sustituye una gestión segura de los equipos ni cambia las reglas con las que los nodos completos verifican Bitcoin. [6] [7]
Para obtener la imagen más completa, lee esta entrada junto con Bitcoin, Minería, Mining Pool, Braiins, Braiins Pool, ASIC Miner. También enlazan con esta entrada ASIC Miner, Mining Pool, Nonce, Marek «Slush» Palatinus.