From fb424220a840ba712c53ea5854567144f137955d Mon Sep 17 00:00:00 2001 From: Arya Date: Fri, 21 Jun 2024 10:32:33 -0400 Subject: [PATCH 01/11] fix(tests): Address port conflict issues and enable related Windows tests (#8624) * Uses an OS-assigned port when testing rpc_server_spawn * reads port from logs and enables 2 acceptance tests on Windows * generalizes read listen addr from logs fn and re-enables another test * updates zebra-grpc snapshot tests to use OS-assigned port * Re-enable grpc vectors tests on Windows while avoiding port conflicts --------- Co-authored-by: Alfredo Garcia --- zebra-grpc/src/server.rs | 32 ++++++++++++++++++------ zebra-grpc/src/tests/snapshot.rs | 30 +++++++++-------------- zebra-grpc/src/tests/vectors.rs | 27 ++++++--------------- zebra-rpc/src/server.rs | 5 +++- zebra-rpc/src/server/tests/vectors.rs | 4 +-- zebra-scan/src/init.rs | 3 ++- zebrad/tests/acceptance.rs | 23 ++++++------------ zebrad/tests/common/config.rs | 35 ++++++++++++++++++++++++++- 8 files changed, 92 insertions(+), 67 deletions(-) diff --git a/zebra-grpc/src/server.rs b/zebra-grpc/src/server.rs index b62cdb1c952..d20d9944028 100644 --- a/zebra-grpc/src/server.rs +++ b/zebra-grpc/src/server.rs @@ -2,9 +2,14 @@ use std::{collections::BTreeMap, net::SocketAddr, pin::Pin}; +use color_eyre::eyre::eyre; use futures_util::future::TryFutureExt; +use tokio::task::JoinHandle; use tokio_stream::{wrappers::ReceiverStream, Stream}; -use tonic::{transport::Server, Request, Response, Status}; +use tonic::{ + transport::{server::TcpIncoming, Server}, + Request, Response, Status, +}; use tower::{timeout::error::Elapsed, ServiceExt}; use zebra_chain::{block::Height, transaction}; @@ -436,11 +441,13 @@ impl From for ScanResponse { } } +type ServerTask = JoinHandle>; + /// Initializes the zebra-scan gRPC server pub async fn init( listen_addr: SocketAddr, scan_service: ScanService, -) -> Result<(), color_eyre::Report> +) -> Result<(ServerTask, SocketAddr), color_eyre::Report> where ScanService: tower::Service + Clone @@ -455,11 +462,20 @@ where .build() .unwrap(); - Server::builder() - .add_service(reflection_service) - .add_service(ScannerServer::new(service)) - .serve(listen_addr) - .await?; + let tcp_listener = tokio::net::TcpListener::bind(listen_addr).await?; + let listen_addr = tcp_listener.local_addr()?; + let incoming = + TcpIncoming::from_listener(tcp_listener, true, None).map_err(|err| eyre!(err))?; + + let server_task: JoinHandle> = tokio::spawn(async move { + Server::builder() + .add_service(reflection_service) + .add_service(ScannerServer::new(service)) + .serve_with_incoming(incoming) + .await?; + + Ok(()) + }); - Ok(()) + Ok((server_task, listen_addr)) } diff --git a/zebra-grpc/src/tests/snapshot.rs b/zebra-grpc/src/tests/snapshot.rs index 92e8b77aa8d..f468f85cf21 100644 --- a/zebra-grpc/src/tests/snapshot.rs +++ b/zebra-grpc/src/tests/snapshot.rs @@ -29,45 +29,37 @@ use crate::{ pub const ZECPAGES_SAPLING_VIEWING_KEY: &str = "zxviews1q0duytgcqqqqpqre26wkl45gvwwwd706xw608hucmvfalr759ejwf7qshjf5r9aa7323zulvz6plhttp5mltqcgs9t039cx2d09mgq05ts63n8u35hyv6h9nc9ctqqtue2u7cer2mqegunuulq2luhq3ywjcz35yyljewa4mgkgjzyfwh6fr6jd0dzd44ghk0nxdv2hnv4j5nxfwv24rwdmgllhe0p8568sgqt9ckt02v2kxf5ahtql6s0ltjpkckw8gtymxtxuu9gcr0swvz"; #[tokio::test(flavor = "multi_thread")] -#[cfg(not(target_os = "windows"))] async fn test_grpc_response_data() { let _init_guard = zebra_test::init(); tokio::join!( - test_mocked_rpc_response_data_for_network( - Network::Mainnet, - zebra_test::net::random_known_port() - ), - test_mocked_rpc_response_data_for_network( - Network::new_default_testnet(), - zebra_test::net::random_known_port() - ), + test_mocked_rpc_response_data_for_network(Network::Mainnet,), + test_mocked_rpc_response_data_for_network(Network::new_default_testnet(),), ); } -async fn test_mocked_rpc_response_data_for_network(network: Network, random_port: u16) { +async fn test_mocked_rpc_response_data_for_network(network: Network) { // get a mocked scan service let mock_scan_service = MockService::build().for_unit_tests(); // start the gRPC server - let listen_addr: std::net::SocketAddr = format!("127.0.0.1:{random_port}") + let listen_addr: std::net::SocketAddr = "127.0.0.1:0" .parse() .expect("hard-coded IP and u16 port should parse successfully"); - { + let (_server_task, listen_addr) = { let mock_scan_service = mock_scan_service.clone(); - tokio::spawn(async move { - init(listen_addr, mock_scan_service) - .await - .expect("Possible port conflict"); - }); - } + tokio::spawn(init(listen_addr, mock_scan_service)) + .await + .expect("task should join successfully") + .expect("should spawn tonic server") + }; // wait for the server to start sleep(Duration::from_secs(1)); // connect to the gRPC server - let client = ScannerClient::connect(format!("http://127.0.0.1:{random_port}")) + let client = ScannerClient::connect(format!("http://{listen_addr}")) .await .expect("server should receive connection"); diff --git a/zebra-grpc/src/tests/vectors.rs b/zebra-grpc/src/tests/vectors.rs index 9a1bf089d88..5d35eb49ce7 100644 --- a/zebra-grpc/src/tests/vectors.rs +++ b/zebra-grpc/src/tests/vectors.rs @@ -4,10 +4,7 @@ use std::{collections::BTreeMap, thread::sleep, time::Duration}; use tonic::transport::Channel; use zebra_chain::{block::Height, parameters::Network, transaction}; -use zebra_test::{ - mock_service::{MockService, PanicAssertion}, - net::random_known_port, -}; +use zebra_test::mock_service::{MockService, PanicAssertion}; use crate::{ scanner::{ @@ -26,11 +23,10 @@ pub const ZECPAGES_SAPLING_VIEWING_KEY: &str = "zxviews1q0duytgcqqqqpqre26wkl45g /// Test the gRPC methods with mocked responses #[tokio::test(flavor = "multi_thread")] -#[cfg(not(target_os = "windows"))] async fn test_grpc_methods_mocked() { let _init_guard = zebra_test::init(); - let (client, mock_scan_service) = start_server_and_get_client(random_known_port()).await; + let (client, mock_scan_service) = start_server_and_get_client().await; test_get_results_errors(client.clone()).await; test_register_keys_errors(client.clone()).await; @@ -231,9 +227,7 @@ async fn test_mocked_delete_keys_for_network( } /// Start the gRPC server, get a client and a mock service -async fn start_server_and_get_client( - random_port: u16, -) -> ( +async fn start_server_and_get_client() -> ( ScannerClient, MockService, ) { @@ -241,24 +235,19 @@ async fn start_server_and_get_client( let mock_scan_service = MockService::build().for_unit_tests(); // start the gRPC server - let listen_addr: std::net::SocketAddr = format!("127.0.0.1:{random_port}") + let listen_addr: std::net::SocketAddr = "127.0.0.1:0" .parse() .expect("hard-coded IP and u16 port should parse successfully"); - { - let mock_scan_service = mock_scan_service.clone(); - tokio::spawn(async move { - init(listen_addr, mock_scan_service) - .await - .expect("Possible port conflict"); - }); - } + let (_server_task, listen_addr) = init(listen_addr, mock_scan_service.clone()) + .await + .expect("Possible port conflict"); // wait for the server to start sleep(Duration::from_secs(1)); // connect to the gRPC server - let client = ScannerClient::connect(format!("http://127.0.0.1:{random_port}")) + let client = ScannerClient::connect(format!("http://{listen_addr}")) .await .expect("server should receive connection"); diff --git a/zebra-rpc/src/server.rs b/zebra-rpc/src/server.rs index f440d713211..b87068ef8f0 100644 --- a/zebra-rpc/src/server.rs +++ b/zebra-rpc/src/server.rs @@ -70,6 +70,9 @@ impl fmt::Debug for RpcServer { } } +/// The message to log when logging the RPC server's listen address +pub const OPENED_RPC_ENDPOINT_MSG: &str = "Opened RPC endpoint at "; + impl RpcServer { /// Start a new RPC server endpoint using the supplied configs and services. /// @@ -206,7 +209,7 @@ impl RpcServer { .start_http(&listen_addr) .expect("Unable to start RPC server"); - info!("Opened RPC endpoint at {}", server_instance.address()); + info!("{OPENED_RPC_ENDPOINT_MSG}{}", server_instance.address()); let close_handle = server_instance.close_handle(); diff --git a/zebra-rpc/src/server/tests/vectors.rs b/zebra-rpc/src/server/tests/vectors.rs index 26e0584777f..78b7bd81516 100644 --- a/zebra-rpc/src/server/tests/vectors.rs +++ b/zebra-rpc/src/server/tests/vectors.rs @@ -23,7 +23,6 @@ use super::super::*; /// Test that the JSON-RPC server spawns when configured with a single thread. #[test] -#[cfg(not(target_os = "windows"))] fn rpc_server_spawn_single_thread() { rpc_server_spawn(false) } @@ -42,9 +41,8 @@ fn rpc_server_spawn_parallel_threads() { fn rpc_server_spawn(parallel_cpu_threads: bool) { let _init_guard = zebra_test::init(); - let port = zebra_test::net::random_known_port(); let config = Config { - listen_addr: Some(SocketAddrV4::new(Ipv4Addr::LOCALHOST, port).into()), + listen_addr: Some(SocketAddrV4::new(Ipv4Addr::LOCALHOST, 0).into()), parallel_cpu_threads: if parallel_cpu_threads { 2 } else { 1 }, debug_force_finished_sync: false, }; diff --git a/zebra-scan/src/init.rs b/zebra-scan/src/init.rs index b0bfb6ad50f..cc5238e70dd 100644 --- a/zebra-scan/src/init.rs +++ b/zebra-scan/src/init.rs @@ -35,7 +35,8 @@ pub async fn init_with_server( info!(?listen_addr, "starting scan gRPC server"); // Start the gRPC server. - zebra_grpc::server::init(listen_addr, scan_service).await?; + let (server_task, _listen_addr) = zebra_grpc::server::init(listen_addr, scan_service).await?; + server_task.await??; Ok(()) } diff --git a/zebrad/tests/acceptance.rs b/zebrad/tests/acceptance.rs index a502447386f..c2a78a8879a 100644 --- a/zebrad/tests/acceptance.rs +++ b/zebrad/tests/acceptance.rs @@ -169,6 +169,7 @@ use zebra_chain::{ use zebra_consensus::ParameterCheckpoint; use zebra_network::constants::PORT_IN_USE_ERROR; use zebra_node_services::rpc_client::RpcRequestClient; +use zebra_rpc::server::OPENED_RPC_ENDPOINT_MSG; use zebra_state::{constants::LOCK_FILE_ERROR, state_database_format_version_in_code}; use zebra_test::{ @@ -182,10 +183,10 @@ mod common; use common::{ check::{is_zebrad_version, EphemeralCheck, EphemeralConfig}, - config::random_known_rpc_port_config, config::{ config_file_full_path, configs_dir, default_test_config, external_address_test_config, - persistent_test_config, testdir, + os_assigned_rpc_port_config, persistent_test_config, random_known_rpc_port_config, + read_listen_addr_from_logs, testdir, }, launch::{ spawn_zebrad_for_rpc, spawn_zebrad_without_rpc, ZebradTestDirExt, BETWEEN_NODES_DELAY, @@ -1549,7 +1550,6 @@ async fn tracing_endpoint() -> Result<()> { /// Test that the JSON-RPC endpoint responds to a request, /// when configured with a single thread. #[tokio::test] -#[cfg(not(target_os = "windows"))] async fn rpc_endpoint_single_thread() -> Result<()> { rpc_endpoint(false).await } @@ -1557,7 +1557,6 @@ async fn rpc_endpoint_single_thread() -> Result<()> { /// Test that the JSON-RPC endpoint responds to a request, /// when configured with multiple threads. #[tokio::test] -#[cfg(not(target_os = "windows"))] async fn rpc_endpoint_parallel_threads() -> Result<()> { rpc_endpoint(true).await } @@ -1574,18 +1573,15 @@ async fn rpc_endpoint(parallel_cpu_threads: bool) -> Result<()> { // Write a configuration that has RPC listen_addr set // [Note on port conflict](#Note on port conflict) - let mut config = random_known_rpc_port_config(parallel_cpu_threads, &Mainnet)?; + let mut config = os_assigned_rpc_port_config(parallel_cpu_threads, &Mainnet)?; let dir = testdir()?.with_config(&mut config)?; let mut child = dir.spawn_child(args!["start"])?; // Wait until port is open. - child.expect_stdout_line_matches( - format!("Opened RPC endpoint at {}", config.rpc.listen_addr.unwrap()).as_str(), - )?; - + let rpc_address = read_listen_addr_from_logs(&mut child, OPENED_RPC_ENDPOINT_MSG)?; // Create an http client - let client = RpcRequestClient::new(config.rpc.listen_addr.unwrap()); + let client = RpcRequestClient::new(rpc_address); // Make the call to the `getinfo` RPC method let res = client.call("getinfo", "[]".to_string()).await?; @@ -1625,7 +1621,6 @@ async fn rpc_endpoint(parallel_cpu_threads: bool) -> Result<()> { /// /// https://zcash.github.io/rpc/getblockchaininfo.html #[tokio::test] -#[cfg(not(target_os = "windows"))] async fn rpc_endpoint_client_content_type() -> Result<()> { let _init_guard = zebra_test::init(); if zebra_test::net::zebra_skip_network_tests() { @@ -1640,12 +1635,10 @@ async fn rpc_endpoint_client_content_type() -> Result<()> { let mut child = dir.spawn_child(args!["start"])?; // Wait until port is open. - child.expect_stdout_line_matches( - format!("Opened RPC endpoint at {}", config.rpc.listen_addr.unwrap()).as_str(), - )?; + let rpc_address = read_listen_addr_from_logs(&mut child, OPENED_RPC_ENDPOINT_MSG)?; // Create an http client - let client = RpcRequestClient::new(config.rpc.listen_addr.unwrap()); + let client = RpcRequestClient::new(rpc_address); // Call to `getinfo` RPC method with a no content type. let res = client diff --git a/zebrad/tests/common/config.rs b/zebrad/tests/common/config.rs index 560e9d3338c..ed399e9a26d 100644 --- a/zebrad/tests/common/config.rs +++ b/zebrad/tests/common/config.rs @@ -16,7 +16,7 @@ use color_eyre::eyre::Result; use tempfile::TempDir; use zebra_chain::parameters::Network; -use zebra_test::net::random_known_port; +use zebra_test::{command::TestChild, net::random_known_port}; use zebrad::{ components::{mempool, sync, tracing}, config::ZebradConfig, @@ -152,6 +152,27 @@ pub fn random_known_rpc_port_config( ) -> Result { // [Note on port conflict](#Note on port conflict) let listen_port = random_known_port(); + rpc_port_config(listen_port, parallel_cpu_threads, network) +} + +/// Returns a `zebrad` config with an OS-assigned RPC port. +/// +/// Set `parallel_cpu_threads` to true to auto-configure based on the number of CPU cores. +pub fn os_assigned_rpc_port_config( + parallel_cpu_threads: bool, + network: &Network, +) -> Result { + rpc_port_config(0, parallel_cpu_threads, network) +} + +/// Returns a `zebrad` config with the provided RPC port. +/// +/// Set `parallel_cpu_threads` to true to auto-configure based on the number of CPU cores. +pub fn rpc_port_config( + listen_port: u16, + parallel_cpu_threads: bool, + network: &Network, +) -> Result { let listen_ip = "127.0.0.1".parse().expect("hard-coded IP is valid"); let zebra_rpc_listener = SocketAddr::new(listen_ip, listen_port); @@ -169,3 +190,15 @@ pub fn random_known_rpc_port_config( Ok(config) } + +/// Reads Zebra's RPC server listen address from a testchild's logs +pub fn read_listen_addr_from_logs( + child: &mut TestChild, + expected_msg: &str, +) -> Result { + let line = child.expect_stdout_line_matches(expected_msg)?; + let rpc_addr_position = + line.find(expected_msg).expect("already checked for match") + expected_msg.len(); + let rpc_addr = line[rpc_addr_position..].trim().to_string(); + Ok(rpc_addr.parse()?) +} From 76bad07c688158f99e82a76ba8d322e384327a2b Mon Sep 17 00:00:00 2001 From: Alfredo Garcia Date: Mon, 24 Jun 2024 17:09:57 -0300 Subject: [PATCH 02/11] add(support): Include Windows as a tier2 supported platform (#8637) * add windows to tier2 supported platforms document * add changelog entry --- CHANGELOG.md | 3 ++- book/src/user/supported-platforms.md | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dd2dfe2c6dd..2e1e841ba73 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,7 +17,8 @@ and this project adheres to [Semantic Versioning](https://semver.org). - We're no longer using general conditional compilation attributes for `tor`, but only feature flags instead. - Fixed a bug with trailing characters in the openapi spec method descriptions ([#8597](https://github.com/ZcashFoundation/zebra/pull/8597)) -- Added default constructions for several RPC method responses([#8616](https://github.com/ZcashFoundation/zebra/pull/8616)) +- Added default constructions for several RPC method responses ([#8616](https://github.com/ZcashFoundation/zebra/pull/8616)) +- Added Windows to the list of supported platforms in Tier 2 ([#8637](https://github.com/ZcashFoundation/zebra/pull/8637)) ## [Zebra 1.7.0](https://github.com/ZcashFoundation/zebra/releases/tag/v1.7.0) - 2024-05-07 diff --git a/book/src/user/supported-platforms.md b/book/src/user/supported-platforms.md index cbb83cdc840..3220ce72d59 100644 --- a/book/src/user/supported-platforms.md +++ b/book/src/user/supported-platforms.md @@ -35,6 +35,7 @@ For the full requirements, see [Tier 2 platform policy](platform-tier-policy.md# | `x86_64-unknown-linux-gnu` | [GitHub ubuntu-latest](https://github.com/actions/virtual-environments#available-environments) | 64-bit | [latest stable release](https://github.com/rust-lang/rust/releases) | N/A | `x86_64-unknown-linux-gnu` | [GitHub ubuntu-latest](https://github.com/actions/virtual-environments#available-environments) | 64-bit | [latest beta release](https://github.com/rust-lang/rust/blob/beta/src/version) | N/A | `x86_64-apple-darwin` | [GitHub macos-latest](https://github.com/actions/virtual-environments#available-environments) | 64-bit | [latest stable release](https://github.com/rust-lang/rust/releases) | N/A +| `x86_64-pc-windows-msvc` | [GitHub windows-latest](https://github.com/actions/virtual-environments#available-environments) | 64-bit | [latest stable release](https://github.com/rust-lang/rust/releases) | N/A ## Tier 3 From d6b45884116af31bf7f0b648d3d5063ab09ef9fe Mon Sep 17 00:00:00 2001 From: Arya Date: Tue, 25 Jun 2024 10:03:23 -0400 Subject: [PATCH 03/11] change(deps): Initializes `cargo vet` in Zebra (#8641) * Initializes cargo vet in Zebra * adds audits from zcash/zcashd, google, and mozilla as trusted audits --- supply-chain/audits.toml | 4 + supply-chain/config.toml | 2063 +++++++++++++++++++++++++++++++++++++ supply-chain/imports.lock | 1174 +++++++++++++++++++++ 3 files changed, 3241 insertions(+) create mode 100644 supply-chain/audits.toml create mode 100644 supply-chain/config.toml create mode 100644 supply-chain/imports.lock diff --git a/supply-chain/audits.toml b/supply-chain/audits.toml new file mode 100644 index 00000000000..2772ccb21f3 --- /dev/null +++ b/supply-chain/audits.toml @@ -0,0 +1,4 @@ + +# cargo-vet audits file + +[audits] diff --git a/supply-chain/config.toml b/supply-chain/config.toml new file mode 100644 index 00000000000..ad3e7aac56a --- /dev/null +++ b/supply-chain/config.toml @@ -0,0 +1,2063 @@ + +# cargo-vet config file + +[cargo-vet] +version = "0.9" + +[imports.google] +url = "https://raw.githubusercontent.com/google/supply-chain/main/audits.toml" + +[imports.mozilla] +url = "https://raw.githubusercontent.com/mozilla/supply-chain/main/audits.toml" + +[imports.zcash] +url = "https://raw.githubusercontent.com/zcash/rust-ecosystem/main/supply-chain/audits.toml" + +[imports.zcashd] +url = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[policy.tower-batch-control] +audit-as-crates-io = true + +[policy.tower-fallback] +audit-as-crates-io = true + +[policy.zebra-chain] +audit-as-crates-io = true + +[policy.zebra-consensus] +audit-as-crates-io = true + +[policy.zebra-grpc] +audit-as-crates-io = true + +[policy.zebra-network] +audit-as-crates-io = true + +[policy.zebra-node-services] +audit-as-crates-io = true + +[policy.zebra-rpc] +audit-as-crates-io = true + +[policy.zebra-scan] +audit-as-crates-io = true + +[policy.zebra-script] +audit-as-crates-io = true + +[policy.zebra-state] +audit-as-crates-io = true + +[policy.zebra-test] +audit-as-crates-io = true + +[policy.zebra-utils] +audit-as-crates-io = true + +[policy.zebrad] +audit-as-crates-io = true + +[[exemptions.abscissa_core]] +version = "0.7.0" +criteria = "safe-to-deploy" + +[[exemptions.abscissa_derive]] +version = "0.7.0" +criteria = "safe-to-deploy" + +[[exemptions.addr2line]] +version = "0.21.0" +criteria = "safe-to-deploy" + +[[exemptions.adler]] +version = "1.0.2" +criteria = "safe-to-deploy" + +[[exemptions.aead]] +version = "0.5.2" +criteria = "safe-to-deploy" + +[[exemptions.aes]] +version = "0.8.4" +criteria = "safe-to-deploy" + +[[exemptions.ahash]] +version = "0.8.11" +criteria = "safe-to-deploy" + +[[exemptions.aho-corasick]] +version = "1.1.3" +criteria = "safe-to-deploy" + +[[exemptions.allocator-api2]] +version = "0.2.18" +criteria = "safe-to-deploy" + +[[exemptions.android-tzdata]] +version = "0.1.1" +criteria = "safe-to-deploy" + +[[exemptions.anes]] +version = "0.1.6" +criteria = "safe-to-run" + +[[exemptions.ansi_term]] +version = "0.12.1" +criteria = "safe-to-deploy" + +[[exemptions.anstream]] +version = "0.6.14" +criteria = "safe-to-deploy" + +[[exemptions.anstyle]] +version = "1.0.7" +criteria = "safe-to-deploy" + +[[exemptions.anstyle-parse]] +version = "0.2.4" +criteria = "safe-to-deploy" + +[[exemptions.anstyle-query]] +version = "1.0.3" +criteria = "safe-to-deploy" + +[[exemptions.anstyle-wincon]] +version = "3.0.3" +criteria = "safe-to-deploy" + +[[exemptions.anyhow]] +version = "1.0.82" +criteria = "safe-to-deploy" + +[[exemptions.arc-swap]] +version = "1.7.1" +criteria = "safe-to-deploy" + +[[exemptions.arrayref]] +version = "0.3.7" +criteria = "safe-to-deploy" + +[[exemptions.arrayvec]] +version = "0.7.4" +criteria = "safe-to-deploy" + +[[exemptions.async-compression]] +version = "0.4.9" +criteria = "safe-to-deploy" + +[[exemptions.async-trait]] +version = "0.1.80" +criteria = "safe-to-deploy" + +[[exemptions.atty]] +version = "0.2.14" +criteria = "safe-to-deploy" + +[[exemptions.axum]] +version = "0.6.20" +criteria = "safe-to-deploy" + +[[exemptions.axum-core]] +version = "0.3.4" +criteria = "safe-to-deploy" + +[[exemptions.backtrace]] +version = "0.3.71" +criteria = "safe-to-deploy" + +[[exemptions.base64]] +version = "0.11.0" +criteria = "safe-to-deploy" + +[[exemptions.base64]] +version = "0.21.7" +criteria = "safe-to-deploy" + +[[exemptions.base64]] +version = "0.22.1" +criteria = "safe-to-deploy" + +[[exemptions.base64ct]] +version = "1.0.1" +criteria = "safe-to-deploy" + +[[exemptions.bech32]] +version = "0.9.1" +criteria = "safe-to-deploy" + +[[exemptions.bellman]] +version = "0.14.0" +criteria = "safe-to-deploy" + +[[exemptions.bincode]] +version = "1.3.3" +criteria = "safe-to-deploy" + +[[exemptions.bip0039]] +version = "0.10.1" +criteria = "safe-to-deploy" + +[[exemptions.bitflags]] +version = "1.3.2" +criteria = "safe-to-deploy" + +[[exemptions.bitflags-serde-legacy]] +version = "0.1.1" +criteria = "safe-to-deploy" + +[[exemptions.bitvec]] +version = "1.0.1" +criteria = "safe-to-deploy" + +[[exemptions.blake2b_simd]] +version = "1.0.2" +criteria = "safe-to-deploy" + +[[exemptions.blake2s_simd]] +version = "1.0.2" +criteria = "safe-to-deploy" + +[[exemptions.block-buffer]] +version = "0.10.4" +criteria = "safe-to-deploy" + +[[exemptions.bls12_381]] +version = "0.8.0" +criteria = "safe-to-deploy" + +[[exemptions.bridgetree]] +version = "0.4.0" +criteria = "safe-to-deploy" + +[[exemptions.bs58]] +version = "0.5.1" +criteria = "safe-to-deploy" + +[[exemptions.bstr]] +version = "1.9.1" +criteria = "safe-to-deploy" + +[[exemptions.bumpalo]] +version = "3.16.0" +criteria = "safe-to-deploy" + +[[exemptions.byte-slice-cast]] +version = "1.2.2" +criteria = "safe-to-deploy" + +[[exemptions.byteorder]] +version = "1.5.0" +criteria = "safe-to-deploy" + +[[exemptions.bytes]] +version = "1.6.0" +criteria = "safe-to-deploy" + +[[exemptions.bzip2-sys]] +version = "0.1.11+1.0.8" +criteria = "safe-to-deploy" + +[[exemptions.camino]] +version = "1.1.6" +criteria = "safe-to-deploy" + +[[exemptions.canonical-path]] +version = "2.0.2" +criteria = "safe-to-deploy" + +[[exemptions.cargo-platform]] +version = "0.1.8" +criteria = "safe-to-deploy" + +[[exemptions.cargo_metadata]] +version = "0.18.1" +criteria = "safe-to-deploy" + +[[exemptions.cbc]] +version = "0.1.2" +criteria = "safe-to-deploy" + +[[exemptions.cc]] +version = "1.0.96" +criteria = "safe-to-deploy" + +[[exemptions.cfg-if]] +version = "0.1.10" +criteria = "safe-to-deploy" + +[[exemptions.chacha20]] +version = "0.9.1" +criteria = "safe-to-deploy" + +[[exemptions.chacha20poly1305]] +version = "0.10.1" +criteria = "safe-to-deploy" + +[[exemptions.chrono]] +version = "0.4.38" +criteria = "safe-to-deploy" + +[[exemptions.ciborium]] +version = "0.2.2" +criteria = "safe-to-run" + +[[exemptions.ciborium-io]] +version = "0.2.2" +criteria = "safe-to-run" + +[[exemptions.ciborium-ll]] +version = "0.2.2" +criteria = "safe-to-run" + +[[exemptions.cipher]] +version = "0.4.4" +criteria = "safe-to-deploy" + +[[exemptions.clang-sys]] +version = "1.7.0" +criteria = "safe-to-deploy" + +[[exemptions.clap]] +version = "2.34.0" +criteria = "safe-to-deploy" + +[[exemptions.clap]] +version = "4.5.4" +criteria = "safe-to-deploy" + +[[exemptions.clap_builder]] +version = "4.5.2" +criteria = "safe-to-deploy" + +[[exemptions.clap_derive]] +version = "4.5.4" +criteria = "safe-to-deploy" + +[[exemptions.clap_lex]] +version = "0.7.0" +criteria = "safe-to-deploy" + +[[exemptions.color-eyre]] +version = "0.6.3" +criteria = "safe-to-deploy" + +[[exemptions.color-spantrace]] +version = "0.2.1" +criteria = "safe-to-deploy" + +[[exemptions.colorchoice]] +version = "1.0.1" +criteria = "safe-to-deploy" + +[[exemptions.console]] +version = "0.15.8" +criteria = "safe-to-deploy" + +[[exemptions.console-api]] +version = "0.6.0" +criteria = "safe-to-deploy" + +[[exemptions.console-subscriber]] +version = "0.2.0" +criteria = "safe-to-deploy" + +[[exemptions.const-oid]] +version = "0.9.6" +criteria = "safe-to-deploy" + +[[exemptions.constant_time_eq]] +version = "0.3.0" +criteria = "safe-to-deploy" + +[[exemptions.core-foundation-sys]] +version = "0.8.6" +criteria = "safe-to-deploy" + +[[exemptions.cpufeatures]] +version = "0.2.12" +criteria = "safe-to-deploy" + +[[exemptions.crc32fast]] +version = "1.4.0" +criteria = "safe-to-deploy" + +[[exemptions.criterion]] +version = "0.5.1" +criteria = "safe-to-run" + +[[exemptions.criterion-plot]] +version = "0.5.0" +criteria = "safe-to-run" + +[[exemptions.crossbeam-channel]] +version = "0.5.12" +criteria = "safe-to-deploy" + +[[exemptions.crossbeam-deque]] +version = "0.8.5" +criteria = "safe-to-deploy" + +[[exemptions.crossbeam-epoch]] +version = "0.9.18" +criteria = "safe-to-deploy" + +[[exemptions.crossbeam-utils]] +version = "0.8.19" +criteria = "safe-to-deploy" + +[[exemptions.crunchy]] +version = "0.2.2" +criteria = "safe-to-deploy" + +[[exemptions.crypto-common]] +version = "0.1.6" +criteria = "safe-to-deploy" + +[[exemptions.curve25519-dalek]] +version = "4.1.3" +criteria = "safe-to-deploy" + +[[exemptions.curve25519-dalek-derive]] +version = "0.1.1" +criteria = "safe-to-deploy" + +[[exemptions.darling]] +version = "0.13.4" +criteria = "safe-to-deploy" + +[[exemptions.darling]] +version = "0.20.8" +criteria = "safe-to-deploy" + +[[exemptions.darling_core]] +version = "0.13.4" +criteria = "safe-to-deploy" + +[[exemptions.darling_core]] +version = "0.20.8" +criteria = "safe-to-deploy" + +[[exemptions.darling_macro]] +version = "0.13.4" +criteria = "safe-to-deploy" + +[[exemptions.darling_macro]] +version = "0.20.8" +criteria = "safe-to-deploy" + +[[exemptions.der]] +version = "0.7.9" +criteria = "safe-to-deploy" + +[[exemptions.digest]] +version = "0.10.7" +criteria = "safe-to-deploy" + +[[exemptions.dirs]] +version = "5.0.1" +criteria = "safe-to-deploy" + +[[exemptions.dirs-sys]] +version = "0.4.1" +criteria = "safe-to-deploy" + +[[exemptions.dyn-clone]] +version = "1.0.17" +criteria = "safe-to-deploy" + +[[exemptions.ed25519]] +version = "2.2.3" +criteria = "safe-to-deploy" + +[[exemptions.ed25519-zebra]] +version = "4.0.3" +criteria = "safe-to-deploy" + +[[exemptions.elasticsearch]] +version = "8.5.0-alpha.1" +criteria = "safe-to-deploy" + +[[exemptions.encode_unicode]] +version = "0.3.6" +criteria = "safe-to-deploy" + +[[exemptions.env_logger]] +version = "0.7.1" +criteria = "safe-to-deploy" + +[[exemptions.equihash]] +version = "0.2.0" +criteria = "safe-to-deploy" + +[[exemptions.errno]] +version = "0.3.8" +criteria = "safe-to-deploy" + +[[exemptions.eyre]] +version = "0.6.12" +criteria = "safe-to-deploy" + +[[exemptions.f4jumble]] +version = "0.1.0" +criteria = "safe-to-deploy" + +[[exemptions.ff]] +version = "0.13.0" +criteria = "safe-to-deploy" + +[[exemptions.fiat-crypto]] +version = "0.2.8" +criteria = "safe-to-deploy" + +[[exemptions.fixed-hash]] +version = "0.8.0" +criteria = "safe-to-deploy" + +[[exemptions.fixedbitset]] +version = "0.4.2" +criteria = "safe-to-deploy" + +[[exemptions.flate2]] +version = "1.0.30" +criteria = "safe-to-deploy" + +[[exemptions.flume]] +version = "0.10.14" +criteria = "safe-to-deploy" + +[[exemptions.fpe]] +version = "0.6.1" +criteria = "safe-to-deploy" + +[[exemptions.fs-err]] +version = "2.11.0" +criteria = "safe-to-deploy" + +[[exemptions.funty]] +version = "2.0.0" +criteria = "safe-to-deploy" + +[[exemptions.futures]] +version = "0.3.30" +criteria = "safe-to-deploy" + +[[exemptions.futures-channel]] +version = "0.3.30" +criteria = "safe-to-deploy" + +[[exemptions.futures-core]] +version = "0.3.30" +criteria = "safe-to-deploy" + +[[exemptions.futures-executor]] +version = "0.3.30" +criteria = "safe-to-deploy" + +[[exemptions.futures-io]] +version = "0.3.30" +criteria = "safe-to-deploy" + +[[exemptions.futures-macro]] +version = "0.3.30" +criteria = "safe-to-deploy" + +[[exemptions.futures-sink]] +version = "0.3.30" +criteria = "safe-to-deploy" + +[[exemptions.futures-task]] +version = "0.3.30" +criteria = "safe-to-deploy" + +[[exemptions.futures-util]] +version = "0.3.30" +criteria = "safe-to-deploy" + +[[exemptions.generic-array]] +version = "0.14.7" +criteria = "safe-to-deploy" + +[[exemptions.getrandom]] +version = "0.1.16" +criteria = "safe-to-deploy" + +[[exemptions.getrandom]] +version = "0.2.14" +criteria = "safe-to-deploy" + +[[exemptions.gimli]] +version = "0.28.1" +criteria = "safe-to-deploy" + +[[exemptions.git2]] +version = "0.18.3" +criteria = "safe-to-deploy" + +[[exemptions.globset]] +version = "0.4.14" +criteria = "safe-to-deploy" + +[[exemptions.group]] +version = "0.13.0" +criteria = "safe-to-deploy" + +[[exemptions.h2]] +version = "0.3.26" +criteria = "safe-to-deploy" + +[[exemptions.h2]] +version = "0.4.4" +criteria = "safe-to-deploy" + +[[exemptions.half]] +version = "2.4.1" +criteria = "safe-to-run" + +[[exemptions.halo2_gadgets]] +version = "0.3.0" +criteria = "safe-to-deploy" + +[[exemptions.halo2_legacy_pdqsort]] +version = "0.1.0" +criteria = "safe-to-deploy" + +[[exemptions.halo2_proofs]] +version = "0.3.0" +criteria = "safe-to-deploy" + +[[exemptions.hashbrown]] +version = "0.14.5" +criteria = "safe-to-deploy" + +[[exemptions.hdrhistogram]] +version = "7.5.4" +criteria = "safe-to-deploy" + +[[exemptions.hdwallet]] +version = "0.4.1" +criteria = "safe-to-deploy" + +[[exemptions.heck]] +version = "0.3.3" +criteria = "safe-to-deploy" + +[[exemptions.heck]] +version = "0.5.0" +criteria = "safe-to-deploy" + +[[exemptions.hermit-abi]] +version = "0.1.19" +criteria = "safe-to-deploy" + +[[exemptions.hermit-abi]] +version = "0.3.9" +criteria = "safe-to-deploy" + +[[exemptions.hex-literal]] +version = "0.4.1" +criteria = "safe-to-deploy" + +[[exemptions.hmac]] +version = "0.12.1" +criteria = "safe-to-deploy" + +[[exemptions.home]] +version = "0.5.9" +criteria = "safe-to-deploy" + +[[exemptions.hostname]] +version = "0.4.0" +criteria = "safe-to-deploy" + +[[exemptions.howudoin]] +version = "0.1.2" +criteria = "safe-to-deploy" + +[[exemptions.http]] +version = "0.2.12" +criteria = "safe-to-deploy" + +[[exemptions.http]] +version = "1.1.0" +criteria = "safe-to-deploy" + +[[exemptions.http-body]] +version = "0.4.6" +criteria = "safe-to-deploy" + +[[exemptions.http-body]] +version = "1.0.0" +criteria = "safe-to-deploy" + +[[exemptions.http-body-util]] +version = "0.1.1" +criteria = "safe-to-deploy" + +[[exemptions.httparse]] +version = "1.8.0" +criteria = "safe-to-deploy" + +[[exemptions.human_bytes]] +version = "0.4.3" +criteria = "safe-to-deploy" + +[[exemptions.humantime]] +version = "2.1.0" +criteria = "safe-to-deploy" + +[[exemptions.humantime-serde]] +version = "1.1.1" +criteria = "safe-to-deploy" + +[[exemptions.hyper]] +version = "0.14.28" +criteria = "safe-to-deploy" + +[[exemptions.hyper]] +version = "1.3.1" +criteria = "safe-to-deploy" + +[[exemptions.hyper-rustls]] +version = "0.24.2" +criteria = "safe-to-deploy" + +[[exemptions.hyper-timeout]] +version = "0.4.1" +criteria = "safe-to-deploy" + +[[exemptions.hyper-util]] +version = "0.1.3" +criteria = "safe-to-deploy" + +[[exemptions.iana-time-zone]] +version = "0.1.60" +criteria = "safe-to-deploy" + +[[exemptions.iana-time-zone-haiku]] +version = "0.1.2" +criteria = "safe-to-deploy" + +[[exemptions.ident_case]] +version = "1.0.1" +criteria = "safe-to-deploy" + +[[exemptions.idna]] +version = "0.5.0" +criteria = "safe-to-deploy" + +[[exemptions.impl-codec]] +version = "0.6.0" +criteria = "safe-to-deploy" + +[[exemptions.impl-trait-for-tuples]] +version = "0.2.2" +criteria = "safe-to-deploy" + +[[exemptions.incrementalmerkletree]] +version = "0.5.1" +criteria = "safe-to-deploy" + +[[exemptions.indenter]] +version = "0.3.3" +criteria = "safe-to-deploy" + +[[exemptions.indexmap]] +version = "1.9.3" +criteria = "safe-to-deploy" + +[[exemptions.indexmap]] +version = "2.2.6" +criteria = "safe-to-deploy" + +[[exemptions.indicatif]] +version = "0.17.8" +criteria = "safe-to-deploy" + +[[exemptions.inferno]] +version = "0.11.19" +criteria = "safe-to-deploy" + +[[exemptions.insta]] +version = "1.39.0" +criteria = "safe-to-deploy" + +[[exemptions.instant]] +version = "0.1.12" +criteria = "safe-to-deploy" + +[[exemptions.ipnet]] +version = "2.9.0" +criteria = "safe-to-deploy" + +[[exemptions.is-terminal]] +version = "0.4.12" +criteria = "safe-to-deploy" + +[[exemptions.is_terminal_polyfill]] +version = "1.70.0" +criteria = "safe-to-deploy" + +[[exemptions.itertools]] +version = "0.10.5" +criteria = "safe-to-deploy" + +[[exemptions.itertools]] +version = "0.13.0" +criteria = "safe-to-deploy" + +[[exemptions.jobserver]] +version = "0.1.31" +criteria = "safe-to-deploy" + +[[exemptions.js-sys]] +version = "0.3.69" +criteria = "safe-to-deploy" + +[[exemptions.jsonrpc]] +version = "0.18.0" +criteria = "safe-to-deploy" + +[[exemptions.jsonrpc-core]] +version = "18.0.0" +criteria = "safe-to-deploy" + +[[exemptions.jsonrpc-derive]] +version = "18.0.0" +criteria = "safe-to-deploy" + +[[exemptions.jsonrpc-http-server]] +version = "18.0.0" +criteria = "safe-to-deploy" + +[[exemptions.jsonrpc-server-utils]] +version = "18.0.0" +criteria = "safe-to-deploy" + +[[exemptions.jubjub]] +version = "0.10.0" +criteria = "safe-to-deploy" + +[[exemptions.lazycell]] +version = "1.3.0" +criteria = "safe-to-deploy" + +[[exemptions.libc]] +version = "0.2.154" +criteria = "safe-to-deploy" + +[[exemptions.libgit2-sys]] +version = "0.16.2+1.7.2" +criteria = "safe-to-deploy" + +[[exemptions.libloading]] +version = "0.8.3" +criteria = "safe-to-deploy" + +[[exemptions.libm]] +version = "0.2.8" +criteria = "safe-to-deploy" + +[[exemptions.libredox]] +version = "0.1.3" +criteria = "safe-to-deploy" + +[[exemptions.librocksdb-sys]] +version = "0.16.0+8.10.0" +criteria = "safe-to-deploy" + +[[exemptions.libz-sys]] +version = "1.1.16" +criteria = "safe-to-deploy" + +[[exemptions.linux-raw-sys]] +version = "0.4.13" +criteria = "safe-to-deploy" + +[[exemptions.lock_api]] +version = "0.4.12" +criteria = "safe-to-deploy" + +[[exemptions.lz4-sys]] +version = "1.9.4" +criteria = "safe-to-deploy" + +[[exemptions.matchers]] +version = "0.1.0" +criteria = "safe-to-deploy" + +[[exemptions.matchit]] +version = "0.7.3" +criteria = "safe-to-deploy" + +[[exemptions.memchr]] +version = "2.7.2" +criteria = "safe-to-deploy" + +[[exemptions.memuse]] +version = "0.2.1" +criteria = "safe-to-deploy" + +[[exemptions.metrics]] +version = "0.22.3" +criteria = "safe-to-deploy" + +[[exemptions.metrics-exporter-prometheus]] +version = "0.14.0" +criteria = "safe-to-deploy" + +[[exemptions.metrics-util]] +version = "0.16.3" +criteria = "safe-to-deploy" + +[[exemptions.mime]] +version = "0.3.17" +criteria = "safe-to-deploy" + +[[exemptions.minimal-lexical]] +version = "0.2.1" +criteria = "safe-to-deploy" + +[[exemptions.miniz_oxide]] +version = "0.7.2" +criteria = "safe-to-deploy" + +[[exemptions.mio]] +version = "0.8.11" +criteria = "safe-to-deploy" + +[[exemptions.mset]] +version = "0.1.1" +criteria = "safe-to-deploy" + +[[exemptions.multimap]] +version = "0.10.0" +criteria = "safe-to-deploy" + +[[exemptions.nanorand]] +version = "0.7.0" +criteria = "safe-to-deploy" + +[[exemptions.net2]] +version = "0.2.39" +criteria = "safe-to-deploy" + +[[exemptions.nonempty]] +version = "0.7.0" +criteria = "safe-to-deploy" + +[[exemptions.nu-ansi-term]] +version = "0.46.0" +criteria = "safe-to-deploy" + +[[exemptions.num-bigint]] +version = "0.4.4" +criteria = "safe-to-deploy" + +[[exemptions.num-format]] +version = "0.4.4" +criteria = "safe-to-deploy" + +[[exemptions.num-integer]] +version = "0.1.46" +criteria = "safe-to-deploy" + +[[exemptions.num-traits]] +version = "0.2.18" +criteria = "safe-to-deploy" + +[[exemptions.num_cpus]] +version = "1.16.0" +criteria = "safe-to-deploy" + +[[exemptions.num_threads]] +version = "0.1.7" +criteria = "safe-to-deploy" + +[[exemptions.object]] +version = "0.32.2" +criteria = "safe-to-deploy" + +[[exemptions.once_cell]] +version = "1.19.0" +criteria = "safe-to-deploy" + +[[exemptions.oorandom]] +version = "11.1.3" +criteria = "safe-to-run" + +[[exemptions.opaque-debug]] +version = "0.3.1" +criteria = "safe-to-deploy" + +[[exemptions.option-ext]] +version = "0.2.0" +criteria = "safe-to-deploy" + +[[exemptions.orchard]] +version = "0.8.0" +criteria = "safe-to-deploy" + +[[exemptions.ordered-map]] +version = "0.4.2" +criteria = "safe-to-deploy" + +[[exemptions.os_info]] +version = "3.8.2" +criteria = "safe-to-deploy" + +[[exemptions.overload]] +version = "0.1.1" +criteria = "safe-to-deploy" + +[[exemptions.owo-colors]] +version = "3.5.0" +criteria = "safe-to-deploy" + +[[exemptions.owo-colors]] +version = "4.0.0" +criteria = "safe-to-deploy" + +[[exemptions.pairing]] +version = "0.23.0" +criteria = "safe-to-deploy" + +[[exemptions.parity-scale-codec]] +version = "3.6.9" +criteria = "safe-to-deploy" + +[[exemptions.parity-scale-codec-derive]] +version = "3.6.9" +criteria = "safe-to-deploy" + +[[exemptions.parking_lot]] +version = "0.11.2" +criteria = "safe-to-deploy" + +[[exemptions.parking_lot]] +version = "0.12.2" +criteria = "safe-to-deploy" + +[[exemptions.parking_lot_core]] +version = "0.8.6" +criteria = "safe-to-deploy" + +[[exemptions.parking_lot_core]] +version = "0.9.10" +criteria = "safe-to-deploy" + +[[exemptions.password-hash]] +version = "0.3.2" +criteria = "safe-to-deploy" + +[[exemptions.pasta_curves]] +version = "0.5.1" +criteria = "safe-to-deploy" + +[[exemptions.pbkdf2]] +version = "0.10.1" +criteria = "safe-to-deploy" + +[[exemptions.percent-encoding]] +version = "2.3.1" +criteria = "safe-to-deploy" + +[[exemptions.pest]] +version = "2.7.10" +criteria = "safe-to-deploy" + +[[exemptions.pest_derive]] +version = "2.7.10" +criteria = "safe-to-deploy" + +[[exemptions.pest_generator]] +version = "2.7.10" +criteria = "safe-to-deploy" + +[[exemptions.pest_meta]] +version = "2.7.10" +criteria = "safe-to-deploy" + +[[exemptions.petgraph]] +version = "0.6.4" +criteria = "safe-to-deploy" + +[[exemptions.pin-project]] +version = "1.1.5" +criteria = "safe-to-deploy" + +[[exemptions.pin-project-internal]] +version = "1.1.5" +criteria = "safe-to-deploy" + +[[exemptions.pin-utils]] +version = "0.1.0" +criteria = "safe-to-deploy" + +[[exemptions.pkcs8]] +version = "0.10.2" +criteria = "safe-to-deploy" + +[[exemptions.pkg-config]] +version = "0.3.30" +criteria = "safe-to-deploy" + +[[exemptions.plotters]] +version = "0.3.5" +criteria = "safe-to-run" + +[[exemptions.plotters-backend]] +version = "0.3.5" +criteria = "safe-to-run" + +[[exemptions.plotters-svg]] +version = "0.3.5" +criteria = "safe-to-run" + +[[exemptions.poly1305]] +version = "0.8.0" +criteria = "safe-to-deploy" + +[[exemptions.portable-atomic]] +version = "1.6.0" +criteria = "safe-to-deploy" + +[[exemptions.ppv-lite86]] +version = "0.2.17" +criteria = "safe-to-deploy" + +[[exemptions.prettyplease]] +version = "0.2.19" +criteria = "safe-to-deploy" + +[[exemptions.primitive-types]] +version = "0.12.2" +criteria = "safe-to-deploy" + +[[exemptions.proc-macro-crate]] +version = "0.1.5" +criteria = "safe-to-deploy" + +[[exemptions.proc-macro-crate]] +version = "2.0.0" +criteria = "safe-to-deploy" + +[[exemptions.proc-macro-error]] +version = "1.0.4" +criteria = "safe-to-deploy" + +[[exemptions.proptest]] +version = "1.4.0" +criteria = "safe-to-deploy" + +[[exemptions.proptest-derive]] +version = "0.4.0" +criteria = "safe-to-deploy" + +[[exemptions.prost]] +version = "0.12.6" +criteria = "safe-to-deploy" + +[[exemptions.prost-build]] +version = "0.12.4" +criteria = "safe-to-deploy" + +[[exemptions.prost-derive]] +version = "0.12.6" +criteria = "safe-to-deploy" + +[[exemptions.prost-types]] +version = "0.12.4" +criteria = "safe-to-deploy" + +[[exemptions.quanta]] +version = "0.12.3" +criteria = "safe-to-deploy" + +[[exemptions.quick-error]] +version = "1.2.3" +criteria = "safe-to-deploy" + +[[exemptions.quick-xml]] +version = "0.26.0" +criteria = "safe-to-deploy" + +[[exemptions.quickcheck]] +version = "0.9.2" +criteria = "safe-to-deploy" + +[[exemptions.quickcheck_macros]] +version = "0.9.1" +criteria = "safe-to-deploy" + +[[exemptions.radium]] +version = "0.7.0" +criteria = "safe-to-deploy" + +[[exemptions.rand]] +version = "0.7.3" +criteria = "safe-to-deploy" + +[[exemptions.rand]] +version = "0.8.5" +criteria = "safe-to-deploy" + +[[exemptions.rand_chacha]] +version = "0.2.2" +criteria = "safe-to-deploy" + +[[exemptions.rand_chacha]] +version = "0.3.1" +criteria = "safe-to-deploy" + +[[exemptions.rand_core]] +version = "0.5.1" +criteria = "safe-to-deploy" + +[[exemptions.rand_core]] +version = "0.6.4" +criteria = "safe-to-deploy" + +[[exemptions.rand_hc]] +version = "0.2.0" +criteria = "safe-to-deploy" + +[[exemptions.raw-cpuid]] +version = "11.0.2" +criteria = "safe-to-deploy" + +[[exemptions.rayon]] +version = "1.10.0" +criteria = "safe-to-deploy" + +[[exemptions.rayon-core]] +version = "1.12.1" +criteria = "safe-to-deploy" + +[[exemptions.reddsa]] +version = "0.5.1" +criteria = "safe-to-deploy" + +[[exemptions.redox_syscall]] +version = "0.2.16" +criteria = "safe-to-deploy" + +[[exemptions.redox_syscall]] +version = "0.5.1" +criteria = "safe-to-deploy" + +[[exemptions.redox_users]] +version = "0.4.5" +criteria = "safe-to-deploy" + +[[exemptions.regex]] +version = "1.10.4" +criteria = "safe-to-deploy" + +[[exemptions.regex-automata]] +version = "0.1.10" +criteria = "safe-to-deploy" + +[[exemptions.regex-automata]] +version = "0.4.6" +criteria = "safe-to-deploy" + +[[exemptions.regex-syntax]] +version = "0.6.29" +criteria = "safe-to-deploy" + +[[exemptions.regex-syntax]] +version = "0.8.3" +criteria = "safe-to-deploy" + +[[exemptions.reqwest]] +version = "0.11.27" +criteria = "safe-to-deploy" + +[[exemptions.rgb]] +version = "0.8.37" +criteria = "safe-to-deploy" + +[[exemptions.ring]] +version = "0.16.20" +criteria = "safe-to-deploy" + +[[exemptions.ring]] +version = "0.17.8" +criteria = "safe-to-deploy" + +[[exemptions.ripemd]] +version = "0.1.3" +criteria = "safe-to-deploy" + +[[exemptions.rlimit]] +version = "0.10.1" +criteria = "safe-to-deploy" + +[[exemptions.rocksdb]] +version = "0.22.0" +criteria = "safe-to-deploy" + +[[exemptions.ron]] +version = "0.7.1" +criteria = "safe-to-deploy" + +[[exemptions.rustc-demangle]] +version = "0.1.23" +criteria = "safe-to-deploy" + +[[exemptions.rustc-hex]] +version = "2.1.0" +criteria = "safe-to-deploy" + +[[exemptions.rustc_version]] +version = "0.2.3" +criteria = "safe-to-deploy" + +[[exemptions.rustix]] +version = "0.38.34" +criteria = "safe-to-deploy" + +[[exemptions.rustls]] +version = "0.21.12" +criteria = "safe-to-deploy" + +[[exemptions.rustls-pemfile]] +version = "1.0.4" +criteria = "safe-to-deploy" + +[[exemptions.rustls-webpki]] +version = "0.101.7" +criteria = "safe-to-deploy" + +[[exemptions.rusty-fork]] +version = "0.3.0" +criteria = "safe-to-deploy" + +[[exemptions.ryu]] +version = "1.0.17" +criteria = "safe-to-deploy" + +[[exemptions.sapling-crypto]] +version = "0.1.3" +criteria = "safe-to-deploy" + +[[exemptions.scopeguard]] +version = "1.2.0" +criteria = "safe-to-deploy" + +[[exemptions.sct]] +version = "0.7.1" +criteria = "safe-to-deploy" + +[[exemptions.secp256k1]] +version = "0.26.0" +criteria = "safe-to-deploy" + +[[exemptions.secp256k1-sys]] +version = "0.8.1" +criteria = "safe-to-deploy" + +[[exemptions.secrecy]] +version = "0.8.0" +criteria = "safe-to-deploy" + +[[exemptions.semver]] +version = "0.9.0" +criteria = "safe-to-deploy" + +[[exemptions.semver]] +version = "1.0.23" +criteria = "safe-to-deploy" + +[[exemptions.semver-parser]] +version = "0.7.0" +criteria = "safe-to-deploy" + +[[exemptions.sentry]] +version = "0.32.2" +criteria = "safe-to-deploy" + +[[exemptions.sentry-backtrace]] +version = "0.32.3" +criteria = "safe-to-deploy" + +[[exemptions.sentry-contexts]] +version = "0.32.3" +criteria = "safe-to-deploy" + +[[exemptions.sentry-core]] +version = "0.32.3" +criteria = "safe-to-deploy" + +[[exemptions.sentry-tracing]] +version = "0.32.3" +criteria = "safe-to-deploy" + +[[exemptions.sentry-types]] +version = "0.32.3" +criteria = "safe-to-deploy" + +[[exemptions.serde-big-array]] +version = "0.5.1" +criteria = "safe-to-deploy" + +[[exemptions.serde_json]] +version = "1.0.117" +criteria = "safe-to-deploy" + +[[exemptions.serde_spanned]] +version = "0.6.6" +criteria = "safe-to-deploy" + +[[exemptions.serde_urlencoded]] +version = "0.7.1" +criteria = "safe-to-deploy" + +[[exemptions.serde_with]] +version = "1.14.0" +criteria = "safe-to-deploy" + +[[exemptions.serde_with]] +version = "3.8.1" +criteria = "safe-to-deploy" + +[[exemptions.serde_with_macros]] +version = "1.5.2" +criteria = "safe-to-deploy" + +[[exemptions.serde_with_macros]] +version = "3.8.1" +criteria = "safe-to-deploy" + +[[exemptions.serde_yaml]] +version = "0.9.34+deprecated" +criteria = "safe-to-deploy" + +[[exemptions.sha2]] +version = "0.10.8" +criteria = "safe-to-deploy" + +[[exemptions.sharded-slab]] +version = "0.1.7" +criteria = "safe-to-deploy" + +[[exemptions.shardtree]] +version = "0.3.1" +criteria = "safe-to-deploy" + +[[exemptions.shlex]] +version = "1.3.0" +criteria = "safe-to-deploy" + +[[exemptions.signal-hook-registry]] +version = "1.4.2" +criteria = "safe-to-deploy" + +[[exemptions.similar]] +version = "2.5.0" +criteria = "safe-to-deploy" + +[[exemptions.sketches-ddsketch]] +version = "0.2.2" +criteria = "safe-to-deploy" + +[[exemptions.slab]] +version = "0.4.9" +criteria = "safe-to-deploy" + +[[exemptions.smallvec]] +version = "1.13.2" +criteria = "safe-to-deploy" + +[[exemptions.socket2]] +version = "0.5.7" +criteria = "safe-to-deploy" + +[[exemptions.spandoc]] +version = "0.2.2" +criteria = "safe-to-deploy" + +[[exemptions.spandoc-attribute]] +version = "0.1.1" +criteria = "safe-to-deploy" + +[[exemptions.spin]] +version = "0.5.2" +criteria = "safe-to-deploy" + +[[exemptions.spin]] +version = "0.9.8" +criteria = "safe-to-deploy" + +[[exemptions.spki]] +version = "0.7.3" +criteria = "safe-to-deploy" + +[[exemptions.str_stack]] +version = "0.1.0" +criteria = "safe-to-deploy" + +[[exemptions.strsim]] +version = "0.8.0" +criteria = "safe-to-deploy" + +[[exemptions.strsim]] +version = "0.11.1" +criteria = "safe-to-deploy" + +[[exemptions.structopt]] +version = "0.3.26" +criteria = "safe-to-deploy" + +[[exemptions.structopt-derive]] +version = "0.4.18" +criteria = "safe-to-deploy" + +[[exemptions.subtle]] +version = "2.4.1" +criteria = "safe-to-deploy" + +[[exemptions.syn]] +version = "1.0.109" +criteria = "safe-to-deploy" + +[[exemptions.syn]] +version = "2.0.66" +criteria = "safe-to-deploy" + +[[exemptions.sync_wrapper]] +version = "0.1.2" +criteria = "safe-to-deploy" + +[[exemptions.system-configuration]] +version = "0.5.1" +criteria = "safe-to-deploy" + +[[exemptions.system-configuration-sys]] +version = "0.5.0" +criteria = "safe-to-deploy" + +[[exemptions.tap]] +version = "1.0.1" +criteria = "safe-to-deploy" + +[[exemptions.tempfile]] +version = "3.10.1" +criteria = "safe-to-deploy" + +[[exemptions.termcolor]] +version = "1.4.1" +criteria = "safe-to-deploy" + +[[exemptions.textwrap]] +version = "0.11.0" +criteria = "safe-to-deploy" + +[[exemptions.thiserror]] +version = "1.0.61" +criteria = "safe-to-deploy" + +[[exemptions.thiserror-impl]] +version = "1.0.61" +criteria = "safe-to-deploy" + +[[exemptions.thread-priority]] +version = "1.1.0" +criteria = "safe-to-deploy" + +[[exemptions.thread_local]] +version = "1.1.8" +criteria = "safe-to-deploy" + +[[exemptions.time]] +version = "0.3.36" +criteria = "safe-to-deploy" + +[[exemptions.tokio]] +version = "1.37.0" +criteria = "safe-to-deploy" + +[[exemptions.tokio-io-timeout]] +version = "1.2.0" +criteria = "safe-to-deploy" + +[[exemptions.tokio-macros]] +version = "2.2.0" +criteria = "safe-to-deploy" + +[[exemptions.tokio-rustls]] +version = "0.24.1" +criteria = "safe-to-deploy" + +[[exemptions.tokio-test]] +version = "0.4.4" +criteria = "safe-to-run" + +[[exemptions.tokio-util]] +version = "0.6.10" +criteria = "safe-to-deploy" + +[[exemptions.tokio-util]] +version = "0.7.11" +criteria = "safe-to-deploy" + +[[exemptions.toml]] +version = "0.5.11" +criteria = "safe-to-deploy" + +[[exemptions.toml]] +version = "0.8.13" +criteria = "safe-to-deploy" + +[[exemptions.toml_datetime]] +version = "0.6.6" +criteria = "safe-to-deploy" + +[[exemptions.toml_edit]] +version = "0.20.7" +criteria = "safe-to-deploy" + +[[exemptions.toml_edit]] +version = "0.22.13" +criteria = "safe-to-deploy" + +[[exemptions.tonic]] +version = "0.10.2" +criteria = "safe-to-deploy" + +[[exemptions.tonic-build]] +version = "0.10.2" +criteria = "safe-to-deploy" + +[[exemptions.tonic-reflection]] +version = "0.11.0" +criteria = "safe-to-deploy" + +[[exemptions.tower]] +version = "0.4.13" +criteria = "safe-to-deploy" + +[[exemptions.tower-batch-control]] +version = "0.2.41-beta.13" +criteria = "safe-to-deploy" + +[[exemptions.tower-fallback]] +version = "0.2.41-beta.13" +criteria = "safe-to-deploy" + +[[exemptions.tower-layer]] +version = "0.3.2" +criteria = "safe-to-deploy" + +[[exemptions.tower-service]] +version = "0.3.2" +criteria = "safe-to-deploy" + +[[exemptions.tower-test]] +version = "0.4.0" +criteria = "safe-to-run" + +[[exemptions.tracing]] +version = "0.1.40" +criteria = "safe-to-deploy" + +[[exemptions.tracing-appender]] +version = "0.2.3" +criteria = "safe-to-deploy" + +[[exemptions.tracing-attributes]] +version = "0.1.27" +criteria = "safe-to-deploy" + +[[exemptions.tracing-core]] +version = "0.1.32" +criteria = "safe-to-deploy" + +[[exemptions.tracing-error]] +version = "0.2.0" +criteria = "safe-to-deploy" + +[[exemptions.tracing-flame]] +version = "0.2.0" +criteria = "safe-to-deploy" + +[[exemptions.tracing-futures]] +version = "0.2.5" +criteria = "safe-to-deploy" + +[[exemptions.tracing-journald]] +version = "0.3.0" +criteria = "safe-to-deploy" + +[[exemptions.tracing-log]] +version = "0.1.4" +criteria = "safe-to-deploy" + +[[exemptions.tracing-log]] +version = "0.2.0" +criteria = "safe-to-deploy" + +[[exemptions.tracing-subscriber]] +version = "0.3.18" +criteria = "safe-to-deploy" + +[[exemptions.tracing-test]] +version = "0.2.4" +criteria = "safe-to-run" + +[[exemptions.tracing-test-macro]] +version = "0.2.4" +criteria = "safe-to-run" + +[[exemptions.try-lock]] +version = "0.2.5" +criteria = "safe-to-deploy" + +[[exemptions.typenum]] +version = "1.17.0" +criteria = "safe-to-deploy" + +[[exemptions.ucd-trie]] +version = "0.1.6" +criteria = "safe-to-deploy" + +[[exemptions.uint]] +version = "0.9.5" +criteria = "safe-to-deploy" + +[[exemptions.uname]] +version = "0.1.1" +criteria = "safe-to-deploy" + +[[exemptions.unarray]] +version = "0.1.4" +criteria = "safe-to-deploy" + +[[exemptions.unicase]] +version = "2.7.0" +criteria = "safe-to-deploy" + +[[exemptions.unicode-bidi]] +version = "0.3.15" +criteria = "safe-to-deploy" + +[[exemptions.universal-hash]] +version = "0.5.1" +criteria = "safe-to-deploy" + +[[exemptions.unsafe-libyaml]] +version = "0.2.11" +criteria = "safe-to-deploy" + +[[exemptions.untrusted]] +version = "0.7.1" +criteria = "safe-to-deploy" + +[[exemptions.untrusted]] +version = "0.9.0" +criteria = "safe-to-deploy" + +[[exemptions.ureq]] +version = "2.9.1" +criteria = "safe-to-deploy" + +[[exemptions.uuid]] +version = "1.8.0" +criteria = "safe-to-deploy" + +[[exemptions.valuable]] +version = "0.1.0" +criteria = "safe-to-deploy" + +[[exemptions.vcpkg]] +version = "0.2.15" +criteria = "safe-to-deploy" + +[[exemptions.vec_map]] +version = "0.8.2" +criteria = "safe-to-deploy" + +[[exemptions.vergen]] +version = "8.3.1" +criteria = "safe-to-deploy" + +[[exemptions.wait-timeout]] +version = "0.2.0" +criteria = "safe-to-deploy" + +[[exemptions.walkdir]] +version = "2.5.0" +criteria = "safe-to-run" + +[[exemptions.want]] +version = "0.3.1" +criteria = "safe-to-deploy" + +[[exemptions.wasi]] +version = "0.9.0+wasi-snapshot-preview1" +criteria = "safe-to-deploy" + +[[exemptions.wasi]] +version = "0.11.0+wasi-snapshot-preview1" +criteria = "safe-to-deploy" + +[[exemptions.wasm-bindgen]] +version = "0.2.92" +criteria = "safe-to-deploy" + +[[exemptions.wasm-bindgen-backend]] +version = "0.2.92" +criteria = "safe-to-deploy" + +[[exemptions.wasm-bindgen-futures]] +version = "0.4.42" +criteria = "safe-to-deploy" + +[[exemptions.wasm-bindgen-macro]] +version = "0.2.92" +criteria = "safe-to-deploy" + +[[exemptions.wasm-bindgen-shared]] +version = "0.2.92" +criteria = "safe-to-deploy" + +[[exemptions.web-sys]] +version = "0.3.69" +criteria = "safe-to-deploy" + +[[exemptions.webpki-roots]] +version = "0.25.4" +criteria = "safe-to-deploy" + +[[exemptions.which]] +version = "4.4.2" +criteria = "safe-to-deploy" + +[[exemptions.winapi]] +version = "0.3.9" +criteria = "safe-to-deploy" + +[[exemptions.winapi-i686-pc-windows-gnu]] +version = "0.4.0" +criteria = "safe-to-deploy" + +[[exemptions.winapi-util]] +version = "0.1.8" +criteria = "safe-to-deploy" + +[[exemptions.winapi-x86_64-pc-windows-gnu]] +version = "0.4.0" +criteria = "safe-to-deploy" + +[[exemptions.windows]] +version = "0.52.0" +criteria = "safe-to-deploy" + +[[exemptions.windows-core]] +version = "0.52.0" +criteria = "safe-to-deploy" + +[[exemptions.windows-sys]] +version = "0.48.0" +criteria = "safe-to-deploy" + +[[exemptions.windows-sys]] +version = "0.52.0" +criteria = "safe-to-deploy" + +[[exemptions.windows-targets]] +version = "0.48.5" +criteria = "safe-to-deploy" + +[[exemptions.windows-targets]] +version = "0.52.5" +criteria = "safe-to-deploy" + +[[exemptions.windows_aarch64_gnullvm]] +version = "0.48.5" +criteria = "safe-to-deploy" + +[[exemptions.windows_aarch64_gnullvm]] +version = "0.52.5" +criteria = "safe-to-deploy" + +[[exemptions.windows_aarch64_msvc]] +version = "0.48.5" +criteria = "safe-to-deploy" + +[[exemptions.windows_aarch64_msvc]] +version = "0.52.5" +criteria = "safe-to-deploy" + +[[exemptions.windows_i686_gnu]] +version = "0.48.5" +criteria = "safe-to-deploy" + +[[exemptions.windows_i686_gnu]] +version = "0.52.5" +criteria = "safe-to-deploy" + +[[exemptions.windows_i686_gnullvm]] +version = "0.52.5" +criteria = "safe-to-deploy" + +[[exemptions.windows_i686_msvc]] +version = "0.48.5" +criteria = "safe-to-deploy" + +[[exemptions.windows_i686_msvc]] +version = "0.52.5" +criteria = "safe-to-deploy" + +[[exemptions.windows_x86_64_gnu]] +version = "0.48.5" +criteria = "safe-to-deploy" + +[[exemptions.windows_x86_64_gnu]] +version = "0.52.5" +criteria = "safe-to-deploy" + +[[exemptions.windows_x86_64_gnullvm]] +version = "0.48.5" +criteria = "safe-to-deploy" + +[[exemptions.windows_x86_64_gnullvm]] +version = "0.52.5" +criteria = "safe-to-deploy" + +[[exemptions.windows_x86_64_msvc]] +version = "0.48.5" +criteria = "safe-to-deploy" + +[[exemptions.windows_x86_64_msvc]] +version = "0.52.5" +criteria = "safe-to-deploy" + +[[exemptions.winnow]] +version = "0.5.40" +criteria = "safe-to-deploy" + +[[exemptions.winnow]] +version = "0.6.7" +criteria = "safe-to-deploy" + +[[exemptions.winreg]] +version = "0.50.0" +criteria = "safe-to-deploy" + +[[exemptions.wyz]] +version = "0.5.1" +criteria = "safe-to-deploy" + +[[exemptions.x25519-dalek]] +version = "2.0.1" +criteria = "safe-to-deploy" + +[[exemptions.xdg]] +version = "2.5.2" +criteria = "safe-to-deploy" + +[[exemptions.zcash_address]] +version = "0.3.2" +criteria = "safe-to-deploy" + +[[exemptions.zcash_client_backend]] +version = "0.12.1" +criteria = "safe-to-deploy" + +[[exemptions.zcash_encoding]] +version = "0.2.0" +criteria = "safe-to-deploy" + +[[exemptions.zcash_history]] +version = "0.4.0" +criteria = "safe-to-deploy" + +[[exemptions.zcash_keys]] +version = "0.2.0" +criteria = "safe-to-deploy" + +[[exemptions.zcash_note_encryption]] +version = "0.4.0" +criteria = "safe-to-deploy" + +[[exemptions.zcash_primitives]] +version = "0.15.0" +criteria = "safe-to-deploy" + +[[exemptions.zcash_proofs]] +version = "0.15.0" +criteria = "safe-to-deploy" + +[[exemptions.zcash_protocol]] +version = "0.1.1" +criteria = "safe-to-deploy" + +[[exemptions.zcash_script]] +version = "0.2.0" +criteria = "safe-to-deploy" + +[[exemptions.zcash_spec]] +version = "0.1.0" +criteria = "safe-to-deploy" + +[[exemptions.zebra-chain]] +version = "1.0.0-beta.37" +criteria = "safe-to-deploy" + +[[exemptions.zebra-consensus]] +version = "1.0.0-beta.37" +criteria = "safe-to-deploy" + +[[exemptions.zebra-grpc]] +version = "0.1.0-alpha.4" +criteria = "safe-to-deploy" + +[[exemptions.zebra-network]] +version = "1.0.0-beta.37" +criteria = "safe-to-deploy" + +[[exemptions.zebra-node-services]] +version = "1.0.0-beta.37" +criteria = "safe-to-deploy" + +[[exemptions.zebra-rpc]] +version = "1.0.0-beta.37" +criteria = "safe-to-deploy" + +[[exemptions.zebra-scan]] +version = "0.1.0-alpha.6" +criteria = "safe-to-deploy" + +[[exemptions.zebra-script]] +version = "1.0.0-beta.37" +criteria = "safe-to-deploy" + +[[exemptions.zebra-state]] +version = "1.0.0-beta.37" +criteria = "safe-to-deploy" + +[[exemptions.zebra-test]] +version = "1.0.0-beta.37" +criteria = "safe-to-deploy" + +[[exemptions.zebra-utils]] +version = "1.0.0-beta.37" +criteria = "safe-to-deploy" + +[[exemptions.zebrad]] +version = "1.7.0" +criteria = "safe-to-deploy" + +[[exemptions.zeroize]] +version = "1.7.0" +criteria = "safe-to-deploy" + +[[exemptions.zeroize_derive]] +version = "1.4.2" +criteria = "safe-to-deploy" + +[[exemptions.zip32]] +version = "0.1.1" +criteria = "safe-to-deploy" diff --git a/supply-chain/imports.lock b/supply-chain/imports.lock new file mode 100644 index 00000000000..72680a30464 --- /dev/null +++ b/supply-chain/imports.lock @@ -0,0 +1,1174 @@ + +# cargo-vet imports lock + +[[publisher.cexpr]] +version = "0.6.0" +when = "2021-10-11" +user-id = 3788 +user-login = "emilio" +user-name = "Emilio Cobos Álvarez" + +[[publisher.core-foundation]] +version = "0.9.3" +when = "2022-02-07" +user-id = 5946 +user-login = "jrmuizel" +user-name = "Jeff Muizelaar" + +[[publisher.encoding_rs]] +version = "0.8.34" +when = "2024-04-10" +user-id = 4484 +user-login = "hsivonen" +user-name = "Henri Sivonen" + +[[publisher.unicode-normalization]] +version = "0.1.23" +when = "2024-02-20" +user-id = 1139 +user-login = "Manishearth" +user-name = "Manish Goregaokar" + +[[publisher.unicode-segmentation]] +version = "1.11.0" +when = "2024-02-07" +user-id = 1139 +user-login = "Manishearth" +user-name = "Manish Goregaokar" + +[[publisher.unicode-width]] +version = "0.1.12" +when = "2024-04-26" +user-id = 1139 +user-login = "Manishearth" +user-name = "Manish Goregaokar" + +[[audits.google.audits.async-stream]] +who = "Tyler Mandry " +criteria = "safe-to-deploy" +version = "0.3.4" +notes = "Reviewed on https://fxrev.dev/761470" +aggregated-from = "https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/third_party/rust_crates/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.async-stream]] +who = "David Koloski " +criteria = "safe-to-deploy" +delta = "0.3.4 -> 0.3.5" +notes = "Reviewed on https://fxrev.dev/906795" +aggregated-from = "https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/third_party/rust_crates/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.async-stream-impl]] +who = "Tyler Mandry " +criteria = "safe-to-deploy" +version = "0.3.4" +notes = "Reviewed on https://fxrev.dev/761470" +aggregated-from = "https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/third_party/rust_crates/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.async-stream-impl]] +who = "David Koloski " +criteria = "safe-to-deploy" +delta = "0.3.4 -> 0.3.5" +notes = "Reviewed on https://fxrev.dev/906795" +aggregated-from = "https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/third_party/rust_crates/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.autocfg]] +who = "Lukasz Anforowicz " +criteria = "safe-to-deploy" +version = "1.1.0" +notes = """ +Grepped for `-i cipher`, `-i crypto`, `'\bfs\b'``, `'\bnet\b'``, `'\bunsafe\b'`` +and there were no hits except for reasonable, client-controlled usage of +`std::fs` in `AutoCfg::with_dir`. + +This crate has been added to Chromium in +https://source.chromium.org/chromium/chromium/src/+/591a0f30c5eac93b6a3d981c2714ffa4db28dbcb +The CL description contains a link to a Google-internal document with audit details. +""" +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.autocfg]] +who = "Lukasz Anforowicz " +criteria = "safe-to-deploy" +delta = "1.1.0 -> 1.2.0" +notes = ''' +Grepped for `-i cipher`, `-i crypto`, `'\bfs\b'``, `'\bnet\b'``, `'\bunsafe\b'`` +and nothing changed from the baseline audit of 1.1.0. Skimmed through the +1.1.0 => 1.2.0 delta and everything seemed okay. +''' +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.base64]] +who = "Adam Langley " +criteria = "safe-to-deploy" +version = "0.13.1" +notes = "Skimmed the uses of `std` to ensure that nothing untoward is happening. Code uses `forbid(unsafe_code)` and, indeed, there are no uses of `unsafe`" +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.bitflags]] +who = "Lukasz Anforowicz " +criteria = "safe-to-deploy" +version = "2.4.2" +notes = """ +Audit notes: + +* I've checked for any discussion in Google-internal cl/546819168 (where audit + of version 2.3.3 happened) +* `src/lib.rs` contains `#![cfg_attr(not(test), forbid(unsafe_code))]` +* There are 2 cases of `unsafe` in `src/external.rs` but they seem to be + correct in a straightforward way - they just propagate the marker trait's + impl (e.g. `impl bytemuck::Pod`) from the inner to the outer type +* Additional discussion and/or notes may be found in https://crrev.com/c/5238056 +""" +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.bitflags]] +who = "Adrian Taylor " +criteria = "safe-to-deploy" +delta = "2.4.2 -> 2.5.0" +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.bytemuck]] +who = "Lukasz Anforowicz " +criteria = "safe-to-deploy" +version = "1.14.3" +notes = "Additional review notes may be found in https://crrev.com/c/5362675." +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.bytemuck]] +who = "Adrian Taylor " +criteria = "safe-to-deploy" +delta = "1.14.3 -> 1.15.0" +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.cast]] +who = "George Burgess IV " +criteria = "safe-to-run" +version = "0.3.0" +aggregated-from = "https://chromium.googlesource.com/chromiumos/third_party/rust_crates/+/refs/heads/main/cargo-vet/audits.toml?format=TEXT" + +[[audits.google.audits.cfg-if]] +who = "George Burgess IV " +criteria = "safe-to-deploy" +version = "1.0.0" +aggregated-from = "https://chromium.googlesource.com/chromiumos/third_party/rust_crates/+/refs/heads/main/cargo-vet/audits.toml?format=TEXT" + +[[audits.google.audits.equivalent]] +who = "George Burgess IV " +criteria = "safe-to-deploy" +version = "1.0.1" +aggregated-from = "https://chromium.googlesource.com/chromiumos/third_party/rust_crates/+/refs/heads/main/cargo-vet/audits.toml?format=TEXT" + +[[audits.google.audits.fastrand]] +who = "George Burgess IV " +criteria = "safe-to-deploy" +version = "1.9.0" +notes = """ +`does-not-implement-crypto` is certified because this crate explicitly says +that the RNG here is not cryptographically secure. +""" +aggregated-from = "https://chromium.googlesource.com/chromiumos/third_party/rust_crates/+/refs/heads/main/cargo-vet/audits.toml?format=TEXT" + +[[audits.google.audits.glob]] +who = "George Burgess IV " +criteria = "safe-to-deploy" +version = "0.3.1" +aggregated-from = "https://chromium.googlesource.com/chromiumos/third_party/rust_crates/+/refs/heads/main/cargo-vet/audits.toml?format=TEXT" + +[[audits.google.audits.httpdate]] +who = "George Burgess IV " +criteria = "safe-to-deploy" +version = "1.0.3" +aggregated-from = "https://chromium.googlesource.com/chromiumos/third_party/rust_crates/+/refs/heads/main/cargo-vet/audits.toml?format=TEXT" + +[[audits.google.audits.itoa]] +who = "Lukasz Anforowicz " +criteria = "safe-to-deploy" +version = "1.0.10" +notes = ''' +I grepped for \"crypt\", \"cipher\", \"fs\", \"net\" - there were no hits. + +There are a few places where `unsafe` is used. Unsafe review notes can be found +in https://crrev.com/c/5350697. + +Version 1.0.1 of this crate has been added to Chromium in +https://crrev.com/c/3321896. +''' +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.itoa]] +who = "Lukasz Anforowicz " +criteria = "safe-to-deploy" +delta = "1.0.10 -> 1.0.11" +notes = """ +Straightforward diff between 1.0.10 and 1.0.11 - only 3 commits: + +* Bumping up the version +* A touch up of comments +* And my own PR to make `unsafe` blocks more granular: + https://github.com/dtolnay/itoa/pull/42 +""" +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.lazy_static]] +who = "Lukasz Anforowicz " +criteria = "safe-to-deploy" +version = "1.4.0" +notes = ''' +I grepped for \"crypt\", \"cipher\", \"fs\", \"net\" - there were no hits. + +There are two places where `unsafe` is used. Unsafe review notes can be found +in https://crrev.com/c/5347418. + +This crate has been added to Chromium in https://crrev.com/c/3321895. +''' +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.nom]] +who = "danakj@chromium.org" +criteria = "safe-to-deploy" +version = "7.1.3" +notes = """ +Reviewed in https://chromium-review.googlesource.com/c/chromium/src/+/5046153 +""" +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.number_prefix]] +who = "George Burgess IV " +criteria = "safe-to-deploy" +version = "0.4.0" +aggregated-from = "https://chromium.googlesource.com/chromiumos/third_party/rust_crates/+/refs/heads/main/cargo-vet/audits.toml?format=TEXT" + +[[audits.google.audits.pin-project-lite]] +who = "David Koloski " +criteria = "safe-to-deploy" +version = "0.2.9" +notes = "Reviewed on https://fxrev.dev/824504" +aggregated-from = "https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/third_party/rust_crates/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.pin-project-lite]] +who = "David Koloski " +criteria = "safe-to-deploy" +delta = "0.2.9 -> 0.2.13" +notes = "Audited at https://fxrev.dev/946396" +aggregated-from = "https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/third_party/rust_crates/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.proc-macro-error-attr]] +who = "George Burgess IV " +criteria = "safe-to-deploy" +version = "1.0.4" +aggregated-from = "https://chromium.googlesource.com/chromiumos/third_party/rust_crates/+/refs/heads/main/cargo-vet/audits.toml?format=TEXT" + +[[audits.google.audits.proc-macro2]] +who = "Lukasz Anforowicz " +criteria = "safe-to-deploy" +version = "1.0.78" +notes = """ +Grepped for \"crypt\", \"cipher\", \"fs\", \"net\" - there were no hits +(except for a benign \"fs\" hit in a doc comment) + +Notes from the `unsafe` review can be found in https://crrev.com/c/5385745. +""" +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.proc-macro2]] +who = "Adrian Taylor " +criteria = "safe-to-deploy" +delta = "1.0.78 -> 1.0.79" +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.proc-macro2]] +who = "Adrian Taylor " +criteria = "safe-to-deploy" +delta = "1.0.79 -> 1.0.80" +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.proc-macro2]] +who = "Dustin J. Mitchell " +criteria = "safe-to-deploy" +delta = "1.0.80 -> 1.0.81" +notes = "Comment changes only" +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.proc-macro2]] +who = "danakj " +criteria = "safe-to-deploy" +delta = "1.0.81 -> 1.0.82" +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.proc-macro2]] +who = "Dustin J. Mitchell " +criteria = "safe-to-deploy" +delta = "1.0.82 -> 1.0.83" +notes = "Substantive change is replacing String with Box, saving memory." +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.proc-macro2]] +who = "Lukasz Anforowicz " +criteria = "safe-to-deploy" +delta = "1.0.83 -> 1.0.84" +notes = "Only doc comment changes in `src/lib.rs`." +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.quote]] +who = "Lukasz Anforowicz " +criteria = "safe-to-deploy" +version = "1.0.35" +notes = """ +Grepped for \"unsafe\", \"crypt\", \"cipher\", \"fs\", \"net\" - there were no hits +(except for benign \"net\" hit in tests and \"fs\" hit in README.md) +""" +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.quote]] +who = "Adrian Taylor " +criteria = "safe-to-deploy" +delta = "1.0.35 -> 1.0.36" +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.rustversion]] +who = "Lukasz Anforowicz " +criteria = "safe-to-deploy" +version = "1.0.14" +notes = """ +Grepped for `-i cipher`, `-i crypto`, `'\bfs\b'``, `'\bnet\b'``, `'\bunsafe\b'`` +and there were no hits except for: + +* Using trivially-safe `unsafe` in test code: + + ``` + tests/test_const.rs:unsafe fn _unsafe() {} + tests/test_const.rs:const _UNSAFE: () = unsafe { _unsafe() }; + ``` + +* Using `unsafe` in a string: + + ``` + src/constfn.rs: \"unsafe\" => Qualifiers::Unsafe, + ``` + +* Using `std::fs` in `build/build.rs` to write `${OUT_DIR}/version.expr` + which is later read back via `include!` used in `src/lib.rs`. + +Version `1.0.6` of this crate has been added to Chromium in +https://source.chromium.org/chromium/chromium/src/+/28841c33c77833cc30b286f9ae24c97e7a8f4057 +""" +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.rustversion]] +who = "Adrian Taylor " +criteria = "safe-to-deploy" +delta = "1.0.14 -> 1.0.15" +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.same-file]] +who = "Android Legacy" +criteria = "safe-to-run" +version = "1.0.6" +aggregated-from = "https://chromium.googlesource.com/chromiumos/third_party/rust_crates/+/refs/heads/main/cargo-vet/audits.toml?format=TEXT" + +[[audits.google.audits.serde]] +who = "Lukasz Anforowicz " +criteria = "safe-to-deploy" +version = "1.0.197" +notes = """ +Grepped for `-i cipher`, `-i crypto`, `'\bfs\b'`, `'\bnet\b'`, `'\bunsafe\b'`. + +There were some hits for `net`, but they were related to serialization and +not actually opening any connections or anything like that. + +There were 2 hits of `unsafe` when grepping: +* In `fn as_str` in `impl Buf` +* In `fn serialize` in `impl Serialize for net::Ipv4Addr` + +Unsafe review comments can be found in https://crrev.com/c/5350573/2 (this +review also covered `serde_json_lenient`). + +Version 1.0.130 of the crate has been added to Chromium in +https://crrev.com/c/3265545. The CL description contains a link to a +(Google-internal, sorry) document with a mini security review. +""" +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.serde]] +who = "Dustin J. Mitchell " +criteria = "safe-to-deploy" +delta = "1.0.197 -> 1.0.198" +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.serde]] +who = "danakj " +criteria = "safe-to-deploy" +delta = "1.0.198 -> 1.0.201" +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.serde]] +who = "Dustin J. Mitchell " +criteria = "safe-to-deploy" +delta = "1.0.201 -> 1.0.202" +notes = "Trivial changes" +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.serde]] +who = "Lukasz Anforowicz " +criteria = "safe-to-deploy" +delta = "1.0.202 -> 1.0.203" +notes = "s/doc_cfg/docsrs/ + tuple_impls/tuple_impl_body-related changes" +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.serde_derive]] +who = "Lukasz Anforowicz " +criteria = "safe-to-deploy" +version = "1.0.197" +notes = "Grepped for \"unsafe\", \"crypt\", \"cipher\", \"fs\", \"net\" - there were no hits" +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.serde_derive]] +who = "danakj " +criteria = "safe-to-deploy" +delta = "1.0.197 -> 1.0.201" +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.serde_derive]] +who = "Dustin J. Mitchell " +criteria = "safe-to-deploy" +delta = "1.0.201 -> 1.0.202" +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.serde_derive]] +who = "Lukasz Anforowicz " +criteria = "safe-to-deploy" +delta = "1.0.202 -> 1.0.203" +notes = "Grepped for \"unsafe\", \"crypt\", \"cipher\", \"fs\", \"net\" - there were no hits" +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.static_assertions]] +who = "Lukasz Anforowicz " +criteria = "safe-to-deploy" +version = "1.1.0" +notes = """ +Grepped for `-i cipher`, `-i crypto`, `'\bfs\b'`, `'\bnet\b'`, `'\bunsafe\b'` +and there were no hits except for one `unsafe`. + +The lambda where `unsafe` is used is never invoked (e.g. the `unsafe` code +never runs) and is only introduced for some compile-time checks. Additional +unsafe review comments can be found in https://crrev.com/c/5353376. + +This crate has been added to Chromium in https://crrev.com/c/3736562. The CL +description contains a link to a document with an additional security review. +""" +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.strsim]] +who = "danakj@chromium.org" +criteria = "safe-to-deploy" +version = "0.10.0" +notes = """ +Reviewed in https://crrev.com/c/5171063 + +Previously reviewed during security review and the audit is grandparented in. +""" +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.tinytemplate]] +who = "Ying Hsu " +criteria = "safe-to-run" +version = "1.2.1" +aggregated-from = "https://chromium.googlesource.com/chromiumos/third_party/rust_crates/+/refs/heads/main/cargo-vet/audits.toml?format=TEXT" + +[[audits.google.audits.tinyvec]] +who = "Lukasz Anforowicz " +criteria = "safe-to-deploy" +version = "1.6.0" +notes = """ +Grepped for `-i cipher`, `-i crypto`, `'\bfs\b'``, `'\bnet\b'``, `'\bunsafe\b'`` +and there were no hits except for some \"unsafe\" appearing in comments: + +``` +src/arrayvec.rs: // Note: This shouldn't use A::CAPACITY, because unsafe code can't rely on +src/lib.rs://! All of this is done with no `unsafe` code within the crate. Technically the +src/lib.rs://! `Vec` type from the standard library uses `unsafe` internally, but *this +src/lib.rs://! crate* introduces no new `unsafe` code into your project. +src/array.rs:/// Just a reminder: this trait is 100% safe, which means that `unsafe` code +``` + +This crate has been added to Chromium in +https://source.chromium.org/chromium/chromium/src/+/24773c33e1b7a1b5069b9399fd034375995f290b +""" +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.tinyvec_macros]] +who = "George Burgess IV " +criteria = "safe-to-deploy" +version = "0.1.0" +aggregated-from = "https://chromium.googlesource.com/chromiumos/third_party/rust_crates/+/refs/heads/main/cargo-vet/audits.toml?format=TEXT" + +[[audits.google.audits.tokio-stream]] +who = "David Koloski " +criteria = "safe-to-deploy" +version = "0.1.11" +notes = "Reviewed on https://fxrev.dev/804724" +aggregated-from = "https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/third_party/rust_crates/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.tokio-stream]] +who = "David Koloski " +criteria = "safe-to-deploy" +delta = "0.1.11 -> 0.1.14" +notes = "Reviewed on https://fxrev.dev/907732." +aggregated-from = "https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/third_party/rust_crates/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.unicode-ident]] +who = "Lukasz Anforowicz " +criteria = "safe-to-deploy" +version = "1.0.12" +notes = ''' +I grepped for \"crypt\", \"cipher\", \"fs\", \"net\" - there were no hits. + +All two functions from the public API of this crate use `unsafe` to avoid bound +checks for an array access. Cross-module analysis shows that the offsets can +be statically proven to be within array bounds. More details can be found in +the unsafe review CL at https://crrev.com/c/5350386. + +This crate has been added to Chromium in https://crrev.com/c/3891618. +''' +aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.unicode-xid]] +who = "George Burgess IV " +criteria = "safe-to-deploy" +version = "0.2.4" +aggregated-from = "https://chromium.googlesource.com/chromiumos/third_party/rust_crates/+/refs/heads/main/cargo-vet/audits.toml?format=TEXT" + +[[audits.google.audits.utf8parse]] +who = "David Koloski " +criteria = "safe-to-deploy" +version = "0.2.1" +notes = "Reviewed on https://fxrev.dev/904811" +aggregated-from = "https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/third_party/rust_crates/supply-chain/audits.toml?format=TEXT" + +[[audits.google.audits.version_check]] +who = "George Burgess IV " +criteria = "safe-to-deploy" +version = "0.9.4" +aggregated-from = "https://chromium.googlesource.com/chromiumos/third_party/rust_crates/+/refs/heads/main/cargo-vet/audits.toml?format=TEXT" + +[[audits.google.audits.void]] +who = "George Burgess IV " +criteria = "safe-to-deploy" +version = "1.0.2" +aggregated-from = "https://chromium.googlesource.com/chromiumos/third_party/rust_crates/+/refs/heads/main/cargo-vet/audits.toml?format=TEXT" + +[[audits.mozilla.wildcard-audits.cexpr]] +who = "Emilio Cobos Álvarez " +criteria = "safe-to-deploy" +user-id = 3788 # Emilio Cobos Álvarez (emilio) +start = "2021-06-21" +end = "2024-04-21" +notes = "No unsafe code, rather straight-forward parser." +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.wildcard-audits.core-foundation]] +who = "Bobby Holley " +criteria = "safe-to-deploy" +user-id = 5946 # Jeff Muizelaar (jrmuizel) +start = "2019-03-29" +end = "2023-05-04" +renew = false +notes = "I've reviewed every source contribution that was neither authored nor reviewed by Mozilla." +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.wildcard-audits.encoding_rs]] +who = "Henri Sivonen " +criteria = "safe-to-deploy" +user-id = 4484 # Henri Sivonen (hsivonen) +start = "2019-02-26" +end = "2024-08-28" +notes = "I, Henri Sivonen, wrote encoding_rs for Gecko and have reviewed contributions by others. There are two caveats to the certification: 1) The crate does things that are documented to be UB but that do not appear to actually be UB due to integer types differing from the general rule; https://github.com/hsivonen/encoding_rs/issues/79 . 2) It would be prudent to re-review the code that reinterprets buffers of integers as SIMD vectors; see https://github.com/hsivonen/encoding_rs/issues/87 ." +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.wildcard-audits.unicode-normalization]] +who = "Manish Goregaokar " +criteria = "safe-to-deploy" +user-id = 1139 # Manish Goregaokar (Manishearth) +start = "2019-11-06" +end = "2024-05-03" +notes = "All code written or reviewed by Manish" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.wildcard-audits.unicode-segmentation]] +who = "Manish Goregaokar " +criteria = "safe-to-deploy" +user-id = 1139 # Manish Goregaokar (Manishearth) +start = "2019-05-15" +end = "2024-05-03" +notes = "All code written or reviewed by Manish" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.wildcard-audits.unicode-width]] +who = "Manish Goregaokar " +criteria = "safe-to-deploy" +user-id = 1139 # Manish Goregaokar (Manishearth) +start = "2019-12-05" +end = "2024-05-03" +notes = "All code written or reviewed by Manish" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.android_system_properties]] +who = "Nicolas Silva " +criteria = "safe-to-deploy" +version = "0.1.2" +notes = "I wrote this crate, reviewed by jimb. It is mostly a Rust port of some C++ code we already ship." +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.android_system_properties]] +who = "Mike Hommey " +criteria = "safe-to-deploy" +delta = "0.1.2 -> 0.1.4" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.android_system_properties]] +who = "Mike Hommey " +criteria = "safe-to-deploy" +delta = "0.1.4 -> 0.1.5" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.bindgen]] +who = "Emilio Cobos Álvarez " +criteria = "safe-to-deploy" +version = "0.59.2" +notes = "I'm the primary author and maintainer of the crate." +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.bindgen]] +who = "Emilio Cobos Álvarez " +criteria = "safe-to-deploy" +delta = "0.59.2 -> 0.63.0" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.bindgen]] +who = "Mike Hommey " +criteria = "safe-to-deploy" +delta = "0.63.0 -> 0.64.0" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.bindgen]] +who = "Mike Hommey " +criteria = "safe-to-deploy" +delta = "0.64.0 -> 0.66.1" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.bindgen]] +who = "Mike Hommey " +criteria = "safe-to-deploy" +delta = "0.66.1 -> 0.68.1" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.bindgen]] +who = "Andreas Pehrson " +criteria = "safe-to-deploy" +delta = "0.68.1 -> 0.69.1" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.bindgen]] +who = "Mike Hommey " +criteria = "safe-to-deploy" +delta = "0.69.1 -> 0.69.2" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.bindgen]] +who = "Emilio Cobos Álvarez " +criteria = "safe-to-deploy" +delta = "0.69.2 -> 0.69.4" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.bit-set]] +who = "Aria Beingessner " +criteria = "safe-to-deploy" +version = "0.5.2" +notes = "Another crate I own via contain-rs that is ancient and maintenance mode, no known issues." +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.bit-set]] +who = "Mike Hommey " +criteria = "safe-to-deploy" +delta = "0.5.2 -> 0.5.3" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.bit-vec]] +who = "Aria Beingessner " +criteria = "safe-to-deploy" +version = "0.6.3" +notes = "Another crate I own via contain-rs that is ancient and in maintenance mode but otherwise perfectly fine." +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.core-foundation]] +who = "Teodor Tanasoaia " +criteria = "safe-to-deploy" +delta = "0.9.3 -> 0.9.4" +notes = "I've reviewed every source contribution that was neither authored nor reviewed by Mozilla." +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.debugid]] +who = "Gabriele Svelto " +criteria = "safe-to-deploy" +version = "0.8.0" +notes = "This crates was written by Sentry and I've fully audited it as Firefox crash reporting machinery relies on it." +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.deranged]] +who = "Alex Franchuk " +criteria = "safe-to-deploy" +version = "0.3.11" +notes = """ +This crate contains a decent bit of `unsafe` code, however all internal +unsafety is verified with copious assertions (many are compile-time), and +otherwise the unsafety is documented and left to the caller to verify. +""" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.document-features]] +who = "Erich Gubler " +criteria = "safe-to-deploy" +version = "0.2.8" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.either]] +who = "Nika Layzell " +criteria = "safe-to-deploy" +version = "1.6.1" +notes = """ +Straightforward crate providing the Either enum and trait implementations with +no unsafe code. +""" +aggregated-from = "https://raw.githubusercontent.com/mozilla/cargo-vet/main/supply-chain/audits.toml" + +[[audits.mozilla.audits.either]] +who = "Mike Hommey " +criteria = "safe-to-deploy" +delta = "1.6.1 -> 1.7.0" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.either]] +who = "Mike Hommey " +criteria = "safe-to-deploy" +delta = "1.7.0 -> 1.8.0" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.either]] +who = "Mike Hommey " +criteria = "safe-to-deploy" +delta = "1.8.0 -> 1.8.1" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.fastrand]] +who = "Mike Hommey " +criteria = "safe-to-deploy" +delta = "1.9.0 -> 2.0.0" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.fnv]] +who = "Bobby Holley " +criteria = "safe-to-deploy" +version = "1.0.7" +notes = "Simple hasher implementation with no unsafe code." +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.form_urlencoded]] +who = "Valentin Gosu " +criteria = "safe-to-deploy" +version = "1.2.0" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.form_urlencoded]] +who = "Valentin Gosu " +criteria = "safe-to-deploy" +delta = "1.2.0 -> 1.2.1" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.hashbrown]] +who = "Mike Hommey " +criteria = "safe-to-deploy" +version = "0.12.3" +notes = "This version is used in rust's libstd, so effectively we're already trusting it" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.hex]] +who = "Simon Friedberger " +criteria = "safe-to-deploy" +version = "0.4.3" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.linked-hash-map]] +who = "Aria Beingessner " +criteria = "safe-to-deploy" +version = "0.5.4" +notes = "I own this crate (I am contain-rs) and 0.5.4 passes miri. This code is very old and used by lots of people, so I'm pretty confident in it, even though it's in maintenance-mode and missing some nice-to-have APIs." +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.linked-hash-map]] +who = "Alex Franchuk " +criteria = "safe-to-deploy" +delta = "0.5.4 -> 0.5.6" +notes = "New unsafe code has debug assertions and meets invariants. All other changes are formatting-related." +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.litrs]] +who = "Erich Gubler " +criteria = "safe-to-deploy" +version = "0.4.1" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.log]] +who = "Mike Hommey " +criteria = "safe-to-deploy" +version = "0.4.17" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.log]] +who = "Jan-Erik Rediger " +criteria = "safe-to-deploy" +delta = "0.4.17 -> 0.4.18" +notes = "One dependency removed, others updated (which we don't rely on), some APIs (which we don't use) changed." +aggregated-from = "https://raw.githubusercontent.com/mozilla/glean/main/supply-chain/audits.toml" + +[[audits.mozilla.audits.log]] +who = "Kagami Sascha Rosylight " +criteria = "safe-to-deploy" +delta = "0.4.18 -> 0.4.20" +notes = "Only cfg attribute and internal macro changes and module refactorings" +aggregated-from = "https://raw.githubusercontent.com/mozilla/glean/main/supply-chain/audits.toml" + +[[audits.mozilla.audits.num-conv]] +who = "Alex Franchuk " +criteria = "safe-to-deploy" +version = "0.1.0" +notes = """ +Very straightforward, simple crate. No dependencies, unsafe, extern, +side-effectful std functions, etc. +""" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.powerfmt]] +who = "Alex Franchuk " +criteria = "safe-to-deploy" +version = "0.2.0" +notes = """ +A tiny bit of unsafe code to implement functionality that isn't in stable rust +yet, but it's all valid. Otherwise it's a pretty simple crate. +""" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.rustc-hash]] +who = "Bobby Holley " +criteria = "safe-to-deploy" +version = "1.1.0" +notes = "Straightforward crate with no unsafe code, does what it says on the tin." +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.synstructure]] +who = "Nika Layzell " +criteria = "safe-to-deploy" +version = "0.12.6" +notes = """ +I am the primary author of the `synstructure` crate, and its current +maintainer. The one use of `unsafe` is unnecessary, but documented and +harmless. It will be removed in the next version. +""" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.time-core]] +who = "Kershaw Chang " +criteria = "safe-to-deploy" +version = "0.1.0" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.time-core]] +who = "Kershaw Chang " +criteria = "safe-to-deploy" +delta = "0.1.0 -> 0.1.1" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.time-core]] +who = "Alex Franchuk " +criteria = "safe-to-deploy" +delta = "0.1.1 -> 0.1.2" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.time-macros]] +who = "Kershaw Chang " +criteria = "safe-to-deploy" +version = "0.2.6" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.time-macros]] +who = "Kershaw Chang " +criteria = "safe-to-deploy" +delta = "0.2.6 -> 0.2.10" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.time-macros]] +who = "Alex Franchuk " +criteria = "safe-to-deploy" +delta = "0.2.10 -> 0.2.18" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.url]] +who = "Valentin Gosu " +criteria = "safe-to-deploy" +version = "2.4.0" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.url]] +who = "Valentin Gosu " +criteria = "safe-to-deploy" +delta = "2.4.0 -> 2.4.1" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.url]] +who = "Valentin Gosu " +criteria = "safe-to-deploy" +delta = "2.4.1 -> 2.5.0" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.zerocopy]] +who = "Alex Franchuk " +criteria = "safe-to-deploy" +version = "0.7.32" +notes = """ +This crate is `no_std` so doesn't use any side-effectful std functions. It +contains quite a lot of `unsafe` code, however. I verified portions of this. It +also has a large, thorough test suite. The project claims to run tests with +Miri to have stronger soundness checks, and also claims to use formal +verification tools to prove correctness. +""" +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.mozilla.audits.zerocopy-derive]] +who = "Alex Franchuk " +criteria = "safe-to-deploy" +version = "0.7.32" +notes = "Clean, safe macros for zerocopy." +aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml" + +[[audits.zcash.audits.either]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "1.8.1 -> 1.9.0" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.either]] +who = "Daira-Emma Hopwood " +criteria = "safe-to-deploy" +delta = "1.9.0 -> 1.11.0" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.fastrand]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "2.0.0 -> 2.0.1" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.fastrand]] +who = "Daira-Emma Hopwood " +criteria = "safe-to-deploy" +delta = "2.0.1 -> 2.0.2" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.fastrand]] +who = "Daira-Emma Hopwood " +criteria = "safe-to-deploy" +delta = "2.0.2 -> 2.1.0" +notes = """ +As noted in the changelog, this version produces different output for a given seed. +The documentation did not mention stability. It is possible that some uses relying on +determinism across the update would be broken. + +The new constants do appear to match WyRand v4.2 (modulo ordering issues that I have not checked): +https://github.com/wangyi-fudan/wyhash/blob/408620b6d12b7d667b3dd6ae39b7929a39e8fa05/wyhash.h#L145 +I have no way to check whether these constants are an improvement or not. +""" +aggregated-from = "https://raw.githubusercontent.com/zcash/librustzcash/main/supply-chain/audits.toml" + +[[audits.zcash.audits.inout]] +who = "Daira Hopwood " +criteria = "safe-to-deploy" +version = "0.1.3" +notes = "Reviewed in full." +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.known-folders]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +version = "1.0.1" +notes = """ +Uses `unsafe` blocks to interact with `windows-sys` crate. +- `SHGetKnownFolderPath` safety requirements are met. +- `CoTaskMemFree` has no effect if passed `NULL`, so there is no issue if some + future refactor created a pathway where `ffi::Guard` could be dropped before + `SHGetKnownFolderPath` is called. +- Small nit: `ffi::Guard::as_pwstr` takes `&self` but returns `PWSTR` which is + the mutable type; it should instead return `PCWSTR` which is the const type + (and what `lstrlenW` takes) instead of implicitly const-casting the pointer, + as this would better reflect the intent to take an immutable reference. +- The slice constructed from the `PWSTR` correctly goes out of scope before + `guard` is dropped. +- A code comment says that `path_ptr` is valid for `len` bytes, but `PCWSTR` is + a `*const u16` and `lstrlenW` returns its length \"in characters\" (which the + Windows documentation confirms means the number of `WCHAR` values). This is + likely a typo; the code checks that `len * size_of::() <= isize::MAX`. +""" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.known-folders]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "1.0.1 -> 1.1.0" +notes = "Addresses the notes from my previous review :)" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.log]] +who = "Daira-Emma Hopwood " +criteria = "safe-to-deploy" +delta = "0.4.20 -> 0.4.21" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.maybe-rayon]] +who = "Sean Bowe " +criteria = "safe-to-deploy" +version = "0.1.1" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.pin-project-lite]] +who = "Daira-Emma Hopwood " +criteria = "safe-to-deploy" +delta = "0.2.13 -> 0.2.14" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.rand_xorshift]] +who = "Sean Bowe " +criteria = "safe-to-deploy" +version = "0.3.0" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.redjubjub]] +who = "Daira Emma Hopwood " +criteria = "safe-to-deploy" +version = "0.7.0" +notes = """ +This crate is a thin wrapper around the `reddsa` crate, which I did not review. I also +did not review tests or verify test vectors. + +The comment on `batch::Verifier::verify` has an error in the batch verification equation, +filed as https://github.com/ZcashFoundation/redjubjub/issues/163 . It does not affect the +implementation which just delegates to `reddsa`. `reddsa` has the same comment bug filed as +https://github.com/ZcashFoundation/reddsa/issues/52 , but its batch verification implementation +is correct. (I checked the latter against https://zips.z.cash/protocol/protocol.pdf#reddsabatchvalidate +which has had previous cryptographic review by NCC group; see finding NCC-Zcash2018-009 in +https://research.nccgroup.com/wp-content/uploads/2020/07/NCC_Group_Zcash2018_Public_Report_2019-01-30_v1.3.pdf ). +""" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.rustc_version]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +version = "0.4.0" +notes = """ +Most of the crate is code to parse and validate the output of `rustc -vV`. The caller can +choose which `rustc` to use, or can use `rustc_version::{version, version_meta}` which will +try `$RUSTC` followed by `rustc`. + +If an adversary can arbitrarily set the `$RUSTC` environment variable then this crate will +execute arbitrary code. But when this crate is used within a build script, `$RUSTC` should +be set correctly by `cargo`. +""" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.signature]] +who = "Daira Emma Hopwood " +criteria = "safe-to-deploy" +version = "2.1.0" +notes = """ +This crate uses `#![forbid(unsafe_code)]`, has no build script, and only provides traits with some trivial default implementations. +I did not review whether implementing these APIs would present any undocumented cryptographic hazards. +""" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.signature]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "2.1.0 -> 2.2.0" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.tinyvec_macros]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.1.0 -> 0.1.1" +notes = "Adds `#![forbid(unsafe_code)]` and license files." +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.tokio-stream]] +who = "Daira-Emma Hopwood " +criteria = "safe-to-deploy" +delta = "0.1.14 -> 0.1.15" +aggregated-from = "https://raw.githubusercontent.com/zcash/librustzcash/main/supply-chain/audits.toml" + +[[audits.zcash.audits.tonic]] +who = "Daira-Emma Hopwood " +criteria = "safe-to-deploy" +delta = "0.10.2 -> 0.11.0" +aggregated-from = "https://raw.githubusercontent.com/zcash/librustzcash/main/supply-chain/audits.toml" + +[[audits.zcash.audits.tonic-build]] +who = "Daira-Emma Hopwood " +criteria = "safe-to-deploy" +delta = "0.10.2 -> 0.11.0" +aggregated-from = "https://raw.githubusercontent.com/zcash/librustzcash/main/supply-chain/audits.toml" + +[[audits.zcash.audits.wagyu-zcash-parameters]] +who = "Sean Bowe " +criteria = "safe-to-deploy" +version = "0.2.0" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.wagyu-zcash-parameters-1]] +who = "Sean Bowe " +criteria = "safe-to-deploy" +version = "0.2.0" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.wagyu-zcash-parameters-2]] +who = "Sean Bowe " +criteria = "safe-to-deploy" +version = "0.2.0" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.wagyu-zcash-parameters-3]] +who = "Sean Bowe " +criteria = "safe-to-deploy" +version = "0.2.0" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.wagyu-zcash-parameters-4]] +who = "Sean Bowe " +criteria = "safe-to-deploy" +version = "0.2.0" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.wagyu-zcash-parameters-5]] +who = "Sean Bowe " +criteria = "safe-to-deploy" +version = "0.2.0" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.wagyu-zcash-parameters-6]] +who = "Sean Bowe " +criteria = "safe-to-deploy" +version = "0.2.0" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[[audits.zcash.audits.wasm-bindgen-macro-support]] +who = "Daira-Emma Hopwood " +criteria = "safe-to-deploy" +version = "0.2.92" +aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" + +[audits.zcashd.audits] From 8ef0c0185c1882bb2e240219ac03ed43a6fe314e Mon Sep 17 00:00:00 2001 From: Marek Date: Wed, 26 Jun 2024 00:39:48 +0200 Subject: [PATCH 04/11] chore: Manually update dependencies (#8643) * Remove unneeded deps from `deny.toml` * Run `cargo update` * Re-add some deps to `deny.toml` --- Cargo.lock | 494 +++++++++++++++++++++++++++-------------------------- deny.toml | 50 ------ 2 files changed, 253 insertions(+), 291 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e4bc271f0aa..7eecf65cb51 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -12,7 +12,7 @@ dependencies = [ "arc-swap", "backtrace", "canonical-path", - "clap 4.5.4", + "clap 4.5.7", "color-eyre", "fs-err", "once_cell", @@ -84,7 +84,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if 1.0.0", - "getrandom 0.2.14", + "getrandom 0.2.15", "once_cell", "version_check", "zerocopy", @@ -167,9 +167,9 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a64c907d4e79225ac72e2a354c9ce84d50ebb4586dee56c82b3ee73004f537f5" +checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" dependencies = [ "windows-sys 0.52.0", ] @@ -186,9 +186,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.82" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] name = "arc-swap" @@ -210,9 +210,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "async-compression" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e9eabd7a98fe442131a17c316bd9349c43695e49e730c3c8e12cfb5f4da2693" +checksum = "cd066d0b4ef8ecb03a55319dc13aa6910616d0f44008a045bb1835af830abff5" dependencies = [ "flate2", "futures-core", @@ -240,7 +240,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.68", ] [[package]] @@ -251,9 +251,15 @@ checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.68", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "atty" version = "0.2.14" @@ -267,9 +273,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "axum" @@ -284,7 +290,7 @@ dependencies = [ "futures-util", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.28", + "hyper 0.14.29", "itoa", "matchit", "memchr", @@ -403,10 +409,10 @@ version = "0.69.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cexpr", "clang-sys", - "itertools 0.10.5", + "itertools 0.12.1", "lazy_static", "lazycell", "log", @@ -416,7 +422,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.66", + "syn 2.0.68", "which", ] @@ -457,9 +463,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "bitflags-serde-legacy" @@ -467,7 +473,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b64e60c28b6d25ad92e8b367801ff9aa12b41d05fc8798055d296bace4a60cc" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "serde", ] @@ -570,9 +576,9 @@ checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" [[package]] name = "bytemuck" -version = "1.15.0" +version = "1.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15" +checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e" [[package]] name = "byteorder" @@ -599,9 +605,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" +checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" dependencies = [ "serde", ] @@ -652,9 +658,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.96" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "065a29261d53ba54260972629f9ca6bffa69bac13cd1fed61420f7fa68b9f8bd" +checksum = "c891175c3fb232128f48de6590095e59198bbeb8620c310be349bfc3afd12c7b" dependencies = [ "jobserver", "libc", @@ -759,9 +765,9 @@ dependencies = [ [[package]] name = "clang-sys" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", "libc", @@ -785,9 +791,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.4" +version = "4.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" +checksum = "5db83dced34638ad474f39f250d7fea9598bdd239eaced1bdf45d597da0f433f" dependencies = [ "clap_builder", "clap_derive", @@ -795,9 +801,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.2" +version = "4.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" +checksum = "f7e204572485eb3fbf28f871612191521df159bc3e15a9f5064c66dba3a8c05f" dependencies = [ "anstream", "anstyle", @@ -807,21 +813,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.4" +version = "4.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" +checksum = "c780290ccf4fb26629baa7a1081e68ced113f1d3ec302fa5948f1c381ebf06c6" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.68", ] [[package]] name = "clap_lex" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" +checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" [[package]] name = "color-eyre" @@ -946,9 +952,9 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.4.0" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if 1.0.0", ] @@ -962,7 +968,7 @@ dependencies = [ "anes", "cast", "ciborium", - "clap 4.5.4", + "clap 4.5.7", "criterion-plot", "is-terminal", "itertools 0.10.5", @@ -991,9 +997,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" dependencies = [ "crossbeam-utils", ] @@ -1019,9 +1025,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crunchy" @@ -1064,7 +1070,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.68", ] [[package]] @@ -1079,12 +1085,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.8" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" +checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" dependencies = [ - "darling_core 0.20.8", - "darling_macro 0.20.8", + "darling_core 0.20.9", + "darling_macro 0.20.9", ] [[package]] @@ -1103,16 +1109,16 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.8" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" +checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", - "strsim 0.10.0", - "syn 2.0.66", + "strsim 0.11.1", + "syn 2.0.68", ] [[package]] @@ -1128,13 +1134,13 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.8" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" +checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ - "darling_core 0.20.8", + "darling_core 0.20.9", "quote", - "syn 2.0.66", + "syn 2.0.68", ] [[package]] @@ -1243,9 +1249,9 @@ dependencies = [ [[package]] name = "either" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" +checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" [[package]] name = "elasticsearch" @@ -1310,9 +1316,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys 0.52.0", @@ -1356,9 +1362,9 @@ dependencies = [ [[package]] name = "fiat-crypto" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38793c55593b33412e3ae40c2c9781ffaa6f438f6f8c10f24e71846fbd7ae01e" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" [[package]] name = "fixed-hash" @@ -1501,7 +1507,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.68", ] [[package]] @@ -1557,9 +1563,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -1580,7 +1586,7 @@ version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "232e6a7bfe35766bf715e55a88b39a700596c0ccfd88cd3680b4cdb40d66ef70" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "libc", "libgit2-sys", "log", @@ -1602,8 +1608,8 @@ dependencies = [ "aho-corasick", "bstr", "log", - "regex-automata 0.4.6", - "regex-syntax 0.8.3", + "regex-automata 0.4.7", + "regex-syntax 0.8.4", ] [[package]] @@ -1639,15 +1645,15 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "816ec7294445779408f36fe57bc5b7fc1cf59664059096c65f905c1c61f58069" +checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" dependencies = [ + "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "futures-util", "http 1.1.0", "indexmap 2.2.6", "slab", @@ -1830,7 +1836,7 @@ checksum = "f34059280f617a59ee59a0455e93460d67e5c76dec42dd262d38f0f390f437b2" dependencies = [ "flume", "indicatif", - "parking_lot 0.12.2", + "parking_lot 0.12.3", ] [[package]] @@ -1878,12 +1884,12 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", - "futures-core", + "futures-util", "http 1.1.0", "http-body 1.0.0", "pin-project-lite", @@ -1891,9 +1897,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.8.0" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" [[package]] name = "httpdate" @@ -1925,9 +1931,9 @@ dependencies = [ [[package]] name = "hyper" -version = "0.14.28" +version = "0.14.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +checksum = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33" dependencies = [ "bytes", "futures-channel", @@ -1956,7 +1962,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.4", + "h2 0.4.5", "http 1.1.0", "http-body 1.0.0", "httparse", @@ -1976,7 +1982,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.28", + "hyper 0.14.29", "rustls", "tokio", "tokio-rustls", @@ -1988,7 +1994,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ - "hyper 0.14.28", + "hyper 0.14.29", "pin-project-lite", "tokio", "tokio-io-timeout", @@ -1996,9 +2002,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" +checksum = "7b875924a60b96e5d7b9ae7b066540b1dd1cbd90d1828f54c92e02a283351c56" dependencies = [ "bytes", "futures-channel", @@ -2167,9 +2173,9 @@ dependencies = [ [[package]] name = "instant" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ "cfg-if 1.0.0", ] @@ -2206,6 +2212,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + [[package]] name = "itertools" version = "0.13.0" @@ -2284,7 +2299,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1dea6e07251d9ce6a552abfb5d7ad6bc290a4596c8dcc3d795fae2bbdc1f3ff" dependencies = [ "futures", - "hyper 0.14.28", + "hyper 0.14.29", "jsonrpc-core", "jsonrpc-server-utils", "log", @@ -2336,11 +2351,11 @@ dependencies = [ [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" dependencies = [ - "spin 0.5.2", + "spin 0.9.8", ] [[package]] @@ -2351,9 +2366,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.154" +version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "libgit2-sys" @@ -2369,9 +2384,9 @@ dependencies = [ [[package]] name = "libloading" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" +checksum = "e310b3a6b5907f99202fcdb4960ff45b93735d7c7d96b760fcff8db2dc0e103d" dependencies = [ "cfg-if 1.0.0", "windows-targets 0.52.5", @@ -2389,7 +2404,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "libc", ] @@ -2410,9 +2425,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.16" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e143b5e666b2695d28f6bca6497720813f699c9602dd7f5cac91008b8ada7f9" +checksum = "c15da26e5af7e25c90b37a2d75cdbf940cf4a55316de9d84c679c9b8bfabf82e" dependencies = [ "cc", "libc", @@ -2428,9 +2443,9 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linux-raw-sys" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "litrs" @@ -2456,9 +2471,9 @@ checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "lz4-sys" -version = "1.9.4" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900" +checksum = "e9764018d143cc854c9f17f0b907de70f14393b1f502da6375dce70f00514eb3" dependencies = [ "cc", "libc", @@ -2491,9 +2506,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memuse" @@ -2563,9 +2578,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", ] @@ -2599,7 +2614,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" dependencies = [ - "getrandom 0.2.14", + "getrandom 0.2.15", ] [[package]] @@ -2641,11 +2656,10 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" dependencies = [ - "autocfg", "num-integer", "num-traits", ] @@ -2677,9 +2691,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", "libm", @@ -2823,9 +2837,9 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.6.9" +version = "3.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "881331e34fa842a2fb61cc2db9643a8fedc615e47cfcc52597d1af0db9a7e8fe" +checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" dependencies = [ "arrayvec", "bitvec", @@ -2837,11 +2851,11 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "3.6.9" +version = "3.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be30eaf4b0a9fba5336683b38de57bb86d179a35862ba6bfcf57625d006bde5b" +checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" dependencies = [ - "proc-macro-crate 2.0.0", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", "syn 1.0.109", @@ -2860,9 +2874,9 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", "parking_lot_core 0.9.10", @@ -2890,7 +2904,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall 0.5.1", + "redox_syscall 0.5.2", "smallvec", "windows-targets 0.52.5", ] @@ -2968,7 +2982,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.68", ] [[package]] @@ -2984,9 +2998,9 @@ dependencies = [ [[package]] name = "petgraph" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", "indexmap 2.2.6", @@ -3009,7 +3023,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.68", ] [[package]] @@ -3042,9 +3056,9 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "plotters" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" +checksum = "a15b6eccb8484002195a3e44fe65a4ce8e93a625797a063735536fd59cb01cf3" dependencies = [ "num-traits", "plotters-backend", @@ -3055,15 +3069,15 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609" +checksum = "414cec62c6634ae900ea1c56128dfe87cf63e7caece0852ec76aba307cebadb7" [[package]] name = "plotters-svg" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab" +checksum = "81b30686a7d9c3e010b84284bdd26a29f2138574f52f5eb6f794fc0ad924e705" dependencies = [ "plotters-backend", ] @@ -3099,12 +3113,12 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "prettyplease" -version = "0.2.19" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ac2cf0f2e4f42b49f5ffd07dae8d746508ef7526c13940e5f524012ae6c6550" +checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" dependencies = [ "proc-macro2", - "syn 2.0.66", + "syn 2.0.68", ] [[package]] @@ -3129,11 +3143,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "2.0.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" dependencies = [ - "toml_edit 0.20.7", + "toml_edit 0.21.1", ] [[package]] @@ -3162,28 +3176,28 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.84" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec96c6a92621310b51366f1e28d05ef11489516e93be030060e5fc12024a49d6" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "proptest" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" +checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.5.0", + "bitflags 2.6.0", "lazy_static", "num-traits", "rand 0.8.5", "rand_chacha 0.3.1", "rand_xorshift", - "regex-syntax 0.8.3", + "regex-syntax 0.8.4", "rusty-fork", "tempfile", "unarray", @@ -3212,13 +3226,13 @@ dependencies = [ [[package]] name = "prost-build" -version = "0.12.4" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80b776a1b2dc779f5ee0641f8ade0125bc1298dd41a9a0c16d8bd57b42d222b1" +checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4" dependencies = [ "bytes", "heck 0.5.0", - "itertools 0.10.5", + "itertools 0.12.1", "log", "multimap", "once_cell", @@ -3227,7 +3241,7 @@ dependencies = [ "prost", "prost-types", "regex", - "syn 2.0.66", + "syn 2.0.68", "tempfile", ] @@ -3238,17 +3252,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" dependencies = [ "anyhow", - "itertools 0.10.5", + "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.68", ] [[package]] name = "prost-types" -version = "0.12.4" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3235c33eb02c1f1e212abdbe34c78b264b038fb58ca612664343271e36e55ffe" +checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0" dependencies = [ "prost", ] @@ -3380,7 +3394,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.14", + "getrandom 0.2.15", ] [[package]] @@ -3407,7 +3421,7 @@ version = "11.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e29830cbb1290e404f24c73af91c5d8d631ce7e128691e9477556b540cd01ecd" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", ] [[package]] @@ -3472,11 +3486,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" +checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", ] [[package]] @@ -3485,21 +3499,21 @@ version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ - "getrandom 0.2.14", + "getrandom 0.2.15", "libredox", "thiserror", ] [[package]] name = "regex" -version = "1.10.4" +version = "1.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.6", - "regex-syntax 0.8.3", + "regex-automata 0.4.7", + "regex-syntax 0.8.4", ] [[package]] @@ -3513,13 +3527,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.3", + "regex-syntax 0.8.4", ] [[package]] @@ -3530,9 +3544,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "reqwest" @@ -3549,7 +3563,7 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.28", + "hyper 0.14.29", "hyper-rustls", "ipnet", "js-sys", @@ -3609,7 +3623,7 @@ checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", "cfg-if 1.0.0", - "getrandom 0.2.14", + "getrandom 0.2.15", "libc", "spin 0.9.8", "untrusted 0.9.0", @@ -3657,9 +3671,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" @@ -3697,7 +3711,7 @@ version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "errno", "libc", "linux-raw-sys", @@ -3737,9 +3751,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.15" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" [[package]] name = "rusty-fork" @@ -3755,9 +3769,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "same-file" @@ -3981,14 +3995,14 @@ checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.68", ] [[package]] name = "serde_json" -version = "1.0.117" +version = "1.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +checksum = "d947f6b3163d8857ea16c4fa0dd4840d52f3041039a85decd46867eb1abef2e4" dependencies = [ "indexmap 2.2.6", "itoa", @@ -4063,10 +4077,10 @@ version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" dependencies = [ - "darling 0.20.8", + "darling 0.20.9", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.68", ] [[package]] @@ -4108,7 +4122,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b3cdd24424ce0b381646737fedddc33c4dcf7dcd2d545056b53f7982097bef5" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "either", "incrementalmerkletree", "tracing", @@ -4295,9 +4309,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.66" +version = "2.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" dependencies = [ "proc-macro2", "quote", @@ -4396,7 +4410,7 @@ checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.68", ] [[package]] @@ -4405,7 +4419,7 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d3b04d33c9633b8662b167b847c7ab521f83d1ae20f2321b65b5b925e532e36" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cfg-if 1.0.0", "libc", "log", @@ -4468,9 +4482,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "c55115c6fbe2d2bef26eb09ad74bde02d8255476fc0c7b515ef09fbb35742d82" dependencies = [ "tinyvec_macros", ] @@ -4483,16 +4497,16 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.37.0" +version = "1.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" dependencies = [ "backtrace", "bytes", "libc", "mio", "num_cpus", - "parking_lot 0.12.2", + "parking_lot 0.12.3", "pin-project-lite", "signal-hook-registry", "socket2", @@ -4513,13 +4527,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.68", ] [[package]] @@ -4595,14 +4609,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.13" +version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4e43f8cc456c9704c851ae29c67e17ef65d2c30017c17a9765b89c382dc8bba" +checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.13", + "toml_edit 0.22.14", ] [[package]] @@ -4616,9 +4630,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.20.7" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ "indexmap 2.2.6", "toml_datetime", @@ -4627,15 +4641,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.13" +version = "0.22.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c127785850e8c20836d49732ae6abfa47616e60bf9d9f57c43c250361a9db96c" +checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" dependencies = [ "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.7", + "winnow 0.6.13", ] [[package]] @@ -4652,7 +4666,7 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.28", + "hyper 0.14.29", "hyper-timeout", "percent-encoding", "pin-project", @@ -4679,7 +4693,7 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.28", + "hyper 0.14.29", "hyper-timeout", "percent-encoding", "pin-project", @@ -4702,7 +4716,7 @@ dependencies = [ "proc-macro2", "prost-build", "quote", - "syn 2.0.66", + "syn 2.0.68", ] [[package]] @@ -4715,7 +4729,7 @@ dependencies = [ "proc-macro2", "prost-build", "quote", - "syn 2.0.66", + "syn 2.0.68", ] [[package]] @@ -4845,7 +4859,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.68", ] [[package]] @@ -4942,11 +4956,10 @@ dependencies = [ [[package]] name = "tracing-test" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a2c0ff408fe918a94c428a3f2ad04e4afd5c95bbc08fcf868eff750c15728a4" +checksum = "557b891436fe0d5e0e363427fc7f217abf9ccd510d5136549847bdcbcd011d68" dependencies = [ - "lazy_static", "tracing-core", "tracing-subscriber", "tracing-test-macro", @@ -4954,13 +4967,12 @@ dependencies = [ [[package]] name = "tracing-test-macro" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "258bc1c4f8e2e73a977812ab339d503e6feeb92700f6d07a6de4d321522d5c08" +checksum = "04659ddb06c87d233c566112c1c9c5b9e98256d9af50ec3bc9c8327f873a7568" dependencies = [ - "lazy_static", "quote", - "syn 1.0.109", + "syn 2.0.68", ] [[package]] @@ -5046,9 +5058,9 @@ checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] name = "unicode-width" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "unicode-xid" @@ -5101,9 +5113,9 @@ dependencies = [ [[package]] name = "url" -version = "2.5.0" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", @@ -5113,15 +5125,15 @@ dependencies = [ [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.8.0" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" +checksum = "5de17fd2f7da591098415cff336e12965a28061ddace43b59cb3c430179c9439" dependencies = [ "serde", ] @@ -5283,7 +5295,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.68", "wasm-bindgen-shared", ] @@ -5317,7 +5329,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.68", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5556,9 +5568,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.7" +version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14b9415ee827af173ebb3f15f9083df5a122eb93572ec28741fb153356ea2578" +checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" dependencies = [ "memchr", ] @@ -5714,9 +5726,9 @@ dependencies = [ [[package]] name = "zcash_primitives" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5a8d812efec385ecbcefc862c0005bb1336474ea7dd9b671d5bbddaadd04be2" +checksum = "8a9ccee58d0f9e8da312a999a4c0cd3d001ff3b37af6fb1318c89e6a3076f4da" dependencies = [ "aes", "bip0039", @@ -5807,7 +5819,7 @@ dependencies = [ name = "zebra-chain" version = "1.0.0-beta.37" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "bitflags-serde-legacy", "bitvec", "blake2b_simd", @@ -5938,7 +5950,7 @@ dependencies = [ name = "zebra-network" version = "1.0.0-beta.37" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "byteorder", "bytes", "chrono", @@ -5966,7 +5978,7 @@ dependencies = [ "tokio", "tokio-stream", "tokio-util 0.7.11", - "toml 0.8.13", + "toml 0.8.14", "tower", "tracing", "tracing-error", @@ -5995,7 +6007,7 @@ dependencies = [ "chrono", "futures", "hex", - "hyper 0.14.28", + "hyper 0.14.29", "indexmap 2.2.6", "insta", "jsonrpc-core", @@ -6156,7 +6168,7 @@ dependencies = [ "serde_json", "serde_yaml", "structopt", - "syn 2.0.66", + "syn 2.0.68", "thiserror", "tinyvec", "tokio", @@ -6178,7 +6190,7 @@ dependencies = [ "abscissa_core", "atty", "chrono", - "clap 4.5.4", + "clap 4.5.7", "color-eyre", "console-subscriber", "dirs", @@ -6187,7 +6199,7 @@ dependencies = [ "hex-literal", "howudoin", "humantime-serde", - "hyper 0.14.28", + "hyper 0.14.29", "indexmap 2.2.6", "indicatif", "inferno", @@ -6216,7 +6228,7 @@ dependencies = [ "tinyvec", "tokio", "tokio-stream", - "toml 0.8.13", + "toml 0.8.14", "tonic 0.11.0", "tonic-build 0.11.0", "tower", @@ -6243,29 +6255,29 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.32" +version = "0.7.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.32" +version = "0.7.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.68", ] [[package]] name = "zeroize" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" dependencies = [ "zeroize_derive", ] @@ -6278,7 +6290,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.68", ] [[package]] diff --git a/deny.toml b/deny.toml index ad551dd0e8a..eea0f8b7ac6 100644 --- a/deny.toml +++ b/deny.toml @@ -54,54 +54,18 @@ skip-tree = [ # wait for primitive-types to upgrade { name = "proc-macro-crate", version = "=0.1.5" }, - # wait for criterion to upgrade - { name = "itertools", version = "=0.10.5" }, - - # wait for h2 and tower to upgrade - { name = "indexmap", version = "=1.9.3" }, - - # wait for tracing and many other crates to upgrade - # this duplicate dependency currently only exists in testing builds - { name = "regex-syntax", version = "=0.6.29" }, - - # wait for `parking_lot` crate inside `jsonrpc-http-server` to upgrade - { name = "redox_syscall", version = "=0.2.16" }, - # wait for `color-eyre` to upgrade { name = "owo-colors", version = "=3.5.0" }, - # wait for `serde_with_macros` to upgrade `darling_core` - { name = "strsim", version = "=0.10.0" }, - - # ZF crates - - # wait for indexmap, toml_edit, serde_json, tower to upgrade - { name = "hashbrown", version = "=0.12.3" }, - - # wait for zcash_script to upgrade - { name = "metrics", version = "=0.21.1" }, - - # ECC crates - # wait for hdwallet to upgrade { name = "ring", version = "=0.16.20" }, - # wait for the equihash/solver feature to merge - # https://github.com/zcash/librustzcash/pull/1083 - # https://github.com/zcash/librustzcash/pull/1088 - { name = "equihash", version = "=0.2.0" }, - - # zebra-utils dependencies - # wait for structopt upgrade (or upgrade to clap 4) { name = "clap", version = "=2.34.0" }, - { name = "heck", version = "=0.3.3" }, # wait for abscissa_core to upgrade {name = "tracing-log", version = "=0.1.4" }, - # Test-only dependencies - # wait for tokio-test -> tokio-stream to upgrade { name = "tokio-util", version = "=0.6.10" }, @@ -109,20 +73,10 @@ skip-tree = [ # also wait for ron to update insta, and wait for tonic update. { name = "base64", version = "=0.13.1" }, - # wait for proptest's rusty-fork dependency to upgrade quick-error - { name = "quick-error", version = "=1.2.3" }, - # wait for console-subscriber to update tonic. { name = "tonic", version = "=0.10.2" }, { name = "tonic-build", version = "=0.10.2" }, - # Optional dependencies - - # upgrade abscissa (required dependency) and arti (optional dependency) - { name = "semver", version = "=0.9.0" }, - - # Elasticsearch dependencies - # wait for elasticsearch to update base64, darling, rustc_version, serde_with { name = "elasticsearch", version = "=8.5.0-alpha.1" }, ] @@ -142,10 +96,6 @@ unknown-git = "deny" allow-registry = ["https://github.com/rust-lang/crates.io-index"] # List of URLs for allowed Git repositories allow-git = [ - # TODO: remove this after the equihash solver branch is merged and released. - # - # "cargo deny" will log a warning in builds without the internal-miner feature. That's ok. - "https://github.com/ZcashFoundation/librustzcash.git" ] [sources.allow-org] From d1a9004b3290add477f9a83ce959b7538725be1d Mon Sep 17 00:00:00 2001 From: Marek Date: Wed, 26 Jun 2024 00:39:51 +0200 Subject: [PATCH 05/11] change(chain): Drop transactions with unpaid actions (#8638) * Set unpaid action limit to 0 * Update changelog * Apply suggestions from code review Co-authored-by: Arya * Rephrase a note on mempool checks --------- Co-authored-by: Arya --- CHANGELOG.md | 1 + zebra-chain/src/transaction/unmined/zip317.rs | 18 ++++++++++++++---- .../src/transaction/unmined/zip317/tests.rs | 9 +++++++-- zebra-consensus/src/transaction/tests.rs | 6 +++--- .../methods/get_block_template_rpcs/zip317.rs | 4 ++-- 5 files changed, 27 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e1e841ba73..361b5498e41 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org). - Fixed a bug with trailing characters in the openapi spec method descriptions ([#8597](https://github.com/ZcashFoundation/zebra/pull/8597)) - Added default constructions for several RPC method responses ([#8616](https://github.com/ZcashFoundation/zebra/pull/8616)) - Added Windows to the list of supported platforms in Tier 2 ([#8637](https://github.com/ZcashFoundation/zebra/pull/8637)) +- Zebra now drops transactions with unpaid actions in block templates and from the mempool. ## [Zebra 1.7.0](https://github.com/ZcashFoundation/zebra/releases/tag/v1.7.0) - 2024-05-07 diff --git a/zebra-chain/src/transaction/unmined/zip317.rs b/zebra-chain/src/transaction/unmined/zip317.rs index e9f4a757e53..b9f04ec7597 100644 --- a/zebra-chain/src/transaction/unmined/zip317.rs +++ b/zebra-chain/src/transaction/unmined/zip317.rs @@ -41,9 +41,13 @@ const BLOCK_PRODUCTION_WEIGHT_RATIO_CAP: f32 = 4.0; /// This avoids special handling for transactions with zero weight. const MIN_BLOCK_PRODUCTION_SUBSTITUTE_FEE: i64 = 1; -/// The ZIP-317 recommended limit on the number of unpaid actions per block. -/// `block_unpaid_action_limit` in ZIP-317. -pub const BLOCK_PRODUCTION_UNPAID_ACTION_LIMIT: u32 = 50; +/// If a tx has more than `BLOCK_UNPAID_ACTION_LIMIT` "unpaid actions", it will never be mined by +/// the [_Recommended algorithm for block template construction_][alg-def], implemented in Zebra +/// [here][alg-impl]. +/// +/// [alg-def]: https://zips.z.cash/zip-0317#recommended-algorithm-for-block-template-construction +/// [alg-impl]: https://github.com/zcashfoundation/zebra/blob/95e4d0973caac075b47589f6a05f9d744acd3db3/zebra-rpc/src/methods/get_block_template_rpcs/zip317.rs#L39 +pub const BLOCK_UNPAID_ACTION_LIMIT: u32 = 0; /// The minimum fee per kilobyte for Zebra mempool transactions. /// Also used as the minimum fee for a mempool transaction. @@ -178,7 +182,7 @@ pub fn mempool_checks( // > Nodes MAY drop these transactions. // // - if unpaid_actions > BLOCK_PRODUCTION_UNPAID_ACTION_LIMIT { + if unpaid_actions > BLOCK_UNPAID_ACTION_LIMIT { return Err(Error::UnpaidActions); } @@ -198,6 +202,12 @@ pub fn mempool_checks( // In zcashd this is `DEFAULT_MIN_RELAY_TX_FEE` and `LEGACY_DEFAULT_FEE`: // // + // + // ## Note + // + // If the check above for the maximum number of unpaid actions passes with + // [`BLOCK_UNPAID_ACTION_LIMIT`] set to zero, then there is no way for the legacy check below to + // fail. This renders the legacy check redundant in that case. const KILOBYTE: usize = 1000; diff --git a/zebra-chain/src/transaction/unmined/zip317/tests.rs b/zebra-chain/src/transaction/unmined/zip317/tests.rs index fb708a73c0b..883a596ef19 100644 --- a/zebra-chain/src/transaction/unmined/zip317/tests.rs +++ b/zebra-chain/src/transaction/unmined/zip317/tests.rs @@ -3,7 +3,7 @@ use super::{mempool_checks, Amount, Error}; #[test] fn zip317_unpaid_actions_err() { - let check = mempool_checks(51, Amount::try_from(1).unwrap(), 1); + let check = mempool_checks(1, Amount::try_from(1).unwrap(), 1); assert!(check.is_err()); assert_eq!(check.err(), Some(Error::UnpaidActions)); @@ -11,8 +11,13 @@ fn zip317_unpaid_actions_err() { #[test] fn zip317_minimum_rate_fee_err() { - let check = mempool_checks(50, Amount::try_from(1).unwrap(), 1000); + let check = mempool_checks(0, Amount::try_from(1).unwrap(), 1000); assert!(check.is_err()); assert_eq!(check.err(), Some(Error::FeeBelowMinimumRate)); } + +#[test] +fn zip317_mempool_checks_ok() { + assert!(mempool_checks(0, Amount::try_from(100).unwrap(), 1000).is_ok()) +} diff --git a/zebra-consensus/src/transaction/tests.rs b/zebra-consensus/src/transaction/tests.rs index 34244b38b47..0a4c21bb039 100644 --- a/zebra-consensus/src/transaction/tests.rs +++ b/zebra-consensus/src/transaction/tests.rs @@ -2945,7 +2945,7 @@ async fn mempool_zip317_error() { fund_height, true, 0, - Amount::try_from(10).expect("invalid value"), + Amount::try_from(10).expect("valid amount"), ); // Create a non-coinbase V5 tx. @@ -2998,7 +2998,7 @@ async fn mempool_zip317_error() { assert!(verifier_response.is_err()); assert_eq!( verifier_response.err(), - Some(TransactionError::Zip317(zip317::Error::FeeBelowMinimumRate)) + Some(TransactionError::Zip317(zip317::Error::UnpaidActions)) ); } @@ -3017,7 +3017,7 @@ async fn mempool_zip317_ok() { fund_height, true, 0, - Amount::try_from(10001).expect("invalid value"), + Amount::try_from(10_001).expect("valid amount"), ); // Create a non-coinbase V5 tx. diff --git a/zebra-rpc/src/methods/get_block_template_rpcs/zip317.rs b/zebra-rpc/src/methods/get_block_template_rpcs/zip317.rs index 4a6cf92c0d3..3f0979dc266 100644 --- a/zebra-rpc/src/methods/get_block_template_rpcs/zip317.rs +++ b/zebra-rpc/src/methods/get_block_template_rpcs/zip317.rs @@ -15,7 +15,7 @@ use zebra_chain::{ amount::NegativeOrZero, block::{Height, MAX_BLOCK_BYTES}, parameters::Network, - transaction::{zip317::BLOCK_PRODUCTION_UNPAID_ACTION_LIMIT, VerifiedUnminedTx}, + transaction::{zip317::BLOCK_UNPAID_ACTION_LIMIT, VerifiedUnminedTx}, transparent, }; use zebra_consensus::MAX_BLOCK_SIGOPS; @@ -64,7 +64,7 @@ pub async fn select_mempool_transactions( // Set up limit tracking let mut remaining_block_bytes: usize = MAX_BLOCK_BYTES.try_into().expect("fits in memory"); let mut remaining_block_sigops = MAX_BLOCK_SIGOPS; - let mut remaining_block_unpaid_actions: u32 = BLOCK_PRODUCTION_UNPAID_ACTION_LIMIT; + let mut remaining_block_unpaid_actions: u32 = BLOCK_UNPAID_ACTION_LIMIT; // Adjust the limits based on the coinbase transaction remaining_block_bytes -= fake_coinbase_tx.data.as_ref().len(); From 549a7bb599cf750ba8d48e2c50f0adad8df86df7 Mon Sep 17 00:00:00 2001 From: Arya Date: Thu, 27 Jun 2024 12:16:23 -0400 Subject: [PATCH 06/11] change(consensus): Lower mandatory checkpoint height (#8629) * Lowers the mandatory checkpoint height to the block before Canopy activation * Apply suggestions from code review Co-authored-by: Marek --------- Co-authored-by: Marek --- zebra-chain/src/parameters/network.rs | 67 ++----------------- .../src/parameters/network/tests/prop.rs | 23 +++---- 2 files changed, 15 insertions(+), 75 deletions(-) diff --git a/zebra-chain/src/parameters/network.rs b/zebra-chain/src/parameters/network.rs index 054fb76f450..bf0c027e3da 100644 --- a/zebra-chain/src/parameters/network.rs +++ b/zebra-chain/src/parameters/network.rs @@ -5,7 +5,7 @@ use std::{fmt, str::FromStr, sync::Arc}; use thiserror::Error; use crate::{ - block::{self, Height, HeightDiff}, + block::{self, Height}, parameters::NetworkUpgrade, }; @@ -15,42 +15,6 @@ pub mod testnet; #[cfg(test)] mod tests; -/// The ZIP-212 grace period length after the Canopy activation height. -/// -/// # Consensus -/// -/// ZIP-212 requires Zcash nodes to validate that Sapling spends and Orchard actions follows a -/// specific plaintext format after Canopy's activation. -/// -/// > [Heartwood onward] All Sapling and Orchard outputs in coinbase transactions MUST decrypt to a -/// > note plaintext , i.e. the procedure in § 4.19.3 ‘Decryption using a Full Viewing Key (Sapling -/// > and Orchard)’ on p. 67 does not return ⊥, using a sequence of 32 zero bytes as the outgoing -/// > viewing key . (This implies that before Canopy activation, Sapling outputs of a coinbase -/// > transaction MUST have note plaintext lead byte equal to 0x01.) -/// -/// > [Canopy onward] Any Sapling or Orchard output of a coinbase transaction decrypted to a note -/// > plaintext according to the preceding rule MUST have note plaintext lead byte equal to 0x02. -/// > (This applies even during the “grace period” specified in [ZIP-212].) -/// -/// -/// -/// Wallets have a grace period of 32,256 blocks after Canopy's activation to validate those blocks, -/// but nodes do not. -/// -/// > There is a "grace period" of 32256 blocks starting from the block at which this ZIP activates, -/// > during which note plaintexts with lead byte 0x01 MUST still be accepted [by wallets]. -/// > -/// > Let ActivationHeight be the activation height of this ZIP, and let GracePeriodEndHeight be -/// > ActivationHeight + 32256. -/// -/// -/// -/// Zebra uses `librustzcash` to validate that rule, but it won't validate it during the grace -/// period. Therefore Zebra must validate those blocks during the grace period using checkpoints. -/// Therefore the mandatory checkpoint height ([`Network::mandatory_checkpoint_height`]) must be -/// after the grace period. -const ZIP_212_GRACE_PERIOD_DURATION: HeightDiff = 32_256; - /// An enum describing the kind of network, whether it's the production mainnet or a testnet. // Note: The order of these variants is important for correct bincode (de)serialization // of history trees in the db format. @@ -234,34 +198,17 @@ impl Network { /// Mandatory checkpoints are a Zebra-specific feature. /// If a Zcash consensus rule only applies before the mandatory checkpoint, /// Zebra can skip validation of that rule. - /// - /// ZIP-212 grace period is only applied to default networks. + /// This is necessary because Zebra can't fully validate the blocks prior to Canopy. // TODO: // - Support constructing pre-Canopy coinbase tx and block templates and return `Height::MAX` instead of panicking // when Canopy activation height is `None` (#8434) - // - Add semantic block validation during the ZIP-212 grace period and update this method to always apply the ZIP-212 grace period pub fn mandatory_checkpoint_height(&self) -> Height { - // Currently this is after the ZIP-212 grace period. - // - // See the `ZIP_212_GRACE_PERIOD_DURATION` documentation for more information. - - let canopy_activation = NetworkUpgrade::Canopy + // Currently this is just before Canopy activation + NetworkUpgrade::Canopy .activation_height(self) - .expect("Canopy activation height must be present for both networks"); - - let is_a_default_network = match self { - Network::Mainnet => true, - Network::Testnet(params) => params.is_default_testnet(), - }; - - if is_a_default_network { - (canopy_activation + ZIP_212_GRACE_PERIOD_DURATION) - .expect("ZIP-212 grace period ends at a valid block height") - } else { - canopy_activation - .previous() - .expect("Canopy activation must be above Genesis height") - } + .expect("Canopy activation height must be present on all networks") + .previous() + .expect("Canopy activation height must be above min height") } /// Return the network name as defined in diff --git a/zebra-chain/src/parameters/network/tests/prop.rs b/zebra-chain/src/parameters/network/tests/prop.rs index c2b1e31e03f..76689a0a51a 100644 --- a/zebra-chain/src/parameters/network/tests/prop.rs +++ b/zebra-chain/src/parameters/network/tests/prop.rs @@ -1,32 +1,25 @@ use proptest::prelude::*; -use super::super::{Network, ZIP_212_GRACE_PERIOD_DURATION}; +use super::super::Network; use crate::{ block::Height, parameters::{NetworkUpgrade, TESTNET_MAX_TIME_START_HEIGHT}, }; proptest! { - /// Check that the mandatory checkpoint is after the ZIP-212 grace period. - /// - /// This is necessary because Zebra can't fully validate the blocks during the grace period due - /// to a limitation of `librustzcash`. - /// - /// See [`ZIP_212_GRACE_PERIOD_DURATION`] for more information. + /// Check that the mandatory checkpoint is immediately before Canopy activation. #[test] - fn mandatory_checkpoint_is_after_zip212_grace_period(network in any::()) { + fn mandatory_checkpoint_is_immediately_before_canopy(network in any::()) { let _init_guard = zebra_test::init(); - let canopy_activation = NetworkUpgrade::Canopy + let pre_canopy_activation = NetworkUpgrade::Canopy .activation_height(&network) - .expect("Canopy activation height is set"); + .expect("Canopy activation height is set") + .previous() + .expect("Canopy activation should be above min height"); - let grace_period_end_height = (canopy_activation + ZIP_212_GRACE_PERIOD_DURATION) - .expect("ZIP-212 grace period ends in a valid block height"); - - assert!(network.mandatory_checkpoint_height() >= grace_period_end_height); + assert!(network.mandatory_checkpoint_height() >= pre_canopy_activation); } - #[test] /// Asserts that the activation height is correct for the block /// maximum time rule on Testnet is correct. From 3b49f4212b7faa2edb013a179bdfdebcb1608db2 Mon Sep 17 00:00:00 2001 From: Marek Date: Fri, 28 Jun 2024 01:37:59 +0200 Subject: [PATCH 07/11] chore: Update checkpoints (#8652) * Update Mainnet checkpoints * Update Testnet checkpoints --- .../src/checkpoint/main-checkpoints.txt | 160 +++++++++++++++ .../src/checkpoint/test-checkpoints.txt | 184 ++++++++++++++++++ 2 files changed, 344 insertions(+) diff --git a/zebra-consensus/src/checkpoint/main-checkpoints.txt b/zebra-consensus/src/checkpoint/main-checkpoints.txt index c342d89c354..e9a05124a30 100644 --- a/zebra-consensus/src/checkpoint/main-checkpoints.txt +++ b/zebra-consensus/src/checkpoint/main-checkpoints.txt @@ -11843,3 +11843,163 @@ 2490806 000000000045ee592b9cfab505cfdbdd3a99f659be1f37387ecb81c1c1cdb9dc 2491206 00000000015107c8229661e3a138095978b80f7119448b63f3bf4cd3e4b73978 2491606 00000000012af71320352a2bb501f2c60cd9775b310c8c3f4d0a2fc994045f5c +2492006 000000000146b4d5849903432b80abaf05ce2d582fcb3bf322d3c071268be0b7 +2492406 0000000001550427e753c213d9f89b77af85a4c974c271a402199934d3cf2fd6 +2492806 00000000013797fe922b443e35e450bb5c6242b5f352696825ab75b31ab88118 +2493206 00000000011d1dad0214d17f3d411f97c1712e0fd6cd5e33b548296fb04df000 +2493606 0000000001b54139386603e30f18d43a396cf297ee58914e9ccea333d7740685 +2494006 00000000017495f297b80c05ce4aaceb92450c25eb678ef8300a7aac6dc5874d +2494406 000000000055e44e931adc647f0ea1b2c9e0665b30da228a06556726e4b5e063 +2494806 000000000032d339bbca94fdbfa54fe7097c2065db6df1339cb1755e33595e4e +2495206 0000000000399e34bb5ca5cc7e1ed8287dcdf14ec2a3a3902ef6b46c0ce12ce4 +2495606 00000000007dd5f972d8c5c500fea106b51c6cc96fb532c795ee995e571c9240 +2496006 00000000004f88e76c5e01ce4bb690c1811d58628aa9af2b1dfd64f811ef1b11 +2496406 0000000000972f5c155368ca0b549de64b45478e8213a5b791d71bfef202293d +2496806 000000000138feaba1703e3191c0f32c88d889558bb581e0574514a115b89eab +2497206 0000000000b9adf72b15c292833ac827025a6399cae1fc22bccc0ec277c454f3 +2497606 0000000000f714667eefa02d72824e42593b77415754b9f5ddb6c9d1199bb643 +2498006 00000000009f05ceec0b4d67d01a14443bd5adc8a883ef157ad49addd12513eb +2498406 0000000000789cc5a03a1657fb5f46c31e11605421d8047cbbf1a990435b6285 +2498806 000000000047ac9fbf3b22daa53fa32272af3f473ef69d26b5476fb7a8d89c47 +2499206 000000000074cf8ce69a6ecea503bb8c80ef7baecfd218e924f4b063b3534e9e +2499606 00000000009191fba1709813ba32406f91f30db75c1fbdaccd035f2d5b4e181d +2500006 00000000019496f133e234955ac5220127c8a188b6aeaf568d6667a009560c41 +2500406 00000000012f7f3c8431d51823a4cd816681101e796f6367e4cf5166a79791cc +2500806 0000000000f7fc02897322a64254db0e50b37f4f1515609441aaac51c5287cf0 +2501206 0000000000e865af75ae75c4a9597662979e176ac387e51ad1139ceb947ebc7c +2501606 0000000001c875f7e68f5f84f9e7cb01f316fecd0bdf05009e073a384a656dc4 +2502006 000000000024ce3c987aedb112749001b6dab7f311663dfd3d7023c6f76ec377 +2502406 00000000007d40b78893c1b3af2b61396daa7903a5abf103de34868c2d81a3e2 +2502806 0000000001541c9695469d3cedb0de9b571d8cd1ee3168a9999a57cd82388b94 +2503206 00000000011714caa0e817e9c5b92b9a9471e309eb52d73a6d33fa46a5aa013e +2503606 0000000001d1fd26b05179c4c9bbd253d9951f5b7f4bf96d39ab8fcab273a5a4 +2504006 000000000183787d604883476872f721863609ec1bed2127674227a6ed72f2a9 +2504406 00000000002594620aa2799a99637e350366f3282ecfb621a11cccf024085e3f +2504806 00000000016ee28ea39142a114d40874837e84d7a96a1a8364e4835f8ff4dd20 +2505206 0000000000c186f3c105232e56e8e9e4265f706641e2da1500907627ff6f197f +2505606 0000000001181c6e3a004ef42c8fee8f336d1c2c29208ac1b757162ec910074f +2506006 0000000001bcd8d23876f5f50a604751aa39af9d09601f6794147aaeaac14b64 +2506406 000000000013a886f0c974b8af9b27a9382d76e8cbf4cfa34a794b8b763c9261 +2506806 00000000001718716bd5d23a7b9447cf53b228da340d36dfa48f4488ffedd528 +2507206 000000000076114514dfdc1a4f5cb9f66c97802181799672d2068b8a72bb9af4 +2507606 0000000001183b79e5384944fc0ed2c231443899fd79c9df13cfef8b6b328bc6 +2508006 0000000001d61f8cc5a8fdb1da1e151b0a6ecc6063c03a8538a3ed6fb7ac062b +2508406 0000000001252256c0e5c2ad0d1b110898d8306c5671d175e44acbbb8ad7918b +2508806 00000000018630472eec8e591b6fd00bbc7cc48f00aa1889601d6f227edc24e1 +2509206 000000000182da2531803f68beca5e7c698fbeda377ee157749e72b1bc5fc441 +2509606 000000000015a6bcc5af8fba0c617e7e6dcbfadf614db0db7d69cc28d190070c +2510006 00000000004e46cc5d47a4ec40cd7226b67395ade07baea55621772c187b13c5 +2510406 0000000000b77eec95411b02c5c05418ee2a019cafbc02432cb7a2e4b7ba5f49 +2510806 00000000013fe7aba765a36d02dbdd3764c85e4a918d4f5ad7398f5d33339cc3 +2511206 0000000000bf08e9a4c0411cbc9a168cb755c633645b4bfbe2ee892d5cc8cde8 +2511606 0000000000564d291db48d418742a9475fea3d8ab216cc8796c1db1ad05fe432 +2512006 00000000017a6f122eee45308804edc1e2d4e06b8a36536679fb95c5daa74235 +2512406 0000000001718a0a3227018c0a8c83bba8d78043aefc1bdc06ffb35d10cc53fc +2512806 0000000001b90b1154a12f0a9b8b043e71aa3631cfbf1527c1e0c3cebdab9b23 +2513206 000000000172ac596e9399a82a70f6b7824f4f733385afdb05a657558b9b4e7d +2513606 000000000027fb380ad58fd11889d00948d909b2e4d1b5a01f88f8ba3f053da3 +2514006 000000000160c6dcf0de87af304a956a9366ce8281d4c6fb15db1b616c1f3d4d +2514406 0000000000c34f80e88fb86b2819200ff915651ad92e8a5997fd6788442bc16d +2514806 0000000001836152b9215bf0a7967b8bbcf7d3c88ba3c2a01ad173b854f0b2ed +2515206 0000000000c2407418a7735937e8dc0c98179c70f136d2cafd96a5fb413f4465 +2515606 000000000078b8d98276ec538bbccbe9bcfb3f9f3f27159e1ba08c5b9530c1fc +2516006 0000000000de340dc8135edb1044a0c37884b7be151b3ed8827ba2b51bba95b3 +2516406 0000000001e03b96c8760292616c30b05b96d51d27585c74e67c4bd6a2639ab5 +2516806 00000000011d3479e7f733b2c4abfdcd44e987e4d11cdce7d3e44bfcbd00a989 +2517206 0000000001e1f13f5e6acbbd323052f2c4041e76300f015404aa771d47011004 +2517606 0000000001cf84e456812e409a3722078d9256dd57d3f155aed38872088b12a2 +2518006 0000000000414c282341d43e9f26268f070f70b44335b825232ab02e4b6ac049 +2518406 000000000066db5c3833af71f605a112e6aa31c9af302ba2764153cfc6c92b68 +2518806 0000000001a5b1261f9b866b4dec4e4db3fde646ab65e0e15e107cdb43bf97ea +2519206 00000000017e60747dbcd26bf9de2a086a66327f626c391e5dc898865bc3edd4 +2519606 000000000052bcd6499dd8df00bc5e938e0a36eb0b59762f4f144a102994b30c +2520006 0000000001e41b0c7e17457c68361672bf5d8cfa0183980132459bc8202a2ec3 +2520406 00000000003dbd116f2419e4f10f6459f08ee1298901ad124c028381c7edd28b +2520806 000000000003b0cba9ed3c219742075818e00f5b51adcaada127b97effdba68a +2521206 00000000016a5b1805499d166dd73894fa323cc8cc3d247b643b514e14917acf +2521606 0000000001fa8fc21e98ac105fdc7583374bfef6ed9fb56ac56a6c2db8ce9fc1 +2522006 0000000000a8cf274cb46a5269d0e24e742619c8b918f6bc6552d0ba9a11cd56 +2522406 00000000004451245b480fe67ee9a22257f23dd9f04994e8b3976ec6b6e2a337 +2522806 0000000000f8fd4c1c13f0a1a29642ab2a097d14f5ff441bd2fd240d2387b3de +2523206 0000000000f5389fd8efd73aae6214b8b996a4f31b47c28f892b932cbe30e4f2 +2523606 0000000000438f527bba3ddee84b78da215ac04f6090f72fee17f50d6472805b +2524006 000000000072707a6760e194aa97db4309c77e1fe8fb94b5f46f91329b02085c +2524406 0000000001708cb5b3be292a0d5c0ea5cacbe2785b65b004e5647bee1a9119a9 +2524806 00000000020122b6548cec08bc5daf3d0ec00c3aae403ef93c425d91e0e13977 +2525206 000000000046f66f9f6a8abd0498c6bb6e94419f9c96e0a74bb932161503b30d +2525606 0000000001a04d3479accc2b15e8ca8957fd8b7af4c13b49e87a7dbb64a0052b +2526006 0000000000ae4f6965d9a7b23563ee38427078b8c62b724eb2020acc1c46fb09 +2526406 0000000000ac1b6c6929bdae7ef3f1dfc79e503300568d637a7c1aa995f2342e +2526806 0000000000f158d9d1c4c90a7e87abe99fe85eb332b540ba4bd5dc446d517a79 +2527206 00000000000f06ecb0b9f5f245d0f25e5863f89f8cba52095fb7f83c847d8eab +2527606 00000000012bff35c220d9d0e85f4243e8966bf08e54351d2a4696ec73816f28 +2528006 00000000000de30b9d6c0f29c493b198e1dc24af73f23bbf47dac4a614431092 +2528406 00000000016ab87c07b8fa9b37cbc29bbc6c50a3fba6b02eada18d523c5abea4 +2528806 00000000013a3fffa96a82a9f9f3633fd75e2d46fd7fa807b421ea21dcf7f945 +2529206 0000000000aafec1b57cc6f5f96cbb4d341706f95dcb725d3724c8945c4d1269 +2529606 00000000015e0ace84b57160dced13e01aa7a2f4373075a6855f97cd1390fd92 +2530006 0000000001ec21886779dd8b5bc85446d4b2ac393618d931c4c93099cb09647a +2530406 0000000000e50f1a01693bb8ee15be12d980da04c872baf6a9c1a0a9d5ac3cf8 +2530806 00000000017adfc9168e9970947e938f64647fe68f70de5a89fd045a315e8ef2 +2531206 000000000197603ac26a2bc1d6d88cf308d98088b412c4a9345cda7f614ef967 +2531606 00000000019c7c14470ec4fc747125697451d69b9d273de7444d7d401625f4ae +2532006 0000000001979825441403a22350749c5037bdce324eee79219b0a436116cb0f +2532406 00000000010c782db519f6ca4eb53d21471dba9554480980d899dac9c069de0d +2532806 00000000016222adabfbc31bd589267d3a5b5bc9caae1942222f930a1b33a21d +2533206 0000000000f9488da5d41af40273b2bcdaf9f4f0d9493172b42ce79d2a2f4a6b +2533606 0000000001442be6cf714ca40049c98a9cfb3996a052c735da4ce417bb166119 +2534006 0000000001c5e63960e79d8125b06fc6ead811a0795b6dbf02d15a16174029ca +2534406 00000000002401948cedbc9e702c1481d062ee611a51a1a2cfc257a38f3a57dd +2534806 0000000000eee93c712ec111524eb0e3507de22834a20a01ad5e3a73a70732f9 +2535206 0000000001a31baca26432a36a7676af09c7a8e4c160937b4e86ffe3aef50917 +2535606 0000000001c72d1700bf03771398b1db8d951f519828acc9e12e2e7d1be98c4c +2536006 000000000060f949158699210aa4b544772c9a71c5d211bd47d5449f25cd9b9b +2536406 000000000149acd7dfc244c54f7b0786dc6fd46f79a7d07a372966e431823e4d +2536806 00000000007d1419d71c7ff1fb3ff030467c0e656d32d9653a871826ba5ab684 +2537206 00000000007309375fb26a20a61db525aabadba46b222bcc1cc7437e1f353cb7 +2537606 00000000017901374e6a7337c4074d8971a1ee45c45ae532ba4f1024010ff5e9 +2538006 00000000015bc3ac6f969685c18380c4e5ffed9c1fb76ce0a83e8aac441b3f93 +2538406 0000000000fbdb477cd9336c5cd5aa28583d854d1db4fc5915a8959c474a8417 +2538806 0000000000de22626fc9e1ba3ba8fe0cf0fba775dbbce7e374a41833298cfa20 +2539206 00000000001613816bd42ce29c2de6a032bb8c7ea10ee7e81538e920a32cf451 +2539606 000000000197fbeea81c2208226fe5ef74269cf32f2fc485b974df7a4324ebc1 +2540006 0000000000b317a19f32fcbc7201b778e08570b372a60be5db14875ac6fd5f3e +2540406 00000000005b0d52c788e1f088563b3eaf375dee8d861bfb6ea06a01b717dfb1 +2540806 00000000016cc201941c9c3be94f7163bd1686ae1854321a1e85dd4804df2e9f +2541206 0000000001469339f70bc0ea7d2a050d1fde06b86dec4418669687714ba83046 +2541606 0000000000914da885eac4bfd5efd6e8a3cdb4713d42be9e124743d27a3490b2 +2542006 0000000000c3a383cb2330df6049baf0363994df3364de92e04ee5360f2c985b +2542406 0000000000cc839002aa141f6ceff6a0a63d51facd1ffa810a031ed743a84c67 +2542806 00000000016fca05021129b7704ef67841a366c80fe959741e28a6491d00596d +2543206 000000000085d93669787c7e348dc22e0c2d812d89f668a0ab830185dc651ee1 +2543606 000000000060e2abb1a9aafad90181f493222d604a7b5bf002d62a650b5f73a7 +2544006 000000000115a0327469968f2b39956eab7999f67797f0fcbd561a04c2ecb698 +2544406 0000000000ff6ab58c1807ab2730c44237e3d5309ad057a1a4a9e489167ad446 +2544806 00000000014bd5439b7d2d5ed63eb384118e3ffb697a1107b8cddc3fd46acac1 +2545206 000000000215bd958d628f92b99b10e6b18e213460b113b1f0b8a7f503659188 +2545606 000000000072f24ca41147315ad1eb9d478b903de12a56b8487a11c6cf564538 +2546006 0000000001c0feedf8cd699e2209a64ce99d8040c451631c0071b9538fb9059e +2546406 0000000001a0d950ced95f8b643da488954ae1a4da91418cbb84e8a47a1fece2 +2546806 0000000000e7428fcff00d84234c526d999bd20d1b043aef3213835a6fb3a4ab +2547206 000000000040edd10fa637060cf1c8a28faa782e77c555183a39ddba0234f51d +2547606 00000000011b467d8d2507f5a5eb6272bbf240b2c1199df313915118cdffc524 +2548006 0000000000e190d5b6023aef26dfc1c1d93885aea630eac74857ebf4aa2aa2b4 +2548406 0000000000956ca2c87d072ecd51845cfb9f3804227cd23f6d000d74f70e699d +2548806 00000000016e0a07fe4e96f2d67900b82aed2e34a969fe797eed3919592f36b7 +2549206 00000000003531b4901882c9218dd2471e8d882921bec319afd8299ff575f654 +2549606 0000000000aef4677c6f16573a4a787e348e5b72f575a672c257190370f92af0 +2550006 0000000001b2e49b3e670f4ad13bf586c8b1f16758ce71539356367816fb4c1f +2550406 0000000001eaa88c19fb9a8cb7cca09c3435b1afbfaead1b034c5999bffc8cdd +2550806 0000000001a72f90f050ed18cf1b6d0d7142ece034769d04c807735ee33a5ee7 +2551206 0000000001c9f949e4a7f6349e5ef1dc3f4210b69eacf5ab2d7f4cf857dd28e9 +2551606 00000000012d73a22d0524cb86854244a89d51319276ad3a82e72659e6eb0db6 +2552006 0000000000a9daad422dac2a6054b301edf5c55949f600260c5075b8399590dd +2552406 000000000083def9a90cd1fddc8e6f4cc8f3c3197bc0e60478d12c026812fb0f +2552806 000000000178800c2026267cd62ac339830d94309de204a1fbfa2c204929bfa7 +2553206 00000000010a6c1b1228da96fbe1e6c5a328a0bf6c38da532021913b37fd7c3d +2553606 0000000001e8eab012c0060f7db8e7d3f279a9dda92dd84ab0553e4b0e248a92 +2554006 0000000001047770fadc1797fb3141d02b63d33fe27dde5eb48ae7bf40848ab4 +2554406 0000000000376c365c29514cd42705fee5bee5daa1ed7d6898e4236a2c82d972 +2554806 00000000016705413d89359fda1bbd5ce6f00a1b240dd5ccc6c351612f13f384 +2555206 00000000006deca2d2e148123205b01669e8b6fa7e8b28f57f7f85a0f5c960a6 +2555606 0000000000ea2725768e667ae4cd5b04242b8b5cc6496424f4bb35f81bb6dd76 diff --git a/zebra-consensus/src/checkpoint/test-checkpoints.txt b/zebra-consensus/src/checkpoint/test-checkpoints.txt index 092df3eb962..2f8f8f4dbd8 100644 --- a/zebra-consensus/src/checkpoint/test-checkpoints.txt +++ b/zebra-consensus/src/checkpoint/test-checkpoints.txt @@ -7050,3 +7050,187 @@ 2819600 00f2f5230c1f9cb1de1137cf89bda374d7d416d58ab48c21a62e81325cdbac33 2820000 00096412e20243fffb8b1fd41c5c0436d94795484eabc10c657fe439128009f0 2820400 0028b9360e1ff434d630999232b7d63a1f432d4ce5dca14a153eea94b07af286 +2820800 001f96f90874932975f38e42d97f459bd428b9174765b04a50becb8d2b711ed6 +2821200 0048f39b13ff51f108aa825bc0e02d9a8021d162376ea907f5820ac9412c4b61 +2821600 001731e5c265c7bd161569394c35722d867a4b02d37b86120c61eba5b4706001 +2822000 001a73b81a81fff9b50799624e428835aac156cd4450a74da17c623cf81c6a70 +2822400 0033499f729b75c40dd40d0eef76652a46eb2c8b23e0ed4c77b63553188e4071 +2822800 001029ae1edd2dcd1dc6b7b5f9937561bcb31f36aaa4560ada3226af816967e2 +2823200 0035f44dbd92d02b1074da0a127f0c7dd6a38bc20fe078f1f3dd4678022480c2 +2823600 0006b314351b1995cc8f57749b1fefa57f7c009f2f89170afeb001b21441596e +2824000 00155c39c2496daf1b959dd811b86c23653e04cdc63a37b5a4b8440c05eb0434 +2824400 00639d0c727816b5b46f4e2a0e6deedfca7df48cb40dea0ea84de265a86ab6d6 +2824800 00017a945eeaa4eccadb83a80741cc425164a34e505909fad905d7c792e0fb63 +2825200 0047d40c1417df029f1ec2afd2cba708bc17dca80d7a4208754d64378736ad86 +2825600 0014305b4dea94f07d681f31268f847418f9bd8d0e9aad9af3482d06cb63ef01 +2826000 001ddc3e273468c0575edbd5b31037a22a753ae712d8cb2661b6133b85e6ae35 +2826400 000e9b95c25683fe1729196b9fd91bf3455f3deba90f9ae4414ef71aae5c3aed +2826800 00347ac6fd57a107dfe74ac33bce19ad1257f7d47458f312aefbc30cb45333b5 +2827200 001a94e2466ce178ad29ab8e994f398deb3e7fcd89301b7afa2ace8dce3ebd38 +2827600 0026520a64dfdb8b5688ce646c634277a270537965790e18d8538d9fad4bcae1 +2828000 0018b421bd97ef9e25017620f3127d67ab462551331bd587340b84f3211a7802 +2828400 007961fbf50d3d4f4da692dea76d5163969352a6b45ee5e889dd10952b2f1592 +2828800 001c7d8234daaa4d996013e9cf7a29c9ba1135365db5f2a52ae6a64d04e79c18 +2829200 00373bf9cdcc04eea9ca61f2f29b369843476e7e1023470205a65950ddf2afdc +2829600 008eae3cc95622fa72d5254e9bf14cd9261b0f3192d3ec4aace75452c999d581 +2830000 002fd6a8650dc238c84b8d45f7ed15b2905f63be57e8bf9f2872dc615bcf37ab +2830400 0011b9dfe96f70d389627bf220380288decb4de7662898f8e6b4387965e6a82b +2830800 002547dcd89b90f675c3e25ba587ad2ff450c0a4aa4404e30163ff4ac2e86240 +2831200 003b3c88cb60b53c072330a3daeb36dda03304cbe93595a0755439a822815169 +2831600 0003ac1c06523cc81c6004d15ed264f83896788a82a5616b7de1280ecb67b1cc +2832000 003144609e1e6aa0d257a7956f09d7641fd4f8cc6e25b6edf30c734c6ed83434 +2832400 00059dac727faf99b5a671ec9efc68b9611f2c1bdae847ae230847d21d357c8d +2832800 0037d6f4a4dc9a13a343e86553d17a837ace9d96eecdeb54bddce7d8a08ab506 +2833200 0075669216f7f1439418691a216ec974865bd2c456ab995309bcc7469dd21dbc +2833600 002425cf2facd9c29bee1c5ddd91145c83887ea6ca5d5a7e4225efc58dd8e4e4 +2834000 0019de7fd051891460167e3164754685e84fe6080b44fcb34b8bef8f42171fba +2834400 001bad936e9341c435c3a0acc422b52edb9cf8c5b1c8a23451fad4a791f00b6e +2834800 00129ffed75792593bfb6fc7373205094d339564e4e456ab3d8f131cd583b3e1 +2835200 0022471b29822374880ac99f4192ee0d264217aaf5a28edf2804efdf044c6a9a +2835600 003f12972a43c5a2da931fb296c0ca442a4da71040c4d8f00c6ee5b0a44bf516 +2836000 00244a5e14182466a586b22f4f02191e9a3af0d79c2268c7afe27b9516140249 +2836400 0011c481c833170c8eb88ccd0130d804edd85d5d30e41693f2acb369b7904518 +2836800 00112d4b38f2b6648b59f759ec883671607821074fe4a15723716f5051d1066e +2837200 00271bbc993df9fff5ef1f6967b6c396461d55eb50a39e4635c722817739a7bb +2837600 003d0e66a8d3382f768e745f912544bc3576841b52fdf6be782353c47a5e5fa0 +2838000 0016b619de37664b34f4de4cac8fea7fa177676ed457a452ec557ae3dba3cd45 +2838400 003cf71abef945e67c3612f8b54bd096b9019d42cb5f6cbab93e633c49978794 +2838800 00386830bbc2b9977b827d3992876d15d1e08dfcb0ff25e0f0ce818b326a20fa +2839200 004bf0037adc010647bbcd934bc51fd4a34f4b2fc7ca923c6be51504f6c44a1e +2839600 001a0f263935e3e81823e3f160bf205594af86085172286c4d84928153b4e67c +2840000 0015d50582e60b2277e65dd78cbde11f87e27a63a5237455d42dd206871b79de +2840400 00270dd35578912ec33635cf8e1800d39f3ac028f16719442064f3b44b6e208e +2840800 0042c3b9ed1548c54c644d6c4c079db31cce005e22f4498ec1f887884c20dfed +2841200 00012174ac9975b84a06df13ea6d8ad2a237e1ae92128dee3a29deeda458b677 +2841600 0000fda02fc2c72c1be3d0b9c33657e149adc52156c4211ad6054fd3e991be84 +2842000 0031f25b9213ee094bbe30f54ce35cd30cd86800d6efb0328b2d220ff8d04e6d +2842400 00253c4494cb972fe5ce54c36ca755e99caaaf9c98fac0d717fd346095293711 +2842800 001e8ebffd35ebff683ac62ff6abfad88a7454b85a30571f7e4d4d849836ea47 +2843200 00b6ebc0c105b6006c1d2eefb0cc425a51aeed5947bb1f98b66e8b17341a89cf +2843600 00a49eea0bab45ec208138eaedb07ed51591526831ccda340aea7c0ee758867f +2844000 0047845de9bd7e468fd460bb2063375489fe26f49112ca61ed32b7ccdecdc595 +2844400 0038afd0f997639ee65492a27ad9e35da7c8ea445f9f0b35738fb6a54edb8ae5 +2844800 0022e79f0ed509a7321cff8c4942cff2f7e42c386322dbfc400174eeb046aea3 +2845200 000cc0c0e9f88f5bc72a5f17bdc5a892950e6bab6ef033164b47b135e9b0ccbd +2845600 0012f8e1b81d4f200b471a478ef54d1c6bb31d09e7aed1811d694b337452d570 +2846000 00307d24d0c13d9505294cc626e748149eaece372a2f91a0f420ad06ba7a7652 +2846400 0012d8ccd7c846df6529e09249cd65c956b2acd64cad91a76cc25e0943353ff2 +2846800 003c27d1efc97848ef3d5e609b5dbd6a5e2d39a55a3fb6d318257dab5b96b10b +2847200 000a073853b43fa862f7d1e60208036eab8059691c82e262e0f8ec6edd0dcef8 +2847600 000a9627671021b8528a2059adae44197e9447ae71fff4131cd3e10773cb2d3b +2848000 00ea51ca411249636a053ff0074d60a38ba059ec56da6481e830905ade342e10 +2848400 00310b6c46f87f6294022c162a9b465fcc2e6b943d9f1667c50899cfb5156253 +2848800 0019cd66dbb0cc4dcf7f21e27e0a5c97088c77f45c81a88baa805d9a65cf33f6 +2849200 0004ff56c16885290a3ec32983cbc47fa353cefdd7c3c59fa59f2592df7d873a +2849600 000ae0c789bf8cd4aa5907d6e99d577e4e9b0565274b02177fb4e318aa240f9b +2850000 002fe5b48102cad68c875fef7dcf4b5862e92c57a994f0c25b3fc6b9de63df27 +2850400 0036720e80d4c757b219ed172104054c175004cebfe71f7085bde4b11eadb8c0 +2850800 003c1e53f48ad99bfa23c5a8a158bc353e37f171d370a48a35dcfc021797a1bd +2851200 00295d921658fc6fe611a2226b259a1019c0b88e6a1d01fe178181835f899704 +2851600 00311a93bc6f35eff4dba0068ea6aa175b732ddd616d806896b30832f80e95e3 +2852000 00649b1e9c4c3c0ed3874618941a54a3e42300a93260cdaf2383b4b867eaffc3 +2852400 001968e8ffa645b3337a49d1e1a27cca720f201aa75dcbf8a45ce0d5d7e5e42c +2852800 0039e34ae704453fe69a4aeca48b7c9aa4ba5bc1e08ca2e6df2950c10a648e7b +2853200 00362895747d9e27e63e7f489014884ecc416e33fb924064eb410cb7600376b2 +2853600 0003f949cd97814c065f72e3a78a64110b5094d40bccc49deb4d80b7f3756bad +2854000 0023ddfab681ea64375dd775df6af354acb1df9fb6c7dba1439bbb175e534115 +2854400 003e3b20e37f86183c284e718f647d6375ddfbd5500d1c3116fd48e253e764b5 +2854800 0025b7d1117b2ac2f3c97c3a7601439c6ed556d288b80bea5391fe89050babae +2855200 002b73d35daaf6601b52456481eb3d407b60a6b3dbb97be286108909b9def3d3 +2855600 0000428310f33f2f4a2bf9044f8238aaa333605d4fba6f34aacc4c98c501486b +2856000 00000351847170ce79984f1d8402c1d62dc80e338917d00a46ab87ca7cca95ff +2856400 002ef00fe17e7c1d6b9e37b3db53f8bc05c3a52fecd1139a3f80b29ad4951466 +2856800 00080ba37466b63d51b3a8f3699dcb543d1782f7f146dcd9239d9b7ee834ef31 +2857200 00377083c8f12779f17ef2dba79213d0712d092af5f213497547733e45b33e46 +2857600 0027dd0031aa19f1f8d312898f003865834e907e4f79dc40e1c5a7c4a73f005e +2858000 0009741e70e72e12080bee29d5a28c9c2bdfaf36644bf6e1676639f23c01cbdb +2858400 002ac8277bc7fb982f44f2a4c0dfc0161f796fdf6d1cc40ee6d6de4a30a04c89 +2858800 0014f952cf915ae5dc0a96721389ab678024ca22214f9952e388d74e3ca1ce62 +2859200 0010430ef2297fdb4cf5366073811319e1d4e249c83dfedf8c028de701718622 +2859600 00042cccaba70df2982447b10da4530c477f3c258dac17ddbfc8ff13c654f90a +2860000 0018701352056c044131ad9d3208f481aa0cb63afe43215f6fa445b6800df635 +2860400 0031ac1188882048ba513ff0914acbd5090e2af9c41b65666e67a8ac591a2709 +2860800 0009bd4d8cba5c4c16a90ac646947c039187f1a09ab300a1e0be384073e7f6ef +2861200 001458ef1e9f24ba8f90191f65374f49bb61dcdf0e1f0795cac6faf83c4aa6c1 +2861600 0019b4bf1b9261a86a50c1cc571811db85b2702e870378374da6bc8e9f71459a +2862000 00365bf2cbd0bb88b846fb9c5f736f6022b9067e9116bf417f10c6b7d98ef4d0 +2862400 0046f9ebfdf295a3b33113a9c59f1bfe10f6e37179abab5d78f54046b1ddc3f4 +2862800 001a84ee77779cea6e2f45833c07ceaa531d7dc83d4691fd2370bba8d51c6037 +2863200 0059b675a974c3358deadcca9278c1a1813d966419fd4d1e81fd51c48630ce5a +2863600 003ad68384ec76aa4625613cebf10357e61effab67485b32d9febf7824680ae7 +2864000 003fd50e652ba833398be1d94e8a1a1c3dfd71d3dac14010a58d7473b7093125 +2864400 000cb21a74e3bc5ddd6b41f09515c9f8a45c18ab72ac75f8c3a1e69449d58862 +2864800 00181804314294acf622eae450ebcf7487e9e1c50e0d8a3e2a39dea240d283c7 +2865200 000dd9728cffa5331d66e9afe23705ac40b733940ef67de8238027eab0e604c1 +2865600 002ec37936368742a24c101dcd51e9c36142d706b29bcfc991413589346085fa +2866000 0045ab9350b719f2f45a9a5805f3221cecdc0301bab5e5f8590d519231644099 +2866400 000780a6ab4684b1107979ebbc77d588939297c7101570bc0c6f6b8b044cf666 +2866800 002c1ec2e58115a936aaf2e3a06066179856f2c1d7505c119925ac5c77a98d4f +2867200 002b2e5b8840f3b09c4e4b2573bbdd9eff89bc3a0f67a6e64506f32aab34621f +2867600 002c53c2235959bab840e571a4e971ae8358ab79f387c4e7969edefc2dd2d3a9 +2868000 0033e27843fb4eb27d2b397773f69a1329ec7e14a65c67a8afdb8bb8ba7ed9c5 +2868400 00fae4ff135a64b0f2a47a4435b12fe7b03df17d770c49a59a814d0cc813bade +2868800 002bc6fabfedfe41519e2bc2a87aea3cee7ea71b518548069e0f88ed721f256e +2869200 002331a56522325166740f7b01ffb51fad14aa5935f21e32842a566aab6cf06e +2869600 0032bbc8488dc0498db09863ece64be5e868eca163d23fe5d50cab890f10b450 +2870000 000a09dead616cfc60fb8e0d87aa764b2a843b57d1bbf128d8e88d11afc78a1d +2870400 0018ef4d4b79e672d75faa924c707109db8c7c3856e51961b21b9cafa083237d +2870800 00089ec7022da163825cb5855212baeb6f868e330b9082c03a83cc5c7d59d344 +2871200 0004cd03f9f63b220be62b8752d0331ca8a7c6680069bac0207b495d47675129 +2871600 0092722bdf0e48fe4d6822c47d542c6d8a7122f2ab623755a5e9a95e9c415d72 +2872000 0016a625331406646e235d62c98b085c83eebf31525ac882edbc07b341ac6b0b +2872400 00204f05a367c887a54f33f397d8fd7adcef2d484a273d57600e756ccf4e7c24 +2872800 0041d7dd220b4d9f793918442f2d2218b867b92df6267d3c7572884b9787f84d +2873200 00129b415c3ade4d5e61b6083cba4254274dd17e85667117c99c05cca64f6eeb +2873600 0081ebdb7c146f31312473dd0a33cca9a2a0fbc910500d3a88f0323d2eb9d6ca +2874000 00117318ba418c34a8424fa1a4b285dd600fd2b6ceb12e4852fd87d34ca5cd9c +2874400 001a34dfb48a69f23137f52d88448dea7ec88c6e594b9dac106541482dce8e4a +2874800 0008f08ac9c9afdedb6447448f33c0f786542beb0a8f6224da5a84f4649b25e8 +2875200 000c8bd1ea71d3d28f635510991a91cd9652517d0f9cdddae7ca70f8c1faa1c3 +2875600 00666f97f84751aecebd6e5d34f3245099d324324a64a56072c27bb128f88f05 +2876000 00338910b31f8e33bf41af095f2ce3c4834f37f73b10e90242a813d39b389058 +2876400 005902595b7d5bd033ba2da0e3c11da33caea04c23f50ea2f5efccc943986092 +2876800 00374bbbc0fb03d405dfc825a2a409caa95e69323a2c6c764ed033b9f6909d09 +2877200 0033f45f61be40cc43b0c5c86a5341c011c484e756b6db5993a2fcaef23d64a0 +2877600 001e6190eb1b38080faf22408efb40ffe86e1fb6791074103fe86d6927f46ff3 +2878000 001092f9905fa3437e88e10cd0ba6f9f3a5a6344d7d1899418ea33763c76ed02 +2878400 002f03122bfeb2aea119aea90ed8409e98cf8403835d413d9335c2ebb174ce50 +2878800 0011d80acb4f7b2a67b6f22db5baa5b599dc52f27e4a6823fc4007ac364a1f97 +2879200 002b8c957932687e64f90ea0d3470cedfe4711fb89b25d2a626605b0cbf9525c +2879600 0032bbda804f38949a8da7c31c5a2f41e95fe20427681626166a9c79d0be1bf7 +2880000 0035e4f35e04f1a2f4b0515d7997f35ba72a7d1019788121baa0a27133970fc9 +2880400 0037bbd922156974400e857d4aa03daaf499cfb2ba5c29fbd73a46b0ba9c6861 +2880800 004676758da1c95be850aff3a5cd4bd644fa3f2070fbd68742ca1927edfa4bd2 +2881200 001e50a0cd3c8eae6afbda7732edd0c97f9f3f4d1bf61d163252eedc0ccea4ec +2881600 002ab3fddec3a5a8d734729119c8957082da9be919634466f24d880a203ca38b +2882000 002bfba04432c8474df17302bdcd6809ca4a30c6955f4a6373739d4064eb68f3 +2882400 0009fa27a01e1c1ff1f654023a06a604762343617f4ca013cf6346a4590cc09a +2882800 0038a3d1dc7356e757acfb026ff25eff8ac472379efe4767eaf767924a5670b6 +2883200 0025c2381cc68a77d6b7ecd07750f5e2ecccae9430527e3f87bb0976962db65b +2883600 00170124b7ec2181483b407cb8ca87e17b58150b7e0db64acb586f24730b10c8 +2884000 000f32b8c7ef3606d71c7cf29e5904f9dea1c0a8bef31e81b7894adf9bafdf39 +2884400 0025e02e90d30ecdf6593b6ec33387d0def3bbb5b48ba06a46260beb5521fd88 +2884800 00094629ff45248b93d15de257a74e55d3654d67dce098876dfb52c6f8f3c39c +2885200 0041f282149652f0f5186f6817b337c0b4c031861b7d30ab0531fac8ce619bb3 +2885600 001798c014fdcbc7a753db06e0c741f1fccb82311179bd7bc0e57714fd99fbbd +2886000 001888f03d5c257b36a9c28e70d9e1dc18304dace97c8096c42583621c989784 +2886400 0011a5a7ea3eb88a955e32840c1ac2cfc7b975345c17f77cc225da336cf48346 +2886800 00280f96b74ba96e7ee0c3d11d6b5e270b86d6d0cc62d8315dc4e9cbec2d66e7 +2887200 003611a0ceb3ae91e0de3d7613014cfead2fb3535419871d519d7dfd326e4177 +2887600 003ca3848d1b3fc5e2625aa75e94c9d4a58fa1add086c6a586f40a17ebdd0d4b +2888000 000a87141817c06a9357932560fba475ad4a2b71f1f3b0f1ede3451cf2b36b32 +2888400 001f666147de76c9461e679b439b32bd42a1ccb1aec29361e273be85cbba4eb9 +2888800 00010507d7b0872ed81ed466ba45497542836d2a85855522c2e8d798150f83b6 +2889200 006364a131a0af74d03b820d89fffef7087d2620ca46d0d83b97bfd4b84fdf15 +2889600 0018c08d3a92f0a590364334dc066f748a25acc6774af8384f6e9759b17167a2 +2890000 00062ef4b75dc591b2f16ae7f2c01befe4921edae304bfa66c1a5f712dd3b6a9 +2890400 001d0d17aeb3871723c21732ec79266321b00eb31da20a33d9cae2b73a72c056 +2890800 000ec68316556723deb0ef66a259f24a3f9ac53da3190a359d28ae44e36dd455 +2891200 0026c54a9430b6b40e6f8f341fb98e998726b5cb43585871f631deeeb23e37a0 +2891600 001d3e5a18a14f0ae81f565f4d75444e6d171523d2fa34e2d4befd5bde383754 +2892000 000084e11cfb09961ff02d102a7f696364defe1c28b4303297f43254de1e004c +2892400 001ffdb2f2a6db3473e244d4354f82b45fae8938ac8b34b2ff1b788abd455d75 +2892800 003da5458e15e9ce3bb8b6c9a021acf421feaca2bcd171729f7d72b1fea57727 +2893200 0055c8d1074a89c97abccb41bf82ba2307dac8871c4665e2e3827cff9f6ca6c7 +2893600 0012c459769cc0a5326a1fe80b9bd4eb497554961f6d52267807dccaeb3214a1 +2894000 00291716835bebdcddcadaa93a697c8e074ea7eebb5970fc4488606b700fd741 From 979ed0d7203f217ea9bd96656707ed482df0679f Mon Sep 17 00:00:00 2001 From: Arya Date: Thu, 27 Jun 2024 20:33:17 -0400 Subject: [PATCH 08/11] add(book): Describes custom Testnets in the Zebra book (#8636) * Adds documention to the Zebra book about custom Testnets, allows for configuring custom Testnet genesis hashes, refactors check for compatible custom Testnets, adds a TODO, and uses the default testnet when there's an empty or default `testnet_parameters` field in Zebra's network config. * Adds example configs to custom Testnet docs, moves note about inbound connections on Regtest to a footnote. * Adds a changelog entry * Apply suggestions from code review Co-authored-by: Marek * Addresses suggestions from code review. * Apply suggestions from code review Co-authored-by: Arya * Update book/src/user/custom-testnets.md --------- Co-authored-by: Marek --- CHANGELOG.md | 4 + book/src/SUMMARY.md | 3 +- book/src/user/custom-testnets.md | 180 ++++++++++++++++++ book/src/user/regtest.md | 8 +- zebra-chain/src/parameters/network.rs | 1 + zebra-chain/src/parameters/network/testnet.rs | 22 ++- zebra-network/src/config.rs | 45 +++-- zebrad/tests/common/configs/v1.8.0.toml | 1 + 8 files changed, 239 insertions(+), 25 deletions(-) create mode 100644 book/src/user/custom-testnets.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 361b5498e41..86e1232146f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,10 @@ and this project adheres to [Semantic Versioning](https://semver.org). - Added Windows to the list of supported platforms in Tier 2 ([#8637](https://github.com/ZcashFoundation/zebra/pull/8637)) - Zebra now drops transactions with unpaid actions in block templates and from the mempool. +### Added + +- Added a page to the Zebra book describing custom Testnets ([#8636](https://github.com/ZcashFoundation/zebra/pull/8636)) + ## [Zebra 1.7.0](https://github.com/ZcashFoundation/zebra/releases/tag/v1.7.0) - 2024-05-07 In this release we introduce Regtest functionality to Zebra and restored Windows support. Also adjusted our Zebra release interval from 2 weeks to 6 weeks approximately. diff --git a/book/src/SUMMARY.md b/book/src/SUMMARY.md index 0dd14a013b3..1ec8dc35d67 100644 --- a/book/src/SUMMARY.md +++ b/book/src/SUMMARY.md @@ -20,7 +20,8 @@ - [Shielded Scanning gRPC Server](user/shielded-scan-grpc-server.md) - [Kibana blockchain explorer](user/elasticsearch.md) - [Forking the Zcash Testnet with Zebra](user/fork-zebra-testnet.md) - - [Regtest with Zebra](user/regtest.md) + - [Custom Testnets](user/custom-testnets.md) + - [Regtest with Zebra](user/regtest.md) - [OpenAPI specification](user/openapi.md) - [Troubleshooting](user/troubleshooting.md) - [Developer Documentation](dev.md) diff --git a/book/src/user/custom-testnets.md b/book/src/user/custom-testnets.md new file mode 100644 index 00000000000..4c72f32cfb2 --- /dev/null +++ b/book/src/user/custom-testnets.md @@ -0,0 +1,180 @@ +# Custom Testnets + +Custom Testnets in Zebra enable testing consensus rule changes on a public, configured Testnet independent of the default public Zcash Testnet. + +Zebra's Testnet can be configured with custom: +- Network upgrade activation heights, +- Network names, +- Network magics, +- Slow start intervals, +- Genesis hashes, and +- Target difficulty limits. + +It's also possible to disable Proof-of-Work validation by setting `disable_pow` to `true` so that blocks can be mined onto the chain without valid Equihash solutions, nor block hashes below their target difficulties. + +Configuring any of those Testnet parameters except the network name with non-default values will result in an incompatible custom Testnet. Incompatible Testnets will fail to successfully complete peer handshakes with one another, or could provide one another with invalid blocks or invalid mempool transactions. Peer node connections that consistently provide invalid blocks or mempool transactions should be considered misbehaving peer connections and dropped. + +All of these parameters are optional, if they are all omitted or set to their default values, Zebra will run on the default public Testnet. + +## Usage + +In order to use a custom Testnet, Zebra must be configured to run on Testnet with non-default Testnet parameters. If the node is meant to mine blocks, it will need a `[mining]` section, and if it's meant to mine blocks with non-coinbase transactions, it will also need the `[rpc]` section so the `send_raw_transaction` RPC method is available. + +Relevant parts of the configuration file with practical Testnet parameters: + +```toml +[mining] +miner_address = 't27eWDgjFYJGVXmzrXeVjnb5J3uXDM9xH9v' + +[network] +network = "Testnet" + +[network.testnet_parameters.activation_heights] +network_name = "ConfiguredTestnet_1" +# The Testnet network magic is not reserved, but it's not recommended +# for use with incompatible Testnet parameters like those in this config. +network_magic = [0, 1, 0, 255] +slow_start_interval = 0 +target_difficulty_limit = "0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f" +disable_pow = true + +# Configured activation heights must be greater than 0, and less than +# 2^31. Block height 0 is reserved for the Genesis network upgrade in Zebra. +# +# Network upgrades must be activated in the order that they were added to Zcash, +# configuring the activation heights of recent network upgrades will activate +# any omitted prior network upgrades at the same height. +# +# For example, configuring the activation height of NU5 to block height 1 without +# configuring any other network upgrade activation heights will set the +# activation heights of BeforeOverwinter, Overwinter, Sapling, Blossom, +# Heartwood, and Canopy at block height 1 as well. +[network.testnet_parameters.activation_heights] +NU5 = 1 + +# This section may be omitted if it's not necessary to +# add transactions to Zebra's mempool +[rpc] +listen_addr = "0.0.0.0:18232" +``` + +Relevant parts of the configuration file with some Mainnet parameters[^fn1]: + +```toml +[mining] +# The Mainnet address prefixes are reserved, all custom Testnets currently +# use the default public Testnet's address prefixes. +miner_address = 't27eWDgjFYJGVXmzrXeVjnb5J3uXDM9xH9v' + +[network] +network = "Testnet" + +[network.testnet_parameters.activation_heights] +# The Mainnet, Testnet, and Regtest network names are reserved. +network_name = "ConfiguredTestnet_2" + +# The Mainnet and Regtest network magics are reserved. +network_magic = [0, 1, 0, 255] + +slow_start_interval = 20_000 +genesis_hash = "00040fe8ec8471911baa1db1266ea15dd06b4a8a5c453883c000b031973dce08" + +# Note that setting `disable_pow` to `false` with this target difficultly +# limit will make it very difficult to mine valid blocks onto the chain and +# is not recommended. +target_difficulty_limit = "0008000000000000000000000000000000000000000000000000000000000000" +disable_pow = false + +# Note that these activation heights are not recommended unless copying the +# Mainnet best chain and checkpoints to a custom Testnet. Custom Testnets will +# only try to use the Testnet checkpoints (if the checkpoint file's genesis hash +# matches the expected network genesis hash), so the Mainnet checkpoints will need +# to be copied into the Testnet checkpoints file as well. +[network.testnet_parameters.activation_heights] +BeforeOverwinter = 1 +Overwinter = 347_500 +Sapling = 419_200 +Blossom = 653_600 +Heartwood = 903_000 +Canopy = 1_046_400 +NU5 = 1_687_104 + +# This section may be omitted if it's not necessary to +# add transactions to Zebra's mempool +[rpc] +listen_addr = "0.0.0.0:18232" +``` + +## Caveats and Restrictions + +There are a few caveats: +- Configured network upgrade activation heights must be above the genesis block height, which is reserved for Zebra's `Genesis` network upgrade, and must not be above Zebra's max block height of `2^31 - 1`[^fn2]. +- While it's possible to activate Canopy and later network upgrades after height 1, Zebra cannot currently produce pre-Canopy block templates, so the `getblocktemplate` RPC method and Zebra's internal miner which depends on the `getblocktemplate` method won't work until Canopy is activated. An alternative block source will be required to mine pre-Canopy blocks onto Zebra's chain. +- While it's possible to use the default Testnet network magic with a configured Testnet, Zebra will panic when configured to use the default initial Testnet peers and Testnet parameters that are incompatible with the default public Testnet[^fn3]. +- If the genesis hash is configured, a genesis block will need to be copied into the custom Testnet state or submitted via the `submitblock` RPC method, Zebra cannot currently generate genesis blocks. See the `CreateGenesisBlock()` function in `zcashd/src/chainparams.cpp` for use cases that require a new genesis block. + +There are also a few other restrictions on these parameters: +- The network name must: + - not be any of the reserved network names: `Testnet`, `Mainnet`, and `Regtest`, + - contain only alphanumeric characters and underscores, and + - be shorter than the `MAX_NETWORK_NAME_LENGTH` of `30`. +- The network magic must not be any of the reserved network magics: `[36, 233, 39, 100]` and `[170, 232, 63, 95]`, these are the `Mainnet` and `Regtest` network magics respectively. +- The network upgrade activation heights must be in order, such that the activation height for every network upgrade is at or above the activation height of every preceding network upgrade. + +## Comparison To Mainnet and Default Public Testnet Consensus Rules + +Aside from the configurable parameters, custom Testnets in Zebra validate the same consensus rules as Testnet. + +### Differences Between Mainnet and Testnet Consensus Rules + +Zebra's Testnet validates almost all of the same consensus rules as Mainnet, the differences are: +- Constants defined in the `zcash_primitives::consensus::Parameters` trait, which includes but may not be limited to: + - Zcash address prefixes (see [`NetworkConstants`](https://docs.rs/zcash_primitives/latest/zcash_primitives/consensus/trait.NetworkConstants.html)), and coin type, which is `133` on `Mainnet` or `1` elsewhere. + - Network upgrade activation heights. +- Constants defined in Zebra: + - `PoWLimit` defined in the Zcash protocol specification, or target difficulty limit, which is `2^243 - 1` on Mainnet and `2^251 - 1` on the default Testnet. + - Expected genesis block hash. + - Number of funding streams, which is 48 on Mainnet and 51 on Testnet. + - The first block subsidy halving height, which is `1,046,400` (Canopy activation) on Mainnet and `1,116,000` on Testnet +- The Testnet minimum difficulty rule, validated by the `difficulty_threshold_and_time_are_valid()` function in `zebra_state::service::check` and applied to block templates by the `adjust_difficulty_and_time_for_testnet()` function in `zebra_state::service::read::difficulty`, both of which use the `AdjustedDifficulty::expected_difficulty_threshold()` method in `zebra_state::service::check::difficulty` to calculate the expected difficulty. +- Max block time is always enforced on Mainnet, but only enforced after block height `653,606` on Testnets (block times later than the median block time + a constant are rejected while this rule is enforced, this is part of the block header consensus rules in the Zcash specification). + +### Configuring More Testnet Parameters To Match Mainnet Consensus Rules + +The Mainnet Zcash address prefixes, coin type, network name, and network magic should remain reserved for Mainnet. + +The network upgrade activation heights, target difficulty limit, slow start interval, and genesis hash of a custom Testnet could currently be configured in Zebra to match Mainnet. + +The remaining consensus differences between Mainnet and Testnet could be made configurable in Zebra so that they could be configured to match Mainnet. + +## Differences Between Custom Testnets and Regtest + +Zebra's Regtest network is a special case of a custom Testnet that: +- Won't make peer connections[^fn4], +- Skips Proof-of-Work validation, +- Uses a reserved network magic and network name, +- Activates network upgrades up to and including Canopy at block height 1, +- Tries to closely match the `zcashd` Regtest parameters, and +- Expects the Regtest genesis hash. + +Once Zebra's internal miner can mine Equihash solutions with configurable parameters, Zebra's Regtest should validate Proof-of-Work with the zcashd Regtest Equihash parameters unless it's disabled in its configuration, and custom Testnets should allow for configuring their Equihash parameters as well. + +In the future, Zebra may also allow for disabling peers on custom Testnets so that the only unique parameters of Zebra's Regtest will be the network name and magic. + +## Peer Connections In Custom Testnets + +Aside from the network name, configuring any Testnet parameters in Zebra will result in an incompatible custom Testnet such that it cannot use the default initial Testnet peers. + +In the absence of a configurable Zcash DNS seeder, Zebra nodes on custom Testnets will need to know the exact hostname or IP address of other Zebra nodes on the same custom Testnet to make peer connections. + +Zebra nodes on custom Testnets will also reject peer connections with nodes that are using a different network magic or network protocol version, but may still make peer connections with other Zcash nodes which have incompatible network parameters. Zebra nodes should eventually drop those peer connections when it reaches its peerset connection limit and has more available peer candidates if they are consistently sending the node invalid blocks. + +##### Footnotes + +[^fn1]: Only the network upgrade activation heights, target difficulty limit, slow start interval, and genesis hash of a custom Testnet may currently be configured in Zebra to match Mainnet, other differences between Mainnet and Testnet consensus rules still remain with any custom Testnet configuration. More parameters may become configurable in the future, but the Mainnet Zcash address prefixes, coin type, network name, and network magic should remain reserved only for Mainnet. + +[^fn2]: Zebra's max on-disk serialized block height is currently `2^24 - 1`, the max block height of `2^31 - 1` can only be represented in-memory, so while an activation height of `2^31 - 1` is valid, Zebra's best chain would not currently be able to reach that activation height. + +[^fn3]: Configuring any of the Testnet parameters that are currently configurable except the network name will result in an incompatible custom Testnet, these are: the network magic, network upgrade activation heights, slow start interval, genesis hash, disabled Proof-of-Work and target difficulty limit. + +[^fn4]: Zebra won't make outbound peer connections on Regtest, but currently still listens for inbound peer connections, which will be rejected unless they use the Regtest network magic, and Zcash nodes using the Regtest network magic should not be making outbound peer connections. It may be updated to skip initialization of the peerset service altogether so that it won't listen for peer connections at all when support for isolated custom Testnets is added. diff --git a/book/src/user/regtest.md b/book/src/user/regtest.md index c12cdbe906c..4acb5b36194 100644 --- a/book/src/user/regtest.md +++ b/book/src/user/regtest.md @@ -1,9 +1,11 @@ # Regtest with Zebra -The Regtest network in Zebra enables testing of custom functionalities in a private testnet environment with configurable network upgrade activation heights. It allows for starting an isolated node which won't connect to any peers and currently allows for committing blocks without validating their Proof of Work (in the future, it may use a very low target difficulty and easier Equihash parameters instead of skipping Proof of Work validation altogether). +The Regtest network in Zebra enables testing of custom functionalities in a private Testnet environment with configurable network upgrade activation heights. It allows for starting an isolated node which won't connect to any peers and currently allows for committing blocks without validating their Proof of Work (in the future, it may use a very low target difficulty and easier Equihash parameters instead of skipping Proof of Work validation altogether). Zebra always activates the Canopy network upgrade at block height 1 due to limitations on its block construction. +## Usage + In order to use Regtest, Zebra must be configured to run on the Regtest network. The `[mining]` section is also necessary for mining blocks, and the `[rpc]` section is necessary for using the `send_raw_transaction` RPC method to mine non-coinbase transactions onto the chain. Relevant parts of the configuration file: @@ -40,7 +42,7 @@ There are two ways to commit blocks to Zebra's state on Regtest: - Using the `getblocktemplate` and `submitblock` RPC methods directly - Using Zebra's experimental `internal-miner` feature -## Using Zebra's Internal Miner +### Using Zebra's Internal Miner Zebra can mine blocks on the Regtest network when compiled with the experimental `internal-miner` compilation feature and configured to enable to internal miner. @@ -55,7 +57,7 @@ Zebra should now mine blocks on Regtest when it starts after a short delay (of a To confirm that it's working, look for `successfully mined a new block` messages in the logs, or that the tip height is increasing. -## Using RPC methods directly +### Using RPC methods directly Blocks could also be mined outside of Zebra and submitted via Zebra's RPC methods. This requires enabling the RPC server in the configuration by providing a `listen_addr` field: diff --git a/zebra-chain/src/parameters/network.rs b/zebra-chain/src/parameters/network.rs index bf0c027e3da..86189763953 100644 --- a/zebra-chain/src/parameters/network.rs +++ b/zebra-chain/src/parameters/network.rs @@ -228,6 +228,7 @@ impl Network { } /// Returns the Sapling activation height for this network. + // TODO: Return an `Option` here now that network upgrade activation heights are configurable on Regtest and custom Testnets pub fn sapling_activation_height(&self) -> Height { super::NetworkUpgrade::Sapling .activation_height(self) diff --git a/zebra-chain/src/parameters/network/testnet.rs b/zebra-chain/src/parameters/network/testnet.rs index ca2669fe340..391f7eae424 100644 --- a/zebra-chain/src/parameters/network/testnet.rs +++ b/zebra-chain/src/parameters/network/testnet.rs @@ -43,7 +43,7 @@ const TESTNET_GENESIS_HASH: &str = "05a60a92d99d85997cce3b87616c089f6124d7342af37106edc76126334a2c38"; /// Configurable activation heights for Regtest and configured Testnets. -#[derive(Deserialize, Default)] +#[derive(Deserialize, Default, Clone)] #[serde(rename_all = "PascalCase")] pub struct ConfiguredActivationHeights { /// Activation height for `BeforeOverwinter` network upgrade. @@ -277,6 +277,26 @@ impl ParametersBuilder { pub fn to_network(self) -> Network { Network::new_configured_testnet(self.finish()) } + + /// Returns true if these [`Parameters`] should be compatible with the default Testnet parameters. + pub fn is_compatible_with_default_parameters(&self) -> bool { + let Self { + network_name: _, + network_magic, + genesis_hash, + activation_heights, + slow_start_interval, + target_difficulty_limit, + disable_pow, + } = Self::default(); + + self.activation_heights == activation_heights + && self.network_magic == network_magic + && self.genesis_hash == genesis_hash + && self.slow_start_interval == slow_start_interval + && self.target_difficulty_limit == target_difficulty_limit + && self.disable_pow == disable_pow + } } /// Network consensus parameters for test networks such as Regtest and the default Testnet. diff --git a/zebra-network/src/config.rs b/zebra-network/src/config.rs index 63700f4fa18..4599827fa52 100644 --- a/zebra-network/src/config.rs +++ b/zebra-network/src/config.rs @@ -647,6 +647,7 @@ impl<'de> Deserialize<'de> for Config { slow_start_interval: Option, target_difficulty_limit: Option, disable_pow: Option, + genesis_hash: Option, activation_heights: Option, } @@ -732,28 +733,13 @@ impl<'de> Deserialize<'de> for Config { slow_start_interval, target_difficulty_limit, disable_pow, + genesis_hash, activation_heights, }), ) => { let mut params_builder = testnet::Parameters::build(); - // TODO: allow default peers when fields match default testnet values? - let should_avoid_default_peers = network_magic.is_some() - || slow_start_interval.is_some() - || target_difficulty_limit.is_some() - || disable_pow == Some(true) - || activation_heights.is_some(); - // Return an error if the initial testnet peers includes any of the default initial Mainnet or Testnet - // peers while activation heights or a custom network magic is configured. - if should_avoid_default_peers - && contains_default_initial_peers(&initial_testnet_peers) - { - return Err(de::Error::custom( - "cannot use default initials peers with incompatible testnet", - )); - } - - if let Some(network_name) = network_name { + if let Some(network_name) = network_name.clone() { params_builder = params_builder.with_network_name(network_name) } @@ -761,13 +747,17 @@ impl<'de> Deserialize<'de> for Config { params_builder = params_builder.with_network_magic(Magic(network_magic)); } + if let Some(genesis_hash) = genesis_hash { + params_builder = params_builder.with_genesis_hash(genesis_hash); + } + if let Some(slow_start_interval) = slow_start_interval { params_builder = params_builder.with_slow_start_interval( slow_start_interval.try_into().map_err(de::Error::custom)?, ); } - if let Some(target_difficulty_limit) = target_difficulty_limit { + if let Some(target_difficulty_limit) = target_difficulty_limit.clone() { params_builder = params_builder.with_target_difficulty_limit( target_difficulty_limit .parse::() @@ -780,11 +770,26 @@ impl<'de> Deserialize<'de> for Config { } // Retain default Testnet activation heights unless there's an empty [testnet_parameters.activation_heights] section. - if let Some(activation_heights) = activation_heights { + if let Some(activation_heights) = activation_heights.clone() { params_builder = params_builder.with_activation_heights(activation_heights) } - params_builder.to_network() + // Return an error if the initial testnet peers includes any of the default initial Mainnet or Testnet + // peers and the configured network parameters are incompatible with the default public Testnet. + if !params_builder.is_compatible_with_default_parameters() + && contains_default_initial_peers(&initial_testnet_peers) + { + return Err(de::Error::custom( + "cannot use default initials peers with incompatible testnet", + )); + }; + + // Return the default Testnet if no network name was configured and all parameters match the default Testnet + if network_name.is_none() && params_builder == testnet::Parameters::build() { + Network::new_default_testnet() + } else { + params_builder.to_network() + } } }; diff --git a/zebrad/tests/common/configs/v1.8.0.toml b/zebrad/tests/common/configs/v1.8.0.toml index 8a769aa14d0..20c40ad9a55 100644 --- a/zebrad/tests/common/configs/v1.8.0.toml +++ b/zebrad/tests/common/configs/v1.8.0.toml @@ -62,6 +62,7 @@ network_magic = [0, 0, 0, 0] slow_start_interval = 0 target_difficulty_limit = "0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f" disable_pow = true +genesis_hash = "00040fe8ec8471911baa1db1266ea15dd06b4a8a5c453883c000b031973dce08" [network.testnet_parameters.activation_heights] BeforeOverwinter = 1 From ecdc8c3b0be459fcb5f2b13995d85bed6ba4717d Mon Sep 17 00:00:00 2001 From: Arya Date: Fri, 28 Jun 2024 12:43:06 -0400 Subject: [PATCH 09/11] increase expected height in checkpoint test (#8656) --- zebrad/tests/acceptance.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebrad/tests/acceptance.rs b/zebrad/tests/acceptance.rs index c2a78a8879a..ba26cc0f2f2 100644 --- a/zebrad/tests/acceptance.rs +++ b/zebrad/tests/acceptance.rs @@ -1267,7 +1267,7 @@ fn create_cached_database(network: Network) -> Result<()> { #[tracing::instrument] fn sync_past_mandatory_checkpoint(network: Network) -> Result<()> { - let height = network.mandatory_checkpoint_height() + 1200; + let height = network.mandatory_checkpoint_height() + (32_257 + 1200); let full_validation_stop_regex = format!("{STOP_AT_HEIGHT_REGEX}.*commit contextually-verified request"); From 5ff2563542305810980ee627ebdf3cd2b081509d Mon Sep 17 00:00:00 2001 From: Marek Date: Sat, 29 Jun 2024 02:11:06 +0200 Subject: [PATCH 10/11] Refactor `README.md` and docs (#8654) * Move "Known Issues" from README to the book * Remove an old note from the book * Move optional configs & features to the book * Fix TOC in `README.md` * Refactor the section on installing Zebra * Fix badges in `README.md` * Mention optional features and troubleshooting --- README.md | 81 +++++--------------------------- book/src/user/install.md | 66 ++++++++++++++++++++++++-- book/src/user/troubleshooting.md | 21 +++++---- 3 files changed, 85 insertions(+), 83 deletions(-) diff --git a/README.md b/README.md index ad29727236f..7e5d94fbb46 100644 --- a/README.md +++ b/README.md @@ -2,18 +2,13 @@ --- -[![CI Docker](https://github.com/ZcashFoundation/zebra/actions/workflows/ci-integration-tests-gcp.yml/badge.svg)](https://github.com/ZcashFoundation/zebra/actions/workflows/ci-integration-tests-gcp.yml) [![CI OSes](https://github.com/ZcashFoundation/zebra/actions/workflows/ci-unit-tests-os.yml/badge.svg)](https://github.com/ZcashFoundation/zebra/actions/workflows/ci-unit-tests-os.yml) [![Continuous Delivery](https://github.com/ZcashFoundation/zebra/actions/workflows/cd-deploy-nodes-gcp.yml/badge.svg)](https://github.com/ZcashFoundation/zebra/actions/workflows/cd-deploy-nodes-gcp.yml) [![codecov](https://codecov.io/gh/ZcashFoundation/zebra/branch/main/graph/badge.svg)](https://codecov.io/gh/ZcashFoundation/zebra) [![Build docs](https://github.com/ZcashFoundation/zebra/actions/workflows/docs-deploy-firebase.yml/badge.svg)](https://github.com/ZcashFoundation/zebra/actions/workflows/docs-deploy-firebase.yml) +[![Integration Tests](https://github.com/ZcashFoundation/zebra/actions/workflows/sub-ci-integration-tests-gcp.yml/badge.svg)](https://github.com/ZcashFoundation/zebra/actions/workflows/sub-ci-integration-tests-gcp.yml) [![CI OSes](https://github.com/ZcashFoundation/zebra/actions/workflows/ci-unit-tests-os.yml/badge.svg)](https://github.com/ZcashFoundation/zebra/actions/workflows/ci-unit-tests-os.yml) [![Continuous Delivery](https://github.com/ZcashFoundation/zebra/actions/workflows/cd-deploy-nodes-gcp.yml/badge.svg)](https://github.com/ZcashFoundation/zebra/actions/workflows/cd-deploy-nodes-gcp.yml) [![codecov](https://codecov.io/gh/ZcashFoundation/zebra/branch/main/graph/badge.svg)](https://codecov.io/gh/ZcashFoundation/zebra) [![Build docs](https://github.com/ZcashFoundation/zebra/actions/workflows/docs-deploy-firebase.yml/badge.svg)](https://github.com/ZcashFoundation/zebra/actions/workflows/docs-deploy-firebase.yml) ![License](https://img.shields.io/badge/license-MIT%2FApache--2.0-blue.svg) -## Contents - - [About](#about) - [Getting Started](#getting-started) - [Docker](#docker) - [Building Zebra](#building-zebra) - - [Optional Configs & Features](#optional-configs--features) -- [Known Issues](#known-issues) -- [Future Work](#future-work) - [Documentation](#documentation) - [User support](#user-support) - [Security](#security) @@ -123,69 +118,9 @@ You can start Zebra by zebrad start ``` -See the [Installing Zebra](https://zebra.zfnd.org/user/install.html) and [Running Zebra](https://zebra.zfnd.org/user/run.html) -sections in the book for more details. - -#### Optional Configs & Features - -##### Initializing Configuration File - -```console -zebrad generate -o ~/.config/zebrad.toml -``` - -The above command places the generated `zebrad.toml` config file in the default preferences directory of Linux. For other OSes default locations [see here](https://docs.rs/dirs/latest/dirs/fn.preference_dir.html). - -##### Configuring Progress Bars - -Configure `tracing.progress_bar` in your `zebrad.toml` to -[show key metrics in the terminal using progress bars](https://zfnd.org/experimental-zebra-progress-bars/). -When progress bars are active, Zebra automatically sends logs to a file. - -There is a known issue where [progress bar estimates become extremely large](https://github.com/console-rs/indicatif/issues/556). - -In future releases, the `progress_bar = "summary"` config will show a few key metrics, -and the "detailed" config will show all available metrics. Please let us know which metrics are -important to you! - -##### Configuring Mining - -Zebra can be configured for mining by passing a `MINER_ADDRESS` and port mapping to Docker. -See the [mining support docs](https://zebra.zfnd.org/user/mining-docker.html) for more details. - -##### Custom Build Features - -You can also build Zebra with additional [Cargo features](https://doc.rust-lang.org/cargo/reference/features.html#command-line-feature-options): - -- `prometheus` for [Prometheus metrics](https://zebra.zfnd.org/user/metrics.html) -- `sentry` for [Sentry monitoring](https://zebra.zfnd.org/user/tracing.html#sentry-production-monitoring) -- `elasticsearch` for [experimental Elasticsearch support](https://zebra.zfnd.org/user/elasticsearch.html) -- `shielded-scan` for [experimental shielded scan support](https://zebra.zfnd.org/user/shielded-scan.html) - -You can combine multiple features by listing them as parameters of the `--features` flag: - -```sh -cargo install --features=" ..." ... -``` - -Our full list of experimental and developer features is in [the API documentation](https://docs.rs/zebrad/latest/zebrad/index.html#zebra-feature-flags). - -Some debugging and monitoring features are disabled in release builds to increase -performance. - -## Known Issues - -There are a few bugs in Zebra that we're still working on fixing: - -- [The `getpeerinfo` RPC shows current and recent outbound connections](https://github.com/ZcashFoundation/zebra/issues/7893), rather than current inbound and outbound connections. - -- [Progress bar estimates can become extremely large](https://github.com/console-rs/indicatif/issues/556). We're waiting on a fix in the progress bar library. - -- Zebra currently gossips and connects to [private IP addresses](https://en.wikipedia.org/wiki/IP_address#Private_addresses), we want to [disable private IPs but provide a config (#3117)](https://github.com/ZcashFoundation/zebra/issues/3117) in an upcoming release - -- Block download and verification sometimes times out during Zebra's initial sync [#5709](https://github.com/ZcashFoundation/zebra/issues/5709). The full sync still finishes reasonably quickly. - -- Experimental Tor support is disabled until Zebra upgrades to the latest `arti-client`. This happened due to a Rust dependency conflict ([#5492](https://github.com/ZcashFoundation/zebra/issues/5492)) and is still an issue due to [another dependency conflict](https://github.com/ZcashFoundation/zebra/issues/8328#issuecomment-1969989648). +Refer to the [Installing Zebra](https://zebra.zfnd.org/user/install.html) and +[Running Zebra](https://zebra.zfnd.org/user/run.html) sections in the book for +enabling optional features, detailed configuration and further details. ## Documentation @@ -207,7 +142,13 @@ The Zcash Foundation maintains the following resources documenting Zebra: For bug reports please [open a bug report ticket in the Zebra repository](https://github.com/ZcashFoundation/zebra/issues/new?assignees=&labels=C-bug%2C+S-needs-triage&projects=&template=bug_report.yml&title=%5BUser+reported+bug%5D%3A+). -Alternatively by chat, [Join the Zcash Foundation Discord Server](https://discord.com/invite/aRgNRVwsM8) and find the #zebra-support channel. +Alternatively by chat, [Join the Zcash Foundation Discord +Server](https://discord.com/invite/aRgNRVwsM8) and find the #zebra-support +channel. + +We maintain a list of known issues in the +[Troubleshooting](https://zebra.zfnd.org/user/troubleshooting.html) section of +the book. ## Security diff --git a/book/src/user/install.md b/book/src/user/install.md index 46304726b1f..c69c0dfce81 100644 --- a/book/src/user/install.md +++ b/book/src/user/install.md @@ -1,18 +1,75 @@ # Installing Zebra -Follow the [Docker or compilation instructions](https://zebra.zfnd.org/index.html#getting-started). +To install Zebra, follow the [Getting Started](https://zebra.zfnd.org/index.html#getting-started) section. -## Installing Dependencies +## Optional Configs & Features -To compile Zebra from source, you will need to [install some dependencies.](https://zebra.zfnd.org/index.html#building-zebra). +Zebra supports a variety of optional features which you can enable and configure +manually. + +### Initializing Configuration File + +```console +zebrad generate -o ~/.config/zebrad.toml +``` + +The above command places the generated `zebrad.toml` config file in the default +preferences directory of Linux. For other OSes default locations [see +here](https://docs.rs/dirs/latest/dirs/fn.preference_dir.html). + +### Configuring Progress Bars + +Configure `tracing.progress_bar` in your `zebrad.toml` to [show key metrics in +the terminal using progress +bars](https://zfnd.org/experimental-zebra-progress-bars/). When progress bars +are active, Zebra automatically sends logs to a file. + +There is a known issue where [progress bar estimates become extremely +large](https://github.com/console-rs/indicatif/issues/556). + +In future releases, the `progress_bar = "summary"` config will show a few key +metrics, and the "detailed" config will show all available metrics. Please let +us know which metrics are important to you! + +### Configuring Mining + +Zebra can be configured for mining by passing a `MINER_ADDRESS` and port mapping +to Docker. See the [mining support +docs](https://zebra.zfnd.org/user/mining-docker.html) for more details. + +### Custom Build Features + +You can also build Zebra with additional [Cargo +features](https://doc.rust-lang.org/cargo/reference/features.html#command-line-feature-options): + +- `prometheus` for [Prometheus metrics](https://zebra.zfnd.org/user/metrics.html) +- `sentry` for [Sentry monitoring](https://zebra.zfnd.org/user/tracing.html#sentry-production-monitoring) +- `elasticsearch` for [experimental Elasticsearch support](https://zebra.zfnd.org/user/elasticsearch.html) +- `shielded-scan` for [experimental shielded scan support](https://zebra.zfnd.org/user/shielded-scan.html) + +You can combine multiple features by listing them as parameters of the +`--features` flag: + +```sh +cargo install --features=" ..." ... +``` + +Our full list of experimental and developer features is in [the API +documentation](https://docs.rs/zebrad/latest/zebrad/index.html#zebra-feature-flags). + +Some debugging and monitoring features are disabled in release builds to +increase performance. ## Alternative Compilation Methods +Zebra also supports the following compilation methods. + ### Compiling Manually from git To compile Zebra directly from GitHub, or from a GitHub release source archive: -1. Install the dependencies (see above) +1. Install the dependencies as described in the [Getting + Started](https://zebra.zfnd.org/index.html#getting-started) section. 2. Get the source code using `git` or from a GitHub source package @@ -74,4 +131,3 @@ cargo build cargo build -p zebrad --all-features ``` - diff --git a/book/src/user/troubleshooting.md b/book/src/user/troubleshooting.md index 8a92125fa29..009e079cdc9 100644 --- a/book/src/user/troubleshooting.md +++ b/book/src/user/troubleshooting.md @@ -1,13 +1,18 @@ # Troubleshooting -We continuously test that our builds and tests pass on the _latest_ [GitHub -Runners](https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources) -for: - -- macOS, -- Ubuntu, -- Docker: - - Debian Bookworm. +## Known Issues + +There are a few bugs in Zebra that we're still working on fixing: + +- [The `getpeerinfo` RPC shows current and recent outbound connections](https://github.com/ZcashFoundation/zebra/issues/7893), rather than current inbound and outbound connections. + +- [Progress bar estimates can become extremely large](https://github.com/console-rs/indicatif/issues/556). We're waiting on a fix in the progress bar library. + +- Zebra currently gossips and connects to [private IP addresses](https://en.wikipedia.org/wiki/IP_address#Private_addresses), we want to [disable private IPs but provide a config (#3117)](https://github.com/ZcashFoundation/zebra/issues/3117) in an upcoming release + +- Block download and verification sometimes times out during Zebra's initial sync [#5709](https://github.com/ZcashFoundation/zebra/issues/5709). The full sync still finishes reasonably quickly. + +- Experimental Tor support is disabled until Zebra upgrades to the latest `arti-client`. This happened due to a Rust dependency conflict ([#5492](https://github.com/ZcashFoundation/zebra/issues/5492)) and is still an issue due to [another dependency conflict](https://github.com/ZcashFoundation/zebra/issues/8328#issuecomment-1969989648). ## Memory Issues From 0d8b10b95fc01b688c8f3ad804bf69f9398acc41 Mon Sep 17 00:00:00 2001 From: Marek Date: Tue, 2 Jul 2024 18:46:49 +0200 Subject: [PATCH 11/11] chore: Release v1.8.0 (#8655) * Update `CHANGELOG.md` * chore: Release * Update versions in the release dry-run workflow * Update EOS * Estimate release height to ~ upcoming Tuesday * Apply suggestions from code review Co-authored-by: Arya * Add a "Summary" title to the changelog * Remove the summary title --------- Co-authored-by: Arya --- .../scripts/release-crates-dry-run.sh | 4 +- CHANGELOG.md | 54 ++++++++++++++----- Cargo.lock | 28 +++++----- book/src/user/docker.md | 2 +- book/src/user/install.md | 4 +- tower-batch-control/Cargo.toml | 6 +-- tower-fallback/Cargo.toml | 4 +- zebra-chain/Cargo.toml | 6 +-- zebra-consensus/Cargo.toml | 20 +++---- zebra-grpc/Cargo.toml | 6 +-- zebra-network/Cargo.toml | 4 +- zebra-node-services/Cargo.toml | 4 +- zebra-rpc/Cargo.toml | 24 ++++----- zebra-scan/Cargo.toml | 16 +++--- zebra-script/Cargo.toml | 6 +-- zebra-state/Cargo.toml | 10 ++-- zebra-test/Cargo.toml | 2 +- zebra-utils/Cargo.toml | 10 ++-- zebrad/Cargo.toml | 36 ++++++------- zebrad/src/components/sync/end_of_support.rs | 2 +- 20 files changed, 138 insertions(+), 110 deletions(-) diff --git a/.github/workflows/scripts/release-crates-dry-run.sh b/.github/workflows/scripts/release-crates-dry-run.sh index 91551424137..7f13647c65e 100755 --- a/.github/workflows/scripts/release-crates-dry-run.sh +++ b/.github/workflows/scripts/release-crates-dry-run.sh @@ -23,8 +23,8 @@ fi cargo release version --verbose --execute --no-confirm --allow-branch '*' --workspace --exclude zebrad --exclude zebra-scan --exclude zebra-grpc beta # Due to a bug in cargo-release, we need to pass exact versions for alpha crates: -cargo release version --verbose --execute --no-confirm --allow-branch '*' --package zebra-scan 0.1.0-alpha.7 -cargo release version --verbose --execute --no-confirm --allow-branch '*' --package zebra-grpc 0.1.0-alpha.5 +cargo release version --verbose --execute --no-confirm --allow-branch '*' --package zebra-scan 0.1.0-alpha.8 +cargo release version --verbose --execute --no-confirm --allow-branch '*' --package zebra-grpc 0.1.0-alpha.6 # Update zebrad: cargo release version --verbose --execute --no-confirm --allow-branch '*' --package zebrad patch diff --git a/CHANGELOG.md b/CHANGELOG.md index 86e1232146f..0e130bf20f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,25 +5,53 @@ All notable changes to Zebra are documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org). -## Zebra 1.X.X - XXXX-XX-XX +## [Zebra 1.8.0](https://github.com/ZcashFoundation/zebra/releases/tag/v1.8.0) - 2024-07-02 -### Changed - -- We realized that a longer than `zcashd` end of support could be problematic in - some cases so we reverted back from 20 to 16 weeks - ([#8530](https://github.com/ZcashFoundation/zebra/pull/8530)) +- Zebra now uses a default unpaid actions limit of 0, dropping transactions with + any unpaid actions from the mempool and excluding them when selecting + transactions from the mempool during block template construction. - The `zebrad` binary no longer contains the scanner of shielded transactions. This means `zebrad` no longer contains users' viewing keys. -- We're no longer using general conditional compilation attributes for `tor`, - but only feature flags instead. -- Fixed a bug with trailing characters in the openapi spec method descriptions ([#8597](https://github.com/ZcashFoundation/zebra/pull/8597)) -- Added default constructions for several RPC method responses ([#8616](https://github.com/ZcashFoundation/zebra/pull/8616)) -- Added Windows to the list of supported platforms in Tier 2 ([#8637](https://github.com/ZcashFoundation/zebra/pull/8637)) -- Zebra now drops transactions with unpaid actions in block templates and from the mempool. +- Support for custom Testnets and Regtest is greatly enhanced. +- Windows is now back in the second tier of supported platforms. +- The end-of-support time interval is set to match `zcashd`'s 16 weeks. +- The RPC serialization of empty treestates matches `zcashd`. ### Added -- Added a page to the Zebra book describing custom Testnets ([#8636](https://github.com/ZcashFoundation/zebra/pull/8636)) +- Add an init function for a standalone `ReadStateService` ([#8595](https://github.com/ZcashFoundation/zebra/pull/8595)) +- Allow configuring more parameters on custom Testnets and an NU5 activation height on Regtest ([#8477](https://github.com/ZcashFoundation/zebra/pull/8477), [#8518](https://github.com/ZcashFoundation/zebra/pull/8518), [#8524](https://github.com/ZcashFoundation/zebra/pull/8524), [#8528](https://github.com/ZcashFoundation/zebra/pull/8528), [#8636](https://github.com/ZcashFoundation/zebra/pull/8636)) +- Add default constructions for several RPC method responses ([#8616](https://github.com/ZcashFoundation/zebra/pull/8616), [#8505](https://github.com/ZcashFoundation/zebra/pull/8505)) +- Support constructing Canopy proposal blocks from block templates ([#8505](https://github.com/ZcashFoundation/zebra/pull/8505)) + +#### Docs + +- Document custom Testnets, Regtest and how they compare to Mainnet and the default Testnet in the Zebra book ([#8526](https://github.com/ZcashFoundation/zebra/pull/8526), [#8636](https://github.com/ZcashFoundation/zebra/pull/8636)) + +### Changed + +- Use a default unpaid action limit of 0 so that transactions with unpaid actions are excluded from the mempool and block templates by default ([#8638](https://github.com/ZcashFoundation/zebra/pull/8638)) +- Lower the mandatory checkpoint height from immediately above the ZIP-212 grace period to immediately below Canopy activation ([#8629](https://github.com/ZcashFoundation/zebra/pull/8629)) +- Use the new `zcash_script` callback API in `zebra-script`, allowing Zebra's ECC dependencies to be upgraded independently of `zcash_script` and `zcashd` ([#8566](https://github.com/ZcashFoundation/zebra/pull/8566)) +- Put Windows in Tier 2 of supported platforms ([#8637](https://github.com/ZcashFoundation/zebra/pull/8637)) +- Remove experimental support for starting the `zebra-scan` in the `zebrad` process as a step towards moving the scanner to its own process ([#8594](https://github.com/ZcashFoundation/zebra/pull/8594)) +- Reduce the end of support time from 20 weeks to 16 weeks ([#8530](https://github.com/ZcashFoundation/zebra/pull/8530)) +- Restore parts of the experimental `internal-miner` feature for use on Regtest ([#8506](https://github.com/ZcashFoundation/zebra/pull/8506)) + +### Fixed + +- Allow square brackets in network config listen addr and external addr without explicitly configuring a port in the listen addr ([#8504](https://github.com/ZcashFoundation/zebra/pull/8504)) +- Fix general conditional compilation attributes ([#8602](https://github.com/ZcashFoundation/zebra/pull/8602)) +- Update `median_timespan()` method to align with zcashd implementation ([#8491](https://github.com/ZcashFoundation/zebra/pull/8491)) +- Allow custom Testnets to make peer connections ([#8528](https://github.com/ZcashFoundation/zebra/pull/8528)) +- Refactor and simplify the serialization of empty treestates to fix an incorrect serialization of empty note commitment trees for RPCs ([#8533](https://github.com/ZcashFoundation/zebra/pull/8533)) +- Fix port conflict issue in some tests and re-enable those tests on Windows where those issues were especially problematic ([#8624](https://github.com/ZcashFoundation/zebra/pull/8624)) +- Fix a bug with trailing characters in the OpenAPI spec method descriptions ([#8597](https://github.com/ZcashFoundation/zebra/pull/8597)) + +### Contributors + +Thank you to everyone who contributed to this release, we couldn't make Zebra without you: +@arya2, @conradoplg, @gustavovalverde, @oxarbitrage and @upbqdn ## [Zebra 1.7.0](https://github.com/ZcashFoundation/zebra/releases/tag/v1.7.0) - 2024-05-07 diff --git a/Cargo.lock b/Cargo.lock index 7eecf65cb51..ea09e646716 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4768,7 +4768,7 @@ dependencies = [ [[package]] name = "tower-batch-control" -version = "0.2.41-beta.13" +version = "0.2.41-beta.14" dependencies = [ "color-eyre", "ed25519-zebra", @@ -4791,7 +4791,7 @@ dependencies = [ [[package]] name = "tower-fallback" -version = "0.2.41-beta.13" +version = "0.2.41-beta.14" dependencies = [ "futures-core", "pin-project", @@ -5817,7 +5817,7 @@ dependencies = [ [[package]] name = "zebra-chain" -version = "1.0.0-beta.37" +version = "1.0.0-beta.38" dependencies = [ "bitflags 2.6.0", "bitflags-serde-legacy", @@ -5880,7 +5880,7 @@ dependencies = [ [[package]] name = "zebra-consensus" -version = "1.0.0-beta.37" +version = "1.0.0-beta.38" dependencies = [ "bellman", "blake2b_simd", @@ -5926,7 +5926,7 @@ dependencies = [ [[package]] name = "zebra-grpc" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" dependencies = [ "color-eyre", "futures-util", @@ -5948,7 +5948,7 @@ dependencies = [ [[package]] name = "zebra-network" -version = "1.0.0-beta.37" +version = "1.0.0-beta.38" dependencies = [ "bitflags 2.6.0", "byteorder", @@ -5989,7 +5989,7 @@ dependencies = [ [[package]] name = "zebra-node-services" -version = "1.0.0-beta.37" +version = "1.0.0-beta.38" dependencies = [ "color-eyre", "jsonrpc-core", @@ -6002,7 +6002,7 @@ dependencies = [ [[package]] name = "zebra-rpc" -version = "1.0.0-beta.37" +version = "1.0.0-beta.38" dependencies = [ "chrono", "futures", @@ -6034,7 +6034,7 @@ dependencies = [ [[package]] name = "zebra-scan" -version = "0.1.0-alpha.6" +version = "0.1.0-alpha.7" dependencies = [ "bls12_381", "chrono", @@ -6069,7 +6069,7 @@ dependencies = [ [[package]] name = "zebra-script" -version = "1.0.0-beta.37" +version = "1.0.0-beta.38" dependencies = [ "hex", "lazy_static", @@ -6081,7 +6081,7 @@ dependencies = [ [[package]] name = "zebra-state" -version = "1.0.0-beta.37" +version = "1.0.0-beta.38" dependencies = [ "bincode", "chrono", @@ -6126,7 +6126,7 @@ dependencies = [ [[package]] name = "zebra-test" -version = "1.0.0-beta.37" +version = "1.0.0-beta.38" dependencies = [ "color-eyre", "futures", @@ -6154,7 +6154,7 @@ dependencies = [ [[package]] name = "zebra-utils" -version = "1.0.0-beta.37" +version = "1.0.0-beta.38" dependencies = [ "color-eyre", "hex", @@ -6185,7 +6185,7 @@ dependencies = [ [[package]] name = "zebrad" -version = "1.7.0" +version = "1.8.0" dependencies = [ "abscissa_core", "atty", diff --git a/book/src/user/docker.md b/book/src/user/docker.md index 3f952eb4ccf..3bca3143c16 100644 --- a/book/src/user/docker.md +++ b/book/src/user/docker.md @@ -37,7 +37,7 @@ docker run -d --platform linux/amd64 \ ### Build it locally ```shell -git clone --depth 1 --branch v1.7.0 https://github.com/ZcashFoundation/zebra.git +git clone --depth 1 --branch v1.8.0 https://github.com/ZcashFoundation/zebra.git docker build --file docker/Dockerfile --target runtime --tag zebra:local . docker run --detach zebra:local ``` diff --git a/book/src/user/install.md b/book/src/user/install.md index c69c0dfce81..a87eabd5f90 100644 --- a/book/src/user/install.md +++ b/book/src/user/install.md @@ -76,7 +76,7 @@ To compile Zebra directly from GitHub, or from a GitHub release source archive: ```sh git clone https://github.com/ZcashFoundation/zebra.git cd zebra -git checkout v1.7.0 +git checkout v1.8.0 ``` 3. Build and Run `zebrad` @@ -89,7 +89,7 @@ target/release/zebrad start ### Compiling from git using cargo install ```sh -cargo install --git https://github.com/ZcashFoundation/zebra --tag v1.7.0 zebrad +cargo install --git https://github.com/ZcashFoundation/zebra --tag v1.8.0 zebrad ``` ### Compiling on ARM diff --git a/tower-batch-control/Cargo.toml b/tower-batch-control/Cargo.toml index d62a31773cc..393dd0c8d5e 100644 --- a/tower-batch-control/Cargo.toml +++ b/tower-batch-control/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tower-batch-control" -version = "0.2.41-beta.13" +version = "0.2.41-beta.14" authors = ["Zcash Foundation ", "Tower Maintainers "] description = "Tower middleware for batch request processing" # # Legal @@ -43,10 +43,10 @@ rand = "0.8.5" tokio = { version = "1.37.0", features = ["full", "tracing", "test-util"] } tokio-test = "0.4.4" -tower-fallback = { path = "../tower-fallback/", version = "0.2.41-beta.13" } +tower-fallback = { path = "../tower-fallback/", version = "0.2.41-beta.14" } tower-test = "0.4.0" -zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.37" } +zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.38" } [lints.rust] unexpected_cfgs = { level = "warn", check-cfg = ['cfg(tokio_unstable)'] } diff --git a/tower-fallback/Cargo.toml b/tower-fallback/Cargo.toml index bdd129fba8c..15ee968bbbe 100644 --- a/tower-fallback/Cargo.toml +++ b/tower-fallback/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tower-fallback" -version = "0.2.41-beta.13" +version = "0.2.41-beta.14" authors = ["Zcash Foundation "] description = "A Tower service combinator that sends requests to a first service, then retries processing on a second fallback service if the first service errors." license = "MIT OR Apache-2.0" @@ -24,4 +24,4 @@ tracing = "0.1.39" [dev-dependencies] tokio = { version = "1.37.0", features = ["full", "tracing", "test-util"] } -zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.37" } +zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.38" } diff --git a/zebra-chain/Cargo.toml b/zebra-chain/Cargo.toml index 8f163ae80f5..9b4160b5c69 100644 --- a/zebra-chain/Cargo.toml +++ b/zebra-chain/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-chain" -version = "1.0.0-beta.37" +version = "1.0.0-beta.38" authors = ["Zcash Foundation "] description = "Core Zcash data structures" license = "MIT OR Apache-2.0" @@ -143,7 +143,7 @@ proptest-derive = { version = "0.4.0", optional = true } rand = { version = "0.8.5", optional = true } rand_chacha = { version = "0.3.1", optional = true } -zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.37", optional = true } +zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.38", optional = true } [dev-dependencies] # Benchmarks @@ -166,7 +166,7 @@ rand_chacha = "0.3.1" tokio = { version = "1.37.0", features = ["full", "tracing", "test-util"] } -zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.37" } +zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.38" } [[bench]] name = "block" diff --git a/zebra-consensus/Cargo.toml b/zebra-consensus/Cargo.toml index c8d0a8bccf9..036f13e8322 100644 --- a/zebra-consensus/Cargo.toml +++ b/zebra-consensus/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-consensus" -version = "1.0.0-beta.37" +version = "1.0.0-beta.38" authors = ["Zcash Foundation "] description = "Implementation of Zcash consensus checks" license = "MIT OR Apache-2.0" @@ -63,13 +63,13 @@ orchard = "0.8.0" zcash_proofs = { version = "0.15.0", features = ["multicore" ] } wagyu-zcash-parameters = "0.2.0" -tower-fallback = { path = "../tower-fallback/", version = "0.2.41-beta.13" } -tower-batch-control = { path = "../tower-batch-control/", version = "0.2.41-beta.13" } +tower-fallback = { path = "../tower-fallback/", version = "0.2.41-beta.14" } +tower-batch-control = { path = "../tower-batch-control/", version = "0.2.41-beta.14" } -zebra-script = { path = "../zebra-script", version = "1.0.0-beta.37" } -zebra-state = { path = "../zebra-state", version = "1.0.0-beta.37" } -zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.37" } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.37" } +zebra-script = { path = "../zebra-script", version = "1.0.0-beta.38" } +zebra-state = { path = "../zebra-state", version = "1.0.0-beta.38" } +zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.38" } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.38" } # prod feature progress-bar howudoin = { version = "0.1.2", optional = true } @@ -94,6 +94,6 @@ tokio = { version = "1.37.0", features = ["full", "tracing", "test-util"] } tracing-error = "0.2.0" tracing-subscriber = "0.3.18" -zebra-state = { path = "../zebra-state", version = "1.0.0-beta.37", features = ["proptest-impl"] } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.37", features = ["proptest-impl"] } -zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.37" } +zebra-state = { path = "../zebra-state", version = "1.0.0-beta.38", features = ["proptest-impl"] } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.38", features = ["proptest-impl"] } +zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.38" } diff --git a/zebra-grpc/Cargo.toml b/zebra-grpc/Cargo.toml index 2010b769d6b..32eec49836f 100644 --- a/zebra-grpc/Cargo.toml +++ b/zebra-grpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-grpc" -version = "0.1.0-alpha.4" +version = "0.1.0-alpha.5" authors = ["Zcash Foundation "] description = "Zebra gRPC interface" license = "MIT OR Apache-2.0" @@ -28,8 +28,8 @@ color-eyre = "0.6.3" zcash_primitives = { version = "0.15.0" } -zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.37", features = ["shielded-scan"] } -zebra-chain = { path = "../zebra-chain" , version = "1.0.0-beta.37" } +zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.38", features = ["shielded-scan"] } +zebra-chain = { path = "../zebra-chain" , version = "1.0.0-beta.38" } [build-dependencies] tonic-build = "0.11.0" diff --git a/zebra-network/Cargo.toml b/zebra-network/Cargo.toml index c4d8f158672..95b44c1ca55 100644 --- a/zebra-network/Cargo.toml +++ b/zebra-network/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-network" -version = "1.0.0-beta.37" +version = "1.0.0-beta.38" authors = ["Zcash Foundation ", "Tower Maintainers "] description = "Networking code for Zebra" # # Legal @@ -83,7 +83,7 @@ howudoin = { version = "0.1.2", optional = true } proptest = { version = "1.4.0", optional = true } proptest-derive = { version = "0.4.0", optional = true } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.37", features = ["async-error"] } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.38", features = ["async-error"] } [dev-dependencies] proptest = "1.4.0" diff --git a/zebra-node-services/Cargo.toml b/zebra-node-services/Cargo.toml index ec20d91fe2f..8a076eeae8d 100644 --- a/zebra-node-services/Cargo.toml +++ b/zebra-node-services/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-node-services" -version = "1.0.0-beta.37" +version = "1.0.0-beta.38" authors = ["Zcash Foundation "] description = "The interfaces of some Zebra node services" license = "MIT OR Apache-2.0" @@ -37,7 +37,7 @@ rpc-client = [ shielded-scan = ["tokio"] [dependencies] -zebra-chain = { path = "../zebra-chain" , version = "1.0.0-beta.37" } +zebra-chain = { path = "../zebra-chain" , version = "1.0.0-beta.38" } # Optional dependencies diff --git a/zebra-rpc/Cargo.toml b/zebra-rpc/Cargo.toml index 6adf640de4f..edaa1550cc6 100644 --- a/zebra-rpc/Cargo.toml +++ b/zebra-rpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-rpc" -version = "1.0.0-beta.37" +version = "1.0.0-beta.38" authors = ["Zcash Foundation "] description = "A Zebra JSON Remote Procedure Call (JSON-RPC) interface" license = "MIT OR Apache-2.0" @@ -74,12 +74,12 @@ zcash_address = { version = "0.3.2", optional = true } # Test-only feature proptest-impl proptest = { version = "1.4.0", optional = true } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.37", features = ["json-conversion"] } -zebra-consensus = { path = "../zebra-consensus", version = "1.0.0-beta.37" } -zebra-network = { path = "../zebra-network", version = "1.0.0-beta.37" } -zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.37" } -zebra-script = { path = "../zebra-script", version = "1.0.0-beta.37" } -zebra-state = { path = "../zebra-state", version = "1.0.0-beta.37" } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.38", features = ["json-conversion"] } +zebra-consensus = { path = "../zebra-consensus", version = "1.0.0-beta.38" } +zebra-network = { path = "../zebra-network", version = "1.0.0-beta.38" } +zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.38" } +zebra-script = { path = "../zebra-script", version = "1.0.0-beta.38" } +zebra-state = { path = "../zebra-state", version = "1.0.0-beta.38" } [dev-dependencies] insta = { version = "1.39.0", features = ["redactions", "json", "ron"] } @@ -89,9 +89,9 @@ proptest = "1.4.0" thiserror = "1.0.61" tokio = { version = "1.37.0", features = ["full", "tracing", "test-util"] } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.37", features = ["proptest-impl"] } -zebra-consensus = { path = "../zebra-consensus", version = "1.0.0-beta.37", features = ["proptest-impl"] } -zebra-network = { path = "../zebra-network", version = "1.0.0-beta.37", features = ["proptest-impl"] } -zebra-state = { path = "../zebra-state", version = "1.0.0-beta.37", features = ["proptest-impl"] } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.38", features = ["proptest-impl"] } +zebra-consensus = { path = "../zebra-consensus", version = "1.0.0-beta.38", features = ["proptest-impl"] } +zebra-network = { path = "../zebra-network", version = "1.0.0-beta.38", features = ["proptest-impl"] } +zebra-state = { path = "../zebra-state", version = "1.0.0-beta.38", features = ["proptest-impl"] } -zebra-test = { path = "../zebra-test", version = "1.0.0-beta.37" } +zebra-test = { path = "../zebra-test", version = "1.0.0-beta.38" } diff --git a/zebra-scan/Cargo.toml b/zebra-scan/Cargo.toml index 1672e1d16f5..3ac701e678c 100644 --- a/zebra-scan/Cargo.toml +++ b/zebra-scan/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-scan" -version = "0.1.0-alpha.6" +version = "0.1.0-alpha.7" authors = ["Zcash Foundation "] description = "Shielded transaction scanner for the Zcash blockchain" license = "MIT OR Apache-2.0" @@ -57,10 +57,10 @@ zcash_primitives = "0.15.0" zcash_address = "0.3.2" sapling = { package = "sapling-crypto", version = "0.1" } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.37", features = ["shielded-scan"] } -zebra-state = { path = "../zebra-state", version = "1.0.0-beta.37", features = ["shielded-scan"] } -zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.37", features = ["shielded-scan"] } -zebra-grpc = { path = "../zebra-grpc", version = "0.1.0-alpha.4" } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.38", features = ["shielded-scan"] } +zebra-state = { path = "../zebra-state", version = "1.0.0-beta.38", features = ["shielded-scan"] } +zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.38", features = ["shielded-scan"] } +zebra-grpc = { path = "../zebra-grpc", version = "0.1.0-alpha.5" } chrono = { version = "0.4.38", default-features = false, features = ["clock", "std", "serde"] } @@ -75,7 +75,7 @@ jubjub = { version = "0.10.0", optional = true } rand = { version = "0.8.5", optional = true } zcash_note_encryption = { version = "0.4.0", optional = true } -zebra-test = { path = "../zebra-test", version = "1.0.0-beta.37", optional = true } +zebra-test = { path = "../zebra-test", version = "1.0.0-beta.38", optional = true } [dev-dependencies] insta = { version = "1.39.0", features = ["ron", "redactions"] } @@ -90,5 +90,5 @@ jubjub = "0.10.0" rand = "0.8.5" zcash_note_encryption = "0.4.0" -zebra-state = { path = "../zebra-state", version = "1.0.0-beta.37", features = ["proptest-impl"] } -zebra-test = { path = "../zebra-test", version = "1.0.0-beta.37" } +zebra-state = { path = "../zebra-state", version = "1.0.0-beta.38", features = ["proptest-impl"] } +zebra-test = { path = "../zebra-test", version = "1.0.0-beta.38" } diff --git a/zebra-script/Cargo.toml b/zebra-script/Cargo.toml index b8cc459df12..08fb31a1f17 100644 --- a/zebra-script/Cargo.toml +++ b/zebra-script/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-script" -version = "1.0.0-beta.37" +version = "1.0.0-beta.38" authors = ["Zcash Foundation "] description = "Zebra script verification wrapping zcashd's zcash_script library" license = "MIT OR Apache-2.0" @@ -16,11 +16,11 @@ categories = ["api-bindings", "cryptography::cryptocurrencies"] [dependencies] zcash_script = "0.2.0" -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.37" } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.38" } thiserror = "1.0.61" [dev-dependencies] hex = "0.4.3" lazy_static = "1.4.0" -zebra-test = { path = "../zebra-test", version = "1.0.0-beta.37" } +zebra-test = { path = "../zebra-test", version = "1.0.0-beta.38" } diff --git a/zebra-state/Cargo.toml b/zebra-state/Cargo.toml index c73328650c9..167158d65ed 100644 --- a/zebra-state/Cargo.toml +++ b/zebra-state/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-state" -version = "1.0.0-beta.37" +version = "1.0.0-beta.38" authors = ["Zcash Foundation "] description = "State contextual verification and storage code for Zebra" license = "MIT OR Apache-2.0" @@ -77,13 +77,13 @@ tracing = "0.1.39" elasticsearch = { version = "8.5.0-alpha.1", default-features = false, features = ["rustls-tls"], optional = true } serde_json = { version = "1.0.117", package = "serde_json", optional = true } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.37", features = ["async-error"] } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.38", features = ["async-error"] } # prod feature progress-bar howudoin = { version = "0.1.2", optional = true } # test feature proptest-impl -zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.37", optional = true } +zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.38", optional = true } proptest = { version = "1.4.0", optional = true } proptest-derive = { version = "0.4.0", optional = true } @@ -108,5 +108,5 @@ jubjub = "0.10.0" tokio = { version = "1.37.0", features = ["full", "tracing", "test-util"] } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.37", features = ["proptest-impl"] } -zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.37" } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.38", features = ["proptest-impl"] } +zebra-test = { path = "../zebra-test/", version = "1.0.0-beta.38" } diff --git a/zebra-test/Cargo.toml b/zebra-test/Cargo.toml index e8ece79f901..8569f72e8d4 100644 --- a/zebra-test/Cargo.toml +++ b/zebra-test/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-test" -version = "1.0.0-beta.37" +version = "1.0.0-beta.38" authors = ["Zcash Foundation "] description = "Test harnesses and test vectors for Zebra" license = "MIT OR Apache-2.0" diff --git a/zebra-utils/Cargo.toml b/zebra-utils/Cargo.toml index c5fbecd1797..52883258fd7 100644 --- a/zebra-utils/Cargo.toml +++ b/zebra-utils/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zebra-utils" -version = "1.0.0-beta.37" +version = "1.0.0-beta.38" authors = ["Zcash Foundation "] description = "Developer tools for Zebra maintenance and testing" license = "MIT OR Apache-2.0" @@ -100,12 +100,12 @@ tracing-error = "0.2.0" tracing-subscriber = "0.3.18" thiserror = "1.0.61" -zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.37" } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.37" } -zebra-scan = { path = "../zebra-scan", version = "0.1.0-alpha.6", optional = true } +zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.38" } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.38" } +zebra-scan = { path = "../zebra-scan", version = "0.1.0-alpha.7", optional = true } # These crates are needed for the block-template-to-proposal binary -zebra-rpc = { path = "../zebra-rpc", version = "1.0.0-beta.37", optional = true } +zebra-rpc = { path = "../zebra-rpc", version = "1.0.0-beta.38", optional = true } # These crates are needed for the zebra-checkpoints binary itertools = { version = "0.13.0", optional = true } diff --git a/zebrad/Cargo.toml b/zebrad/Cargo.toml index 27bb5273959..df2a481f228 100644 --- a/zebrad/Cargo.toml +++ b/zebrad/Cargo.toml @@ -1,7 +1,7 @@ [package] # Crate metadata name = "zebrad" -version = "1.7.0" +version = "1.8.0" authors = ["Zcash Foundation "] description = "The Zcash Foundation's independent, consensus-compatible implementation of a Zcash node" license = "MIT OR Apache-2.0" @@ -158,18 +158,18 @@ test_sync_past_mandatory_checkpoint_mainnet = [] test_sync_past_mandatory_checkpoint_testnet = [] [dependencies] -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.37" } -zebra-consensus = { path = "../zebra-consensus", version = "1.0.0-beta.37" } -zebra-network = { path = "../zebra-network", version = "1.0.0-beta.37" } -zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.37" } -zebra-rpc = { path = "../zebra-rpc", version = "1.0.0-beta.37" } -zebra-state = { path = "../zebra-state", version = "1.0.0-beta.37" } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.38" } +zebra-consensus = { path = "../zebra-consensus", version = "1.0.0-beta.38" } +zebra-network = { path = "../zebra-network", version = "1.0.0-beta.38" } +zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.38" } +zebra-rpc = { path = "../zebra-rpc", version = "1.0.0-beta.38" } +zebra-state = { path = "../zebra-state", version = "1.0.0-beta.38" } # Experimental shielded-scan feature -zebra-scan = { path = "../zebra-scan", version = "0.1.0-alpha.6", optional = true } +zebra-scan = { path = "../zebra-scan", version = "0.1.0-alpha.7", optional = true } # Required for crates.io publishing, but it's only used in tests -zebra-utils = { path = "../zebra-utils", version = "1.0.0-beta.37", optional = true } +zebra-utils = { path = "../zebra-utils", version = "1.0.0-beta.38", optional = true } abscissa_core = "0.7.0" clap = { version = "4.5.4", features = ["cargo"] } @@ -280,16 +280,16 @@ proptest-derive = "0.4.0" # enable span traces and track caller in tests color-eyre = { version = "0.6.3" } -zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.37", features = ["proptest-impl"] } -zebra-consensus = { path = "../zebra-consensus", version = "1.0.0-beta.37", features = ["proptest-impl"] } -zebra-network = { path = "../zebra-network", version = "1.0.0-beta.37", features = ["proptest-impl"] } -zebra-scan = { path = "../zebra-scan", version = "0.1.0-alpha.6", features = ["proptest-impl"] } -zebra-state = { path = "../zebra-state", version = "1.0.0-beta.37", features = ["proptest-impl"] } +zebra-chain = { path = "../zebra-chain", version = "1.0.0-beta.38", features = ["proptest-impl"] } +zebra-consensus = { path = "../zebra-consensus", version = "1.0.0-beta.38", features = ["proptest-impl"] } +zebra-network = { path = "../zebra-network", version = "1.0.0-beta.38", features = ["proptest-impl"] } +zebra-scan = { path = "../zebra-scan", version = "0.1.0-alpha.7", features = ["proptest-impl"] } +zebra-state = { path = "../zebra-state", version = "1.0.0-beta.38", features = ["proptest-impl"] } -zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.37", features = ["rpc-client"] } +zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.38", features = ["rpc-client"] } -zebra-test = { path = "../zebra-test", version = "1.0.0-beta.37" } -zebra-grpc = { path = "../zebra-grpc", version = "0.1.0-alpha.4" } +zebra-test = { path = "../zebra-test", version = "1.0.0-beta.38" } +zebra-grpc = { path = "../zebra-grpc", version = "0.1.0-alpha.5" } # Used by the checkpoint generation tests via the zebra-checkpoints feature # (the binaries in this crate won't be built unless their features are enabled). @@ -300,7 +300,7 @@ zebra-grpc = { path = "../zebra-grpc", version = "0.1.0-alpha.4" } # When `-Z bindeps` is stabilised, enable this binary dependency instead: # https://github.com/rust-lang/cargo/issues/9096 # zebra-utils { path = "../zebra-utils", artifact = "bin:zebra-checkpoints" } -zebra-utils = { path = "../zebra-utils", version = "1.0.0-beta.37" } +zebra-utils = { path = "../zebra-utils", version = "1.0.0-beta.38" } [lints.rust] unexpected_cfgs = { level = "warn", check-cfg = ['cfg(tokio_unstable)'] } diff --git a/zebrad/src/components/sync/end_of_support.rs b/zebrad/src/components/sync/end_of_support.rs index cedcce0e8e0..0f6041a400c 100644 --- a/zebrad/src/components/sync/end_of_support.rs +++ b/zebrad/src/components/sync/end_of_support.rs @@ -13,7 +13,7 @@ use zebra_chain::{ use crate::application::release_version; /// The estimated height that this release will be published. -pub const ESTIMATED_RELEASE_HEIGHT: u32 = 2_496_122; +pub const ESTIMATED_RELEASE_HEIGHT: u32 = 2_562_000; /// The maximum number of days after `ESTIMATED_RELEASE_HEIGHT` where a Zebra server will run /// without halting.