* 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.
* 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.
* [minor] distribution tweaks
* the 'pantheon:client' project is empty, and results in an empty jar, delete
* clique hard codes a version, delete so the parent takes effect
* clique does not describe it's jar, add description
* evmtools does not describe it's jar, add description.
results in
* clique-1.0.0-SNAPSHOT -> pantheon-clique-0.8.0-RC
* evmtools-0.8.0-SNAPSHOT -> pantheon-evmtools-0.8.0-RC
* client-0.8.0-SNAPSHOT -> *deleted*
* spotless formatting on the gradle file
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.
This commit adds the clique specific implementation of the Miner
executor.
It is responsible for starting a clique mining operation when
requested. It also supplies the functionality to blend vanity data
with validator data etc. in the extra data field.
Responsible for mining a block if the local node address
is a validator, and has not recently mined a block.
This has necessitated a slight rework of helper functions,
and shuffling of tests.