* 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
* update back-references more aggressively after answering from cache (#7578)
* Add new EF ropstens nodes. (#7824)
* Add new EF ropstens nodes.
* Fix tests
* Add a timeout for light client sync requests (#7848)
* Add a timeout for light client sync requests
* Adjusting timeout to number of headers
* Flush keyfiles. Resolves#7632 (#7868)
* Fix wallet import (#7873)
* rpc: generate new account id for imported wallets
* ethstore: handle duplicate wallet filenames
* ethstore: simplify deduplication of wallet file names
* ethstore: do not dedup wallet filenames on update
* ethstore: fix minor grumbles
* [WASM] mem_cmp added to the Wasm runtime (#7539)
* mem_cmp added to the Wasm runtime
* schedule.wasm.mem_copy to schedule.wasm.mem_cmp for mem_cmp
* [Wasm] memcmp fix and test added (#7590)
* [Wasm] memcmp fix and test added
* [Wasm] use reqrep_test! macro for memcmp test
* wasmi interpreter (#7796)
* adjust storage update evm-style (#7812)
* disable internal memory (#7842)
* 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