Как я понял их мануалов.
Вы как-то не совсем правильно поняли.
ScriptSig для P2SH-входа имеет следующий формат:
<Sig1> <Sig2> ... <SigN> <redeemScript>
Знаки < > означают операцию помещения в стек того, что находятся между ними. То есть, <SigN> и <redeemScript> - это байтовые массивы, которые помещаются в стек один за другим в виде элементов данных.
Итак, на первом этапе в стек помещаются Sig1, ... SigN и последним в стек запихивается redeemScript. Далее происходит выполнение scriptPubKey, котрый для P2SH-выхода выглядит так:
OP_HASH160 <redeemScriptHash> OP_EQUAL
Первый оператор - OP_HASH160 хеширует содержимое вершины стека, а там находится redeemScript, и помещает результат в стек. Следующий оператор - OP_EQUAL сравнивает redeemScriptHash, предварительно помещённый в стек, с результатом оператора OP_HASH160, помещённым в стек ещё раньше. В случае неравенства - в стек помещается 0. На этом выполнение скрипта завершается и его результат, находящийся на вершине стека проверяется: если 0 - транзакция считается недействительной и на этом всё. В случае равенства - OP_EQUAL записывает на вершину стека 1, транзакция (на данном этапе) считается действительной и происходит переход ко второму этапу.
На первом этапе проверяется соответсвие между хешем redeemScript, записанным в scriptPubKey, и самим redeemScript, записанным в scriptSig. Тем самым подтверждается право на выполнение redeemScript.
На втором этапе в стеке имеются такие данные:
<Sig1> <Sig2> ... <SigN> <redeemScript>
RedeemScript извлекается из стека и выполняется уже как скрипт, использующий данные, находящиеся в стеке - <Sig1> ... <SigN>. Тут опять же, если результатом выполнения скрипта является 0, то транзакция считается недействительной и наоборот.
Во втором этапе реализуется логика скрипта redeemScript. Если это m-of-n multisig, то проверяется право на трату выхода подписям <Sig1> ... <SigN>.