Bitcoin Forum
November 02, 2024, 04:50:21 PM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Miners Behaving Badly?  (Read 657 times)
BlindMayorBitcorn (OP)
Legendary
*
Offline Offline

Activity: 1260
Merit: 1116



View Profile
March 11, 2016, 08:31:08 PM
 #1

I’ve been reading the RSCoin white paper, Centrally Banked Cryptocurrencies. Beyond its scalability problems, of which I’m grimly aware, the authors mention that recent research suggests that Bitcoin's miners are incentivized to produce blocks without fully validating all the transactions they contain.

Can someone elaborate on this problem?

Forgive my petulance and oft-times, I fear, ill-founded criticisms, and forgive me that I have, by this time, made your eyes and head ache with my long letter. But I cannot forgo hastily the pleasure and pride of thus conversing with you.
AliceWonderMiscreations
Full Member
***
Offline Offline

Activity: 182
Merit: 107


View Profile WWW
March 11, 2016, 09:11:41 PM
 #2

I’ve been reading the RSCoin white paper, Centrally Banked Cryptocurrencies. Beyond its scalability problems, of which I’m grimly aware, the authors mention that recent research suggests that Bitcoin's miners are incentivized to produce blocks without fully validating all the transactions they contain.

Can someone elaborate on this problem?


Well there is no risk to the network because the block will be rejected - the risk is to the miners who lose the block reward if their block is not valid. Bad transactions may be rare enough that it is cheaper for them to take that risk than to validate.

I hereby reserve the right to sometimes be wrong
watashi-kokoto
Sr. Member
****
Offline Offline

Activity: 687
Merit: 269



View Profile
March 11, 2016, 09:36:17 PM
 #3

Bitcoin's miners are incentivized to produce blocks without fully validating all the transactions they contain.

Can someone elaborate on this problem?


Yes, SPV mining allows to mine with just the previous block header. Transactions on the previous block aren't really checked.

Someone could create invalid block and the next miner would shoot self to the foot.

But this attack is useless, because the attacker also mines invalid block, so both attacker and target have same loss.

DannyHamilton
Legendary
*
Offline Offline

Activity: 3472
Merit: 4801



View Profile
March 11, 2016, 09:50:51 PM
 #4

But this attack is useless, because the attacker also mines invalid block, so both attacker and target have same loss.

That depends on:

  • How certain the attacker can be that the victim will mine on the invalid block
  • How much time the victim is likely to take to realize that they are on an invalid block
  • What percent of the global hash power the attacker and victims have

Imagine that an attacker with 26% of the global hashpower can mine an invalid block and trick 50% of the global hashpower to mine on that block until they see a new block.

The attacker can then mine with 52% of the remaining global hash power.  This allows them to mine multiple blocks (and not send them out) until someone in the remaining 48% of the global hash power finally mine a block.  As long as the attacker has secretly mined at least 2 blocks by the time a valid block is solved by someone else, they can release their chain of blocks and get multiple blocks of reward in exchange for the one bad block that they created.

If this happens more than a couple of times, the miners that are not SPV mining will have an incentive to contact the attacker and offer to exchange blocks with them outside the normal network (so that the SPV miners can't see the blocks).  This will allow the tow (or more) of them to mine even more blocks before the SPV miner realizes what has happened.
BlindMayorBitcorn (OP)
Legendary
*
Offline Offline

Activity: 1260
Merit: 1116



View Profile
March 11, 2016, 11:27:44 PM
 #5

Bitcoin's miners are incentivized to produce blocks without fully validating all the transactions they contain.

Can someone elaborate on this problem?


Yes, SPV mining allows to mine with just the previous block header. Transactions on the previous block aren't really checked.

But how is it possible to mine a block without fully validating all the transactions in the first place? Are those transactions still processed?



Bad transactions may be rare enough that it is cheaper for them to take that risk than to validate.
What's a bad transaction?

Forgive my petulance and oft-times, I fear, ill-founded criticisms, and forgive me that I have, by this time, made your eyes and head ache with my long letter. But I cannot forgo hastily the pleasure and pride of thus conversing with you.
AliceWonderMiscreations
Full Member
***
Offline Offline

Activity: 182
Merit: 107


View Profile WWW
March 11, 2016, 11:59:28 PM
 #6

Bitcoin's miners are incentivized to produce blocks without fully validating all the transactions they contain.

Can someone elaborate on this problem?


Yes, SPV mining allows to mine with just the previous block header. Transactions on the previous block aren't really checked.

But how is it possible to mine a block without fully validating all the transactions in the first place? Are those transactions still processed?



Bad transactions may be rare enough that it is cheaper for them to take that risk than to validate.
What's a bad transaction?

A transaction that isn't balanced, uses inputs that have already been spent, or is otherwise malformed and doesn't meet the rules.

You include one of those in your block and your block will not be accepted by clients, and any blocks after it will not be accepted by clients.

Maybe accepted by light clients, but not by full clients. Run a full validating client to prevent such blocks from being accepted by your client and you are safe.

Don't run a full validating client and yes, this is one of many GIGO attacks you are vulnerable to.

I hereby reserve the right to sometimes be wrong
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!