Разные redeemScript для одного и того же scriptPubKey?

Большинство транзакций, выводимых на адреса P2SH, имеют следующий scriptPubKey:

HASH160 f45d94733d430261962932e0c847075195916a04 OP_EQUAL

Насколько я понимаю, эту транзакцию не нужно подписывать. Это правда?

Пользователю просто нужно предоставить redeemScript, HASH160 которого равен f45d94733d430261962932e0c847075195916a04.

Итак, если мы знаем, что:

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

и пользователь создает два выхода транзакции на адреса P2SH с помощью scriptPubKeys:

HASH160 f45d94733d430261962932e0c847075195916a04 OP_EQUAL

тогда scriptPubKey одинаков для обоих выходов транзакции, но почему redeemScript всегда отличается?

HASH160(data1) = hash1
HASH160(data2) = hash1
....
????
Можете ли вы привести пример двух разных сценариев погашения с одним и тем же хэшем?

Ответы (1)

Транзакция P2SHвыполнит все, что redeemScriptвы предоставите, и это должна быть стандартная транзакция:

Транзакции, которые компенсируют эти минусы pay-to-script, считаются стандартными только в том случае, если сериализованный скрипт, также называемый redeemScript, сам по себе является одним из других стандартных типов транзакций. См. BIP16

Эти стандартные транзакции, такие как a, P2PKHтребуют подписи, поэтому, даже если вы предоставите право redeemScript, если оно не будет выполнено успешно, весь tx станет недействительным.

Просто отметим, что Bitcoin Core 0.10.0 и более поздние версии больше не требуют, чтобы redeemScript был одним из стандартных типов транзакций. См. github.com/bitcoin/bitcoin/pull/4365 .