Bitcoin Forum
November 19, 2024, 05:18:19 PM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 [2]  All
  Print  
Author Topic: Fake block timestamps can cause a temporary fork?  (Read 2372 times)
DannyHamilton
Legendary
*
Offline Offline

Activity: 3486
Merit: 4851



View Profile
January 19, 2015, 12:04:35 AM
 #21

- snip -
If successful, it would split miner resources and cause the next block to be mined at half speed.
- snip -
No, it wouldn't cause the next block to be mined at half speed.
I think he means if a 1 block fork was in fact generated
and split the network 50/50...

I am aware that is what he meant.

Then in that case, I think it would cause the next block to be mined at half speed.

No.

Imagine rolling dice. I give 1 person 2 dice and ask them to roll the dice once per second until they roll at least one '6'. Will it take twice as long (half the speed), if I instead "split the network" and give two people each 1 die, asking then to roll their die once per second until either one of them roll at least one '6'?

Same number of total dice, same target, same average time to success.

With bitcoin: Same total hashes per second, same target hash value, same average time between blocks.
jonald_fyookball
Legendary
*
Offline Offline

Activity: 1302
Merit: 1008


Core dev leaves me neg feedback #abuse #political


View Profile
January 19, 2015, 02:24:28 AM
 #22

you're right... was somehow thinking that only Segment "A" would
be the one to successfully extend the chain.  Not sure why I
had that in my head.  Tongue

tonych (OP)
Legendary
*
Offline Offline

Activity: 965
Merit: 1033


View Profile WWW
January 19, 2015, 08:12:39 AM
 #23

I like the dice example, there is one small difference though.
If the controversial block was block number 1001 then the miners who initially rejected it (segment B) will continue working on another version of block 1001 while the miners who accepted it will switch to block 1002. That means, for segment B to win, it'll have to produce 2 blocks (1001 and 1002) faster than equally powerful segment A produces one block 1002. This probability is low, and segment B is probably wasting its resources.

There is no long term damage anyway.


Simplicity is beauty
DannyHamilton
Legendary
*
Offline Offline

Activity: 3486
Merit: 4851



View Profile
January 19, 2015, 08:43:45 AM
 #24

I like the dice example, there is one small difference though.
If the controversial block was block number 1001 then the miners who initially rejected it (segment B) will continue working on another version of block 1001 while the miners who accepted it will switch to block 1002. That means, for segment B to win, it'll have to produce 2 blocks (1001 and 1002) faster than equally powerful segment A produces one block 1002. This probability is low, and segment B is probably wasting its resources.

There is no long term damage anyway.

If there isn't a second block solved within a few seconds of the first block being broadcast, then within a few seconds nearly all nodes will be within the 2 hour time limit and will accept the new block 1001.  The only way that the network will "split" is if during that small window of time in which some nodes see the new block timestamp as more than 2 hours in the future, another block is broadcast.
gmannnnn
Member
**
Offline Offline

Activity: 78
Merit: 10


View Profile
January 19, 2015, 11:12:47 AM
 #25

Every block includes a timestamp as set by the miner who mined the block. There is a rule that other nodes reject the block if its timestamp is more than 2 hours in the future. It is a hard limit: if the timestamp is 2:00:01 in the future relative to node time, the node rejects it; if it's only 1:59:59 in the future, the node accepts it.

What happens if a miner finds a block and sets its timestamp exactly 2 hours in the future relative to some accurate time source? Since the clocks of all other nodes are never perfectly synchronized and distributed somewhere around the true time, I would expect that approximately half of the nodes (whose clock is slightly ahead of the true time) accept the block, while the other half will reject and forget it. Half of the miners will accept the block and start building a new block on top of it (with half of the original hash power), the other half will continue working on the previous block. We've got a blockchain fork caused by misbehavior of just one node. One of the two forks will eventually win but, before that, transaction confirmations might be delayed. Did I get anything wrong?

I think when designing a distributed consensus system, such as Bitcoin, one should be cautious about making a decision based on node time. Node time is different at different nodes and this a source of disagreement that potentially destroys consensus. Hopefully just temporarily.



there is a very strong incentive to keep the time relatively precise and well within the two hour timeframe.
Peter Todd
Legendary
*
expert
Offline Offline

Activity: 1120
Merit: 1160


View Profile
January 19, 2015, 06:40:39 PM
Merited by gmaxwell (1)
 #26

Why would a miner want only half the network to build on their block?

That makes no sense... what is the +2hr timestamp miner trying to accomplish?


It's been known for awhile now that if a miner wishes to find more blocks than their competition - equally get more fees - they have no incentive to broadcast their blocks to more than ~30% of the hashing power. Re-deriving that number from first principles is a nice exercise in applying some basic highschool math to miner incentives. The well-known selfish mining is another example of this principle, albeit in a more advanced - active - context.

Gavin Andresen
Legendary
*
qt
Offline Offline

Activity: 1652
Merit: 2301


Chief Scientist


View Profile WWW
January 19, 2015, 11:12:00 PM
 #27

Why would a miner want only half the network to build on their block?

That makes no sense... what is the +2hr timestamp miner trying to accomplish?


It would create a temporary fork and perhaps some confusion. Maybe even break some badly coded bitcoin applications if they do not handle forks well.

No, it really wouldn't, any more than a business-as-usual temporary blockchain race/fork creates confusion or breaks applications. Like the one-block fork we had today.

How often do you get the chance to work on a potentially world-changing project?
jonald_fyookball
Legendary
*
Offline Offline

Activity: 1302
Merit: 1008


Core dev leaves me neg feedback #abuse #political


View Profile
January 20, 2015, 12:12:52 AM
 #28

Why would a miner want only half the network to build on their block?

That makes no sense... what is the +2hr timestamp miner trying to accomplish?


It would create a temporary fork and perhaps some confusion. Maybe even break some badly coded bitcoin applications if they do not handle forks well.

No, it really wouldn't, any more than a business-as-usual temporary blockchain race/fork creates confusion or breaks applications. Like the one-block fork we had today.

I wonder if this report is only orphaned blocks that blockchain's nodes had to abandon, or if they are receiving external data to augment this.

Pages: « 1 [2]  All
  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!