I know of four standard scripts. As Luca said, the source code for the reference client is the protocol definition, so you need to read the code to get the definitive answer. As Peter noted, a standard script is one that is relayed by the reference client. A non-standard script will not be rejected if it is in a block as long as it is a valid script.
The ones that I know are:
- Pay-to-PubKey-Hash: This is the standard payment to a bitcoin address. The address is in the output and the signature and pubkey are in the input.
- Pay-to-Pubkey: This is a payment to a pubkey. The pubkey is in the output and the signature is in the input.
- Pay-to-ScriptHash: This is being used for some of the fancier payment transactions. A script hash is in the output and the signature and a serialized script are in the input. On the first pass, the script hash is verified against the serialized script. If it checks, then the serialized script is expanded and a second pass is done using that script.
- Pay-to-MultiSig: Multiple signatures are required to sign the script. The output contains the pubkeys and the input contains the signatures. All signatures must be verified by one of the pubkeys but there can be more pubkeys than signatures. The current limit for M of N scripts is N=3.
Quite the opposite: Is there a listing of strange or unusual scripts found in transactions?
– Tobias Kienzler – 2014-01-25T11:08:03.827