* ECIP 1041 - Remove Difficulty Bomb (#7905)
Enable difficulty bomb defusion at block:
- 5900000 on Ethereum Classic mainnet,
- 2300000 on morden testnet.
Reference:
https://github.com/ethereumproject/ECIPs/blob/master/ECIPs/ECIP-1041.md
* spec: Validate required divisor fields are not 0 (#7933)
* Add validate_non_zero function
It's used to validate that a Spec's uint field used as a divisor is not zero.
* Add deserialize_with to gas_limit_bound_divisor
Prevents panics due to divide-by-zero on the gas_limit_bound_divisor
field.
* Add deserialize_with to difficulty_bound_divisor
Prevents panics due to divide-by-zero on the difficulty_bound_divisor
field.
* Add validate_optional_non_zero function
Used to validate Option<Uint> divisor fields.
* Use deserialize_with on optional divisor fields.
* Add #[serde(default)] attribute to divisor fields
When using `#[serde(deserialize_with)]`, `#[serde(default)]` must be specified so that missing
fields can be deserialized with the deserializer for `None`.
* Kovan WASM fork code (#7849)
* kovan fork code
* introduce ethcore level vm_factory and let it fail
* fix json tests
* wasmcosts as option
* review changes
* wasm costs in parser
* fix evm tests
* review fixes
* fix test
* remove redundant json field
* move common forks and parameters to common params
* port specs over to new format
* fix RPC tests
* parity-machine skeleton
* remove block type
* extract out ethereum-specific methods into EthereumMachine
* beginning to integrate Machine into engines. dealing with stale transitions in Ethash
* initial porting to machine
* move block reward back into engine
* abstract block reward logic
* move last hash and DAO HF logic into machine
* begin making engine function parameters generic
* abstract epoch verifier and ethash block reward logic
* instantiate special ethereummachine for ethash in spec
* optional full verification in verify_block_family
* re-instate tx_filter in a way that works for all engines
* fix warnings
* fix most tests, further generalize engine trait
* uncomment nullengine, get ethcore tests compiling
* fix warnings
* update a bunch of specs
* re-enable engine signer, validator set, and transition handler
* migrate basic_authority engine
* move last hashes into executedblock
* port tendermint
* make all ethcore tests pass
* json-tests compilation
* fix RPC tests: change in gas limit for new block changed PoW hash
* fix minor grumbles
* validate chainspecs
* fix broken import
* fix transaction verification for pre-homestead
* Ethereum Classic Monetary Policy
Create a new parameter `ecip1017EraRounds`. When the block number
passes one era rounds, the reward is reduced by 20%.
See https://github.com/ethereumproject/ECIPs/blob/master/ECIPs/ECIP-1017.md
* Update rewards for uncle miners for ECIP1017
In the monetary policy, the rewards are changed from "up to 7/8 of the
reward" to "1/32 of the reward".
* Fix an off-by-one error in ECIP1017 era calculation
According to
https://github.com/ethereumproject/ECIPs/blob/master/ECIPs/ECIP-1017.md,
when in block number 5,000,000, it should still be in Era 1 (which in
our code `era == 0`). So we need to check whether the `rem` equals to
zero and act accordingly when calculating the era.
* `ecip1017_era_rounds` missing from EthashParams when run in build bot
* strip out ecip1017_eras_block_reward function and add unit test
* The front-end for each hard-fork, also EIP-160.
* Address EIP161 a/c
* Include EIP-161b
* EIP-161 part d.
* Fix test build.
* Fix one test, add another.
* Fix use of bloom & renaming.
* Initial groundwork for EIP-155
* Fix minor bug.
* Fix all tests finally.
* Rest of EIP-155.
* Add tests for EIP-155 algorithm.
Update transaction tests validation.
* Minor reformat.
* Address grumbles.
* Remove unused code.
* Fix SUICIDE gas mechanism and add consensus tests.
* Remove commented code.
* Set Frontier hardfork block number
* Fix warning.
* Transaction tests,
* Add Ethereum Classic support
(Rename homestead-dogmatic -> classic)
* Additional change needed.
* More needed changes.
* Separate database path for known forks.
* Address minor grumble.