Bitcoin Forum
November 05, 2024, 10:11:50 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 »  All
  Print  
Author Topic: DoS attack against the entire Bitcoin network ?  (Read 2168 times)
Meizirkki (OP)
Hero Member
*****
Offline Offline

Activity: 616
Merit: 500



View Profile
December 23, 2012, 07:10:44 PM
 #1

Sorry if this is duplicate thread, I searched first but couldn't find it.

Is it possible for an attacker to crash the entire Bitcoin network by flooding transactions? Like, infect thousands of computers with a software sending coins around between few wallets?
hamdi
Hero Member
*****
Offline Offline

Activity: 826
Merit: 500



View Profile
December 23, 2012, 07:13:42 PM
 #2

nodes will drop excessive tx.
Revalin
Hero Member
*****
Offline Offline

Activity: 728
Merit: 500


165YUuQUWhBz3d27iXKxRiazQnjEtJNG9g


View Profile
December 23, 2012, 07:14:26 PM
 #3

No.  That's why there are mandatory fees.

      War is God's way of teaching Americans geography.  --Ambrose Bierce
Bitcoin is the Devil's way of teaching geeks economics.  --Revalin 165YUuQUWhBz3d27iXKxRiazQnjEtJNG9g
Akka
Legendary
*
Offline Offline

Activity: 1232
Merit: 1001



View Profile
December 23, 2012, 07:16:01 PM
 #4

There was a Vulnerability until Version 0.6.2 where it has been fixed.

http://bitcoin.org/dos

All previous versions of currency will no longer be supported as of this update
Meizirkki (OP)
Hero Member
*****
Offline Offline

Activity: 616
Merit: 500



View Profile
December 23, 2012, 07:40:10 PM
 #5

There was a Vulnerability until Version 0.6.2 where it has been fixed.

http://bitcoin.org/dos

I found this yea. But isn't it about isolating a single client from the network? Not about trying to flood the blockchain.
Akka
Legendary
*
Offline Offline

Activity: 1232
Merit: 1001



View Profile
December 23, 2012, 07:51:49 PM
 #6

There was a Vulnerability until Version 0.6.2 where it has been fixed.

http://bitcoin.org/dos

I found this yea. But isn't it about isolating a single client from the network? Not about trying to flood the blockchain.

Year, right. Missed that. So forget my post.

Found nothing about your issue.

All previous versions of currency will no longer be supported as of this update
notme
Legendary
*
Offline Offline

Activity: 1904
Merit: 1002


View Profile
December 23, 2012, 08:08:07 PM
 #7

This was possible but now many miners require fees for transactions whose inputs are the output of another recent transaction.  Essentially, if you don't let your coins sit for a day or two you will have to pay a fee.  If you have to pay a fee, you can only "attack" for so long because every transaction costs you a penny or so.   Additionally, the larger the transaction (in KB) the higher the fee that will be required.

https://www.bitcoin.org/bitcoin.pdf
While no idea is perfect, some ideas are useful.
Stephen Gornick
Legendary
*
Offline Offline

Activity: 2506
Merit: 1010


View Profile
December 23, 2012, 08:11:52 PM
 #8

Is it possible for an attacker to crash the entire Bitcoin network by flooding transactions? Like, infect thousands of computers with a software sending coins around between few wallets?

Here are the types of denial-of-service attacks the bitcoin.org client and others that behave similarly will protect against:
 - http://en.bitcoin.it/wiki/Weaknesses#Denial_of_Service_.28DoS.29_attacks

Quote
Spamming transactions

It is easy to send transactions to yourself repeatedly. If these transactions fill blocks to the maximum size (1MB [Edit: 0.5 MB if I remember correctly]), other transactions would be delayed until the next block.

This is made expensive by the fees that would be required after the 50KB of free transactions per block are exhausted. An attacker will eventually eliminate free transactions, but Bitcoin fees will always be low because raising fees above 0.01 BTC per KB would require spending transaction fees. An attacker will eventually run out of money. Even if an attacker wants to waste money, transactions are further prioritized by the time since the coins were last spent, so attacks spending the same coins repeatedly are less effective.

 - http://en.bitcoin.it/wiki/Weaknesses#Spamming_transactions

So the network doesn't know the difference between your flooded transaction sent from older coins in your wallet and my transaction sent from older coins in my wallet where both of us are paying the same fees and sending at the same time.     But after you've spend that transaction, your change that you've received  is now a newer coin.  And if you try to spend the change, your transaction does not look like mine and if a miner has to start choosing which transactions to include in a block, your spam-like transaction doesn't get chosen.  

The bitcoin network is handling 50K transactions per day easily now.  So to properly prepare for this attack you might want to have a wallet with a couple hundred thousand addresses (or more) each with a bitcoin or so of funds for each address.

So harassing bitcoin as it exists today is certainly possible, it is just requires resources normally outside the range of someone curious if it could be done.  Additionally, if there is a pattern seen as being disruptive, there are changes to the client that the miners can perform to give preference to transactions that don't look like yours -- though you too might be able to adjust in response.  And an arms-race proceeds.  You would need to be determined to have a lasting impact.

Unichange.me

            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █


Remember remember the 5th of November
Legendary
*
Offline Offline

Activity: 1862
Merit: 1011

Reverse engineer from time to time


View Profile
December 23, 2012, 08:22:43 PM
 #9

This was possible but now many miners require fees for transactions whose inputs are the output of another recent transaction.  Essentially, if you don't let your coins sit for a day or two you will have to pay a fee.  If you have to pay a fee, you can only "attack" for so long because every transaction costs you a penny or so.   Additionally, the larger the transaction (in KB) the higher the fee that will be required.
Paying a fee is hard coded no matter if you have the oldest coins.

BTC:1AiCRMxgf1ptVQwx6hDuKMu4f7F27QmJC2
notme
Legendary
*
Offline Offline

Activity: 1904
Merit: 1002


View Profile
December 23, 2012, 08:30:18 PM
 #10

This was possible but now many miners require fees for transactions whose inputs are the output of another recent transaction.  Essentially, if you don't let your coins sit for a day or two you will have to pay a fee.  If you have to pay a fee, you can only "attack" for so long because every transaction costs you a penny or so.   Additionally, the larger the transaction (in KB) the higher the fee that will be required.
Paying a fee is hard coded no matter if you have the oldest coins.

Not true.  Many transactions will accepted by nearly all miners without a fee if they are small and the inputs are old enough.

https://www.bitcoin.org/bitcoin.pdf
While no idea is perfect, some ideas are useful.
DannyHamilton
Legendary
*
Offline Offline

Activity: 3472
Merit: 4801



View Profile
December 24, 2012, 02:49:54 AM
 #11

. . . if a miner has to start choosing which transactions to include in a block, your spam-like transaction doesn't get chosen . . .
Correct me if I'm wrong, but it is my understanding that it isn't just miners that might ignore a fee-free transaction with recent (young) coins or large number of inputs.

Don't many of the clients also refuse to relay these transactions?  Meaning that most of the network won't even see (and have to deal with) the transactions, preventing them from flooding the network.
Stephen Gornick
Legendary
*
Offline Offline

Activity: 2506
Merit: 1010


View Profile
December 24, 2012, 03:20:53 AM
 #12

. . . if a miner has to start choosing which transactions to include in a block, your spam-like transaction doesn't get chosen . . .
Correct me if I'm wrong, but it is my understanding that it isn't just miners that might ignore a fee-free transaction with recent (young) coins or large number of inputs.

Don't many of the clients also refuse to relay these transactions?  Meaning that most of the network won't even see (and have to deal with) the transactions, preventing them from flooding the network.

Miners can do whatever they want, including "ignoring" transactions.  

I'm not sure the exact behavior of the Bitcoin.org client.

Using the description from the Wiki (posted above), the
 
If a fee of 0.0001 BTC is paid, the client will relay it.   If that fee is not paid, the client will still relay it even if no fee is paid as long as all outputs are 0.01 BTC or larger and the total size is less than 10KB.  It does not appear that the age of a coin has any affect on whether or not the node will relay the transaction.

Now just because a node will relay the transaction doesn't mean the fee is sufficient to get it included in a block in a timely manner.

Unichange.me

            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █


gmaxwell
Moderator
Legendary
*
expert
Offline Offline

Activity: 4270
Merit: 8805



View Profile WWW
December 26, 2012, 08:22:53 AM
Last edit: December 26, 2012, 08:55:44 AM by gmaxwell
 #13

If a fee of 0.0001 BTC is paid, the client will relay it.   If that fee is not paid, the client will still relay it even if no fee is paid as long as all outputs are 0.01 BTC or larger and the total size is less than 10KB.  It does not appear that the age of a coin has any affect on whether or not the node will relay the transaction.
It does— the transaction will not be relayed if it doesn't pass all the free criteria: no dust outputs, small size, and priority greater than 57600000 (COIN * 144 / 250).  Priority is the sum(value*confirms)/data_size. (Otherwise someone could flood out the whole network easily)
grau
Hero Member
*****
Offline Offline

Activity: 836
Merit: 1030


bits of proof


View Profile WWW
December 26, 2012, 09:28:42 AM
 #14

I wonder if zero fee transactions should be relayed at all, since the minimum fee is so low (0.0001 BTC) it should not prohibit any legit use.
grau
Hero Member
*****
Offline Offline

Activity: 836
Merit: 1030


bits of proof


View Profile WWW
December 26, 2012, 09:32:54 AM
 #15

the transaction will not be relayed if it doesn't pass all the free criteria: no dust outputs, small size, and priority greater than 57600000 (COIN * 144 / 250).  Priority is the sum(value*confirms)/data_size. (Otherwise someone could flood out the whole network easily)

I think this applies to inclusion into blocks not relaying.
farlack
Legendary
*
Offline Offline

Activity: 1310
Merit: 1000



View Profile
December 26, 2012, 09:43:07 AM
 #16

What if you have a botnet of.. 25,000 computers?
I feel like even if they did pay the fee, the fact they could mine that fee back pretty fast with the botnet anyway it would not matter.


All I'm seeing posted (What I think?) is if I have 3 computers, and I'm repeatedly sending coins back and forth between all 3 the servers will block it, but if you're switching coins between 25,000 whats stopping it then?
grau
Hero Member
*****
Offline Offline

Activity: 836
Merit: 1030


bits of proof


View Profile WWW
December 26, 2012, 09:49:35 AM
 #17

You only need one computer to create any number of payments.

In case you pay fees they will be guaranteed relayed. The fees you pay go to the miner not your other computer.

You might get tired of subsidizing them.
kjj
Legendary
*
Offline Offline

Activity: 1302
Merit: 1026



View Profile
December 26, 2012, 02:19:24 PM
 #18

the transaction will not be relayed if it doesn't pass all the free criteria: no dust outputs, small size, and priority greater than 57600000 (COIN * 144 / 250).  Priority is the sum(value*confirms)/data_size. (Otherwise someone could flood out the whole network easily)

I think this applies to inclusion into blocks not relaying.

There are no "requirements" for getting into a block, beyond having valid signatures and not-yet-spent inputs.*

But, if you aren't mining yourself, or don't have sufficient hashing power to get somewhat frequent blocks, then the rules for transaction relaying are effectively the rules for getting other people to put your transactions into their blocks.

* I suspect that we long ago passed the point where the majority of blocks are generated by software other than the reference client.  I could very easily be wrong about that, but I think that most pools are running custom software to generate blocks according to their own local rules.

17Np17BSrpnHCZ2pgtiMNnhjnsWJ2TMqq8
I routinely ignore posters with paid advertising in their sigs.  You should too.
grau
Hero Member
*****
Offline Offline

Activity: 836
Merit: 1030


bits of proof


View Profile WWW
December 26, 2012, 03:00:31 PM
 #19

the transaction will not be relayed if it doesn't pass all the free criteria: no dust outputs, small size, and priority greater than 57600000 (COIN * 144 / 250).  Priority is the sum(value*confirms)/data_size. (Otherwise someone could flood out the whole network easily)

I think this applies to inclusion into blocks not relaying.

There are no "requirements" for getting into a block, beyond having valid signatures and not-yet-spent inputs.*

The rules gmaxwell cited are in the Satoshi code where compiling new blocks. I do not know if miner use this.
They are not used for relaying, and that was my point.
gmaxwell
Moderator
Legendary
*
expert
Offline Offline

Activity: 4270
Merit: 8805



View Profile WWW
December 26, 2012, 04:38:44 PM
 #20

* I suspect that we long ago passed the point where the majority of blocks are generated by software other than the reference client.  I could very easily be wrong about that, but I think that most pools are running custom software to generate blocks according to their own local rules.
I'm certain that you're wrong there. The attempts that I'm aware of that have gone even somewhat close to this have resulted in invalid blocks, so if it was widely being done the invalid blocks would probably be noticeable.
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!