Bitcoin Forum
November 10, 2024, 08:25:02 PM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 »  All
  Print  
Author Topic: So what happens if I violate the block chain ?  (Read 5009 times)
JeromeS (OP)
Newbie
*
Offline Offline

Activity: 55
Merit: 0


View Profile
November 28, 2012, 01:23:07 PM
 #1

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)
DeathAndTaxes
Donator
Legendary
*
Offline Offline

Activity: 1218
Merit: 1079


Gerald Davis


View Profile
November 28, 2012, 01:30:59 PM
 #2

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?

JeromeS (OP)
Newbie
*
Offline Offline

Activity: 55
Merit: 0


View Profile
November 28, 2012, 01:57:56 PM
 #3

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.
DeathAndTaxes
Donator
Legendary
*
Offline Offline

Activity: 1218
Merit: 1079


Gerald Davis


View Profile
November 28, 2012, 02:12:54 PM
 #4

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.
JeromeS (OP)
Newbie
*
Offline Offline

Activity: 55
Merit: 0


View Profile
November 28, 2012, 03:16:52 PM
 #5

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.
FreeMoney
Legendary
*
Offline Offline

Activity: 1246
Merit: 1016


Strength in numbers


View Profile WWW
November 28, 2012, 04:06:43 PM
 #6

Imagine if you could email someone dirty pictures email would never have taken off.

Play Bitcoin Poker at sealswithclubs.eu. We're active and open to everyone.
Dansker
Hero Member
*****
Offline Offline

Activity: 740
Merit: 500


Hello world!


View Profile
November 28, 2012, 07:33:32 PM
 #7

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.

FreeMoney
Legendary
*
Offline Offline

Activity: 1246
Merit: 1016


Strength in numbers


View Profile WWW
November 28, 2012, 07:36:37 PM
 #8

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.

Play Bitcoin Poker at sealswithclubs.eu. We're active and open to everyone.
Raoul Duke
aka psy
Legendary
*
Offline Offline

Activity: 1358
Merit: 1002



View Profile
November 28, 2012, 07:41:30 PM
 #9

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?

Dansker
Hero Member
*****
Offline Offline

Activity: 740
Merit: 500


Hello world!


View Profile
December 01, 2012, 03:40:47 AM
 #10

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

reyals
Member
**
Offline Offline

Activity: 73
Merit: 10


View Profile
December 01, 2012, 08:25:28 AM
 #11

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.
jgarzik
Legendary
*
Offline Offline

Activity: 1596
Merit: 1100


View Profile
December 01, 2012, 08:29:40 AM
 #12

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.


Jeff Garzik, Bloq CEO, former bitcoin core dev team; opinions are my own.
Visit bloq.com / metronome.io
Donations / tip jar: 1BrufViLKnSWtuWGkryPsKsxonV2NQ7Tcj
JeromeS (OP)
Newbie
*
Offline Offline

Activity: 55
Merit: 0


View Profile
December 02, 2012, 01:12:27 PM
 #13

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
<upb> 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.
[...]
<D0han> where can i see these emedded prayers?
<luke-jr> D0han: strings ~/.bitcoin/blk0001.dat -n20
<luke-jr> -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.


Quote
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?
Yeah, until it becomes public knowledge that you can find whatever information is included this or that way, then everyone is "knowingly" handling and distributing that information.

Just to be clear, I'm not advocating for controls on bitcoin, quite the opposite.
I would even say this would better happen sooner rather than later since it would place bitcoin firmly on the "free" side of things and anyone working on the software in the future would have no motivation to prevent that kind of transaction from being included since it would be like closing the stable door after the horse has bolted. (well, not entirely, but it would still be useful, because...)
On the other hand, if there is already a way to make that kind of restriction/alteration, I'd rather know about it now so I can cash out.


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.
Remember remember the 5th of November
Legendary
*
Offline Offline

Activity: 1862
Merit: 1011

Reverse engineer from time to time


View Profile
December 02, 2012, 01:15:56 PM
 #14

Genius thread  Grin

BTC:1AiCRMxgf1ptVQwx6hDuKMu4f7F27QmJC2
molecular
Donator
Legendary
*
Offline Offline

Activity: 2772
Merit: 1019



View Profile
December 02, 2012, 01:31:23 PM
 #15

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.

PGP key molecular F9B70769 fingerprint 9CDD C0D3 20F8 279F 6BE0  3F39 FC49 2362 F9B7 0769
JeromeS (OP)
Newbie
*
Offline Offline

Activity: 55
Merit: 0


View Profile
December 02, 2012, 03:01:21 PM
 #16

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.
jl2012
Legendary
*
Offline Offline

Activity: 1792
Merit: 1111


View Profile
December 02, 2012, 03:28:03 PM
 #17

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?

Donation address: 374iXxS4BuqFHsEwwxUuH3nvJ69Y7Hqur3 (Bitcoin ONLY)
LRDGENPLYrcTRssGoZrsCT1hngaH3BVkM4 (LTC)
PGP: D3CC 1772 8600 5BB8 FF67 3294 C524 2A1A B393 6517
molecular
Donator
Legendary
*
Offline Offline

Activity: 2772
Merit: 1019



View Profile
December 02, 2012, 04:59:37 PM
 #18

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?

PGP key molecular F9B70769 fingerprint 9CDD C0D3 20F8 279F 6BE0  3F39 FC49 2362 F9B7 0769
JeromeS (OP)
Newbie
*
Offline Offline

Activity: 55
Merit: 0


View Profile
December 02, 2012, 05:48:47 PM
 #19

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.
molecular
Donator
Legendary
*
Offline Offline

Activity: 2772
Merit: 1019



View Profile
December 02, 2012, 06:13:23 PM
 #20

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?

PGP key molecular F9B70769 fingerprint 9CDD C0D3 20F8 279F 6BE0  3F39 FC49 2362 F9B7 0769
Pages: [1] 2 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!