Ir al contenido

Protocolo de minería Stratum

De BitcoinWiki
Protocolo de minería Stratum
Protocolo de minería Stratum.

El protocolo de minería Stratum es una familia de protocolos para intercambiar trabajos y resultados de prueba de trabajo entre mineros, proxies e infraestructura de pools. El protocolo original se denomina Stratum V1 (SV1); Stratum V2 (SV2) es un sucesor especificado por separado, con formato de mensajes y modelo de seguridad distintos.[1]

Stratum V1

Stratum V1 se introdujo en 2012 y fue ampliamente implementado por equipos y pools de Bitcoin. Sustituyó las consultas repetidas de getwork por una conexión TCP persistente desde la que el pool envía nuevos trabajos.[1][2] V1 suele usar mensajes de estilo JSON-RPC separados por saltos de línea. La interfaz original no quedó totalmente normalizada y surgieron dialectos y extensiones distintos.[3]

Flujo principal de mensajes

Una sesión típica emplea los siguientes mensajes; los parámetros y comportamientos opcionales varían entre implementaciones.[4]

Dirección Método Finalidad
Minero → servidor mining.subscribe Inicia o reanuda una sesión. La respuesta suele entregar identificadores, extranonce1 y el tamaño de extranonce2.
Minero → servidor mining.authorize Asocia a la conexión el trabajador y, cuando se usa, una contraseña.
Servidor → minero mining.set_difficulty Establece la dificultad objetivo de las participaciones; un trabajo posterior aplica el cambio.
Servidor → minero mining.notify Envía identificador, bloque anterior, partes de coinbase, ramas de Merkle, versión, objetivo, tiempo y la indicación de descartar trabajos antiguos.
Minero → servidor mining.submit Envía trabajador, trabajo, extranonce2, tiempo y nonce para su aceptación o rechazo.

Entre los mensajes opcionales están client.reconnect, client.show_message y mining.set_extranonce. BIP 310 define mining.configure para negociar extensiones de version rolling, dificultad mínima y suscripción a extranonce.[5] Propuestas anteriores como mining.capabilities no forman parte de ese mecanismo y no deben darse por compatibles.

Limitaciones

El protocolo V1 básico transmite el tráfico sin cifrar. Un estudio de 2017 mostró que observadores pasivos podían inferir tasa de hash e ingresos, y que un adversario capaz de interceptar la conexión podía manipular mensajes.[4] Un túnel TLS propio del pool puede cambiar la exposición, pero no pertenece al protocolo básico.

En V1 el pool suele construir los trabajos y elegir transacciones. Pagos, monederos, bases de datos y rotación de registros son funciones del software del pool.

Stratum V2

Stratum V2 usa mensajes binarios definidos con precisión. Especifica canales, version rolling nativo, agregación de conexiones y funciones para dispositivos, proxies, pools, declaradores de trabajos y proveedores de plantillas.[3][6]

La suite contiene tres subprotocolos:[6]

  • el Mining Protocol, obligatorio para distribuir trabajo y enviar participaciones;
  • el Job Declaration Protocol, opcional, para proponer desde el minero una selección de transacciones; y
  • el Template Distribution Protocol, que lleva datos de plantilla desde un nodo Bitcoin.

La declaración de trabajos es opcional. Un pool puede usar V2 con trabajos elegidos por él; con declaración, el lado del minero puede crear una plantilla y pedir al pool que la acepte.[6] Esto cambia la selección de transacciones, pero no define pagos ni elimina la confianza en la contabilidad del pool.

V2 protege conexiones remotas con cifrado autenticado. Usa AEAD y un protocolo de enlace basado en Noise; es obligatorio para conexiones remotas ascendentes y opcional en enlaces locales entre dispositivo y proxy.[7]

Compatibilidad e implementaciones

Un proxy de traducción puede aceptar dispositivos V1 y usar V2 hacia el pool. Actúa como puente, pero no convierte al dispositivo en una implementación V2 nativa. Debe verificarse qué extensiones y subprotocolos admite cada minero, proxy y pool.

Véase también

Enlaces externos

  1. ↑ 1,0 1,1 Proyecto Stratum V2, «Open Bitcoin mining standard», consultado el 14 de septiembre de 2026.
  2. ↑ Bitcoin Wiki, «Stratum mining protocol», consultado el 14 de septiembre de 2026.
  3. ↑ 3,0 3,1 Especificación Stratum V2, «Design Goals», consultado el 14 de septiembre de 2026.
  4. ↑ 4,0 4,1 Maria Apostolaki et al., «Hardening Stratum, the Bitcoin Pool Mining Protocol», Proceedings on Privacy Enhancing Technologies, 2017.
  5. ↑ BIP 310, «Stratum protocol extensions», consultado el 14 de septiembre de 2026.
  6. ↑ 6,0 6,1 6,2 Especificación Stratum V2, «Protocol Overview», consultado el 14 de septiembre de 2026.
  7. ↑ Especificación Stratum V2, «Protocol Security», consultado el 14 de septiembre de 2026.