Compare commits

...

11 Commits

Author SHA1 Message Date
Michael Sproul
d65fd5a495 Cap validator index at 8M in slasher 2026-04-08 12:51:22 +10:00
Michael Sproul
10ddeb8f10 Avoid double processing indexed attestations for slasher 2026-04-08 12:02:29 +10:00
Michael Sproul
176cce585c Release v8.1.3 2026-03-26 12:21:13 +11:00
Michael Sproul
7ca91b8ef4 Bump c-kzg 2026-03-26 12:18:01 +11:00
Michael Sproul
dfd715b65e Bump libp2p 2026-03-26 12:17:53 +11:00
Michael Sproul
e5facc2faf Bump yamux 2026-03-25 10:22:24 +11:00
Michael Sproul
5d6f787a06 Bump quinn 2026-03-25 10:22:24 +11:00
Lion - dapplion
91c25794fe Schedule Fulu fork for Gnosis mainnet (#9007)
Co-Authored-By: dapplion <35266934+dapplion@users.noreply.github.com>

Co-Authored-By: Michael Sproul <michael@sigmaprime.io>
2026-03-24 03:50:14 +00:00
Michael Sproul
c451ae763c Use BTreeMap for state.validators pending updates (#9017)
Closes:

- https://github.com/sigp/lighthouse/issues/9003


  Milhouse `List`s use a map in front of the binary tree to cache updates. Ever since we adopted Milhouse, we've been using `VecMap`, which is essentially `Vec<Option<T>>`. Turns out, when you've got 2M indices and only 2 non-`None` entries (changes), this is inefficient.

Milhouse is generic in the choice of map (`U: UpdateMap`) and has always supported `BTreeMap`, so this PR switches us over to `BTreeMap`. In previous benchmarks (years ago) it had been slower than `VecMap`, but now it is vastly superior.


Co-Authored-By: Michael Sproul <michael@sigmaprime.io>
2026-03-24 01:43:19 +00:00
antondlr
e21053311d Scrap redundant docker builds on releases (#8999)
Our release workflow is pretty inefficient and slow. This PR aims to consolidate and cut down on duplicate tasks.


  1) We now run the whole build process both on pushing to the `stable` branch and pushing a version tag.
A quick win is to not fire off separate builds.

~~2) The Docker release workflow could re-use the binaries being built instead of doing its own cross-compilation. ~~
we won't take this on _right now_


Co-Authored-By: antondlr <anton@sigmaprime.io>

Co-Authored-By: Michael Sproul <michaelsproul@users.noreply.github.com>

Co-Authored-By: Michael Sproul <michael@sigmaprime.io>
2026-03-23 06:25:06 +00:00
Michael Sproul
8f9c1ca9ca Bump rustls and ignore unpatched version due to Warp (#9010)
Fix the cargo-audit failure caused by:

- https://rustsec.org/advisories/RUSTSEC-2026-0049

We can't fix it completely yet because `warp 0.3` is keeping us on an old version of `rustls`.

Mac's PR here will fix it:

- https://github.com/sigp/lighthouse/pull/9001


Co-Authored-By: Michael Sproul <michael@sigmaprime.io>
2026-03-21 09:45:20 +00:00
12 changed files with 190 additions and 166 deletions

View File

@@ -4,7 +4,6 @@ on:
push:
branches:
- unstable
- stable
tags:
- v*
workflow_dispatch: # allows manual triggering for testing purposes and skips publishing an image
@@ -25,9 +24,6 @@ jobs:
if [[ "${{ github.ref }}" == refs/tags/* ]]; then
# It's a tag (e.g., v1.2.3)
VERSION="${GITHUB_REF#refs/tags/}"
elif [[ "${{ github.ref }}" == refs/heads/stable ]]; then
# stable branch -> latest
VERSION="latest"
elif [[ "${{ github.ref }}" == refs/heads/unstable ]]; then
# unstable branch -> latest-unstable
VERSION="latest-unstable"
@@ -174,3 +170,14 @@ jobs:
${IMAGE_NAME}:${VERSION}-arm64
docker manifest push ${IMAGE_NAME}:${VERSION}
# For version tags, also create/update the latest tag to keep stable up to date
# Only create latest tag for proper release versions (e.g. v1.2.3, not v1.2.3-alpha)
if [[ "${GITHUB_REF}" == refs/tags/* ]] && [[ "${VERSION}" =~ ^v[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,2}$ ]]; then
docker manifest create \
${IMAGE_NAME}:latest \
${IMAGE_NAME}:${VERSION}-amd64 \
${IMAGE_NAME}:${VERSION}-arm64
docker manifest push ${IMAGE_NAME}:latest
fi

View File

@@ -4,7 +4,6 @@ on:
push:
branches:
- unstable
- stable
tags:
- v*
@@ -28,11 +27,6 @@ jobs:
extract-version:
runs-on: ubuntu-22.04
steps:
- name: Extract version (if stable)
if: github.event.ref == 'refs/heads/stable'
run: |
echo "VERSION=latest" >> $GITHUB_ENV
echo "VERSION_SUFFIX=" >> $GITHUB_ENV
- name: Extract version (if unstable)
if: github.event.ref == 'refs/heads/unstable'
run: |
@@ -159,7 +153,16 @@ jobs:
- name: Create and push multiarch manifests
run: |
# Create the main tag (versioned for releases, latest-unstable for unstable)
docker buildx imagetools create -t ${{ github.repository_owner}}/${{ matrix.binary }}:${VERSION}${VERSION_SUFFIX} \
${{ github.repository_owner}}/${{ matrix.binary }}:${VERSION}-arm64${VERSION_SUFFIX} \
${{ github.repository_owner}}/${{ matrix.binary }}:${VERSION}-amd64${VERSION_SUFFIX};
# For version tags, also create/update the latest tag to keep stable up to date
# Only create latest tag for proper release versions (e.g. v1.2.3, not v1.2.3-alpha)
if [[ "${GITHUB_REF}" == refs/tags/* ]] && [[ "${VERSION}" =~ ^v[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,2}$ ]]; then
docker buildx imagetools create -t ${{ github.repository_owner}}/${{ matrix.binary }}:latest \
${{ github.repository_owner}}/${{ matrix.binary }}:${VERSION}-arm64${VERSION_SUFFIX} \
${{ github.repository_owner}}/${{ matrix.binary }}:${VERSION}-amd64${VERSION_SUFFIX};
fi

263
Cargo.lock generated
View File

@@ -4,7 +4,7 @@ version = 4
[[package]]
name = "account_manager"
version = "8.1.2"
version = "8.1.3"
dependencies = [
"account_utils",
"bls",
@@ -399,7 +399,7 @@ checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -510,7 +510,7 @@ dependencies = [
"proc-macro-error2",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -526,7 +526,7 @@ dependencies = [
"proc-macro-error2",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
"syn-solidity",
"tiny-keccak",
]
@@ -543,7 +543,7 @@ dependencies = [
"macro-string",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
"syn-solidity",
]
@@ -632,7 +632,7 @@ dependencies = [
"darling 0.21.3",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -815,7 +815,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60"
dependencies = [
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -853,7 +853,7 @@ dependencies = [
"num-traits",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -964,7 +964,7 @@ checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
"synstructure",
]
@@ -976,7 +976,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -1055,7 +1055,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -1066,7 +1066,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -1108,7 +1108,7 @@ checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -1276,7 +1276,7 @@ dependencies = [
[[package]]
name = "beacon_node"
version = "8.1.2"
version = "8.1.3"
dependencies = [
"account_utils",
"beacon_chain",
@@ -1378,7 +1378,7 @@ dependencies = [
"regex",
"rustc-hash 1.1.0",
"shlex",
"syn 2.0.111",
"syn 2.0.117",
"which",
]
@@ -1513,7 +1513,7 @@ dependencies = [
[[package]]
name = "boot_node"
version = "8.1.2"
version = "8.1.3"
dependencies = [
"beacon_node",
"bytes",
@@ -1553,7 +1553,7 @@ dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -1617,9 +1617,9 @@ dependencies = [
[[package]]
name = "c-kzg"
version = "2.1.5"
version = "2.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e00bf4b112b07b505472dbefd19e37e53307e2bfed5a79e0cc161d58ccd0e687"
checksum = "6648ed1e4ea8e8a1a4a2c78e1cda29a3fd500bc622899c340d8525ea9a76b24a"
dependencies = [
"blst",
"cc",
@@ -1820,7 +1820,7 @@ dependencies = [
"heck",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -1909,7 +1909,7 @@ version = "3.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fde0e0ec90c9dfb3b4b1a0891a7dcd0e2bffde2f7efed5fe7c9bb00e5bfb915e"
dependencies = [
"windows-sys 0.48.0",
"windows-sys 0.59.0",
]
[[package]]
@@ -2276,7 +2276,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -2334,7 +2334,7 @@ dependencies = [
"proc-macro2",
"quote",
"strsim 0.11.1",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -2349,7 +2349,7 @@ dependencies = [
"quote",
"serde",
"strsim 0.11.1",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -2371,7 +2371,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead"
dependencies = [
"darling_core 0.20.11",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -2382,7 +2382,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81"
dependencies = [
"darling_core 0.21.3",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -2549,7 +2549,7 @@ checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -2570,7 +2570,7 @@ dependencies = [
"darling 0.20.11",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -2580,7 +2580,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c"
dependencies = [
"derive_builder_core",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -2593,7 +2593,7 @@ dependencies = [
"proc-macro2",
"quote",
"rustc_version 0.4.1",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -2615,7 +2615,7 @@ dependencies = [
"proc-macro2",
"quote",
"rustc_version 0.4.1",
"syn 2.0.111",
"syn 2.0.117",
"unicode-xid",
]
@@ -2722,7 +2722,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -2817,7 +2817,7 @@ dependencies = [
"enum-ordinalize",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -3040,7 +3040,7 @@ dependencies = [
"heck",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -3060,7 +3060,7 @@ checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -3098,7 +3098,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
dependencies = [
"libc",
"windows-sys 0.61.2",
"windows-sys 0.59.0",
]
[[package]]
@@ -3287,7 +3287,7 @@ dependencies = [
"darling 0.20.11",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -3700,7 +3700,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -3819,7 +3819,7 @@ dependencies = [
"proc-macro-error2",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -4613,7 +4613,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -4729,7 +4729,7 @@ checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46"
dependencies = [
"hermit-abi",
"libc",
"windows-sys 0.61.2",
"windows-sys 0.59.0",
]
[[package]]
@@ -4897,7 +4897,7 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
[[package]]
name = "lcli"
version = "8.1.2"
version = "8.1.3"
dependencies = [
"account_utils",
"beacon_chain",
@@ -4958,9 +4958,9 @@ dependencies = [
[[package]]
name = "libc"
version = "0.2.178"
version = "0.2.183"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091"
checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d"
[[package]]
name = "libloading"
@@ -4996,7 +4996,7 @@ dependencies = [
[[package]]
name = "libp2p"
version = "0.56.1"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=f88e43de9eba00b416d0374b1a1fb2de47b65864#f88e43de9eba00b416d0374b1a1fb2de47b65864"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=defcaf1a78cf5b70a723b3fee0e0be051c1dbd88#defcaf1a78cf5b70a723b3fee0e0be051c1dbd88"
dependencies = [
"bytes",
"either",
@@ -5027,7 +5027,7 @@ dependencies = [
[[package]]
name = "libp2p-allow-block-list"
version = "0.6.0"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=f88e43de9eba00b416d0374b1a1fb2de47b65864#f88e43de9eba00b416d0374b1a1fb2de47b65864"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=defcaf1a78cf5b70a723b3fee0e0be051c1dbd88#defcaf1a78cf5b70a723b3fee0e0be051c1dbd88"
dependencies = [
"libp2p-core",
"libp2p-identity",
@@ -5037,7 +5037,7 @@ dependencies = [
[[package]]
name = "libp2p-connection-limits"
version = "0.6.0"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=f88e43de9eba00b416d0374b1a1fb2de47b65864#f88e43de9eba00b416d0374b1a1fb2de47b65864"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=defcaf1a78cf5b70a723b3fee0e0be051c1dbd88#defcaf1a78cf5b70a723b3fee0e0be051c1dbd88"
dependencies = [
"libp2p-core",
"libp2p-identity",
@@ -5047,7 +5047,7 @@ dependencies = [
[[package]]
name = "libp2p-core"
version = "0.43.2"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=f88e43de9eba00b416d0374b1a1fb2de47b65864#f88e43de9eba00b416d0374b1a1fb2de47b65864"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=defcaf1a78cf5b70a723b3fee0e0be051c1dbd88#defcaf1a78cf5b70a723b3fee0e0be051c1dbd88"
dependencies = [
"either",
"fnv",
@@ -5070,10 +5070,9 @@ dependencies = [
[[package]]
name = "libp2p-dns"
version = "0.44.0"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=f88e43de9eba00b416d0374b1a1fb2de47b65864#f88e43de9eba00b416d0374b1a1fb2de47b65864"
version = "0.45.0"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=defcaf1a78cf5b70a723b3fee0e0be051c1dbd88#defcaf1a78cf5b70a723b3fee0e0be051c1dbd88"
dependencies = [
"async-trait",
"futures",
"hickory-resolver",
"libp2p-core",
@@ -5086,7 +5085,7 @@ dependencies = [
[[package]]
name = "libp2p-gossipsub"
version = "0.50.0"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=f88e43de9eba00b416d0374b1a1fb2de47b65864#f88e43de9eba00b416d0374b1a1fb2de47b65864"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=defcaf1a78cf5b70a723b3fee0e0be051c1dbd88#defcaf1a78cf5b70a723b3fee0e0be051c1dbd88"
dependencies = [
"async-channel 2.5.0",
"asynchronous-codec",
@@ -5116,7 +5115,7 @@ dependencies = [
[[package]]
name = "libp2p-identify"
version = "0.47.0"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=f88e43de9eba00b416d0374b1a1fb2de47b65864#f88e43de9eba00b416d0374b1a1fb2de47b65864"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=defcaf1a78cf5b70a723b3fee0e0be051c1dbd88#defcaf1a78cf5b70a723b3fee0e0be051c1dbd88"
dependencies = [
"asynchronous-codec",
"either",
@@ -5156,7 +5155,7 @@ dependencies = [
[[package]]
name = "libp2p-mdns"
version = "0.48.0"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=f88e43de9eba00b416d0374b1a1fb2de47b65864#f88e43de9eba00b416d0374b1a1fb2de47b65864"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=defcaf1a78cf5b70a723b3fee0e0be051c1dbd88#defcaf1a78cf5b70a723b3fee0e0be051c1dbd88"
dependencies = [
"futures",
"hickory-proto",
@@ -5174,7 +5173,7 @@ dependencies = [
[[package]]
name = "libp2p-metrics"
version = "0.17.1"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=f88e43de9eba00b416d0374b1a1fb2de47b65864#f88e43de9eba00b416d0374b1a1fb2de47b65864"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=defcaf1a78cf5b70a723b3fee0e0be051c1dbd88#defcaf1a78cf5b70a723b3fee0e0be051c1dbd88"
dependencies = [
"futures",
"libp2p-core",
@@ -5190,7 +5189,7 @@ dependencies = [
[[package]]
name = "libp2p-mplex"
version = "0.43.1"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=f88e43de9eba00b416d0374b1a1fb2de47b65864#f88e43de9eba00b416d0374b1a1fb2de47b65864"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=defcaf1a78cf5b70a723b3fee0e0be051c1dbd88#defcaf1a78cf5b70a723b3fee0e0be051c1dbd88"
dependencies = [
"asynchronous-codec",
"bytes",
@@ -5208,7 +5207,7 @@ dependencies = [
[[package]]
name = "libp2p-noise"
version = "0.46.1"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=f88e43de9eba00b416d0374b1a1fb2de47b65864#f88e43de9eba00b416d0374b1a1fb2de47b65864"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=defcaf1a78cf5b70a723b3fee0e0be051c1dbd88#defcaf1a78cf5b70a723b3fee0e0be051c1dbd88"
dependencies = [
"asynchronous-codec",
"bytes",
@@ -5230,7 +5229,7 @@ dependencies = [
[[package]]
name = "libp2p-quic"
version = "0.13.0"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=f88e43de9eba00b416d0374b1a1fb2de47b65864#f88e43de9eba00b416d0374b1a1fb2de47b65864"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=defcaf1a78cf5b70a723b3fee0e0be051c1dbd88#defcaf1a78cf5b70a723b3fee0e0be051c1dbd88"
dependencies = [
"futures",
"futures-timer",
@@ -5251,7 +5250,7 @@ dependencies = [
[[package]]
name = "libp2p-swarm"
version = "0.47.1"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=f88e43de9eba00b416d0374b1a1fb2de47b65864#f88e43de9eba00b416d0374b1a1fb2de47b65864"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=defcaf1a78cf5b70a723b3fee0e0be051c1dbd88#defcaf1a78cf5b70a723b3fee0e0be051c1dbd88"
dependencies = [
"either",
"fnv",
@@ -5272,17 +5271,17 @@ dependencies = [
[[package]]
name = "libp2p-swarm-derive"
version = "0.35.1"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=f88e43de9eba00b416d0374b1a1fb2de47b65864#f88e43de9eba00b416d0374b1a1fb2de47b65864"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=defcaf1a78cf5b70a723b3fee0e0be051c1dbd88#defcaf1a78cf5b70a723b3fee0e0be051c1dbd88"
dependencies = [
"heck",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
name = "libp2p-tcp"
version = "0.44.1"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=f88e43de9eba00b416d0374b1a1fb2de47b65864#f88e43de9eba00b416d0374b1a1fb2de47b65864"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=defcaf1a78cf5b70a723b3fee0e0be051c1dbd88#defcaf1a78cf5b70a723b3fee0e0be051c1dbd88"
dependencies = [
"futures",
"futures-timer",
@@ -5297,7 +5296,7 @@ dependencies = [
[[package]]
name = "libp2p-tls"
version = "0.6.2"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=f88e43de9eba00b416d0374b1a1fb2de47b65864#f88e43de9eba00b416d0374b1a1fb2de47b65864"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=defcaf1a78cf5b70a723b3fee0e0be051c1dbd88#defcaf1a78cf5b70a723b3fee0e0be051c1dbd88"
dependencies = [
"futures",
"futures-rustls",
@@ -5306,7 +5305,7 @@ dependencies = [
"rcgen",
"ring",
"rustls 0.23.35",
"rustls-webpki 0.103.8",
"rustls-webpki 0.103.10",
"thiserror 2.0.17",
"x509-parser",
"yasna",
@@ -5315,7 +5314,7 @@ dependencies = [
[[package]]
name = "libp2p-upnp"
version = "0.6.0"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=f88e43de9eba00b416d0374b1a1fb2de47b65864#f88e43de9eba00b416d0374b1a1fb2de47b65864"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=defcaf1a78cf5b70a723b3fee0e0be051c1dbd88#defcaf1a78cf5b70a723b3fee0e0be051c1dbd88"
dependencies = [
"futures",
"futures-timer",
@@ -5329,7 +5328,7 @@ dependencies = [
[[package]]
name = "libp2p-yamux"
version = "0.47.0"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=f88e43de9eba00b416d0374b1a1fb2de47b65864#f88e43de9eba00b416d0374b1a1fb2de47b65864"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=defcaf1a78cf5b70a723b3fee0e0be051c1dbd88#defcaf1a78cf5b70a723b3fee0e0be051c1dbd88"
dependencies = [
"either",
"futures",
@@ -5337,7 +5336,7 @@ dependencies = [
"thiserror 2.0.17",
"tracing",
"yamux 0.12.1",
"yamux 0.13.8",
"yamux 0.13.10",
]
[[package]]
@@ -5383,7 +5382,7 @@ dependencies = [
[[package]]
name = "lighthouse"
version = "8.1.2"
version = "8.1.3"
dependencies = [
"account_manager",
"account_utils",
@@ -5515,7 +5514,7 @@ dependencies = [
[[package]]
name = "lighthouse_version"
version = "8.1.2"
version = "8.1.3"
dependencies = [
"regex",
]
@@ -5673,7 +5672,7 @@ checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -5894,7 +5893,7 @@ dependencies = [
"cfg-if",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -5906,7 +5905,7 @@ dependencies = [
"cfg-if",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -6021,7 +6020,7 @@ dependencies = [
[[package]]
name = "multistream-select"
version = "0.13.0"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=f88e43de9eba00b416d0374b1a1fb2de47b65864#f88e43de9eba00b416d0374b1a1fb2de47b65864"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=defcaf1a78cf5b70a723b3fee0e0be051c1dbd88#defcaf1a78cf5b70a723b3fee0e0be051c1dbd88"
dependencies = [
"bytes",
"futures",
@@ -6074,7 +6073,7 @@ dependencies = [
"proc-macro2",
"quote",
"serde",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -6291,7 +6290,7 @@ version = "0.50.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
dependencies = [
"windows-sys 0.61.2",
"windows-sys 0.59.0",
]
[[package]]
@@ -6385,7 +6384,7 @@ checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -6484,7 +6483,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -6649,7 +6648,7 @@ dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -6740,7 +6739,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -6913,7 +6912,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b"
dependencies = [
"proc-macro2",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -6955,7 +6954,7 @@ dependencies = [
"proc-macro-error-attr2",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -7022,7 +7021,7 @@ checksum = "9adf1691c04c0a5ff46ff8f262b58beb07b0dbb61f96f9f54f6cbd82106ed87f"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -7052,7 +7051,7 @@ checksum = "095a99f75c69734802359b682be8daaf8980296731f6470434ea2c652af1dd30"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -7075,7 +7074,7 @@ dependencies = [
"itertools 0.14.0",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -7137,7 +7136,7 @@ dependencies = [
[[package]]
name = "quick-protobuf-codec"
version = "0.3.1"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=f88e43de9eba00b416d0374b1a1fb2de47b65864#f88e43de9eba00b416d0374b1a1fb2de47b65864"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=defcaf1a78cf5b70a723b3fee0e0be051c1dbd88#defcaf1a78cf5b70a723b3fee0e0be051c1dbd88"
dependencies = [
"asynchronous-codec",
"bytes",
@@ -7149,7 +7148,8 @@ dependencies = [
[[package]]
name = "quinn"
version = "0.11.9"
source = "git+https://github.com/sigp/quinn?rev=59af87979c8411864c1cb68613222f54ed2930a7#59af87979c8411864c1cb68613222f54ed2930a7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20"
dependencies = [
"bytes",
"cfg_aliases",
@@ -7159,7 +7159,7 @@ dependencies = [
"quinn-udp",
"rustc-hash 2.1.1",
"rustls 0.23.35",
"socket2 0.5.10",
"socket2 0.6.1",
"thiserror 2.0.17",
"tokio",
"tracing",
@@ -7168,8 +7168,9 @@ dependencies = [
[[package]]
name = "quinn-proto"
version = "0.11.13"
source = "git+https://github.com/sigp/quinn?rev=59af87979c8411864c1cb68613222f54ed2930a7#59af87979c8411864c1cb68613222f54ed2930a7"
version = "0.11.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098"
dependencies = [
"bytes",
"getrandom 0.3.4",
@@ -7189,14 +7190,15 @@ dependencies = [
[[package]]
name = "quinn-udp"
version = "0.5.14"
source = "git+https://github.com/sigp/quinn?rev=59af87979c8411864c1cb68613222f54ed2930a7#59af87979c8411864c1cb68613222f54ed2930a7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd"
dependencies = [
"cfg_aliases",
"libc",
"once_cell",
"socket2 0.5.10",
"socket2 0.6.1",
"tracing",
"windows-sys 0.52.0",
"windows-sys 0.59.0",
]
[[package]]
@@ -7409,14 +7411,14 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
name = "regex"
version = "1.12.2"
version = "1.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4"
checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276"
dependencies = [
"aho-corasick",
"memchr",
@@ -7713,7 +7715,7 @@ dependencies = [
"errno",
"libc",
"linux-raw-sys 0.11.0",
"windows-sys 0.61.2",
"windows-sys 0.59.0",
]
[[package]]
@@ -7740,7 +7742,7 @@ dependencies = [
"once_cell",
"ring",
"rustls-pki-types",
"rustls-webpki 0.103.8",
"rustls-webpki 0.103.10",
"subtle",
"zeroize",
]
@@ -7789,9 +7791,9 @@ dependencies = [
[[package]]
name = "rustls-webpki"
version = "0.103.8"
version = "0.103.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52"
checksum = "df33b2b81ac578cabaf06b89b0631153a3f416b0a886e8a7a1707fb51abbd1ef"
dependencies = [
"ring",
"rustls-pki-types",
@@ -7819,7 +7821,7 @@ dependencies = [
[[package]]
name = "rw-stream-sink"
version = "0.4.0"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=f88e43de9eba00b416d0374b1a1fb2de47b65864#f88e43de9eba00b416d0374b1a1fb2de47b65864"
source = "git+https://github.com/sigp/rust-libp2p.git?rev=defcaf1a78cf5b70a723b3fee0e0be051c1dbd88#defcaf1a78cf5b70a723b3fee0e0be051c1dbd88"
dependencies = [
"futures",
"pin-project",
@@ -8068,7 +8070,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -8092,7 +8094,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -8135,7 +8137,7 @@ dependencies = [
"darling 0.21.3",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -8600,7 +8602,7 @@ dependencies = [
"heck",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -8620,7 +8622,7 @@ dependencies = [
"proc-macro2",
"quote",
"smallvec",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -8646,9 +8648,9 @@ dependencies = [
[[package]]
name = "syn"
version = "2.0.111"
version = "2.0.117"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87"
checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
dependencies = [
"proc-macro2",
"quote",
@@ -8664,7 +8666,7 @@ dependencies = [
"paste",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -8684,7 +8686,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -8778,7 +8780,7 @@ dependencies = [
"getrandom 0.3.4",
"once_cell",
"rustix 1.1.2",
"windows-sys 0.61.2",
"windows-sys 0.59.0",
]
[[package]]
@@ -8802,7 +8804,7 @@ name = "test_random_derive"
version = "0.2.0"
dependencies = [
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -8831,7 +8833,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -8842,7 +8844,7 @@ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -8999,9 +9001,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]]
name = "tokio"
version = "1.48.0"
version = "1.50.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408"
checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d"
dependencies = [
"bytes",
"libc",
@@ -9023,7 +9025,7 @@ checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -9273,7 +9275,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -9376,7 +9378,7 @@ dependencies = [
"darling 0.21.3",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -9619,7 +9621,7 @@ dependencies = [
[[package]]
name = "validator_client"
version = "8.1.2"
version = "8.1.3"
dependencies = [
"account_utils",
"beacon_node_fallback",
@@ -9981,7 +9983,7 @@ dependencies = [
"bumpalo",
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
"wasm-bindgen-shared",
]
@@ -10129,7 +10131,7 @@ version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
dependencies = [
"windows-sys 0.48.0",
"windows-sys 0.59.0",
]
[[package]]
@@ -10191,7 +10193,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -10202,7 +10204,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -10603,8 +10605,9 @@ dependencies = [
[[package]]
name = "yamux"
version = "0.13.8"
source = "git+https://github.com/sigp/rust-yamux?rev=29efa6aebd4bdfcb16bfb21969ec0c785e570b74#29efa6aebd4bdfcb16bfb21969ec0c785e570b74"
version = "0.13.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1991f6690292030e31b0144d73f5e8368936c58e45e7068254f7138b23b00672"
dependencies = [
"futures",
"log",
@@ -10644,7 +10647,7 @@ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
"synstructure",
]
@@ -10665,7 +10668,7 @@ checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -10685,7 +10688,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
"synstructure",
]
@@ -10707,7 +10710,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]
@@ -10740,7 +10743,7 @@ checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
"syn 2.0.117",
]
[[package]]

View File

@@ -91,7 +91,7 @@ resolver = "2"
[workspace.package]
edition = "2024"
version = "8.1.2"
version = "8.1.3"
[workspace.dependencies]
account_utils = { path = "common/account_utils" }
@@ -279,9 +279,7 @@ debug = true
[patch.crates-io]
quick-protobuf = { git = "https://github.com/sigp/quick-protobuf.git", rev = "87c4ccb9bb2af494de375f5f6c62850badd26304" }
yamux = { git = "https://github.com/sigp/rust-yamux", rev = "29efa6aebd4bdfcb16bfb21969ec0c785e570b74" }
quinn = { git = "https://github.com/sigp/quinn", rev = "59af87979c8411864c1cb68613222f54ed2930a7" }
[patch."https://github.com/libp2p/rust-libp2p.git"]
libp2p = { git = "https://github.com/sigp/rust-libp2p.git", rev = "f88e43de9eba00b416d0374b1a1fb2de47b65864" }
libp2p-mplex = { git = "https://github.com/sigp/rust-libp2p.git", rev = "f88e43de9eba00b416d0374b1a1fb2de47b65864" }
libp2p = { git = "https://github.com/sigp/rust-libp2p.git", rev = "defcaf1a78cf5b70a723b3fee0e0be051c1dbd88" }
libp2p-mplex = { git = "https://github.com/sigp/rust-libp2p.git", rev = "defcaf1a78cf5b70a723b3fee0e0be051c1dbd88" }

View File

@@ -324,7 +324,7 @@ install-audit:
cargo install --force cargo-audit
audit-CI:
cargo audit
cargo audit --ignore RUSTSEC-2026-0049
# Runs cargo deny (check for banned crates, duplicate versions, and source restrictions)
deny: install-deny deny-CI

View File

@@ -507,11 +507,6 @@ impl<'a, T: BeaconChainTypes> IndexedAggregatedAttestation<'a, T> {
chain: &BeaconChain<T>,
) -> Result<Self, Error> {
Self::verify_slashable(signed_aggregate, chain)
.inspect(|verified_aggregate| {
if let Some(slasher) = chain.slasher.as_ref() {
slasher.accept_attestation(verified_aggregate.indexed_attestation.clone());
}
})
.map_err(|slash_info| process_slash_info(slash_info, chain))
}
@@ -933,11 +928,6 @@ impl<'a, T: BeaconChainTypes> IndexedUnaggregatedAttestation<'a, T> {
chain: &BeaconChain<T>,
) -> Result<Self, Error> {
Self::verify_slashable(attestation, subnet_id, chain)
.inspect(|verified_unaggregated| {
if let Some(slasher) = chain.slasher.as_ref() {
slasher.accept_attestation(verified_unaggregated.indexed_attestation.clone());
}
})
.map_err(|slash_info| process_slash_info(slash_info, chain))
}

View File

@@ -46,7 +46,7 @@ ELECTRA_FORK_VERSION: 0x05000064
ELECTRA_FORK_EPOCH: 1337856 # 2025-04-30T14:03:40.000Z
# Fulu
FULU_FORK_VERSION: 0x06000064
FULU_FORK_EPOCH: 18446744073709551615
FULU_FORK_EPOCH: 1714688 # Tue Apr 14 2026 12:06:20 GMT+0000
# Gloas
GLOAS_FORK_VERSION: 0x07000064
GLOAS_FORK_EPOCH: 18446744073709551615
@@ -156,6 +156,11 @@ NUMBER_OF_CUSTODY_GROUPS: 128
DATA_COLUMN_SIDECAR_SUBNET_COUNT: 128
SAMPLES_PER_SLOT: 8
CUSTODY_REQUIREMENT: 4
VALIDATOR_CUSTODY_REQUIREMENT: 8
BALANCE_PER_ADDITIONAL_CUSTODY_GROUP: 32000000000
MAX_REQUEST_DATA_COLUMN_SIDECARS: 16384
# `2**14` (= 16384 epochs, ~15 days)
MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS: 16384
MAX_BLOBS_PER_BLOCK_FULU: 12
# Gloas

View File

@@ -4,8 +4,8 @@ use milhouse::List;
use std::sync::Arc;
use types::{
BeaconStateError, Epoch, EthSpec, ParticipationFlags, ProgressiveBalancesCache, SyncCommittee,
Validator,
consts::altair::{TIMELY_HEAD_FLAG_INDEX, TIMELY_SOURCE_FLAG_INDEX, TIMELY_TARGET_FLAG_INDEX},
state::Validators,
};
/// Provides a summary of validator participation during the epoch.
@@ -26,7 +26,7 @@ pub enum EpochProcessingSummary<E: EthSpec> {
#[derive(PartialEq, Debug)]
pub struct ParticipationEpochSummary<E: EthSpec> {
/// Copy of the validator registry prior to mutation.
validators: List<Validator, E::ValidatorRegistryLimit>,
validators: Validators<E>,
/// Copy of the participation flags for the previous epoch.
previous_epoch_participation: List<ParticipationFlags, E::ValidatorRegistryLimit>,
/// Copy of the participation flags for the current epoch.
@@ -37,7 +37,7 @@ pub struct ParticipationEpochSummary<E: EthSpec> {
impl<E: EthSpec> ParticipationEpochSummary<E> {
pub fn new(
validators: List<Validator, E::ValidatorRegistryLimit>,
validators: Validators<E>,
previous_epoch_participation: List<ParticipationFlags, E::ValidatorRegistryLimit>,
current_epoch_participation: List<ParticipationFlags, E::ValidatorRegistryLimit>,
previous_epoch: Epoch,

View File

@@ -1604,7 +1604,7 @@ impl ChainSpec {
* Fulu hard fork params
*/
fulu_fork_version: [0x06, 0x00, 0x00, 0x64],
fulu_fork_epoch: None,
fulu_fork_epoch: Some(Epoch::new(1714688)),
custody_requirement: 4,
number_of_custody_groups: 128,
data_column_sidecar_subnet_count: 128,
@@ -1673,8 +1673,7 @@ impl ChainSpec {
* Networking Fulu specific
*/
blob_schedule: BlobSchedule::default(),
min_epochs_for_data_column_sidecars_requests:
default_min_epochs_for_data_column_sidecars_requests(),
min_epochs_for_data_column_sidecars_requests: 16384,
max_data_columns_by_root_request: default_data_columns_by_root_request(),
/*

View File

@@ -14,6 +14,7 @@ use serde::{Deserialize, Deserializer, Serialize};
use ssz::{Decode, DecodeError, Encode, ssz_encode};
use ssz_derive::{Decode, Encode};
use ssz_types::{BitVector, FixedVector};
use std::collections::BTreeMap;
use superstruct::superstruct;
use swap_or_not_shuffle::compute_shuffled_index;
use test_random_derive::TestRandom;
@@ -58,7 +59,8 @@ pub const CACHED_EPOCHS: usize = 3;
const MAX_RANDOM_BYTE: u64 = (1 << 8) - 1;
const MAX_RANDOM_VALUE: u64 = (1 << 16) - 1;
pub type Validators<E> = List<Validator, <E as EthSpec>::ValidatorRegistryLimit>;
pub type Validators<E> =
List<Validator, <E as EthSpec>::ValidatorRegistryLimit, BTreeMap<usize, Validator>>;
pub type Balances<E> = List<u64, <E as EthSpec>::ValidatorRegistryLimit>;
#[derive(Debug, PartialEq, Clone)]
@@ -453,7 +455,7 @@ where
// Registry
#[compare_fields(as_iter)]
#[test_random(default)]
pub validators: List<Validator, E::ValidatorRegistryLimit>,
pub validators: Validators<E>,
#[serde(with = "ssz_types::serde_utils::quoted_u64_var_list")]
#[compare_fields(as_iter)]
#[test_random(default)]

View File

@@ -17,7 +17,7 @@ pub use balance::Balance;
pub use beacon_state::{
BeaconState, BeaconStateAltair, BeaconStateBase, BeaconStateBellatrix, BeaconStateCapella,
BeaconStateDeneb, BeaconStateElectra, BeaconStateError, BeaconStateFulu, BeaconStateGloas,
BeaconStateHash, BeaconStateRef, CACHED_EPOCHS,
BeaconStateHash, BeaconStateRef, CACHED_EPOCHS, Validators,
};
pub use committee_cache::{
CommitteeCache, compute_committee_index_in_epoch, compute_committee_range_in_epoch,

View File

@@ -2,8 +2,17 @@ use crate::{AttesterRecord, Config, IndexedAttesterRecord};
use parking_lot::Mutex;
use std::collections::BTreeMap;
use std::sync::{Arc, Weak};
use tracing::warn;
use types::{EthSpec, Hash256, IndexedAttestation};
/// Hard cap on validator indices accepted by the slasher.
///
/// Any attestation referencing a validator index above this limit is silently dropped during
/// grouping. This is a defence-in-depth measure to prevent pathological memory allocation if an
/// attestation with a bogus index somehow reaches the slasher. The value (2^23 = 8,388,608)
/// provides generous headroom above the current mainnet validator set (~2M).
const MAX_VALIDATOR_INDEX: u64 = 8_388_608;
/// Staging area for attestations received from the network.
///
/// Attestations are not grouped by validator index at this stage so that they can be easily
@@ -72,6 +81,14 @@ impl<E: EthSpec> AttestationBatch<E> {
let mut grouped_attestations = GroupedAttestations { subqueues: vec![] };
for ((validator_index, _), indexed_record) in self.attesters {
if validator_index >= MAX_VALIDATOR_INDEX {
warn!(
validator_index,
"Dropping slasher attestation with out-of-range validator index"
);
continue;
}
let subqueue_id = config.validator_chunk_index(validator_index);
if subqueue_id >= grouped_attestations.subqueues.len() {