# ¿Cómo se minan los bloques?

<div data-with-frame="true"><figure><img src="https://3385590278-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FH74xqoobupBWwBsVMJhK%2Fuploads%2FKP7TV3rUxRBugJITtEOy%2Fmining-section-cover.png?alt=media&#x26;token=a3891617-2b64-4742-9a0c-004c6a70f944" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}
**Recursos para desarrolladores**

* Para ejecutar tu propio minero de Stacks, [aquí](https://app.gitbook.com/s/4cpTb2lbw0LAOuMHrvhA/run-a-miner).
* Para análisis de datos sobre la minería de Stacks, [aquí](https://app.signal21.io/stacks/mining).
  {% endhint %}

#### La visión general

* PoX selecciona un minero de bloque único y aleatorio una vez por bloque BTC
* PoX incentiva a los mineros a crear bloques STX y ganar recompensas STX + comisiones de tx
* Los mineros envían *compromiso de bloque* transacciones en Bitcoin L1.
* Los compromisos de bloque incluyen: par (hash del bloque, semilla VRF)
* Ganador determinista pero impredecible en cada bloque de Bitcoin
* PoX desincentiva a los mineros de Bitcoin L1 de interferir mediante ATC-C

***

## Introducción

La minería de Stacks se basa en una idea simple pero poderosa: los mineros gastan Bitcoin para obtener el derecho a producir nuevos bloques de Stacks. En lugar de introducir un mecanismo de consenso completamente separado, Stacks adapta y amplía la Prueba de Trabajo existente de Bitcoin. En este sentido, Stacks aprovecha la seguridad y el peso económico de Bitcoin para asegurar una capa construida encima de él.

Cuando los mineros comprometen BTC como parte del proceso de minería, ese Bitcoin no se quema ni se desperdicia. En su lugar, se transfiere a los Stackers — titulares de STX que bloquean sus tokens para ayudar a validar y firmar bloques. Este flujo de Bitcoin desde los mineros hacia los Stackers es la innovación central detrás de la Prueba de Transferencia (PoX). La “transferencia” de BTC es lo que ancla a Stacks a la seguridad de Bitcoin, al mismo tiempo que alinea los incentivos entre los mineros y los participantes de la red.

## Desglose del flujo de minería

En la versión anterior de Stacks (antes de la Actualización Nakamoto), los mineros de Stacks minaban nuevos bloques de Stacks con una cadencia de uno a uno con los bloques de Bitcoin. Después de Nakamoto, esto ya no es así. Bajo las reglas de Nakamoto, en cambio se selecciona a los mineros para un período que corresponde a un bloque de Bitcoin. Durante este período, los mineros construyen y proponen múltiples bloques de Stacks (aproximadamente cada 10 segundos) y los stackers los aprobarán y añadirán.

{% hint style="info" %}
[¿Qué fue la Actualización Nakamoto?](https://docs.stacks.co/learn/es/block-production/what-was-the-nakamoto-upgrade)
{% endhint %}

<div data-with-frame="true"><figure><img src="https://3385590278-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FH74xqoobupBWwBsVMJhK%2Fuploads%2Fca0oJCagFYDaEU3vw1e4%2Fmining-flow.png?alt=media&#x26;token=1d65f252-c0b3-4614-8166-726a22de4f42" alt=""><figcaption></figcaption></figure></div>

Los mineros ejecutan nodos de Stacks con la minería habilitada para participar en el mecanismo PoX. El nodo implementa el mecanismo PoX, que garantiza un manejo e incentivos adecuados a través de cuatro fases clave:

1. **Registro**: los mineros se registran para una elección futura enviando datos de consenso a la red
2. **Compromiso**: los mineros registrados transfieren Bitcoin para participar en la elección. Los BTC comprometidos se envían a un conjunto de titulares de tokens STX participantes, también conocidos como stackers.
3. **Elección**: una función aleatoria verificable elige a un minero para un nuevo período para escribir bloques en la cadena de bloques de Stacks
4. **Ensamblaje**: el minero elegido escribe los nuevos bloques extrayendo transacciones del mempool y recopila recompensas en forma de nuevos tokens STX

## Proceso de selección de mineros

A diferencia de una carrera por bloques, como en PoW, Stacks utiliza un proceso de elección de líder único llamado sorteo criptográfico. Esto se facilita mediante un estado de función aleatoria verificable incrustado en las transacciones de Bitcoin. Esto, a su vez, permite ganadores deterministas pero impredecibles en cada bloque de Bitcoin.

<details>

<summary>¿Qué es un sorteo criptográfico?</summary>

Un sorteo criptográfico es un proceso de selección aleatoria de una o más entidades de un conjunto usando criptografía. Es una forma descentralizada y verificable de seleccionar participantes para una variedad de tareas, como protocolos de consenso, loterías y subastas.

Más específicamente, el sorteo de mineros en el contexto de Stacks es el proceso de sorteo criptográfico ponderado mediante el cual un candidato a minero es seleccionado como el siguiente minero (líder).

</details>

Antes que nada, cada minero de Stacks debe registrar una clave pública VRF en una transacción de bitcoin. Una vez que lo hacen, pueden entonces emitir *compromiso de bloque* transacciones en Bitcoin. Las transacciones de compromiso de bloque en bitcoin contienen:

`par (hash del bloque, semilla VRF)`

Estas transacciones de compromiso de bloque no solo contienen un puntero a la secuencia de bloques que pretenden producir, sino que también incluyen toda la información relevante para volver a sembrar la siguiente VRF para el siguiente sorteo. Los mineros no pueden alterar la semilla VRF. Esto está garantizado por la propiedad:

`semilla VRF = hash de la prueba VRF`

Y esa prueba VRF solo puede ser generada por la clave privada VRF del minero.

<details>

<summary>¿Cómo se relacionan entre sí los compromisos de bloque?</summary>

<div data-with-frame="true"><figure><img src="https://3385590278-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FH74xqoobupBWwBsVMJhK%2Fuploads%2F9l4YJ1AOry3SSTL724wd%2Fmining-leader-election-flow.png?alt=media&#x26;token=6dcfaefd-1362-4d10-a530-b726584b91d8" alt=""><figcaption></figcaption></figure></div>

</details>

{% hint style="info" %}
Para ser considerado para un período, un minero debe tener un compromiso de bloque incluido en un bloque de Bitcoin. Si un minero desea actualizar su compromiso después de enviarlo, puede usar Replace-By-Fee de Bitcoin.
{% endhint %}

### Probabilidad de minar el siguiente bloque

El minero que es seleccionado para minar el siguiente bloque se elige según la cantidad de BTC que los mineros transfieren. La probabilidad de que un minero mine el siguiente bloque se determina usando una variación de Assumed Total Commitment with Carryforward (ATC-C) [MEV](https://github.com/stacksgov/sips/blob/main/sips/sip-021/MEV-Report.pdf) estrategia de mitigación para asignar recompensas de bloque a los mineros. La probabilidad de que un minero gane el sorteo y reciba el período actual se basará en una función que tiene en cuenta el gasto total de compromiso de bloque en los bloques anteriores al sorteo actual.

Aunque el protocolo no impone un compromiso mínimo de BTC, en la práctica existe un umbral limitado por el polvo: básicamente, si las comisiones de una transacción superan el valor de la salida gastada, se considera polvo. Cómo se [calcula](https://github.com/bitcoin/bitcoin/blob/master/src/policy/policy.cpp#L14) depende de varios factores; hemos descubierto que 5.500 satoshis es un buen límite inferior por salida. Las transacciones de Bitcoin de los mineros de Stacks contienen dos salidas (para la Prueba de Transferencia), por lo que se recomienda un compromiso de al menos 11.000 satoshis por bloque.

Para calcular la cantidad de BTC a enviar, los mineros deben:

* Adivinar el precio BTC/STX para el día siguiente (100 bloques después)
* Adivinar la cantidad total de bitcoin comprometida por todos los mineros

{% hint style="info" %}
Los Stackers están a cargo tanto de validar y añadir nuevos bloques como de realizar los cambios de período de minero. La siguiente sección explicará cómo funciona eso, y luego veremos cómo este proceso resulta en la finalidad de Bitcoin.
{% endhint %}

### Transacciones de compromiso de bloque (en Bitcoin)

Los mineros comprometen Bitcoin a **dos** direcciones en cada transacción de compromiso de bloque de líder. La cantidad comprometida a cada dirección debe ser la misma. Las direcciones se eligen del conjunto de recompensas actual de los participantes del staking. Las direcciones se eligen usando una función aleatoria verificable, y determinar las dos direcciones correctas para un bloque dado requiere monitorear la cadena de Stacks.

<figure><img src="https://3385590278-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FH74xqoobupBWwBsVMJhK%2Fuploads%2Fgit-blob-26b4e9ac6cc7d7af044042d0a9ddfedb6ce4bc4f%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

<details>

<summary>¿Cómo se ve realmente una transacción de compromiso de bloque?</summary>

* Mira este [clip](https://youtube.com/shorts/HPRsn-aSYrg?si=Y7hA7_9BeHFxV0zz) que describe qué incluye una transacción de compromiso de bloque en Bitcoin.
* Consulta una transacción de compromiso de bloque anterior en Bitcoin [aquí](https://mempool.space/tx/42834cb7ec9ca3e2b51e2ff16bd809ae049c925ed8d3da099c9ce3d5292d2a91).

</details>

## Recompensas de minero

Los mineros reciben las recompensas coinbase de los bloques de Stacks por los períodos que ganan.

Las cantidades de recompensa son:

* Se liberan 1000 STX por período durante los primeros 4 años de minería
* Se liberan 500 STX por período durante los siguientes 4 años
* Se liberan 250 STX por período durante los siguientes 4 años
* Se liberan 125 STX por período a partir de entonces de forma indefinida.

Estos "halvings" están sincronizados con los halvings de Bitcoin.

#### Comisiones de transacción

Los mineros también reciben comisiones de Stacks por las transacciones minadas en cualquier bloque que produzcan.

#### Maduración de recompensas

Las recompensas de bloque y las comisiones de transacción tardan 100 bloques en la cadena de bloques de Bitcoin en madurar. Después de minar con éxito un bloque, tus recompensas aparecen en tu cuenta de Stacks después de \~24 horas.

## Minería de Stacks en la práctica

Si echas un vistazo a [el panel de minería de Signal21](https://app.signal21.io/stacks/mining), puedes ver algunos datos interesantes sobre la minería en la red de Stacks, incluidos los BTC gastados por bloque, los STX ganados por bloque, el número total de mineros a lo largo de la historia de la cadena y el número de mineros para cualquier bloque dado.

Mucha gente nota el número aparentemente pequeño de mineros en Stacks. Sin contexto, esto a veces puede levantar sospechas. Analicemos cómo funciona la minería en Stacks para entender por qué esto no es un problema para la descentralización.

Los mineros de Stacks funcionan de manera similar a los secuenciadores en los sistemas L2 en el sentido de que solo son responsables de construir y proponer nuevos bloques, no de añadirlos a la cadena. Pero a diferencia de la mayoría de las L2 de Ethereum que operan con un solo secuenciador centralizado, Stacks cuenta constantemente con al menos 4-5 mineros con membresía abierta, lo que permite que cualquiera se una.

Es importante señalar que hay dos partes principales involucradas en el proceso de producción de bloques en Stacks: mineros y stackers. Estos dos roles sirven relaciones complementarias en el proceso de producción de bloques, y los stackers reducen drásticamente cualquier posible poder destructivo que los mineros tengan sobre la cadena.

Los mineros no pueden reorganizar la cadena. En el peor de los casos, todo lo que pueden hacer los mineros es omitir (ciertos tipos de) transacciones, y todo lo que se requiere para abordar esto es ejecutar tu propio minero.

Además, más mineros en la red significarían menos recompensas BTC para los Stackers, ya que los mineros tendrían que gastar más de sus fondos en comisiones de Bitcoin L1 en lugar de enviarlos a los Stackers.

<details>

<summary><strong>¿No significarían más mineros más competencia, es decir, más recompensas?</strong></summary>

La razón por la que más mineros significa menos recompensas es porque los mineros actúan de manera económicamente racional y no tienen una cantidad ilimitada de BTC con la que trabajar.

Los mineros están pagando sus compromisos PoX más sus comisiones de Bitcoin por una oportunidad de ganar la coinbase (1.000 STX) más comisiones por un período. Si hay más mineros, cada uno pagará menos, porque tendrá una menor probabilidad de ganar. No pueden pagar cantidades cada vez mayores de BTC porque en algún momento nunca serán rentables, así que hay un límite en cuánto BTC pueden gastar para intentar ganar un período.

A medida que pagan menos, la comisión de Bitcoin se convierte en una porción más significativa de sus gastos, y eso también reduce sus probabilidades de ganar el período.

Aquí hay un ejemplo concreto:

Supongamos que Stacks cotiza a 1.000 sats por STX.

El gasto total de todos los mineros, si todos actúan lógicamente e ignoramos las comisiones de Stacks, sería inferior a 1.000.000 sats (coinbase de 1.000 STX \* 1000 sats/STX).

Si eso proviene de 5 mineros, entonces podrían ser 10.000 sats (2.000 sats por cada transacción) destinados a comisiones de Bitcoin y 990.000 sats destinados a PoX.

Si hay 100 mineros, entonces serían 200.000 sats destinados a comisiones de Bitcoin y 800.000 sats destinados a PoX.

</details>

Esto crea un equilibrio económico natural en el que:

{% stepper %}
{% step %}
**Participan suficientes mineros para asegurar que los bloques se produzcan de forma fiable**
{% endstep %}

{% step %}
**Los Stackers reciben recompensas BTC óptimas**
{% endstep %}

{% step %}
**La red mantiene resistencia a la censura sin competencia minera innecesaria**
{% endstep %}
{% endstepper %}

Este diseño es intencional: al tener stackers como garantes de seguridad complementarios que reciben recompensas BTC mediante PoX, Stacks logra seguridad sin requerir un número excesivo de mineros compitiendo únicamente para ganar derechos de producción de bloques.

A diferencia de otras cadenas donde los mineros por sí solos determinan la cadena canónica, el sistema de dos partes de Stacks proporciona garantías más sólidas:

* Los mineros no pueden forzar transacciones o bloques inválidos (los stackers no los firmarán, e incluso si lo hicieran, los nodos no los aceptarían)
* Ningún minero puede reorganizar unilateralmente la cadena (los stackers controlan la finalidad de la cadena)
* El requisito de firma de umbral del 70% de los stackers garantiza un amplio consenso antes de que se acepten los bloques

Esta separación de responsabilidades entre mineros y stackers es lo que hace que Stacks sea singularmente seguro a pesar de tener un pequeño número de mineros.

<details>

<summary>¿Qué pasó con los microbloques?</summary>

Los microbloques son una función heredada de la versión anterior de Stacks que ya no existe. Originalmente se crearon como una forma de mejorar el rendimiento de las transacciones, pero sin la funcionalidad de Nakamoto, nunca funcionaron en la práctica.

En lugar de microbloques, Nakamoto utiliza una estructura de producción de bloques que crea bloques de Stacks a un ritmo rápido, como se describe aquí.

</details>

## Mitigación del MEV en Bitcoin

El Valor Extraíble por el Minero (MEV) ha sido un problema de larga data en muchas cadenas de bloques, incluida Stacks antes de Nakamoto.

MEV se refiere al beneficio potencial que los mineros pueden extraer de la manipulación de la inclusión y el orden de las transacciones dentro de los bloques que producen, lo que puede conducir a prácticas injustas y a una menor confianza en la red.

Específicamente en las versiones de Stacks anteriores a Nakamoto, los mineros de Bitcoin con un porcentaje significativo del hashrate de Bitcoin tenían la capacidad de censurar las transacciones de compromiso de otros mineros de Stacks, asegurando que pudieran ganar las recompensas y comisiones de los bloques de Stacks en los que también eran los ganadores del bloque de Bitcoin como minero de Bitcoin.

El sistema Nakamoto utiliza una variación de Assumed Total Commitment with Carryforward (ATC-C) [MEV](https://github.com/stacksgov/sips/blob/main/sips/sip-021/MEV-Report.pdf) estrategia de mitigación para asignar recompensas de bloque a los mineros. La probabilidad de que un minero gane el bloque y obtenga el período actual se basará en una función que tiene en cuenta el gasto total de compromiso de bloque en los bloques anteriores al bloque actual.

<div data-with-frame="true"><figure><img src="https://3385590278-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FH74xqoobupBWwBsVMJhK%2Fuploads%2FKR4LNqlqDmrC4hBmUwOB%2FATCC-formula.png?alt=media&#x26;token=ade7ed3f-2d1e-4124-8768-467069afca60" alt=""><figcaption></figcaption></figure></div>

La solución ATC deja la opción de que un bloque no tenga un ganador válido. La transacción TenureChange-Extend mitiga la mayoría de los efectos adversos causados por un bloque perdido.

***

### Recursos adicionales

* \[[Stacks YT](https://youtu.be/F31B-my510A?si=E0SRw0bbhuevB4kj)] La relación entre Stacks y los mineros de Bitcoin
* \[[Stacks YT](https://youtu.be/bhVyM5CYoh4?si=3bQl8Q_iJ_3z5jX-)] Presupuesto de Seguridad a Largo Plazo e Incentivos para Mineros de Bitcoin
