* probably never, but worth mentioning
The instructions BOOLAND and BOOLOR don't interpret the stack values the same way IF, VERIFY etc do. They decode the top stack values as integers and compare against zero, thus they have to fail when the top stack item size is greater than 4 bytes.
Edit: littleEndian.decode also doesn't seem to respect the size limits
Edit2: .. or signed integers for that matter. So while this is a very cool basic concept, it's not a complete implementation.
The reference client provides test suites
https://github.com/bitcoin/bitcoin/blob/master/src/test/data...
https://github.com/bitcoin/bitcoin/blob/master/src/test/data...
But it was not clear from this text whether it's a complete implementation or not so it looks like a bug. I've added the annotation [1] and will update the interpreter in the future.
Of course if one wanted to use Bitcoin in real projects I'd rather recommend Bitcoin.js [2] but that's another topic.
Thanks for comment!
[0]: https://curiosity-driven.org/bitcoin-contracts
[1]: https://curiosity-driven.org/low-level-bitcoin#operators
Also related: http://en.wikipedia.org/wiki/Illegal_number