RedimirScript diferente para el mismo scriptPubKey?

La mayoría de las salidas de transacciones a direcciones P2SH tienen el siguiente scriptPubKey:

HASH160 f45d94733d430261962932e0c847075195916a04 OP_EQUAL

Según tengo entendido, esta transacción no necesita ser firmada. ¿Es verdad?

El usuario solo necesita proporcionar un script de redimir cuyo HASH160 sea igual a f45d94733d430261962932e0c847075195916a04.

Entonces, si sabemos que:

HASH160(data1) = hash1
HASH160(data2) = hash2

y el usuario crea dos salidas de transacciones a direcciones P2SH con scriptPubKeys:

HASH160 f45d94733d430261962932e0c847075195916a04 OP_EQUAL

entonces el scriptPubKey es el mismo para ambas transacciones, pero ¿por qué el script redimir siempre es diferente?

HASH160(data1) = hash1
HASH160(data2) = hash1
....
????
¿Puede proporcionar un ejemplo de dos scripts de canje diferentes con el mismo hash?

Respuestas (1)

Una P2SHtransacción ejecutará lo que redeemScriptproporcione, que debe ser una transacción estándar:

Las transacciones que canjean estos puntos de salida de pago por secuencia de comandos solo se consideran estándar si la secuencia de comandos serializada, también conocida como redimirScript, es, en sí misma, uno de los otros tipos de transacciones estándar. Ver BIP16

Esas transacciones estándar, como a, P2PKHrequieren una firma, por lo que, aunque proporcione el derecho redeemScript, si no se ejecuta correctamente, todo el tx dejará de ser válido.

Solo para tener en cuenta, Bitcoin Core 0.10.0 y versiones posteriores ya no requieren que el script de redimir sea uno de los tipos de transacción estándar. Consulte github.com/bitcoin/bitcoin/pull/4365 .