Hacker News new | ask | show | jobs
by AnthonyMouse 4790 days ago
The flaw in all of this is that you're embedding 20 bytes in the blockchain. In order to do that, you have to choose an encoding method. In order to get the embedded data back out, you have to convey the encoding method and which block is encoded with it to the recipient. Which is totally pointless because if you can convey that to the recipient then you might as well just use the same communications method to convey the original message. The only plausible reason not to would be if the law prohibits the message but not the information about how to construct the message from the blockchain (and even that is not guaranteed). Even then all you would accomplish is to cause the government to pass a new law that prohibits you from telling anyone that a prohibited link is encoded in the block in the same way that you're currently prohibited from telling anyone the link itself.

The real problem here is not that child pornographers would actually use bitcoin to distribute links, it's that assholes who want to damage bitcoin would put contraband in the blockchain in order to cause legal trouble for innocent users.

But I think that's a broader problem than just bitcoin. You can encode anything into anything. Take anything anyone else has posted and xor it with something you want to encode. The output will resemble garbage rather than either input. But now you can post the "garbage" and instructions on what to xor it with to allow anyone to recover your encoded message, and the poster of the other message becomes an unwilling participant in your encoding scheme. It clearly makes no sense to punish distributors of the original message just because the encoded message is contraband. Which doesn't mean there won't be laws that will punish it anyway, but that is the fight that needs to be won -- to not allow stupid laws that would punish innocent people.

2 comments

The "encoding method" is ASCII text. The data can be extracted by running "strings *.dat" on the block chain on any UNIX system. After that you can grep through the output.

This is not like XORing data, or as some people have said "everything occurs somewhere in the digits of pi". The blockchain in no sense encodes all possible values, or a fraction thereof, the data is trivial to extract.

This is much more like, it's sitting on the webserver, but not indexed by google. It's actually even worse than that because you can still just grep through the blockchain and find what your interested in.

This may or may not be a problem for bitcoin, but I think it is legally problematic at the moment. This may move us toward a world where it's not illegal to store any particular data or even distribute it. The illegal act might be the viewing or "distribution with intent" or the data. I think that would be an interesting development.

Personally as a user of Bitcoin I've deleted the standard qt client, I personally don't want that data on my computer. I now use a blockchainless client (Electrum).

>The "encoding method" is ASCII text.

An encoding method is ASCII text. You could use ASCII compressed with gzip, or bzip2, or lzma. You could use Unicode. You could use a previous block as the key and encrypt with AES, or Blowfish, or 3DES. You could store an IP address and port rather than a URL as the first six binary octets. Or encode the IP using base64, or hex.

No matter what you use, you have to convey that to the party you're trying to communicate the information with -- you at least have to convey the fact that you've encoded something in the blockchain so that the receiver knows to look for it there. How is it easier to convey "you should download the bitcoin blockchain and run strings against it and the URL is the 352nd one you find [out of the six thousand URLs various unrelated people will have encoded]" than to just send the damn URL directly to the person you're telling where to look for it?

>This may or may not be a problem for bitcoin, but I think it is legally problematic at the moment. This may move us toward a world where it's not illegal to store any particular data or even distribute it. The illegal act might be the viewing or "distribution with intent" or the data. I think that would be an interesting development.

I think it would be a welcome development. Right now people are too afraid to be distributors, which makes things difficult for whistle blowers and democracy advocates in oppressive regimes and others who have legitimate reasons to want anonymous censorship-resistant publication methods.

"you at least have to convey the fact that you've encoded something in the blockchain so that the receiver knows to look for it there. How is it easier to convey "you should download the bitcoin blockchain and run strings against it and the URL is the 352nd one you find [out of the six thousand URLs various unrelated people will have encoded]" than to just send the damn URL directly to the person you're telling where to look for it?"

So to my mind it's not that different than a search engine. The blockchain doesn't just contain URLs it contains "meta data" as well. Right now, if you want to find links related to err, certain kinds of illegal photography you just have to search for the relevant keywords in the blockchain and you'll find it and the URLs.

"I think it would be a welcome development. Right now people are too afraid to be distributors, which makes things difficult for whistle blowers and democracy advocates in oppressive regimes and others who have legitimate reasons to want anonymous censorship-resistant publication methods."

Yes, I absolutely agree with you, we live in interesting times.

No, it's not just ASCII text. Only miners (like Satoshi's headline in the genesis block and Kaminsky's ASCII Bernake) are able to include ASCII data in blocks, everyone else needs to somehow encode it in transaction data.
err, yes it is just ASCII text. I suggest you run "strings" over the blockchain yourself, which I have done. If it wasn't I doubt anyone would find it.

I don't know if they used Kaminsky's technique or something else but it is plain text.

one can also write/print information on currency bills and no one questioned bills.
Seriously? This is analogous to writing information of the plates used to print currency/every bill in the country, not scribbling a note onto a twenty. You're either a troll or you haven't read the post.
please tone it down.

if it would be etched on forementioned plates, it would be perceivable for every bitcoin user in every transaction.