¿Cuál es la diferencia entre "segwit nativo" y "bech32"?

La gente parece estar usando "segwit nativo" y "bech32" indistintamente. ¿Son realmente lo mismo?

Respuestas (1)

TL; DR: Native segwit se refiere a salidas de segwit sin envoltorio P2SH. Bech32 es el formato de dirección que se utiliza para representar los scripts de bloqueo nativos de segwit-v0.

Segwit envuelto vs segwit nativo

Cuando se activó segwit, introdujo la generación cero de segwit, segwit-v0. Los scripts de bloqueo correspondientes venían en dos versiones:

  1. Los tipos de salida "wrapped segwit" o "nested segwit" compatibles con versiones posteriores envuelven el programa testigo en una salida Pay to Script Hash (P2SH) . Hay dos variantes, P2SH-P2WPKH para single-sig y P2SH-P2WSH para scripts arbitrarios que incluyen multisig. Como todas las direcciones P2SH , las salidas de segwit envueltas se codifican usando Base58Check . El envoltorio permite que cualquier billetera habilitada para P2SH se envíe a direcciones de segwit envueltas.
  2. Los tipos de salida de "segwit nativos" que rompen la compatibilidad y que solo pueden pagarse con billeteras habilitadas para segwit. Las salidas nativas de segwit son más eficientes en el espacio de bloques porque evitan los datos adicionales necesarios para el envoltorio P2SH al resolver el programa testigo directamente. Los scripts de bloqueo de segwit nativos se codifican con el formato de dirección bech32 recientemente introducido (BIP-173) (para salidas de segwit nativas v0).

Otros usos de Bech32

Bech32 también se utiliza para otros fines como, por ejemplo, la codificación de facturas Lightning . Originalmente, también se planeó usar Bech32 para versiones posteriores de salida nativa de segwit. Sin embargo, después de que se descubrió una debilidad en la mutabilidad y las encuestas encontraron que muchas billeteras no manejaban correctamente el envío a versiones superiores de segwit, se está discutiendo una versión modificada de Bech32. Esta versión modificada de Bech32 usaría una constante de suma de verificación diferente para romper explícitamente la compatibilidad hacia adelante, es decir, requeriría que las billeteras se actualicen para crear salidas segwit-v1. Romper la compatibilidad hacia adelante protege las billeteras de quemar fondos al degradar incorrectamente las direcciones segwit-v1 a las direcciones segwit-v0, y permite corregir la debilidad de la mutabilidad.

Segwit-v1 nativo para usar Bech32m

La bifurcación blanda Taproot propuesta presenta el tipo de salida segwit-v1 nativo, Pay to Taproot (P2TR) , que sería el primer tipo de salida segwit nativo en usar este formato de dirección Bech32 modificado, llamado "Bech32m" propuesto por BIP-350 .