* Prevent duplicate parent block lookups
* Updates logic for handling re-status'd peers
* Allow block lookup if the block is close to head
* Correct ordering of sync logs
* Remove comments in block processer, clean up sim
* Address compiler warning
* Prune abandoned fork choice forks
* New approach to pruning
* Wrap some block hashes in a newtype pattern
For increased type safety.
* Add Graphviz chain dump emitter for debugging
* Fix broken test case
* Make prunes_abandoned_forks use real DiskStore
* Mark finalized blocks in the GraphViz output
* Refine debug stringification of Slot and Epoch
Before this commit: print!("{:?}", Slot(123)) == "Slot(\n123\n)".
After this commit: print!("{:?", Slot(123)) == "Slot(123)".
* Simplify build_block()
* Rewrite test case using more composable test primitives
* Working rewritten test case
* Tighten fork prunning test checks
* Add another pruning test case
* Bugfix: Finalized blocks weren't always properly detected
* Pruning: Add pruning_does_not_touch_blocks_prior_to_finalization test case
* Tighten pruning tests: check if heads are tracked properly
* Add a failing test case for a buggy scenario
* Change name of function to a more accurate one
* Fix failing test case
* Test case: Were skipped slots' states pruned?
* Style fix: Simplify dereferencing
* Tighten pruning tests: check if abandoned states are deleted
* Towards atomicity of db ops
* Correct typo
* Prune also skipped slots' states
* New logic for handling skipped states
* Make skipped slots test pass
* Post conflict resolution fixes
* Formatting fixes
* Tests passing
* Block hashes in Graphviz node labels
* Removed unused changes
* Fix bug with states having < SlotsPerHistoricalRoot roots
* Consolidate State/BlockRootsIterator for pruning
* Address review feedback
* Fix a bug in pruning tests
* Detach prune_abandoned_forks() from its object
* Move migrate.rs from store to beacon_chain
* Move forks pruning onto a background thread
* Bugfix: Heads weren't pruned when prune set contained only the head
* Rename: freeze_to_state() -> process_finalization()
* Eliminate redundant function parameter
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
* Add progress on new deposits
* Add deposited command to account manager
* Remove old lcli::helpers mod
* Clean clap_utils
* Refactor lcli deposit contract commands to use IPC
* Make testnet optional for environment
* Use dbg formatting for deploy address
* Add command to generate bootnode enr
* Ensure lcli returns with 1 on error
* Ensure account manager returns 1 on error
* Disallow deposits to the zero address
* Update web3 in eth1 crate
* Ensure correct lighthouse dir is created
* Reduce deposit gas requirement
* Update cargo.lock
* Add progress on new deposits
* Add deposited command to account manager
* Remove old lcli::helpers mod
* Clean clap_utils
* Refactor lcli deposit contract commands to use IPC
* Add command to generate bootnode enr
* Ensure lcli returns with 1 on error
* Ensure account manager returns 1 on error
* Update web3 in eth1 crate
* Update Cargo.lock
* Move lcli out of main install script
* Change --limit to --at-least
* Change --datadir to --validator-dir
* Remove duplication in docs
* notes from call
* should_forward function
* should_forward_block cleanup
* some cleanup and notes
* complete draft
* corrections
* some cleanup
* ran cargo fmt
* Revert "ran cargo fmt"
This reverts commit 464a5c4b62401c68fff7d36d3cd8069560a57713.
* ran cargo fmt after updating
* proposer index mods
* fmt
* new way of reading state
* fmt
* fmt
* compiles again
* fmt
* Correct stream timeout delay queue handling
* Correct small typo
* Support BlocksByRange step parameter
* Add initial docs to syncing
* Initial start of naive-attestation-aggregation
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Temp commit
* Shift gossipsup decoding in eth2_libp2p
* Shifts block encoding/decoding into RPC
* Progress on attestation service
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Address reviewers suggestions
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Register SSZ snappy protocol messages
* Add initial idea of snappy compressed Codec by replacing the UVI codec with the snap library
* Fix matching against protocol string
* Adds TODOs for implementation work
* Implements check against max packet size before attempting to decode snappy compressed packages
* Add ssz_snappy codec
* Adds necessary validator subscription functionality
* Progress on snappy codec
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* clear buffer after decoding
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Trying something
* Length prefix compressed data
* Fix gossipsub tests
* Working snappy frames with compressed length prefix
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Uncompressed length prefix working
* Cleanup
* Remove Testing request and response
* Return codec from match statement; reduce code duplication
* Fix unsafe unwrap in Outbound decode
* Add length checks
* All encode/decode functions use snappy frame format
* Add a `full` BeaconBlock method
* Add executable to test rpc against other impls
* Remove unused code; minor fixes
* Add PH & MS slot clock changes
* Account for genesis time
* Use checked mul
* Account for genesis slot
* Change API
* Refactor "duration to..." functions
* Re-merge updated block processing to v0.2.0 (#962)
* Start updating types
* WIP
* Signature hacking
* Existing EF tests passing with fake_crypto
* Updates
* Delete outdated API spec
* The refactor continues
* It compiles
* WIP test fixes
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Cargo fmt
* Fast aggregate verify test
* Update REST API docs
* Cargo fmt
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Address review comments; remove unused dependency
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Disable/delete two outdated tests
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Remove decompressed member from pubkey bytes
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Tidy
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Tidy
* Fix todos
* Improve tests
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
* Add sync-speed metric (#898)
* Add PH & MS slot clock changes
* Account for genesis time
* Use checked mul
* Account for genesis slot
* Change API
* Allow for clock disparity
* Refactor "duration to..." functions
* Ensure errors are returned during batch processing
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
* Enr fork (#967)
* Start fixing enr-fork-id
* Fix time-until-next-fork logic
* Remove fork crate
* Update any references to beacon_chain.spec.milliseconds_per_slot to beacon_chain.slot_clock.slot_diration().as_nillis() in the attestation service. (#968)
* Process network attestations (#966)
* Start updating types
* WIP
* Signature hacking
* Existing EF tests passing with fake_crypto
* Updates
* Delete outdated API spec
* The refactor continues
* It compiles
* WIP test fixes
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Cargo fmt
* Fast aggregate verify test
* Update REST API docs
* Cargo fmt
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Address review comments; remove unused dependency
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Disable/delete two outdated tests
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Remove decompressed member from pubkey bytes
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Tidy
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Tidy
* Fix todos
* Improve tests
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
* Allow for clock disparity
* Ensure errors are returned during batch processing
* Add block gossip verification
* Connect attestation processing to beacon chain
* Optimistically subscribe to subnets on the same slot
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
* Update /validator/subscribe (#969)
* Add progress on duties refactor
* Add simple is_aggregator bool to val subscription
* Remove unused function
* Upgrade sim (#972)
* Add progress on duties refactor
* Add simple is_aggregator bool to val subscription
* Add the no-eth1-sim, refactor sim
* Sends discovery for persistent subnets (#973)
* main takes cmdline arguments
* Add test script
* Fix errors
* snappy uses Uvi to encode/decode length prefix
* Add more comments
* Run fmt
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Age Manning <Age@AgeManning.com>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: b-m-f <max@ehlers.berlin>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
Co-authored-by: realbigsean <seananderson33@GMAIL.com>
* Connect sync logic to network globals
* Add further sync info to sync status
* Build new syncing HTTP API methods
* Fix bug in updating sync state
* Highest slot is current slot
* Update book for syncing API
* Minor log bumps
* Initial building of extended RPC methods
* Wire in extended RPC methods
* Merge initial peer management template
* Add a PeerDB and give the peer manager some basic functions
* Initial connection of peer manager
* Add peer manager to lighthouse
* Connect peer manager with new RPC methods
* Correct tests and metadata RPC
Co-authored-by: Diva <divma@protonmail.com>
* Start updating types
* WIP
* Signature hacking
* Existing EF tests passing with fake_crypto
* Updates
* Delete outdated API spec
* The refactor continues
* It compiles
* WIP test fixes
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Cargo fmt
* Fast aggregate verify test
* Update REST API docs
* Cargo fmt
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Address review comments; remove unused dependency
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Disable/delete two outdated tests
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Remove decompressed member from pubkey bytes
* Add hashmap for indices lookup
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Tidy
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Tidy
* Fix todos
* Improve tests
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Add BeaconChain::validator_pubkey
* Use Option::filter
* Remove Box
* Comment out tests that fail due to hard-coded
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
* order of operations fix in the duration_to_next_slot calculation
* use slot_clock.duration_to_slot() to simplify the duration_to_subscribe calculation
* fix error message
* Move the codes that loads Eth2Config from config to environment
* Move the codes that setups Eth2Config for testnet
* Move the codes that creates a new ChainSpec
* Remove unused `mut`
* Reduce local variable number
* Remove unused outputs of config::get_configs()
* Change the method name from plural to singular
* DRY the const `ETH2_CONFIG_FILENAME`
* Add comments
* Remove unnecessary blank line
* cargo fmt
* Add tests for EnvironmentBuilder::setup_eth2_config()
* Remove the comment that have been fixed
* Reduce local variable
* Remove redundant local variable
* Remove prysm-specific codes
Now the spec is in the eth2-testnets repo
* Sends attestations to the attestation service for processing
* Adds 'attnets' field to local ENR
* Adds ENR bitfield modification logic
* Link attestation service to discovery
- Updates discv5
- Links discover events to discovery
- Support for ENRBitfield
* Adds discovery config params, correct warnings
* Rust fmt fixes
* Correct tests
* Refactor `Attestation` production
* Add constant
* Start refactor for aggregation
* Return early when no attesting validators
* Refactor into individual functions
* Tidy, add comments
* Add first draft of NaiveAggregationPool
* Further progress on naive aggregation pool
* Fix compile errors in VC
* Change locking logic for naive pool
* Introduce AttesationType
* Add pruning, comments
* Add MAX_ATTESTATIONS_PER_SLOT restriction
* Add pruning based on slot
* Update BN for new aggregation fns
* Fix test compile errors
* Fix failing rest_api test
* Move SignedAggregateAndProof into own file
* Update docs, fix warning
* Tidy some formatting in validator API
* Remove T::default_spec from signing
* Fix failing rest test
* Tidy
* Add test, fix bug
* Improve naive pool tests
* Add max attestations test
* Revert changes to the op_pool
* Refactor timer
* Merge #913
* Correct release tests
* Completed release test corrections
* Initial work on upgrading discovery
* Updates discovery to latest version
* Update ENR initialisation logic
* Remove debug statements
* Shifts timing units to slots
* Initial work
* Add initial fork versioning and EnrForkId
* Correct linking for EnrForkId
* Adds eth2 field to local ENR
* Initial work to eth2 field integration
* Integrate eth2 field into discovery
* temp commit
* Add a timer to adjust fork versions during a hard fork for the ENR
* Upgrade the parent lookup logic
* Apply reviewer suggestions
* move the parent lookup process to a dedicated thread
* move the logic of parent lookup and range syncing to a block processor
* review suggestions
* more review suggestions
* Add small logging changes
* Process parent lookups in reverse
Co-authored-by: Age Manning <Age@AgeManning.com>
* Remove ping protocol
* Initial renaming of network services
* Correct rebasing relative to latest master
* Start updating types
* Adds HashMapDelay struct to utils
* Initial network restructure
* Network restructure. Adds new types for v0.2.0
* Removes build artefacts
* Shift validation to beacon chain
* Temporarily remove gossip validation
This is to be updated to match current optimisation efforts.
* Adds AggregateAndProof
* Begin rebuilding pubsub encoding/decoding
* Signature hacking
* Shift gossipsup decoding into eth2_libp2p
* Existing EF tests passing with fake_crypto
* Shifts block encoding/decoding into RPC
* Delete outdated API spec
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Fast aggregate verify test
* Update REST API docs
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Progress on attestation service
* Address review comments; remove unused dependency
* Initial work on removing libp2p lock
* Add LRU caches to store (rollup)
* Update attestation validation for DB changes (WIP)
* Initial version of should_forward_block
* Scaffold
* Progress on attestation validation
Also, consolidate prod+testing slot clocks so that they share much
of the same implementation and can both handle sub-slot time changes.
* Removes lock from libp2p service
* Completed network lock removal
* Finish(?) attestation processing
* Correct network termination future
* Add slot check to block check
* Correct fmt issues
* Remove Drop implementation for network service
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Address reviewers suggestions
* Disable/delete two outdated tests
* Modification of validator for subscriptions
* Add slot signing to validator client
* Further progress on validation subscription
* Adds necessary validator subscription functionality
* Add new Pubkeys struct to signature_sets
* Refactor with functional approach
* Update beacon chain
* Clean up validator <-> beacon node http types
* Add aggregator status to ValidatorDuty
* Impl Clone for manual slot clock
* Fix minor errors
* Further progress validator client subscription
* Initial subscription and aggregation handling
* Remove decompressed member from pubkey bytes
* Progress to modifying val client for attestation aggregation
* First draft of validator client upgrade for aggregate attestations
* Add hashmap for indices lookup
* Add state cache, remove store cache
* Only build the head committee cache
* Removes lock on a network channel
* Partially implement beacon node subscription http api
* Correct compilation issues
* Change `get_attesting_indices` to use Vec
* Fix failing test
* Partial implementation of timer
* Adds timer, removes exit_future, http api to op pool
* Partial multiple aggregate attestation handling
* Permits bulk messages accross gossipsub network channel
* Correct compile issues
* Improve gosispsub messaging and correct rest api helpers
* Added global gossipsub subscriptions
* Update validator subscriptions data structs
* Tidy
* Re-structure validator subscriptions
* Initial handling of subscriptions
* Re-structure network service
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add HashSetDelay and introduce into attestation service
* Handles validator subscriptions
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Peer subnet discovery gets queued for future subscriptions
* Reorganise attestation service functions
* Initial wiring of attestation service
* First draft of attestation service timing logic
* Correct minor typos
* Tidy
* Fix todos
* Improve tests
* Add PeerInfo to connected peers mapping
* Fix compile error
* Fix compile error from merge
* Split up block processing metrics
* Tidy
* Refactor get_pubkey_from_state
* Remove commented-out code
* Rename state_cache -> checkpoint_cache
* Rename Checkpoint -> Snapshot
* Tidy, add comments
* Tidy up find_head function
* Change some checkpoint -> snapshot
* Add tests
* Expose max_len
* Remove dead code
* Tidy
* Fix bug
* Add sync-speed metric
* Add first attempt at VerifiableBlock
* Start integrating into beacon chain
* Integrate VerifiableBlock
* Rename VerifableBlock -> PartialBlockVerification
* Add start of typed methods
* Add progress
* Add further progress
* Rename structs
* Add full block verification to block_processing.rs
* Further beacon chain integration
* Update checks for gossip
* Add todo
* Start adding segement verification
* Add passing chain segement test
* Initial integration with batch sync
* Minor changes
* Tidy, add more error checking
* Start adding chain_segment tests
* Finish invalid signature tests
* Include single and gossip verified blocks in tests
* Add gossip verification tests
* Start adding docs
* Finish adding comments to block_processing.rs
* Rename block_processing.rs -> block_verification
* Start removing old block processing code
* Fixes beacon_chain compilation
* Fix project-wide compile errors
* Remove old code
* Correct code to pass all tests
* Fix bug with beacon proposer index
* Fix shim for BlockProcessingError
* Only process one epoch at a time
* Fix loop in chain segment processing
* Correct tests from master merge
* Add caching for state.eth1_data_votes
* Add BeaconChain::validator_pubkey
* Revert "Add caching for state.eth1_data_votes"
This reverts commit cd73dcd6434fb8d8e6bf30c5356355598ea7b78e.
Co-authored-by: Grant Wuerker <gwuerker@gmail.com>
Co-authored-by: Michael Sproul <michael@sigmaprime.io>
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: pawan <pawandhananjay@gmail.com>
Co-authored-by: Paul Hauner <paul@paulhauner.com>
* Unfinished progress
* Update more persistence code
* Start fixing tests
* Combine persist head and fork choice
* Persist head on reorg
* Gracefully handle op pool and eth1 cache missing
* Fix test failure
* Address Michael's comments
* Start updating types
* WIP
* Signature hacking
* Existing EF tests passing with fake_crypto
* Updates
* Delete outdated API spec
* The refactor continues
* It compiles
* WIP test fixes
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Cargo fmt
* Fast aggregate verify test
* Update REST API docs
* Cargo fmt
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Address review comments; remove unused dependency
* Add first attempt at attestation proc. re-write
* Add version 2 of attestation processing
* Minor fixes
* Add validator pubkey cache
* Make get_indexed_attestation take a committee
* Link signature processing into new attn verification
* First working version
* Ensure pubkey cache is updated
* Add more metrics, slight optimizations
* Clone committee cache during attestation processing
* Update shuffling cache during block processing
* Remove old commented-out code
* Fix shuffling cache insert bug
* Used indexed attestation in fork choice
* Restructure attn processing, add metrics
* Add more detailed metrics
* Tidy, fix failing tests
* Fix failing tests, tidy
* Disable/delete two outdated tests
* Tidy
* Add pubkey cache persistence file
* Add more comments
* Integrate persistence file into builder
* Add pubkey cache tests
* Add data_dir to beacon chain builder
* Remove Option in pubkey cache persistence file
* Ensure consistency between datadir/data_dir
* Fix failing network test
* Tidy
* Fix todos
* Add attestation processing tests
* Add another test
* Only run attestation tests in release
* Make attestation tests MainnetEthSpec
* Address Michael's comments
* Remove redundant check
* Fix warning
* Fix failing test
Co-authored-by: Michael Sproul <micsproul@gmail.com>
Co-authored-by: Pawan Dhananjay <pawandhananjay@gmail.com>
* Start adding interop genesis state to lcli
* Use more efficient method to generate genesis state
* Remove duplicate int_to_bytes32
* Add lcli command to change state genesis time
* Add option to allow VC to start with unsynced BN
* Set VC to do parallel key loading
* Don't default to dummy eth1 backend
* Add endpoint to dump operation pool
* Add metrics for op pool
* Remove state clone for slot notifier
* Add mem size approximation for tree hash cache
* Avoid cloning tree hash when getting head
* Avoid cloning tree hash when getting head
* Add working arena-based cached tree hash
* Add another benchmark
* Add pre-allocation for caches
* Make cache nullable
* Fix bugs in cache tree hash
* Add validator tree hash optimization
* Optimize hash_concat
* Make hash32_concat return fixed-len array
* Fix failing API tests
* Add new beacon state cache struct
* Add validator-specific cache
* Separate list and values arenas
* Add parallel validator registry hashing
* Remove MultiTreeHashCache
* Remove cached tree hash macro
* Fix failing tree hash test
* Address Michael's comments
* Add CachedTreeHash impl for ef tests
* Fix messy merge conflict
* Optimize attestation production
* Add first basic optimizations
* Fix SlotOutOfBounds error
* Resolved missed merge conflicts
* Fix another missed merge conflict
* Fix more merge conflict issues
* Add `StateSkipConfig`
* Fix test compile errors
* Add failing test
* Fix bug, make tests pass
* Add comment
* Delete unused function
* Replace deleted comment
* Add noise support with fallback to secio
* Add config parameter for noise support
* Add secio/noise compatibility test
* Cleanup
* Remove config parameter for noise support
* Modify test to work between a secio swarm and a noise libp2p service
* Minor fixes
* Remove deprecated api_spec.yaml
* add prototype for proposer slashing
* remove clippy warnings
* Add proposer_slashing API
* Prototype for attester slashing API call
* Fix logic error in operation pool
* Finish test for attester_slashing api call
* Clean proposer_slashing test
* Cargo fmt
* Remove useless to_string after format! macro
* Cargo fmt
* Update book with new api calls
* Re-enable proposer slashing verification
* Update book with appropriate test example
* Fix proposer_slashing test
* Update comments and tests for clearer code
* Remove extraneous comments
* Fix test
* Minor fix
* Address reviewer comments
Co-authored-by: pscott <30843220+pscott@users.noreply.github.com>
* Start updating types
* WIP
* Signature hacking
* Existing EF tests passing with fake_crypto
* Updates
* Delete outdated API spec
* The refactor continues
* It compiles
* WIP test fixes
* All release tests passing bar genesis state parsing
* Update and test YamlConfig
* Update to spec v0.10 compatible BLS
* Updates to BLS EF tests
* Add EF test for AggregateVerify
And delete unused hash2curve tests for uncompressed points
* Update EF tests to v0.10.1
* Use optional block root correctly in block proc
* Use genesis fork in deposit domain. All tests pass
* Cargo fmt
* Fast aggregate verify test
* Update REST API docs
* Cargo fmt
* Fix unused import
* Bump spec tags to v0.10.1
* Add `seconds_per_eth1_block` to chainspec
* Update to timestamp based eth1 voting scheme
* Return None from `get_votes_to_consider` if block cache is empty
* Handle overflows in `is_candidate_block`
* Revert to failing tests
* Fix eth1 data sets test
* Choose default vote according to spec
* Fix collect_valid_votes tests
* Fix `get_votes_to_consider` to choose all eligible blocks
* Uncomment winning_vote tests
* Add comments; remove unused code
* Reduce seconds_per_eth1_block for simulation
* Addressed review comments
* Add test for default vote case
* Fix logs
* Remove unused functions
* Meter default eth1 votes
* Fix comments
* Address review comments; remove unused dependency
* Disable/delete two outdated tests
* Bump eth1 default vote warn to error
* Delete outdated eth1 test
Co-authored-by: Pawan Dhananjay <pawandhananjay@gmail.com>
* Add LRU caches to store
* Improvements to LRU caches
* Take state by value in `Store::put_state`
* Store blocks by value, configurable cache sizes
* Use a StateBatch to efficiently store skip states
* Fix store tests
* Add CloneConfig test, remove unused metrics
* Use Mutexes instead of RwLocks for LRU caches
* Start adding interop genesis state to lcli
* Use more efficient method to generate genesis state
* Remove duplicate int_to_bytes32
* Add lcli command to change state genesis time
* Add option to allow VC to start with unsynced BN
* Set VC to do parallel key loading
* Don't default to dummy eth1 backend
* Add endpoint to dump operation pool
* Add metrics for op pool
* Remove state clone for slot notifier
* Add mem size approximation for tree hash cache
* Avoid cloning tree hash when getting head
* Fix failing API tests
* Address Michael's comments
* Add HashMap::from_par_iter
* Store dht enrs on shutdown
* Load enrs on startup and add tests
* Remove enr_entries from behavior
* Move all dht persisting logic to `NetworkService`
* Move `PersistedDht` from eth2-libp2p to network crate
* Add test to confirm dht persistence
* Add logging
* Remove extra call to beacon_chain persist
* Expose only mutable `add_enr` method from behaviour
* Fix tests
* Fix merge errors
* Update op_pool to use proper rewards
* Fix missing use import for tests
* Address Michael's comments
* Revert to private ValidatorStatuses
* Rename variable for clearer code
* Fix update_cover function
* Remove expect
* Add WIP test for rewards
* Use aggregation_bits instead of earliest_attestation_validators
* Use earliest attestation in test and correct typo
* Fix op_pool test thanks to @michaelsproul 's help
* Change test name
This should reduce disk usage by 32x while keeping historical state queries to
less than 10s. If historical states are required quickly, the minimum SPRP of 32
can be set on the CLI.
* Sparse hot DB and block root tree
* Fix store_tests
* Ensure loads of hot states on boundaries are fast
* Milder error for unaligned finalized blocks
* Add TimeoutRwLock to BeaconChain
* Update network crate
* Update rest api
* Fix beacon chain tests
* Fix rest api tests
* Set test back to !debug_assertions
* Set random port when zero-port option is set
* Remove logic allowing lighthouse to update its own ENR
* Discovery address is set to localhost by default
* Return error if discovery-addr isn't explicit
* Add functions to get deposit_count and deposit_root from deposit cache
* Fetch deposit root and deposit count from cache
* Fix bugs
* Add test
* Compare deposit_count between the caching and http eth1 blocks
* Revert "Compare deposit_count between the caching and http eth1 blocks"
This reverts commit e3d0325ae6d1040976d37eddf35fcc7ff2333cb8.
* Fetch deposit cache using binary search instead of linear search
* BlockCache waits till DepositCache is in sync
* Truncate required_blocks in block_cache upto latest_processed_block in deposit cache
* Clean up
* Handled getting deposit count before deploying deposit contract
* More cleanup
* Remove calls to http get deposit/count
* Fix block cache tests
* Minor changes
* Fix bootnode ports
* Address some of Paul's comments
* Optimize `get_deposit_root` by caching `DepositDataTree`
* Fix comments and minor changes
* Change eth1 default config parameters
* Use `Vec` instead of `HashMap` to store `deposit_roots`
* Minor renaming
* add support for gzip
* Fix clippy warnings
* Fix additional clippy warnings and optimized get_deposits function
* Fix get_deposits function call
* Add simulator to CI
* Install ganache before running sim
* Apply clippy lints to beacon node
* Remove unnecessary logging and correct formatting
* Initial bones of load-balanced range-sync
* Port bump meshsup tests
* Further structure and network handling logic added
* Basic structure, ignoring error handling
* Correct max peers delay bug
* Clean up and re-write message processor and sync manager
* Restructure directory, correct type issues
* Fix compiler issues
* Completed first testing of new sync
* Correct merge issues
* Clean up warnings
* Push attestation processed log down to dbg
* Add state enc/dec benches
* Correct math error, downgraded logs
* Add example for flamegraph
* Use `PublicKeyBytes` for `Validator`
* Ripple PublicKeyBytes change through codebase
* Add RPC error handling and improved syncing code
* Add benches, optimizations to store BeaconState
* Store BeaconState in StorageContainer too
* Optimize StorageContainer with std::mem magic
* Add libp2p stream error handling and dropping of invalid peers
* Lower logs
* Update lcli to parse spec at boot, remove pycli
* Fix issues when starting with mainnet spec
* Set default spec to mainnet
* Fix lcli --spec param
* Add discovery tweak
* Ensure ETH1_FOLLOW_DISTANCE is in YamlConfig
* Set testnet ETH1_FOLLOW_DISTANCE to 16
* Fix rest_api tests
* Set testnet min validator count
* Update with new testnet dir
* Remove some dbg, println
* Add timeout when notifier waits for libp2p lock
* Add validator count CLI flag to lcli contract deploy
* Extend genesis delay time
* Correct libp2p service locking
* Update testnet dir
* Add basic block/state caching on beacon chain
* Add decimals display to notifier sync speed
* Try merge in change to reduce fork choice calls
* Remove fork choice from process block
* Minor log fix
* Check successes > 0
* Adds checkpoint cache
* Stop storing the tree hash cache in the db
* Handles peer disconnects for sync
* Fix failing beacon chain tests
* Change eth2_testnet_config tests to Mainnet
* Add logs downgrade discovery log
* Remove dedunant beacon state write
* Fix re-org warnings
* Use caching get methods in fork choice
* Fix mistake in prev commit
* Use caching state getting in state_by_slot
* Add state.cacheless_clone
* Less fork choice (#679)
* Try merge in change to reduce fork choice calls
* Remove fork choice from process block
* Minor log fix
* Check successes > 0
* Fix failing beacon chain tests
* Fix re-org warnings
* Fix mistake in prev commit
* Attempt to improve attestation processing times
* Introduce HeadInfo struct
* Used cache tree hash for block processing
* Use cached tree hash for block production too
* Range sync refactor
- Introduces `ChainCollection`
- Correct Disconnect node handling
- Removes duplicate code
* Add more logging for DB
* Various bug fixes
* Remove unnecessary logs
* Maintain syncing state in the transition from finalied to head
* Improved disconnect handling
* Add `Speedo` struct
* Fix bugs in speedo
* Fix bug in speedo
* Fix rounding bug in speedo
* Move code around, reduce speedo observation count
* Adds forwards block interator
* Fix inf NaN
* Add first draft of validator onboarding
* Update docs
* Add documentation link to main README
* Continue docs development
* Update book readme
* Update docs
* Allow vc to run without testnet subcommand
* Small change to onboarding docs
* Tidy CLI help messages
* Update docs
* Add check to val client see if beacon node is synced
* Attempt to fix NaN bug
* Fix compile bug
* Add notifier service to validator client
* Re-order onboarding steps
* Update deposit contract address
* Update testnet dir
* Add note about public eth1 node
* Fix installation link
* Set default eth1 endpoint to sigp
* Fix broken test
* Try fix eth1 cache locking
* Be more specific about eth1 endpoint
* Increase gas limit for deposit
* Fix default deposit amount
* Fix re-org log
* Add first draft of validator onboarding
* Update docs
* Add documentation link to main README
* Continue docs development
* Update book readme
* Update docs
* Allow vc to run without testnet subcommand
* Small change to onboarding docs
* Tidy CLI help messages
* Update docs
* Add check to val client see if beacon node is synced
* Add notifier service to validator client
* Re-order onboarding steps
* Update deposit contract address
* Update testnet dir
* Add note about public eth1 node
* Set default eth1 endpoint to sigp
* Fix broken test
* Try fix eth1 cache locking
* Be more specific about eth1 endpoint
* Increase gas limit for deposit
* Fix default deposit amount
* Update lcli to parse spec at boot, remove pycli
* Fix issues when starting with mainnet spec
* Set default spec to mainnet
* Ensure ETH1_FOLLOW_DISTANCE is in YamlConfig
* Set testnet ETH1_FOLLOW_DISTANCE to 16
* Set testnet min validator count
* Add validator count CLI flag to lcli contract deploy
* Extend genesis delay time
* Add basic block/state caching on beacon chain
* Adds checkpoint cache
* Stop storing the tree hash cache in the db
* Remove dedunant beacon state write
* Use caching get methods in fork choice
* Use caching state getting in state_by_slot
* Add state.cacheless_clone
* Attempt to improve attestation processing times
* Introduce HeadInfo struct
* Used cache tree hash for block processing
* Use cached tree hash for block production too
* Squish prev commits into a single atop master
* Enable http and ws during testing
* Checkout clobbered files from master
* Further un-clobber rest_api changes
* Tidy formatting
* Do rust-fmt's job for it :|
* Add state enc/dec benches
* Add example for flamegraph
* Use `PublicKeyBytes` for `Validator`
* Ripple PublicKeyBytes change through codebase
* Add benches, optimizations to store BeaconState
* Store BeaconState in StorageContainer too
* Optimize StorageContainer with std::mem magic
* Fix rest_api tests
* Draft of checkpoint freezer DB
* Fix bugs
* Adjust root iterators for checkpoint database
* Fix freezer state lookups with no slot hint
* Fix split comment
* Use "restore point" to refer to frozen states
* Resolve some FIXMEs
* Configurable slots per restore point
* Document new freezer DB functions
* Fix up StoreConfig
* Fix new test for merge
* Document SPRP default CLI flag, clarify tests
* Update to spec v0.9.0
* Update to v0.9.1
* Bump spec tags for v0.9.1
* Formatting, fix CI failures
* Resolve accidental KeyPair merge conflict
* Document new BeaconState functions
* Add `validator` changes from `validator-to-rest`
* Add initial (failing) REST api tests
* Fix signature parsing
* Add more tests
* Refactor http router
* Add working tests for publish beacon block
* Add validator duties tests
* Move account_manager under `lighthouse` binary
* Unify logfile handling in `environment` crate.
* Fix incorrect cache drops in `advance_caches`
* Update fork choice for v0.9.1
* Add `deposit_contract` crate
* Add progress on validator onboarding
* Add unfinished attesation code
* Update account manager CLI
* Write eth1 data file as hex string
* Integrate ValidatorDirectory with validator_client
* Move ValidatorDirectory into validator_client
* Clean up some FIXMEs
* Add beacon_chain_sim
* Fix a few docs/logs
* Expand `beacon_chain_sim`
* Fix spec for `beacon_chain_sim
* More testing for api
* Start work on attestation endpoint
* Reject empty attestations
* Allow attestations to genesis block
* Add working tests for `rest_api` validator endpoint
* Remove grpc from beacon_node
* Start heavy refactor of validator client
- Block production is working
* Prune old validator client files
* Start works on attestation service
* Add attestation service to validator client
* Use full pubkey for validator directories
* Add validator duties post endpoint
* Use par_iter for keypair generation
* Use bulk duties request in validator client
* Add version http endpoint tests
* Add interop keys and startup wait
* Ensure a prompt exit
* Add duties pruning
* Fix compile error in beacon node tests
* Add github workflow
* Modify rust.yaml
* Modify gitlab actions
* Add to CI file
* Add sudo to CI npm install
* Move cargo fmt to own job in tests
* Fix cargo fmt in CI
* Add rustup update before cargo fmt
* Change name of CI job
* Make other CI jobs require cargo fmt
* Add CI badge
* Remove gitlab and travis files
* Add different http timeout for debug
* Update docker file, use makefile in CI
* Use make in the dockerfile, skip the test
* Use the makefile for debug GI test
* Update book
* Tidy grpc and misc things
* Apply discv5 fixes
* Address other minor issues
* Fix warnings
* Attempt fix for addr parsing
* Tidy validator config, CLIs
* Tidy comments
* Tidy signing, reduce ForkService duplication
* Fail if skipping too many slots
* Set default recent genesis time to 0
* Add custom http timeout to validator
* Fix compile bug in node_test_rig
* Remove old bootstrap flag from val CLI
* Update docs
* Tidy val client
* Change val client log levels
* Add comments, more validity checks
* Fix compile error, add comments
* Undo changes to eth2-libp2p/src
* Reduce duplication of keypair generation
* Add more logging for validator duties
* Fix beacon_chain_sim, nitpicks
* Fix compile error, minor nits
* Update to use v0.9.2 version of deposit contract
* Add efforts to automate eth1 testnet deployment
* Fix lcli testnet deployer
* Modify bn CLI to parse eth2_testnet_dir
* Progress with account_manager deposit tools
* Make account manager submit deposits
* Add password option for submitting deposits
* Allow custom deposit amount
* Add long names to lcli clap
* Add password option to lcli deploy command
* Fix minor bugs whilst testing
* Address Michael's comments
* Add refund-deposit-contract to lcli
* Use time instead of skip count for denying long skips
* Improve logging for eth1
* Fix bug with validator services exiting on error
* Drop the block cache after genesis
* Modify eth1 testnet config
* Improve eth1 logging
* Make validator wait until genesis time
* Fix bug in eth1 voting
* Add more logging to eth1 voting
* Handle errors in eth1 http module
* Set SECONDS_PER_DAY to sensible minimum
* Shorten delay before testnet start
* Ensure eth1 block is produced without any votes
* Improve eth1 logging
* Fix broken tests in eth1
* Tidy code in rest_api
* Fix failing test in deposit_contract
* Make CLI args more consistent
* Change validator/duties endpoint
* Add time-based skip slot limiting
* Add new error type missed in previous commit
* Add log when waiting for genesis
* Refactor beacon node CLI
* Remove unused dep
* Add lcli eth1-genesis command
* Fix bug in master merge
* Apply clippy lints to beacon node
* Add support for YamlConfig in Eth2TestnetDir
* Upgrade tesnet deposit contract version
* Remove unnecessary logging and correct formatting
* Add a hardcoded eth2 testnet config
* Ensure http server flag works. Overwrite configs with flags.
* Ensure boot nodes are loaded from testnet dir
* Fix account manager CLI bugs
* Fix bugs with beacon node cli
* Allow testnet dir without boot nodes
* Write genesis state as SSZ
* Remove ---/n from the start of testnet_dir files
* Set default libp2p address
* Tidy account manager CLI, add logging
* Add check to see if testnet dir exists
* Apply reviewers suggestions
* Add HeadTracker struct
* Add fork choice persistence
* Shorten slot time for simulator
* Add the /beacon/heads API endpoint
* Update hardcoded testnet
* Add tests for BeaconChain persistence + fix bugs
* Extend BeaconChain persistence testing
* Ensure chain is finalized b4 persistence tests
* Ensure boot_enr.yaml is include in binary
* Refactor beacon_chain_sim
* Move files about in beacon sim
* Update beacon_chain_sim
* Fix bug with deposit inclusion
* Increase log in genesis service, fix todo
* Tidy sim, fix broken rest_api tests
* Fix more broken tests
* Update testnet
* Fix broken rest api test
* Tidy account manager CLI
* Use tempdir for account manager
* Stop hardcoded testnet dir from creating dir
* Rename Eth2TestnetDir to Eth2TestnetConfig
* Change hardcoded -> hard_coded
* Tidy account manager
* Add log to account manager
* Tidy, ensure head tracker is loaded from disk
* Tidy beacon chain builder
* Tidy eth1_chain
* Adds log support for simulator
* Revert "Adds log support for simulator"
This reverts commit ec77c66a052350f551db145cf20f213823428dd3.
* Adds log support for simulator
* Tidy after self-review
* Change default log level
* Address Michael's delicious PR comments
* Fix off-by-one in tests
* Create libp2p instance
* Change logger to stdlog
* test_connection initial commit
* Add gossipsub test
* Delete tests in network crate
* Add test module
* Clean tests
* Remove dependency on discovery
* Working publish between 2 nodes
TODO: Publish should be called just once
* Working 2 peer gossipsub test with additional events
* Cleanup test
* Add rpc test
* Star topology discovery WIP
* build_nodes builds and connects n nodes. Increase nodes in gossipsub test
* Add unsubscribe method and expose reference to gossipsub object for gossipsub tests
* Add gossipsub message forwarding test
* Fix gossipsub forward test
* Test improvements
* Remove discovery tests
* Simplify gossipsub forward test topology
* Add helper functions for topology building
* Clean up tests
* Update naming to new network spec
* Correct ssz encoding of protocol names
* Further additions to network upgrade
* Initial network spec update WIP
* Temp commit
* Builds one side of the streamed RPC responses
* Temporary commit
* Propagates streaming changes up into message handler
* Intermediate network update
* Partial update in upgrading to the new network spec
* Update dependencies, remove redundant deps
* Correct sync manager for block stream handling
* Re-write of RPC handler, improves efficiency and corrects bugs
* Stream termination update
* Completed refactor of rpc handler
* Remove crates
* Correct compile issues associated with test merge
* Build basic tests and testing structure for eth2-libp2p
* Enhance RPC tests and add logging
* Complete RPC testing framework and STATUS test
* Decoding bug fixes, log improvements, stream test
* Clean up RPC handler logging
* Decoder bug fix, empty block stream test
* Add BlocksByRoot RPC test
* Add Goodbye RPC test
* Syncing and stream handling bug fixes and performance improvements
* Applies discv5 bug fixes
* Adds DHT IP filtering for lighthouse - currently disabled
* Adds randomized network propagation as a CLI arg
* Add disconnect functionality
* Adds attestation handling and parent lookup
* Adds RPC error handling for the sync manager
* Allow parent's blocks to be already processed
* Update github workflow
* Adds reviewer suggestions
* Implement freezer database for state vectors
* Improve BeaconState safe accessors
And fix a bug in the compact committees accessor.
* Banish dodgy type bounds back to gRPC
* Clean up
* Switch to exclusive end points in chunked vec
* Cleaning up and start of tests
* Randao fix, more tests
* Fix unsightly hack
* Resolve test FIXMEs
* Config file support
* More clean-ups, migrator beginnings
* Finish migrator, integrate into BeaconChain
* Fixups
* Fix store tests
* Fix BeaconChain tests
* Fix LMD GHOST tests
* Address review comments, delete 'static bounds
* Cargo format
* Address review comments
* Fix LMD ghost tests
* Update to spec v0.9.0
* Update to v0.9.1
* Bump spec tags for v0.9.1
* Formatting, fix CI failures
* Resolve accidental KeyPair merge conflict
* Document new BeaconState functions
* Fix incorrect cache drops in `advance_caches`
* Update fork choice for v0.9.1
* Clean up some FIXMEs
* Fix a few docs/logs
* Update for new builder paradigm, spec changes
* Freezer DB integration into BeaconNode
* Cleaning up
* This works, clean it up
* Cleanups
* Fix and improve store tests
* Refine store test
* Delete unused beacon_chain_builder.rs
* Fix CLI
* Store state at split slot in hot database
* Make fork choice lookup fast again
* Store freezer DB split slot in the database
* Handle potential div by 0 in chunked_vector
* Exclude committee caches from freezer DB
* Remove FIXME about long-running test
* Update to spec v0.9.0
* Update to v0.9.1
* Bump spec tags for v0.9.1
* Formatting, fix CI failures
* Resolve accidental KeyPair merge conflict
* Document new BeaconState functions
* Add `validator` changes from `validator-to-rest`
* Add initial (failing) REST api tests
* Fix signature parsing
* Add more tests
* Refactor http router
* Add working tests for publish beacon block
* Add validator duties tests
* Move account_manager under `lighthouse` binary
* Unify logfile handling in `environment` crate.
* Fix incorrect cache drops in `advance_caches`
* Update fork choice for v0.9.1
* Add `deposit_contract` crate
* Add progress on validator onboarding
* Add unfinished attesation code
* Update account manager CLI
* Write eth1 data file as hex string
* Integrate ValidatorDirectory with validator_client
* Move ValidatorDirectory into validator_client
* Clean up some FIXMEs
* Add beacon_chain_sim
* Fix a few docs/logs
* Expand `beacon_chain_sim`
* Fix spec for `beacon_chain_sim
* More testing for api
* Start work on attestation endpoint
* Reject empty attestations
* Allow attestations to genesis block
* Add working tests for `rest_api` validator endpoint
* Remove grpc from beacon_node
* Start heavy refactor of validator client
- Block production is working
* Prune old validator client files
* Start works on attestation service
* Add attestation service to validator client
* Use full pubkey for validator directories
* Add validator duties post endpoint
* Use par_iter for keypair generation
* Use bulk duties request in validator client
* Add version http endpoint tests
* Add interop keys and startup wait
* Ensure a prompt exit
* Add duties pruning
* Fix compile error in beacon node tests
* Add github workflow
* Modify rust.yaml
* Modify gitlab actions
* Add to CI file
* Add sudo to CI npm install
* Move cargo fmt to own job in tests
* Fix cargo fmt in CI
* Add rustup update before cargo fmt
* Change name of CI job
* Make other CI jobs require cargo fmt
* Add CI badge
* Remove gitlab and travis files
* Add different http timeout for debug
* Update docker file, use makefile in CI
* Use make in the dockerfile, skip the test
* Use the makefile for debug GI test
* Update book
* Tidy grpc and misc things
* Apply discv5 fixes
* Address other minor issues
* Fix warnings
* Attempt fix for addr parsing
* Tidy validator config, CLIs
* Tidy comments
* Tidy signing, reduce ForkService duplication
* Fail if skipping too many slots
* Set default recent genesis time to 0
* Add custom http timeout to validator
* Fix compile bug in node_test_rig
* Remove old bootstrap flag from val CLI
* Update docs
* Tidy val client
* Change val client log levels
* Add comments, more validity checks
* Fix compile error, add comments
* Undo changes to eth2-libp2p/src
* Reduce duplication of keypair generation
* Add more logging for validator duties
* Fix beacon_chain_sim, nitpicks
* Fix compile error, minor nits
* Address Michael's comments
* Update to spec v0.9.0
* Update to v0.9.1
* Bump spec tags for v0.9.1
* Formatting, fix CI failures
* Resolve accidental KeyPair merge conflict
* Document new BeaconState functions
* Fix incorrect cache drops in `advance_caches`
* Update fork choice for v0.9.1
* Clean up some FIXMEs
* Fix a few docs/logs
* Refactor to cache Eth1Data
* Fix merge conflicts and minor refactorings
* Rename Eth1Cache to Eth1DataCache
* Refactor events subscription
* Add deposits module to interface with BeaconChain deposits
* Remove utils
* Rename to types.rs and add trait constraints to Eth1DataFetcher
* Confirm to trait constraints. Make Web3DataFetcher cloneable
* Make fetcher object member of deposit and eth1_data cache and other fixes
* Fix update_cache function
* Move fetch_eth1_data to impl block
* Fix deposit tests
* Create Eth1 object for interfacing with Beacon chain
* Add `run` function for running update_cache and subscribe_deposit_logs tasks
* Add logging
* Run `cargo fmt` and make tests pass
* Convert sync functions to async
* Add timeouts to web3 functions
* Return futures from cache functions
* Add failed chaining of futures
* Working cache updation
* Clean up tests and `update_cache` function
* Refactor `get_eth1_data` functions to work with future returning functions
* Refactor eth1 `run` function to work with modified `update_cache` api
* Minor changes
* Add distance parameter to `update_cache`
* Fix tests and other minor fixes
* Working integration with cache and deposits
* Add merkle_tree construction, proof generation and verification code
* Add function to construct and fetch Deposits for BeaconNode
* Add error handling
* Import ssz
* Add error handling to eth1 cache and fix minor errors
* Run rustfmt
* Fix minor bug
* Rename Eth1Error and change to Result<T>
* Change deposit fetching mechanism from notification based to poll based
* Add deposits from eth1 chain in a given range every `x` blocks
* Modify `run` function to accommodate changes
* Minor fixes
* Fix formatting
* Initial commit. web3 api working.
* Tidied up lib. Add function for fetching logs.
* Refactor with `Eth1DataFetcher` trait
* Add parsing for deposit contract logs and get_eth1_data function
* Add `get_eth1_votes` function
* Refactor to cache Eth1Data
* Fix merge conflicts and minor refactorings
* Rename Eth1Cache to Eth1DataCache
* Refactor events subscription
* Add deposits module to interface with BeaconChain deposits
* Remove utils
* Rename to types.rs and add trait constraints to Eth1DataFetcher
* Confirm to trait constraints. Make Web3DataFetcher cloneable
* Make fetcher object member of deposit and eth1_data cache and other fixes
* Fix update_cache function
* Move fetch_eth1_data to impl block
* Fix deposit tests
* Create Eth1 object for interfacing with Beacon chain
* Add `run` function for running update_cache and subscribe_deposit_logs tasks
* Add logging
* Run `cargo fmt` and make tests pass
* Convert sync functions to async
* Add timeouts to web3 functions
* Return futures from cache functions
* Add failed chaining of futures
* Working cache updation
* Clean up tests and `update_cache` function
* Refactor `get_eth1_data` functions to work with future returning functions
* Refactor eth1 `run` function to work with modified `update_cache` api
* Minor changes
* Add distance parameter to `update_cache`
* Fix tests and other minor fixes
* Working integration with cache and deposits
* Add merkle_tree construction, proof generation and verification code
* Add function to construct and fetch Deposits for BeaconNode
* Add error handling
* Import ssz
* Add error handling to eth1 cache and fix minor errors
* Run rustfmt
* Fix minor bug
* Rename Eth1Error and change to Result<T>
* Change deposit fetching mechanism from notification based to poll based
* Add deposits from eth1 chain in a given range every `x` blocks
* Modify `run` function to accommodate changes
* Minor fixes
* Fix formatting
* Fix merge issue
* Refactor with `Config` struct. Remote `ContractConfig`
* Rename eth1_chain crate to eth1
* Rename files and read abi file using `fs::read`
* Move eth1 to lib
* Remove unnecessary mutability constraint
* Add `Web3Backend` for returning actual eth1 data
* Refactor `get_eth1_votes` to return a Result
* Delete `eth1_chain` crate
* Return `Result` from `get_deposits`
* Fix range of deposits to return to beacon chain
* Add `get_block_height_by_hash` trait function
* Add naive method for getting `previous_eth1_distance`
* Add eth1 config params to main config
* Add instructions for setting up eth1 testing environment
* Add build script to fetch deposit contract abi
* Contract ABI is part of compiled binary
* Fix minor bugs
* Move docs to lib
* Add timeout to config
* Remove print statements
* Change warn to error
* Fix typos
* Removed prints in test and get timeout value from config
* Fixed error types
* Added logging to web3_fetcher
* Refactor for modified web3 api
* Fix minor stuff
* Add build script
* Tidy, hide eth1 integration tests behind flag
* Add http crate
* Add first stages of eth1_test_rig
* Fix deposits on test rig
* Fix bug with deposit count method
* Add block hash getter to http eth1
* Clean eth1 http crate and tests
* Add script to start ganache
* Adds deposit tree to eth1-http
* Extend deposit tree tests
* Tidy tests in eth1-http
* Add more detail to get block request
* Add block cache to eth1-http
* Rename deposit tree to deposit cache
* Add inital updating to eth1-http
* Tidy updater
* Fix compile bugs in tests
* Adds an Eth1DataCache builder
* Reorg eth1-http files
* Add (failing) tests for eth1 updater
* Rename files, fix bug in eth1-http
* Ensure that ganache timestamps are increasing
* Fix bugs with getting eth1data ancestors
* Improve eth1 testing, fix bugs
* Add truncate method to block cache
* Add pruning to block cache update process
* Add tests for block pruning
* Allow for dropping an expired cache.
* Add more comments
* Add first compiling version of deposit updater
* Add common fn for getting range of required blocks
* Add passing deposit update test
* Improve tests
* Fix block pruning bug
* Add tests for running two updates at once
* Add updater services to eth1
* Add deposit collection to beacon chain
* Add incomplete builder experiments
* Add first working version of beacon chain builder
* Update test harness to new beacon chain type
* Rename builder file, tidy
* Add first working client builder
* Progress further on client builder
* Update becaon node binary to use client builder
* Ensure release tests compile
* Remove old eth1 crate
* Add first pass of new lighthouse binary
* Fix websocket server startup
* Remove old binary code from beacon_node crate
* Add first working beacon node tests
* Add genesis crate, new eth1 cache_2
* Add Serivce to Eth1Cache
* Refactor with general eth1 improvements
* Add passing genesis test
* Tidy, add comments
* Add more comments to eth1 service
* Add further eth1 progress
* Fix some bugs with genesis
* Fix eth1 bugs, make eth1 linking more efficient
* Shift logic in genesis service
* Add more comments to genesis service
* Add gzip, max request values, timeouts to http
* Update testnet parameters to suit goerli testnet
* Add ability to vary Fork, fix custom spec
* Be more explicit about deposit fork version
* Start adding beacon chain eth1 option
* Add more flexibility to prod client
* Further runtime refactoring
* Allow for starting from store
* Add bootstrapping to client config
* Add remote_beacon_node crate
* Update eth1 service for more configurability
* Update eth1 tests to use less runtimes
* Patch issues with tests using too many files
* Move dummy eth1 backend flag
* Ensure all tests pass
* Add ganache-cli to Dockerfile
* Use a special docker hub image for testing
* Appease clippy
* Move validator client into lighthouse binary
* Allow starting with dummy eth1 backend
* Improve logging
* Fix dummy eth1 backend from cli
* Add extra testnet command
* Ensure consistent spec in beacon node
* Update eth1 rig to work on goerli
* Tidy lcli, start adding support for yaml config
* Add incomplete YamlConfig struct
* Remove efforts at YamlConfig
* Add incomplete eth1 voting. Blocked on spec issues
* Add (untested) first pass at eth1 vote algo
* Add tests for winning vote
* Add more tests for eth1 chain
* Add more eth1 voting tests
* Added more eth1 voting testing
* Change test name
* Add more tests to eth1 chain
* Tidy eth1 generics, add more tests
* Improve comments
* Tidy beacon_node tests
* Tidy, rename JsonRpc.. to Caching..
* Tidy voting logic
* Tidy builder docs
* Add comments, tidy eth1
* Add more comments to eth1
* Fix bug with winning_vote
* Add doc comments to the `ClientBuilder`
* Remove commented-out code
* Improve `ClientBuilder` docs
* Add comments to client config
* Add decoding test for `ClientConfig`
* Remove unused `DepositSet` struct
* Tidy `block_cache`
* Remove commented out lines
* Remove unused code in `eth1` crate
* Remove old validator binary `main.rs`
* Tidy, fix tests compile error
* Add initial tests for get_deposits
* Remove dead code in eth1_test_rig
* Update TestingDepositBuilder
* Add testing for getting eth1 deposits
* Fix duplicate rand dep
* Remove dead code
* Remove accidentally-added files
* Fix comment in eth1_genesis_service
* Add .gitignore for eth1_test_rig
* Fix bug in eth1_genesis_service
* Remove dead code from eth2_config
* Fix tabs/spaces in root Cargo.toml
* Tidy eth1 crate
* Allow for re-use of eth1 service after genesis
* Update docs for new CLI
* Change README gif
* Tidy eth1 http module
* Tidy eth1 service
* Tidy environment crate
* Remove unused file
* Tidy, add comments
* Remove commented-out code
* Address majority of Michael's comments
* Address other PR comments
* Add link to issue alongside TODO
* Implement basic tree hash caching
* Use spaces to indent top-level Cargo.toml
* Optimize BLS tree hash by hashing bytes directly
* Implement tree hash caching for validator registry
* Persist BeaconState tree hash cache to disk
* Address Paul's review comments
* Prototype for far_right push
* Add push method and tests
* Modify beacon_chain_builder for interop to use push instead of create
* Add Push method to MerkleTree
* Cargo fmt
* Remove redundant tests
* Fix typo
* Rename push to push_leaf
* Fix clippy warnings
* Add DepthTooSmall enum variant
* Avoid cloning in MerkleTree::push_leaf
* Add quickcheck test for push_leaf
* Cargo fmt updated
* Return err instead of using unwrap()
* Use enumerate instead of hard indexing
* Use if let and return string on error
* Fix typo in deposit_leave
* Fix cargo fmt
* Prototype for far_right push
* Add push method and tests
* Modify beacon_chain_builder for interop to use push instead of create
* Add Push method to MerkleTree
* Cargo fmt
* Remove redundant tests
* Fix typo
* Rename push to push_leaf
* Fix clippy warnings
* Add DepthTooSmall enum variant
* Avoid cloning in MerkleTree::push_leaf
* Add quickcheck test for push_leaf
* Cargo fmt updated
* Return err instead of using unwrap()
* Use enumerate instead of hard indexing
* Use if let and return string on error
* Fix typo in deposit_leave
* Change into_iter to iter
* Fix clippy 'easy' warnings
* Clippy eth2/utils
* Add struct NetworkInfo
* Clippy for types, utils, and beacon_node/store/src/iters.rs
* Cargo fmt
* Change foo to my_foo
* Remove complex signature
* suppress clippy warning for unit_value in benches
* Use enumerate instead of iterating over range
* Allow trivially_copy_pass_by_ref in serde_utils
- A processing error of a validator's block or attestation should not prevent publishing. Now a 202 error is returned, to indicate that it has not been processed, but has still been published.
- Added a publish_attestation function to the API, handling POST requests for /beacon/validator/attestation.
- Removed all unused imports
- Fixed random compiler errors
- Removed all of the 'sucess_response' helpers.
- Enabled all of the API endpoints again, wrapping in 'into_boxfut'
- Tidied up /metrics endpoint
- Added a 'body_text' part to ResponseBuilder, mainly for the Prometheus /metrics endpoint
- Cleaned up the unnecessary helpers::* imports, to be more explicit.
- Wrapped endpoint functions in new into_boxfut function
- Undid changes to Network API service, now returning ApiResult again.
- Cleaning up of functions, and removal of success_response functions in updated endpoints.
- A bunch of other clean-ups.
- Adding try_future! macros where necessary
- Returning ApiResult and mapping it to future instead
- Upgrading POST publish block to return a future directly
- Added SSZ encode for HeadResponse
- Converted all of the /beacon/ endpoints to return BoxFut instead of ApiResult
- Wrapped all of the '?'s in a new macro try_future!()
- Copied the try macro to try_future, so that a boxed future can easily be returned.
- Replaced all of the response serializations to use the new success_response
- Cleaned up imports
- Moved ApiError and such to it's own error.rs
- Obsoleted 'success_response' in favour of new async regular and json only flavours
- Made ApiError work async and be derived from hyper errors
- Added a check to ensure an error is thrown if a non-json encoding is requested on a json-only function
- Made all the individual service functions return futures (only node and network for now)
- Added a /beacon/validators function, to list all validators active in a particular epoch
- Moved 'get_genesis_state' function, to align with router.
- Added content-type for error responses
- Tried adding a cache update call to fix issue getting validator duties (this is WIP)
- Fixed function re-names
- Updated the function which gets the beacon_chain from the request, and makes sure caches are updated.
- Updated this api-alignment branch with the new code from interop branch.
- Made /beacon/state return the current 'head' state when no parameters are provided.
- Added some of the YAML api spec stuff to the /beacon/state endpoint in the rest_api spec.
- Adding the validator routes into the main function.
- Fixing the setting of the aggregation bits, and handling errors correctly.
- Rust format fixes, and addressing compiler warnings.
Updates lighthouse to the latest networking spec
- Sync re-write (#496)
- Updates to the latest eth2 networking spec (#495)
- Libp2p updates and improvements
- Add correct string formatting when incorrect parameters provided.
- Fill /beacon/block and /beacon/block_root endpoints
- Add 500 error responses to endpoints as appropriate
* Add basic block processing benches
* Start reviving state processing benches
* Fix old block builders
* Add optimization for faster pubkey add
* Tidy benches, add another
* Add extra block processing bench
* Start working on faster BLS scheme
* Add partially complete sig verify optimization
* Add .gitignore to state processing
* Add progress on faster signature verification
* Fix SignatureSet for fake_crypto
* Tidy attester slashings sig set
* Tidy bulk signature verifier
* Refactor signature sets to be cleaner
* Start threading SignatureStrategy through code
* Add (empty) test dir
* Move BenchingBlockBuilder
* Add initial block signature verification tests
* Add tests for bulk signature verification
* Start threading SignatureStrategy in block proc.
* Refactor per_block_processing errors
* Use sig set tuples instead of lists of two
* Remove dead code
* Thread VerifySignatures through per_block_processing
* Add bulk signature verification
* Introduce parallel bulk signature verification
* Expand state processing benches
* Fix additional compile errors
* Fix issue where par iter chunks is 0
* Update milagro_bls dep
* Remove debugs, code fragment in beacon chain
* Tidy, add comments to block sig verifier
* Fix various PR comments
* Add block_root option to per_block_processing
* Fix comment in block signature verifier
* Fix comments from PR review
* Remove old comment
* Fix comment
- Added the /beacon/validator/block endpoint for GET (untested)
- Added the /beacon/fork endpoint for GET
- Cleaned up a bunch of unused imports & variables
- Removed '/network/block_discovery' endpoint
- Completed implementation of /beacon/head
- renamed 'latest_finalized_checkpoint' to 'current_finalized_checkpoint' for consistency
- Reorganised list of endpoints in both spec & router so that they match
- Fixed the content-type modifications for /metrics
- Added a new 'RFC' tag to the spec, to tag things that we have not implemented and aren't sure if it's useful.
- Moved 'deposit_contract' under /spec
- Adding some missing fields to structs
- Rearranged the endpoints in the rest_api router, and renamed, using an 'implementation_pending' function
- Added 'content-type' headers, to distinguish difference with /node/metrics
- Updated OpenAPI spec to v0.2.0
- Split /node/fork into /node/chain_id and /beacon/fork
- Moved /metrics to /node/metrics
- Added example to /node/metrics, since it's text/plain
- Moved /node/network to just /network
- Added lots of stubs for endpoints which exist in the router
- Reordered large parts of the OpenAPI spec
- Moved /chain/beacon/... to just /beacon/...
* Implemented more REST API endpoints.
- Added many of the endpoints, which return 501 - Not Implemented
- Created helper function to return a not implemented error
- Created a parse_pubkey function to get a PublicKey from a hex string
- Created a HTTP handler for the validator endpoints
- Started implementing validator/duties endpoint.
* Fleshed out get validator duties.
- Re-implemented the get validator duties function for the REST API
- Added an 'as_hex_string' function to FakePublicKey, beacuse it was missing.
* Fixed small caching/state bug.
* Extended to array of API inputs.
- Created function for getting arrays from GET parameters.
- Extended get validator duties function to support array of validator duties.
* Tidy API to be more consistent with recent decisions
* Addressing Paul's comments.
- Cleaning up function to get list of proposers.
- Removing unnecessary serde annotations
- Clarifying error messages
- Only accept pubkeys if they are '0x' prefixed.
* Fixed formatting with rustfmt.