Bitcoin Forum
May 08, 2024, 11:30:54 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Is it possible to detect double spending in the > 50% network takeover scenario?  (Read 3236 times)
ShadowOfHarbringer (OP)
Legendary
*
Offline Offline

Activity: 1470
Merit: 1005


Bringing Legendary Har® to you since 1952


View Profile
October 16, 2010, 06:09:59 PM
 #1

Hello,

I was wondering if it would be possible to detect double spent bitcoins in the attack scenario where attacker has more than 50% of whole bitcoin network processing power ?

By "detection" i also mean situations when we know which nodes of the network spent the same coins twice without knowing which one is "cheater" and which one "honest".


1715167854
Hero Member
*
Offline Offline

Posts: 1715167854

View Profile Personal Message (Offline)

Ignore
1715167854
Reply with quote  #2

1715167854
Report to moderator
Every time a block is mined, a certain amount of BTC (called the subsidy) is created out of thin air and given to the miner. The subsidy halves every four years and will reach 0 in about 130 years.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
theymos
Administrator
Legendary
*
Offline Offline

Activity: 5194
Merit: 12976


View Profile
October 16, 2010, 06:41:35 PM
 #2

You could probably distinguish original transactions from double-spent ones if the attacker is rewriting blocks that are more than one block deep. You can't be sure for transactions with only 0 or 1 confirmations, since this kind of "split opinion" could occur naturally.

If the legitimate network regains control and it's clear that the main block chain is full of double-spends, the network could start building on some shorter chain before the event to reverse the double-spends. This would probably also reverse some legitimate transactions, though.

Just detecting that someone is messing with the network is much easier, and I wouldn't be surprised if Bitcoin does try to detect this at some point.

1NXYoJ5xU91Jp83XfVMHwwTUyZFK64BoAD
theymos
Administrator
Legendary
*
Offline Offline

Activity: 5194
Merit: 12976


View Profile
October 16, 2010, 11:11:05 PM
 #3

If I send you 100 BTC's, from wallet abc to your efg, what split would occur naturally? If the network were split, potentially both could have the same spend... right? But they would be to the same wallet.

If you double-spend, then both recipients will get transactions with 0 confirmations. The network isn't sure yet which one came first, since the simple TCP network can't be counted on. Normally after one block the network will decide which one is valid. However, it is possible (though unlikely) for two blocks containing different versions of the transaction to be generated at the same time, in which case it would take another block to figure out which one is valid. (It's possible for this to happen a second time, but too unlikely to think about.)

So a detection mechanism could say, "This new block would replace a block that is 5 blocks deep in the main chain. Any transactions in that chain that conflict with transactions in the main chain are likely to be double-spends." It could not say (with reliable accuracy), "This new block is now the latest block in the main chain. However, one of its transactions conflicts with one that I received via the TCP network first, so the block's version must be a double-spend."

1NXYoJ5xU91Jp83XfVMHwwTUyZFK64BoAD
theymos
Administrator
Legendary
*
Offline Offline

Activity: 5194
Merit: 12976


View Profile
October 17, 2010, 01:18:42 AM
 #4

What I'm asking, is can the client know that these two 0 transactions exist? If that is possible, could the client not allow the transaction to be available for spend until like 10 transactions?

Yes. It's a good idea. If a transaction that conflicts with yours is spotted through the network or in a block (even a block in a shorter chain), then remove your version from all RPC listings and display it specially in the UI. The existence of any conflicting transaction means that the person who sent you the transaction is trying to defraud you.

1NXYoJ5xU91Jp83XfVMHwwTUyZFK64BoAD
ShadowOfHarbringer (OP)
Legendary
*
Offline Offline

Activity: 1470
Merit: 1005


Bringing Legendary Har® to you since 1952


View Profile
October 17, 2010, 11:05:02 AM
 #5

Thank for your answers, I think i get it now.

ShadowOfHarbringer (OP)
Legendary
*
Offline Offline

Activity: 1470
Merit: 1005


Bringing Legendary Har® to you since 1952


View Profile
October 17, 2010, 01:50:05 PM
 #6

I think that the hosts which have a lot of double spents should be added to client's ban list.
First, a temporary ban list, and then a permament one.

If a host improves his behavior, it may be removed from the temporary ban list. But if it keeps double spending, then it should be added to the permament one.

To preserve anonymity, hosts could be indentified by public & private key or digital signature system or whatever.
Also, the clients could communicate between each other to exchange their ban lists. But only if the particular clients trust each other. Some trust system/network could be developed for that.

(Just thinking loud here, don't mind me).

FreeMoney
Legendary
*
Offline Offline

Activity: 1246
Merit: 1014


Strength in numbers


View Profile WWW
October 17, 2010, 11:47:29 PM
 #7

In the >50% attack. A transaction can get an arbitrary number of confirms and then eventually be undone by the attacker making a longer chain that doesn't contain the transaction, then he can spend it again at will any time in the future.

So no, you can't tell until the transaction disappears at which point it will be too late.

Play Bitcoin Poker at sealswithclubs.eu. We're active and open to everyone.
Pages: [1]
  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!