Commit Graph

110 Commits

Author SHA1 Message Date
Giulio rebuffo
8ad4870428 Banning peers sending bad gossip (#7134) 2023-03-28 20:29:38 +01:00
Giulio rebuffo
d6ba1b65c8
Added removeStreamHandler again (#6996) 2023-03-02 14:22:03 +00:00
Giulio rebuffo
f97550c48f
Fixed capella startup for LC (#6989) 2023-02-28 21:17:10 +00:00
Giulio rebuffo
300ef31888
fixed lightclient regression (#6957) 2023-02-25 16:39:35 +00:00
Alex Sharov
431fba815f
e3: simplify tracer (#6953) 2023-02-25 12:44:45 +07:00
Giulio rebuffo
4525db6a9c
Fixed lightclient regression (#6946) 2023-02-24 15:11:50 +00:00
Alex Sharov
4a81e62ea8
lightclient: simple retry backoff (#6922) 2023-02-22 01:42:01 +00:00
alex.sharov
8580111641 lighting: reduce retry rate 2023-02-20 14:39:31 +07:00
Alex Sharov
b5a310effe
temporary solution for lightclient ratelimit (#6908) 2023-02-20 07:33:13 +00:00
Alex Sharov
1ee4a13904
temporary solution for lightclient ratelimit (#6907)
https://github.com/ledgerwatch/erigon/issues/6905
2023-02-20 07:31:20 +00:00
Giulio rebuffo
ae8657e226
API in lightclient instead of gossip (#6883) 2023-02-15 17:09:21 +00:00
Philippe Schommers
22bf78ba92
fix: variable slots per epoch in light client (#6868)
Missed a spot in #6864, my bad.
2023-02-13 21:27:13 +00:00
Giulio rebuffo
ef502afd51
Fixed finalized hash in lightclient (#6867) 2023-02-13 21:18:37 +00:00
Giulio rebuffo
7fb6d94a64
Added more peer count logs (#6865) 2023-02-13 20:51:50 +00:00
ledgerwatch
ee83447fa1
CL lightclient to create memdb in the tmpdir which gets cleaned up on… (#6829)
… startup

---------

Co-authored-by: Alexey Sharp <alexeysharp@Alexeys-iMac.local>
Co-authored-by: Alex Sharp <alexsharp@Alexs-MacBook-Pro-2.local>
2023-02-11 20:44:51 +00:00
Giulio rebuffo
f7e58a7964
added separable lightclient (#6800)
How to run:
Erigon flags needed: --private.api.addr <ADDR> --externalcl
Lightclient flags needed: --private.api.addr <ADDR>
2023-02-08 00:06:07 +01:00
Giulio rebuffo
f44b22f066
Shangai Compatible embedded CL lightclient (#6688)
* LightClientHeader: Capella
* Added versions to lightclient
* TODO: Capella->Bellatrix transition
2023-01-24 17:36:02 +01:00
Giulio rebuffo
635fe0cb21
Added custom chain flags to embedded consensus lightclient (#6674) 2023-01-24 00:03:48 +01:00
Giulio rebuffo
0eebd61ab8
separation of state: a continuation (#6647) 2023-01-21 22:33:50 +01:00
Alex Sharov
2a9ae52c9e
grpc version up (#6648) 2023-01-21 10:58:16 +07:00
Andrew Ashikhmin
9927ca3171
Unify Engine API V1 & V2 methods (#6638)
Reduce code duplication.

Prerequisite: https://github.com/ledgerwatch/erigon-lib/pull/841.
2023-01-20 18:43:08 +01:00
Giulio rebuffo
3f07c66928
Fast gossip routine for Sentinel. (#6614)
removed bunch of ugly repetitive routines.
2023-01-18 14:30:39 +01:00
Giulio rebuffo
4e53a12c53
Flexible Blocks and States for easy hard forking (#6566)
Preparation for Shangai Beacon Blocks/Beacon State
2023-01-17 02:22:05 +01:00
hexoscott
7dcbfbc283
reference hash, address, and chain config from lib (#6536) 2023-01-13 18:12:18 +00:00
Giulio rebuffo
4bee05dd12
Added ETH1 Block SSZ Hashing to CL (#6549)
more of SSZ again.
2023-01-11 17:18:14 +01:00
Giulio rebuffo
64a22eb0f4
Added Finalized to Lightclient (#6510) 2023-01-05 23:50:04 +01:00
Giulio rebuffo
4932aa5264
added indexes to beacon blocks (#6460) 2022-12-29 15:15:25 +01:00
Mike Neuder
aa9b30a656
Implement ProcessRandao (#6425)
https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/beacon-chain.md#randao

Part of https://github.com/ledgerwatch/erigon/issues/5965
2022-12-24 19:39:39 +01:00
Alex Sharov
ade933be6b
kv_remote: server to support thread-safe multi-streams per 1 tx (#6402) 2022-12-24 13:11:15 +07:00
Giulio rebuffo
d2bda25b29
Added Beacon RPC as a wrapper for Sentinel (#6424) 2022-12-23 22:31:08 +01:00
Giulio rebuffo
bae56ff119
Backfilling is now smooth and does not get stuck (#6374) 2022-12-19 22:40:34 +01:00
Giulio rebuffo
0f0d0de783
Use of proper beacon state interface (#6277) 2022-12-11 15:12:38 +01:00
Giulio rebuffo
1c8a11df40
Added dirty leaves system to beacon state (#6264) 2022-12-09 19:19:01 +01:00
Giulio rebuffo
6e76643c09
Added Handshake protocol to Erigon-CL Lightclient and Fullclient (#6206) 2022-12-05 01:25:12 +01:00
Giulio rebuffo
cea51685fe
attempt at fixing lightclient performance leaks (#6169) 2022-12-02 00:21:33 +01:00
Giulio rebuffo
025839afd5
moved out protobuffers for sentinel (#6145) 2022-11-29 00:00:40 +01:00
Giulio rebuffo
05be20b70b
smol refactor of lightclient CI + logs demotion (#6144) 2022-11-28 23:29:48 +01:00
Giulio rebuffo
8c67c55cc7
Created Erigon beacon downloader (#6130) 2022-11-25 16:38:22 +01:00
Giulio rebuffo
7ea8de4a3f
added checkpoint saving (#6060) 2022-11-16 16:19:40 +01:00
Giulio rebuffo
3a2d3be080
Added persistence in LightClient (#6056) 2022-11-15 20:39:18 +01:00
Andrew Ashikhmin
32629bdce4
Upgrade urfave/cli to v2 (#6047)
See also
https://github.com/urfave/cli/blob/main/docs/migrate-v1-to-v2.md
2022-11-14 17:33:57 +01:00
Giulio rebuffo
ae01026ca9
Customizable networking for Erigon Lightclient (#6032) 2022-11-11 23:22:47 +01:00
Giulio rebuffo
63a8b21bb8
switch BLS library (#5950) 2022-11-03 23:55:59 +01:00
Giulio rebuffo
5c3245d4e0
Added Checkpoint sync for CL full client (#5934) 2022-11-02 13:12:44 +01:00
Giulio rebuffo
adf5fc7b82
refactored files regarding lightclient (#5904) 2022-10-29 21:51:32 +02:00
Mike Neuder
dab1ba44d0
Test req/resp domain response decoding (#5886)
https://github.com/ledgerwatch/erigon/issues/5884 has more context on
this issue. we are trying to understand the encoding of the responses.

from the Ethereum R&D discord, AgeManning said that the prefix is
supposed to be a varint representing the length of the payload:
https://developers.google.com/protocol-buffers/docs/encoding#varints.

that works for the `&cltypes.MetadataV1{}` type, but not for
`&cltypes.MetadataV2{}` or `&cltypes.LightClientFinalityUpdate{}`.
2022-10-29 13:02:26 +02:00
Mike Neuder
29ff8daa92
req/resp heartbeat handler modifications (#5859)
addressing some aspects of the req/resp portion of the CL spec:
https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#reqresp-interaction.

this PR does a few things: 
1. moves `blocksByRangeHandler` and `beaconBlocksByRootHandler` handlers
to a different file in the `handlers` package. these are going to be the
more complicated handlers so they will be better in their own files.
2. makes `pingHandler` a method on the `*ConsensusHandlers` receiver and
starts returning the sequence number instead of the request. (see
https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#ping
`Peers request and respond with their local metadata sequence number`).
3. adds a `goodbyeHandler` to respond with a status message of 1. (see
https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#goodbye).
4. makes `statusHandler` a method on the `*ConsensusHandlers` receiver.
(the rest of this handler is still not implemented.
5. refactored the `heartbeats_test` into a table driven test. this makes
the test much more readable:
https://dave.cheney.net/2019/05/07/prefer-table-driven-tests.
2022-10-25 19:30:11 +02:00
Mike Neuder
4b5880e8d3
Adding VoluntaryExit, ProposerSlashing, and AttesterSlashing topics to pubsub service (#5851)
This is a follow on PR in support of
https://github.com/ledgerwatch/erigon/issues/5824. See
https://github.com/ledgerwatch/erigon/pull/5841 for the
`beacon_aggregate_and_proof` topic.

This PR adds support for the `voluntary_exit, proposer_slashing, and
attester_slashing` topics as defined in the phase 0 spec
https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#global-topics.

The CL types were already defined so this just adds the listening to the
pub sub service.
2022-10-24 17:52:49 +02:00
Mike Neuder
db1c2d2d82
Adding the AggregateAndProof global topic to the sentinel pubsub service (#5841)
This is the first PR in support of
https://github.com/ledgerwatch/erigon/issues/5824.

The phase 0 sepc
https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#global-topics
specifies 6 global pubsub topics that CL nodes need to handle.

This PR implements the `beacob_aggregate_and_proof` topic: 

https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#beacon_aggregate_and_proof.

The `AggregateAndProof` and `SignedAggregateAndProof` types are defined
here:
https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/validator.md#aggregateandproof.

I followed the implementation of `SignedBeaconBlockBellatrix`, which has
the following references:

1. cmd/lightclient/cltypes/types.go‎: defines the struct with relevant
SSZ annotations on the fields.
2. cmd/lightclient/cltypes/clone.go: this just returns a reference to an
empty object, so not super clear to me if it is necessary:
3. cmd/lightclient/rpc/common.go: this decodes gossip data, switching on
the type of gossip message that is received.
4. ‎cmd/lightclient/sentinel/service/service.go: this listens on the
pubsub channel and notifies when a packet of the relevant type comes in.
5. cmd/lightclient/sentinel/pubsub.go: this defines the gossip topic
struct.
6. cmd/lightclient/lightclient/subscriber.go: this is the lightclient
interface for the incoming messages that come from the sentinel.
2022-10-23 20:22:33 +02:00
Enrique Jose Avila Asapche
a874459835
got rid of time.Sleep (#5840) 2022-10-22 17:38:29 +01:00