¿Cómo se comparan las direcciones bech32 con las direcciones P2SH en tamaño de transacción?

Bech32 (comienza con bc1) y P2SH (comienza con 3) se pueden usar para transacciones segwit. Sé que se supone que bech32 crea transacciones más pequeñas, pero me gustaría saber cuánto más pequeñas (que P2SH). ¿Cómo se comparan las transacciones provenientes de una dirección normal de una sola clave?

Respuestas (2)

bech32 produce transacciones más pequeñas que las transacciones segwit de P2SH.

  • un byte adicional por salida para crear salidas P2SH que para crear bech32 utxos (P2SH usa OP_HASH160y OP_EQUALademás de un hash de 20 bytes en su script, mientras que bech32 solo usa un 00byte fijo además de un hash de 20 bytes), y
  • 23 bytes adicionales por entrada para gastar de P2SH utxos que de bech32 utxos (P2SH tiene que producir el script que se ha convertido en hash al gastar en el sigscript, que requiere 23 bytes para codificar; bech32 no tiene ningún sigscript que no sea testigo).

Básicamente, P2SH requiere un hash de secuencia de comandos, SegWit nativo no, y todo lo demás es muy similar. Native SegWit proporciona el script cuando se crea la salida y P2SH lo proporciona cuando se gasta la salida.


Si desea saber cuánto ahorró (o puede ahorrar) en cada transacción, el Explorador de Blockstream ofrece una buena función, donde puede ver los ahorros. Por ejemplo, para esta transacción, puede ahorrar un 16% adicional en tarifas

bitcoincore.org/en/segwit_wallet_dev/… dice "En comparación con las versiones P2SH, el tamaño de transacción de las versiones nativas es más pequeño en la mayoría de los casos".
Aquí hay un ejemplo : SegWit => 30% de ahorro. SegWit nativo => 16 % de ahorro adicional

Ambos son solo una codificación. El tx resultante podría ser exactamente idéntico. En la vida real, sin embargo, la gente usa bech32 solo para transacciones nativas de segwit, mientras que p2sh se usa como un envoltorio alrededor de segwit. el tx es en realidad un poco más pequeño cuando se usa p2sh.

¿En serio? P2SH es en realidad más pequeño? ¿Cuál es la ventaja de bech32 entonces? No entiendo muy bien qué significa "nativo" en el contexto de "segwit nativo". Por cierto, ¿tiene fuentes donde podamos leer más sobre esto / verificar su respuesta?
La mejor fuente es siempre la fuente real. bech32 se ha propuesto en bip173 que puede encontrar aquí: github.com/bitcoin/bips/blob/master/bip-0173.mediawiki También tiene una sección sobre cómo bech32 es mejor que diferentes codificaciones. Para el tamaño no hay una fuente definida sin especificar qué es exactamente lo que desea comparar. bech32 es una codificación, p2sh es un tipo de transacción. Para mi comparación, asumí que bech32 es equivalente a segwit nativo.
Esta respuesta es falsa de varias maneras: 1. No es solo una codificación diferente, las salidas segwit envueltas y segwit nativas son tipos de salida diferentes. Cuando los fondos se envían a una dirección de segwit encapsulado, solo se pueden gastar en una entrada de segwit encapsulado y viceversa para el segwit nativo. 2. Las transacciones de segwit envuelto y segwit nativo no pueden ser idénticas, aunque pueden tener un efecto equivalente (a diferentes costos de tarifas). 3. Las transacciones de segwit envueltas utilizan más espacio de bloques que las transacciones de segwit nativas.