¿Por qué Taproot requiere un nuevo formato de dirección?

Dawid Ciężarkiewicz preguntó en Twitter:

Hola usuarios de #bitcoin. Estoy tratando de averiguar por qué taproot necesita un nuevo formato de dirección, ya que me lo perdí. Si tienes un buen enlace o algo así, por favor comparte. Pensé que "Una salida Taproot es una salida SegWit nativa con el número de versión 1 (...)" significa que bech32 servirá.

y hago la pregunta aquí para proporcionar una mejor visibilidad de la pregunta y la respuesta.

Respuestas (1)

Fondo

Las direcciones P2TR se codificarán con Bech32 , aunque probablemente sea una versión modificada. Anticipándose a la fusión de Taproot, algunos proponentes probaron el comportamiento de varias billeteras y servicios con respecto a las salidas de segwit v1. BIP173 prescribe que se deben aplicar las restricciones conocidas para las direcciones Bech32, pero que "las implementaciones DEBEN permitir el uso de cualquier versión". Las pruebas encontraron que varias billeteras y servicios no se adhirieron a la especificación, sino que no pudieron crear salidas segwit-v1 o, peor aún, las degradaron silenciosamente a salidas segwit-v0, usando el mismo script de salida pero manipulando la versión segwit y por lo tanto quemando los fondos.

El año pasado, también se descubrió que Bech32 está sujeto a una mutabilidad de extensión de longitud. Las direcciones con una terminación específica se pueden ampliar insertando caracteres específicos (o eliminándolos si aparecen en posiciones específicas). Esto es en gran medida intrascendente para las direcciones nativas de segwit debido a su restricción a 42 o 62 caracteres.

Una propuesta reciente tiene como objetivo solucionar ambos problemas modificando el cálculo de la suma de comprobación para Bech32. El uso de este formato modificado para las próximas versiones de salida de segwit protegería los fondos para que no se quemen, ya que las salidas degradadas ya no cumplirían con los requisitos de suma de verificación de segwit-v0 y, al mismo tiempo, remediaría la mutabilidad de la extensión de longitud para segwit-v1–v16.

Pagar a direcciones segwit v1

La especificación de segwit permitía explícitamente la creación de todas las versiones de salidas de segwit. Por lo tanto, se esperaba que todas las billeteras habilitadas para segwit pudieran crear salidas P2TR listas para usar. De acuerdo con las pruebas mencionadas, muchas billeteras y servicios no cumplían con la especificación, pero requerirían actualizaciones para admitir el envío a P2TR. Según el cambio propuesto, las billeteras tendrían que actualizar adicionalmente la constante de suma de verificación para las direcciones segwit-v1–v16 bech32.

Gasto de salidas P2TR

Los BIP Taproot prescriben una nueva versión de script ( Tapscript ), firmas Schnorr y el formato de salida Taproot , por lo que el gasto de las salidas P2TR requerirá más trabajo de implementación en primer lugar, especialmente para hacer uso de funciones avanzadas como gastos de ruta de script o uso claves agregadas en la ruta de claves.