My understanding of `IsStandard` is that non standard transactions:
* are considered valid when they're part of the block-chain.
* don't get relayed, and many miners won't mine them.
See
https://en.bitcoin.it/wiki/Nonstandard_blockThis means that clients must be able to handle non standard blocks correctly, and bugs in the handling of non standard transactions are still problematic. So see no security gain, and it doesn't simplify clients either.
You're right, I think even without blockexplorer Satoshi would've added the IsStandard() check. There were a series of "oops, didn't think of that" moments that pushed him to disable a bunch, tighten up some requirements on existing opcodes, and add IsStandard().
In general, I believe in "whitelisting" instead of "blacklisting" to try to prevent harm. Enable functionality that you can prove (or convince yourself beyond a reasonable doubt) will not cause problems. I'm strongly influenced from watching web content systems that fail repeatedly trying to detect malicious HTML or CSS.
https://bitcointalk.org/index.php?topic=38932.msg476436#msg476436I don't understand this quote. Since those block can and do occasionally occur in the blockchain, what is the security gain he's talking about?
So what's the purpose of `IsStandard`? It hinders innovation at no gain I can see.