Jacek Sieka
f821bc878e
Remove `-d:insecure` compile option ( #2468 )
...
With metrics running on top of chronos, the metrics server no longer
needs to be compiled in conditionally - it remains disabled by default.
2021-04-01 14:44:11 +02:00
tersec
bd8b60f8c8
use epochref for get_committee_assignments() to avoid repeated shuffling ( #2463 )
...
* use epochref for get_committee_assignments() to avoid repeated shuffling
* remove unnecessary imports and StateCache() construction
2021-03-30 15:01:47 +00:00
Jacek Sieka
74732a23fe
json cleanups ( #2456 )
...
* move json-rpc specific marshalling to rpc
* serialize Epoch/Slot with cast to avoid Defect
* avoid a few eth1 deps
* simplify imports
2021-03-26 15:11:06 +01:00
Jacek Sieka
2695cfa864
EH cleanup ( #2455 )
...
almost 100% raises in nimbus-eth2 now!
* fix some rare exception-related crashes in json-rpc
2021-03-26 07:52:01 +01:00
Jacek Sieka
8b76ceed52
Fix minor exception effect issues ( #2448 )
...
Makes code compatible with
https://github.com/status-im/nim-chronos/pull/166 without requiring it.
2021-03-24 17:20:55 +01:00
tersec
36311bfc05
incorporate proposals into nextActionWait; switch some proc to func ( #2438 )
2021-03-24 10:05:04 +00:00
tersec
3076f5c3b6
rm std/random from beacon_chain and rm attestation timing randomness ( #2442 )
...
* remove added attestation timing randomness
* remove os/random from rest of beacon_chain, primarily deposit_contract
* remove scaffolding
* randomize std/random seed in beacon node and validator client
* use CSPRNG to more securely seed std/random
2021-03-23 06:57:10 +00:00
Jacek Sieka
01fe564e46
chronos-based metrics ( #2432 )
...
This opens up the road for removing `-d:insecure` for metrics.
2021-03-19 10:36:38 +01:00
Ștefan Talpalaru
683edbff7a
restore terminal echoing after pressing Ctrl+C at a password prompt ( #2412 )
2021-03-16 08:06:45 +00:00
Dustin Brody
97504fdb9d
ncli_db pruneDatabase checkpointing; remove onSlotEnd lookaheadTime
2021-03-12 23:15:46 +02:00
tersec
5ebf36f54d
add metric for nextActionWait ( #2399 )
...
* add metric for nextActionWait
* use toFloatSeconds
2021-03-12 09:46:26 +00:00
Mamy Ratsimbazafy
c47d636cb3
Split Eth2Processor in prep for batching ( #2396 )
...
* Split Eth2Processor in gossip and consensus part and materialize the shared block queue
* Update initialization in test_sync_manager
2021-03-11 11:10:57 +01:00
Mamy Ratsimbazafy
8e28a05cea
Move pruning out of latency critical path ( #2384 )
...
* Deferred DAG and fork choice pruning
* fixup
* Address https://github.com/status-im/nimbus-eth2/pull/2384/files#r589448448 , rely only on onSLotEnd for state pruning
* no need to store needPruning in the data structure
* lastPrunePoint is updated in pruning proc
* Split eager and LazyPruning
* enforce pruning in updateHead
2021-03-09 15:36:17 +01:00
Mamy Ratsimbazafy
de1060e7f3
centralize p2p validation in a single file and address https://github.com/status-im/nimbus-eth2/pull/2377#issuecomment-791313118 ( #2383 )
2021-03-06 08:32:55 +01:00
kdeme
5f750f84b4
Use setupAddress for better IP and ports configuration
2021-03-06 00:09:09 +02:00
Mamy Ratsimbazafy
d47f53cd9d
Reorg (5/5) ( #2377 )
...
* Reorg things left into networking and gossip_processing
* time -> beacon_clock
* fix builds
2021-03-05 14:12:00 +01:00
Mamy Ratsimbazafy
5d7f9c3a04
Consensus object pools [reorg 4/5] ( #2374 )
...
* Add documentation
* make test doesn't try to build the beacon node :/
2021-03-04 10:13:44 +01:00
Mamy Ratsimbazafy
2f17ac7b64
Move SSZ, deposit_contracts & eth1_monitor [reorg files 3/5] ( #2371 )
...
* move deposit_contract
* Move SSZ
* fix ssz import in tests
* move also eth1_monitor
* forgot to delete the original
* fix comma [skip ci]
* Fix "make" & tools imports
* Fix import
* Fix import again
* rename deposit_contract -> eth1
* Revert ssz move to subfolder
* path fixes [skip ci]
2021-03-03 07:23:05 +01:00
Mamy Ratsimbazafy
3276dfc683
Consolidate modules by areas [part 1] ( #2365 )
...
* Move sync in subfolder
* move validator related thingies in validators
* fix binary builds
* update bounds comment [skip ci]
2021-03-02 11:27:45 +01:00
tersec
5653b2e13c
more spec v1.0.1 spec ref URL and copyright year updates ( #2367 )
2021-03-02 06:04:14 +00:00
tersec
e661f7d0c7
prevent uint64 to int64-induced RangeError/RangeDefects in metrics ( #2358 )
...
* prevent uint64 to int64-induced RangeError/RangeDefects in metrics
* remove redundant min(foo, int64.high)
* adjust spacing to be consistent
2021-03-01 20:55:25 +01:00
Jacek Sieka
3e2c0a220c
refactor slot loop ( #2355 )
...
* refactor slot loop
* fix attestations being sent out early when _any_ block arrives (as
opposed to the block for the "correct" slot)
* fix attestations being sent out late when block already arrived
* refactor slot processing loop
* shutdown if clock moves backwards significantly
* fix docs
* notify caller whether the block actually arrived
2021-03-01 17:36:06 +01:00
Jacek Sieka
0dbc7162ac
startup cleanup
...
* fix several memory leaks due to temporaries not being reset during
init
* avoid massive main() function with lots of stuff in it
* disable nim-prompt (unused)
* reuse validator pool instance in eth2_processor
* style cleanup
2021-02-22 23:32:54 +02:00
Zahary Karadjov
e1d6df1e5d
Continue using the V1 Slashing DB by default
2021-02-20 22:46:35 +02:00
Mamy Ratsimbazafy
5daafd480f
Slashing protection updates ( #2333 )
...
* Fix slashing protection always try to migrate at startup
* Add CLI option for dual DB
2021-02-19 17:18:17 +02:00
tersec
a3a0df17f8
remove too-aggressive assertion ( #2343 )
2021-02-19 10:54:47 +00:00
Dustin Brody
c7093c4ab5
show next attestation slot & wait time in Slot end log
2021-02-15 22:49:20 +02:00
tersec
5cab17dc1a
database state storage benchmarking via ncli_db ( #2312 )
...
* database state storage benchmarking via ncli_db
* more cleanups from immutable validator state branch
* unexport some eth2_network constants and remove unused variables/templates
* make two PeerScore constants public
2021-02-15 17:40:00 +01:00
Mamy Ratsimbazafy
03f47c8f2f
Slashing protection refactor - EIP 3076 ( #2094 )
...
* Create CLI tool for slashing export
* Use SQLite as a DB instead of a KV-store
* Keeps v1 and v2 DBs around
* Uses the same schema as Lighthouse v1.1.0
* Passes all interchange tests + skeleton of finalization pruning
* Removes tests that would violate v5 / minimal slashing DB and MinSlot rules
* Migration tool added using low-watermark scheme for faster migration of large number of validators
2021-02-09 17:23:06 +02:00
Giovanni Petrantoni
72b01161c1
populate gossipsub scores ( #2091 )
...
* force pushing to fix unstable base
* increase attestation/aggregate queue sizes
when there are many validators, many aggregates and attestations arrive
every slot - increase the queue size a bit - also do batches on each
idle loop iteration since it's fairly quick
* don't score subnets for now
* wrapping up
* refactor and cleanups
* gossip parameters fixes
* comment fix
Co-authored-by: Jacek Sieka <jacek@status.im>
2021-02-09 10:20:55 +01:00
Kim De Mey
73d9c2aa53
Add enr auto update cli option and bump nim-eth ( #2278 )
2021-02-02 09:07:21 +01:00
tersec
6141286547
rename doppelganger protection to doppelganger detection; switch default from warn to stop ( #2281 )
2021-02-01 12:18:16 +01:00
Zahary Karadjov
fa99c3b417
Fix #2261
...
Also bumps Confutils to allow setting the hidden --web3-mode param
(to allow testing the eth1 syncing without validators)
2021-01-30 01:32:20 +02:00
Dustin Brody
281853eee8
rename options and internal structures to doppelgangerFoo and remove probing
2021-01-30 00:17:54 +02:00
Kim De Mey
40a5d44887
Fix selection of bootstrap nodes from metadata ( #2273 )
...
Also removes again the doubling of max peers
2021-01-29 08:56:02 +01:00
tersec
1bdbf099cc
use IntSet rather than HashSet[ValidatorIndex] ( #2267 )
...
* use IntSet rather than HashSet[ValidatorIndex]
* add bounds check before uint64 -> int conversion
* use intsets in block transitions
* remove superfluous Nim issue explanation/reference
2021-01-26 12:52:00 +01:00
Mamy Ratsimbazafy
70a03658e3
Block validation flow v2 + Batch (serial) sig verification ( #2250 )
...
* bump nim-blscurve
* Outline the block validation flow
* introduce the SigVerified types, pass the tests
* Split clearance/quarantine to prepare for batch crypto verif
* Add a batch signature collector
* Make clearance use SigVerified block and split verification between crypto and state transition
* Always use signedBeaconBlock for the onBlockAdded callback
* RANDAO signing_root is the epoch instead of the full block
* Support skipping BLS for testing
* Fix compilation of the validator client
* Try to fix strange errors MacOS and Jenkins (Clang, unknown type name br_hmac_drbg_context in stdlib_assertions.nim.c)
* address https://github.com/status-im/nimbus-eth2/pull/2250#discussion_r561819858
* address https://github.com/status-im/nimbus-eth2/pull/2250#discussion_r561828025
* onBlockAdded callback should use TrustedSignedBeaconBlock https://github.com/status-im/nimbus-eth2/pull/2250#discussion_r561837261
* address https://github.com/status-im/nimbus-eth2/pull/2250#discussion_r561828946
* Use the application RNG: https://github.com/status-im/nimbus-eth2/pull/2250#discussion_r561815336
* Improve codegen of conversion zero-cost)
* Quick fixes with loadWithCache after #2259 (TODO: graceful error since pubkey validations is now done first in signatures_batch)
* Graceful handle rogue pubkeys and signatures now that those are lazy-loaded
2021-01-25 20:45:48 +02:00
tersec
7d74d3bfbc
only subscribe to subnets when aggregating ( #2254 )
...
Only subscribe to subnets when aggregating
2021-01-25 19:39:56 +02:00
Zahary Karadjov
960666d1ed
Remove std/random again
2021-01-21 19:39:04 +02:00
Mamy Ratsimbazafy
718feef802
Fix unstable after #2244 ( #2255 )
2021-01-21 18:27:24 +01:00
Dustin Brody
a16f5afcd5
pre-emptive duplicate validator detection heuristic
2021-01-21 16:03:02 +02:00
tersec
55ecb61c3a
cycle attestation subnets every slot ( #2240 )
...
Cycle attestation subnets every slot
2021-01-19 19:44:03 +02:00
tersec
0fce8ad0d7
Revert "only checkpoint every four slots ( #2236 )" ( #2242 )
...
This reverts commit 7da16f4908
.
2021-01-18 11:02:56 +01:00
Zahary Karadjov
c8c819359c
More clear error message when a validator exit was rejected
2021-01-15 19:40:05 +02:00
tersec
7da16f4908
only checkpoint every four slots ( #2236 )
...
* only checkpoint every four slots
* only checkpoint every 16 slots
* every 8 slots
* every 4 slots; 8 seems probably okay, but be a bit conservative
2021-01-15 05:23:54 +00:00
Giovanni Petrantoni
295e3c9c73
Topics validation and direct peers ( #2237 )
...
* pick the right libp2p branch
* add topics validation
2021-01-15 04:17:06 +00:00
tersec
fa75c477cd
only initially subscribe to relevant attestation subnets ( #2231 )
2021-01-14 09:43:21 +01:00
tersec
0fad1b6b26
don't special-case zero-validator subnet cycling ( #2230 )
2021-01-12 17:17:43 +01:00
tersec
dde973e2d4
allow always-on subscription to all attestation subnets when gossiping ( #2225 )
...
* allow always-on subscription to all attestation subnets when gossiping
* in subscribe-all-subnets mode, consider all subnets to be stability subnets for ENR purposes
2021-01-12 13:43:15 +01:00
Giovanni Petrantoni
a3a651b565
always enable topic and aggreate metric topics ( #2229 )
2021-01-12 04:27:09 +01:00