Each block in the blockchain contains a pointer to the previous block (block header). If multiple blocks reference certain block as their parent, only the one that is part of longest chain is accepted.

Suppose that the hash of the current blockchain tip (last block) is 'A'. Two miner concurrently works on new blocks (containing different transactions) referring to A as a parent. Is it necessary for the slower miner to reset his work when faster miner finishes his block (with hash 'B') and broadcasts it, because the next block has to reference 'B' instead of 'A' as a parent?

If this principle holds, does it mean that slower miners have to restart their work more frequently because they are outrun by faster miners who publish their blocks and so change the blockchain tip?

  • Slower miners and faster miners have to restart their work just as often -- every time a block is found. – David Schwartz Jan 21 '15 at 10:26

Correct: when block B is broadcast and validated, all miners need to construct new blocks containing a hash of block B's header.

However, it takes only a minuscule amount of computer processing time to construct a new block, so there is effectively no such thing as "restarting work". Mining is specifically designed to be progress-free: you have the same chance of finding a valid block after a millisecond of work as you do after an hour of work.

Progress-free mining means that a miner with x hash rate should produce n blocks over time, and a miner with 2x hash rate should produce 2n blocks over time---there should be no special advantage to the more powerful miner.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.