Author

Topic: Where the Bitcoin Core, Mining and Protocol is at right now (Read 1218 times)

legendary
Activity: 2053
Merit: 1356
aka tonikt
A general rule is that when a transaction gets to a memory pool then any further tx that would try to spend the same input(s) would be rejected (despite of its fee).
But this is only a rule enforced by your node's software and since each user/miner running a node has a control over his own software, everyone can change the rules and you can just as well assume that it will not work like this. Surely not all the time.
That is why you wait for confirmations, because burying the information about which outputs are already spent, inside the chain, is the only reliable way of assuring that same outputs will not be included in a different tx. You cannot bury an information in a memory pool, because is controlled by a user software and so it is not ought to be trusted.
newbie
Activity: 20
Merit: 0
You asked if the bitcoin-core client will relay double spends.  Now you are asking if double spending an unconfirmed tx is possible.  That is a totally different question.  The answers are no and yes respectively.  The miner could have been dishonest accepting a fee to include a double spend in the block, or the miner could have been the attacker.  The first tx may not have been relayed through the network because it had insufficient fees or violated another rule for standard txs.

What exactly is meant by dishonest here? If the double spend has a higher fee it will have a higher priority and goes into the blockchain, but only if the miner is dishonest and chooses to ignore the first transaction?

What I really want to know here is if it's reference implementation to actually include the first transaction in the block, even though the later has higher priority.
donator
Activity: 1218
Merit: 1079
Gerald Davis
You asked if the bitcoin-core client will relay double spends.  Now you are asking if double spending an unconfirmed tx is possible.  That is a totally different question.  The answers are no and yes respectively.  The miner could have been dishonest accepting a fee to include a double spend in the block, or the miner could have been the attacker.  The first tx may not have been relayed through the network because it had insufficient fees or violated another rule for standard txs.
newbie
Activity: 20
Merit: 0
Quote
Does the Bitcoin Core still broadcast double spends that come in later?

The Bitcoin Core client has never broadcast, relayed, or included double spends in a block.

I mean double spends that come in later but both still unconfirmed and not in a block. So you're saying that if I make a payment and then respend it+fee a few seconds later, none of the normal nodes would help propagate it?

Yes once a node learns of a tx it will drop any double spends of that tx and not relay (forward) or include it in the memory pool.  Since new blocks are created from the memory pool the double spend will not be included in future blocks made by that node either.  This isn't some new development.  The network has always worked this way (for obvious reasons).

What about this one:
https://blockchain.info/tx-index/57545592 that was (according to blockchain.info) made some 15 minutes before the one that got confirmed:
https://blockchain.info/tx-index/57546803

Shouldn't the second one have been stopped by the nodes in the first place?

EDIT updated double spend example
donator
Activity: 1218
Merit: 1079
Gerald Davis
Quote
Does the Bitcoin Core still broadcast double spends that come in later?

The Bitcoin Core client has never broadcast, relayed, or included double spends in a block.

I mean double spends that come in later but both still unconfirmed and not in a block. So you're saying that if I make a payment and then respend it+fee a few seconds later, none of the normal nodes would help propagate it?

Yes once a node learns of a tx it will drop any double spends of that tx and not relay (forward) or include it in the memory pool.  Since new blocks are created from the memory pool the double spend will not be included in future blocks made by that node either.  This isn't some new development.  The network has always worked this way (for obvious reasons).
newbie
Activity: 20
Merit: 0
Quote
Does the Bitcoin Core still broadcast double spends that come in later?

The Bitcoin Core client has never broadcast, relayed, or included double spends in a block.

I mean double spends that come in later but both still unconfirmed and not in a block. So you're saying that if I make a payment and then resend it+fee a few seconds later, none of the normal nodes would help propagate it?
newbie
Activity: 20
Merit: 0
Double spending does not happen now. They've dedicated time into their network to ensure no double spending occurs.

So this: https://bitcointalksearch.org/topic/success-double-spend-against-a-satoshidice-loss-130764 (successful double spend against satoshidice) could not happen again?
newbie
Activity: 20
Merit: 0
Bitcoin is a technology that was invented to prevent double spending, so I really don't know what you mean.
You just need to wait for enough number of confirmations to be proportionally ensured that a certain transaction was not a double spend.
In most cases 1 or 2 confirmations is enough, but the industrial standard ever since seems to have been 6 confirmations.

What I'm trying to find out is how hard is it to broadcars a transaction to the bitcoin network, and then send the same but to another address a couple of minutes later. Will both of them be broadcasted to all the miners just as if they were unrelated? Will the first one be more likely to be included in a block first? How would a slighly bigger fee on one of the transactions change this? Would it be easy enough to refuse to pay the fee that the common clients enforce and then just spend the same coin a minute later with the standard 0.0001 fee included?
donator
Activity: 1218
Merit: 1079
Gerald Davis
Double spending is still 'possible' but will be corrected unless you control 51% of the network.

I meant only the broadcast of double spending transactions (not mining or distribution of new blocks). Are the bitcoin nodes filtering out which transactions to broadcast to connected nodes or does it just send anything on to everybody?

They have always dropped double spends. 
newbie
Activity: 20
Merit: 0
Double spending is still 'possible' but will be corrected unless you control 51% of the network.

I meant only the broadcast of double spending transactions (not mining or distribution of new blocks). Are the bitcoin nodes filtering out which transactions to broadcast to connected nodes or does it just send anything on to everybody?
legendary
Activity: 1522
Merit: 1000
www.bitkong.com
Double spending does not happen now. They've dedicated time into their network to ensure no double spending occurs.
donator
Activity: 1218
Merit: 1079
Gerald Davis
Quote
Does the Bitcoin Core still broadcast double spends that come in later?

The Bitcoin Core client has never broadcast, relayed, or included double spends in a block.
legendary
Activity: 2053
Merit: 1356
aka tonikt
Malleability: The Bitcoin wiki explains possible malleability, and we all know Mark Karpeles blaimed the malleability for his problems. As I understand, there was an update to Bitcoin Core to put a stop to this, but where are we at right now? How can malleability be exploited and in what way is it harder to exploit than before the recent update?
You cannot put a stop to this. Not without a hard fork. All they could do was to consider a certain transactions non-standard, but it does not prevent modified transactions from being mined.

Malleability is more of a term, a thing that developers should be aware of, rather than a problem.
If you know that it exists and what is concerns, it would not be much of a problem for you.
Unless you have a need to spend yet unconfirmed outputs - then the malleability can disturb you from doing it in a reliable way.


Double spending: How easy is double a successful double spend to create nowadays? Does the Bitcoin Core still broadcast double spends that come in later? Can it still be done easily by importing the key to two clients and then just spend the bitcoins a second later?
Bitcoin is a technology that was invented to prevent double spending, so I really don't know what you mean.
You just need to wait for enough number of confirmations to be proportionally ensured that a certain transaction was not a double spend.
In most cases 1 or 2 confirmations is enough, but the industrial standard ever since seems to have been 6 confirmations.


In both the cases remember that Bitcoin was never meant to be a fast payment processing network. The protocol has a potential for extinctions that would facilitate (e.g. off-chain txs), but these days it's more of a theory rather than a reality.
Anyway, 99% of bitcoin users can easily live without spending unconfirmed outputs and each of us is totally aware of the fact that if we deposit coins somewhere they usually get credited after 6 confirmations. The reaming 1% (of mostly newbies) will sooner or later adjust to these rules, having not much choice anyway.
member
Activity: 96
Merit: 10
Double spending is still 'possible' but will be corrected unless you control 51% of the network.
newbie
Activity: 20
Merit: 0
I'm gathering information about the current state of Bitcoin. There's been several issues over the years, and I think most are solved. But I have some questions.

  • Malleability: The Bitcoin wiki explains possible malleability, and we all know Mark Karpeles blaimed the malleability for his problems. As I understand, there was an update to Bitcoin Core to put a stop to this, but where are we at right now? How can malleability be exploited and in what way is it harder to exploit than before the recent update?
  • Double spending: How easy is a successful double spend to create nowadays? Does the Bitcoin Core still broadcast double spends that come in later? Can it still be done easily by importing the key to two clients and then just spend the bitcoins a second later?
    Clarification: I'm wondering about the broadcasts of transactions that are not mined. Is there a mechanism to include the first that the miners receive in the block to mine or do they really choose later double spending transactions with higher fees?
Jump to: