diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index a8919337a9..cdec442276 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -1,2 +1,3 @@
/beacon_node/network/ @jxs
/beacon_node/lighthouse_network/ @jxs
+/beacon_node/store/ @michaelsproul
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE/default-issue-template.md
similarity index 79%
rename from .github/ISSUE_TEMPLATE.md
rename to .github/ISSUE_TEMPLATE/default-issue-template.md
index d73b9ff6f0..784add20f3 100644
--- a/.github/ISSUE_TEMPLATE.md
+++ b/.github/ISSUE_TEMPLATE/default-issue-template.md
@@ -1,3 +1,12 @@
+---
+name: Default issue template
+about: Use this template for all issues
+title: ''
+labels: ''
+assignees: ''
+
+---
+
## Description
Please provide a brief description of the issue.
diff --git a/.github/mergify.yml b/.github/mergify.yml
index 73267904b8..0b917b2546 100644
--- a/.github/mergify.yml
+++ b/.github/mergify.yml
@@ -1,8 +1,10 @@
pull_request_rules:
- name: Ask to resolve conflict
conditions:
+ - -closed
- conflict
- -author=dependabot[bot]
+ - label=ready-for-review
- or:
- -draft # Don't report conflicts on regular draft.
- and: # Do report conflicts on draft that are scheduled for the next major release.
@@ -12,6 +14,64 @@ pull_request_rules:
comment:
message: This pull request has merge conflicts. Could you please resolve them
@{{author}}? 🙏
+ label:
+ add:
+ - waiting-on-author
+ remove:
+ - ready-for-review
+
+ - name: Ask to resolve CI failures
+ conditions:
+ - -closed
+ - label=ready-for-review
+ - or:
+ - check-skipped=test-suite-success
+ - check-skipped=local-testnet-success
+ - check-failure=test-suite-success
+ - check-failure=local-testnet-success
+ actions:
+ comment:
+ message: Some required checks have failed. Could you please take a look @{{author}}? 🙏
+ label:
+ add:
+ - waiting-on-author
+ remove:
+ - ready-for-review
+
+ - name: Update labels when PR is unblocked
+ conditions:
+ - -closed
+ - -draft
+ - label=waiting-on-author
+ - -conflict
+ # Unfortunately, it doesn't look like there's an easy way to check for PRs pending
+ # CI workflows approvals.
+ - check-success=test-suite-success
+ - check-success=local-testnet-success
+ # Update the label only if there are no more change requests from any reviewers and no unresolved threads.
+ # This rule ensures that a PR with passing CI can be marked as `waiting-on-author`.
+ - "#changes-requested-reviews-by = 0"
+ - "#review-threads-unresolved = 0"
+ actions:
+ label:
+ remove:
+ - waiting-on-author
+ add:
+ - ready-for-review
+
+ - name: Close stale pull request after 30 days of inactivity
+ conditions:
+ - -closed
+ - label=waiting-on-author
+ - updated-at<=30 days ago
+ actions:
+ close:
+ message: >
+ Hi @{{author}}, this pull request has been closed automatically due to 30 days of inactivity.
+ If you’d like to continue working on it, feel free to reopen at any time.
+ label:
+ add:
+ - stale
- name: Approve trivial maintainer PRs
conditions:
@@ -45,6 +105,10 @@ queue_rules:
{{ body | get_section("## Proposed Changes", "") }}
+
+ {% for commit in commits | unique(attribute='email_author') %}
+ Co-Authored-By: {{ commit.author }} <{{ commit.email_author }}>
+ {% endfor %}
queue_conditions:
- "#approved-reviews-by >= 1"
- "check-success=license/cla"
diff --git a/.github/workflows/book.yml b/.github/workflows/book.yml
index e9db3b6ab1..2834d9f36a 100644
--- a/.github/workflows/book.yml
+++ b/.github/workflows/book.yml
@@ -13,7 +13,7 @@ jobs:
build-and-upload-to-s3:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- name: Setup mdBook
uses: peaceiris/actions-mdbook@v1
diff --git a/.github/workflows/docker-reproducible.yml b/.github/workflows/docker-reproducible.yml
new file mode 100644
index 0000000000..f3479e9468
--- /dev/null
+++ b/.github/workflows/docker-reproducible.yml
@@ -0,0 +1,176 @@
+name: docker-reproducible
+
+on:
+ push:
+ branches:
+ - unstable
+ - stable
+ tags:
+ - v*
+ workflow_dispatch: # allows manual triggering for testing purposes and skips publishing an image
+
+env:
+ DOCKER_REPRODUCIBLE_IMAGE_NAME: >-
+ ${{ github.repository_owner }}/lighthouse-reproducible
+ DOCKER_PASSWORD: ${{ secrets.DH_KEY }}
+ DOCKER_USERNAME: ${{ secrets.DH_ORG }}
+
+jobs:
+ extract-version:
+ name: extract version
+ runs-on: ubuntu-22.04
+ steps:
+ - name: Extract version
+ run: |
+ 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"
+ else
+ # For manual triggers from other branches and will not publish any image
+ VERSION="test-build"
+ fi
+ echo "VERSION=$VERSION" >> $GITHUB_OUTPUT
+ id: extract_version
+ outputs:
+ VERSION: ${{ steps.extract_version.outputs.VERSION }}
+
+ verify-and-build:
+ name: verify reproducibility and build
+ needs: extract-version
+ strategy:
+ matrix:
+ arch: [amd64, arm64]
+ include:
+ - arch: amd64
+ rust_target: x86_64-unknown-linux-gnu
+ rust_image: >-
+ rust:1.88-bullseye@sha256:8e3c421122bf4cd3b2a866af41a4dd52d87ad9e315fd2cb5100e87a7187a9816
+ platform: linux/amd64
+ runner: ubuntu-22.04
+ - arch: arm64
+ rust_target: aarch64-unknown-linux-gnu
+ rust_image: >-
+ rust:1.88-bullseye@sha256:8b22455a7ce2adb1355067638284ee99d21cc516fab63a96c4514beaf370aa94
+ platform: linux/arm64
+ runner: ubuntu-22.04-arm
+ runs-on: ${{ matrix.runner }}
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v3
+ with:
+ driver: docker
+
+ - name: Verify reproducible builds (${{ matrix.arch }})
+ run: |
+ # Build first image
+ docker build -f Dockerfile.reproducible \
+ --platform ${{ matrix.platform }} \
+ --build-arg RUST_TARGET="${{ matrix.rust_target }}" \
+ --build-arg RUST_IMAGE="${{ matrix.rust_image }}" \
+ -t lighthouse-verify-1-${{ matrix.arch }} .
+
+ # Extract binary from first build
+ docker create --name extract-1-${{ matrix.arch }} lighthouse-verify-1-${{ matrix.arch }}
+ docker cp extract-1-${{ matrix.arch }}:/lighthouse ./lighthouse-1-${{ matrix.arch }}
+ docker rm extract-1-${{ matrix.arch }}
+
+ # Clean state for second build
+ docker buildx prune -f
+ docker system prune -f
+
+ # Build second image
+ docker build -f Dockerfile.reproducible \
+ --platform ${{ matrix.platform }} \
+ --build-arg RUST_TARGET="${{ matrix.rust_target }}" \
+ --build-arg RUST_IMAGE="${{ matrix.rust_image }}" \
+ -t lighthouse-verify-2-${{ matrix.arch }} .
+
+ # Extract binary from second build
+ docker create --name extract-2-${{ matrix.arch }} lighthouse-verify-2-${{ matrix.arch }}
+ docker cp extract-2-${{ matrix.arch }}:/lighthouse ./lighthouse-2-${{ matrix.arch }}
+ docker rm extract-2-${{ matrix.arch }}
+
+ # Compare binaries
+ echo "=== Comparing binaries ==="
+ echo "Build 1 SHA256: $(sha256sum lighthouse-1-${{ matrix.arch }})"
+ echo "Build 2 SHA256: $(sha256sum lighthouse-2-${{ matrix.arch }})"
+
+ if cmp lighthouse-1-${{ matrix.arch }} lighthouse-2-${{ matrix.arch }}; then
+ echo "Reproducible build verified for ${{ matrix.arch }}"
+ else
+ echo "Reproducible build FAILED for ${{ matrix.arch }}"
+ echo "BLOCKING RELEASE: Builds are not reproducible!"
+ echo "First 10 differences:"
+ cmp -l lighthouse-1-${{ matrix.arch }} lighthouse-2-${{ matrix.arch }} | head -10
+ exit 1
+ fi
+
+ # Clean up verification artifacts but keep one image for publishing
+ rm -f lighthouse-*-${{ matrix.arch }}
+ docker rmi lighthouse-verify-1-${{ matrix.arch }} || true
+
+ # Re-tag the second image for publishing (we verified it's identical to first)
+ VERSION=${{ needs.extract-version.outputs.VERSION }}
+ FINAL_TAG="${{ env.DOCKER_REPRODUCIBLE_IMAGE_NAME }}:${VERSION}-${{ matrix.arch }}"
+ docker tag lighthouse-verify-2-${{ matrix.arch }} "$FINAL_TAG"
+
+ - name: Log in to Docker Hub
+ if: ${{ github.event_name != 'workflow_dispatch' }}
+ uses: docker/login-action@v3
+ with:
+ username: ${{ env.DOCKER_USERNAME }}
+ password: ${{ env.DOCKER_PASSWORD }}
+
+ - name: Push verified image (${{ matrix.arch }})
+ if: ${{ github.event_name != 'workflow_dispatch' }}
+ run: |
+ VERSION=${{ needs.extract-version.outputs.VERSION }}
+ IMAGE_TAG="${{ env.DOCKER_REPRODUCIBLE_IMAGE_NAME }}:${VERSION}-${{ matrix.arch }}"
+ docker push "$IMAGE_TAG"
+
+ - name: Clean up local images
+ run: |
+ docker rmi lighthouse-verify-2-${{ matrix.arch }} || true
+ VERSION=${{ needs.extract-version.outputs.VERSION }}
+ docker rmi "${{ env.DOCKER_REPRODUCIBLE_IMAGE_NAME }}:${VERSION}-${{ matrix.arch }}" || true
+
+ - name: Upload verification artifacts (on failure)
+ if: failure()
+ uses: actions/upload-artifact@v4
+ with:
+ name: verification-failure-${{ matrix.arch }}
+ path: |
+ lighthouse-*-${{ matrix.arch }}
+
+ create-manifest:
+ name: create multi-arch manifest
+ runs-on: ubuntu-22.04
+ needs: [extract-version, verify-and-build]
+ if: ${{ github.event_name != 'workflow_dispatch' }}
+ steps:
+ - name: Log in to Docker Hub
+ uses: docker/login-action@v3
+ with:
+ username: ${{ env.DOCKER_USERNAME }}
+ password: ${{ env.DOCKER_PASSWORD }}
+
+ - name: Create and push multi-arch manifest
+ run: |
+ IMAGE_NAME=${{ env.DOCKER_REPRODUCIBLE_IMAGE_NAME }}
+ VERSION=${{ needs.extract-version.outputs.VERSION }}
+
+ # Create manifest for the version tag
+ docker manifest create \
+ ${IMAGE_NAME}:${VERSION} \
+ ${IMAGE_NAME}:${VERSION}-amd64 \
+ ${IMAGE_NAME}:${VERSION}-arm64
+
+ docker manifest push ${IMAGE_NAME}:${VERSION}
diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
index e768208973..415f4db0e6 100644
--- a/.github/workflows/docker.yml
+++ b/.github/workflows/docker.yml
@@ -64,7 +64,7 @@ jobs:
VERSION: ${{ needs.extract-version.outputs.VERSION }}
VERSION_SUFFIX: ${{ needs.extract-version.outputs.VERSION_SUFFIX }}
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- name: Update Rust
if: env.SELF_HOSTED_RUNNERS == 'false'
run: rustup update stable
diff --git a/.github/workflows/linkcheck.yml b/.github/workflows/linkcheck.yml
index 7e8d9135dd..cc7775c083 100644
--- a/.github/workflows/linkcheck.yml
+++ b/.github/workflows/linkcheck.yml
@@ -20,7 +20,7 @@ jobs:
steps:
- name: Checkout code
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
- name: Run mdbook server
run: |
diff --git a/.github/workflows/local-testnet.yml b/.github/workflows/local-testnet.yml
index 1cd2f24548..9992273e0a 100644
--- a/.github/workflows/local-testnet.yml
+++ b/.github/workflows/local-testnet.yml
@@ -14,13 +14,13 @@ concurrency:
jobs:
dockerfile-ubuntu:
- runs-on: ${{ github.repository == 'sigp/lighthouse' && fromJson('["self-hosted", "linux", "CI", "large"]') || 'ubuntu-latest' }}
+ runs-on: ${{ github.repository == 'sigp/lighthouse' && 'warp-ubuntu-latest-x64-8x' || 'ubuntu-latest' }}
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- name: Build Docker image
run: |
- docker build --build-arg FEATURES=portable -t lighthouse:local .
+ docker build --build-arg FEATURES=portable,spec-minimal -t lighthouse:local .
docker save lighthouse:local -o lighthouse-docker.tar
- name: Upload Docker image artifact
@@ -31,10 +31,10 @@ jobs:
retention-days: 3
run-local-testnet:
- runs-on: ubuntu-22.04
+ runs-on: ${{ github.repository == 'sigp/lighthouse' && 'warp-ubuntu-latest-x64-8x' || 'ubuntu-latest' }}
needs: dockerfile-ubuntu
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- name: Install Kurtosis
run: |
@@ -52,23 +52,22 @@ jobs:
- name: Load Docker image
run: docker load -i lighthouse-docker.tar
- - name: Start local testnet
- run: ./start_local_testnet.sh -e local -c -b false && sleep 60
+ - name: Start local testnet with Assertoor
+ run: ./start_local_testnet.sh -e local-assertoor -c -a -b false && sleep 60
working-directory: scripts/local_testnet
+ - name: Await Assertoor test result
+ id: assertoor_test_result
+ uses: ethpandaops/assertoor-github-action@v1
+ with:
+ kurtosis_enclave_name: local-assertoor
+
- name: Stop local testnet and dump logs
- run: ./stop_local_testnet.sh local
- working-directory: scripts/local_testnet
-
- - name: Start local testnet with blinded block production
- run: ./start_local_testnet.sh -e local-blinded -c -p -b false && sleep 60
- working-directory: scripts/local_testnet
-
- - name: Stop local testnet and dump logs
- run: ./stop_local_testnet.sh local-blinded
+ run: ./stop_local_testnet.sh local-assertoor
working-directory: scripts/local_testnet
- name: Upload logs artifact
+ if: always()
uses: actions/upload-artifact@v4
with:
name: logs-local-testnet
@@ -76,11 +75,34 @@ jobs:
scripts/local_testnet/logs
retention-days: 3
+ - name: Return Assertoor test result
+ shell: bash
+ run: |
+ test_result="${{ steps.assertoor_test_result.outputs.result }}"
+ test_status=$(
+ cat <<"EOF"
+ ${{ steps.assertoor_test_result.outputs.test_overview }}
+ EOF
+ )
+ failed_test_status=$(
+ cat <<"EOF"
+ ${{ steps.assertoor_test_result.outputs.failed_test_details }}
+ EOF
+ )
+
+ echo "Test Result: $test_result"
+ echo "$test_status"
+ if ! [ "$test_result" == "success" ]; then
+ echo "Failed Test Task Status:"
+ echo "$failed_test_status"
+ exit 1
+ fi
+
doppelganger-protection-success-test:
needs: dockerfile-ubuntu
- runs-on: ubuntu-22.04
+ runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- name: Install Kurtosis
run: |
@@ -104,6 +126,7 @@ jobs:
working-directory: scripts/tests
- name: Upload logs artifact
+ if: always()
uses: actions/upload-artifact@v4
with:
name: logs-doppelganger-protection-success
@@ -113,9 +136,9 @@ jobs:
doppelganger-protection-failure-test:
needs: dockerfile-ubuntu
- runs-on: ubuntu-22.04
+ runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- name: Install Kurtosis
run: |
@@ -139,6 +162,7 @@ jobs:
working-directory: scripts/tests
- name: Upload logs artifact
+ if: always()
uses: actions/upload-artifact@v4
with:
name: logs-doppelganger-protection-failure
@@ -146,19 +170,106 @@ jobs:
scripts/local_testnet/logs
retention-days: 3
+ # Tests checkpoint syncing to a live network (current fork) and a running devnet (usually next scheduled fork)
+ checkpoint-sync-test:
+ name: checkpoint-sync-test-${{ matrix.network }}
+ runs-on: ${{ github.repository == 'sigp/lighthouse' && 'warp-ubuntu-latest-x64-8x' || 'ubuntu-latest' }}
+ needs: dockerfile-ubuntu
+ if: contains(github.event.pull_request.labels.*.name, 'syncing')
+ continue-on-error: true
+ strategy:
+ matrix:
+ network: [sepolia]
+ steps:
+ - uses: actions/checkout@v5
+
+ - name: Install Kurtosis
+ run: |
+ echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
+ sudo apt update
+ sudo apt install -y kurtosis-cli
+ kurtosis analytics disable
+
+ - name: Download Docker image artifact
+ uses: actions/download-artifact@v4
+ with:
+ name: lighthouse-docker
+ path: .
+
+ - name: Load Docker image
+ run: docker load -i lighthouse-docker.tar
+
+ - name: Run the checkpoint sync test script
+ run: |
+ ./checkpoint-sync.sh "sync-${{ matrix.network }}" "checkpoint-sync-config-${{ matrix.network }}.yaml"
+ working-directory: scripts/tests
+
+ - name: Upload logs artifact
+ if: always()
+ uses: actions/upload-artifact@v4
+ with:
+ name: logs-checkpoint-sync-${{ matrix.network }}
+ path: |
+ scripts/local_testnet/logs
+ retention-days: 3
+
+ # Test syncing from genesis on a local testnet. Aims to cover forward syncing both short and long distances.
+ genesis-sync-test:
+ name: genesis-sync-test-${{ matrix.fork }}-${{ matrix.offline_secs }}s
+ runs-on: ${{ github.repository == 'sigp/lighthouse' && 'warp-ubuntu-latest-x64-8x' || 'ubuntu-latest' }}
+ needs: dockerfile-ubuntu
+ strategy:
+ matrix:
+ fork: [electra, fulu]
+ offline_secs: [120, 300]
+ steps:
+ - uses: actions/checkout@v5
+
+ - name: Install Kurtosis
+ run: |
+ echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
+ sudo apt update
+ sudo apt install -y kurtosis-cli
+ kurtosis analytics disable
+
+ - name: Download Docker image artifact
+ uses: actions/download-artifact@v4
+ with:
+ name: lighthouse-docker
+ path: .
+
+ - name: Load Docker image
+ run: docker load -i lighthouse-docker.tar
+
+ - name: Run the genesis sync test script
+ run: |
+ ./genesis-sync.sh "sync-${{ matrix.fork }}-${{ matrix.offline_secs }}s" "genesis-sync-config-${{ matrix.fork }}.yaml" "${{ matrix.fork }}" "${{ matrix.offline_secs }}"
+ working-directory: scripts/tests
+
+ - name: Upload logs artifact
+ if: always()
+ uses: actions/upload-artifact@v4
+ with:
+ name: logs-genesis-sync-${{ matrix.fork }}-${{ matrix.offline_secs }}s
+ path: |
+ scripts/local_testnet/logs
+ retention-days: 3
# This job succeeds ONLY IF all others succeed. It is used by the merge queue to determine whether
# a PR is safe to merge. New jobs should be added here.
local-testnet-success:
name: local-testnet-success
- runs-on: ubuntu-latest
+ runs-on: ${{ github.repository == 'sigp/lighthouse' && 'warp-ubuntu-latest-x64-8x' || 'ubuntu-latest' }}
needs: [
'dockerfile-ubuntu',
'run-local-testnet',
'doppelganger-protection-success-test',
'doppelganger-protection-failure-test',
+ 'genesis-sync-test'
]
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- name: Check that success job is dependent on all others
- run: ./scripts/ci/check-success-job.sh ./.github/workflows/local-testnet.yml local-testnet-success
+ run: |
+ exclude_jobs='checkpoint-sync-test'
+ ./scripts/ci/check-success-job.sh ./.github/workflows/local-testnet.yml local-testnet-success "$exclude_jobs"
diff --git a/.github/workflows/nightly-tests.yml b/.github/workflows/nightly-tests.yml
new file mode 100644
index 0000000000..be52c5b84d
--- /dev/null
+++ b/.github/workflows/nightly-tests.yml
@@ -0,0 +1,135 @@
+# We only run tests on `RECENT_FORKS` on CI. To make sure we don't break prior forks, we run nightly tests to cover all prior forks.
+name: nightly-tests
+
+on:
+ schedule:
+ # Run at 8:30 AM UTC every day
+ - cron: '30 8 * * *'
+ workflow_dispatch: # Allow manual triggering
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+env:
+ # Deny warnings in CI
+ # Disable debug info (see https://github.com/sigp/lighthouse/issues/4005)
+ RUSTFLAGS: "-D warnings -C debuginfo=0"
+ # Prevent Github API rate limiting.
+ LIGHTHOUSE_GITHUB_TOKEN: ${{ secrets.LIGHTHOUSE_GITHUB_TOKEN }}
+ # Disable incremental compilation
+ CARGO_INCREMENTAL: 0
+ # Enable portable to prevent issues with caching `blst` for the wrong CPU type
+ TEST_FEATURES: portable
+
+jobs:
+ setup-matrix:
+ name: setup-matrix
+ runs-on: ubuntu-latest
+ outputs:
+ forks: ${{ steps.set-matrix.outputs.forks }}
+ steps:
+ - name: Set matrix
+ id: set-matrix
+ run: |
+ # All prior forks to cover in nightly tests. This list should be updated when we remove a fork from `RECENT_FORKS`.
+ echo 'forks=["phase0", "altair", "bellatrix", "capella", "deneb"]' >> $GITHUB_OUTPUT
+
+ beacon-chain-tests:
+ name: beacon-chain-tests
+ needs: setup-matrix
+ runs-on: 'ubuntu-latest'
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ strategy:
+ matrix:
+ fork: ${{ fromJson(needs.setup-matrix.outputs.forks) }}
+ fail-fast: false
+ steps:
+ - uses: actions/checkout@v5
+ - name: Get latest version of stable Rust
+ uses: moonrepo/setup-rust@v1
+ with:
+ channel: stable
+ cache-target: release
+ bins: cargo-nextest
+ - name: Run beacon_chain tests for ${{ matrix.fork }}
+ run: make test-beacon-chain-${{ matrix.fork }}
+ timeout-minutes: 60
+
+ http-api-tests:
+ name: http-api-tests
+ needs: setup-matrix
+ runs-on: 'ubuntu-latest'
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ strategy:
+ matrix:
+ fork: ${{ fromJson(needs.setup-matrix.outputs.forks) }}
+ fail-fast: false
+ steps:
+ - uses: actions/checkout@v5
+ - name: Get latest version of stable Rust
+ uses: moonrepo/setup-rust@v1
+ with:
+ channel: stable
+ cache-target: release
+ bins: cargo-nextest
+ - name: Run http_api tests for ${{ matrix.fork }}
+ run: make test-http-api-${{ matrix.fork }}
+ timeout-minutes: 60
+
+ op-pool-tests:
+ name: op-pool-tests
+ needs: setup-matrix
+ runs-on: ubuntu-latest
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ strategy:
+ matrix:
+ fork: ${{ fromJson(needs.setup-matrix.outputs.forks) }}
+ fail-fast: false
+ steps:
+ - uses: actions/checkout@v5
+ - name: Get latest version of stable Rust
+ uses: moonrepo/setup-rust@v1
+ with:
+ channel: stable
+ cache-target: release
+ bins: cargo-nextest
+ - name: Run operation_pool tests for ${{ matrix.fork }}
+ run: make test-op-pool-${{ matrix.fork }}
+ timeout-minutes: 60
+
+ network-tests:
+ name: network-tests
+ needs: setup-matrix
+ runs-on: ubuntu-latest
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ strategy:
+ matrix:
+ fork: ${{ fromJson(needs.setup-matrix.outputs.forks) }}
+ fail-fast: false
+ steps:
+ - uses: actions/checkout@v5
+ - name: Get latest version of stable Rust
+ uses: moonrepo/setup-rust@v1
+ with:
+ channel: stable
+ cache-target: release
+ bins: cargo-nextest
+ - name: Create CI logger dir
+ run: mkdir ${{ runner.temp }}/network_test_logs
+ - name: Run network tests for ${{ matrix.fork }}
+ run: make test-network-${{ matrix.fork }}
+ timeout-minutes: 60
+ env:
+ TEST_FEATURES: portable
+ CI_LOGGER_DIR: ${{ runner.temp }}/network_test_logs
+ - name: Upload logs
+ if: always()
+ uses: actions/upload-artifact@v4
+ with:
+ name: network_test_logs_${{ matrix.fork }}
+ path: ${{ runner.temp }}/network_test_logs
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index de4fd29409..f7b65f07c9 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -32,9 +32,7 @@ jobs:
matrix:
arch: [aarch64-unknown-linux-gnu,
x86_64-unknown-linux-gnu,
- x86_64-apple-darwin,
- aarch64-apple-darwin,
- x86_64-windows]
+ aarch64-apple-darwin]
include:
- arch: aarch64-unknown-linux-gnu
runner: ${{ github.repository == 'sigp/lighthouse' && fromJson('["self-hosted", "linux", "release", "large"]') || 'ubuntu-latest' }}
@@ -42,38 +40,19 @@ jobs:
- arch: x86_64-unknown-linux-gnu
runner: ${{ github.repository == 'sigp/lighthouse' && fromJson('["self-hosted", "linux", "release", "large"]') || 'ubuntu-latest' }}
profile: maxperf
- - arch: x86_64-apple-darwin
- runner: macos-13
- profile: maxperf
- arch: aarch64-apple-darwin
runner: macos-14
profile: maxperf
- - arch: x86_64-windows
- runner: ${{ github.repository == 'sigp/lighthouse' && fromJson('["self-hosted", "windows", "release"]') || 'windows-2019' }}
- profile: maxperf
runs-on: ${{ matrix.runner }}
needs: extract-version
steps:
- name: Checkout sources
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
- name: Get latest version of stable Rust
if: env.SELF_HOSTED_RUNNERS == 'false'
run: rustup update stable
- # ==============================
- # Windows dependencies
- # ==============================
-
- - uses: KyleMayes/install-llvm-action@v1
- if: env.SELF_HOSTED_RUNNERS == 'false' && startsWith(matrix.arch, 'x86_64-windows')
- with:
- version: "17.0"
- directory: ${{ runner.temp }}/llvm
- - name: Set LIBCLANG_PATH
- if: startsWith(matrix.arch, 'x86_64-windows')
- run: echo "LIBCLANG_PATH=$((gcm clang).source -replace "clang.exe")" >> $env:GITHUB_ENV
-
# ==============================
# Builds
# ==============================
@@ -94,20 +73,11 @@ jobs:
if: contains(matrix.arch, 'unknown-linux-gnu')
run: mv target/${{ matrix.arch }}/${{ matrix.profile }}/lighthouse ~/.cargo/bin/lighthouse
- - name: Build Lighthouse for x86_64-apple-darwin
- if: matrix.arch == 'x86_64-apple-darwin'
- run: cargo install --path lighthouse --force --locked --features portable,gnosis --profile ${{ matrix.profile }}
-
- name: Build Lighthouse for aarch64-apple-darwin
if: matrix.arch == 'aarch64-apple-darwin'
run: cargo install --path lighthouse --force --locked --features portable,gnosis --profile ${{ matrix.profile }}
- - name: Build Lighthouse for Windows
- if: matrix.arch == 'x86_64-windows'
- run: cargo install --path lighthouse --force --locked --features portable,gnosis --profile ${{ matrix.profile }}
-
- name: Configure GPG and create artifacts
- if: startsWith(matrix.arch, 'x86_64-windows') != true
env:
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }}
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
@@ -126,20 +96,6 @@ jobs:
done
mv *tar.gz* ..
- - name: Configure GPG and create artifacts Windows
- if: startsWith(matrix.arch, 'x86_64-windows')
- env:
- GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }}
- GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
- run: |
- echo $env:GPG_SIGNING_KEY | gpg --batch --import
- mkdir artifacts
- move $env:USERPROFILE/.cargo/bin/lighthouse.exe ./artifacts
- cd artifacts
- tar -czf lighthouse-${{ needs.extract-version.outputs.VERSION }}-${{ matrix.arch }}.tar.gz lighthouse.exe
- gpg --passphrase "$env:GPG_PASSPHRASE" --batch --pinentry-mode loopback -ab lighthouse-${{ needs.extract-version.outputs.VERSION }}-${{ matrix.arch }}.tar.gz
- move *tar.gz* ..
-
# =======================================================================
# Upload artifacts
# This is required to share artifacts between different jobs
@@ -168,7 +124,7 @@ jobs:
steps:
# This is necessary for generating the changelog. It has to come before "Download Artifacts" or else it deletes the artifacts.
- name: Checkout sources
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
fetch-depth: 0
@@ -244,11 +200,9 @@ jobs:
| System | Architecture | Binary | PGP Signature |
|:---:|:---:|:---:|:---|
- |
| x86_64 | [lighthouse-${{ env.VERSION }}-x86_64-apple-darwin.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/lighthouse-${{ env.VERSION }}-x86_64-apple-darwin.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/lighthouse-${{ env.VERSION }}-x86_64-apple-darwin.tar.gz.asc) |
|
| aarch64 | [lighthouse-${{ env.VERSION }}-aarch64-apple-darwin.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/lighthouse-${{ env.VERSION }}-aarch64-apple-darwin.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/lighthouse-${{ env.VERSION }}-aarch64-apple-darwin.tar.gz.asc) |
|
| x86_64 | [lighthouse-${{ env.VERSION }}-x86_64-unknown-linux-gnu.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/lighthouse-${{ env.VERSION }}-x86_64-unknown-linux-gnu.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/lighthouse-${{ env.VERSION }}-x86_64-unknown-linux-gnu.tar.gz.asc) |
|
| aarch64 | [lighthouse-${{ env.VERSION }}-aarch64-unknown-linux-gnu.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/lighthouse-${{ env.VERSION }}-aarch64-unknown-linux-gnu.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/lighthouse-${{ env.VERSION }}-aarch64-unknown-linux-gnu.tar.gz.asc) |
- |
| x86_64 | [lighthouse-${{ env.VERSION }}-x86_64-windows.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/lighthouse-${{ env.VERSION }}-x86_64-windows.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/lighthouse-${{ env.VERSION }}-x86_64-windows.tar.gz.asc) |
| | | | |
| **System** | **Option** | - | **Resource** |
|
| Docker | [${{ env.VERSION }}](https://hub.docker.com/r/${{ env.IMAGE_NAME }}/tags?page=1&ordering=last_updated&name=${{ env.VERSION }}) | [${{ env.IMAGE_NAME }}](https://hub.docker.com/r/${{ env.IMAGE_NAME }}) |
diff --git a/.github/workflows/test-suite.yml b/.github/workflows/test-suite.yml
index a94a19900c..7344a9367b 100644
--- a/.github/workflows/test-suite.yml
+++ b/.github/workflows/test-suite.yml
@@ -22,8 +22,6 @@ env:
# NOTE: this token is a personal access token on Jimmy's account due to the default GITHUB_TOKEN
# not having access to other repositories. We should eventually devise a better solution here.
LIGHTHOUSE_GITHUB_TOKEN: ${{ secrets.LIGHTHOUSE_GITHUB_TOKEN }}
- # Enable self-hosted runners for the sigp repo only.
- SELF_HOSTED_RUNNERS: ${{ github.repository == 'sigp/lighthouse' }}
# Disable incremental compilation
CARGO_INCREMENTAL: 0
# Enable portable to prevent issues with caching `blst` for the wrong CPU type
@@ -78,17 +76,15 @@ jobs:
name: release-tests-ubuntu
needs: [check-labels]
if: needs.check-labels.outputs.skip_ci != 'true'
- # Use self-hosted runners only on the sigp repo.
- runs-on: ${{ github.repository == 'sigp/lighthouse' && fromJson('["self-hosted", "linux", "CI", "large"]') || 'ubuntu-latest' }}
+ runs-on: ${{ github.repository == 'sigp/lighthouse' && 'warp-ubuntu-latest-x64-8x' || 'ubuntu-latest' }}
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
# Set Java version to 21. (required since Web3Signer 24.12.0).
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'
- name: Get latest version of stable Rust
- if: env.SELF_HOSTED_RUNNERS == 'false'
uses: moonrepo/setup-rust@v1
with:
channel: stable
@@ -97,58 +93,25 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Install Foundry (anvil)
- if: env.SELF_HOSTED_RUNNERS == 'false'
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly-ca67d15f4abd46394b324c50e21e66f306a1162d
- name: Run tests in release
- run: make nextest-release
- - name: Show cache stats
- if: env.SELF_HOSTED_RUNNERS == 'true'
- run: sccache --show-stats
- release-tests-windows:
- name: release-tests-windows
- needs: [check-labels]
- if: needs.check-labels.outputs.skip_ci != 'true'
- runs-on: ${{ github.repository == 'sigp/lighthouse' && fromJson('["self-hosted", "windows", "CI"]') || 'windows-2019' }}
- steps:
- - uses: actions/checkout@v4
- - name: Get latest version of stable Rust
- if: env.SELF_HOSTED_RUNNERS == 'false'
- uses: moonrepo/setup-rust@v1
- with:
- channel: stable
- cache-target: release
- bins: cargo-nextest
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- - name: Install Foundry (anvil)
- if: env.SELF_HOSTED_RUNNERS == 'false'
- uses: foundry-rs/foundry-toolchain@v1
- with:
- version: nightly-ca67d15f4abd46394b324c50e21e66f306a1162d
- - name: Install make
- if: env.SELF_HOSTED_RUNNERS == 'false'
- run: choco install -y make
- - name: Set LIBCLANG_PATH
- run: echo "LIBCLANG_PATH=$((gcm clang).source -replace "clang.exe")" >> $env:GITHUB_ENV
- - name: Run tests in release
- run: make nextest-release
+ run: make test-release
- name: Show cache stats
if: env.SELF_HOSTED_RUNNERS == 'true'
+ continue-on-error: true
run: sccache --show-stats
beacon-chain-tests:
name: beacon-chain-tests
needs: [check-labels]
if: needs.check-labels.outputs.skip_ci != 'true'
- # Use self-hosted runners only on the sigp repo.
- runs-on: ${{ github.repository == 'sigp/lighthouse' && fromJson('["self-hosted", "linux", "CI", "large"]') || 'ubuntu-latest' }}
+ runs-on: ${{ github.repository == 'sigp/lighthouse' && 'warp-ubuntu-latest-x64-8x' || 'ubuntu-latest' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- name: Get latest version of stable Rust
- if: env.SELF_HOSTED_RUNNERS == 'false'
uses: moonrepo/setup-rust@v1
with:
channel: stable
@@ -156,9 +119,23 @@ jobs:
bins: cargo-nextest
- name: Run beacon_chain tests for all known forks
run: make test-beacon-chain
- - name: Show cache stats
- if: env.SELF_HOSTED_RUNNERS == 'true'
- run: sccache --show-stats
+ http-api-tests:
+ name: http-api-tests
+ needs: [check-labels]
+ if: needs.check-labels.outputs.skip_ci != 'true'
+ runs-on: ${{ github.repository == 'sigp/lighthouse' && 'warp-ubuntu-latest-x64-8x' || 'ubuntu-latest' }}
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ steps:
+ - uses: actions/checkout@v5
+ - name: Get latest version of stable Rust
+ uses: moonrepo/setup-rust@v1
+ with:
+ channel: stable
+ cache-target: release
+ bins: cargo-nextest
+ - name: Run http_api tests for all recent forks
+ run: make test-http-api
op-pool-tests:
name: op-pool-tests
needs: [check-labels]
@@ -167,7 +144,7 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- name: Get latest version of stable Rust
uses: moonrepo/setup-rust@v1
with:
@@ -184,7 +161,7 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- name: Get latest version of stable Rust
uses: moonrepo/setup-rust@v1
with:
@@ -196,9 +173,10 @@ jobs:
- name: Run network tests for all known forks
run: make test-network
env:
- TEST_FEATURES: portable,ci_logger
+ TEST_FEATURES: portable
CI_LOGGER_DIR: ${{ runner.temp }}/network_test_logs
- name: Upload logs
+ if: always()
uses: actions/upload-artifact@v4
with:
name: network_test_logs
@@ -212,7 +190,7 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- name: Get latest version of stable Rust
uses: moonrepo/setup-rust@v1
with:
@@ -225,35 +203,29 @@ jobs:
name: debug-tests-ubuntu
needs: [check-labels]
if: needs.check-labels.outputs.skip_ci != 'true'
- # Use self-hosted runners only on the sigp repo.
- runs-on: ${{ github.repository == 'sigp/lighthouse' && fromJson('["self-hosted", "linux", "CI", "large"]') || 'ubuntu-latest' }}
+ runs-on: ${{ github.repository == 'sigp/lighthouse' && 'warp-ubuntu-latest-x64-8x' || 'ubuntu-latest' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- name: Get latest version of stable Rust
- if: env.SELF_HOSTED_RUNNERS == 'false'
uses: moonrepo/setup-rust@v1
with:
channel: stable
bins: cargo-nextest
- name: Install Foundry (anvil)
- if: env.SELF_HOSTED_RUNNERS == 'false'
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly-ca67d15f4abd46394b324c50e21e66f306a1162d
- name: Run tests in debug
- run: make nextest-debug
- - name: Show cache stats
- if: env.SELF_HOSTED_RUNNERS == 'true'
- run: sccache --show-stats
+ run: make test-debug
state-transition-vectors-ubuntu:
name: state-transition-vectors-ubuntu
needs: [check-labels]
if: needs.check-labels.outputs.skip_ci != 'true'
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- name: Get latest version of stable Rust
uses: moonrepo/setup-rust@v1
with:
@@ -265,31 +237,26 @@ jobs:
name: ef-tests-ubuntu
needs: [check-labels]
if: needs.check-labels.outputs.skip_ci != 'true'
- # Use self-hosted runners only on the sigp repo.
- runs-on: ${{ github.repository == 'sigp/lighthouse' && fromJson('["self-hosted", "linux", "CI", "small"]') || 'ubuntu-latest' }}
+ runs-on: ${{ github.repository == 'sigp/lighthouse' && 'warp-ubuntu-latest-x64-8x' || 'ubuntu-latest' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- name: Get latest version of stable Rust
- if: env.SELF_HOSTED_RUNNERS == 'false'
uses: moonrepo/setup-rust@v1
with:
channel: stable
cache-target: release
bins: cargo-nextest
- name: Run consensus-spec-tests with blst and fake_crypto
- run: make nextest-ef
- - name: Show cache stats
- if: env.SELF_HOSTED_RUNNERS == 'true'
- run: sccache --show-stats
+ run: make test-ef
basic-simulator-ubuntu:
name: basic-simulator-ubuntu
needs: [check-labels]
if: needs.check-labels.outputs.skip_ci != 'true'
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- name: Get latest version of stable Rust
uses: moonrepo/setup-rust@v1
with:
@@ -300,6 +267,7 @@ jobs:
- name: Run a basic beacon chain sim that starts from Deneb
run: cargo run --release --bin simulator basic-sim --disable-stdout-logging --log-dir ${{ runner.temp }}/basic_simulator_logs
- name: Upload logs
+ if: always()
uses: actions/upload-artifact@v4
with:
name: basic_simulator_logs
@@ -310,7 +278,7 @@ jobs:
if: needs.check-labels.outputs.skip_ci != 'true'
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- name: Get latest version of stable Rust
uses: moonrepo/setup-rust@v1
with:
@@ -321,6 +289,7 @@ jobs:
- name: Run a beacon chain sim which tests VC fallback behaviour
run: cargo run --release --bin simulator fallback-sim --disable-stdout-logging --log-dir ${{ runner.temp }}/fallback_simulator_logs
- name: Upload logs
+ if: always()
uses: actions/upload-artifact@v4
with:
name: fallback_simulator_logs
@@ -329,11 +298,10 @@ jobs:
name: execution-engine-integration-ubuntu
needs: [check-labels]
if: needs.check-labels.outputs.skip_ci != 'true'
- runs-on: ${{ github.repository == 'sigp/lighthouse' && fromJson('["self-hosted", "linux", "CI", "small"]') || 'ubuntu-latest' }}
+ runs-on: ${{ github.repository == 'sigp/lighthouse' && 'warp-ubuntu-latest-x64-8x' || 'ubuntu-latest' }}
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- name: Get latest version of stable Rust
- if: env.SELF_HOSTED_RUNNERS == 'false'
uses: moonrepo/setup-rust@v1
with:
channel: stable
@@ -341,9 +309,6 @@ jobs:
cache: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- - name: Add go compiler to $PATH
- if: env.SELF_HOSTED_RUNNERS == 'true'
- run: echo "/usr/local/go/bin" >> $GITHUB_PATH
- name: Run exec engine integration tests in release
run: make test-exec-engine
check-code:
@@ -352,14 +317,14 @@ jobs:
env:
CARGO_INCREMENTAL: 1
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- name: Get latest version of stable Rust
uses: moonrepo/setup-rust@v1
with:
channel: stable
cache-target: release
components: rustfmt,clippy
- bins: cargo-audit
+ bins: cargo-audit,cargo-deny
- name: Check formatting with cargo fmt
run: make cargo-fmt
- name: Lint code for quality and style with Clippy
@@ -372,6 +337,8 @@ jobs:
run: make arbitrary-fuzz
- name: Run cargo audit
run: make audit-CI
+ - name: Run cargo deny
+ run: make deny-CI
- name: Run cargo vendor to make sure dependencies can be vendored for packaging, reproducibility and archival purpose
run: CARGO_HOME=$(readlink -f $HOME) make vendor
- name: Markdown-linter
@@ -382,7 +349,7 @@ jobs:
name: check-msrv
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- name: Install Rust at Minimum Supported Rust Version (MSRV)
run: |
metadata=$(cargo metadata --no-deps --format-version 1)
@@ -396,7 +363,7 @@ jobs:
if: needs.check-labels.outputs.skip_ci != 'true'
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- name: Get latest version of nightly Rust
uses: moonrepo/setup-rust@v1
with:
@@ -424,7 +391,7 @@ jobs:
if: needs.check-labels.outputs.skip_ci != 'true'
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- name: Install dependencies
run: sudo apt update && sudo apt install -y git gcc g++ make cmake pkg-config llvm-dev libclang-dev clang
- name: Use Rust beta
@@ -437,7 +404,7 @@ jobs:
if: needs.check-labels.outputs.skip_ci != 'true'
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- name: Get latest version of stable Rust
uses: moonrepo/setup-rust@v1
with:
@@ -451,7 +418,7 @@ jobs:
if: needs.check-labels.outputs.skip_ci != 'true'
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- name: Get latest version of stable Rust
uses: moonrepo/setup-rust@v1
with:
@@ -470,11 +437,11 @@ jobs:
'check-labels',
'target-branch-check',
'release-tests-ubuntu',
- 'release-tests-windows',
'beacon-chain-tests',
'op-pool-tests',
'network-tests',
'slasher-tests',
+ 'http-api-tests',
'debug-tests-ubuntu',
'state-transition-vectors-ubuntu',
'ef-tests-ubuntu',
@@ -490,6 +457,6 @@ jobs:
'cargo-sort',
]
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v5
- name: Check that success job is dependent on all others
run: ./scripts/ci/check-success-job.sh ./.github/workflows/test-suite.yml test-suite-success
diff --git a/.gitignore b/.gitignore
index e63e218a3b..efd7916b05 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,7 +9,6 @@ perf.data*
*.tar.gz
/bin
genesis.ssz
-/clippy.toml
/.cargo
# IntelliJ
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000000..65447c4390
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,5 @@
+{
+ "rust-analyzer.cargo.cfgs": [
+ "!debug_assertions"
+ ]
+}
diff --git a/CLAUDE.md b/CLAUDE.md
new file mode 100644
index 0000000000..3e9ab169f3
--- /dev/null
+++ b/CLAUDE.md
@@ -0,0 +1,332 @@
+# CLAUDE.md
+
+This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
+
+## Development Commands
+
+**Important**: Always branch from `unstable` and target `unstable` when creating pull requests.
+
+### Building and Installation
+
+- `make install` - Build and install the main Lighthouse binary in release mode
+- `make install-lcli` - Build and install the `lcli` utility binary
+- `cargo build --release` - Standard Rust release build
+- `cargo build --bin lighthouse --features "gnosis,slasher-lmdb"` - Build with specific features
+
+### Testing
+
+- `make test` - Run the full test suite in release mode (excludes EF tests, beacon_chain, slasher, network, http_api)
+- `make test-release` - Run tests using nextest (faster parallel test runner)
+- `make test-beacon-chain` - Run beacon chain tests for all supported forks
+- `make test-slasher` - Run slasher tests with all database backend combinations
+- `make test-ef` - Download and run Ethereum Foundation test vectors
+- `make test-full` - Complete test suite including linting, EF tests, and execution engine tests
+- `cargo nextest run -p ` - Run tests for a specific package
+- `cargo nextest run -p ` - Run individual test (preferred during development iteration)
+- `FORK_NAME=electra cargo nextest run -p beacon_chain` - Run tests for specific fork
+
+**Note**: Full test suite takes ~20 minutes. When iterating, prefer running individual tests.
+
+### Linting and Code Quality
+
+- `make lint` - Run Clippy linter with project-specific rules
+- `make lint-full` - Run comprehensive linting including tests (recommended for thorough checking)
+- `make cargo-fmt` - Check code formatting with rustfmt
+- `make check-benches` - Typecheck benchmark code
+- `make audit` - Run security audit on dependencies
+
+### Cross-compilation
+
+- `make build-x86_64` - Cross-compile for x86_64 Linux
+- `make build-aarch64` - Cross-compile for ARM64 Linux
+- `make build-riscv64` - Cross-compile for RISC-V 64-bit Linux
+
+## Architecture Overview
+
+Lighthouse is a modular Ethereum consensus client with two main components:
+
+### Core Components
+
+**Beacon Node** (`beacon_node/`)
+
+- Main consensus client that syncs with the Ethereum network
+- Contains the beacon chain state transition logic (`beacon_node/beacon_chain/`)
+- Handles networking, storage, and P2P communication
+- Provides HTTP API for validator clients and external tools
+- Entry point: `beacon_node/src/lib.rs`
+
+**Validator Client** (`validator_client/`)
+
+- Manages validator keystores and performs validator duties
+- Connects to beacon nodes via HTTP API
+- Handles block proposals, attestations, and sync committee duties
+- Includes slashing protection and doppelganger detection
+- Entry point: `validator_client/src/lib.rs`
+
+### Key Subsystems
+
+**Consensus Types** (`consensus/types/`)
+
+- Core Ethereum consensus data structures (BeaconState, BeaconBlock, etc.)
+- Ethereum specification implementations for different networks (mainnet, gnosis)
+- SSZ encoding/decoding and state transition primitives
+
+**Storage** (`beacon_node/store/`)
+
+- Hot/cold database architecture for efficient beacon chain storage
+- Supports multiple backends (LevelDB, RocksDB, REDB)
+- Handles state pruning and historical data management
+
+**Networking** (`beacon_node/lighthouse_network/`, `beacon_node/network/`)
+
+- Libp2p-based P2P networking stack
+- Gossipsub for message propagation
+- Discovery v5 for peer discovery
+- Request/response protocols for sync
+
+**Fork Choice** (`consensus/fork_choice/`, `consensus/proto_array/`)
+
+- Implements Ethereum's fork choice algorithm (proto-array)
+- Manages chain reorganizations and finality
+
+**Execution Layer Integration** (`beacon_node/execution_layer/`)
+
+- Interfaces with execution clients
+- Retrieves payloads from local execution layer or external block builders
+- Handles payload validation and builder integration
+
+**Slasher** (`slasher/`)
+
+- Optional slashing detection service
+- Supports LMDB, MDBX, and REDB database backends
+- Can be enabled with `--slasher` flag
+
+### Utilities
+
+**Account Manager** (`account_manager/`) - CLI tool for managing validator accounts and keystores
+**LCLI** (`lcli/`) - Lighthouse command-line utilities for debugging and testing
+**Database Manager** (`database_manager/`) - Database maintenance and migration tools
+
+### Build System Notes
+
+- Uses Cargo workspace with 90+ member crates
+- Supports multiple Ethereum specifications via feature flags (`gnosis`, `spec-minimal`)
+- Cross-compilation support for Linux x86_64, ARM64, and RISC-V
+- Multiple build profiles: `release`, `maxperf`, `reproducible`
+- Feature-based compilation for different database backends and optional components
+
+### Network Support
+
+- **Mainnet**: Default production network
+- **Gnosis**: Alternative network (requires `gnosis` feature)
+- **Testnets**: Holesky, Sepolia via built-in network configs
+- **Custom networks**: Via `--testnet-dir` flag
+
+### Key Configuration
+
+- Default data directory: `~/.lighthouse/{network}`
+- Beacon node data: `~/.lighthouse/{network}/beacon`
+- Validator data: `~/.lighthouse/{network}/validators`
+- Configuration primarily via CLI flags and YAML files
+
+## Common Review Standards
+
+### CI/Testing Requirements
+
+- All checks must pass before merge
+- Test coverage expected for significant changes
+- Flaky tests are actively addressed and fixed
+- New features often require corresponding tests
+- `beacon_chain` and `http_api` tests support fork-specific testing using `FORK_NAME` env var when `beacon_chain/fork_from_env` feature is enabled
+
+### Code Quality Standards
+
+- Clippy warnings must be fixed promptly (multiple PRs show this pattern)
+- Code formatting with `cargo fmt` enforced
+- Must run `cargo sort` when adding dependencies - dependency order is enforced on CI
+- Performance considerations for hot paths
+
+### Documentation and Context
+
+- PRs require clear descriptions of what and why
+- Breaking changes need migration documentation
+- API changes require documentation updates
+- When CLI is updated, run `make cli-local` to generate updated help text in lighthouse book
+- Comments appreciated for complex logic
+
+### Security and Safety
+
+- Careful review of consensus-critical code paths
+- Error handling patterns must be comprehensive
+- Input validation for external data
+
+## Development Patterns and Best Practices
+
+### Panics and Error Handling
+
+- **Panics should be avoided at all costs**
+- Always prefer returning a `Result` or `Option` over causing a panic (e.g., prefer `array.get(1)?` over `array[1]`)
+- Avoid `expect` or `unwrap` at runtime - only acceptable during startup when validating CLI flags or configurations
+- If you must make assumptions about panics, use `.expect("Helpful message")` instead of `.unwrap()` and provide detailed reasoning in nearby comments
+- Use proper error handling with `Result` types and graceful error propagation
+
+### Rayon Usage
+
+- Avoid using the rayon global thread pool as it results in CPU oversubscription when the beacon processor has fully allocated all CPUs to workers
+- Use scoped rayon pools started by beacon processor for computational intensive tasks
+
+### Locks
+
+- Take great care to avoid deadlocks when working with fork choice locks - seek detailed review ([reference](beacon_node/beacon_chain/src/canonical_head.rs:9))
+- Keep lock scopes as narrow as possible to avoid blocking fast-responding functions like the networking stack
+
+### Async Patterns
+
+- Avoid blocking computations in async tasks
+- Spawn a blocking task instead for CPU-intensive work
+
+### Tracing
+
+- Design spans carefully and avoid overuse of spans just to add context data to events
+- Avoid using spans on simple getter methods as it can result in performance overhead
+- Be cautious of span explosion with recursive functions
+- Use spans per meaningful step or computationally critical step
+- Avoid using `span.enter()` or `span.entered()` in async tasks
+
+### Database
+
+- Maintain schema continuity on `unstable` branch
+- Database migrations must be backward compatible
+
+### Consensus Crate
+
+- Use safe math methods like `saturating_xxx` or `checked_xxx`
+- Critical that this crate behaves deterministically and MUST not have undefined behavior
+
+### Testing Patterns
+
+- **Use appropriate test types for the right scenarios**:
+ - **Unit tests** for single component edge cases and isolated logic
+ - **Integration tests** using [`BeaconChainHarness`](beacon_node/beacon_chain/src/test_utils.rs:668) for end-to-end workflows
+- **`BeaconChainHarness` guidelines**:
+ - Excellent for integration testing but slower than unit tests
+ - Prefer unit tests instead for testing edge cases of single components
+ - Reserve for testing component interactions and full workflows
+- **Mocking strategies**:
+ - Use `mockall` crate for unit test mocking
+ - Use `mockito` for HTTP API mocking (see [`validator_test_rig`](testing/validator_test_rig/src/mock_beacon_node.rs:20) for examples)
+- **Event-based testing for sync components**:
+ - Use [`TestRig`](beacon_node/network/src/sync/tests/mod.rs) pattern for testing sync components
+ - Sync components interact with the network and beacon chain via events (their public API), making event-based testing more suitable than using internal functions and mutating internal states
+ - Enables testing of complex state transitions and timing-sensitive scenarios
+- **Testing `BeaconChain` dependent components**:
+ - `BeaconChain` is difficult to create for TDD
+ - Create intermediate adapter structs to enable easy mocking
+ - See [`beacon_node/beacon_chain/src/fetch_blobs/tests.rs`](beacon_node/beacon_chain/src/fetch_blobs/tests.rs) for the adapter pattern
+- **Local testnet for manual/full E2E testing**:
+ - Use Kurtosis-based local testnet setup for comprehensive testing
+ - See [`scripts/local_testnet/README.md`](scripts/local_testnet/README.md) for setup instructions
+
+### TODOs and Comments
+
+- All `TODO` statements must be accompanied by a GitHub issue link
+- Prefer line (`//`) comments to block comments (`/* ... */`)
+- Use doc comments (`///`) before attributes for public items
+- Keep documentation concise and clear - avoid verbose explanations
+- Provide examples in doc comments for public APIs when helpful
+
+## Logging Guidelines
+
+Use appropriate log levels for different scenarios:
+
+- **`crit`**: Critical issues with major impact to Lighthouse functionality - Lighthouse may not function correctly without resolving. Needs immediate attention.
+- **`error`**: Error cases that may have moderate impact to Lighthouse functionality. Expect to receive reports from users for this level.
+- **`warn`**: Unexpected code paths that don't have major impact - fully recoverable. Expect user reports if excessive warning logs occur.
+- **`info`**: High-level logs indicating beacon node status and block import status. Should not be used excessively.
+- **`debug`**: Events lower level than info useful for developers. Can also log errors expected during normal operation that users don't need to action.
+
+## Code Examples
+
+### Safe Math in Consensus Crate
+
+```rust
+// ❌ Avoid - could panic
+let result = a + b;
+
+// ✅ Preferred
+let result = a.saturating_add(b);
+// or
+use safe_arith::SafeArith;
+
+let result = a.safe_add(b)?;
+```
+
+### Panics and Error Handling
+
+```rust
+// ❌ Avoid - could panic at runtime
+let value = some_result.unwrap();
+let item = array[1];
+
+// ✅ Preferred - proper error handling
+let value = some_result.map_err(|e| CustomError::SomeVariant(e))?;
+let item = array.get(1)?;
+
+// ✅ Acceptable during startup for CLI/config validation
+let config_value = matches.get_one::("required-flag")
+ .expect("Required flag must be present due to clap validation");
+
+// ✅ If you must make runtime assumptions, use expect with explanation
+let item = array.get(1).expect("Array always has at least 2 elements due to validation in constructor");
+// Detailed reasoning should be provided in nearby comments
+```
+
+### TODO Format
+
+```rust
+pub fn my_function(&mut self, _something: &[u8]) -> Result {
+ // TODO: Implement proper validation here
+ // https://github.com/sigp/lighthouse/issues/1234
+}
+```
+
+### Async Task Spawning for Blocking Work
+
+```rust
+// ❌ Avoid - blocking in async context
+async fn some_handler() {
+ let result = expensive_computation(); // blocks async runtime
+}
+
+// ✅ Preferred
+async fn some_handler() {
+ let result = tokio::task::spawn_blocking(|| {
+ expensive_computation()
+ }).await?;
+}
+```
+
+### Tracing Span Usage
+
+```rust
+// ❌ Avoid - span on simple getter
+#[instrument]
+fn get_head_block_root(&self) -> Hash256 {
+ self.head_block_root
+}
+
+// ✅ Preferred - span on meaningful operations
+#[instrument(skip(self))]
+async fn process_block(&self, block: Block) -> Result<(), Error> {
+ // meaningful computation
+}
+```
+
+## Build and Development Notes
+
+- Full builds and tests take 5+ minutes - use large timeouts (300s+) for any `cargo build`, `cargo nextest`, or `make` commands
+- Use `cargo check` for faster iteration during development and always run after code changes
+- Prefer targeted package tests (`cargo nextest run -p `) and individual tests over full test suite when debugging specific issues
+- Use `cargo fmt --all && make lint-fix` to format code and fix linting issues once a task is complete
+- Always understand the broader codebase patterns before making changes
+- Minimum Supported Rust Version (MSRV) is documented in `lighthouse/Cargo.toml` - ensure Rust version meets or exceeds this requirement
diff --git a/Cargo.lock b/Cargo.lock
index 9ff9d62f5e..7fc1459c42 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2,19 +2,9 @@
# It is not intended for manual editing.
version = 4
-[[package]]
-name = "Inflector"
-version = "0.11.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3"
-dependencies = [
- "lazy_static",
- "regex",
-]
-
[[package]]
name = "account_manager"
-version = "0.3.5"
+version = "8.0.1"
dependencies = [
"account_utils",
"bls",
@@ -44,10 +34,11 @@ dependencies = [
name = "account_utils"
version = "0.1.0"
dependencies = [
+ "bls",
"eth2_keystore",
"eth2_wallet",
"filesystem",
- "rand 0.8.5",
+ "rand 0.9.2",
"regex",
"rpassword",
"serde",
@@ -58,20 +49,11 @@ dependencies = [
"zeroize",
]
-[[package]]
-name = "addr2line"
-version = "0.24.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1"
-dependencies = [
- "gimli",
-]
-
[[package]]
name = "adler2"
-version = "2.0.0"
+version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
+checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
[[package]]
name = "aead"
@@ -80,7 +62,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0"
dependencies = [
"crypto-common",
- "generic-array 0.14.7",
+ "generic-array",
]
[[package]]
@@ -93,7 +75,7 @@ dependencies = [
"cipher 0.3.0",
"cpufeatures",
"ctr 0.8.0",
- "opaque-debug 0.3.1",
+ "opaque-debug",
]
[[package]]
@@ -135,9 +117,9 @@ dependencies = [
[[package]]
name = "aho-corasick"
-version = "1.1.3"
+version = "1.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
dependencies = [
"memchr",
]
@@ -149,90 +131,272 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
[[package]]
-name = "alloy-consensus"
-version = "0.3.6"
+name = "alloy-chains"
+version = "0.2.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "629b62e38d471cc15fea534eb7283d2f8a4e8bdb1811bcc5d66dda6cfce6fae1"
+checksum = "4bc32535569185cbcb6ad5fa64d989a47bccb9a08e27284b1f2a3ccf16e6d010"
+dependencies = [
+ "alloy-primitives",
+ "num_enum",
+ "strum",
+]
+
+[[package]]
+name = "alloy-consensus"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2e318e25fb719e747a7e8db1654170fc185024f3ed5b10f86c08d448a912f6e2"
dependencies = [
"alloy-eips",
"alloy-primitives",
"alloy-rlp",
+ "alloy-serde",
+ "alloy-trie",
+ "alloy-tx-macros",
+ "auto_impl",
+ "borsh",
"c-kzg",
+ "derive_more 2.0.1",
+ "either",
+ "k256",
+ "once_cell",
+ "rand 0.8.5",
+ "secp256k1",
+ "serde",
+ "serde_json",
+ "serde_with",
+ "thiserror 2.0.17",
+]
+
+[[package]]
+name = "alloy-consensus-any"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "364380a845193a317bcb7a5398fc86cdb66c47ebe010771dde05f6869bf9e64a"
+dependencies = [
+ "alloy-consensus",
+ "alloy-eips",
+ "alloy-primitives",
+ "alloy-rlp",
+ "alloy-serde",
+ "serde",
+]
+
+[[package]]
+name = "alloy-dyn-abi"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fdff496dd4e98a81f4861e66f7eaf5f2488971848bb42d9c892f871730245c8"
+dependencies = [
+ "alloy-json-abi",
+ "alloy-primitives",
+ "alloy-sol-type-parser",
+ "alloy-sol-types",
+ "itoa",
+ "winnow",
+]
+
+[[package]]
+name = "alloy-eip2124"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5"
+dependencies = [
+ "alloy-primitives",
+ "alloy-rlp",
+ "crc",
+ "serde",
+ "thiserror 2.0.17",
]
[[package]]
name = "alloy-eip2930"
-version = "0.1.0"
+version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0069cf0642457f87a01a014f6dc29d5d893cd4fd8fddf0c3cdfad1bb3ebafc41"
+checksum = "9441120fa82df73e8959ae0e4ab8ade03de2aaae61be313fbf5746277847ce25"
dependencies = [
"alloy-primitives",
"alloy-rlp",
+ "borsh",
+ "serde",
]
[[package]]
name = "alloy-eip7702"
-version = "0.1.1"
+version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ea59dc42102bc9a1905dc57901edc6dd48b9f38115df86c7d252acba70d71d04"
+checksum = "2919c5a56a1007492da313e7a3b6d45ef5edc5d33416fdec63c0d7a2702a0d20"
dependencies = [
"alloy-primitives",
"alloy-rlp",
+ "borsh",
+ "serde",
+ "thiserror 2.0.17",
]
[[package]]
name = "alloy-eips"
-version = "0.3.6"
+version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f923dd5fca5f67a43d81ed3ebad0880bd41f6dd0ada930030353ac356c54cd0f"
+checksum = "a4c4d7c5839d9f3a467900c625416b24328450c65702eb3d8caff8813e4d1d33"
dependencies = [
+ "alloy-eip2124",
"alloy-eip2930",
"alloy-eip7702",
"alloy-primitives",
"alloy-rlp",
+ "alloy-serde",
+ "auto_impl",
+ "borsh",
"c-kzg",
- "derive_more 1.0.0",
- "once_cell",
+ "derive_more 2.0.1",
+ "either",
"serde",
+ "serde_with",
"sha2 0.10.9",
+ "thiserror 2.0.17",
+]
+
+[[package]]
+name = "alloy-json-abi"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5513d5e6bd1cba6bdcf5373470f559f320c05c8c59493b6e98912fbe6733943f"
+dependencies = [
+ "alloy-primitives",
+ "alloy-sol-type-parser",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "alloy-json-rpc"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f72cf87cda808e593381fb9f005ffa4d2475552b7a6c5ac33d087bf77d82abd0"
+dependencies = [
+ "alloy-primitives",
+ "alloy-sol-types",
+ "http 1.3.1",
+ "serde",
+ "serde_json",
+ "thiserror 2.0.17",
+ "tracing",
+]
+
+[[package]]
+name = "alloy-network"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12aeb37b6f2e61b93b1c3d34d01ee720207c76fe447e2a2c217e433ac75b17f5"
+dependencies = [
+ "alloy-consensus",
+ "alloy-consensus-any",
+ "alloy-eips",
+ "alloy-json-rpc",
+ "alloy-network-primitives",
+ "alloy-primitives",
+ "alloy-rpc-types-any",
+ "alloy-rpc-types-eth",
+ "alloy-serde",
+ "alloy-signer",
+ "alloy-sol-types",
+ "async-trait",
+ "auto_impl",
+ "derive_more 2.0.1",
+ "futures-utils-wasm",
+ "serde",
+ "serde_json",
+ "thiserror 2.0.17",
+]
+
+[[package]]
+name = "alloy-network-primitives"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "abd29ace62872083e30929cd9b282d82723196d196db589f3ceda67edcc05552"
+dependencies = [
+ "alloy-consensus",
+ "alloy-eips",
+ "alloy-primitives",
+ "alloy-serde",
+ "serde",
]
[[package]]
name = "alloy-primitives"
-version = "0.8.25"
+version = "1.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8c77490fe91a0ce933a1f219029521f20fc28c2c0ca95d53fa4da9c00b8d9d4e"
+checksum = "355bf68a433e0fd7f7d33d5a9fc2583fde70bf5c530f63b80845f8da5505cf28"
dependencies = [
"alloy-rlp",
"arbitrary",
"bytes",
"cfg-if",
"const-hex",
- "derive_arbitrary",
"derive_more 2.0.1",
- "foldhash",
- "getrandom 0.2.16",
- "hashbrown 0.15.3",
- "indexmap 2.9.0",
+ "foldhash 0.2.0",
+ "getrandom 0.3.4",
+ "hashbrown 0.16.0",
+ "indexmap 2.12.0",
"itoa",
- "k256 0.13.4",
+ "k256",
"keccak-asm",
"paste",
"proptest",
"proptest-derive",
- "rand 0.8.5",
+ "rand 0.9.2",
"ruint",
"rustc-hash 2.1.1",
"serde",
- "sha3 0.10.8",
+ "sha3",
"tiny-keccak",
]
[[package]]
-name = "alloy-rlp"
-version = "0.3.11"
+name = "alloy-provider"
+version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d6c1d995bff8d011f7cd6c81820d51825e6e06d6db73914c1630ecf544d83d6"
+checksum = "9b710636d7126e08003b8217e24c09f0cca0b46d62f650a841736891b1ed1fc1"
+dependencies = [
+ "alloy-chains",
+ "alloy-consensus",
+ "alloy-eips",
+ "alloy-json-rpc",
+ "alloy-network",
+ "alloy-network-primitives",
+ "alloy-primitives",
+ "alloy-rpc-client",
+ "alloy-rpc-types-eth",
+ "alloy-signer",
+ "alloy-sol-types",
+ "alloy-transport",
+ "alloy-transport-http",
+ "async-stream",
+ "async-trait",
+ "auto_impl",
+ "dashmap",
+ "either",
+ "futures",
+ "futures-utils-wasm",
+ "lru 0.13.0",
+ "parking_lot",
+ "pin-project",
+ "reqwest",
+ "serde",
+ "serde_json",
+ "thiserror 2.0.17",
+ "tokio",
+ "tracing",
+ "url",
+ "wasmtimer",
+]
+
+[[package]]
+name = "alloy-rlp"
+version = "0.3.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f70d83b765fdc080dbcd4f4db70d8d23fe4761f2f02ebfa9146b833900634b4"
dependencies = [
"alloy-rlp-derive",
"arrayvec",
@@ -241,20 +405,247 @@ dependencies = [
[[package]]
name = "alloy-rlp-derive"
-version = "0.3.11"
+version = "0.3.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a40e1ef334153322fd878d07e86af7a529bcb86b2439525920a88eba87bcf943"
+checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
-name = "android-tzdata"
-version = "0.1.1"
+name = "alloy-rpc-client"
+version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
+checksum = "d0882e72d2c1c0c79dcf4ab60a67472d3f009a949f774d4c17d0bdb669cfde05"
+dependencies = [
+ "alloy-json-rpc",
+ "alloy-primitives",
+ "alloy-transport",
+ "alloy-transport-http",
+ "futures",
+ "pin-project",
+ "reqwest",
+ "serde",
+ "serde_json",
+ "tokio",
+ "tokio-stream",
+ "tower 0.5.2",
+ "tracing",
+ "url",
+ "wasmtimer",
+]
+
+[[package]]
+name = "alloy-rpc-types-any"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a63fb40ed24e4c92505f488f9dd256e2afaed17faa1b7a221086ebba74f4122"
+dependencies = [
+ "alloy-consensus-any",
+ "alloy-rpc-types-eth",
+ "alloy-serde",
+]
+
+[[package]]
+name = "alloy-rpc-types-eth"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9eae0c7c40da20684548cbc8577b6b7447f7bf4ddbac363df95e3da220e41e72"
+dependencies = [
+ "alloy-consensus",
+ "alloy-consensus-any",
+ "alloy-eips",
+ "alloy-network-primitives",
+ "alloy-primitives",
+ "alloy-rlp",
+ "alloy-serde",
+ "alloy-sol-types",
+ "itertools 0.14.0",
+ "serde",
+ "serde_json",
+ "serde_with",
+ "thiserror 2.0.17",
+]
+
+[[package]]
+name = "alloy-serde"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0df1987ed0ff2d0159d76b52e7ddfc4e4fbddacc54d2fbee765e0d14d7c01b5"
+dependencies = [
+ "alloy-primitives",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "alloy-signer"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ff69deedee7232d7ce5330259025b868c5e6a52fa8dffda2c861fb3a5889b24"
+dependencies = [
+ "alloy-primitives",
+ "async-trait",
+ "auto_impl",
+ "either",
+ "elliptic-curve",
+ "k256",
+ "thiserror 2.0.17",
+]
+
+[[package]]
+name = "alloy-signer-local"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72cfe0be3ec5a8c1a46b2e5a7047ed41121d360d97f4405bb7c1c784880c86cb"
+dependencies = [
+ "alloy-consensus",
+ "alloy-network",
+ "alloy-primitives",
+ "alloy-signer",
+ "async-trait",
+ "k256",
+ "rand 0.8.5",
+ "thiserror 2.0.17",
+]
+
+[[package]]
+name = "alloy-sol-macro"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f3ce480400051b5217f19d6e9a82d9010cdde20f1ae9c00d53591e4a1afbb312"
+dependencies = [
+ "alloy-sol-macro-expander",
+ "alloy-sol-macro-input",
+ "proc-macro-error2",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.110",
+]
+
+[[package]]
+name = "alloy-sol-macro-expander"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d792e205ed3b72f795a8044c52877d2e6b6e9b1d13f431478121d8d4eaa9028"
+dependencies = [
+ "alloy-sol-macro-input",
+ "const-hex",
+ "heck",
+ "indexmap 2.12.0",
+ "proc-macro-error2",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.110",
+ "syn-solidity",
+ "tiny-keccak",
+]
+
+[[package]]
+name = "alloy-sol-macro-input"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0bd1247a8f90b465ef3f1207627547ec16940c35597875cdc09c49d58b19693c"
+dependencies = [
+ "const-hex",
+ "dunce",
+ "heck",
+ "macro-string",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.110",
+ "syn-solidity",
+]
+
+[[package]]
+name = "alloy-sol-type-parser"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "954d1b2533b9b2c7959652df3076954ecb1122a28cc740aa84e7b0a49f6ac0a9"
+dependencies = [
+ "serde",
+ "winnow",
+]
+
+[[package]]
+name = "alloy-sol-types"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70319350969a3af119da6fb3e9bddb1bce66c9ea933600cb297c8b1850ad2a3c"
+dependencies = [
+ "alloy-json-abi",
+ "alloy-primitives",
+ "alloy-sol-macro",
+ "serde",
+]
+
+[[package]]
+name = "alloy-transport"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be98b07210d24acf5b793c99b759e9a696e4a2e67593aec0487ae3b3e1a2478c"
+dependencies = [
+ "alloy-json-rpc",
+ "auto_impl",
+ "base64 0.22.1",
+ "derive_more 2.0.1",
+ "futures",
+ "futures-utils-wasm",
+ "parking_lot",
+ "serde",
+ "serde_json",
+ "thiserror 2.0.17",
+ "tokio",
+ "tower 0.5.2",
+ "tracing",
+ "url",
+ "wasmtimer",
+]
+
+[[package]]
+name = "alloy-transport-http"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4198a1ee82e562cab85e7f3d5921aab725d9bd154b6ad5017f82df1695877c97"
+dependencies = [
+ "alloy-json-rpc",
+ "alloy-transport",
+ "reqwest",
+ "serde_json",
+ "tower 0.5.2",
+ "tracing",
+ "url",
+]
+
+[[package]]
+name = "alloy-trie"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3412d52bb97c6c6cc27ccc28d4e6e8cf605469101193b50b0bd5813b1f990b5"
+dependencies = [
+ "alloy-primitives",
+ "alloy-rlp",
+ "arrayvec",
+ "derive_more 2.0.1",
+ "nybbles",
+ "serde",
+ "smallvec",
+ "tracing",
+]
+
+[[package]]
+name = "alloy-tx-macros"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "333544408503f42d7d3792bfc0f7218b643d968a03d2c0ed383ae558fb4a76d0"
+dependencies = [
+ "darling 0.21.3",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.110",
+]
[[package]]
name = "android_system_properties"
@@ -273,9 +664,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
[[package]]
name = "anstream"
-version = "0.6.18"
+version = "0.6.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b"
+checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a"
dependencies = [
"anstyle",
"anstyle-parse",
@@ -288,50 +679,50 @@ dependencies = [
[[package]]
name = "anstyle"
-version = "1.0.10"
+version = "1.0.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9"
+checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78"
[[package]]
name = "anstyle-parse"
-version = "0.2.6"
+version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9"
+checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2"
dependencies = [
"utf8parse",
]
[[package]]
name = "anstyle-query"
-version = "1.1.2"
+version = "1.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c"
+checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"
dependencies = [
- "windows-sys 0.59.0",
+ "windows-sys 0.60.2",
]
[[package]]
name = "anstyle-wincon"
-version = "3.0.7"
+version = "3.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e"
+checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"
dependencies = [
"anstyle",
- "once_cell",
- "windows-sys 0.59.0",
+ "once_cell_polyfill",
+ "windows-sys 0.60.2",
]
[[package]]
name = "anyhow"
-version = "1.0.98"
+version = "1.0.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487"
+checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"
[[package]]
name = "arbitrary"
-version = "1.4.1"
+version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223"
+checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1"
dependencies = [
"derive_arbitrary",
]
@@ -389,6 +780,26 @@ dependencies = [
"zeroize",
]
+[[package]]
+name = "ark-ff"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70"
+dependencies = [
+ "ark-ff-asm 0.5.0",
+ "ark-ff-macros 0.5.0",
+ "ark-serialize 0.5.0",
+ "ark-std 0.5.0",
+ "arrayvec",
+ "digest 0.10.7",
+ "educe",
+ "itertools 0.13.0",
+ "num-bigint",
+ "num-traits",
+ "paste",
+ "zeroize",
+]
+
[[package]]
name = "ark-ff-asm"
version = "0.3.0"
@@ -409,6 +820,16 @@ dependencies = [
"syn 1.0.109",
]
+[[package]]
+name = "ark-ff-asm"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60"
+dependencies = [
+ "quote",
+ "syn 2.0.110",
+]
+
[[package]]
name = "ark-ff-macros"
version = "0.3.0"
@@ -434,6 +855,19 @@ dependencies = [
"syn 1.0.109",
]
+[[package]]
+name = "ark-ff-macros"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3"
+dependencies = [
+ "num-bigint",
+ "num-traits",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.110",
+]
+
[[package]]
name = "ark-serialize"
version = "0.3.0"
@@ -455,6 +889,18 @@ dependencies = [
"num-bigint",
]
+[[package]]
+name = "ark-serialize"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7"
+dependencies = [
+ "ark-std 0.5.0",
+ "arrayvec",
+ "digest 0.10.7",
+ "num-bigint",
+]
+
[[package]]
name = "ark-std"
version = "0.3.0"
@@ -475,6 +921,16 @@ dependencies = [
"rand 0.8.5",
]
+[[package]]
+name = "ark-std"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a"
+dependencies = [
+ "num-traits",
+ "rand 0.8.5",
+]
+
[[package]]
name = "arraydeque"
version = "0.5.1"
@@ -492,12 +948,15 @@ name = "arrayvec"
version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
+dependencies = [
+ "serde",
+]
[[package]]
name = "asn1-rs"
-version = "0.6.2"
+version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5493c3bedbacf7fd7382c6346bbd66687d12bbaad3a89a2d2c303ee6cf20b048"
+checksum = "56624a96882bb8c26d61312ae18cb45868e5a9992ea73c58e45c3101e56a1e60"
dependencies = [
"asn1-rs-derive",
"asn1-rs-impl",
@@ -505,19 +964,19 @@ dependencies = [
"nom",
"num-traits",
"rusticata-macros",
- "thiserror 1.0.69",
+ "thiserror 2.0.17",
"time",
]
[[package]]
name = "asn1-rs-derive"
-version = "0.5.1"
+version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490"
+checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
"synstructure",
]
@@ -529,7 +988,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
@@ -561,9 +1020,9 @@ dependencies = [
[[package]]
name = "async-channel"
-version = "2.3.1"
+version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a"
+checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2"
dependencies = [
"concurrent-queue",
"event-listener-strategy",
@@ -573,65 +1032,53 @@ dependencies = [
[[package]]
name = "async-io"
-version = "2.4.0"
+version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059"
+checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc"
dependencies = [
- "async-lock",
+ "autocfg",
"cfg-if",
"concurrent-queue",
"futures-io",
"futures-lite",
"parking",
"polling",
- "rustix 0.38.44",
+ "rustix 1.1.2",
"slab",
- "tracing",
- "windows-sys 0.59.0",
+ "windows-sys 0.61.2",
]
[[package]]
-name = "async-lock"
-version = "3.4.0"
+name = "async-stream"
+version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18"
+checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476"
dependencies = [
- "event-listener 5.4.0",
- "event-listener-strategy",
+ "async-stream-impl",
+ "futures-core",
"pin-project-lite",
]
[[package]]
-name = "async-recursion"
-version = "1.1.1"
+name = "async-stream-impl"
+version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
+checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
name = "async-trait"
-version = "0.1.88"
+version = "0.1.89"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5"
+checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
-]
-
-[[package]]
-name = "async_io_stream"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c"
-dependencies = [
- "futures",
- "pharos",
- "rustc_version 0.4.1",
+ "syn 2.0.110",
]
[[package]]
@@ -655,38 +1102,16 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
[[package]]
name = "attohttpc"
-version = "0.24.1"
+version = "0.30.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8d9a9bf8b79a749ee0b911b91b671cc2b6c670bdbc7e3dfd537576ddc94bb2a2"
+checksum = "16e2cdb6d5ed835199484bb92bb8b3edd526effe995c61732580439c1a67e2e9"
dependencies = [
- "http 0.2.12",
+ "base64 0.22.1",
+ "http 1.3.1",
"log",
"url",
]
-[[package]]
-name = "atty"
-version = "0.2.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
-dependencies = [
- "hermit-abi 0.1.19",
- "libc",
- "winapi",
-]
-
-[[package]]
-name = "auto_impl"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7862e21c893d65a1650125d157eaeec691439379a1cee17ee49031b79236ada4"
-dependencies = [
- "proc-macro-error",
- "proc-macro2",
- "quote",
- "syn 1.0.109",
-]
-
[[package]]
name = "auto_impl"
version = "1.3.0"
@@ -695,28 +1120,60 @@ checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
name = "autocfg"
-version = "1.4.0"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
+checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
[[package]]
-name = "backtrace"
-version = "0.3.75"
+name = "axum"
+version = "0.7.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002"
+checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f"
dependencies = [
- "addr2line",
- "cfg-if",
- "libc",
- "miniz_oxide",
- "object",
- "rustc-demangle",
- "windows-targets 0.52.6",
+ "async-trait",
+ "axum-core",
+ "bytes",
+ "futures-util",
+ "http 1.3.1",
+ "http-body 1.0.1",
+ "http-body-util",
+ "itoa",
+ "matchit",
+ "memchr",
+ "mime",
+ "percent-encoding",
+ "pin-project-lite",
+ "rustversion",
+ "serde",
+ "sync_wrapper",
+ "tower 0.5.2",
+ "tower-layer",
+ "tower-service",
+]
+
+[[package]]
+name = "axum-core"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199"
+dependencies = [
+ "async-trait",
+ "bytes",
+ "futures-util",
+ "http 1.3.1",
+ "http-body 1.0.1",
+ "http-body-util",
+ "mime",
+ "pin-project-lite",
+ "rustversion",
+ "sync_wrapper",
+ "tower-layer",
+ "tower-service",
]
[[package]]
@@ -725,12 +1182,6 @@ version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270"
-[[package]]
-name = "base16ct"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce"
-
[[package]]
name = "base16ct"
version = "0.2.0"
@@ -738,27 +1189,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
[[package]]
-name = "base58"
-version = "0.1.0"
+name = "base256emoji"
+version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83"
-
-[[package]]
-name = "base58check"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2ee2fe4c9a0c84515f136aaae2466744a721af6d63339c18689d9e995d74d99b"
+checksum = "b5e9430d9a245a77c92176e649af6e275f20839a48389859d1661e9a128d077c"
dependencies = [
- "base58",
- "sha2 0.8.2",
+ "const-str",
+ "match-lookup",
]
-[[package]]
-name = "base64"
-version = "0.12.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff"
-
[[package]]
name = "base64"
version = "0.13.1"
@@ -779,20 +1218,19 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
[[package]]
name = "base64ct"
-version = "1.7.3"
+version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89e25b6adfb930f02d1981565a6e5d9c547ac15a96606256d3b59040e5cd4ca3"
+checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba"
[[package]]
name = "beacon_chain"
version = "0.2.0"
dependencies = [
"alloy-primitives",
- "bitvec 1.0.1",
+ "bitvec",
"bls",
"criterion",
- "derivative",
- "eth1",
+ "educe",
"eth2",
"eth2_network_config",
"ethereum_hashing",
@@ -800,6 +1238,7 @@ dependencies = [
"ethereum_ssz",
"ethereum_ssz_derive",
"execution_layer",
+ "fixed_bytes",
"fork_choice",
"futures",
"genesis",
@@ -807,18 +1246,22 @@ dependencies = [
"int_to_bytes",
"itertools 0.10.5",
"kzg",
+ "lighthouse_tracing",
"lighthouse_version",
"logging",
- "lru",
+ "lru 0.12.5",
"maplit",
"merkle_proof",
"metrics",
+ "milhouse",
+ "mockall",
+ "mockall_double",
"once_cell",
"oneshot_broadcast",
"operation_pool",
- "parking_lot 0.12.3",
+ "parking_lot",
"proto_array",
- "rand 0.8.5",
+ "rand 0.9.2",
"rayon",
"safe_arith",
"sensitive_url",
@@ -839,15 +1282,18 @@ dependencies = [
"tracing",
"tree_hash",
"tree_hash_derive",
+ "typenum",
"types",
+ "zstd 0.13.3",
]
[[package]]
name = "beacon_node"
-version = "7.1.0-beta.0"
+version = "8.0.1"
dependencies = [
"account_utils",
"beacon_chain",
+ "bls",
"clap",
"clap_utils",
"client",
@@ -859,9 +1305,10 @@ dependencies = [
"genesis",
"hex",
"http_api",
- "hyper 1.6.0",
+ "hyper 1.8.1",
"lighthouse_network",
"monitoring_api",
+ "network_utils",
"node_test_rig",
"sensitive_url",
"serde_json",
@@ -871,17 +1318,18 @@ dependencies = [
"task_executor",
"tracing",
"types",
- "unused_port",
]
[[package]]
name = "beacon_node_fallback"
version = "0.1.0"
dependencies = [
+ "bls",
"clap",
"eth2",
"futures",
"itertools 0.10.5",
+ "sensitive_url",
"serde",
"slot_clock",
"strum",
@@ -904,7 +1352,7 @@ dependencies = [
"logging",
"metrics",
"num_cpus",
- "parking_lot 0.12.3",
+ "parking_lot",
"serde",
"slot_clock",
"strum",
@@ -915,12 +1363,6 @@ dependencies = [
"types",
]
-[[package]]
-name = "bech32"
-version = "0.7.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2dabbe35f96fb9507f7330793dc490461b2962659ac5d427181e451a623751d1"
-
[[package]]
name = "bincode"
version = "1.3.3"
@@ -936,7 +1378,7 @@ version = "0.69.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.10.0",
"cexpr",
"clang-sys",
"itertools 0.12.1",
@@ -949,7 +1391,7 @@ dependencies = [
"regex",
"rustc-hash 1.1.0",
"shlex",
- "syn 2.0.101",
+ "syn 2.0.110",
"which",
]
@@ -968,6 +1410,22 @@ version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7"
+[[package]]
+name = "bitcoin-io"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf"
+
+[[package]]
+name = "bitcoin_hashes"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16"
+dependencies = [
+ "bitcoin-io",
+ "hex-conservative",
+]
+
[[package]]
name = "bitflags"
version = "1.3.2"
@@ -976,31 +1434,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
-version = "2.9.0"
+version = "2.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd"
-
-[[package]]
-name = "bitvec"
-version = "0.17.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41262f11d771fd4a61aa3ce019fca363b4b6c282fca9da2a31186d3965a47a5c"
-dependencies = [
- "either",
- "radium 0.3.0",
-]
-
-[[package]]
-name = "bitvec"
-version = "0.20.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848"
-dependencies = [
- "funty 1.1.0",
- "radium 0.6.2",
- "tap",
- "wyz 0.2.0",
-]
+checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
[[package]]
name = "bitvec"
@@ -1008,10 +1444,10 @@ version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c"
dependencies = [
- "funty 2.0.0",
- "radium 0.7.0",
+ "funty",
+ "radium",
"tap",
- "wyz 0.5.1",
+ "wyz",
]
[[package]]
@@ -1023,26 +1459,13 @@ dependencies = [
"digest 0.10.7",
]
-[[package]]
-name = "block-buffer"
-version = "0.7.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b"
-dependencies = [
- "block-padding 0.1.5",
- "byte-tools",
- "byteorder",
- "generic-array 0.12.4",
-]
-
[[package]]
name = "block-buffer"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"
dependencies = [
- "block-padding 0.2.1",
- "generic-array 0.14.7",
+ "generic-array",
]
[[package]]
@@ -1051,24 +1474,18 @@ version = "0.10.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
dependencies = [
- "generic-array 0.14.7",
+ "generic-array",
]
[[package]]
-name = "block-padding"
-version = "0.1.5"
+name = "block2"
+version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5"
+checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5"
dependencies = [
- "byte-tools",
+ "objc2",
]
-[[package]]
-name = "block-padding"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae"
-
[[package]]
name = "bls"
version = "0.2.0"
@@ -1081,7 +1498,7 @@ dependencies = [
"ethereum_ssz",
"fixed_bytes",
"hex",
- "rand 0.8.5",
+ "rand 0.9.2",
"safe_arith",
"serde",
"tree_hash",
@@ -1090,9 +1507,9 @@ dependencies = [
[[package]]
name = "blst"
-version = "0.3.14"
+version = "0.3.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "47c79a94619fade3c0b887670333513a67ac28a6a7e653eb260bf0d4103db38d"
+checksum = "dcdb4c7013139a150f9fc55d123186dbfaba0d912817466282c73ac49e71fb45"
dependencies = [
"cc",
"glob",
@@ -1108,8 +1525,8 @@ checksum = "7a8a8ed6fefbeef4a8c7b460e4110e12c5e22a5b7cf32621aae6ad650c4dcf29"
dependencies = [
"blst",
"byte-slice-cast",
- "ff 0.13.1",
- "group 0.13.0",
+ "ff",
+ "group",
"pairing",
"rand_core 0.6.4",
"serde",
@@ -1118,7 +1535,7 @@ dependencies = [
[[package]]
name = "boot_node"
-version = "7.1.0-beta.0"
+version = "8.0.1"
dependencies = [
"beacon_node",
"bytes",
@@ -1130,6 +1547,7 @@ dependencies = [
"lighthouse_network",
"log",
"logging",
+ "network_utils",
"serde",
"tokio",
"tracing",
@@ -1137,6 +1555,29 @@ dependencies = [
"types",
]
+[[package]]
+name = "borsh"
+version = "1.5.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce"
+dependencies = [
+ "borsh-derive",
+ "cfg_aliases",
+]
+
+[[package]]
+name = "borsh-derive"
+version = "1.5.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fdd1d3c0c2f5833f22386f252fe8ed005c7f59fdcddeef025c01b4c3b9fd9ac3"
+dependencies = [
+ "once_cell",
+ "proc-macro-crate",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.110",
+]
+
[[package]]
name = "bs58"
version = "0.4.0"
@@ -1156,20 +1597,24 @@ dependencies = [
name = "builder_client"
version = "0.1.0"
dependencies = [
+ "bls",
+ "context_deserialize",
"eth2",
"ethereum_ssz",
"lighthouse_version",
+ "mockito",
"reqwest",
"sensitive_url",
"serde",
"serde_json",
+ "tokio",
]
[[package]]
name = "bumpalo"
-version = "3.17.0"
+version = "3.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf"
+checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43"
[[package]]
name = "byte-slice-cast"
@@ -1177,12 +1622,6 @@ version = "1.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d"
-[[package]]
-name = "byte-tools"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7"
-
[[package]]
name = "byteorder"
version = "1.5.0"
@@ -1191,9 +1630,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
[[package]]
name = "bytes"
-version = "1.10.1"
+version = "1.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
+checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3"
dependencies = [
"serde",
]
@@ -1220,9 +1659,9 @@ dependencies = [
[[package]]
name = "c-kzg"
-version = "1.0.3"
+version = "2.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0307f72feab3300336fb803a57134159f6e20139af1357f36c54cb90d8e8928"
+checksum = "e00bf4b112b07b505472dbefd19e37e53307e2bfed5a79e0cc161d58ccd0e687"
dependencies = [
"blst",
"cc",
@@ -1235,11 +1674,11 @@ dependencies = [
[[package]]
name = "camino"
-version = "1.1.9"
+version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3"
+checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609"
dependencies = [
- "serde",
+ "serde_core",
]
[[package]]
@@ -1251,20 +1690,6 @@ dependencies = [
"serde",
]
-[[package]]
-name = "cargo_metadata"
-version = "0.15.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a"
-dependencies = [
- "camino",
- "cargo-platform",
- "semver 1.0.26",
- "serde",
- "serde_json",
- "thiserror 1.0.69",
-]
-
[[package]]
name = "cargo_metadata"
version = "0.19.2"
@@ -1273,10 +1698,10 @@ checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba"
dependencies = [
"camino",
"cargo-platform",
- "semver 1.0.26",
+ "semver 1.0.27",
"serde",
"serde_json",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
]
[[package]]
@@ -1287,10 +1712,11 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
[[package]]
name = "cc"
-version = "1.2.21"
+version = "1.2.46"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8691782945451c1c383942c4874dbe63814f61cb57ef773cda2972682b7bb3c0"
+checksum = "b97463e1064cb1b1c1384ad0a0b9c8abd0988e2a91f52606c80ef14aadb63e36"
dependencies = [
+ "find-msvc-tools",
"jobserver",
"libc",
"shlex",
@@ -1307,9 +1733,9 @@ dependencies = [
[[package]]
name = "cfg-if"
-version = "1.0.0"
+version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
[[package]]
name = "cfg_aliases"
@@ -1343,14 +1769,14 @@ dependencies = [
[[package]]
name = "chrono"
-version = "0.4.41"
+version = "0.4.42"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d"
+checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2"
dependencies = [
- "android-tzdata",
"iana-time-zone",
"js-sys",
"num-traits",
+ "serde",
"wasm-bindgen",
"windows-link",
]
@@ -1388,7 +1814,7 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7"
dependencies = [
- "generic-array 0.14.7",
+ "generic-array",
]
[[package]]
@@ -1415,9 +1841,9 @@ dependencies = [
[[package]]
name = "clap"
-version = "4.5.37"
+version = "4.5.53"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eccb054f56cbd38340b380d4a8e69ef1f02f1af43db2f0cc817a4774d80ae071"
+checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8"
dependencies = [
"clap_builder",
"clap_derive",
@@ -1425,9 +1851,9 @@ dependencies = [
[[package]]
name = "clap_builder"
-version = "4.5.37"
+version = "4.5.53"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "efd9466fac8543255d3b1fcad4762c5e116ffe808c8a3043d4263cd4fd4862a2"
+checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00"
dependencies = [
"anstream",
"anstyle",
@@ -1438,21 +1864,21 @@ dependencies = [
[[package]]
name = "clap_derive"
-version = "4.5.32"
+version = "4.5.49"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7"
+checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671"
dependencies = [
- "heck 0.5.0",
+ "heck",
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
name = "clap_lex"
-version = "0.7.4"
+version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6"
+checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d"
[[package]]
name = "clap_utils"
@@ -1479,7 +1905,6 @@ dependencies = [
"directory",
"dirs",
"environment",
- "eth1",
"eth2",
"eth2_config",
"ethereum_ssz",
@@ -1495,7 +1920,7 @@ dependencies = [
"monitoring_api",
"network",
"operation_pool",
- "rand 0.8.5",
+ "rand 0.9.2",
"sensitive_url",
"serde",
"serde_json",
@@ -1523,68 +1948,11 @@ dependencies = [
"cc",
]
-[[package]]
-name = "coins-bip32"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "634c509653de24b439672164bbf56f5f582a2ab0e313d3b0f6af0b7345cf2560"
-dependencies = [
- "bincode",
- "bs58 0.4.0",
- "coins-core",
- "digest 0.10.7",
- "getrandom 0.2.16",
- "hmac 0.12.1",
- "k256 0.11.6",
- "lazy_static",
- "serde",
- "sha2 0.10.9",
- "thiserror 1.0.69",
-]
-
-[[package]]
-name = "coins-bip39"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a11892bcac83b4c6e95ab84b5b06c76d9d70ad73548dd07418269c5c7977171"
-dependencies = [
- "bitvec 0.17.4",
- "coins-bip32",
- "getrandom 0.2.16",
- "hex",
- "hmac 0.12.1",
- "pbkdf2 0.11.0",
- "rand 0.8.5",
- "sha2 0.10.9",
- "thiserror 1.0.69",
-]
-
-[[package]]
-name = "coins-core"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c94090a6663f224feae66ab01e41a2555a8296ee07b5f20dab8888bdefc9f617"
-dependencies = [
- "base58check",
- "base64 0.12.3",
- "bech32",
- "blake2",
- "digest 0.10.7",
- "generic-array 0.14.7",
- "hex",
- "ripemd",
- "serde",
- "serde_derive",
- "sha2 0.10.9",
- "sha3 0.10.8",
- "thiserror 1.0.69",
-]
-
[[package]]
name = "colorchoice"
-version = "1.0.3"
+version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990"
+checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75"
[[package]]
name = "colored"
@@ -1597,15 +1965,19 @@ dependencies = [
[[package]]
name = "compare_fields"
-version = "0.2.0"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05162add7c8618791829528194a271dca93f69194d35b19db1ca7fbfb8275278"
dependencies = [
"compare_fields_derive",
- "itertools 0.10.5",
+ "itertools 0.14.0",
]
[[package]]
name = "compare_fields_derive"
-version = "0.2.0"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f5ee468b2e568b668e2a686112935e7bbe9a81bf4fa6b9f6fc3410ea45fb7ce"
dependencies = [
"quote",
"syn 1.0.109",
@@ -1621,16 +1993,54 @@ dependencies = [
]
[[package]]
-name = "const-hex"
-version = "1.14.0"
+name = "console-api"
+version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b0485bab839b018a8f1723fc5391819fea5f8f0f32288ef8a735fd096b6160c"
+checksum = "8030735ecb0d128428b64cd379809817e620a40e5001c54465b99ec5feec2857"
+dependencies = [
+ "futures-core",
+ "prost",
+ "prost-types",
+ "tonic 0.12.3",
+ "tracing-core",
+]
+
+[[package]]
+name = "console-subscriber"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6539aa9c6a4cd31f4b1c040f860a1eac9aa80e7df6b05d506a6e7179936d6a01"
+dependencies = [
+ "console-api",
+ "crossbeam-channel",
+ "crossbeam-utils",
+ "futures-task",
+ "hdrhistogram",
+ "humantime",
+ "hyper-util",
+ "prost",
+ "prost-types",
+ "serde",
+ "serde_json",
+ "thread_local",
+ "tokio",
+ "tokio-stream",
+ "tonic 0.12.3",
+ "tracing",
+ "tracing-core",
+ "tracing-subscriber",
+]
+
+[[package]]
+name = "const-hex"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3bb320cac8a0750d7f25280aa97b09c26edfe161164238ecbbb31092b079e735"
dependencies = [
"cfg-if",
"cpufeatures",
- "hex",
"proptest",
- "serde",
+ "serde_core",
]
[[package]]
@@ -1640,10 +2050,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
[[package]]
-name = "const_format"
-version = "0.2.34"
+name = "const-str"
+version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd"
+checksum = "2f421161cb492475f1661ddc9815a745a1c894592070661180fdec3d4872e9c3"
+
+[[package]]
+name = "const_format"
+version = "0.2.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad"
dependencies = [
"const_format_proc_macros",
]
@@ -1667,21 +2083,21 @@ checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc"
[[package]]
name = "context_deserialize"
-version = "0.1.0"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c5f9ea0a0ae2de4943f5ca71590b6dbd0b952475f0a0cafb30a470cec78c8b9"
dependencies = [
- "milhouse",
+ "context_deserialize_derive",
"serde",
- "ssz_types",
]
[[package]]
name = "context_deserialize_derive"
-version = "0.1.0"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c57b2db1e4e3ed804dcc49894a144b68fe6c754b8f545eb1dda7ad3c7dbe7e6"
dependencies = [
- "context_deserialize",
"quote",
- "serde",
- "serde_json",
"syn 1.0.109",
]
@@ -1691,15 +2107,6 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
-[[package]]
-name = "convert_case"
-version = "0.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca"
-dependencies = [
- "unicode-segmentation",
-]
-
[[package]]
name = "core-foundation"
version = "0.9.4"
@@ -1710,6 +2117,16 @@ dependencies = [
"libc",
]
+[[package]]
+name = "core-foundation"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
[[package]]
name = "core-foundation-sys"
version = "0.8.7"
@@ -1735,62 +2152,25 @@ dependencies = [
]
[[package]]
-name = "crate_crypto_internal_eth_kzg_bls12_381"
-version = "0.5.4"
+name = "crc"
+version = "3.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76f9cdad245e39a3659bc4c8958e93de34bd31ba3131ead14ccfb4b2cd60e52d"
+checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675"
dependencies = [
- "blst",
- "blstrs",
- "ff 0.13.1",
- "group 0.13.0",
- "pairing",
- "subtle",
+ "crc-catalog",
]
[[package]]
-name = "crate_crypto_internal_eth_kzg_erasure_codes"
-version = "0.5.4"
+name = "crc-catalog"
+version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "581d28bcc93eecd97a04cebc5293271e0f41650f03c102f24d6cd784cbedb9f2"
-dependencies = [
- "crate_crypto_internal_eth_kzg_bls12_381",
- "crate_crypto_internal_eth_kzg_polynomial",
-]
-
-[[package]]
-name = "crate_crypto_internal_eth_kzg_maybe_rayon"
-version = "0.5.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06fc0f984e585ea984a766c5b58d6bf6c51e463b0a0835b0dd4652d358b506b3"
-
-[[package]]
-name = "crate_crypto_internal_eth_kzg_polynomial"
-version = "0.5.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56dff7a45e2d80308b21abdbc5520ec23c3ebfb3a94fafc02edfa7f356af6d7f"
-dependencies = [
- "crate_crypto_internal_eth_kzg_bls12_381",
-]
-
-[[package]]
-name = "crate_crypto_kzg_multi_open_fk20"
-version = "0.5.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a0c2f82695a88809e713e1ff9534cb90ceffab0a08f4bd33245db711f9d356f"
-dependencies = [
- "crate_crypto_internal_eth_kzg_bls12_381",
- "crate_crypto_internal_eth_kzg_maybe_rayon",
- "crate_crypto_internal_eth_kzg_polynomial",
- "hex",
- "sha2 0.10.9",
-]
+checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5"
[[package]]
name = "crc32fast"
-version = "1.4.2"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"
+checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
dependencies = [
"cfg-if",
]
@@ -1831,6 +2211,12 @@ dependencies = [
"itertools 0.10.5",
]
+[[package]]
+name = "critical-section"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b"
+
[[package]]
name = "crossbeam-channel"
version = "0.5.15"
@@ -1867,21 +2253,9 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
[[package]]
name = "crunchy"
-version = "0.2.3"
+version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929"
-
-[[package]]
-name = "crypto-bigint"
-version = "0.4.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef"
-dependencies = [
- "generic-array 0.14.7",
- "rand_core 0.6.4",
- "subtle",
- "zeroize",
-]
+checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
[[package]]
name = "crypto-bigint"
@@ -1889,7 +2263,7 @@ version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76"
dependencies = [
- "generic-array 0.14.7",
+ "generic-array",
"rand_core 0.6.4",
"subtle",
"zeroize",
@@ -1897,11 +2271,11 @@ dependencies = [
[[package]]
name = "crypto-common"
-version = "0.1.6"
+version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
dependencies = [
- "generic-array 0.14.7",
+ "generic-array",
"rand_core 0.6.4",
"typenum",
]
@@ -1912,7 +2286,7 @@ version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "25fab6889090c8133f3deb8f73ba3c65a7f456f66436fc012a1b1e272b1e103e"
dependencies = [
- "generic-array 0.14.7",
+ "generic-array",
"subtle",
]
@@ -1936,12 +2310,13 @@ dependencies = [
[[package]]
name = "ctrlc"
-version = "3.4.6"
+version = "3.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "697b5419f348fd5ae2478e8018cb016c00a5881c7f46c717de98ffd135a5651c"
+checksum = "73736a89c4aff73035ba2ed2e565061954da00d4970fc9ac25dcc85a2a20d790"
dependencies = [
- "nix 0.29.0",
- "windows-sys 0.59.0",
+ "dispatch2",
+ "nix 0.30.1",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -1968,7 +2343,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
@@ -1991,6 +2366,16 @@ dependencies = [
"darling_macro 0.20.11",
]
+[[package]]
+name = "darling"
+version = "0.21.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0"
+dependencies = [
+ "darling_core 0.21.3",
+ "darling_macro 0.21.3",
+]
+
[[package]]
name = "darling_core"
version = "0.13.4"
@@ -2016,7 +2401,22 @@ dependencies = [
"proc-macro2",
"quote",
"strsim 0.11.1",
- "syn 2.0.101",
+ "syn 2.0.110",
+]
+
+[[package]]
+name = "darling_core"
+version = "0.21.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4"
+dependencies = [
+ "fnv",
+ "ident_case",
+ "proc-macro2",
+ "quote",
+ "serde",
+ "strsim 0.11.1",
+ "syn 2.0.110",
]
[[package]]
@@ -2038,7 +2438,18 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead"
dependencies = [
"darling_core 0.20.11",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
+]
+
+[[package]]
+name = "darling_macro"
+version = "0.21.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81"
+dependencies = [
+ "darling_core 0.21.3",
+ "quote",
+ "syn 2.0.110",
]
[[package]]
@@ -2061,6 +2472,20 @@ dependencies = [
"libc",
]
+[[package]]
+name = "dashmap"
+version = "6.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf"
+dependencies = [
+ "cfg-if",
+ "crossbeam-utils",
+ "hashbrown 0.14.5",
+ "lock_api",
+ "once_cell",
+ "parking_lot_core",
+]
+
[[package]]
name = "data-encoding"
version = "2.9.0"
@@ -2084,7 +2509,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8d162beedaa69905488a8da94f5ac3edb4dd4788b732fadb7bd120b2625c1976"
dependencies = [
"data-encoding",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
@@ -2125,7 +2550,10 @@ dependencies = [
name = "deposit_contract"
version = "0.2.0"
dependencies = [
- "ethabi 16.0.0",
+ "alloy-dyn-abi",
+ "alloy-json-abi",
+ "alloy-primitives",
+ "bls",
"ethereum_ssz",
"hex",
"reqwest",
@@ -2135,16 +2563,6 @@ dependencies = [
"types",
]
-[[package]]
-name = "der"
-version = "0.6.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de"
-dependencies = [
- "const-oid",
- "zeroize",
-]
-
[[package]]
name = "der"
version = "0.7.10"
@@ -2152,15 +2570,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb"
dependencies = [
"const-oid",
- "pem-rfc7468",
"zeroize",
]
[[package]]
name = "der-parser"
-version = "9.0.0"
+version = "10.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5cd0a5c643689626bec213c4d8bd4d96acc8ffdb4ad4bb6bc16abf27d5f4b553"
+checksum = "07da5016415d5a3c4dd39b11ed26f915f52fc4e0dc197d87908bc916e51bc1a6"
dependencies = [
"asn1-rs",
"displaydoc",
@@ -2172,11 +2589,12 @@ dependencies = [
[[package]]
name = "deranged"
-version = "0.4.0"
+version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e"
+checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587"
dependencies = [
"powerfmt",
+ "serde_core",
]
[[package]]
@@ -2192,13 +2610,13 @@ dependencies = [
[[package]]
name = "derive_arbitrary"
-version = "1.4.1"
+version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800"
+checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
@@ -2207,20 +2625,11 @@ version = "0.99.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f"
dependencies = [
- "convert_case 0.4.0",
+ "convert_case",
"proc-macro2",
"quote",
"rustc_version 0.4.1",
- "syn 2.0.101",
-]
-
-[[package]]
-name = "derive_more"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05"
-dependencies = [
- "derive_more-impl 1.0.0",
+ "syn 2.0.110",
]
[[package]]
@@ -2229,18 +2638,7 @@ version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678"
dependencies = [
- "derive_more-impl 2.0.1",
-]
-
-[[package]]
-name = "derive_more-impl"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.101",
+ "derive_more-impl",
]
[[package]]
@@ -2251,26 +2649,17 @@ checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
"unicode-xid",
]
-[[package]]
-name = "digest"
-version = "0.8.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5"
-dependencies = [
- "generic-array 0.12.4",
-]
-
[[package]]
name = "digest"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066"
dependencies = [
- "generic-array 0.14.7",
+ "generic-array",
]
[[package]]
@@ -2316,9 +2705,9 @@ dependencies = [
[[package]]
name = "discv5"
-version = "0.9.1"
+version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4b4e7798d2ff74e29cee344dc490af947ae657d6ab5273dde35d58ce06a4d71"
+checksum = "f170f4f6ed0e1df52bf43b403899f0081917ecf1500bfe312505cc3b515a8899"
dependencies = [
"aes 0.8.4",
"aes-gcm",
@@ -2334,19 +2723,31 @@ dependencies = [
"hkdf",
"lazy_static",
"libp2p-identity",
- "lru",
+ "lru 0.12.5",
"more-asserts",
"multiaddr",
- "parking_lot 0.12.3",
+ "parking_lot",
"rand 0.8.5",
"smallvec",
- "socket2",
+ "socket2 0.5.10",
"tokio",
"tracing",
"uint 0.10.0",
"zeroize",
]
+[[package]]
+name = "dispatch2"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec"
+dependencies = [
+ "bitflags 2.10.0",
+ "block2",
+ "libc",
+ "objc2",
+]
+
[[package]]
name = "displaydoc"
version = "0.2.5"
@@ -2355,7 +2756,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
@@ -2363,11 +2764,12 @@ name = "doppelganger_service"
version = "0.1.0"
dependencies = [
"beacon_node_fallback",
+ "bls",
"environment",
"eth2",
"futures",
"logging",
- "parking_lot 0.12.3",
+ "parking_lot",
"slot_clock",
"task_executor",
"tokio",
@@ -2376,6 +2778,12 @@ dependencies = [
"validator_store",
]
+[[package]]
+name = "downcast"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1"
+
[[package]]
name = "dtoa"
version = "1.0.10"
@@ -2389,16 +2797,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"
[[package]]
-name = "ecdsa"
-version = "0.14.8"
+name = "dyn-clone"
+version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c"
-dependencies = [
- "der 0.6.1",
- "elliptic-curve 0.12.3",
- "rfc6979 0.3.1",
- "signature 1.6.4",
-]
+checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555"
[[package]]
name = "ecdsa"
@@ -2406,12 +2808,13 @@ version = "0.16.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca"
dependencies = [
- "der 0.7.10",
+ "der",
"digest 0.10.7",
- "elliptic-curve 0.13.8",
- "rfc6979 0.4.0",
- "signature 2.2.0",
- "spki 0.7.3",
+ "elliptic-curve",
+ "rfc6979",
+ "serdect",
+ "signature",
+ "spki",
]
[[package]]
@@ -2420,15 +2823,15 @@ version = "2.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53"
dependencies = [
- "pkcs8 0.10.2",
- "signature 2.2.0",
+ "pkcs8",
+ "signature",
]
[[package]]
name = "ed25519-dalek"
-version = "2.1.1"
+version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871"
+checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9"
dependencies = [
"curve25519-dalek",
"ed25519",
@@ -2448,7 +2851,7 @@ dependencies = [
"enum-ordinalize",
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
@@ -2459,8 +2862,8 @@ dependencies = [
"beacon_chain",
"bls",
"compare_fields",
- "compare_fields_derive",
- "derivative",
+ "context_deserialize",
+ "educe",
"eth2_network_config",
"ethereum_ssz",
"ethereum_ssz_derive",
@@ -2470,16 +2873,52 @@ dependencies = [
"hex",
"kzg",
"logging",
+ "milhouse",
"rayon",
"serde",
"serde_json",
"serde_repr",
"serde_yaml",
"snap",
+ "ssz_types",
"state_processing",
"swap_or_not_shuffle",
"tree_hash",
"tree_hash_derive",
+ "typenum",
+ "types",
+]
+
+[[package]]
+name = "eip4844"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82ab45fc63db6bbe5c3eb7c79303b2aff7ee529c991b2111c46879d1ea38407e"
+dependencies = [
+ "ekzg-bls12-381",
+ "ekzg-maybe-rayon",
+ "ekzg-polynomial",
+ "ekzg-serialization",
+ "ekzg-single-open",
+ "ekzg-trusted-setup",
+ "hex",
+ "itertools 0.14.0",
+ "serde",
+ "serde_json",
+ "sha2 0.10.9",
+]
+
+[[package]]
+name = "eip_3076"
+version = "0.1.0"
+dependencies = [
+ "arbitrary",
+ "bls",
+ "ethereum_serde_utils",
+ "fixed_bytes",
+ "serde",
+ "serde_json",
+ "tempfile",
"types",
]
@@ -2488,25 +2927,94 @@ name = "either"
version = "1.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
+dependencies = [
+ "serde",
+]
[[package]]
-name = "elliptic-curve"
-version = "0.12.3"
+name = "ekzg-bls12-381"
+version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3"
+checksum = "05c599a59deba6188afd9f783507e4d89efc997f0fa340a758f0d0992b322416"
dependencies = [
- "base16ct 0.1.1",
- "crypto-bigint 0.4.9",
- "der 0.6.1",
- "digest 0.10.7",
- "ff 0.12.1",
- "generic-array 0.14.7",
- "group 0.12.1",
- "pkcs8 0.9.0",
- "rand_core 0.6.4",
- "sec1 0.3.0",
+ "blst",
+ "blstrs",
+ "ff",
+ "group",
+ "pairing",
"subtle",
- "zeroize",
+]
+
+[[package]]
+name = "ekzg-erasure-codes"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8474a41a30ddd2b651798b1aa9ce92011207c3667186fe9044184683250109e7"
+dependencies = [
+ "ekzg-bls12-381",
+ "ekzg-polynomial",
+]
+
+[[package]]
+name = "ekzg-maybe-rayon"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9cf94d1385185c1f7caef4973be49702c7d9ffdeaf832d126dbb9ed6efe09d40"
+
+[[package]]
+name = "ekzg-multi-open"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6d37456a32cf79bdbddd6685a2adec73210e2d60332370bc0e9a502b6d93beb"
+dependencies = [
+ "ekzg-bls12-381",
+ "ekzg-maybe-rayon",
+ "ekzg-polynomial",
+ "sha2 0.10.9",
+]
+
+[[package]]
+name = "ekzg-polynomial"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "704751bac85af4754bb8a14457ef24d820738062d0b6f3763534d0980b1a1e81"
+dependencies = [
+ "ekzg-bls12-381",
+ "ekzg-maybe-rayon",
+]
+
+[[package]]
+name = "ekzg-serialization"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3cb983d9f75b2804c00246def8d52c01cf05f70c22593b8d314fbcf0cf89042b"
+dependencies = [
+ "ekzg-bls12-381",
+ "hex",
+]
+
+[[package]]
+name = "ekzg-single-open"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "799d5806d51e1453fa0f528d6acf4127e2a89e98312c826151ebc24ee3448ec3"
+dependencies = [
+ "ekzg-bls12-381",
+ "ekzg-polynomial",
+ "itertools 0.14.0",
+]
+
+[[package]]
+name = "ekzg-trusted-setup"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85314d56718dc2c6dd77c3b3630f1839defcb6f47d9c20195608a0f7976095ab"
+dependencies = [
+ "ekzg-bls12-381",
+ "ekzg-serialization",
+ "hex",
+ "serde",
+ "serde_json",
]
[[package]]
@@ -2515,16 +3023,16 @@ version = "0.13.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47"
dependencies = [
- "base16ct 0.2.0",
- "crypto-bigint 0.5.5",
+ "base16ct",
+ "crypto-bigint",
"digest 0.10.7",
- "ff 0.13.1",
- "generic-array 0.14.7",
- "group 0.13.0",
- "pem-rfc7468",
- "pkcs8 0.10.2",
+ "ff",
+ "generic-array",
+ "group",
+ "pkcs8",
"rand_core 0.6.4",
- "sec1 0.7.3",
+ "sec1",
+ "serdect",
"subtle",
"zeroize",
]
@@ -2549,11 +3057,11 @@ dependencies = [
"bytes",
"ed25519-dalek",
"hex",
- "k256 0.13.4",
+ "k256",
"log",
"rand 0.8.5",
"serde",
- "sha3 0.10.8",
+ "sha3",
"zeroize",
]
@@ -2563,53 +3071,30 @@ version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc"
dependencies = [
- "heck 0.5.0",
+ "heck",
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
name = "enum-ordinalize"
-version = "4.3.0"
+version = "4.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5"
+checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0"
dependencies = [
"enum-ordinalize-derive",
]
[[package]]
name = "enum-ordinalize-derive"
-version = "4.3.1"
+version = "4.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff"
+checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
-]
-
-[[package]]
-name = "env_logger"
-version = "0.8.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3"
-dependencies = [
- "log",
- "regex",
-]
-
-[[package]]
-name = "env_logger"
-version = "0.9.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7"
-dependencies = [
- "atty",
- "humantime",
- "log",
- "regex",
- "termcolor",
+ "syn 2.0.110",
]
[[package]]
@@ -2642,104 +3127,39 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
[[package]]
name = "errno"
-version = "0.3.11"
+version = "0.3.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e"
+checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
dependencies = [
"libc",
- "windows-sys 0.59.0",
-]
-
-[[package]]
-name = "eth-keystore"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab"
-dependencies = [
- "aes 0.8.4",
- "ctr 0.9.2",
- "digest 0.10.7",
- "hex",
- "hmac 0.12.1",
- "pbkdf2 0.11.0",
- "rand 0.8.5",
- "scrypt 0.10.0",
- "serde",
- "serde_json",
- "sha2 0.10.9",
- "sha3 0.10.8",
- "thiserror 1.0.69",
- "uuid 0.8.2",
-]
-
-[[package]]
-name = "eth1"
-version = "0.2.0"
-dependencies = [
- "environment",
- "eth1_test_rig",
- "eth2",
- "ethereum_ssz",
- "ethereum_ssz_derive",
- "execution_layer",
- "futures",
- "logging",
- "merkle_proof",
- "metrics",
- "parking_lot 0.12.3",
- "sensitive_url",
- "serde",
- "serde_yaml",
- "state_processing",
- "superstruct",
- "task_executor",
- "tokio",
- "tracing",
- "tree_hash",
- "types",
-]
-
-[[package]]
-name = "eth1_test_rig"
-version = "0.2.0"
-dependencies = [
- "deposit_contract",
- "ethers-contract",
- "ethers-core",
- "ethers-providers",
- "hex",
- "serde_json",
- "tokio",
- "types",
- "unused_port",
+ "windows-sys 0.52.0",
]
[[package]]
name = "eth2"
version = "0.1.0"
dependencies = [
- "derivative",
- "either",
- "enr",
+ "bls",
+ "context_deserialize",
+ "educe",
+ "eip_3076",
"eth2_keystore",
"ethereum_serde_utils",
"ethereum_ssz",
"ethereum_ssz_derive",
"futures",
"futures-util",
- "libp2p-identity",
"mediatype",
- "multiaddr",
"pretty_reqwest_error",
"proto_array",
- "rand 0.8.5",
+ "rand 0.9.2",
"reqwest",
"reqwest-eventsource",
"sensitive_url",
"serde",
"serde_json",
- "slashing_protection",
"ssz_types",
+ "superstruct",
"test_random_derive",
"tokio",
"types",
@@ -2789,8 +3209,8 @@ dependencies = [
"hex",
"hmac 0.11.0",
"pbkdf2 0.8.0",
- "rand 0.8.5",
- "scrypt 0.7.0",
+ "rand 0.9.2",
+ "scrypt",
"serde",
"serde_json",
"serde_repr",
@@ -2809,6 +3229,7 @@ dependencies = [
"discv5",
"eth2_config",
"ethereum_ssz",
+ "fixed_bytes",
"kzg",
"pretty_reqwest_error",
"reqwest",
@@ -2830,7 +3251,7 @@ dependencies = [
"eth2_key_derivation",
"eth2_keystore",
"hex",
- "rand 0.8.5",
+ "rand 0.9.2",
"serde",
"serde_json",
"serde_repr",
@@ -2848,101 +3269,11 @@ dependencies = [
"tempfile",
]
-[[package]]
-name = "ethabi"
-version = "16.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4c98847055d934070b90e806e12d3936b787d0a115068981c1d8dfd5dfef5a5"
-dependencies = [
- "ethereum-types 0.12.1",
- "hex",
- "serde",
- "serde_json",
- "sha3 0.9.1",
- "thiserror 1.0.69",
- "uint 0.9.5",
-]
-
-[[package]]
-name = "ethabi"
-version = "18.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898"
-dependencies = [
- "ethereum-types 0.14.1",
- "hex",
- "once_cell",
- "regex",
- "serde",
- "serde_json",
- "sha3 0.10.8",
- "thiserror 1.0.69",
- "uint 0.9.5",
-]
-
-[[package]]
-name = "ethbloom"
-version = "0.11.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfb684ac8fa8f6c5759f788862bb22ec6fe3cb392f6bfd08e3c64b603661e3f8"
-dependencies = [
- "crunchy",
- "fixed-hash 0.7.0",
- "impl-rlp",
- "impl-serde 0.3.2",
- "tiny-keccak",
-]
-
-[[package]]
-name = "ethbloom"
-version = "0.13.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60"
-dependencies = [
- "crunchy",
- "fixed-hash 0.8.0",
- "impl-codec 0.6.0",
- "impl-rlp",
- "impl-serde 0.4.0",
- "scale-info",
- "tiny-keccak",
-]
-
-[[package]]
-name = "ethereum-types"
-version = "0.12.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05136f7057fe789f06e6d41d07b34e6f70d8c86e5693b60f97aaa6553553bdaf"
-dependencies = [
- "ethbloom 0.11.1",
- "fixed-hash 0.7.0",
- "impl-rlp",
- "impl-serde 0.3.2",
- "primitive-types 0.10.1",
- "uint 0.9.5",
-]
-
-[[package]]
-name = "ethereum-types"
-version = "0.14.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee"
-dependencies = [
- "ethbloom 0.13.0",
- "fixed-hash 0.8.0",
- "impl-codec 0.6.0",
- "impl-rlp",
- "impl-serde 0.4.0",
- "primitive-types 0.12.2",
- "scale-info",
- "uint 0.9.5",
-]
-
[[package]]
name = "ethereum_hashing"
-version = "0.7.0"
+version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c853bd72c9e5787f8aafc3df2907c2ed03cff3150c3acd94e2e53a98ab70a8ab"
+checksum = "5aa93f58bb1eb3d1e556e4f408ef1dac130bad01ac37db4e7ade45de40d1c86a"
dependencies = [
"cpufeatures",
"ring",
@@ -2951,9 +3282,9 @@ dependencies = [
[[package]]
name = "ethereum_serde_utils"
-version = "0.7.0"
+version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70cbccfccf81d67bff0ab36e591fa536c8a935b078a7b0e58c1d00d418332fc9"
+checksum = "3dc1355dbb41fbbd34ec28d4fb2a57d9a70c67ac3c19f6a5ca4d4a176b9e997a"
dependencies = [
"alloy-primitives",
"hex",
@@ -2964,12 +3295,13 @@ dependencies = [
[[package]]
name = "ethereum_ssz"
-version = "0.8.3"
+version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "86da3096d1304f5f28476ce383005385459afeaf0eea08592b65ddbc9b258d16"
+checksum = "7e8cd8c4f47dfb947dbfe3cdf2945ae1da808dbedc592668658e827a12659ba1"
dependencies = [
"alloy-primitives",
"arbitrary",
+ "context_deserialize",
"ethereum_serde_utils",
"itertools 0.13.0",
"serde",
@@ -2980,200 +3312,14 @@ dependencies = [
[[package]]
name = "ethereum_ssz_derive"
-version = "0.8.3"
+version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d832a5c38eba0e7ad92592f7a22d693954637fbb332b4f669590d66a5c3183e5"
+checksum = "78d247bc40823c365a62e572441a8f8b12df03f171713f06bc76180fcd56ab71"
dependencies = [
"darling 0.20.11",
"proc-macro2",
"quote",
- "syn 2.0.101",
-]
-
-[[package]]
-name = "ethers-contract"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e9c3c3e119a89f0a9a1e539e7faecea815f74ddcf7c90d0b00d1f524db2fdc9c"
-dependencies = [
- "ethers-contract-abigen",
- "ethers-contract-derive",
- "ethers-core",
- "ethers-providers",
- "futures-util",
- "hex",
- "once_cell",
- "pin-project",
- "serde",
- "serde_json",
- "thiserror 1.0.69",
-]
-
-[[package]]
-name = "ethers-contract-abigen"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d4e5ad46aede34901f71afdb7bb555710ed9613d88d644245c657dc371aa228"
-dependencies = [
- "Inflector",
- "cfg-if",
- "dunce",
- "ethers-core",
- "eyre",
- "getrandom 0.2.16",
- "hex",
- "proc-macro2",
- "quote",
- "regex",
- "reqwest",
- "serde",
- "serde_json",
- "syn 1.0.109",
- "toml",
- "url",
- "walkdir",
-]
-
-[[package]]
-name = "ethers-contract-derive"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f192e8e4cf2b038318aae01e94e7644e0659a76219e94bcd3203df744341d61f"
-dependencies = [
- "ethers-contract-abigen",
- "ethers-core",
- "hex",
- "proc-macro2",
- "quote",
- "serde_json",
- "syn 1.0.109",
-]
-
-[[package]]
-name = "ethers-core"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ade3e9c97727343984e1ceada4fdab11142d2ee3472d2c67027d56b1251d4f15"
-dependencies = [
- "arrayvec",
- "bytes",
- "cargo_metadata 0.15.4",
- "chrono",
- "convert_case 0.6.0",
- "elliptic-curve 0.12.3",
- "ethabi 18.0.0",
- "generic-array 0.14.7",
- "hex",
- "k256 0.11.6",
- "once_cell",
- "open-fastrlp",
- "proc-macro2",
- "rand 0.8.5",
- "rlp",
- "rlp-derive",
- "serde",
- "serde_json",
- "strum",
- "syn 1.0.109",
- "thiserror 1.0.69",
- "tiny-keccak",
- "unicode-xid",
-]
-
-[[package]]
-name = "ethers-etherscan"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9713f525348e5dde025d09b0a4217429f8074e8ff22c886263cc191e87d8216"
-dependencies = [
- "ethers-core",
- "getrandom 0.2.16",
- "reqwest",
- "semver 1.0.26",
- "serde",
- "serde-aux",
- "serde_json",
- "thiserror 1.0.69",
- "tracing",
-]
-
-[[package]]
-name = "ethers-middleware"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e71df7391b0a9a51208ffb5c7f2d068900e99d6b3128d3a4849d138f194778b7"
-dependencies = [
- "async-trait",
- "auto_impl 0.5.0",
- "ethers-contract",
- "ethers-core",
- "ethers-etherscan",
- "ethers-providers",
- "ethers-signers",
- "futures-locks",
- "futures-util",
- "instant",
- "reqwest",
- "serde",
- "serde_json",
- "thiserror 1.0.69",
- "tokio",
- "tracing",
- "tracing-futures",
- "url",
-]
-
-[[package]]
-name = "ethers-providers"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1a9e0597aa6b2fdc810ff58bc95e4eeaa2c219b3e615ed025106ecb027407d8"
-dependencies = [
- "async-trait",
- "auto_impl 1.3.0",
- "base64 0.13.1",
- "ethers-core",
- "futures-core",
- "futures-timer",
- "futures-util",
- "getrandom 0.2.16",
- "hashers",
- "hex",
- "http 0.2.12",
- "once_cell",
- "parking_lot 0.11.2",
- "pin-project",
- "reqwest",
- "serde",
- "serde_json",
- "thiserror 1.0.69",
- "tokio",
- "tracing",
- "tracing-futures",
- "url",
- "wasm-bindgen",
- "wasm-bindgen-futures",
- "wasm-timer",
- "web-sys",
- "ws_stream_wasm",
-]
-
-[[package]]
-name = "ethers-signers"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f41ced186867f64773db2e55ffdd92959e094072a1d09a5e5e831d443204f98"
-dependencies = [
- "async-trait",
- "coins-bip32",
- "coins-bip39",
- "elliptic-curve 0.12.3",
- "eth-keystore",
- "ethers-core",
- "hex",
- "rand 0.8.5",
- "sha2 0.10.9",
- "thiserror 1.0.69",
+ "syn 2.0.110",
]
[[package]]
@@ -3184,9 +3330,9 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
[[package]]
name = "event-listener"
-version = "5.4.0"
+version = "5.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae"
+checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab"
dependencies = [
"concurrent-queue",
"parking",
@@ -3199,7 +3345,7 @@ version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93"
dependencies = [
- "event-listener 5.4.0",
+ "event-listener 5.4.1",
"pin-project-lite",
]
@@ -3218,25 +3364,29 @@ dependencies = [
name = "execution_engine_integration"
version = "0.1.0"
dependencies = [
+ "alloy-network",
+ "alloy-primitives",
+ "alloy-provider",
+ "alloy-rpc-types-eth",
+ "alloy-signer-local",
"async-channel 1.9.0",
+ "bls",
"deposit_contract",
- "ethers-core",
- "ethers-middleware",
- "ethers-providers",
- "ethers-signers",
"execution_layer",
+ "fixed_bytes",
"fork_choice",
"futures",
"hex",
"logging",
+ "network_utils",
"reqwest",
"sensitive_url",
"serde_json",
"task_executor",
"tempfile",
"tokio",
+ "typenum",
"types",
- "unused_port",
]
[[package]]
@@ -3246,13 +3396,14 @@ dependencies = [
"alloy-consensus",
"alloy-primitives",
"alloy-rlp",
+ "alloy-rpc-types-eth",
"arc-swap",
+ "bls",
"builder_client",
"bytes",
"eth2",
"ethereum_serde_utils",
"ethereum_ssz",
- "ethers-core",
"fixed_bytes",
"fork_choice",
"hash-db",
@@ -3263,11 +3414,11 @@ dependencies = [
"kzg",
"lighthouse_version",
"logging",
- "lru",
+ "lru 0.12.5",
"metrics",
- "parking_lot 0.12.3",
+ "parking_lot",
"pretty_reqwest_error",
- "rand 0.8.5",
+ "rand 0.9.2",
"reqwest",
"sensitive_url",
"serde",
@@ -3286,27 +3437,12 @@ dependencies = [
"tree_hash",
"tree_hash_derive",
"triehash",
+ "typenum",
"types",
"warp",
"zeroize",
]
-[[package]]
-name = "eyre"
-version = "0.6.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec"
-dependencies = [
- "indenter",
- "once_cell",
-]
-
-[[package]]
-name = "fake-simd"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed"
-
[[package]]
name = "fallible-iterator"
version = "0.2.0"
@@ -3332,7 +3468,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418"
dependencies = [
"arrayvec",
- "auto_impl 1.3.0",
+ "auto_impl",
"bytes",
]
@@ -3343,7 +3479,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4"
dependencies = [
"arrayvec",
- "auto_impl 1.3.0",
+ "auto_impl",
"bytes",
]
@@ -3357,23 +3493,13 @@ dependencies = [
"thiserror 1.0.69",
]
-[[package]]
-name = "ff"
-version = "0.12.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160"
-dependencies = [
- "rand_core 0.6.4",
- "subtle",
-]
-
[[package]]
name = "ff"
version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393"
dependencies = [
- "bitvec 1.0.1",
+ "bitvec",
"rand_core 0.6.4",
"subtle",
]
@@ -3409,16 +3535,10 @@ dependencies = [
]
[[package]]
-name = "fixed-hash"
-version = "0.7.0"
+name = "find-msvc-tools"
+version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c"
-dependencies = [
- "byteorder",
- "rand 0.8.5",
- "rustc-hex",
- "static_assertions",
-]
+checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844"
[[package]]
name = "fixed-hash"
@@ -3442,9 +3562,9 @@ dependencies = [
[[package]]
name = "flate2"
-version = "1.1.1"
+version = "1.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece"
+checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb"
dependencies = [
"crc32fast",
"libz-sys",
@@ -3463,6 +3583,12 @@ version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
+[[package]]
+name = "foldhash"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
+
[[package]]
name = "foreign-types"
version = "0.3.2"
@@ -3485,11 +3611,13 @@ dependencies = [
"beacon_chain",
"ethereum_ssz",
"ethereum_ssz_derive",
+ "fixed_bytes",
"logging",
"metrics",
"proto_array",
"state_processing",
"store",
+ "superstruct",
"tokio",
"tracing",
"types",
@@ -3497,13 +3625,19 @@ dependencies = [
[[package]]
name = "form_urlencoded"
-version = "1.2.1"
+version = "1.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
+checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
dependencies = [
"percent-encoding",
]
+[[package]]
+name = "fragile"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28dd6caf6059519a65843af8fe2a3ae298b14b80179855aeb4adc2c1934ee619"
+
[[package]]
name = "fs2"
version = "0.4.3"
@@ -3514,12 +3648,6 @@ dependencies = [
"winapi",
]
-[[package]]
-name = "funty"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7"
-
[[package]]
name = "funty"
version = "2.0.0"
@@ -3587,24 +3715,14 @@ checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
[[package]]
name = "futures-lite"
-version = "2.6.0"
+version = "2.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532"
+checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad"
dependencies = [
"futures-core",
"pin-project-lite",
]
-[[package]]
-name = "futures-locks"
-version = "0.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "45ec6fe3675af967e67c5536c0b9d44e34e6c52f86bedc4ea49c5317b8e94d06"
-dependencies = [
- "futures-channel",
- "futures-task",
-]
-
[[package]]
name = "futures-macro"
version = "0.3.31"
@@ -3613,7 +3731,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
@@ -3623,7 +3741,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a8f2f12607f92c69b12ed746fabf9ca4f5c482cba46679c1a75b874ed7c26adb"
dependencies = [
"futures-io",
- "rustls 0.23.27",
+ "rustls 0.23.35",
"rustls-pki-types",
]
@@ -3664,35 +3782,10 @@ dependencies = [
]
[[package]]
-name = "fxhash"
-version = "0.2.1"
+name = "futures-utils-wasm"
+version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c"
-dependencies = [
- "byteorder",
-]
-
-[[package]]
-name = "generator"
-version = "0.8.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc6bd114ceda131d3b1d665eba35788690ad37f5916457286b32ab6fd3c438dd"
-dependencies = [
- "cfg-if",
- "libc",
- "log",
- "rustversion",
- "windows 0.58.0",
-]
-
-[[package]]
-name = "generic-array"
-version = "0.12.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd"
-dependencies = [
- "typenum",
-]
+checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9"
[[package]]
name = "generic-array"
@@ -3709,19 +3802,13 @@ dependencies = [
name = "genesis"
version = "0.2.0"
dependencies = [
- "environment",
- "eth1",
- "eth1_test_rig",
+ "bls",
"ethereum_hashing",
"ethereum_ssz",
- "futures",
"int_to_bytes",
- "logging",
"merkle_proof",
"rayon",
- "sensitive_url",
"state_processing",
- "tokio",
"tracing",
"tree_hash",
"types",
@@ -3736,21 +3823,21 @@ dependencies = [
"cfg-if",
"js-sys",
"libc",
- "wasi 0.11.0+wasi-snapshot-preview1",
+ "wasi",
"wasm-bindgen",
]
[[package]]
name = "getrandom"
-version = "0.3.2"
+version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0"
+checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
dependencies = [
"cfg-if",
"js-sys",
"libc",
"r-efi",
- "wasi 0.14.2+wasi-0.2.4",
+ "wasip2",
"wasm-bindgen",
]
@@ -3760,41 +3847,15 @@ version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1"
dependencies = [
- "opaque-debug 0.3.1",
+ "opaque-debug",
"polyval",
]
-[[package]]
-name = "gimli"
-version = "0.31.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
-
-[[package]]
-name = "git-version"
-version = "0.3.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ad568aa3db0fcbc81f2f116137f263d7304f512a1209b35b85150d3ef88ad19"
-dependencies = [
- "git-version-macro",
-]
-
-[[package]]
-name = "git-version-macro"
-version = "0.3.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53010ccb100b96a67bc32c0175f0ed1426b31b655d562898e57325f81c023ac0"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.101",
-]
-
[[package]]
name = "glob"
-version = "0.3.2"
+version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2"
+checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
[[package]]
name = "graffiti_file"
@@ -3808,35 +3869,24 @@ dependencies = [
"types",
]
-[[package]]
-name = "group"
-version = "0.12.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7"
-dependencies = [
- "ff 0.12.1",
- "rand_core 0.6.4",
- "subtle",
-]
-
[[package]]
name = "group"
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
dependencies = [
- "ff 0.13.1",
+ "ff",
"rand 0.8.5",
"rand_core 0.6.4",
- "rand_xorshift",
+ "rand_xorshift 0.3.0",
"subtle",
]
[[package]]
name = "h2"
-version = "0.3.26"
+version = "0.3.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8"
+checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d"
dependencies = [
"bytes",
"fnv",
@@ -3844,7 +3894,7 @@ dependencies = [
"futures-sink",
"futures-util",
"http 0.2.12",
- "indexmap 2.9.0",
+ "indexmap 2.12.0",
"slab",
"tokio",
"tokio-util",
@@ -3853,9 +3903,9 @@ dependencies = [
[[package]]
name = "h2"
-version = "0.4.10"
+version = "0.4.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5"
+checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386"
dependencies = [
"atomic-waker",
"bytes",
@@ -3863,7 +3913,7 @@ dependencies = [
"futures-core",
"futures-sink",
"http 1.3.1",
- "indexmap 2.9.0",
+ "indexmap 2.12.0",
"slab",
"tokio",
"tokio-util",
@@ -3872,12 +3922,13 @@ dependencies = [
[[package]]
name = "half"
-version = "2.6.0"
+version = "2.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9"
+checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b"
dependencies = [
"cfg-if",
"crunchy",
+ "zerocopy",
]
[[package]]
@@ -3913,23 +3964,23 @@ dependencies = [
[[package]]
name = "hashbrown"
-version = "0.15.3"
+version = "0.15.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3"
+checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
dependencies = [
"allocator-api2",
"equivalent",
- "foldhash",
- "serde",
+ "foldhash 0.1.5",
]
[[package]]
-name = "hashers"
-version = "1.0.1"
+name = "hashbrown"
+version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2bca93b15ea5a746f220e56587f71e73c6165eab783df9e26590069953e3c30"
+checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d"
dependencies = [
- "fxhash",
+ "foldhash 0.2.0",
+ "serde",
]
[[package]]
@@ -3950,6 +4001,28 @@ dependencies = [
"hashbrown 0.14.5",
]
+[[package]]
+name = "hashlink"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1"
+dependencies = [
+ "hashbrown 0.15.5",
+]
+
+[[package]]
+name = "hdrhistogram"
+version = "7.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "765c9198f173dd59ce26ff9f95ef0aafd0a0fe01fb9d72841bc5066a4c06511d"
+dependencies = [
+ "base64 0.21.7",
+ "byteorder",
+ "flate2",
+ "nom",
+ "num-traits",
+]
+
[[package]]
name = "headers"
version = "0.3.9"
@@ -3984,12 +4057,6 @@ dependencies = [
"psutil",
]
-[[package]]
-name = "heck"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
-
[[package]]
name = "heck"
version = "0.5.0"
@@ -3998,38 +4065,23 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
[[package]]
name = "hermit-abi"
-version = "0.1.19"
+version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "hermit-abi"
-version = "0.3.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
-
-[[package]]
-name = "hermit-abi"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc"
-
-[[package]]
-name = "hermit-abi"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f154ce46856750ed433c8649605bf7ed2de3bc35fd9d2a9f30cddd873c80cb08"
+checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"
[[package]]
name = "hex"
version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+
+[[package]]
+name = "hex-conservative"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd"
dependencies = [
- "serde",
+ "arrayvec",
]
[[package]]
@@ -4040,11 +4092,10 @@ checksum = "b07f60793ff0a4d9cef0f18e63b5357e06209987153a64648c972c1e5aff336f"
[[package]]
name = "hickory-proto"
-version = "0.25.0-alpha.5"
+version = "0.25.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d00147af6310f4392a31680db52a3ed45a2e0f68eb18e8c3fe5537ecc96d9e2"
+checksum = "f8a6fe56c0038198998a6f217ca4e7ef3a5e51f46163bd6dd60b5c71ca6c6502"
dependencies = [
- "async-recursion",
"async-trait",
"cfg-if",
"data-encoding",
@@ -4055,9 +4106,10 @@ dependencies = [
"idna",
"ipnet",
"once_cell",
- "rand 0.9.1",
- "socket2",
- "thiserror 2.0.12",
+ "rand 0.9.2",
+ "ring",
+ "socket2 0.5.10",
+ "thiserror 2.0.17",
"tinyvec",
"tokio",
"tracing",
@@ -4066,9 +4118,9 @@ dependencies = [
[[package]]
name = "hickory-resolver"
-version = "0.25.0-alpha.5"
+version = "0.25.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5762f69ebdbd4ddb2e975cd24690bf21fe6b2604039189c26acddbc427f12887"
+checksum = "dc62a9a99b0bfb44d2ab95a7208ac952d31060efc16241c87eaf36406fecf87a"
dependencies = [
"cfg-if",
"futures-util",
@@ -4076,11 +4128,11 @@ dependencies = [
"ipconfig",
"moka",
"once_cell",
- "parking_lot 0.12.3",
- "rand 0.9.1",
+ "parking_lot",
+ "rand 0.9.2",
"resolv-conf",
"smallvec",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"tokio",
"tracing",
]
@@ -4115,11 +4167,11 @@ dependencies = [
[[package]]
name = "home"
-version = "0.5.11"
+version = "0.5.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf"
+checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d"
dependencies = [
- "windows-sys 0.59.0",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -4184,29 +4236,33 @@ version = "0.1.0"
dependencies = [
"beacon_chain",
"beacon_processor",
+ "bls",
"bs58 0.4.0",
"bytes",
+ "context_deserialize",
"directory",
"either",
- "eth1",
"eth2",
"ethereum_serde_utils",
"ethereum_ssz",
"execution_layer",
+ "fixed_bytes",
"futures",
"genesis",
"health_metrics",
"hex",
"lighthouse_network",
+ "lighthouse_tracing",
"lighthouse_version",
"logging",
- "lru",
+ "lru 0.12.5",
"metrics",
"network",
+ "network_utils",
"operation_pool",
- "parking_lot 0.12.3",
+ "parking_lot",
"proto_array",
- "rand 0.8.5",
+ "rand 0.9.2",
"safe_arith",
"sensitive_url",
"serde",
@@ -4237,6 +4293,7 @@ dependencies = [
"logging",
"malloc_utils",
"metrics",
+ "network_utils",
"reqwest",
"serde",
"slot_clock",
@@ -4262,9 +4319,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
[[package]]
name = "humantime"
-version = "2.2.0"
+version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f"
+checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424"
[[package]]
name = "hyper"
@@ -4276,14 +4333,14 @@ dependencies = [
"futures-channel",
"futures-core",
"futures-util",
- "h2 0.3.26",
+ "h2 0.3.27",
"http 0.2.12",
"http-body 0.4.6",
"httparse",
"httpdate",
"itoa",
"pin-project-lite",
- "socket2",
+ "socket2 0.5.10",
"tokio",
"tower-service",
"tracing",
@@ -4292,20 +4349,22 @@ dependencies = [
[[package]]
name = "hyper"
-version = "1.6.0"
+version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80"
+checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11"
dependencies = [
+ "atomic-waker",
"bytes",
"futures-channel",
- "futures-util",
- "h2 0.4.10",
+ "futures-core",
+ "h2 0.4.12",
"http 1.3.1",
"http-body 1.0.1",
"httparse",
"httpdate",
"itoa",
"pin-project-lite",
+ "pin-utils",
"smallvec",
"tokio",
"want",
@@ -4313,46 +4372,69 @@ dependencies = [
[[package]]
name = "hyper-rustls"
-version = "0.24.2"
+version = "0.27.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590"
+checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58"
dependencies = [
- "futures-util",
- "http 0.2.12",
- "hyper 0.14.32",
- "rustls 0.21.12",
+ "http 1.3.1",
+ "hyper 1.8.1",
+ "hyper-util",
+ "rustls 0.23.35",
+ "rustls-pki-types",
"tokio",
- "tokio-rustls 0.24.1",
+ "tokio-rustls 0.26.4",
+ "tower-service",
+ "webpki-roots",
+]
+
+[[package]]
+name = "hyper-timeout"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0"
+dependencies = [
+ "hyper 1.8.1",
+ "hyper-util",
+ "pin-project-lite",
+ "tokio",
+ "tower-service",
]
[[package]]
name = "hyper-tls"
-version = "0.5.0"
+version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
+checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0"
dependencies = [
"bytes",
- "hyper 0.14.32",
+ "http-body-util",
+ "hyper 1.8.1",
+ "hyper-util",
"native-tls",
"tokio",
"tokio-native-tls",
+ "tower-service",
]
[[package]]
name = "hyper-util"
-version = "0.1.11"
+version = "0.1.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "497bbc33a26fdd4af9ed9c70d63f61cf56a938375fbb32df34db9b1cd6d643f2"
+checksum = "52e9a2a24dc5c6821e71a7030e1e14b7b632acac55c40e9d2e082c621261bb56"
dependencies = [
+ "base64 0.22.1",
"bytes",
"futures-channel",
+ "futures-core",
"futures-util",
"http 1.3.1",
"http-body 1.0.1",
- "hyper 1.6.0",
+ "hyper 1.8.1",
+ "ipnet",
"libc",
+ "percent-encoding",
"pin-project-lite",
- "socket2",
+ "socket2 0.6.1",
"tokio",
"tower-service",
"tracing",
@@ -4360,9 +4442,9 @@ dependencies = [
[[package]]
name = "iana-time-zone"
-version = "0.1.63"
+version = "0.1.64"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8"
+checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb"
dependencies = [
"android_system_properties",
"core-foundation-sys",
@@ -4370,7 +4452,7 @@ dependencies = [
"js-sys",
"log",
"wasm-bindgen",
- "windows-core 0.61.0",
+ "windows-core 0.62.2",
]
[[package]]
@@ -4384,21 +4466,22 @@ dependencies = [
[[package]]
name = "icu_collections"
-version = "1.5.0"
+version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526"
+checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43"
dependencies = [
"displaydoc",
+ "potential_utf",
"yoke",
"zerofrom",
"zerovec",
]
[[package]]
-name = "icu_locid"
-version = "1.5.0"
+name = "icu_locale_core"
+version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637"
+checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6"
dependencies = [
"displaydoc",
"litemap",
@@ -4407,99 +4490,61 @@ dependencies = [
"zerovec",
]
-[[package]]
-name = "icu_locid_transform"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e"
-dependencies = [
- "displaydoc",
- "icu_locid",
- "icu_locid_transform_data",
- "icu_provider",
- "tinystr",
- "zerovec",
-]
-
-[[package]]
-name = "icu_locid_transform_data"
-version = "1.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d"
-
[[package]]
name = "icu_normalizer"
-version = "1.5.0"
+version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f"
+checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599"
dependencies = [
- "displaydoc",
"icu_collections",
"icu_normalizer_data",
"icu_properties",
"icu_provider",
"smallvec",
- "utf16_iter",
- "utf8_iter",
- "write16",
"zerovec",
]
[[package]]
name = "icu_normalizer_data"
-version = "1.5.1"
+version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7"
+checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a"
[[package]]
name = "icu_properties"
-version = "1.5.1"
+version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5"
+checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99"
dependencies = [
- "displaydoc",
"icu_collections",
- "icu_locid_transform",
+ "icu_locale_core",
"icu_properties_data",
"icu_provider",
- "tinystr",
+ "zerotrie",
"zerovec",
]
[[package]]
name = "icu_properties_data"
-version = "1.5.1"
+version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2"
+checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899"
[[package]]
name = "icu_provider"
-version = "1.5.0"
+version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9"
+checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614"
dependencies = [
"displaydoc",
- "icu_locid",
- "icu_provider_macros",
- "stable_deref_trait",
- "tinystr",
+ "icu_locale_core",
"writeable",
"yoke",
"zerofrom",
+ "zerotrie",
"zerovec",
]
-[[package]]
-name = "icu_provider_macros"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.101",
-]
-
[[package]]
name = "ident_case"
version = "1.0.1"
@@ -4508,9 +4553,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
[[package]]
name = "idna"
-version = "1.0.3"
+version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e"
+checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
dependencies = [
"idna_adapter",
"smallvec",
@@ -4519,9 +4564,9 @@ dependencies = [
[[package]]
name = "idna_adapter"
-version = "1.2.0"
+version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71"
+checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
dependencies = [
"icu_normalizer",
"icu_properties",
@@ -4544,7 +4589,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cdf9d64cfcf380606e64f9a0bcf493616b65331199f984151a6fa11a7b3cde38"
dependencies = [
"async-io",
- "core-foundation",
+ "core-foundation 0.9.4",
"fnv",
"futures",
"if-addrs",
@@ -4555,16 +4600,16 @@ dependencies = [
"netlink-proto",
"netlink-sys",
"rtnetlink",
- "system-configuration 0.6.1",
+ "system-configuration",
"tokio",
- "windows 0.53.0",
+ "windows",
]
[[package]]
name = "igd-next"
-version = "0.15.1"
+version = "0.16.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76b0d7d4541def58a37bf8efc559683f21edce7c82f0d866c93ac21f7e098f93"
+checksum = "516893339c97f6011282d5825ac94fc1c7aad5cad26bdc2d0cee068c0bf97f97"
dependencies = [
"async-trait",
"attohttpc",
@@ -4572,79 +4617,22 @@ dependencies = [
"futures",
"http 1.3.1",
"http-body-util",
- "hyper 1.6.0",
+ "hyper 1.8.1",
"hyper-util",
"log",
- "rand 0.8.5",
+ "rand 0.9.2",
"tokio",
"url",
"xmltree",
]
-[[package]]
-name = "igd-next"
-version = "0.16.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d06464e726471718db9ad3fefc020529fabcde03313a0fc3967510e2db5add12"
-dependencies = [
- "async-trait",
- "attohttpc",
- "bytes",
- "futures",
- "http 1.3.1",
- "http-body-util",
- "hyper 1.6.0",
- "hyper-util",
- "log",
- "rand 0.9.1",
- "tokio",
- "url",
- "xmltree",
-]
-
-[[package]]
-name = "impl-codec"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "161ebdfec3c8e3b52bf61c4f3550a1eea4f9579d10dc1b936f3171ebdcd6c443"
-dependencies = [
- "parity-scale-codec 2.3.1",
-]
-
[[package]]
name = "impl-codec"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f"
dependencies = [
- "parity-scale-codec 3.7.4",
-]
-
-[[package]]
-name = "impl-rlp"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808"
-dependencies = [
- "rlp",
-]
-
-[[package]]
-name = "impl-serde"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4551f042f3438e64dbd6226b20527fc84a6e1fe65688b58746a2f53623f25f5c"
-dependencies = [
- "serde",
-]
-
-[[package]]
-name = "impl-serde"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd"
-dependencies = [
- "serde",
+ "parity-scale-codec",
]
[[package]]
@@ -4655,15 +4643,9 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
-[[package]]
-name = "indenter"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683"
-
[[package]]
name = "indexmap"
version = "1.9.3"
@@ -4672,18 +4654,20 @@ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
dependencies = [
"autocfg",
"hashbrown 0.12.3",
+ "serde",
]
[[package]]
name = "indexmap"
-version = "2.9.0"
+version = "2.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e"
+checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f"
dependencies = [
"arbitrary",
"equivalent",
- "hashbrown 0.15.3",
+ "hashbrown 0.16.0",
"serde",
+ "serde_core",
]
[[package]]
@@ -4697,8 +4681,8 @@ dependencies = [
"filesystem",
"lockfile",
"metrics",
- "parking_lot 0.12.3",
- "rand 0.8.5",
+ "parking_lot",
+ "rand 0.9.2",
"reqwest",
"serde",
"serde_json",
@@ -4718,19 +4702,7 @@ version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01"
dependencies = [
- "generic-array 0.14.7",
-]
-
-[[package]]
-name = "instant"
-version = "0.1.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222"
-dependencies = [
- "cfg-if",
- "js-sys",
- "wasm-bindgen",
- "web-sys",
+ "generic-array",
]
[[package]]
@@ -4751,25 +4723,14 @@ dependencies = [
"num-traits",
]
-[[package]]
-name = "io-lifetimes"
-version = "1.0.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
-dependencies = [
- "hermit-abi 0.3.9",
- "libc",
- "windows-sys 0.48.0",
-]
-
[[package]]
name = "ipconfig"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f"
dependencies = [
- "socket2",
- "widestring 1.2.0",
+ "socket2 0.5.10",
+ "widestring 1.2.1",
"windows-sys 0.48.0",
"winreg",
]
@@ -4781,21 +4742,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130"
[[package]]
-name = "is-terminal"
-version = "0.4.16"
+name = "iri-string"
+version = "0.7.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9"
+checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397"
dependencies = [
- "hermit-abi 0.5.1",
+ "memchr",
+ "serde",
+]
+
+[[package]]
+name = "is-terminal"
+version = "0.4.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46"
+dependencies = [
+ "hermit-abi",
"libc",
- "windows-sys 0.59.0",
+ "windows-sys 0.52.0",
]
[[package]]
name = "is_terminal_polyfill"
-version = "1.70.1"
+version = "1.70.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
+checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695"
[[package]]
name = "itertools"
@@ -4824,6 +4795,15 @@ dependencies = [
"either",
]
+[[package]]
+name = "itertools"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285"
+dependencies = [
+ "either",
+]
+
[[package]]
name = "itoa"
version = "1.0.15"
@@ -4832,19 +4812,19 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
[[package]]
name = "jobserver"
-version = "0.1.33"
+version = "0.1.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a"
+checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33"
dependencies = [
- "getrandom 0.3.2",
+ "getrandom 0.3.4",
"libc",
]
[[package]]
name = "js-sys"
-version = "0.3.77"
+version = "0.3.82"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
+checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65"
dependencies = [
"once_cell",
"wasm-bindgen",
@@ -4865,19 +4845,6 @@ dependencies = [
"simple_asn1",
]
-[[package]]
-name = "k256"
-version = "0.11.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72c1e0b51e7ec0a97369623508396067a486bd0cbed95a2659a4b863d28cfc8b"
-dependencies = [
- "cfg-if",
- "ecdsa 0.14.8",
- "elliptic-curve 0.12.3",
- "sha2 0.10.9",
- "sha3 0.10.8",
-]
-
[[package]]
name = "k256"
version = "0.13.4"
@@ -4885,11 +4852,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b"
dependencies = [
"cfg-if",
- "ecdsa 0.16.9",
- "elliptic-curve 0.13.8",
+ "ecdsa",
+ "elliptic-curve",
"once_cell",
+ "serdect",
"sha2 0.10.9",
- "signature 2.2.0",
+ "signature",
]
[[package]]
@@ -4917,7 +4885,7 @@ version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4b286e6b663fb926e1eeb68528e69cb70ed46c6d65871a21b2215ae8154c6d3c"
dependencies = [
- "primitive-types 0.12.2",
+ "primitive-types",
"tiny-keccak",
]
@@ -4928,15 +4896,17 @@ dependencies = [
"arbitrary",
"c-kzg",
"criterion",
- "derivative",
+ "educe",
"ethereum_hashing",
"ethereum_serde_utils",
"ethereum_ssz",
"ethereum_ssz_derive",
"hex",
+ "rayon",
"rust_eth_kzg",
"serde",
"serde_json",
+ "tracing",
"tree_hash",
]
@@ -4957,7 +4927,7 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
[[package]]
name = "lcli"
-version = "7.1.0-beta.0"
+version = "8.0.1"
dependencies = [
"account_utils",
"beacon_chain",
@@ -4965,7 +4935,6 @@ dependencies = [
"clap",
"clap_utils",
"deposit_contract",
- "env_logger 0.9.3",
"environment",
"eth2",
"eth2_network_config",
@@ -4973,11 +4942,13 @@ dependencies = [
"ethereum_hashing",
"ethereum_ssz",
"execution_layer",
+ "fixed_bytes",
"hex",
"lighthouse_network",
"lighthouse_version",
"log",
"malloc_utils",
+ "network_utils",
"rayon",
"serde",
"serde_json",
@@ -5017,18 +4988,18 @@ dependencies = [
[[package]]
name = "libc"
-version = "0.2.172"
+version = "0.2.177"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa"
+checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976"
[[package]]
name = "libloading"
-version = "0.8.6"
+version = "0.8.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34"
+checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55"
dependencies = [
"cfg-if",
- "windows-targets 0.52.6",
+ "windows-link",
]
[[package]]
@@ -5048,15 +5019,15 @@ dependencies = [
"indexmap 1.9.3",
"libc",
"mdbx-sys",
- "parking_lot 0.12.3",
+ "parking_lot",
"thiserror 1.0.69",
]
[[package]]
name = "libp2p"
-version = "0.55.0"
+version = "0.56.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b72dc443ddd0254cb49a794ed6b6728400ee446a0f7ab4a07d0209ee98de20e9"
+checksum = "ce71348bf5838e46449ae240631117b487073d5f347c06d434caddcb91dceb5a"
dependencies = [
"bytes",
"either",
@@ -5081,14 +5052,14 @@ dependencies = [
"multiaddr",
"pin-project",
"rw-stream-sink",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
]
[[package]]
name = "libp2p-allow-block-list"
-version = "0.5.0"
+version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38944b7cb981cc93f2f0fb411ff82d0e983bd226fbcc8d559639a3a73236568b"
+checksum = "d16ccf824ee859ca83df301e1c0205270206223fd4b1f2e512a693e1912a8f4a"
dependencies = [
"libp2p-core",
"libp2p-identity",
@@ -5097,9 +5068,9 @@ dependencies = [
[[package]]
name = "libp2p-connection-limits"
-version = "0.5.0"
+version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "efe9323175a17caa8a2ed4feaf8a548eeef5e0b72d03840a0eab4bcb0210ce1c"
+checksum = "a18b8b607cf3bfa2f8c57db9c7d8569a315d5cc0a282e6bfd5ebfc0a9840b2a0"
dependencies = [
"libp2p-core",
"libp2p-identity",
@@ -5108,9 +5079,9 @@ dependencies = [
[[package]]
name = "libp2p-core"
-version = "0.43.0"
+version = "0.43.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "193c75710ba43f7504ad8f58a62ca0615b1d7e572cb0f1780bc607252c39e9ef"
+checksum = "4d28e2d2def7c344170f5c6450c0dbe3dfef655610dbfde2f6ac28a527abbe36"
dependencies = [
"either",
"fnv",
@@ -5120,13 +5091,12 @@ dependencies = [
"multiaddr",
"multihash",
"multistream-select",
- "once_cell",
- "parking_lot 0.12.3",
+ "parking_lot",
"pin-project",
"quick-protobuf",
"rand 0.8.5",
"rw-stream-sink",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"tracing",
"unsigned-varint 0.8.0",
"web-time",
@@ -5134,26 +5104,26 @@ dependencies = [
[[package]]
name = "libp2p-dns"
-version = "0.43.0"
+version = "0.44.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b780a1150214155b0ed1cdf09fbd2e1b0442604f9146a431d1b21d23eef7bd7"
+checksum = "0b770c1c8476736ca98c578cba4b505104ff8e842c2876b528925f9766379f9a"
dependencies = [
"async-trait",
"futures",
"hickory-resolver",
"libp2p-core",
"libp2p-identity",
- "parking_lot 0.12.3",
+ "parking_lot",
"smallvec",
"tracing",
]
[[package]]
name = "libp2p-gossipsub"
-version = "0.49.0"
-source = "git+https://github.com/sigp/rust-libp2p.git?rev=61b2820#61b2820de7a3fab5ae5e1362c4dfa93bd7c41e98"
+version = "0.50.0"
+source = "git+https://github.com/sigp/rust-libp2p.git?rev=5acdf89a65d64098f9346efa5769e57bcd19dea9#5acdf89a65d64098f9346efa5769e57bcd19dea9"
dependencies = [
- "async-channel 2.3.1",
+ "async-channel 2.5.0",
"asynchronous-codec",
"base64 0.22.1",
"byteorder",
@@ -5163,7 +5133,7 @@ dependencies = [
"futures",
"futures-timer",
"getrandom 0.2.16",
- "hashlink 0.9.1",
+ "hashlink 0.10.0",
"hex_fmt",
"libp2p-core",
"libp2p-identity",
@@ -5180,9 +5150,9 @@ dependencies = [
[[package]]
name = "libp2p-identify"
-version = "0.46.0"
+version = "0.47.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e8c06862544f02d05d62780ff590cc25a75f5c2b9df38ec7a370dcae8bb873cf"
+checksum = "8ab792a8b68fdef443a62155b01970c81c3aadab5e659621b063ef252a8e65e8"
dependencies = [
"asynchronous-codec",
"either",
@@ -5195,37 +5165,35 @@ dependencies = [
"quick-protobuf",
"quick-protobuf-codec",
"smallvec",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"tracing",
]
[[package]]
name = "libp2p-identity"
-version = "0.2.11"
+version = "0.2.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fbb68ea10844211a59ce46230909fd0ea040e8a192454d4cc2ee0d53e12280eb"
+checksum = "3104e13b51e4711ff5738caa1fb54467c8604c2e94d607e27745bcf709068774"
dependencies = [
"asn1_der",
"bs58 0.5.1",
"ed25519-dalek",
"hkdf",
- "k256 0.13.4",
+ "k256",
"multihash",
- "p256",
"quick-protobuf",
"rand 0.8.5",
- "sec1 0.7.3",
"sha2 0.10.9",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"tracing",
"zeroize",
]
[[package]]
name = "libp2p-mdns"
-version = "0.47.0"
+version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "11d0ba095e1175d797540e16b62e7576846b883cb5046d4159086837b36846cc"
+checksum = "c66872d0f1ffcded2788683f76931be1c52e27f343edb93bc6d0bcd8887be443"
dependencies = [
"futures",
"hickory-proto",
@@ -5235,16 +5203,16 @@ dependencies = [
"libp2p-swarm",
"rand 0.8.5",
"smallvec",
- "socket2",
+ "socket2 0.5.10",
"tokio",
"tracing",
]
[[package]]
name = "libp2p-metrics"
-version = "0.16.0"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2ce58c64292e87af624fcb86465e7dd8342e46a388d71e8fec0ab37ee789630a"
+checksum = "805a555148522cb3414493a5153451910cb1a146c53ffbf4385708349baf62b7"
dependencies = [
"futures",
"libp2p-core",
@@ -5258,9 +5226,9 @@ dependencies = [
[[package]]
name = "libp2p-mplex"
-version = "0.43.0"
+version = "0.43.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8aaa6fee3722e355443058472fc4705d78681bc2d8e447a0bdeb3fecf40cd197"
+checksum = "95a4019ba30c4e42b776113e9778071691fe3f34bf23b6b3bf0dfcf29d801f3d"
dependencies = [
"asynchronous-codec",
"bytes",
@@ -5268,7 +5236,7 @@ dependencies = [
"libp2p-core",
"libp2p-identity",
"nohash-hasher",
- "parking_lot 0.12.3",
+ "parking_lot",
"rand 0.8.5",
"smallvec",
"tracing",
@@ -5277,9 +5245,9 @@ dependencies = [
[[package]]
name = "libp2p-noise"
-version = "0.46.0"
+version = "0.46.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "afcc133e0f3cea07acde6eb8a9665cb11b600bd61110b010593a0210b8153b16"
+checksum = "bc73eacbe6462a0eb92a6527cac6e63f02026e5407f8831bde8293f19217bfbf"
dependencies = [
"asynchronous-codec",
"bytes",
@@ -5288,12 +5256,11 @@ dependencies = [
"libp2p-identity",
"multiaddr",
"multihash",
- "once_cell",
"quick-protobuf",
"rand 0.8.5",
"snow",
"static_assertions",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"tracing",
"x25519-dalek",
"zeroize",
@@ -5317,9 +5284,9 @@ dependencies = [
[[package]]
name = "libp2p-quic"
-version = "0.12.0"
+version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41432a159b00424a0abaa2c80d786cddff81055ac24aa127e0cf375f7858d880"
+checksum = "8dc448b2de9f4745784e3751fe8bc6c473d01b8317edd5ababcb0dec803d843f"
dependencies = [
"futures",
"futures-timer",
@@ -5330,18 +5297,18 @@ dependencies = [
"quinn",
"rand 0.8.5",
"ring",
- "rustls 0.23.27",
- "socket2",
- "thiserror 2.0.12",
+ "rustls 0.23.35",
+ "socket2 0.5.10",
+ "thiserror 2.0.17",
"tokio",
"tracing",
]
[[package]]
name = "libp2p-swarm"
-version = "0.46.0"
+version = "0.47.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "803399b4b6f68adb85e63ab573ac568154b193e9a640f03e0f2890eabbcb37f8"
+checksum = "6aa762e5215919a34e31c35d4b18bf2e18566ecab7f8a3d39535f4a3068f8b62"
dependencies = [
"either",
"fnv",
@@ -5350,9 +5317,8 @@ dependencies = [
"libp2p-core",
"libp2p-identity",
"libp2p-swarm-derive",
- "lru",
+ "lru 0.12.5",
"multistream-select",
- "once_cell",
"rand 0.8.5",
"smallvec",
"tokio",
@@ -5362,37 +5328,36 @@ dependencies = [
[[package]]
name = "libp2p-swarm-derive"
-version = "0.35.0"
+version = "0.35.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "206e0aa0ebe004d778d79fb0966aa0de996c19894e2c0605ba2f8524dd4443d8"
+checksum = "dd297cf53f0cb3dee4d2620bb319ae47ef27c702684309f682bdb7e55a18ae9c"
dependencies = [
- "heck 0.5.0",
- "proc-macro2",
+ "heck",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
name = "libp2p-tcp"
-version = "0.43.0"
+version = "0.44.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "65346fb4d36035b23fec4e7be4c320436ba53537ce9b6be1d1db1f70c905cad0"
+checksum = "65b4e030c52c46c8d01559b2b8ca9b7c4185f10576016853129ca1fe5cd1a644"
dependencies = [
"futures",
"futures-timer",
"if-watch",
"libc",
"libp2p-core",
- "socket2",
+ "socket2 0.5.10",
"tokio",
"tracing",
]
[[package]]
name = "libp2p-tls"
-version = "0.6.1"
+version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "42bbf5084fb44133267ad4caaa72a253d68d709edd2ed1cf9b42431a8ead8fd5"
+checksum = "96ff65a82e35375cbc31ebb99cacbbf28cb6c4fefe26bf13756ddcf708d40080"
dependencies = [
"futures",
"futures-rustls",
@@ -5400,22 +5365,22 @@ dependencies = [
"libp2p-identity",
"rcgen",
"ring",
- "rustls 0.23.27",
- "rustls-webpki 0.101.7",
- "thiserror 2.0.12",
+ "rustls 0.23.35",
+ "rustls-webpki 0.103.8",
+ "thiserror 2.0.17",
"x509-parser",
"yasna",
]
[[package]]
name = "libp2p-upnp"
-version = "0.4.0"
+version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d457b9ecceb66e7199f049926fad447f1f17f040e8d29d690c086b4cab8ed14a"
+checksum = "4757e65fe69399c1a243bbb90ec1ae5a2114b907467bf09f3575e899815bb8d3"
dependencies = [
"futures",
"futures-timer",
- "igd-next 0.15.1",
+ "igd-next",
"libp2p-core",
"libp2p-swarm",
"tokio",
@@ -5431,19 +5396,19 @@ dependencies = [
"either",
"futures",
"libp2p-core",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"tracing",
"yamux 0.12.1",
- "yamux 0.13.4",
+ "yamux 0.13.8",
]
[[package]]
name = "libredox"
-version = "0.1.3"
+version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
+checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.10.0",
"libc",
]
@@ -5460,9 +5425,9 @@ dependencies = [
[[package]]
name = "libz-sys"
-version = "1.1.22"
+version = "1.1.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b70e7a7df205e92a1a4cd9aaae7898dac0aa555503cc0a649494d0d60e7651d"
+checksum = "15d118bbf3771060e7311cc7bb0545b01d08a8b4a7de949198dec1fa0ca1c0f7"
dependencies = [
"cc",
"pkg-config",
@@ -5471,7 +5436,7 @@ dependencies = [
[[package]]
name = "lighthouse"
-version = "7.1.0-beta.0"
+version = "8.0.1"
dependencies = [
"account_manager",
"account_utils",
@@ -5482,20 +5447,25 @@ dependencies = [
"boot_node",
"clap",
"clap_utils",
+ "console-subscriber",
"database_manager",
"directory",
"environment",
- "eth1",
"eth2",
"eth2_network_config",
"ethereum_hashing",
"futures",
"initialized_validators",
"lighthouse_network",
+ "lighthouse_tracing",
"lighthouse_version",
"logging",
"malloc_utils",
"metrics",
+ "network_utils",
+ "opentelemetry",
+ "opentelemetry-otlp",
+ "opentelemetry_sdk",
"sensitive_url",
"serde",
"serde_json",
@@ -5506,9 +5476,9 @@ dependencies = [
"task_executor",
"tempfile",
"tracing",
+ "tracing-opentelemetry",
"tracing-subscriber",
"types",
- "unused_port",
"validator_client",
"validator_dir",
"validator_manager",
@@ -5522,6 +5492,7 @@ dependencies = [
"alloy-primitives",
"alloy-rlp",
"async-channel 1.9.0",
+ "bls",
"bytes",
"delay_map",
"directory",
@@ -5531,6 +5502,7 @@ dependencies = [
"eth2",
"ethereum_ssz",
"ethereum_ssz_derive",
+ "fixed_bytes",
"fnv",
"futures",
"hex",
@@ -5541,14 +5513,14 @@ dependencies = [
"lighthouse_version",
"local-ip-address",
"logging",
- "lru",
+ "lru 0.12.5",
"lru_cache",
"metrics",
- "parking_lot 0.12.3",
+ "network_utils",
+ "parking_lot",
"prometheus-client",
- "quickcheck",
- "quickcheck_macros",
- "rand 0.8.5",
+ "proptest",
+ "rand 0.9.2",
"regex",
"serde",
"sha2 0.9.9",
@@ -5559,23 +5531,26 @@ dependencies = [
"superstruct",
"task_executor",
"tempfile",
- "tiny-keccak",
"tokio",
- "tokio-io-timeout",
"tokio-util",
"tracing",
"tracing-subscriber",
+ "typenum",
"types",
"unsigned-varint 0.8.0",
- "unused_port",
]
+[[package]]
+name = "lighthouse_tracing"
+version = "0.1.0"
+
[[package]]
name = "lighthouse_validator_store"
version = "0.1.0"
dependencies = [
"account_utils",
"beacon_node_fallback",
+ "bls",
"doppelganger_service",
"either",
"environment",
@@ -5583,7 +5558,7 @@ dependencies = [
"futures",
"initialized_validators",
"logging",
- "parking_lot 0.12.3",
+ "parking_lot",
"serde",
"signing_method",
"slashing_protection",
@@ -5598,19 +5573,11 @@ dependencies = [
[[package]]
name = "lighthouse_version"
-version = "0.1.0"
+version = "8.0.1"
dependencies = [
- "git-version",
"regex",
- "target_info",
]
-[[package]]
-name = "linux-raw-sys"
-version = "0.1.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4"
-
[[package]]
name = "linux-raw-sys"
version = "0.4.15"
@@ -5619,15 +5586,15 @@ checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"
[[package]]
name = "linux-raw-sys"
-version = "0.9.4"
+version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12"
+checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
[[package]]
name = "litemap"
-version = "0.7.5"
+version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856"
+checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77"
[[package]]
name = "lmdb-rkv"
@@ -5658,17 +5625,16 @@ checksum = "656b3b27f8893f7bbf9485148ff9a65f019e3f33bd5cdc87c83cab16b3fd9ec8"
dependencies = [
"libc",
"neli",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"windows-sys 0.59.0",
]
[[package]]
name = "lock_api"
-version = "0.4.12"
+version = "0.4.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
+checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
dependencies = [
- "autocfg",
"scopeguard",
]
@@ -5682,9 +5648,9 @@ dependencies = [
[[package]]
name = "log"
-version = "0.4.27"
+version = "0.4.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
+checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
[[package]]
name = "logging"
@@ -5706,9 +5672,9 @@ dependencies = [
[[package]]
name = "logroller"
-version = "0.1.8"
+version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90536db32a1cb3672665cdf3269bf030b0f395fabee863895c27b75b9f7a8a7d"
+checksum = "83db12bbf439ebe64c0b0e4402f435b6f866db498fc1ae17e1b5d1a01625e2be"
dependencies = [
"chrono",
"flate2",
@@ -5716,28 +5682,30 @@ dependencies = [
"thiserror 1.0.69",
]
-[[package]]
-name = "loom"
-version = "0.7.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca"
-dependencies = [
- "cfg-if",
- "generator",
- "scoped-tls",
- "tracing",
- "tracing-subscriber",
-]
-
[[package]]
name = "lru"
version = "0.12.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38"
dependencies = [
- "hashbrown 0.15.3",
+ "hashbrown 0.15.5",
]
+[[package]]
+name = "lru"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "227748d55f2f0ab4735d87fd623798cb6b664512fe979705f829c9f81c934465"
+dependencies = [
+ "hashbrown 0.15.5",
+]
+
+[[package]]
+name = "lru-slab"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"
+
[[package]]
name = "lru_cache"
version = "0.1.0"
@@ -5748,20 +5716,31 @@ dependencies = [
[[package]]
name = "mach2"
-version = "0.4.2"
+version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709"
+checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44"
dependencies = [
"libc",
]
+[[package]]
+name = "macro-string"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.110",
+]
+
[[package]]
name = "malloc_utils"
version = "0.1.0"
dependencies = [
"libc",
"metrics",
- "parking_lot 0.12.3",
+ "parking_lot",
"tikv-jemalloc-ctl",
"tikv-jemallocator",
]
@@ -5773,12 +5752,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d"
[[package]]
-name = "matchers"
-version = "0.1.0"
+name = "match-lookup"
+version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
+checksum = "1265724d8cb29dbbc2b0f06fffb8bf1a8c0cf73a78eede9ba73a4a66c52a981e"
dependencies = [
- "regex-automata 0.1.10",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "matchers"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9"
+dependencies = [
+ "regex-automata",
]
[[package]]
@@ -5787,6 +5777,12 @@ version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5"
+[[package]]
+name = "matchit"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94"
+
[[package]]
name = "mdbx-sys"
version = "0.11.6-4"
@@ -5806,9 +5802,9 @@ checksum = "33746aadcb41349ec291e7f2f0a3aa6834d1d7c58066fb4b01f68efc4c4b7631"
[[package]]
name = "memchr"
-version = "2.7.4"
+version = "2.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
[[package]]
name = "memoffset"
@@ -5826,8 +5822,7 @@ dependencies = [
"alloy-primitives",
"ethereum_hashing",
"fixed_bytes",
- "quickcheck",
- "quickcheck_macros",
+ "proptest",
"safe_arith",
]
@@ -5863,18 +5858,19 @@ dependencies = [
[[package]]
name = "milhouse"
-version = "0.5.0"
+version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eb1ada1f56cc1c79f40517fdcbf57e19f60424a3a1ce372c3fe9b22e4fdd83eb"
+checksum = "259dd9da2ae5e0278b95da0b7ecef9c18c309d0a2d9e6db57ed33b9e8910c5e7"
dependencies = [
"alloy-primitives",
"arbitrary",
+ "context_deserialize",
"educe",
"ethereum_hashing",
"ethereum_ssz",
"ethereum_ssz_derive",
"itertools 0.13.0",
- "parking_lot 0.12.3",
+ "parking_lot",
"rayon",
"serde",
"smallvec",
@@ -5908,22 +5904,23 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
[[package]]
name = "miniz_oxide"
-version = "0.8.8"
+version = "0.8.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a"
+checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
dependencies = [
"adler2",
+ "simd-adler32",
]
[[package]]
name = "mio"
-version = "1.0.3"
+version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd"
+checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873"
dependencies = [
"libc",
- "wasi 0.11.0+wasi-snapshot-preview1",
- "windows-sys 0.52.0",
+ "wasi",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -5932,6 +5929,44 @@ version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9366861eb2a2c436c20b12c8dbec5f798cea6b47ad99216be0282942e2c81ea0"
+[[package]]
+name = "mockall"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39a6bfcc6c8c7eed5ee98b9c3e33adc726054389233e201c95dab2d41a3839d2"
+dependencies = [
+ "cfg-if",
+ "downcast",
+ "fragile",
+ "mockall_derive",
+ "predicates",
+ "predicates-tree",
+]
+
+[[package]]
+name = "mockall_derive"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "25ca3004c2efe9011bd4e461bd8256445052b9615405b4f7ea43fc8ca5c20898"
+dependencies = [
+ "cfg-if",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.110",
+]
+
+[[package]]
+name = "mockall_double"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1ca96e5ac35256ae3e13536edd39b172b88f41615e1d7b653c8ad24524113e8"
+dependencies = [
+ "cfg-if",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.110",
+]
+
[[package]]
name = "mockito"
version = "1.7.0"
@@ -5945,10 +5980,10 @@ dependencies = [
"http 1.3.1",
"http-body 1.0.1",
"http-body-util",
- "hyper 1.6.0",
+ "hyper 1.8.1",
"hyper-util",
"log",
- "rand 0.9.1",
+ "rand 0.9.2",
"regex",
"serde_json",
"serde_urlencoded",
@@ -5958,21 +5993,20 @@ dependencies = [
[[package]]
name = "moka"
-version = "0.12.10"
+version = "0.12.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9321642ca94a4282428e6ea4af8cc2ca4eac48ac7a6a4ea8f33f76d0ce70926"
+checksum = "8261cd88c312e0004c1d51baad2980c66528dfdb2bee62003e643a4d8f86b077"
dependencies = [
"crossbeam-channel",
"crossbeam-epoch",
"crossbeam-utils",
- "loom",
- "parking_lot 0.12.3",
+ "equivalent",
+ "parking_lot",
"portable-atomic",
"rustc_version 0.4.1",
"smallvec",
"tagptr",
- "thiserror 1.0.69",
- "uuid 1.16.0",
+ "uuid 1.18.1",
]
[[package]]
@@ -6021,11 +6055,12 @@ dependencies = [
[[package]]
name = "multibase"
-version = "0.9.1"
+version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b3539ec3c1f04ac9748a260728e855f261b4977f5c3406612c884564f329404"
+checksum = "8694bb4835f452b0e3bb06dbebb1d6fc5385b6ca1caf2e55fd165c042390ec77"
dependencies = [
"base-x",
+ "base256emoji",
"data-encoding",
"data-encoding-macro",
]
@@ -6066,7 +6101,7 @@ dependencies = [
"openssl-probe",
"openssl-sys",
"schannel",
- "security-framework",
+ "security-framework 2.11.1",
"security-framework-sys",
"tempfile",
]
@@ -6144,7 +6179,7 @@ dependencies = [
"log",
"netlink-packet-core",
"netlink-sys",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
]
[[package]]
@@ -6172,29 +6207,33 @@ dependencies = [
"beacon_processor",
"bls",
"delay_map",
- "derivative",
+ "educe",
"eth2",
"eth2_network_config",
"ethereum_ssz",
"execution_layer",
+ "fixed_bytes",
"fnv",
"futures",
"genesis",
"hex",
- "igd-next 0.16.1",
+ "igd-next",
"itertools 0.10.5",
- "k256 0.13.4",
+ "k256",
"kzg",
"libp2p-gossipsub",
"lighthouse_network",
+ "lighthouse_tracing",
"logging",
"lru_cache",
"matches",
"metrics",
"operation_pool",
- "parking_lot 0.12.3",
+ "parking_lot",
"rand 0.8.5",
+ "rand 0.9.2",
"rand_chacha 0.3.1",
+ "rand_chacha 0.9.0",
"serde_json",
"slot_clock",
"smallvec",
@@ -6206,9 +6245,25 @@ dependencies = [
"tokio-stream",
"tracing",
"tracing-subscriber",
+ "typenum",
"types",
]
+[[package]]
+name = "network_utils"
+version = "0.1.0"
+dependencies = [
+ "discv5",
+ "hex",
+ "libp2p-identity",
+ "lru_cache",
+ "metrics",
+ "multiaddr",
+ "parking_lot",
+ "serde",
+ "tiny-keccak",
+]
+
[[package]]
name = "nix"
version = "0.24.3"
@@ -6233,11 +6288,11 @@ dependencies = [
[[package]]
name = "nix"
-version = "0.29.0"
+version = "0.30.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
+checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.10.0",
"cfg-if",
"cfg_aliases",
"libc",
@@ -6287,12 +6342,11 @@ dependencies = [
[[package]]
name = "nu-ansi-term"
-version = "0.46.0"
+version = "0.50.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
+checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
dependencies = [
- "overload",
- "winapi",
+ "windows-sys 0.59.0",
]
[[package]]
@@ -6307,11 +6361,10 @@ dependencies = [
[[package]]
name = "num-bigint-dig"
-version = "0.8.4"
+version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151"
+checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7"
dependencies = [
- "byteorder",
"lazy_static",
"libm",
"num-integer",
@@ -6361,28 +6414,69 @@ dependencies = [
[[package]]
name = "num_cpus"
-version = "1.16.0"
+version = "1.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
+checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b"
dependencies = [
- "hermit-abi 0.3.9",
+ "hermit-abi",
"libc",
]
[[package]]
-name = "object"
-version = "0.36.7"
+name = "num_enum"
+version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87"
+checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c"
dependencies = [
- "memchr",
+ "num_enum_derive",
+ "rustversion",
]
[[package]]
-name = "oid-registry"
-version = "0.7.1"
+name = "num_enum_derive"
+version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8d8034d9489cdaf79228eb9f6a3b8d7bb32ba00d6645ebd48eef4077ceb5bd9"
+checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.110",
+]
+
+[[package]]
+name = "nybbles"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c4b5ecbd0beec843101bffe848217f770e8b8da81d8355b7d6e226f2199b3dc"
+dependencies = [
+ "alloy-rlp",
+ "cfg-if",
+ "proptest",
+ "ruint",
+ "serde",
+ "smallvec",
+]
+
+[[package]]
+name = "objc2"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05"
+dependencies = [
+ "objc2-encode",
+]
+
+[[package]]
+name = "objc2-encode"
+version = "4.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33"
+
+[[package]]
+name = "oid-registry"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12f40cff3dde1b6087cc5d5f5d4d65712f34016a03ed60e9c08dcc392736b5b7"
dependencies = [
"asn1-rs",
]
@@ -6392,12 +6486,22 @@ name = "once_cell"
version = "1.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
+dependencies = [
+ "critical-section",
+ "portable-atomic",
+]
+
+[[package]]
+name = "once_cell_polyfill"
+version = "1.70.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
[[package]]
name = "oneshot_broadcast"
version = "0.1.0"
dependencies = [
- "parking_lot 0.12.3",
+ "parking_lot",
]
[[package]]
@@ -6406,50 +6510,19 @@ version = "11.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e"
-[[package]]
-name = "opaque-debug"
-version = "0.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c"
-
[[package]]
name = "opaque-debug"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381"
-[[package]]
-name = "open-fastrlp"
-version = "0.1.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce"
-dependencies = [
- "arrayvec",
- "auto_impl 1.3.0",
- "bytes",
- "ethereum-types 0.14.1",
- "open-fastrlp-derive",
-]
-
-[[package]]
-name = "open-fastrlp-derive"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c"
-dependencies = [
- "bytes",
- "proc-macro2",
- "quote",
- "syn 1.0.109",
-]
-
[[package]]
name = "openssl"
-version = "0.10.72"
+version = "0.10.75"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da"
+checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.10.0",
"cfg-if",
"foreign-types",
"libc",
@@ -6466,7 +6539,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
@@ -6477,18 +6550,18 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e"
[[package]]
name = "openssl-src"
-version = "300.5.0+3.5.0"
+version = "300.5.4+3.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e8ce546f549326b0e6052b649198487d91320875da901e7bd11a06d1ee3f9c2f"
+checksum = "a507b3792995dae9b0df8a1c1e3771e8418b7c2d9f0baeba32e6fe8b06c7cb72"
dependencies = [
"cc",
]
[[package]]
name = "openssl-sys"
-version = "0.9.108"
+version = "0.9.111"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e145e1651e858e820e4860f7b9c5e169bc1d8ce1c86043be79fa7b7634821847"
+checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321"
dependencies = [
"cc",
"libc",
@@ -6497,116 +6570,141 @@ dependencies = [
"vcpkg",
]
+[[package]]
+name = "opentelemetry"
+version = "0.30.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aaf416e4cb72756655126f7dd7bb0af49c674f4c1b9903e80c009e0c37e552e6"
+dependencies = [
+ "futures-core",
+ "futures-sink",
+ "js-sys",
+ "pin-project-lite",
+ "thiserror 2.0.17",
+ "tracing",
+]
+
+[[package]]
+name = "opentelemetry-http"
+version = "0.30.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50f6639e842a97dbea8886e3439710ae463120091e2e064518ba8e716e6ac36d"
+dependencies = [
+ "async-trait",
+ "bytes",
+ "http 1.3.1",
+ "opentelemetry",
+ "reqwest",
+]
+
+[[package]]
+name = "opentelemetry-otlp"
+version = "0.30.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dbee664a43e07615731afc539ca60c6d9f1a9425e25ca09c57bc36c87c55852b"
+dependencies = [
+ "http 1.3.1",
+ "opentelemetry",
+ "opentelemetry-http",
+ "opentelemetry-proto",
+ "opentelemetry_sdk",
+ "prost",
+ "reqwest",
+ "thiserror 2.0.17",
+ "tokio",
+ "tonic 0.13.1",
+ "tracing",
+]
+
+[[package]]
+name = "opentelemetry-proto"
+version = "0.30.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2e046fd7660710fe5a05e8748e70d9058dc15c94ba914e7c4faa7c728f0e8ddc"
+dependencies = [
+ "opentelemetry",
+ "opentelemetry_sdk",
+ "prost",
+ "tonic 0.13.1",
+]
+
+[[package]]
+name = "opentelemetry_sdk"
+version = "0.30.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "11f644aa9e5e31d11896e024305d7e3c98a88884d9f8919dbf37a9991bc47a4b"
+dependencies = [
+ "futures-channel",
+ "futures-executor",
+ "futures-util",
+ "opentelemetry",
+ "percent-encoding",
+ "rand 0.9.2",
+ "serde_json",
+ "thiserror 2.0.17",
+]
+
[[package]]
name = "operation_pool"
version = "0.2.0"
dependencies = [
"beacon_chain",
- "bitvec 1.0.1",
- "derivative",
+ "bitvec",
+ "bls",
+ "educe",
"ethereum_ssz",
"ethereum_ssz_derive",
+ "fixed_bytes",
"itertools 0.10.5",
"maplit",
"metrics",
- "parking_lot 0.12.3",
- "rand 0.8.5",
+ "parking_lot",
+ "rand 0.9.2",
"rayon",
"serde",
"state_processing",
"store",
+ "superstruct",
"tokio",
+ "typenum",
"types",
]
-[[package]]
-name = "ordered-float"
-version = "2.10.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c"
-dependencies = [
- "num-traits",
-]
-
-[[package]]
-name = "overload"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
-
-[[package]]
-name = "p256"
-version = "0.13.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b"
-dependencies = [
- "ecdsa 0.16.9",
- "elliptic-curve 0.13.8",
- "primeorder",
- "sha2 0.10.9",
-]
-
[[package]]
name = "pairing"
version = "0.23.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "81fec4625e73cf41ef4bb6846cafa6d44736525f442ba45e407c4a000a13996f"
dependencies = [
- "group 0.13.0",
+ "group",
]
[[package]]
name = "parity-scale-codec"
-version = "2.3.1"
+version = "3.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909"
+checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa"
dependencies = [
"arrayvec",
- "bitvec 0.20.4",
- "byte-slice-cast",
- "impl-trait-for-tuples",
- "parity-scale-codec-derive 2.3.1",
- "serde",
-]
-
-[[package]]
-name = "parity-scale-codec"
-version = "3.7.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c9fde3d0718baf5bc92f577d652001da0f8d54cd03a7974e118d04fc888dc23d"
-dependencies = [
- "arrayvec",
- "bitvec 1.0.1",
+ "bitvec",
"byte-slice-cast",
"const_format",
"impl-trait-for-tuples",
- "parity-scale-codec-derive 3.7.4",
+ "parity-scale-codec-derive",
"rustversion",
"serde",
]
[[package]]
name = "parity-scale-codec-derive"
-version = "2.3.1"
+version = "3.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27"
+checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a"
dependencies = [
- "proc-macro-crate 1.3.1",
+ "proc-macro-crate",
"proc-macro2",
"quote",
- "syn 1.0.109",
-]
-
-[[package]]
-name = "parity-scale-codec-derive"
-version = "3.7.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "581c837bb6b9541ce7faa9377c20616e4fb7650f6b0f68bc93c827ee504fb7b3"
-dependencies = [
- "proc-macro-crate 3.3.0",
- "proc-macro2",
- "quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
@@ -6617,50 +6715,25 @@ checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba"
[[package]]
name = "parking_lot"
-version = "0.11.2"
+version = "0.12.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99"
-dependencies = [
- "instant",
- "lock_api",
- "parking_lot_core 0.8.6",
-]
-
-[[package]]
-name = "parking_lot"
-version = "0.12.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
+checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
dependencies = [
"lock_api",
- "parking_lot_core 0.9.10",
+ "parking_lot_core",
]
[[package]]
name = "parking_lot_core"
-version = "0.8.6"
+version = "0.9.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc"
-dependencies = [
- "cfg-if",
- "instant",
- "libc",
- "redox_syscall 0.2.16",
- "smallvec",
- "winapi",
-]
-
-[[package]]
-name = "parking_lot_core"
-version = "0.9.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
+checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
dependencies = [
"cfg-if",
"libc",
- "redox_syscall 0.5.12",
+ "redox_syscall",
"smallvec",
- "windows-targets 0.52.6",
+ "windows-link",
]
[[package]]
@@ -6703,50 +6776,30 @@ dependencies = [
[[package]]
name = "pem"
-version = "3.0.5"
+version = "3.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38af38e8470ac9dee3ce1bae1af9c1671fffc44ddfd8bd1d0a3445bf349a8ef3"
+checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be"
dependencies = [
"base64 0.22.1",
- "serde",
-]
-
-[[package]]
-name = "pem-rfc7468"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412"
-dependencies = [
- "base64ct",
+ "serde_core",
]
[[package]]
name = "percent-encoding"
-version = "2.3.1"
+version = "2.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
+checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
[[package]]
name = "pest"
-version = "2.8.0"
+version = "2.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "198db74531d58c70a361c42201efde7e2591e976d518caf7662a47dc5720e7b6"
+checksum = "989e7521a040efde50c3ab6bbadafbe15ab6dc042686926be59ac35d74607df4"
dependencies = [
"memchr",
- "thiserror 2.0.12",
"ucd-trie",
]
-[[package]]
-name = "pharos"
-version = "0.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414"
-dependencies = [
- "futures",
- "rustc_version 0.4.1",
-]
-
[[package]]
name = "pin-project"
version = "1.1.10"
@@ -6764,7 +6817,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
@@ -6779,24 +6832,14 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
-[[package]]
-name = "pkcs8"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba"
-dependencies = [
- "der 0.6.1",
- "spki 0.6.0",
-]
-
[[package]]
name = "pkcs8"
version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
dependencies = [
- "der 0.7.10",
- "spki 0.7.3",
+ "der",
+ "spki",
]
[[package]]
@@ -6841,17 +6884,16 @@ dependencies = [
[[package]]
name = "polling"
-version = "3.7.4"
+version = "3.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f"
+checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218"
dependencies = [
"cfg-if",
"concurrent-queue",
- "hermit-abi 0.4.0",
+ "hermit-abi",
"pin-project-lite",
- "rustix 0.38.44",
- "tracing",
- "windows-sys 0.59.0",
+ "rustix 1.1.2",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -6861,7 +6903,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf"
dependencies = [
"cpufeatures",
- "opaque-debug 0.3.1",
+ "opaque-debug",
"universal-hash",
]
@@ -6873,15 +6915,24 @@ checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25"
dependencies = [
"cfg-if",
"cpufeatures",
- "opaque-debug 0.3.1",
+ "opaque-debug",
"universal-hash",
]
[[package]]
name = "portable-atomic"
-version = "1.11.0"
+version = "1.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e"
+checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483"
+
+[[package]]
+name = "potential_utf"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77"
+dependencies = [
+ "zerovec",
+]
[[package]]
name = "powerfmt"
@@ -6898,6 +6949,32 @@ dependencies = [
"zerocopy",
]
+[[package]]
+name = "predicates"
+version = "3.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a5d19ee57562043d37e82899fade9a22ebab7be9cef5026b07fda9cdd4293573"
+dependencies = [
+ "anstyle",
+ "predicates-core",
+]
+
+[[package]]
+name = "predicates-core"
+version = "1.0.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "727e462b119fe9c93fd0eb1429a5f7647394014cf3c04ab2c0350eeb09095ffa"
+
+[[package]]
+name = "predicates-tree"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72dd2d6d381dfb73a193c7fca536518d7caee39fc8503f74e7dc0be0531b425c"
+dependencies = [
+ "predicates-core",
+ "termtree",
+]
+
[[package]]
name = "pretty_reqwest_error"
version = "0.1.0"
@@ -6908,34 +6985,12 @@ dependencies = [
[[package]]
name = "prettyplease"
-version = "0.2.32"
+version = "0.2.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "664ec5419c51e34154eec046ebcba56312d5a2fc3b09a06da188e1ad21afadf6"
+checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b"
dependencies = [
"proc-macro2",
- "syn 2.0.101",
-]
-
-[[package]]
-name = "primeorder"
-version = "0.13.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6"
-dependencies = [
- "elliptic-curve 0.13.8",
-]
-
-[[package]]
-name = "primitive-types"
-version = "0.10.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373"
-dependencies = [
- "fixed-hash 0.7.0",
- "impl-codec 0.5.1",
- "impl-rlp",
- "impl-serde 0.3.2",
- "uint 0.9.5",
+ "syn 2.0.110",
]
[[package]]
@@ -6944,79 +6999,70 @@ version = "0.12.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2"
dependencies = [
- "fixed-hash 0.8.0",
- "impl-codec 0.6.0",
- "impl-rlp",
- "impl-serde 0.4.0",
- "scale-info",
+ "fixed-hash",
+ "impl-codec",
"uint 0.9.5",
]
[[package]]
name = "proc-macro-crate"
-version = "1.3.1"
+version = "3.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
+checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983"
dependencies = [
- "once_cell",
- "toml_edit 0.19.15",
+ "toml_edit",
]
[[package]]
-name = "proc-macro-crate"
-version = "3.3.0"
+name = "proc-macro-error-attr2"
+version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35"
-dependencies = [
- "toml_edit 0.22.26",
-]
-
-[[package]]
-name = "proc-macro-error"
-version = "1.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
-dependencies = [
- "proc-macro-error-attr",
- "proc-macro2",
- "quote",
- "syn 1.0.109",
- "version_check",
-]
-
-[[package]]
-name = "proc-macro-error-attr"
-version = "1.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5"
dependencies = [
"proc-macro2",
"quote",
- "version_check",
+]
+
+[[package]]
+name = "proc-macro-error2"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802"
+dependencies = [
+ "proc-macro-error-attr2",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.110",
]
[[package]]
name = "proc-macro2"
-version = "1.0.95"
+version = "1.0.103"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778"
+checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8"
dependencies = [
"unicode-ident",
]
[[package]]
name = "procfs"
-version = "0.15.1"
+version = "0.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "943ca7f9f29bab5844ecd8fdb3992c5969b6622bb9609b9502fef9b4310e3f1f"
+checksum = "25485360a54d6861439d60facef26de713b1e126bf015ec8f98239467a2b82f7"
dependencies = [
- "bitflags 1.3.2",
- "byteorder",
- "chrono",
- "flate2",
+ "bitflags 2.10.0",
+ "procfs-core",
+ "rustix 1.1.2",
+]
+
+[[package]]
+name = "procfs-core"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6401bf7b6af22f78b563665d15a22e9aef27775b79b149a66ca022468a4e405"
+dependencies = [
+ "bitflags 2.10.0",
"hex",
- "lazy_static",
- "rustix 0.36.17",
]
[[package]]
@@ -7029,19 +7075,19 @@ dependencies = [
"fnv",
"lazy_static",
"memchr",
- "parking_lot 0.12.3",
+ "parking_lot",
"thiserror 1.0.69",
]
[[package]]
name = "prometheus-client"
-version = "0.22.3"
+version = "0.23.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "504ee9ff529add891127c4827eb481bd69dc0ebc72e9a682e187db4caa60c3ca"
+checksum = "cf41c1a7c32ed72abe5082fb19505b969095c12da9f5732a4bc9878757fd087c"
dependencies = [
"dtoa",
"itoa",
- "parking_lot 0.12.3",
+ "parking_lot",
"prometheus-client-derive-encode",
]
@@ -7053,24 +7099,23 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
name = "proptest"
-version = "1.6.0"
+version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50"
+checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40"
dependencies = [
"bit-set",
"bit-vec",
- "bitflags 2.9.0",
- "lazy_static",
+ "bitflags 2.10.0",
"num-traits",
- "rand 0.8.5",
- "rand_chacha 0.3.1",
- "rand_xorshift",
- "regex-syntax 0.8.5",
+ "rand 0.9.2",
+ "rand_chacha 0.9.0",
+ "rand_xorshift 0.4.0",
+ "regex-syntax",
"rusty-fork",
"tempfile",
"unarray",
@@ -7078,13 +7123,45 @@ dependencies = [
[[package]]
name = "proptest-derive"
-version = "0.5.1"
+version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4ee1c9ac207483d5e7db4940700de86a9aae46ef90c48b57f99fe7edb8345e49"
+checksum = "095a99f75c69734802359b682be8daaf8980296731f6470434ea2c652af1dd30"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
+]
+
+[[package]]
+name = "prost"
+version = "0.13.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5"
+dependencies = [
+ "bytes",
+ "prost-derive",
+]
+
+[[package]]
+name = "prost-derive"
+version = "0.13.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d"
+dependencies = [
+ "anyhow",
+ "itertools 0.14.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.110",
+]
+
+[[package]]
+name = "prost-types"
+version = "0.13.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16"
+dependencies = [
+ "prost",
]
[[package]]
@@ -7093,6 +7170,7 @@ version = "0.2.0"
dependencies = [
"ethereum_ssz",
"ethereum_ssz_derive",
+ "fixed_bytes",
"safe_arith",
"serde",
"serde_yaml",
@@ -7147,33 +7225,11 @@ dependencies = [
"unsigned-varint 0.8.0",
]
-[[package]]
-name = "quickcheck"
-version = "1.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "588f6378e4dd99458b60ec275b4477add41ce4fa9f64dcba6f15adccb19b50d6"
-dependencies = [
- "env_logger 0.8.4",
- "log",
- "rand 0.8.5",
-]
-
-[[package]]
-name = "quickcheck_macros"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f71ee38b42f8459a88d3362be6f9b841ad2d5421844f61eb1c59c11bff3ac14a"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.101",
-]
-
[[package]]
name = "quinn"
-version = "0.11.7"
+version = "0.11.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3bd15a6f2967aef83887dcb9fec0014580467e33720d073560cf015a5683012"
+checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20"
dependencies = [
"bytes",
"cfg_aliases",
@@ -7182,9 +7238,9 @@ dependencies = [
"quinn-proto",
"quinn-udp",
"rustc-hash 2.1.1",
- "rustls 0.23.27",
- "socket2",
- "thiserror 2.0.12",
+ "rustls 0.23.35",
+ "socket2 0.6.1",
+ "thiserror 2.0.17",
"tokio",
"tracing",
"web-time",
@@ -7192,19 +7248,20 @@ dependencies = [
[[package]]
name = "quinn-proto"
-version = "0.11.11"
+version = "0.11.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bcbafbbdbb0f638fe3f35f3c56739f77a8a1d070cb25603226c83339b391472b"
+checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31"
dependencies = [
"bytes",
- "getrandom 0.3.2",
- "rand 0.9.1",
+ "getrandom 0.3.4",
+ "lru-slab",
+ "rand 0.9.2",
"ring",
"rustc-hash 2.1.1",
- "rustls 0.23.27",
+ "rustls 0.23.35",
"rustls-pki-types",
"slab",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"tinyvec",
"tracing",
"web-time",
@@ -7212,32 +7269,32 @@ dependencies = [
[[package]]
name = "quinn-udp"
-version = "0.5.12"
+version = "0.5.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ee4e529991f949c5e25755532370b8af5d114acae52326361d68d47af64aa842"
+checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd"
dependencies = [
"cfg_aliases",
"libc",
"once_cell",
- "socket2",
+ "socket2 0.6.1",
"tracing",
- "windows-sys 0.59.0",
+ "windows-sys 0.60.2",
]
[[package]]
name = "quote"
-version = "1.0.40"
+version = "1.0.42"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
+checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f"
dependencies = [
"proc-macro2",
]
[[package]]
name = "r-efi"
-version = "5.2.0"
+version = "5.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5"
+checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
[[package]]
name = "r2d2"
@@ -7246,7 +7303,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "51de85fb3fb6524929c8a2eb85e6b6d363de4e8c48f9e2c2eac4944abc181c93"
dependencies = [
"log",
- "parking_lot 0.12.3",
+ "parking_lot",
"scheduled-thread-pool",
]
@@ -7260,18 +7317,6 @@ dependencies = [
"rusqlite",
]
-[[package]]
-name = "radium"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "def50a86306165861203e7f84ecffbbdfdea79f0e51039b33de1e952358c47ac"
-
-[[package]]
-name = "radium"
-version = "0.6.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb"
-
[[package]]
name = "radium"
version = "0.7.0"
@@ -7292,12 +7337,13 @@ dependencies = [
[[package]]
name = "rand"
-version = "0.9.1"
+version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97"
+checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
dependencies = [
"rand_chacha 0.9.0",
"rand_core 0.9.3",
+ "serde",
]
[[package]]
@@ -7335,7 +7381,8 @@ version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
dependencies = [
- "getrandom 0.3.2",
+ "getrandom 0.3.4",
+ "serde",
]
[[package]]
@@ -7348,10 +7395,19 @@ dependencies = [
]
[[package]]
-name = "rayon"
-version = "1.10.0"
+name = "rand_xorshift"
+version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
+checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a"
+dependencies = [
+ "rand_core 0.9.3",
+]
+
+[[package]]
+name = "rayon"
+version = "1.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f"
dependencies = [
"either",
"rayon-core",
@@ -7359,9 +7415,9 @@ dependencies = [
[[package]]
name = "rayon-core"
-version = "1.12.1"
+version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
+checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91"
dependencies = [
"crossbeam-deque",
"crossbeam-utils",
@@ -7382,29 +7438,20 @@ dependencies = [
[[package]]
name = "redb"
-version = "2.5.0"
+version = "2.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "34bc6763177194266fc3773e2b2bb3693f7b02fdf461e285aa33202e3164b74e"
+checksum = "8eca1e9d98d5a7e9002d0013e18d5a9b000aee942eb134883a82f06ebffb6c01"
dependencies = [
"libc",
]
[[package]]
name = "redox_syscall"
-version = "0.2.16"
+version = "0.5.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
+checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
dependencies = [
- "bitflags 1.3.2",
-]
-
-[[package]]
-name = "redox_syscall"
-version = "0.5.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af"
-dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.10.0",
]
[[package]]
@@ -7418,86 +7465,91 @@ dependencies = [
"thiserror 1.0.69",
]
+[[package]]
+name = "ref-cast"
+version = "1.0.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d"
+dependencies = [
+ "ref-cast-impl",
+]
+
+[[package]]
+name = "ref-cast-impl"
+version = "1.0.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.110",
+]
+
[[package]]
name = "regex"
-version = "1.11.1"
+version = "1.12.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
+checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4"
dependencies = [
"aho-corasick",
"memchr",
- "regex-automata 0.4.9",
- "regex-syntax 0.8.5",
+ "regex-automata",
+ "regex-syntax",
]
[[package]]
name = "regex-automata"
-version = "0.1.10"
+version = "0.4.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
-dependencies = [
- "regex-syntax 0.6.29",
-]
-
-[[package]]
-name = "regex-automata"
-version = "0.4.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
+checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c"
dependencies = [
"aho-corasick",
"memchr",
- "regex-syntax 0.8.5",
+ "regex-syntax",
]
[[package]]
name = "regex-syntax"
-version = "0.6.29"
+version = "0.8.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
-
-[[package]]
-name = "regex-syntax"
-version = "0.8.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
+checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58"
[[package]]
name = "reqwest"
-version = "0.11.27"
+version = "0.12.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62"
+checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f"
dependencies = [
- "base64 0.21.7",
+ "base64 0.22.1",
"bytes",
- "encoding_rs",
+ "futures-channel",
"futures-core",
"futures-util",
- "h2 0.3.26",
- "http 0.2.12",
- "http-body 0.4.6",
- "hyper 0.14.32",
+ "http 1.3.1",
+ "http-body 1.0.1",
+ "http-body-util",
+ "hyper 1.8.1",
"hyper-rustls",
"hyper-tls",
- "ipnet",
+ "hyper-util",
"js-sys",
"log",
- "mime",
"native-tls",
- "once_cell",
"percent-encoding",
"pin-project-lite",
- "rustls 0.21.12",
- "rustls-pemfile 1.0.4",
+ "quinn",
+ "rustls 0.23.35",
+ "rustls-pki-types",
"serde",
"serde_json",
"serde_urlencoded",
"sync_wrapper",
- "system-configuration 0.5.1",
"tokio",
"tokio-native-tls",
- "tokio-rustls 0.24.1",
+ "tokio-rustls 0.26.4",
"tokio-util",
+ "tower 0.5.2",
+ "tower-http",
"tower-service",
"url",
"wasm-bindgen",
@@ -7505,14 +7557,13 @@ dependencies = [
"wasm-streams",
"web-sys",
"webpki-roots",
- "winreg",
]
[[package]]
name = "reqwest-eventsource"
-version = "0.5.0"
+version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f529a5ff327743addc322af460761dff5b50e0c826b9e6ac44c3195c50bb2026"
+checksum = "632c55746dbb44275691640e7b40c907c16a2dc1a5842aa98aaec90da6ec6bde"
dependencies = [
"eventsource-stream",
"futures-core",
@@ -7526,20 +7577,9 @@ dependencies = [
[[package]]
name = "resolv-conf"
-version = "0.7.3"
+version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc7c8f7f733062b66dc1c63f9db168ac0b97a9210e247fa90fdc9ad08f51b302"
-
-[[package]]
-name = "rfc6979"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb"
-dependencies = [
- "crypto-bigint 0.4.9",
- "hmac 0.12.1",
- "zeroize",
-]
+checksum = "1e061d1b48cb8d38042de4ae0a7a6401009d6143dc80d2e2d6f31f0bdd6470c7"
[[package]]
name = "rfc6979"
@@ -7565,15 +7605,6 @@ dependencies = [
"windows-sys 0.52.0",
]
-[[package]]
-name = "ripemd"
-version = "0.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f"
-dependencies = [
- "digest 0.10.7",
-]
-
[[package]]
name = "rlp"
version = "0.5.2"
@@ -7584,17 +7615,6 @@ dependencies = [
"rustc-hex",
]
-[[package]]
-name = "rlp-derive"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 1.0.109",
-]
-
[[package]]
name = "rpassword"
version = "5.0.1"
@@ -7634,28 +7654,29 @@ dependencies = [
[[package]]
name = "ruint"
-version = "1.14.0"
+version = "1.17.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "78a46eb779843b2c4f21fac5773e25d6d5b7c8f0922876c91541790d2ca27eef"
+checksum = "c141e807189ad38a07276942c6623032d3753c8859c146104ac2e4d68865945a"
dependencies = [
"alloy-rlp",
"arbitrary",
"ark-ff 0.3.0",
"ark-ff 0.4.2",
+ "ark-ff 0.5.0",
"bytes",
"fastrlp 0.3.1",
"fastrlp 0.4.0",
"num-bigint",
"num-integer",
"num-traits",
- "parity-scale-codec 3.7.4",
- "primitive-types 0.12.2",
+ "parity-scale-codec",
+ "primitive-types",
"proptest",
"rand 0.8.5",
- "rand 0.9.1",
+ "rand 0.9.2",
"rlp",
"ruint-macro",
- "serde",
+ "serde_core",
"valuable",
"zeroize",
]
@@ -7682,24 +7703,21 @@ dependencies = [
[[package]]
name = "rust_eth_kzg"
-version = "0.5.4"
+version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f83b5559e1dcd3f7721838909288faf4500fb466eff98eac99b67ac04335b93"
+checksum = "1522b7a740cd7f5bc52ea49863618511c8de138dcdf3f8a80b15b3f764942a5b"
dependencies = [
- "crate_crypto_internal_eth_kzg_bls12_381",
- "crate_crypto_internal_eth_kzg_erasure_codes",
- "crate_crypto_kzg_multi_open_fk20",
+ "eip4844",
+ "ekzg-bls12-381",
+ "ekzg-erasure-codes",
+ "ekzg-multi-open",
+ "ekzg-serialization",
+ "ekzg-trusted-setup",
"hex",
"serde",
"serde_json",
]
-[[package]]
-name = "rustc-demangle"
-version = "0.1.24"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
-
[[package]]
name = "rustc-hash"
version = "1.1.0"
@@ -7733,7 +7751,7 @@ version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
dependencies = [
- "semver 1.0.26",
+ "semver 1.0.27",
]
[[package]]
@@ -7745,56 +7763,30 @@ dependencies = [
"nom",
]
-[[package]]
-name = "rustix"
-version = "0.36.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "305efbd14fde4139eb501df5f136994bb520b033fa9fbdce287507dc23b8c7ed"
-dependencies = [
- "bitflags 1.3.2",
- "errno",
- "io-lifetimes",
- "libc",
- "linux-raw-sys 0.1.4",
- "windows-sys 0.45.0",
-]
-
[[package]]
name = "rustix"
version = "0.38.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.10.0",
"errno",
"libc",
"linux-raw-sys 0.4.15",
- "windows-sys 0.59.0",
+ "windows-sys 0.52.0",
]
[[package]]
name = "rustix"
-version = "1.0.7"
+version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266"
+checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e"
dependencies = [
- "bitflags 2.9.0",
+ "bitflags 2.10.0",
"errno",
"libc",
- "linux-raw-sys 0.9.4",
- "windows-sys 0.59.0",
-]
-
-[[package]]
-name = "rustls"
-version = "0.21.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e"
-dependencies = [
- "log",
- "ring",
- "rustls-webpki 0.101.7",
- "sct",
+ "linux-raw-sys 0.11.0",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -7813,25 +7805,29 @@ dependencies = [
[[package]]
name = "rustls"
-version = "0.23.27"
+version = "0.23.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "730944ca083c1c233a75c09f199e973ca499344a2b7ba9e755c457e86fb4a321"
+checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f"
dependencies = [
+ "log",
"once_cell",
"ring",
"rustls-pki-types",
- "rustls-webpki 0.103.2",
+ "rustls-webpki 0.103.8",
"subtle",
"zeroize",
]
[[package]]
-name = "rustls-pemfile"
-version = "1.0.4"
+name = "rustls-native-certs"
+version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
+checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923"
dependencies = [
- "base64 0.21.7",
+ "openssl-probe",
+ "rustls-pki-types",
+ "schannel",
+ "security-framework 3.5.1",
]
[[package]]
@@ -7845,24 +7841,14 @@ dependencies = [
[[package]]
name = "rustls-pki-types"
-version = "1.12.0"
+version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79"
+checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a"
dependencies = [
"web-time",
"zeroize",
]
-[[package]]
-name = "rustls-webpki"
-version = "0.101.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765"
-dependencies = [
- "ring",
- "untrusted",
-]
-
[[package]]
name = "rustls-webpki"
version = "0.102.8"
@@ -7876,9 +7862,9 @@ dependencies = [
[[package]]
name = "rustls-webpki"
-version = "0.103.2"
+version = "0.103.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7149975849f1abb3832b246010ef62ccc80d3a76169517ada7188252b9cfb437"
+checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52"
dependencies = [
"ring",
"rustls-pki-types",
@@ -7887,15 +7873,15 @@ dependencies = [
[[package]]
name = "rustversion"
-version = "1.0.20"
+version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2"
+checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
[[package]]
name = "rusty-fork"
-version = "0.3.0"
+version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f"
+checksum = "cc6bf79ff24e648f6da1f8d1f011e9cac26491b619e6b9280f2b47f1774e6ee2"
dependencies = [
"fnv",
"quick-error",
@@ -7923,6 +7909,8 @@ checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
[[package]]
name = "safe_arith"
version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b147bb6111014916d3ef9d4c85173124a8e12193a67f6176d67244afd558d6c1"
[[package]]
name = "salsa20"
@@ -7933,15 +7921,6 @@ dependencies = [
"cipher 0.3.0",
]
-[[package]]
-name = "salsa20"
-version = "0.10.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213"
-dependencies = [
- "cipher 0.4.4",
-]
-
[[package]]
name = "same-file"
version = "1.0.6"
@@ -7951,37 +7930,13 @@ dependencies = [
"winapi-util",
]
-[[package]]
-name = "scale-info"
-version = "2.11.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b"
-dependencies = [
- "cfg-if",
- "derive_more 1.0.0",
- "parity-scale-codec 3.7.4",
- "scale-info-derive",
-]
-
-[[package]]
-name = "scale-info-derive"
-version = "2.11.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf"
-dependencies = [
- "proc-macro-crate 3.3.0",
- "proc-macro2",
- "quote",
- "syn 2.0.101",
-]
-
[[package]]
name = "schannel"
-version = "0.1.27"
+version = "0.1.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d"
+checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1"
dependencies = [
- "windows-sys 0.59.0",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -7990,7 +7945,31 @@ version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3cbc66816425a074528352f5789333ecff06ca41b36b0b0efdfbb29edc391a19"
dependencies = [
- "parking_lot 0.12.3",
+ "parking_lot",
+]
+
+[[package]]
+name = "schemars"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f"
+dependencies = [
+ "dyn-clone",
+ "ref-cast",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "schemars"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289"
+dependencies = [
+ "dyn-clone",
+ "ref-cast",
+ "serde",
+ "serde_json",
]
[[package]]
@@ -8013,68 +7992,67 @@ checksum = "879588d8f90906e73302547e20fffefdd240eb3e0e744e142321f5d49dea0518"
dependencies = [
"hmac 0.11.0",
"pbkdf2 0.8.0",
- "salsa20 0.8.1",
+ "salsa20",
"sha2 0.9.9",
]
-[[package]]
-name = "scrypt"
-version = "0.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d"
-dependencies = [
- "hmac 0.12.1",
- "pbkdf2 0.11.0",
- "salsa20 0.10.2",
- "sha2 0.10.9",
-]
-
-[[package]]
-name = "sct"
-version = "0.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414"
-dependencies = [
- "ring",
- "untrusted",
-]
-
-[[package]]
-name = "sec1"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928"
-dependencies = [
- "base16ct 0.1.1",
- "der 0.6.1",
- "generic-array 0.14.7",
- "pkcs8 0.9.0",
- "subtle",
- "zeroize",
-]
-
[[package]]
name = "sec1"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc"
dependencies = [
- "base16ct 0.2.0",
- "der 0.7.10",
- "generic-array 0.14.7",
- "pkcs8 0.10.2",
+ "base16ct",
+ "der",
+ "generic-array",
+ "pkcs8",
+ "serdect",
"subtle",
"zeroize",
]
+[[package]]
+name = "secp256k1"
+version = "0.30.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252"
+dependencies = [
+ "bitcoin_hashes",
+ "rand 0.8.5",
+ "secp256k1-sys",
+ "serde",
+]
+
+[[package]]
+name = "secp256k1-sys"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9"
+dependencies = [
+ "cc",
+]
+
[[package]]
name = "security-framework"
version = "2.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
dependencies = [
- "bitflags 2.9.0",
- "core-foundation",
+ "bitflags 2.10.0",
+ "core-foundation 0.9.4",
+ "core-foundation-sys",
+ "libc",
+ "security-framework-sys",
+]
+
+[[package]]
+name = "security-framework"
+version = "3.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef"
+dependencies = [
+ "bitflags 2.10.0",
+ "core-foundation 0.10.1",
"core-foundation-sys",
"libc",
"security-framework-sys",
@@ -8082,9 +8060,9 @@ dependencies = [
[[package]]
name = "security-framework-sys"
-version = "2.14.0"
+version = "2.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32"
+checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0"
dependencies = [
"core-foundation-sys",
"libc",
@@ -8101,11 +8079,12 @@ dependencies = [
[[package]]
name = "semver"
-version = "1.0.26"
+version = "1.0.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0"
+checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2"
dependencies = [
"serde",
+ "serde_core",
]
[[package]]
@@ -8117,15 +8096,11 @@ dependencies = [
"pest",
]
-[[package]]
-name = "send_wrapper"
-version = "0.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73"
-
[[package]]
name = "sensitive_url"
version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb7b0221fa9905eec4163dbf7660b1876cc95663af1deddc3e19ebe49167c58c"
dependencies = [
"serde",
"url",
@@ -8133,34 +8108,14 @@ dependencies = [
[[package]]
name = "serde"
-version = "1.0.219"
+version = "1.0.228"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
+checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
dependencies = [
+ "serde_core",
"serde_derive",
]
-[[package]]
-name = "serde-aux"
-version = "4.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "207f67b28fe90fb596503a9bf0bf1ea5e831e21307658e177c5dfcdfc3ab8a0a"
-dependencies = [
- "serde",
- "serde-value",
- "serde_json",
-]
-
-[[package]]
-name = "serde-value"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c"
-dependencies = [
- "ordered-float",
- "serde",
-]
-
[[package]]
name = "serde_array_query"
version = "0.1.0"
@@ -8172,26 +8127,36 @@ dependencies = [
]
[[package]]
-name = "serde_derive"
-version = "1.0.219"
+name = "serde_core"
+version = "1.0.228"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
+checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.228"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
name = "serde_json"
-version = "1.0.140"
+version = "1.0.145"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373"
+checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c"
dependencies = [
"itoa",
"memchr",
"ryu",
"serde",
+ "serde_core",
]
[[package]]
@@ -8202,7 +8167,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
@@ -8217,19 +8182,60 @@ dependencies = [
"serde",
]
+[[package]]
+name = "serde_with"
+version = "3.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "10574371d41b0d9b2cff89418eda27da52bcaff2cc8741db26382a77c29131f1"
+dependencies = [
+ "base64 0.22.1",
+ "chrono",
+ "hex",
+ "indexmap 1.9.3",
+ "indexmap 2.12.0",
+ "schemars 0.9.0",
+ "schemars 1.1.0",
+ "serde_core",
+ "serde_json",
+ "serde_with_macros",
+ "time",
+]
+
+[[package]]
+name = "serde_with_macros"
+version = "3.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08a72d8216842fdd57820dc78d840bef99248e35fb2554ff923319e60f2d686b"
+dependencies = [
+ "darling 0.21.3",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.110",
+]
+
[[package]]
name = "serde_yaml"
version = "0.9.34+deprecated"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
dependencies = [
- "indexmap 2.9.0",
+ "indexmap 2.12.0",
"itoa",
"ryu",
"serde",
"unsafe-libyaml",
]
+[[package]]
+name = "serdect"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177"
+dependencies = [
+ "base16ct",
+ "serde",
+]
+
[[package]]
name = "sha1"
version = "0.10.6"
@@ -8241,18 +8247,6 @@ dependencies = [
"digest 0.10.7",
]
-[[package]]
-name = "sha2"
-version = "0.8.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69"
-dependencies = [
- "block-buffer 0.7.3",
- "digest 0.8.1",
- "fake-simd",
- "opaque-debug 0.2.3",
-]
-
[[package]]
name = "sha2"
version = "0.9.9"
@@ -8263,7 +8257,7 @@ dependencies = [
"cfg-if",
"cpufeatures",
"digest 0.9.0",
- "opaque-debug 0.3.1",
+ "opaque-debug",
]
[[package]]
@@ -8277,18 +8271,6 @@ dependencies = [
"digest 0.10.7",
]
-[[package]]
-name = "sha3"
-version = "0.9.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809"
-dependencies = [
- "block-buffer 0.9.0",
- "digest 0.9.0",
- "keccak",
- "opaque-debug 0.3.1",
-]
-
[[package]]
name = "sha3"
version = "0.10.8"
@@ -8326,23 +8308,13 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
[[package]]
name = "signal-hook-registry"
-version = "1.4.5"
+version = "1.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410"
+checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b"
dependencies = [
"libc",
]
-[[package]]
-name = "signature"
-version = "1.6.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c"
-dependencies = [
- "digest 0.10.7",
- "rand_core 0.6.4",
-]
-
[[package]]
name = "signature"
version = "2.2.0"
@@ -8357,18 +8329,26 @@ dependencies = [
name = "signing_method"
version = "0.1.0"
dependencies = [
+ "bls",
"eth2_keystore",
"ethereum_serde_utils",
"lockfile",
- "parking_lot 0.12.3",
+ "parking_lot",
"reqwest",
"serde",
"task_executor",
+ "tracing",
"types",
"url",
"validator_metrics",
]
+[[package]]
+name = "simd-adler32"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
+
[[package]]
name = "similar"
version = "2.7.0"
@@ -8383,7 +8363,7 @@ checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb"
dependencies = [
"num-bigint",
"num-traits",
- "thiserror 2.0.12",
+ "thiserror 2.0.17",
"time",
]
@@ -8392,52 +8372,50 @@ name = "simulator"
version = "0.2.0"
dependencies = [
"clap",
- "env_logger 0.9.3",
"environment",
- "eth2_network_config",
"execution_layer",
"futures",
"kzg",
"logging",
"node_test_rig",
- "parking_lot 0.12.3",
+ "parking_lot",
"rayon",
"sensitive_url",
"serde_json",
"tokio",
"tracing",
"tracing-subscriber",
+ "typenum",
"types",
]
[[package]]
name = "slab"
-version = "0.4.9"
+version = "0.4.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
-dependencies = [
- "autocfg",
-]
+checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589"
[[package]]
name = "slasher"
version = "0.1.0"
dependencies = [
"bincode",
+ "bls",
"byteorder",
- "derivative",
+ "educe",
"ethereum_ssz",
"ethereum_ssz_derive",
"filesystem",
+ "fixed_bytes",
"flate2",
"libmdbx",
"lmdb-rkv",
"lmdb-rkv-sys",
- "lru",
+ "lru 0.12.5",
"maplit",
"metrics",
- "parking_lot 0.12.3",
- "rand 0.8.5",
+ "parking_lot",
+ "rand 0.9.2",
"rayon",
"redb",
"safe_arith",
@@ -8448,6 +8426,7 @@ dependencies = [
"tracing",
"tree_hash",
"tree_hash_derive",
+ "typenum",
"types",
]
@@ -8473,8 +8452,11 @@ name = "slashing_protection"
version = "0.1.0"
dependencies = [
"arbitrary",
+ "bls",
+ "eip_3076",
"ethereum_serde_utils",
"filesystem",
+ "fixed_bytes",
"r2d2",
"r2d2_sqlite",
"rayon",
@@ -8491,17 +8473,18 @@ name = "slot_clock"
version = "0.2.0"
dependencies = [
"metrics",
- "parking_lot 0.12.3",
+ "parking_lot",
"types",
]
[[package]]
name = "smallvec"
-version = "1.15.0"
+version = "1.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9"
+checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
dependencies = [
"arbitrary",
+ "serde",
]
[[package]]
@@ -8529,30 +8512,30 @@ dependencies = [
[[package]]
name = "socket2"
-version = "0.5.9"
+version = "0.5.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef"
+checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678"
dependencies = [
"libc",
"windows-sys 0.52.0",
]
+[[package]]
+name = "socket2"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881"
+dependencies = [
+ "libc",
+ "windows-sys 0.60.2",
+]
+
[[package]]
name = "spin"
version = "0.9.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
-[[package]]
-name = "spki"
-version = "0.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b"
-dependencies = [
- "base64ct",
- "der 0.6.1",
-]
-
[[package]]
name = "spki"
version = "0.7.3"
@@ -8560,19 +8543,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d"
dependencies = [
"base64ct",
- "der 0.7.10",
+ "der",
]
[[package]]
name = "ssz_types"
-version = "0.10.1"
+version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dad0fa7e9a85c06d0a6ba5100d733fff72e231eb6db2d86078225cf716fd2d95"
+checksum = "1fc20a89bab2dabeee65e9c9eb96892dc222c23254b401e1319b85efd852fa31"
dependencies = [
"arbitrary",
+ "context_deserialize",
+ "educe",
"ethereum_serde_utils",
"ethereum_ssz",
- "itertools 0.13.0",
+ "itertools 0.14.0",
"serde",
"serde_derive",
"smallvec",
@@ -8582,9 +8567,9 @@ dependencies = [
[[package]]
name = "stable_deref_trait"
-version = "1.2.0"
+version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
[[package]]
name = "state_processing"
@@ -8593,24 +8578,27 @@ dependencies = [
"arbitrary",
"beacon_chain",
"bls",
- "derivative",
- "env_logger 0.9.3",
+ "educe",
"ethereum_hashing",
"ethereum_ssz",
"ethereum_ssz_derive",
+ "fixed_bytes",
"int_to_bytes",
"integer-sqrt",
"itertools 0.10.5",
"merkle_proof",
"metrics",
- "rand 0.8.5",
+ "milhouse",
+ "rand 0.9.2",
"rayon",
"safe_arith",
"smallvec",
"ssz_types",
"test_random_derive",
"tokio",
+ "tracing",
"tree_hash",
+ "typenum",
"types",
]
@@ -8619,7 +8607,9 @@ name = "state_transition_vectors"
version = "0.1.0"
dependencies = [
"beacon_chain",
+ "bls",
"ethereum_ssz",
+ "fixed_bytes",
"state_processing",
"tokio",
"types",
@@ -8642,23 +8632,27 @@ dependencies = [
"directory",
"ethereum_ssz",
"ethereum_ssz_derive",
+ "fixed_bytes",
"itertools 0.10.5",
"leveldb",
"logging",
- "lru",
+ "lru 0.12.5",
"metrics",
- "parking_lot 0.12.3",
- "rand 0.8.5",
+ "milhouse",
+ "parking_lot",
+ "rand 0.9.2",
"redb",
"safe_arith",
"serde",
"smallvec",
+ "ssz_types",
"state_processing",
"strum",
"superstruct",
"tempfile",
"tracing",
"tracing-subscriber",
+ "typenum",
"types",
"xdelta3",
"zstd 0.13.3",
@@ -8678,24 +8672,23 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
[[package]]
name = "strum"
-version = "0.24.1"
+version = "0.27.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f"
+checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf"
dependencies = [
"strum_macros",
]
[[package]]
name = "strum_macros"
-version = "0.24.3"
+version = "0.27.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59"
+checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7"
dependencies = [
- "heck 0.4.1",
+ "heck",
"proc-macro2",
"quote",
- "rustversion",
- "syn 1.0.109",
+ "syn 2.0.110",
]
[[package]]
@@ -8706,16 +8699,16 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
[[package]]
name = "superstruct"
-version = "0.8.0"
+version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf0f31f730ad9e579364950e10d6172b4a9bd04b447edf5988b066a860cc340e"
+checksum = "3b986e4a629907f20a2c2a639a75bc22a8b5d99b444e0d83c395f4cb309022bf"
dependencies = [
- "darling 0.13.4",
- "itertools 0.10.5",
+ "darling 0.20.11",
+ "itertools 0.13.0",
"proc-macro2",
"quote",
"smallvec",
- "syn 1.0.109",
+ "syn 2.0.110",
]
[[package]]
@@ -8741,9 +8734,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "2.0.101"
+version = "2.0.110"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf"
+checksum = "a99801b5bd34ede4cf3fc688c5919368fea4e4814a4664359503e6015b280aea"
dependencies = [
"proc-macro2",
"quote",
@@ -8751,10 +8744,25 @@ dependencies = [
]
[[package]]
-name = "sync_wrapper"
-version = "0.1.2"
+name = "syn-solidity"
+version = "1.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
+checksum = "ff790eb176cc81bb8936aed0f7b9f14fc4670069a2d371b3e3b0ecce908b2cb3"
+dependencies = [
+ "paste",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.110",
+]
+
+[[package]]
+name = "sync_wrapper"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263"
+dependencies = [
+ "futures-core",
+]
[[package]]
name = "synstructure"
@@ -8764,7 +8772,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
@@ -8782,36 +8790,15 @@ dependencies = [
"winapi",
]
-[[package]]
-name = "system-configuration"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7"
-dependencies = [
- "bitflags 1.3.2",
- "core-foundation",
- "system-configuration-sys 0.5.0",
-]
-
[[package]]
name = "system-configuration"
version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
dependencies = [
- "bitflags 2.9.0",
- "core-foundation",
- "system-configuration-sys 0.6.0",
-]
-
-[[package]]
-name = "system-configuration-sys"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9"
-dependencies = [
- "core-foundation-sys",
- "libc",
+ "bitflags 2.10.0",
+ "core-foundation 0.9.4",
+ "system-configuration-sys",
]
[[package]]
@@ -8829,7 +8816,9 @@ name = "system_health"
version = "0.1.0"
dependencies = [
"lighthouse_network",
- "parking_lot 0.12.3",
+ "metrics",
+ "network_utils",
+ "parking_lot",
"serde",
"sysinfo",
"types",
@@ -8854,12 +8843,6 @@ dependencies = [
"static_assertions",
]
-[[package]]
-name = "target_info"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c63f48baada5c52e65a29eef93ab4f8982681b67f9e8d29c7b05abcfec2b9ffe"
-
[[package]]
name = "task_executor"
version = "0.1.0"
@@ -8867,48 +8850,47 @@ dependencies = [
"async-channel 1.9.0",
"futures",
"metrics",
+ "num_cpus",
+ "rayon",
"tokio",
"tracing",
]
[[package]]
name = "tempfile"
-version = "3.19.1"
+version = "3.23.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf"
+checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16"
dependencies = [
"fastrand",
- "getrandom 0.3.2",
+ "getrandom 0.3.4",
"once_cell",
- "rustix 1.0.7",
- "windows-sys 0.59.0",
-]
-
-[[package]]
-name = "termcolor"
-version = "1.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
-dependencies = [
- "winapi-util",
+ "rustix 1.1.2",
+ "windows-sys 0.52.0",
]
[[package]]
name = "terminal_size"
-version = "0.4.2"
+version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "45c6481c4829e4cc63825e62c49186a34538b7b2750b73b266581ffb612fb5ed"
+checksum = "60b8cb979cb11c32ce1603f8137b22262a9d131aaa5c37b5678025f22b8becd0"
dependencies = [
- "rustix 1.0.7",
- "windows-sys 0.59.0",
+ "rustix 1.1.2",
+ "windows-sys 0.60.2",
]
+[[package]]
+name = "termtree"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f50febec83f5ee1df3015341d8bd429f2d1cc62bcba7ea2076759d315084683"
+
[[package]]
name = "test_random_derive"
version = "0.2.0"
dependencies = [
"quote",
- "syn 1.0.109",
+ "syn 2.0.110",
]
[[package]]
@@ -8922,11 +8904,11 @@ dependencies = [
[[package]]
name = "thiserror"
-version = "2.0.12"
+version = "2.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708"
+checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8"
dependencies = [
- "thiserror-impl 2.0.12",
+ "thiserror-impl 2.0.17",
]
[[package]]
@@ -8937,28 +8919,27 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
name = "thiserror-impl"
-version = "2.0.12"
+version = "2.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d"
+checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
name = "thread_local"
-version = "1.1.8"
+version = "1.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
+checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185"
dependencies = [
"cfg-if",
- "once_cell",
]
[[package]]
@@ -8972,9 +8953,9 @@ dependencies = [
[[package]]
name = "tikv-jemalloc-ctl"
-version = "0.6.0"
+version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f21f216790c8df74ce3ab25b534e0718da5a1916719771d3fec23315c99e468b"
+checksum = "661f1f6a57b3a36dc9174a2c10f19513b4866816e13425d3e418b11cc37bc24c"
dependencies = [
"libc",
"paste",
@@ -8983,9 +8964,9 @@ dependencies = [
[[package]]
name = "tikv-jemalloc-sys"
-version = "0.6.0+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7"
+version = "0.6.1+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd3c60906412afa9c2b5b5a48ca6a5abe5736aec9eb48ad05037a677e52e4e2d"
+checksum = "cd8aa5b2ab86a2cefa406d889139c162cbb230092f7d1d7cbc1716405d852a3b"
dependencies = [
"cc",
"libc",
@@ -8993,9 +8974,9 @@ dependencies = [
[[package]]
name = "tikv-jemallocator"
-version = "0.6.0"
+version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4cec5ff18518d81584f477e9bfdf957f5bb0979b0bac3af4ca30b5b3ae2d2865"
+checksum = "0359b4327f954e0567e69fb191cf1436617748813819c94b8cd4a431422d053a"
dependencies = [
"libc",
"tikv-jemalloc-sys",
@@ -9003,9 +8984,9 @@ dependencies = [
[[package]]
name = "time"
-version = "0.3.41"
+version = "0.3.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40"
+checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d"
dependencies = [
"deranged",
"itoa",
@@ -9018,15 +8999,15 @@ dependencies = [
[[package]]
name = "time-core"
-version = "0.1.4"
+version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c"
+checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b"
[[package]]
name = "time-macros"
-version = "0.2.22"
+version = "0.2.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49"
+checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3"
dependencies = [
"num-conv",
"time-core",
@@ -9073,9 +9054,9 @@ dependencies = [
[[package]]
name = "tinystr"
-version = "0.7.6"
+version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f"
+checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869"
dependencies = [
"displaydoc",
"zerovec",
@@ -9093,9 +9074,9 @@ dependencies = [
[[package]]
name = "tinyvec"
-version = "1.9.0"
+version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71"
+checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa"
dependencies = [
"tinyvec_macros",
]
@@ -9108,41 +9089,31 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]]
name = "tokio"
-version = "1.45.0"
+version = "1.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2513ca694ef9ede0fb23fe71a4ee4107cb102b9dc1930f6d0fd77aae068ae165"
+checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408"
dependencies = [
- "backtrace",
"bytes",
"libc",
"mio",
- "parking_lot 0.12.3",
+ "parking_lot",
"pin-project-lite",
"signal-hook-registry",
- "socket2",
+ "socket2 0.6.1",
"tokio-macros",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "tokio-io-timeout"
-version = "1.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf"
-dependencies = [
- "pin-project-lite",
- "tokio",
+ "tracing",
+ "windows-sys 0.61.2",
]
[[package]]
name = "tokio-macros"
-version = "2.5.0"
+version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8"
+checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
@@ -9155,16 +9126,6 @@ dependencies = [
"tokio",
]
-[[package]]
-name = "tokio-rustls"
-version = "0.24.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081"
-dependencies = [
- "rustls 0.21.12",
- "tokio",
-]
-
[[package]]
name = "tokio-rustls"
version = "0.25.0"
@@ -9176,6 +9137,16 @@ dependencies = [
"tokio",
]
+[[package]]
+name = "tokio-rustls"
+version = "0.26.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61"
+dependencies = [
+ "rustls 0.23.35",
+ "tokio",
+]
+
[[package]]
name = "tokio-stream"
version = "0.1.17"
@@ -9190,9 +9161,9 @@ dependencies = [
[[package]]
name = "tokio-util"
-version = "0.7.15"
+version = "0.7.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df"
+checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594"
dependencies = [
"bytes",
"futures-core",
@@ -9203,43 +9174,157 @@ dependencies = [
"tokio",
]
-[[package]]
-name = "toml"
-version = "0.5.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
-dependencies = [
- "serde",
-]
-
[[package]]
name = "toml_datetime"
-version = "0.6.9"
+version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3"
-
-[[package]]
-name = "toml_edit"
-version = "0.19.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
+checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533"
dependencies = [
- "indexmap 2.9.0",
- "toml_datetime",
- "winnow 0.5.40",
+ "serde_core",
]
[[package]]
name = "toml_edit"
-version = "0.22.26"
+version = "0.23.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e"
+checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d"
dependencies = [
- "indexmap 2.9.0",
+ "indexmap 2.12.0",
"toml_datetime",
- "winnow 0.7.10",
+ "toml_parser",
+ "winnow",
]
+[[package]]
+name = "toml_parser"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e"
+dependencies = [
+ "winnow",
+]
+
+[[package]]
+name = "tonic"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52"
+dependencies = [
+ "async-stream",
+ "async-trait",
+ "axum",
+ "base64 0.22.1",
+ "bytes",
+ "h2 0.4.12",
+ "http 1.3.1",
+ "http-body 1.0.1",
+ "http-body-util",
+ "hyper 1.8.1",
+ "hyper-timeout",
+ "hyper-util",
+ "percent-encoding",
+ "pin-project",
+ "prost",
+ "socket2 0.5.10",
+ "tokio",
+ "tokio-stream",
+ "tower 0.4.13",
+ "tower-layer",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "tonic"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e581ba15a835f4d9ea06c55ab1bd4dce26fc53752c69a04aac00703bfb49ba9"
+dependencies = [
+ "async-trait",
+ "base64 0.22.1",
+ "bytes",
+ "http 1.3.1",
+ "http-body 1.0.1",
+ "http-body-util",
+ "hyper 1.8.1",
+ "hyper-timeout",
+ "hyper-util",
+ "percent-encoding",
+ "pin-project",
+ "prost",
+ "rustls-native-certs",
+ "tokio",
+ "tokio-rustls 0.26.4",
+ "tokio-stream",
+ "tower 0.5.2",
+ "tower-layer",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "tower"
+version = "0.4.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
+dependencies = [
+ "futures-core",
+ "futures-util",
+ "indexmap 1.9.3",
+ "pin-project",
+ "pin-project-lite",
+ "rand 0.8.5",
+ "slab",
+ "tokio",
+ "tokio-util",
+ "tower-layer",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "tower"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9"
+dependencies = [
+ "futures-core",
+ "futures-util",
+ "indexmap 2.12.0",
+ "pin-project-lite",
+ "slab",
+ "sync_wrapper",
+ "tokio",
+ "tokio-util",
+ "tower-layer",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "tower-http"
+version = "0.6.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2"
+dependencies = [
+ "bitflags 2.10.0",
+ "bytes",
+ "futures-util",
+ "http 1.3.1",
+ "http-body 1.0.1",
+ "iri-string",
+ "pin-project-lite",
+ "tower 0.5.2",
+ "tower-layer",
+ "tower-service",
+]
+
+[[package]]
+name = "tower-layer"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
+
[[package]]
name = "tower-service"
version = "0.3.3"
@@ -9272,35 +9357,25 @@ dependencies = [
[[package]]
name = "tracing-attributes"
-version = "0.1.28"
+version = "0.1.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d"
+checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
name = "tracing-core"
-version = "0.1.33"
+version = "0.1.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c"
+checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678"
dependencies = [
"once_cell",
"valuable",
]
-[[package]]
-name = "tracing-futures"
-version = "0.2.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2"
-dependencies = [
- "pin-project",
- "tracing",
-]
-
[[package]]
name = "tracing-log"
version = "0.2.0"
@@ -9312,6 +9387,24 @@ dependencies = [
"tracing-core",
]
+[[package]]
+name = "tracing-opentelemetry"
+version = "0.31.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ddcf5959f39507d0d04d6413119c04f33b623f4f951ebcbdddddfad2d0623a9c"
+dependencies = [
+ "js-sys",
+ "once_cell",
+ "opentelemetry",
+ "opentelemetry_sdk",
+ "smallvec",
+ "tracing",
+ "tracing-core",
+ "tracing-log",
+ "tracing-subscriber",
+ "web-time",
+]
+
[[package]]
name = "tracing-serde"
version = "0.2.0"
@@ -9324,14 +9417,14 @@ dependencies = [
[[package]]
name = "tracing-subscriber"
-version = "0.3.19"
+version = "0.3.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008"
+checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5"
dependencies = [
"matchers",
"nu-ansi-term",
"once_cell",
- "regex",
+ "regex-automata",
"serde",
"serde_json",
"sharded-slab",
@@ -9345,9 +9438,9 @@ dependencies = [
[[package]]
name = "tree_hash"
-version = "0.9.1"
+version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c58eb0f518840670270d90d97ffee702d8662d9c5494870c9e1e9e0fa00f668"
+checksum = "2db21caa355767db4fd6129876e5ae278a8699f4a6959b1e3e7aff610b532d52"
dependencies = [
"alloy-primitives",
"ethereum_hashing",
@@ -9358,14 +9451,14 @@ dependencies = [
[[package]]
name = "tree_hash_derive"
-version = "0.9.1"
+version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "699e7fb6b3fdfe0c809916f251cf5132d64966858601695c3736630a87e7166a"
+checksum = "711cc655fcbb48384a87dc2bf641b991a15c5ad9afc3caa0b1ab1df3b436f70f"
dependencies = [
- "darling 0.20.11",
+ "darling 0.21.3",
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
@@ -9380,9 +9473,9 @@ dependencies = [
[[package]]
name = "triomphe"
-version = "0.1.14"
+version = "0.1.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef8f7726da4807b58ea5c96fdc122f80702030edc33b35aff9190a51148ccc85"
+checksum = "dd69c5aa8f924c7519d6372789a74eac5b94fb0f8fcf0d4a97eb0bfc3e785f39"
dependencies = [
"serde",
"stable_deref_trait",
@@ -9396,9 +9489,9 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
[[package]]
name = "typenum"
-version = "1.18.0"
+version = "1.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f"
+checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
[[package]]
name = "types"
@@ -9410,11 +9503,9 @@ dependencies = [
"beacon_chain",
"bls",
"compare_fields",
- "compare_fields_derive",
"context_deserialize",
- "context_deserialize_derive",
"criterion",
- "derivative",
+ "educe",
"eth2_interop_keypairs",
"ethereum_hashing",
"ethereum_serde_utils",
@@ -9429,10 +9520,10 @@ dependencies = [
"merkle_proof",
"metastruct",
"milhouse",
- "parking_lot 0.12.3",
+ "parking_lot",
"paste",
- "rand 0.8.5",
- "rand_xorshift",
+ "rand 0.9.2",
+ "rand_xorshift 0.4.0",
"rayon",
"regex",
"rpds",
@@ -9452,6 +9543,7 @@ dependencies = [
"tracing",
"tree_hash",
"tree_hash_derive",
+ "typenum",
]
[[package]]
@@ -9504,25 +9596,19 @@ checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539"
[[package]]
name = "unicode-ident"
-version = "1.0.18"
+version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
+checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
[[package]]
name = "unicode-normalization"
-version = "0.1.24"
+version = "0.1.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956"
+checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8"
dependencies = [
"tinyvec",
]
-[[package]]
-name = "unicode-segmentation"
-version = "1.12.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
-
[[package]]
name = "unicode-xid"
version = "0.2.6"
@@ -9568,31 +9654,18 @@ version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
-[[package]]
-name = "unused_port"
-version = "0.1.0"
-dependencies = [
- "lru_cache",
- "parking_lot 0.12.3",
-]
-
[[package]]
name = "url"
-version = "2.5.4"
+version = "2.5.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60"
+checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b"
dependencies = [
"form_urlencoded",
"idna",
"percent-encoding",
+ "serde",
]
-[[package]]
-name = "utf16_iter"
-version = "1.0.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246"
-
[[package]]
name = "utf8_iter"
version = "1.0.4"
@@ -9617,16 +9690,18 @@ dependencies = [
[[package]]
name = "uuid"
-version = "1.16.0"
+version = "1.18.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9"
+checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2"
dependencies = [
- "getrandom 0.3.2",
+ "getrandom 0.3.4",
+ "js-sys",
+ "wasm-bindgen",
]
[[package]]
name = "validator_client"
-version = "0.3.5"
+version = "8.0.1"
dependencies = [
"account_utils",
"beacon_node_fallback",
@@ -9639,12 +9714,12 @@ dependencies = [
"eth2",
"fdlimit",
"graffiti_file",
- "hyper 1.6.0",
+ "hyper 1.8.1",
"initialized_validators",
"lighthouse_validator_store",
"metrics",
"monitoring_api",
- "parking_lot 0.12.3",
+ "parking_lot",
"reqwest",
"sensitive_url",
"serde",
@@ -9666,12 +9741,12 @@ version = "0.1.0"
dependencies = [
"bls",
"deposit_contract",
- "derivative",
+ "educe",
"eth2_keystore",
"filesystem",
"hex",
"lockfile",
- "rand 0.8.5",
+ "rand 0.9.2",
"tempfile",
"tree_hash",
"types",
@@ -9692,6 +9767,7 @@ dependencies = [
"eth2_keystore",
"ethereum_serde_utils",
"filesystem",
+ "fixed_bytes",
"futures",
"graffiti_file",
"health_metrics",
@@ -9700,14 +9776,15 @@ dependencies = [
"lighthouse_validator_store",
"lighthouse_version",
"logging",
- "parking_lot 0.12.3",
- "rand 0.8.5",
+ "parking_lot",
+ "rand 0.9.2",
"sensitive_url",
"serde",
"serde_json",
"signing_method",
"slashing_protection",
"slot_clock",
+ "ssz_types",
"sysinfo",
"system_health",
"task_executor",
@@ -9715,6 +9792,7 @@ dependencies = [
"tokio",
"tokio-stream",
"tracing",
+ "typenum",
"types",
"url",
"validator_dir",
@@ -9735,7 +9813,7 @@ dependencies = [
"logging",
"malloc_utils",
"metrics",
- "parking_lot 0.12.3",
+ "parking_lot",
"serde",
"slot_clock",
"tracing",
@@ -9751,18 +9829,22 @@ name = "validator_manager"
version = "0.1.0"
dependencies = [
"account_utils",
+ "beacon_chain",
+ "bls",
"clap",
"clap_utils",
- "derivative",
+ "educe",
"environment",
"eth2",
"eth2_network_config",
"eth2_wallet",
"ethereum_serde_utils",
"hex",
+ "http_api",
"regex",
"serde",
"serde_json",
+ "slot_clock",
"tempfile",
"tokio",
"tree_hash",
@@ -9789,7 +9871,7 @@ dependencies = [
"futures",
"graffiti_file",
"logging",
- "parking_lot 0.12.3",
+ "parking_lot",
"safe_arith",
"slot_clock",
"task_executor",
@@ -9805,6 +9887,7 @@ dependencies = [
name = "validator_store"
version = "0.1.0"
dependencies = [
+ "bls",
"eth2",
"slashing_protection",
"types",
@@ -9892,7 +9975,7 @@ dependencies = [
"mime_guess",
"percent-encoding",
"pin-project",
- "rustls-pemfile 2.2.0",
+ "rustls-pemfile",
"scoped-tls",
"serde",
"serde_json",
@@ -9922,50 +10005,37 @@ dependencies = [
[[package]]
name = "wasi"
-version = "0.11.0+wasi-snapshot-preview1"
+version = "0.11.1+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
[[package]]
-name = "wasi"
-version = "0.14.2+wasi-0.2.4"
+name = "wasip2"
+version = "1.0.1+wasi-0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3"
+checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7"
dependencies = [
- "wit-bindgen-rt",
+ "wit-bindgen",
]
[[package]]
name = "wasm-bindgen"
-version = "0.2.100"
+version = "0.2.105"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
+checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60"
dependencies = [
"cfg-if",
"once_cell",
"rustversion",
"wasm-bindgen-macro",
-]
-
-[[package]]
-name = "wasm-bindgen-backend"
-version = "0.2.100"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
-dependencies = [
- "bumpalo",
- "log",
- "proc-macro2",
- "quote",
- "syn 2.0.101",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-futures"
-version = "0.4.50"
+version = "0.4.55"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61"
+checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0"
dependencies = [
"cfg-if",
"js-sys",
@@ -9976,9 +10046,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
-version = "0.2.100"
+version = "0.2.105"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
+checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -9986,22 +10056,22 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
-version = "0.2.100"
+version = "0.2.105"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
+checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc"
dependencies = [
+ "bumpalo",
"proc-macro2",
"quote",
- "syn 2.0.101",
- "wasm-bindgen-backend",
+ "syn 2.0.110",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-shared"
-version = "0.2.100"
+version = "0.2.105"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
+checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76"
dependencies = [
"unicode-ident",
]
@@ -10020,25 +10090,24 @@ dependencies = [
]
[[package]]
-name = "wasm-timer"
-version = "0.2.5"
+name = "wasmtimer"
+version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f"
+checksum = "1c598d6b99ea013e35844697fc4670d08339d5cda15588f193c6beedd12f644b"
dependencies = [
"futures",
"js-sys",
- "parking_lot 0.11.2",
+ "parking_lot",
"pin-utils",
+ "slab",
"wasm-bindgen",
- "wasm-bindgen-futures",
- "web-sys",
]
[[package]]
name = "web-sys"
-version = "0.3.77"
+version = "0.3.82"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
+checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -10060,21 +10129,24 @@ version = "0.1.0"
dependencies = [
"account_utils",
"async-channel 1.9.0",
+ "bls",
"environment",
"eth2",
"eth2_keystore",
"eth2_network_config",
+ "fixed_bytes",
"futures",
"initialized_validators",
"lighthouse_validator_store",
"logging",
- "parking_lot 0.12.3",
+ "parking_lot",
"reqwest",
"serde",
"serde_json",
"serde_yaml",
"slashing_protection",
"slot_clock",
+ "ssz_types",
"task_executor",
"tempfile",
"tokio",
@@ -10086,9 +10158,12 @@ dependencies = [
[[package]]
name = "webpki-roots"
-version = "0.25.4"
+version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1"
+checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e"
+dependencies = [
+ "rustls-pki-types",
+]
[[package]]
name = "which"
@@ -10110,9 +10185,9 @@ checksum = "c168940144dd21fd8046987c16a46a33d5fc84eec29ef9dcddc2ac9e31526b7c"
[[package]]
name = "widestring"
-version = "1.2.0"
+version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd7cf3379ca1aac9eea11fba24fd7e315d621f8dfe35c8d7d2be8b793726e07d"
+checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471"
[[package]]
name = "winapi"
@@ -10132,11 +10207,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
name = "winapi-util"
-version = "0.1.9"
+version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
+checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
dependencies = [
- "windows-sys 0.59.0",
+ "windows-sys 0.48.0",
]
[[package]]
@@ -10155,16 +10230,6 @@ dependencies = [
"windows-targets 0.52.6",
]
-[[package]]
-name = "windows"
-version = "0.58.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6"
-dependencies = [
- "windows-core 0.58.0",
- "windows-targets 0.52.6",
-]
-
[[package]]
name = "windows-acl"
version = "0.3.0"
@@ -10189,79 +10254,44 @@ dependencies = [
[[package]]
name = "windows-core"
-version = "0.58.0"
+version = "0.62.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99"
+checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb"
dependencies = [
- "windows-implement 0.58.0",
- "windows-interface 0.58.0",
- "windows-result 0.2.0",
- "windows-strings 0.1.0",
- "windows-targets 0.52.6",
-]
-
-[[package]]
-name = "windows-core"
-version = "0.61.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980"
-dependencies = [
- "windows-implement 0.60.0",
- "windows-interface 0.59.1",
+ "windows-implement",
+ "windows-interface",
"windows-link",
- "windows-result 0.3.2",
- "windows-strings 0.4.0",
+ "windows-result 0.4.1",
+ "windows-strings",
]
[[package]]
name = "windows-implement"
-version = "0.58.0"
+version = "0.60.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b"
+checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
-]
-
-[[package]]
-name = "windows-implement"
-version = "0.60.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
name = "windows-interface"
-version = "0.58.0"
+version = "0.59.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515"
+checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
-]
-
-[[package]]
-name = "windows-interface"
-version = "0.59.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
name = "windows-link"
-version = "0.1.1"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38"
+checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
[[package]]
name = "windows-result"
@@ -10274,50 +10304,22 @@ dependencies = [
[[package]]
name = "windows-result"
-version = "0.2.0"
+version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e"
-dependencies = [
- "windows-targets 0.52.6",
-]
-
-[[package]]
-name = "windows-result"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252"
+checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"
dependencies = [
"windows-link",
]
[[package]]
name = "windows-strings"
-version = "0.1.0"
+version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10"
-dependencies = [
- "windows-result 0.2.0",
- "windows-targets 0.52.6",
-]
-
-[[package]]
-name = "windows-strings"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97"
+checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
dependencies = [
"windows-link",
]
-[[package]]
-name = "windows-sys"
-version = "0.45.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
-dependencies = [
- "windows-targets 0.42.2",
-]
-
[[package]]
name = "windows-sys"
version = "0.48.0"
@@ -10346,18 +10348,21 @@ dependencies = [
]
[[package]]
-name = "windows-targets"
-version = "0.42.2"
+name = "windows-sys"
+version = "0.60.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
+checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
dependencies = [
- "windows_aarch64_gnullvm 0.42.2",
- "windows_aarch64_msvc 0.42.2",
- "windows_i686_gnu 0.42.2",
- "windows_i686_msvc 0.42.2",
- "windows_x86_64_gnu 0.42.2",
- "windows_x86_64_gnullvm 0.42.2",
- "windows_x86_64_msvc 0.42.2",
+ "windows-targets 0.53.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.61.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
+dependencies = [
+ "windows-link",
]
[[package]]
@@ -10384,7 +10389,7 @@ dependencies = [
"windows_aarch64_gnullvm 0.52.6",
"windows_aarch64_msvc 0.52.6",
"windows_i686_gnu 0.52.6",
- "windows_i686_gnullvm",
+ "windows_i686_gnullvm 0.52.6",
"windows_i686_msvc 0.52.6",
"windows_x86_64_gnu 0.52.6",
"windows_x86_64_gnullvm 0.52.6",
@@ -10392,10 +10397,21 @@ dependencies = [
]
[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.42.2"
+name = "windows-targets"
+version = "0.53.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
+checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
+dependencies = [
+ "windows-link",
+ "windows_aarch64_gnullvm 0.53.1",
+ "windows_aarch64_msvc 0.53.1",
+ "windows_i686_gnu 0.53.1",
+ "windows_i686_gnullvm 0.53.1",
+ "windows_i686_msvc 0.53.1",
+ "windows_x86_64_gnu 0.53.1",
+ "windows_x86_64_gnullvm 0.53.1",
+ "windows_x86_64_msvc 0.53.1",
+]
[[package]]
name = "windows_aarch64_gnullvm"
@@ -10410,10 +10426,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
[[package]]
-name = "windows_aarch64_msvc"
-version = "0.42.2"
+name = "windows_aarch64_gnullvm"
+version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
+checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
[[package]]
name = "windows_aarch64_msvc"
@@ -10428,10 +10444,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
[[package]]
-name = "windows_i686_gnu"
-version = "0.42.2"
+name = "windows_aarch64_msvc"
+version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
+checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
[[package]]
name = "windows_i686_gnu"
@@ -10445,6 +10461,12 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+[[package]]
+name = "windows_i686_gnu"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
+
[[package]]
name = "windows_i686_gnullvm"
version = "0.52.6"
@@ -10452,10 +10474,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
[[package]]
-name = "windows_i686_msvc"
-version = "0.42.2"
+name = "windows_i686_gnullvm"
+version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
+checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
[[package]]
name = "windows_i686_msvc"
@@ -10470,10 +10492,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
[[package]]
-name = "windows_x86_64_gnu"
-version = "0.42.2"
+name = "windows_i686_msvc"
+version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
+checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
[[package]]
name = "windows_x86_64_gnu"
@@ -10488,10 +10510,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.42.2"
+name = "windows_x86_64_gnu"
+version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
+checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
[[package]]
name = "windows_x86_64_gnullvm"
@@ -10506,10 +10528,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
[[package]]
-name = "windows_x86_64_msvc"
-version = "0.42.2"
+name = "windows_x86_64_gnullvm"
+version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
+checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
[[package]]
name = "windows_x86_64_msvc"
@@ -10524,19 +10546,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
[[package]]
-name = "winnow"
-version = "0.5.40"
+name = "windows_x86_64_msvc"
+version = "0.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876"
-dependencies = [
- "memchr",
-]
+checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
[[package]]
name = "winnow"
-version = "0.7.10"
+version = "0.7.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec"
+checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf"
dependencies = [
"memchr",
]
@@ -10552,58 +10571,24 @@ dependencies = [
]
[[package]]
-name = "wit-bindgen-rt"
-version = "0.39.0"
+name = "wit-bindgen"
+version = "0.46.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
-dependencies = [
- "bitflags 2.9.0",
-]
+checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59"
[[package]]
name = "workspace_members"
version = "0.1.0"
dependencies = [
- "cargo_metadata 0.19.2",
+ "cargo_metadata",
"quote",
]
-[[package]]
-name = "write16"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936"
-
[[package]]
name = "writeable"
-version = "0.5.5"
+version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51"
-
-[[package]]
-name = "ws_stream_wasm"
-version = "0.7.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7999f5f4217fe3818726b66257a4475f71e74ffd190776ad053fa159e50737f5"
-dependencies = [
- "async_io_stream",
- "futures",
- "js-sys",
- "log",
- "pharos",
- "rustc_version 0.4.1",
- "send_wrapper",
- "thiserror 1.0.69",
- "wasm-bindgen",
- "wasm-bindgen-futures",
- "web-sys",
-]
-
-[[package]]
-name = "wyz"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214"
+checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9"
[[package]]
name = "wyz"
@@ -10628,9 +10613,9 @@ dependencies = [
[[package]]
name = "x509-parser"
-version = "0.16.0"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fcbc162f30700d6f3f82a24bf7cc62ffe7caea42c0b2cba8bf7f3ae50cf51f69"
+checksum = "4569f339c0c402346d4a75a9e39cf8dad310e287eef1ff56d4c68e5067f53460"
dependencies = [
"asn1-rs",
"data-encoding",
@@ -10639,14 +10624,14 @@ dependencies = [
"nom",
"oid-registry",
"rusticata-macros",
- "thiserror 1.0.69",
+ "thiserror 2.0.17",
"time",
]
[[package]]
name = "xdelta3"
version = "0.1.5"
-source = "git+http://github.com/sigp/xdelta3-rs?rev=4db64086bb02e9febb584ba93b9d16bb2ae3825a#4db64086bb02e9febb584ba93b9d16bb2ae3825a"
+source = "git+https://github.com/sigp/xdelta3-rs?rev=4db64086bb02e9febb584ba93b9d16bb2ae3825a#4db64086bb02e9febb584ba93b9d16bb2ae3825a"
dependencies = [
"bindgen",
"cc",
@@ -10659,9 +10644,9 @@ dependencies = [
[[package]]
name = "xml-rs"
-version = "0.8.26"
+version = "0.8.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a62ce76d9b56901b19a74f19431b0d8b3bc7ca4ad685a746dfd78ca8f4fc6bda"
+checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f"
[[package]]
name = "xmltree"
@@ -10692,7 +10677,7 @@ dependencies = [
"futures",
"log",
"nohash-hasher",
- "parking_lot 0.12.3",
+ "parking_lot",
"pin-project",
"rand 0.8.5",
"static_assertions",
@@ -10700,16 +10685,16 @@ dependencies = [
[[package]]
name = "yamux"
-version = "0.13.4"
+version = "0.13.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "17610762a1207ee816c6fadc29220904753648aba0a9ed61c7b8336e80a559c4"
+checksum = "deab71f2e20691b4728b349c6cee8fc7223880fa67b6b4f92225ec32225447e5"
dependencies = [
"futures",
"log",
"nohash-hasher",
- "parking_lot 0.12.3",
+ "parking_lot",
"pin-project",
- "rand 0.8.5",
+ "rand 0.9.2",
"static_assertions",
"web-time",
]
@@ -10725,11 +10710,10 @@ dependencies = [
[[package]]
name = "yoke"
-version = "0.7.5"
+version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40"
+checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954"
dependencies = [
- "serde",
"stable_deref_trait",
"yoke-derive",
"zerofrom",
@@ -10737,34 +10721,34 @@ dependencies = [
[[package]]
name = "yoke-derive"
-version = "0.7.5"
+version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154"
+checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
"synstructure",
]
[[package]]
name = "zerocopy"
-version = "0.8.25"
+version = "0.8.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb"
+checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
-version = "0.8.25"
+version = "0.8.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef"
+checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
@@ -10784,15 +10768,15 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
"synstructure",
]
[[package]]
name = "zeroize"
-version = "1.8.1"
+version = "1.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
+checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0"
dependencies = [
"serde",
"zeroize_derive",
@@ -10806,14 +10790,25 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
+]
+
+[[package]]
+name = "zerotrie"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851"
+dependencies = [
+ "displaydoc",
+ "yoke",
+ "zerofrom",
]
[[package]]
name = "zerovec"
-version = "0.10.4"
+version = "0.11.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079"
+checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002"
dependencies = [
"yoke",
"zerofrom",
@@ -10822,13 +10817,13 @@ dependencies = [
[[package]]
name = "zerovec-derive"
-version = "0.10.3"
+version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6"
+checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.101",
+ "syn 2.0.110",
]
[[package]]
@@ -10890,9 +10885,9 @@ dependencies = [
[[package]]
name = "zstd-sys"
-version = "2.0.15+zstd.1.5.7"
+version = "2.0.16+zstd.1.5.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237"
+checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748"
dependencies = [
"cc",
"pkg-config",
diff --git a/Cargo.toml b/Cargo.toml
index 86cca0a259..d5d1687c76 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,31 +1,27 @@
[workspace]
members = [
"account_manager",
-
"beacon_node",
"beacon_node/beacon_chain",
"beacon_node/beacon_processor",
"beacon_node/builder_client",
"beacon_node/client",
- "beacon_node/eth1",
"beacon_node/execution_layer",
"beacon_node/genesis",
"beacon_node/http_api",
"beacon_node/http_metrics",
"beacon_node/lighthouse_network",
+ "beacon_node/lighthouse_tracing",
"beacon_node/network",
"beacon_node/operation_pool",
"beacon_node/store",
"beacon_node/timer",
-
"boot_node",
-
"common/account_utils",
"common/clap_utils",
- "common/compare_fields",
- "common/compare_fields_derive",
"common/deposit_contract",
"common/directory",
+ "common/eip_3076",
"common/eth2",
"common/eth2_config",
"common/eth2_interop_keypairs",
@@ -40,57 +36,43 @@ members = [
"common/malloc_utils",
"common/metrics",
"common/monitoring_api",
+ "common/network_utils",
"common/oneshot_broadcast",
"common/pretty_reqwest_error",
- "common/sensitive_url",
"common/slot_clock",
"common/system_health",
"common/target_check",
"common/task_executor",
"common/test_random_derive",
- "common/unused_port",
"common/validator_dir",
"common/warp_utils",
"common/workspace_members",
-
- "consensus/context_deserialize",
- "consensus/context_deserialize_derive",
"consensus/fixed_bytes",
"consensus/fork_choice",
"consensus/int_to_bytes",
"consensus/merkle_proof",
"consensus/proto_array",
- "consensus/safe_arith",
"consensus/state_processing",
"consensus/swap_or_not_shuffle",
"consensus/types",
-
"crypto/bls",
"crypto/eth2_key_derivation",
"crypto/eth2_keystore",
"crypto/eth2_wallet",
"crypto/kzg",
-
"database_manager",
-
"lcli",
-
"lighthouse",
"lighthouse/environment",
-
"slasher",
"slasher/service",
-
"testing/ef_tests",
- "testing/eth1_test_rig",
"testing/execution_engine_integration",
"testing/node_test_rig",
"testing/simulator",
"testing/state_transition_vectors",
"testing/validator_test_rig",
"testing/web3signer_tests",
-
-
"validator_client",
"validator_client/beacon_node_fallback",
"validator_client/doppelganger_service",
@@ -103,80 +85,130 @@ members = [
"validator_client/slashing_protection",
"validator_client/validator_metrics",
"validator_client/validator_services",
-
"validator_manager",
]
resolver = "2"
[workspace.package]
-edition = "2021"
+edition = "2024"
+version = "8.0.1"
[workspace.dependencies]
-alloy-primitives = { version = "0.8", features = ["rlp", "getrandom"] }
-alloy-rlp = "0.3.4"
-alloy-consensus = "0.3.0"
+account_utils = { path = "common/account_utils" }
+alloy-consensus = { version = "1", default-features = false }
+alloy-dyn-abi = { version = "1", default-features = false }
+alloy-json-abi = { version = "1", default-features = false }
+alloy-network = { version = "1", default-features = false }
+alloy-primitives = { version = "1", default-features = false, features = ["rlp", "getrandom"] }
+alloy-provider = { version = "1", default-features = false, features = ["reqwest"] }
+alloy-rlp = { version = "0.3", default-features = false }
+alloy-rpc-types-eth = { version = "1", default-features = false, features = ["serde"] }
+alloy-signer-local = { version = "1", default-features = false }
anyhow = "1"
arbitrary = { version = "1", features = ["derive"] }
async-channel = "1.9.0"
axum = "0.7.7"
+beacon_chain = { path = "beacon_node/beacon_chain" }
+beacon_node = { path = "beacon_node" }
+beacon_node_fallback = { path = "validator_client/beacon_node_fallback" }
+beacon_processor = { path = "beacon_node/beacon_processor" }
bincode = "1"
bitvec = "1"
+bls = { path = "crypto/bls" }
byteorder = "1"
bytes = "1"
-cargo_metadata = "0.19"
-clap = { version = "4.5.4", features = ["derive", "cargo", "wrap_help"] }
# Turn off c-kzg's default features which include `blst/portable`. We can turn on blst's portable
# feature ourselves when desired.
-c-kzg = { version = "1", default-features = false }
-compare_fields_derive = { path = "common/compare_fields_derive" }
-context_deserialize = { path = "consensus/context_deserialize" }
-context_deserialize_derive = { path = "consensus/context_deserialize_derive" }
+c-kzg = { version = "2.1", default-features = false }
+cargo_metadata = "0.19"
+clap = { version = "4.5.4", features = ["derive", "cargo", "wrap_help"] }
+clap_utils = { path = "common/clap_utils" }
+compare_fields = "0.1"
+console-subscriber = "0.4"
+context_deserialize = "0.2"
criterion = "0.5"
delay_map = "0.4"
-derivative = "2"
+deposit_contract = { path = "common/deposit_contract" }
+directory = { path = "common/directory" }
dirs = "3"
+discv5 = { version = "0.10", features = ["libp2p"] }
+doppelganger_service = { path = "validator_client/doppelganger_service" }
+educe = "0.6"
+eip_3076 = { path = "common/eip_3076" }
either = "1.9"
-rust_eth_kzg = "0.5.4"
-discv5 = { version = "0.9", features = ["libp2p"] }
-env_logger = "0.9"
-ethereum_hashing = "0.7.0"
-ethereum_serde_utils = "0.7"
-ethereum_ssz = "0.8.2"
-ethereum_ssz_derive = "0.8.2"
-ethers-core = "1"
-ethers-providers = { version = "1", default-features = false }
-ethers-signers = { version = "1", default-features = false }
-ethers-middleware = { version = "1", default-features = false }
+environment = { path = "lighthouse/environment" }
+eth2 = { path = "common/eth2" }
+eth2_config = { path = "common/eth2_config" }
+eth2_key_derivation = { path = "crypto/eth2_key_derivation" }
+eth2_keystore = { path = "crypto/eth2_keystore" }
+eth2_network_config = { path = "common/eth2_network_config" }
+eth2_wallet = { path = "crypto/eth2_wallet" }
+ethereum_hashing = "0.8.0"
+ethereum_serde_utils = "0.8.0"
+ethereum_ssz = { version = "0.10.0", features = ["context_deserialize"] }
+ethereum_ssz_derive = "0.10.0"
+execution_layer = { path = "beacon_node/execution_layer" }
exit-future = "0.2"
+filesystem = { path = "common/filesystem" }
+fixed_bytes = { path = "consensus/fixed_bytes" }
fnv = "1"
+fork_choice = { path = "consensus/fork_choice" }
fs2 = "0.4"
futures = "0.3"
+genesis = { path = "beacon_node/genesis" }
+# This is tracking the sigp-gossipsub branch on sigp/rust-libp2p commit: Aug 20 2025
+gossipsub = { package = "libp2p-gossipsub", git = "https://github.com/sigp/rust-libp2p.git", rev = "5acdf89a65d64098f9346efa5769e57bcd19dea9", "features" = ["metrics"] }
graffiti_file = { path = "validator_client/graffiti_file" }
-gossipsub = { package = "libp2p-gossipsub", git = "https://github.com/sigp/rust-libp2p.git", rev = "61b2820" }
-hex = "0.4"
hashlink = "0.9.0"
+health_metrics = { path = "common/health_metrics" }
+hex = "0.4"
+http_api = { path = "beacon_node/http_api" }
hyper = "1"
+initialized_validators = { path = "validator_client/initialized_validators" }
+int_to_bytes = { path = "consensus/int_to_bytes" }
itertools = "0.10"
+kzg = { path = "crypto/kzg" }
libsecp256k1 = "0.7"
+lighthouse_network = { path = "beacon_node/lighthouse_network" }
+lighthouse_tracing = { path = "beacon_node/lighthouse_tracing" }
+lighthouse_validator_store = { path = "validator_client/lighthouse_validator_store" }
+lighthouse_version = { path = "common/lighthouse_version" }
+lockfile = { path = "common/lockfile" }
log = "0.4"
-logroller = "0.1.4"
+logging = { path = "common/logging" }
+logroller = "0.1.8"
lru = "0.12"
+lru_cache = { path = "common/lru_cache" }
+malloc_utils = { path = "common/malloc_utils" }
maplit = "1"
-milhouse = "0.5"
+merkle_proof = { path = "consensus/merkle_proof" }
+metrics = { path = "common/metrics" }
+milhouse = { version = "0.9", default-features = false, features = ["context_deserialize"] }
+mockall = "0.13"
+mockall_double = "0.3"
mockito = "1.5.0"
+monitoring_api = { path = "common/monitoring_api" }
+network = { path = "beacon_node/network" }
+network_utils = { path = "common/network_utils" }
+node_test_rig = { path = "testing/node_test_rig" }
num_cpus = "1"
once_cell = "1.17.1"
+opentelemetry = "0.30.0"
+opentelemetry-otlp = { version = "0.30.0", features = ["grpc-tonic", "tls-roots"] }
+opentelemetry_sdk = "0.30.0"
+operation_pool = { path = "beacon_node/operation_pool" }
parking_lot = "0.12"
paste = "1"
+pretty_reqwest_error = { path = "common/pretty_reqwest_error" }
prometheus = { version = "0.13", default-features = false }
-quickcheck = "1"
-quickcheck_macros = "1"
+proptest = "1"
+proto_array = { path = "consensus/proto_array" }
quote = "1"
r2d2 = "0.8"
-rand = "0.8"
+rand = "0.9.0"
rayon = "1.7"
regex = "1"
-reqwest = { version = "0.11", default-features = false, features = [
+reqwest = { version = "0.12", default-features = false, features = [
"blocking",
"json",
"stream",
@@ -186,18 +218,30 @@ reqwest = { version = "0.11", default-features = false, features = [
ring = "0.17"
rpds = "0.11"
rusqlite = { version = "0.28", features = ["bundled"] }
+rust_eth_kzg = "0.9"
+safe_arith = "0.1"
+sensitive_url = { version = "0.1", features = ["serde"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
serde_repr = "0.1"
serde_yaml = "0.9"
sha2 = "0.9"
+signing_method = { path = "validator_client/signing_method" }
+slasher = { path = "slasher", default-features = false }
+slashing_protection = { path = "validator_client/slashing_protection" }
+slot_clock = { path = "common/slot_clock" }
smallvec = { version = "1.11.2", features = ["arbitrary"] }
snap = "1"
-ssz_types = "0.10"
-strum = { version = "0.24", features = ["derive"] }
-superstruct = "0.8"
-syn = "1"
+ssz_types = { version = "0.14.0", features = ["context_deserialize", "runtime_types"] }
+state_processing = { path = "consensus/state_processing" }
+store = { path = "beacon_node/store" }
+strum = { version = "0.27", features = ["derive"] }
+superstruct = "0.10"
+swap_or_not_shuffle = { path = "consensus/swap_or_not_shuffle" }
+syn = "2"
sysinfo = "0.26"
+system_health = { path = "common/system_health" }
+task_executor = { path = "common/task_executor" }
tempfile = "3"
tokio = { version = "1", features = [
"rt-multi-thread",
@@ -211,75 +255,14 @@ tracing = "0.1.40"
tracing-appender = "0.2"
tracing-core = "0.1"
tracing-log = "0.2"
+tracing-opentelemetry = "0.31.0"
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
-tree_hash = "0.9"
-tree_hash_derive = "0.9"
+tree_hash = "0.12.0"
+tree_hash_derive = "0.12.0"
+typenum = "1"
+types = { path = "consensus/types" }
url = "2"
uuid = { version = "0.8", features = ["serde", "v4"] }
-warp = { version = "0.3.7", default-features = false, features = ["tls"] }
-zeroize = { version = "1", features = ["zeroize_derive", "serde"] }
-zip = "0.6"
-
-# Local crates.
-account_utils = { path = "common/account_utils" }
-beacon_chain = { path = "beacon_node/beacon_chain" }
-beacon_node = { path = "beacon_node" }
-beacon_node_fallback = { path = "validator_client/beacon_node_fallback" }
-beacon_processor = { path = "beacon_node/beacon_processor" }
-bls = { path = "crypto/bls" }
-clap_utils = { path = "common/clap_utils" }
-compare_fields = { path = "common/compare_fields" }
-deposit_contract = { path = "common/deposit_contract" }
-directory = { path = "common/directory" }
-doppelganger_service = { path = "validator_client/doppelganger_service" }
-environment = { path = "lighthouse/environment" }
-eth1 = { path = "beacon_node/eth1" }
-eth1_test_rig = { path = "testing/eth1_test_rig" }
-eth2 = { path = "common/eth2" }
-eth2_config = { path = "common/eth2_config" }
-eth2_key_derivation = { path = "crypto/eth2_key_derivation" }
-eth2_keystore = { path = "crypto/eth2_keystore" }
-eth2_network_config = { path = "common/eth2_network_config" }
-eth2_wallet = { path = "crypto/eth2_wallet" }
-execution_layer = { path = "beacon_node/execution_layer" }
-fixed_bytes = { path = "consensus/fixed_bytes" }
-filesystem = { path = "common/filesystem" }
-fork_choice = { path = "consensus/fork_choice" }
-genesis = { path = "beacon_node/genesis" }
-health_metrics = { path = "common/health_metrics" }
-http_api = { path = "beacon_node/http_api" }
-initialized_validators = { path = "validator_client/initialized_validators" }
-int_to_bytes = { path = "consensus/int_to_bytes" }
-kzg = { path = "crypto/kzg" }
-metrics = { path = "common/metrics" }
-lighthouse_network = { path = "beacon_node/lighthouse_network" }
-lighthouse_validator_store = { path = "validator_client/lighthouse_validator_store" }
-lighthouse_version = { path = "common/lighthouse_version" }
-workspace_members = { path = "common/workspace_members" }
-lockfile = { path = "common/lockfile" }
-logging = { path = "common/logging" }
-lru_cache = { path = "common/lru_cache" }
-malloc_utils = { path = "common/malloc_utils" }
-merkle_proof = { path = "consensus/merkle_proof" }
-monitoring_api = { path = "common/monitoring_api" }
-network = { path = "beacon_node/network" }
-node_test_rig = { path = "testing/node_test_rig" }
-operation_pool = { path = "beacon_node/operation_pool" }
-pretty_reqwest_error = { path = "common/pretty_reqwest_error" }
-proto_array = { path = "consensus/proto_array" }
-safe_arith = { path = "consensus/safe_arith" }
-sensitive_url = { path = "common/sensitive_url" }
-signing_method = { path = "validator_client/signing_method" }
-slasher = { path = "slasher", default-features = false }
-slashing_protection = { path = "validator_client/slashing_protection" }
-slot_clock = { path = "common/slot_clock" }
-state_processing = { path = "consensus/state_processing" }
-store = { path = "beacon_node/store" }
-swap_or_not_shuffle = { path = "consensus/swap_or_not_shuffle" }
-system_health = { path = "common/system_health" }
-task_executor = { path = "common/task_executor" }
-types = { path = "consensus/types" }
-unused_port = { path = "common/unused_port" }
validator_client = { path = "validator_client" }
validator_dir = { path = "common/validator_dir" }
validator_http_api = { path = "validator_client/http_api" }
@@ -288,8 +271,12 @@ validator_metrics = { path = "validator_client/validator_metrics" }
validator_services = { path = "validator_client/validator_services" }
validator_store = { path = "validator_client/validator_store" }
validator_test_rig = { path = "testing/validator_test_rig" }
+warp = { version = "0.3.7", default-features = false, features = ["tls"] }
warp_utils = { path = "common/warp_utils" }
-xdelta3 = { git = "http://github.com/sigp/xdelta3-rs", rev = "4db64086bb02e9febb584ba93b9d16bb2ae3825a" }
+workspace_members = { path = "common/workspace_members" }
+xdelta3 = { git = "https://github.com/sigp/xdelta3-rs", rev = "4db64086bb02e9febb584ba93b9d16bb2ae3825a" }
+zeroize = { version = "1", features = ["zeroize_derive", "serde"] }
+zip = "0.6"
zstd = "0.13"
[profile.maxperf]
@@ -298,12 +285,9 @@ lto = "fat"
codegen-units = 1
incremental = false
-[profile.reproducible]
+[profile.release-debug]
inherits = "release"
-debug = false
-panic = "abort"
-codegen-units = 1
-overflow-checks = true
+debug = true
[patch.crates-io]
quick-protobuf = { git = "https://github.com/sigp/quick-protobuf.git", rev = "681f413312404ab6e51f0b46f39b0075c6f4ebfd" }
diff --git a/Dockerfile b/Dockerfile
index 437c864c30..8cc20ab000 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,13 +1,19 @@
-FROM rust:1.84.0-bullseye AS builder
+FROM rust:1.88.0-bullseye AS builder
RUN apt-get update && apt-get -y upgrade && apt-get install -y cmake libclang-dev
-COPY . lighthouse
ARG FEATURES
ARG PROFILE=release
ARG CARGO_USE_GIT_CLI=true
ENV FEATURES=$FEATURES
ENV PROFILE=$PROFILE
ENV CARGO_NET_GIT_FETCH_WITH_CLI=$CARGO_USE_GIT_CLI
-RUN cd lighthouse && make
+ENV CARGO_INCREMENTAL=1
+
+WORKDIR /lighthouse
+COPY . .
+# Persist the registry and target file across builds. See: https://docs.docker.com/build/cache/optimize/#use-cache-mounts
+RUN --mount=type=cache,target=/usr/local/cargo/registry \
+ --mount=type=cache,target=/lighthouse/target \
+ make
FROM ubuntu:22.04
RUN apt-get update && apt-get -y upgrade && apt-get install -y --no-install-recommends \
diff --git a/Dockerfile.reproducible b/Dockerfile.reproducible
index df57616874..903515373f 100644
--- a/Dockerfile.reproducible
+++ b/Dockerfile.reproducible
@@ -1,44 +1,24 @@
-# Define the Rust image as an argument with a default to x86_64 Rust 1.82 image based on Debian Bullseye
-ARG RUST_IMAGE="rust:1.82-bullseye@sha256:ac7fe7b0c9429313c0fe87d3a8993998d1fe2be9e3e91b5e2ec05d3a09d87128"
+# Define the Rust image as an argument with a default to x86_64 Rust 1.88 image based on Debian Bullseye
+ARG RUST_IMAGE="rust:1.88-bullseye@sha256:8e3c421122bf4cd3b2a866af41a4dd52d87ad9e315fd2cb5100e87a7187a9816"
FROM ${RUST_IMAGE} AS builder
# Install specific version of the build dependencies
-RUN apt-get update && apt-get install -y libclang-dev=1:11.0-51+nmu5 cmake=3.18.4-2+deb11u1
+RUN apt-get update && apt-get install -y libclang-dev=1:11.0-51+nmu5 cmake=3.18.4-2+deb11u1 libjemalloc-dev=5.2.1-3
-# Add target architecture argument with default value
ARG RUST_TARGET="x86_64-unknown-linux-gnu"
# Copy the project to the container
-COPY . /app
+COPY ./ /app
WORKDIR /app
-# Get the latest commit timestamp and set SOURCE_DATE_EPOCH (default it to 0 if not passed)
-ARG SOURCE_DATE=0
-
-# Set environment variables for reproducibility
-ARG RUSTFLAGS="-C link-arg=-Wl,--build-id=none -C metadata='' --remap-path-prefix $(pwd)=."
-ENV SOURCE_DATE_EPOCH=$SOURCE_DATE \
- CARGO_INCREMENTAL=0 \
- LC_ALL=C \
- TZ=UTC \
- RUSTFLAGS="${RUSTFLAGS}"
-
-# Set the default features if not provided
-ARG FEATURES="gnosis,slasher-lmdb,slasher-mdbx,slasher-redb,jemalloc"
-
-# Set the default profile if not provided
-ARG PROFILE="reproducible"
-
# Build the project with the reproducible settings
-RUN cargo build --bin lighthouse \
- --features "${FEATURES}" \
- --profile "${PROFILE}" \
- --locked \
- --target "${RUST_TARGET}"
+RUN make build-reproducible
-RUN mv /app/target/${RUST_TARGET}/${PROFILE}/lighthouse /lighthouse
+# Move the binary to a standard location
+RUN mv /app/target/${RUST_TARGET}/release/lighthouse /lighthouse
# Create a minimal final image with just the binary
FROM gcr.io/distroless/cc-debian12:nonroot-6755e21ccd99ddead6edc8106ba03888cbeed41a
COPY --from=builder /lighthouse /lighthouse
+
ENTRYPOINT [ "/lighthouse" ]
diff --git a/Makefile b/Makefile
index d27e7edd13..9d08c3ebe1 100644
--- a/Makefile
+++ b/Makefile
@@ -3,7 +3,7 @@
EF_TESTS = "testing/ef_tests"
STATE_TRANSITION_VECTORS = "testing/state_transition_vectors"
EXECUTION_ENGINE_INTEGRATION = "testing/execution_engine_integration"
-GIT_TAG := $(shell git describe --tags --candidates 1)
+GIT_TAG = $(shell git describe --tags --candidates 1)
BIN_DIR = "bin"
X86_64_TAG = "x86_64-unknown-linux-gnu"
@@ -16,7 +16,7 @@ BUILD_PATH_RISCV64 = "target/$(RISCV64_TAG)/release"
PINNED_NIGHTLY ?= nightly
# List of features to use when cross-compiling. Can be overridden via the environment.
-CROSS_FEATURES ?= gnosis,slasher-lmdb,slasher-mdbx,slasher-redb,jemalloc,beacon-node-leveldb,beacon-node-redb
+CROSS_FEATURES ?= gnosis,slasher-lmdb,slasher-mdbx,slasher-redb,beacon-node-leveldb,beacon-node-redb
# Cargo profile for Cross builds. Default is for local builds, CI uses an override.
CROSS_PROFILE ?= release
@@ -30,9 +30,13 @@ TEST_FEATURES ?=
# Cargo profile for regular builds.
PROFILE ?= release
-# List of all hard forks. This list is used to set env variables for several tests so that
+# List of all hard forks up to gloas. This list is used to set env variables for several tests so that
# they run for different forks.
-FORKS=phase0 altair bellatrix capella deneb electra eip7805 fulu
+# TODO(EIP-7732) Remove this once we extend network tests to support gloas and use RECENT_FORKS instead
+RECENT_FORKS_BEFORE_GLOAS=electra fulu
+
+# List of all recent hard forks. This list is used to set env variables for http_api tests
+RECENT_FORKS=electra fulu gloas
# Extra flags for Cargo
CARGO_INSTALL_EXTRA_FLAGS?=
@@ -82,36 +86,67 @@ build-lcli-aarch64:
build-lcli-riscv64:
cross build --bin lcli --target riscv64gc-unknown-linux-gnu --features "portable" --profile "$(CROSS_PROFILE)" --locked
-# extracts the current source date for reproducible builds
-SOURCE_DATE := $(shell git log -1 --pretty=%ct)
+# Environment variables for reproducible builds
+# Initialize RUSTFLAGS
+RUST_BUILD_FLAGS =
+# Remove build ID from the binary to ensure reproducibility across builds
+RUST_BUILD_FLAGS += -C link-arg=-Wl,--build-id=none
+# Remove metadata hash from symbol names to ensure reproducible builds
+RUST_BUILD_FLAGS += -C metadata=''
-# Default image for x86_64
-RUST_IMAGE_AMD64 ?= rust:1.82-bullseye@sha256:ac7fe7b0c9429313c0fe87d3a8993998d1fe2be9e3e91b5e2ec05d3a09d87128
+# Set timestamp from last git commit for reproducible builds
+SOURCE_DATE ?= $(shell git log -1 --pretty=%ct)
-# Reproducible build for x86_64
-build-reproducible-x86_64:
+# Disable incremental compilation to avoid non-deterministic artifacts
+CARGO_INCREMENTAL_VAL = 0
+# Set C locale for consistent string handling and sorting
+LOCALE_VAL = C
+# Set UTC timezone for consistent time handling across builds
+TZ_VAL = UTC
+
+# Features for reproducible builds
+FEATURES_REPRODUCIBLE = $(CROSS_FEATURES),jemalloc-unprefixed
+
+# Derive the architecture-specific library path from RUST_TARGET
+JEMALLOC_LIB_ARCH = $(word 1,$(subst -, ,$(RUST_TARGET)))
+JEMALLOC_OVERRIDE = /usr/lib/$(JEMALLOC_LIB_ARCH)-linux-gnu/libjemalloc.a
+
+# Default target architecture
+RUST_TARGET ?= x86_64-unknown-linux-gnu
+
+# Default images for different architectures
+RUST_IMAGE_AMD64 ?= rust:1.88-bullseye@sha256:8e3c421122bf4cd3b2a866af41a4dd52d87ad9e315fd2cb5100e87a7187a9816
+RUST_IMAGE_ARM64 ?= rust:1.88-bullseye@sha256:8b22455a7ce2adb1355067638284ee99d21cc516fab63a96c4514beaf370aa94
+
+.PHONY: build-reproducible
+build-reproducible: ## Build the lighthouse binary into `target` directory with reproducible builds
+ SOURCE_DATE_EPOCH=$(SOURCE_DATE) \
+ RUSTFLAGS="${RUST_BUILD_FLAGS} --remap-path-prefix $$(pwd)=." \
+ CARGO_INCREMENTAL=${CARGO_INCREMENTAL_VAL} \
+ LC_ALL=${LOCALE_VAL} \
+ TZ=${TZ_VAL} \
+ JEMALLOC_OVERRIDE=${JEMALLOC_OVERRIDE} \
+ cargo build --bin lighthouse --features "$(FEATURES_REPRODUCIBLE)" --profile "$(PROFILE)" --locked --target $(RUST_TARGET)
+
+.PHONY: build-reproducible-x86_64
+build-reproducible-x86_64: ## Build reproducible x86_64 Docker image
DOCKER_BUILDKIT=1 docker build \
--build-arg RUST_TARGET="x86_64-unknown-linux-gnu" \
--build-arg RUST_IMAGE=$(RUST_IMAGE_AMD64) \
- --build-arg SOURCE_DATE=$(SOURCE_DATE) \
-f Dockerfile.reproducible \
-t lighthouse:reproducible-amd64 .
-# Default image for arm64
-RUST_IMAGE_ARM64 ?= rust:1.82-bullseye@sha256:3c1b8b6487513ad4e753d008b960260f5bcc81bf110883460f6ed3cd72bf439b
-
-# Reproducible build for aarch64
-build-reproducible-aarch64:
+.PHONY: build-reproducible-aarch64
+build-reproducible-aarch64: ## Build reproducible aarch64 Docker image
DOCKER_BUILDKIT=1 docker build \
--platform linux/arm64 \
--build-arg RUST_TARGET="aarch64-unknown-linux-gnu" \
--build-arg RUST_IMAGE=$(RUST_IMAGE_ARM64) \
- --build-arg SOURCE_DATE=$(SOURCE_DATE) \
-f Dockerfile.reproducible \
-t lighthouse:reproducible-arm64 .
-# Build both architectures
-build-reproducible-all: build-reproducible-x86_64 build-reproducible-aarch64
+.PHONY: build-reproducible-all
+build-reproducible-all: build-reproducible-x86_64 build-reproducible-aarch64 ## Build both x86_64 and aarch64 reproducible Docker images
# Create a `.tar.gz` containing a binary for a specific target.
define tarball_release_binary
@@ -136,29 +171,20 @@ build-release-tarballs:
$(call tarball_release_binary,$(BUILD_PATH_RISCV64),$(RISCV64_TAG),"")
+
# Runs the full workspace tests in **release**, without downloading any additional
# test vectors.
test-release:
- cargo test --workspace --release --features "$(TEST_FEATURES)" \
- --exclude ef_tests --exclude beacon_chain --exclude slasher --exclude network
-
-# Runs the full workspace tests in **release**, without downloading any additional
-# test vectors, using nextest.
-nextest-release:
cargo nextest run --workspace --release --features "$(TEST_FEATURES)" \
- --exclude ef_tests --exclude beacon_chain --exclude slasher --exclude network
+ --exclude ef_tests --exclude beacon_chain --exclude slasher --exclude network \
+ --exclude http_api
+
# Runs the full workspace tests in **debug**, without downloading any additional test
# vectors.
test-debug:
- cargo test --workspace --features "$(TEST_FEATURES)" \
- --exclude ef_tests --exclude beacon_chain --exclude network
-
-# Runs the full workspace tests in **debug**, without downloading any additional test
-# vectors, using nextest.
-nextest-debug:
cargo nextest run --workspace --features "$(TEST_FEATURES)" \
- --exclude ef_tests --exclude beacon_chain --exclude network
+ --exclude ef_tests --exclude beacon_chain --exclude network --exclude http_api
# Runs cargo-fmt (linter).
cargo-fmt:
@@ -168,28 +194,30 @@ cargo-fmt:
check-benches:
cargo check --workspace --benches --features "$(TEST_FEATURES)"
-# Runs only the ef-test vectors.
-run-ef-tests:
- rm -rf $(EF_TESTS)/.accessed_file_log.txt
- cargo test --release -p ef_tests --features "ef_tests,$(EF_TEST_FEATURES)"
- cargo test --release -p ef_tests --features "ef_tests,$(EF_TEST_FEATURES),fake_crypto"
- ./$(EF_TESTS)/check_all_files_accessed.py $(EF_TESTS)/.accessed_file_log.txt $(EF_TESTS)/consensus-spec-tests
-# Runs EF test vectors with nextest
-nextest-run-ef-tests:
+# Runs EF test vectors
+run-ef-tests:
rm -rf $(EF_TESTS)/.accessed_file_log.txt
cargo nextest run --release -p ef_tests --features "ef_tests,$(EF_TEST_FEATURES)"
cargo nextest run --release -p ef_tests --features "ef_tests,$(EF_TEST_FEATURES),fake_crypto"
./$(EF_TESTS)/check_all_files_accessed.py $(EF_TESTS)/.accessed_file_log.txt $(EF_TESTS)/consensus-spec-tests
# Run the tests in the `beacon_chain` crate for all known forks.
-test-beacon-chain: $(patsubst %,test-beacon-chain-%,$(FORKS))
+# TODO(EIP-7732) Extend to support gloas by using RECENT_FORKS instead
+test-beacon-chain: $(patsubst %,test-beacon-chain-%,$(RECENT_FORKS_BEFORE_GLOAS))
test-beacon-chain-%:
env FORK_NAME=$* cargo nextest run --release --features "fork_from_env,slasher/lmdb,$(TEST_FEATURES)" -p beacon_chain
+# Run the tests in the `http_api` crate for recent forks.
+test-http-api: $(patsubst %,test-http-api-%,$(RECENT_FORKS_BEFORE_GLOAS))
+
+test-http-api-%:
+ env FORK_NAME=$* cargo nextest run --release --features "beacon_chain/fork_from_env" -p http_api
+
+
# Run the tests in the `operation_pool` crate for all known forks.
-test-op-pool: $(patsubst %,test-op-pool-%,$(FORKS))
+test-op-pool: $(patsubst %,test-op-pool-%,$(RECENT_FORKS_BEFORE_GLOAS))
test-op-pool-%:
env FORK_NAME=$* cargo nextest run --release \
@@ -197,7 +225,8 @@ test-op-pool-%:
-p operation_pool
# Run the tests in the `network` crate for all known forks.
-test-network: $(patsubst %,test-network-%,$(FORKS))
+# TODO(EIP-7732) Extend to support gloas by using RECENT_FORKS instead
+test-network: $(patsubst %,test-network-%,$(RECENT_FORKS_BEFORE_GLOAS))
test-network-%:
env FORK_NAME=$* cargo nextest run --release \
@@ -218,8 +247,8 @@ run-state-transition-tests:
# Downloads and runs the EF test vectors.
test-ef: make-ef-tests run-ef-tests
-# Downloads and runs the EF test vectors with nextest.
-nextest-ef: make-ef-tests nextest-run-ef-tests
+# Downloads and runs the nightly EF test vectors.
+test-ef-nightly: make-ef-tests-nightly run-ef-tests
# Runs tests checking interop between Lighthouse and execution clients.
test-exec-engine:
@@ -254,6 +283,7 @@ lint:
-D clippy::fn_to_numeric_cast_any \
-D clippy::manual_let_else \
-D clippy::large_stack_frames \
+ -D clippy::disallowed_methods \
-D warnings \
-A clippy::derive_partial_eq_without_eq \
-A clippy::upper-case-acronyms \
@@ -264,7 +294,7 @@ lint:
# Lints the code using Clippy and automatically fix some simple compiler warnings.
lint-fix:
- EXTRA_CLIPPY_OPTS="--fix --allow-staged --allow-dirty" $(MAKE) lint
+ EXTRA_CLIPPY_OPTS="--fix --allow-staged --allow-dirty" $(MAKE) lint-full
# Also run the lints on the optimized-only tests
lint-full:
@@ -278,6 +308,10 @@ lint-full:
make-ef-tests:
make -C $(EF_TESTS)
+# Download/extract the nightly EF test vectors.
+make-ef-tests-nightly:
+ CONSENSUS_SPECS_TEST_VERSION=nightly make -C $(EF_TESTS)
+
# Verifies that crates compile with fuzzing features enabled
arbitrary-fuzz:
cargo check -p state_processing --features arbitrary-fuzz,$(TEST_FEATURES)
@@ -292,6 +326,15 @@ install-audit:
audit-CI:
cargo audit
+# Runs cargo deny (check for banned crates, duplicate versions, and source restrictions)
+deny: install-deny deny-CI
+
+install-deny:
+ cargo install --force cargo-deny --version 0.18.2
+
+deny-CI:
+ cargo deny check bans sources
+
# Runs `cargo vendor` to make sure dependencies can be vendored for packaging, reproducibility and archival purpose.
vendor:
cargo vendor
diff --git a/account_manager/Cargo.toml b/account_manager/Cargo.toml
index 071e2681dd..8dd50cbc6e 100644
--- a/account_manager/Cargo.toml
+++ b/account_manager/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "account_manager"
-version = "0.3.5"
+version = { workspace = true }
authors = [
"Paul Hauner ",
"Luke Anderson ",
diff --git a/account_manager/src/validator/create.rs b/account_manager/src/validator/create.rs
index 3db8c3f152..427ca9fa13 100644
--- a/account_manager/src/validator/create.rs
+++ b/account_manager/src/validator/create.rs
@@ -1,15 +1,15 @@
use crate::common::read_wallet_name_from_cli;
use crate::{SECRETS_DIR_FLAG, WALLETS_DIR_FLAG};
use account_utils::{
- random_password, read_password_from_user, strip_off_newlines, validator_definitions, PlainText,
- STDIN_INPUTS_FLAG,
+ PlainText, STDIN_INPUTS_FLAG, random_password, read_password_from_user, strip_off_newlines,
+ validator_definitions,
};
use clap::{Arg, ArgAction, ArgMatches, Command};
use clap_utils::FLAG_HEADER;
-use directory::{parse_path_or_default_with_flag, DEFAULT_SECRET_DIR, DEFAULT_WALLET_DIR};
+use directory::{DEFAULT_SECRET_DIR, DEFAULT_WALLET_DIR, parse_path_or_default_with_flag};
use environment::Environment;
use eth2_wallet_manager::WalletManager;
-use slashing_protection::{SlashingDatabase, SLASHING_PROTECTION_FILENAME};
+use slashing_protection::{SLASHING_PROTECTION_FILENAME, SlashingDatabase};
use std::ffi::OsStr;
use std::fs;
use std::fs::create_dir_all;
@@ -148,7 +148,9 @@ pub fn cli_run(
return Err(format!(
"No wallet directory at {:?}. Use the `lighthouse --network {} {} {} {}` command to create a wallet",
wallet_base_dir,
- matches.get_one::("network").unwrap_or(&String::from("")),
+ matches
+ .get_one::("network")
+ .unwrap_or(&String::from("")),
crate::CMD,
crate::wallet::CMD,
crate::wallet::create::CMD
diff --git a/account_manager/src/validator/exit.rs b/account_manager/src/validator/exit.rs
index 1393d0f152..5ea77f284e 100644
--- a/account_manager/src/validator/exit.rs
+++ b/account_manager/src/validator/exit.rs
@@ -4,8 +4,8 @@ use clap::{Arg, ArgAction, ArgMatches, Command};
use clap_utils::FLAG_HEADER;
use environment::Environment;
use eth2::{
- types::{GenesisData, StateId, ValidatorData, ValidatorId, ValidatorStatus},
BeaconNodeHttpClient, Timeouts,
+ types::{GenesisData, StateId, ValidatorData, ValidatorId, ValidatorStatus},
};
use eth2_keystore::Keystore;
use eth2_network_config::Eth2NetworkConfig;
@@ -239,9 +239,11 @@ async fn publish_voluntary_exit(
let withdrawal_epoch = validator_data.validator.withdrawable_epoch;
let current_epoch = get_current_epoch::(genesis_data.genesis_time, spec)
.ok_or("Failed to get current epoch. Please check your system time")?;
- eprintln!("Voluntary exit has been accepted into the beacon chain, but not yet finalized. \
+ eprintln!(
+ "Voluntary exit has been accepted into the beacon chain, but not yet finalized. \
Finalization may take several minutes or longer. Before finalization there is a low \
- probability that the exit may be reverted.");
+ probability that the exit may be reverted."
+ );
eprintln!(
"Current epoch: {}, Exit epoch: {}, Withdrawable epoch: {}",
current_epoch, exit_epoch, withdrawal_epoch
@@ -401,7 +403,7 @@ mod tests {
use eth2_keystore::KeystoreBuilder;
use std::fs::File;
use std::io::Write;
- use tempfile::{tempdir, TempDir};
+ use tempfile::{TempDir, tempdir};
const PASSWORD: &str = "cats";
const KEYSTORE_NAME: &str = "keystore-m_12381_3600_0_0_0-1595406747.json";
diff --git a/account_manager/src/validator/import.rs b/account_manager/src/validator/import.rs
index 4d2353b553..6afdd81b71 100644
--- a/account_manager/src/validator/import.rs
+++ b/account_manager/src/validator/import.rs
@@ -1,17 +1,17 @@
use crate::wallet::create::PASSWORD_FLAG;
use account_utils::validator_definitions::SigningDefinition;
use account_utils::{
+ STDIN_INPUTS_FLAG,
eth2_keystore::Keystore,
read_password_from_user,
validator_definitions::{
- recursively_find_voting_keystores, PasswordStorage, ValidatorDefinition,
- ValidatorDefinitions, CONFIG_FILENAME,
+ CONFIG_FILENAME, PasswordStorage, ValidatorDefinition, ValidatorDefinitions,
+ recursively_find_voting_keystores,
},
- STDIN_INPUTS_FLAG,
};
use clap::{Arg, ArgAction, ArgMatches, Command};
use clap_utils::FLAG_HEADER;
-use slashing_protection::{SlashingDatabase, SLASHING_PROTECTION_FILENAME};
+use slashing_protection::{SLASHING_PROTECTION_FILENAME, SlashingDatabase};
use std::fs;
use std::path::PathBuf;
use std::thread::sleep;
@@ -32,7 +32,7 @@ pub fn cli_app() -> Command {
.about(
"Imports one or more EIP-2335 passwords into a Lighthouse VC directory, \
requesting passwords interactively. The directory flag provides a convenient \
- method for importing a directory of keys generated by the eth2-deposit-cli \
+ method for importing a directory of keys generated by the ethstaker-deposit-cli \
Python utility.",
)
.arg(
@@ -133,7 +133,7 @@ pub fn cli_run(matches: &ArgMatches, validator_dir: PathBuf) -> Result<(), Strin
return Err(format!(
"Must supply either --{} or --{}",
KEYSTORE_FLAG, DIR_FLAG
- ))
+ ));
}
};
@@ -227,19 +227,20 @@ pub fn cli_run(matches: &ArgMatches, validator_dir: PathBuf) -> Result<(), Strin
if let Some(ValidatorDefinition {
signing_definition:
SigningDefinition::LocalKeystore {
- voting_keystore_password: ref mut old_passwd,
+ voting_keystore_password: old_passwd,
..
},
..
}) = old_validator_def_opt
+ && old_passwd.is_none()
+ && password_opt.is_some()
{
- if old_passwd.is_none() && password_opt.is_some() {
- *old_passwd = password_opt;
- defs.save(&validator_dir)
- .map_err(|e| format!("Unable to save {}: {:?}", CONFIG_FILENAME, e))?;
- eprintln!("Password updated for public key {}", voting_pubkey);
- }
+ *old_passwd = password_opt;
+ defs.save(&validator_dir)
+ .map_err(|e| format!("Unable to save {}: {:?}", CONFIG_FILENAME, e))?;
+ eprintln!("Password updated for public key {}", voting_pubkey);
}
+
eprintln!(
"Skipping import of keystore for existing public key: {:?}",
src_keystore
diff --git a/account_manager/src/validator/mod.rs b/account_manager/src/validator/mod.rs
index b699301cde..5a6c9439a6 100644
--- a/account_manager/src/validator/mod.rs
+++ b/account_manager/src/validator/mod.rs
@@ -8,7 +8,7 @@ pub mod slashing_protection;
use crate::{VALIDATOR_DIR_FLAG, VALIDATOR_DIR_FLAG_ALIAS};
use clap::{Arg, ArgAction, ArgMatches, Command};
-use directory::{parse_path_or_default_with_flag, DEFAULT_VALIDATOR_DIR};
+use directory::{DEFAULT_VALIDATOR_DIR, parse_path_or_default_with_flag};
use environment::Environment;
use std::path::PathBuf;
use types::EthSpec;
diff --git a/account_manager/src/validator/modify.rs b/account_manager/src/validator/modify.rs
index 571cd28bf5..36f6b53d85 100644
--- a/account_manager/src/validator/modify.rs
+++ b/account_manager/src/validator/modify.rs
@@ -69,7 +69,7 @@ pub fn cli_run(matches: &ArgMatches, validator_dir: PathBuf) -> Result<(), Strin
return Err(format!(
"{} does not have a {} command. See --help",
CMD, unknown
- ))
+ ));
}
_ => return Err(format!("No command provided for {}. See --help", CMD)),
};
diff --git a/account_manager/src/validator/recover.rs b/account_manager/src/validator/recover.rs
index 19d161a468..a61d19d7b6 100644
--- a/account_manager/src/validator/recover.rs
+++ b/account_manager/src/validator/recover.rs
@@ -1,13 +1,13 @@
use super::create::STORE_WITHDRAW_FLAG;
-use crate::validator::create::COUNT_FLAG;
use crate::SECRETS_DIR_FLAG;
-use account_utils::eth2_keystore::{keypair_from_secret, Keystore, KeystoreBuilder};
-use account_utils::{random_password, read_mnemonic_from_cli, STDIN_INPUTS_FLAG};
+use crate::validator::create::COUNT_FLAG;
+use account_utils::eth2_keystore::{Keystore, KeystoreBuilder, keypair_from_secret};
+use account_utils::{STDIN_INPUTS_FLAG, random_password, read_mnemonic_from_cli};
use clap::{Arg, ArgAction, ArgMatches, Command};
use clap_utils::FLAG_HEADER;
-use directory::{parse_path_or_default_with_flag, DEFAULT_SECRET_DIR};
+use directory::{DEFAULT_SECRET_DIR, parse_path_or_default_with_flag};
use eth2_wallet::bip39::Seed;
-use eth2_wallet::{recover_validator_secret_from_mnemonic, KeyType, ValidatorKeystores};
+use eth2_wallet::{KeyType, ValidatorKeystores, recover_validator_secret_from_mnemonic};
use std::fs::create_dir_all;
use std::path::PathBuf;
use validator_dir::Builder as ValidatorDirBuilder;
@@ -97,7 +97,9 @@ pub fn cli_run(matches: &ArgMatches, validator_dir: PathBuf) -> Result<(), Strin
.map_err(|e| format!("Could not create secrets dir at {secrets_dir:?}: {e:?}"))?;
eprintln!();
- eprintln!("WARNING: KEY RECOVERY CAN LEAD TO DUPLICATING VALIDATORS KEYS, WHICH CAN LEAD TO SLASHING.");
+ eprintln!(
+ "WARNING: KEY RECOVERY CAN LEAD TO DUPLICATING VALIDATORS KEYS, WHICH CAN LEAD TO SLASHING."
+ );
eprintln!();
let mnemonic = read_mnemonic_from_cli(mnemonic_path, stdin_inputs)?;
diff --git a/account_manager/src/validator/slashing_protection.rs b/account_manager/src/validator/slashing_protection.rs
index bcd860a484..96098ccbbd 100644
--- a/account_manager/src/validator/slashing_protection.rs
+++ b/account_manager/src/validator/slashing_protection.rs
@@ -1,13 +1,14 @@
+use bls::PublicKeyBytes;
use clap::{Arg, ArgAction, ArgMatches, Command};
use environment::Environment;
use slashing_protection::{
- interchange::Interchange, InterchangeError, InterchangeImportOutcome, SlashingDatabase,
- SLASHING_PROTECTION_FILENAME,
+ InterchangeError, InterchangeImportOutcome, SLASHING_PROTECTION_FILENAME, SlashingDatabase,
+ interchange::Interchange,
};
use std::fs::File;
use std::path::PathBuf;
use std::str::FromStr;
-use types::{Epoch, EthSpec, PublicKeyBytes, Slot};
+use types::{Epoch, EthSpec, Slot};
pub const CMD: &str = "slashing-protection";
pub const IMPORT_CMD: &str = "import";
@@ -90,7 +91,7 @@ pub fn cli_run(
let slashing_protection_database =
SlashingDatabase::open_or_create(&slashing_protection_db_path).map_err(|e| {
format!(
- "Unable to open database at {}: {:?}",
+ "Unable to open slashing protection database at {}: {:?}",
slashing_protection_db_path.display(),
e
)
@@ -198,7 +199,7 @@ pub fn cli_run(
let slashing_protection_database = SlashingDatabase::open(&slashing_protection_db_path)
.map_err(|e| {
format!(
- "Unable to open database at {}: {:?}",
+ "Unable to open slashing protection database at {}: {:?}",
slashing_protection_db_path.display(),
e
)
diff --git a/account_manager/src/wallet/create.rs b/account_manager/src/wallet/create.rs
index 6369646929..052e4bf217 100644
--- a/account_manager/src/wallet/create.rs
+++ b/account_manager/src/wallet/create.rs
@@ -1,13 +1,13 @@
-use crate::common::read_wallet_name_from_cli;
use crate::WALLETS_DIR_FLAG;
+use crate::common::read_wallet_name_from_cli;
use account_utils::{
- is_password_sufficiently_complex, random_password, read_password_from_user, strip_off_newlines,
- STDIN_INPUTS_FLAG,
+ STDIN_INPUTS_FLAG, is_password_sufficiently_complex, random_password, read_password_from_user,
+ strip_off_newlines,
};
use clap::{Arg, ArgAction, ArgMatches, Command};
use eth2_wallet::{
- bip39::{Language, Mnemonic, MnemonicType},
PlainText,
+ bip39::{Language, Mnemonic, MnemonicType},
};
use eth2_wallet_manager::{LockedWallet, WalletManager, WalletType};
use filesystem::create_with_600_perms;
diff --git a/account_manager/src/wallet/mod.rs b/account_manager/src/wallet/mod.rs
index f6f3bb0419..5f8d3948a0 100644
--- a/account_manager/src/wallet/mod.rs
+++ b/account_manager/src/wallet/mod.rs
@@ -4,7 +4,7 @@ pub mod recover;
use crate::WALLETS_DIR_FLAG;
use clap::{Arg, ArgAction, ArgMatches, Command};
-use directory::{parse_path_or_default_with_flag, DEFAULT_WALLET_DIR};
+use directory::{DEFAULT_WALLET_DIR, parse_path_or_default_with_flag};
use std::fs::create_dir_all;
use std::path::PathBuf;
diff --git a/account_manager/src/wallet/recover.rs b/account_manager/src/wallet/recover.rs
index 766d5dbe0c..6d3b635090 100644
--- a/account_manager/src/wallet/recover.rs
+++ b/account_manager/src/wallet/recover.rs
@@ -1,6 +1,6 @@
use crate::wallet::create::create_wallet_from_mnemonic;
use crate::wallet::create::{HD_TYPE, NAME_FLAG, PASSWORD_FLAG, TYPE_FLAG};
-use account_utils::{read_mnemonic_from_cli, STDIN_INPUTS_FLAG};
+use account_utils::{STDIN_INPUTS_FLAG, read_mnemonic_from_cli};
use clap::{Arg, ArgAction, ArgMatches, Command};
use std::path::PathBuf;
@@ -63,7 +63,9 @@ pub fn cli_run(matches: &ArgMatches, wallet_base_dir: PathBuf) -> Result<(), Str
let stdin_inputs = cfg!(windows) || matches.get_flag(STDIN_INPUTS_FLAG);
eprintln!();
- eprintln!("WARNING: KEY RECOVERY CAN LEAD TO DUPLICATING VALIDATORS KEYS, WHICH CAN LEAD TO SLASHING.");
+ eprintln!(
+ "WARNING: KEY RECOVERY CAN LEAD TO DUPLICATING VALIDATORS KEYS, WHICH CAN LEAD TO SLASHING."
+ );
eprintln!();
let mnemonic = read_mnemonic_from_cli(mnemonic_path, stdin_inputs)?;
diff --git a/beacon_node/Cargo.toml b/beacon_node/Cargo.toml
index 30d6846964..5352814dd5 100644
--- a/beacon_node/Cargo.toml
+++ b/beacon_node/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "beacon_node"
-version = "7.1.0-beta.0"
+version = { workspace = true }
authors = [
"Paul Hauner ",
"Age Manning ", "Age Manning (
num_of_blobs: usize,
spec: &ChainSpec,
) -> (SignedBeaconBlock, BlobsList, KzgProofs) {
- let mut block = BeaconBlock::Deneb(BeaconBlockDeneb::empty(spec));
+ let mut block = BeaconBlock::Fulu(BeaconBlockFulu::empty(spec));
let mut body = block.body_mut();
let blob_kzg_commitments = body.blob_kzg_commitments_mut().unwrap();
*blob_kzg_commitments =
@@ -26,8 +26,11 @@ fn create_test_block_and_blobs(
let blobs = (0..num_of_blobs)
.map(|_| Blob::::default())
.collect::>()
- .into();
- let proofs = vec![KzgProof::empty(); num_of_blobs * spec.number_of_columns as usize].into();
+ .try_into()
+ .unwrap();
+ let proofs = vec![KzgProof::empty(); num_of_blobs * E::number_of_columns()]
+ .try_into()
+ .unwrap();
(signed_block, blobs, proofs)
}
@@ -55,7 +58,7 @@ fn all_benches(c: &mut Criterion) {
b.iter(|| {
black_box(reconstruct_data_columns(
&kzg,
- &column_sidecars.iter().as_slice()[0..column_sidecars.len() / 2],
+ column_sidecars.iter().as_slice()[0..column_sidecars.len() / 2].to_vec(),
spec.as_ref(),
))
})
diff --git a/beacon_node/beacon_chain/src/attestation_rewards.rs b/beacon_node/beacon_chain/src/attestation_rewards.rs
index 7d88268cf9..554cd431b3 100644
--- a/beacon_node/beacon_chain/src/attestation_rewards.rs
+++ b/beacon_node/beacon_chain/src/attestation_rewards.rs
@@ -9,13 +9,13 @@ use state_processing::per_epoch_processing::altair::{
process_inactivity_updates_slow, process_justification_and_finalization,
};
use state_processing::per_epoch_processing::base::rewards_and_penalties::{
- get_attestation_component_delta, get_attestation_deltas_all, get_attestation_deltas_subset,
- get_inactivity_penalty_delta, get_inclusion_delay_delta, ProposerRewardCalculation,
+ ProposerRewardCalculation, get_attestation_component_delta, get_attestation_deltas_all,
+ get_attestation_deltas_subset, get_inactivity_penalty_delta, get_inclusion_delay_delta,
};
use state_processing::per_epoch_processing::base::validator_statuses::InclusionInfo;
use state_processing::per_epoch_processing::base::{
- process_justification_and_finalization as process_justification_and_finalization_base,
TotalBalances, ValidatorStatus, ValidatorStatuses,
+ process_justification_and_finalization as process_justification_and_finalization_base,
};
use state_processing::{
common::altair::BaseRewardPerIncrement,
diff --git a/beacon_node/beacon_chain/src/attestation_verification.rs b/beacon_node/beacon_chain/src/attestation_verification.rs
index d69667f3de..faa396966f 100644
--- a/beacon_node/beacon_chain/src/attestation_verification.rs
+++ b/beacon_node/beacon_chain/src/attestation_verification.rs
@@ -35,10 +35,10 @@
mod batch;
use crate::{
- metrics,
+ BeaconChain, BeaconChainError, BeaconChainTypes, metrics,
observed_aggregates::{ObserveOutcome, ObservedAttestationKey},
observed_attesters::Error as ObservedAttestersError,
- BeaconChain, BeaconChainError, BeaconChainTypes,
+ single_attestation::single_attestation_to_attestation,
};
use bls::verify_signature_sets;
use itertools::Itertools;
@@ -57,7 +57,7 @@ use state_processing::{
};
use std::borrow::Cow;
use strum::AsRefStr;
-use tracing::debug;
+use tracing::{debug, error};
use tree_hash::TreeHash;
use types::{
Attestation, AttestationData, AttestationRef, BeaconCommittee,
@@ -202,12 +202,6 @@ pub enum Error {
///
/// The peer has sent an invalid message.
NoCommitteeForSlotAndIndex { slot: Slot, index: CommitteeIndex },
- /// The unaggregated attestation doesn't have only one aggregation bit set.
- ///
- /// ## Peer scoring
- ///
- /// The peer has sent an invalid message.
- NotExactlyOneAggregationBitSet(usize),
/// The attestation doesn't have only one aggregation bit set.
///
/// ## Peer scoring
@@ -273,6 +267,14 @@ pub enum Error {
/// We were unable to process this attestation due to an internal error. It's unclear if the
/// attestation is valid.
BeaconChainError(Box),
+ /// A critical error occurred while converting SSZ types.
+ /// This can only occur when a VariableList was not able to be constructed from a single
+ /// attestation.
+ ///
+ /// ## Peer scoring
+ ///
+ /// The peer has sent an invalid message.
+ SszTypesError(ssz_types::Error),
}
impl From for Error {
@@ -281,6 +283,12 @@ impl From for Error {
}
}
+impl From for Error {
+ fn from(e: ssz_types::Error) -> Self {
+ Self::SszTypesError(e)
+ }
+}
+
/// Used to avoid double-checking signatures.
#[derive(Copy, Clone)]
enum CheckAttestationSignature {
@@ -304,9 +312,9 @@ struct IndexedAggregatedAttestation<'a, T: BeaconChainTypes> {
///
/// These attestations have *not* undergone signature verification.
struct IndexedUnaggregatedAttestation<'a, T: BeaconChainTypes> {
- attestation: AttestationRef<'a, T::EthSpec>,
+ attestation: &'a SingleAttestation,
indexed_attestation: IndexedAttestation,
- subnet_id: SubnetId,
+ subnet_id: Option,
validator_index: u64,
}
@@ -323,12 +331,13 @@ impl VerifiedAggregatedAttestation<'_, T> {
}
}
+#[derive(Clone)]
/// Wraps an `Attestation` that has been fully verified for propagation on the gossip network.
pub struct VerifiedUnaggregatedAttestation<'a, T: BeaconChainTypes> {
- attestation: AttestationRef<'a, T::EthSpec>,
+ attestation: Attestation,
+ single_attestation: &'a SingleAttestation,
indexed_attestation: IndexedAttestation,
subnet_id: SubnetId,
- validator_index: usize,
}
impl VerifiedUnaggregatedAttestation<'_, T> {
@@ -336,13 +345,8 @@ impl VerifiedUnaggregatedAttestation<'_, T> {
self.indexed_attestation
}
- pub fn single_attestation(&self) -> Option {
- Some(SingleAttestation {
- committee_index: self.attestation.committee_index()?,
- attester_index: self.validator_index as u64,
- data: self.attestation.data().clone(),
- signature: self.attestation.signature().clone(),
- })
+ pub fn single_attestation(&self) -> SingleAttestation {
+ self.single_attestation.clone()
}
}
@@ -362,7 +366,7 @@ impl Clone for IndexedUnaggregatedAttestation<'_, T> {
/// A helper trait implemented on wrapper types that can be progressed to a state where they can be
/// verified for application to fork choice.
pub trait VerifiedAttestation: Sized {
- fn attestation(&self) -> AttestationRef;
+ fn attestation(&self) -> AttestationRef<'_, T::EthSpec>;
fn indexed_attestation(&self) -> &IndexedAttestation;
@@ -375,7 +379,7 @@ pub trait VerifiedAttestation: Sized {
}
impl VerifiedAttestation for VerifiedAggregatedAttestation<'_, T> {
- fn attestation(&self) -> AttestationRef {
+ fn attestation(&self) -> AttestationRef<'_, T::EthSpec> {
self.attestation()
}
@@ -385,8 +389,8 @@ impl VerifiedAttestation for VerifiedAggregatedAttestati
}
impl VerifiedAttestation for VerifiedUnaggregatedAttestation<'_, T> {
- fn attestation(&self) -> AttestationRef {
- self.attestation
+ fn attestation(&self) -> AttestationRef<'_, T::EthSpec> {
+ self.attestation.to_ref()
}
fn indexed_attestation(&self) -> &IndexedAttestation {
@@ -400,6 +404,8 @@ pub enum AttestationSlashInfo<'a, T: BeaconChainTypes, TErr> {
SignatureNotChecked(AttestationRef<'a, T::EthSpec>, TErr),
/// As for `SignatureNotChecked`, but we know the `IndexedAttestation`.
SignatureNotCheckedIndexed(IndexedAttestation, TErr),
+ /// As for `SignatureNotChecked`, but for the `SingleAttestation`.
+ SignatureNotCheckedSingle(&'a SingleAttestation, TErr),
/// The attestation's signature is invalid, so it will never be slashable.
SignatureInvalid(TErr),
/// The signature is valid but the attestation is invalid in some other way.
@@ -421,11 +427,12 @@ fn process_slash_info(
if let Some(slasher) = chain.slasher.as_ref() {
let (indexed_attestation, check_signature, err) = match slash_info {
SignatureNotChecked(attestation, err) => {
- if let Error::UnknownHeadBlock { .. } = err {
- if attestation.data().beacon_block_root == attestation.data().target.root {
- return err;
- }
+ if let Error::UnknownHeadBlock { .. } = err
+ && attestation.data().beacon_block_root == attestation.data().target.root
+ {
+ return err;
}
+
match obtain_indexed_attestation_and_committees_per_slot(chain, attestation) {
Ok((indexed, _)) => (indexed, true, err),
Err(e) => {
@@ -438,19 +445,43 @@ fn process_slash_info(
}
}
}
+ SignatureNotCheckedSingle(attestation, err) => {
+ if let Error::UnknownHeadBlock { .. } = err
+ && attestation.data.beacon_block_root == attestation.data.target.root
+ {
+ return err;
+ }
+
+ let fork_name = chain
+ .spec
+ .fork_name_at_slot::(attestation.data.slot);
+
+ let indexed_attestation = match attestation.to_indexed(fork_name) {
+ Ok(indexed) => indexed,
+ Err(e) => {
+ error!(
+ attestation_root = ?attestation.data.tree_hash_root(),
+ error = ?e,
+ "Unable to construct VariableList from a single attestation. \
+ This indicates a serious bug in SSZ handling"
+ );
+ return Error::SszTypesError(e);
+ }
+ };
+ (indexed_attestation, true, err)
+ }
SignatureNotCheckedIndexed(indexed, err) => (indexed, true, err),
SignatureInvalid(e) => return e,
SignatureValid(indexed, err) => (indexed, false, err),
};
- if check_signature {
- if let Err(e) = verify_attestation_signature(chain, &indexed_attestation) {
- debug!(
- error = ?e,
- "Signature verification for slasher failed"
- );
- return err;
- }
+ if check_signature && let Err(e) = verify_attestation_signature(chain, &indexed_attestation)
+ {
+ debug!(
+ error = ?e,
+ "Signature verification for slasher failed"
+ );
+ return err;
}
// Supply to slasher.
@@ -461,6 +492,7 @@ fn process_slash_info(
match slash_info {
SignatureNotChecked(_, e)
| SignatureNotCheckedIndexed(_, e)
+ | SignatureNotCheckedSingle(_, e)
| SignatureInvalid(e)
| SignatureValid(_, e) => e,
}
@@ -561,7 +593,7 @@ impl<'a, T: BeaconChainTypes> IndexedAggregatedAttestation<'a, T> {
//
// Attestations must be for a known block. If the block is unknown, we simply drop the
// attestation and do not delay consideration for later.
- let head_block = verify_head_block_is_known(chain, attestation, None)?;
+ let head_block = verify_head_block_is_known(chain, attestation.data(), None)?;
// Check the attestation target root is consistent with the head root.
//
@@ -570,7 +602,7 @@ impl<'a, T: BeaconChainTypes> IndexedAggregatedAttestation<'a, T> {
//
// Whilst this attestation *technically* could be used to add value to a block, it is
// invalid in the spirit of the protocol. Here we choose safety over profit.
- verify_attestation_target_root::(&head_block, attestation)?;
+ verify_attestation_target_root::(&head_block, attestation.data())?;
// Ensure that the attestation has participants.
if attestation.is_aggregation_bits_zero() {
@@ -593,7 +625,7 @@ impl<'a, T: BeaconChainTypes> IndexedAggregatedAttestation<'a, T> {
return Err(SignatureNotChecked(
signed_aggregate.message().aggregate(),
e,
- ))
+ ));
}
};
@@ -669,7 +701,7 @@ impl<'a, T: BeaconChainTypes> IndexedAggregatedAttestation<'a, T> {
return Err(SignatureNotChecked(
signed_aggregate.message().aggregate(),
e,
- ))
+ ));
}
};
Ok(IndexedAggregatedAttestation {
@@ -813,16 +845,16 @@ impl<'a, T: BeaconChainTypes> VerifiedAggregatedAttestation<'a, T> {
impl<'a, T: BeaconChainTypes> IndexedUnaggregatedAttestation<'a, T> {
/// Run the checks that happen before an indexed attestation is constructed.
pub fn verify_early_checks(
- attestation: AttestationRef,
+ attestation: &'a SingleAttestation,
chain: &BeaconChain,
) -> Result<(), Error> {
- let attestation_epoch = attestation.data().slot.epoch(T::EthSpec::slots_per_epoch());
+ let attestation_epoch = attestation.data.slot.epoch(T::EthSpec::slots_per_epoch());
// Check the attestation's epoch matches its target.
- if attestation_epoch != attestation.data().target.epoch {
+ if attestation_epoch != attestation.data.target.epoch {
return Err(Error::InvalidTargetEpoch {
- slot: attestation.data().slot,
- epoch: attestation.data().target.epoch,
+ slot: attestation.data.slot,
+ epoch: attestation.data.target.epoch,
});
}
@@ -832,61 +864,44 @@ impl<'a, T: BeaconChainTypes> IndexedUnaggregatedAttestation<'a, T> {
// We do not queue future attestations for later processing.
verify_propagation_slot_range::<_, T::EthSpec>(
&chain.slot_clock,
- attestation.data(),
+ &attestation.data,
&chain.spec,
)?;
- // Check to ensure that the attestation is "unaggregated". I.e., it has exactly one
- // aggregation bit set.
- let num_aggregation_bits = attestation.num_set_aggregation_bits();
- if num_aggregation_bits != 1 {
- return Err(Error::NotExactlyOneAggregationBitSet(num_aggregation_bits));
+ let fork_name = chain
+ .spec
+ .fork_name_at_slot::(attestation.data.slot);
+ if fork_name.electra_enabled() {
+ // [New in Electra:EIP7549]
+ if attestation.data.index != 0 {
+ return Err(Error::CommitteeIndexNonZero(
+ attestation.data.index as usize,
+ ));
+ }
}
- // [New in Electra:EIP7549]
- verify_committee_index(attestation)?;
-
// Attestations must be for a known block. If the block is unknown, we simply drop the
// attestation and do not delay consideration for later.
//
// Enforce a maximum skip distance for unaggregated attestations.
- let head_block =
- verify_head_block_is_known(chain, attestation, chain.config.import_max_skip_slots)?;
+ let head_block = verify_head_block_is_known(
+ chain,
+ &attestation.data,
+ chain.config.import_max_skip_slots,
+ )?;
// Check the attestation target root is consistent with the head root.
- verify_attestation_target_root::(&head_block, attestation)?;
+ verify_attestation_target_root::(&head_block, &attestation.data)?;
Ok(())
}
/// Run the checks that apply to the indexed attestation before the signature is checked.
pub fn verify_middle_checks(
- attestation: AttestationRef,
- indexed_attestation: &IndexedAttestation,
- committees_per_slot: u64,
- subnet_id: Option,
+ attestation: &'a SingleAttestation,
chain: &BeaconChain,
- ) -> Result<(u64, SubnetId), Error> {
- let expected_subnet_id = SubnetId::compute_subnet_for_attestation::(
- attestation,
- committees_per_slot,
- &chain.spec,
- )
- .map_err(BeaconChainError::from)?;
-
- // If a subnet was specified, ensure that subnet is correct.
- if let Some(subnet_id) = subnet_id {
- if subnet_id != expected_subnet_id {
- return Err(Error::InvalidSubnetId {
- received: subnet_id,
- expected: expected_subnet_id,
- });
- }
- };
-
- let validator_index = *indexed_attestation
- .attesting_indices_first()
- .ok_or(Error::NotExactlyOneAggregationBitSet(0))?;
+ ) -> Result {
+ let validator_index = attestation.attester_index;
/*
* The attestation is the first valid attestation received for the participating validator
@@ -895,16 +910,16 @@ impl<'a, T: BeaconChainTypes> IndexedUnaggregatedAttestation<'a, T> {
if chain
.observed_gossip_attesters
.read()
- .validator_has_been_observed(attestation.data().target.epoch, validator_index as usize)
+ .validator_has_been_observed(attestation.data.target.epoch, validator_index as usize)
.map_err(BeaconChainError::from)?
{
return Err(Error::PriorAttestationKnown {
validator_index,
- epoch: attestation.data().target.epoch,
+ epoch: attestation.data.target.epoch,
});
}
- Ok((validator_index, expected_subnet_id))
+ Ok(validator_index)
}
/// Returns `Ok(Self)` if the `attestation` is valid to be (re)published on the gossip
@@ -913,11 +928,11 @@ impl<'a, T: BeaconChainTypes> IndexedUnaggregatedAttestation<'a, T> {
/// `subnet_id` is the subnet from which we received this attestation. This function will
/// verify that it was received on the correct subnet.
pub fn verify(
- attestation: &'a Attestation,
+ attestation: &'a SingleAttestation,
subnet_id: Option,
chain: &BeaconChain,
) -> Result {
- Self::verify_slashable(attestation.to_ref(), subnet_id, chain)
+ 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());
@@ -928,31 +943,25 @@ impl<'a, T: BeaconChainTypes> IndexedUnaggregatedAttestation<'a, T> {
/// Verify the attestation, producing extra information about whether it might be slashable.
pub fn verify_slashable(
- attestation: AttestationRef<'a, T::EthSpec>,
+ attestation: &'a SingleAttestation,
subnet_id: Option,
chain: &BeaconChain,
) -> Result> {
use AttestationSlashInfo::*;
if let Err(e) = Self::verify_early_checks(attestation, chain) {
- return Err(SignatureNotChecked(attestation, e));
+ return Err(SignatureNotCheckedSingle(attestation, e));
}
- let (indexed_attestation, committees_per_slot) =
- match obtain_indexed_attestation_and_committees_per_slot(chain, attestation) {
- Ok(x) => x,
- Err(e) => {
- return Err(SignatureNotChecked(attestation, e));
- }
- };
+ let fork_name = chain
+ .spec
+ .fork_name_at_slot::(attestation.data.slot);
- let (validator_index, expected_subnet_id) = match Self::verify_middle_checks(
- attestation,
- &indexed_attestation,
- committees_per_slot,
- subnet_id,
- chain,
- ) {
+ let indexed_attestation = attestation
+ .to_indexed(fork_name)
+ .map_err(|e| SignatureNotCheckedSingle(attestation, Error::SszTypesError(e)))?;
+
+ let validator_index = match Self::verify_middle_checks(attestation, chain) {
Ok(t) => t,
Err(e) => return Err(SignatureNotCheckedIndexed(indexed_attestation, e)),
};
@@ -960,7 +969,7 @@ impl<'a, T: BeaconChainTypes> IndexedUnaggregatedAttestation<'a, T> {
Ok(Self {
attestation,
indexed_attestation,
- subnet_id: expected_subnet_id,
+ subnet_id,
validator_index,
})
}
@@ -977,10 +986,55 @@ impl<'a, T: BeaconChainTypes> IndexedUnaggregatedAttestation<'a, T> {
impl<'a, T: BeaconChainTypes> VerifiedUnaggregatedAttestation<'a, T> {
/// Run the checks that apply after the signature has been checked.
fn verify_late_checks(
- attestation: AttestationRef,
+ attestation: &'a SingleAttestation,
validator_index: u64,
+ subnet_id: Option,
chain: &BeaconChain,
- ) -> Result<(), Error> {
+ ) -> Result<(Attestation, SubnetId), Error> {
+ // Check that the attester is a member of the committee
+ let (committee_opt, committees_per_slot) = chain.with_committee_cache(
+ attestation.data.target.root,
+ attestation.data.slot.epoch(T::EthSpec::slots_per_epoch()),
+ |committee_cache, _| {
+ let committee_opt = committee_cache
+ .get_beacon_committee(attestation.data.slot, attestation.committee_index)
+ .map(|beacon_committee| beacon_committee.committee.to_vec());
+
+ Ok((committee_opt, committee_cache.committees_per_slot()))
+ },
+ )?;
+
+ let Some(committee) = committee_opt else {
+ return Err(Error::NoCommitteeForSlotAndIndex {
+ slot: attestation.data.slot,
+ index: attestation.committee_index,
+ });
+ };
+
+ if !committee.contains(&(attestation.attester_index as usize)) {
+ return Err(Error::AttesterNotInCommittee {
+ attester_index: attestation.attester_index,
+ committee_index: attestation.committee_index,
+ slot: attestation.data.slot,
+ });
+ }
+
+ let expected_subnet_id = SubnetId::compute_subnet_for_single_attestation::(
+ attestation,
+ committees_per_slot,
+ &chain.spec,
+ )
+ .map_err(BeaconChainError::from)?;
+
+ // If a subnet was specified, ensure that subnet is correct.
+ if let Some(subnet_id) = subnet_id
+ && subnet_id != expected_subnet_id
+ {
+ return Err(Error::InvalidSubnetId {
+ received: subnet_id,
+ expected: expected_subnet_id,
+ });
+ };
// Now that the attestation has been fully verified, store that we have received a valid
// attestation from this validator.
//
@@ -990,20 +1044,28 @@ impl<'a, T: BeaconChainTypes> VerifiedUnaggregatedAttestation<'a, T> {
if chain
.observed_gossip_attesters
.write()
- .observe_validator(attestation.data().target.epoch, validator_index as usize)
+ .observe_validator(attestation.data.target.epoch, validator_index as usize)
.map_err(BeaconChainError::from)?
{
return Err(Error::PriorAttestationKnown {
validator_index,
- epoch: attestation.data().target.epoch,
+ epoch: attestation.data.target.epoch,
});
}
- Ok(())
+
+ let fork_name = chain
+ .spec
+ .fork_name_at_slot::(attestation.data.slot);
+
+ let unaggregated_attestation =
+ single_attestation_to_attestation(attestation, &committee, fork_name)?;
+
+ Ok((unaggregated_attestation, expected_subnet_id))
}
/// Verify the `unaggregated_attestation`.
pub fn verify(
- unaggregated_attestation: &'a Attestation,
+ unaggregated_attestation: &'a SingleAttestation,
subnet_id: Option,
chain: &BeaconChain,
) -> Result {
@@ -1054,15 +1116,17 @@ impl<'a, T: BeaconChainTypes> VerifiedUnaggregatedAttestation<'a, T> {
CheckAttestationSignature::No => (),
};
- if let Err(e) = Self::verify_late_checks(attestation, validator_index, chain) {
- return Err(SignatureValid(indexed_attestation, e));
- }
+ let (unaggregated_attestation, subnet_id) =
+ match Self::verify_late_checks(attestation, validator_index, subnet_id, chain) {
+ Ok(a) => a,
+ Err(e) => return Err(SignatureValid(indexed_attestation, e)),
+ };
Ok(Self {
- attestation,
+ single_attestation: attestation,
+ attestation: unaggregated_attestation,
indexed_attestation,
subnet_id,
- validator_index: validator_index as usize,
})
}
@@ -1071,11 +1135,6 @@ impl<'a, T: BeaconChainTypes> VerifiedUnaggregatedAttestation<'a, T> {
self.subnet_id
}
- /// Returns the wrapped `attestation`.
- pub fn attestation(&self) -> AttestationRef {
- self.attestation
- }
-
/// Returns the wrapped `indexed_attestation`.
pub fn indexed_attestation(&self) -> &IndexedAttestation {
&self.indexed_attestation
@@ -1102,40 +1161,40 @@ impl<'a, T: BeaconChainTypes> VerifiedUnaggregatedAttestation<'a, T> {
/// already finalized.
fn verify_head_block_is_known(
chain: &BeaconChain,
- attestation: AttestationRef,
+ attestation_data: &AttestationData,
max_skip_slots: Option,
) -> Result {
let block_opt = chain
.canonical_head
.fork_choice_read_lock()
- .get_block(&attestation.data().beacon_block_root)
+ .get_block(&attestation_data.beacon_block_root)
.or_else(|| {
chain
.early_attester_cache
- .get_proto_block(attestation.data().beacon_block_root)
+ .get_proto_block(attestation_data.beacon_block_root)
});
if let Some(block) = block_opt {
// Reject any block that exceeds our limit on skipped slots.
- if let Some(max_skip_slots) = max_skip_slots {
- if attestation.data().slot > block.slot + max_skip_slots {
- return Err(Error::TooManySkippedSlots {
- head_block_slot: block.slot,
- attestation_slot: attestation.data().slot,
- });
- }
+ if let Some(max_skip_slots) = max_skip_slots
+ && attestation_data.slot > block.slot + max_skip_slots
+ {
+ return Err(Error::TooManySkippedSlots {
+ head_block_slot: block.slot,
+ attestation_slot: attestation_data.slot,
+ });
}
- if !verify_attestation_is_finalized_checkpoint_or_descendant(attestation.data(), chain) {
+ if !verify_attestation_is_finalized_checkpoint_or_descendant(attestation_data, chain) {
return Err(Error::HeadBlockFinalized {
- beacon_block_root: attestation.data().beacon_block_root,
+ beacon_block_root: attestation_data.beacon_block_root,
});
}
Ok(block)
- } else if chain.is_pre_finalization_block(attestation.data().beacon_block_root)? {
+ } else if chain.is_pre_finalization_block(attestation_data.beacon_block_root)? {
Err(Error::HeadBlockFinalized {
- beacon_block_root: attestation.data().beacon_block_root,
+ beacon_block_root: attestation_data.beacon_block_root,
})
} else {
// The block is either:
@@ -1145,7 +1204,7 @@ fn verify_head_block_is_known(
// 2) A post-finalization block that we don't know about yet. We'll queue
// the attestation until the block becomes available (or we time out).
Err(Error::UnknownHeadBlock {
- beacon_block_root: attestation.data().beacon_block_root,
+ beacon_block_root: attestation_data.beacon_block_root,
})
}
}
@@ -1237,11 +1296,11 @@ pub fn verify_attestation_signature(
/// `attestation.data.beacon_block_root`.
pub fn verify_attestation_target_root(
head_block: &ProtoBlock,
- attestation: AttestationRef,
+ attestation_data: &AttestationData,
) -> Result<(), Error> {
// Check the attestation target root.
let head_block_epoch = head_block.slot.epoch(E::slots_per_epoch());
- let attestation_epoch = attestation.data().slot.epoch(E::slots_per_epoch());
+ let attestation_epoch = attestation_data.slot.epoch(E::slots_per_epoch());
if head_block_epoch > attestation_epoch {
// The epoch references an invalid head block from a future epoch.
//
@@ -1254,7 +1313,7 @@ pub fn verify_attestation_target_root(
// Reference:
// https://github.com/ethereum/eth2.0-specs/pull/2001#issuecomment-699246659
return Err(Error::InvalidTargetRoot {
- attestation: attestation.data().target.root,
+ attestation: attestation_data.target.root,
// It is not clear what root we should expect in this case, since the attestation is
// fundamentally invalid.
expected: None,
@@ -1273,9 +1332,9 @@ pub fn verify_attestation_target_root(
};
// Reject any attestation with an invalid target root.
- if target_root != attestation.data().target.root {
+ if target_root != attestation_data.target.root {
return Err(Error::InvalidTargetRoot {
- attestation: attestation.data().target.root,
+ attestation: attestation_data.target.root,
expected: Some(target_root),
});
}
@@ -1312,7 +1371,7 @@ pub fn verify_signed_aggregate_signatures(
.spec
.fork_at_epoch(indexed_attestation.data().target.epoch);
- let signature_sets = vec![
+ let signature_sets = [
signed_aggregate_selection_proof_signature_set(
|validator_index| pubkey_cache.get(validator_index).map(Cow::Borrowed),
signed_aggregate,
diff --git a/beacon_node/beacon_chain/src/attestation_verification/batch.rs b/beacon_node/beacon_chain/src/attestation_verification/batch.rs
index 5f856140ba..c1087ef77e 100644
--- a/beacon_node/beacon_chain/src/attestation_verification/batch.rs
+++ b/beacon_node/beacon_chain/src/attestation_verification/batch.rs
@@ -13,7 +13,7 @@ use super::{
CheckAttestationSignature, Error, IndexedAggregatedAttestation, IndexedUnaggregatedAttestation,
VerifiedAggregatedAttestation, VerifiedUnaggregatedAttestation,
};
-use crate::{metrics, BeaconChain, BeaconChainError, BeaconChainTypes};
+use crate::{BeaconChain, BeaconChainError, BeaconChainTypes, metrics};
use bls::verify_signature_sets;
use state_processing::signature_sets::{
indexed_attestation_signature_set_from_pubkeys, signed_aggregate_selection_proof_signature_set,
@@ -136,7 +136,7 @@ pub fn batch_verify_unaggregated_attestations<'a, T, I>(
) -> Result, Error>>, Error>
where
T: BeaconChainTypes,
- I: Iterator- , Option)> + ExactSizeIterator,
+ I: Iterator
- )> + ExactSizeIterator,
{
let mut num_partially_verified = 0;
let mut num_failed = 0;
diff --git a/beacon_node/beacon_chain/src/attester_cache.rs b/beacon_node/beacon_chain/src/attester_cache.rs
index ae715afcd0..26a3389812 100644
--- a/beacon_node/beacon_chain/src/attester_cache.rs
+++ b/beacon_node/beacon_chain/src/attester_cache.rs
@@ -10,17 +10,18 @@
//! and penalties can be computed and the `state.current_justified_checkpoint` can be updated.
use crate::{BeaconChain, BeaconChainError, BeaconChainTypes};
+use fixed_bytes::FixedBytesExtended;
use parking_lot::RwLock;
-use state_processing::state_advance::{partial_state_advance, Error as StateAdvanceError};
+use state_processing::state_advance::{Error as StateAdvanceError, partial_state_advance};
use std::collections::HashMap;
use std::ops::Range;
use types::{
- attestation::Error as AttestationError,
+ BeaconState, BeaconStateError, ChainSpec, Checkpoint, Epoch, EthSpec, Hash256, RelativeEpoch,
+ Slot,
+ attestation::AttestationError,
beacon_state::{
compute_committee_index_in_epoch, compute_committee_range_in_epoch, epoch_committee_count,
},
- BeaconState, BeaconStateError, ChainSpec, Checkpoint, Epoch, EthSpec, FixedBytesExtended,
- Hash256, RelativeEpoch, Slot,
};
type JustifiedCheckpoint = Checkpoint;
@@ -365,11 +366,7 @@ impl AttesterCache {
value: AttesterCacheValue,
) {
while cache.len() >= MAX_CACHE_LEN {
- if let Some(oldest) = cache
- .iter()
- .map(|(key, _)| *key)
- .min_by_key(|key| key.epoch)
- {
+ if let Some(oldest) = cache.keys().copied().min_by_key(|key| key.epoch) {
cache.remove(&oldest);
} else {
break;
diff --git a/beacon_node/beacon_chain/src/beacon_block_reward.rs b/beacon_node/beacon_chain/src/beacon_block_reward.rs
index ecaa4f45e7..ac4ed2ab67 100644
--- a/beacon_node/beacon_chain/src/beacon_block_reward.rs
+++ b/beacon_node/beacon_chain/src/beacon_block_reward.rs
@@ -15,8 +15,8 @@ use state_processing::{
};
use std::collections::HashSet;
use store::{
- consts::altair::{PARTICIPATION_FLAG_WEIGHTS, PROPOSER_WEIGHT, WEIGHT_DENOMINATOR},
RelativeEpoch,
+ consts::altair::{PARTICIPATION_FLAG_WEIGHTS, PROPOSER_WEIGHT, WEIGHT_DENOMINATOR},
};
use tracing::error;
use types::{AbstractExecPayload, BeaconBlockRef, BeaconState, BeaconStateError, EthSpec};
diff --git a/beacon_node/beacon_chain/src/beacon_block_streamer.rs b/beacon_node/beacon_chain/src/beacon_block_streamer.rs
index 5339b12826..95144e65ec 100644
--- a/beacon_node/beacon_chain/src/beacon_block_streamer.rs
+++ b/beacon_node/beacon_chain/src/beacon_block_streamer.rs
@@ -1,14 +1,14 @@
-use crate::{metrics, BeaconChain, BeaconChainError, BeaconChainTypes, BlockProcessStatus};
+use crate::{BeaconChain, BeaconChainError, BeaconChainTypes, BlockProcessStatus, metrics};
use execution_layer::{ExecutionLayer, ExecutionPayloadBodyV1};
use logging::crit;
use std::collections::HashMap;
use std::sync::Arc;
use store::{DatabaseBlock, ExecutionPayloadDeneb};
use tokio::sync::{
- mpsc::{self, UnboundedSender},
RwLock,
+ mpsc::{self, UnboundedSender},
};
-use tokio_stream::{wrappers::UnboundedReceiverStream, Stream};
+use tokio_stream::{Stream, wrappers::UnboundedReceiverStream};
use tracing::{debug, error};
use types::{
ChainSpec, EthSpec, ExecPayload, ExecutionBlockHash, ForkName, Hash256, SignedBeaconBlock,
@@ -16,7 +16,7 @@ use types::{
};
use types::{
ExecutionPayload, ExecutionPayloadBellatrix, ExecutionPayloadCapella, ExecutionPayloadEip7805,
- ExecutionPayloadElectra, ExecutionPayloadFulu, ExecutionPayloadHeader,
+ ExecutionPayloadElectra, ExecutionPayloadFulu, ExecutionPayloadGloas, ExecutionPayloadHeader,
};
#[derive(PartialEq)]
@@ -102,12 +102,13 @@ fn reconstruct_default_header_block(
ForkName::Electra => ExecutionPayloadElectra::default().into(),
ForkName::Eip7805 => ExecutionPayloadEip7805::default().into(),
ForkName::Fulu => ExecutionPayloadFulu::default().into(),
+ ForkName::Gloas => ExecutionPayloadGloas::default().into(),
ForkName::Base | ForkName::Altair => {
return Err(Error::PayloadReconstruction(format!(
"Block with fork variant {} has execution payload",
fork
))
- .into())
+ .into());
}
};
@@ -404,7 +405,7 @@ impl BeaconBlockStreamer {
if self.check_caches == CheckCaches::Yes {
match self.beacon_chain.get_block_process_status(&root) {
BlockProcessStatus::Unknown => None,
- BlockProcessStatus::NotValidated(block)
+ BlockProcessStatus::NotValidated(block, _)
| BlockProcessStatus::ExecutionValidated(block) => {
metrics::inc_counter(&metrics::BEACON_REQRESP_PRE_IMPORT_CACHE_HITS);
Some(block)
@@ -684,14 +685,14 @@ impl From for BeaconChainError {
#[cfg(test)]
mod tests {
use crate::beacon_block_streamer::{BeaconBlockStreamer, CheckCaches};
- use crate::test_utils::{test_spec, BeaconChainHarness, EphemeralHarnessType};
+ use crate::test_utils::{BeaconChainHarness, EphemeralHarnessType, test_spec};
+ use bls::Keypair;
use execution_layer::test_utils::Block;
+ use fixed_bytes::FixedBytesExtended;
use std::sync::Arc;
use std::sync::LazyLock;
use tokio::sync::mpsc;
- use types::{
- ChainSpec, Epoch, EthSpec, FixedBytesExtended, Hash256, Keypair, MinimalEthSpec, Slot,
- };
+ use types::{ChainSpec, Epoch, EthSpec, Hash256, MinimalEthSpec, Slot};
const VALIDATOR_COUNT: usize = 48;
@@ -715,6 +716,7 @@ mod tests {
harness
}
+ // TODO(EIP-7732) Extend this test for gloas
#[tokio::test]
async fn check_all_blocks_from_altair_to_fulu() {
let slots_per_epoch = MinimalEthSpec::slots_per_epoch() as usize;
diff --git a/beacon_node/beacon_chain/src/beacon_chain.rs b/beacon_node/beacon_chain/src/beacon_chain.rs
index b99bdc1674..8494a54b44 100644
--- a/beacon_node/beacon_chain/src/beacon_chain.rs
+++ b/beacon_node/beacon_chain/src/beacon_chain.rs
@@ -1,25 +1,27 @@
use crate::attestation_verification::{
- batch_verify_aggregated_attestations, batch_verify_unaggregated_attestations,
Error as AttestationError, VerifiedAggregatedAttestation, VerifiedAttestation,
- VerifiedUnaggregatedAttestation,
+ VerifiedUnaggregatedAttestation, batch_verify_aggregated_attestations,
+ batch_verify_unaggregated_attestations,
};
use crate::attester_cache::{AttesterCache, AttesterCacheKey};
use crate::beacon_block_streamer::{BeaconBlockStreamer, CheckCaches};
-use crate::beacon_proposer_cache::compute_proposer_duties_from_head;
-use crate::beacon_proposer_cache::BeaconProposerCache;
+use crate::beacon_proposer_cache::{
+ BeaconProposerCache, EpochBlockProposers, ensure_state_can_determine_proposers_for_epoch,
+};
use crate::blob_verification::{GossipBlobError, GossipVerifiedBlob};
use crate::block_times_cache::BlockTimesCache;
use crate::block_verification::POS_PANDA_BANNER;
use crate::block_verification::{
+ BlockError, ExecutionPendingBlock, GossipVerifiedBlock, IntoExecutionPendingBlock,
check_block_is_finalized_checkpoint_or_descendant, check_block_relevancy,
- signature_verify_chain_segment, verify_header_signature, BlockError, ExecutionPendingBlock,
- GossipVerifiedBlock, IntoExecutionPendingBlock,
+ signature_verify_chain_segment, verify_header_signature,
};
use crate::block_verification_types::{
AsBlock, AvailableExecutedBlock, BlockImportData, ExecutedBlock, RpcBlock,
};
pub use crate::canonical_head::CanonicalHead;
use crate::chain_config::ChainConfig;
+use crate::custody_context::CustodyContextSsz;
use crate::data_availability_checker::{
Availability, AvailabilityCheckError, AvailableBlock, AvailableBlockData,
DataAvailabilityChecker, DataColumnReconstructionResult,
@@ -27,15 +29,12 @@ use crate::data_availability_checker::{
use crate::data_column_verification::{GossipDataColumnError, GossipVerifiedDataColumn};
use crate::early_attester_cache::EarlyAttesterCache;
use crate::errors::{BeaconChainError as Error, BlockProductionError};
-use crate::eth1_chain::{Eth1Chain, Eth1ChainBackend};
-use crate::eth1_finalization_cache::{Eth1FinalizationCache, Eth1FinalizationData};
use crate::events::ServerSentEventHandler;
-use crate::execution_payload::{get_execution_payload, NotifyExecutionLayer, PreparePayloadHandle};
+use crate::execution_payload::{NotifyExecutionLayer, PreparePayloadHandle, get_execution_payload};
use crate::fetch_blobs::EngineGetBlobsOutput;
use crate::fork_choice_signal::{ForkChoiceSignalRx, ForkChoiceSignalTx, ForkChoiceWaitResult};
-use crate::graffiti_calculator::GraffitiCalculator;
-use crate::inclusion_list_verification::GossipInclusionListError;
-use crate::inclusion_list_verification::GossipVerifiedInclusionList;
+use crate::graffiti_calculator::{GraffitiCalculator, GraffitiSettings};
+use crate::inclusion_list_verification::{GossipInclusionListError, GossipVerifiedInclusionList};
use crate::kzg_utils::reconstruct_blobs;
use crate::light_client_finality_update_verification::{
Error as LightClientFinalityUpdateError, VerifiedLightClientFinalityUpdate,
@@ -60,6 +59,7 @@ use crate::observed_data_sidecars::ObservedDataSidecars;
use crate::observed_operations::{ObservationOutcome, ObservedOperations};
use crate::observed_slashable::ObservedSlashable;
use crate::persisted_beacon_chain::PersistedBeaconChain;
+use crate::persisted_custody::persist_custody_context;
use crate::persisted_fork_choice::PersistedForkChoice;
use crate::pre_finalization_cache::PreFinalizationBlockCache;
use crate::shuffling_cache::{BlockShufflingIds, ShufflingCache};
@@ -67,28 +67,32 @@ use crate::sync_committee_verification::{
Error as SyncCommitteeError, VerifiedSyncCommitteeMessage, VerifiedSyncContribution,
};
use crate::validator_monitor::{
- get_slot_delay_ms, timestamp_now, ValidatorMonitor,
- HISTORIC_EPOCHS as VALIDATOR_MONITOR_HISTORIC_EPOCHS,
+ HISTORIC_EPOCHS as VALIDATOR_MONITOR_HISTORIC_EPOCHS, ValidatorMonitor, get_slot_delay_ms,
+ timestamp_now,
};
use crate::validator_pubkey_cache::ValidatorPubkeyCache;
use crate::{
- kzg_utils, metrics, AvailabilityPendingExecutedBlock, BeaconChainError, BeaconForkChoiceStore,
- BeaconSnapshot, CachedHead,
+ AvailabilityPendingExecutedBlock, BeaconChainError, BeaconForkChoiceStore, BeaconSnapshot,
+ CachedHead, metrics,
};
+use bls::{PublicKey, PublicKeyBytes, Signature};
+use eth2::beacon_response::ForkVersionedResponse;
use eth2::types::{
- EventKind, SseBlobSidecar, SseBlock, SseExtendedPayloadAttributes, SseInclusionList,
+ EventKind, SseBlobSidecar, SseBlock, SseDataColumnSidecar, SseExtendedPayloadAttributes,
+ SseInclusionList,
};
use execution_layer::{
BlockProposalContents, BlockProposalContentsType, BuilderParams, ChainHealth, ExecutionLayer,
FailedCondition, PayloadAttributes, PayloadStatus,
};
+use fixed_bytes::FixedBytesExtended;
use fork_choice::{
AttestationFromBlock, ExecutionStatus, ForkChoice, ForkchoiceUpdateParameters,
InvalidationOperation, PayloadVerificationStatus, ResetPayloadStatuses,
};
use futures::channel::mpsc::Sender;
-use itertools::process_results;
use itertools::Itertools;
+use itertools::process_results;
use kzg::Kzg;
use logging::crit;
use operation_pool::{
@@ -102,16 +106,16 @@ use slasher::Slasher;
use slot_clock::SlotClock;
use ssz::Encode;
use state_processing::{
+ BlockSignatureStrategy, ConsensusContext, SigVerifiedOp, VerifyBlockRoot, VerifyOperation,
common::get_attesting_indices_from_state,
epoch_cache::initialize_epoch_cache,
per_block_processing,
per_block_processing::{
- errors::AttestationValidationError, get_expected_withdrawals,
- verify_attestation_for_block_inclusion, VerifySignatures,
+ VerifySignatures, errors::AttestationValidationError, get_expected_withdrawals,
+ verify_attestation_for_block_inclusion,
},
per_slot_processing,
state_advance::{complete_state_advance, partial_state_advance},
- BlockSignatureStrategy, ConsensusContext, SigVerifiedOp, VerifyBlockRoot, VerifyOperation,
};
use std::borrow::Cow;
use std::cmp::Ordering;
@@ -123,12 +127,12 @@ use std::sync::Arc;
use std::time::Duration;
use store::iter::{BlockRootsIterator, ParentRootBlockIterator, StateRootsIterator};
use store::{
- BlobSidecarListFromRoot, DatabaseBlock, Error as DBError, HotColdDB, HotStateSummary,
+ BlobSidecarListFromRoot, DBColumn, DatabaseBlock, Error as DBError, HotColdDB, HotStateSummary,
KeyValueStore, KeyValueStoreOp, StoreItem, StoreOp,
};
-use task_executor::{ShutdownReason, TaskExecutor};
+use task_executor::{RayonPoolType, ShutdownReason, TaskExecutor};
use tokio_stream::Stream;
-use tracing::{debug, error, info, trace, warn};
+use tracing::{Span, debug, debug_span, error, info, info_span, instrument, trace, warn};
use tree_hash::TreeHash;
use types::blob_sidecar::FixedBlobSidecarList;
use types::data_column_sidecar::ColumnIndex;
@@ -143,7 +147,6 @@ type HashBlockTuple = (Hash256, RpcBlock);
// These keys are all zero because they get stored in different columns, see `DBColumn` type.
pub const BEACON_CHAIN_DB_KEY: Hash256 = Hash256::ZERO;
pub const OP_POOL_DB_KEY: Hash256 = Hash256::ZERO;
-pub const ETH1_CACHE_DB_KEY: Hash256 = Hash256::ZERO;
pub const FORK_CHOICE_DB_KEY: Hash256 = Hash256::ZERO;
/// Defines how old a block can be before it's no longer a candidate for the early attester cache.
@@ -312,7 +315,6 @@ pub trait BeaconChainTypes: Send + Sync + 'static {
type HotStore: store::ItemStore;
type ColdStore: store::ItemStore;
type SlotClock: slot_clock::SlotClock;
- type Eth1Chain: Eth1ChainBackend;
type EthSpec: types::EthSpec;
}
@@ -338,16 +340,12 @@ pub enum BlockProcessStatus {
/// Block is not in any pre-import cache. Block may be in the data-base or in the fork-choice.
Unknown,
/// Block is currently processing but not yet validated.
- NotValidated(Arc>),
+ NotValidated(Arc>, BlockImportSource),
/// Block is fully valid, but not yet imported. It's cached in the da_checker while awaiting
/// missing block components.
ExecutionValidated(Arc>),
}
-pub struct BeaconChainMetrics {
- pub reqresp_pre_import_cache_len: usize,
-}
-
pub type LightClientProducerEvent = (Hash256, Slot, SyncAggregate);
pub type BeaconForkChoice = ForkChoice<
@@ -367,9 +365,6 @@ pub type BeaconStore = Arc<
>,
>;
-/// Cache gossip verified blocks to serve over ReqResp before they are imported
-type ReqRespPreImportCache = HashMap>>;
-
/// Represents the "Beacon Chain" component of Ethereum 2.0. Allows import of blocks and block
/// operations and chooses a canonical head.
pub struct BeaconChain {
@@ -436,8 +431,6 @@ pub struct BeaconChain {
/// Maintains a record of which validators we've seen BLS to execution changes for.
pub observed_bls_to_execution_changes:
Mutex>,
- /// Provides information from the Ethereum 1 (PoW) chain.
- pub eth1_chain: Option>,
/// Interfaces with the execution client.
pub execution_layer: Option>,
/// Stores information about the canonical head and finalized/justified checkpoints of the
@@ -460,8 +453,6 @@ pub struct BeaconChain {
pub event_handler: Option>,
/// Caches the attester shuffling for a given epoch and shuffling key root.
pub shuffling_cache: RwLock,
- /// A cache of eth1 deposit data at epoch boundaries for deposit finalization
- pub eth1_finalization_cache: RwLock,
/// Caches the beacon block proposer shuffling for a given epoch and shuffling key root.
pub beacon_proposer_cache: Arc>,
/// Caches a map of `validator_index -> validator_pubkey`.
@@ -472,8 +463,6 @@ pub struct BeaconChain {
pub early_attester_cache: EarlyAttesterCache,
/// A cache used to store verified/equivocating inclusion lists.
pub inclusion_list_cache: RwLock>,
- /// Cache gossip verified blocks to serve over ReqResp before they are imported
- pub reqresp_pre_import_cache: Arc>>,
/// A cache used to keep track of various block timings.
pub block_times_cache: Arc>,
/// A cache used to track pre-finalization block roots for quick rejection.
@@ -628,12 +617,15 @@ impl BeaconChain {
reset_payload_statuses: ResetPayloadStatuses,
spec: &ChainSpec,
) -> Result