From 819384053f407078dbccfd382499f73de49ef032 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 17 Oct 2024 13:05:30 +0000 Subject: [PATCH 01/16] build(deps): bump Swatinem/rust-cache in the devops group (#8938) Bumps the devops group with 1 update: [Swatinem/rust-cache](https://github.com/swatinem/rust-cache). Updates `Swatinem/rust-cache` from 2.7.3 to 2.7.5 - [Release notes](https://github.com/swatinem/rust-cache/releases) - [Changelog](https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md) - [Commits](https://github.com/swatinem/rust-cache/compare/v2.7.3...v2.7.5) --- updated-dependencies: - dependency-name: Swatinem/rust-cache dependency-type: direct:production update-type: version-update:semver-patch dependency-group: devops ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci-lint.yml | 4 ++-- .github/workflows/ci-unit-tests-os.yml | 4 ++-- .github/workflows/docs-deploy-firebase.yml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci-lint.yml b/.github/workflows/ci-lint.yml index 4fb148e1b38..b9966de9058 100644 --- a/.github/workflows/ci-lint.yml +++ b/.github/workflows/ci-lint.yml @@ -93,7 +93,7 @@ jobs: run: | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain=stable --profile=default - - uses: Swatinem/rust-cache@v2.7.3 + - uses: Swatinem/rust-cache@v2.7.5 with: shared-key: "clippy-cargo-lock" @@ -138,7 +138,7 @@ jobs: # We don't cache `fmt` outputs because the job is quick, # and we want to use the limited GitHub actions cache space for slower jobs. - #- uses: Swatinem/rust-cache@v2.7.3 + #- uses: Swatinem/rust-cache@v2.7.5 - run: | cargo fmt --all -- --check diff --git a/.github/workflows/ci-unit-tests-os.yml b/.github/workflows/ci-unit-tests-os.yml index 372cef69218..7c194c51c5e 100644 --- a/.github/workflows/ci-unit-tests-os.yml +++ b/.github/workflows/ci-unit-tests-os.yml @@ -112,7 +112,7 @@ jobs: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain=${{ matrix.rust }} --profile=minimal - - uses: Swatinem/rust-cache@v2.7.3 + - uses: Swatinem/rust-cache@v2.7.5 # TODO: change Rust cache target directory on Windows, # or remove this workaround once the build is more efficient (#3005). #with: @@ -221,7 +221,7 @@ jobs: run: | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain=stable --profile=minimal - - uses: Swatinem/rust-cache@v2.7.3 + - uses: Swatinem/rust-cache@v2.7.5 with: shared-key: "clippy-cargo-lock" diff --git a/.github/workflows/docs-deploy-firebase.yml b/.github/workflows/docs-deploy-firebase.yml index 9da2c869f94..1c8ce7fd773 100644 --- a/.github/workflows/docs-deploy-firebase.yml +++ b/.github/workflows/docs-deploy-firebase.yml @@ -155,7 +155,7 @@ jobs: run: | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain=beta --profile=default - - uses: Swatinem/rust-cache@v2.7.3 + - uses: Swatinem/rust-cache@v2.7.5 - name: Build internal docs run: | From cc78b6ae10bc81feaf17d3f08802f79dc423c06b Mon Sep 17 00:00:00 2001 From: Gustavo Valverde Date: Thu, 17 Oct 2024 14:08:05 +0100 Subject: [PATCH 02/16] ref(actions): allow more flexibility on cached states usage (#8908) * ref(actions): allow more flexibility on cached states usage * chore: improve message * fix(actions): deploy single instances even if no cached state is needed * rev: apply suggestions from code review Co-authored-by: Marek * fix: wrong use of `failure()` * chore: remove extra file * chore: `echo` the pattern for easier debugging * chore: add extra details to image naming convention Addresses https://github.com/ZcashFoundation/zebra/pull/8908#discussion_r1797679586 * ref(actions): use a better logic for disk image selection This supersedes https://github.com/ZcashFoundation/zebra/pull/8936/ using a different approach with `${VAR:-value}` --------- Co-authored-by: Marek --- .github/workflows/cd-deploy-nodes-gcp.yml | 58 ++++++++++++++----- .../workflows/scripts/gcp-get-cached-disks.sh | 49 +++++++--------- .../sub-deploy-integration-tests-gcp.yml | 1 + .github/workflows/sub-find-cached-disks.yml | 22 +++++-- 4 files changed, 81 insertions(+), 49 deletions(-) diff --git a/.github/workflows/cd-deploy-nodes-gcp.yml b/.github/workflows/cd-deploy-nodes-gcp.yml index c096d531ddf..784f40952c0 100644 --- a/.github/workflows/cd-deploy-nodes-gcp.yml +++ b/.github/workflows/cd-deploy-nodes-gcp.yml @@ -30,17 +30,39 @@ on: workflow_dispatch: inputs: network: - default: 'Mainnet' + default: Mainnet description: 'Network to deploy: Mainnet or Testnet' required: true - log_file: - default: '' - description: 'Log to a file path rather than standard output' + type: choice + options: + - Mainnet + - Testnet + cached_disk_type: + default: tip + description: 'Type of cached disk to use' + required: true + type: choice + options: + - tip + - checkpoint + prefer_main_cached_state: + default: false + description: 'Prefer cached state from the main branch' + required: false + type: boolean + no_cached_disk: + default: false + description: 'Do not use a cached state disk' + required: false + type: boolean no_cache: description: 'Disable the Docker cache for this build' required: false type: boolean default: false + log_file: + default: '' + description: 'Log to a file path rather than standard output' push: # Skip main branch updates where Rust code and dependencies aren't modified. @@ -175,18 +197,19 @@ jobs: test_variables: '-e NETWORK -e ZEBRA_CONF_PATH="zebrad/tests/common/configs/v1.0.0-rc.2.toml"' network: ${{ inputs.network || vars.ZCASH_NETWORK }} - # Finds a `tip` cached state disk for zebra from the main branch + # Finds a cached state disk for zebra # # Passes the disk name to subsequent jobs using `cached_disk_name` output # get-disk-name: name: Get disk name uses: ./.github/workflows/sub-find-cached-disks.yml + if: ${{ !inputs.no_cached_disk && github.event_name == 'workflow_dispatch' }} with: network: ${{ inputs.network || vars.ZCASH_NETWORK }} disk_prefix: zebrad-cache - disk_suffix: tip - prefer_main_cached_state: true + disk_suffix: ${{ inputs.cached_disk_type || 'tip' }} + prefer_main_cached_state: ${{ inputs.prefer_main_cached_state || (github.event_name == 'push' && github.ref_name == 'main' && true) || false }} # Deploy Managed Instance Groups (MiGs) for Mainnet and Testnet, # with one node in the configured GCP region. @@ -250,14 +273,14 @@ jobs: - name: Set up Cloud SDK uses: google-github-actions/setup-gcloud@v2.1.1 - # TODO we should implement the fixes from https://github.com/ZcashFoundation/zebra/pull/5670 here - # but the implementation is failing as it's requiring the disk names, contrary to what is stated in the official documentation - name: Create instance template for ${{ matrix.network }} run: | - NAME="zebrad-cache-${{ env.GITHUB_HEAD_REF_SLUG_URL || env.GITHUB_REF_SLUG_URL }}-${{ env.GITHUB_SHA_SHORT }}-${NETWORK}" - DISK_PARAMS="name=${NAME},device-name=${NAME},size=400GB,type=pd-ssd" + DISK_NAME="zebrad-cache-${{ env.GITHUB_HEAD_REF_SLUG_URL || env.GITHUB_REF_SLUG_URL }}-${{ env.GITHUB_SHA_SHORT }}-${NETWORK}" + DISK_PARAMS="name=${DISK_NAME},device-name=${DISK_NAME},size=400GB,type=pd-ssd" if [ -n "${{ env.CACHED_DISK_NAME }}" ]; then DISK_PARAMS+=",image=${{ env.CACHED_DISK_NAME }}" + elif [ ${{ inputs.no_cached_disk && github.event_name == 'workflow_dispatch' }} ]; then + echo "No cached disk required" else echo "No cached disk found for ${{ matrix.network }} in main branch" exit 1 @@ -270,7 +293,7 @@ jobs: --image-family=cos-stable \ --network-interface=subnet=${{ vars.GCP_SUBNETWORK }} \ --create-disk="${DISK_PARAMS}" \ - --container-mount-disk=mount-path='/var/cache/zebrad-cache',name=${NAME},mode=rw \ + --container-mount-disk=mount-path='/var/cache/zebrad-cache',name=${DISK_NAME},mode=rw \ --container-stdin \ --container-tty \ --container-image ${{ vars.GAR_BASE }}/zebrad@${{ needs.build.outputs.image_digest }} \ @@ -326,7 +349,8 @@ jobs: permissions: contents: 'read' id-token: 'write' - if: github.event_name == 'workflow_dispatch' + # Run even if we don't need a cached disk, but only when triggered by a workflow_dispatch + if: ${{ !failure() && github.event_name == 'workflow_dispatch' }} steps: - uses: actions/checkout@v4.2.1 @@ -363,10 +387,12 @@ jobs: # Create instance template from container image - name: Manual deploy of a single ${{ inputs.network }} instance running zebrad run: | - NAME="zebrad-cache-${{ env.GITHUB_HEAD_REF_SLUG_URL || env.GITHUB_REF_SLUG_URL }}-${{ env.GITHUB_SHA_SHORT }}-${NETWORK}" - DISK_PARAMS="name=${NAME},device-name=${NAME},size=400GB,type=pd-ssd" + DISK_NAME="zebrad-cache-${{ env.GITHUB_HEAD_REF_SLUG_URL || env.GITHUB_REF_SLUG_URL }}-${{ env.GITHUB_SHA_SHORT }}-${NETWORK}" + DISK_PARAMS="name=${DISK_NAME},device-name=${DISK_NAME},size=400GB,type=pd-ssd" if [ -n "${{ env.CACHED_DISK_NAME }}" ]; then DISK_PARAMS+=",image=${{ env.CACHED_DISK_NAME }}" + elif [ ${{ inputs.no_cached_disk && github.event_name == 'workflow_dispatch' }} ]; then + echo "No cached disk required" else echo "No cached disk found for ${{ matrix.network }} in main branch" exit 1 @@ -379,7 +405,7 @@ jobs: --image-family=cos-stable \ --network-interface=subnet=${{ vars.GCP_SUBNETWORK }} \ --create-disk="${DISK_PARAMS}" \ - --container-mount-disk=mount-path='/var/cache/zebrad-cache',name=${NAME},mode=rw \ + --container-mount-disk=mount-path='/var/cache/zebrad-cache',name=${DISK_NAME},mode=rw \ --container-stdin \ --container-tty \ --container-image ${{ vars.GAR_BASE }}/zebrad@${{ needs.build.outputs.image_digest }} \ diff --git a/.github/workflows/scripts/gcp-get-cached-disks.sh b/.github/workflows/scripts/gcp-get-cached-disks.sh index 0f38addf10f..9716dc9f5a7 100755 --- a/.github/workflows/scripts/gcp-get-cached-disks.sh +++ b/.github/workflows/scripts/gcp-get-cached-disks.sh @@ -3,9 +3,9 @@ # This script finds a cached Google Cloud Compute image based on specific criteria. # # If there are multiple disks: -# - prefer images generated from the same commit, then -# - if prefer_main_cached_state is true, prefer images from the `main` branch, then -# - use any images from any other branch or commit. +# - if `PREFER_MAIN_CACHED_STATE` is "true", then select an image from the `main` branch, else +# - try to find a cached disk image from the current branch (or PR), else +# - try to find an image from any branch. # # Within each of these categories: # - prefer newer images to older images @@ -20,7 +20,7 @@ echo "Extracting local state version..." LOCAL_STATE_VERSION=$(grep -oE "DATABASE_FORMAT_VERSION: .* [0-9]+" "${GITHUB_WORKSPACE}/zebra-state/src/constants.rs" | grep -oE "[0-9]+" | tail -n1) echo "STATE_VERSION: ${LOCAL_STATE_VERSION}" -# Function to find a cached disk image based on the git pattern (commit, main, or any branch) +# Function to find a cached disk image based on the git pattern (branch, main, or any branch) find_cached_disk_image() { local git_pattern="${1}" local git_source="${2}" @@ -34,40 +34,36 @@ find_cached_disk_image() { echo "Found ${git_source} Disk: ${disk_name}" >&2 disk_description=$(gcloud compute images describe "${disk_name}" --format="value(DESCRIPTION)") echo "Description: ${disk_description}" >&2 - echo "${disk_name}" # This is the actual return value when a disk is found + echo "${disk_name}" # This is the actual return value when a disk is found else - echo "No ${git_source} disk found." >&2 + echo "No ${git_source} disk found with '${disk_search_pattern}' pattern." >&2 fi } -# Check if both $DISK_PREFIX and $DISK_SUFFIX are set, as they are required to find a cached disk image +# Check if both $DISK_PREFIX and $DISK_SUFFIX are set, as they are required to +# find a cached disk image. if [[ -n "${DISK_PREFIX}" && -n "${DISK_SUFFIX}" ]]; then # Find the most suitable cached disk image - echo "Finding the most suitable cached disk image..." + echo "Finding a ${DISK_PREFIX}-${DISK_SUFFIX} disk image for ${NETWORK}..." CACHED_DISK_NAME="" - # First, try to find a cached disk image from the current commit - CACHED_DISK_NAME=$(find_cached_disk_image ".+-${GITHUB_SHA_SHORT}" "commit") - - # If no cached disk image is found - if [[ -z "${CACHED_DISK_NAME}" ]]; then - # Check if main branch images are preferred - if [[ "${PREFER_MAIN_CACHED_STATE}" == "true" ]]; then - CACHED_DISK_NAME=$(find_cached_disk_image "main-[0-9a-f]+" "main branch") - # Else, try to find one from any branch - else - CACHED_DISK_NAME=$(find_cached_disk_image ".+-[0-9a-f]+" "any branch") - fi + # Try to find an image based on the `main` branch if that branch is preferred. + if [[ "${PREFER_MAIN_CACHED_STATE}" == "true" ]]; then + CACHED_DISK_NAME=$(find_cached_disk_image "main-[0-9a-f]+" "main branch") fi + # If no image was found, try to find one from the current branch (or PR). + CACHED_DISK_NAME=${CACHED_DISK_NAME:-$(find_cached_disk_image ".+-${GITHUB_REF}" "branch")} + # If we still have no image, try to find one from any branch. + CACHED_DISK_NAME=${CACHED_DISK_NAME:-$(find_cached_disk_image ".+-[0-9a-f]+" "any branch")} - # Handle case where no suitable disk image is found + # Handle the case where no suitable disk image is found if [[ -z "${CACHED_DISK_NAME}" ]]; then - echo "No suitable cached state disk available." - echo "Cached state test jobs must depend on the cached state rebuild job." + echo "No suitable cached state disk available. Try running the cached state rebuild job." exit 1 + else + echo "Selected Disk: ${CACHED_DISK_NAME}" fi - echo "Selected Disk: ${CACHED_DISK_NAME}" else echo "DISK_PREFIX or DISK_SUFFIX is not set. Skipping disk image search." fi @@ -77,7 +73,6 @@ find_available_disk_type() { local base_name="${1}" local disk_type="${2}" local disk_pattern="${base_name}-cache" - local output_var="${base_name}_${disk_type}_disk" local disk_name disk_name=$(gcloud compute images list --filter="status=READY AND name~${disk_pattern}-.+-[0-9a-f]+-v${LOCAL_STATE_VERSION}-${NETWORK}-${disk_type}" --format="value(NAME)" --sort-by=~creationTimestamp --limit=1) @@ -87,10 +82,10 @@ find_available_disk_type() { echo "Found ${disk_type^^} disk: ${disk_name} for ${base_name^^} on network: ${NETWORK}" >&2 disk_description=$(gcloud compute images describe "${disk_name}" --format="value(DESCRIPTION)") echo "Description: ${disk_description}" >&2 - echo "true" # This is the actual return value when a disk is found + echo "true" # This is the actual return value when a disk is found else echo "No ${disk_type^^} disk found for ${base_name^^} on network: ${NETWORK}" >&2 - echo "false" # This is the actual return value when no disk is found + echo "false" # This is the actual return value when no disk is found fi } if [[ -n "${NETWORK}" ]]; then diff --git a/.github/workflows/sub-deploy-integration-tests-gcp.yml b/.github/workflows/sub-deploy-integration-tests-gcp.yml index fb880a8a369..7266f60ea54 100644 --- a/.github/workflows/sub-deploy-integration-tests-gcp.yml +++ b/.github/workflows/sub-deploy-integration-tests-gcp.yml @@ -654,6 +654,7 @@ jobs: # (This is unlikely, because each image created by a workflow has a different name.) # # The image name must also be 63 characters or less. + # More info: https://cloud.google.com/compute/docs/naming-resources#resource-name-format # # Force the image creation (--force) as the disk is still attached even though is not being # used by the container. diff --git a/.github/workflows/sub-find-cached-disks.yml b/.github/workflows/sub-find-cached-disks.yml index c936d65f8bd..a71237887e2 100644 --- a/.github/workflows/sub-find-cached-disks.yml +++ b/.github/workflows/sub-find-cached-disks.yml @@ -74,20 +74,30 @@ jobs: - name: Set up Cloud SDK uses: google-github-actions/setup-gcloud@v2.1.1 + # Performs formatting on disk name components. + # # Disk images in GCP are required to be in lowercase, but the blockchain network - # uses sentence case, so we need to downcase ${{ inputs.network }} + # uses sentence case, so we need to downcase ${{ inputs.network }}. + # + # Disk image names in GCP are limited to 63 characters, so we need to limit + # branch names to 12 characters. + # Check the `create-state-image` in `sub-deploy-integration-tests-gcp.yml` for more details in image names. + # More info: https://cloud.google.com/compute/docs/naming-resources#resource-name-format # - # Passes a lowercase Network name to subsequent steps using $NETWORK env variable - - name: Downcase network name for disks + # Passes ${{ inputs.network }} to subsequent steps using $NETWORK env variable. + # Passes ${{ env.GITHUB_REF_SLUG_URL }} to subsequent steps using $SHORT_GITHUB_REF env variable. + - name: Format network name and branch name for disks run: | - NETWORK_CAPS=${{ inputs.network }} - echo "NETWORK=${NETWORK_CAPS,,}" >> $GITHUB_ENV + NETWORK_CAPS="${{ inputs.network }}" + echo "NETWORK=${NETWORK_CAPS,,}" >> "$GITHUB_ENV" + LONG_GITHUB_REF="${{ env.GITHUB_REF_SLUG_URL }}" + echo "SHORT_GITHUB_REF=${LONG_GITHUB_REF:0:12}" >> "$GITHUB_ENV" # Check if there are cached state disks available for subsequent jobs to use. - name: Check if cached state disks exists id: get-available-disks env: - GITHUB_SHA_SHORT: ${{ env.GITHUB_SHA_SHORT }} + GITHUB_REF: ${{ env.SHORT_GITHUB_REF }} NETWORK: ${{ env.NETWORK }} # use lowercase version from env, not input DISK_PREFIX: ${{ inputs.disk_prefix }} DISK_SUFFIX: ${{ inputs.disk_suffix }} From a182ffe098ada403296c7c17f1eefcfeca813a49 Mon Sep 17 00:00:00 2001 From: Gustavo Valverde Date: Thu, 17 Oct 2024 16:22:00 +0100 Subject: [PATCH 03/16] fix(actions): run `get-disk-name` on all workflow events (#8942) --- .github/workflows/cd-deploy-nodes-gcp.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd-deploy-nodes-gcp.yml b/.github/workflows/cd-deploy-nodes-gcp.yml index 784f40952c0..1333816530f 100644 --- a/.github/workflows/cd-deploy-nodes-gcp.yml +++ b/.github/workflows/cd-deploy-nodes-gcp.yml @@ -204,7 +204,7 @@ jobs: get-disk-name: name: Get disk name uses: ./.github/workflows/sub-find-cached-disks.yml - if: ${{ !inputs.no_cached_disk && github.event_name == 'workflow_dispatch' }} + if: ${{ !inputs.no_cached_disk }} with: network: ${{ inputs.network || vars.ZCASH_NETWORK }} disk_prefix: zebrad-cache From 9073928bf0f5fc5c1805b1ab0d5810e0ddbf6c27 Mon Sep 17 00:00:00 2001 From: Arya Date: Mon, 21 Oct 2024 08:49:13 -0400 Subject: [PATCH 04/16] Fixes a couple new clippy lints (#8950) --- zebra-chain/src/transaction/serialize.rs | 5 ++--- zebra-test/src/lib.rs | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/zebra-chain/src/transaction/serialize.rs b/zebra-chain/src/transaction/serialize.rs index ba65dd054b3..0e583efc5bf 100644 --- a/zebra-chain/src/transaction/serialize.rs +++ b/zebra-chain/src/transaction/serialize.rs @@ -622,9 +622,8 @@ impl ZcashSerialize for Transaction { } // Denoted as `bindingSigSapling` in the spec. - match sapling_shielded_data { - Some(sd) => writer.write_all(&<[u8; 64]>::from(sd.binding_sig)[..])?, - None => {} + if let Some(shielded_data) = sapling_shielded_data { + writer.write_all(&<[u8; 64]>::from(shielded_data.binding_sig)[..])?; } } diff --git a/zebra-test/src/lib.rs b/zebra-test/src/lib.rs index 196b345d887..a02d268d7cf 100644 --- a/zebra-test/src/lib.rs +++ b/zebra-test/src/lib.rs @@ -182,7 +182,7 @@ struct SkipTestReturnedErrPanicMessages; impl PanicMessage for SkipTestReturnedErrPanicMessages { fn display( &self, - pi: &std::panic::PanicInfo<'_>, + pi: &std::panic::PanicHookInfo<'_>, f: &mut std::fmt::Formatter<'_>, ) -> std::fmt::Result { let payload = pi From 01fa12b9590a86bf92adf6ed41bb4273cc3604f5 Mon Sep 17 00:00:00 2001 From: Alfredo Garcia Date: Mon, 21 Oct 2024 16:31:19 -0300 Subject: [PATCH 05/16] ignore some directories in codespell checks (#8953) --- .codespellrc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.codespellrc b/.codespellrc index 2d242dca9ff..d14b397da25 100644 --- a/.codespellrc +++ b/.codespellrc @@ -1,3 +1,4 @@ [codespell] -ignore-words-list=crate,Sur,inout,Groth,groth,re-use, -exclude-file=book/mermaid.min.js +ignore-words-list = crate,Sur,inout,Groth,groth,re-use, +exclude-file = book/mermaid.min.js +skip = ./zebra-rpc/qa/rpc-tests,./supply-chain From 47b7614ea87c4861a64f8b2cce4207aa665159b5 Mon Sep 17 00:00:00 2001 From: Arya Date: Mon, 21 Oct 2024 20:41:34 -0400 Subject: [PATCH 06/16] updates minimum supported Rust version in Zebrad and rust verison in Dockerfile (#8956) --- docker/Dockerfile | 2 +- zebrad/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index c71e3e422f5..c441ce44e22 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -21,7 +21,7 @@ ARG TEST_FEATURES="lightwalletd-grpc-tests zebra-checkpoints" ARG EXPERIMENTAL_FEATURES="" ARG APP_HOME="/opt/zebrad" -ARG RUST_VERSION=1.79.0 +ARG RUST_VERSION=1.82.0 # In this stage we download all system requirements to build the project # # It also captures all the build arguments to be used as environment variables. diff --git a/zebrad/Cargo.toml b/zebrad/Cargo.toml index 6020978c1ad..ab687f8225d 100644 --- a/zebrad/Cargo.toml +++ b/zebrad/Cargo.toml @@ -19,7 +19,7 @@ edition = "2021" # Zebra is only supported on the latest stable Rust version. See the README for details. # Any Zebra release can break compatibility with older Rust versions. -rust-version = "1.76" +rust-version = "1.81.0" # Settings that impact runtime behaviour From b1ffc8945436ef937a7fb09c3bf636f050644528 Mon Sep 17 00:00:00 2001 From: Alfredo Garcia Date: Tue, 22 Oct 2024 06:45:26 -0300 Subject: [PATCH 07/16] feat(rpc): Cookie auth system for the RPC endpoint (#8900) * add a cookie auth system for the rpc endpoint * fix rand import * fixes based on cookie method research * add and use `cookie_dir` config, rpc client changes * add missing dependency * add a enable_cookie auth option to config and use it in all tests * get rid of the unauthenticated method * change config in qa python tests to run unauthenticated * change return types in cookie methods * change comment * fix(rpc): Refactor the cookie-based RPC authentication (#8940) * Refactor the cookie-based RPC authentication * Rephrase docs * Apply suggestions from code review Co-authored-by: Arya --------- Co-authored-by: Arya * clippy --------- Co-authored-by: Marek Co-authored-by: Arya --- Cargo.lock | 2 + zebra-rpc/Cargo.toml | 10 ++- zebra-rpc/qa/base_config.toml | 1 + zebra-rpc/src/config.rs | 16 +++- zebra-rpc/src/server.rs | 34 ++++++-- zebra-rpc/src/server/cookie.rs | 54 ++++++++++++ .../src/server/http_request_compatibility.rs | 68 +++++++++++++-- zebra-rpc/src/server/tests/vectors.rs | 8 ++ zebrad/tests/common/config.rs | 1 + zebrad/tests/common/configs/v2.0.0-rc.0.toml | 84 +++++++++++++++++++ 10 files changed, 261 insertions(+), 17 deletions(-) create mode 100644 zebra-rpc/src/server/cookie.rs create mode 100644 zebrad/tests/common/configs/v2.0.0-rc.0.toml diff --git a/Cargo.lock b/Cargo.lock index 2f4c89b1703..b45ed61909d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6070,7 +6070,9 @@ dependencies = [ name = "zebra-rpc" version = "1.0.0-beta.40" dependencies = [ + "base64 0.22.1", "chrono", + "color-eyre", "futures", "hex", "indexmap 2.5.0", diff --git a/zebra-rpc/Cargo.toml b/zebra-rpc/Cargo.toml index 517c565574c..d3976e15e1e 100644 --- a/zebra-rpc/Cargo.toml +++ b/zebra-rpc/Cargo.toml @@ -33,7 +33,6 @@ indexer-rpcs = [ # Mining RPC support getblocktemplate-rpcs = [ - "rand", "zcash_address", "zebra-consensus/getblocktemplate-rpcs", "zebra-state/getblocktemplate-rpcs", @@ -68,6 +67,13 @@ jsonrpc-http-server = "18.0.0" serde_json = { version = "1.0.128", features = ["preserve_order"] } indexmap = { version = "2.5.0", features = ["serde"] } +# RPC endpoint basic auth +base64 = "0.22.1" +rand = "0.8.5" + +# Error handling +color-eyre = "0.6.3" + tokio = { version = "1.40.0", features = [ "time", "rt-multi-thread", @@ -92,8 +98,6 @@ nix = { version = "0.29.0", features = ["signal"] } zcash_primitives = { workspace = true, features = ["transparent-inputs"] } -# Experimental feature getblocktemplate-rpcs -rand = { version = "0.8.5", optional = true } # ECC deps used by getblocktemplate-rpcs feature zcash_address = { workspace = true, optional = true} diff --git a/zebra-rpc/qa/base_config.toml b/zebra-rpc/qa/base_config.toml index c0cc5391f4b..58bf9b6b6f6 100644 --- a/zebra-rpc/qa/base_config.toml +++ b/zebra-rpc/qa/base_config.toml @@ -7,6 +7,7 @@ network = "Regtest" [rpc] listen_addr = "127.0.0.1:0" +enable_cookie_auth = false [state] cache_dir = "" diff --git a/zebra-rpc/src/config.rs b/zebra-rpc/src/config.rs index 8dc675b2034..57187163e55 100644 --- a/zebra-rpc/src/config.rs +++ b/zebra-rpc/src/config.rs @@ -1,9 +1,11 @@ //! User-configurable RPC settings. -use std::net::SocketAddr; +use std::{net::SocketAddr, path::PathBuf}; use serde::{Deserialize, Serialize}; +use zebra_chain::common::default_cache_dir; + pub mod mining; /// RPC configuration section. @@ -71,6 +73,12 @@ pub struct Config { /// Test-only option that makes Zebra say it is at the chain tip, /// no matter what the estimated height or local clock is. pub debug_force_finished_sync: bool, + + /// The directory where Zebra stores RPC cookies. + pub cookie_dir: PathBuf, + + /// Enable cookie-based authentication for RPCs. + pub enable_cookie_auth: bool, } // This impl isn't derivable because it depends on features. @@ -94,6 +102,12 @@ impl Default for Config { // Debug options are always off by default. debug_force_finished_sync: false, + + // Use the default cache dir for the auth cookie. + cookie_dir: default_cache_dir(), + + // Enable cookie-based authentication by default. + enable_cookie_auth: true, } } } diff --git a/zebra-rpc/src/server.rs b/zebra-rpc/src/server.rs index b87068ef8f0..73fcde65f6b 100644 --- a/zebra-rpc/src/server.rs +++ b/zebra-rpc/src/server.rs @@ -9,6 +9,8 @@ use std::{fmt, panic, thread::available_parallelism}; +use cookie::Cookie; +use http_request_compatibility::With; use jsonrpc_core::{Compatibility, MetaIoHandler}; use jsonrpc_http_server::{CloseHandle, ServerBuilder}; use tokio::task::JoinHandle; @@ -25,7 +27,7 @@ use crate::{ config::Config, methods::{Rpc, RpcImpl}, server::{ - http_request_compatibility::FixHttpRequestMiddleware, + http_request_compatibility::HttpRequestMiddleware, rpc_call_compatibility::FixRpcResponseMiddleware, }, }; @@ -33,6 +35,7 @@ use crate::{ #[cfg(feature = "getblocktemplate-rpcs")] use crate::methods::{GetBlockTemplateRpc, GetBlockTemplateRpcImpl}; +pub mod cookie; pub mod http_request_compatibility; pub mod rpc_call_compatibility; @@ -199,13 +202,22 @@ impl RpcServer { let span = Span::current(); let start_server = move || { span.in_scope(|| { + let middleware = if config.enable_cookie_auth { + let cookie = Cookie::default(); + cookie::write_to_disk(&cookie, &config.cookie_dir) + .expect("Zebra must be able to write the auth cookie to the disk"); + HttpRequestMiddleware::default().with(cookie) + } else { + HttpRequestMiddleware::default() + }; + // Use a different tokio executor from the rest of Zebra, // so that large RPCs and any task handling bugs don't impact Zebra. let server_instance = ServerBuilder::new(io) .threads(parallel_cpu_threads) // TODO: disable this security check if we see errors from lightwalletd //.allowed_hosts(DomainsValidation::Disabled) - .request_middleware(FixHttpRequestMiddleware) + .request_middleware(middleware) .start_http(&listen_addr) .expect("Unable to start RPC server"); @@ -274,29 +286,39 @@ impl RpcServer { /// This method can be called from within a tokio executor without panicking. /// But it is blocking, so `shutdown()` should be used instead. pub fn shutdown_blocking(&self) { - Self::shutdown_blocking_inner(self.close_handle.clone()) + Self::shutdown_blocking_inner(self.close_handle.clone(), self.config.clone()) } /// Shut down this RPC server asynchronously. /// Returns a task that completes when the server is shut down. pub fn shutdown(&self) -> JoinHandle<()> { let close_handle = self.close_handle.clone(); - + let config = self.config.clone(); let span = Span::current(); + tokio::task::spawn_blocking(move || { - span.in_scope(|| Self::shutdown_blocking_inner(close_handle)) + span.in_scope(|| Self::shutdown_blocking_inner(close_handle, config)) }) } /// Shuts down this RPC server using its `close_handle`. /// /// See `shutdown_blocking()` for details. - fn shutdown_blocking_inner(close_handle: CloseHandle) { + fn shutdown_blocking_inner(close_handle: CloseHandle, config: Config) { // The server is a blocking task, so it can't run inside a tokio thread. // See the note at wait_on_server. let span = Span::current(); let wait_on_shutdown = move || { span.in_scope(|| { + if config.enable_cookie_auth { + if let Err(err) = cookie::remove_from_disk(&config.cookie_dir) { + warn!( + ?err, + "unexpectedly could not remove the rpc auth cookie from the disk" + ) + } + } + info!("Stopping RPC server"); close_handle.clone().close(); debug!("Stopped RPC server"); diff --git a/zebra-rpc/src/server/cookie.rs b/zebra-rpc/src/server/cookie.rs new file mode 100644 index 00000000000..a90961d6448 --- /dev/null +++ b/zebra-rpc/src/server/cookie.rs @@ -0,0 +1,54 @@ +//! Cookie-based authentication for the RPC server. + +use base64::{engine::general_purpose::URL_SAFE, Engine as _}; +use color_eyre::Result; +use rand::RngCore; + +use std::{ + fs::{remove_file, File}, + io::Write, + path::Path, +}; + +/// The name of the cookie file on the disk +const FILE: &str = ".cookie"; + +/// If the RPC authentication is enabled, all requests must contain this cookie. +#[derive(Clone, Debug)] +pub struct Cookie(String); + +impl Cookie { + /// Checks if the given passwd matches the contents of the cookie. + pub fn authenticate(&self, passwd: String) -> bool { + *passwd == self.0 + } +} + +impl Default for Cookie { + fn default() -> Self { + let mut bytes = [0u8; 32]; + rand::thread_rng().fill_bytes(&mut bytes); + + Self(URL_SAFE.encode(bytes)) + } +} + +/// Writes the given cookie to the given dir. +pub fn write_to_disk(cookie: &Cookie, dir: &Path) -> Result<()> { + // Create the directory if needed. + std::fs::create_dir_all(dir)?; + File::create(dir.join(FILE))?.write_all(format!("__cookie__:{}", cookie.0).as_bytes())?; + + tracing::info!("RPC auth cookie written to disk"); + + Ok(()) +} + +/// Removes a cookie from the given dir. +pub fn remove_from_disk(dir: &Path) -> Result<()> { + remove_file(dir.join(FILE))?; + + tracing::info!("RPC auth cookie removed from disk"); + + Ok(()) +} diff --git a/zebra-rpc/src/server/http_request_compatibility.rs b/zebra-rpc/src/server/http_request_compatibility.rs index fede0e2bef0..89925c229b8 100644 --- a/zebra-rpc/src/server/http_request_compatibility.rs +++ b/zebra-rpc/src/server/http_request_compatibility.rs @@ -2,24 +2,27 @@ //! //! These fixes are applied at the HTTP level, before the RPC request is parsed. +use base64::{engine::general_purpose::URL_SAFE, Engine as _}; use futures::TryStreamExt; use jsonrpc_http_server::{ hyper::{body::Bytes, header, Body, Request}, RequestMiddleware, RequestMiddlewareAction, }; +use super::cookie::Cookie; + /// HTTP [`RequestMiddleware`] with compatibility workarounds. /// /// This middleware makes the following changes to HTTP requests: /// -/// ## Remove `jsonrpc` field in JSON RPC 1.0 +/// ### Remove `jsonrpc` field in JSON RPC 1.0 /// /// Removes "jsonrpc: 1.0" fields from requests, /// because the "jsonrpc" field was only added in JSON-RPC 2.0. /// /// /// -/// ## Add missing `content-type` HTTP header +/// ### Add missing `content-type` HTTP header /// /// Some RPC clients don't include a `content-type` HTTP header. /// But unlike web browsers, [`jsonrpc_http_server`] does not do content sniffing. @@ -27,6 +30,11 @@ use jsonrpc_http_server::{ /// If there is no `content-type` header, we assume the content is JSON, /// and let the parser error if we are incorrect. /// +/// ### Authenticate incoming requests +/// +/// If the cookie-based RPC authentication is enabled, check that the incoming request contains the +/// authentication cookie. +/// /// This enables compatibility with `zcash-cli`. /// /// ## Security @@ -34,15 +42,47 @@ use jsonrpc_http_server::{ /// Any user-specified data in RPC requests is hex or base58check encoded. /// We assume lightwalletd validates data encodings before sending it on to Zebra. /// So any fixes Zebra performs won't change user-specified data. -#[derive(Copy, Clone, Debug)] -pub struct FixHttpRequestMiddleware; +#[derive(Clone, Debug, Default)] +pub struct HttpRequestMiddleware { + cookie: Option, +} -impl RequestMiddleware for FixHttpRequestMiddleware { +/// A trait for updating an object, consuming it and returning the updated version. +pub trait With { + /// Updates `self` with an instance of type `T` and returns the updated version of `self`. + fn with(self, _: T) -> Self; +} + +impl With for HttpRequestMiddleware { + fn with(mut self, cookie: Cookie) -> Self { + self.cookie = Some(cookie); + self + } +} + +impl RequestMiddleware for HttpRequestMiddleware { fn on_request(&self, mut request: Request) -> RequestMiddlewareAction { tracing::trace!(?request, "original HTTP request"); + // Check if the request is authenticated + if !self.check_credentials(request.headers_mut()) { + let error = jsonrpc_core::Error { + code: jsonrpc_core::ErrorCode::ServerError(401), + message: "unauthenticated method".to_string(), + data: None, + }; + return jsonrpc_http_server::Response { + code: jsonrpc_http_server::hyper::StatusCode::from_u16(401) + .expect("hard-coded status code should be valid"), + content_type: header::HeaderValue::from_static("application/json; charset=utf-8"), + content: serde_json::to_string(&jsonrpc_core::Response::from(error, None)) + .expect("hard-coded result should serialize"), + } + .into(); + } + // Fix the request headers if needed and we can do so. - FixHttpRequestMiddleware::insert_or_replace_content_type_header(request.headers_mut()); + HttpRequestMiddleware::insert_or_replace_content_type_header(request.headers_mut()); // Fix the request body let request = request.map(|body| { @@ -80,7 +120,7 @@ impl RequestMiddleware for FixHttpRequestMiddleware { } } -impl FixHttpRequestMiddleware { +impl HttpRequestMiddleware { /// Remove any "jsonrpc: 1.0" fields in `data`, and return the resulting string. pub fn remove_json_1_fields(data: String) -> String { // Replace "jsonrpc = 1.0": @@ -141,4 +181,18 @@ impl FixHttpRequestMiddleware { ); } } + + /// Check if the request is authenticated. + pub fn check_credentials(&self, headers: &header::HeaderMap) -> bool { + self.cookie.as_ref().map_or(true, |internal_cookie| { + headers + .get(header::AUTHORIZATION) + .and_then(|auth_header| auth_header.to_str().ok()) + .and_then(|auth_header| auth_header.split_whitespace().nth(1)) + .and_then(|encoded| URL_SAFE.decode(encoded).ok()) + .and_then(|decoded| String::from_utf8(decoded).ok()) + .and_then(|request_cookie| request_cookie.split(':').nth(1).map(String::from)) + .map_or(false, |passwd| internal_cookie.authenticate(passwd)) + }) + } } diff --git a/zebra-rpc/src/server/tests/vectors.rs b/zebra-rpc/src/server/tests/vectors.rs index 9c50ecc7c35..8ffc3386a0d 100644 --- a/zebra-rpc/src/server/tests/vectors.rs +++ b/zebra-rpc/src/server/tests/vectors.rs @@ -46,6 +46,8 @@ fn rpc_server_spawn(parallel_cpu_threads: bool) { indexer_listen_addr: None, parallel_cpu_threads: if parallel_cpu_threads { 2 } else { 1 }, debug_force_finished_sync: false, + cookie_dir: Default::default(), + enable_cookie_auth: false, }; let rt = tokio::runtime::Runtime::new().unwrap(); @@ -134,6 +136,8 @@ fn rpc_server_spawn_unallocated_port(parallel_cpu_threads: bool, do_shutdown: bo indexer_listen_addr: None, parallel_cpu_threads: if parallel_cpu_threads { 0 } else { 1 }, debug_force_finished_sync: false, + cookie_dir: Default::default(), + enable_cookie_auth: false, }; let rt = tokio::runtime::Runtime::new().unwrap(); @@ -215,6 +219,8 @@ fn rpc_server_spawn_port_conflict() { indexer_listen_addr: None, parallel_cpu_threads: 1, debug_force_finished_sync: false, + cookie_dir: Default::default(), + enable_cookie_auth: false, }; let rt = tokio::runtime::Runtime::new().unwrap(); @@ -326,6 +332,8 @@ fn rpc_server_spawn_port_conflict_parallel_auto() { indexer_listen_addr: None, parallel_cpu_threads: 2, debug_force_finished_sync: false, + cookie_dir: Default::default(), + enable_cookie_auth: false, }; let rt = tokio::runtime::Runtime::new().unwrap(); diff --git a/zebrad/tests/common/config.rs b/zebrad/tests/common/config.rs index d6ee45f52ee..4b3f86201fd 100644 --- a/zebrad/tests/common/config.rs +++ b/zebrad/tests/common/config.rs @@ -166,6 +166,7 @@ pub fn rpc_port_config( // Default config, users who want to detect port conflicts configure this config.rpc.parallel_cpu_threads = 1; } + config.rpc.enable_cookie_auth = false; Ok(config) } diff --git a/zebrad/tests/common/configs/v2.0.0-rc.0.toml b/zebrad/tests/common/configs/v2.0.0-rc.0.toml new file mode 100644 index 00000000000..7f2276e63aa --- /dev/null +++ b/zebrad/tests/common/configs/v2.0.0-rc.0.toml @@ -0,0 +1,84 @@ +# Default configuration for zebrad. +# +# This file can be used as a skeleton for custom configs. +# +# Unspecified fields use default values. Optional fields are Some(field) if the +# field is present and None if it is absent. +# +# This file is generated as an example using zebrad's current defaults. +# You should set only the config options you want to keep, and delete the rest. +# Only a subset of fields are present in the skeleton, since optional values +# whose default is None are omitted. +# +# The config format (including a complete list of sections and fields) is +# documented here: +# https://docs.rs/zebrad/latest/zebrad/config/struct.ZebradConfig.html +# +# zebrad attempts to load configs in the following order: +# +# 1. The -c flag on the command line, e.g., `zebrad -c myconfig.toml start`; +# 2. The file `zebrad.toml` in the users's preference directory (platform-dependent); +# 3. The default config. +# +# The user's preference directory and the default path to the `zebrad` config are platform dependent, +# based on `dirs::preference_dir`, see https://docs.rs/dirs/latest/dirs/fn.preference_dir.html : +# +# | Platform | Value | Example | +# | -------- | ------------------------------------- | ---------------------------------------------- | +# | Linux | `$XDG_CONFIG_HOME` or `$HOME/.config` | `/home/alice/.config/zebrad.toml` | +# | macOS | `$HOME/Library/Preferences` | `/Users/Alice/Library/Preferences/zebrad.toml` | +# | Windows | `{FOLDERID_RoamingAppData}` | `C:\Users\Alice\AppData\Local\zebrad.toml` | + +[consensus] +checkpoint_sync = true + +[mempool] +eviction_memory_time = "1h" +tx_cost_limit = 80000000 + +[metrics] + +[mining] +debug_like_zcashd = true + +[network] +cache_dir = true +crawl_new_peer_interval = "1m 1s" +initial_mainnet_peers = [ + "dnsseed.z.cash:8233", + "dnsseed.str4d.xyz:8233", + "mainnet.seeder.zfnd.org:8233", + "mainnet.is.yolo.money:8233", +] +initial_testnet_peers = [ + "dnsseed.testnet.z.cash:18233", + "testnet.seeder.zfnd.org:18233", + "testnet.is.yolo.money:18233", +] +listen_addr = "0.0.0.0:8233" +max_connections_per_ip = 1 +network = "Mainnet" +peerset_initial_target_size = 25 + +[rpc] +cookie_dir = "cache_dir" +debug_force_finished_sync = false +enable_cookie_auth = true +parallel_cpu_threads = 0 + +[state] +cache_dir = "cache_dir" +delete_old_database = true +ephemeral = false + +[sync] +checkpoint_verify_concurrency_limit = 1000 +download_concurrency_limit = 50 +full_verify_concurrency_limit = 20 +parallel_cpu_threads = 0 + +[tracing] +buffer_limit = 128000 +force_use_color = false +use_color = true +use_journald = false From 46c6b6eb38617c07e8a130650b33831759b73263 Mon Sep 17 00:00:00 2001 From: Arya Date: Tue, 22 Oct 2024 15:19:24 -0400 Subject: [PATCH 08/16] fix(docs): Fix NU6-related documentation (#8949) * replaces some potential panics with error in block verifier checks * fixes outstanding documentation issues listed as examples in audit report * fixes remaining TODOs in `parameters::network::subsidy` module. * Addresses other TODOs added during NU6 implementation, fixes a TODO in `subsidy_is_valid()` about using the network slow start interval parameters when PoW is disabled. * updates snapshot --- zebra-chain/src/parameters/network/subsidy.rs | 33 +++--- zebra-consensus/src/block.rs | 2 +- zebra-consensus/src/block/check.rs | 49 ++++----- .../src/block/subsidy/funding_streams.rs | 1 + zebra-consensus/src/block/subsidy/general.rs | 104 ------------------ zebra-consensus/src/block/tests.rs | 6 +- zebra-consensus/src/checkpoint.rs | 2 +- zebra-consensus/src/error.rs | 3 + ...bsidy_future_nu6_height@nu6testnet_10.snap | 4 +- 9 files changed, 47 insertions(+), 157 deletions(-) diff --git a/zebra-chain/src/parameters/network/subsidy.rs b/zebra-chain/src/parameters/network/subsidy.rs index cb043f6b05c..df3d8c966f4 100644 --- a/zebra-chain/src/parameters/network/subsidy.rs +++ b/zebra-chain/src/parameters/network/subsidy.rs @@ -65,18 +65,18 @@ pub enum FundingStreamReceiver { /// The Major Grants (Zcash Community Grants) funding stream. MajorGrants, - /// The deferred pool contribution. - // TODO: Add link to lockbox stream ZIP + + /// The deferred pool contribution, see [ZIP-1015](https://zips.z.cash/zip-1015) for more details. Deferred, } impl FundingStreamReceiver { /// Returns a human-readable name and a specification URL for the receiver, as described in - /// [ZIP-1014] and [`zcashd`] before NU6. After NU6, the specification is in the [ZIP-lockbox]. + /// [ZIP-1014] and [`zcashd`] before NU6. After NU6, the specification is in the [ZIP-1015]. /// /// [ZIP-1014]: https://zips.z.cash/zip-1014#abstract /// [`zcashd`]: https://github.com/zcash/zcash/blob/3f09cfa00a3c90336580a127e0096d99e25a38d6/src/consensus/funding.cpp#L13-L32 - /// [ZIP-lockbox]: https://zips.z.cash/draft-nuttycom-funding-allocation#alternative-2-hybrid-deferred-dev-fund-transitioning-to-a-non-direct-funding-model + /// [ZIP-1015]: https://zips.z.cash/zip-1015 pub fn info(&self, is_nu6: bool) -> (&'static str, &'static str) { if is_nu6 { ( @@ -112,10 +112,10 @@ pub const FUNDING_STREAM_RECEIVER_DENOMINATOR: u64 = 100; /// [ZIP-214]: https://zips.z.cash/zip-0214 pub const FUNDING_STREAM_SPECIFICATION: &str = "https://zips.z.cash/zip-0214"; -/// The specification for post-NU6 funding stream and lockbox receivers, a URL that links to [ZIP-lockbox]. +/// The specification for post-NU6 funding stream and lockbox receivers, a URL that links to [ZIP-1015]. /// -/// [ZIP-lockbox]: https://zips.z.cash/draft-nuttycom-funding-allocation#alternative-2-hybrid-deferred-dev-fund-transitioning-to-a-non-direct-funding-model -pub const LOCKBOX_SPECIFICATION: &str = "https://zips.z.cash/draft-nuttycom-funding-allocation#alternative-2-hybrid-deferred-dev-fund-transitioning-to-a-non-direct-funding-model"; +/// [ZIP-1015]: https://zips.z.cash/zip-1015 +pub const LOCKBOX_SPECIFICATION: &str = "https://zips.z.cash/zip-1015"; /// Funding stream recipients and height ranges. #[derive(Deserialize, Clone, Debug, Eq, PartialEq)] @@ -225,10 +225,8 @@ lazy_static! { .collect(), }; - /// The post-NU6 funding streams for Mainnet - // TODO: Add a reference to lockbox stream ZIP, this is currently based on https://zips.z.cash/draft-nuttycom-funding-allocation + /// The post-NU6 funding streams for Mainnet as described in [ZIP-1015](https://zips.z.cash/zip-1015). pub static ref POST_NU6_FUNDING_STREAMS_MAINNET: FundingStreams = FundingStreams { - // TODO: Adjust this height range and recipient list once a proposal is selected height_range: POST_NU6_FUNDING_STREAM_START_RANGE_MAINNET, recipients: [ ( @@ -266,11 +264,8 @@ lazy_static! { .collect(), }; - /// The post-NU6 funding streams for Testnet - // TODO: Add a reference to lockbox stream ZIP, this is currently based on the number of blocks between the - // start and end heights for Mainnet in https://zips.z.cash/draft-nuttycom-funding-allocation + /// The post-NU6 funding streams for Testnet as described in [ZIP-1015](https://zips.z.cash/zip-1015). pub static ref POST_NU6_FUNDING_STREAMS_TESTNET: FundingStreams = FundingStreams { - // TODO: Adjust this height range and recipient list once a proposal is selected height_range: POST_NU6_FUNDING_STREAM_START_RANGE_TESTNET, recipients: [ ( @@ -279,7 +274,6 @@ lazy_static! { ), ( FundingStreamReceiver::MajorGrants, - // TODO: Update these addresses FundingStreamRecipient::new(8, POST_NU6_FUNDING_STREAM_FPF_ADDRESSES_TESTNET), ), ] @@ -288,15 +282,14 @@ lazy_static! { }; } -/// The start height of post-NU6 funding streams on Mainnet -// TODO: Add a reference to lockbox stream ZIP, this is currently based on https://zips.z.cash/draft-nuttycom-funding-allocation +/// The start height of post-NU6 funding streams on Mainnet as described in [ZIP-1015](https://zips.z.cash/zip-1015). const POST_NU6_FUNDING_STREAM_START_HEIGHT_MAINNET: u32 = 2_726_400; -/// The start height of post-NU6 funding streams on Testnet -// TODO: Add a reference to lockbox stream ZIP, this is currently based on https://zips.z.cash/draft-nuttycom-funding-allocation +/// The start height of post-NU6 funding streams on Testnet as described in [ZIP-1015](https://zips.z.cash/zip-1015). const POST_NU6_FUNDING_STREAM_START_HEIGHT_TESTNET: u32 = 2_976_000; -/// The number of blocks contained in the post-NU6 funding streams height ranges on Mainnet or Testnet. +/// The number of blocks contained in the post-NU6 funding streams height ranges on Mainnet or Testnet, as specified +/// in [ZIP-1015](https://zips.z.cash/zip-1015). const POST_NU6_FUNDING_STREAM_NUM_BLOCKS: u32 = 420_000; /// The post-NU6 funding stream height range on Mainnet diff --git a/zebra-consensus/src/block.rs b/zebra-consensus/src/block.rs index 2b0013a5a3d..611aea2ceba 100644 --- a/zebra-consensus/src/block.rs +++ b/zebra-consensus/src/block.rs @@ -284,7 +284,7 @@ where })?; } - // TODO: Add link to lockbox stream ZIP + // See [ZIP-1015](https://zips.z.cash/zip-1015). let expected_deferred_amount = subsidy::funding_streams::funding_stream_values( height, &network, diff --git a/zebra-consensus/src/block/check.rs b/zebra-consensus/src/block/check.rs index 189cfdc8493..24ef2ba2ed1 100644 --- a/zebra-consensus/src/block/check.rs +++ b/zebra-consensus/src/block/check.rs @@ -162,13 +162,7 @@ pub fn subsidy_is_valid( .activation_height(network) .expect("Canopy activation height is known"); - // TODO: Add this as a field on `testnet::Parameters` instead of checking `disable_pow()`, this is 0 for Regtest in zcashd, - // see - let slow_start_interval = if network.disable_pow() { - Height(0) - } else { - network.slow_start_interval() - }; + let slow_start_interval = network.slow_start_interval(); if height < slow_start_interval { unreachable!( @@ -191,7 +185,8 @@ pub fn subsidy_is_valid( network, expected_block_subsidy, ) - .expect("We always expect a funding stream hashmap response even if empty"); + // we always expect a funding stream hashmap response even if empty + .map_err(|err| BlockError::Other(err.to_string()))?; // # Consensus // @@ -204,14 +199,18 @@ pub fn subsidy_is_valid( for (receiver, expected_amount) in funding_streams { if receiver == FundingStreamReceiver::Deferred { // The deferred pool contribution is checked in `miner_fees_are_valid()` - // TODO: Add link to lockbox stream ZIP + // See [ZIP-1015](https://zips.z.cash/zip-1015) for more details. continue; } - let address = subsidy::funding_streams::funding_stream_address( - height, network, receiver, - ) - .expect("funding stream receivers other than the deferred pool must have an address"); + let address = + subsidy::funding_streams::funding_stream_address(height, network, receiver) + // funding stream receivers other than the deferred pool must have an address + .ok_or_else(|| { + BlockError::Other(format!( + "missing funding stream address at height {height:?}" + )) + })?; let has_expected_output = subsidy::funding_streams::filter_outputs_by_address(coinbase, address) @@ -250,25 +249,23 @@ pub fn miner_fees_are_valid( let sapling_value_balance = coinbase_tx.sapling_value_balance().sapling_amount(); let orchard_value_balance = coinbase_tx.orchard_value_balance().orchard_amount(); - // TODO: Update the quote below once its been updated for NU6. - // // # Consensus // - // > The total value in zatoshi of transparent outputs from a coinbase transaction, - // > minus vbalanceSapling, minus vbalanceOrchard, MUST NOT be greater than the value - // > in zatoshi of block subsidy plus the transaction fees paid by transactions in this block. + // > - define the total output value of its coinbase transaction to be the total value in zatoshi of its transparent + // > outputs, minus vbalanceSapling, minus vbalanceOrchard, plus totalDeferredOutput(height); + // > – define the total input value of its coinbase transaction to be the value in zatoshi of the block subsidy, + // > plus the transaction fees paid by transactions in the block. // // https://zips.z.cash/protocol/protocol.pdf#txnconsensus // // The expected lockbox funding stream output of the coinbase transaction is also subtracted // from the block subsidy value plus the transaction fees paid by transactions in this block. - let left = (transparent_value_balance - sapling_value_balance - orchard_value_balance) - .map_err(|_| SubsidyError::SumOverflow)?; - let right = (expected_block_subsidy + block_miner_fees - expected_deferred_amount) - .map_err(|_| SubsidyError::SumOverflow)?; + let total_output_value = (transparent_value_balance - sapling_value_balance - orchard_value_balance + + expected_deferred_amount.constrain().expect("valid Amount with NonNegative constraint should be valid with NegativeAllowed constraint")) + .map_err(|_| SubsidyError::SumOverflow)?; + let total_input_value = + (expected_block_subsidy + block_miner_fees).map_err(|_| SubsidyError::SumOverflow)?; - // TODO: Updadte the quotes below if the final phrasing changes in the spec for NU6. - // // # Consensus // // > [Pre-NU6] The total output of a coinbase transaction MUST NOT be greater than its total @@ -276,9 +273,9 @@ pub fn miner_fees_are_valid( // // > [NU6 onward] The total output of a coinbase transaction MUST be equal to its total input. if if NetworkUpgrade::current(network, height) < NetworkUpgrade::Nu6 { - left > right + total_output_value > total_input_value } else { - left != right + total_output_value != total_input_value } { Err(SubsidyError::InvalidMinerFees)? }; diff --git a/zebra-consensus/src/block/subsidy/funding_streams.rs b/zebra-consensus/src/block/subsidy/funding_streams.rs index ce0bbf792ad..f1551a224e2 100644 --- a/zebra-consensus/src/block/subsidy/funding_streams.rs +++ b/zebra-consensus/src/block/subsidy/funding_streams.rs @@ -43,6 +43,7 @@ pub fn funding_stream_values( } } } + Ok(results) } diff --git a/zebra-consensus/src/block/subsidy/general.rs b/zebra-consensus/src/block/subsidy/general.rs index d871751da34..56de345dd7a 100644 --- a/zebra-consensus/src/block/subsidy/general.rs +++ b/zebra-consensus/src/block/subsidy/general.rs @@ -120,47 +120,10 @@ pub fn output_amounts(transaction: &Transaction) -> HashSet> .collect() } -/// Lockbox funding stream total input value for a block height. -/// -/// Assumes a constant funding stream amount per block. -// TODO: Cache the lockbox value balance in zebra-state (will be required for tracking lockbox -// value balance after the Zcash Sustainability Fund ZIPs or after a ZIP for spending from the deferred pool) -#[allow(dead_code)] -fn lockbox_input_value(network: &Network, height: Height) -> Amount { - let Some(nu6_activation_height) = Nu6.activation_height(network) else { - return Amount::zero(); - }; - - let expected_block_subsidy = block_subsidy(nu6_activation_height, network) - .expect("block at NU6 activation height must have valid expected subsidy"); - let &deferred_amount_per_block = - funding_stream_values(nu6_activation_height, network, expected_block_subsidy) - .expect("we always expect a funding stream hashmap response even if empty") - .get(&FundingStreamReceiver::Deferred) - .expect("we expect a lockbox funding stream after NU5"); - - let post_nu6_funding_stream_height_range = network.post_nu6_funding_streams().height_range(); - - // `min(height, last_height_with_deferred_pool_contribution) - (nu6_activation_height - 1)`, - // We decrement NU6 activation height since it's an inclusive lower bound. - // Funding stream height range end bound is not incremented since it's an exclusive end bound - let num_blocks_with_lockbox_output = (height.0 + 1) - .min(post_nu6_funding_stream_height_range.end.0) - .checked_sub(post_nu6_funding_stream_height_range.start.0) - .unwrap_or_default(); - - (deferred_amount_per_block * num_blocks_with_lockbox_output.into()) - .expect("lockbox input value should fit in Amount") -} - #[cfg(test)] mod test { use super::*; use color_eyre::Report; - use zebra_chain::parameters::testnet::{ - self, ConfiguredActivationHeights, ConfiguredFundingStreamRecipient, - ConfiguredFundingStreams, - }; #[test] fn halving_test() -> Result<(), Report> { @@ -436,73 +399,6 @@ mod test { Ok(()) } - #[test] - fn check_lockbox_input_value() -> Result<(), Report> { - let _init_guard = zebra_test::init(); - - let network = testnet::Parameters::build() - .with_activation_heights(ConfiguredActivationHeights { - blossom: Some(Blossom.activation_height(&Network::Mainnet).unwrap().0), - nu6: Some(POST_NU6_FUNDING_STREAMS_MAINNET.height_range().start.0), - ..Default::default() - }) - .with_post_nu6_funding_streams(ConfiguredFundingStreams { - // Start checking funding streams from block height 1 - height_range: Some(POST_NU6_FUNDING_STREAMS_MAINNET.height_range().clone()), - // Use default post-NU6 recipients - recipients: Some( - POST_NU6_FUNDING_STREAMS_TESTNET - .recipients() - .iter() - .map(|(&receiver, recipient)| ConfiguredFundingStreamRecipient { - receiver, - numerator: recipient.numerator(), - addresses: Some( - recipient - .addresses() - .iter() - .map(|addr| addr.to_string()) - .collect(), - ), - }) - .collect(), - ), - }) - .to_network(); - - let nu6_height = Nu6.activation_height(&network).unwrap(); - let post_nu6_funding_streams = network.post_nu6_funding_streams(); - let height_range = post_nu6_funding_streams.height_range(); - - let last_funding_stream_height = post_nu6_funding_streams - .height_range() - .end - .previous() - .expect("the previous height should be valid"); - - assert_eq!( - Amount::::zero(), - lockbox_input_value(&network, Height::MIN) - ); - - let expected_lockbox_value: Amount = Amount::try_from(18_750_000)?; - assert_eq!( - expected_lockbox_value, - lockbox_input_value(&network, nu6_height) - ); - - let num_blocks_total = height_range.end.0 - height_range.start.0; - let expected_input_per_block: Amount = Amount::try_from(18_750_000)?; - let expected_lockbox_value = (expected_input_per_block * num_blocks_total.into())?; - - assert_eq!( - expected_lockbox_value, - lockbox_input_value(&network, last_funding_stream_height) - ); - - Ok(()) - } - #[test] fn check_height_for_num_halvings() { for network in Network::iter() { diff --git a/zebra-consensus/src/block/tests.rs b/zebra-consensus/src/block/tests.rs index d8f74bf7b2f..e6eb6f2c4b9 100644 --- a/zebra-consensus/src/block/tests.rs +++ b/zebra-consensus/src/block/tests.rs @@ -515,7 +515,7 @@ fn miner_fees_validation_for_network(network: Network) -> Result<(), Report> { let expected_block_subsidy = block_subsidy(height, &network)?; - // TODO: Add link to lockbox stream ZIP + // See [ZIP-1015](https://zips.z.cash/zip-1015). let expected_deferred_amount = subsidy::funding_streams::funding_stream_values( height, &network, @@ -549,8 +549,8 @@ fn miner_fees_validation_failure() -> Result<(), Report> { .expect("block should deserialize"); let height = block.coinbase_height().expect("valid coinbase height"); let expected_block_subsidy = block_subsidy(height, &network)?; - // TODO: Add link to lockbox stream ZIP - let expected_deferred_amount = + // See [ZIP-1015](https://zips.z.cash/zip-1015). + let expected_deferred_amount: Amount = subsidy::funding_streams::funding_stream_values(height, &network, expected_block_subsidy) .expect("we always expect a funding stream hashmap response even if empty") .remove(&FundingStreamReceiver::Deferred) diff --git a/zebra-consensus/src/checkpoint.rs b/zebra-consensus/src/checkpoint.rs index dfdf915b5be..039ea6e33e3 100644 --- a/zebra-consensus/src/checkpoint.rs +++ b/zebra-consensus/src/checkpoint.rs @@ -611,7 +611,7 @@ where // We can't get the block subsidy for blocks with heights in the slow start interval, so we // omit the calculation of the expected deferred amount. let expected_deferred_amount = if height > self.network.slow_start_interval() { - // TODO: Add link to lockbox stream ZIP + // See [ZIP-1015](https://zips.z.cash/zip-1015). funding_stream_values(height, &self.network, block_subsidy(height, &self.network)?)? .remove(&FundingStreamReceiver::Deferred) } else { diff --git a/zebra-consensus/src/error.rs b/zebra-consensus/src/error.rs index 91dfbf0ce3a..8fe14c62d52 100644 --- a/zebra-consensus/src/error.rs +++ b/zebra-consensus/src/error.rs @@ -345,6 +345,9 @@ pub enum BlockError { hash: zebra_chain::block::Hash, source: amount::Error, }, + + #[error("unexpected error occurred: {0}")] + Other(String), } impl From for BlockError { diff --git a/zebra-rpc/src/methods/tests/snapshot/snapshots/get_block_subsidy_future_nu6_height@nu6testnet_10.snap b/zebra-rpc/src/methods/tests/snapshot/snapshots/get_block_subsidy_future_nu6_height@nu6testnet_10.snap index aba4f4d5a38..e06d32f5b32 100644 --- a/zebra-rpc/src/methods/tests/snapshot/snapshots/get_block_subsidy_future_nu6_height@nu6testnet_10.snap +++ b/zebra-rpc/src/methods/tests/snapshot/snapshots/get_block_subsidy_future_nu6_height@nu6testnet_10.snap @@ -6,7 +6,7 @@ expression: get_block_subsidy "fundingstreams": [ { "recipient": "Zcash Community Grants NU6", - "specification": "https://zips.z.cash/draft-nuttycom-funding-allocation#alternative-2-hybrid-deferred-dev-fund-transitioning-to-a-non-direct-funding-model", + "specification": "https://zips.z.cash/zip-1015", "value": 0.125, "valueZat": 12500000, "address": "t2HifwjUj9uyxr9bknR8LFuQbc98c3vkXtu" @@ -15,7 +15,7 @@ expression: get_block_subsidy "lockboxstreams": [ { "recipient": "Lockbox NU6", - "specification": "https://zips.z.cash/draft-nuttycom-funding-allocation#alternative-2-hybrid-deferred-dev-fund-transitioning-to-a-non-direct-funding-model", + "specification": "https://zips.z.cash/zip-1015", "value": 0.1875, "valueZat": 18750000 } From 0b1562d4b6c12db675832a8d1fca94a4d7148339 Mon Sep 17 00:00:00 2001 From: Marek Date: Thu, 24 Oct 2024 22:15:32 +0200 Subject: [PATCH 09/16] change: Set NU6 Mainnet activation height and network protocol version (#8960) * Update docs for min network protocol versions * Add a TODO for updating init net protocol version * Update `CURRENT_NETWORK_PROTOCOL_VERSION` * Add NU6 Mainnet activation height * Extend docs for funding streams * Extend tests for Mainnet funding streams * Update snapshots --- zebra-chain/src/parameters/network/testnet.rs | 10 + zebra-chain/src/parameters/network_upgrade.rs | 3 +- .../block/subsidy/funding_streams/tests.rs | 211 ++++-------------- zebra-network/src/constants.rs | 6 +- zebra-network/src/protocol/external/types.rs | 15 +- .../get_blockchain_info@mainnet_10.snap | 5 + 6 files changed, 83 insertions(+), 167 deletions(-) diff --git a/zebra-chain/src/parameters/network/testnet.rs b/zebra-chain/src/parameters/network/testnet.rs index 52d5d18f74a..78f7a69a302 100644 --- a/zebra-chain/src/parameters/network/testnet.rs +++ b/zebra-chain/src/parameters/network/testnet.rs @@ -751,6 +751,12 @@ impl Network { } /// Returns pre-NU6 funding streams for this network + /// + /// Commonly referred to as the "Dev Fund". + /// + /// Defined in [Zcash Protocol Specification §7.10.1][7.10.1] + /// + /// [7.10.1]: https://zips.z.cash/protocol/protocol.pdf#zip214fundingstreams pub fn pre_nu6_funding_streams(&self) -> &FundingStreams { if let Self::Testnet(params) = self { params.pre_nu6_funding_streams() @@ -760,6 +766,10 @@ impl Network { } /// Returns post-NU6 funding streams for this network + /// + /// Defined in [Zcash Protocol Specification §7.10.1][7.10.1] + /// + /// [7.10.1]: https://zips.z.cash/protocol/protocol.pdf#zip214fundingstreams pub fn post_nu6_funding_streams(&self) -> &FundingStreams { if let Self::Testnet(params) = self { params.post_nu6_funding_streams() diff --git a/zebra-chain/src/parameters/network_upgrade.rs b/zebra-chain/src/parameters/network_upgrade.rs index 957b96de944..57165d0c760 100644 --- a/zebra-chain/src/parameters/network_upgrade.rs +++ b/zebra-chain/src/parameters/network_upgrade.rs @@ -89,8 +89,7 @@ pub(super) const MAINNET_ACTIVATION_HEIGHTS: &[(block::Height, NetworkUpgrade)] (block::Height(903_000), Heartwood), (block::Height(1_046_400), Canopy), (block::Height(1_687_104), Nu5), - // TODO: Add NU6 - // (block::Height(2_726_400), Nu6), + (block::Height(2_726_400), Nu6), ]; /// Fake mainnet network upgrade activation heights, used in tests. diff --git a/zebra-consensus/src/block/subsidy/funding_streams/tests.rs b/zebra-consensus/src/block/subsidy/funding_streams/tests.rs index 626b983fac6..91faa923c93 100644 --- a/zebra-consensus/src/block/subsidy/funding_streams/tests.rs +++ b/zebra-consensus/src/block/subsidy/funding_streams/tests.rs @@ -1,199 +1,86 @@ //! Tests for funding streams. use color_eyre::Report; -use zebra_chain::parameters::{ - subsidy::FundingStreamReceiver, - testnet::{ - self, ConfiguredActivationHeights, ConfiguredFundingStreamRecipient, - ConfiguredFundingStreams, - }, - NetworkKind, -}; +use zebra_chain::parameters::{subsidy::FundingStreamReceiver, NetworkKind}; use crate::block::subsidy::general::block_subsidy; use super::*; -/// Check mainnet funding stream values are correct for the entire period. +/// Checks that the Mainnet funding stream values are correct. #[test] fn test_funding_stream_values() -> Result<(), Report> { let _init_guard = zebra_test::init(); let network = &Network::Mainnet; - // funding streams not active - let canopy_height_minus1 = (Canopy.activation_height(network).unwrap() - 1).unwrap(); + let canopy_activation_height = Canopy.activation_height(network).unwrap(); + let nu6_activation_height = Nu6.activation_height(network).unwrap(); - assert!(funding_stream_values( - canopy_height_minus1, - network, - block_subsidy(canopy_height_minus1, network)? - )? - .is_empty()); + let dev_fund_height_range = network.pre_nu6_funding_streams().height_range(); + let nu6_fund_height_range = network.post_nu6_funding_streams().height_range(); - // funding stream is active - let canopy_height = Canopy.activation_height(network).unwrap(); - let canopy_height_plus1 = (Canopy.activation_height(network).unwrap() + 1).unwrap(); - let canopy_height_plus2 = (Canopy.activation_height(network).unwrap() + 2).unwrap(); + let nu6_fund_end = Height(3_146_400); - let mut hash_map = HashMap::new(); - hash_map.insert(FundingStreamReceiver::Ecc, Amount::try_from(21_875_000)?); - hash_map.insert( - FundingStreamReceiver::ZcashFoundation, - Amount::try_from(15_625_000)?, - ); - hash_map.insert( - FundingStreamReceiver::MajorGrants, - Amount::try_from(25_000_000)?, - ); + assert_eq!(canopy_activation_height, Height(1_046_400)); + assert_eq!(nu6_activation_height, Height(2_726_400)); - assert_eq!( - funding_stream_values( - canopy_height, - network, - block_subsidy(canopy_height, network)? - ) - .unwrap(), - hash_map - ); - - assert_eq!( - funding_stream_values( - canopy_height_plus1, - network, - block_subsidy(canopy_height_plus1, network)? - ) - .unwrap(), - hash_map - ); + assert_eq!(dev_fund_height_range.start, canopy_activation_height); + assert_eq!(dev_fund_height_range.end, nu6_activation_height); - assert_eq!( - funding_stream_values( - canopy_height_plus2, - network, - block_subsidy(canopy_height_plus2, network)? - ) - .unwrap(), - hash_map - ); + assert_eq!(nu6_fund_height_range.start, nu6_activation_height); + assert_eq!(nu6_fund_height_range.end, nu6_fund_end); - // funding stream period is ending - let range = network.pre_nu6_funding_streams().height_range(); - let end = range.end; - let last = (end - 1).unwrap(); + assert_eq!(dev_fund_height_range.end, nu6_fund_height_range.start); - assert_eq!( - funding_stream_values(last, network, block_subsidy(last, network)?).unwrap(), - hash_map - ); + let mut expected_dev_fund = HashMap::new(); - assert!(funding_stream_values(end, network, block_subsidy(end, network)?)?.is_empty()); - - // TODO: Replace this with Mainnet once there's an NU6 activation height defined for Mainnet - let network = testnet::Parameters::build() - .with_activation_heights(ConfiguredActivationHeights { - blossom: Some(Blossom.activation_height(network).unwrap().0), - nu6: Some(POST_NU6_FUNDING_STREAMS_MAINNET.height_range().start.0), - ..Default::default() - }) - .with_post_nu6_funding_streams(ConfiguredFundingStreams { - // Start checking funding streams from block height 1 - height_range: Some(POST_NU6_FUNDING_STREAMS_MAINNET.height_range().clone()), - // Use default post-NU6 recipients - recipients: Some( - POST_NU6_FUNDING_STREAMS_TESTNET - .recipients() - .iter() - .map(|(&receiver, recipient)| ConfiguredFundingStreamRecipient { - receiver, - numerator: recipient.numerator(), - addresses: Some( - recipient - .addresses() - .iter() - .map(|addr| addr.to_string()) - .collect(), - ), - }) - .collect(), - ), - }) - .to_network(); - - let mut hash_map = HashMap::new(); - hash_map.insert( - FundingStreamReceiver::Deferred, - Amount::try_from(18_750_000)?, + expected_dev_fund.insert(FundingStreamReceiver::Ecc, Amount::try_from(21_875_000)?); + expected_dev_fund.insert( + FundingStreamReceiver::ZcashFoundation, + Amount::try_from(15_625_000)?, ); - hash_map.insert( + expected_dev_fund.insert( FundingStreamReceiver::MajorGrants, - Amount::try_from(12_500_000)?, + Amount::try_from(25_000_000)?, ); + let expected_dev_fund = expected_dev_fund; - let nu6_height = Nu6.activation_height(&network).unwrap(); - - for height in [ - nu6_height, - Height(nu6_height.0 + 1), - Height(nu6_height.0 + 1), - ] { - assert_eq!( - funding_stream_values(height, &network, block_subsidy(height, &network)?).unwrap(), - hash_map - ); - } - - // TODO: Replace this with Mainnet once there's an NU6 activation height defined for Mainnet - let network = testnet::Parameters::build() - .with_activation_heights(ConfiguredActivationHeights { - blossom: Some(Blossom.activation_height(&network).unwrap().0), - nu6: Some(POST_NU6_FUNDING_STREAMS_MAINNET.height_range().start.0), - ..Default::default() - }) - .with_post_nu6_funding_streams(ConfiguredFundingStreams { - // Start checking funding streams from block height 1 - height_range: Some(POST_NU6_FUNDING_STREAMS_MAINNET.height_range().clone()), - // Use default post-NU6 recipients - recipients: Some( - POST_NU6_FUNDING_STREAMS_TESTNET - .recipients() - .iter() - .map(|(&receiver, recipient)| ConfiguredFundingStreamRecipient { - receiver, - numerator: recipient.numerator(), - addresses: Some( - recipient - .addresses() - .iter() - .map(|addr| addr.to_string()) - .collect(), - ), - }) - .collect(), - ), - }) - .to_network(); - - let mut hash_map = HashMap::new(); - hash_map.insert( + let mut expected_nu6_fund = HashMap::new(); + expected_nu6_fund.insert( FundingStreamReceiver::Deferred, Amount::try_from(18_750_000)?, ); - hash_map.insert( + expected_nu6_fund.insert( FundingStreamReceiver::MajorGrants, Amount::try_from(12_500_000)?, ); - - let nu6_height = Nu6.activation_height(&network).unwrap(); + let expected_nu6_fund = expected_nu6_fund; for height in [ - nu6_height, - Height(nu6_height.0 + 1), - Height(nu6_height.0 + 1), + dev_fund_height_range.start.previous().unwrap(), + dev_fund_height_range.start, + dev_fund_height_range.start.next().unwrap(), + dev_fund_height_range.end.previous().unwrap(), + dev_fund_height_range.end, + dev_fund_height_range.end.next().unwrap(), + nu6_fund_height_range.start.previous().unwrap(), + nu6_fund_height_range.start, + nu6_fund_height_range.start.next().unwrap(), + nu6_fund_height_range.end.previous().unwrap(), + nu6_fund_height_range.end, + nu6_fund_height_range.end.next().unwrap(), ] { - assert_eq!( - funding_stream_values(height, &network, block_subsidy(height, &network)?).unwrap(), - hash_map - ); + let fsv = funding_stream_values(height, network, block_subsidy(height, network)?).unwrap(); + + if height < canopy_activation_height { + assert!(fsv.is_empty()); + } else if height < nu6_activation_height { + assert_eq!(fsv, expected_dev_fund); + } else if height < nu6_fund_end { + assert_eq!(fsv, expected_nu6_fund); + } else { + assert!(fsv.is_empty()); + } } Ok(()) diff --git a/zebra-network/src/constants.rs b/zebra-network/src/constants.rs index 07bca61d63a..a116fd63018 100644 --- a/zebra-network/src/constants.rs +++ b/zebra-network/src/constants.rs @@ -337,7 +337,10 @@ pub const TIMESTAMP_TRUNCATION_SECONDS: u32 = 30 * 60; /// /// The current protocol version typically changes before Mainnet and Testnet /// network upgrades. -pub const CURRENT_NETWORK_PROTOCOL_VERSION: Version = Version(170_110); +/// +/// This version of Zebra draws the current network protocol version from +/// [ZIP-253](https://zips.z.cash/zip-0253). +pub const CURRENT_NETWORK_PROTOCOL_VERSION: Version = Version(170_120); /// The default RTT estimate for peer responses. /// @@ -393,6 +396,7 @@ lazy_static! { /// /// The minimum network protocol version typically changes after Mainnet and /// Testnet network upgrades. + // TODO: Change `Nu5` to `Nu6` after NU6 activation. // TODO: Move the value here to a field on `testnet::Parameters` (#8367) pub static ref INITIAL_MIN_NETWORK_PROTOCOL_VERSION: HashMap = { let mut hash_map = HashMap::new(); diff --git a/zebra-network/src/protocol/external/types.rs b/zebra-network/src/protocol/external/types.rs index 1048f33e308..c6241ba4d78 100644 --- a/zebra-network/src/protocol/external/types.rs +++ b/zebra-network/src/protocol/external/types.rs @@ -72,12 +72,23 @@ impl Version { /// Returns the minimum specified network protocol version for `network` and /// `network_upgrade`. + /// + /// ## ZIP-253 + /// + /// > Nodes compatible with a network upgrade activation MUST advertise a network protocol + /// > version that is greater than or equal to the MIN_NETWORK_PROTOCOL_VERSION for that + /// > activation. + /// + /// + /// + /// ### Notes + /// + /// - The citation above is a generalization of a statement in ZIP-253 since that ZIP is + /// concerned only with NU6 on Mainnet and Testnet. pub(crate) fn min_specified_for_upgrade( network: &Network, network_upgrade: NetworkUpgrade, ) -> Version { - // TODO: Should we reject earlier protocol versions during our initial - // sync? zcashd accepts 170_002 or later during its initial sync. Version(match (network, network_upgrade) { (_, Genesis) | (_, BeforeOverwinter) => 170_002, (Testnet(params), Overwinter) if params.is_default_testnet() => 170_003, diff --git a/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@mainnet_10.snap b/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@mainnet_10.snap index 64663b86102..9986da0ec95 100644 --- a/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@mainnet_10.snap +++ b/zebra-rpc/src/methods/tests/snapshots/get_blockchain_info@mainnet_10.snap @@ -64,6 +64,11 @@ expression: info "name": "NU5", "activationheight": 1687104, "status": "pending" + }, + "c8e71055": { + "name": "NU6", + "activationheight": 2726400, + "status": "pending" } }, "consensus": { From 64a7277c0aa5ba9349c247d17f4c50848c09dbf0 Mon Sep 17 00:00:00 2001 From: Arya Date: Fri, 25 Oct 2024 08:55:41 -0400 Subject: [PATCH 10/16] Updates `total_size_on_disk` to be the total sst file size (#8966) --- zebra-state/src/service/finalized_state/disk_db.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-state/src/service/finalized_state/disk_db.rs b/zebra-state/src/service/finalized_state/disk_db.rs index b5095d22192..69be5a4585f 100644 --- a/zebra-state/src/service/finalized_state/disk_db.rs +++ b/zebra-state/src/service/finalized_state/disk_db.rs @@ -537,7 +537,7 @@ impl DiskDb { let total_sst_files_size = db .property_int_value_cf(cf_handle, "rocksdb.total-sst-files-size") .unwrap_or(Some(0)); - let cf_disk_size = live_data_size.unwrap_or(0) + total_sst_files_size.unwrap_or(0); + let cf_disk_size = total_sst_files_size.unwrap_or(0); total_size_on_disk += cf_disk_size; total_live_size_on_disk += live_data_size.unwrap_or(0); let mem_table_size = db From f5e872a4e24989813c0fcb52c1c698c2a50af126 Mon Sep 17 00:00:00 2001 From: Marek Date: Fri, 25 Oct 2024 16:35:14 +0200 Subject: [PATCH 11/16] chore: Update Mainnet and Testnet checkpoints (#8968) * Update Mainnet checkpoints * Update Testnet checkpoints --- .../src/checkpoint/main-checkpoints.txt | 41 +++++++++++++ .../src/checkpoint/test-checkpoints.txt | 60 +++++++++++++++++++ 2 files changed, 101 insertions(+) diff --git a/zebra-consensus/src/checkpoint/main-checkpoints.txt b/zebra-consensus/src/checkpoint/main-checkpoints.txt index aff5d444225..efc721d885a 100644 --- a/zebra-consensus/src/checkpoint/main-checkpoints.txt +++ b/zebra-consensus/src/checkpoint/main-checkpoints.txt @@ -12303,3 +12303,44 @@ 2674806 00000000014f2059c0d91a8ed6023b08294593de773268abb0b4ad79d9d20581 2675206 00000000003ebb8baab4ceaf73fde6753d4281edfa07c897458ce9a1c5ff57ee 2675606 0000000000065afdce346665ab6ca463930733149eaaf1e79033b08232f7a363 +2676006 0000000000ae0fb36f32bebe3cec27138c17442b8f960b44eddc79dc4969b908 +2676406 000000000132fe4bd59ece660621ff96a30d780dc544459ce1eb94b6537d2511 +2676806 000000000179777a6a7dd70e5c4791522458300612e95026a2f4081941216a87 +2677206 0000000000050ec5366c935475d03b93acb930c8050c99978c1f354991cdba07 +2677606 000000000126f7174d1012be32008f308ff34e54d6368f015bce9074134e3856 +2678006 0000000000b06a9511a735b19be0db8460b8e4cbae128b54a9b7ff39998531a7 +2678406 000000000192f01202a19f87fecc5d92222c23bed2ab64df250782e2bfff4120 +2678806 00000000016260f71bacd75a453116ab5376fb38d2f056b60e14031f780f5e55 +2679206 00000000013163a96dd7dff82aad81ee27bb7cac2c0bdec637d7a09fe4f63788 +2679606 000000000159321160154c3315582efbe7b4f05f683c77c8022ebc2862c929f4 +2680006 00000000014270fb475e0aab7c7561c36fd58ab925eca2636c2a70e40bf7e23e +2680406 00000000002db0db381bc4cf519b450d5953ee371e28c317ca204770118f64dd +2680806 0000000000b05f2a1efa6edbe4a6176b860dc9cee99980f136953b2addde0058 +2681206 00000000012c125a114701916aa2d29cb25b84a6d68680328d606c3ef7d08934 +2681606 0000000001425cb05ee9358e9edb7a1e91428f76456ad2769ef8d13d12db0a65 +2682006 00000000001463dfd47a94d900a2c8c6ee4013c1cc22e78eb3c6e09416323222 +2682406 00000000006805bed45600d40df8f62d6133c6ae563e70d365b0610d171823fb +2682806 0000000000001915d3ebc38ab8a37307fa8a2e7c8228161820d4a0a936d12456 +2683206 00000000002cc19cd0e5b7c0ee0ae6f2535eaf632efd6e3d87788f046cee43eb +2683606 00000000003ed8e350ceeac08f8579c63386696c42d4e63d666459ec93d5c22a +2684006 00000000007e9a086dc2586d0a139aa906007793a435055f4acd6543d710663b +2684406 000000000138cdd1607839258c15e684de1733db967a3a4645b0b64ea6ed2521 +2684806 0000000000a11042fcdd30f8d52dc52229ccac9cdebf9610413db239865100ff +2685206 00000000009464c0848870970a56d670f7f144423f3726ff893edc160df911b3 +2685606 00000000001e26dd383717aeb9a9331300994bffc621ed8f00cc83168e9be720 +2686006 0000000000a88a85865f8cb56fc8a03114649e589f2aae0f53921ff993b878c6 +2686406 00000000005f0ed9b676e945092065fd073ffb4e4c2a80a2efa632f188921ea5 +2686806 00000000006353f0748266e3cfa5306aaa4a8eeb83de7864836ef681cd8f911e +2687206 00000000013a162bcbe3cdceeab9724e4c7cdde6ab5b384353434e04aa09db8b +2687606 0000000000d2b7c500864c5b16f35fd519a28b1a26ecb1f249a3be1903165c8a +2688006 000000000061ed5dc31dcdc8af5de0c92354a4fe9cee00d726e78b7b2e55a26e +2688406 0000000001283342e0cd041487dbf38d1a2b2c987071cf847b930864a2244587 +2688806 00000000008b79e1eac8be1c9376df5aab25fb1feb6655d473b24605e2732212 +2689206 0000000000b4446a46d369ef91b7f02984ac079be0049cf65c2f4117ede74551 +2689606 00000000005a8f415767fce4aec3e4994b518ec0b74923255cc8d2146c61d527 +2690006 0000000000e485f4e858c0ba264419fc1e39b7c8dae7a468ffe80c054cad4f03 +2690406 00000000009d3bea65e90ea624b25e6cd34843941d0688a7d859f3d6f6b5262b +2690806 0000000000079e9c443b47d4208c2465aa89245824b6b420af0f77bb4088f267 +2691206 00000000015ff7395bab470fe1bc13758db68653bbcddf26f4d967817bcb5f6c +2691606 0000000000b35f7d242f8456123e83718c33af77072ce6cf709bfb34cb59fd3f +2692006 0000000000cc6bed9807a23d703d66735a63d615a494c5131c7f7c9f1f464cdc diff --git a/zebra-consensus/src/checkpoint/test-checkpoints.txt b/zebra-consensus/src/checkpoint/test-checkpoints.txt index 484621f8a1f..c1c591b9200 100644 --- a/zebra-consensus/src/checkpoint/test-checkpoints.txt +++ b/zebra-consensus/src/checkpoint/test-checkpoints.txt @@ -7533,3 +7533,63 @@ 3012800 00a5a4c7aa1e5120b05358100083165fdae6d3da4932391f806dc70b17de43b0 3013200 005816e627c296c77a1088915b359185349a4b4b345a325a889a4854c6598f71 3013600 0067f8576378bcfa73c91f734526234125ab0cc306bcbfc415359000f54908fe +3014000 0047db25b5870ba5647e850b31d06a0bd3a64d8227fe4c4479776f3e561144c2 +3014400 0082aedbe923338010bc24b74c5f4b8a2def5980a594632e0862a218199182ea +3014800 003efd3df72cd4f2f3dfffd7bfd0c987abb43148635b09f0b554ac96cf4d77ff +3015200 0026fe0c4014b137f56fb103d1e5eb23bb586d0f18ab1043c67aec24f96fea69 +3015600 00aef18251e46a440005bec4d07322def2a5c9a386ca9a7c3d4ad96b6d31465f +3016000 000ebd6ecca080b1b124e34b15e47ac174dd22bee50b6425a19fe0d2e94cf164 +3016400 00801bd3ae71526b707d8907eec5fbc858faef07397bfce9b883380ed1a203e2 +3016800 004c3c99816d2f5fd5fdf52f9b2682960963450674cd7857f213fb109750771d +3017200 003e417aab3c028eeff98ea2510f90be9b1d7923d0ba8660218a7af42a793045 +3017600 0006feba88f2d2a73b31c4a355fdd4e6841a40eaa4947de11541809f58ea091f +3018000 007029069b2fe1195bf062b79c5d8ff1e6f3656e080daf6cd9c950c95b81b56e +3018400 0014fb41444c4716e179c9cc4636116aad70fac626a0e4495fa4f379fc8b1e6c +3018800 00403a00bb37790b932e5c61e5f9d8c5ce553f9881b5d478f68e8cc734f7fb8b +3019200 0067e637848ad92b5a686d4f05fce8c915aa697b2d6ec994362632ac2db62815 +3019600 00033cb248e2fcbe49e20a6bfa1d4782e9587b7f1a8da1bbcb02a1894b8cdfee +3020000 00aa46c4cee563ee16aedad5a4c204ac15715087bd4e988193439ec6aab74e50 +3020400 00000810081b7776aafb8c772511e3a6fa7b5df3d3699cea769676412eb37e91 +3020800 00a60475dcf37ceba4610e1228a98d59f54eb2446498636131c05fd8433f0461 +3021200 0000058dd082ad737e2279b54ac4db390e19c8c33ad0cd75bb395f4400af01d7 +3021600 0018edaf94a979633b92303dfe7e6da19ae1304dda76dc220bb951c6921a2144 +3022000 00086d3b10982cdda5d3c5aae5c17cbd588e65764f19e3976c2e16822218e2b9 +3022400 00032f7487a09797f764b2925a9abcb5f53a6c28fcf892c104f102dae49012ed +3022800 009d941281cf33b562a833d90ae3df8bc21aaebfb88d8eea2fe96e62a3c66e44 +3023200 002f0bfd1e23bb01a36f2743a8c9d5d71aaf7e064eaf40f26eb7d68e582e5c6b +3023600 0084d119c5b83fac272b433a6cd1ac15a8b7f63be9263095d210532be48427ec +3024000 005f83cd9c8e1886b9e57cbb63024113ec8a7e701cf20726186a05227be031dd +3024400 0010483256d69d7c50160328638c7e1cfcd6f8a5f57f18138692fa9264759771 +3024800 001b66d2440019053592404d5fe5a0571b4398760353a739b68711b13f157dbb +3025200 0019c9f670531c8ac0eb9d2e04aca45db303b7398b8be69b2126d4a342b405f8 +3025600 00234944d221b69685fb991e61322f8c05f1aa4e74bfd0d54f6c6d5684119625 +3026000 004fce9e3a8c893cef64cefea26ea7ec4eb43fb997a5ebb861f1b8c6934acf1b +3026400 0023d6bce6b7024f5c8370ca03113b612c7f463e76260505ff51fba9eb50b773 +3026800 00324f18aa6a9dde2111af5dda458d9a25e60569503483094024555d79c6eb04 +3027200 0032663b3021c78f5ae8dcf187accd5286aba69f6b322f733480c435d4afc314 +3027600 0026bbd7606bd027b5104b0caf814f14e5135a2415d87d7ef4e838ff88746486 +3028000 00dd4248207a87d206a079f271e02ec44303f9cff352d401a63c20bfaef7d4c4 +3028400 003a7519cf0199b59114d73ec441418b5b667aa7bf7bb40a052e2f2c74d75da6 +3028800 00526c96220485d7fd697e1ffb11ecb49ae6086cefe1a6bd73ee632dfab0135a +3029200 0003d88d4998cd49bd83115c7b864ace6ef1e78240a3dff4ad42624c9bc29a17 +3029600 00568a51b1b822f72785e1ccb1604cc6e38a1b2c6233da5e13bd41730403eaaa +3030000 00118e6ca5f8545f6f6351c6f4ab549a0b012f68cd340c9caf8f0c3c608f37aa +3030400 0087bc46a5fff506d8ffed4d778349d5789b7b78867cea281931f4e3ba5288f4 +3030800 003587d5014130b331972bb05d0fa39b9fc97a0606b83041f5b666869c0bc098 +3031200 006538bd02d4cbb6eaab7c24478b30eddab46c420da124c8c2ea5924bb4ae9b4 +3031600 001b7216bb9078dd384ff26f9062e83b2852e65f475599d261c7f5f552429de7 +3032000 003199fca669ee1b3325a2f8e7e0d93156d8fba4a8de1e31d0180d7ed8b81732 +3032400 0056bb821d2572bb29446b99c13056397e79a088e575068d5489559c976f5bd7 +3032800 00145652968a8f4924b435e4f6da8ac6fbd6977cd08c63ad7673723c93cfcd6d +3033200 007ec80961e0026d08f73289a80887e3083fccd194d78a7ecc3ca3340b906dda +3033600 003d60228ba1b12f8ff36d5f25bae4e79c8dff77342449ff35167190ee82e8f4 +3034000 000988b3b1bd6d9d63ce99fe7af49614245adac3d0ac3a9c4054efe5574ddb39 +3034400 001255003bd53890368ed97a39afb59925718cee148fff51881c54ed6ccf1243 +3034800 00101aff2b5d53af8173408a147686f765e9922bc8331e2c789e40ce8adb18b0 +3035200 01429efa675108f6c13f29a23e7c44847c98e0d267aafddd0efac8cd0e2ba6d2 +3035600 00e868391b70a80d81599f7687262b8451dbe57992e630db772344008900fec8 +3036000 0086fcb484bd4b1639d64b2f42d1d62be8bc2ea353eb8cac735ccd50264f2772 +3036400 0199867258074263dd540bf4047e91d8c1cd40fb294ab102fd8c9072317de95f +3036800 002aa078e4546a72e4c6290402924c0917c2080a4dd9e0f7e7e851e82bcf562c +3037200 00613812406826a9bfa52508d602c8d14271c4dcf1cee107a9d2b8cff9ef51b5 +3037600 00b758e58e0b8f8298a52e0246860ea833e6dc3ffb447d44474662c658b373c0 From 4097bdb36452e6ba2993e121cb6ef8ea21b4f466 Mon Sep 17 00:00:00 2001 From: Marek Date: Fri, 25 Oct 2024 16:56:12 +0200 Subject: [PATCH 12/16] chore: Update docs (#8970) * Update badges * Simplify Zebra's description * Change "Building Zebra" to "Manual Build" * Update "Known Issues" * Fix a typo --- README.md | 22 ++++++++++++---------- book/src/user/troubleshooting.md | 2 +- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 7e5d94fbb46..569b6f46d4b 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,17 @@ --- -[![Integration Tests](https://github.com/ZcashFoundation/zebra/actions/workflows/sub-ci-integration-tests-gcp.yml/badge.svg)](https://github.com/ZcashFoundation/zebra/actions/workflows/sub-ci-integration-tests-gcp.yml) [![CI OSes](https://github.com/ZcashFoundation/zebra/actions/workflows/ci-unit-tests-os.yml/badge.svg)](https://github.com/ZcashFoundation/zebra/actions/workflows/ci-unit-tests-os.yml) [![Continuous Delivery](https://github.com/ZcashFoundation/zebra/actions/workflows/cd-deploy-nodes-gcp.yml/badge.svg)](https://github.com/ZcashFoundation/zebra/actions/workflows/cd-deploy-nodes-gcp.yml) [![codecov](https://codecov.io/gh/ZcashFoundation/zebra/branch/main/graph/badge.svg)](https://codecov.io/gh/ZcashFoundation/zebra) [![Build docs](https://github.com/ZcashFoundation/zebra/actions/workflows/docs-deploy-firebase.yml/badge.svg)](https://github.com/ZcashFoundation/zebra/actions/workflows/docs-deploy-firebase.yml) +[![Integration Tests](https://github.com/ZcashFoundation/zebra/actions/workflows/ci-tests.yml/badge.svg)](https://github.com/ZcashFoundation/zebra/actions/workflows/ci-tests.yml) +[![CI OSes](https://github.com/ZcashFoundation/zebra/actions/workflows/ci-unit-tests-os.yml/badge.svg)](https://github.com/ZcashFoundation/zebra/actions/workflows/ci-unit-tests-os.yml) +[![Continuous Delivery](https://github.com/ZcashFoundation/zebra/actions/workflows/cd-deploy-nodes-gcp.yml/badge.svg)](https://github.com/ZcashFoundation/zebra/actions/workflows/cd-deploy-nodes-gcp.yml) +[![codecov](https://codecov.io/gh/ZcashFoundation/zebra/branch/main/graph/badge.svg)](https://codecov.io/gh/ZcashFoundation/zebra) +[![Build docs](https://github.com/ZcashFoundation/zebra/actions/workflows/docs-deploy-firebase.yml/badge.svg)](https://github.com/ZcashFoundation/zebra/actions/workflows/docs-deploy-firebase.yml) ![License](https://img.shields.io/badge/license-MIT%2FApache--2.0-blue.svg) - [About](#about) - [Getting Started](#getting-started) - [Docker](#docker) - - [Building Zebra](#building-zebra) + - [Manual Build](#manual-build) - [Documentation](#documentation) - [User support](#user-support) - [Security](#security) @@ -16,14 +20,12 @@ ## About -[Zebra](https://zebra.zfnd.org/) is the Zcash Foundation's independent, -consensus-compatible implementation of a Zcash node. +[Zebra](https://zebra.zfnd.org/) is a Zcash full-node written in Rust. -Zebra's network stack is interoperable with `zcashd`, and Zebra implements all -the features required to reach Zcash network consensus, including the validation -of all the consensus rules for the NU5 network upgrade. -[Here](https://docs.rs/zebrad/latest/zebrad/index.html#zebra-advantages) are some -benefits of Zebra. +Zebra implements all the features required to reach Zcash network consensus, and +the network stack is interoperable with `zcashd`. +[Here](https://docs.rs/zebrad/latest/zebrad/index.html#zebra-advantages) are +some benefits of Zebra. Zebra validates blocks and transactions, but needs extra software to generate them: @@ -53,7 +55,7 @@ docker run zfnd/zebra:latest For more information, read our [Docker documentation](https://zebra.zfnd.org/user/docker.html). -### Building Zebra +### Manual Build Building Zebra requires [Rust](https://www.rust-lang.org/tools/install), [libclang](https://clang.llvm.org/doxygen/group__CINDEX.html), and a C++ diff --git a/book/src/user/troubleshooting.md b/book/src/user/troubleshooting.md index 009e079cdc9..09b31e4513d 100644 --- a/book/src/user/troubleshooting.md +++ b/book/src/user/troubleshooting.md @@ -12,7 +12,7 @@ There are a few bugs in Zebra that we're still working on fixing: - Block download and verification sometimes times out during Zebra's initial sync [#5709](https://github.com/ZcashFoundation/zebra/issues/5709). The full sync still finishes reasonably quickly. -- Experimental Tor support is disabled until Zebra upgrades to the latest `arti-client`. This happened due to a Rust dependency conflict ([#5492](https://github.com/ZcashFoundation/zebra/issues/5492)) and is still an issue due to [another dependency conflict](https://github.com/ZcashFoundation/zebra/issues/8328#issuecomment-1969989648). +- Experimental Tor support is disabled until Zebra upgrades to the latest `arti-client`. [#8328](https://github.com/ZcashFoundation/zebra/issues/8328#issuecomment-1969989648) ## Memory Issues From 8f887f2ed41503466ea2b08f11ce3340515decc5 Mon Sep 17 00:00:00 2001 From: Alfredo Garcia Date: Fri, 25 Oct 2024 13:13:01 -0300 Subject: [PATCH 13/16] fix(docs): Update documents for cookie auth where needed (#8965) * update documentation related auth cookie method for rpcs in the zebra book * Update book/src/user/lightwalletd.md * update rpc auth statement --------- Co-authored-by: Arya --- book/src/user/lightwalletd.md | 5 +++++ book/src/user/mining-testnet-s-nomp.md | 2 ++ book/src/user/mining.md | 10 +++++++++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/book/src/user/lightwalletd.md b/book/src/user/lightwalletd.md index 1e6047280be..0d862747822 100644 --- a/book/src/user/lightwalletd.md +++ b/book/src/user/lightwalletd.md @@ -46,6 +46,8 @@ for Zebra is: - `8232` for Mainnet, and - `18232` for Testnet. +Starting with Zebra v2.0.0, a cookie authentication method like the one used by the `zcashd` node is enabled by default for the RPC server. However, lightwalletd currently [does not support cookie authentication](https://github.com/zcash/lightwalletd/blob/master/docs/docker-compose-setup.md#edit-the-two-zcashconf-files), so we need to disable this authentication method to use Zebra as a backend for lightwalletd. + For example, to use Zebra as a `lightwalletd` backend on Mainnet, give it this `~/.config/zebrad.toml`: @@ -56,6 +58,9 @@ listen_addr = '127.0.0.1:8232' # automatically use multiple CPU threads parallel_cpu_threads = 0 + +# disable cookie auth +enable_cookie_auth = false ``` **WARNING:** This config allows multiple Zebra instances to share the same RPC port. diff --git a/book/src/user/mining-testnet-s-nomp.md b/book/src/user/mining-testnet-s-nomp.md index c33033ce718..61f236fbcb3 100644 --- a/book/src/user/mining-testnet-s-nomp.md +++ b/book/src/user/mining-testnet-s-nomp.md @@ -13,6 +13,7 @@ These fixes disable mining pool operator payments and miner payments: they just - change the `network.network` config to `Testnet` - add your testnet transparent address in `mining.miner_address`, or you can use the ZF testnet address `t27eWDgjFYJGVXmzrXeVjnb5J3uXDM9xH9v` - ensure that there is an `rpc.listen_addr` in the config to enable the RPC server + - disable the cookie auth system by changing `rpc.enable_cookie_auth` to `false` Example config:
@@ -48,6 +49,7 @@ These fixes disable mining pool operator payments and miner payments: they just debug_force_finished_sync = false parallel_cpu_threads = 1 listen_addr = '127.0.0.1:18232' + enable_cookie_auth = false [state] cache_dir = '/home/ar/.cache/zebra' diff --git a/book/src/user/mining.md b/book/src/user/mining.md index fd593096012..01bb9ad7dc7 100644 --- a/book/src/user/mining.md +++ b/book/src/user/mining.md @@ -80,8 +80,16 @@ Wait until zebra is in sync, you will see the sync at 100% when this happens: The easiest way to check your setup is to call the `getblocktemplate` RPC method and check the result. +Starting with Zebra v2.0.0, a cookie authentication method similar to the one used by the `zcashd` node is enabled by default. The cookie is stored in the default cache directory when the RPC endpoint starts and is deleted at shutdown. By default, the cookie is located in the cache directory; for example, on Linux, it may be found at `/home/user/.cache/zebra/.cookie`. You can change the cookie's location using the `rpc.cookie_dir` option in the configuration, or disable cookie authentication altogether by setting `rpc.enable_cookie_auth` to false. The contents of the cookie file look like this: + +``` +__cookie__:YwDDua GzvtEmWG6KWnhgd9gilo5mKdi6m38v__we3Ko= +``` + +The password is an encoded, randomly generated string. You can use it in your call as follows: + ```console -$ curl --silent --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getblocktemplate", "params": [] }' -H 'Content-type: application/json' http://127.0.0.1:8232/ | jq +$ curl --silent --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getblocktemplate", "params": [] }' -H 'Content-type: application/json' http://__cookie__:YwDDuaGzvtEmWG6KWnhgd9gilo5mKdi6m38v__we3Ko=@127.0.0.1:8232/ | jq ``` If you can see something similar to the following then you are good to go. From a941b67a5735456caa2673ed54bd7dd7e0a5a5f9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 17:33:11 +0000 Subject: [PATCH 14/16] build(deps): bump the prod group across 1 directory with 18 updates (#8958) * build(deps): bump the prod group across 1 directory with 18 updates Bumps the prod group with 15 updates in the / directory: | Package | From | To | | --- | --- | --- | | [clap](https://github.com/clap-rs/clap) | `4.5.18` | `4.5.20` | | [indexmap](https://github.com/indexmap-rs/indexmap) | `2.5.0` | `2.6.0` | | [serde](https://github.com/serde-rs/serde) | `1.0.210` | `1.0.211` | | [futures](https://github.com/rust-lang/futures-rs) | `0.3.30` | `0.3.31` | | [tokio](https://github.com/tokio-rs/tokio) | `1.40.0` | `1.41.0` | | [tower](https://github.com/tower-rs/tower) | `0.4.13` | `0.5.1` | | [pin-project](https://github.com/taiki-e/pin-project) | `1.1.5` | `1.1.6` | | [metrics](https://github.com/metrics-rs/metrics) | `0.23.0` | `0.24.0` | | [hyper](https://github.com/hyperium/hyper) | `1.4.1` | `1.5.0` | | [bytes](https://github.com/tokio-rs/bytes) | `1.7.2` | `1.8.0` | | [metrics-exporter-prometheus](https://github.com/metrics-rs/metrics) | `0.15.3` | `0.16.0` | | [once_cell](https://github.com/matklad/once_cell) | `1.19.0` | `1.20.2` | | [serde_json](https://github.com/serde-rs/json) | `1.0.128` | `1.0.132` | | [primitive-types](https://github.com/paritytech/parity-common) | `0.12.2` | `0.13.1` | | [serde_with](https://github.com/jonasbb/serde_with) | `3.9.0` | `3.11.0` | Updates `clap` from 4.5.18 to 4.5.20 - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.18...clap_complete-v4.5.20) Updates `indexmap` from 2.5.0 to 2.6.0 - [Changelog](https://github.com/indexmap-rs/indexmap/blob/master/RELEASES.md) - [Commits](https://github.com/indexmap-rs/indexmap/compare/2.5.0...2.6.0) Updates `serde` from 1.0.210 to 1.0.211 - [Release notes](https://github.com/serde-rs/serde/releases) - [Commits](https://github.com/serde-rs/serde/compare/v1.0.210...v1.0.211) Updates `futures` from 0.3.30 to 0.3.31 - [Release notes](https://github.com/rust-lang/futures-rs/releases) - [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md) - [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.30...0.3.31) Updates `tokio` from 1.40.0 to 1.41.0 - [Release notes](https://github.com/tokio-rs/tokio/releases) - [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.40.0...tokio-1.41.0) Updates `tower` from 0.4.13 to 0.5.1 - [Release notes](https://github.com/tower-rs/tower/releases) - [Commits](https://github.com/tower-rs/tower/compare/tower-0.4.13...tower-0.5.1) Updates `pin-project` from 1.1.5 to 1.1.6 - [Release notes](https://github.com/taiki-e/pin-project/releases) - [Changelog](https://github.com/taiki-e/pin-project/blob/main/CHANGELOG.md) - [Commits](https://github.com/taiki-e/pin-project/compare/v1.1.5...v1.1.6) Updates `metrics` from 0.23.0 to 0.24.0 - [Changelog](https://github.com/metrics-rs/metrics/blob/main/release.toml) - [Commits](https://github.com/metrics-rs/metrics/compare/metrics-v0.23.0...metrics-v0.24.0) Updates `hyper` from 1.4.1 to 1.5.0 - [Release notes](https://github.com/hyperium/hyper/releases) - [Changelog](https://github.com/hyperium/hyper/blob/master/CHANGELOG.md) - [Commits](https://github.com/hyperium/hyper/compare/v1.4.1...v1.5.0) Updates `bytes` from 1.7.2 to 1.8.0 - [Release notes](https://github.com/tokio-rs/bytes/releases) - [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md) - [Commits](https://github.com/tokio-rs/bytes/compare/v1.7.2...v1.8.0) Updates `metrics-exporter-prometheus` from 0.15.3 to 0.16.0 - [Changelog](https://github.com/metrics-rs/metrics/blob/main/release.toml) - [Commits](https://github.com/metrics-rs/metrics/compare/metrics-exporter-prometheus-v0.15.3...metrics-exporter-prometheus-v0.16.0) Updates `once_cell` from 1.19.0 to 1.20.2 - [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md) - [Commits](https://github.com/matklad/once_cell/compare/v1.19.0...v1.20.2) Updates `serde_json` from 1.0.128 to 1.0.132 - [Release notes](https://github.com/serde-rs/json/releases) - [Commits](https://github.com/serde-rs/json/compare/1.0.128...1.0.132) Updates `primitive-types` from 0.12.2 to 0.13.1 - [Commits](https://github.com/paritytech/parity-common/commits/primitive-types-v0.13.1) Updates `serde_with` from 3.9.0 to 3.11.0 - [Release notes](https://github.com/jonasbb/serde_with/releases) - [Commits](https://github.com/jonasbb/serde_with/compare/v3.9.0...v3.11.0) Updates `futures-util` from 0.3.30 to 0.3.31 - [Release notes](https://github.com/rust-lang/futures-rs/releases) - [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md) - [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.30...0.3.31) Updates `syn` from 2.0.79 to 2.0.82 - [Release notes](https://github.com/dtolnay/syn/releases) - [Commits](https://github.com/dtolnay/syn/compare/2.0.79...2.0.82) Updates `futures-core` from 0.3.30 to 0.3.31 - [Release notes](https://github.com/rust-lang/futures-rs/releases) - [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md) - [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.30...0.3.31) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-patch dependency-group: prod - dependency-name: indexmap dependency-type: direct:production update-type: version-update:semver-minor dependency-group: prod - dependency-name: serde dependency-type: direct:production update-type: version-update:semver-patch dependency-group: prod - dependency-name: futures dependency-type: direct:production update-type: version-update:semver-patch dependency-group: prod - dependency-name: tokio dependency-type: direct:production update-type: version-update:semver-minor dependency-group: prod - dependency-name: tower dependency-type: direct:production update-type: version-update:semver-minor dependency-group: prod - dependency-name: pin-project dependency-type: direct:production update-type: version-update:semver-patch dependency-group: prod - dependency-name: metrics dependency-type: direct:production update-type: version-update:semver-minor dependency-group: prod - dependency-name: hyper dependency-type: direct:production update-type: version-update:semver-minor dependency-group: prod - dependency-name: bytes dependency-type: direct:production update-type: version-update:semver-minor dependency-group: prod - dependency-name: metrics-exporter-prometheus dependency-type: direct:production update-type: version-update:semver-minor dependency-group: prod - dependency-name: once_cell dependency-type: direct:production update-type: version-update:semver-minor dependency-group: prod - dependency-name: serde_json dependency-type: direct:production update-type: version-update:semver-patch dependency-group: prod - dependency-name: primitive-types dependency-type: direct:production update-type: version-update:semver-minor dependency-group: prod - dependency-name: serde_with dependency-type: direct:production update-type: version-update:semver-minor dependency-group: prod - dependency-name: futures-util dependency-type: direct:production update-type: version-update:semver-patch dependency-group: prod - dependency-name: syn dependency-type: direct:production update-type: version-update:semver-patch dependency-group: prod - dependency-name: futures-core dependency-type: direct:production update-type: version-update:semver-patch dependency-group: prod ... Signed-off-by: dependabot[bot] * downgrade `primitive-types` and `tower` * cargo vet * update deny.toml --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Alfredo Garcia Co-authored-by: Marek --- Cargo.lock | 238 +++++++++++++++++---------------- deny.toml | 3 + supply-chain/audits.toml | 130 ++++++++++++++++++ supply-chain/imports.lock | 70 ++++++++-- tower-batch-control/Cargo.toml | 8 +- tower-fallback/Cargo.toml | 4 +- zebra-chain/Cargo.toml | 12 +- zebra-consensus/Cargo.toml | 12 +- zebra-grpc/Cargo.toml | 4 +- zebra-network/Cargo.toml | 16 +-- zebra-node-services/Cargo.toml | 10 +- zebra-rpc/Cargo.toml | 12 +- zebra-scan/Cargo.toml | 12 +- zebra-state/Cargo.toml | 16 +-- zebra-test/Cargo.toml | 8 +- zebra-utils/Cargo.toml | 8 +- zebrad/Cargo.toml | 28 ++-- 17 files changed, 393 insertions(+), 198 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b45ed61909d..370725fe41d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -12,7 +12,7 @@ dependencies = [ "arc-swap", "backtrace", "canonical-path", - "clap 4.5.18", + "clap 4.5.20", "color-eyre", "fs-err", "once_cell", @@ -240,7 +240,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -251,7 +251,7 @@ checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -424,7 +424,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.79", + "syn 2.0.82", "which", ] @@ -592,9 +592,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.2" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" [[package]] name = "bzip2-sys" @@ -801,9 +801,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.18" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0956a43b323ac1afaffc053ed5c4b7c1f1800bacd1683c353aabbb752515dd3" +checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" dependencies = [ "clap_builder", "clap_derive", @@ -811,9 +811,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.18" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d72166dd41634086d5803a47eb71ae740e61d84709c36f3c34110173db3961b" +checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" dependencies = [ "anstream", "anstyle", @@ -830,7 +830,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -980,7 +980,7 @@ dependencies = [ "anes", "cast", "ciborium", - "clap 4.5.18", + "clap 4.5.20", "criterion-plot", "is-terminal", "itertools 0.10.5", @@ -1082,7 +1082,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -1130,7 +1130,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -1152,7 +1152,7 @@ checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core 0.20.9", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -1442,6 +1442,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" + [[package]] name = "form_urlencoded" version = "1.2.1" @@ -1482,9 +1488,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -1497,9 +1503,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -1507,15 +1513,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -1524,38 +1530,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -1665,7 +1671,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.5.0", + "indexmap 2.6.0", "slab", "tokio", "tokio-util 0.7.12", @@ -1684,7 +1690,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.1.0", - "indexmap 2.5.0", + "indexmap 2.6.0", "slab", "tokio", "tokio-util 0.7.12", @@ -1757,6 +1763,15 @@ dependencies = [ "allocator-api2", ] +[[package]] +name = "hashbrown" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +dependencies = [ + "foldhash", +] + [[package]] name = "hdrhistogram" version = "7.5.4" @@ -1971,9 +1986,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" dependencies = [ "bytes", "futures-channel", @@ -2010,7 +2025,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3203a961e5c83b6f5498933e78b6b263e208c197b63e9c6c53cc82ffd3f63793" dependencies = [ - "hyper 1.4.1", + "hyper 1.5.0", "hyper-util", "pin-project-lite", "tokio", @@ -2028,7 +2043,7 @@ dependencies = [ "futures-util", "http 1.1.0", "http-body 1.0.0", - "hyper 1.4.1", + "hyper 1.5.0", "pin-project-lite", "socket2", "tokio", @@ -2131,12 +2146,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.14.5", + "hashbrown 0.15.0", "serde", ] @@ -2555,9 +2570,9 @@ dependencies = [ [[package]] name = "metrics" -version = "0.23.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "884adb57038347dfbaf2d5065887b6cf4312330dc8e94bc30a1a839bd79d3261" +checksum = "8ae428771d17306715c5091d446327d1cfdedc82185c65ba8423ab404e45bf10" dependencies = [ "ahash", "portable-atomic", @@ -2565,15 +2580,15 @@ dependencies = [ [[package]] name = "metrics-exporter-prometheus" -version = "0.15.3" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4f0c8427b39666bf970460908b213ec09b3b350f20c0c2eabcbba51704a08e6" +checksum = "85b6f8152da6d7892ff1b7a1c0fa3f435e92b5918ad67035c3bb432111d9a29b" dependencies = [ "base64 0.22.1", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.0", "hyper-util", - "indexmap 2.5.0", + "indexmap 2.6.0", "ipnet", "metrics", "metrics-util", @@ -2585,15 +2600,14 @@ dependencies = [ [[package]] name = "metrics-util" -version = "0.17.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4259040465c955f9f2f1a4a8a16dc46726169bca0f88e8fb2dbeced487c3e828" +checksum = "15b482df36c13dd1869d73d14d28cd4855fbd6cfc32294bee109908a9f4a4ed7" dependencies = [ "crossbeam-epoch", "crossbeam-utils", - "hashbrown 0.14.5", + "hashbrown 0.15.0", "metrics", - "num_cpus", "quanta", "sketches-ddsketch", ] @@ -2782,9 +2796,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "oorandom" @@ -3008,7 +3022,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -3029,27 +3043,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.5.0", + "indexmap 2.6.0", ] [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -3144,7 +3158,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" dependencies = [ "proc-macro2", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -3237,7 +3251,7 @@ checksum = "6ff7ff745a347b87471d859a377a9a404361e7efc2a971d73424a6d183c0fc77" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -3267,7 +3281,7 @@ dependencies = [ "prost", "prost-types", "regex", - "syn 2.0.79", + "syn 2.0.82", "tempfile", ] @@ -3281,7 +3295,7 @@ dependencies = [ "itertools 0.13.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -3981,9 +3995,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.210" +version = "1.0.211" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "1ac55e59090389fb9f0dd9e0f3c09615afed1d19094284d0b200441f13550793" dependencies = [ "serde_derive", ] @@ -3999,22 +4013,22 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.211" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "54be4f245ce16bc58d57ef2716271d0d4519e0f6defa147f6e081005bcb278ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.6.0", "itoa", "memchr", "ryu", @@ -4054,19 +4068,19 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.9.0" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" +checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.5.0", + "indexmap 2.6.0", "serde", "serde_derive", "serde_json", - "serde_with_macros 3.9.0", + "serde_with_macros 3.11.0", "time", ] @@ -4084,14 +4098,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.9.0" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350" +checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" dependencies = [ "darling 0.20.9", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -4100,7 +4114,7 @@ version = "0.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59e2dd588bf1597a252c3b920e0143eb99b0f76e4e082f4c92ce34fbc9e71ddd" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.6.0", "itoa", "libyml", "memchr", @@ -4172,9 +4186,9 @@ checksum = "fa42c91313f1d05da9b26f267f931cf178d4aba455b4c4622dd7355eb80c6640" [[package]] name = "sketches-ddsketch" -version = "0.2.2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85636c14b73d81f541e525f585c0a2109e6744e1565b5c1668e31c70c10ed65c" +checksum = "c1e9a774a6c28142ac54bb25d25562e6bcf957493a184f15ad4eebccb23e410a" [[package]] name = "slab" @@ -4315,9 +4329,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.79" +version = "2.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +checksum = "83540f837a8afc019423a8edb95b52a8effe46957ee402287f4292fae35be021" dependencies = [ "proc-macro2", "quote", @@ -4423,7 +4437,7 @@ checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -4510,9 +4524,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" dependencies = [ "backtrace", "bytes", @@ -4535,7 +4549,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -4636,7 +4650,7 @@ version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.6.0", "toml_datetime", "winnow 0.5.40", ] @@ -4647,7 +4661,7 @@ version = "0.22.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.6.0", "serde", "serde_spanned", "toml_datetime", @@ -4669,7 +4683,7 @@ dependencies = [ "http 1.1.0", "http-body 1.0.0", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.0", "hyper-timeout", "hyper-util", "percent-encoding", @@ -4695,7 +4709,7 @@ dependencies = [ "prost-build", "prost-types", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -4825,7 +4839,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -4938,7 +4952,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04659ddb06c87d233c566112c1c9c5b9e98256d9af50ec3bc9c8327f873a7568" dependencies = [ "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -5152,7 +5166,7 @@ checksum = "d674d135b4a8c1d7e813e2f8d1c9a58308aee4a680323066025e53132218bd91" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -5272,7 +5286,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", "wasm-bindgen-shared", ] @@ -5306,7 +5320,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5923,7 +5937,7 @@ dependencies = [ "serde", "serde-big-array", "serde_json", - "serde_with 3.9.0", + "serde_with 3.11.0", "sha2", "spandoc", "static_assertions", @@ -6025,7 +6039,7 @@ dependencies = [ "hex", "howudoin", "humantime-serde", - "indexmap 2.5.0", + "indexmap 2.6.0", "itertools 0.13.0", "lazy_static", "metrics", @@ -6075,7 +6089,7 @@ dependencies = [ "color-eyre", "futures", "hex", - "indexmap 2.5.0", + "indexmap 2.6.0", "insta", "jsonrpc-core", "jsonrpc-derive", @@ -6116,7 +6130,7 @@ dependencies = [ "futures", "group", "hex", - "indexmap 2.5.0", + "indexmap 2.6.0", "insta", "itertools 0.13.0", "jsonrpc", @@ -6179,7 +6193,7 @@ dependencies = [ "howudoin", "human_bytes", "humantime-serde", - "indexmap 2.5.0", + "indexmap 2.6.0", "insta", "itertools 0.13.0", "jubjub", @@ -6216,7 +6230,7 @@ dependencies = [ "futures", "hex", "humantime", - "indexmap 2.5.0", + "indexmap 2.6.0", "insta", "itertools 0.13.0", "lazy_static", @@ -6242,7 +6256,7 @@ version = "1.0.0-beta.40" dependencies = [ "color-eyre", "hex", - "indexmap 2.5.0", + "indexmap 2.6.0", "itertools 0.13.0", "jsonrpc", "quote", @@ -6253,7 +6267,7 @@ dependencies = [ "serde_json", "serde_yml", "structopt", - "syn 2.0.79", + "syn 2.0.82", "thiserror", "tinyvec", "tokio", @@ -6275,7 +6289,7 @@ dependencies = [ "atty", "bytes", "chrono", - "clap 4.5.18", + "clap 4.5.20", "color-eyre", "console-subscriber", "dirs", @@ -6285,9 +6299,9 @@ dependencies = [ "howudoin", "http-body-util", "humantime-serde", - "hyper 1.4.1", + "hyper 1.5.0", "hyper-util", - "indexmap 2.5.0", + "indexmap 2.6.0", "indicatif", "inferno", "insta", @@ -6356,7 +6370,7 @@ checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] @@ -6376,7 +6390,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.82", ] [[package]] diff --git a/deny.toml b/deny.toml index b8d35b41cc4..72e700945dc 100644 --- a/deny.toml +++ b/deny.toml @@ -96,6 +96,9 @@ skip-tree = [ # wait for dirs-sys to update windows-sys { name = "windows-sys", version = "=0.48.0" }, + # wait for zebra to update tower + { name = "hashbrown", version = "=0.12.3" }, + # Remove after release candicate period is over and the ECC crates are not patched anymore { name = "equihash", version = "=0.2.0" }, { name = "f4jumble", version = "=0.1.0" }, diff --git a/supply-chain/audits.toml b/supply-chain/audits.toml index 284db15ec14..b151f020ab5 100644 --- a/supply-chain/audits.toml +++ b/supply-chain/audits.toml @@ -46,6 +46,11 @@ who = "Alfredo Garcia " criteria = "safe-to-deploy" delta = "1.6.1 -> 1.7.1" +[[audits.bytes]] +who = "Alfredo Garcia " +criteria = "safe-to-deploy" +delta = "1.7.2 -> 1.8.0" + [[audits.cfg_aliases]] who = "Alfredo Garcia " criteria = "safe-to-deploy" @@ -108,11 +113,66 @@ criteria = "safe-to-deploy" delta = "0.1.0 -> 0.1.0@git:1410f1449100a417bfbc4f6c7167aa9808e38792" importable = false +[[audits.foldhash]] +who = "Alfredo Garcia " +criteria = "safe-to-deploy" +version = "0.1.3" + +[[audits.futures]] +who = "Alfredo Garcia " +criteria = "safe-to-deploy" +delta = "0.3.30 -> 0.3.31" + +[[audits.futures-channel]] +who = "Alfredo Garcia " +criteria = "safe-to-deploy" +delta = "0.3.30 -> 0.3.31" + +[[audits.futures-core]] +who = "Alfredo Garcia " +criteria = "safe-to-deploy" +delta = "0.3.30 -> 0.3.31" + +[[audits.futures-executor]] +who = "Alfredo Garcia " +criteria = "safe-to-deploy" +delta = "0.3.30 -> 0.3.31" + +[[audits.futures-io]] +who = "Alfredo Garcia " +criteria = "safe-to-deploy" +delta = "0.3.30 -> 0.3.31" + +[[audits.futures-macro]] +who = "Alfredo Garcia " +criteria = "safe-to-deploy" +delta = "0.3.30 -> 0.3.31" + +[[audits.futures-sink]] +who = "Alfredo Garcia " +criteria = "safe-to-deploy" +delta = "0.3.30 -> 0.3.31" + +[[audits.futures-task]] +who = "Alfredo Garcia " +criteria = "safe-to-deploy" +delta = "0.3.30 -> 0.3.31" + +[[audits.futures-util]] +who = "Alfredo Garcia " +criteria = "safe-to-deploy" +delta = "0.3.30 -> 0.3.31" + [[audits.git2]] who = "Alfredo Garcia " criteria = "safe-to-deploy" delta = "0.18.3 -> 0.19.0" +[[audits.hashbrown]] +who = "Alfredo Garcia " +criteria = "safe-to-deploy" +delta = "0.14.5 -> 0.15.0" + [[audits.hyper]] who = "Alfredo Garcia " criteria = "safe-to-deploy" @@ -123,6 +183,11 @@ who = "Alfredo Garcia " criteria = "safe-to-deploy" delta = "1.3.1 -> 1.4.1" +[[audits.hyper]] +who = "Alfredo Garcia " +criteria = "safe-to-deploy" +delta = "1.4.1 -> 1.5.0" + [[audits.hyper-util]] who = "Alfredo Garcia " criteria = "safe-to-deploy" @@ -154,6 +219,11 @@ who = "Alfredo Garcia " criteria = "safe-to-deploy" delta = "2.3.0 -> 2.5.0" +[[audits.indexmap]] +who = "Alfredo Garcia " +criteria = "safe-to-deploy" +delta = "2.5.0 -> 2.6.0" + [[audits.inferno]] who = "Alfredo Garcia " criteria = "safe-to-deploy" @@ -194,6 +264,11 @@ who = "Alfredo Garcia " criteria = "safe-to-deploy" delta = "0.22.3 -> 0.23.0" +[[audits.metrics]] +who = "Alfredo Garcia " +criteria = "safe-to-deploy" +delta = "0.23.0 -> 0.24.0" + [[audits.metrics-exporter-prometheus]] who = "Alfredo Garcia " criteria = "safe-to-deploy" @@ -204,11 +279,21 @@ who = "Alfredo Garcia " criteria = "safe-to-deploy" delta = "0.15.1 -> 0.15.3" +[[audits.metrics-exporter-prometheus]] +who = "Alfredo Garcia " +criteria = "safe-to-deploy" +delta = "0.15.3 -> 0.16.0" + [[audits.metrics-util]] who = "Alfredo Garcia " criteria = "safe-to-deploy" delta = "0.16.3 -> 0.17.0" +[[audits.metrics-util]] +who = "Alfredo Garcia " +criteria = "safe-to-deploy" +delta = "0.17.0 -> 0.18.0" + [[audits.mio]] who = "Alfredo Garcia " criteria = "safe-to-deploy" @@ -219,6 +304,11 @@ who = "Alfredo Garcia " criteria = "safe-to-deploy" version = "0.15.0" +[[audits.once_cell]] +who = "Alfredo Garcia " +criteria = "safe-to-deploy" +delta = "1.19.0 -> 1.20.2" + [[audits.orchard]] who = "Alfredo Garcia " criteria = "safe-to-deploy" @@ -240,6 +330,16 @@ who = "Alfredo Garcia " criteria = "safe-to-deploy" delta = "4.0.0 -> 4.1.0" +[[audits.pin-project]] +who = "Alfredo Garcia " +criteria = "safe-to-deploy" +delta = "1.1.5 -> 1.1.6" + +[[audits.pin-project-internal]] +who = "Alfredo Garcia " +criteria = "safe-to-deploy" +delta = "1.1.5 -> 1.1.6" + [[audits.proptest-derive]] who = "Alfredo Garcia " criteria = "safe-to-deploy" @@ -321,6 +421,16 @@ criteria = "safe-to-deploy" delta = "0.3.0 -> 0.2.0@git:b1ad3694ee13a2fc5d291ad04721a6252da0993c" importable = false +[[audits.serde]] +who = "Alfredo Garcia " +criteria = "safe-to-deploy" +delta = "1.0.210 -> 1.0.211" + +[[audits.serde_derive]] +who = "Alfredo Garcia " +criteria = "safe-to-deploy" +delta = "1.0.210 -> 1.0.211" + [[audits.serde_spanned]] who = "Alfredo Garcia " criteria = "safe-to-deploy" @@ -336,6 +446,11 @@ who = "Alfredo Garcia " criteria = "safe-to-deploy" delta = "3.8.3 -> 3.9.0" +[[audits.serde_with]] +who = "Alfredo Garcia " +criteria = "safe-to-deploy" +delta = "3.9.0 -> 3.11.0" + [[audits.serde_with_macros]] who = "Alfredo Garcia " criteria = "safe-to-deploy" @@ -346,6 +461,11 @@ who = "Alfredo Garcia " criteria = "safe-to-deploy" delta = "3.8.3 -> 3.9.0" +[[audits.serde_with_macros]] +who = "Alfredo Garcia " +criteria = "safe-to-deploy" +delta = "3.9.0 -> 3.11.0" + [[audits.serde_yml]] who = "Alfredo Garcia " criteria = "safe-to-deploy" @@ -367,6 +487,11 @@ criteria = "safe-to-deploy" delta = "0.5.0 -> 0.4.0@git:ffe4234788fd22662b937ba7c6ea01535fcc1293" importable = false +[[audits.sketches-ddsketch]] +who = "Alfredo Garcia " +criteria = "safe-to-deploy" +delta = "0.2.2 -> 0.3.0" + [[audits.tempfile]] who = "Alfredo Garcia " criteria = "safe-to-deploy" @@ -735,6 +860,11 @@ who = "Alfredo Garcia " criteria = "safe-to-deploy" delta = "1.0.0-beta.38 -> 1.0.0-beta.39" +[[audits.zebra-test]] +who = "Alfredo Garcia " +criteria = "safe-to-deploy" +delta = "1.0.0-beta.39 -> 1.0.0-beta.40" + [[audits.zebra-utils]] who = "Alfredo Garcia " criteria = "safe-to-deploy" diff --git a/supply-chain/imports.lock b/supply-chain/imports.lock index b855130e47d..510c79906eb 100644 --- a/supply-chain/imports.lock +++ b/supply-chain/imports.lock @@ -1,10 +1,58 @@ # cargo-vet imports lock +[[unpublished.tower-batch-control]] +version = "0.2.41-beta.16" +audited_as = "0.2.41-beta.15" + +[[unpublished.tower-fallback]] +version = "0.2.41-beta.16" +audited_as = "0.2.41-beta.15" + +[[unpublished.zebra-chain]] +version = "1.0.0-beta.40" +audited_as = "1.0.0-beta.39" + +[[unpublished.zebra-consensus]] +version = "1.0.0-beta.40" +audited_as = "1.0.0-beta.39" + +[[unpublished.zebra-grpc]] +version = "0.1.0-alpha.7" +audited_as = "0.1.0-alpha.6" + +[[unpublished.zebra-network]] +version = "1.0.0-beta.40" +audited_as = "1.0.0-beta.39" + +[[unpublished.zebra-node-services]] +version = "1.0.0-beta.40" +audited_as = "1.0.0-beta.39" + +[[unpublished.zebra-rpc]] +version = "1.0.0-beta.40" +audited_as = "1.0.0-beta.39" + [[unpublished.zebra-scan]] -version = "0.1.0-alpha.8" +version = "0.1.0-alpha.9" audited_as = "0.1.0-alpha.7" +[[unpublished.zebra-script]] +version = "1.0.0-beta.40" +audited_as = "1.0.0-beta.39" + +[[unpublished.zebra-state]] +version = "1.0.0-beta.40" +audited_as = "1.0.0-beta.39" + +[[unpublished.zebra-utils]] +version = "1.0.0-beta.40" +audited_as = "1.0.0-beta.39" + +[[unpublished.zebrad]] +version = "2.0.0-rc.0" +audited_as = "1.9.0" + [[publisher.cexpr]] version = "0.6.0" when = "2021-10-11" @@ -13,15 +61,15 @@ user-login = "emilio" user-name = "Emilio Cobos Álvarez" [[publisher.clap]] -version = "4.5.18" -when = "2024-09-20" +version = "4.5.20" +when = "2024-10-08" user-id = 6743 user-login = "epage" user-name = "Ed Page" [[publisher.clap_builder]] -version = "4.5.18" -when = "2024-09-20" +version = "4.5.20" +when = "2024-10-08" user-id = 6743 user-login = "epage" user-name = "Ed Page" @@ -48,8 +96,8 @@ user-login = "hsivonen" user-name = "Henri Sivonen" [[publisher.serde_json]] -version = "1.0.128" -when = "2024-09-04" +version = "1.0.132" +when = "2024-10-19" user-id = 3618 user-login = "dtolnay" user-name = "David Tolnay" @@ -62,15 +110,15 @@ user-login = "dtolnay" user-name = "David Tolnay" [[publisher.syn]] -version = "2.0.79" -when = "2024-09-27" +version = "2.0.82" +when = "2024-10-20" user-id = 3618 user-login = "dtolnay" user-name = "David Tolnay" [[publisher.tokio]] -version = "1.40.0" -when = "2024-08-30" +version = "1.41.0" +when = "2024-10-22" user-id = 6741 user-login = "Darksonn" user-name = "Alice Ryhl" diff --git a/tower-batch-control/Cargo.toml b/tower-batch-control/Cargo.toml index 8bcc9a3ba34..993b4cbc7d3 100644 --- a/tower-batch-control/Cargo.toml +++ b/tower-batch-control/Cargo.toml @@ -22,11 +22,11 @@ keywords = ["tower", "batch"] categories = ["algorithms", "asynchronous"] [dependencies] -futures = "0.3.30" +futures = "0.3.31" futures-core = "0.3.28" -pin-project = "1.1.5" +pin-project = "1.1.6" rayon = "1.10.0" -tokio = { version = "1.40.0", features = ["time", "sync", "tracing", "macros"] } +tokio = { version = "1.41.0", features = ["time", "sync", "tracing", "macros"] } tokio-util = "0.7.12" tower = { version = "0.4.13", features = ["util", "buffer"] } tracing = "0.1.39" @@ -41,7 +41,7 @@ tinyvec = { version = "1.8.0", features = ["rustc_1_55"] } ed25519-zebra = "4.0.3" rand = "0.8.5" -tokio = { version = "1.40.0", features = ["full", "tracing", "test-util"] } +tokio = { version = "1.41.0", features = ["full", "tracing", "test-util"] } tokio-test = "0.4.4" tower-fallback = { path = "../tower-fallback/", version = "0.2.41-beta.16" } tower-test = "0.4.0" diff --git a/tower-fallback/Cargo.toml b/tower-fallback/Cargo.toml index a3078d916cc..9ca8691b135 100644 --- a/tower-fallback/Cargo.toml +++ b/tower-fallback/Cargo.toml @@ -16,12 +16,12 @@ keywords = ["tower", "batch"] categories = ["algorithms", "asynchronous"] [dependencies] -pin-project = "1.1.5" +pin-project = "1.1.6" tower = "0.4.13" futures-core = "0.3.28" tracing = "0.1.39" [dev-dependencies] -tokio = { version = "1.40.0", features = ["full", "tracing", "test-util"] } +tokio = { version = "1.41.0", features = ["full", "tracing", "test-util"] } zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.40" } diff --git a/zebra-chain/Cargo.toml b/zebra-chain/Cargo.toml index 3f932ea298a..50779cb0359 100644 --- a/zebra-chain/Cargo.toml +++ b/zebra-chain/Cargo.toml @@ -115,12 +115,12 @@ tracing = "0.1.39" # Serialization hex = { version = "0.4.3", features = ["serde"] } -serde = { version = "1.0.210", features = ["serde_derive", "rc"] } -serde_with = "3.9.0" +serde = { version = "1.0.211", features = ["serde_derive", "rc"] } +serde_with = "3.11.0" serde-big-array = "0.5.1" # Processing -futures = "0.3.30" +futures = "0.3.31" itertools = "0.13.0" rayon = "1.10.0" @@ -130,10 +130,10 @@ redjubjub = "0.7.0" reddsa = "0.5.1" # Production feature json-conversion -serde_json = { version = "1.0.128", optional = true } +serde_json = { version = "1.0.132", optional = true } # Production feature async-error and testing feature proptest-impl -tokio = { version = "1.40.0", optional = true } +tokio = { version = "1.41.0", optional = true } # Experimental feature shielded-scan zcash_client_backend = { workspace = true, optional = true } @@ -166,7 +166,7 @@ proptest-derive = "0.5.0" rand = "0.8.5" rand_chacha = "0.3.1" -tokio = { version = "1.40.0", features = ["full", "tracing", "test-util"] } +tokio = { version = "1.41.0", features = ["full", "tracing", "test-util"] } zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.40" } diff --git a/zebra-consensus/Cargo.toml b/zebra-consensus/Cargo.toml index ba71369d060..2a680d144b9 100644 --- a/zebra-consensus/Cargo.toml +++ b/zebra-consensus/Cargo.toml @@ -45,14 +45,14 @@ rayon = "1.10.0" chrono = { version = "0.4.38", default-features = false, features = ["clock", "std"] } lazy_static = "1.4.0" -once_cell = "1.18.0" -serde = { version = "1.0.210", features = ["serde_derive"] } +once_cell = "1.20.2" +serde = { version = "1.0.211", features = ["serde_derive"] } -futures = "0.3.30" +futures = "0.3.31" futures-util = "0.3.28" -metrics = "0.23.0" +metrics = "0.24.0" thiserror = "1.0.64" -tokio = { version = "1.40.0", features = ["time", "sync", "tracing", "rt-multi-thread"] } +tokio = { version = "1.41.0", features = ["time", "sync", "tracing", "rt-multi-thread"] } tower = { version = "0.4.13", features = ["timeout", "util", "buffer"] } tracing = "0.1.39" tracing-futures = "0.2.5" @@ -90,7 +90,7 @@ proptest = "1.4.0" proptest-derive = "0.5.0" spandoc = "0.2.2" -tokio = { version = "1.40.0", features = ["full", "tracing", "test-util"] } +tokio = { version = "1.41.0", features = ["full", "tracing", "test-util"] } tracing-error = "0.2.0" tracing-subscriber = "0.3.18" diff --git a/zebra-grpc/Cargo.toml b/zebra-grpc/Cargo.toml index 9f10802f7d6..ab273b66e97 100644 --- a/zebra-grpc/Cargo.toml +++ b/zebra-grpc/Cargo.toml @@ -20,8 +20,8 @@ futures-util = "0.3.28" tonic = "0.12.3" tonic-reflection = "0.12.3" prost = "0.13.3" -serde = { version = "1.0.210", features = ["serde_derive"] } -tokio = { version = "1.40.0", features = ["macros", "rt-multi-thread"] } +serde = { version = "1.0.211", features = ["serde_derive"] } +tokio = { version = "1.41.0", features = ["macros", "rt-multi-thread"] } tokio-stream = "0.1.16" tower = { version = "0.4.13", features = ["util", "buffer", "timeout"] } color-eyre = "0.6.3" diff --git a/zebra-network/Cargo.toml b/zebra-network/Cargo.toml index e042e583955..ae02c4a6a5b 100644 --- a/zebra-network/Cargo.toml +++ b/zebra-network/Cargo.toml @@ -42,31 +42,31 @@ proptest-impl = ["proptest", "proptest-derive", "zebra-chain/proptest-impl"] [dependencies] bitflags = "2.5.0" byteorder = "1.5.0" -bytes = "1.7.2" +bytes = "1.8.0" chrono = { version = "0.4.38", default-features = false, features = ["clock", "std"] } dirs = "5.0.1" hex = "0.4.3" humantime-serde = "1.1.1" -indexmap = { version = "2.5.0", features = ["serde"] } +indexmap = { version = "2.6.0", features = ["serde"] } itertools = "0.13.0" lazy_static = "1.4.0" num-integer = "0.1.46" ordered-map = "0.4.2" -pin-project = "1.1.5" +pin-project = "1.1.6" rand = "0.8.5" rayon = "1.10.0" regex = "1.11.0" -serde = { version = "1.0.210", features = ["serde_derive"] } +serde = { version = "1.0.211", features = ["serde_derive"] } tempfile = "3.13.0" thiserror = "1.0.64" -futures = "0.3.30" -tokio = { version = "1.40.0", features = ["fs", "io-util", "net", "time", "tracing", "macros", "rt-multi-thread"] } +futures = "0.3.31" +tokio = { version = "1.41.0", features = ["fs", "io-util", "net", "time", "tracing", "macros", "rt-multi-thread"] } tokio-stream = { version = "0.1.16", features = ["sync", "time"] } tokio-util = { version = "0.7.12", features = ["codec"] } tower = { version = "0.4.13", features = ["retry", "discover", "load", "load-shed", "timeout", "util", "buffer"] } -metrics = "0.23.0" +metrics = "0.24.0" tracing-futures = "0.2.5" tracing-error = { version = "0.2.0", features = ["traced-error"] } tracing = "0.1.39" @@ -90,7 +90,7 @@ proptest = "1.4.0" proptest-derive = "0.5.0" static_assertions = "1.1.0" -tokio = { version = "1.40.0", features = ["full", "tracing", "test-util"] } +tokio = { version = "1.41.0", features = ["full", "tracing", "test-util"] } toml = "0.8.19" zebra-chain = { path = "../zebra-chain", features = ["proptest-impl"] } diff --git a/zebra-node-services/Cargo.toml b/zebra-node-services/Cargo.toml index 01c464b361b..aa0fb7e902e 100644 --- a/zebra-node-services/Cargo.toml +++ b/zebra-node-services/Cargo.toml @@ -46,14 +46,14 @@ color-eyre = { version = "0.6.3", optional = true } jsonrpc-core = { version = "18.0.0", optional = true } # Security: avoid default dependency on openssl reqwest = { version = "0.11.26", default-features = false, features = ["rustls-tls"], optional = true } -serde = { version = "1.0.210", optional = true } -serde_json = { version = "1.0.128", optional = true } -tokio = { version = "1.40.0", features = ["time", "sync"] } +serde = { version = "1.0.211", optional = true } +serde_json = { version = "1.0.132", optional = true } +tokio = { version = "1.41.0", features = ["time", "sync"] } [dev-dependencies] color-eyre = "0.6.3" jsonrpc-core = "18.0.0" reqwest = { version = "0.11.26", default-features = false, features = ["rustls-tls"] } -serde = "1.0.210" -serde_json = "1.0.128" +serde = "1.0.211" +serde_json = "1.0.132" diff --git a/zebra-rpc/Cargo.toml b/zebra-rpc/Cargo.toml index d3976e15e1e..da909de70fc 100644 --- a/zebra-rpc/Cargo.toml +++ b/zebra-rpc/Cargo.toml @@ -57,15 +57,15 @@ chrono = { version = "0.4.38", default-features = false, features = [ "clock", "std", ] } -futures = "0.3.30" +futures = "0.3.31" jsonrpc-core = "18.0.0" jsonrpc-derive = "18.0.0" jsonrpc-http-server = "18.0.0" # zebra-rpc needs the preserve_order feature in serde_json, which is a dependency of jsonrpc-core -serde_json = { version = "1.0.128", features = ["preserve_order"] } -indexmap = { version = "2.5.0", features = ["serde"] } +serde_json = { version = "1.0.132", features = ["preserve_order"] } +indexmap = { version = "2.6.0", features = ["serde"] } # RPC endpoint basic auth base64 = "0.22.1" @@ -74,7 +74,7 @@ rand = "0.8.5" # Error handling color-eyre = "0.6.3" -tokio = { version = "1.40.0", features = [ +tokio = { version = "1.41.0", features = [ "time", "rt-multi-thread", "macros", @@ -91,7 +91,7 @@ tokio-stream = { version = "0.1.16", optional = true } tracing = "0.1.39" hex = { version = "0.4.3", features = ["serde"] } -serde = { version = "1.0.210", features = ["serde_derive"] } +serde = { version = "1.0.211", features = ["serde_derive"] } # For the `stop` RPC method. nix = { version = "0.29.0", features = ["signal"] } @@ -124,7 +124,7 @@ insta = { version = "1.40.0", features = ["redactions", "json", "ron"] } proptest = "1.4.0" thiserror = "1.0.64" -tokio = { version = "1.40.0", features = ["full", "tracing", "test-util"] } +tokio = { version = "1.41.0", features = ["full", "tracing", "test-util"] } zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.40", features = [ "proptest-impl", diff --git a/zebra-scan/Cargo.toml b/zebra-scan/Cargo.toml index 8ca2facdb47..b66f38520cc 100644 --- a/zebra-scan/Cargo.toml +++ b/zebra-scan/Cargo.toml @@ -61,14 +61,14 @@ results-reader = [ [dependencies] color-eyre = "0.6.3" -indexmap = { version = "2.5.0", features = ["serde"] } +indexmap = { version = "2.6.0", features = ["serde"] } itertools = "0.13.0" semver = "1.0.23" -serde = { version = "1.0.210", features = ["serde_derive"] } -tokio = { version = "1.40.0", features = ["time"] } +serde = { version = "1.0.211", features = ["serde_derive"] } +tokio = { version = "1.41.0", features = ["time"] } tower = "0.4.13" tracing = "0.1.39" -futures = "0.3.30" +futures = "0.3.31" # ECC dependencies. zcash_client_backend.workspace = true @@ -102,7 +102,7 @@ zebra-test = { path = "../zebra-test", version = "1.0.0-beta.40", optional = tru tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } structopt = "0.3.26" lazy_static = "1.4.0" -serde_json = "1.0.128" +serde_json = "1.0.132" jsonrpc = { version = "0.18.0", optional = true } hex = { version = "0.4.3", optional = true } @@ -111,7 +111,7 @@ zebrad = { path = "../zebrad", version = "2.0.0-rc.0" } [dev-dependencies] insta = { version = "1.40.0", features = ["ron", "redactions"] } -tokio = { version = "1.40.0", features = ["test-util"] } +tokio = { version = "1.41.0", features = ["test-util"] } proptest = "1.4.0" proptest-derive = "0.5.0" diff --git a/zebra-state/Cargo.toml b/zebra-state/Cargo.toml index a3ee910ef11..3ed659f2a6d 100644 --- a/zebra-state/Cargo.toml +++ b/zebra-state/Cargo.toml @@ -49,33 +49,33 @@ elasticsearch = [ bincode = "1.3.3" chrono = { version = "0.4.38", default-features = false, features = ["clock", "std"] } dirs = "5.0.1" -futures = "0.3.30" +futures = "0.3.31" hex = "0.4.3" hex-literal = "0.4.1" humantime-serde = "1.1.1" human_bytes = { version = "0.4.3", default-features = false } -indexmap = "2.5.0" +indexmap = "2.6.0" itertools = "0.13.0" lazy_static = "1.4.0" -metrics = "0.23.0" +metrics = "0.24.0" mset = "0.1.1" regex = "1.11.0" rlimit = "0.10.2" rocksdb = { version = "0.22.0", default-features = false, features = ["lz4"] } semver = "1.0.23" -serde = { version = "1.0.210", features = ["serde_derive"] } +serde = { version = "1.0.211", features = ["serde_derive"] } tempfile = "3.13.0" thiserror = "1.0.64" rayon = "1.10.0" -tokio = { version = "1.40.0", features = ["rt-multi-thread", "sync", "tracing"] } +tokio = { version = "1.41.0", features = ["rt-multi-thread", "sync", "tracing"] } tower = { version = "0.4.13", features = ["buffer", "util"] } tracing = "0.1.39" # elasticsearch specific dependencies. # Security: avoid default dependency on openssl elasticsearch = { version = "8.5.0-alpha.1", default-features = false, features = ["rustls-tls"], optional = true } -serde_json = { version = "1.0.128", package = "serde_json", optional = true } +serde_json = { version = "1.0.132", package = "serde_json", optional = true } zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.40", features = ["async-error"] } @@ -93,7 +93,7 @@ color-eyre = "0.6.3" # Enable a feature that makes tinyvec compile much faster. tinyvec = { version = "1.8.0", features = ["rustc_1_55"] } -once_cell = "1.18.0" +once_cell = "1.20.2" spandoc = "0.2.2" hex = { version = "0.4.3", features = ["serde"] } @@ -106,7 +106,7 @@ rand = "0.8.5" halo2 = { package = "halo2_proofs", version = "0.3.0" } jubjub = "0.10.0" -tokio = { version = "1.40.0", features = ["full", "tracing", "test-util"] } +tokio = { version = "1.41.0", features = ["full", "tracing", "test-util"] } zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.40", features = ["proptest-impl"] } zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.40" } diff --git a/zebra-test/Cargo.toml b/zebra-test/Cargo.toml index 8cbec5f35ac..837c5f685a5 100644 --- a/zebra-test/Cargo.toml +++ b/zebra-test/Cargo.toml @@ -16,18 +16,18 @@ categories = ["command-line-utilities", "cryptography::cryptocurrencies"] [dependencies] hex = "0.4.3" -indexmap = "2.5.0" +indexmap = "2.6.0" lazy_static = "1.4.0" insta = "1.40.0" itertools = "0.13.0" proptest = "1.4.0" -once_cell = "1.18.0" +once_cell = "1.20.2" rand = "0.8.5" regex = "1.11.0" -tokio = { version = "1.40.0", features = ["full", "tracing", "test-util"] } +tokio = { version = "1.41.0", features = ["full", "tracing", "test-util"] } tower = { version = "0.4.13", features = ["util"] } -futures = "0.3.30" +futures = "0.3.31" color-eyre = "0.6.3" # This is a transitive dependency via color-eyre. diff --git a/zebra-utils/Cargo.toml b/zebra-utils/Cargo.toml index 9e241bd58f7..3d925649aec 100644 --- a/zebra-utils/Cargo.toml +++ b/zebra-utils/Cargo.toml @@ -89,7 +89,7 @@ tinyvec = { version = "1.8.0", features = ["rustc_1_55"] } structopt = "0.3.26" hex = "0.4.3" -serde_json = "1.0.128" +serde_json = "1.0.132" tracing-error = "0.2.0" tracing-subscriber = "0.3.18" thiserror = "1.0.64" @@ -109,7 +109,7 @@ regex = { version = "1.11.0", optional = true } reqwest = { version = "0.11.26", default-features = false, features = ["rustls-tls"], optional = true } # These crates are needed for the zebra-checkpoints and search-issue-refs binaries -tokio = { version = "1.40.0", features = ["full"], optional = true } +tokio = { version = "1.41.0", features = ["full"], optional = true } jsonrpc = { version = "0.18.0", optional = true } @@ -122,6 +122,6 @@ rand = "0.8.5" syn = { version = "2.0.79", features = ["full"], optional = true } quote = { version = "1.0.37", optional = true } serde_yml = { version = "0.0.12", optional = true } -serde = { version = "1.0.210", features = ["serde_derive"], optional = true } -indexmap = "2.5.0" +serde = { version = "1.0.211", features = ["serde_derive"], optional = true } +indexmap = "2.6.0" diff --git a/zebrad/Cargo.toml b/zebrad/Cargo.toml index ab687f8225d..73a5139395f 100644 --- a/zebrad/Cargo.toml +++ b/zebrad/Cargo.toml @@ -168,21 +168,21 @@ zebra-state = { path = "../zebra-state", version = "1.0.0-beta.40" } zebra-utils = { path = "../zebra-utils", version = "1.0.0-beta.40", optional = true } abscissa_core = "0.7.0" -clap = { version = "4.5.18", features = ["cargo"] } +clap = { version = "4.5.20", features = ["cargo"] } chrono = { version = "0.4.38", default-features = false, features = ["clock", "std"] } humantime-serde = "1.1.1" -indexmap = "2.5.0" +indexmap = "2.6.0" lazy_static = "1.4.0" semver = "1.0.23" -serde = { version = "1.0.210", features = ["serde_derive"] } +serde = { version = "1.0.211", features = ["serde_derive"] } toml = "0.8.19" -futures = "0.3.30" +futures = "0.3.31" rayon = "1.10.0" -tokio = { version = "1.40.0", features = ["time", "rt-multi-thread", "macros", "tracing", "signal"] } +tokio = { version = "1.41.0", features = ["time", "rt-multi-thread", "macros", "tracing", "signal"] } tokio-stream = { version = "0.1.16", features = ["time"] } tower = { version = "0.4.13", features = ["hedge", "limit"] } -pin-project = "1.1.5" +pin-project = "1.1.6" color-eyre = { version = "0.6.3", default-features = false, features = ["issue-url"] } # This is a transitive dependency via color-eyre. @@ -197,7 +197,7 @@ tracing-error = "0.2.0" tracing-futures = "0.2.5" tracing = "0.1.39" -metrics = "0.23.0" +metrics = "0.24.0" dirs = "5.0.1" atty = "0.2.14" @@ -219,13 +219,13 @@ inferno = { version = "0.11.21", default-features = false, optional = true } tracing-journald = { version = "0.3.0", optional = true } # prod feature filter-reload -hyper = { version = "1.3.1", features = ["http1", "http2", "server"], optional = true } +hyper = { version = "1.5.0", features = ["http1", "http2", "server"], optional = true } http-body-util = { version = "0.1.2", optional = true } hyper-util = { version = "0.1.9", optional = true } -bytes = { version = "1.7.2", optional = true } +bytes = { version = "1.8.0", optional = true } # prod feature prometheus -metrics-exporter-prometheus = { version = "0.15.3", default-features = false, features = ["http-listener"], optional = true } +metrics-exporter-prometheus = { version = "0.16.0", default-features = false, features = ["http-listener"], optional = true } # prod feature release_max_level_info # @@ -255,18 +255,18 @@ abscissa_core = { version = "0.7.0", features = ["testing"] } hex = "0.4.3" hex-literal = "0.4.1" jsonrpc-core = "18.0.0" -once_cell = "1.18.0" +once_cell = "1.20.2" regex = "1.11.0" insta = { version = "1.40.0", features = ["json"] } # zebra-rpc needs the preserve_order feature, it also makes test results more stable -serde_json = { version = "1.0.128", features = ["preserve_order"] } +serde_json = { version = "1.0.132", features = ["preserve_order"] } tempfile = "3.13.0" -hyper = { version = "1.3.1", features = ["http1", "http2", "server"]} +hyper = { version = "1.5.0", features = ["http1", "http2", "server"]} tracing-test = { version = "0.2.4", features = ["no-env-filter"] } -tokio = { version = "1.40.0", features = ["full", "tracing", "test-util"] } +tokio = { version = "1.41.0", features = ["full", "tracing", "test-util"] } tokio-stream = "0.1.16" # test feature lightwalletd-grpc-tests From 8b4ecc69d78b6c90423818e91d51841502374e69 Mon Sep 17 00:00:00 2001 From: Marek Date: Fri, 25 Oct 2024 21:36:17 +0200 Subject: [PATCH 15/16] chore: Update `Cargo.lock` (#8969) * Update `Cargo.lock` * Update `deny.toml` --- Cargo.lock | 926 +++++++++++++++++++++++++++++++++-------------------- deny.toml | 12 +- 2 files changed, 596 insertions(+), 342 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 370725fe41d..5a5767b3c5a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -56,6 +56,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + [[package]] name = "aead" version = "0.5.2" @@ -137,9 +143,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.14" +version = "0.6.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +checksum = "23a1e53f0f5d86382dafe1cf314783b2044280f406e7e1506368220ad11b1338" dependencies = [ "anstyle", "anstyle-parse", @@ -152,43 +158,43 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "8365de52b16c035ff4fcafe0092ba9390540e3e352870ac09933bebcaa2c8c56" [[package]] name = "anstyle-parse" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.3" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8" [[package]] name = "arc-swap" @@ -198,21 +204,21 @@ checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" [[package]] name = "arrayref" -version = "0.3.7" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "async-compression" -version = "0.4.11" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd066d0b4ef8ecb03a55319dc13aa6910616d0f44008a045bb1835af830abff5" +checksum = "0cb8f1d480b0ea3783ab015936d2a55c87e219676f0c0b7dec61494043f21857" dependencies = [ "flate2", "futures-core", @@ -223,9 +229,9 @@ dependencies = [ [[package]] name = "async-stream" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" dependencies = [ "async-stream-impl", "futures-core", @@ -234,24 +240,24 @@ dependencies = [ [[package]] name = "async-stream-impl" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.85", ] [[package]] name = "async-trait" -version = "0.1.80" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.85", ] [[package]] @@ -273,22 +279,22 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "axum" -version = "0.7.5" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" +checksum = "504e3947307ac8326a5437504c517c4b56716c9d98fac0028c2acc7ca47d70ae" dependencies = [ "async-trait", "axum-core", "bytes", "futures-util", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "http-body-util", "itoa", "matchit", @@ -299,27 +305,27 @@ dependencies = [ "rustversion", "serde", "sync_wrapper 1.0.1", - "tower", + "tower 0.5.1", "tower-layer", "tower-service", ] [[package]] name = "axum-core" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" dependencies = [ "async-trait", "bytes", "futures-util", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "http-body-util", "mime", "pin-project-lite", "rustversion", - "sync_wrapper 0.1.2", + "sync_wrapper 1.0.1", "tower-layer", "tower-service", ] @@ -334,7 +340,7 @@ dependencies = [ "cc", "cfg-if 1.0.0", "libc", - "miniz_oxide", + "miniz_oxide 0.7.4", "object", "rustc-demangle", ] @@ -365,9 +371,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" -version = "1.0.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a32fd6af2b5827bce66c29053ba0e7c42b9dcab01835835058558c10851a46b" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "bech32" @@ -407,9 +413,9 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.69.4" +version = "0.69.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" +checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" dependencies = [ "bitflags 2.6.0", "cexpr", @@ -417,15 +423,32 @@ dependencies = [ "itertools 0.12.1", "lazy_static", "lazycell", + "proc-macro2", + "quote", + "regex", + "rustc-hash 1.1.0", + "shlex", + "syn 2.0.85", +] + +[[package]] +name = "bindgen" +version = "0.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" +dependencies = [ + "bitflags 2.6.0", + "cexpr", + "clang-sys", + "itertools 0.13.0", "log", "prettyplease", "proc-macro2", "quote", "regex", - "rustc-hash", + "rustc-hash 1.1.0", "shlex", - "syn 2.0.82", - "which", + "syn 2.0.85", ] [[package]] @@ -558,9 +581,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.9.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" +checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" dependencies = [ "memchr", "serde", @@ -580,9 +603,9 @@ checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" [[package]] name = "bytemuck" -version = "1.16.1" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e" +checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" [[package]] name = "byteorder" @@ -609,9 +632,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.7" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" +checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" dependencies = [ "serde", ] @@ -662,13 +685,13 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.100" +version = "1.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c891175c3fb232128f48de6590095e59198bbeb8620c310be349bfc3afd12c7b" +checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" dependencies = [ "jobserver", "libc", - "once_cell", + "shlex", ] [[package]] @@ -830,14 +853,14 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.85", ] [[package]] name = "clap_lex" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "color-eyre" @@ -869,9 +892,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "console" @@ -888,9 +911,9 @@ dependencies = [ [[package]] name = "console-api" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86ed14aa9c9f927213c6e4f3ef75faaad3406134efe84ba2cb7983431d5f0931" +checksum = "8030735ecb0d128428b64cd379809817e620a40e5001c54465b99ec5feec2857" dependencies = [ "futures-core", "prost", @@ -901,9 +924,9 @@ dependencies = [ [[package]] name = "console-subscriber" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e3a111a37f3333946ebf9da370ba5c5577b18eb342ec683eb488dd21980302" +checksum = "6539aa9c6a4cd31f4b1c040f860a1eac9aa80e7df6b05d506a6e7179936d6a01" dependencies = [ "console-api", "crossbeam-channel", @@ -933,9 +956,9 @@ checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] name = "constant_time_eq" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" [[package]] name = "core-foundation" @@ -949,15 +972,15 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] @@ -1068,7 +1091,7 @@ dependencies = [ "curve25519-dalek-derive", "digest", "fiat-crypto", - "rustc_version 0.4.0", + "rustc_version 0.4.1", "serde", "subtle", "zeroize", @@ -1082,7 +1105,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.85", ] [[package]] @@ -1097,12 +1120,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" dependencies = [ - "darling_core 0.20.9", - "darling_macro 0.20.9", + "darling_core 0.20.10", + "darling_macro 0.20.10", ] [[package]] @@ -1121,16 +1144,16 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.82", + "syn 2.0.85", ] [[package]] @@ -1146,13 +1169,13 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ - "darling_core 0.20.9", + "darling_core 0.20.10", "quote", - "syn 2.0.82", + "syn 2.0.85", ] [[package]] @@ -1219,9 +1242,9 @@ dependencies = [ [[package]] name = "document-features" -version = "0.2.8" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef5282ad69563b5fc40319526ba27e0e7363d552a896f0297d54f767717f9b95" +checksum = "cb6969eaabd2421f8a2775cfd2471a2b634372b4a25d41e3bd647b79912850a0" dependencies = [ "litrs", ] @@ -1261,9 +1284,9 @@ dependencies = [ [[package]] name = "either" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "elasticsearch" @@ -1276,7 +1299,7 @@ dependencies = [ "dyn-clone", "lazy_static", "percent-encoding", - "reqwest", + "reqwest 0.11.27", "rustc_version 0.2.3", "serde", "serde_json", @@ -1293,9 +1316,9 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if 1.0.0", ] @@ -1415,12 +1438,12 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.30" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.8.0", ] [[package]] @@ -1542,7 +1565,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.85", ] [[package]] @@ -1636,9 +1659,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "globset" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" +checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" dependencies = [ "aho-corasick", "bstr", @@ -1680,9 +1703,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" +checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" dependencies = [ "atomic-waker", "bytes", @@ -1815,6 +1838,12 @@ 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 = "hex" version = "0.4.3" @@ -1905,9 +1934,9 @@ dependencies = [ [[package]] name = "http-body" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", "http 1.1.0", @@ -1922,15 +1951,15 @@ dependencies = [ "bytes", "futures-util", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "pin-project-lite", ] [[package]] name = "httparse" -version = "1.9.4" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "httpdate" @@ -1962,9 +1991,9 @@ dependencies = [ [[package]] name = "hyper" -version = "0.14.30" +version = "0.14.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" dependencies = [ "bytes", "futures-channel", @@ -1993,9 +2022,9 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.5", + "h2 0.4.6", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "httparse", "httpdate", "itoa", @@ -2013,10 +2042,28 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.30", - "rustls", + "hyper 0.14.31", + "rustls 0.21.12", + "tokio", + "tokio-rustls 0.24.1", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" +dependencies = [ + "futures-util", + "http 1.1.0", + "hyper 1.5.0", + "hyper-util", + "rustls 0.23.15", + "rustls-pki-types", "tokio", - "tokio-rustls", + "tokio-rustls 0.26.0", + "tower-service", + "webpki-roots 0.26.6", ] [[package]] @@ -2042,7 +2089,7 @@ dependencies = [ "futures-channel", "futures-util", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "hyper 1.5.0", "pin-project-lite", "socket2", @@ -2053,9 +2100,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -2221,26 +2268,26 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.9.0" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" [[package]] name = "is-terminal" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" +checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi 0.4.0", "libc", "windows-sys 0.52.0", ] [[package]] name = "is_terminal_polyfill" -version = "1.70.0" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itertools" @@ -2277,18 +2324,18 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jobserver" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] @@ -2338,7 +2385,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1dea6e07251d9ce6a552abfb5d7ad6bc290a4596c8dcc3d795fae2bbdc1f3ff" dependencies = [ "futures", - "hyper 0.14.30", + "hyper 0.14.31", "jsonrpc-core", "jsonrpc-server-utils", "log", @@ -2381,11 +2428,11 @@ dependencies = [ [[package]] name = "known-folders" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4397c789f2709d23cfcb703b316e0766a8d4b17db2d47b0ab096ef6047cae1d8" +checksum = "b7d9a1740cc8b46e259a0eb787d79d855e79ff10b9855a5eba58868d5da7927c" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2405,9 +2452,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.159" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" [[package]] name = "libgit2-sys" @@ -2423,9 +2470,9 @@ dependencies = [ [[package]] name = "libloading" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e310b3a6b5907f99202fcdb4960ff45b93735d7c7d96b760fcff8db2dc0e103d" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if 1.0.0", "windows-targets 0.52.6", @@ -2453,7 +2500,7 @@ version = "0.16.0+8.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce3d60bc059831dc1c83903fb45c103f75db65c5a7bf22272764d9cc683e348c" dependencies = [ - "bindgen", + "bindgen 0.69.5", "bzip2-sys", "cc", "glob", @@ -2474,9 +2521,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.18" +version = "1.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c15da26e5af7e25c90b37a2d75cdbf940cf4a55316de9d84c679c9b8bfabf82e" +checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" dependencies = [ "cc", "libc", @@ -2520,9 +2567,9 @@ checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "lz4-sys" -version = "1.9.5" +version = "1.11.1+lz4-1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9764018d143cc854c9f17f0b907de70f14393b1f502da6375dce70f00514eb3" +checksum = "6bd8c0d6c6ed0cd30b3652886bb8711dc4bb01d637a68105a3d5158039b418e6" dependencies = [ "cc", "libc", @@ -2633,11 +2680,20 @@ dependencies = [ "adler", ] +[[package]] +name = "miniz_oxide" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +dependencies = [ + "adler2", +] + [[package]] name = "mio" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ "hermit-abi 0.3.9", "libc", @@ -2717,9 +2773,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", "num-traits", @@ -2802,9 +2858,9 @@ checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "oorandom" -version = "11.1.3" +version = "11.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" +checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" [[package]] name = "opaque-debug" @@ -2916,7 +2972,7 @@ version = "3.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" dependencies = [ - "proc-macro-crate 3.1.0", + "proc-macro-crate 3.2.0", "proc-macro2", "quote", "syn 1.0.109", @@ -2965,7 +3021,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall 0.5.2", + "redox_syscall 0.5.7", "smallvec", "windows-targets 0.52.6", ] @@ -2993,9 +3049,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.10" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8" +checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" dependencies = [ "memchr", "thiserror", @@ -3004,9 +3060,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.10" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26293c9193fbca7b1a3bf9b79dc1e388e927e6cacaa78b4a3ab705a1d3d41459" +checksum = "d214365f632b123a47fd913301e14c946c61d1c183ee245fa76eb752e59a02dd" dependencies = [ "pest", "pest_generator", @@ -3014,22 +3070,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.10" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ec22af7d3fb470a85dd2ca96b7c577a1eb4ef6f1683a9fe9a8c16e136c04687" +checksum = "eb55586734301717aea2ac313f50b2eb8f60d2fc3dc01d190eefa2e625f60c4e" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.85", ] [[package]] name = "pest_meta" -version = "2.7.10" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7a240022f37c361ec1878d646fc5b7d7c4d28d5946e1a80ad5a7a4f4ca0bdcd" +checksum = "b75da2a70cf4d9cb76833c990ac9cd3923c9a8905a8929789ce347c84564d03d" dependencies = [ "once_cell", "pest", @@ -3048,29 +3104,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.85", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -3090,15 +3146,15 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "plotters" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15b6eccb8484002195a3e44fe65a4ce8e93a625797a063735536fd59cb01cf3" +checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" dependencies = [ "num-traits", "plotters-backend", @@ -3109,15 +3165,15 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "414cec62c6634ae900ea1c56128dfe87cf63e7caece0852ec76aba307cebadb7" +checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" [[package]] name = "plotters-svg" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81b30686a7d9c3e010b84284bdd26a29f2138574f52f5eb6f794fc0ad924e705" +checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" dependencies = [ "plotters-backend", ] @@ -3135,9 +3191,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.6.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" [[package]] name = "powerfmt" @@ -3147,18 +3203,21 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "prettyplease" -version = "0.2.20" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" +checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" dependencies = [ "proc-macro2", - "syn 2.0.82", + "syn 2.0.85", ] [[package]] @@ -3183,11 +3242,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ - "toml_edit 0.21.1", + "toml_edit", ] [[package]] @@ -3216,9 +3275,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" dependencies = [ "unicode-ident", ] @@ -3251,7 +3310,7 @@ checksum = "6ff7ff745a347b87471d859a377a9a404361e7efc2a971d73424a6d183c0fc77" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.85", ] [[package]] @@ -3266,9 +3325,9 @@ dependencies = [ [[package]] name = "prost-build" -version = "0.13.1" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bb182580f71dd070f88d01ce3de9f4da5021db7115d2e1c3605a754153b77c1" +checksum = "0c1318b19085f08681016926435853bbf7858f9c082d0999b80550ff5d9abe15" dependencies = [ "bytes", "heck 0.5.0", @@ -3281,7 +3340,7 @@ dependencies = [ "prost", "prost-types", "regex", - "syn 2.0.82", + "syn 2.0.85", "tempfile", ] @@ -3295,14 +3354,14 @@ dependencies = [ "itertools 0.13.0", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.85", ] [[package]] name = "prost-types" -version = "0.13.1" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cee5168b05f49d4b0ca581206eb14a7b22fafd963efe729ac48eb03266e25cc2" +checksum = "4759aa0d3a6232fb8dbdb97b61de2c20047c68aca932c7ed76da9d788508d670" dependencies = [ "prost", ] @@ -3360,6 +3419,54 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "quinn" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" +dependencies = [ + "bytes", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash 2.0.0", + "rustls 0.23.15", + "socket2", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "quinn-proto" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" +dependencies = [ + "bytes", + "rand 0.8.5", + "ring", + "rustc-hash 2.0.0", + "rustls 0.23.15", + "slab", + "thiserror", + "tinyvec", + "tracing", +] + +[[package]] +name = "quinn-udp" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b" +dependencies = [ + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.59.0", +] + [[package]] name = "quote" version = "1.0.37" @@ -3457,9 +3564,9 @@ dependencies = [ [[package]] name = "raw-cpuid" -version = "11.0.2" +version = "11.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e29830cbb1290e404f24c73af91c5d8d631ce7e128691e9477556b540cd01ecd" +checksum = "1ab240315c661615f2ee9f0f2cd32d5a7343a84d5ebcccb99d46e6637565e7b0" dependencies = [ "bitflags 2.6.0", ] @@ -3526,18 +3633,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.2" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ "bitflags 2.6.0", ] [[package]] name = "redox_users" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom 0.2.15", "libredox", @@ -3546,9 +3653,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -3603,8 +3710,8 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.30", - "hyper-rustls", + "hyper 0.14.31", + "hyper-rustls 0.24.2", "ipnet", "js-sys", "log", @@ -3612,30 +3719,73 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls", - "rustls-pemfile", + "rustls 0.21.12", + "rustls-pemfile 1.0.4", "serde", "serde_json", "serde_urlencoded", "sync_wrapper 0.1.2", "system-configuration", "tokio", - "tokio-rustls", + "tokio-rustls 0.24.1", "tokio-util 0.7.12", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots", + "webpki-roots 0.25.4", "winreg", ] +[[package]] +name = "reqwest" +version = "0.12.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.5.0", + "hyper-rustls 0.27.3", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls 0.23.15", + "rustls-pemfile 2.2.0", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.1", + "tokio", + "tokio-rustls 0.26.0", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots 0.26.6", + "windows-registry", +] + [[package]] name = "rgb" -version = "0.8.37" +version = "0.8.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05aaa8004b64fd573fc9d002f4e632d51ad4f026c2b5ba95fcb6c2f32c2c47d8" +checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a" dependencies = [ "bytemuck", ] @@ -3706,6 +3856,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustc-hash" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" + [[package]] name = "rustc-hex" version = "2.1.0" @@ -3723,9 +3879,9 @@ dependencies = [ [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver 1.0.23", ] @@ -3751,10 +3907,25 @@ checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", "ring", - "rustls-webpki", + "rustls-webpki 0.101.7", "sct", ] +[[package]] +name = "rustls" +version = "0.23.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fbb44d7acc4e873d613422379f69f237a1b141928c02f6bc6ccfddddc2d7993" +dependencies = [ + "log", + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki 0.102.8", + "subtle", + "zeroize", +] + [[package]] name = "rustls-pemfile" version = "1.0.4" @@ -3764,6 +3935,21 @@ dependencies = [ "base64 0.21.7", ] +[[package]] +name = "rustls-pemfile" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" + [[package]] name = "rustls-webpki" version = "0.101.7" @@ -3774,11 +3960,22 @@ dependencies = [ "untrusted", ] +[[package]] +name = "rustls-webpki" +version = "0.102.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "rusty-fork" @@ -3909,20 +4106,20 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sentry" -version = "0.32.2" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "766448f12e44d68e675d5789a261515c46ac6ccd240abdd451a9c46c84a49523" +checksum = "00421ed8fa0c995f07cde48ba6c89e80f2b312f74ff637326f392fbfd23abe02" dependencies = [ "httpdate", - "reqwest", - "rustls", + "reqwest 0.12.8", + "rustls 0.21.12", "sentry-backtrace", "sentry-contexts", "sentry-core", "sentry-tracing", "tokio", "ureq", - "webpki-roots", + "webpki-roots 0.25.4", ] [[package]] @@ -3946,7 +4143,7 @@ dependencies = [ "hostname", "libc", "os_info", - "rustc_version 0.4.0", + "rustc_version 0.4.1", "sentry-core", "uname", ] @@ -3995,9 +4192,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.211" +version = "1.0.213" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ac55e59090389fb9f0dd9e0f3c09615afed1d19094284d0b200441f13550793" +checksum = "3ea7893ff5e2466df8d720bb615088341b295f849602c6956047f8f80f0e9bc1" dependencies = [ "serde_derive", ] @@ -4013,13 +4210,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.211" +version = "1.0.213" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54be4f245ce16bc58d57ef2716271d0d4519e0f6defa147f6e081005bcb278ff" +checksum = "7e85ad2009c50b58e87caa8cd6dac16bdf511bbfb7af6c33df902396aa480fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.85", ] [[package]] @@ -4037,9 +4234,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] @@ -4102,10 +4299,10 @@ version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" dependencies = [ - "darling 0.20.9", + "darling 0.20.10", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.85", ] [[package]] @@ -4180,9 +4377,9 @@ dependencies = [ [[package]] name = "similar" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa42c91313f1d05da9b26f267f931cf178d4aba455b4c4622dd7355eb80c6640" +checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" [[package]] name = "sketches-ddsketch" @@ -4312,9 +4509,9 @@ dependencies = [ [[package]] name = "subtle" -version = "2.4.1" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" @@ -4329,9 +4526,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.82" +version = "2.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83540f837a8afc019423a8edb95b52a8effe46957ee402287f4292fae35be021" +checksum = "5023162dfcd14ef8f32034d8bcd4cc5ddc61ef7a247c024a33e24e1f24d21b56" dependencies = [ "proc-macro2", "quote", @@ -4349,6 +4546,9 @@ name = "sync_wrapper" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +dependencies = [ + "futures-core", +] [[package]] name = "synstructure" @@ -4422,22 +4622,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.64" +version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "5d11abd9594d9b38965ef50805c5e469ca9cc6f197f883f717e0269a3057b3d5" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.85", ] [[package]] @@ -4549,7 +4749,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.85", ] [[package]] @@ -4558,7 +4758,18 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls", + "rustls 0.21.12", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +dependencies = [ + "rustls 0.23.15", + "rustls-pki-types", "tokio", ] @@ -4632,7 +4843,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.20", + "toml_edit", ] [[package]] @@ -4646,26 +4857,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.21.1" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" -dependencies = [ - "indexmap 2.6.0", - "toml_datetime", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.22.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ "indexmap 2.6.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.18", + "winnow", ] [[package]] @@ -4679,9 +4879,9 @@ dependencies = [ "axum", "base64 0.22.1", "bytes", - "h2 0.4.5", + "h2 0.4.6", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "http-body-util", "hyper 1.5.0", "hyper-timeout", @@ -4692,7 +4892,7 @@ dependencies = [ "socket2", "tokio", "tokio-stream", - "tower", + "tower 0.4.13", "tower-layer", "tower-service", "tracing", @@ -4709,7 +4909,7 @@ dependencies = [ "prost-build", "prost-types", "quote", - "syn 2.0.82", + "syn 2.0.85", ] [[package]] @@ -4746,6 +4946,20 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 0.1.2", + "tower-layer", + "tower-service", +] + [[package]] name = "tower-batch-control" version = "0.2.41-beta.16" @@ -4761,7 +4975,7 @@ dependencies = [ "tokio", "tokio-test", "tokio-util 0.7.12", - "tower", + "tower 0.4.13", "tower-fallback", "tower-test", "tracing", @@ -4776,7 +4990,7 @@ dependencies = [ "futures-core", "pin-project", "tokio", - "tower", + "tower 0.4.13", "tracing", "zebra-test", ] @@ -4839,7 +5053,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.85", ] [[package]] @@ -4952,7 +5166,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04659ddb06c87d233c566112c1c9c5b9e98256d9af50ec3bc9c8327f873a7568" dependencies = [ "quote", - "syn 2.0.82", + "syn 2.0.85", ] [[package]] @@ -4969,9 +5183,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "uint" @@ -5014,51 +5228,48 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicase" -version = "2.7.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" -dependencies = [ - "version_check", -] +checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" [[package]] name = "unicode-bidi" -version = "0.3.15" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unicode-xid" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" @@ -5078,17 +5289,17 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "2.9.1" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cdd25c339e200129fe4de81451814e5228c9b771d57378817d6117cc2b3f97" +checksum = "b74fc6b57825be3373f7054754755f03ac3a8f5d70015ccad699ba2029956f4a" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "log", "once_cell", - "rustls", - "rustls-webpki", + "rustls 0.23.15", + "rustls-pki-types", "url", - "webpki-roots", + "webpki-roots 0.26.6", ] [[package]] @@ -5111,9 +5322,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.9.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de17fd2f7da591098415cff336e12965a28061ddace43b59cb3c430179c9439" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" dependencies = [ "serde", ] @@ -5147,7 +5358,7 @@ dependencies = [ "cfg-if 1.0.0", "git2", "regex", - "rustc_version 0.4.0", + "rustc_version 0.4.1", "rustversion", "time", ] @@ -5166,7 +5377,7 @@ checksum = "d674d135b4a8c1d7e813e2f8d1c9a58308aee4a680323066025e53132218bd91" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.85", ] [[package]] @@ -5267,34 +5478,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if 1.0.0", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.85", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -5304,9 +5516,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5314,28 +5526,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.85", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" dependencies = [ "js-sys", "wasm-bindgen", @@ -5347,6 +5559,15 @@ version = "0.25.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" +[[package]] +name = "webpki-roots" +version = "0.26.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "which" version = "4.4.2" @@ -5377,11 +5598,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -5409,6 +5630,36 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", +] + [[package]] name = "windows-sys" version = "0.48.0" @@ -5559,18 +5810,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.5.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", -] - -[[package]] -name = "winnow" -version = "0.6.18" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] @@ -5880,15 +6122,15 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2122a042c77d529d3c60b899e74705eda39ae96a8a992460caeb06afa76990a2" dependencies = [ - "bindgen", + "bindgen 0.70.1", "cc", ] [[package]] name = "zcash_spec" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7a3bf58b673cb3dacd8ae09ba345998923a197ab0da70d6239d8e8838949e9b" +checksum = "9cede95491c2191d3e278cab76e097a44b17fde8d6ca0d4e3a22cf4807b2d857" dependencies = [ "blake2b_simd", ] @@ -5988,7 +6230,7 @@ dependencies = [ "thiserror", "tinyvec", "tokio", - "tower", + "tower 0.4.13", "tower-batch-control", "tower-fallback", "tracing", @@ -6018,7 +6260,7 @@ dependencies = [ "tonic", "tonic-build", "tonic-reflection", - "tower", + "tower 0.4.13", "zcash_primitives 0.17.0", "zebra-chain", "zebra-node-services", @@ -6059,7 +6301,7 @@ dependencies = [ "tokio-stream", "tokio-util 0.7.12", "toml 0.8.19", - "tower", + "tower 0.4.13", "tracing", "tracing-error", "tracing-futures", @@ -6073,7 +6315,7 @@ version = "1.0.0-beta.40" dependencies = [ "color-eyre", "jsonrpc-core", - "reqwest", + "reqwest 0.11.27", "serde", "serde_json", "tokio", @@ -6106,7 +6348,7 @@ dependencies = [ "tonic", "tonic-build", "tonic-reflection", - "tower", + "tower 0.4.13", "tracing", "zcash_address 0.5.0", "zcash_primitives 0.17.0", @@ -6148,7 +6390,7 @@ dependencies = [ "tokio", "toml 0.8.19", "tonic", - "tower", + "tower 0.4.13", "tracing", "tracing-subscriber", "zcash_address 0.5.0", @@ -6216,7 +6458,7 @@ dependencies = [ "thiserror", "tinyvec", "tokio", - "tower", + "tower 0.4.13", "tracing", "zebra-chain", "zebra-test", @@ -6244,7 +6486,7 @@ dependencies = [ "thiserror", "tinyvec", "tokio", - "tower", + "tower 0.4.13", "tracing", "tracing-error", "tracing-subscriber", @@ -6262,12 +6504,12 @@ dependencies = [ "quote", "rand 0.8.5", "regex", - "reqwest", + "reqwest 0.11.27", "serde", "serde_json", "serde_yml", "structopt", - "syn 2.0.82", + "syn 2.0.85", "thiserror", "tinyvec", "tokio", @@ -6332,7 +6574,7 @@ dependencies = [ "toml 0.8.19", "tonic", "tonic-build", - "tower", + "tower 0.4.13", "tracing", "tracing-appender", "tracing-error", @@ -6355,22 +6597,23 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ + "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.85", ] [[package]] @@ -6390,18 +6633,19 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.82", + "syn 2.0.85", ] [[package]] name = "zip32" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4226d0aee9c9407c27064dfeec9d7b281c917de3374e1e5a2e2cfad9e09de19e" +checksum = "92022ac1e47c7b78f9cee29efac8a1a546e189506f3bb5ad46d525be7c519bf6" dependencies = [ "blake2b_simd", "memuse", "subtle", + "zcash_spec", ] [[package]] diff --git a/deny.toml b/deny.toml index 72e700945dc..6c809cabd12 100644 --- a/deny.toml +++ b/deny.toml @@ -82,13 +82,22 @@ skip-tree = [ { name = "h2", version = "=0.3.26" }, { name = "http", version = "=0.2.12" }, { name = "http-body", version = "=0.4.6" }, - { name = "hyper", version = "=0.14.30" }, + { name = "hyper", version = "=0.14.31" }, + { name = "hyper-rustls", version = "=0.24.2" }, + + { name = "reqwest", version = "=0.11.27" }, + { name = "rustls", version = "=0.21.12" }, + { name = "rustls-pemfile", version = "=1.0.4" }, + { name = "rustls-webpki", version = "=0.101.7" }, + { name = "tokio-rustls", version = "=0.24.1" }, + { name = "webpki-roots", version = "=0.25.4" }, # wait for structopt-derive to update heck { name = "heck", version = "=0.3.3" }, # wait for librocksdb-sys to update bindgen to one that uses newer itertools { name = "itertools", version = "=0.12.1" }, + { name = "bindgen", version = "=0.69.5" }, # wait for halo2_gadgets and primitive-types to update uint { name = "uint", version = "=0.9.5" }, @@ -97,6 +106,7 @@ skip-tree = [ { name = "windows-sys", version = "=0.48.0" }, # wait for zebra to update tower + { name = "tower", version = "=0.4.13" }, { name = "hashbrown", version = "=0.12.3" }, # Remove after release candicate period is over and the ECC crates are not patched anymore From f45f6f282c7b1b3e82594de328a2d4f1849bc99a Mon Sep 17 00:00:00 2001 From: Marek Date: Sat, 26 Oct 2024 00:52:19 +0200 Subject: [PATCH 16/16] chore: Release v2.0.0 (#8974) * Update `CHANGELOG.md` * Update EOS * Update CHANGELOG.md Co-authored-by: Arya * Update `release crates` script * chore: Release --------- Co-authored-by: Arya --- .../scripts/release-crates-dry-run.sh | 11 ++++--- CHANGELOG.md | 23 ++++++++++++++ Cargo.lock | 28 ++++++++--------- book/src/user/docker.md | 2 +- book/src/user/install.md | 4 +-- tower-batch-control/Cargo.toml | 6 ++-- tower-fallback/Cargo.toml | 4 +-- zebra-chain/Cargo.toml | 6 ++-- zebra-consensus/Cargo.toml | 20 ++++++------- zebra-grpc/Cargo.toml | 6 ++-- zebra-network/Cargo.toml | 4 +-- zebra-node-services/Cargo.toml | 4 +-- zebra-rpc/Cargo.toml | 24 +++++++-------- zebra-scan/Cargo.toml | 20 ++++++------- zebra-script/Cargo.toml | 6 ++-- zebra-state/Cargo.toml | 10 +++---- zebra-test/Cargo.toml | 2 +- zebra-utils/Cargo.toml | 8 ++--- zebrad/Cargo.toml | 30 +++++++++---------- zebrad/src/components/sync/end_of_support.rs | 10 +++---- 20 files changed, 125 insertions(+), 103 deletions(-) diff --git a/.github/workflows/scripts/release-crates-dry-run.sh b/.github/workflows/scripts/release-crates-dry-run.sh index 434e2156acb..9935e23a947 100755 --- a/.github/workflows/scripts/release-crates-dry-run.sh +++ b/.github/workflows/scripts/release-crates-dry-run.sh @@ -2,7 +2,7 @@ set -ex # Check if necessary tools are installed -if ! command -v git &> /dev/null || ! command -v cargo &> /dev/null; then +if ! command -v git &>/dev/null || ! command -v cargo &>/dev/null; then echo "ERROR: Required tools (git, cargo) are not installed." exit 1 fi @@ -11,7 +11,7 @@ git config --global user.email "release-tests-no-reply@zfnd.org" git config --global user.name "Automated Release Test" # Ensure cargo-release is installed -if ! cargo release --version &> /dev/null; then +if ! cargo release --version &>/dev/null; then echo "ERROR: cargo release must be installed." exit 1 fi @@ -23,12 +23,11 @@ fi cargo release version --verbose --execute --no-confirm --allow-branch '*' --workspace --exclude zebrad --exclude zebra-scan --exclude zebra-grpc patch # Due to a bug in cargo-release, we need to pass exact versions for alpha crates: -cargo release version --verbose --execute --no-confirm --allow-branch '*' --package zebra-scan 0.1.0-alpha.9 -cargo release version --verbose --execute --no-confirm --allow-branch '*' --package zebra-grpc 0.1.0-alpha.7 +cargo release version --verbose --execute --no-confirm --allow-branch '*' --package zebra-scan 0.1.0-alpha.10 +cargo release version --verbose --execute --no-confirm --allow-branch '*' --package zebra-grpc 0.1.0-alpha.8 # Update zebrad: -# TODO: Revert `2.0.0-rc.0` to `patch` in the next release candidate. -cargo release version --verbose --execute --no-confirm --allow-branch '*' --package zebrad 2.0.0-rc.0 +cargo release version --verbose --execute --no-confirm --allow-branch '*' --package zebrad patch # Continue with the release process: cargo release replace --verbose --execute --no-confirm --allow-branch '*' --package zebrad cargo release commit --verbose --execute --no-confirm --allow-branch '*' diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b7d53e5c31..e5565429f8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,29 @@ All notable changes to Zebra are documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org). +## [Zebra 2.0.0](https://github.com/ZcashFoundation/zebra/releases/tag/v2.0.0) - 2024-10-25 + +This release brings full support for NU6. + +### Breaking Changes + +- Zebra now supports NU6 on Mainnet. +- The JSON RPC endpoint has a cookie-based authentication enabled by default. + +### Added + +- NU6-related documentation ([#8949](https://github.com/ZcashFoundation/zebra/pull/8949)) +- A cookie-based authentication system for the JSON RPC endpoint ([#8900](https://github.com/ZcashFoundation/zebra/pull/8900), [#8965](https://github.com/ZcashFoundation/zebra/pull/8965)) + +### Changed + +- Set the activation height of NU6 for Mainnet and bumped Zebra's current network protocol version ([#8960](https://github.com/ZcashFoundation/zebra/pull/8960)) + +### Contributors + +Thank you to everyone who contributed to this release, we couldn't make Zebra without you: +@arya2, @gustavovalverde, @oxarbitrage and @upbqdn. + ## [Zebra 2.0.0-rc.0](https://github.com/ZcashFoundation/zebra/releases/tag/v2.0.0-rc.0) - 2024-10-11 This version is a release candidate for the Zcash NU6 network upgrade on the Mainnet. While this version does not yet include the NU6 Mainnet activation height or current protocol version, all required functionality and tests are in place. diff --git a/Cargo.lock b/Cargo.lock index 5a5767b3c5a..14220da0ea0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4962,7 +4962,7 @@ dependencies = [ [[package]] name = "tower-batch-control" -version = "0.2.41-beta.16" +version = "0.2.41-beta.17" dependencies = [ "color-eyre", "ed25519-zebra", @@ -4985,7 +4985,7 @@ dependencies = [ [[package]] name = "tower-fallback" -version = "0.2.41-beta.16" +version = "0.2.41-beta.17" dependencies = [ "futures-core", "pin-project", @@ -6137,7 +6137,7 @@ dependencies = [ [[package]] name = "zebra-chain" -version = "1.0.0-beta.40" +version = "1.0.0-beta.41" dependencies = [ "bitflags 2.6.0", "bitflags-serde-legacy", @@ -6202,7 +6202,7 @@ dependencies = [ [[package]] name = "zebra-consensus" -version = "1.0.0-beta.40" +version = "1.0.0-beta.41" dependencies = [ "bellman", "blake2b_simd", @@ -6248,7 +6248,7 @@ dependencies = [ [[package]] name = "zebra-grpc" -version = "0.1.0-alpha.7" +version = "0.1.0-alpha.8" dependencies = [ "color-eyre", "futures-util", @@ -6270,7 +6270,7 @@ dependencies = [ [[package]] name = "zebra-network" -version = "1.0.0-beta.40" +version = "1.0.0-beta.41" dependencies = [ "bitflags 2.6.0", "byteorder", @@ -6311,7 +6311,7 @@ dependencies = [ [[package]] name = "zebra-node-services" -version = "1.0.0-beta.40" +version = "1.0.0-beta.41" dependencies = [ "color-eyre", "jsonrpc-core", @@ -6324,7 +6324,7 @@ dependencies = [ [[package]] name = "zebra-rpc" -version = "1.0.0-beta.40" +version = "1.0.0-beta.41" dependencies = [ "base64 0.22.1", "chrono", @@ -6363,7 +6363,7 @@ dependencies = [ [[package]] name = "zebra-scan" -version = "0.1.0-alpha.9" +version = "0.1.0-alpha.10" dependencies = [ "bls12_381", "chrono", @@ -6409,7 +6409,7 @@ dependencies = [ [[package]] name = "zebra-script" -version = "1.0.0-beta.40" +version = "1.0.0-beta.41" dependencies = [ "hex", "lazy_static", @@ -6421,7 +6421,7 @@ dependencies = [ [[package]] name = "zebra-state" -version = "1.0.0-beta.40" +version = "1.0.0-beta.41" dependencies = [ "bincode", "chrono", @@ -6466,7 +6466,7 @@ dependencies = [ [[package]] name = "zebra-test" -version = "1.0.0-beta.40" +version = "1.0.0-beta.41" dependencies = [ "color-eyre", "futures", @@ -6494,7 +6494,7 @@ dependencies = [ [[package]] name = "zebra-utils" -version = "1.0.0-beta.40" +version = "1.0.0-beta.41" dependencies = [ "color-eyre", "hex", @@ -6525,7 +6525,7 @@ dependencies = [ [[package]] name = "zebrad" -version = "2.0.0-rc.0" +version = "2.0.0" dependencies = [ "abscissa_core", "atty", diff --git a/book/src/user/docker.md b/book/src/user/docker.md index bcd33b30794..90491024df3 100644 --- a/book/src/user/docker.md +++ b/book/src/user/docker.md @@ -37,7 +37,7 @@ docker run -d --platform linux/amd64 \ ### Build it locally ```shell -git clone --depth 1 --branch v1.9.0 https://github.com/ZcashFoundation/zebra.git +git clone --depth 1 --branch v2.0.0 https://github.com/ZcashFoundation/zebra.git docker build --file docker/Dockerfile --target runtime --tag zebra:local . docker run --detach zebra:local ``` diff --git a/book/src/user/install.md b/book/src/user/install.md index 710ee1fdbf5..6648339f743 100644 --- a/book/src/user/install.md +++ b/book/src/user/install.md @@ -76,7 +76,7 @@ To compile Zebra directly from GitHub, or from a GitHub release source archive: ```sh git clone https://github.com/ZcashFoundation/zebra.git cd zebra -git checkout v1.9.0 +git checkout v2.0.0 ``` 3. Build and Run `zebrad` @@ -89,7 +89,7 @@ target/release/zebrad start ### Compiling from git using cargo install ```sh -cargo install --git https://github.com/ZcashFoundation/zebra --tag v1.9.0 zebrad +cargo install --git https://github.com/ZcashFoundation/zebra --tag v2.0.0 zebrad ``` ### Compiling on ARM diff --git a/tower-batch-control/Cargo.toml b/tower-batch-control/Cargo.toml index 993b4cbc7d3..398a2baddbc 100644 --- a/tower-batch-control/Cargo.toml +++ b/tower-batch-control/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tower-batch-control" -version = "0.2.41-beta.16" +version = "0.2.41-beta.17" authors = ["Zcash Foundation ", "Tower Maintainers "] description = "Tower middleware for batch request processing" # # Legal @@ -43,10 +43,10 @@ rand = "0.8.5" tokio = { version = "1.41.0", features = ["full", "tracing", "test-util"] } tokio-test = "0.4.4" -tower-fallback = { path = "../tower-fallback/", version = "0.2.41-beta.16" } +tower-fallback = { path = "../tower-fallback/", version = "0.2.41-beta.17" } tower-test = "0.4.0" -zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.40" } +zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.41" } [lints.rust] unexpected_cfgs = { level = "warn", check-cfg = ['cfg(tokio_unstable)'] } diff --git a/tower-fallback/Cargo.toml b/tower-fallback/Cargo.toml index 9ca8691b135..5919b1bc632 100644 --- a/tower-fallback/Cargo.toml +++ b/tower-fallback/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tower-fallback" -version = "0.2.41-beta.16" +version = "0.2.41-beta.17" authors = ["Zcash Foundation "] description = "A Tower service combinator that sends requests to a first service, then retries processing on a second fallback service if the first service errors." license = "MIT OR Apache-2.0" @@ -24,4 +24,4 @@ tracing = "0.1.39" [dev-dependencies] tokio = { version = "1.41.0", features = ["full", "tracing", "test-util"] } -zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.40" } +zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.41" } diff --git a/zebra-chain/Cargo.toml b/zebra-chain/Cargo.toml index 50779cb0359..4ab99fd8857 100644 --- a/zebra-chain/Cargo.toml +++ b/zebra-chain/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-chain" -version = "1.0.0-beta.40" +version = "1.0.0-beta.41" authors = ["Zcash Foundation "] description = "Core Zcash data structures" license = "MIT OR Apache-2.0" @@ -145,7 +145,7 @@ proptest-derive = { version = "0.5.0", optional = true } rand = { version = "0.8.5", optional = true } rand_chacha = { version = "0.3.1", optional = true } -zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.40", optional = true } +zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.41", optional = true } [dev-dependencies] # Benchmarks @@ -168,7 +168,7 @@ rand_chacha = "0.3.1" tokio = { version = "1.41.0", features = ["full", "tracing", "test-util"] } -zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.40" } +zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.41" } [[bench]] name = "block" diff --git a/zebra-consensus/Cargo.toml b/zebra-consensus/Cargo.toml index 2a680d144b9..2dd58ed562d 100644 --- a/zebra-consensus/Cargo.toml +++ b/zebra-consensus/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-consensus" -version = "1.0.0-beta.40" +version = "1.0.0-beta.41" authors = ["Zcash Foundation "] description = "Implementation of Zcash consensus checks" license = "MIT OR Apache-2.0" @@ -63,13 +63,13 @@ orchard.workspace = true zcash_proofs = { workspace = true, features = ["multicore" ] } wagyu-zcash-parameters = "0.2.0" -tower-fallback = { path = "../tower-fallback/", version = "0.2.41-beta.16" } -tower-batch-control = { path = "../tower-batch-control/", version = "0.2.41-beta.16" } +tower-fallback = { path = "../tower-fallback/", version = "0.2.41-beta.17" } +tower-batch-control = { path = "../tower-batch-control/", version = "0.2.41-beta.17" } -zebra-script = { path = "../zebra-script", version = "1.0.0-beta.40" } -zebra-state = { path = "../zebra-state", version = "1.0.0-beta.40" } -zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.40" } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.40" } +zebra-script = { path = "../zebra-script", version = "1.0.0-beta.41" } +zebra-state = { path = "../zebra-state", version = "1.0.0-beta.41" } +zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.41" } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.41" } # prod feature progress-bar howudoin = { version = "0.1.2", optional = true } @@ -94,6 +94,6 @@ tokio = { version = "1.41.0", features = ["full", "tracing", "test-util"] } tracing-error = "0.2.0" tracing-subscriber = "0.3.18" -zebra-state = { path = "../zebra-state", version = "1.0.0-beta.40", features = ["proptest-impl"] } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.40", features = ["proptest-impl"] } -zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.40" } +zebra-state = { path = "../zebra-state", version = "1.0.0-beta.41", features = ["proptest-impl"] } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.41", features = ["proptest-impl"] } +zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.41" } diff --git a/zebra-grpc/Cargo.toml b/zebra-grpc/Cargo.toml index ab273b66e97..cc57da114a1 100644 --- a/zebra-grpc/Cargo.toml +++ b/zebra-grpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-grpc" -version = "0.1.0-alpha.7" +version = "0.1.0-alpha.8" authors = ["Zcash Foundation "] description = "Zebra gRPC interface" license = "MIT OR Apache-2.0" @@ -28,8 +28,8 @@ color-eyre = "0.6.3" zcash_primitives.workspace = true -zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.40", features = ["shielded-scan"] } -zebra-chain = { path = "../zebra-chain" , version = "1.0.0-beta.40" } +zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.41", features = ["shielded-scan"] } +zebra-chain = { path = "../zebra-chain" , version = "1.0.0-beta.41" } [build-dependencies] tonic-build = "0.12.3" diff --git a/zebra-network/Cargo.toml b/zebra-network/Cargo.toml index ae02c4a6a5b..77eb565c0d1 100644 --- a/zebra-network/Cargo.toml +++ b/zebra-network/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-network" -version = "1.0.0-beta.40" +version = "1.0.0-beta.41" authors = ["Zcash Foundation ", "Tower Maintainers "] description = "Networking code for Zebra" # # Legal @@ -83,7 +83,7 @@ howudoin = { version = "0.1.2", optional = true } proptest = { version = "1.4.0", optional = true } proptest-derive = { version = "0.5.0", optional = true } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.40", features = ["async-error"] } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.41", features = ["async-error"] } [dev-dependencies] proptest = "1.4.0" diff --git a/zebra-node-services/Cargo.toml b/zebra-node-services/Cargo.toml index aa0fb7e902e..130f6da481f 100644 --- a/zebra-node-services/Cargo.toml +++ b/zebra-node-services/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-node-services" -version = "1.0.0-beta.40" +version = "1.0.0-beta.41" authors = ["Zcash Foundation "] description = "The interfaces of some Zebra node services" license = "MIT OR Apache-2.0" @@ -37,7 +37,7 @@ rpc-client = [ shielded-scan = [] [dependencies] -zebra-chain = { path = "../zebra-chain" , version = "1.0.0-beta.40" } +zebra-chain = { path = "../zebra-chain" , version = "1.0.0-beta.41" } # Optional dependencies diff --git a/zebra-rpc/Cargo.toml b/zebra-rpc/Cargo.toml index da909de70fc..1562a77677e 100644 --- a/zebra-rpc/Cargo.toml +++ b/zebra-rpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-rpc" -version = "1.0.0-beta.40" +version = "1.0.0-beta.41" authors = ["Zcash Foundation "] description = "A Zebra JSON Remote Procedure Call (JSON-RPC) interface" license = "MIT OR Apache-2.0" @@ -104,16 +104,16 @@ zcash_address = { workspace = true, optional = true} # Test-only feature proptest-impl proptest = { version = "1.4.0", optional = true } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.40", features = [ +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.41", features = [ "json-conversion", ] } -zebra-consensus = { path = "../zebra-consensus", version = "1.0.0-beta.40" } -zebra-network = { path = "../zebra-network", version = "1.0.0-beta.40" } -zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.40", features = [ +zebra-consensus = { path = "../zebra-consensus", version = "1.0.0-beta.41" } +zebra-network = { path = "../zebra-network", version = "1.0.0-beta.41" } +zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.41", features = [ "rpc-client", ] } -zebra-script = { path = "../zebra-script", version = "1.0.0-beta.40" } -zebra-state = { path = "../zebra-state", version = "1.0.0-beta.40" } +zebra-script = { path = "../zebra-script", version = "1.0.0-beta.41" } +zebra-state = { path = "../zebra-state", version = "1.0.0-beta.41" } [build-dependencies] tonic-build = { version = "0.12.3", optional = true } @@ -126,17 +126,17 @@ proptest = "1.4.0" thiserror = "1.0.64" tokio = { version = "1.41.0", features = ["full", "tracing", "test-util"] } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.40", features = [ +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.41", features = [ "proptest-impl", ] } -zebra-consensus = { path = "../zebra-consensus", version = "1.0.0-beta.40", features = [ +zebra-consensus = { path = "../zebra-consensus", version = "1.0.0-beta.41", features = [ "proptest-impl", ] } -zebra-network = { path = "../zebra-network", version = "1.0.0-beta.40", features = [ +zebra-network = { path = "../zebra-network", version = "1.0.0-beta.41", features = [ "proptest-impl", ] } -zebra-state = { path = "../zebra-state", version = "1.0.0-beta.40", features = [ +zebra-state = { path = "../zebra-state", version = "1.0.0-beta.41", features = [ "proptest-impl", ] } -zebra-test = { path = "../zebra-test", version = "1.0.0-beta.40" } +zebra-test = { path = "../zebra-test", version = "1.0.0-beta.41" } diff --git a/zebra-scan/Cargo.toml b/zebra-scan/Cargo.toml index b66f38520cc..4c13ed02050 100644 --- a/zebra-scan/Cargo.toml +++ b/zebra-scan/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-scan" -version = "0.1.0-alpha.9" +version = "0.1.0-alpha.10" authors = ["Zcash Foundation "] description = "Shielded transaction scanner for the Zcash blockchain" license = "MIT OR Apache-2.0" @@ -77,11 +77,11 @@ zcash_primitives.workspace = true zcash_address.workspace = true sapling-crypto.workspace = true -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.40", features = ["shielded-scan"] } -zebra-state = { path = "../zebra-state", version = "1.0.0-beta.40", features = ["shielded-scan"] } -zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.40", features = ["shielded-scan"] } -zebra-grpc = { path = "../zebra-grpc", version = "0.1.0-alpha.7" } -zebra-rpc = { path = "../zebra-rpc", version = "1.0.0-beta.40" } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.41", features = ["shielded-scan"] } +zebra-state = { path = "../zebra-state", version = "1.0.0-beta.41", features = ["shielded-scan"] } +zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.41", features = ["shielded-scan"] } +zebra-grpc = { path = "../zebra-grpc", version = "0.1.0-alpha.8" } +zebra-rpc = { path = "../zebra-rpc", version = "1.0.0-beta.41" } chrono = { version = "0.4.38", default-features = false, features = ["clock", "std", "serde"] } @@ -96,7 +96,7 @@ jubjub = { version = "0.10.0", optional = true } rand = { version = "0.8.5", optional = true } zcash_note_encryption = { version = "0.4.0", optional = true } -zebra-test = { path = "../zebra-test", version = "1.0.0-beta.40", optional = true } +zebra-test = { path = "../zebra-test", version = "1.0.0-beta.41", optional = true } # zebra-scanner binary dependencies tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } @@ -107,7 +107,7 @@ serde_json = "1.0.132" jsonrpc = { version = "0.18.0", optional = true } hex = { version = "0.4.3", optional = true } -zebrad = { path = "../zebrad", version = "2.0.0-rc.0" } +zebrad = { path = "../zebrad", version = "2.0.0" } [dev-dependencies] insta = { version = "1.40.0", features = ["ron", "redactions"] } @@ -125,6 +125,6 @@ zcash_note_encryption = "0.4.0" toml = "0.8.19" tonic = "0.12.3" -zebra-state = { path = "../zebra-state", version = "1.0.0-beta.40", features = ["proptest-impl"] } -zebra-test = { path = "../zebra-test", version = "1.0.0-beta.40" } +zebra-state = { path = "../zebra-state", version = "1.0.0-beta.41", features = ["proptest-impl"] } +zebra-test = { path = "../zebra-test", version = "1.0.0-beta.41" } diff --git a/zebra-script/Cargo.toml b/zebra-script/Cargo.toml index 28d748c8eff..92fdf77077a 100644 --- a/zebra-script/Cargo.toml +++ b/zebra-script/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-script" -version = "1.0.0-beta.40" +version = "1.0.0-beta.41" authors = ["Zcash Foundation "] description = "Zebra script verification wrapping zcashd's zcash_script library" license = "MIT OR Apache-2.0" @@ -16,11 +16,11 @@ categories = ["api-bindings", "cryptography::cryptocurrencies"] [dependencies] zcash_script = "0.2.0" -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.40" } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.41" } thiserror = "1.0.64" [dev-dependencies] hex = "0.4.3" lazy_static = "1.4.0" -zebra-test = { path = "../zebra-test", version = "1.0.0-beta.40" } +zebra-test = { path = "../zebra-test", version = "1.0.0-beta.41" } diff --git a/zebra-state/Cargo.toml b/zebra-state/Cargo.toml index 3ed659f2a6d..6bdfdaaeb66 100644 --- a/zebra-state/Cargo.toml +++ b/zebra-state/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-state" -version = "1.0.0-beta.40" +version = "1.0.0-beta.41" authors = ["Zcash Foundation "] description = "State contextual verification and storage code for Zebra" license = "MIT OR Apache-2.0" @@ -77,13 +77,13 @@ tracing = "0.1.39" elasticsearch = { version = "8.5.0-alpha.1", default-features = false, features = ["rustls-tls"], optional = true } serde_json = { version = "1.0.132", package = "serde_json", optional = true } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.40", features = ["async-error"] } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.41", features = ["async-error"] } # prod feature progress-bar howudoin = { version = "0.1.2", optional = true } # test feature proptest-impl -zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.40", optional = true } +zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.41", optional = true } proptest = { version = "1.4.0", optional = true } proptest-derive = { version = "0.5.0", optional = true } @@ -108,5 +108,5 @@ jubjub = "0.10.0" tokio = { version = "1.41.0", features = ["full", "tracing", "test-util"] } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.40", features = ["proptest-impl"] } -zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.40" } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.41", features = ["proptest-impl"] } +zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.41" } diff --git a/zebra-test/Cargo.toml b/zebra-test/Cargo.toml index 837c5f685a5..c430257f5ef 100644 --- a/zebra-test/Cargo.toml +++ b/zebra-test/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-test" -version = "1.0.0-beta.40" +version = "1.0.0-beta.41" authors = ["Zcash Foundation "] description = "Test harnesses and test vectors for Zebra" license = "MIT OR Apache-2.0" diff --git a/zebra-utils/Cargo.toml b/zebra-utils/Cargo.toml index 3d925649aec..0c46395b072 100644 --- a/zebra-utils/Cargo.toml +++ b/zebra-utils/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-utils" -version = "1.0.0-beta.40" +version = "1.0.0-beta.41" authors = ["Zcash Foundation "] description = "Developer tools for Zebra maintenance and testing" license = "MIT OR Apache-2.0" @@ -94,11 +94,11 @@ tracing-error = "0.2.0" tracing-subscriber = "0.3.18" thiserror = "1.0.64" -zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.40" } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.40" } +zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.41" } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.41" } # These crates are needed for the block-template-to-proposal binary -zebra-rpc = { path = "../zebra-rpc", version = "1.0.0-beta.40", optional = true } +zebra-rpc = { path = "../zebra-rpc", version = "1.0.0-beta.41", optional = true } # These crates are needed for the zebra-checkpoints binary itertools = { version = "0.13.0", optional = true } diff --git a/zebrad/Cargo.toml b/zebrad/Cargo.toml index 73a5139395f..2bea0392f9d 100644 --- a/zebrad/Cargo.toml +++ b/zebrad/Cargo.toml @@ -1,7 +1,7 @@ [package] # Crate metadata name = "zebrad" -version = "2.0.0-rc.0" +version = "2.0.0" authors = ["Zcash Foundation "] description = "The Zcash Foundation's independent, consensus-compatible implementation of a Zcash node" license = "MIT OR Apache-2.0" @@ -157,15 +157,15 @@ test_sync_past_mandatory_checkpoint_mainnet = [] test_sync_past_mandatory_checkpoint_testnet = [] [dependencies] -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.40" } -zebra-consensus = { path = "../zebra-consensus", version = "1.0.0-beta.40" } -zebra-network = { path = "../zebra-network", version = "1.0.0-beta.40" } -zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.40", features = ["rpc-client"] } -zebra-rpc = { path = "../zebra-rpc", version = "1.0.0-beta.40" } -zebra-state = { path = "../zebra-state", version = "1.0.0-beta.40" } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.41" } +zebra-consensus = { path = "../zebra-consensus", version = "1.0.0-beta.41" } +zebra-network = { path = "../zebra-network", version = "1.0.0-beta.41" } +zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.41", features = ["rpc-client"] } +zebra-rpc = { path = "../zebra-rpc", version = "1.0.0-beta.41" } +zebra-state = { path = "../zebra-state", version = "1.0.0-beta.41" } # Required for crates.io publishing, but it's only used in tests -zebra-utils = { path = "../zebra-utils", version = "1.0.0-beta.40", optional = true } +zebra-utils = { path = "../zebra-utils", version = "1.0.0-beta.41", optional = true } abscissa_core = "0.7.0" clap = { version = "4.5.20", features = ["cargo"] } @@ -279,13 +279,13 @@ proptest-derive = "0.5.0" # enable span traces and track caller in tests color-eyre = { version = "0.6.3" } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.40", features = ["proptest-impl"] } -zebra-consensus = { path = "../zebra-consensus", version = "1.0.0-beta.40", features = ["proptest-impl"] } -zebra-network = { path = "../zebra-network", version = "1.0.0-beta.40", features = ["proptest-impl"] } -zebra-state = { path = "../zebra-state", version = "1.0.0-beta.40", features = ["proptest-impl"] } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.41", features = ["proptest-impl"] } +zebra-consensus = { path = "../zebra-consensus", version = "1.0.0-beta.41", features = ["proptest-impl"] } +zebra-network = { path = "../zebra-network", version = "1.0.0-beta.41", features = ["proptest-impl"] } +zebra-state = { path = "../zebra-state", version = "1.0.0-beta.41", features = ["proptest-impl"] } -zebra-test = { path = "../zebra-test", version = "1.0.0-beta.40" } -zebra-grpc = { path = "../zebra-grpc", version = "0.1.0-alpha.7" } +zebra-test = { path = "../zebra-test", version = "1.0.0-beta.41" } +zebra-grpc = { path = "../zebra-grpc", version = "0.1.0-alpha.8" } # Used by the checkpoint generation tests via the zebra-checkpoints feature # (the binaries in this crate won't be built unless their features are enabled). @@ -296,7 +296,7 @@ zebra-grpc = { path = "../zebra-grpc", version = "0.1.0-alpha.7" } # When `-Z bindeps` is stabilised, enable this binary dependency instead: # https://github.com/rust-lang/cargo/issues/9096 # zebra-utils { path = "../zebra-utils", artifact = "bin:zebra-checkpoints" } -zebra-utils = { path = "../zebra-utils", version = "1.0.0-beta.40" } +zebra-utils = { path = "../zebra-utils", version = "1.0.0-beta.41" } [lints.rust] unexpected_cfgs = { level = "warn", check-cfg = ['cfg(tokio_unstable)'] } diff --git a/zebrad/src/components/sync/end_of_support.rs b/zebrad/src/components/sync/end_of_support.rs index 1ba3c1863c8..0e54a978d04 100644 --- a/zebrad/src/components/sync/end_of_support.rs +++ b/zebrad/src/components/sync/end_of_support.rs @@ -13,17 +13,17 @@ use zebra_chain::{ use crate::application::release_version; /// The estimated height that this release will be published. -pub const ESTIMATED_RELEASE_HEIGHT: u32 = 2_678_363; +pub const ESTIMATED_RELEASE_HEIGHT: u32 = 2_694_000; /// The maximum number of days after `ESTIMATED_RELEASE_HEIGHT` where a Zebra server will run /// without halting. /// /// Notes: /// -/// - Zebra will exit with a panic if the current tip height is bigger than the `ESTIMATED_RELEASE_HEIGHT` -/// plus this number of days. -/// - Currently set to 5 weeks to end support before Mainnet Nu6 activation at block [`2_726_400`](https://zips.z.cash/zip-0253). -pub const EOS_PANIC_AFTER: u32 = 35; +/// - Zebra will exit with a panic if the current tip height is bigger than the +/// `ESTIMATED_RELEASE_HEIGHT` plus this number of days. +/// - Currently set to 16 weeks. +pub const EOS_PANIC_AFTER: u32 = 112; /// The number of days before the end of support where Zebra will display warnings. pub const EOS_WARN_AFTER: u32 = EOS_PANIC_AFTER - 14;