The Dirk accountmanager was using a local scatter/gather concurrency
method to obtain wallets, however this uses the parallelism of the Vouch
server rather than the Dirk server. This chnages the Dirk
accountmanager to use a configuration value to select the concurrency
level.
This also standardizes the use of process concurency to allow for
hierarchical definition of the value.
Specification imports for phase0 were aliased as 'spec'. Due to the
mechanism decided upon to manage structs that vary beteween hard forks
this is no longer useful, so this removes the alias in preparation for
the Altair hard fork.
When a chain reorganisation occurs it is possible that this impacts
Vouch's attestations and proposals for the current and next epoch. This
patch listens to the Ethereum 2 events stream for reorganisation
notifications. If it finds one it cancels existing and creates new
duties, as required.
The "best" aggregate attestation strategy obtains aggregate attestations
from all listed nodes, scores them according to their attestation
coverage, and signs and broadcasts the one with the highest coverage.
The "first" aggregate attestation strategy signs and broadcasts the
first aggregate attestation returned from all listed nodes.
Situation reported where a node returns nil for a beacon block when
scoring attestation data. Although this should not happen (the provider
told us about the block via the attestation, it should know it) this
patch covers the situation where the returned block is empty or
malformed.
Fixes#9