op-geth/core
Jeffrey Wilcke 5b283663b4 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`.
2016-02-18 10:12:13 +01:00
..
state core, core/vm, crypto: fixes for homestead 2016-02-18 10:11:48 +01:00
types core, core/vm, crypto: fixes for homestead 2016-02-18 10:11:48 +01:00
vm core, core/vm, crypto: fixes for homestead 2016-02-18 10:11:48 +01:00
.gitignore Renamed `chain` => `core` 2014-12-04 10:28:02 +01:00
asm.go all: fix license headers one more time 2015-07-23 18:35:11 +02:00
bad_block.go all: fix license headers one more time 2015-07-23 18:35:11 +02:00
bench_test.go parmas, crypto, core, core/vm: homestead consensus protocol changes 2016-02-18 10:08:11 +01:00
block_validator.go core, core/vm, crypto: fixes for homestead 2016-02-18 10:11:48 +01:00
block_validator_test.go cmd, common, core, eth, node, rpc, tests, whisper, xeth: use protocol stacks 2015-11-27 11:06:12 +02:00
blockchain.go core: Added new TD strategy which mitigate the risk for selfish mining 2016-02-18 10:12:13 +01:00
blockchain_test.go eth/filters: pending logs 2016-02-13 13:14:02 +01:00
blocks.go remove 0x 2015-08-20 18:50:47 +02:00
canary.go canary update 2015-08-20 18:38:21 +02:00
chain_makers.go core: fix invalid state reuse in chain maker based tests 2016-01-11 16:53:06 +02:00
chain_makers_test.go core, eth, rpc: split out block validator and state processor 2015-11-18 14:24:42 +01:00
chain_pow.go core: separate and contain POW verifier, extensive tests 2015-09-21 10:24:49 +03:00
chain_pow_test.go core, eth: receipt chain reconstruction 2015-10-19 10:03:09 +03:00
database_util.go core, core/vm, crypto: fixes for homestead 2016-02-18 10:11:48 +01:00
database_util_test.go core, core/vm, crypto: fixes for homestead 2016-02-18 10:11:48 +01:00
default_genesis.go cmd, common, core, eth, node, rpc, tests, whisper, xeth: use protocol stacks 2015-11-27 11:06:12 +02:00
error.go Merge pull request #1889 from karalabe/fast-sync-rebase 2015-10-21 11:44:22 -07:00
events.go eth/filters: pending logs 2016-02-13 13:14:02 +01:00
execution.go core, core/vm, crypto: fixes for homestead 2016-02-18 10:11:48 +01:00
fees.go Merge pull request #1515 from fjl/license-fixes 2015-07-28 04:29:42 -07:00
filter_test.go all: fix license headers one more time 2015-07-23 18:35:11 +02:00
gaspool.go core, eth, rpc: split out block validator and state processor 2015-11-18 14:24:42 +01:00
genesis.go cmd, common, core, eth, node, rpc, tests, whisper, xeth: use protocol stacks 2015-11-27 11:06:12 +02:00
helper_test.go cmd/geth, cmd/utils, core, rpc: renamed to blockchain 2015-10-04 01:13:56 +02:00
state_processor.go parmas, crypto, core, core/vm: homestead consensus protocol changes 2016-02-18 10:08:11 +01:00
state_transition.go core, core/vm, crypto: fixes for homestead 2016-02-18 10:11:48 +01:00
tx_pool.go core, core/vm, crypto: fixes for homestead 2016-02-18 10:11:48 +01:00
tx_pool_test.go core, core/vm, crypto: fixes for homestead 2016-02-18 10:11:48 +01:00
types.go core, eth, rpc: split out block validator and state processor 2015-11-18 14:24:42 +01:00
vm_env.go parmas, crypto, core, core/vm: homestead consensus protocol changes 2016-02-18 10:08:11 +01:00