Commit Graph

4207 Commits

Author SHA1 Message Date
tersec 21aeeaf561
automated consensus spec URL updating to v1.5.0-alpha.5 (#6504) 2024-08-21 14:25:19 +02:00
tersec 485ed833e0
use EF consensus-specs v1.5.0-alpha.5 test vectors (#6503) 2024-08-21 12:18:33 +02:00
Etan Kissling b511f3eeb7
Use Pippenger multiplication for combining multiple sigs of same msg (#6484)
Newer `blst` releases expose multiscalar Pippenger multiplication that
allows accelerated verification of signatures pertaining to same msg.

- https://gist.github.com/wemeetagain/d52fc4b077f80db6e423935244c2afb2
2024-08-16 23:42:46 +02:00
Etan Kissling 6f7c4fffe7
Synchronously check all `transactions` to have non-zero length (#6491)
Reject blocks with zero length transactions early when no EL connected.

- https://github.com/ethereum/consensus-specs/pull/3885
2024-08-16 22:52:35 +02:00
tersec 2895df128c
increase TNS state downloading timeout to 120 seconds (#6487) 2024-08-12 03:49:10 +02:00
tersec f258cba816
some v1.5.0-alpha.4 consensus spec URL updates (#6485) 2024-08-10 07:09:37 +02:00
tersec 904318cf83
automated consensus spec URL updating to v1.5.0-alpha.4 (#6483) 2024-08-09 18:24:49 +02:00
tersec 2e40a401b0
use EF consensus-specs v1.5.0-alpha.4 test vectors (#6482) 2024-08-09 15:02:04 +02:00
tersec d2c8561fcd
add some Electra config constants to beacon API config endpoint (#6479) 2024-08-07 18:15:29 +02:00
Etan Kissling 3375875e05
remove option to select Capella fork choice algo (#6478)
* remove option to select Capella fork choice algo

With Deneb having run stable for quite a while now, it's time to remove
the option to select the prior fork choice algo from Capella.

* also remove usage from test
2024-08-07 14:48:05 +00:00
tersec 535819263d
clear old electra attestations from attestation pool 2024-08-07 11:14:57 +00:00
Etan Kissling 51ca617d9f
fix LC header upgrade to Electra (#6473)
Followup on incorrect upgrade procedure in #6375 where `blob_gas_used`
was accidentally copied into `excess_blob_gas` when running Electra
`LightClientStore` with earlier `LightClient(Bootstrap|Update)`.
2024-08-06 15:48:15 +00:00
tersec c0fc0f41dd
calculate next slot's withdrawals properly even across epoch boundary (#6470) 2024-08-06 13:33:16 +02:00
tersec 8333365848
replace validator Bloom filter with partial bucket sort (#6469) 2024-08-02 07:30:22 +02:00
tersec 6a576978ba
Merge remote-tracking branch 'origin/stable' into unstable 2024-07-29 03:47:56 +00:00
tersec 0a4d3ac9c3
version v24.7.0 2024-07-29 00:45:51 +00:00
Etan Kissling ea16edd886
add test for shuffled attestation signatures (#6459)
Followup of #3212 to test proper signature verification. Also document
possible further optimization based on blst `v0.3.13`.
2024-07-26 23:31:05 +00:00
Eugene Kabanov b345c4fa72
Fix: Avoid downloading genesis multiple times, for holesky testnet. (#6452) 2024-07-26 14:54:03 +00:00
Etan Kissling 09f3882672
remove unsued `lcDataForkAtEpoch` helper (#6449)
`lcDataForkAtEpoch(.)` is not used anywhere and can be removed.
`lcDataForkAtConsensusFork(consensusForkAtEpoch(.))` saves same purpose.
2024-07-25 16:27:19 +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
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
Etan Kissling abf818a9f3
bump nim-eth to `d8fda55c79dd48ba564f3cb540b968f4a1c1aae6` (#6405)
* bump nim-eth to `d8fda55c79dd48ba564f3cb540b968f4a1c1aae6`

- Overhaul of ENR implementation - part I
- Rework of ENR decoding code
- Update discv5 to use non deprecated ENR calls and simplify code
- simplify .nimble file
- avoid warnings when processing `GasInt` for RLP
- define Electra types and RLP encoding

* explicitly indicate consensus types over nim-eth types in EL manager
2024-07-04 18:40:11 +00:00
tersec 9f654690b8
update builder API registrations after keymanager API fee recipient change (#6412) 2024-07-04 14:08:07 +02:00
Eugene Kabanov 85c2850971
Fix publishBlockV1() and publishBlockV2() SSZ decoding process. (#6408) 2024-07-04 01:08:07 +00:00
Eugene Kabanov 84a35c85c5
Fix for gcc-14 issues in kzg-4844. (#6403)
* Bump nim-kzg4844.

* Fix code to use proper KZG types.

* Add missing coma.

* Fix compilation issue.

* Bump nim-kzg4844.

* Add debugging output.

* Remove debugging output.

* Restore groupBlobs function.
2024-07-03 10:01:33 +00:00
Etan Kissling 515bd486e6
ensure passing unsigned integer to `rlp.encode` (#6397)
RLP encoding is not defined for signed integers. Make sure to use
unsigned integers when encoding RLP for EL block hash computation.
2024-07-03 01:43:16 +00:00
Etan Kissling fba8cc3ee5
fix EIP reference in Electra type definition (#6398)
The field `withdrawal_requests` is from EIP-7002 instead of EIP-6110.
2024-07-03 01:41:01 +00:00
tersec 8c67a265d0
bump nim-web3 to align WithdrawalRequestV1 with EIP-7002 and consensus spec (#6395) 2024-07-01 16:07:30 +02:00
tersec 13e766d4df
add database electra block tests (#6394) 2024-07-01 04:18:41 +00:00
Eugene Kabanov 190dbfd481
Fix empty status string handling, address #6175. (#6391) 2024-06-28 05:54:51 +02:00
Etan Kissling 9924aec1e3
extend light client protocol for Electra (#6375)
* extend light client protocol for Electra

Add missing Electra support for light client protocol:

- https://github.com/ethereum/consensus-specs/pull/3811

Tested against PR consensus-spec-tests, the test runner automatically
picks up the new tests once available.

* workaround `version-2-0`: `Error: cannot instantiate: 'SomeUnsignedInt'`

* fix initialization when Electra not scheduled

* try reduce stack size in test

* put correct sync committee branch version into DB

* adjust fork schedule in light client data tests

* further reduce stack size

* split function into multiple parts

* rename variable

* regenerate test reports to cover new Electra tests

* add Nim bug reference
2024-06-26 19:02:03 +00:00
Etan Kissling 3da85e593f
update references for LC related Nim issues (#6389)
Addresses feedback from #6375 that is applicable to pre-existing code
moreso than to the new PR.
2024-06-26 14:31:36 +02:00