Commit Graph

1191 Commits

Author SHA1 Message Date
Paul Hauner
486c74f6e9 Merge branch 'master' into proto-array + more changes 2020-01-15 07:46:07 +11:00
Paul Hauner
b8d33ae26b Integrate proto_array into lighthouse 2020-01-14 17:05:59 +11:00
Paul Hauner
0f9d0ff3b9 Rename lmd_ghost > proto_array_fork_choice 2020-01-14 12:50:21 +11:00
Paul Hauner
512b7fe4c0 Add ssz encoding, other pub fns 2020-01-14 12:48:47 +11:00
Paul Hauner
6bb453fc27 Tidy, finish pruning tests 2020-01-14 12:15:23 +11:00
Paul Hauner
cc7f8fe951 Re-organise crate 2020-01-14 10:08:30 +11:00
Paul Hauner
0ad799042c Add comments and fixes 2020-01-14 07:40:59 +11:00
Paul Hauner
d856f34300 Add more testing 2020-01-14 06:57:33 +11:00
Paul Hauner
374877cbf8 Add more tests 2020-01-13 19:01:39 +11:00
Paul Hauner
1eee093208 Modify tests 2020-01-13 18:46:16 +11:00
Paul Hauner
4324ce3a91 Remove old tests 2020-01-13 18:41:34 +11:00
Paul Hauner
092b0e532a Add more testing to proto-array 2020-01-13 18:41:10 +11:00
Paul Hauner
5da9dddd2c Add more fork choice tests 2020-01-13 17:58:14 +11:00
Paul Hauner
3853af1bca Add more fork choice testing 2020-01-13 16:54:21 +11:00
Paul Hauner
c9274813d8 Add fork choice testing 2020-01-13 16:34:02 +11:00
Paul Hauner
8f72c09862 Add more compute_deltas tests 2020-01-13 14:01:13 +11:00
Paul Hauner
899e8c74ef Start testing 2020-01-13 13:21:26 +11:00
Paul Hauner
120bcfa46b Combine two functions in to compute_deltas 2020-01-13 12:50:27 +11:00
Paul Hauner
d7761ec7b7 Remove old reduced_tree fork choice 2020-01-13 12:49:49 +11:00
Paul Hauner
beb512219a Move impls in LmdGhost trait def 2020-01-13 06:31:37 +11:00
Paul Hauner
812be82567 Tidy, add incomplete LmdGhost impl 2020-01-12 18:44:04 +11:00
Paul Hauner
c1c70f1b85 Add refactored version 2020-01-12 18:01:36 +11:00
Paul Hauner
6ef1488de3 Add half-finished modifications 2020-01-12 11:24:32 +11:00
Paul Hauner
e771cff1ef Add tree filtering 2020-01-12 08:17:00 +11:00
Paul Hauner
32c21da9a6 Add progress 2020-01-11 21:00:14 +11:00
Paul Hauner
aea40caa1e Add further progress 2020-01-11 18:54:26 +11:00
Paul Hauner
3afa7b0dab Print validator pubkeys during generation (#791)
* Start docker docs

* Add progress

* Update docker.md

* Add note about geth syncing

* Fix env to use geth

* Update docs

* Remove sigp goerli node

* Change text about eth1 syncing

* Address comments from @pscott

* Add links to beaconcha.in

* Add instructions for starting an eth1 node

* Print validator pubkeys during generation

* Fix typo

* Re-organise Syncing log

* Add notes about finding the validator pubkey

* Fix double-0x prefix bug

* Fix typo
2020-01-10 15:47:07 +11:00
Paul Hauner
370c658c7c Optimization: reduce BLS decompression (#766)
* Add RwLock-style caching for BLS pubkeys

* Tidy docker ignore

* Remove RwLocks

* Merge in master
2020-01-10 15:32:10 +11:00
Paul Hauner
efd73230cf Add testnet3 params (#785)
* Add testnet3 params

* Update sydney ENR
2020-01-10 11:47:00 +11:00
Michael Sproul
d9e9c17d3b Avoid building caches during block replay (#783)
Also, make the ExitCache safe.
2020-01-09 11:43:11 +11:00
Michael Sproul
f36a5a15d6 Store states efficiently in the hot database (#746)
* 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
2020-01-08 13:58:01 +11:00
pscott
8e1e6838d2 Add individual processing for ef tests (#745)
* Add Individual signature verification for ef tests

* Add clone state to avoid errors in ef tests

* Add state verification for VerifyIndividual in ef tests

* Add Clone derive for errors

* Update comments
2020-01-08 10:24:44 +11:00
Paul Hauner
4579c8cceb Add unfinished progress 2020-01-07 16:39:18 +11:00
Paul Hauner
c5ee929439 Add progress 2020-01-07 12:34:41 +11:00
Paul Hauner
92e7b601b5 Start implementing proto_array 2020-01-07 10:50:55 +11:00
Paul Hauner
647034b637 Optimization: avoid recomputing known state roots (#762)
* Start adding optimization

* Add temp fix for protobuf issue

* Fix compile errors

* Fix protobuf import
2020-01-03 15:09:00 +11:00
Paul Hauner
251aea645c Make API friendly to block explorers (#702)
* Add validator index to duties response

* Add `get_state` method to beacon chain

* Improve /beacon/validators endpoint

* Add validators/all and validators/active endpoints

* Start refactor of HTTP docs

* Document /beacon/heads endpoint

* Remove some unused API endpoints

* Improve API docs

* Add methods to get all validator duties

* Improve docs

* Remove dead links

* Make tables left-justified

* Add /consensus/vote_count endpoint

* Add /consensus/individual_votes endpoint

* Update formatting

* Tidy

* Add committees endpoint

* Strictly require 0x prefix for serde in BLS

* Update docs to have 0x prefix

* Fix failing tests

* Add unfinished code

* Improve testing, fix bugs

* Tidy, ensure all beacon endpoints smoke tested

* Fix pubkey cache error

* Address comments with docs
2019-12-19 11:45:28 +11:00
pscott
e7de1b3339 Delete outdated deposits handling in operation pool (#719) 2019-12-17 10:37:12 +11:00
pscott
7f484db524 Move max_seed_lookahead to used constants (#705) 2019-12-12 17:11:14 +11:00
Paul Hauner
3c6c06a505 Validator on-boarding docs (#656)
* 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
2019-12-09 22:42:36 +11:00
Age Manning
5853326342 Sync Re-Write (#663)
* 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

* Correct math error, downgraded logs

* Add RPC error handling and improved syncing code

* Add libp2p stream error handling and dropping of invalid peers

* Lower logs

* Add discovery tweak

* Correct libp2p service locking

* Handles peer disconnects for sync

* Add logs downgrade discovery log

* 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

* Range sync refactor

- Introduces `ChainCollection`
- Correct Disconnect node handling
- Removes duplicate code

* Various bug fixes

* Remove unnecessary logs

* Maintain syncing state in the transition from finalied to head

* Improved disconnect handling

* Adds forwards block interator

* Notifies lighthouse on stream timeouts

* Apply new gossipsub updates
2019-12-09 18:50:21 +11:00
Paul Hauner
988059bc9c Fix issues when starting with mainnet spec (#674)
* 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
2019-12-09 17:23:56 +11:00
Paul Hauner
2bfc512fb6 Add block/state caching on beacon chain (#677)
* 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
2019-12-09 14:20:25 +11:00
Michael Sproul
bd1b61a5b1 Forwards block root iterators (#672)
* Implement forwards block root iterators

* Clean up errors and docs
2019-12-06 18:52:11 +11:00
Paul Hauner
75efed305c Faster BeaconState enc/dec (#671)
* 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
2019-12-06 16:44:03 +11:00
Michael Sproul
d0319320ce Improve freezer DB efficiency with periodic restore points (#649)
* 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
2019-12-06 14:29:06 +11:00
Paul Hauner
a0549e3842 Prepare for public testnet (#628)
* 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 ec77c66a05.

* 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
2019-12-03 15:28:57 +11:00
Pawan Dhananjay
3a05c6f924 Reduced tree encode/decode (#624)
* Fix custom derive macros

* Add `ReducedTreeSsz` to encode/decode `ReducedTree` to/from bytes

* Add test for bytes conversion

* Improve error handling

* Improve conversion functions

* Remove unnecessary modifiers

* Address Paul's review comments
2019-11-29 13:21:31 +11:00
Paul Hauner
c04026d073 Remove duplication from bad merge (#642) 2019-11-28 14:45:00 +11:00
pscott
7bdddd682c Apply eth2.0 config spec to ChainSpec (#605)
* Allow slot clock to work on genesis

* Loose over-strict requirements for slot clock tests

* fix slots_per_eth1_voting_period

* add utils for domain serializing and deserializing

* add serde_yaml to cargo

* add tmpdir to cargo

* cargo fmt src/utils

* add YamlConfig, allowing to serialize and deserialize yaml config files

* update to v0.9.1

* Comment out local tests

* update milliseconds_per_slot for minimal

* add safe_slots_to_update_justified

* Update to v0.9.1 and add deny_unknown_fields

* Specify that max_epochs_per_crosslink is for phase1

* Remove test stubs

* Use get to avoid panicking in serde_utils

* Use ? operator instead of explicit match return
2019-11-28 13:20:16 +11:00