* Introduce ProtocolScheduleBuilder and use it for Clique, MainNet, IBFT and dev.
* Remove default milestone blocks and simplify MainnetProtocolSchedule. All milestone blocks must now be defined in the genesis file (previously ethash chains would get Mainnet milestone blocks by default).
* Make GenesisConfigFile responsible for handling all the content in the genesis config file and rename GenesisConfig to GenesisState as it is now just responsible for creating the initial state at genesis.
* In CliqueProtocolController, pass the network ID to EthProtocolManager instead of the chain ID and use downloader parallelism setting instead of network ID for the number of threads.
* Fix corner case where Memory did not clear target destination if the new bytes to set was empty.
* Use BytesValue.EMPTY instead of Bytes32.EMPTY to make it clear that it's a 0 length BytesValues rather than 32 bytes of zeross.
* Treat outputLength for call operations as a maximum length - when the actual data to output is shorter than outputLength, do not zero out the tail end of the memory range.
* Introduce classes to wrap JSON config instead of accessing it directly in multiple places.
* Fix discrepancy in how CliqueProtocolSchedule and CliquePantheonController loaded the block period configuration.
* EthGetWork Added with Unit and acceptance tests
* EthGetWork Added with Unit and acceptance tests
* EthGetWork Added with Unit and acceptance tests
* EthGetWork Added with Unit and acceptance tests
Debugged
* EthGetWork Added with Unit and acceptance tests
Debugged
Change Requests Actioned
* [NC-1752] Delegate calls to getOriginalAccount all the way to the actual store. Ensures we get the actual original value even when updaters are nested due to nested calls.
* Upgrade ethereum reference tests to include the new sstore tests.
* Upgrade ethereum reference tests
* Add support for sealEngine: NoProof by skipping PoW validation for ommer headers as well. Production code continues to always use full validation for ommers.
* Add Constantinople to reference test schedules ready for when we enable Constantinople tests.
* Blacklist the new reference tests that are failing while we investigate them.
On the transition to the EthHash/Clique Mining Coordinator a change
was lost whereby the EthHashMiningCoordinator is to capture the
current Hashrate on cancellation of a mining operation.
* [NC-1685] Fix BlockHashOperation so it handles blocks being added on forks and gets the hash of the block at the requested number on that fork rather than on the current canonical chain.
* [NC-1644] Cache block hashes across all transactions in a block.
The MiningCoordinator has been split into common, and ethhash
specific funcationality.
This adversely affects the JSON RPC, in that all mining related
RPCs are now generic based on the type of miner being used.
The EthHashMinerExecutor is comprised of both EthHash specific
functions as well as common functions which will be useful to other
consensus mechanisms.
As such the common functionality has been extracted to a parent class,
leaving ethhash specific functionality in the child.
The EthHashBlockMiner contains both the generic mining capabilities
and the EthHash JSON specific API.
The generic capabilities have been extracted into a base class which
can be reused for Clique (or other) consensus mechanisms.