Bitcoin Forum

Bitcoin => Development & Technical Discussion => Topic started by: theymos on June 05, 2010, 04:26:09 PM



Title: What is the incentive to collect transactions?
Post by: theymos on June 05, 2010, 04:26:09 PM
Adding transactions to the block you're working on will slow down your generation rate. What prevents the majority of generating nodes from ignoring broadcasted transactions and making the network unreliable?


Title: Re: What is the incentive to collect transactions?
Post by: lachesis on June 05, 2010, 06:59:19 PM
I don't know if there are any technological safeguards to prevent this, but there is a social one: if you drop transactions, others might drop yours.


Title: Re: What is the incentive to collect transactions?
Post by: sirius on June 05, 2010, 07:22:38 PM
Bitcoin supports transaction fees paid to the node that records a transaction into the block chain. If too many nodes start dropping transactions, you can pay a fee when you want to increase the likeliness of your transaction being recorded in the next block.


Title: Re: What is the incentive to collect transactions?
Post by: laszlo on June 05, 2010, 07:42:17 PM
So would it be smarter to only process transactions which profit you?  That way if you want to send money you need to include a courier fee or nobody will confirm it.  That seems reasonable to me, where you can add a fee yourself to each transaction, and people can configure a threshold of how much of a fee they expect before accepting a transaction.


Title: Re: What is the incentive to collect transactions?
Post by: theymos on June 05, 2010, 07:55:40 PM
That's a clever (and very free-market) solution. How does BitCoin currently deal with transactions that aren't published in a block for a long time? Is there any risk of them being lost?


Title: Re: What is the incentive to collect transactions?
Post by: QuantumMechanic on June 05, 2010, 08:02:09 PM
Are there any estimates on the average transaction fee once users' incentive to support the network via bitcoin generation is mostly dried up?  How does this scale with the number of users, the size of network, and the total transaction rate?


Title: Re: What is the incentive to collect transactions?
Post by: satoshi on June 15, 2010, 11:41:29 PM
Adding transactions to the block you're working on will slow down your generation rate
The premise is false.  Adding more transactions to the block you're working on does NOT slow down your generation rate.  When generate is scanning hashes, it only hashes the header of the block, which is constant size.  The header contains a hash of the transactions (the Merkle root) and is only updated occasionally.

If necessary I can write code to make nodes prefer not to use a block if it doesn't contain enough of the transactions they know about.  A discouraged block would almost always fail to be included in the main chain, but would be accepted if it did get in.  I doubt this will be necessary, since there's no real advantage for nodes not to include all transactions.


Title: Re: What is the incentive to collect transactions?
Post by: Stickboy on July 13, 2010, 05:38:55 AM
I'm new here so forgive me if I say something stupid.

Under normal circumstances there might be no advantage not to include all transactions but what about pure malicious motivations?  If this is an avenue for disrupting the currency I certainly would think twice about "keeping my money there", so to speak.


Title: Re: What is the incentive to collect transactions?
Post by: jib on July 13, 2010, 05:46:31 AM
It doesn't matter if a transaction's not included; it'll get included in a later block. As long as the attackers have much less CPU power than the rest of the network, they won't be a problem.


Title: Re: What is the incentive to collect transactions?
Post by: Come-from-Beyond on October 05, 2012, 07:10:38 PM
Adding transactions to the block you're working on will slow down your generation rate
The premise is false.  Adding more transactions to the block you're working on does NOT slow down your generation rate.  When generate is scanning hashes, it only hashes the header of the block, which is constant size.  The header contains a hash of the transactions (the Merkle root) and is only updated occasionally.

If necessary I can write code to make nodes prefer not to use a block if it doesn't contain enough of the transactions they know about.  A discouraged block would almost always fail to be included in the main chain, but would be accepted if it did get in.  I doubt this will be necessary, since there's no real advantage for nodes not to include all transactions.

What if the state developed and sold a lot of ASICs that don't include any transaction? If these ASICs are better than anyone's else, then most of miners will use such malicious devices. The state can afford to hire the best scientists and the best engineers to create such ASICs. It can even sell these devices much cheaper than, say, Butterfly Labs. Was the mentioned functionality (rejecting blocks with not enough transaction) implemented?


Title: Re: What is the incentive to collect transactions?
Post by: maaku on October 05, 2012, 07:46:27 PM
You, sir, are a powerful necromancer.

Can you raise Satoshi from the dead too?


Title: Re: What is the incentive to collect transactions?
Post by: Come-from-Beyond on October 05, 2012, 09:02:43 PM
No, it wasn't, thankfully. It is the miners choice to add or not add transactions to a block.

You worry about a state attacking Bitcoin, yet want to force miners, via the protocol, to add transactions? /facepalm

Eventually, transactions fees will be the main method by which miners are compensated for their work. There is no reason to change anything. Let the market take care of it. If miners don't add ANY transactions, they won't receive any transaction fees, and their competition will earn more than them and outpace them in the hardware arms race.

I'm talking about next few years.

If u were a miner what would u choose:
1. Find 1 block every 24 hours with some fees.
2. Find 1 block every 16 hours with no fees.

???


Title: Re: What is the incentive to collect transactions?
Post by: Come-from-Beyond on October 05, 2012, 09:09:16 PM
You, sir, are a powerful necromancer.

Can you raise Satoshi from the dead too?

I was led here via https://en.bitcoin.it/wiki/Weaknesses (search for "Satoshi has communicated that he will write code to stop this kind of thing if it becomes a problem" text). So I'm not a necrophiliac. :)


Title: Re: What is the incentive to collect transactions?
Post by: jgarzik on October 05, 2012, 09:09:35 PM
I'm talking about next few years.

If u were a miner what would u choose:
1. Find 1 block every 24 hours with some fees.
2. Find 1 block every 16 hours with no fees.

And if everybody's bitcoin transactions take forever to confirm, users will abandon the network, and bitcoins will have no value.

Miners have an incentive to encourage users to use bitcoins, over and above simple fee income.

The more users, the more value conferred by the block reward + fee total.

No users, block reward + fee is worthless.



Title: Re: What is the incentive to collect transactions?
Post by: Come-from-Beyond on October 05, 2012, 09:10:39 PM
If in some make-believe I was forced to choose between the two, I would choose option 1, I'm not stupid enough to think that Bitcoin can have value if it can not function properly.

Most miners will choose option 2 coz of greed.


Title: Re: What is the incentive to collect transactions?
Post by: Come-from-Beyond on October 05, 2012, 09:13:33 PM
Miners have an incentive to encourage users to use bitcoins, over and above simple fee income.

I disagree. I know some miners who own mining farms. They mine coz it's easy way to earn money, they don't care what will happen to Bitcoin in the future.


Title: Re: What is the incentive to collect transactions?
Post by: jgarzik on October 05, 2012, 09:18:07 PM
Miners have an incentive to encourage users to use bitcoins, over and above simple fee income.

I disagree. I know some miners who own mining farms. They mine coz it's easy way to earn money, they don't care what will happen to Bitcoin in the future.

The existence of an incentive does not presuppose all will follow that.

Thankfully, most do, otherwise value would collapse.



Title: Re: What is the incentive to collect transactions?
Post by: kjj on October 05, 2012, 10:09:18 PM
I'm talking about next few years.

If u were a miner what would u choose:
1. Find 1 block every 24 hours with some fees.
2. Find 1 block every 16 hours with no fees.

Why on earth would anyone make this choice?  Are you confused about how mining works?  Here's a hint to get you started: including transactions does not hurt your hash rate.


Title: Re: What is the incentive to collect transactions?
Post by: Come-from-Beyond on October 05, 2012, 10:12:53 PM
I'm talking about next few years.

If u were a miner what would u choose:
1. Find 1 block every 24 hours with some fees.
2. Find 1 block every 16 hours with no fees.

Why on earth would anyone make this choice?  Are you confused about how mining works?  Here's a hint to get you started: including transactions does not hurt your hash rate.

Heh. It's the 1st time I see a person who can write but can't read.

What if the state developed and sold a lot of ASICs that don't include any transaction? If these ASICs are better than anyone's else, then most of miners will use such malicious devices. The state can afford to hire the best scientists and the best engineers to create such ASICs. It can even sell these devices much cheaper than, say, Butterfly Labs. Was the mentioned functionality (rejecting blocks with not enough transaction) implemented?

Should I rewrite it MORE slowly?  ;D


Title: Re: What is the incentive to collect transactions?
Post by: Inaba on October 05, 2012, 10:17:09 PM
Holy shit I was so confused when reading this... I didn't look at the date to start with and was like total WTF.

http://i230.photobucket.com/albums/ee117/davensjournal/sereitei/MotivatorThreadNecro.jpg

But to answer your question: What is the incentive to do so?  To destroy bitcoin?  There are easier, quicker, cheaper ways to do that... The threat of a state or powerful actor going through the trouble and expense to wreck bitcoin in that manner is pretty remote, because it's exceptionally inefficient once the ASICs are in the wild and network hashing power is measured in hundreds of TH, not just 10 or 20.


Title: Re: What is the incentive to collect transactions?
Post by: molecular on October 05, 2012, 10:24:11 PM
Adding transactions to the block you're working on will slow down your generation rate
The premise is false.  Adding more transactions to the block you're working on does NOT slow down your generation rate.  When generate is scanning hashes, it only hashes the header of the block, which is constant size.  The header contains a hash of the transactions (the Merkle root) and is only updated occasionally.

If necessary I can write code to make nodes prefer not to use a block if it doesn't contain enough of the transactions they know about.  A discouraged block would almost always fail to be included in the main chain, but would be accepted if it did get in.  I doubt this will be necessary, since there's no real advantage for nodes not to include all transactions.

What if the state developed and sold a lot of ASICs that don't include any transaction? If these ASICs are better than anyone's else, then most of miners will use such malicious devices. The state can afford to hire the best scientists and the best engineers to create such ASICs. It can even sell these devices much cheaper than, say, Butterfly Labs. Was the mentioned functionality (rejecting blocks with not enough transaction) implemented?

The ASIC itself doesn't concern itself with block construction, that's done by mining software on host machine. The ASIC only does the dirty hashing work.

As said by Satoshi and also Gavin and others more recently (when that botnet or whatever it was appearead early 2012 mining non-tx block) there are effective ways to deal with such an attack.


Title: Re: What is the incentive to collect transactions?
Post by: kjj on October 05, 2012, 11:02:18 PM
I'm talking about next few years.

If u were a miner what would u choose:
1. Find 1 block every 24 hours with some fees.
2. Find 1 block every 16 hours with no fees.

Why on earth would anyone make this choice?  Are you confused about how mining works?  Here's a hint to get you started: including transactions does not hurt your hash rate.

Heh. It's the 1st time I see a person who can write but can't read.

What if the state developed and sold a lot of ASICs that don't include any transaction? If these ASICs are better than anyone's else, then most of miners will use such malicious devices. The state can afford to hire the best scientists and the best engineers to create such ASICs. It can even sell these devices much cheaper than, say, Butterfly Labs. Was the mentioned functionality (rejecting blocks with not enough transaction) implemented?

Should I rewrite it MORE slowly?  ;D

How about you write it on this planet instead?

In your hypothetical universe where the chip has the telepathic ability to refuse to hash blocks that include transactions, pigs will fly out of unicorn asses.

In this universe, where the ability to get paid for a block is exactly the same thing, as far as the chip is concerned, as being able to include transactions, no one can force this choice on you.


Title: Re: What is the incentive to collect transactions?
Post by: Come-from-Beyond on October 06, 2012, 05:53:13 AM
There are easier, quicker, cheaper ways to do that...

We'll get rid of all weaknesses one by one. I'm analyzing this one right now.


The ASIC itself doesn't concern itself with block construction, that's done by mining software on host machine. The ASIC only does the dirty hashing work.

It seems to be possible to move "block construction" logic into the chip.


Title: Re: What is the incentive to collect transactions?
Post by: molecular on October 06, 2012, 12:14:46 PM
It seems to be possible to move "block construction" logic into the chip.

It's possible to move anything into the chip... however it doesn't make sense because "block construction" is complex and not time-critical.


Title: Re: What is the incentive to collect transactions?
Post by: Come-from-Beyond on October 06, 2012, 12:18:08 PM
It seems to be possible to move "block construction" logic into the chip.

It's possible to move anything into the chip... however it doesn't make sense because "block construction" is complex and not time-critical.

For the state that wants to shutdown Bitcoin it does make sense.


Title: Re: What is the incentive to collect transactions?
Post by: molecular on October 06, 2012, 01:00:54 PM
It seems to be possible to move "block construction" logic into the chip.

It's possible to move anything into the chip... however it doesn't make sense because "block construction" is complex and not time-critical.

For the state that wants to shutdown Bitcoin it does make sense.

Why would they sell the chips, though, instead of simply running them themselves? In that case they might as well use ASIC only for hashing (as would be sensible as argued) because they control the software and can do 0-tx-block-construction on CPU.

Also: please recall my argument that there are possible countermeasures against this which could be employed once the attack commences. This makes the attack impractical (it will fail) and therefore noone will attempt it. Even without actually implementing the countermeasures beforehand, merely the possibility of implementing them on demand is sufficient to avoid this attack.


Title: Re: What is the incentive to collect transactions?
Post by: cypherdoc on March 05, 2013, 10:42:45 PM

Also: please recall my argument that there are possible countermeasures against this which could be employed once the attack commences. This makes the attack impractical (it will fail) and therefore noone will attempt it. Even without actually implementing the countermeasures beforehand, merely the possibility of implementing them on demand is sufficient to avoid this attack.


can u elaborate on what countermeasures can be taken?  what happened to the Mystery Miner?


Title: Re: What is the incentive to collect transactions?
Post by: molecular on March 06, 2013, 10:35:05 PM

Also: please recall my argument that there are possible countermeasures against this which could be employed once the attack commences. This makes the attack impractical (it will fail) and therefore noone will attempt it. Even without actually implementing the countermeasures beforehand, merely the possibility of implementing them on demand is sufficient to avoid this attack.


can u elaborate on what countermeasures can be taken?  what happened to the Mystery Miner?

Wow, this was a while ago... I cant even remember the thread in which the countermeasures (I guess we're talking about a "0-tx-block" attack) have been discussed.

One idea (the one that stuck in my memory until now) was to reject blocks that contain substantially less transactions than are currently in the set of transaction awaiting a block from the point of view of each node/miner. This would avoid falsely rejecting blocks in cases where a block is found shortly after another one and so there are no (or a low number of) transactions or in cases where there are no or not many transaction for other reasons.


Title: Re: What is the incentive to collect transactions?
Post by: deepceleron on March 06, 2013, 11:23:44 PM
This undead thread is fundamentally flawed in any and all assumptions that are being made as a basis of argument.

1:

Adding transactions to the block you're working on will slow down your generation rate. What prevents the majority of generating nodes from ignoring broadcasted transactions and making the network unreliable?

Theymos made an incorrect assumption, hash rate is in no way affected by the inclusion or non-inclusion of transactions, there is no advantage to not including transactions. There may have been a very small bit of CPU used in the CPU solo mining days when creating a new merkle tree when a new transaction was received, but these days where multiple pools have over 4TH, the number of included transactions in no way impacts the hashing that miners are doing - they don't even know how many transactions are in the block data that is being hashed.

Secondly, even if 50% of the blocks included no transactions, Bitcoin would keep on working. There was already a "mystery miner" that was using a botnet that didn't include transactions, and his 10% of the hashrate was merely a curiosity.

If a bad actor has more than 50% of the hashrate required to deny transaction inclusion on more than half the blocks mined, there is a much bigger problem, as they already have enough hashrate to do a 51% attack and can cause more problems by rewriting block history, double spending and erasing blocks. Bitcoin relies on a majority of mining being good, there is little defense against a majority hashrate attack.

Finally there is no motivation for this. If a pool operator was doing something against the interests of Bitcoin, it would be known and miners would leave. Not including transactions would be passing up considerable earnings.