* only accept the highest finalized slot from peers
* use best peer for state requests
* peer id
* rem old tests
* req peers tests pass
* warn level support for peer not having the same protocol
* pretty
* best peer
* comments
* req peers done
* tests passing
* fully functional
* enforce receiving from the best peer
* comments
* lint fixes
* refactor initial sync to prevent reorg infinite loops
* lint
* fixed build
* passing tests
* tests passing
* terence suggestion
* new attempt
* clean up and refactor sync service
* complete the new initial sync logic
* revert head
* init sync working
* config for blockchain receive block
* all works
* builds
* fix a few more tests
* init sync tests pass
* revert scripts
* revert accounts changes
* lint
* lint2
* travis lint
* fix build
* fix single use argument
* any peer
* imports spacing
* imports
* ready for a rolling restart
* add todo
* fork choice in blocks when exiting sync
* readd finalized state root to requests
* successful build
* revert blockchain config
* old config reversion
* initial sync tests pass
* initial sync full test works
* lint
* use the new block processing api
* new proto defs
* init sync functions again
* remove sync polling
* tests fixed
* fixed catching up with chain
* tests pass
* spacing
* lint
* goimports
* add changes
* add lock and conditional to prevent multiple goroutines
* make reg sync synchronous
* add
* fixed the parent block issue
* fix errors in chain service
* tests pass
* check nil block
* typo
* fix nil state
* merge & conflicts
* revert synchronus reg sync
* add more spans to state db
* fix lint
* lint