BIP16 gives the following example to explain "Pay to Script Hash":
scriptSig: [signature] {[pubkey] OP_CHECKSIG}
scriptPubKey: OP_HASH160 [20-byte-hash of {[pubkey] OP_CHECKSIG} ] OP_EQUAL
But I don't get what's happening here. I've tried executing the script on paper (and assumed the parts in squared/curly brackets are treated as constants):
[signature]
and{[pubkey] OP_CHECKSIG}
are pushed onto the stackOP_HASH160
hashes{[pubkey] OP_CHECKSIG}
- The same hash comes from the
scriptPubKey
onto the stack - Consequently
OP_EQUAL
givesTrue
- The
[signature]
is not checked at all!
If the {[pubkey] OP_CHECKSIG}
is executed, the scriptSig would only give True
, which makes even less sense.
To frame a clear question: How do "Pay to Script Hash" scripts work, especially this example case?