P2SH просто позволяет вам быть еще более безопасным, легко положить больше условий на искупление ваших монет, как требуют более 1 ключа, чтобы тратить.
Если я использую P2SH, то scriptPubKey всего 23 байт, а отправитель не придется беспокоиться о том, что именно искупит состояние я устанавливаю на моих монетах. P2SH как это работает. Я беру сценарий, который я хочу, чтобы мой scriptPubKey и сериализовать его (я буду использовать {} для обозначения сериализации):
redeemScript = {OP_3 {pubkey1} {} {pubkey2 pubkey3} {pubkey4} {pubkey5} OP_5 OP_CHECKMULTISIG}
redeemScript_hash = hash160 (sha256 (redeemScript))
И тогда scriptPubKey, что отправитель действительно использует это:
OP_HASH160 {redeemScript_hash} OP_EQUAL
Что только 23 байт в общей сложности. Хорошая вещь в том, что она обеспечивает уровень абстракции. Человеку, который посылает мне монету не нужно знать, как я держу мои монеты безопасности. Все они видят это хэш redeemScript, но они не знают, какие условия, которые redeemScript фактически ставит на дорожа монеты.
В принципе, сам по себе P2SH сути не является более безопасным, так как выкуп сценарий может быть что угодно. Но то, что она делает, это позволит монетным-приемникам легко общаться, как монета-отправители должны послать им монету, в то время позволяя монетные приемники диктовать условия, как / когда эти монеты могут быть потрачены.