Pages:
Author

Topic: Again, a block with 0 transactions is accepted - page 2. (Read 4410 times)

sr. member
Activity: 252
Merit: 250
BTW somebody figures out how to poll the apis of blockexplorer.com / blockchain.info to get the list of blocks with only the generation TX?
sr. member
Activity: 252
Merit: 250
Not a big deal, really.

It depends on how often they become.

Nevertheless, I think this is a weakness of the protocol.
sr. member
Activity: 252
Merit: 250
I'm becoming too old. I remember this exact discussion and proposed solutions when so called mystery miner gained significant percentage of the hash power and did not included any transactions besides the coinbase. The exact same discussion.

https://bitcointalk.org/index.php?topic=67634.20
There were more topics. Not sure if this is THE one.

Thanks for the tip. Not everbody here are "becoming" as old as you  Cheesy and these appointments are useful.
legendary
Activity: 2618
Merit: 1253
Mining yourself is not an option. You have no chance against the pools. The only thing everybody can do and should do is to establish a relay policy for blocks. Each miner (pool) is free to include whatever he wants but each node operator is free as well to relay whatever he wants. Without a relay policy you hand over to much power to the pools. The miners get a lot of money for doing their work. Part of this work is to include transactions. If miners act against my interest and do not include transactions I will not relay their blocks.
legendary
Activity: 1400
Merit: 1009
tl;dr

How about if you don't like what some miners are doing with regards to block creation, then start mining yourself so that you can enforce your own policy for which transactions get included in a block?
legendary
Activity: 1078
Merit: 1002
100 satoshis -> ISO code
How about instead of rejecting the block when it doesn't have at least 50% of the unconfirmed transactions you know of, you just don't relay it?

Can of worms there. You would have a solved block discarded which contains dozens of transactions which people have been waiting on for a confirmation? Also, a spammer could immediately cripple the network by generating loads of new transactions. A few weeks ago I saw over 12,000 unconfirmed on blockchain.info, most were not legitimate. Only 2400 (on average) fit into the current block limit.
legendary
Activity: 2618
Merit: 1253
It's simple: A miner is free to include any transaction he wants. I'm operating a few well connected nodes. I'm free to not relay blocks that do not contain at least a minimum amount of transactions until the next block is found. I patched my clients to prevent relaying those blocks to give miners an incentive to include transactions. I do not relay the last block in the chain when I have a certain amount of open transactions in my pool, the block is the last block and the block included a much lower number of transactions than my pool when I first saw it.

Maybe we should include this feature into the official client to give miners an incentive to include transactions?!
sr. member
Activity: 359
Merit: 250
Of course miners that mine empty blocks delays transactions.
They might be not affecting average block time, but they affect average 'block with transactions' time and that matters.

Do we have at least one empty block every 2016 blocks (probably yes)? If yes then such miners delay transactions all the time.
member
Activity: 63
Merit: 10
Vires in Numeris
I think DannyHamilton is right. If a non-empty block is mined right now, then the time distance from now until the next non-empty block is (which will include your transaction), on average, 10 minutes. If an empty block is found in between, then it's still 10 minutes.

If a miner has just mined a block which includes your transaction, and is about to broadcast it, but then it receives an empty block, it doesn't say "Oh dang. Someone found a block. Now I have to wait another ten minutes until I'l allowed to mine another block. Better shut off the ASICs until then so I don't waste electricity" No. It just keeps on mining and will mine a block with your transaction much sooner than that (on average, because it's already been mining for a while).
member
Activity: 63
Merit: 10
Vires in Numeris
How about instead of rejecting the block when it doesn't have at least 50% of the unconfirmed transactions you know of, you just don't relay it? Then you don't need 51% of the network to follow this new rule. Also, this rule may vary from node to node. Some nodes might have a ton of unconfirmed transactions they know about, so they reject a certain block that contains just under 50% of them, but the other nodes don't know about as many of those transactions, so they accept the block. (This is rather rare, though. The amount of unconfirmed transactions that each node knows about should equalize as transactions propagate) Those nodes could then fork the blockchain. Having it accept but just not relay those problematic blocks would solve that problem.
legendary
Activity: 3416
Merit: 4658
Quote
The only adverse affect that a miner working on empty blocks has on the network, is to increase the mining difficulty at the next adjustment (or keep in increased to the same level that he did during a previous difficulty adjustment).

If new rules force the miner to include transactions rather than forcing him to leave the network, then they have zero effect on difficulty, while they do have an effect on first confirmations. Do you disagree with that?

There is already a financial incentive for the miner to include transactions.  If the miner is choosing to earn less money so they can create "empty" blocks, then they have a specific reason that they choose to mine "empty" blocks.  If the miner specifically wants to earn less money and mine "empty" blocks, and you change the rules so they have to include transactions, don't you think they are more likely to simply quit mining?

Furthermore, in your example, the only way the miner affects the time of first confirmation is by adjusting the difficulty at the previous adjustment (to increase the time of first confirmation), and then adding additional hashing power to first confirmations during the current difficulty (assuming they continue mining without "empty" blocks.
hero member
Activity: 714
Merit: 500
Martijn Meijering
I think maybe the issue some of are having in agreeing on the effect is that some of you are comparing a miner who solves an "empty" block to that same miner solving a block with transactions in it, whereas I'm comparing a miner (or botnet) solving an "empty" block to that same miner (or botnet) not participating in mining at all due to restrictions designed to prevent "empty" blocks.

If we aren't comparing the same thing, then obviously we aren't going to com to the same conclusion.

Yeah, it looks that way.

Quote
The other thing to keep in mind, is that if that miner (who solved an "empty" block) had been working on a block that had transactions, then the nonce he found (by working on the "empty" block) wouldn't have been a valid nonce for the block with transactions.  Therefore, you can't really compare that miner working on a "full" block vs. that same miner working on an "empty" block, since the more realistic comparison would be that miner solving that "empty" block vs. some other miner solving a "full" block later.

Sure, the nonce would be different, but why does that matter? Empty blocks aren't easier to solve than non-empty ones.

Quote
The only adverse affect that a miner working on empty blocks has on the network, is to increase the mining difficulty at the next adjustment (or keep in increased to the same level that he did during a previous difficulty adjustment).

If new rules force the miner to include transactions rather than forcing him to leave the network, then they have zero effect on difficulty, while they do have an effect on first confirmations. Do you disagree with that?
legendary
Activity: 1862
Merit: 1011
Reverse engineer from time to time
You really need to re-read the Bitcoin protocol.

The other thing to keep in mind, is that if that miner (who solved an "empty" block) had been working on a block that had transactions, then the nonce he found (by working on the "empty" block) wouldn't have been a valid nonce for the block with transactions.  Therefore, you can't really compare that miner working on a "full" block vs. that same miner working on an "empty" block, since the more realistic comparison would be that miner solving that "empty" block vs. some other miner solving a "full" block later.

As do you, along with some studies in probability and randomness.  Assuming that we are both talking about the same thing here, I'm pretty confident in what I'm saying.  I suspect that our disagreement stems from each of us discussing a different scenario without realizing it.  Otherwise, you need to re-think what you are trying to say.
Obviously a block with transactions and a block without transactions will have different merkle roots. The merkle root changes very often.
legendary
Activity: 3416
Merit: 4658
You really need to re-read the Bitcoin protocol.

As do you, along with some studies in probability and randomness.  Assuming that we are both talking about the same thing here, I'm pretty confident in what I'm saying.  I suspect that our disagreement stems from each of us discussing a different scenario without realizing it.  Otherwise, you may need to re-think what you are trying to say.
legendary
Activity: 3416
Merit: 4658
What a "0 transaction miner" does do is affect the future difficulty adjustment.

How so? The difficulty adjustment depends on the time it took to produce the latest 2016 blocks, not the latest 2016 non-empty blocks, doesn't it? If total hashing power stays constant, a decision to switch from including transactions to producing empty blocks shouldn't have any influence on difficulty, should it?

I think maybe the issue some of are having in agreeing on the effect is that some of you are comparing a miner who solves an "empty" block to that same miner solving a block with transactions in it, whereas I'm comparing a miner (or botnet) solving an "empty" block to that same miner (or botnet) not participating in mining at all due to restrictions designed to prevent "empty" blocks.

If we aren't comparing the same thing, then obviously we aren't going to com to the same conclusion.

The other thing to keep in mind, is that if that miner (who solved an "empty" block) had been working on a block that had transactions, then the nonce he found (by working on the "empty" block) wouldn't have been a valid nonce for the block with transactions.  Therefore, you can't really compare that miner working on a "full" block vs. that same miner working on an "empty" block, since the more realistic comparison would be that miner solving that "empty" block vs. some other miner solving a "full" block later.

The only adverse affect that a miner working on empty blocks has on the network, is to increase the mining difficulty at the next adjustment (or keep in increased to the same level that he did during a previous difficulty adjustment).
legendary
Activity: 1862
Merit: 1011
Reverse engineer from time to time
If they are contributing a significant amount of hash power, then they will increase the difficulty at the next difficulty adjustment.  This could delay those future transactions after the difficulty adjsutment, but at the current difficulty, they are not significantly delaying anything (no more than a fraction of a second).

I'm not talking about additional hashing power. Assume hashing power remains constant over time. On average a block is found every ten minutes. Some percentage of these block is empty. If it is 50%, we get a non-empty block every twenty minutes. If it is 0%, then we get a non-empty block every ten minutes. Empty blocks still add confirmations for transactions that are already in the block chain, but they add no first confirmations. Doesn't it follow that first confirmations are delayed even though block creation isn't?

It depends on how much hashing power they are providing and how long they've been providing that much hashing power.

Using your 50% empty blocks.  If 1,008 of the blocks broadcast prior to the last difficulty adjustment were from the miner who is solving "empty" blocks, then the difficulty would adjust such that the rest of the network would only solve a block on average every 20 minutes for the next 2,016 blocks.  This 20 minutes for a FIRST confirmation would exist even if the miner who was solving "empty" blocks stopped mining immediately after the adjustment.  The 20 minutes for a FIRST confirmation would exist even if the miner who was solving "empty" blocks suddenly doubled his hash power immediately after the adjustment (and there for started broadcasting 66% of the solved blocks).
You really need to re-read the Bitcoin protocol. Anyway, what you are describing is an attack whereby a miner with a lot of hashing power suddenly stops mining before the next difficulty adjustment, at which point when the new difficulty comes(which will be higher depending on the hashing power) then yes, it will be sort of as you say, but we aren't talking about that.
legendary
Activity: 3416
Merit: 4658
If they are contributing a significant amount of hash power, then they will increase the difficulty at the next difficulty adjustment.  This could delay those future transactions after the difficulty adjsutment, but at the current difficulty, they are not significantly delaying anything (no more than a fraction of a second).

I'm not talking about additional hashing power. Assume hashing power remains constant over time. On average a block is found every ten minutes. Some percentage of these block is empty. If it is 50%, we get a non-empty block every twenty minutes. If it is 0%, then we get a non-empty block every ten minutes. Empty blocks still add confirmations for transactions that are already in the block chain, but they add no first confirmations. Doesn't it follow that first confirmations are delayed even though block creation isn't?

It depends on how much hashing power they are providing and how long they've been providing that much hashing power.

Using your 50% empty blocks.  If 1,008 of the blocks broadcast prior to the last difficulty adjustment were from the miner who is solving "empty" blocks, then the difficulty would adjust such that the rest of the network would only solve a block on average every 20 minutes for the next 2,016 blocks.  This 20 minutes for a FIRST confirmation would exist even if the miner who was solving "empty" blocks stopped mining immediately after the adjustment.  The 20 minutes for a FIRST confirmation would exist even if the miner who was solving "empty" blocks suddenly doubled his hash power immediately after the adjustment (and there for started broadcasting 66% of the solved blocks).
hero member
Activity: 714
Merit: 500
Martijn Meijering
What a "0 transaction miner" does do is affect the future difficulty adjustment.

How so? The difficulty adjustment depends on the time it took to produce the latest 2016 blocks, not the latest 2016 non-empty blocks, doesn't it? If total hashing power stays constant, a decision to switch from including transactions to producing empty blocks shouldn't have any influence on difficulty, should it?
legendary
Activity: 1862
Merit: 1011
Reverse engineer from time to time
While variance plays a huge role here, if we accept that a miner mines a block with only a coinbase tx, a user would need wait up to 10 more minutes, of course this means the miner of the next block needs to add include the said TX.
I keep telling you that this isn't true.  I'm not sure how else to explain it.  What a "0 transaction miner" does do is affect the future difficulty adjustment.  This can delay the FIRST confirmation for future transactions after the next difficulty adjustment, by increasing the difficulty.  It does not increase the amount of time for a FIRST confirmation at the current difficulty as compared to that "0 transaction miner" choosing not to participate in mining.
And I keep telling you that you are wrong. A miner that mines only the coinbase tx still moves the blocks and doesn't delay the difficulty adjustment at all. Difficulty is adjusted every 2016 blocks.
legendary
Activity: 3416
Merit: 4658
While variance plays a huge role here, if we accept that a miner mines a block with only a coinbase tx, a user would need wait up to 10 more minutes, of course this means the miner of the next block needs to add include the said TX.
I keep telling you that this isn't true.  I'm not sure how else to explain it.  What a "0 transaction miner" does do is affect the future difficulty adjustment.  This can delay the FIRST confirmation for future transactions after the next difficulty adjustment, by increasing the difficulty.  It does not increase the amount of time for a FIRST confirmation at the current difficulty as compared to that "0 transaction miner" choosing not to participate in mining.
Pages:
Jump to: