¿Cómo verificar si es Segwit Transaction o no?

Ejemplo de gráfico de uso de Segwit: https://p2sh.info/dashboard/db/segwit-usage?orgId=1

Me gustaría verificar comprobando tx si es Transacción Segwit o no.

¿Hay algún método simple para hacer esto?

  • legado -> P2SH tx (¿Es esta transacción de Segwit?)
  • P2SH -> tx heredado (¿Es esta transacción de Segwit?)
  • bech32 -> tx heredado (¿Es esta transacción de Segwit?)

¿Qué sucede cuando se configuran muchos tipos de direcciones como entradas y salidas?

Respuestas (1)

Una transacción es un segwit tx si al menos una de las entradas contiene un testigo. O si está inspeccionando el tx sin procesar, entonces verifica el quinto byte (el conteo de entrada) y si es así, 0x00entonces es un segwit tx.

Ejemplo: tx1

02000000 05 5f4e5315ffe854e75db92f8dda952a8db2f63b37838fca4c32bd4bb692fe7ea2000000006a47304402200ab62a9d1858dceeaa2101cda3f31b7bae60471c0355c54a6eae48f723555806022010d2aad6362a8c56ed66b0670ff84175f534f4f0995f8724a9b2a5fc89a2a4b4012102c424c2670a7aade9cf867576064013d02cc7669c418968993e73e6b25fc122bcfeffffff80cb1bfcde0f309490c717eca07f1353f121fb13e105...

no es un segwit tx porque el conteo de entrada es 0x05= 5

tx2

01000000 00 010106325BAC2F2E7CA67FA46C8304FB3B747E5578DF1EEF0394349CE2CD744444444263056AT

es un segwit tx porque el conteo de entrada es 0x00= 0

También:

  • Las transacciones que gastan entradas P2PKH (dirección que comienza con 1) no se pueden segwit.
  • Las transacciones que gasten entradas P2SH se identificarán si son P2SH anidadas, de lo contrario no.
  • Las transacciones que gasten P2WPKH o P2WSH (a partir de bc1) serán segwit.

En tu ejemplo:

legado -> P2SH

Esto no puede ser un segwit tx porque gasta entradas de una dirección heredada

P2SH -> legado

Puede ser un segwit tx si la dirección es P2SH-P2WPKH o P2SH-P2WSH (segwit anidado en P2SH). No sabría si está anidado si no es suyo a menos que alguien ya haya gastado de él (en cuyo caso inspecciona el gasto tx).

bech32 -> legado

Esto siempre es un segwit tx