According to the bitcoin wiki, the most common form of transaction (pay-to-pubkey-hash) looks like this:
scriptPubKey: OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
scriptSig: <sig> <pubKey>
I am curious why OP_CHECKSIG
comes at the end. Couldn't we check the signature even before doing the hash?
More precisely, couldn't it instead do:
scriptPubKey: OP_CHECKSIGVERIFY OP_DUP OP_HASH160 <pubKeyHash> OP_EQUAL
scriptSig: <pubKey> <sig>
This way you don't have to go through all the hashing if the pubkey and sig don't match to begin with.
I'm sure there's a good reason for this or i'm completely misunderstanding something, please enlighten me. Thank you!