Con transacciones 100% segwit, ¿cuál sería el número máximo de confirmación de transacción posible en un bloque?

Con transacciones 100% segwit, ¿cuál sería el número máximo de confirmación de transacción posible en un bloque?

Y, ¿cuántos utxo pueden ser actualizados por un bloque lleno de transacciones segwit?

que significa que un "utxo se actualice". Los UTXO se consumen y se producen nuevos en cada transacción. ¿Puedes explicar lo que realmente quieres decir?
Máximo, ¿cuántos utxo se actualizan (crean o consumen o actualizan) por un bloque lleno de transacciones segwit (~12k)? ¿Es lo mismo que pre-segwit? Quiero decir, ¿cuántas direcciones de bitcoin como máximo se actualizan con un bloque lleno de transacciones de segwit?
Creo que cdecker lo dejó muy claro, si todas son transacciones con 1 entrada y 1 salida, entonces 12k será la cantidad máxima de UTXO consumidos y producidos. Además, la transacción de 12k implica la producción de un máximo de 12k direcciones únicas.

Respuestas (1)

Pregunta muy interesante, veamos cuál es la transacción más pequeña que podemos construir. Para que sea mínimo tiene que ser una sola entrada y una sola salida. La parte sin segwit se vería así:

  • versión de 4 bytes
  • Recuento de entrada de 1 byte
  • Aporte
    • punto de salida de 36 bytes
    • 1 byte scriptSigLen ( 0x00)
    • 0 bytes scriptSig
    • secuencia de 4 bytes
  • Recuento de salida de 1 byte
    • valor de 8 bytes
    • Guión de 1 bytePubKeyLen
    • 22 bytes scriptPubKey ( 0x0014{20-byte keyhash})
  • tiempo de bloqueo de 4 bytes

Esto suma un total de 82 bytes para la parte no testigo. Entonces, con un tamaño de bloque total no testigo de 1 millón de bytes, obtenemos un máximo de 12195 transacciones. Suponiendo que todas las salidas gastadas fueran P2WPKH, la parte testigo de cada transacción consta de dos pulsaciones: una para la firma y otra para la clave pública. Estos tienen alrededor de 72 bytes y 33 bytes de largo, y cada uno necesita un prefijo de longitud de 1 byte. Además, hay una versión testigo de 1 byte. Entonces, el tamaño total del testigo es de 108 bytes. Con 3 MB de espacio en el bloque de testigos, esto nos lleva a unos 27777 testigos por bloque. Entonces, el factor limitante es el espacio en la parte del bloque que no es testigo, así que ese es el número final que debemos considerar.

Tenga en cuenta que utilicé la serialización sin segwit para la parte sin segwit, ya que eso es lo que sucederá con los nodos no actualizados. Observe también que este es un ejemplo extremo, ya que la mayoría de las transacciones no son de una sola entrada y una sola salida. Una transacción no segwit correspondiente tendría un tamaño de 192 bytes, lo que, junto con el límite de tamaño de 1 MB, nos lleva a 5208 transacciones por bloque, en comparación con 12195 transacciones segwit máximas por bloque.

La segunda parte de su pregunta sobre el máximo de UTXO en un bloque es bastante fácil. Nos gustaría amortizar los gastos generales de la estructura de transacciones y maximizar las entradas + salidas. Dado que las entradas son más grandes que las salidas, simplemente usaremos una sola entrada y calcularemos la cantidad máxima de salidas que caben en un bloque que es 32256. Dado que las salidas son datos que no son de segwit, también cambia mínimamente desde antes de la activación de segwit (solo el la firma de la entrada se mueve a la parte segwit). Por lo tanto, la rotación máxima de UTXO es que se elimina 1 UTXO y se agregan 32256. A modo de comparación, sin segwit, el número máximo agregado fue 32252. Tenga en cuenta que puede haber otros límites que no he considerado, pero estos definitivamente son los límites superiores, y es poco probable que estos límites hayan cambiado durante la activación de segwit.

Solo para asegurarnos de que estamos comparando manzanas con manzanas: en ambos casos, estamos hablando de entradas y salidas firmadas que nadie puede gastar, ¿verdad?
Correcto, en ambos casos estamos hablando SIGHASH_ALLde , que es el uso más común. Dado que solo tenemos una sola entrada y una sola salida, esto también coincide con SIGHASH_SINGLE.
@cdecker si 1 tx = 1 actualización/creación de utxo, ¿entonces 12195 es el cambio máximo de utxo en un bloque? ¿O se pueden actualizar (crear) más de 12195 utxo en un bloque?
Probablemente no, pero este es el uso razonable más pequeño que se me ocurrió. Si tuviera que crear salidas con solo OP_TRUE, podría salirse con la suya con transacciones ligeramente más pequeñas, pero no podría asegurarse de que solo el propietario pueda gastarlas. Específicamente, puede deshacerse de 21 de los 22 bytes scriptPubKey, lo que hace que la parte que no es testigo sea solo de 61 bytes, lo que lo lleva a 16393 transacciones, pero nuevamente, esas no serían seguras en absoluto.
@cdecker, ¿puede responder 2 partes de la pregunta para que pueda marcarla como respondida?
Bueno, estamos en el mismo orden de magnitud para las entradas UTXO actualizadas. Elimine 12195 y agregue 12195 nuevos, aunque podría ser posible introducir algunas entradas/salidas más y amortizar aún más los gastos generales de la transacción.
Ok, parece que la rotación máxima de UTXO es un poco diferente, modificaré mi respuesta :-)