Low-level Bitcoin
curiosity-driven.org
curiosity-driven.org
* 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
The article is just a demonstration but it won't hurt if it was as accurate as possible (while still being readable) :)
[0] https://en.bitcoin.it/wiki/OP_CHECKSIG#Procedure_for_Hashtyp...
[1] http://bitcoinmagazine.com/3668/bitcoin-network-shaken-by-bl...
Also related: http://en.wikipedia.org/wiki/Illegal_number
[0]: https://code.google.com/p/bitcoinj/wiki/FullVerification
I'm not a lawyer but from a technical point of view it's almost impossible to remove any kind of data from a truly distributed network. Be it Bitcoin's Blockchain, BitTorrent or the internet itself. That's just a fact, no judge order will change it, sorry.
And as M4v3R said it'd be very expensive to add a big file like a picture to Blockchain anyway.
For example, you could use a similar method to "store" data using Paypal: use the amount of cents in each transaction to encode a byte of data (e.g. $1.17 means 0x75 etc.) and make transfers to random people until enough bytes have been transferred. That's it, your copyrighted data or CP is now forever "stored" on Paypal servers.
I don't think this accusation will hold up in any reasonable court. Taking into account the cost of storing data (20 bytes in a single output of minimum 5400 satoshi + fees) your hypothetical instructions and code to retrieve the images would be of comparable size to any images you can reasonably store.
You are correct that the protocol itself doesn't have a minimum output size, so if you mine a block yourself you can include dust reliably.