Glosario / Transacciones y comisiones
Byte virtual
También se conoce como vbyte o vB.
- ¿Qué es un byte virtual?
- Un byte virtual es la unidad en la que las billeteras ponen precio a las transacciones: la cuarta parte del peso de cada una, redondeada hacia arriba, así que toda comisión se cotiza en satoshis por vbyte.
Se especifica en el BIP-141.
Las billeteras podrían cotizar las comisiones en unidades de peso y no volver a mencionar nunca los bytes, pero el byte virtual mantiene intacta la aritmética de siempre: una transacción sin datos de testigo tiene un vsize exactamente igual a su tamaño en bytes. En un bloque caben 1.000.000 de ellos. Leer una cotización en sat/vB es la forma de distinguir una comisión de retiro justa de una inflada.
Cómo funciona
El tamaño virtual sale de una sola línea de aritmética: tome el peso de la transacción, divídalo entre cuatro y redondee hacia arriba.
La diferencia entre esa cifra y la serialización en bruto es donde se pierde el dinero. Un pago que gasta una moneda SegWit nativa en dos salidas ocupa 222 bytes en la red, pesa 561 unidades de peso y se cobra como 141 bytes virtuales. Si multiplica los 222 por la comisión por vB elegida, en lugar de los 141, habrá pagado de más alrededor de un 57 %. Los exploradores de bloques muestran las dos cifras una junto a otra, con los nombres size y vsize, y elegir la equivocada es el error aritmético más común en la estimación de comisiones.
El redondeo ocurre una sola vez, al final. Las piezas no vienen en números enteros: una entrada Taproot gastada por ruta de clave mide 57,5 vbytes, así que un total intermedio puede terminar en media unidad. Por eso dos billeteras que construyen un gasto idéntico pueden discrepar en un solo vbyte sin que ninguna de las dos se equivoque. Bitcoin Core ofrece las tres vistas de una misma transacción, size, vsize y weight, así que usted mismo puede comprobar cualquiera de ellas.
Los estimadores de comisiones usan la misma unidad, aunque disfrazada. La llamada RPC estimatesmartfee responde en bitcoin por kilobyte virtual, así que un valor devuelto de 0.00005000 significa que 5.000 satoshis compran 1.000 bytes virtuales, es decir, 5 sat/vB. Cada franja de un panel de la mempool, cada control deslizante de una billetera y cada mensaje de rechazo sobre un piso de retransmisión se expresan en la misma unidad.
Dónde aparece
Los bytes virtuales deciden lo que cuesta en realidad un retiro de un exchange, y vale la pena hacer el cálculo antes de aceptar una comisión fija.
Tome el caso de una plataforma que agrupa los retiros por lotes: una entrada que financia 100 retiros de clientes en una sola transacción. A 31 vbytes por salida SegWit nativa, más 68 por la entrada y alrededor de 11 de sobrecarga, la transacción entera ocupa aproximadamente 3.179 vbytes. A 5 sat/vB cuesta 15.895 satoshis, o alrededor de 159 satoshis por cada una de las cien personas que incluye. Con un cargo fijo de 0,0001 BTC, a cada una de ellas se le cobran 10.000 satoshis por ese espacio, más de sesenta veces su parte. La relación se invierte en un pico de demanda: a 100 sat/vB el mismo lote cuesta 3.179 satoshis por persona, y la comisión fija se convierte en un subsidio. Las comisiones de retiro fijas son una apuesta, y en los días tranquilos gana la casa.
La misma unidad pone precio a sus propias tareas de mantenimiento. Barrer monedas pequeñas para juntarlas se cobra casi por completo según el número de entradas, así que una consolidación de doce entradas SegWit nativas en una sola salida ocupa alrededor de 858 vbytes, sean cuales sean los montos en juego. Hágalo a 2 sat/vB y le costará menos de 2.000 satoshis. Hágalo durante un pico de comisiones y le costará cincuenta veces esa cifra por un trabajo idéntico.
Byte virtual frente a unidad de peso
Un byte virtual y una unidad de peso miden los mismos datos en escalas que difieren en un factor de cuatro, y el redondeo es el único punto en el que dejan de ser intercambiables. Los límites de consenso se escriben en unidades de peso, y por eso el techo de un bloque se indica como 4.000.000 unidades. Las interfaces se escriben en vbytes, porque 8 sat/vB es más fácil de tener en la cabeza que 2 satoshis por unidad de peso. La función techo hace que una transacción de 561 unidades de peso se cobre como 141 vbytes y no como 140,25, así que se pagan tres cuartos de un byte que nunca se usó. Leer una especificación obliga a pensar en unidades de peso; pagar cualquier cosa obliga a pensar en vbytes.