4454 Commits

Author SHA1 Message Date
tersec
1250c56e32
less async optimistic sync (#3842)
* less async optimistic sync

* use asyncSpawn; adapt changes to message router
2022-07-07 16:57:52 +00:00
Jacek Sieka
b00eac7a50
dag: protect against finalized epoch moving before BlockRef cutoff (#3847) 2022-07-07 14:24:31 +00:00
Jacek Sieka
9de2c6171f
failed broadcast is not a routing error (#3843)
a notice in the log is enough - we don't want the REST API to return an
error in this case because that makes the validator client think
something is seriously wrong (like the BN or message being broken)
2022-07-07 15:57:56 +03:00
tersec
35712e0dd0
suggested fee recipient documentation (#3729)
* tentative suggested fee recipient description

* numbered priority list

* add chapter to book
2022-07-07 09:25:51 +00:00
Jacek Sieka
e1830519a4
Introduce message router (#3829)
Whether new blocks/attestations/etc are produced internally or received
via REST, their journey through the node is the same - to ensure that
they get the same treatment (logging, metrics, processing), this PR
moves the routing to a dedicated module and fixes several small
differences that existed before.

* `xxxValidator` -> `processMessageName` - the processor also was adding
messages to pools, so we want the name to reflect that action
* add missing "sent" metrics for some messages
* document ignore policy better - already-seen messages are not actaully
rebroadcast by libp2p
* skip redundant signature checks for internal validators consistently
2022-07-06 16:11:44 +00:00
tersec
ae05ba9a48
reduce received invalid sync block logging to notice; decimal TTD logging (#3839) 2022-07-06 13:34:12 +03:00
Etan Kissling
2a2bcea70d
group justified and finalized Checkpoint (#3841)
The justified and finalized `Checkpoint` are frequently passed around
together. This introduces a new `FinalityCheckpoint` data structure that
combines them into one.

Due to the large usage of this structure in fork choice, also took this
opportunity to update fork choice tests to the latest v1.2.0-rc.1 spec.
Many additional tests enabled, some need more work, e.g. EL mock blocks.
Also implemented `discard_equivocations` which was skipped in #3661,
and improved code reuse across fork choice logic while at it.
2022-07-06 13:33:02 +03:00
Etan Kissling
c9418028f5
update network list to serve LC data by default (#3816)
Moves the post-merge Ropsten network to its own section to allow testing
LC features depending on EL state root separately.
2022-07-05 08:02:12 -07:00
tersec
19bf7f1599
check in MEV boost test script that payload gets unblinded (#3838) 2022-07-05 04:13:07 +00:00
Etan Kissling
aff53e962f
merge LC db into main BN db (#3832)
* merge LC db into main BN db

To treat derived LC data similar to derived state caches, merge it into
the main beacon node DB.

* shorten table names, group with lc prefix
2022-07-04 23:46:32 +03:00
tersec
1221bb66e8
optimistic sync (#3793)
* optimistic sync

* flag that initially loaded blocks from database might need execution block root filled in

* return optimistic status in REST calls

* refactor blockslot pruning

* ensure beacon_blocks_by_{root,range} do not provide optimistic blocks

* handle forkchoice head being pre-merge with block being postmerge

* re-enable blocking head updates on validator duties

* fix is_optimistic_candidate_block per spec; don't crash with nil future

* fix is_optimistic_candidate_block per spec; don't crash with nil future

* mark blocks sans execution payloads valid during head update
2022-07-04 23:35:33 +03:00
tersec
9eb1a3efb3
bump nim-json-serialization to fix Nim 1.6 build warning (#3835) 2022-07-01 22:27:40 +00:00
tersec
ba4d4c14db
fix Nim 1.6 deprecation and unused import warnings (#3834) 2022-07-01 21:52:23 +00:00
Jacek Sieka
6a3bd89d09
avoid unnecessary async copies in broadcast (#3830) 2022-07-01 17:48:45 +03:00
Tanguy
4fbbbfd462
Bump nim-websock: fix crash when sending >1mb (#3831) 2022-07-01 15:11:45 +03:00
Etan Kissling
499abd927f
persist LC data across restarts (#3823)
* persist LC data across restarts

With the Altair spec `LightClientUpdate` structure taking its final form
it is finally possible to persist LC data across restarts without having
to worry about data migration due to spec changes. A separate `lcdataV1`
database is created in the `caches` subdirectory to hold known LC data.
A full database with default settings (129 periods) uses <15 MB disk.

* extend LC data DB rationale

* wording

* add `isSupportedBySQLite` helper and explicit return

* remove redundant `return`
2022-06-30 13:04:39 +00:00
Jacek Sieka
24c435abae
libp2p: disable self triggering (#3826)
All message processing is done in the validation callbacks, so there's
no need to trigger data handlers for messages we publish - the
self-publish is async, and therefore has an associated cost
2022-06-30 11:54:49 +02:00
Jacek Sieka
c145916414
cleanups (#3819)
* avoid circular panda imports
* move deposit merkleization helpers to spec/
* normalize validator signature helpers to spec names / params
* remove redundant functions for remote signing
2022-06-29 18:53:59 +02:00
zah
f08f9e2bd7
Bump nim-json-rpc and nim-websock (use news by default) (#3820) 2022-06-29 17:35:09 +03:00
Zahary Karadjov
c75d39fc54
Merge stable into unstable 2022-06-29 11:33:59 +03:00
tersec
31772a2ac2
don't use JWT if one hasn't set up a JWT secret (#3822) 2022-06-29 07:36:22 +00:00
Zahary Karadjov
2444e9948f
Version 22.6.1 v22.6.1 2022-06-29 01:08:56 +03:00
zah
fa7d7fcc42
Avoid overflow in the initial 'nextExchangeTransitionConfTime' calculation (#3809) 2022-06-29 00:58:57 +03:00
Eugene Kabanov
725b120bc3
Fix proper timing check for bellatrix epoch. (#3807) 2022-06-29 00:27:57 +03:00
tersec
b178999225
use eth_chainId instead of net_version (#3804)
* use eth_chainId instead of net_version

* Update beacon_chain/eth1/eth1_monitor.nim

Co-authored-by: Etan Kissling <etan@status.im>

* fix logging for Quantity types

Co-authored-by: Etan Kissling <etan@status.im>
2022-06-29 00:19:18 +03:00
tersec
baf38c3416
use JWT when and only when the user specifies a JWT secret explicitly (#3786) 2022-06-29 00:17:49 +03:00
tersec
3514d39fd2
bump nim-web3 for eth_chainId support (#3785) 2022-06-29 00:17:41 +03:00
Zahary Karadjov
5a44f347bc
Correct a typo in the release notes 2022-06-29 00:09:27 +03:00
tersec
2d2cda735b
bump nim-eth to fix Nim 1.6 warnings (#3818) 2022-06-28 22:56:48 +02:00
zah
c01341851d
Backticks in Github Actions YAML need escaping 2022-06-28 23:56:17 +03:00
Etan Kissling
bc1cc8f643
encapsulate LC config into one type (#3817)
Separate LC initialization options from the main ChainDAGRef options to
allow ChainDAGRef to treat them as opaque and reduce risk for conflicts
when extending those options in the future.
2022-06-28 22:52:29 +02:00
zah
2c3e47d7e6
Avoid overflow in the initial 'nextExchangeTransitionConfTime' calculation (#3809) 2022-06-28 23:50:40 +03:00
Jacek Sieka
ff12c7f9ce
remove web3 url prompt in launcher script (#3810)
* remove web3 url prompt in launcher script

The interactive prompt for web3 has outlived its utility as we now load
url:s from command line params and config files, preventing the prompt
from correctly detecting when it's needed.

Also, after the merge, a JWT secret will (likely) be needed.

* log notice when web3 url is missing
* fix docs to not mention default that doesn't exist
* fix scripts to properly quote arguments
2022-06-28 23:49:52 +03:00
Jacek Sieka
0152f4ade5
Make deb/rpm packages when creating release (#3796)
* Make deb/rpm packages when creating release

A step towards #3782

* fix arch for arm
2022-06-28 23:34:18 +03:00
Zahary Karadjov
45ad4abe30
TTD value for Sepolia 2022-06-28 19:25:11 +03:00
Zahary Karadjov
73227508db
Fix regressions in launch_local_simulation 2022-06-28 19:22:06 +03:00
Mamy Ratsimbazafy
c4e5cd9f06
update nim blscurve: use builtin EIP2333 for BLST https://github.com/status-im/nim-blscurve/pull/142 2022-06-28 15:11:20 +02:00
Nikolay Mitev
a48d741022 Update local-testnet-simulation with changes from kiln-dev-auth branch 2022-06-28 13:33:49 +02:00
Eugene Kabanov
d1581a2d8c
Fix proper timing check for bellatrix epoch. (#3807) 2022-06-28 10:21:16 +00:00
Etan Kissling
e8e9ce1aab
introduce types for LC merkle proofs (#3808)
Merkle proofs tend to have long underlying type definitions, e.g.,
`array[log2trunc(NEXT_SYNC_COMMITTEE_INDEX), Eth2Digest]`. For the
ones used in the LC sync protocol, dedicated types are introduced
to improve readability. Furthermore, the `CachedLightClientBootstrap`
wrapper that solely wrapped a merkle branch is eliminated.
2022-06-28 07:52:23 +02:00
tersec
fd2040ae04
increase Jenkins git timeout to 15 minutes (#3813) 2022-06-27 23:44:26 +00:00
tersec
5145c04be2
Revert "Switch back to nim-websock (#3665)" (#3812)
This reverts commit 8d3afd82853c0e109e7423e264ca122d8f6b77c8.
2022-06-27 22:21:30 +00:00
tersec
1af053792c
bump merge-testnets for new sepolia TTD (#3811) 2022-06-27 22:23:49 +02:00
tersec
8de316ff73
use eth_chainId instead of net_version (#3804)
* use eth_chainId instead of net_version

* Update beacon_chain/eth1/eth1_monitor.nim

Co-authored-by: Etan Kissling <etan@status.im>

* fix logging for Quantity types

Co-authored-by: Etan Kissling <etan@status.im>
2022-06-27 15:02:12 +00:00
Jacek Sieka
8b6f05a146
vc: initial documentation (#3798)
* vc: initial documentation

bare-bones, but enough to get started

* fixup

* Apply suggestions from code review

* remove prater, link upgrade

* reword
2022-06-27 17:24:55 +03:00
Etan Kissling
91d543440a
add option to configure max historic LC data periods (#3799)
Adds a `--light-client-data-max-periods` option to override the number
of sync committee periods to retain light client data.
Raising it above the default enables archive nodes to serve full data.
Lowering below the default speeds up import times (still no persistence)
2022-06-27 13:24:38 +02:00
zah
b318a74d83
Add support for launching Geth and Nimbus-eth1 nodes in launch_local_testnet (#3790)
* Add support for launching Geth and Nimbus-eth1 nodes in launch_local_simulation

* Prevent undefined variables errors when Nimbus and Geth are not launched

Co-authored-by: Nikolay Mitev <github@hmel.org>
2022-06-27 11:34:12 +03:00
Etan Kissling
07f9936b33
bump nim-ssz-serialization to f1b14875792df7b1e76c98c9ee669026d7cfe6bb (#3802)
Update nim-ssz-serialization to get rid of a style check warning.
2022-06-26 23:17:40 +00:00
tersec
c02c383b91
bump nim-web3 so default payload status is safe (#3801) 2022-06-26 18:31:32 +00:00
Etan Kissling
aa1b8e4a17
bump nim-ssz-serialization to 3db6cc0f282708aca6c290914488edd832971d61 (#3119)
This updates `nim-ssz-serialization` to
`3db6cc0f282708aca6c290914488edd832971d61`.

Notable changes:
- Use `uint64` for `GeneralizedIndex`
- Add support for building merkle multiproofs
2022-06-26 19:33:06 +02:00