9

Let's say that I want to kill Bitcoin by means of a transaction attack. What in the bitcoin system prevents the following approach:

  1. I buy a limited number of bitcoin in the market.

  2. Using a small number (say 50) physical computers all running bitcoin clients and accessing the net through proxies, I generate, say, 100.000 wallets - each with their own bitcoin addresses.

  3. (Running a script on the computers) I start sending random amounts (mili-to nanobitcoin range) of bitcoin back and forth between all my 100.000 (or more) wallets - each at a very high frequency. Average flow of bitcoin between wallets average to zero.

This causes an explosion in the number of daily transactions (currently in 1,000-10,000/day) range to millions or billions of transactions.

This makes every block gigantic in size causing an explosion in the blockchain and causing widespread problems with blockchain verification, storage and (worse) synchronization => the network dies.


Can someone explain why bitcoin is immune to this kind of "transfer attack"?

  • 1
    @D.H. it is similar, but the answer to the other question doesn't address the issues with managing a huge blockchain after the flood. – nmat Sep 9 '11 at 6:15
  • 1
    Wouldn't all these transaction have such a low priority that they would not make it into the block chain? I think that was the point of requiring transaction fees for "smallish" transactions. – Thilo Sep 9 '11 at 7:01
  • @nmat, the case of "transaction flooding" is covered in the other question and the way I read it the answer concludes that it would not be possible, hence no huge blockchain. – D.H. - bitcoin.se Sep 9 '11 at 17:10
11

There are rules which make such kind of attack very costly to the attacker. Below are relevant rules from wiki, with updated transaction fee:

0.0005 BTC fee per kilobyte of transaction, but:

  • If the blocksize (size of all transactions currently waiting to be included in a block) is less than 27 kB, transactions are free.
  • If the blocksize is more than 250 kB, transactions get increasingly more expensive as the blocksize approaches the limit of 500 kB. Sending a transaction when the blocksize is 400 kB will cost 5 times the normal amount; sending when it's 499 kB will cost 500x, etc.

Let's say attacker publishes 499kB worth of transactions every block, this would be about 1000 transactions per block, 144000 per day. This is nowhere close to millions or billions, and besides it would cost him about 18000 BTC per day.

Source: Transaction fees

4

Your transactions will simply be ignored. They won't even be relayed across the network.

In order to fuel such an attack, you need old transaction outputs or you need to pay transaction fees. You can use each old transaction output at least once.

With small numbers of coins and no old coins in them, your transactions will be totally ignored unless you pay transaction fees.

It would take only a few hours before all major mining pools switched over to ignoring all transactions with no fees that didn't use coins at least a day old.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.