BIP 16 explicitly states:
"Validation fails if there are any operations other than "push data" operations in the scriptSig."
Let me try again for why I think it is a bad idea to put anything besides "push data" in the scriptSig:
Bitcoin version 0.1 evaluated transactions by doing this:
Code:
Evaluate(scriptSig + OP_CODESEPARATOR + scriptPubKey)
That turned out to be a bad idea, because one person controls what is in the scriptPubKey and another the scriptSig.
Part of the fix was to change evaluation to:
Code:
stack = Evaluate(scriptSig)
Evaluate(scriptPubKey, stack)
Evaluate(scriptPubKey, stack)
That gives a potential attacker much less ability to leverage some bug or flaw in the scripting system.
Little known fact of bitcoin as it exists right now: you can insert extra "push data" opcodes at the beginning of the scriptsigs of transactions that don't belong to you, relay them, and the modified transaction (with a different transaction id!) may be mined.
@s{quotedtext} @s{quotedtext}
Are you volunteering to make that happen? After working really hard for over four months now to get a backwards-compatible change done I'm not about to suggest an "entire network must upgrade" change...