A technical question: Why does a coinbase transaction put the public key itself in the scriptPubKey, while a regular transaction puts the public key hash (address) in the scriptPubKey? (And as a consequence, the scriptSig to redeem a coinbase transaction doesn't include the public key, unlike the scriptSig to redeem a regular transaction.)
Is there a motivation behind this, or is it an arbitrary implementation detail?
Reference:
https://en.bitcoin.it/wiki/Script#Standard_Generation_Transaction_.28pay-to-pubkey.29A standard transaction spends a previous output, that output was associated with a public key. In order to be "spendable" the system needs to verify that the person holds the private key corresponding to the public key, so a signature is created to prove that whoever is trying to use that output as an input (spend it) owns the private key needed to do so. Thus two parts, signature and public key hash.
Coinbase has no previous input, so the only required information is the public key with which is to be associated, and this doesn't need to be a public key anybody has a private key for, it could just be an arbitrary number.
Put another way, coinbase transactions have no input(s) to verify/spend.. general transactions always have input(s) that need verified with a signature.