Saltar al contenido
buybitcoinsmart

Glosario / Minería y consenso

Peso de bloque

¿Qué es el peso de bloque?
El peso de bloque mide un bloque de bitcoin en una escala donde un byte de datos de testigo cuesta 1 unidad y cualquier otro byte cuesta 4, con un tope de 4.000.000 unidades.

Se especifica en el BIP-141.

El peso de bloque existe porque no todos los bytes le cuestan lo mismo a un nodo. Los datos de firma pueden descartarse una vez que la transacción queda enterrada, así que BIP141 les asignó una cuarta parte del precio de todo lo demás y estableció el presupuesto en 4.000.000 unidades por bloque. Su retiro compite por ese presupuesto, y el descuento es la razón por la que enviar desde una dirección moderna cuesta menos que enviar desde una antigua.

Cómo funciona

La fórmula de BIP141 dice: el peso de bloque es igual al tamaño base multiplicado por tres, más el tamaño total. El tamaño base es el del bloque serializado a la antigua, con los testigos eliminados; el tamaño total es el de la serialización completa. Escrita al revés, la misma regla dice cuatro unidades por cada byte que no es de testigo y una unidad por cada byte de testigo, que es la versión que vale la pena memorizar.

Si se divide el peso de una transacción entre cuatro y se redondea hacia arriba, se obtienen bytes virtuales, la unidad que usan todos los estimadores de comisiones y todas las billeteras. Un pago que gasta dos entradas y crea dos salidas, todas ellas SegWit nativas, suma aproximadamente 208 bytes virtuales, o alrededor de 832 unidades de peso. Si se llena un bloque solo con pagos así, caben cerca de 4.800. El mismo pago construido con direcciones heredadas (legacy) del tipo pay to public key hash mide alrededor de 374 bytes, que pesan 1.496 unidades porque nada de ello tiene derecho al descuento, así que solo cabrían alrededor de 2.670.

Esa diferencia es todo el sentido del diseño. Aplicar un descuento a los testigos hizo que la adopción de SegWit se amortizara sola: una billetera que se actualizaba obtenía comisiones más bajas en cada transacción, sin que hubiera que convencer a nadie de que un bloque más grande era seguro. También empuja el comportamiento en el sentido que le conviene a la red, ya que gastar salidas antiguas y consolidarlas en otras nuevas es más barato por entrada que antes.

Hay dos detalles que confunden a la gente. El peso de bloque se calcula por transacción y después se suma, así que el peso de un bloque es la suma del de sus transacciones más su encabezado y sus contadores, y un minero que llena un bloque resuelve un problema de la mochila frente al presupuesto de 4.000.000 unidades y no frente a un recuento de bytes. Y el peso de una transacción no guarda ninguna relación con su valor: una transacción de 900 unidades de peso que mueve 40 bitcoin y otra que mueve 40.000 satoshis pagan comisiones idénticas, porque la red cobra por el espacio, nunca por el monto.

Dónde aparece

Todos los exploradores de bloques muestran el peso de cada bloque junto a su tamaño, y la llamada RPC getblock de Bitcoin Core devuelve weight, size y strippedsize como tres campos separados. Las visualizaciones de la mempool también se basan en él: las barras que muestran lo que espera confirmación se colocan unas sobre otras según la comisión por vB, en sat/vB, que lleva en el denominador el peso de la transacción dividido entre cuatro.

El peso de las transacciones es también lo que un exchange le cobra realmente en una comisión de retiro. Una plataforma que anuncia una comisión fija en bitcoin está promediando el peso de las transacciones que espera construir, y gana cuando la mempool está tranquila y pierde cuando está congestionada. Una plataforma que agrupa por lotes, enviando decenas de retiros de clientes como salidas de una sola transacción, paga por un único conjunto de entradas en lugar de por decenas, y por eso los exchanges que agrupan por lotes pueden permitirse comisiones mucho más bajas que los que difunden cada retiro por separado.

Peso de bloque frente a byte virtual

El peso de bloque es la medida en bruto y un byte virtual es la misma medida dividida entre cuatro. Ambos describen los mismos datos; solo cambia la escala. El peso de bloque es la unidad escrita en las reglas de consenso, así que la cifra de 4.000.000 aparece en el código expresada en unidades de peso. Los bytes virtuales son la unidad escrita en las interfaces de las billeteras, porque es más fácil razonar con una comisión por vB de 8 sat/vB que con 2 sat por unidad de peso. Cuando una billetera dice que su transacción ocupa 141 vbytes, el bloque en el que entra tiene 564 unidades menos de espacio.

No confundir con

Preguntas frecuentes

¿Cómo convierto el peso de bloque en bytes virtuales?

Divida el peso de bloque entre cuatro y redondee hacia arriba. Una transacción de 560 unidades de peso equivale a 140 bytes virtuales, y un bloque lleno de 4.000.000 unidades de peso equivale a 1.000.000 bytes virtuales.

¿Un monto mayor de bitcoin cuesta una comisión mayor?

No. Las comisiones se cobran por unidad de peso de bloque, no por moneda movida. Una transacción que envía una fracción de un bitcoin y otra que envía cincuenta pueden pesar lo mismo y pagar lo mismo, siempre que tengan el mismo número de entradas y salidas.

Para seguir leyendo

Términos relacionados

Más en la sección Minería y consenso

Leer esta página en inglés