Blockchain/Nivel III · La red/3.2 Minería/Lección 5
Plantillas de bloque y Stratum V2
El trabajo de encabezado, la elección del modelo y quién tiene el control
MaterialesLa especificación Stratum V2 (stratumprotocol.org)BIP22 y BIP23
Curiosidad
- ¿Por qué un minero con hardware dedicado sigue dependiendo de un operador de pool para decidir qué transacciones entran en un bloque?
- ¿Qué permite que un minero de grupo elija las transacciones en sus propios bloques mientras sigue compartiendo las recompensas del grupo?
- ¿Cómo la transición de JSON a protocolos binarios aborda tanto la seguridad como la eficiencia en las operaciones mineras de alta velocidad?
Explorar
- Desde la creación del protocolo, cada bloque válido requiere una selección de transacciones. En los primeros días, los mineros que operaban nodos completos elegían estas transacciones por sí mismos. Para 2012, a medida que el hardware se volvía más especializado y caro, la mayoría se unió a grupos de minería. El protocolo Stratum, introducido por Slush ese mismo año, estandarizó la forma en que los servidores de estos grupos distribuían el trabajo entre sus miembros. Los grupos ya habían creado bloques desde 2010; Stratum hizo que este proceso fuera mucho más eficiente y heredó su enfoque centralizado en la creación de bloques.
- Bajo Stratum V1, el operador del pool actúa como único arquitecto de cada bloque candidato. El servidor agrega las transacciones de su propio mempool y envía a los mineros las piezas de un trabajo: las dos mitades de la transacción coinbase, la rama Merkle, el hash del bloque anterior, el objetivo (target) y el tiempo. El minero inserta su propio extra-nonce, calcula la raíz Merkle y busca un hash válido, pero no tiene voz en cuanto a qué transacciones se incluyen.
- Esta arquitectura otorga a los operadores de pools un poder significativo sobre la selección de transacciones. Un pool que controla una parte sustancial del hashrate de la red puede censurar eficazmente las transacciones simplemente excluyéndolas de sus plantillas. Aunque esto rara vez se ejerce, existe la capacidad estructural para hacerlo. También significa que si un servidor del pool falla o sufre un ataque de denegación de servicio, todos los mineros conectados quedan inactivos, lo que crea un único punto de fallo para sus ingresos.
- En 2012, BIP22 y BIP23 introdujeron `getblocktemplate`, lo que permitió al software de minería solicitar una plantilla completa de bloque a un nodo; estaba diseñado para que los miembros del pool pudieran construir sus propios bloques. Los pools utilizan `getblocktemplate` internamente para obtener plantillas desde sus propios nodos, pero permitir que los miembros construyeran sus propios bloques complicó la validación y la contabilidad de participaciones (share accounting), y pocos pools lo ofrecían (Eligius fue una excepción).
- Stratum V2, desarrollado a partir de 2019 por Braiins y Matt Corallo, entre otros, rediseñó el protocolo para abordar estos problemas. Introduce un formato binario para reducir la sobrecarga (overhead) y cifrado para garantizar la seguridad. Crucialmente, incluye el Protocolo de Declaración de Trabajo (Job Declaration). Esto permite a un minero que opera su propio nodo completo declarar su propia plantilla de bloque al servidor del pool. El pool luego acepta las participaciones (shares) de este trabajo personalizado, distribuyendo las recompensas según su esquema estándar, mientras que el minero mantiene el control sobre la inclusión de transacciones.
- Esfuerzos alternativos como el protocolo DATUM de Ocean (2024) persiguen objetivos similares: descentralizar la construcción de plantillas. Lea la sección de Declaración de Trabajo (Job Declaration) de la especificación Stratum V2 y compárela con la forma en que un pool del que usted tenga conocimiento construye sus plantillas. Donde se adopten estos protocolos, la elección de las transacciones vuelve a manos de los propietarios del hardware.
Datos clave
- Stratum V1, introducido por Slush en 2012, centraliza la creación de plantillas de bloques en los operadores de pools.
- En Stratum V1, los mineros solo reciben trabajos de encabezado (header jobs) y no tienen influencia sobre la selección de transacciones.
- BIP22/BIP23 (2012) definieron getblocktemplate; pocos pools permiten a sus miembros usarlo para construir sus propios bloques.
- Stratum V2 (desde 2019) utiliza un protocolo binario con encriptación para mejorar la seguridad y la eficiencia.
- El Protocolo de Declaración de Trabajo (Job Declaration) en Stratum V2 permite a los mineros enviar sus propias plantillas de bloque al pool.
- El protocolo DATUM de Ocean’s (2024) es otro esfuerzo orientado a descentralizar la selección de transacciones entre los mineros agrupados.
Ejercicio nueve, seis, tres, uno
9ReunirEnumera 9 decisiones involucradas en la producción de un bloque (por ejemplo, qué transacciones incluir, el mensaje Coinbase, la marca de tiempo, el nonce) y indica quién toma cada una de ellas en Stratum V1.
6AgruparAgrupa las 9 en 6 según quién las controla: pool, minero, software del nodo, reglas de consenso, azar u otro.
3DestilarReduce las 6 categorías a 3 razones fundamentales por las cuales el poder de selección de transacciones es significativo desde el punto de vista económico y político para los productores de bloques.
1CristalizarEscribe una oración que explique cómo la Declaración de Trabajo (Job Declaration) en Stratum V2 altera el equilibrio de poder entre los operadores de pools y los mineros individuales.
Verificación de hechos
Fechas, cifras y afirmaciones verificadas con las fuentes publicadas que se enumeran a continuación.