Author

Topic: So what happens if I violate the block chain ? (Read 5009 times)

legendary
Activity: 1246
Merit: 1016
Strength in numbers
December 13, 2012, 05:11:20 PM
#23
Requirements would be:
1. someone to inject this data in to block chain
2. someone creating and distributing a program that can read this data as an image file
3. somone telling you where in the blockchain to find the offending data (a "link")
4. no one to take action to remove the data from the blockchain again

Now, since it's of no use/harm to have data that has the potential to be read by some program, if it never actually is read as such.

This means, that for this to be a real problem, you have to have someone publically sharing the "link" to this information. As long as you can cut the "link" sharing, then the offending data is not a problem on it's own.

A program can be made that will display bad pictures when fed this post as data.

You still need:
1. someone to inject this data in to block chain
2. someone creating and distributing a program that can read this data as an image file
3. somone telling you where in the blockchain to find the offending data (a "link")
4. no one to take action to remove the data from the blockchain again

You don't need to inject anything. You can write a program that when fed the genesis block it makes an illegal pattern of pixels come up on the screen. So only 2 and 3 need to happen.
legendary
Activity: 1372
Merit: 1008
1davout
Not to derail this thread, but I too would like an explanation as to how lightweight and pruned clients handle this. I'm guessing they rely on the fact that only the bitcoin network has enough power to produce new block hashes that match the target difficulty ?
Lightweight clients aren't zero-trust, pruned clients are. You should read the wiki.
newbie
Activity: 55
Merit: 0
I still don't get it... doesn't what you say contradict the bolded part above?

If everyone prunes a certain transaction (the content) from the block, the block is still valid and nothing has to be re-mined. However, checking validity of another transactios input that uses an output of the pruned transaction cannot be done any more?

Could someone please explain?

Sorry, I wasn't thinking about the double spending limitation. I meant that you can verify that a transaction belongs in a merkle tree and a merkle tree belongs to a block, but you still need to trust that another (full) node verified that that block doesn't spend any inputs that have already been spent.

Not to derail this thread, but I too would like an explanation as to how lightweight and pruned clients handle this. I'm guessing they rely on the fact that only the bitcoin network has enough power to produce new block hashes that match the target difficulty ?
donator
Activity: 2772
Merit: 1019
Just to make sure I understand correctly: The blockchain could still be verified in its entirety even if no node had a copy of the transaction (the pic completely pruned from all nodes blockchain copies)?

If this is correct, I see no problem here. The attack is futile.

Yes. It can even be verified without knowing any of the transactions any block contains using the block headers alone. only right now 90% of nodes are full nodes which record every transaction.

and unless you want to introduce "trust" into the protocol, every transaction needs to be publicly available, else transactions are open to double spending since you need to verify that every payment that is made to you doesn't use an input that was spent by another transaction.

So if you put kiddie-porn into your transaction and everyone gets rid of it you can spend the money again?

Yes, but only if everyone also deletes that block and all blocks following it and start mining again at that point. (thousands of transactions are reversed, including coinbase transactions).

I still don't get it... doesn't what you say contradict the bolded part above?

If everyone prunes a certain transaction (the content) from the block, the block is still valid and nothing has to be re-mined. However, checking validity of another transactios input that uses an output of the pruned transaction cannot be done any more?

Could someone please explain?
newbie
Activity: 55
Merit: 0
How about a miner putting child porn in coinbase?
How about it ? the same rules apply.


Just to make sure I understand correctly: The blockchain could still be verified in its entirety even if no node had a copy of the transaction (the pic completely pruned from all nodes blockchain copies)?

If this is correct, I see no problem here. The attack is futile.

Yes. It can even be verified without knowing any of the transactions any block contains using the block headers alone. only right now 90% of nodes are full nodes which record every transaction.

and unless you want to introduce "trust" into the protocol, every transaction needs to be publicly available, else transactions are open to double spending since you need to verify that every payment that is made to you doesn't use an input that was spent by another transaction.

So if you put kiddie-porn into your transaction and everyone gets rid of it you can spend the money again?

Yes, but only if everyone also deletes that block and all blocks following it and start mining again at that point. (thousands of transactions are reversed, including coinbase transactions).

Other than that, it would just break bitcoin if everyone deleted a transaction. The software (bitcoind) needs to verify that every new transaction in the block chain doesn't use an input that has already been spent, so it must have it on record. Or, in the general case, someone running a full node (who others *trust*) must verify that and therefore must have a complete record of past transactions.

So, in short, everyone who can verify for themselves that the money they're getting hasn't been spent before must have that transaction on record.
donator
Activity: 2772
Merit: 1019
Just to make sure I understand correctly: The blockchain could still be verified in its entirety even if no node had a copy of the transaction (the pic completely pruned from all nodes blockchain copies)?

If this is correct, I see no problem here. The attack is futile.

Yes. It can even be verified without knowing any of the transactions any block contains using the block headers alone. only right now 90% of nodes are full nodes which record every transaction.

and unless you want to introduce "trust" into the protocol, every transaction needs to be publicly available, else transactions are open to double spending since you need to verify that every payment that is made to you doesn't use an input that was spent by another transaction.

So if you put kiddie-porn into your transaction and everyone gets rid of it you can spend the money again?
legendary
Activity: 1792
Merit: 1111
Just to make sure I understand correctly: The blockchain could still be verified in its entirety even if no node had a copy of the transaction (the pic completely pruned from all nodes blockchain copies)?

If this is correct, I see no problem here. The attack is futile.

Yes. It can even be verified without knowing any of the transactions any block contains using the block headers alone. only right now 90% of nodes are full nodes which record every transaction.

and unless you want to introduce "trust" into the protocol, every transaction needs to be publicly available, else transactions are open to double spending since you need to verify that every payment that is made to you doesn't use an input that was spent by another transaction.

How about a miner putting child porn in coinbase?
newbie
Activity: 55
Merit: 0
Just to make sure I understand correctly: The blockchain could still be verified in its entirety even if no node had a copy of the transaction (the pic completely pruned from all nodes blockchain copies)?

If this is correct, I see no problem here. The attack is futile.

Yes. It can even be verified without knowing any of the transactions any block contains using the block headers alone. only right now 90% of nodes are full nodes which record every transaction.

and unless you want to introduce "trust" into the protocol, every transaction needs to be publicly available, else transactions are open to double spending since you need to verify that every payment that is made to you doesn't use an input that was spent by another transaction.
donator
Activity: 2772
Merit: 1019
Your incorrect about "can't".    The bitcoind can be modified to allow any tx to be pruned.   The merkle tree structure allows the rest of the block to remain.  A pruned block isn't "corrupt" the merkle tree root hash is still valid and all other tx in the block can be validated.

Just to make sure I understand correctly: The blockchain could still be verified in its entirety even if no node had a copy of the transaction (the pic completely pruned from all nodes blockchain copies)?

If this is correct, I see no problem here. The attack is futile.
legendary
Activity: 1862
Merit: 1011
Reverse engineer from time to time
Genius thread  Grin
newbie
Activity: 55
Merit: 0
I defy you to do it, Mr. JeromeS. It will be fun to watch from the sidelines. Just hope it's Eligius to mine that block: Porn alongside prayers Grin
Thank you. didn't know about that until now.

Also, found this:
Quote
That reminds me - one of the pool owners has been embedding religious messages in the blockchain recently (Catholic ones by the looks of it). Same guy that created Tonal Bitcoin.
[...]
where can i see these emedded prayers?
D0han: strings ~/.bitcoin/blk0001.dat -n20
-n21 omits some of the transaction spam
and just to further my point, there is an ascii art version of Paul Bernanke in the output with a joke about how the integrity of the block chain (and therefore Bitcoin) is now dependent on ASCII BERNANKE.

Dependency is the key word here, and that was my argument from the start, how bitcoin immediately becomes dependent on anything anyone decides to include in the block chain.


Requirements would be:
4. no one to take action to remove the data from the blockchain again
How would you do that ?


Transactions will not always be free.  Any time there are a lot of transactions being sent, free transactions get the lowest priority and might have to wait to make it into a block.  If blocks are often full, you will need to pay a transaction fee to get priority.
I meant free as in free speech that time. as in, as long as the software works like it does now (same limits on tx content) and there are some miners/mining pools willing to include the transaction in their block, it would be included sooner or later.
legendary
Activity: 1596
Merit: 1100
or to prevent transactions from being free, right ?

Transactions will not always be free.  Any time there are a lot of transactions being sent, free transactions get the lowest priority and might have to wait to make it into a block.  If blocks are often full, you will need to pay a transaction fee to get priority.

member
Activity: 73
Merit: 10
If it came out today that every blu-ray of the dark knight had a secret file of child pornography but that it could only be accessed with a special program would everyone who bought said blu-ray suddenly be open to arrest?
No... the real question is that if after you found out there was possible illegal material in the block chain you still continued to distribute it...
But if it's not readily apparent to the user that the block chain is indeed 'illegal' then it would be hard to prove that they did so willingly.
hero member
Activity: 740
Merit: 500
Hello world!
Requirements would be:
1. someone to inject this data in to block chain
2. someone creating and distributing a program that can read this data as an image file
3. somone telling you where in the blockchain to find the offending data (a "link")
4. no one to take action to remove the data from the blockchain again

Now, since it's of no use/harm to have data that has the potential to be read by some program, if it never actually is read as such.

This means, that for this to be a real problem, you have to have someone publically sharing the "link" to this information. As long as you can cut the "link" sharing, then the offending data is not a problem on it's own.

A program can be made that will display bad pictures when fed this post as data.

You still need:
1. someone to inject this data in to block chain
2. someone creating and distributing a program that can read this data as an image file
3. somone telling you where in the blockchain to find the offending data (a "link")
4. no one to take action to remove the data from the blockchain again
legendary
Activity: 1358
Merit: 1002
I defy you to do it, Mr. JeromeS. It will be fun to watch from the sidelines. Just hope it's Eligius to mine that block: Porn alongside prayers Grin
Now tell us: Where are you going to get that child porn you talk about? Are you going to store it on your own computer? Will you melt the hard drive after handling such pics?
After you do it, it can be safely said that you were the only person to knowingly handle those pictures and distribute them. Who's the criminal?

legendary
Activity: 1246
Merit: 1016
Strength in numbers
Requirements would be:
1. someone to inject this data in to block chain
2. someone creating and distributing a program that can read this data as an image file
3. somone telling you where in the blockchain to find the offending data (a "link")
4. no one to take action to remove the data from the blockchain again

Now, since it's of no use/harm to have data that has the potential to be read by some program, if it never actually is read as such.

This means, that for this to be a real problem, you have to have someone publically sharing the "link" to this information. As long as you can cut the "link" sharing, then the offending data is not a problem on it's own.

A program can be made that will display bad pictures when fed this post as data.
hero member
Activity: 740
Merit: 500
Hello world!
Requirements would be:
1. someone to inject this data in to block chain
2. someone creating and distributing a program that can read this data as an image file
3. somone telling you where in the blockchain to find the offending data (a "link")
4. no one to take action to remove the data from the blockchain again

Now, since it's of no use/harm to have data that has the potential to be read by some program, if it never actually is read as such.

This means, that for this to be a real problem, you have to have someone publically sharing the "link" to this information. As long as you can cut the "link" sharing, then the offending data is not a problem on it's own.
legendary
Activity: 1246
Merit: 1016
Strength in numbers
Imagine if you could email someone dirty pictures email would never have taken off.
newbie
Activity: 55
Merit: 0
Your incorrect about "can't".    The bitcoind can be modified to allow any tx to be pruned.   The merkle tree structure allows the rest of the block to remain.  A pruned block isn't "corrupt" the merkle tree root hash is still valid and all other tx in the block can be validated.   The purpose of this is to allow spent tx to be pruned from blocks (search for "ultraprune").  It could be used for other reasons.  A change in any one node won't disrupt the network.  If other nodes ask for that full block my node will indicate it doesn't have it.  If other nodes ask for that tx my node will indicate it doesn't have it.  The only issue is I wouldn't be able to validate tx using that "child porn" tx as an input.  Fine.  I won't be accepting those coins anyways. 
bitcoind not working wasn't my main argument. Just imagine what would happen if I started doing this starting with the next block instead of imagining solutions.

Most users use the default version of bitcoind (does it even support pruning ?), and don't have enough experience to manually remove that tx, and if there is a patch available it would mean nodes that didn't first download the tx and then remove it wouldn't be able to verify new transactions because they wouldn't be able to get the tx from anyone because noone would have it. I don't know much about block chain splits, but wouldn't that cause one ?
add to that that I can do this every day like I suggest below and it becomes a real problem.

even if there is a perfect solution that takes just one week to develop and implement, that week could be devastating if the information included in the transaction is bad enough.

Quote
Still I doubt it will be an issue.  Govt don't need excuses they just make them up.  I am sure someone in the world someone who has some connection to terrorism (or drugs cough cough) has used Bitcoin at least once.  That can be spun as "Bitcoin supports terrorism". 
It's one thing to say it can be used for this and another to say every bitcoiner has this illegal information on their computer. Still, I see your point. many people pirate stuff and they don't find the police knocking on their door.

Quote
There is no such thing as "plain format".  If you mean it will be an actual jpeg including all header information which can be extracted bit for bit from the .dat and opened in an application which can view jpeg without any modification well that is simply false.  There are constraints on tx format.
ok, I did some reading and it seems that you're right. Still, I can do some damage within those limits. I can make the block chain my personal blog where I publish serial numbers for various software every day with very little/no cost, and the fact that people will actually want to use that will make it more dangerous. and there are a bunch of other uses for this that I can think of.
donator
Activity: 1218
Merit: 1079
Gerald Davis
Your incorrect about "can't".    The bitcoind can be modified to allow any tx to be pruned.   The merkle tree structure allows the rest of the block to remain.  A pruned block isn't "corrupt" the merkle tree root hash is still valid and all other tx in the block can be validated.   The purpose of this is to allow spent tx to be pruned from blocks (search for "ultraprune").  It could be used for other reasons.  A change in any one node won't disrupt the network.  If other nodes ask for that full block my node will indicate it doesn't have it.  If other nodes ask for that tx my node will indicate it doesn't have it.  The only issue is I wouldn't be able to validate tx using that "child porn" tx as an input.  Fine.  I won't be accepting those coins anyways. 

Still I doubt it will be an issue.  Govt don't need excuses they just make them up.  I am sure someone in the world someone who has some connection to terrorism (or drugs cough cough) has used Bitcoin at least once.  That can be spun as "Bitcoin supports terrorism". 

Quote
The data would be written in blk00x.dat in plain format.

There is no such thing as "plain format".  If you mean it will be an actual jpeg including all header information which can be extracted bit for bit from the .dat and opened in an application which can view jpeg without any modification well that is simply false.  There are constraints on tx format.
newbie
Activity: 55
Merit: 0
Probably nothing.  If it became a problem someone would likely release a patch to the client or standalone utility which would prune the tx from a user's local copy of the blockchain.
Can't. your node has to keep a copy of the block to give to other nodes when they ask for it. every block past that point relies on that hash, and that hash relies on the merkle root, and that merkle root relies on the hash of the transaction data. And that's just the first thing I can think of. BitcoinQt/bitcoind probably can't run with a corrupt block and there could be other problems.
I don't know much about "light" clients, but there could still be ways to make those nodes download that transaction.

Quote
Of course I doubt it would even go that far.  Most child pornography laws specify what is considered an image.  A non-viewable binary representation of an image likely doesn't qualify. I mean if it did then one could for example write a piece of software which takes uses a ebook copy of the Bible (or insert random book here) as input and based on instructions in the software display an image depicting child abuse.   Would that make the Bible (or insert random book here) child pornography?
The data would be written in blk00x.dat in plain format. It would be like appending a jpeg to the end of a file and then writing some more stuff on top of that. very easy to extract.

apart from anything else, all they need is an excuse, and they would have it. and don't forget about the negative press that would make it easier.
donator
Activity: 1218
Merit: 1079
Gerald Davis
Probably nothing.  If it became a problem someone would likely release a patch to the client or standalone utility which would prune the tx from a user's local copy of the blockchain.  Of course I doubt it would even go that far.  Most child pornography laws specify what is considered an image.  A non-viewable binary representation of an image likely doesn't qualify.

I mean if it did then one could for example write a piece of software which takes uses a ebook copy of the Bible (or insert random book here) as input and based on instructions in the software display an image depicting child abuse.   Would that make the Bible (or insert random book here) child pornography?

newbie
Activity: 55
Merit: 0
Just a thought that went through my mind today. The bitcoin network is supposed to be decentralized, and specifically designed so that it would be impossible to "shut down" or to prevent transactions from being free, right ?

The bitcoin protocol also allows for arbitrary data to be inserted into both the "scriptSig" and "scriptPubKey" fields, as long as the fee is high enough and the size of the transaction doesn't exceed the maximum block size (10 MB).

So what if I'm a nice enough person to download a few child pornography pics or other illegal content and I include it into a transaction with a high enough fee ?

a lot of people get pissed off that a block is taking 10 times as long to download, then once the block is downloaded they forget about it. a number of blocks later someone who's watching for strange transactions figures out what happened and tells people. by that time the pics or whatever illegal information is embedded in the blockchain and exist on thousands of computers (only bitcoiners' computers, I might add, which will tie bitcoin to illegality in a very strong way for a good long while)

Now every bitcoiner's computer can be legally seized and there is legal mayhem for a while. People are afraid of being connected to bitcoin, and of receiving payments on a block chain that can be abandoned at some point in the future and have their transactions reversed.

Price tanks, I make a heap of money by going short beforehand.

This is by no means the end result of that scenario, just the part I can see. I don't even see a way to fix this problem without compromising the system in some way.

The most interesting part to me in all this is that we will actually discover how "decentralized" and "free" bitcoin is.


What do you all think ?

P.S. Happy halving day to you all ! (and you'd all better hope noone does this to the 210,000th block)
Jump to: