core: Added new TD strategy which mitigate the risk for selfish mining

Assuming the following scenario where a miner has 15% of all hashing
power and the ability to exert a moderate control over the network to
the point where if the attacker sees a message A, it can't stop A from
propagating, but what it **can** do is send a message B and ensure that
most nodes see B before A. The attacker can then selfish mine and
augment selfish mining strategy by giving his own blocks an advantage.

This change makes the time at which a block is received less relevant
and so the level of control an attacker has over the network no longer
makes a difference.

This change changes the current td algorithm `B_td > C_td` to the new
algorithm `B_td > C_td || B_td == C_td && rnd < 0.5`.
This commit is contained in:
Jeffrey Wilcke
2016-01-12 11:54:29 +01:00
parent b6d88a0e9f
commit 5b283663b4
2 changed files with 17 additions and 6 deletions

View File

@ -44,6 +44,9 @@ var (
"TRANSCT__RandomByteAtTheEnd",
"BLOCK__ZeroByteAtTheEnd",
"TRANSCT__ZeroByteAtTheEnd",
"ChainAtoChainB_blockorder2",
"ChainAtoChainB_blockorder1",
}
/* Go client does not support transaction (account) nonces above 2^64. This