From e5517b61cc76b2d0b6b1af98c534a8bcf8109842 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Wed, 10 Jul 2024 23:48:28 +0000 Subject: [PATCH] zcash_client_backend: Migrate to `tonic 0.12` with `http 1` --- Cargo.lock | 142 ++++++++++++------ Cargo.toml | 6 +- supply-chain/audits.toml | 27 ++++ supply-chain/config.toml | 40 +++-- supply-chain/imports.lock | 47 +++--- zcash_client_backend/CHANGELOG.md | 1 + .../src/proto/compact_formats.rs | 3 +- zcash_client_backend/src/proto/proposal.rs | 7 +- zcash_client_backend/src/proto/service.rs | 13 +- 9 files changed, 186 insertions(+), 100 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f93c163c9..fefe4538c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -177,6 +177,12 @@ dependencies = [ "syn 2.0.63", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "autocfg" version = "1.3.0" @@ -185,18 +191,17 @@ checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "axum" -version = "0.6.20" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" +checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" dependencies = [ "async-trait", "axum-core", - "bitflags 1.3.2", "bytes", "futures-util", "http", "http-body", - "hyper", + "http-body-util", "itoa", "matchit", "memchr", @@ -205,7 +210,7 @@ dependencies = [ "pin-project-lite", "rustversion", "serde", - "sync_wrapper", + "sync_wrapper 1.0.1", "tower", "tower-layer", "tower-service", @@ -213,17 +218,20 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.3.4" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" dependencies = [ "async-trait", "bytes", "futures-util", "http", "http-body", + "http-body-util", "mime", + "pin-project-lite", "rustversion", + "sync_wrapper 0.1.2", "tower-layer", "tower-service", ] @@ -249,6 +257,12 @@ version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + [[package]] name = "bech32" version = "0.9.1" @@ -923,15 +937,15 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.26" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" dependencies = [ + "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "futures-util", "http", "indexmap 2.2.6", "slab", @@ -1052,9 +1066,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.12" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" dependencies = [ "bytes", "fnv", @@ -1063,12 +1077,24 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.6" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" dependencies = [ "bytes", "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http", + "http-body", "pin-project-lite", ] @@ -1086,13 +1112,12 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.28" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" dependencies = [ "bytes", "futures-channel", - "futures-core", "futures-util", "h2", "http", @@ -1101,23 +1126,42 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2", + "smallvec", "tokio", - "tower-service", - "tracing", "want", ] [[package]] name = "hyper-timeout" -version = "0.4.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +checksum = "3203a961e5c83b6f5498933e78b6b263e208c197b63e9c6c53cc82ffd3f63793" dependencies = [ "hyper", + "hyper-util", "pin-project-lite", "tokio", - "tokio-io-timeout", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "pin-project-lite", + "socket2", + "tokio", + "tower", + "tower-service", + "tracing", ] [[package]] @@ -1752,9 +1796,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.12.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c289cda302b98a28d40c8b3b90498d6e526dd24ac2ecea73e4e491685b94a" +checksum = "e13db3d3fde688c61e2446b4d843bc27a7e8af269a69440c0308021dc92333cc" dependencies = [ "bytes", "prost-derive", @@ -1762,9 +1806,9 @@ dependencies = [ [[package]] name = "prost-build" -version = "0.12.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c55e02e35260070b6f716a2423c2ff1c3bb1642ddca6f99e1f26d06268a0e2d2" +checksum = "5bb182580f71dd070f88d01ce3de9f4da5021db7115d2e1c3605a754153b77c1" dependencies = [ "bytes", "heck", @@ -1779,14 +1823,13 @@ dependencies = [ "regex", "syn 2.0.63", "tempfile", - "which", ] [[package]] name = "prost-derive" -version = "0.12.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efb6c9a1dd1def8e2124d17e83a20af56f1570d6c2d2bd9e266ccb768df3840e" +checksum = "18bec9b0adc4eba778b33684b7ba3e7137789434769ee3ce3930463ef904cfca" dependencies = [ "anyhow", "itertools", @@ -1797,9 +1840,9 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.12.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "193898f59edcf43c26227dcd4c8427f00d99d61e95dcde58dabd49fa291d470e" +checksum = "cee5168b05f49d4b0ca581206eb14a7b22fafd963efe729ac48eb03266e25cc2" dependencies = [ "prost", ] @@ -2356,6 +2399,12 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +[[package]] +name = "sync_wrapper" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" + [[package]] name = "tap" version = "1.0.1" @@ -2463,17 +2512,19 @@ dependencies = [ "num_cpus", "pin-project-lite", "socket2", + "tokio-macros", "windows-sys 0.48.0", ] [[package]] -name = "tokio-io-timeout" -version = "1.2.0" +name = "tokio-macros" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ - "pin-project-lite", - "tokio", + "proc-macro2", + "quote", + "syn 2.0.63", ] [[package]] @@ -2502,23 +2553,26 @@ dependencies = [ [[package]] name = "tonic" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76c4eb7a4e9ef9d4763600161f12f5070b92a578e1b634db88a6887844c91a13" +checksum = "f738b6a169a29bca4e39656db89c44a08e09c5b700b896ee9e7459f0652e81dd" dependencies = [ "async-stream", "async-trait", "axum", - "base64", + "base64 0.22.1", "bytes", "h2", "http", "http-body", + "http-body-util", "hyper", "hyper-timeout", + "hyper-util", "percent-encoding", "pin-project", "prost", + "socket2", "tokio", "tokio-stream", "tower", @@ -2529,9 +2583,9 @@ dependencies = [ [[package]] name = "tonic-build" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4ef6dd70a610078cb4e338a0f79d06bc759ff1b22d2120c2ff02ae264ba9c2" +checksum = "690943cc223adcdd67bb597a2e573ead1b88e999ba37528fe8e6356bf44b29b6" dependencies = [ "prettyplease", "proc-macro2", @@ -3049,7 +3103,7 @@ version = "0.12.1" dependencies = [ "assert_matches", "async-trait", - "base64", + "base64 0.21.7", "bech32", "bip32", "bls12_381", @@ -3357,7 +3411,7 @@ dependencies = [ name = "zip321" version = "0.0.0" dependencies = [ - "base64", + "base64 0.21.7", "nom", "percent-encoding", "proptest", diff --git a/Cargo.toml b/Cargo.toml index 9c5a285d3..9e5918c20 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -95,9 +95,9 @@ maybe-rayon = { version = "0.1.0", default-features = false } rayon = "1.5" # Protobuf and gRPC -prost = "0.12" -tonic = { version = "0.11", default-features = false } -tonic-build = { version = "0.11", default-features = false } +prost = "0.13" +tonic = { version = "0.12", default-features = false } +tonic-build = { version = "0.12", default-features = false } # Secret management secrecy = "0.8" diff --git a/supply-chain/audits.toml b/supply-chain/audits.toml index 4f26742b3..8a3f7af68 100644 --- a/supply-chain/audits.toml +++ b/supply-chain/audits.toml @@ -90,6 +90,11 @@ who = "Daira-Emma Hopwood " criteria = "safe-to-deploy" delta = "0.3.21 -> 0.3.26" +[[audits.h2]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.3.26 -> 0.4.5" + [[audits.half]] who = "Daira-Emma Hopwood " criteria = "safe-to-run" @@ -105,6 +110,18 @@ criteria = "safe-to-deploy" delta = "0.14.2 -> 0.14.5" notes = "I did not thoroughly check the safety argument for fold_impl, but it at least seems to be well documented." +[[audits.http-body-util]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.1.0 -> 0.1.2" +notes = "New uses of pin_project! look fine." + +[[audits.hyper-timeout]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.4.1 -> 0.5.1" +notes = "New uses of pin_project! look fine." + [[audits.inferno]] who = "Daira-Emma Hopwood " criteria = "safe-to-run" @@ -299,6 +316,11 @@ who = "Daira-Emma Hopwood " criteria = "safe-to-deploy" delta = "2.0.60 -> 2.0.63" +[[audits.sync_wrapper]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.1.2 -> 1.0.1" + [[audits.thiserror]] who = "Daira-Emma Hopwood " criteria = "safe-to-deploy" @@ -329,6 +351,11 @@ who = "Daira-Emma Hopwood " criteria = "safe-to-deploy" delta = "0.10.2 -> 0.11.0" +[[audits.tonic-build]] +who = "Jack Grigg " +criteria = "safe-to-deploy" +delta = "0.11.0 -> 0.12.0" + [[audits.walkdir]] who = "Daira-Emma Hopwood " criteria = "safe-to-run" diff --git a/supply-chain/config.toml b/supply-chain/config.toml index d18824cc3..74279c6b3 100644 --- a/supply-chain/config.toml +++ b/supply-chain/config.toml @@ -104,18 +104,26 @@ criteria = "safe-to-deploy" version = "0.1.78" criteria = "safe-to-deploy" +[[exemptions.atomic-waker]] +version = "1.1.2" +criteria = "safe-to-deploy" + [[exemptions.axum]] -version = "0.6.20" +version = "0.7.5" criteria = "safe-to-deploy" [[exemptions.axum-core]] -version = "0.3.4" +version = "0.4.3" criteria = "safe-to-deploy" [[exemptions.backtrace]] version = "0.3.69" criteria = "safe-to-deploy" +[[exemptions.base64]] +version = "0.22.1" +criteria = "safe-to-deploy" + [[exemptions.bech32]] version = "0.9.1" criteria = "safe-to-deploy" @@ -126,7 +134,7 @@ criteria = "safe-to-deploy" [[exemptions.bitflags]] version = "1.3.2" -criteria = "safe-to-deploy" +criteria = "safe-to-run" [[exemptions.bitvec]] version = "1.0.1" @@ -317,11 +325,7 @@ version = "0.5.5" criteria = "safe-to-deploy" [[exemptions.http]] -version = "0.2.9" -criteria = "safe-to-deploy" - -[[exemptions.http-body]] -version = "0.4.5" +version = "1.1.0" criteria = "safe-to-deploy" [[exemptions.httparse]] @@ -329,13 +333,17 @@ version = "1.8.0" criteria = "safe-to-deploy" [[exemptions.hyper]] -version = "0.14.27" +version = "1.4.1" criteria = "safe-to-deploy" [[exemptions.hyper-timeout]] version = "0.4.1" criteria = "safe-to-deploy" +[[exemptions.hyper-util]] +version = "0.1.6" +criteria = "safe-to-deploy" + [[exemptions.indexmap]] version = "1.9.3" criteria = "safe-to-deploy" @@ -493,19 +501,19 @@ version = "1.3.1" criteria = "safe-to-deploy" [[exemptions.prost]] -version = "0.12.1" +version = "0.13.1" criteria = "safe-to-deploy" [[exemptions.prost-build]] -version = "0.12.1" +version = "0.13.1" criteria = "safe-to-deploy" [[exemptions.prost-derive]] -version = "0.12.1" +version = "0.13.1" criteria = "safe-to-deploy" [[exemptions.prost-types]] -version = "0.12.1" +version = "0.13.1" criteria = "safe-to-deploy" [[exemptions.quick-error]] @@ -660,8 +668,8 @@ criteria = "safe-to-deploy" version = "1.35.1" criteria = "safe-to-deploy" -[[exemptions.tokio-io-timeout]] -version = "1.2.0" +[[exemptions.tokio-macros]] +version = "2.2.0" criteria = "safe-to-deploy" [[exemptions.tokio-util]] @@ -669,7 +677,7 @@ version = "0.7.10" criteria = "safe-to-deploy" [[exemptions.tonic]] -version = "0.10.2" +version = "0.12.0" criteria = "safe-to-deploy" [[exemptions.tonic-build]] diff --git a/supply-chain/imports.lock b/supply-chain/imports.lock index d2473d8ae..e6a42ae23 100644 --- a/supply-chain/imports.lock +++ b/supply-chain/imports.lock @@ -382,11 +382,28 @@ criteria = "safe-to-deploy" version = "0.3.27" notes = "Unsafe used to implement a concurrency primitive AtomicWaker. Well-commented and not obviously incorrect. Like my other audits of these concurrency primitives inside the futures family, I couldn't certify that it is correct without formal methods, but that is out of scope for this vetting." -[[audits.bytecode-alliance.audits.http]] +[[audits.bytecode-alliance.audits.http-body]] +who = "Pat Hickey " +criteria = "safe-to-deploy" +version = "1.0.0-rc.2" + +[[audits.bytecode-alliance.audits.http-body]] who = "Alex Crichton " criteria = "safe-to-deploy" -delta = "0.2.9 -> 1.0.0" -notes = "Minor changes leading up to the 1.0.0 release and nothing fundamentally new here." +delta = "1.0.0-rc.2 -> 1.0.0" +notes = "Only minor changes made for a stable release." + +[[audits.bytecode-alliance.audits.http-body-util]] +who = "Pat Hickey " +criteria = "safe-to-deploy" +version = "0.1.0-rc.2" +notes = "only one use of unsafe related to pin projection. unclear to me why pin_project! is used in many modules of the project, but the expanded output of that macro is inlined in either.rs" + +[[audits.bytecode-alliance.audits.http-body-util]] +who = "Alex Crichton " +criteria = "safe-to-deploy" +delta = "0.1.0-rc.2 -> 0.1.0" +notes = "Minor documentation updates an additions, nothing major." [[audits.bytecode-alliance.audits.libm]] who = "Alex Crichton " @@ -1998,30 +2015,6 @@ criteria = "safe-to-deploy" delta = "0.3.3 -> 0.3.9" aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" -[[audits.zcash.audits.http]] -who = "Daira-Emma Hopwood " -criteria = "safe-to-deploy" -delta = "0.2.11 -> 0.2.12" -aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" - -[[audits.zcash.audits.http]] -who = "Jack Grigg " -criteria = "safe-to-deploy" -delta = "1.0.0 -> 0.2.11" -aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" - -[[audits.zcash.audits.http-body]] -who = "Jack Grigg " -criteria = "safe-to-deploy" -delta = "0.4.5 -> 0.4.6" -aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" - -[[audits.zcash.audits.hyper]] -who = "Jack Grigg " -criteria = "safe-to-deploy" -delta = "0.14.27 -> 0.14.28" -aggregated-from = "https://raw.githubusercontent.com/zcash/zcash/master/qa/supply-chain/audits.toml" - [[audits.zcash.audits.inout]] who = "Daira Hopwood " criteria = "safe-to-deploy" diff --git a/zcash_client_backend/CHANGELOG.md b/zcash_client_backend/CHANGELOG.md index b722f206f..8179c6ee4 100644 --- a/zcash_client_backend/CHANGELOG.md +++ b/zcash_client_backend/CHANGELOG.md @@ -21,6 +21,7 @@ and this library adheres to Rust's notion of ### Changed - MSRV is now 1.70.0. +- Migrated to `tonic 0.12`. - `zcash_client_backend::{fixed,standard,zip317}::SingleOutputChangeStrategy` now implement a different strategy for choosing whether there will be any change, and its value. This can avoid leaking information about note amounts diff --git a/zcash_client_backend/src/proto/compact_formats.rs b/zcash_client_backend/src/proto/compact_formats.rs index 44455378f..66dcb2ede 100644 --- a/zcash_client_backend/src/proto/compact_formats.rs +++ b/zcash_client_backend/src/proto/compact_formats.rs @@ -1,6 +1,7 @@ +// This file is @generated by prost-build. /// Information about the state of the chain as of a given block. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct ChainMetadata { /// the size of the Sapling note commitment tree as of the end of this block #[prost(uint32, tag = "1")] diff --git a/zcash_client_backend/src/proto/proposal.rs b/zcash_client_backend/src/proto/proposal.rs index a17b83bf8..a498b6eb1 100644 --- a/zcash_client_backend/src/proto/proposal.rs +++ b/zcash_client_backend/src/proto/proposal.rs @@ -1,3 +1,4 @@ +// This file is @generated by prost-build. /// A data structure that describes a series of transactions to be created. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -51,7 +52,7 @@ pub struct ProposalStep { /// for that payment, based upon the payment address and the selected inputs to /// the transaction. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct PaymentOutputPool { #[prost(uint32, tag = "1")] pub payment_index: u32, @@ -75,7 +76,7 @@ pub struct ReceivedOutput { /// A reference a payment in a prior step of the proposal. This payment must /// belong to the wallet. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct PriorStepOutput { #[prost(uint32, tag = "1")] pub step_index: u32, @@ -84,7 +85,7 @@ pub struct PriorStepOutput { } /// A reference a change output from a prior step of the proposal. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct PriorStepChange { #[prost(uint32, tag = "1")] pub step_index: u32, diff --git a/zcash_client_backend/src/proto/service.rs b/zcash_client_backend/src/proto/service.rs index ccfd3fed7..46314ad57 100644 --- a/zcash_client_backend/src/proto/service.rs +++ b/zcash_client_backend/src/proto/service.rs @@ -1,3 +1,4 @@ +// This file is @generated by prost-build. /// A BlockID message contains identifiers to select a block: a height or a /// hash. Specification by hash is not implemented, but may be in the future. #[allow(clippy::derive_partial_eq_without_eq)] @@ -60,11 +61,11 @@ pub struct SendResponse { } /// Chainspec is a placeholder to allow specification of a particular chain fork. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct ChainSpec {} /// Empty is for gRPCs that take no arguments, currently only GetLightdInfo. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct Empty {} /// LightdInfo returns various information about this lightwalletd instance /// and the state of the blockchain. @@ -124,7 +125,7 @@ pub struct TransparentAddressBlockFilter { /// can simulate a delay, to create many simultaneous connections. Units /// are microseconds. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct Duration { #[prost(int64, tag = "1")] pub interval_us: i64, @@ -133,7 +134,7 @@ pub struct Duration { /// are executing upon entry and upon exit (after the delay). /// This rpc is used for testing only. #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct PingResponse { #[prost(int64, tag = "1")] pub entry: i64, @@ -153,7 +154,7 @@ pub struct AddressList { pub addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct Balance { #[prost(int64, tag = "1")] pub value_zat: i64, @@ -188,7 +189,7 @@ pub struct TreeState { pub orchard_tree: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct GetSubtreeRootsArg { /// Index identifying where to start returning subtree roots #[prost(uint32, tag = "1")]