¿Por qué BIP141 define tanto el tamaño como el peso de la transacción virtual?

¿Por qué BIP 141 (segwit) define tanto el tamaño como el peso de la transacción virtual ?

El peso parece ser solo cuatro veces el tamaño de la transacción virtual (o viceversa, según lo que defina primero). ¿Por qué se necesitan ambos?

Respuestas (1)

El límite de transacción bajo segwit se deriva únicamente del peso de la transacción y el límite de peso del bloque de 4,000,000 unidades de peso.

El tamaño de la transacción virtual no se utilizó para el cálculo del límite porque es fraccionario cuando se calcula con precisión. Bitcoin Core solo usa números enteros en el código de consenso y, por lo tanto, hizo la transición al peso de la transacción con la activación de segwit.

El tamaño de transacción virtual se proporciona simplemente como una forma conveniente de comparar el tamaño de transacción efectivo de segwit con los tamaños de transacción anteriores a segwit.


Agregando una cita de la sección para aclarar: BIP141 especifica los siguientes términos con respecto al tamaño de la transacción:

El peso de la transacción
se define como Tamaño base de la transacción * 3 + Tamaño total de la transacción (es decir, el mismo método para calcular el peso del bloque a partir del tamaño base y el tamaño total).

El tamaño de la transacción virtual
se define como Peso de la transacción / 4 (redondeado al siguiente entero).

El tamaño base de la transacción
es el tamaño de la transacción serializada con los datos testigo eliminados.

El tamaño total de la transacción
es el tamaño de la transacción en bytes serializados como se describe en BIP144, incluidos los datos base y los datos testigo.

No estoy seguro de lo que significa "no se usa en segwit". :) Se usa en bitcoin-core. Por ejemplo, bitcoind devuelve vsize(tamaño virtual) de RPC, no de peso.
@KarelBílek: Entonces mi respuesta fue incorrecta y no debiste aceptarla. ;) Será mejor que esperes a alguien que realmente sepa de lo que habla, como PWuille.
Murch tiene razón. vsize no tiene significado excepto para los humanos. Está ahí para proporcionar una transición fluida entre los tamaños y pesos de las transacciones (que tienen una escala diferente). Por ejemplo, las tarifas se expresan actualmente en satoshi/byte. Para hacer posible la comparación, espero que se use satoshi/vbyte en lugar de satoshi/peso (que sería un cambio de número drástico para significar lo mismo).
En ese caso, ¿por qué bitcoin no define solo tamaño virtual y no límite de peso de bloque, sino límite de tamaño virtual, que sería 4 veces más pequeño y significaría lo mismo, sin definir dos términos que son casi equivalentes? tal vez me estoy poniendo demasiado quisquilloso, pero no veo ninguna razón para el concepto de peso.
Porque el tamaño virtual es fraccionario cuando se calcula con precisión. El peso es un número entero. Solo usamos números enteros en el código de consenso.
@PieterWuille ¡esa es una gran razón! ¿Puedes agregar eso a la respuesta? (No estoy seguro si tiene derechos de edición)
De hecho, puedo editar la respuesta yo mismo; lo hare y lo aceptare