Obtención de la identificación de transacción de la transacción sin procesar de una dirección multisig

Puedo obtener la identificación de tx (o hash de transacción) de casi cualquier transacción, excepto aquella en la que el script comienza con "OP_O" (que es, creo, el dummy nulo presentado aquí https://github.com/bitcoin /bitcoin/tirar/3843 )

Por ejemplo:

https://www.blockchain.com/btc/tx/97d1b00fcef1f19531a19bb1722635341a9f2ad261ecf6eed89eca2cbd3bb3ee

¿Cómo se supone que debo obtener el txid de esta transacción? ¿Y en qué se diferencia de uno normal (sin multisig)?

Respuestas (1)

¿Cómo se supone que debo obtener el txid de esta transacción?

De la misma manera que obtienes el txid de cualquier otra transacción, haciéndolo hash (a menos que sea segwit). Tenga en cuenta que la transacción a la que se vinculó no es una transacción segwit, por lo que solo puede tomar su hash.

Si la transacción es una transacción segwit (como lo indican los bytes de marcador y marca de los 0x0001siguientes bytes de versión), entonces solo necesita codificar las partes que no son segwit. Específicamente, sueltas todas las partes del segwit (es decir, el marcador y la bandera y cualquier testigo que se pueda encontrar entre la última salida y el tiempo de bloqueo), y hash lo que queda. Esto se describe en BIP 144 .

¿Y en qué se diferencia de uno normal (sin multisig)?

no hay

Gracias, volveré a revisar mi código. Lo probé en un bloque completo (alrededor de 2k txs) y las únicas veces que el txid no coincidió (20 veces) fue cuando apareció un "OP_0" en uno de los scripts de entrada.
Además, no simplemente hago un hash de la transacción tal como está. Lo analizo, almaceno todos sus elementos en una estructura de datos y luego los vuelvo a agregar y los hago un hash (uso la identificación tx como una verificación de error).
OP_0 también se usa en transacciones segwit, por lo que ese puede ser su problema.
Problema resuelto: Tuve un problema con mi función "varint"... ¡Gracias!
FWIW, tuvo el mismo síntoma en 2022 pero de un problema subyacente diferente. OP_PUSHDATA1 no pudo codificar su código de operación, 0x4c, en la transacción. Obviamente, el mismo problema ocurrió con OP_PUSHDATA2 y OP_PUSHDATA4.