¿Cuánto aumentará Segwit *realmente* la capacidad de bitcoin para transacciones realistas?

A menudo veo afirmaciones de que Segwit aumenta las transacciones por bloque de 1,7x a 2x. No estoy seguro de si esto es cierto, pero si hago los cálculos yo mismo, no obtengo este número.

Mi entendimiento es:

1) El cálculo del "peso" cambia de:

weight = transaction size
to:
weight = non_sig_siz * 4 + sig_size

de donde va el "peso" máximo total por bloque 1024^2 to 4*(1024^2).

Realmente el peso es un concepto nuevo, anteriormente se medía en bytes.

2) Que las transacciones típicas rondan los 500b, y que las firmas son 65b de eso. Varían, pero puede consultar aquí los tamaños promedio de transacciones históricas:

https://tradeblock.com/bitcoin/historical/1h-f-tsize_per_avg-01101

3)

((500.0 – 65.0)*4+65)/4.0 = 451.25
1-(451.25/500) = 9.7% 

Sugiriendo que solo obtendríamos un 10%, no un 70-100% más de transacciones con segwit.

No estoy seguro de si hay un error en mis matemáticas, o mi comprensión de los pesos de segwit, o los tamaños típicos de tx, o algo más. He visto de 1,7 a 2 veces en publicaciones de personas con más conocimientos que yo, por lo que me interesaría ver cómo funciona esto.

Por supuesto, si las transacciones no fueran típicas y no tuvieran casi nada más que datos de firma, podría incluir muchas más transacciones en un bloque. Por ejemplo, si pudiera encontrar una manera de crear una transacción que fuera solo datos de firma, podría incluir alrededor de 8 veces más transacciones por bloque, aunque esas transacciones serían inútiles.

Para los casos de uso realistas típicos, ¿está mi cifra del 10 % en el orden de magnitud correcto, o hay algo que me estoy perdiendo que permitiría el doble de transacciones útiles realistas?

Hay una respuesta relacionada que también puede ser valiosa: bitcoin.stackexchange.com/a/69678/75001

Respuestas (1)

Tenga en cuenta que el campo scriptSig no es solo la firma ECDSA en sí (65 bytes), sino también la clave pública en el caso de una entrada P2PKH, o el script de canje para una entrada P2SH, y un par de bytes más para los tamaños. Además, hay un scriptSig para cada entrada, no solo uno por transacción. Está viendo el tamaño de transacción promedio, la mayoría de los cuales contienen múltiples entradas, pero luego asume solo una firma de 65 bytes.

Tomemos una transacción de ejemplo con una sola entrada y salida: https://blockchain.info/tx/82d62d5f4e69ae8338c39b7ae2e1d33db59bdf62c869ded7344adc936bab8653

Esta transacción tiene 226 bytes, de los cuales 108 bytes son scriptSig (incluido el byte de longitud), que es casi la mitad del tamaño de la transacción. Debido a que la transacción promedio tiene más de una sola entrada, los scriptSig múltiples representan un porcentaje más alto del tamaño total de la transacción en esas transacciones: en promedio, alrededor del 60 % de la transacción. Teniendo eso en cuenta, le da el aumento estimado en promedio, que se basó en simulaciones ejecutadas con las nuevas reglas de acuerdo con el uso actual, creo.

Realmente el peso es un concepto nuevo, anteriormente se medía en bytes.

De hecho, es engañoso decir que el peso era el tamaño de la transacción en bytes antes de que se definiera este nuevo peso, debe comparar el tamaño anterior con el nuevo tamaño de transacción virtual (que básicamente es lo que hizo de todos modos al dividir por 4)