diff --git a/.cargo/release-version b/.cargo/release-version
index b0607bd530..319b54fc3e 100644
--- a/.cargo/release-version
+++ b/.cargo/release-version
@@ -1 +1 @@
-v4.8.1
\ No newline at end of file
+v4.9.0
\ No newline at end of file
diff --git a/.ci/test_db_backup.sh b/.ci/test_db_backup.sh
index 1fcdf0f62d..7e013b3375 100755
--- a/.ci/test_db_backup.sh
+++ b/.ci/test_db_backup.sh
@@ -4,7 +4,8 @@
. ./.ci/utils.sh
# Change this to increase/decrease log verbosity
-log_verbosity=2
+log_verbosity=4
+max_validator_log_size_bytes=$((2 * 1024 * 1024))
# Network parameters
total_validators=4
@@ -16,7 +17,7 @@ checkpoint_height=3
rollback_height=10
num_checkpoints=0
remaining_checkpoints=2
-max_warnings=40
+max_warnings=300
# Create log directory
init_log_dir
@@ -134,7 +135,7 @@ while (( total_wait < 600 )); do # 10 minutes max
done
if (( remaining_checkpoints == 0 )); then
- if check_logs "$log_dir" "$total_validators" 0 "$max_warnings"; then
+ if check_logs "$log_dir" "$total_validators" 0 "$max_warnings" "$max_validator_log_size_bytes"; then
exit 0
else
exit 1
@@ -154,4 +155,3 @@ done
# The main loop has expired by now
log "❌ Test failed!"
exit 1
-
diff --git a/.ci/test_devnet.sh b/.ci/test_devnet.sh
index 470d246d9c..7092d4915b 100755
--- a/.ci/test_devnet.sh
+++ b/.ci/test_devnet.sh
@@ -16,15 +16,18 @@ network_id=$3
min_height=$4
max_warnings=$5
-# The verobsity of snarkos nodes.
-NODE_VERBOSITY=3
+# The verbosity of snarkos nodes.
+NODE_VERBOSITY=4
+# Max logfile sizes (bytes) for regression checks.
+MAX_VALIDATOR_LOG_SIZE_BYTES=$((2 * 1024 * 1024))
+MAX_CLIENT_LOG_SIZE_BYTES=$((1 * 1024 * 1024))
# Default values if not provided
: "${total_validators:=4}"
: "${total_clients:=4}" # need at least 4 clients, so each validator has at least one client connected to it.
: "${network_id:=0}"
: "${min_height:=60}" # To likely go past the 100 round garbage collection limit.
-: "${max_warnings:=40}"
+: "${max_warnings:=300}"
# shellcheck source=SCRIPTDIR/utils.sh
. ./.ci/utils.sh
@@ -437,7 +440,7 @@ fi
# Ensure no errors are generated during the devnet run, as all nodes are
# expected to operate without failures or interruptions.
-if check_logs "$log_dir" "$total_validators" "$total_clients" "$max_warnings"; then
+if check_logs "$log_dir" "$total_validators" "$total_clients" "$max_warnings" "$MAX_VALIDATOR_LOG_SIZE_BYTES" "$MAX_CLIENT_LOG_SIZE_BYTES"; then
exit 0
else
exit 1
diff --git a/.ci/test_full_upgrade.sh b/.ci/test_full_upgrade.sh
index 05832621b3..19c013095e 100755
--- a/.ci/test_full_upgrade.sh
+++ b/.ci/test_full_upgrade.sh
@@ -24,10 +24,13 @@ max_warnings=$4
: "${total_validators:=4}"
: "${total_clients:=2}"
: "${network_id:=0}"
-: "${max_warnings:=40}"
+: "${max_warnings:=45}"
# Node verbosity
-NODE_VERBOSITY=1
+NODE_VERBOSITY=4
+# Max logfile sizes (bytes) for regression checks.
+MAX_VALIDATOR_LOG_SIZE_BYTES=$((8 * 1024 * 1024))
+MAX_CLIENT_LOG_SIZE_BYTES=$((1 * 1024 * 1024))
# How long to wait between upgrades (seconds); used for block-height window
@@ -381,7 +384,7 @@ done
log "Upgrade test passed: network reached highest consensus version with release, all nodes upgraded to PR snarkos, and consensus version remained correct."
-if check_logs "$log_dir" "$total_validators" "$total_clients" "$max_warnings"; then
+if check_logs "$log_dir" "$total_validators" "$total_clients" "$max_warnings" "$MAX_VALIDATOR_LOG_SIZE_BYTES" "$MAX_CLIENT_LOG_SIZE_BYTES"; then
exit 0
else
exit 1
diff --git a/.ci/test_partial_upgrade.sh b/.ci/test_partial_upgrade.sh
index a8d2a8df4c..2e311d8771 100755
--- a/.ci/test_partial_upgrade.sh
+++ b/.ci/test_partial_upgrade.sh
@@ -27,10 +27,12 @@ max_warnings=$3
# Default values if not provided
: "${total_validators:=4}"
: "${network_id:=0}"
-: "${max_warnings:=40}"
+: "${max_warnings:=45}"
# Node verbosity
-NODE_VERBOSITY=1
+NODE_VERBOSITY=4
+# Max logfile size (bytes) for regression checks.
+MAX_VALIDATOR_LOG_SIZE_BYTES=$((4 * 1024 * 1024))
# How long to wait between upgrades (seconds); used for block-height window
WAIT_BETWEEN_UPGRADES="${WAIT_BETWEEN_UPGRADES:-60}"
@@ -294,7 +296,7 @@ fi
log "🎉 Test passed! Node synced to new consensus height ($new_consensus_height) after another node was upgraded."
-if check_logs "$log_dir" "$total_validators" 0 "$max_warnings"; then
+if check_logs "$log_dir" "$total_validators" 0 "$max_warnings" "$MAX_VALIDATOR_LOG_SIZE_BYTES"; then
exit 0
else
exit 1
diff --git a/.ci/test_reset_minority.sh b/.ci/test_reset_minority.sh
index 7964a07eff..86846fadb4 100755
--- a/.ci/test_reset_minority.sh
+++ b/.ci/test_reset_minority.sh
@@ -25,14 +25,15 @@ max_warnings=$6
# Default values if not provided
: "${total_validators:=7}"
: "${network_id:=0}"
-: "${reset_interval:=20}"
-: "${final_height:=100}"
+: "${reset_interval:=50}"
+: "${final_height:=250}"
: "${num_resets:=3}"
-: "${max_warnings:=40}"
+: "${max_warnings:=4000}" # Allow lots of warnings as we're doing funky stuff in this test.
minority=$(( (total_validators - 1) / 3 ))
network_name=$(get_network_name "$network_id")
-verbosity=0
+verbosity=1
+max_validator_log_size_bytes=$((6 * 1024 * 1024))
# The time that is used to determine the total timeout for the test
max_wait_per_block=10
@@ -101,7 +102,7 @@ else
exit 1
fi
-if check_logs "$log_dir" "$total_validators" 0 "$max_warnings"; then
+if check_logs "$log_dir" "$total_validators" 0 "$max_warnings" "$max_validator_log_size_bytes"; then
exit 0
else
exit 1
diff --git a/.ci/test_restart_majority.sh b/.ci/test_restart_majority.sh
index 493f5cb0d9..9fb7e8caae 100755
--- a/.ci/test_restart_majority.sh
+++ b/.ci/test_restart_majority.sh
@@ -18,25 +18,26 @@ init_log_dir
total_validators=$1
network_id=$2
reset_interval=$3
-final_height=$4
-num_resets=$5
-max_warnings=$6
+num_resets=$4
+max_warnings=$5
# Default values if not provided
: "${total_validators:=7}"
: "${network_id:=0}"
-: "${reset_interval:=10}"
-: "${final_height:=20}"
+: "${reset_interval:=20}"
: "${num_resets:=3}"
-: "${max_warnings:=40}"
+: "${max_warnings:=4000}" # Allow lots of warnings as we're doing funky stuff in this test.
+
+# Blocks to advance after all restarts complete.
+final_height_advance=20
max_faulty=$(( (total_validators - 1) / 3 ))
# AleoBFT needs at least N-f for a quorum, not 2*f+1.
majority=$((total_validators - max_faulty))
network_name=$(get_network_name "$network_id")
-# Keep verbosity low as we are running many nodes.
-verbosity=0
+verbosity=1
+max_validator_log_size_bytes=$((3 * 1024 * 1024))
# The time that is used to determine the total timeout for the test.
# Set this higher than the interval for the minority test, as more nodes need to sync.
@@ -67,9 +68,6 @@ done
wait_for_nodes "$total_validators" 0 "$network_name" 180
-# Wait longer if there are more blocks to reach.
-max_wait=$((final_height * max_wait_per_block))
-
for iter in $(seq 1 "$num_resets"); do
reset_height=$(( iter * reset_interval ));
@@ -97,14 +95,24 @@ for iter in $(seq 1 "$num_resets"); do
done
done
-if ! wait_for_heights 0 "$total_validators" "$final_height" "$network_name" $(( max_wait - $(elapsed_since "$start") )); then
+# Sleep for a few seconds to make sure the nodes are fully restarted and connected.
+sleep 5
+
+log_check_since=$(epoch_now)
+latest_height=$(get_block_height 0 "$network_name")
+final_height=$((latest_height + final_height_advance))
+max_wait=$((final_height_advance * max_wait_per_block))
+
+log "All restarts complete at height ${latest_height}. Waiting for final height ${final_height}..."
+
+if ! wait_for_heights 0 "$total_validators" "$final_height" "$network_name" "$max_wait"; then
log "❌ Test failed! Not all nodes reached final height of $final_height within $max_wait seconds."
exit 1
fi
log "SUCCESS! Network took $(elapsed_since "$start") seconds to reach final height of $final_height after $num_resets resets."
-if check_logs "$log_dir" "$total_validators" 0 "$max_warnings"; then
+if check_logs "$log_dir" "$total_validators" 0 "$max_warnings" "$max_validator_log_size_bytes" "" "$log_check_since"; then
exit 0
else
exit 1
diff --git a/.ci/utils.sh b/.ci/utils.sh
index ac7bc919fd..339cd916a3 100644
--- a/.ci/utils.sh
+++ b/.ci/utils.sh
@@ -79,6 +79,48 @@ function elapsed_since() {
echo $((SECONDS - start))
}
+# Get the current Unix epoch timestamp in seconds.
+function epoch_now() {
+ date +%s
+}
+
+# Convert a Unix epoch timestamp to an ISO-8601 prefix used by snarkOS log lines.
+function epoch_to_iso() {
+ local epoch=$1
+ if date -u -d "@${epoch}" +%Y-%m-%dT%H:%M:%S >/dev/null 2>&1; then
+ date -u -d "@${epoch}" +%Y-%m-%dT%H:%M:%S
+ else
+ date -u -r "${epoch}" +%Y-%m-%dT%H:%M:%S
+ fi
+}
+
+# Return log lines at or after the given Unix epoch timestamp.
+# When since_epoch is empty, returns the full log file.
+function log_lines_since() {
+ local log_file=$1
+ local since_epoch=$2
+
+ if [ -z "$since_epoch" ]; then
+ cat "$log_file"
+ return 0
+ fi
+
+ local since_prefix
+ since_prefix=$(epoch_to_iso "$since_epoch")
+
+ awk -v since="$since_prefix" '
+ BEGIN { from = 0 }
+ /^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}/ {
+ if (substr($1, 1, 19) >= since) {
+ from = 1
+ } else {
+ from = 0
+ }
+ }
+ from { print }
+ ' "$log_file"
+}
+
# Determine network name based on network_id
function get_network_name() {
local network_id=$1
@@ -344,26 +386,46 @@ function check_logs() {
# The maximum number of warnings allow in each node's log file.
# Nodes may create some warnings at startup because they cannot connect to each other yet.
local max_warnings=$4
-
+ # Optional max logfile size in bytes.
+ local max_validator_log_size_bytes=${5:-}
+ local max_client_log_size_bytes=${6:-}
+ # Optional Unix epoch timestamp; only log lines at or after this time are checked.
+ local since_epoch=${7:-}
+
+ if [ -n "$since_epoch" ]; then
+ log "Only checking log lines at or after $(epoch_to_iso "$since_epoch")"
+ fi
+
local all_reached=true
local highest_height=0
# Don't use `seq` here as `total_validators` can be 0.
- for ((validator_index = 0; validator_index < validator_index; validator_index++)); do
- if [ ! -s "$log_dir/validator-${validator_index}.log" ]; then
+ for ((validator_index = 0; validator_index < total_validators; validator_index++)); do
+ validator_log="$log_dir/validator-${validator_index}.log"
+ if [ ! -s "$validator_log" ]; then
log "❌ Test failed! Validator #${validator_index} did not create any logs in \"$log_dir\"."
return 1
fi
+ if [ -n "$max_validator_log_size_bytes" ]; then
+ validator_log_size_bytes=$(wc -c < "$validator_log")
+ if (( validator_log_size_bytes > max_validator_log_size_bytes )); then
+ log "❌ Test failed! Validator #${validator_index} logfile is too large (${validator_log_size_bytes}B > ${max_validator_log_size_bytes}B)."
+ return 1
+ fi
+ fi
+
+ validator_log_content=$(log_lines_since "$validator_log" "$since_epoch")
+
#TODO(kaimast): remove the grep -v "already exists in the ledger" once spurious sync errors are gone.
- if grep "ERROR" "$log_dir/validator-${validator_index}.log" | grep -qv "already exists in the ledger"; then
+ if echo "$validator_log_content" | grep "ERROR" | grep -qv "already exists in the ledger"; then
log "❌ Test failed! Validator #${validator_index} logs contain errors."
# Print the errors to the console.
- grep "ERROR" "$log_dir/validator-${validator_index}.log" | grep -v "already exists in the ledger"
+ echo "$validator_log_content" | grep "ERROR" | grep -v "already exists in the ledger"
return 1
fi
- num_warnings=$(grep -c "WARN" "$log_dir/validator-${validator_index}.log")
+ num_warnings=$(echo "$validator_log_content" | grep -c "WARN" || true)
if (( num_warnings > max_warnings )); then
echo "❌ Test failed! Validator #${validator_index} logs contain more than ${max_warnings} warnings."
return 1
@@ -372,19 +434,30 @@ function check_logs() {
# Don't use `seq` here as `total_clients` can be 0.
for ((client_index = 0; client_index < total_clients; client_index++)); do
- if [ ! -s "$log_dir/client-${client_index}.log" ]; then
+ client_log="$log_dir/client-${client_index}.log"
+ if [ ! -s "$client_log" ]; then
log "❌ Test failed! Client #${client_index} did not create any logs in \"$log_dir\"."
return 1
fi
- if grep "ERROR" "$log_dir/client-${client_index}.log" | grep -qv "already exists in the ledger"; then
+ if [ -n "$max_client_log_size_bytes" ]; then
+ client_log_size_bytes=$(wc -c < "$client_log")
+ if (( client_log_size_bytes > max_client_log_size_bytes )); then
+ log "❌ Test failed! Client #${client_index} logfile is too large (${client_log_size_bytes}B > ${max_client_log_size_bytes}B)."
+ return 1
+ fi
+ fi
+
+ client_log_content=$(log_lines_since "$client_log" "$since_epoch")
+
+ if echo "$client_log_content" | grep "ERROR" | grep -qv "already exists in the ledger"; then
log "❌ Test failed! Client #${client_index} logs contain errors."
# Print the errors to the console.
- grep "ERROR" "$log_dir/client-${client_index}.log" | grep -v "already exists in the ledger"
+ echo "$client_log_content" | grep "ERROR" | grep -v "already exists in the ledger"
return 1
fi
- num_warnings=$(grep -c "WARN" "$log_dir/client-${client_index}.log")
+ num_warnings=$(echo "$client_log_content" | grep -c "WARN" || true)
if (( num_warnings > max_warnings )); then
echo "❌ Test failed! Client #${client_index} logs contain more than ${max_warnings} warnings."
return 1
@@ -957,4 +1030,3 @@ function get_block_height {
echo "$result"
return 0
}
-
diff --git a/.circleci/config.yml b/.circleci/config.yml
index 6dd2f53540..c495becc82 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -302,37 +302,50 @@ commands:
echo "==> test-threads override: ${TEST_THREADS:-}"
echo "==> jobs: ${JOBS}"
- # If flags explicitly include --no-run, fall back to plain cargo test
- if printf '%s' " $BUILD_FLAGS_SANITIZED " | grep -q ' --no-run '; then
- cargo test $PKG_ARGS $BUILD_FLAGS_SANITIZED | tee "$OUT"
- : > "$CSV"; : > "$TOP"
- else
- cargo nextest run \
- $PKG_ARGS $BUILD_FLAGS_SANITIZED \
- --profile ci -j "${JOBS}" "${CFG_ARGS[@]}" \
- --status-level fail --hide-progress-bar \
- --no-tests=pass \
- ${FILTER_EXPR:+--filter-expr "$FILTER_EXPR"} \
- 2>&1 | tee "$OUT"
-
- if [ -f "$JUNIT" ]; then
- awk -v RS='1 {
- name=""; classname=""; time="";
- start=index($0,"classname=\""); if(start>0){ start+=11; rest=substr($0,start); end=index(rest,"\""); if(end>0) classname=substr(rest,1,end-1) }
- start=index($0,"name=\""); if(start>0){ start+=6; rest=substr($0,start); end=index(rest,"\""); if(end>0) name=substr(rest,1,end-1) }
- start=index($0,"time=\""); if(start>0){ start+=6; rest=substr($0,start); end=index(rest,"\""); if(end>0) time=substr(rest,1,end-1) }
- if(name!="" && time!=""){ full=(classname!=""?classname"::"name:name); printf "%s,%s\n", full, time }
- }
- ' "$JUNIT" > "$CSV" || true
-
- sort -t, -k2,2nr "$CSV" | head -n 30 > "$TOP" || true
+ # --- Logic to run tests and catch sccache failure ---
+ run_nextest() {
+ if printf '%s' " $BUILD_FLAGS_SANITIZED " | grep -q ' --no-run '; then
+ cargo test $PKG_ARGS $BUILD_FLAGS_SANITIZED
+ else
+ cargo nextest run \
+ $PKG_ARGS $BUILD_FLAGS_SANITIZED \
+ --profile ci -j "${JOBS}" "${CFG_ARGS[@]}" \
+ --status-level fail --hide-progress-bar \
+ --no-tests=pass \
+ ${FILTER_EXPR:+--filter-expr "$FILTER_EXPR"}
+ fi
+ }
+
+ if ! run_nextest 2>&1 | tee "$OUT"; then
+ if grep -q "sccache" "$OUT" && grep -q "exit status: 2" "$OUT"; then
+ echo "⚠️ Detected sccache crash. Cleaning up and retrying..."
+ [ -f "$HOME/.bin/sccache" ] && "$HOME/.bin/sccache" --stop-server || true
+ rm -rf "$HOME/.cache/sccache"
+ rm -rf target
+ mkdir -p target/nextest/ci
+ run_nextest 2>&1 | tee "$OUT"
else
- echo "WARN: $JUNIT not found; no timings extracted." >&2
- : > "$CSV"; : > "$TOP"
+ exit 1
fi
fi
+ if [ -f "$JUNIT" ]; then
+ awk -v RS='1 {
+ name=""; classname=""; time="";
+ start=index($0,"classname=\""); if(start>0){ start+=11; rest=substr($0,start); end=index(rest,"\""); if(end>0) classname=substr(rest,1,end-1) }
+ start=index($0,"name=\""); if(start>0){ start+=6; rest=substr($0,start); end=index(rest,"\""); if(end>0) name=substr(rest,1,end-1) }
+ start=index($0,"time=\""); if(start>0){ start+=6; rest=substr($0,start); end=index(rest,"\""); if(end>0) time=substr(rest,1,end-1) }
+ if(name!="" && time!=""){ full=(classname!=""?classname"::"name:name); printf "%s,%s\n", full, time }
+ }
+ ' "$JUNIT" > "$CSV" || true
+
+ sort -t, -k2,2nr "$CSV" | head -n 30 > "$TOP" || true
+ else
+ echo "WARN: $JUNIT not found; no timings extracted." >&2
+ : > "$CSV"; : > "$TOP"
+ fi
+
- store_artifacts:
path: artifacts
destination: test-timings/<< parameters.workspace_member >>
@@ -368,18 +381,6 @@ commands:
type: string
cache_key:
type: string
- validators:
- type: integer
- default: 4
- clients:
- type: integer
- default: 2
- network_id:
- type: integer
- default: 0
- min_height:
- type: integer
- default: 45
steps:
- checkout
- restore_cache:
@@ -391,17 +392,13 @@ commands:
- run:
name: "Run full upgrade test"
timeout: 30m # Allow 30 minutes total
- environment:
- WAIT_BETWEEN_UPGRADES: "60"
command: |
- ./.ci/test_full_upgrade.sh << parameters.validators >> << parameters.clients >> << parameters.network_id >> << parameters.min_height >>
+ ./.ci/test_full_upgrade.sh
- run:
name: "Run partial upgrade test"
timeout: 30m # Allow 30 minutes total
- environment:
- WAIT_BETWEEN_UPGRADES: "60"
command: |
- ./.ci/test_partial_upgrade.sh << parameters.validators >> << parameters.network_id >> << parameters.min_height >>
+ ./.ci/test_partial_upgrade.sh
- save_cache:
key: v1-snarkos-release-
paths:
@@ -624,7 +621,7 @@ jobs:
name: "Run Reset Minority Devnet Test"
no_output_timeout: 5m
command: |
- ./.ci/test_reset_minority.sh 7 0 50 250 3
+ ./.ci/test_reset_minority.sh
- clear_environment:
cache_key: v4.2.0-rust-1.88.0-chaotic-minority-reset-test-cache
@@ -646,7 +643,7 @@ jobs:
name: "Run Restart Majority Devnet Test"
no_output_timeout: 5m
command: |
- ./.ci/test_restart_majority.sh 7 0 20 250 3
+ ./.ci/test_restart_majority.sh
- clear_environment:
cache_key: v4.2.0-rust-1.88.0-chaotic-majority-restart-test-cache
@@ -816,7 +813,6 @@ workflows:
filters:
branches:
only:
- - main_net_v48
- canary
- testnet
- mainnet
@@ -826,7 +822,7 @@ workflows:
filters:
branches:
only:
- - main_net_v48
+ - main_net_v49
- canary
- testnet
- mainnet
@@ -836,7 +832,7 @@ workflows:
filters:
branches:
only:
- - main_net_v48
+ - main_net_v49
- canary
- testnet
- mainnet
@@ -845,7 +841,7 @@ workflows:
filters:
branches:
only:
- - main_net_v48
+ - main_net_v49
- canary
- testnet
- mainnet
diff --git a/Cargo.lock b/Cargo.lock
index 77735489b8..117b16c909 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -82,7 +82,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a9ebd144c81671193ed85aa2db9bb5e183421843e0485de8fffc07e5cf50e18a"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
+ "quote 1.0.47",
"syn 1.0.109",
]
@@ -93,7 +93,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68f6ff9e4c36858fa2c29e5284b77527b5a7466743976e1ba1f5824e16683545"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
+ "quote 1.0.47",
"syn 1.0.109",
]
@@ -173,9 +173,9 @@ dependencies = [
[[package]]
name = "anyhow"
-version = "1.0.103"
+version = "1.0.104"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3"
+checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470"
[[package]]
name = "approx"
@@ -186,15 +186,6 @@ dependencies = [
"num-traits",
]
-[[package]]
-name = "arbitrary"
-version = "1.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1"
-dependencies = [
- "derive_arbitrary",
-]
-
[[package]]
name = "arrayref"
version = "0.3.9"
@@ -203,9 +194,9 @@ checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb"
[[package]]
name = "arrayvec"
-version = "0.7.7"
+version = "0.7.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f02882884d3e1bc524fb12c79f107f6ad0e1cfd498c536ffb494301740995dfe"
+checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56"
[[package]]
name = "async-recursion"
@@ -214,19 +205,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
name = "async-trait"
-version = "0.1.89"
+version = "0.1.91"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
+checksum = "ae36dc4177970ef04fde5178d3e2429882def40e57a451f919c098f72baa6cec"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 3.0.3",
]
[[package]]
@@ -252,9 +243,9 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
[[package]]
name = "aws-lc-rs"
-version = "1.17.0"
+version = "1.17.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ec2f1fc3ec205783a5da9a7e6c1509cc69dedf09a1949e412c1e18469326d00"
+checksum = "00bdb5da18dac48ca2cc7cd4a98e533e8635a58e2361d13a1a4ee3888e0d72f1"
dependencies = [
"aws-lc-sys",
"zeroize",
@@ -262,14 +253,15 @@ dependencies = [
[[package]]
name = "aws-lc-sys"
-version = "0.41.0"
+version = "0.43.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a2f9779ce85b93ab6170dd940ad0169b5766ff848247aff13bb788b832fe3f4"
+checksum = "43103168cc76fe62678a375e722fc9cb3a0146159ac5828bc4f0dfd755c2224c"
dependencies = [
"cc",
"cmake",
"dunce",
"fs_extra",
+ "pkg-config",
]
[[package]]
@@ -283,9 +275,9 @@ dependencies = [
"form_urlencoded",
"futures-util",
"http 1.3.1",
- "http-body 1.0.1",
+ "http-body 1.1.0",
"http-body-util",
- "hyper 1.10.1",
+ "hyper 1.11.0",
"hyper-util",
"itoa",
"matchit",
@@ -314,7 +306,7 @@ dependencies = [
"bytes",
"futures-core",
"http 1.3.1",
- "http-body 1.0.1",
+ "http-body 1.1.0",
"http-body-util",
"mime",
"pin-project-lite",
@@ -336,7 +328,7 @@ dependencies = [
"futures-util",
"headers",
"http 1.3.1",
- "http-body 1.0.1",
+ "http-body 1.1.0",
"http-body-util",
"mime",
"pin-project-lite",
@@ -409,16 +401,16 @@ version = "0.72.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895"
dependencies = [
- "bitflags 2.13.0",
+ "bitflags 2.13.1",
"cexpr",
"clang-sys",
"itertools 0.13.0",
"proc-macro2",
- "quote 1.0.46",
+ "quote 1.0.47",
"regex",
"rustc-hash",
"shlex 1.3.0",
- "syn 2.0.118",
+ "syn 2.0.119",
]
[[package]]
@@ -459,9 +451,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
-version = "2.13.0"
+version = "2.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8"
+checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da"
[[package]]
name = "blake2"
@@ -503,9 +495,9 @@ dependencies = [
[[package]]
name = "blst"
-version = "0.3.16"
+version = "0.3.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dcdb4c7013139a150f9fc55d123186dbfaba0d912817466282c73ac49e71fb45"
+checksum = "c20659f9bbee16cbbd2f7393e40ab6309f5a98f76a2eb57a995ec508b72387fe"
dependencies = [
"cc",
"glob",
@@ -515,9 +507,9 @@ dependencies = [
[[package]]
name = "borsh"
-version = "1.7.0"
+version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f3f6da4992df95bbcd9af42a6c7dcb994498fc9048230405f3b36ff7cd3f145"
+checksum = "a88b7ea17d208c4193f2c1e6de3c35fe71f98c96982d5ced308bdcc749ff6e1f"
dependencies = [
"bytes",
"cfg_aliases",
@@ -555,9 +547,9 @@ checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06"
[[package]]
name = "bytemuck"
-version = "1.25.0"
+version = "1.25.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec"
+checksum = "95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797"
[[package]]
name = "byteorder"
@@ -567,9 +559,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
[[package]]
name = "bytes"
-version = "1.12.0"
+version = "1.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ae3f5d315924270530207e2a68396c3cc547f6dca3fbdca317cfb1a51edb593"
+checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04"
[[package]]
name = "bzip2-sys"
@@ -592,9 +584,9 @@ dependencies = [
[[package]]
name = "cc"
-version = "1.2.65"
+version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e228eec9be7c17ccb640b59b36a5cd805ea2a564a4c5e162c2f659fea30d3b96"
+checksum = "5add81bb678e6cb321aff7fa0dc7689ad82b112dbc032cea19f91d6b8e3582b9"
dependencies = [
"find-msvc-tools",
"jobserver",
@@ -608,7 +600,7 @@ version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
dependencies = [
- "nom",
+ "nom 7.1.3",
]
[[package]]
@@ -619,9 +611,9 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
[[package]]
name = "cfg_aliases"
-version = "0.2.1"
+version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
+checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527"
[[package]]
name = "chacha20"
@@ -667,9 +659,9 @@ dependencies = [
[[package]]
name = "clap"
-version = "4.6.1"
+version = "4.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51"
+checksum = "d91e0c145792ef73a6ad36d27c75ac09f1832222a3c209689d90f534685ee5b7"
dependencies = [
"clap_builder",
"clap_derive",
@@ -677,9 +669,9 @@ dependencies = [
[[package]]
name = "clap_builder"
-version = "4.6.0"
+version = "4.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f"
+checksum = "f09628afdcc538b57f3c6341e9c8e9970f18e4a481690a64974d7023bd33548b"
dependencies = [
"anstream",
"anstyle",
@@ -689,14 +681,14 @@ dependencies = [
[[package]]
name = "clap_derive"
-version = "4.6.1"
+version = "4.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9"
+checksum = "d012d2b9d65aca7f18f4d9878a045bc17899bba951561ba5ec3c2ba1eed9a061"
dependencies = [
"heck",
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 3.0.3",
]
[[package]]
@@ -771,9 +763,9 @@ dependencies = [
[[package]]
name = "console"
-version = "0.16.3"
+version = "0.16.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d64e8af5551369d19cf50138de61f1c42074ab970f74e99be916646777f8fc87"
+checksum = "4fe5f465a4f6fee88fad41b85d990f84c835335e85b5d9e6e63e0d06d28cba7c"
dependencies = [
"encode_unicode",
"libc",
@@ -944,18 +936,18 @@ checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b"
[[package]]
name = "crossbeam-channel"
-version = "0.5.15"
+version = "0.5.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2"
+checksum = "d85363c37faeca707aef026efa9f3b34d077bce547e48f770770625c6013679e"
dependencies = [
"crossbeam-utils",
]
[[package]]
name = "crossbeam-deque"
-version = "0.8.6"
+version = "0.8.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
+checksum = "5181e0de7b61eb03a81e347d6dd8797bae9da5146707b51077e2d71a54ec0ceb"
dependencies = [
"crossbeam-epoch",
"crossbeam-utils",
@@ -963,18 +955,18 @@ dependencies = [
[[package]]
name = "crossbeam-epoch"
-version = "0.9.18"
+version = "0.9.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
+checksum = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f"
dependencies = [
"crossbeam-utils",
]
[[package]]
name = "crossbeam-utils"
-version = "0.8.21"
+version = "0.8.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
+checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17"
[[package]]
name = "crossterm"
@@ -982,7 +974,7 @@ version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b"
dependencies = [
- "bitflags 2.13.0",
+ "bitflags 2.13.1",
"crossterm_winapi",
"derive_more",
"document-features",
@@ -1026,9 +1018,9 @@ dependencies = [
[[package]]
name = "crypto-common"
-version = "0.1.7"
+version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
dependencies = [
"generic-array",
"typenum",
@@ -1087,8 +1079,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
@@ -1109,9 +1101,9 @@ checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0"
dependencies = [
"ident_case",
"proc-macro2",
- "quote 1.0.46",
+ "quote 1.0.47",
"strsim",
- "syn 2.0.118",
+ "syn 2.0.119",
]
[[package]]
@@ -1121,8 +1113,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d"
dependencies = [
"darling_core",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
@@ -1166,9 +1158,9 @@ dependencies = [
[[package]]
name = "der"
-version = "0.8.0"
+version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "71fd89660b2dc699704064e59e9dba0147b903e85319429e131620d022be411b"
+checksum = "a69dedd701da44b0536442edf09c81a64b0ab97a7a4a5e3d1971f00027cbc63d"
dependencies = [
"const-oid 0.10.2",
"pem-rfc7468",
@@ -1191,20 +1183,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bba95f299f6b9cd47f68a847eca2ae9060a2713af532dc35c342065544845407"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
+ "quote 1.0.47",
"structmeta 0.3.0",
- "syn 2.0.118",
-]
-
-[[package]]
-name = "derive_arbitrary"
-version = "1.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a"
-dependencies = [
- "proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "syn 2.0.119",
]
[[package]]
@@ -1224,9 +1205,9 @@ checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb"
dependencies = [
"convert_case",
"proc-macro2",
- "quote 1.0.46",
+ "quote 1.0.47",
"rustc_version",
- "syn 2.0.118",
+ "syn 2.0.119",
]
[[package]]
@@ -1236,7 +1217,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
dependencies = [
"block-buffer 0.10.4",
- "crypto-common 0.1.7",
+ "crypto-common 0.1.6",
"subtle",
]
@@ -1279,8 +1260,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
@@ -1318,11 +1299,11 @@ checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555"
[[package]]
name = "ecdsa"
-version = "0.17.0-rc.16"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91bbdd377139884fafcad8dc43a760a3e1e681aa26db910257fa6535b70e1829"
+checksum = "c0681a4fc24c767085329728d8dfba959af91228aa4610cca4f8ce317ba46ae0"
dependencies = [
- "der 0.8.0",
+ "der 0.8.1",
"digest 0.11.3",
"elliptic-curve",
"rfc6979",
@@ -1357,24 +1338,24 @@ dependencies = [
[[package]]
name = "either"
-version = "1.16.0"
+version = "1.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e"
+checksum = "9e5e8f6c15a24b9a3ee5efec809ccd006d3b30e8b3bb63c39af737c7f87daa1d"
[[package]]
name = "elliptic-curve"
-version = "0.14.0-rc.29"
+version = "0.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e84043d573efd4ac9d2d125817979a379204bf7e328b25a4a30487e8d100e618"
+checksum = "9d65aa39b3a5c1c9c1b745c9a019234bb7a21b77abcb4f4d266d706e2d577d65"
dependencies = [
"base16ct",
"crypto-bigint",
"crypto-common 0.2.2",
"digest 0.11.3",
+ "ff",
+ "group",
"hybrid-array",
"rand_core 0.10.1",
- "rustcrypto-ff",
- "rustcrypto-group",
"sec1",
"subtle",
"zeroize",
@@ -1411,8 +1392,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "685adfa4d6f3d765a26bc5dbc936577de9abf756c1feeb3089b01dd395034842"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
@@ -1506,9 +1487,19 @@ checksum = "dd2e7510819d6fbf51a5545c8f922716ecfb14df168a3242f7d33e0239efe6a1"
[[package]]
name = "fastrand"
-version = "2.4.1"
+version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6"
+checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223"
+
+[[package]]
+name = "ff"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1f686ab92a9fb0eaf188f6c6c87b89490baa6fdb0db4544ba4dc47f7942489f"
+dependencies = [
+ "rand_core 0.10.1",
+ "subtle",
+]
[[package]]
name = "fiat-crypto"
@@ -1527,6 +1518,16 @@ dependencies = [
"winapi",
]
+[[package]]
+name = "filetime"
+version = "0.2.29"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c287a33c7f0a620c38e641e7f60827713987b3c0f26e8ddc9462cc69cf75759"
+dependencies = [
+ "cfg-if",
+ "libc",
+]
+
[[package]]
name = "find-msvc-tools"
version = "0.1.9"
@@ -1631,9 +1632,9 @@ checksum = "c1fd087255f739f4f1aeea69f11b72f8080e9c2e7645cd06955dad4a178a49e3"
[[package]]
name = "futures"
-version = "0.3.32"
+version = "0.3.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d"
+checksum = "a88cf1f829d945f548cf8fec32c61b1f202b6d93b45848602fc02af4b12ad218"
dependencies = [
"futures-channel",
"futures-core",
@@ -1646,9 +1647,9 @@ dependencies = [
[[package]]
name = "futures-channel"
-version = "0.3.32"
+version = "0.3.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d"
+checksum = "262590f4fe6afeb0bc83be1daa64e52657fe185690a958af7f3ad0e92085c5ae"
dependencies = [
"futures-core",
"futures-sink",
@@ -1656,15 +1657,15 @@ dependencies = [
[[package]]
name = "futures-core"
-version = "0.3.32"
+version = "0.3.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d"
+checksum = "2cd50c473c80f6d7c3670a752354b8e569b1a7cbfdc0419ec88e5edad85e0dc7"
[[package]]
name = "futures-executor"
-version = "0.3.32"
+version = "0.3.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d"
+checksum = "6754879cc9f2c66f88c6e5c35344bb0bdb0708b0352b1201815667c7eabc7458"
dependencies = [
"futures-core",
"futures-task",
@@ -1673,32 +1674,32 @@ dependencies = [
[[package]]
name = "futures-io"
-version = "0.3.32"
+version = "0.3.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718"
+checksum = "4577ecaa3c4f96589d473f679a71b596316f6641bc350038b962a5daf0085d7a"
[[package]]
name = "futures-macro"
-version = "0.3.32"
+version = "0.3.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b"
+checksum = "2d6d3cde68c518367be28956066ddfef33813991b77a55005a69dae04bf3b10b"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
name = "futures-sink"
-version = "0.3.32"
+version = "0.3.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893"
+checksum = "e34418ac499d6305c2fb5ad0ed2f6ac998c5f8ca209b4510f7f94242c647e307"
[[package]]
name = "futures-task"
-version = "0.3.32"
+version = "0.3.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393"
+checksum = "b231ed28831efb4a61a08580c4bc233ec56bc009f4cd8f52da2c3cb97df0c109"
[[package]]
name = "futures-timer"
@@ -1708,9 +1709,9 @@ checksum = "af43fadb8a98512d547e37b4e92e0ced13e205c061b87b4623eff01d918d6968"
[[package]]
name = "futures-util"
-version = "0.3.32"
+version = "0.3.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6"
+checksum = "a77a90a256fce34da66415271e30f94ee91c57b04b8a2c042d9cf3220179deaa"
dependencies = [
"futures-channel",
"futures-core",
@@ -1734,9 +1735,9 @@ dependencies = [
[[package]]
name = "generic-array"
-version = "0.14.7"
+version = "0.14.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2"
dependencies = [
"typenum",
"version_check",
@@ -1785,9 +1786,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099"
dependencies = [
"cfg-if",
+ "js-sys",
"libc",
"r-efi 6.0.0",
"rand_core 0.10.1",
+ "wasm-bindgen",
]
[[package]]
@@ -1802,7 +1805,7 @@ version = "0.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ddddbf932745a6be37109b6112d3ee09696106f848449069d3a57bba937ab82e"
dependencies = [
- "bitflags 2.13.0",
+ "bitflags 2.13.1",
"libc",
"libgit2-sys",
"log",
@@ -1810,9 +1813,9 @@ dependencies = [
[[package]]
name = "glob"
-version = "0.3.3"
+version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
+checksum = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b"
[[package]]
name = "governor"
@@ -1831,12 +1834,23 @@ dependencies = [
"parking_lot",
"portable-atomic",
"quanta",
- "rand 0.9.4",
+ "rand 0.9.5",
"smallvec",
"spinning_top",
"web-time",
]
+[[package]]
+name = "group"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fd1a1c7a5206c5b7a3f5a0d7ccd3ff85d0c8f5133d62a02680255b0004af5f4"
+dependencies = [
+ "ff",
+ "rand_core 0.10.1",
+ "subtle",
+]
+
[[package]]
name = "h2"
version = "0.4.15"
@@ -1906,14 +1920,14 @@ dependencies = [
[[package]]
name = "hdrhistogram"
-version = "7.5.4"
+version = "7.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "765c9198f173dd59ce26ff9f95ef0aafd0a0fe01fb9d72841bc5066a4c06511d"
+checksum = "f49d1053f4708f0af3cf9fc5bffc7e68a914a3c45becb231c80068c9c3f78bea"
dependencies = [
- "base64 0.21.7",
+ "base64 0.22.1",
"byteorder",
"flate2",
- "nom",
+ "nom 8.0.0",
"num-traits",
]
@@ -2012,9 +2026,9 @@ dependencies = [
[[package]]
name = "http-body"
-version = "1.0.1"
+version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
+checksum = "ca2a8f2913ee65f60facd6a5905613afaa448497a0230cc41ce022d93290bc2c"
dependencies = [
"bytes",
"http 1.3.1",
@@ -2022,14 +2036,14 @@ dependencies = [
[[package]]
name = "http-body-util"
-version = "0.1.3"
+version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a"
+checksum = "e9f41fd6a08e4d4ec69df65976da761afd5ad5e58a9d4acb46bd1c953a9e3ff2"
dependencies = [
"bytes",
"futures-core",
"http 1.3.1",
- "http-body 1.0.1",
+ "http-body 1.1.0",
"pin-project-lite",
]
@@ -2053,9 +2067,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
[[package]]
name = "humantime"
-version = "2.3.0"
+version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424"
+checksum = "15cdd26707701c53297e2fa6afb323d55fbc1d0810c3aec078ae3ef0424c3c15"
[[package]]
name = "hybrid-array"
@@ -2093,9 +2107,9 @@ dependencies = [
[[package]]
name = "hyper"
-version = "1.10.1"
+version = "1.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498"
+checksum = "d22053281f852e11534f5198498373cbb59295120a20771d90f7ed1897490a72"
dependencies = [
"atomic-waker",
"bytes",
@@ -2103,7 +2117,7 @@ dependencies = [
"futures-core",
"h2",
"http 1.3.1",
- "http-body 1.0.1",
+ "http-body 1.1.0",
"httparse",
"httpdate",
"itoa",
@@ -2120,7 +2134,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f"
dependencies = [
"http 1.3.1",
- "hyper 1.10.1",
+ "hyper 1.11.0",
"hyper-util",
"rustls",
"tokio",
@@ -2134,7 +2148,7 @@ version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0"
dependencies = [
- "hyper 1.10.1",
+ "hyper 1.11.0",
"hyper-util",
"pin-project-lite",
"tokio",
@@ -2162,7 +2176,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0"
dependencies = [
"bytes",
"http-body-util",
- "hyper 1.10.1",
+ "hyper 1.11.0",
"hyper-util",
"native-tls",
"tokio",
@@ -2181,13 +2195,13 @@ dependencies = [
"futures-channel",
"futures-util",
"http 1.3.1",
- "http-body 1.0.1",
- "hyper 1.10.1",
+ "http-body 1.1.0",
+ "hyper 1.11.0",
"ipnet",
"libc",
"percent-encoding",
"pin-project-lite",
- "socket2 0.6.4",
+ "socket2 0.6.5",
"system-configuration",
"tokio",
"tower-service",
@@ -2354,9 +2368,9 @@ dependencies = [
[[package]]
name = "indicatif"
-version = "0.18.4"
+version = "0.18.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25470f23803092da7d239834776d653104d551bc4d7eacaf31e6837854b8e9eb"
+checksum = "9433806cd6b4ec1aba79c021c7e4c58fb4c3b9977c085062e611ac929998fb0c"
dependencies = [
"console",
"portable-atomic",
@@ -2383,8 +2397,8 @@ dependencies = [
"darling",
"indoc",
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
@@ -2454,7 +2468,7 @@ dependencies = [
"jni-sys",
"log",
"simd_cesu8",
- "thiserror 2.0.18",
+ "thiserror 2.0.19",
"walkdir",
"windows-link",
]
@@ -2466,10 +2480,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
+ "quote 1.0.47",
"rustc_version",
"simd_cesu8",
- "syn 2.0.118",
+ "syn 2.0.119",
]
[[package]]
@@ -2487,17 +2501,17 @@ version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264"
dependencies = [
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
name = "jobserver"
-version = "0.1.34"
+version = "0.1.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33"
+checksum = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3"
dependencies = [
- "getrandom 0.3.4",
+ "getrandom 0.4.3",
"libc",
]
@@ -2540,14 +2554,16 @@ dependencies = [
[[package]]
name = "k256"
-version = "0.14.0-rc.8"
+version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f7d2c6c227649d5ec80eaae541f1736232641a0bcdb3062a52b34edb42054158"
+checksum = "93f50113171a713f4a4231ef82eb26703607139b35dcb56241f0ceab2ae1f7d8"
dependencies = [
"cpubits",
"ecdsa",
"elliptic-curve",
+ "primeorder",
"sha2 0.11.0",
+ "wnaf",
]
[[package]]
@@ -2558,7 +2574,7 @@ checksum = "bde5057d6143cc94e861d90f591b9303d6716c6b9602309150bd068853c10899"
dependencies = [
"hashbrown 0.16.1",
"portable-atomic",
- "thiserror 2.0.18",
+ "thiserror 2.0.19",
]
[[package]]
@@ -2575,15 +2591,15 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
[[package]]
name = "libc"
-version = "0.2.186"
+version = "0.2.189"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
+checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
[[package]]
name = "libgit2-sys"
-version = "0.18.5+1.9.4"
+version = "0.18.7+1.9.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "005d6ae6eac1912906073e069f7db60b1fa98e052a68227824afe3e3a1c59ca2"
+checksum = "23c7391e4b9f4ffab1a624223cc1d7385ff9a678f490768add717de7ea2f4d89"
dependencies = [
"cc",
"libc",
@@ -2609,9 +2625,9 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
[[package]]
name = "libredox"
-version = "0.1.17"
+version = "0.1.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f02ab6bace2054fb888a3c16f990117b579d14a3088e472d63c6011fa185c9d3"
+checksum = "c943259e342f1e06ff2da7a83eabdfe7f92ce10262688dbf1895ff0b3e6e4652"
dependencies = [
"libc",
]
@@ -2648,7 +2664,7 @@ version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f50e8f47623268b5407192d26876c4d7f89d686ca130fdc53bced4814cd29f8"
dependencies = [
- "bitflags 2.13.0",
+ "bitflags 2.13.1",
]
[[package]]
@@ -2719,9 +2735,9 @@ dependencies = [
[[package]]
name = "lru"
-version = "0.18.0"
+version = "0.18.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a860605968fce16869fd239cf4237a82f3ac470723415db603b0e8b6c8d4fb9"
+checksum = "0b6180140927ee907000b0aa540091f6ea512ead4447c92b8fc35bc72788a5a6"
dependencies = [
"hashbrown 0.17.1",
]
@@ -2769,9 +2785,9 @@ checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3"
[[package]]
name = "memchr"
-version = "2.8.2"
+version = "2.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4"
+checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
[[package]]
name = "memmem"
@@ -2866,9 +2882,9 @@ dependencies = [
[[package]]
name = "mio"
-version = "1.2.1"
+version = "1.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda"
+checksum = "30d65c71f1ce40ab09135ce117d742b9f8a19ff91a41a8b57ed50bc2de59c427"
dependencies = [
"libc",
"log",
@@ -2898,8 +2914,8 @@ checksum = "25ca3004c2efe9011bd4e461bd8256445052b9615405b4f7ea43fc8ca5c20898"
dependencies = [
"cfg-if",
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
@@ -2931,7 +2947,7 @@ version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
dependencies = [
- "bitflags 2.13.0",
+ "bitflags 2.13.1",
"cfg-if",
"cfg_aliases",
"libc",
@@ -2944,7 +2960,7 @@ version = "0.30.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6"
dependencies = [
- "bitflags 2.13.0",
+ "bitflags 2.13.1",
"cfg-if",
"cfg_aliases",
"libc",
@@ -2966,6 +2982,15 @@ dependencies = [
"minimal-lexical",
]
+[[package]]
+name = "nom"
+version = "8.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405"
+dependencies = [
+ "memchr",
+]
+
[[package]]
name = "nonempty"
version = "0.7.0"
@@ -2990,9 +3015,9 @@ dependencies = [
[[package]]
name = "num-bigint"
-version = "0.4.6"
+version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
+checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367"
dependencies = [
"num-integer",
"num-traits",
@@ -3011,8 +3036,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
@@ -3079,13 +3104,12 @@ checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
[[package]]
name = "open"
-version = "5.3.5"
+version = "5.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2fbaa89d2ddc8473c78a3adf69eea8cffa28c483b8e02a971ef31527cd0fc92c"
+checksum = "a0b3d059e795d52b8a72fef45658620edd4d9c359b338564aa14391ffa511ed5"
dependencies = [
"is-wsl",
"libc",
- "pathdiff",
]
[[package]]
@@ -3094,7 +3118,7 @@ version = "0.10.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77823a27f0babb03091cb9ed9ef80af3b39dbc82f97e8fa530374b7dafd87a45"
dependencies = [
- "bitflags 2.13.0",
+ "bitflags 2.13.1",
"cfg-if",
"foreign-types",
"libc",
@@ -3109,8 +3133,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
@@ -3166,8 +3190,8 @@ checksum = "f5030daf005bface118c096f510ffb781fc28f9ab6a32ab224d8631be6851d30"
dependencies = [
"by_address",
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
@@ -3199,12 +3223,6 @@ version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
-[[package]]
-name = "pathdiff"
-version = "0.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3"
-
[[package]]
name = "pea2pea"
version = "0.49.0"
@@ -3252,9 +3270,9 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
[[package]]
name = "pest"
-version = "2.8.6"
+version = "2.8.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662"
+checksum = "7df728be843c7070fab6ab7c328c4e9e9d78e23bf749c0669c86ee7ebfa050a2"
dependencies = [
"memchr",
"ucd-trie",
@@ -3262,9 +3280,9 @@ dependencies = [
[[package]]
name = "pest_derive"
-version = "2.8.6"
+version = "2.8.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77"
+checksum = "9e2dd6fc3b26b3462ee188aac870f5a41d398f1cd5e2408d16531bd71c9591fd"
dependencies = [
"pest",
"pest_generator",
@@ -3272,25 +3290,24 @@ dependencies = [
[[package]]
name = "pest_generator"
-version = "2.8.6"
+version = "2.8.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f"
+checksum = "6a7a9205cfb6f596a9e8b689c0a15f9ceb7a1aafae7aaf788150ac65b29975b6"
dependencies = [
"pest",
"pest_meta",
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
name = "pest_meta"
-version = "2.8.6"
+version = "2.8.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220"
+checksum = "85abd351c0de1e8384fc791a0737111a350394937e92b956b743dac12429f57c"
dependencies = [
"pest",
- "sha2 0.10.9",
]
[[package]]
@@ -3320,7 +3337,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d"
dependencies = [
"phf_shared",
- "rand 0.8.6",
+ "rand 0.8.7",
]
[[package]]
@@ -3332,8 +3349,8 @@ dependencies = [
"phf_generator",
"phf_shared",
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
@@ -3361,8 +3378,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
@@ -3389,9 +3406,9 @@ checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e"
[[package]]
name = "portable-atomic"
-version = "1.13.1"
+version = "1.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
+checksum = "3d20d5497ef88037a52ff98267d066e7f11fcc5e99bbfbd58a42336193aacec3"
[[package]]
name = "potential_utf"
@@ -3443,11 +3460,36 @@ dependencies = [
"termtree",
]
+[[package]]
+name = "primefield"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c555a6e4eb7d4e158fcb028c835c3b8642206ddc279b5c6b202ef9a8bdb592f4"
+dependencies = [
+ "crypto-bigint",
+ "crypto-common 0.2.2",
+ "ff",
+ "rand_core 0.10.1",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "primeorder"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c9f42978c78a00e3d68f69fc03e57a234debae69da4020a4fb588fcdcd07b06"
+dependencies = [
+ "elliptic-curve",
+ "primefield",
+ "wnaf",
+]
+
[[package]]
name = "proc-macro2"
-version = "1.0.106"
+version = "1.0.107"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
+checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
dependencies = [
"unicode-ident",
]
@@ -3460,10 +3502,10 @@ checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50"
dependencies = [
"bit-set 0.8.0",
"bit-vec 0.8.0",
- "bitflags 2.13.0",
+ "bitflags 2.13.1",
"lazy_static",
"num-traits",
- "rand 0.8.6",
+ "rand 0.8.7",
"rand_chacha 0.3.1",
"rand_xorshift 0.3.0",
"regex-syntax 0.8.11",
@@ -3491,8 +3533,8 @@ dependencies = [
"anyhow",
"itertools 0.14.0",
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
@@ -3525,15 +3567,6 @@ version = "1.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
-[[package]]
-name = "quick-xml"
-version = "0.38.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c"
-dependencies = [
- "memchr",
-]
-
[[package]]
name = "quinn"
version = "0.11.11"
@@ -3547,8 +3580,8 @@ dependencies = [
"quinn-udp",
"rustc-hash",
"rustls",
- "socket2 0.6.4",
- "thiserror 2.0.18",
+ "socket2 0.6.5",
+ "thiserror 2.0.19",
"tokio",
"tracing",
"web-time",
@@ -3556,21 +3589,22 @@ dependencies = [
[[package]]
name = "quinn-proto"
-version = "0.11.15"
+version = "0.11.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4fcb935c5bec503c2f0e306bdd3e58bb9029dcb14fa8d9ac76e3a5256ac0763e"
+checksum = "2f4bfc015262b9df63c8845072ce59068853ff5872180c2ce2f13038b970e560"
dependencies = [
"aws-lc-rs",
"bytes",
- "getrandom 0.3.4",
+ "getrandom 0.4.3",
"lru-slab",
- "rand 0.9.4",
+ "rand 0.10.2",
+ "rand_pcg",
"ring",
"rustc-hash",
"rustls",
"rustls-pki-types",
"slab",
- "thiserror 2.0.18",
+ "thiserror 2.0.19",
"tinyvec",
"tracing",
"web-time",
@@ -3578,16 +3612,16 @@ dependencies = [
[[package]]
name = "quinn-udp"
-version = "0.5.14"
+version = "0.5.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd"
+checksum = "35a133f956daabe89a61a685c2649f13d82d5aa4bd5d12d1277e1072a21c0694"
dependencies = [
"cfg_aliases",
"libc",
"once_cell",
- "socket2 0.6.4",
+ "socket2 0.6.5",
"tracing",
- "windows-sys 0.60.2",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -3598,9 +3632,9 @@ checksum = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a"
[[package]]
name = "quote"
-version = "1.0.46"
+version = "1.0.47"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368"
+checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
dependencies = [
"proc-macro2",
]
@@ -3619,9 +3653,9 @@ checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
[[package]]
name = "rand"
-version = "0.8.6"
+version = "0.8.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a"
+checksum = "22f6172bdec972074665ed81ed53b71da00bfc44b65a753cfde883ec4c702a1a"
dependencies = [
"libc",
"rand_chacha 0.3.1",
@@ -3630,9 +3664,9 @@ dependencies = [
[[package]]
name = "rand"
-version = "0.9.4"
+version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea"
+checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41"
dependencies = [
"rand_chacha 0.9.0",
"rand_core 0.9.5",
@@ -3640,9 +3674,9 @@ dependencies = [
[[package]]
name = "rand"
-version = "0.10.1"
+version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207"
+checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80"
dependencies = [
"chacha20",
"getrandom 0.4.3",
@@ -3710,7 +3744,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4d431c2703ccf129de4d45253c03f49ebb22b97d6ad79ee3ecfc7e3f4862c1d8"
dependencies = [
"num-traits",
- "rand 0.10.1",
+ "rand 0.10.2",
+]
+
+[[package]]
+name = "rand_pcg"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a"
+dependencies = [
+ "rand_core 0.10.1",
]
[[package]]
@@ -3753,17 +3796,17 @@ version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cbb175c433c8e28a809d1f5773a2ae96e68c0ce40db865cbab1020bf33ae479c"
dependencies = [
- "bitflags 2.13.0",
+ "bitflags 2.13.1",
"compact_str",
"critical-section",
"hashbrown 0.17.1",
"itertools 0.14.0",
"kasuari",
- "lru 0.18.0",
+ "lru 0.18.1",
"palette",
"serde",
"strum",
- "thiserror 2.0.18",
+ "thiserror 2.0.19",
"unicode-segmentation",
"unicode-truncate",
"unicode-width",
@@ -3818,7 +3861,7 @@ version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "66e3d19bcc9130ca376277d93b60767ff121ace3be06f5f95f81dd68956407d1"
dependencies = [
- "bitflags 2.13.0",
+ "bitflags 2.13.1",
"hashbrown 0.17.1",
"indoc",
"instability",
@@ -3838,7 +3881,7 @@ version = "11.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186"
dependencies = [
- "bitflags 2.13.0",
+ "bitflags 2.13.1",
]
[[package]]
@@ -3867,7 +3910,7 @@ version = "0.5.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
dependencies = [
- "bitflags 2.13.0",
+ "bitflags 2.13.1",
]
[[package]]
@@ -3883,33 +3926,33 @@ dependencies = [
[[package]]
name = "ref-cast"
-version = "1.0.25"
+version = "1.0.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d"
+checksum = "216e8f773d7923bcba9ceb86a86c93cabb3903a11872fc3f138c49630e50b96d"
dependencies = [
"ref-cast-impl",
]
[[package]]
name = "ref-cast-impl"
-version = "1.0.25"
+version = "1.0.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da"
+checksum = "2c9283685feec7d69af75fb0e858d5e7378f33fe4fc699383b2916ab9273e03c"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 3.0.3",
]
[[package]]
name = "regex"
-version = "1.12.4"
+version = "1.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba"
+checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d"
dependencies = [
"aho-corasick",
"memchr",
- "regex-automata 0.4.14",
+ "regex-automata 0.4.16",
"regex-syntax 0.8.11",
]
@@ -3924,9 +3967,9 @@ dependencies = [
[[package]]
name = "regex-automata"
-version = "0.4.14"
+version = "0.4.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
+checksum = "8fcfdb36bda0c880c5931cdc7a2bcdc8ba4556847b9d912bca70bc94708711ad"
dependencies = [
"aho-corasick",
"memchr",
@@ -3959,9 +4002,9 @@ dependencies = [
"futures-util",
"h2",
"http 1.3.1",
- "http-body 1.0.1",
+ "http-body 1.1.0",
"http-body-util",
- "hyper 1.10.1",
+ "hyper 1.11.0",
"hyper-rustls",
"hyper-tls 0.6.0",
"hyper-util",
@@ -3992,12 +4035,12 @@ dependencies = [
[[package]]
name = "rfc6979"
-version = "0.5.0"
+version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5236ce872cac07e0fb3969b0cbf468c7d2f37d432f1b627dcb7b8d34563fb0c3"
+checksum = "b4a459cddafb3fe76b31fd8f1108007566c40301feb64dc7b54656eb7388172b"
dependencies = [
+ "crypto-bigint",
"hmac",
- "subtle",
]
[[package]]
@@ -4056,15 +4099,15 @@ dependencies = [
[[package]]
name = "rustc-demangle"
-version = "0.1.27"
+version = "0.1.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d"
+checksum = "b74b56ffa8bb2830709a538c2cbcae9aa062db0d2a42563bfb09bdaae44020eb"
[[package]]
name = "rustc-hash"
-version = "2.1.2"
+version = "2.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe"
+checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d"
[[package]]
name = "rustc_version"
@@ -4075,34 +4118,13 @@ dependencies = [
"semver",
]
-[[package]]
-name = "rustcrypto-ff"
-version = "0.14.0-rc.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fd2a8adb347447693cd2ba0d218c4b66c62da9b0a5672b17b981e4291ec65ff6"
-dependencies = [
- "rand_core 0.10.1",
- "subtle",
-]
-
-[[package]]
-name = "rustcrypto-group"
-version = "0.14.0-rc.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "369f9b61aa45933c062c9f6b5c3c50ab710687eca83dd3802653b140b43f85ed"
-dependencies = [
- "rand_core 0.10.1",
- "rustcrypto-ff",
- "subtle",
-]
-
[[package]]
name = "rustix"
version = "0.38.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
dependencies = [
- "bitflags 2.13.0",
+ "bitflags 2.13.1",
"errno",
"libc",
"linux-raw-sys 0.4.15",
@@ -4115,7 +4137,7 @@ version = "1.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"
dependencies = [
- "bitflags 2.13.0",
+ "bitflags 2.13.1",
"errno",
"libc",
"linux-raw-sys 0.12.1",
@@ -4124,9 +4146,9 @@ dependencies = [
[[package]]
name = "rustls"
-version = "0.23.41"
+version = "0.23.42"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6b92b125634d9b795e7beca796cc790df15a7fb38323bf3196fda83292d06b1f"
+checksum = "3c54fcab019b409d04215d3a17cb438fd7fbf192ee61461f20f4fe18704bc138"
dependencies = [
"aws-lc-rs",
"log",
@@ -4152,9 +4174,9 @@ dependencies = [
[[package]]
name = "rustls-pki-types"
-version = "1.14.1"
+version = "1.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9"
+checksum = "2f4925028c7eb5d1fcdaf196971378ed9d2c1c4efc7dc5d011256f76c99c0a96"
dependencies = [
"web-time",
"zeroize",
@@ -4201,9 +4223,9 @@ dependencies = [
[[package]]
name = "rustversion"
-version = "1.0.22"
+version = "1.0.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
+checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f"
[[package]]
name = "rusty-fork"
@@ -4291,7 +4313,7 @@ checksum = "d56d437c2f19203ce5f7122e507831de96f3d2d4d3be5af44a0b0a09d8a80e4d"
dependencies = [
"base16ct",
"ctutils",
- "der 0.8.0",
+ "der 0.8.1",
"hybrid-array",
"subtle",
"zeroize",
@@ -4303,7 +4325,7 @@ version = "3.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d"
dependencies = [
- "bitflags 2.13.0",
+ "bitflags 2.13.1",
"core-foundation 0.10.1",
"core-foundation-sys",
"libc",
@@ -4333,20 +4355,22 @@ dependencies = [
[[package]]
name = "self_update"
-version = "0.44.0"
+version = "1.0.0-rc.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2e79722b5a505d4ddc77527455a97244e9e8c4c07533ff44cf4421cce7bb6d17"
+checksum = "5b7cc0b87814417b0e0697ae582dfc5f614f469fbac9b138e40457d88913187d"
dependencies = [
+ "either",
+ "flate2",
"http 1.3.1",
"indicatif",
"log",
- "quick-xml",
"regex",
"reqwest",
"self-replace",
"semver",
"serde",
"serde_json",
+ "tar",
"tempfile",
"ureq",
"urlencoding",
@@ -4368,9 +4392,9 @@ checksum = "1bc711410fbe7399f390ca1c3b60ad0f53f80e95c5eb935e52268a0e2cd49acc"
[[package]]
name = "serde"
-version = "1.0.228"
+version = "1.0.229"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
+checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba"
dependencies = [
"serde_core",
"serde_derive",
@@ -4378,29 +4402,29 @@ dependencies = [
[[package]]
name = "serde_core"
-version = "1.0.228"
+version = "1.0.229"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
+checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.228"
+version = "1.0.229"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
+checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 3.0.3",
]
[[package]]
name = "serde_json"
-version = "1.0.150"
+version = "1.0.151"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9"
+checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14"
dependencies = [
"indexmap 2.14.0",
"itoa",
@@ -4470,15 +4494,15 @@ checksum = "84d57bc0c8b9a17920c178daa6bb924850d54a9c97ab45194bb8c17ad66bb660"
dependencies = [
"darling",
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
name = "sha1"
-version = "0.10.6"
+version = "0.10.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
+checksum = "a978451301f4db1d02937a4ab3ccce137717b81826e79b7d49ffe3244a13c3b8"
dependencies = [
"cfg-if",
"cpufeatures 0.2.17",
@@ -4581,15 +4605,15 @@ dependencies = [
[[package]]
name = "simd-adler32"
-version = "0.3.9"
+version = "0.3.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214"
+checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea"
[[package]]
name = "simd_cesu8"
-version = "1.1.1"
+version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33"
+checksum = "11031e251abf8611c80f460e19dbdeb54a66db918e49c65a7065b46ac7aec520"
dependencies = [
"rustc_version",
"simdutf8",
@@ -4609,7 +4633,7 @@ checksum = "0d585997b0ac10be3c5ee635f1bab02d512760d14b7c468801ac8a01d9ae5f1d"
dependencies = [
"num-bigint",
"num-traits",
- "thiserror 2.0.18",
+ "thiserror 2.0.19",
"time",
]
@@ -4667,7 +4691,7 @@ dependencies = [
[[package]]
name = "snarkos"
-version = "4.8.1"
+version = "4.9.0"
dependencies = [
"built",
"clap",
@@ -4695,7 +4719,7 @@ dependencies = [
[[package]]
name = "snarkos-account"
-version = "4.8.1"
+version = "4.9.0"
dependencies = [
"colored 3.1.1",
"snarkvm",
@@ -4703,7 +4727,7 @@ dependencies = [
[[package]]
name = "snarkos-cli"
-version = "4.8.1"
+version = "4.9.0"
dependencies = [
"aleo-std",
"anstyle",
@@ -4718,7 +4742,7 @@ dependencies = [
"nix 0.30.1",
"num_cpus",
"parking_lot",
- "rand 0.10.1",
+ "rand 0.10.2",
"rand_chacha 0.10.0",
"rayon",
"rlimit",
@@ -4736,7 +4760,7 @@ dependencies = [
"snarkvm",
"sys-info",
"tempfile",
- "thiserror 2.0.18",
+ "thiserror 2.0.19",
"time",
"tokio",
"tracing",
@@ -4747,7 +4771,7 @@ dependencies = [
[[package]]
name = "snarkos-display"
-version = "4.8.1"
+version = "4.9.0"
dependencies = [
"anyhow",
"crossterm",
@@ -4760,7 +4784,7 @@ dependencies = [
[[package]]
name = "snarkos-node"
-version = "4.8.1"
+version = "4.9.0"
dependencies = [
"aleo-std",
"anyhow",
@@ -4778,7 +4802,7 @@ dependencies = [
"parking_lot",
"paste",
"pea2pea",
- "rand 0.10.1",
+ "rand 0.10.2",
"rand_chacha 0.10.0",
"reqwest",
"serde_json",
@@ -4803,7 +4827,7 @@ dependencies = [
[[package]]
name = "snarkos-node-bft"
-version = "4.8.1"
+version = "4.9.0"
dependencies = [
"aleo-std",
"anyhow",
@@ -4826,7 +4850,7 @@ dependencies = [
"paste",
"pea2pea",
"proptest",
- "rand 0.10.1",
+ "rand 0.10.2",
"rand_chacha 0.10.0",
"rand_distr",
"rayon",
@@ -4857,13 +4881,13 @@ dependencies = [
[[package]]
name = "snarkos-node-bft-events"
-version = "4.8.1"
+version = "4.9.0"
dependencies = [
"anyhow",
"bytes",
"indexmap 2.14.0",
"proptest",
- "rand 0.10.1",
+ "rand 0.10.2",
"rand_chacha 0.10.0",
"serde",
"snarkos-node-bft-events",
@@ -4878,26 +4902,26 @@ dependencies = [
[[package]]
name = "snarkos-node-bft-ledger-service"
-version = "4.8.1"
+version = "4.9.0"
dependencies = [
"anyhow",
"async-trait",
"indexmap 2.14.0",
"locktick",
"parking_lot",
- "rand 0.10.1",
+ "rand 0.10.2",
"rayon",
"snarkos-node-metrics",
"snarkos-utilities",
"snarkvm",
- "thiserror 2.0.18",
+ "thiserror 2.0.19",
"tokio",
"tracing",
]
[[package]]
name = "snarkos-node-bft-storage-service"
-version = "4.8.1"
+version = "4.9.0"
dependencies = [
"aleo-std",
"anyhow",
@@ -4911,7 +4935,7 @@ dependencies = [
[[package]]
name = "snarkos-node-cdn"
-version = "4.8.1"
+version = "4.9.0"
dependencies = [
"anyhow",
"bincode",
@@ -4933,7 +4957,7 @@ dependencies = [
[[package]]
name = "snarkos-node-consensus"
-version = "4.8.1"
+version = "4.9.0"
dependencies = [
"aleo-std",
"anyhow",
@@ -4960,7 +4984,7 @@ dependencies = [
[[package]]
name = "snarkos-node-metrics"
-version = "4.8.1"
+version = "4.9.0"
dependencies = [
"built",
"locktick",
@@ -4974,7 +4998,7 @@ dependencies = [
[[package]]
name = "snarkos-node-network"
-version = "4.8.1"
+version = "4.9.0"
dependencies = [
"anyhow",
"built",
@@ -4985,14 +5009,14 @@ dependencies = [
"snarkos-node-network",
"snarkos-node-tcp",
"snarkvm",
- "socket2 0.6.4",
+ "socket2 0.6.5",
"tokio",
"tracing",
]
[[package]]
name = "snarkos-node-rest"
-version = "4.8.1"
+version = "4.9.0"
dependencies = [
"aleo-std",
"anyhow",
@@ -5007,7 +5031,7 @@ dependencies = [
"lru 0.16.4",
"once_cell",
"parking_lot",
- "rand 0.10.1",
+ "rand 0.10.2",
"rayon",
"serde",
"serde_json",
@@ -5028,7 +5052,7 @@ dependencies = [
[[package]]
name = "snarkos-node-router"
-version = "4.8.1"
+version = "4.9.0"
dependencies = [
"anyhow",
"async-trait",
@@ -5040,7 +5064,7 @@ dependencies = [
"locktick",
"parking_lot",
"peak_alloc",
- "rand 0.10.1",
+ "rand 0.10.2",
"rand_chacha 0.10.0",
"rayon",
"snarkos-account",
@@ -5064,7 +5088,7 @@ dependencies = [
[[package]]
name = "snarkos-node-router-messages"
-version = "4.8.1"
+version = "4.9.0"
dependencies = [
"bytes",
"proptest",
@@ -5080,7 +5104,7 @@ dependencies = [
[[package]]
name = "snarkos-node-sync"
-version = "4.8.1"
+version = "4.9.0"
dependencies = [
"anyhow",
"futures",
@@ -5088,7 +5112,7 @@ dependencies = [
"itertools 0.14.0",
"locktick",
"parking_lot",
- "rand 0.10.1",
+ "rand 0.10.2",
"serde",
"snarkos-node-bft-ledger-service",
"snarkos-node-metrics",
@@ -5098,7 +5122,7 @@ dependencies = [
"snarkos-node-sync-locators",
"snarkos-node-tcp",
"snarkvm",
- "thiserror 2.0.18",
+ "thiserror 2.0.19",
"tokio",
"tracing",
"tracing-subscriber",
@@ -5106,7 +5130,7 @@ dependencies = [
[[package]]
name = "snarkos-node-sync-communication-service"
-version = "4.8.1"
+version = "4.9.0"
dependencies = [
"async-trait",
"tokio",
@@ -5114,7 +5138,7 @@ dependencies = [
[[package]]
name = "snarkos-node-sync-locators"
-version = "4.8.1"
+version = "4.9.0"
dependencies = [
"anyhow",
"indexmap 2.14.0",
@@ -5125,7 +5149,7 @@ dependencies = [
[[package]]
name = "snarkos-node-tcp"
-version = "4.8.1"
+version = "4.9.0"
dependencies = [
"anyhow",
"async-trait",
@@ -5135,7 +5159,7 @@ dependencies = [
"once_cell",
"parking_lot",
"snarkos-node-metrics",
- "thiserror 2.0.18",
+ "thiserror 2.0.19",
"tokio",
"tokio-util",
"tracing",
@@ -5143,7 +5167,7 @@ dependencies = [
[[package]]
name = "snarkos-utilities"
-version = "4.8.1"
+version = "4.9.0"
dependencies = [
"anyhow",
"locktick",
@@ -5154,13 +5178,13 @@ dependencies = [
[[package]]
name = "snarkvm"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e35ef2036e93bbfa2342f8c53c134f84d00f4e6cf008c577c88c88f95acdeb9"
+checksum = "dea37705e6ba5f11a8da0f61393ba14aa320fcaf9fb410dff835c396ba20283a"
dependencies = [
"anyhow",
"dotenvy",
- "rand 0.10.1",
+ "rand 0.10.2",
"serde_json",
"snarkvm-algorithms",
"snarkvm-circuit",
@@ -5180,9 +5204,9 @@ dependencies = [
[[package]]
name = "snarkvm-algorithms"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9324633a2ca8e6c1796d7d8d5a65f21aa03545acc7552db05d5b54ae6895093d"
+checksum = "5c2d54fee12c2bb1c58ef9a46be861f4b0b07285046b67918ce8ca61757d9a70"
dependencies = [
"aleo-std",
"anyhow",
@@ -5194,7 +5218,7 @@ dependencies = [
"indexmap 2.14.0",
"itertools 0.14.0",
"num-traits",
- "rand 0.10.1",
+ "rand 0.10.2",
"rayon",
"serde",
"sha2 0.11.0",
@@ -5204,26 +5228,26 @@ dependencies = [
"snarkvm-fields",
"snarkvm-parameters",
"snarkvm-utilities",
- "thiserror 2.0.18",
+ "thiserror 2.0.19",
]
[[package]]
name = "snarkvm-algorithms-cuda"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d2a4eabeecdeec7d69a5e32a21ec94fad0e1addedf6ed9632f0e096a85929f6"
+checksum = "e9e5bbfecfeae202f2be87042979cd898fda3fd31af6fa4a544987a029764373"
dependencies = [
"blst",
"cc",
"sppark",
- "which 8.0.4",
+ "which 8.0.5",
]
[[package]]
name = "snarkvm-circuit"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c3100c3d4a0950ccbfdee58640e3da7e6ea421883f26d89e684ce2acd0a8a8b"
+checksum = "2e67a5337192cb95713736c724e4209c82b73c8ca2208033b80efc9d9e0d1dfe"
dependencies = [
"snarkvm-circuit-account",
"snarkvm-circuit-algorithms",
@@ -5236,9 +5260,9 @@ dependencies = [
[[package]]
name = "snarkvm-circuit-account"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70ece1b5d533eb975a4971b1cd113583db4b1503f706f5c000dd4aa29d6adb07"
+checksum = "f096425d431e6f3b6bd190756016464cee1627435d043ee1edcd2fd368a96e5d"
dependencies = [
"snarkvm-circuit-network",
"snarkvm-circuit-types",
@@ -5247,9 +5271,9 @@ dependencies = [
[[package]]
name = "snarkvm-circuit-algorithms"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0a9ffedabd1d2a20ef1c776174235a460ba5eb92a38ee2ece59b565045371829"
+checksum = "3620f97ce1946468e0771bf6f5c2cd4cad53835e65a6369556813e364e61f26e"
dependencies = [
"snarkvm-circuit-types",
"snarkvm-console-algorithms",
@@ -5258,9 +5282,9 @@ dependencies = [
[[package]]
name = "snarkvm-circuit-collections"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc3060cfc0d863fd1d3244b2c722864b5b54b36c1b252c27f285d6e20bdb6147"
+checksum = "2eb124eb7120d08fdf493248a1b0a992549b6c3c0d6a5952f7ccd4cfb39f9e88"
dependencies = [
"snarkvm-circuit-algorithms",
"snarkvm-circuit-types",
@@ -5269,14 +5293,14 @@ dependencies = [
[[package]]
name = "snarkvm-circuit-environment"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e4c7ab151b346df065a7e7eed58ae88f34d81bcd2443957140056a83215d41b"
+checksum = "eedb2cc4f93b8ecda8c1f05a4faaac10e55127f0fc09d7749dfc610d4bcbaa0f"
dependencies = [
"anyhow",
"indexmap 2.14.0",
"itertools 0.14.0",
- "nom",
+ "nom 7.1.3",
"num-traits",
"smallvec",
"snarkvm-algorithms",
@@ -5285,20 +5309,20 @@ dependencies = [
"snarkvm-curves",
"snarkvm-fields",
"snarkvm-utilities",
- "thiserror 2.0.18",
+ "thiserror 2.0.19",
]
[[package]]
name = "snarkvm-circuit-environment-witness"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f58e027011380f20228c56366d578f0a1a768dd93a4199c54676f55b4486101a"
+checksum = "a2351fbdbb775fc850617ab0043b1b0033a47a6151b5bf516cc49c3c883b08a3"
[[package]]
name = "snarkvm-circuit-network"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e8f8b926e687ad79726fc5f100fd94296eb409473aed122d3defae3ff8d4d31"
+checksum = "292c9506df0d1ec32dd4ef58d52e56716b6ccd3ca4ce4769852afeeb47856b5e"
dependencies = [
"snarkvm-circuit-algorithms",
"snarkvm-circuit-collections",
@@ -5308,9 +5332,9 @@ dependencies = [
[[package]]
name = "snarkvm-circuit-program"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89218041e04e1fbca9b0dc26cb1124cc03d3c3fe02b83fe578ff9effb3fb59fb"
+checksum = "df200abab8279b37fc386fb419e0bcdb83efa8ba291e8d62a893427d7f23d4b1"
dependencies = [
"snarkvm-circuit-account",
"snarkvm-circuit-algorithms",
@@ -5323,9 +5347,9 @@ dependencies = [
[[package]]
name = "snarkvm-circuit-types"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "46e31ebf0f2725c9e04a279ae9093858aa2b20eb6c287d3b653d584b638f5540"
+checksum = "d2f0060b2c07f80a26b0f9547ef040f47b1c37c6aa5adb1983a19c144e091518"
dependencies = [
"snarkvm-circuit-environment",
"snarkvm-circuit-types-address",
@@ -5339,9 +5363,9 @@ dependencies = [
[[package]]
name = "snarkvm-circuit-types-address"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eee5cbebc2b4eb00b690699167cf70ef0dc74da8509c9c0b93368b26d03bcba5"
+checksum = "f104b0d3c7637f37d8abeb743c8ba31a518127ce0117b190879e0fac48c933d0"
dependencies = [
"snarkvm-circuit-environment",
"snarkvm-circuit-types-boolean",
@@ -5353,9 +5377,9 @@ dependencies = [
[[package]]
name = "snarkvm-circuit-types-boolean"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5bf2299aafd7df0695a8a9816d689bbae134227bc5a4d30f9f2f33234d706427"
+checksum = "4ad042be95bb0b5c9545ac3a12f9f3fde852f1167481d47d1c13a3aae3cdcdb9"
dependencies = [
"snarkvm-circuit-environment",
"snarkvm-console-types-boolean",
@@ -5363,9 +5387,9 @@ dependencies = [
[[package]]
name = "snarkvm-circuit-types-field"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2122f8eaa4eff3dd62d9fffebcb2f455e157d264b45dca12c4be537acb7d5b7c"
+checksum = "65d5d37de0ae246a7f734c1d897c4b8eb9f5df7a1fdddf420ac65d3b64a4bcf5"
dependencies = [
"snarkvm-circuit-environment",
"snarkvm-circuit-types-boolean",
@@ -5374,9 +5398,9 @@ dependencies = [
[[package]]
name = "snarkvm-circuit-types-group"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7d5a5e1863624072d61d6a3cc3c1bae47839ff819439f132e574b866a5de9d98"
+checksum = "1dcf26d059063dc16a37f3a923583c66899ec13d52a0e86c8fa141d78e776e02"
dependencies = [
"snarkvm-circuit-environment",
"snarkvm-circuit-types-boolean",
@@ -5387,9 +5411,9 @@ dependencies = [
[[package]]
name = "snarkvm-circuit-types-integers"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e1fc42313949a3895a5ab91b4ebb5ff02b11bceb41235f82b37c84f8c0ad763"
+checksum = "b4d83fd4b20ee4f964bb1c40459d67e0741872f56197898b45df8e86e639926c"
dependencies = [
"snarkvm-circuit-environment",
"snarkvm-circuit-types-boolean",
@@ -5400,9 +5424,9 @@ dependencies = [
[[package]]
name = "snarkvm-circuit-types-scalar"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a2fb89773ab0afed9ef9042c10c52d6f0b7589bb57e11444135d12d53026617"
+checksum = "9a8b1a4e94e49487f02d8b308e03d6c56f50dbb5a1441ad3a74f04f6ba745b4b"
dependencies = [
"snarkvm-circuit-environment",
"snarkvm-circuit-types-boolean",
@@ -5412,9 +5436,9 @@ dependencies = [
[[package]]
name = "snarkvm-circuit-types-string"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b3f0b44d842e53af04afceff1629b5945be0e281c92ddb5e72c7ae0c49c3b14"
+checksum = "665506fbf883d0aa0b152b06b324a609841742064a88dc9a355753ed90da57d8"
dependencies = [
"snarkvm-circuit-environment",
"snarkvm-circuit-types-boolean",
@@ -5425,9 +5449,9 @@ dependencies = [
[[package]]
name = "snarkvm-console"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d34c436414e7c2de53f18704a841af7c818101cd87337fd25a4c8bf69b13e741"
+checksum = "b611f443daa6140f2c5bbdf5d184567f2b88cf73be5d7160500c3a5d56ca209f"
dependencies = [
"snarkvm-console-account",
"snarkvm-console-algorithms",
@@ -5439,9 +5463,9 @@ dependencies = [
[[package]]
name = "snarkvm-console-account"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f15550d188aa870e051b6a40d6868eb01d9367546fbc1c7878c195b4ab8a680e"
+checksum = "9adbf603ba5930c02d18bdd748c14418c2bbaf4bf6041f786571d510eac5db21"
dependencies = [
"bs58",
"snarkvm-console-network",
@@ -5451,13 +5475,14 @@ dependencies = [
[[package]]
name = "snarkvm-console-algorithms"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a25f8b9b2b39d0a9a94afb2e711cb7540f7b58483ebea10a42610582604bad44"
+checksum = "bb693083ea8c9d1ed2a71880730b7251410aa45003602c16f89fbcda8b9ba860"
dependencies = [
"blake2s_simd",
"hex",
"k256",
+ "rayon",
"serde",
"smallvec",
"snarkvm-console-types",
@@ -5468,9 +5493,9 @@ dependencies = [
[[package]]
name = "snarkvm-console-collections"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9fa3af2a6ea79048d641561b8fa1522ea2658f7f2e8c0cf2c94a7f126529b786"
+checksum = "ad460b844a736bae3f4fadb393313d2c2c7cdbdce3d228d8c339cec387251011"
dependencies = [
"aleo-std",
"locktick",
@@ -5483,9 +5508,9 @@ dependencies = [
[[package]]
name = "snarkvm-console-network"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "71c4ae1a3511bd3fc8eda645c4090f48b4242bc40f5accc67cf1da5c26393fef"
+checksum = "97bc1b423cf6304ab4f35a71b995be7bf9c5429bed1f92578a212c933b161f84"
dependencies = [
"anyhow",
"enum-iterator",
@@ -5504,16 +5529,16 @@ dependencies = [
[[package]]
name = "snarkvm-console-network-environment"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9abb04b58b02f1ae1fe308bc89cf8521023bc5836bf00de43dcf927672dc29d5"
+checksum = "272b60c9c736f7cc4aec0ad66ff960ddaa575657e4c5fcc6a69207ba60fb19cc"
dependencies = [
"anyhow",
"bech32",
"itertools 0.14.0",
- "nom",
+ "nom 7.1.3",
"num-traits",
- "rand 0.10.1",
+ "rand 0.10.2",
"serde",
"snarkvm-curves",
"snarkvm-fields",
@@ -5523,9 +5548,9 @@ dependencies = [
[[package]]
name = "snarkvm-console-program"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2d7a3b00538fd345023f76216b95a40e09521ac30c23eab5e10fccc8bffdbc6c"
+checksum = "26501fe0d11bb0601267efb42ca51c495ad86793878a1747cf16ed097b0f1342"
dependencies = [
"enum-iterator",
"enum_index",
@@ -5545,9 +5570,9 @@ dependencies = [
[[package]]
name = "snarkvm-console-types"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ffef5883feaf28a35cc3576952b13553e4b32817067c44ca458459650929d09d"
+checksum = "da6c236d32f2f37b430d4d6ef134ff9395cb35f16c8af6bd4e0fb388ae1195f7"
dependencies = [
"snarkvm-console-network-environment",
"snarkvm-console-types-address",
@@ -5561,9 +5586,9 @@ dependencies = [
[[package]]
name = "snarkvm-console-types-address"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bbc8bb7d753d9cb569ee0c451793d1aa3150055fd04b19d2f1afd2ed0d9eb025"
+checksum = "59ee19a161735abffdea99051ed7200c0fae13201ab57dc2f375a9403bd1bb11"
dependencies = [
"snarkvm-console-network-environment",
"snarkvm-console-types-boolean",
@@ -5573,18 +5598,18 @@ dependencies = [
[[package]]
name = "snarkvm-console-types-boolean"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32fb594e3b6260d237b41b160d5522a5d7e8faf845066db906c7340779c4d850"
+checksum = "649f21d68e74d94c28936fd01b53e2acd7d26c31d01a894497bbf6f41b05c4bd"
dependencies = [
"snarkvm-console-network-environment",
]
[[package]]
name = "snarkvm-console-types-field"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d3e36c42202308bbf81a605670e3417f4c04817954026c6f3de273e091cebac"
+checksum = "4a004d12492258c3e6e9847d8b6b2462c3c03721c5f643c338a93f08f97ef3ad"
dependencies = [
"snarkvm-console-network-environment",
"snarkvm-console-types-boolean",
@@ -5593,9 +5618,9 @@ dependencies = [
[[package]]
name = "snarkvm-console-types-group"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7d042f829548154d28bef6af8dd00bbb731cc350c72a133db52ab7e0365687f3"
+checksum = "977fcf939d3d2f1398d041ede04dd1ed4eed82febc6ea91e41e0ef26d1a11b01"
dependencies = [
"snarkvm-console-network-environment",
"snarkvm-console-types-boolean",
@@ -5605,9 +5630,9 @@ dependencies = [
[[package]]
name = "snarkvm-console-types-integers"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6bfc35c8b39c6688edcbeed60172e43a6a07e6676b06343901b5e306e7579e07"
+checksum = "1ceaca4e72d54890d115a05d3798c5d3d8e785aedf471cb5d47aa80ac3a7169b"
dependencies = [
"snarkvm-console-network-environment",
"snarkvm-console-types-boolean",
@@ -5617,9 +5642,9 @@ dependencies = [
[[package]]
name = "snarkvm-console-types-scalar"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "704c2654e977afdc9682e2a4967f6cd7ee24019cb80744cc80c0e6df70508265"
+checksum = "50234ae5b7cbeb042d5c768d821c555b649df36f3c0bbf5d2d053639a67274b0"
dependencies = [
"snarkvm-console-network-environment",
"snarkvm-console-types-boolean",
@@ -5629,9 +5654,9 @@ dependencies = [
[[package]]
name = "snarkvm-console-types-string"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c846bbc6076b0ce20e8fb1198a04743ef342a7d57e1845d142627abef396702b"
+checksum = "33b42f0e1b1730ab805ba02c4a2f30a31bdd62600301d23913399675aa896346"
dependencies = [
"snarkvm-console-network-environment",
"snarkvm-console-types-boolean",
@@ -5641,41 +5666,41 @@ dependencies = [
[[package]]
name = "snarkvm-curves"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "884289cd786abe0e31e97fcf9c4dbc6cc988cd47da8ec3854e4f061af1f1e325"
+checksum = "2c7e845865d40b36069fa76ef88a9e78f7f9c33f64c4e19f7cfd601922fab702"
dependencies = [
- "rand 0.10.1",
+ "rand 0.10.2",
"rustc_version",
"serde",
"snarkvm-fields",
"snarkvm-utilities",
- "thiserror 2.0.18",
+ "thiserror 2.0.19",
]
[[package]]
name = "snarkvm-fields"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d0c322a2c9b7222e7d0fed1559a5a5104b272b364eebec31499b1b3aba00c95c"
+checksum = "4121086d60733b44bba6a7cb56c8b740d38257326bc86bc74ec96b92b6952c47"
dependencies = [
"aleo-std",
"anyhow",
"itertools 0.14.0",
"num-traits",
- "rand 0.10.1",
+ "rand 0.10.2",
"rayon",
"serde",
"snarkvm-utilities",
- "thiserror 2.0.18",
+ "thiserror 2.0.19",
"zeroize",
]
[[package]]
name = "snarkvm-ledger"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b77772aded094332fab5fe488bc0280f2f94e78aeea2b87fcf2be0cb49444ed"
+checksum = "1e8509cbe5ca45ce545db05a3fb706422770c01515f2f92065faaf7b10a30a52"
dependencies = [
"aleo-std",
"anyhow",
@@ -5684,7 +5709,7 @@ dependencies = [
"locktick",
"lru 0.16.4",
"parking_lot",
- "rand 0.10.1",
+ "rand 0.10.2",
"rand_chacha 0.10.0",
"rayon",
"snarkvm-circuit",
@@ -5700,19 +5725,19 @@ dependencies = [
"snarkvm-synthesizer",
"snarkvm-synthesizer-error",
"snarkvm-utilities",
- "thiserror 2.0.18",
+ "thiserror 2.0.19",
"time",
"tracing",
]
[[package]]
name = "snarkvm-ledger-authority"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5eb5d31f0e2a414aa8c2f40e4d80ebacde351adda4171b7dcd68b0cbe8ca10b0"
+checksum = "8e32462f86a9cb94444976c434c527ed5b10759d434e03f1196c3b02a2823b53"
dependencies = [
"anyhow",
- "rand 0.10.1",
+ "rand 0.10.2",
"serde_json",
"snarkvm-console",
"snarkvm-ledger-narwhal-subdag",
@@ -5720,9 +5745,9 @@ dependencies = [
[[package]]
name = "snarkvm-ledger-block"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "108da50438afee00396cb2c48419662ec2da8e771ec3a9f1a5b1ae794be98725"
+checksum = "23a29e2ba2899708c5ed75c38fa240b90ef1c93b09666d294f7d70d7f0fd6c7d"
dependencies = [
"anyhow",
"indexmap 2.14.0",
@@ -5745,14 +5770,14 @@ dependencies = [
[[package]]
name = "snarkvm-ledger-committee"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b77dbf03fcfd0fa38bed6bc0cb9816fbb51d343db23346e56462c6c43c3e0083"
+checksum = "6c6eb6a7fde1b507454297556a66db81423201d351e1806c13408ee94cde0889"
dependencies = [
"anyhow",
"indexmap 2.14.0",
"proptest",
- "rand 0.10.1",
+ "rand 0.10.2",
"rand_chacha 0.10.0",
"rand_distr",
"rayon",
@@ -5765,9 +5790,9 @@ dependencies = [
[[package]]
name = "snarkvm-ledger-narwhal"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a3f82a9d27b7bad806115fa1dddaf043c1e168d8d4bc54fead73f98a472b4419"
+checksum = "4e5c565c1efc362a10db86b29a3c1337ecb66a028b3e1d6b8ff2318640e4233b"
dependencies = [
"snarkvm-ledger-narwhal-batch-certificate",
"snarkvm-ledger-narwhal-batch-header",
@@ -5779,9 +5804,9 @@ dependencies = [
[[package]]
name = "snarkvm-ledger-narwhal-batch-certificate"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da425de42fdf84271ac1268d68ddd8d4f6bfc46b2804d754d8aee7fea46938cf"
+checksum = "f2239748ed6c1259ccc2ee221a2efc0c7567f9c4e7cacf5d3580a6423bbe5438"
dependencies = [
"indexmap 2.14.0",
"rayon",
@@ -5793,9 +5818,9 @@ dependencies = [
[[package]]
name = "snarkvm-ledger-narwhal-batch-header"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f15ab0b561a2a882c95cd961f7fdaf4370cbf8d0590a726a9e6cf8c4ba8b4f5"
+checksum = "685d70bba106e3dc276e7a056542b5f0682ba192bba9afde47c2c0cd55655fc7"
dependencies = [
"indexmap 2.14.0",
"rayon",
@@ -5806,9 +5831,9 @@ dependencies = [
[[package]]
name = "snarkvm-ledger-narwhal-data"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c15656c4a89d7ab71d1883ad16e62148c82b30f335af8a25146ad3a6db4d5703"
+checksum = "2d8111c3baf730cb815b594fccefab73d52a7621e99a65c6298f98e9248db7a4"
dependencies = [
"bytes",
"serde_json",
@@ -5818,9 +5843,9 @@ dependencies = [
[[package]]
name = "snarkvm-ledger-narwhal-subdag"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4200e2f5f7a4312673123650a508148977e3d3695e49df84cc7a8420c428f5be"
+checksum = "dc4e3831d8473ea7f5239f69a417c6bfc7d7a7531c544957b1ea94d9a7c75cc7"
dependencies = [
"indexmap 2.14.0",
"rayon",
@@ -5834,9 +5859,9 @@ dependencies = [
[[package]]
name = "snarkvm-ledger-narwhal-transmission"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "133fa30f6a0c37cb027361b7630216f501bee08fd7a616b5a431afebaa52f798"
+checksum = "46c2f87d46761bf5408f08f81c9a55adc09f84b58121344d892363efd3f246c9"
dependencies = [
"bytes",
"serde_json",
@@ -5848,9 +5873,9 @@ dependencies = [
[[package]]
name = "snarkvm-ledger-narwhal-transmission-id"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "721fe467857f3f85aed85958a72fd3ddf333c1aa60bc8fca2c0770e1915682c6"
+checksum = "47c7159701d1dc29c891bcfff338471fb1c331923a85338650c499a42dff52dd"
dependencies = [
"snarkvm-console",
"snarkvm-ledger-puzzle",
@@ -5858,9 +5883,9 @@ dependencies = [
[[package]]
name = "snarkvm-ledger-puzzle"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0df3fdd09d494e649609f066155792e81ce57c218af0d250c3af963e878bdf2e"
+checksum = "270240b6d6f04754b6d5fd22db59448b14a80fff11d92ffb897edaa169f58f08"
dependencies = [
"aleo-std",
"anyhow",
@@ -5869,7 +5894,7 @@ dependencies = [
"locktick",
"lru 0.16.4",
"parking_lot",
- "rand 0.10.1",
+ "rand 0.10.2",
"rand_chacha 0.10.0",
"rayon",
"serde_json",
@@ -5880,9 +5905,9 @@ dependencies = [
[[package]]
name = "snarkvm-ledger-puzzle-epoch"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75d413a7b9eeecd59bfbfe088fa9177cdc0aea2004e66be4acd7d66314d3af91"
+checksum = "a3192db98219ba7abc3a11542c882a481efc3061973c38983aa67416e5d011a0"
dependencies = [
"aleo-std",
"anyhow",
@@ -5891,7 +5916,7 @@ dependencies = [
"locktick",
"lru 0.16.4",
"parking_lot",
- "rand 0.10.1",
+ "rand 0.10.2",
"rand_chacha 0.10.0",
"rayon",
"snarkvm-circuit",
@@ -5904,9 +5929,9 @@ dependencies = [
[[package]]
name = "snarkvm-ledger-query"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f83e392b4439236341c4a376246fa4cf5fb8ca368f69f09aceab04dfa515f7f8"
+checksum = "61045a320a7fb64e43ecf3aa588277f0d7a9e5803c55d5e1b4d9bb6dea953fb2"
dependencies = [
"anyhow",
"async-trait",
@@ -5922,9 +5947,9 @@ dependencies = [
[[package]]
name = "snarkvm-ledger-store"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f780376da38c5efbdcf137a05d96d3cf492b87d30f3d8a5c7eecf8c48273273b"
+checksum = "a8dd8b8f01f14ef8683ec7ac8eaa23a18d78f7f7f93bc697c82df1eecdbc6a4b"
dependencies = [
"aleo-std-storage",
"anyhow",
@@ -5952,9 +5977,9 @@ dependencies = [
[[package]]
name = "snarkvm-ledger-test-helpers"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "742cb88ef877f5e2d8a89ec464f524225ce98af2ba2bff14bca227c615793424"
+checksum = "5013b0531bdf09281334d9ba4d02e738809054b1fa98add30973ba70d4799634"
dependencies = [
"aleo-std",
"anyhow",
@@ -5971,18 +5996,18 @@ dependencies = [
[[package]]
name = "snarkvm-metrics"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3557fc86df87477d75d1ec242331d419e6cdb32b0903abc4682ee81a4df92156"
+checksum = "9b344c526b425d969737e5ddc13e505e447333834c76730d9ab9b9e8978e15c2"
dependencies = [
"metrics",
]
[[package]]
name = "snarkvm-parameters"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c6560dfd95e2963b86baae31222609cb7e5fcc734dbfbf5993559c56a6c6fa51"
+checksum = "3199f958582fccc99b949b8f8ba9c5da993f54d5281a62620fca7c25686e1465"
dependencies = [
"aleo-std",
"anyhow",
@@ -5993,44 +6018,44 @@ dependencies = [
"locktick",
"parking_lot",
"paste",
- "rand 0.10.1",
+ "rand 0.10.2",
"serde_json",
"sha2 0.11.0",
"snarkvm-curves",
"snarkvm-utilities",
- "thiserror 2.0.18",
+ "thiserror 2.0.19",
"ureq",
]
[[package]]
name = "snarkvm-slipstream-plugin-interface"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96a901fe3af04cc7ada125c5232a3d05bfa745b087ca0618c475182234a72f6c"
+checksum = "eb1e149ae777ba08668697a8d2b6958e1357a3d06a0dad71c8df825a85db0fa7"
dependencies = [
"anyhow",
]
[[package]]
name = "snarkvm-slipstream-plugin-manager"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b938d68017db78a5244f5e9e0caf5b923aaf1e63e8c863e4b94718582340d103"
+checksum = "59035a93576fc397540196e2e0ead9343e7d45125a01a2c930dc72e7fd0ecc63"
dependencies = [
"anyhow",
"json5",
"libloading",
"serde_json",
"snarkvm-slipstream-plugin-interface",
- "thiserror 2.0.18",
+ "thiserror 2.0.19",
"tracing",
]
[[package]]
name = "snarkvm-synthesizer"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "800fd59b4942e3ad2d06982f8f531a80706ca0fdd72f92a1e255cf47747dac20"
+checksum = "7224e637c7c9816bee7d3b2b844b558810fc716267d06fec1c08b9fda2696750"
dependencies = [
"aleo-std",
"anyhow",
@@ -6039,7 +6064,7 @@ dependencies = [
"locktick",
"lru 0.16.4",
"parking_lot",
- "rand 0.10.1",
+ "rand 0.10.2",
"rayon",
"serde_json",
"snarkvm-algorithms",
@@ -6065,22 +6090,22 @@ dependencies = [
[[package]]
name = "snarkvm-synthesizer-error"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "052014a8b414daaf1c4ba5582e9ddf8505b2c28ea8c09affd7c4b75a3bbfdcda"
+checksum = "846083cbef396e56e9df9fdfe6cb5382c1cc2404cc83b498a1cf2d7c2fd2e860"
dependencies = [
"anyhow",
"snarkvm-circuit-environment",
"snarkvm-console-network",
"snarkvm-console-program",
- "thiserror 2.0.18",
+ "thiserror 2.0.19",
]
[[package]]
name = "snarkvm-synthesizer-process"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26e0212359bcc226fa24019d24be728e414b00d5846218129adcb8d4ff74ae78"
+checksum = "b55f65479f0c1ab873f6e941b08cc027a0f92b40c6815cb116c793d7910bd7b1"
dependencies = [
"aleo-std",
"colored 3.1.1",
@@ -6088,7 +6113,7 @@ dependencies = [
"itertools 0.14.0",
"locktick",
"parking_lot",
- "rand 0.10.1",
+ "rand 0.10.2",
"rand_chacha 0.10.0",
"rayon",
"serde_json",
@@ -6106,14 +6131,14 @@ dependencies = [
[[package]]
name = "snarkvm-synthesizer-program"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14344567bdaac5d8aaa82e1e1fc458e448ec53f59b62d7c6808bfe60e39981c0"
+checksum = "d568a98d96a400b4da9057a53c3f6f557c16d4533181a72e0e1d0e1e29e76c11"
dependencies = [
"enum-iterator",
"indexmap 2.14.0",
"paste",
- "rand 0.10.1",
+ "rand 0.10.2",
"rand_chacha 0.10.0",
"rayon",
"serde_json",
@@ -6128,9 +6153,9 @@ dependencies = [
[[package]]
name = "snarkvm-synthesizer-snark"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "71052ce457f0ec7fefae8d3fb07b21a0cc3007c0956f6cd2a3b247113c393dc3"
+checksum = "82a0ab870d9ced282db29593e69021ccd4f11edc67580e35530daac2ac054444"
dependencies = [
"bincode",
"serde_json",
@@ -6142,9 +6167,9 @@ dependencies = [
[[package]]
name = "snarkvm-utilities"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ee1c9ddbc365e6575e3991bf191d8c0c42d9e55ba3963e7819ef047d77462e25"
+checksum = "01620a5549a87084e24478a253d98965277f4d963e14b462ad7eb57f698b6081"
dependencies = [
"aleo-std",
"anyhow",
@@ -6152,27 +6177,27 @@ dependencies = [
"colored 3.1.1",
"num-bigint",
"num_cpus",
- "rand 0.10.1",
+ "rand 0.10.2",
"rand_xorshift 0.5.0",
"rayon",
"serde",
"serde_json",
"smol_str 0.2.2",
"snarkvm-utilities-derives",
- "thiserror 2.0.18",
+ "thiserror 2.0.19",
"tracing",
"zeroize",
]
[[package]]
name = "snarkvm-utilities-derives"
-version = "4.8.1"
+version = "4.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a757dd7c952d69e6385cd0621c5c8ee7d4ab874f3ddc34b62a8d6bbfc56ae9ce"
+checksum = "e3e90f015f504dc18b7faecc6e2056b90178af6511d4b15e412e76826635eedb"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
@@ -6187,9 +6212,9 @@ dependencies = [
[[package]]
name = "socket2"
-version = "0.6.4"
+version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51"
+checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4"
dependencies = [
"libc",
"windows-sys 0.61.2",
@@ -6260,9 +6285,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "78ad9e09554f0456d67a69c1584c9798ba733a5b50349a6c0d0948710523922d"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
+ "quote 1.0.47",
"structmeta-derive 0.2.0",
- "syn 2.0.118",
+ "syn 2.0.119",
]
[[package]]
@@ -6272,9 +6297,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2e1575d8d40908d70f6fd05537266b90ae71b15dbbe7a8b7dffa2b759306d329"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
+ "quote 1.0.47",
"structmeta-derive 0.3.0",
- "syn 2.0.118",
+ "syn 2.0.119",
]
[[package]]
@@ -6284,8 +6309,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a60bcaff7397072dca0017d1db428e30d5002e00b6847703e2e42005c95fbe00"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
@@ -6295,8 +6320,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "152a0b65a590ff6c3da95cabe2353ee04e6167c896b28e3b14478c2636c922fc"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
@@ -6316,8 +6341,8 @@ checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664"
dependencies = [
"heck",
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
@@ -6344,18 +6369,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
+ "quote 1.0.47",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.119"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
+dependencies = [
+ "proc-macro2",
+ "quote 1.0.47",
"unicode-ident",
]
[[package]]
name = "syn"
-version = "2.0.118"
+version = "3.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422"
+checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
+ "quote 1.0.47",
"unicode-ident",
]
@@ -6384,8 +6420,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
@@ -6404,7 +6440,7 @@ version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b"
dependencies = [
- "bitflags 2.13.0",
+ "bitflags 2.13.1",
"core-foundation 0.9.4",
"system-configuration-sys",
]
@@ -6419,6 +6455,17 @@ dependencies = [
"libc",
]
+[[package]]
+name = "tar"
+version = "0.4.46"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f6221d9a6003c78398e3b239969f352578258df48c8eb051caadae0015bc840"
+dependencies = [
+ "filetime",
+ "libc",
+ "xattr",
+]
+
[[package]]
name = "tempfile"
version = "3.27.0"
@@ -6438,7 +6485,7 @@ version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9048a889effe34a5cddee0af7f53285198b16dca3be510858d38dfdb3e62a04e"
dependencies = [
- "bitflags 2.13.0",
+ "bitflags 2.13.1",
"parking_lot",
"rustix 1.1.4",
"signal-hook",
@@ -6452,7 +6499,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d4ea810f0692f9f51b382fff5893887bb4580f5fa246fde546e0b13e7fcee662"
dependencies = [
"fnv",
- "nom",
+ "nom 7.1.3",
"phf",
"phf_codegen",
]
@@ -6480,7 +6527,7 @@ checksum = "4676b37242ccbd1aabf56edb093a4827dc49086c0ffd764a5705899e0f35f8f7"
dependencies = [
"anyhow",
"base64 0.22.1",
- "bitflags 2.13.0",
+ "bitflags 2.13.1",
"fancy-regex",
"filedescriptor",
"finl_unicode",
@@ -6532,8 +6579,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c26ef8b00e4d382e59f6a8ddb3cd790b3a5bb29f21a358a9a69ea2f29f13f27b"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
@@ -6542,7 +6589,7 @@ version = "0.2.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "944ad38adcbb71eaa682c56bceeb079e4ca82b4b3edc2a0fde5cb297b77dac8d"
dependencies = [
- "syn 2.0.118",
+ "syn 2.0.119",
"test-log-core",
]
@@ -6553,9 +6600,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b8361c808554228ad09bfed70f5c823caf8a3450b6881cc3a38eb57e8c08c1d9"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
+ "quote 1.0.47",
"structmeta 0.2.0",
- "syn 2.0.118",
+ "syn 2.0.119",
]
[[package]]
@@ -6566,9 +6613,9 @@ checksum = "8f7fd1eb9efb36942b85a290c4201d317980fe09bc88d34dd48aaaae03075c6a"
dependencies = [
"derive-ex",
"proc-macro2",
- "quote 1.0.46",
+ "quote 1.0.47",
"structmeta 0.3.0",
- "syn 2.0.118",
+ "syn 2.0.119",
]
[[package]]
@@ -6582,11 +6629,11 @@ dependencies = [
[[package]]
name = "thiserror"
-version = "2.0.18"
+version = "2.0.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
+checksum = "09a43598840e33d5b0331f38c5e30d13bb11c11210a4b58f0d9b18a5a5eefcd9"
dependencies = [
- "thiserror-impl 2.0.18",
+ "thiserror-impl 2.0.19",
]
[[package]]
@@ -6596,26 +6643,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
name = "thiserror-impl"
-version = "2.0.18"
+version = "2.0.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
+checksum = "43cbfe0cf76104d42a574802844187e84a305e531ed54455f11fbde0f10541cd"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 3.0.3",
]
[[package]]
name = "thread_local"
-version = "1.1.9"
+version = "1.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185"
+checksum = "1ad99c4c6d32803332c548b1af0540b357b3f5fc0be8f6c6bfe8b2e6ae784070"
dependencies = [
"cfg-if",
]
@@ -6651,11 +6698,12 @@ dependencies = [
[[package]]
name = "time"
-version = "0.3.51"
+version = "0.3.54"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85c17d80feb7334b40c484e45ed1a5273dfd8bfda537c3be2e74a06a6686f327"
+checksum = "3e1d5e639ff6bab73cb6885cc7e7b1de96c3f32c68ec55f3952614bec1092244"
dependencies = [
"deranged",
+ "js-sys",
"libc",
"num-conv",
"num_threads",
@@ -6673,9 +6721,9 @@ checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109"
[[package]]
name = "time-macros"
-version = "0.2.30"
+version = "0.2.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dcef1a61bdb119096e153208ec5cbec23944ce8bca13be5c7f60c634f7403935"
+checksum = "7e689342a48d2ea927c87ea50cabf8594854bf940e9310208848d680d668ed85"
dependencies = [
"num-conv",
"time-core",
@@ -6702,9 +6750,9 @@ dependencies = [
[[package]]
name = "tinyvec"
-version = "1.11.0"
+version = "1.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3"
+checksum = "bb4ebadaa0af04fab11ae01eb5f9fdb5f9c5b875506e210e71c07873528baa7f"
dependencies = [
"tinyvec_macros",
]
@@ -6717,9 +6765,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]]
name = "tokio"
-version = "1.52.3"
+version = "1.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe"
+checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed"
dependencies = [
"bytes",
"libc",
@@ -6727,7 +6775,7 @@ dependencies = [
"parking_lot",
"pin-project-lite",
"signal-hook-registry",
- "socket2 0.6.4",
+ "socket2 0.6.5",
"tokio-macros",
"tracing",
"windows-sys 0.61.2",
@@ -6735,13 +6783,13 @@ dependencies = [
[[package]]
name = "tokio-macros"
-version = "2.7.0"
+version = "2.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496"
+checksum = "6328af13490e73a9b4694030fafd93f8c8c6a9dede33e821c3fc63eddf8042ba"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
@@ -6766,9 +6814,9 @@ dependencies = [
[[package]]
name = "tokio-stream"
-version = "0.1.18"
+version = "0.1.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70"
+checksum = "a3d06f0b082ba57c26b79407372e57cf2a1e28124f78e9479fe80322cf53420b"
dependencies = [
"futures-core",
"pin-project-lite",
@@ -6788,13 +6836,14 @@ dependencies = [
[[package]]
name = "tokio-util"
-version = "0.7.18"
+version = "0.7.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098"
+checksum = "494815d09bf52b5548659851081238f0ca39ff638363907596da739561c62c52"
dependencies = [
"bytes",
"futures-core",
"futures-sink",
+ "libc",
"pin-project-lite",
"tokio",
]
@@ -6838,14 +6887,14 @@ version = "1.1.2+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526"
dependencies = [
- "winnow 1.0.3",
+ "winnow 1.0.4",
]
[[package]]
name = "toml_writer"
-version = "1.1.1+spec-1.1.0"
+version = "1.1.2+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db"
+checksum = "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe66d2"
[[package]]
name = "tonic"
@@ -6859,14 +6908,14 @@ dependencies = [
"bytes",
"h2",
"http 1.3.1",
- "http-body 1.0.1",
+ "http-body 1.1.0",
"http-body-util",
- "hyper 1.10.1",
+ "hyper 1.11.0",
"hyper-timeout",
"hyper-util",
"percent-encoding",
"pin-project",
- "socket2 0.6.4",
+ "socket2 0.6.5",
"sync_wrapper",
"tokio",
"tokio-stream",
@@ -6912,12 +6961,12 @@ version = "0.6.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840"
dependencies = [
- "bitflags 2.13.0",
+ "bitflags 2.13.1",
"bytes",
"futures-core",
"futures-util",
"http 1.3.1",
- "http-body 1.0.1",
+ "http-body 1.1.0",
"http-body-util",
"http-range-header",
"httpdate",
@@ -6957,7 +7006,7 @@ dependencies = [
"governor",
"http 1.3.1",
"pin-project",
- "thiserror 2.0.18",
+ "thiserror 2.0.19",
"tower",
"tracing",
]
@@ -6981,8 +7030,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
@@ -7041,8 +7090,8 @@ version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ad06847b7afb65c7866a36664b75c40b895e318cea4f71299f013fb22965329d"
dependencies = [
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
@@ -7061,6 +7110,12 @@ dependencies = [
"serde_json",
]
+[[package]]
+name = "typed-path"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e28f89b80c87b8fb0cf04ab448d5dd0dd0ade2f8891bae878de66a75a28600e"
+
[[package]]
name = "typenum"
version = "1.20.1"
@@ -7140,7 +7195,7 @@ checksum = "dea7109cdcd5864d4eeb1b58a1648dc9bf520360d7af16ec26d0a9354bafcfc0"
dependencies = [
"base64 0.22.1",
"cookie_store",
- "der 0.8.0",
+ "der 0.8.1",
"encoding_rs",
"flate2",
"log",
@@ -7207,9 +7262,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
[[package]]
name = "uuid"
-version = "1.23.4"
+version = "1.24.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53"
+checksum = "bf3923a6f5c4c6382e0b653c4117f48d631ea17f38ed86e2a828e6f7412f5239"
dependencies = [
"atomic",
"getrandom 0.4.3",
@@ -7316,7 +7371,7 @@ version = "0.2.126"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1"
dependencies = [
- "quote 1.0.46",
+ "quote 1.0.47",
"wasm-bindgen-macro-support",
]
@@ -7328,8 +7383,8 @@ checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e"
dependencies = [
"bumpalo",
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
"wasm-bindgen-shared",
]
@@ -7364,18 +7419,18 @@ dependencies = [
[[package]]
name = "webpki-root-certs"
-version = "1.0.8"
+version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d46a5a140e6f7afeccd8eae97eff335163939eac8b929834875168b29b3d267"
+checksum = "b96554aa2acc8ccdb7e1c9a58a7a68dd5d13bccc69cd124cb09406db612a1c9b"
dependencies = [
"rustls-pki-types",
]
[[package]]
name = "webpki-roots"
-version = "1.0.8"
+version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf85cb06032201fa7c6f829d7db5a7e5aa45bcc0655327713065f6f0576731bf"
+checksum = "7dcd9d09a39985f5344844e66b0c530a33843579125f23e21e9f0f220850f22a"
dependencies = [
"rustls-pki-types",
]
@@ -7435,7 +7490,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "46c0cf2d539c645b448eaffec9ec494b8b19bd5077d9e58cb1ae7efece8d575b"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
+ "quote 1.0.47",
"syn 1.0.109",
]
@@ -7466,9 +7521,9 @@ dependencies = [
[[package]]
name = "which"
-version = "8.0.4"
+version = "8.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "48d7cd18d4acb58fb3cdfe9ea54e6cd96a4e7d4cc45c56338b236e82dad47248"
+checksum = "8f3ef584124b911bcc3875c2f1472e80f24361ceb789bd1c62b3e9a3df9ff43c"
dependencies = [
"libc",
]
@@ -7524,8 +7579,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
@@ -7535,8 +7590,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
@@ -7580,7 +7635,7 @@ version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
dependencies = [
- "windows-targets 0.52.6",
+ "windows-targets",
]
[[package]]
@@ -7589,16 +7644,7 @@ version = "0.59.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
dependencies = [
- "windows-targets 0.52.6",
-]
-
-[[package]]
-name = "windows-sys"
-version = "0.60.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
-dependencies = [
- "windows-targets 0.53.5",
+ "windows-targets",
]
[[package]]
@@ -7616,31 +7662,14 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
dependencies = [
- "windows_aarch64_gnullvm 0.52.6",
- "windows_aarch64_msvc 0.52.6",
- "windows_i686_gnu 0.52.6",
- "windows_i686_gnullvm 0.52.6",
- "windows_i686_msvc 0.52.6",
- "windows_x86_64_gnu 0.52.6",
- "windows_x86_64_gnullvm 0.52.6",
- "windows_x86_64_msvc 0.52.6",
-]
-
-[[package]]
-name = "windows-targets"
-version = "0.53.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
-dependencies = [
- "windows-link",
- "windows_aarch64_gnullvm 0.53.1",
- "windows_aarch64_msvc 0.53.1",
- "windows_i686_gnu 0.53.1",
- "windows_i686_gnullvm 0.53.1",
- "windows_i686_msvc 0.53.1",
- "windows_x86_64_gnu 0.53.1",
- "windows_x86_64_gnullvm 0.53.1",
- "windows_x86_64_msvc 0.53.1",
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
]
[[package]]
@@ -7649,96 +7678,48 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
-[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.53.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
-
[[package]]
name = "windows_aarch64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.53.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
-
[[package]]
name = "windows_i686_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
-[[package]]
-name = "windows_i686_gnu"
-version = "0.53.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
-
[[package]]
name = "windows_i686_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
-[[package]]
-name = "windows_i686_gnullvm"
-version = "0.53.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
-
[[package]]
name = "windows_i686_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
-[[package]]
-name = "windows_i686_msvc"
-version = "0.53.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
-
[[package]]
name = "windows_x86_64_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.53.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
-
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
-[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.53.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
-
[[package]]
name = "windows_x86_64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
-[[package]]
-name = "windows_x86_64_msvc"
-version = "0.53.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
-
[[package]]
name = "winnow"
version = "0.7.15"
@@ -7747,9 +7728,9 @@ checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945"
[[package]]
name = "winnow"
-version = "1.0.3"
+version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1"
+checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81"
[[package]]
name = "wit-bindgen"
@@ -7757,12 +7738,33 @@ version = "0.57.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e"
+[[package]]
+name = "wnaf"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab12e7090f27e2ffd9322651492942d50c2926094af30601e1964337db39daf1"
+dependencies = [
+ "ff",
+ "group",
+ "hybrid-array",
+]
+
[[package]]
name = "writeable"
version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4"
+[[package]]
+name = "xattr"
+version = "1.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156"
+dependencies = [
+ "libc",
+ "rustix 1.1.4",
+]
+
[[package]]
name = "yoke"
version = "0.8.3"
@@ -7781,29 +7783,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
"synstructure",
]
[[package]]
name = "zerocopy"
-version = "0.8.52"
+version = "0.8.55"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f"
+checksum = "b5a105cd7b140f6eeec8acff2ea38135d3cab283ada58540f629fe51e46696eb"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
-version = "0.8.52"
+version = "0.8.55"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930"
+checksum = "0fe976fb70c78cd64cccfe3a6fc142244e8a77b70959b30faf9d0ac37ee228eb"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
@@ -7822,8 +7824,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
"synstructure",
]
@@ -7843,8 +7845,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c50655cbb0fe3fc43170059e702f1ce5e19b84cec58dc87b037a09935c2f328"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
@@ -7876,46 +7878,47 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555"
dependencies = [
"proc-macro2",
- "quote 1.0.46",
- "syn 2.0.118",
+ "quote 1.0.47",
+ "syn 2.0.119",
]
[[package]]
name = "zip"
-version = "6.0.0"
+version = "8.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eb2a05c7c36fde6c09b08576c9f7fb4cda705990f73b58fe011abf7dfb24168b"
+checksum = "2d04a6b5381502aa6087c94c669499eb1602eb9c5e8198e534de571f7154809b"
dependencies = [
- "arbitrary",
"crc32fast",
"flate2",
"indexmap 2.14.0",
"memchr",
"time",
+ "typed-path",
"zopfli",
]
[[package]]
name = "zipsign-api"
-version = "0.1.5"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dba6063ff82cdbd9a765add16d369abe81e520f836054e997c2db217ceca40c0"
+checksum = "32a55ebb27e67d9a9d116dd3a19637ee8cc0570c8ef816fb504c453f15448c99"
dependencies = [
+ "base64 0.22.1",
"ed25519-dalek",
- "thiserror 2.0.18",
+ "thiserror 2.0.19",
]
[[package]]
name = "zlib-rs"
-version = "0.6.4"
+version = "0.6.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "977347db8caa080403f6b6b7c1cda9479a8e869316f7e13a59b19076a40f94e3"
+checksum = "b142a20ec14a91d5bc708c1dc21b080c550113d8aa77afa29635673a65dd02c5"
[[package]]
name = "zmij"
-version = "1.0.21"
+version = "1.0.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
+checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b"
[[package]]
name = "zopfli"
diff --git a/Cargo.toml b/Cargo.toml
index 083325ebdd..fda7bc6703 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "snarkos"
-version = "4.8.1"
+version = "4.9.0"
authors = [ "The Aleo Team " ]
description = "A decentralized operating system"
homepage = "https://aleo.org"
@@ -48,8 +48,8 @@ default-features = false
[workspace.dependencies.snarkvm]
#path = "../snarkVM"
#git = "https://github.com/ProvableHQ/snarkVM.git"
-#rev = "d071e78"
-version = "=4.8.1"
+#rev = "8902106cc"
+version = "=4.9.0"
[workspace.dependencies.anyhow]
version = "1.0"
@@ -185,84 +185,84 @@ version = "0.2"
[workspace.dependencies.snarkos-account]
path = "account"
-version = "=4.8.1"
+version = "=4.9.0"
[workspace.dependencies.snarkos-cli]
path = "cli"
-version = "=4.8.1"
+version = "=4.9.0"
[workspace.dependencies.snarkos-display]
path = "display"
-version = "=4.8.1"
+version = "=4.9.0"
[workspace.dependencies.snarkos-node]
path = "node"
-version = "=4.8.1"
+version = "=4.9.0"
[workspace.dependencies.snarkos-node-bft]
path = "node/bft"
-version = "=4.8.1"
+version = "=4.9.0"
[workspace.dependencies.snarkos-node-bft-events]
path = "node/bft/events"
-version = "=4.8.1"
+version = "=4.9.0"
[workspace.dependencies.snarkos-node-bft-storage-service]
path = "node/bft/storage-service"
-version = "=4.8.1"
+version = "=4.9.0"
[workspace.dependencies.snarkos-node-bft-ledger-service]
path = "node/bft/ledger-service"
-version = "=4.8.1"
+version = "=4.9.0"
default-features = false
[workspace.dependencies.snarkos-node-consensus]
path = "node/consensus"
-version = "=4.8.1"
+version = "=4.9.0"
[workspace.dependencies.snarkos-node-cdn]
path = "node/cdn"
-version = "=4.8.1"
+version = "=4.9.0"
[workspace.dependencies.snarkos-node-metrics]
path = "node/metrics"
-version = "=4.8.1"
+version = "=4.9.0"
[workspace.dependencies.snarkos-node-network]
path = "node/network"
-version = "=4.8.1"
+version = "=4.9.0"
[workspace.dependencies.snarkos-node-router]
path = "node/router"
-version = "=4.8.1"
+version = "=4.9.0"
[workspace.dependencies.snarkos-node-router-messages]
path = "node/router/messages"
-version = "=4.8.1"
+version = "=4.9.0"
[workspace.dependencies.snarkos-node-rest]
path = "node/rest"
-version = "=4.8.1"
+version = "=4.9.0"
[workspace.dependencies.snarkos-node-sync]
path = "node/sync"
-version = "=4.8.1"
+version = "=4.9.0"
[workspace.dependencies.snarkos-node-sync-communication-service]
path = "node/sync/communication-service"
-version = "=4.8.1"
+version = "=4.9.0"
[workspace.dependencies.snarkos-node-sync-locators]
path = "node/sync/locators"
-version = "=4.8.1"
+version = "=4.9.0"
[workspace.dependencies.snarkos-node-tcp]
path = "node/tcp"
-version = "=4.8.1"
+version = "=4.9.0"
[workspace.dependencies.snarkos-utilities]
path = "utilities"
-version = "=4.8.1"
+version = "=4.9.0"
[[bin]]
name = "snarkos"
@@ -364,12 +364,11 @@ tikv-jemallocator = "0.6"
[dependencies.tracing]
workspace = true
-# Pinned to =0.14.0-rc.29 because k256 v0.14.0-rc.8 does not implement the
-# MulVartime/MulByGeneratorVartime traits added in elliptic-curve v0.14.0-rc.31.
+# Pinned to =0.14.1 because k256 v0.14.0 requires it.
# Adding this as a direct dependency forces cargo to resolve the exact version
-# and prevents automatic upgrades to incompatible RC releases.
+# and prevents automatic upgrades to incompatible releases.
[dependencies.elliptic-curve]
-version = "=0.14.0-rc.29"
+version = "=0.14.1"
default-features = false
# Pinned alongside elliptic-curve to avoid resolving yanked crypto-bigint releases.
diff --git a/README.md b/README.md
index d7556dbab6..4e97c8a429 100644
--- a/README.md
+++ b/README.md
@@ -10,7 +10,7 @@
-## Table of Contents
+## Table of Contents
* [1. Overview](#1-overview)
* [2. Build Guide](#2-build-guide)
diff --git a/account/Cargo.toml b/account/Cargo.toml
index b8e70b03f3..382becbe69 100644
--- a/account/Cargo.toml
+++ b/account/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "snarkos-account"
-version = "4.8.1"
+version = "4.9.0"
authors = [ "The Aleo Team " ]
description = "Account for a decentralized operating system"
homepage = "https://aleo.org"
diff --git a/cli/Cargo.toml b/cli/Cargo.toml
index 3b043315ce..cafbcd52c7 100644
--- a/cli/Cargo.toml
+++ b/cli/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "snarkos-cli"
-version = "4.8.1"
+version = "4.9.0"
authors = [ "The Aleo Team " ]
description = "Command-line interface for snarkOS"
homepage = "https://aleo.org"
@@ -106,7 +106,7 @@ workspace = true
version = "7.4.0"
[dependencies.self_update]
-version = "0.44"
+version = "1.0.0-rc.6"
features = [ "archive-zip", "compression-zip-deflate" ]
[dependencies.serde]
diff --git a/cli/src/commands/start.rs b/cli/src/commands/start.rs
index 4b23e4abd0..b78fd9421c 100644
--- a/cli/src/commands/start.rs
+++ b/cli/src/commands/start.rs
@@ -341,7 +341,7 @@ impl Start {
// Periodically check if the number of file descriptors isn't becoming insufficient.
#[cfg(unix)]
- crate::helpers::spawn_fd_monitor();
+ let fd_check_handle = crate::helpers::spawn_fd_monitor();
// Clone the configurations.
let mut self_ = self.clone();
@@ -360,6 +360,9 @@ impl Start {
_ => panic!("Invalid network ID specified"),
};
+ #[cfg(unix)]
+ fd_check_handle.abort();
+
Ok(String::new())
})
}
diff --git a/cli/src/commands/update.rs b/cli/src/commands/update.rs
index 1b9d85f0da..92f81c190b 100644
--- a/cli/src/commands/update.rs
+++ b/cli/src/commands/update.rs
@@ -45,9 +45,9 @@ impl Update {
if !self.quiet {
match result {
Ok(status) => {
- if status.uptodate() {
+ if status.is_up_to_date() {
Ok("\nsnarkOS is already on the latest version".to_string())
- } else if status.updated() {
+ } else if status.is_updated() {
Ok(format!("\nsnarkOS has updated to version {}", status.version()))
} else {
Ok(String::new())
diff --git a/cli/src/helpers/fd_check.rs b/cli/src/helpers/fd_check.rs
index 6be577444a..2adf46d7c0 100644
--- a/cli/src/helpers/fd_check.rs
+++ b/cli/src/helpers/fd_check.rs
@@ -15,7 +15,10 @@
use std::io;
-use tokio::time::{Duration, MissedTickBehavior, interval};
+use tokio::{
+ task,
+ time::{Duration, MissedTickBehavior, interval},
+};
use tracing::*;
/// Node-scale fd use.
@@ -129,7 +132,7 @@ pub fn system_fd_usage() -> std::io::Result {
Ok(SystemFd { allocated: read(cur_oid)?, max: read(max_oid)? })
}
-pub fn spawn_fd_monitor() {
+pub fn spawn_fd_monitor() -> task::JoinHandle<()> {
tokio::spawn(async move {
let mut tick = interval(Duration::from_secs(30));
tick.set_missed_tick_behavior(MissedTickBehavior::Skip);
@@ -193,5 +196,5 @@ pub fn spawn_fd_monitor() {
Err(e) => error!(error = %e, "system fd probe failed"),
}
}
- });
+ })
}
diff --git a/cli/src/helpers/updater.rs b/cli/src/helpers/updater.rs
index d10bdf733f..fac5498c23 100644
--- a/cli/src/helpers/updater.rs
+++ b/cli/src/helpers/updater.rs
@@ -14,7 +14,7 @@
// limitations under the License.
use colored::Colorize;
-use self_update::{Status, backends::github, version::bump_is_greater};
+use self_update::{UpdateConfig, VersionStatus, backends::github, version::bump_is_greater};
use std::fmt::Write;
pub struct Updater;
@@ -34,13 +34,13 @@ impl Updater {
let mut output = "List of available versions\n".to_string();
for release in releases {
- let _ = writeln!(output, " * {}", release.version);
+ let _ = writeln!(output, " * {}", release.version());
}
Ok(output)
}
/// Update `snarkOS` to the specified release.
- pub fn update_to_release(show_output: bool, version: Option) -> Result {
+ pub fn update_to_release(show_output: bool, version: Option) -> Result {
let mut update_builder = github::Update::configure();
update_builder
@@ -54,7 +54,7 @@ impl Updater {
let status = match version {
None => update_builder.build()?.update()?,
- Some(v) => update_builder.target_version_tag(&v).build()?.update()?,
+ Some(v) => update_builder.release_tag(&v).build()?.update()?,
};
Ok(status)
@@ -69,13 +69,16 @@ impl Updater {
.current_version(env!("SNARKOS_VERSION"))
.build()?;
- let current_version = updater.current_version();
- let latest_release = updater.get_latest_release()?;
+ let current_version = updater.current_version().to_string();
+ let latest_releases = updater.get_latest_release()?;
+ let latest_release = latest_releases
+ .latest()
+ .ok_or_else(|| UpdaterError::Crate("self_update", "no releases found".to_string()))?;
- if bump_is_greater(¤t_version, &latest_release.version)? {
- Ok(latest_release.version)
+ if bump_is_greater(¤t_version, latest_release.version())? {
+ Ok(latest_release.version().to_string())
} else {
- Err(UpdaterError::OldReleaseVersion(current_version, latest_release.version))
+ Err(UpdaterError::OldReleaseVersion(current_version, latest_release.version().to_string()))
}
}
diff --git a/display/Cargo.toml b/display/Cargo.toml
index a48bc5b40a..3c9d257f44 100644
--- a/display/Cargo.toml
+++ b/display/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "snarkos-display"
-version = "4.8.1"
+version = "4.9.0"
authors = [ "The Aleo Team " ]
description = "A display for a decentralized operating system"
homepage = "https://aleo.org"
diff --git a/node/Cargo.toml b/node/Cargo.toml
index b2eb1655b6..d6ce99db46 100644
--- a/node/Cargo.toml
+++ b/node/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "snarkos-node"
-version = "4.8.1"
+version = "4.9.0"
authors = [ "The Aleo Team " ]
description = "A node for a decentralized operating system"
homepage = "https://aleo.org"
diff --git a/node/bft/Cargo.toml b/node/bft/Cargo.toml
index e177f63d94..40869a199a 100644
--- a/node/bft/Cargo.toml
+++ b/node/bft/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "snarkos-node-bft"
-version = "4.8.1"
+version = "4.9.0"
authors = [ "The Aleo Team " ]
description = "A memory pool for a decentralized operating system"
homepage = "https://aleo.org"
diff --git a/node/bft/events/Cargo.toml b/node/bft/events/Cargo.toml
index 807232409c..c396ea3f67 100644
--- a/node/bft/events/Cargo.toml
+++ b/node/bft/events/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "snarkos-node-bft-events"
-version = "4.8.1"
+version = "4.9.0"
authors = [ "The Aleo Team " ]
description = "Events for the gateway in a decentralized operating system"
homepage = "https://aleo.org"
diff --git a/node/bft/ledger-service/Cargo.toml b/node/bft/ledger-service/Cargo.toml
index 98a7901a97..a715f365ff 100644
--- a/node/bft/ledger-service/Cargo.toml
+++ b/node/bft/ledger-service/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "snarkos-node-bft-ledger-service"
-version = "4.8.1"
+version = "4.9.0"
authors = [ "The Aleo Team " ]
description = "A ledger service for the memory pool in a decentralized operating system"
homepage = "https://aleo.org"
diff --git a/node/bft/src/gateway.rs b/node/bft/src/gateway.rs
index 9ba9a0fc24..f4166210fe 100644
--- a/node/bft/src/gateway.rs
+++ b/node/bft/src/gateway.rs
@@ -682,7 +682,15 @@ impl Gateway {
debug!("{}", flatten_error(err));
Ok(true)
}
- Err(err) if err.is_invalid_consensus_version() => {
+ Err(err) if err.is_consensus_version_ahead() => {
+ let err: anyhow::Error = err.into();
+ let err = err.context(format!(
+ "Peer sent a block response with a newer consensus version '{peer_ip}'"
+ ));
+ warn!("{}", flatten_error(&err));
+ Ok(true)
+ }
+ Err(err) if err.is_consensus_version_behind() => {
let err: anyhow::Error = err.into();
let err = err.context(format!("Peer sent an invalid block response '{peer_ip}'"));
@@ -1076,7 +1084,7 @@ impl Gateway {
.collect();
if !handles.is_empty() {
- info!("Reconnnecting to {} out of {} trusted validators", handles.len(), trusted_peers.len());
+ info!("Reconnecting to {} out of {} trusted validators", handles.len(), trusted_peers.len());
}
}
@@ -1492,7 +1500,24 @@ impl Handshake for Gateway {
NodeType::Validator
};
- if let Some(peer) = self.peer_pool.write().get_mut(&addr) {
+ let mut peer_pool = self.peer_pool.write();
+
+ // Validators may change their listening address, but not the Aleo address; traverse
+ // the peer pool, and retain previously connected (the prior Aleo address is known)
+ // candidate peers with the same Aleo address only if their listening address is the
+ // same; otherwise, it may be concluded that a known validator has changed their
+ // listening address, and thus the old entry should be removed as outdated.
+ peer_pool.retain(|_, peer| {
+ if let Peer::Candidate(peer) = peer
+ && let Some(old_aleo_addr) = peer.last_known_aleo_addr
+ {
+ old_aleo_addr != cr.address || peer.listener_addr == addr
+ } else {
+ true
+ }
+ });
+
+ if let Some(peer) = peer_pool.get_mut(&addr) {
self.resolver.write().insert_peer(addr, peer_addr, Some(cr.address));
peer.upgrade_to_connected(
peer_addr,
diff --git a/node/bft/src/helpers/storage.rs b/node/bft/src/helpers/storage.rs
index 957a02f87d..b140beba8c 100644
--- a/node/bft/src/helpers/storage.rs
+++ b/node/bft/src/helpers/storage.rs
@@ -505,7 +505,12 @@ impl Storage {
bail!("Missing certificates for the previous round {previous_round} in storage {gc_log}")
}
// Ensure the number of previous certificate IDs is at or below the number of committee members.
- if batch_header.previous_certificate_ids().len() > previous_committee_lookback.num_members() {
+ // As for the `test_network` clause, a more robust approach would be to set the
+ // previous_committee_lookback appropriately when dev-on-prod is activated, or to only skip this
+ // check right at the hotswap height.
+ if !cfg!(feature = "test_network")
+ && batch_header.previous_certificate_ids().len() > previous_committee_lookback.num_members()
+ {
bail!("Too many previous certificates for round {round} {gc_log}")
}
// Initialize a set of the previous authors.
diff --git a/node/bft/storage-service/Cargo.toml b/node/bft/storage-service/Cargo.toml
index 41b2268d93..ce3ca50682 100644
--- a/node/bft/storage-service/Cargo.toml
+++ b/node/bft/storage-service/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "snarkos-node-bft-storage-service"
-version = "4.8.1"
+version = "4.9.0"
authors = [ "The Aleo Team " ]
description = "A storage service for the memory pool in a decentralized operating system"
homepage = "https://aleo.org"
diff --git a/node/cdn/Cargo.toml b/node/cdn/Cargo.toml
index e5ebced9dc..4691aaad24 100644
--- a/node/cdn/Cargo.toml
+++ b/node/cdn/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "snarkos-node-cdn"
-version = "4.8.1"
+version = "4.9.0"
authors = [ "The Aleo Team " ]
description = "A CDN client for a decentralized operating system"
homepage = "https://aleo.org"
diff --git a/node/consensus/Cargo.toml b/node/consensus/Cargo.toml
index 749e8a67e6..5dc22e2f1d 100644
--- a/node/consensus/Cargo.toml
+++ b/node/consensus/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "snarkos-node-consensus"
-version = "4.8.1"
+version = "4.9.0"
authors = [ "The Aleo Team " ]
description = "A node consensus for a decentralized operating system"
homepage = "https://aleo.org"
diff --git a/node/metrics/Cargo.toml b/node/metrics/Cargo.toml
index 7a2c53f43c..e156ac0fc2 100644
--- a/node/metrics/Cargo.toml
+++ b/node/metrics/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "snarkos-node-metrics"
-version = "4.8.1"
+version = "4.9.0"
authors = [ "The Aleo Team " ]
description = "A node for a decentralized operating system"
homepage = "https://aleo.org"
diff --git a/node/network/Cargo.toml b/node/network/Cargo.toml
index 1d74a29777..35155e9d74 100644
--- a/node/network/Cargo.toml
+++ b/node/network/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "snarkos-node-network"
-version = "4.8.1"
+version = "4.9.0"
authors = [ "The Aleo Team " ]
description = "Network-related objects and traits for nodes"
homepage = "https://aleo.org"
diff --git a/node/network/src/peer.rs b/node/network/src/peer.rs
index 98a3185fab..28ff9d79f4 100644
--- a/node/network/src/peer.rs
+++ b/node/network/src/peer.rs
@@ -23,7 +23,7 @@ use std::{fmt, net::SocketAddr, time::Instant};
#[derive(Clone, Debug)]
pub enum Peer {
/// A candidate peer that's currently not connected to.
- Candidate(CandidatePeer),
+ Candidate(CandidatePeer),
/// A peer that's currently being connected to (the handshake is in progress).
Connecting(ConnectingPeer),
/// A fully connected (post-handshake) peer.
@@ -41,7 +41,7 @@ pub struct ConnectingPeer {
/// A candidate peer.
#[derive(Clone, Debug)]
-pub struct CandidatePeer {
+pub struct CandidatePeer {
/// The listening address of a candidate peer.
pub listener_addr: SocketAddr,
/// Indicates whether the peer is considered trusted.
@@ -53,6 +53,9 @@ pub struct CandidatePeer {
pub last_connection_attempt: Option,
/// The total number of connection attempts, since the peer was last connected.
pub total_connection_attempts: u32,
+ /// The last known Aleo address of this peer, carried over from a prior connection.
+ /// Used to detect when a validator reconnects from a different IP address.
+ pub last_known_aleo_addr: Option>,
}
/// A fully connected peer.
@@ -100,13 +103,14 @@ impl fmt::Display for ConnectionMode {
impl Peer {
/// Create a candidate peer.
- pub const fn new_candidate(listener_addr: SocketAddr, trusted: bool) -> Self {
+ pub fn new_candidate(listener_addr: SocketAddr, trusted: bool) -> Self {
Self::Candidate(CandidatePeer {
listener_addr,
trusted,
last_height_seen: None,
last_connection_attempt: None,
total_connection_attempts: 0,
+ last_known_aleo_addr: None,
})
}
@@ -157,12 +161,18 @@ impl Peer {
/// Demote a peer to candidate status, marking it as disconnected.
pub fn downgrade_to_candidate(&mut self, listener_addr: SocketAddr) {
+ let last_known_aleo_addr = match self {
+ Self::Connected(p) => Some(p.aleo_addr),
+ _ => None,
+ };
+
*self = Self::Candidate(CandidatePeer {
listener_addr,
trusted: self.is_trusted(),
last_height_seen: self.last_height_seen(),
last_connection_attempt: None,
total_connection_attempts: 0,
+ last_known_aleo_addr,
});
}
diff --git a/node/network/src/peering.rs b/node/network/src/peering.rs
index 5c9dffdc67..2278bbdb1f 100644
--- a/node/network/src/peering.rs
+++ b/node/network/src/peering.rs
@@ -15,169 +15,6 @@
use crate::{CandidatePeer, ConnectedPeer, ConnectionMode, NodeType, Peer, Resolver};
-#[cfg(test)]
-mod tests {
- use super::*;
- use crate::Peer;
- use snarkos_node_tcp::{Config, P2P, Tcp};
- use snarkvm::{prelude::Rng, utilities::TestRng};
-
- use std::{collections::HashMap, net::SocketAddr, time::Instant};
-
- type CurrentNetwork = snarkvm::prelude::MainnetV0;
-
- struct MockPeerPool {
- tcp: Tcp,
- peer_pool: RwLock>>,
- resolver: RwLock>,
- }
-
- impl MockPeerPool {
- fn new() -> Self {
- let config = Config { listener_ip: None, ..Default::default() };
- Self { tcp: Tcp::new(config), peer_pool: Default::default(), resolver: Default::default() }
- }
- }
-
- impl P2P for MockPeerPool {
- fn tcp(&self) -> &Tcp {
- &self.tcp
- }
- }
-
- impl PeerPoolHandling for MockPeerPool {
- const MAXIMUM_POOL_SIZE: usize = 100;
- const OWNER: &str = "MockPeerPool";
- const PEER_SLASHING_COUNT: usize = 10;
-
- fn peer_pool(&self) -> &RwLock>> {
- &self.peer_pool
- }
-
- fn resolver(&self) -> &RwLock> {
- &self.resolver
- }
-
- fn is_dev(&self) -> bool {
- false
- }
-
- fn trusted_peers_only(&self) -> bool {
- false
- }
-
- fn node_type(&self) -> NodeType {
- NodeType::Client
- }
- }
-
- fn make_connected_peer(port: u16, node_type: NodeType, rng: &mut TestRng) -> (SocketAddr, Peer) {
- use snarkvm::prelude::Address;
- let listener_addr = SocketAddr::from(([127, 0, 0, 1], port));
- let connected_addr = SocketAddr::from(([127, 0, 0, 1], port + 10000));
- let now = Instant::now();
- let peer = Peer::Connected(ConnectedPeer {
- listener_addr,
- connected_addr,
- connection_mode: ConnectionMode::Router,
- trusted: false,
- aleo_addr: Address::::new(rng.random()),
- node_type,
- version: 1,
- snarkos_sha: None,
- last_height_seen: None,
- first_seen: now,
- last_seen: now,
- });
- (listener_addr, peer)
- }
-
- #[test]
- fn test_peer_state_transitions() {
- use snarkvm::prelude::Address;
-
- let pool = MockPeerPool::::new();
- let mut rng = TestRng::default();
-
- let listener_addr = SocketAddr::from(([192, 0, 2, 1], 4000));
- let connected_addr = SocketAddr::from(([192, 0, 2, 1], 14000));
- let aleo_addr = Address::::new(rng.random());
-
- // Step 1: insert as a candidate.
- pool.peer_pool().write().insert(listener_addr, Peer::new_candidate(listener_addr, false));
-
- assert_eq!(pool.number_of_candidate_peers(), 1);
- assert_eq!(pool.number_of_connecting_peers(), Some(0));
- assert_eq!(pool.number_of_connected_peers(), 0);
- assert!(!pool.is_connecting(listener_addr));
- assert!(!pool.is_connected(listener_addr));
-
- // Step 2: promote to connecting.
- assert!(pool.add_connecting_peer(listener_addr).is_ok());
-
- assert_eq!(pool.number_of_candidate_peers(), 0);
- assert_eq!(pool.number_of_connecting_peers(), Some(1));
- assert_eq!(pool.number_of_connected_peers(), 0);
- assert!(pool.is_connecting(listener_addr));
- assert!(!pool.is_connected(listener_addr));
-
- // Step 3: complete the handshake — upgrade to connected.
- pool.peer_pool().write().get_mut(&listener_addr).unwrap().upgrade_to_connected(
- connected_addr,
- listener_addr.port(),
- aleo_addr,
- NodeType::Validator,
- 1,
- None,
- ConnectionMode::Router,
- );
-
- assert_eq!(pool.number_of_candidate_peers(), 0);
- assert_eq!(pool.number_of_connecting_peers(), Some(0));
- assert_eq!(pool.number_of_connected_peers(), 1);
- assert!(!pool.is_connecting(listener_addr));
- assert!(pool.is_connected(listener_addr));
- assert_eq!(pool.number_of_connected_validators(), Some(1));
-
- // Verify the connected peer's fields.
- let connected = pool.get_connected_peer(listener_addr).expect("peer should be connected");
- assert_eq!(connected.listener_addr, listener_addr);
- assert_eq!(connected.connected_addr, connected_addr);
- assert_eq!(connected.aleo_addr, aleo_addr);
- assert_eq!(connected.node_type, NodeType::Validator);
- }
-
- #[test]
- fn test_number_of_connected_validators() {
- let pool = MockPeerPool::::new();
- let mut rng = TestRng::default();
-
- // Empty pool: no validators.
- assert_eq!(pool.number_of_connected_validators(), Some(0));
-
- // Insert 2 validators and 1 client.
- let (addr1, peer1) = make_connected_peer(3000, NodeType::Validator, &mut rng);
- let (addr2, peer2) = make_connected_peer(3001, NodeType::Validator, &mut rng);
- let (addr3, peer3) = make_connected_peer(3002, NodeType::Client, &mut rng);
- {
- let mut pool_write = pool.peer_pool().write();
- pool_write.insert(addr1, peer1);
- pool_write.insert(addr2, peer2);
- pool_write.insert(addr3, peer3);
- }
-
- assert_eq!(pool.number_of_connected_validators(), Some(2));
- assert_eq!(pool.number_of_connected_peers(), 3);
-
- // A candidate peer should not be counted as a validator.
- let candidate_addr = SocketAddr::from(([127, 0, 0, 1], 3003));
- pool.peer_pool().write().insert(candidate_addr, Peer::new_candidate(candidate_addr, false));
-
- assert_eq!(pool.number_of_connected_validators(), Some(2));
- assert_eq!(pool.number_of_connected_peers(), 3);
- }
-}
-
use snarkos_node_tcp::{ConnectError, P2P, is_bogon_ip, is_unspecified_or_broadcast_ip};
use snarkvm::prelude::{Address, Network};
@@ -622,7 +459,7 @@ pub trait PeerPoolHandling: P2P {
}
/// Returns the list of candidate peers.
- fn get_candidate_peers(&self) -> Vec {
+ fn get_candidate_peers(&self) -> Vec> {
self.peer_pool()
.read()
.values()
@@ -631,7 +468,7 @@ pub trait PeerPoolHandling: P2P {
}
/// Returns the list of trusted candidate peers.
- fn get_trusted_candidate_peers(&self) -> Vec {
+ fn get_trusted_candidate_peers(&self) -> Vec> {
self.peer_pool()
.read()
.values()
@@ -771,3 +608,166 @@ pub trait PeerPoolHandling: P2P {
self.tcp().banned_peers().update_ip_ban(ip);
}
}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+ use crate::Peer;
+ use snarkos_node_tcp::{Config, P2P, Tcp};
+ use snarkvm::{prelude::Rng, utilities::TestRng};
+
+ use std::{collections::HashMap, net::SocketAddr, time::Instant};
+
+ type CurrentNetwork = snarkvm::prelude::MainnetV0;
+
+ struct MockPeerPool {
+ tcp: Tcp,
+ peer_pool: RwLock>>,
+ resolver: RwLock>,
+ }
+
+ impl MockPeerPool {
+ fn new() -> Self {
+ let config = Config { listener_ip: None, ..Default::default() };
+ Self { tcp: Tcp::new(config), peer_pool: Default::default(), resolver: Default::default() }
+ }
+ }
+
+ impl P2P for MockPeerPool {
+ fn tcp(&self) -> &Tcp {
+ &self.tcp
+ }
+ }
+
+ impl PeerPoolHandling for MockPeerPool {
+ const MAXIMUM_POOL_SIZE: usize = 100;
+ const OWNER: &str = "MockPeerPool";
+ const PEER_SLASHING_COUNT: usize = 10;
+
+ fn peer_pool(&self) -> &RwLock>> {
+ &self.peer_pool
+ }
+
+ fn resolver(&self) -> &RwLock> {
+ &self.resolver
+ }
+
+ fn is_dev(&self) -> bool {
+ false
+ }
+
+ fn trusted_peers_only(&self) -> bool {
+ false
+ }
+
+ fn node_type(&self) -> NodeType {
+ NodeType::Client
+ }
+ }
+
+ fn make_connected_peer(port: u16, node_type: NodeType, rng: &mut TestRng) -> (SocketAddr, Peer) {
+ use snarkvm::prelude::Address;
+ let listener_addr = SocketAddr::from(([127, 0, 0, 1], port));
+ let connected_addr = SocketAddr::from(([127, 0, 0, 1], port + 10000));
+ let now = Instant::now();
+ let peer = Peer::Connected(ConnectedPeer {
+ listener_addr,
+ connected_addr,
+ connection_mode: ConnectionMode::Router,
+ trusted: false,
+ aleo_addr: Address::::new(rng.random()),
+ node_type,
+ version: 1,
+ snarkos_sha: None,
+ last_height_seen: None,
+ first_seen: now,
+ last_seen: now,
+ });
+ (listener_addr, peer)
+ }
+
+ #[test]
+ fn test_peer_state_transitions() {
+ use snarkvm::prelude::Address;
+
+ let pool = MockPeerPool::::new();
+ let mut rng = TestRng::default();
+
+ let listener_addr = SocketAddr::from(([192, 0, 2, 1], 4000));
+ let connected_addr = SocketAddr::from(([192, 0, 2, 1], 14000));
+ let aleo_addr = Address::::new(rng.random());
+
+ // Step 1: insert as a candidate.
+ pool.peer_pool().write().insert(listener_addr, Peer::new_candidate(listener_addr, false));
+
+ assert_eq!(pool.number_of_candidate_peers(), 1);
+ assert_eq!(pool.number_of_connecting_peers(), Some(0));
+ assert_eq!(pool.number_of_connected_peers(), 0);
+ assert!(!pool.is_connecting(listener_addr));
+ assert!(!pool.is_connected(listener_addr));
+
+ // Step 2: promote to connecting.
+ assert!(pool.add_connecting_peer(listener_addr).is_ok());
+
+ assert_eq!(pool.number_of_candidate_peers(), 0);
+ assert_eq!(pool.number_of_connecting_peers(), Some(1));
+ assert_eq!(pool.number_of_connected_peers(), 0);
+ assert!(pool.is_connecting(listener_addr));
+ assert!(!pool.is_connected(listener_addr));
+
+ // Step 3: complete the handshake — upgrade to connected.
+ pool.peer_pool().write().get_mut(&listener_addr).unwrap().upgrade_to_connected(
+ connected_addr,
+ listener_addr.port(),
+ aleo_addr,
+ NodeType::Validator,
+ 1,
+ None,
+ ConnectionMode::Router,
+ );
+
+ assert_eq!(pool.number_of_candidate_peers(), 0);
+ assert_eq!(pool.number_of_connecting_peers(), Some(0));
+ assert_eq!(pool.number_of_connected_peers(), 1);
+ assert!(!pool.is_connecting(listener_addr));
+ assert!(pool.is_connected(listener_addr));
+ assert_eq!(pool.number_of_connected_validators(), Some(1));
+
+ // Verify the connected peer's fields.
+ let connected = pool.get_connected_peer(listener_addr).expect("peer should be connected");
+ assert_eq!(connected.listener_addr, listener_addr);
+ assert_eq!(connected.connected_addr, connected_addr);
+ assert_eq!(connected.aleo_addr, aleo_addr);
+ assert_eq!(connected.node_type, NodeType::Validator);
+ }
+
+ #[test]
+ fn test_number_of_connected_validators() {
+ let pool = MockPeerPool::::new();
+ let mut rng = TestRng::default();
+
+ // Empty pool: no validators.
+ assert_eq!(pool.number_of_connected_validators(), Some(0));
+
+ // Insert 2 validators and 1 client.
+ let (addr1, peer1) = make_connected_peer(3000, NodeType::Validator, &mut rng);
+ let (addr2, peer2) = make_connected_peer(3001, NodeType::Validator, &mut rng);
+ let (addr3, peer3) = make_connected_peer(3002, NodeType::Client, &mut rng);
+ {
+ let mut pool_write = pool.peer_pool().write();
+ pool_write.insert(addr1, peer1);
+ pool_write.insert(addr2, peer2);
+ pool_write.insert(addr3, peer3);
+ }
+
+ assert_eq!(pool.number_of_connected_validators(), Some(2));
+ assert_eq!(pool.number_of_connected_peers(), 3);
+
+ // A candidate peer should not be counted as a validator.
+ let candidate_addr = SocketAddr::from(([127, 0, 0, 1], 3003));
+ pool.peer_pool().write().insert(candidate_addr, Peer::new_candidate(candidate_addr, false));
+
+ assert_eq!(pool.number_of_connected_validators(), Some(2));
+ assert_eq!(pool.number_of_connected_peers(), 3);
+ }
+}
diff --git a/node/rest/Cargo.toml b/node/rest/Cargo.toml
index 67eb29263b..132a425184 100644
--- a/node/rest/Cargo.toml
+++ b/node/rest/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "snarkos-node-rest"
-version = "4.8.1"
+version = "4.9.0"
authors = [ "The Aleo Team " ]
description = "A REST API server for a decentralized virtual machine"
homepage = "https://aleo.org"
diff --git a/node/rest/src/routes.rs b/node/rest/src/routes.rs
index f35735de60..87c0b61110 100644
--- a/node/rest/src/routes.rs
+++ b/node/rest/src/routes.rs
@@ -97,6 +97,18 @@ fn parse_view_inputs(inputs: &[String]) -> Result>, Res
.collect::, _>>()
}
+fn map_missing_resource_error(err: anyhow::Error) -> RestError {
+ let error_message = err.to_string();
+ if error_message.contains("Missing")
+ || error_message.contains("does not exist in storage")
+ || error_message.contains("Failed to find")
+ {
+ RestError::not_found(err)
+ } else {
+ RestError::from(err)
+ }
+}
+
/// Deserialize a CSV string into a vector of strings.
fn de_csv<'de, D>(de: D) -> std::result::Result, D::Error>
where
@@ -225,7 +237,10 @@ impl, R: Routing> Rest {
// Manually parse the height or the height of the hash, axum doesn't support different types
// for the same path param.
let hash = if let Ok(height) = height_or_hash.parse::() {
- rest.ledger.get_hash(height).with_context(|| "Failed to get a block's hash")?
+ rest.ledger
+ .get_hash(height)
+ .with_context(|| "Failed to get a block's hash")
+ .map_err(map_missing_resource_error)?
} else if let Ok(hash) = height_or_hash.parse::() {
hash
} else {
@@ -284,7 +299,7 @@ impl, R: Routing> Rest {
// Prepare a closure for the blocking work.
let get_json_blocks = move || -> Result {
let blocks = cfg_into_iter!(start_height..end_height)
- .map(|height| rest.ledger.get_block(height))
+ .map(|height| rest.ledger.get_block(height).map_err(map_missing_resource_error))
.collect::, _>>()?;
Ok(ErasedJson::pretty(blocks))
@@ -897,7 +912,7 @@ impl, R: Routing> Rest {
State(rest): State,
Path(input_or_output_id): Path>,
) -> Result {
- Ok(ErasedJson::pretty(rest.ledger.find_transition_id(&input_or_output_id)?))
+ Ok(ErasedJson::pretty(rest.ledger.find_transition_id(&input_or_output_id).map_err(map_missing_resource_error)?))
}
/// POST //transaction/broadcast
@@ -1296,6 +1311,7 @@ impl, R: Routing> Rest {
block.cumulative_proof_target(),
block.previous_hash(),
None,
+ None,
)?;
// Get the current (latest-edition) stack for the program.
@@ -1503,3 +1519,35 @@ mod tests {
assert!(err.to_string().contains("Invalid key at index 1"));
}
}
+
+#[cfg(test)]
+mod route_error_tests {
+ use super::*;
+ use axum::http::StatusCode;
+
+ #[test]
+ fn missing_resource_errors_map_to_not_found() {
+ let message = "Missing block hash for block 10";
+ let err = map_missing_resource_error(anyhow::anyhow!(message));
+ assert_eq!(err, StatusCode::NOT_FOUND);
+ assert_eq!(err.to_string(), message);
+
+ let message = "Block 10 does not exist in storage";
+ let err = map_missing_resource_error(anyhow::anyhow!(message));
+ assert_eq!(err, StatusCode::NOT_FOUND);
+ assert_eq!(err.to_string(), message);
+
+ let message = "Failed to find the transition ID for the given input or output ID '123field'";
+ let err = map_missing_resource_error(anyhow::anyhow!(message));
+ assert_eq!(err, StatusCode::NOT_FOUND);
+ assert_eq!(err.to_string(), message);
+ }
+
+ #[test]
+ fn non_missing_resource_errors_remain_internal_server_error() {
+ let message = "disk I/O failed";
+ let err = map_missing_resource_error(anyhow::anyhow!(message));
+ assert_eq!(err, StatusCode::INTERNAL_SERVER_ERROR);
+ assert_eq!(err.to_string(), message);
+ }
+}
diff --git a/node/router/Cargo.toml b/node/router/Cargo.toml
index 5c93a6ff63..23bcd4fdcf 100644
--- a/node/router/Cargo.toml
+++ b/node/router/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "snarkos-node-router"
-version = "4.8.1"
+version = "4.9.0"
authors = [ "The Aleo Team " ]
description = "A node router for a decentralized operating system"
homepage = "https://aleo.org"
diff --git a/node/router/messages/Cargo.toml b/node/router/messages/Cargo.toml
index 67630e01a1..1a33096bac 100644
--- a/node/router/messages/Cargo.toml
+++ b/node/router/messages/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "snarkos-node-router-messages"
-version = "4.8.1"
+version = "4.9.0"
authors = [ "The Aleo Team " ]
description = "Node messages for a decentralized operating system"
homepage = "https://aleo.org"
diff --git a/node/router/messages/src/lib.rs b/node/router/messages/src/lib.rs
index 7f3f1e7893..367b7b49a9 100644
--- a/node/router/messages/src/lib.rs
+++ b/node/router/messages/src/lib.rs
@@ -67,6 +67,7 @@ use snarkvm::prelude::{
Address,
ConsensusVersion,
FromBytes,
+ MainnetV0,
Network,
Signature,
ToBytes,
@@ -77,6 +78,19 @@ use snarkvm::prelude::{
use std::{borrow::Cow, io, net::SocketAddr};
+// A compile-time compatibility check for the Message.
+const _: () = {
+ let msg_versions = Message::::VERSIONS;
+ let net_versions = MainnetV0::_CONSENSUS_VERSION_HEIGHTS;
+
+ let message_version = msg_versions[msg_versions.len() - 1].0;
+ let expected_version = net_versions[net_versions.len() - 1].0;
+
+ if message_version as u16 != expected_version as u16 {
+ panic!("Message <> ConsensusVersion mismatch!");
+ }
+};
+
pub trait MessageTrait: ToBytes + FromBytes {
/// Returns the message name.
fn name(&self) -> Cow<'static, str>;
@@ -108,7 +122,7 @@ impl From for Message {
impl Message {
/// The version of the network protocol; this is incremented for breaking changes between migration versions.
// Note. This should be incremented for each new `ConsensusVersion` that is added.
- pub const VERSIONS: [(ConsensusVersion, u32); 12] = [
+ pub const VERSIONS: [(ConsensusVersion, u32); 13] = [
(ConsensusVersion::V5, 17),
(ConsensusVersion::V7, 18),
(ConsensusVersion::V8, 19),
@@ -121,6 +135,7 @@ impl Message {
(ConsensusVersion::V15, 26),
(ConsensusVersion::V16, 27),
(ConsensusVersion::V17, 28),
+ (ConsensusVersion::V18, 29),
];
/// Returns the latest message version.
@@ -320,19 +335,4 @@ mod tests {
consensus_constants_increasing_heights::();
consensus_constants_increasing_heights::();
}
-
- #[test]
- fn test_latest_consensus_version() {
- let message_consensus_version = Message::::VERSIONS.last().unwrap().0;
- let expected_consensus_version = MainnetV0::CONSENSUS_VERSION_HEIGHTS().last().unwrap().0;
- assert_eq!(message_consensus_version, expected_consensus_version);
-
- let message_consensus_version = Message::::VERSIONS.last().unwrap().0;
- let expected_consensus_version = TestnetV0::CONSENSUS_VERSION_HEIGHTS().last().unwrap().0;
- assert_eq!(message_consensus_version, expected_consensus_version);
-
- let message_consensus_version = Message::::VERSIONS.last().unwrap().0;
- let expected_consensus_version = CanaryV0::CONSENSUS_VERSION_HEIGHTS().last().unwrap().0;
- assert_eq!(message_consensus_version, expected_consensus_version);
- }
}
diff --git a/node/router/src/heartbeat.rs b/node/router/src/heartbeat.rs
index 2e44a29187..9b53d286bc 100644
--- a/node/router/src/heartbeat.rs
+++ b/node/router/src/heartbeat.rs
@@ -320,7 +320,7 @@ pub trait Heartbeat: Outbound {
/// Helper function that attempts to connect the given peers.
///
/// Used by [`Self::handle_trusted_peers`] and [`Self::handle_connected_peers`].
- async fn try_connect_to_peers(&self, peers: impl Iterator- + Send + 'static) {
+ async fn try_connect_to_peers(&self, peers: impl Iterator
- > + Send + 'static) {
let (peer_info, hdls): (Vec<_>, Vec<_>) = peers
.filter_map(|peer| {
let peer_type = if peer.trusted { "trusted peer" } else { "peer" };
diff --git a/node/src/client/router.rs b/node/src/client/router.rs
index c9611a5407..3f8d2d98ce 100644
--- a/node/src/client/router.rs
+++ b/node/src/client/router.rs
@@ -237,7 +237,13 @@ impl> Inbound for Client {
debug!("{}", flatten_error(err.context(format!("Ignoring block response from peer '{peer_ip}'"))));
true
}
- Err(err) if err.is_invalid_consensus_version() => {
+ Err(err) if err.is_consensus_version_ahead() => {
+ let err: anyhow::Error = err.into();
+ let err = err.context(format!("Peer sent a block response with a newer consensus version '{peer_ip}'"));
+ warn!("{}", flatten_error(&err));
+ true
+ }
+ Err(err) if err.is_consensus_version_behind() => {
// If the error indicates the peer missed an upgrade and forked, ban it.
let err: anyhow::Error = err.into();
let err = err.context(format!("Peer sent an invalid block response '{peer_ip}'"));
diff --git a/node/src/traits.rs b/node/src/traits.rs
index cbde673213..c96abf7e78 100644
--- a/node/src/traits.rs
+++ b/node/src/traits.rs
@@ -61,8 +61,15 @@ pub trait NodeInterface: Routing {
// Check if there are any stragglers left.
if let Some(handle) = &handler.handle {
let live_tasks = handle.metrics().num_alive_tasks();
- if live_tasks != 0 {
- error!("There are still {live_tasks} live tasks");
+ let expected_leftover = if cfg!(unix) {
+ // The 1 "extra" task comes from the FD monitor, which is aborted once
+ // wait_for_signals concludes its work.
+ 1
+ } else {
+ 0
+ };
+ if live_tasks > expected_leftover {
+ error!("There are {} surplus live tasks", live_tasks - expected_leftover);
}
}
}
diff --git a/node/sync/Cargo.toml b/node/sync/Cargo.toml
index c2c1867b01..da967ab9c9 100644
--- a/node/sync/Cargo.toml
+++ b/node/sync/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "snarkos-node-sync"
-version = "4.8.1"
+version = "4.9.0"
authors = [ "The Aleo Team " ]
description = "A synchronization module for a decentralized operating system"
homepage = "https://aleo.org"
diff --git a/node/sync/communication-service/Cargo.toml b/node/sync/communication-service/Cargo.toml
index e5955a5180..a595b4f0f6 100644
--- a/node/sync/communication-service/Cargo.toml
+++ b/node/sync/communication-service/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "snarkos-node-sync-communication-service"
-version = "4.8.1"
+version = "4.9.0"
authors = [ "The Aleo Team " ]
description = "A communication service for the sync module in a decentralized operating system"
homepage = "https://aleo.org"
diff --git a/node/sync/locators/Cargo.toml b/node/sync/locators/Cargo.toml
index aff6398740..7ef2feb11d 100644
--- a/node/sync/locators/Cargo.toml
+++ b/node/sync/locators/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "snarkos-node-sync-locators"
-version = "4.8.1"
+version = "4.9.0"
authors = [ "The Aleo Team " ]
description = "Locators to synchronize a decentralized operating system"
homepage = "https://aleo.org"
diff --git a/node/sync/src/block_sync.rs b/node/sync/src/block_sync.rs
index 617ed6f896..198fb08af5 100644
--- a/node/sync/src/block_sync.rs
+++ b/node/sync/src/block_sync.rs
@@ -133,9 +133,13 @@ pub enum InsertBlockResponseError {
#[error("The peer did not send a consensus version")]
NoConsensusVersion,
#[error(
- "The peer's consensus version for height {last_height} does not match ours: expected {expected_version}, got {peer_version}"
+ "The peer's consensus version for height {last_height} is ahead of ours: expected {expected_version}, got {peer_version}"
)]
- ConsensusVersionMismatch { peer_version: ConsensusVersion, expected_version: ConsensusVersion, last_height: u32 },
+ ConsensusVersionAhead { peer_version: ConsensusVersion, expected_version: ConsensusVersion, last_height: u32 },
+ #[error(
+ "The peer's consensus version for height {last_height} is behind ours: expected {expected_version}, got {peer_version}"
+ )]
+ ConsensusVersionBehind { peer_version: ConsensusVersion, expected_version: ConsensusVersion, last_height: u32 },
#[error("Block Sync already advanced to block {height}")]
BlockSyncAlreadyAdvanced { height: u32 },
#[error("No such request for height {height}")]
@@ -160,9 +164,14 @@ impl InsertBlockResponseError {
matches!(self, Self::NoSuchRequest { .. } | Self::BlockSyncAlreadyAdvanced { .. })
}
- // Returns true if the error is about an invalid consensus version.
- pub fn is_invalid_consensus_version(&self) -> bool {
- matches!(self, Self::ConsensusVersionMismatch { .. } | Self::NoConsensusVersion)
+ // Returns true if the peer's consensus version is ahead of ours.
+ pub fn is_consensus_version_ahead(&self) -> bool {
+ matches!(self, Self::ConsensusVersionAhead { .. })
+ }
+
+ // Returns true if the peer's consensus version is behind ours or missing.
+ pub fn is_consensus_version_behind(&self) -> bool {
+ matches!(self, Self::ConsensusVersionBehind { .. } | Self::NoConsensusVersion)
}
}
@@ -662,10 +671,18 @@ impl BlockSync {
if expected_consensus_version >= ConsensusVersion::V12 {
if let Some(peer_version) = latest_consensus_version {
if peer_version != expected_consensus_version {
- break 'outer Err(InsertBlockResponseError::ConsensusVersionMismatch {
- peer_version,
- expected_version: expected_consensus_version,
- last_height,
+ break 'outer Err(if peer_version > expected_consensus_version {
+ InsertBlockResponseError::ConsensusVersionAhead {
+ peer_version,
+ expected_version: expected_consensus_version,
+ last_height,
+ }
+ } else {
+ InsertBlockResponseError::ConsensusVersionBehind {
+ peer_version,
+ expected_version: expected_consensus_version,
+ last_height,
+ }
});
}
} else {
@@ -1103,7 +1120,7 @@ impl BlockSync {
let Some((sync_peers, min_common_ancestor)) = self.find_sync_peers_inner(start_height) else {
// This generally shouldn't happen, because there cannot be outstanding requests when no peers are connected.
- error!("Cannot re-request blocks because no or not enough peers are connected");
+ warn!("Cannot re-request blocks because no or not enough peers are connected");
return result;
};
diff --git a/node/tcp/Cargo.toml b/node/tcp/Cargo.toml
index 92f5764e16..10855edb64 100644
--- a/node/tcp/Cargo.toml
+++ b/node/tcp/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "snarkos-node-tcp"
-version = "4.8.1"
+version = "4.9.0"
authors = [ "The Aleo Team " ]
description = "A TCP stack for a decentralized operating system"
homepage = "https://aleo.org"
diff --git a/utilities/Cargo.toml b/utilities/Cargo.toml
index e4c9e8c5b2..08dc4b2226 100644
--- a/utilities/Cargo.toml
+++ b/utilities/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "snarkos-utilities"
-version = "4.8.1"
+version = "4.9.0"
authors = [ "The Aleo Team " ]
description = "Utilities for a decentralized operating system"
homepage = "https://aleo.org"