Bitcoin Forum
November 16, 2024, 04:50:04 PM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Double-spending vs Double-spending  (Read 1001 times)
jackjack (OP)
Legendary
*
Offline Offline

Activity: 1176
Merit: 1280


May Bitcoin be touched by his Noodly Appendage


View Profile
August 20, 2013, 05:24:06 PM
 #1

1.
According to Wikipedia:
Quote
Double-spending is a failure mode of digital cash schemes, when it is possible to spend a single digital token twice

2.
Bitcoin people sometimes use "double-spending" to talk about the fact of broadcasting two (or more) transactions that use the same input with only one being accepted in the blockchain

Obviously 1. != 2. so I think we should use another word for describing 2.
I've never seen anybody using another word, did you?

Own address: 19QkqAza7BHFTuoz9N8UQkryP4E9jHo4N3 - Pywallet support: 1AQDfx22pKGgXnUZFL1e4UKos3QqvRzNh5 - Bitcointalk++ script support: 1Pxeccscj1ygseTdSV1qUqQCanp2B2NMM2
Pywallet: instructions. Encrypted wallet support, export/import keys/addresses, backup wallets, export/import CSV data from/into wallet, merge wallets, delete/import addresses and transactions, recover altcoins sent to bitcoin addresses, sign/verify messages and files with Bitcoin addresses, recover deleted wallets, etc.
BombaUcigasa
Legendary
*
Offline Offline

Activity: 1442
Merit: 1005



View Profile
August 20, 2013, 05:31:08 PM
 #2

1. single digital token
2.transactions that use the same input
The word you are looking for is "confused".

Double-spending is exactly how you would describe a successful reuse of a unique single input in two different outputs on two valid transactions.

While this has not "happened" in history if you consider the blockchain the official "version" of history, it actually happened during the great 0.8 database incident.
Raoul Duke
aka psy
Legendary
*
Offline Offline

Activity: 1358
Merit: 1002



View Profile
August 20, 2013, 05:33:11 PM
 #3

2 should be "Double-spending attemptGrin
jackjack (OP)
Legendary
*
Offline Offline

Activity: 1176
Merit: 1280


May Bitcoin be touched by his Noodly Appendage


View Profile
August 20, 2013, 05:42:31 PM
 #4

1. single digital token
2.transactions that use the same input
The word you are looking for is "confused".

Double-spending is exactly how you would describe a successful reuse of a unique single input in two different outputs on two valid transactions.

While this has not "happened" in history if you consider the blockchain the official "version" of history, it actually happened during the great 0.8 database incident.

I'm not talking about these (which deserve their names) but rather about things like this: https://bitcointalk.org/index.php?topic=232979.0 or https://bitcointalk.org/index.php?topic=231309.0 (ie rebroadcasting the same tx with more fees for example, nothing malicious)

2 should be "Double-spending attemptGrin
That's also not the kind of double-spending I had in mind but it's a good precision to add for this kind!


Own address: 19QkqAza7BHFTuoz9N8UQkryP4E9jHo4N3 - Pywallet support: 1AQDfx22pKGgXnUZFL1e4UKos3QqvRzNh5 - Bitcointalk++ script support: 1Pxeccscj1ygseTdSV1qUqQCanp2B2NMM2
Pywallet: instructions. Encrypted wallet support, export/import keys/addresses, backup wallets, export/import CSV data from/into wallet, merge wallets, delete/import addresses and transactions, recover altcoins sent to bitcoin addresses, sign/verify messages and files with Bitcoin addresses, recover deleted wallets, etc.
Stephen Gornick
Legendary
*
Offline Offline

Activity: 2506
Merit: 1010


View Profile
August 20, 2013, 05:48:52 PM
 #5

Obviously 1. != 2. so I think we should use another word for describing 2.
I've never seen anybody using another word, did you?

A spend with Bitcoin is a "confirmed" transaction.   Most services do not credit a transaction as confirmed until there are six block that have confirmed the transaction.  

So 1 == 2 in that context (with the exception of systemic failure like what happened with the March 2013 hard fork in which even a confirmed transaction got double spent).

I'm not talking about these (which deserve their names) but rather about things like this: https://bitcointalk.org/index.php?topic=232979.0 or https://bitcointalk.org/index.php?topic=231309.0 (ie rebroadcasting the same tx with more fees for example, nothing malicious)

But the term double spending is never used (as far as I've seen) when referring to "replace by fee" capability:
 - http://bitcointalk.org/index.php?topic=199947.0

Unichange.me

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


jackjack (OP)
Legendary
*
Offline Offline

Activity: 1176
Merit: 1280


May Bitcoin be touched by his Noodly Appendage


View Profile
August 20, 2013, 06:21:32 PM
 #6

Obviously 1. != 2. so I think we should use another word for describing 2.
I've never seen anybody using another word, did you?

A spend with Bitcoin is a "confirmed" transaction.   Most services do not credit a transaction as confirmed until there are six block that have confirmed the transaction. 
That's the problem, sometimes people use double-spend even for unconfirmed transactions. That's exactly what I'm talking about here: I'm asking what word to use to describe the situation where there are two unconfirmed transactions using the same input.

For example, this guy made a transaction that doesn't get accepted in the blockchain and need to pay a specific address with the same input before tomorrow.
The new tx he will made is what I'd like to name.


I'm not talking about these (which deserve their names) but rather about things like this: https://bitcointalk.org/index.php?topic=232979.0 or https://bitcointalk.org/index.php?topic=231309.0 (ie rebroadcasting the same tx with more fees for example, nothing malicious)

But the term double spending is never used (as far as I've seen) when referring to "replace by fee" capability:
 - http://bitcointalk.org/index.php?topic=199947.0
Indeed, I wasn't thinking about this feature, I just meant broadcasting a transaction that uses the same input than another unconfirmed transaction


PS: I'm very aware that my english is far from perfect and that this makes such technical talks difficult. Sorry for that!

Own address: 19QkqAza7BHFTuoz9N8UQkryP4E9jHo4N3 - Pywallet support: 1AQDfx22pKGgXnUZFL1e4UKos3QqvRzNh5 - Bitcointalk++ script support: 1Pxeccscj1ygseTdSV1qUqQCanp2B2NMM2
Pywallet: instructions. Encrypted wallet support, export/import keys/addresses, backup wallets, export/import CSV data from/into wallet, merge wallets, delete/import addresses and transactions, recover altcoins sent to bitcoin addresses, sign/verify messages and files with Bitcoin addresses, recover deleted wallets, etc.
Kouye
Sr. Member
****
Offline Offline

Activity: 336
Merit: 250


Cuddling, censored, unicorn-shaped troll.


View Profile
August 20, 2013, 06:55:14 PM
 #7

That's the problem, sometimes people use double-spend even for unconfirmed transactions. That's exactly what I'm talking about here: I'm asking what word to use to describe the situation where there are two unconfirmed transactions using the same input.

How about {"competing", "jousting", "opposing", "rival", "wrestling", "dueling"} transactions? Grin

[OVER] RIDDLES 2nd edition --- this was claimed. Look out for 3rd edition!
I won't ever ask for a loan nor offer any escrow service. If I do, please consider my account as hacked.
DannyHamilton
Legendary
*
Offline Offline

Activity: 3486
Merit: 4851



View Profile
August 20, 2013, 08:11:58 PM
 #8

As far as I'm concerned, while there are two valid transactions that both spend the same input it is a double-spend transaction.  It may not be a double-spend with confirmations, but the fact is that so long as the transaction is not in the blockchain some clients will see one transaction as valid while other clients will see the other transaction as valid.  That's a double-spend.  There are people and services that are willing to accept a bit of risk and deliver goods or services while a transaction has 0 confirmations.  Therefore the two transactions meet your requirements of "possible to spend a single digital token twice", since two separate vendors could theoretically both accept a transaction that pays them from the same input.


Once one of the transactions have been added to the blockchain and the other is dropped from the memory pools, you no longer have a double-spend since only one transaction exists.  Instead what you have is a single transaction and a theft (if products or services were delivered on the non-existent transaction).  You can refer to the rejected transaction as a failed double-spend attempt, or a rejected attempt to re-spend a spent input.
jackjack (OP)
Legendary
*
Offline Offline

Activity: 1176
Merit: 1280


May Bitcoin be touched by his Noodly Appendage


View Profile
August 20, 2013, 08:42:15 PM
 #9

That's the problem, sometimes people use double-spend even for unconfirmed transactions. That's exactly what I'm talking about here: I'm asking what word to use to describe the situation where there are two unconfirmed transactions using the same input.

How about {"competing", "jousting", "opposing", "rival", "wrestling", "dueling"} transactions? Grin
I actually like them!

As far as I'm concerned, while there are two valid transactions that both spend the same input it is a double-spend transaction.  It may not be a double-spend with confirmations, but the fact is that so long as the transaction is not in the blockchain some clients will see one transaction as valid while other clients will see the other transaction as valid.  That's a double-spend.  There are people and services that are willing to accept a bit of risk and deliver goods or services while a transaction has 0 confirmations.  Therefore the two transactions meet your requirements of "possible to spend a single digital token twice", since two separate vendors could theoretically both accept a transaction that pays them from the same input.


Once one of the transactions have been added to the blockchain and the other is dropped from the memory pools, you no longer have a double-spend since only one transaction exists.  Instead what you have is a single transaction and a theft (if products or services were delivered on the non-existent transaction).  You can refer to the rejected transaction as a failed double-spend attempt, or a rejected attempt to re-spend a spent input.
According to the Bitcoin protocol, aren't broadcasted transactions basically meaningless? AFAIK they are just "random" bytes sent over the network, they don't have any existence in the protocol. Only the blockchain does.
What such merchants do isn't part of Bitcoin IMO so I wouldn't call such transactions "Bitcoin double-spends".

Own address: 19QkqAza7BHFTuoz9N8UQkryP4E9jHo4N3 - Pywallet support: 1AQDfx22pKGgXnUZFL1e4UKos3QqvRzNh5 - Bitcointalk++ script support: 1Pxeccscj1ygseTdSV1qUqQCanp2B2NMM2
Pywallet: instructions. Encrypted wallet support, export/import keys/addresses, backup wallets, export/import CSV data from/into wallet, merge wallets, delete/import addresses and transactions, recover altcoins sent to bitcoin addresses, sign/verify messages and files with Bitcoin addresses, recover deleted wallets, etc.
DannyHamilton
Legendary
*
Offline Offline

Activity: 3486
Merit: 4851



View Profile
August 20, 2013, 08:47:23 PM
 #10

According to the Bitcoin protocol, aren't broadcasted transactions basically meaningless? AFAIK they are just "random" bytes sent over the network, they don't have any existence in the protocol. Only the blockchain does.
What such merchants do isn't part of Bitcoin IMO so I wouldn't call such transactions "Bitcoin double-spends".

They must be more than just "random bytes send over the network", otherwise nodes wouldn't bother validating that those bytes meet any sort of rules and they wouldn't bother relaying them. 
Kouye
Sr. Member
****
Offline Offline

Activity: 336
Merit: 250


Cuddling, censored, unicorn-shaped troll.


View Profile
August 20, 2013, 10:49:02 PM
 #11

As far as I'm concerned, while there are two valid transactions that both spend the same input it is a double-spend transaction.  It may not be a double-spend with confirmations, but the fact is that so long as the transaction is not in the blockchain some clients will see one transaction as valid while other clients will see the other transaction as valid.  That's a double-spend.  There are people and services that are willing to accept a bit of risk and deliver goods or services while a transaction has 0 confirmations.  Therefore the two transactions meet your requirements of "possible to spend a single digital token twice", since two separate vendors could theoretically both accept a transaction that pays them from the same input.


Once one of the transactions have been added to the blockchain and the other is dropped from the memory pools, you no longer have a double-spend since only one transaction exists.  Instead what you have is a single transaction and a theft (if products or services were delivered on the non-existent transaction).  You can refer to the rejected transaction as a failed double-spend attempt, or a rejected attempt to re-spend a spent input.

As much as I highly respect your input, I'm not really conviced this covers jack's interrogations.

"Double-spending" involves that your coins have been successfully used twice to pay 2 different recipients.
Successfully double-spending is a theft, which should be impossible, unless a systemic, critical flaw is abused.

Trying to double-cross another transaction for increased speed or any other reason might be legit.
If technically it's the same thing, the intent AND resolution differ.

- First case, we have an acutal, confirmed use of the same coins to pay 2 different recipients.
- Second case, we have opposing transactions, one of which ends up being discarded.

- First case is impossible, unless a huge fail from the core dev team, or a brilliant hacker work.
- Second case happens daily, and is not an issue.

I agree this needs some more precise vocabulary.



[OVER] RIDDLES 2nd edition --- this was claimed. Look out for 3rd edition!
I won't ever ask for a loan nor offer any escrow service. If I do, please consider my account as hacked.
DannyHamilton
Legendary
*
Offline Offline

Activity: 3486
Merit: 4851



View Profile
August 20, 2013, 11:02:56 PM
 #12

As far as I'm concerned, while there are two valid transactions that both spend the same input it is a double-spend transaction.  It may not be a double-spend with confirmations, but the fact is that so long as the transaction is not in the blockchain some clients will see one transaction as valid while other clients will see the other transaction as valid.  That's a double-spend.  There are people and services that are willing to accept a bit of risk and deliver goods or services while a transaction has 0 confirmations.  Therefore the two transactions meet your requirements of "possible to spend a single digital token twice", since two separate vendors could theoretically both accept a transaction that pays them from the same input.


Once one of the transactions have been added to the blockchain and the other is dropped from the memory pools, you no longer have a double-spend since only one transaction exists.  Instead what you have is a single transaction and a theft (if products or services were delivered on the non-existent transaction).  You can refer to the rejected transaction as a failed double-spend attempt, or a rejected attempt to re-spend a spent input.
As much as I highly respect your input, I'm not really conviced this covers jack's interrogations.

"Double-spending" involves that your coins have been successfully used twice to pay 2 different recipients.
Successfully double-spending is a theft, which should be impossible, unless a systemic, critical flaw is abused.

Trying to double-cross another transaction for increased speed or any other reason might be legit.
If technically it's the same thing, the intent AND resolution differ.

- First case, we have an acutal, confirmed use of the same coins to pay 2 different recipients.
- Second case, we have opposing transactions, one of which ends up being discarded.

- First case is impossible, unless a huge fail from the core dev team, or a brilliant hacker work.
- Second case happens daily, and is not an issue.

I agree this needs some more precise vocabulary.

I see the point, and I realize that I may be taking a rather technical view of the situation rather than a "real world intent" view, but I'm just not convinced that we need a word or phrase that distinguishes the intent.
Kouye
Sr. Member
****
Offline Offline

Activity: 336
Merit: 250


Cuddling, censored, unicorn-shaped troll.


View Profile
August 20, 2013, 11:21:45 PM
 #13

I see the point, and I realize that I may be taking a rather technical view of the situation rather than a "real world intent" view, but I'm just not convinced that we need a word or phrase that distinguishes the intent.

One is criminal.
Other is a convenient daily used feature.

I also see your point, basically saying the first one is an exploit of the second feature, and thus just needs an "exploit" prefix.
I'm not convinced, but that's understandable.

Still, I'm sure people will need more precise vocabulary, on the long run, and that it will emerge, to avoid confusion. Smiley

[OVER] RIDDLES 2nd edition --- this was claimed. Look out for 3rd edition!
I won't ever ask for a loan nor offer any escrow service. If I do, please consider my account as hacked.
DannyHamilton
Legendary
*
Offline Offline

Activity: 3486
Merit: 4851



View Profile
August 21, 2013, 12:15:01 AM
 #14

I see the point, and I realize that I may be taking a rather technical view of the situation rather than a "real world intent" view, but I'm just not convinced that we need a word or phrase that distinguishes the intent.

One is criminal.
Other is a convenient daily used feature.

I also see your point, basically saying the first one is an exploit of the second feature, and thus just needs an "exploit" prefix.
I'm not convinced, but that's understandable.

Still, I'm sure people will need more precise vocabulary, on the long run, and that it will emerge, to avoid confusion. Smiley

I can point a gun at a paper target and pull the trigger, it's called "firing a gun".

I can point a gun at a person and pull the trigger, it's called "firing a gun".

One is criminal, the other is a convenient daily used feature.

The end result has two different names "homicide" vs. "target with holes in it", but we don't distinguish the "firing a gun" from "firing a gun" based on intent of the person "firing a gun".

Like I said, I see your point, and once one of the transactions makes it into the blockchain, I can certainly see using a name like "theft" or "fraud" for the result of the transaction that gets rejected, but the purpose of the act doesn't change the act itself.
jackjack (OP)
Legendary
*
Offline Offline

Activity: 1176
Merit: 1280


May Bitcoin be touched by his Noodly Appendage


View Profile
August 21, 2013, 12:32:30 AM
Last edit: August 21, 2013, 11:02:59 AM by jackjack
 #15

I totally agree and I always use(d) "double-spending" for both cases anyway.
My point here is that I think we should distinguish them for new comers. At least one person in this forum got confused and thought we were talking about stealing coins. I can't find the post again.

Own address: 19QkqAza7BHFTuoz9N8UQkryP4E9jHo4N3 - Pywallet support: 1AQDfx22pKGgXnUZFL1e4UKos3QqvRzNh5 - Bitcointalk++ script support: 1Pxeccscj1ygseTdSV1qUqQCanp2B2NMM2
Pywallet: instructions. Encrypted wallet support, export/import keys/addresses, backup wallets, export/import CSV data from/into wallet, merge wallets, delete/import addresses and transactions, recover altcoins sent to bitcoin addresses, sign/verify messages and files with Bitcoin addresses, recover deleted wallets, etc.
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!