Commit Graph

4248 Commits

Author SHA1 Message Date
Etan Kissling 5c1d20f28a
`StableContainer` fixes for `LightClientHeader` validation 2024-07-26 03:33:18 +02:00
Etan Kissling 02fd912f92
Merge branch 'dev/etan/df-forkedblobs' into feat_eip-7688 2024-07-26 02:01:28 +02:00
Etan Kissling 97117eb769
add Nim bug reference 2024-07-26 01:54:59 +02:00
Etan Kissling 4c9da5f1af
Merge branch 'dev/etan/df-forkedblobs' into feat_eip-7688 2024-07-26 01:39:50 +02:00
Etan Kissling f9624b5e69
`eth2_processor` fix 2024-07-26 01:38:02 +02:00
Etan Kissling c2d5a55d95
cleanup pre-deneb fallback 2024-07-26 00:03:47 +02:00
Etan Kissling 3ef3db5fb1
Merge branch 'dev/etan/df-forkedblobs' into feat_eip-7688 2024-07-25 23:05:06 +02:00
Etan Kissling 9c9f2df0ca
`Opt[seq[Forky]]` 2024-07-25 23:03:57 +02:00
Etan Kissling 2938aa40bf
Merge branch 'dev/etan/df-forkedblobs' into feat_eip-7688 2024-07-25 22:55:22 +02:00
Etan Kissling eff1acd1dc
pre-Deneb case for VC block publishing (ff) 2024-07-25 22:53:07 +02:00
Etan Kissling de0a13a263
Merge branch 'dev/etan/df-forkedblobs' into feat_eip-7688 2024-07-25 22:46:53 +02:00
Etan Kissling 365b567350
pre-Deneb case for VC block publishing 2024-07-25 22:45:36 +02:00
Etan Kissling 1b62329153
Merge branch 'dev/etan/df-forkedblobs' into feat_eip-7688 2024-07-25 22:28:32 +02:00
Etan Kissling 7d24e43080
`valueOr` needs explicit fork for default value as well 2024-07-25 22:27:35 +02:00
Etan Kissling b9154c2e6e
Merge branch 'dev/etan/df-forkedblobs' into feat_eip-7688 2024-07-25 22:10:23 +02:00
Etan Kissling 5df441d936
`ForkyBlobSidecar` in gossip validation 2024-07-25 22:09:24 +02:00
Etan Kissling af4d686edb
Merge branch 'dev/etan/df-forkedblobs' into feat_eip-7688 2024-07-25 22:00:57 +02:00
Etan Kissling 88bdc6ae55
`Opt[Forky]` does not work as it does in `ref` and `seq` / `openArray` 2024-07-25 21:59:49 +02:00
Etan Kissling 5e582cff8f
guard deneb specific ref in workaround 2024-07-25 21:59:15 +02:00
Etan Kissling bd52c5f644
Merge branch 'dev/etan/df-forkedblobs' into feat_eip-7688 2024-07-25 21:39:39 +02:00
Etan Kissling a0cd63697d
add guard to DB initialization 2024-07-25 21:36:10 +02:00
Etan Kissling e41750aab0
Merge branch 'dev/etan/df-forkedblobs' into feat_eip-7688 2024-07-25 21:33:56 +02:00
Etan Kissling a5d2cfea79
`sszdump` support for `ForkyBlobSidecar` 2024-07-25 21:32:34 +02:00
Etan Kissling 4998790ed2
fix LC helpers 2024-07-25 21:28:16 +02:00
Etan Kissling bbe41a250f
fix gindex computation in docs 2024-07-25 21:19:06 +02:00
Etan Kissling 2abfee3488
Merge branch 'dev/etan/df-forkedblobs' into feat_eip-7688 2024-07-25 21:01:33 +02:00
Etan Kissling 5fe9e93ee7
fix `ncli_db` 2024-07-25 19:30:25 +02:00
Etan Kissling d028baea2a
introduce `ForkedBlobSidecar` for EIP-7688 Electra period before PeerDAS
On `ELECTRA_FORK_EPOCH`, PeerDAS is not yet activated, hence the current
mechanism based on `BlobSidecar` is still in use. With EIP-7688, the
generalized indices of `BeaconBlockBody` get reindexed, changing the
length of the inclusion proof within the `BlobSidecar`. Because network
Req/Resp operations allow responses across fork boundaries, this creates
the need for a `ForkedBlobSidecar` in that layer, same as already done
for `ForkedSignedBeaconBock` for similar reasons.

Note: This PR is only needed if PeerDAS is adopted _after_ EIP-7688.
If PeerDAS is adopted _before_ EIP-7688, a similar PR may be needed for
forked columns. Coincidental `Forked` jank can only be fully avoided if
both features activate at the same epoch, actual changes to blobs aside.
Delaying EIP-7688 for sole purpose of epoch alignemnt is not worth it.
2024-07-25 18:54:38 +02:00
tersec 949758ed74
fix some UnusedImport warnings (#6448) 2024-07-25 08:49:26 +00:00
tersec 15cca5f93e
hypergeometric distribution CDF for PeerDAS (#6447) 2024-07-25 01:59:24 +00:00
Eugene Kabanov fd4398d4c5
Fix EL requests should do some sleep before repeating request again. (#6441) 2024-07-23 22:49:52 +00:00
Etan Kissling 20ede0ab35
use correct fork digest when broadcasting blob sidecars and sync msgs (#6440)
The fork digest determines the underlying data type on libp2p gossip,
so it's important to use the matching fork digest instead of picking
whatever wall epoch happens to be.
2024-07-23 20:30:44 +00:00
Etan Kissling 9f21182646
construct info object for `BlobSidecar` earlier (#6445)
To avoid "forked" types creeping into `BlobSidecar`, move the reduction
to `BlobSidecarInfoObject` to the sole caller. The info object is fork
agnostic, so does not need "forked" if `BlobSidecar` ever updates.
2024-07-23 20:22:29 +00:00
Etan Kissling a769550db5
rename LC gindex constants to match spec (#6444)
Use `_ELECTRA` suffix for gindex constants to match consensus-specs.
2024-07-23 20:20:15 +00:00
Etan Kissling ae0a1488b5
Fix blob syncing for Electra (#6438)
* Fix blob syncing for Electra

`BlobSidecar` requests on libp2p have a context prefix based on:

> The `<context-bytes>` field is calculated as context =
>     `compute_fork_digest(fork_version, genesis_validators_root)`

We currently only process blobs if that indicates Deneb, meaning that
on Electra we incorrectly report `InvalidContextBytes` and refuse to
process the blob response data.

Fix this, and also ensure that the code no longer needs maintenance
with every fork unrelated to blobs.

* fix
2024-07-23 03:10:41 +00:00
Etan Kissling d8df178a85
LC execution payload gindex 2024-07-22 14:15:53 +02:00
Etan Kissling 159f57f27e
LC constant rename 2024-07-22 14:13:56 +02:00
tersec 6fa852400d
pause deployment of long-range sync option default (#6436) 2024-07-21 07:10:26 +02:00
tersec ebd0217a10
fix is_eligible_for_activation_queue for electra (#6427) 2024-07-15 21:08:20 +02:00
Eugene Kabanov 7853bd2878
BN: User agent recognition and error codes decoding. (#6414)
* Initial commit.

* Force update remote agent right before disconnect.

* Add handling errors from unknown remote agents.

* Address review comments.
2024-07-15 16:53:41 +02:00
Eugene Kabanov f751fde417
Use Nimbus specific agent string instead of nim-presto defaults. (#6424)
* Use Nimbus specific agent string instead of nim-presto defaults.
Use response(code) overload.

* Fix REST API test.
2024-07-15 02:27:23 +00:00
Kim De Mey ca15c4e433
Replace deprecated ENR functions (#6419) 2024-07-12 17:18:24 +02:00
Eugene Kabanov 031033a6f9
Fix REST /eth/v1/node/identity should return proper MultiAddresses (version 2). (#6422)
* Initial commit.

* Bump nim-libp2p with dualstack fixes.

* Pass announcedAddresses to the `p2p_addresses` list.
2024-07-11 17:39:38 +02:00
tersec befcf3f56a
bump sepolia for new bootnodes (#6421) 2024-07-11 07:13:37 +02:00
Etan Kissling dc007e3977
nullability annotations for `libnimbus_lc.h` (#6417)
Annotate functions that may return `NULL` with `_Nullable` to properly
bridge into Swift.
2024-07-09 12:38:16 +02:00
tersec 3db571d182
allow individual calculation of validator balances across epoch boundaries (#6416) 2024-07-07 00:32:50 +02:00
Jhett Black 3f051e9ab0
Add beacon node count metrics. (#6371) 2024-07-06 21:07:56 +00:00
andri lim 0b276315d2
Bump nim-eth: Convert GasInt to uint64 (#6415)
* Bump nim-eth: Convert GasInt to uint64

* Fixes

* Fix libnimbus_lc
2024-07-06 20:25:31 +00:00
Etan Kissling 7f59e80aaa
validate EL block hash in Electra when no EL is connected (#6407)
When no EL is connected, it is still required to validate the block hash
of `ExecutionPayload` to prevent attacks that trick us into attesting to
a circular chain with invalid in-between block hashes. This is already
done through Deneb but was still missing in Electra to be rectified now.
2024-07-05 10:18:50 +02:00
Eugene Kabanov c59bb71916
Add implementation of publishBlindedBlockV2() REST API endpoint. (#6413) 2024-07-04 19:48:12 +00:00