diff --git a/zebra-chain/src/block/arbitrary.rs b/zebra-chain/src/block/arbitrary.rs index 973ad110f5d..5a39afa2ee4 100644 --- a/zebra-chain/src/block/arbitrary.rs +++ b/zebra-chain/src/block/arbitrary.rs @@ -1,22 +1,13 @@ //! Randomised property testing for [`Block`]s. -use std::{collections::HashMap, sync::Arc}; - -use proptest::{ - arbitrary::{any, Arbitrary}, - prelude::*, -}; +use proptest::prelude::*; use crate::{ amount::NonNegative, block, fmt::{HexDebug, SummaryDebug}, history_tree::HistoryTree, - parameters::{ - Network, - NetworkUpgrade::{self, *}, - GENESIS_PREVIOUS_BLOCK_HASH, - }, + parameters::{NetworkUpgrade::*, GENESIS_PREVIOUS_BLOCK_HASH}, serialization, transaction::arbitrary::MAX_ARBITRARY_ITEMS, transparent::{ diff --git a/zebra-chain/src/block/tests/prop.rs b/zebra-chain/src/block/tests/prop.rs index 5f642e63db0..beeecb782a7 100644 --- a/zebra-chain/src/block/tests/prop.rs +++ b/zebra-chain/src/block/tests/prop.rs @@ -2,21 +2,19 @@ use std::{env, io::ErrorKind}; -use proptest::{arbitrary::any, prelude::*, test_runner::Config}; +use proptest::{prelude::*, test_runner::Config}; use hex::{FromHex, ToHex}; use zebra_test::prelude::*; use crate::{ - parameters::{Network, GENESIS_PREVIOUS_BLOCK_HASH}, + parameters::GENESIS_PREVIOUS_BLOCK_HASH, serialization::{SerializationError, ZcashDeserializeInto, ZcashSerialize}, - LedgerState, }; use super::super::{ arbitrary::{allow_all_transparent_coinbase_spends, PREVOUTS_CHAIN_HEIGHT}, - serialize::MAX_BLOCK_BYTES, *, }; diff --git a/zebra-chain/src/orchard/action.rs b/zebra-chain/src/orchard/action.rs index f08b0464cd1..ae7690def7a 100644 --- a/zebra-chain/src/orchard/action.rs +++ b/zebra-chain/src/orchard/action.rs @@ -1,4 +1,4 @@ -use std::{convert::TryFrom, io}; +use std::io; use halo2::pasta::pallas; use reddsa::orchard::SpendAuth; diff --git a/zebra-chain/src/orchard/arbitrary.rs b/zebra-chain/src/orchard/arbitrary.rs index c0f9615c251..7a6544606f8 100644 --- a/zebra-chain/src/orchard/arbitrary.rs +++ b/zebra-chain/src/orchard/arbitrary.rs @@ -7,7 +7,7 @@ use group::{ use halo2::pasta::pallas; use reddsa::{orchard::SpendAuth, Signature, SigningKey, VerificationKey, VerificationKeyBytes}; -use proptest::{arbitrary::any, array, collection::vec, prelude::*}; +use proptest::{array, collection::vec, prelude::*}; use super::{ keys::*, note, tree, Action, AuthorizedAction, Flags, NoteCommitment, ValueCommitment, diff --git a/zebra-chain/src/orchard/note/arbitrary.rs b/zebra-chain/src/orchard/note/arbitrary.rs index e6b38f12499..e9365de80c1 100644 --- a/zebra-chain/src/orchard/note/arbitrary.rs +++ b/zebra-chain/src/orchard/note/arbitrary.rs @@ -1,4 +1,4 @@ -use proptest::{arbitrary::any, collection::vec, prelude::*}; +use proptest::{collection::vec, prelude::*}; use super::*; diff --git a/zebra-chain/src/orchard/shielded_data.rs b/zebra-chain/src/orchard/shielded_data.rs index 3a034c05f0f..5347919cd01 100644 --- a/zebra-chain/src/orchard/shielded_data.rs +++ b/zebra-chain/src/orchard/shielded_data.rs @@ -8,7 +8,7 @@ use std::{ use byteorder::{ReadBytesExt, WriteBytesExt}; use halo2::pasta::pallas; -use reddsa::{self, orchard::Binding, orchard::SpendAuth, Signature}; +use reddsa::{orchard::Binding, orchard::SpendAuth, Signature}; use crate::{ amount::{Amount, NegativeAllowed}, diff --git a/zebra-chain/src/orchard/tree.rs b/zebra-chain/src/orchard/tree.rs index 1447b03a5bd..25cde25d962 100644 --- a/zebra-chain/src/orchard/tree.rs +++ b/zebra-chain/src/orchard/tree.rs @@ -19,7 +19,7 @@ use std::{ }; use bitvec::prelude::*; -use bridgetree::{self, NonEmptyFrontier}; +use bridgetree::NonEmptyFrontier; use halo2::pasta::{group::ff::PrimeField, pallas}; use hex::ToHex; use incrementalmerkletree::Hashable; diff --git a/zebra-chain/src/primitives/proofs/bctv14.rs b/zebra-chain/src/primitives/proofs/bctv14.rs index ac1f6d5f0c9..3e13b763f97 100644 --- a/zebra-chain/src/primitives/proofs/bctv14.rs +++ b/zebra-chain/src/primitives/proofs/bctv14.rs @@ -53,7 +53,7 @@ impl ZcashDeserialize for Bctv14Proof { } #[cfg(any(test, feature = "proptest-impl"))] -use proptest::{arbitrary::Arbitrary, collection::vec, prelude::*}; +use proptest::{collection::vec, prelude::*}; #[cfg(any(test, feature = "proptest-impl"))] impl Arbitrary for Bctv14Proof { diff --git a/zebra-chain/src/primitives/proofs/groth16.rs b/zebra-chain/src/primitives/proofs/groth16.rs index 43f661a38fe..13fd04c1545 100644 --- a/zebra-chain/src/primitives/proofs/groth16.rs +++ b/zebra-chain/src/primitives/proofs/groth16.rs @@ -65,7 +65,7 @@ impl ZcashDeserialize for Groth16Proof { } #[cfg(any(test, feature = "proptest-impl"))] -use proptest::{arbitrary::Arbitrary, collection::vec, prelude::*}; +use proptest::{collection::vec, prelude::*}; #[cfg(any(test, feature = "proptest-impl"))] impl Arbitrary for Groth16Proof { diff --git a/zebra-chain/src/primitives/proofs/halo2.rs b/zebra-chain/src/primitives/proofs/halo2.rs index eb62d1a94cf..1cccfa2d295 100644 --- a/zebra-chain/src/primitives/proofs/halo2.rs +++ b/zebra-chain/src/primitives/proofs/halo2.rs @@ -36,7 +36,7 @@ impl ZcashDeserialize for Halo2Proof { } } #[cfg(any(test, feature = "proptest-impl"))] -use proptest::{arbitrary::Arbitrary, prelude::*}; +use proptest::prelude::*; #[cfg(any(test, feature = "proptest-impl"))] impl Arbitrary for Halo2Proof { diff --git a/zebra-chain/src/primitives/zcash_history.rs b/zebra-chain/src/primitives/zcash_history.rs index 8642343da5f..e43b9478fb4 100644 --- a/zebra-chain/src/primitives/zcash_history.rs +++ b/zebra-chain/src/primitives/zcash_history.rs @@ -6,7 +6,7 @@ mod tests; -use std::{collections::BTreeMap, convert::TryInto, io, sync::Arc}; +use std::{collections::BTreeMap, io, sync::Arc}; use serde_big_array::BigArray; pub use zcash_history::{V1, V2}; diff --git a/zebra-chain/src/sapling/arbitrary.rs b/zebra-chain/src/sapling/arbitrary.rs index 403633a1b8e..7d102965799 100644 --- a/zebra-chain/src/sapling/arbitrary.rs +++ b/zebra-chain/src/sapling/arbitrary.rs @@ -5,7 +5,7 @@ use jubjub::{AffinePoint, ExtendedPoint}; use rand::SeedableRng; use rand_chacha::ChaChaRng; -use proptest::{arbitrary::any, collection::vec, prelude::*}; +use proptest::{collection::vec, prelude::*}; use crate::primitives::Groth16Proof; diff --git a/zebra-chain/src/sapling/commitment.rs b/zebra-chain/src/sapling/commitment.rs index 1ef23081550..5256d324bfa 100644 --- a/zebra-chain/src/sapling/commitment.rs +++ b/zebra-chain/src/sapling/commitment.rs @@ -1,9 +1,6 @@ //! Note and value commitments. -use std::{ - convert::{TryFrom, TryInto}, - fmt, io, -}; +use std::{fmt, io}; use bitvec::prelude::*; use jubjub::ExtendedPoint; diff --git a/zebra-chain/src/sapling/keys.rs b/zebra-chain/src/sapling/keys.rs index 2037e368a12..7b6e783b8c3 100644 --- a/zebra-chain/src/sapling/keys.rs +++ b/zebra-chain/src/sapling/keys.rs @@ -16,7 +16,7 @@ use rand_core::{CryptoRng, RngCore}; use crate::{ error::{AddressError, RandError}, - primitives::redjubjub::{self, SpendAuth}, + primitives::redjubjub::SpendAuth, serialization::{ serde_helpers, ReadZcashExt, SerializationError, ZcashDeserialize, ZcashSerialize, }, diff --git a/zebra-chain/src/sapling/note/arbitrary.rs b/zebra-chain/src/sapling/note/arbitrary.rs index e6b38f12499..e9365de80c1 100644 --- a/zebra-chain/src/sapling/note/arbitrary.rs +++ b/zebra-chain/src/sapling/note/arbitrary.rs @@ -1,4 +1,4 @@ -use proptest::{arbitrary::any, collection::vec, prelude::*}; +use proptest::{collection::vec, prelude::*}; use super::*; diff --git a/zebra-chain/src/sapling/spend.rs b/zebra-chain/src/sapling/spend.rs index 5b634e9aeb6..d7545f70ad1 100644 --- a/zebra-chain/src/sapling/spend.rs +++ b/zebra-chain/src/sapling/spend.rs @@ -3,14 +3,11 @@ //! Zebra uses a generic spend type for `V4` and `V5` transactions. //! The anchor change is handled using the `AnchorVariant` type trait. -use std::{convert::TryInto, fmt, io}; +use std::{fmt, io}; use crate::{ block::MAX_BLOCK_BYTES, - primitives::{ - redjubjub::{self, SpendAuth}, - Groth16Proof, - }, + primitives::{redjubjub::SpendAuth, Groth16Proof}, serialization::{ ReadZcashExt, SerializationError, TrustedPreallocate, WriteZcashExt, ZcashDeserialize, ZcashDeserializeInto, ZcashSerialize, diff --git a/zebra-chain/src/sapling/tests/prop.rs b/zebra-chain/src/sapling/tests/prop.rs index 108de8a7005..a65ef7dfd33 100644 --- a/zebra-chain/src/sapling/tests/prop.rs +++ b/zebra-chain/src/sapling/tests/prop.rs @@ -8,7 +8,6 @@ use crate::{ serialization::{ZcashDeserializeInto, ZcashSerialize}, transaction::{LockTime, Transaction}, }; -use std::convert::TryInto; proptest! { /// Serialize and deserialize `Spend` diff --git a/zebra-chain/src/sapling/tree.rs b/zebra-chain/src/sapling/tree.rs index 1d11620ba3b..7b137422b66 100644 --- a/zebra-chain/src/sapling/tree.rs +++ b/zebra-chain/src/sapling/tree.rs @@ -19,7 +19,7 @@ use std::{ }; use bitvec::prelude::*; -use bridgetree::{self, NonEmptyFrontier}; +use bridgetree::NonEmptyFrontier; use hex::ToHex; use incrementalmerkletree::{frontier::Frontier, Hashable}; diff --git a/zebra-chain/src/serialization/arbitrary.rs b/zebra-chain/src/serialization/arbitrary.rs index 15d4fe5a451..ab1b5abfba3 100644 --- a/zebra-chain/src/serialization/arbitrary.rs +++ b/zebra-chain/src/serialization/arbitrary.rs @@ -1,9 +1,7 @@ //! Arbitrary data generation for serialization proptests -use std::convert::TryInto; - use chrono::{DateTime, TimeZone, Utc}; -use proptest::{arbitrary::any, prelude::*}; +use proptest::prelude::*; use super::{ CompactSizeMessage, DateTime32, TrustedPreallocate, ZcashSerialize, MAX_PROTOCOL_MESSAGE_LEN, diff --git a/zebra-chain/src/serialization/compact_size.rs b/zebra-chain/src/serialization/compact_size.rs index 0cb073ef80d..b62f915ae49 100644 --- a/zebra-chain/src/serialization/compact_size.rs +++ b/zebra-chain/src/serialization/compact_size.rs @@ -5,8 +5,6 @@ //! - [`CompactSizeMessage`] for sizes that must be less than the network message limit, and //! - [`CompactSize64`] for flags, arbitrary counts, and sizes that span multiple blocks. -use std::convert::{TryFrom, TryInto}; - use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use crate::serialization::{ diff --git a/zebra-chain/src/serialization/constraint.rs b/zebra-chain/src/serialization/constraint.rs index 262d4e37f7e..a4ffc565991 100644 --- a/zebra-chain/src/serialization/constraint.rs +++ b/zebra-chain/src/serialization/constraint.rs @@ -1,9 +1,6 @@ //! Serialization constraint helpers. -use std::{ - convert::{TryFrom, TryInto}, - ops::Deref, -}; +use std::ops::Deref; use crate::serialization::SerializationError; diff --git a/zebra-chain/src/serialization/tests/preallocate.rs b/zebra-chain/src/serialization/tests/preallocate.rs index 592e4b81622..405fd13659f 100644 --- a/zebra-chain/src/serialization/tests/preallocate.rs +++ b/zebra-chain/src/serialization/tests/preallocate.rs @@ -2,7 +2,7 @@ use proptest::{collection::size_range, prelude::*}; -use std::{convert::TryInto, matches}; +use std::matches; use crate::serialization::{ arbitrary::max_allocation_is_big_enough, zcash_deserialize::MAX_U8_ALLOCATION, diff --git a/zebra-chain/src/sprout/arbitrary.rs b/zebra-chain/src/sprout/arbitrary.rs index a66a7d192a1..0cce350780d 100644 --- a/zebra-chain/src/sprout/arbitrary.rs +++ b/zebra-chain/src/sprout/arbitrary.rs @@ -1,4 +1,4 @@ -use proptest::{arbitrary::any, array, prelude::*}; +use proptest::{array, prelude::*}; use crate::{ amount::{Amount, NonNegative}, diff --git a/zebra-chain/src/sprout/note/arbitrary.rs b/zebra-chain/src/sprout/note/arbitrary.rs index ae7090f5321..7bddb2146ec 100644 --- a/zebra-chain/src/sprout/note/arbitrary.rs +++ b/zebra-chain/src/sprout/note/arbitrary.rs @@ -1,4 +1,4 @@ -use proptest::{arbitrary::any, collection::vec, prelude::*}; +use proptest::{collection::vec, prelude::*}; impl Arbitrary for super::EncryptedNote { type Parameters = (); diff --git a/zebra-chain/src/tests/vectors.rs b/zebra-chain/src/tests/vectors.rs index 0e60f6e99db..deb2a507707 100644 --- a/zebra-chain/src/tests/vectors.rs +++ b/zebra-chain/src/tests/vectors.rs @@ -30,7 +30,9 @@ impl Network { } } + /// Returns blocks indexed by height in a [`BTreeMap`]. /// + /// Returns Mainnet blocks if `self` is set to Mainnet, and Testnet blocks otherwise. pub fn block_map(&self) -> BTreeMap { if self.is_mainnet() { zebra_test::vectors::MAINNET_BLOCKS.clone() diff --git a/zebra-chain/src/transaction/arbitrary.rs b/zebra-chain/src/transaction/arbitrary.rs index f459af7f477..432b83b2b91 100644 --- a/zebra-chain/src/transaction/arbitrary.rs +++ b/zebra-chain/src/transaction/arbitrary.rs @@ -1,17 +1,9 @@ //! Arbitrary data generation for transaction proptests -use std::{ - cmp::max, - collections::HashMap, - convert::{TryFrom, TryInto}, - ops::Neg, - sync::Arc, -}; +use std::{cmp::max, collections::HashMap, ops::Neg, sync::Arc}; use chrono::{TimeZone, Utc}; -use proptest::{ - arbitrary::any, array, collection::vec, option, prelude::*, test_runner::TestRunner, -}; +use proptest::{array, collection::vec, option, prelude::*, test_runner::TestRunner}; use reddsa::{orchard::Binding, Signature}; use crate::{ diff --git a/zebra-chain/src/transaction/hash.rs b/zebra-chain/src/transaction/hash.rs index 5c644d0e7e6..a7fa60066d2 100644 --- a/zebra-chain/src/transaction/hash.rs +++ b/zebra-chain/src/transaction/hash.rs @@ -28,11 +28,7 @@ //! //! [1]: crate::transaction::UnminedTx -use std::{ - convert::{TryFrom, TryInto}, - fmt, - sync::Arc, -}; +use std::{fmt, sync::Arc}; #[cfg(any(test, feature = "proptest-impl"))] use proptest_derive::Arbitrary; diff --git a/zebra-chain/src/transaction/memo.rs b/zebra-chain/src/transaction/memo.rs index 15d1c8359ad..a4d3c07b6a1 100644 --- a/zebra-chain/src/transaction/memo.rs +++ b/zebra-chain/src/transaction/memo.rs @@ -1,4 +1,4 @@ -use std::{cmp, convert::TryFrom, fmt}; +use std::{cmp, fmt}; /// A 512-byte (plaintext) memo associated with a note, as described in /// [protocol specification ยง5.5][ps]. diff --git a/zebra-chain/src/transaction/serialize.rs b/zebra-chain/src/transaction/serialize.rs index dd8a8c2e4c0..044db7d5109 100644 --- a/zebra-chain/src/transaction/serialize.rs +++ b/zebra-chain/src/transaction/serialize.rs @@ -1,10 +1,10 @@ //! Contains impls of `ZcashSerialize`, `ZcashDeserialize` for all of the //! transaction types, so that all of the serialization logic is in one place. -use std::{borrow::Borrow, convert::TryInto, io, sync::Arc}; +use std::{borrow::Borrow, io, sync::Arc}; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; -use halo2::pasta::{group::ff::PrimeField, pallas}; +use halo2::pasta::group::ff::PrimeField; use hex::FromHex; use reddsa::{orchard::Binding, orchard::SpendAuth, Signature}; @@ -12,13 +12,12 @@ use crate::{ amount, block::MAX_BLOCK_BYTES, parameters::{OVERWINTER_VERSION_GROUP_ID, SAPLING_VERSION_GROUP_ID, TX_V5_VERSION_GROUP_ID}, - primitives::{Groth16Proof, Halo2Proof, ZkSnarkProof}, + primitives::{Halo2Proof, ZkSnarkProof}, serialization::{ zcash_deserialize_external_count, zcash_serialize_empty_list, zcash_serialize_external_count, AtLeastOne, ReadZcashExt, SerializationError, TrustedPreallocate, ZcashDeserialize, ZcashDeserializeInto, ZcashSerialize, }, - sprout, }; use super::*; diff --git a/zebra-chain/src/transaction/tests/vectors.rs b/zebra-chain/src/transaction/tests/vectors.rs index aa95a9c55c9..7115d7f3679 100644 --- a/zebra-chain/src/transaction/tests/vectors.rs +++ b/zebra-chain/src/transaction/tests/vectors.rs @@ -5,11 +5,10 @@ use color_eyre::eyre::Result; use lazy_static::lazy_static; use crate::{ - amount::Amount, block::{Block, Height, MAX_BLOCK_BYTES}, - parameters::{Network, NetworkUpgrade}, + parameters::Network, serialization::{SerializationError, ZcashDeserialize, ZcashDeserializeInto, ZcashSerialize}, - transaction::{hash::WtxId, sighash::SigHasher, txid::TxIdBuilder, Transaction}, + transaction::{sighash::SigHasher, txid::TxIdBuilder}, transparent::Script, }; diff --git a/zebra-chain/src/transaction/txid.rs b/zebra-chain/src/transaction/txid.rs index f8b71aec74e..f67f6dee58d 100644 --- a/zebra-chain/src/transaction/txid.rs +++ b/zebra-chain/src/transaction/txid.rs @@ -1,6 +1,6 @@ //! Transaction ID computation. Contains code for generating the Transaction ID //! from the transaction. -use std::{convert::TryInto, io}; +use std::io; use super::{Hash, Transaction}; use crate::serialization::{sha256d, ZcashSerialize}; diff --git a/zebra-chain/src/transparent/address.rs b/zebra-chain/src/transparent/address.rs index 47404128931..1b933af2ef0 100644 --- a/zebra-chain/src/transparent/address.rs +++ b/zebra-chain/src/transparent/address.rs @@ -2,10 +2,6 @@ use std::{fmt, io}; -use ripemd::{Digest, Ripemd160}; -use secp256k1::PublicKey; -use sha2::Sha256; - use crate::{ parameters::NetworkKind, serialization::{SerializationError, ZcashDeserialize, ZcashSerialize}, @@ -154,29 +150,6 @@ impl ZcashDeserialize for Address { } } -trait ToAddressWithNetwork { - /// Convert `self` to an `Address`, given the current `network`. - fn to_address(&self, network: NetworkKind) -> Address; -} - -impl ToAddressWithNetwork for Script { - fn to_address(&self, network_kind: NetworkKind) -> Address { - Address::PayToScriptHash { - network_kind, - script_hash: Address::hash_payload(self.as_raw_bytes()), - } - } -} - -impl ToAddressWithNetwork for PublicKey { - fn to_address(&self, network_kind: NetworkKind) -> Address { - Address::PayToPublicKeyHash { - network_kind, - pub_key_hash: Address::hash_payload(&self.serialize()[..]), - } - } -} - impl Address { /// Create an address for the given public key hash and network. pub fn from_pub_key_hash(network_kind: NetworkKind, pub_key_hash: [u8; 20]) -> Self { @@ -219,21 +192,6 @@ impl Address { } } - /// A hash of a transparent address payload, as used in - /// transparent pay-to-script-hash and pay-to-publickey-hash - /// addresses. - /// - /// The resulting hash in both of these cases is always exactly 20 - /// bytes. - /// - fn hash_payload(bytes: &[u8]) -> [u8; 20] { - let sha_hash = Sha256::digest(bytes); - let ripe_hash = Ripemd160::digest(sha_hash); - let mut payload = [0u8; 20]; - payload[..].copy_from_slice(&ripe_hash[..]); - payload - } - /// Given a transparent address (P2SH or a P2PKH), create a script that can be used in a coinbase /// transaction output. pub fn create_script_from_address(&self) -> Script { @@ -264,11 +222,53 @@ impl Address { #[cfg(test)] mod tests { - + use ripemd::{Digest, Ripemd160}; use secp256k1::PublicKey; + use sha2::Sha256; use super::*; + trait ToAddressWithNetwork { + /// Convert `self` to an `Address`, given the current `network`. + fn to_address(&self, network: NetworkKind) -> Address; + } + + impl ToAddressWithNetwork for Script { + fn to_address(&self, network_kind: NetworkKind) -> Address { + Address::PayToScriptHash { + network_kind, + script_hash: Address::hash_payload(self.as_raw_bytes()), + } + } + } + + impl ToAddressWithNetwork for PublicKey { + fn to_address(&self, network_kind: NetworkKind) -> Address { + Address::PayToPublicKeyHash { + network_kind, + pub_key_hash: Address::hash_payload(&self.serialize()[..]), + } + } + } + + impl Address { + /// A hash of a transparent address payload, as used in + /// transparent pay-to-script-hash and pay-to-publickey-hash + /// addresses. + /// + /// The resulting hash in both of these cases is always exactly 20 + /// bytes. + /// + #[allow(dead_code)] + fn hash_payload(bytes: &[u8]) -> [u8; 20] { + let sha_hash = Sha256::digest(bytes); + let ripe_hash = Ripemd160::digest(sha_hash); + let mut payload = [0u8; 20]; + payload[..].copy_from_slice(&ripe_hash[..]); + payload + } + } + #[test] fn pubkey_mainnet() { let _init_guard = zebra_test::init(); diff --git a/zebra-chain/src/transparent/arbitrary.rs b/zebra-chain/src/transparent/arbitrary.rs index d275b8e9db7..c9e9bdb1dd1 100644 --- a/zebra-chain/src/transparent/arbitrary.rs +++ b/zebra-chain/src/transparent/arbitrary.rs @@ -1,4 +1,4 @@ -use proptest::{arbitrary::any, collection::vec, prelude::*}; +use proptest::{collection::vec, prelude::*}; use crate::{block, parameters::NetworkKind, LedgerState}; diff --git a/zebra-chain/src/transparent/script.rs b/zebra-chain/src/transparent/script.rs index ebc442450ae..e3c49b9e1a7 100644 --- a/zebra-chain/src/transparent/script.rs +++ b/zebra-chain/src/transparent/script.rs @@ -95,7 +95,6 @@ mod proptests { use proptest::prelude::*; use super::*; - use crate::serialization::{ZcashDeserialize, ZcashSerialize}; proptest! { #[test] diff --git a/zebra-chain/src/transparent/utxo.rs b/zebra-chain/src/transparent/utxo.rs index db626148ee4..0158165193a 100644 --- a/zebra-chain/src/transparent/utxo.rs +++ b/zebra-chain/src/transparent/utxo.rs @@ -1,6 +1,6 @@ //! Unspent transparent output data structures and functions. -use std::{collections::HashMap, convert::TryInto}; +use std::collections::HashMap; use crate::{ block::{self, Block, Height}, diff --git a/zebra-chain/src/value_balance.rs b/zebra-chain/src/value_balance.rs index 43f7b11b469..dc56f70b816 100644 --- a/zebra-chain/src/value_balance.rs +++ b/zebra-chain/src/value_balance.rs @@ -6,7 +6,7 @@ use crate::{ transparent, }; -use std::{borrow::Borrow, collections::HashMap, convert::TryInto}; +use std::{borrow::Borrow, collections::HashMap}; #[cfg(any(test, feature = "proptest-impl"))] use crate::{amount::MAX_MONEY, transaction::Transaction}; diff --git a/zebra-chain/src/work/arbitrary.rs b/zebra-chain/src/work/arbitrary.rs index a1a03468def..eac18f63a0e 100644 --- a/zebra-chain/src/work/arbitrary.rs +++ b/zebra-chain/src/work/arbitrary.rs @@ -1,6 +1,6 @@ use super::*; -use proptest::{arbitrary::Arbitrary, collection::vec, prelude::*}; +use proptest::{collection::vec, prelude::*}; impl Arbitrary for equihash::Solution { type Parameters = (); diff --git a/zebra-chain/src/work/difficulty/arbitrary.rs b/zebra-chain/src/work/difficulty/arbitrary.rs index 1e6c93032aa..96d1f905358 100644 --- a/zebra-chain/src/work/difficulty/arbitrary.rs +++ b/zebra-chain/src/work/difficulty/arbitrary.rs @@ -1,8 +1,6 @@ use super::*; -use crate::block; - -use proptest::{arbitrary::Arbitrary, collection::vec, prelude::*}; +use proptest::{collection::vec, prelude::*}; impl Arbitrary for CompactDifficulty { type Parameters = (); diff --git a/zebra-chain/src/work/difficulty/tests/prop.rs b/zebra-chain/src/work/difficulty/tests/prop.rs index a33fb594087..9be589f7b72 100644 --- a/zebra-chain/src/work/difficulty/tests/prop.rs +++ b/zebra-chain/src/work/difficulty/tests/prop.rs @@ -1,8 +1,4 @@ -use proptest::{arbitrary::any, prelude::*}; - -use std::cmp::Ordering; - -use crate::block; +use proptest::prelude::*; use super::super::*; diff --git a/zebra-chain/src/work/tests/prop.rs b/zebra-chain/src/work/tests/prop.rs index f5bdf010950..c11f1eb2342 100644 --- a/zebra-chain/src/work/tests/prop.rs +++ b/zebra-chain/src/work/tests/prop.rs @@ -2,7 +2,7 @@ use std::{env, sync::Arc}; -use proptest::{arbitrary::any, prelude::*, test_runner::Config}; +use proptest::{prelude::*, test_runner::Config}; use crate::{ block::{self, Block}, diff --git a/zebra-chain/src/work/tests/vectors.rs b/zebra-chain/src/work/tests/vectors.rs index ab1f5195596..06a752de018 100644 --- a/zebra-chain/src/work/tests/vectors.rs +++ b/zebra-chain/src/work/tests/vectors.rs @@ -1,5 +1,3 @@ -use std::convert::TryInto; - use crate::{ block::{Block, MAX_BLOCK_BYTES}, serialization::{CompactSizeMessage, ZcashDeserialize, ZcashDeserializeInto, ZcashSerialize}, diff --git a/zebra-consensus/src/block/subsidy/general.rs b/zebra-consensus/src/block/subsidy/general.rs index d9fbe0a89f7..5397a0ec735 100644 --- a/zebra-consensus/src/block/subsidy/general.rs +++ b/zebra-consensus/src/block/subsidy/general.rs @@ -2,7 +2,7 @@ //! //! [7.8]: https://zips.z.cash/protocol/protocol.pdf#subsidies -use std::{collections::HashSet, convert::TryFrom}; +use std::collections::HashSet; use zebra_chain::{ amount::{Amount, Error, NonNegative}, diff --git a/zebra-consensus/src/block/tests.rs b/zebra-consensus/src/block/tests.rs index 6dec96df5a6..52c24a1f3e7 100644 --- a/zebra-consensus/src/block/tests.rs +++ b/zebra-consensus/src/block/tests.rs @@ -1,22 +1,18 @@ //! Tests for block verification -use std::sync::Arc; - -use chrono::Utc; use color_eyre::eyre::{eyre, Report}; use once_cell::sync::Lazy; use tower::{buffer::Buffer, util::BoxService}; use zebra_chain::{ - amount::{Amount, MAX_MONEY}, + amount::MAX_MONEY, block::{ - self, tests::generate::{ large_multi_transaction_block, large_single_transaction_block_many_inputs, }, Block, Height, }, - parameters::{Network, NetworkUpgrade}, + parameters::NetworkUpgrade, serialization::{ZcashDeserialize, ZcashDeserializeInto}, transaction::{arbitrary::transaction_to_fake_v5, LockTime, Transaction}, work::difficulty::{ParameterDifficulty as _, INVALID_COMPACT_DIFFICULTY}, diff --git a/zebra-consensus/src/checkpoint/list/tests.rs b/zebra-consensus/src/checkpoint/list/tests.rs index 037dd027e8e..09288dfc051 100644 --- a/zebra-consensus/src/checkpoint/list/tests.rs +++ b/zebra-consensus/src/checkpoint/list/tests.rs @@ -5,8 +5,8 @@ use std::sync::Arc; use num_integer::div_ceil; use zebra_chain::{ - block::{self, Block, HeightDiff, MAX_BLOCK_BYTES}, - parameters::{Network, Network::*}, + block::{Block, HeightDiff, MAX_BLOCK_BYTES}, + parameters::Network::*, serialization::ZcashDeserialize, }; use zebra_node_services::constants::{MAX_CHECKPOINT_BYTE_COUNT, MAX_CHECKPOINT_HEIGHT_GAP}; diff --git a/zebra-consensus/src/checkpoint/tests.rs b/zebra-consensus/src/checkpoint/tests.rs index b60540d278a..e13629c4964 100644 --- a/zebra-consensus/src/checkpoint/tests.rs +++ b/zebra-consensus/src/checkpoint/tests.rs @@ -1,14 +1,10 @@ //! Tests for checkpoint-based block verification -use std::{cmp::min, mem::drop, time::Duration}; +use std::{cmp::min, time::Duration}; use color_eyre::eyre::{eyre, Report}; -use futures::{ - future::TryFutureExt, - stream::{FuturesUnordered, StreamExt}, -}; +use futures::stream::{FuturesUnordered, StreamExt}; use tokio::time::timeout; -use tower::{Service, ServiceExt}; use tracing_futures::Instrument; use zebra_chain::{parameters::Network::*, serialization::ZcashDeserialize}; diff --git a/zebra-consensus/src/primitives/ed25519.rs b/zebra-consensus/src/primitives/ed25519.rs index d51113276dd..10926db67eb 100644 --- a/zebra-consensus/src/primitives/ed25519.rs +++ b/zebra-consensus/src/primitives/ed25519.rs @@ -15,7 +15,7 @@ use tokio::sync::watch; use tower::{util::ServiceFn, Service}; use tower_batch_control::{Batch, BatchControl}; use tower_fallback::Fallback; -use zebra_chain::primitives::ed25519::{batch, *}; +use zebra_chain::primitives::ed25519::*; use crate::BoxError; diff --git a/zebra-consensus/src/primitives/ed25519/tests.rs b/zebra-consensus/src/primitives/ed25519/tests.rs index cc75e71fa36..58d7e8286f9 100644 --- a/zebra-consensus/src/primitives/ed25519/tests.rs +++ b/zebra-consensus/src/primitives/ed25519/tests.rs @@ -5,7 +5,6 @@ use std::time::Duration; use color_eyre::eyre::{eyre, Report, Result}; use futures::stream::{FuturesOrdered, StreamExt}; use tower::ServiceExt; -use tower_batch_control::Batch; use crate::primitives::ed25519::*; diff --git a/zebra-consensus/src/primitives/groth16/vectors.rs b/zebra-consensus/src/primitives/groth16/vectors.rs index e46e5b268b0..57c61c1adeb 100644 --- a/zebra-consensus/src/primitives/groth16/vectors.rs +++ b/zebra-consensus/src/primitives/groth16/vectors.rs @@ -1,5 +1,3 @@ -use std::convert::TryFrom; - use crate::groth16::h_sig; #[test] diff --git a/zebra-consensus/src/primitives/redjubjub.rs b/zebra-consensus/src/primitives/redjubjub.rs index 31641a9f722..3958647b57c 100644 --- a/zebra-consensus/src/primitives/redjubjub.rs +++ b/zebra-consensus/src/primitives/redjubjub.rs @@ -16,7 +16,7 @@ use tower::{util::ServiceFn, Service}; use tower_batch_control::{Batch, BatchControl}; use tower_fallback::Fallback; -use zebra_chain::primitives::redjubjub::{batch, *}; +use zebra_chain::primitives::redjubjub::*; use crate::BoxError; diff --git a/zebra-consensus/src/primitives/redjubjub/tests.rs b/zebra-consensus/src/primitives/redjubjub/tests.rs index eb32a1db898..97d2904313e 100644 --- a/zebra-consensus/src/primitives/redjubjub/tests.rs +++ b/zebra-consensus/src/primitives/redjubjub/tests.rs @@ -7,7 +7,6 @@ use std::time::Duration; use color_eyre::eyre::{eyre, Result}; use futures::stream::{FuturesUnordered, StreamExt}; use tower::ServiceExt; -use tower_batch_control::Batch; async fn sign_and_verify(mut verifier: V, n: usize) -> Result<(), V::Error> where diff --git a/zebra-consensus/src/primitives/redpallas/tests.rs b/zebra-consensus/src/primitives/redpallas/tests.rs index 6ae0717d627..a8e03d47553 100644 --- a/zebra-consensus/src/primitives/redpallas/tests.rs +++ b/zebra-consensus/src/primitives/redpallas/tests.rs @@ -7,7 +7,6 @@ use std::time::Duration; use color_eyre::eyre::{eyre, Result}; use futures::stream::{FuturesUnordered, StreamExt}; use tower::ServiceExt; -use tower_batch_control::Batch; use zebra_chain::primitives::reddsa::{ orchard::{Binding, SpendAuth}, diff --git a/zebra-consensus/src/router/tests.rs b/zebra-consensus/src/router/tests.rs index 6fe88361fd5..8fe304e3364 100644 --- a/zebra-consensus/src/router/tests.rs +++ b/zebra-consensus/src/router/tests.rs @@ -4,18 +4,15 @@ use std::{sync::Arc, time::Duration}; use color_eyre::eyre::Report; use once_cell::sync::Lazy; -use tower::{layer::Layer, timeout::TimeoutLayer, Service}; +use tower::{layer::Layer, timeout::TimeoutLayer}; use zebra_chain::{ - block::{self, Block}, - parameters::Network, + block::Block, serialization::{ZcashDeserialize, ZcashDeserializeInto}, }; use zebra_state as zs; use zebra_test::transcript::{ExpectedTranscriptError, Transcript}; -use crate::Config; - use super::*; /// The timeout we apply to each verify future during testing. diff --git a/zebra-consensus/src/transaction.rs b/zebra-consensus/src/transaction.rs index 076f47ce799..4dc1f1e1c1f 100644 --- a/zebra-consensus/src/transaction.rs +++ b/zebra-consensus/src/transaction.rs @@ -3,7 +3,6 @@ use std::{ collections::HashMap, future::Future, - iter::FromIterator, pin::Pin, sync::Arc, task::{Context, Poll}, diff --git a/zebra-network/src/address_book.rs b/zebra-network/src/address_book.rs index f19cdcbc819..9ecf5aa24b0 100644 --- a/zebra-network/src/address_book.rs +++ b/zebra-network/src/address_book.rs @@ -4,7 +4,6 @@ use std::{ cmp::Reverse, collections::HashMap, - iter::Extend, net::{IpAddr, SocketAddr}, sync::{Arc, Mutex}, time::Instant, diff --git a/zebra-network/src/config.rs b/zebra-network/src/config.rs index 2ee59c883a1..9e75a2967ab 100644 --- a/zebra-network/src/config.rs +++ b/zebra-network/src/config.rs @@ -5,7 +5,6 @@ use std::{ ffi::OsString, io::{self, ErrorKind}, net::{IpAddr, SocketAddr}, - string::String, time::Duration, }; diff --git a/zebra-network/src/meta_addr.rs b/zebra-network/src/meta_addr.rs index 8c0336f4a5a..1171ceee2cf 100644 --- a/zebra-network/src/meta_addr.rs +++ b/zebra-network/src/meta_addr.rs @@ -1,7 +1,7 @@ //! An address-with-metadata type used in Bitcoin networking. use std::{ - cmp::{max, Ord, Ordering}, + cmp::{max, Ordering}, time::Instant, }; diff --git a/zebra-network/src/meta_addr/arbitrary.rs b/zebra-network/src/meta_addr/arbitrary.rs index 3f314f36770..27afb799224 100644 --- a/zebra-network/src/meta_addr/arbitrary.rs +++ b/zebra-network/src/meta_addr/arbitrary.rs @@ -2,7 +2,7 @@ use std::net::IpAddr; -use proptest::{arbitrary::any, collection::vec, prelude::*}; +use proptest::{collection::vec, prelude::*}; use zebra_chain::{parameters::Network::*, serialization::DateTime32}; diff --git a/zebra-network/src/peer/connection.rs b/zebra-network/src/peer/connection.rs index f5ea2d0a4df..2d99610206e 100644 --- a/zebra-network/src/peer/connection.rs +++ b/zebra-network/src/peer/connection.rs @@ -9,11 +9,7 @@ use std::{borrow::Cow, collections::HashSet, fmt, pin::Pin, sync::Arc, time::Instant}; -use futures::{ - future::{self, Either}, - prelude::*, - stream::Stream, -}; +use futures::{future::Either, prelude::*}; use rand::{seq::SliceRandom, thread_rng, Rng}; use tokio::time::{sleep, Sleep}; use tower::{Service, ServiceExt}; diff --git a/zebra-network/src/peer/connector.rs b/zebra-network/src/peer/connector.rs index 67947f9e448..e167d97b903 100644 --- a/zebra-network/src/peer/connector.rs +++ b/zebra-network/src/peer/connector.rs @@ -1,7 +1,6 @@ //! Wrapper around handshake logic that also opens a TCP connection. use std::{ - future::Future, pin::Pin, task::{Context, Poll}, }; diff --git a/zebra-network/src/peer_set/set.rs b/zebra-network/src/peer_set/set.rs index 722e09b6ec1..1cac476ff53 100644 --- a/zebra-network/src/peer_set/set.rs +++ b/zebra-network/src/peer_set/set.rs @@ -106,7 +106,7 @@ use std::{ use futures::{ channel::{mpsc, oneshot}, - future::{Future, FutureExt, TryFutureExt}, + future::{FutureExt, TryFutureExt}, prelude::*, stream::FuturesUnordered, task::noop_waker, diff --git a/zebra-network/src/protocol/external/arbitrary.rs b/zebra-network/src/protocol/external/arbitrary.rs index a8706aa4bbe..373c527ef57 100644 --- a/zebra-network/src/protocol/external/arbitrary.rs +++ b/zebra-network/src/protocol/external/arbitrary.rs @@ -2,7 +2,7 @@ use std::net::SocketAddr; -use proptest::{arbitrary::any, arbitrary::Arbitrary, collection::vec, prelude::*}; +use proptest::{collection::vec, prelude::*}; use zebra_chain::{block, transaction}; diff --git a/zebra-network/src/protocol/external/tests/prop.rs b/zebra-network/src/protocol/external/tests/prop.rs index 1ab9a6e6718..b852087331a 100644 --- a/zebra-network/src/protocol/external/tests/prop.rs +++ b/zebra-network/src/protocol/external/tests/prop.rs @@ -1,7 +1,5 @@ //! Randomised property tests for Zebra's Zcash network protocol types. -use std::convert::TryInto; - use bytes::BytesMut; use proptest::{collection::vec, prelude::*}; use tokio_util::codec::{Decoder, Encoder}; diff --git a/zebra-network/src/protocol/external/tests/vectors.rs b/zebra-network/src/protocol/external/tests/vectors.rs index 4f8e275e0d7..58d9c0b1dd0 100644 --- a/zebra-network/src/protocol/external/tests/vectors.rs +++ b/zebra-network/src/protocol/external/tests/vectors.rs @@ -1,6 +1,6 @@ //! Fixed test vectors for external protocol messages. -use std::{convert::TryInto, io::Write}; +use std::io::Write; use byteorder::{LittleEndian, WriteBytesExt}; diff --git a/zebra-rpc/src/methods.rs b/zebra-rpc/src/methods.rs index 8fd68272512..d1dd056491c 100644 --- a/zebra-rpc/src/methods.rs +++ b/zebra-rpc/src/methods.rs @@ -6,7 +6,7 @@ //! Some parts of the `zcashd` RPC documentation are outdated. //! So this implementation follows the `zcashd` server and `lightwalletd` client implementations. -use std::{collections::HashSet, default::Default, fmt::Debug, sync::Arc}; +use std::{collections::HashSet, fmt::Debug, sync::Arc}; use chrono::Utc; use futures::{stream::FuturesOrdered, FutureExt, StreamExt, TryFutureExt}; diff --git a/zebra-rpc/src/methods/get_block_template_rpcs.rs b/zebra-rpc/src/methods/get_block_template_rpcs.rs index de47bba3b84..f35aa9082da 100644 --- a/zebra-rpc/src/methods/get_block_template_rpcs.rs +++ b/zebra-rpc/src/methods/get_block_template_rpcs.rs @@ -7,7 +7,7 @@ use jsonrpc_core::{self, BoxFuture, Error, ErrorCode, Result}; use jsonrpc_derive::rpc; use tower::{Service, ServiceExt}; -use zcash_address::{self, unified::Encoding, TryFromAddress}; +use zcash_address::{unified::Encoding, TryFromAddress}; use zebra_chain::{ amount::Amount, diff --git a/zebra-rpc/src/methods/get_block_template_rpcs/types/long_poll.rs b/zebra-rpc/src/methods/get_block_template_rpcs/types/long_poll.rs index 9f9a316166a..8817a8c12c0 100644 --- a/zebra-rpc/src/methods/get_block_template_rpcs/types/long_poll.rs +++ b/zebra-rpc/src/methods/get_block_template_rpcs/types/long_poll.rs @@ -227,9 +227,8 @@ fn update_checksum(checksum: &mut u32, item: [u8; 32]) { } } -impl ToString for LongPollId { - /// Exact conversion from LongPollId to a string. - fn to_string(&self) -> String { +impl std::fmt::Display for LongPollId { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { let LongPollId { tip_height, tip_hash_checksum, @@ -240,7 +239,8 @@ impl ToString for LongPollId { // We can't do this using `serde`, because it names each field, // but we want a single string containing all the fields. - format!( + write!( + f, // Height as decimal, padded with zeroes to the width of Height::MAX // Checksums as hex, padded with zeroes to the width of u32::MAX // Timestamp as decimal, padded with zeroes to the width of u32::MAX diff --git a/zebra-rpc/src/methods/tests/snapshot.rs b/zebra-rpc/src/methods/tests/snapshot.rs index 3dae95074e2..b978805324d 100644 --- a/zebra-rpc/src/methods/tests/snapshot.rs +++ b/zebra-rpc/src/methods/tests/snapshot.rs @@ -5,7 +5,7 @@ //! cargo insta test --review -p zebra-rpc --lib -- test_rpc_response_data //! ``` -use std::{collections::BTreeMap, sync::Arc}; +use std::collections::BTreeMap; use insta::dynamic_redaction; use tower::buffer::Buffer; diff --git a/zebra-rpc/src/methods/tests/vectors.rs b/zebra-rpc/src/methods/tests/vectors.rs index 118c2ee3007..fe80a8dd236 100644 --- a/zebra-rpc/src/methods/tests/vectors.rs +++ b/zebra-rpc/src/methods/tests/vectors.rs @@ -1,8 +1,7 @@ //! Fixed test vectors for RPC methods. -use std::{ops::RangeInclusive, sync::Arc}; +use std::ops::RangeInclusive; -use jsonrpc_core::ErrorCode; use tower::buffer::Buffer; use zebra_chain::{ @@ -11,8 +10,7 @@ use zebra_chain::{ chain_tip::{mock::MockChainTip, NoChainTip}, parameters::Network::*, serialization::{ZcashDeserializeInto, ZcashSerialize}, - transaction::{UnminedTx, UnminedTxId}, - transparent, + transaction::UnminedTxId, }; use zebra_node_services::BoxError; diff --git a/zebra-rpc/src/server.rs b/zebra-rpc/src/server.rs index c16ddd2a732..f440d713211 100644 --- a/zebra-rpc/src/server.rs +++ b/zebra-rpc/src/server.rs @@ -13,7 +13,7 @@ use jsonrpc_core::{Compatibility, MetaIoHandler}; use jsonrpc_http_server::{CloseHandle, ServerBuilder}; use tokio::task::JoinHandle; use tower::Service; -use tracing::{Instrument, *}; +use tracing::*; use zebra_chain::{ block, chain_sync_status::ChainSyncStatus, chain_tip::ChainTip, parameters::Network, diff --git a/zebra-script/src/lib.rs b/zebra-script/src/lib.rs index 43ea2fa7328..f34de687475 100644 --- a/zebra-script/src/lib.rs +++ b/zebra-script/src/lib.rs @@ -277,7 +277,6 @@ impl Drop for CachedFfiTransaction { #[cfg(test)] mod tests { use hex::FromHex; - use std::convert::TryInto; use std::sync::Arc; use zebra_chain::{ parameters::{ConsensusBranchId, NetworkUpgrade::*}, diff --git a/zebra-state/src/service/check/difficulty.rs b/zebra-state/src/service/check/difficulty.rs index ab583735609..8c48e25fba1 100644 --- a/zebra-state/src/service/check/difficulty.rs +++ b/zebra-state/src/service/check/difficulty.rs @@ -5,7 +5,7 @@ //! * the Testnet minimum difficulty adjustment from ZIPs 205 and 208, and //! * `median-time-past`. -use std::{cmp::max, cmp::min, convert::TryInto}; +use std::{cmp::max, cmp::min}; use chrono::{DateTime, Duration, Utc}; diff --git a/zebra-state/src/service/check/tests/nullifier.rs b/zebra-state/src/service/check/tests/nullifier.rs index 1a944d017ee..0392f1c8e79 100644 --- a/zebra-state/src/service/check/tests/nullifier.rs +++ b/zebra-state/src/service/check/tests/nullifier.rs @@ -1,6 +1,6 @@ //! Randomised property tests for nullifier contextual validation -use std::{convert::TryInto, env, sync::Arc}; +use std::{env, sync::Arc}; use itertools::Itertools; use proptest::prelude::*; diff --git a/zebra-state/src/service/check/tests/vectors.rs b/zebra-state/src/service/check/tests/vectors.rs index a93081e0309..5cab1aa018b 100644 --- a/zebra-state/src/service/check/tests/vectors.rs +++ b/zebra-state/src/service/check/tests/vectors.rs @@ -1,7 +1,5 @@ //! Fixed test vectors for state contextual validation checks. -use std::sync::Arc; - use zebra_chain::serialization::ZcashDeserializeInto; use super::super::*; diff --git a/zebra-state/src/service/finalized_state/disk_format/scan/tests/prop.rs b/zebra-state/src/service/finalized_state/disk_format/scan/tests/prop.rs index c770daecbd1..e4ceb59f669 100644 --- a/zebra-state/src/service/finalized_state/disk_format/scan/tests/prop.rs +++ b/zebra-state/src/service/finalized_state/disk_format/scan/tests/prop.rs @@ -1,6 +1,6 @@ //! Randomised proptests for scanner database formats. -use proptest::{arbitrary::any, prelude::*}; +use proptest::prelude::*; use crate::{ service::finalized_state::arbitrary::assert_value_properties, SaplingScannedDatabaseIndex, diff --git a/zebra-state/src/service/finalized_state/disk_format/tests/prop.rs b/zebra-state/src/service/finalized_state/disk_format/tests/prop.rs index 5067bcfe7a6..3ef15c6257f 100644 --- a/zebra-state/src/service/finalized_state/disk_format/tests/prop.rs +++ b/zebra-state/src/service/finalized_state/disk_format/tests/prop.rs @@ -1,6 +1,6 @@ //! Randomised tests for the finalized disk format. -use proptest::{arbitrary::any, prelude::*}; +use proptest::prelude::*; use zebra_chain::{ amount::{Amount, NonNegative}, diff --git a/zebra-state/src/service/non_finalized_state/chain.rs b/zebra-state/src/service/non_finalized_state/chain.rs index 07d28707427..45bbb02684a 100644 --- a/zebra-state/src/service/non_finalized_state/chain.rs +++ b/zebra-state/src/service/non_finalized_state/chain.rs @@ -636,13 +636,11 @@ impl Chain { .next() .expect("Zebra should never reach the max height in normal operation."); - if self.sprout_trees_by_height.get(&next_height).is_none() { - // TODO: Use `try_insert` once it stabilises. - self.sprout_trees_by_height.insert( - next_height, - highest_removed_tree.expect("There should be a cached removed tree."), - ); - } + self.sprout_trees_by_height + .entry(next_height) + .or_insert_with(|| { + highest_removed_tree.expect("There should be a cached removed tree.") + }); } } @@ -839,13 +837,11 @@ impl Chain { .next() .expect("Zebra should never reach the max height in normal operation."); - if self.sapling_trees_by_height.get(&next_height).is_none() { - // TODO: Use `try_insert` once it stabilises. - self.sapling_trees_by_height.insert( - next_height, - highest_removed_tree.expect("There should be a cached removed tree."), - ); - } + self.sapling_trees_by_height + .entry(next_height) + .or_insert_with(|| { + highest_removed_tree.expect("There should be a cached removed tree.") + }); } } @@ -1048,13 +1044,11 @@ impl Chain { .next() .expect("Zebra should never reach the max height in normal operation."); - if self.orchard_trees_by_height.get(&next_height).is_none() { - // TODO: Use `try_insert` once it stabilises. - self.orchard_trees_by_height.insert( - next_height, - highest_removed_tree.expect("There should be a cached removed tree."), - ); - } + self.orchard_trees_by_height + .entry(next_height) + .or_insert_with(|| { + highest_removed_tree.expect("There should be a cached removed tree.") + }); } } diff --git a/zebra-state/src/service/non_finalized_state/tests/prop.rs b/zebra-state/src/service/non_finalized_state/tests/prop.rs index fcd9ba544b3..209af90e091 100644 --- a/zebra-state/src/service/non_finalized_state/tests/prop.rs +++ b/zebra-state/src/service/non_finalized_state/tests/prop.rs @@ -10,7 +10,7 @@ use zebra_chain::{ fmt::DisplayToDebug, history_tree::{HistoryTree, NonEmptyHistoryTree}, parameters::NetworkUpgrade::*, - parameters::{Network, *}, + parameters::*, value_balance::ValueBalance, LedgerState, }; @@ -611,15 +611,15 @@ fn different_blocks_different_chains() -> Result<()> { // blocks, heights, hashes chain1.blocks = chain2.blocks.clone(); - chain1.height_by_hash = chain2.height_by_hash.clone(); - chain1.tx_loc_by_hash = chain2.tx_loc_by_hash.clone(); + chain1.height_by_hash.clone_from(&chain2.height_by_hash); + chain1.tx_loc_by_hash.clone_from(&chain2.tx_loc_by_hash); // transparent UTXOs - chain1.created_utxos = chain2.created_utxos.clone(); - chain1.spent_utxos = chain2.spent_utxos.clone(); + chain1.created_utxos.clone_from(&chain2.created_utxos); + chain1.spent_utxos.clone_from(&chain2.spent_utxos); // note commitment trees - chain1.sprout_trees_by_anchor = chain2.sprout_trees_by_anchor.clone(); + chain1.sprout_trees_by_anchor.clone_from(&chain2.sprout_trees_by_anchor); chain1.sprout_trees_by_height = chain2.sprout_trees_by_height.clone(); chain1.sapling_trees_by_height = chain2.sapling_trees_by_height.clone(); chain1.orchard_trees_by_height = chain2.orchard_trees_by_height.clone(); @@ -640,9 +640,9 @@ fn different_blocks_different_chains() -> Result<()> { chain1.orchard_anchors_by_height = chain2.orchard_anchors_by_height.clone(); // nullifiers - chain1.sprout_nullifiers = chain2.sprout_nullifiers.clone(); - chain1.sapling_nullifiers = chain2.sapling_nullifiers.clone(); - chain1.orchard_nullifiers = chain2.orchard_nullifiers.clone(); + chain1.sprout_nullifiers.clone_from(&chain2.sprout_nullifiers); + chain1.sapling_nullifiers.clone_from(&chain2.sapling_nullifiers); + chain1.orchard_nullifiers.clone_from(&chain2.orchard_nullifiers); // proof of work chain1.partial_cumulative_work = chain2.partial_cumulative_work; diff --git a/zebra-test/src/mock_service.rs b/zebra-test/src/mock_service.rs index 25f379034e6..7ab0d1f613b 100644 --- a/zebra-test/src/mock_service.rs +++ b/zebra-test/src/mock_service.rs @@ -966,6 +966,7 @@ impl ResponseSender { /// /// - [`PanicAssertion`] /// - [`PropTestAssertion`] +#[allow(dead_code)] trait AssertionType {} /// Represents normal Rust assertions that panic, like [`assert_eq`]. diff --git a/zebra-test/src/vectors/block.rs b/zebra-test/src/vectors/block.rs index 1623996afce..d25eb5d7c29 100644 --- a/zebra-test/src/vectors/block.rs +++ b/zebra-test/src/vectors/block.rs @@ -5,7 +5,7 @@ use hex::FromHex; use lazy_static::lazy_static; -use std::{collections::BTreeMap, convert::TryInto}; +use std::collections::BTreeMap; trait ReverseCollection { /// Return a reversed copy of this collection diff --git a/zebra-test/tests/transcript.rs b/zebra-test/tests/transcript.rs index e51b53ac151..c90fb7c31c9 100644 --- a/zebra-test/tests/transcript.rs +++ b/zebra-test/tests/transcript.rs @@ -48,10 +48,6 @@ async fn self_check() { assert!(t1.check(t2).await.is_ok()); } -#[derive(Debug, thiserror::Error)] -#[error("Error")] -struct Error; - const TRANSCRIPT_DATA2: [(&str, Result<&str, ExpectedTranscriptError>); 4] = [ ("req1", Ok("rsp1")), ("req2", Ok("rsp2")), diff --git a/zebrad/src/commands/copy_state.rs b/zebrad/src/commands/copy_state.rs index 179367ef0c6..56e7eea6263 100644 --- a/zebrad/src/commands/copy_state.rs +++ b/zebrad/src/commands/copy_state.rs @@ -35,7 +35,7 @@ use std::{cmp::min, path::PathBuf}; -use abscissa_core::{config, Command, FrameworkError, Runnable}; +use abscissa_core::{config, Command, FrameworkError}; use color_eyre::eyre::{eyre, Report}; use tokio::time::Instant; use tower::{Service, ServiceExt}; diff --git a/zebrad/src/commands/start.rs b/zebrad/src/commands/start.rs index a6f2ec77f6a..dbe2368f37b 100644 --- a/zebrad/src/commands/start.rs +++ b/zebrad/src/commands/start.rs @@ -78,7 +78,7 @@ //! //! Some of the diagnostic features are optional, and need to be enabled at compile-time. -use abscissa_core::{config, Command, FrameworkError, Runnable}; +use abscissa_core::{config, Command, FrameworkError}; use color_eyre::eyre::{eyre, Report}; use futures::FutureExt; use tokio::{pin, select, sync::oneshot}; diff --git a/zebrad/src/components/inbound/tests/fake_peer_set.rs b/zebrad/src/components/inbound/tests/fake_peer_set.rs index c0dacf89743..3ca30c5759a 100644 --- a/zebrad/src/components/inbound/tests/fake_peer_set.rs +++ b/zebrad/src/components/inbound/tests/fake_peer_set.rs @@ -1,13 +1,6 @@ //! Inbound service tests with a fake peer set. -use std::{ - collections::HashSet, - iter::{self, FromIterator}, - net::SocketAddr, - str::FromStr, - sync::Arc, - time::Duration, -}; +use std::{collections::HashSet, iter, net::SocketAddr, str::FromStr, sync::Arc, time::Duration}; use futures::FutureExt; use tokio::{sync::oneshot, task::JoinHandle, time::timeout}; diff --git a/zebrad/src/components/mempool/storage/tests/vectors.rs b/zebrad/src/components/mempool/storage/tests/vectors.rs index 4dd12827817..5b60c133e95 100644 --- a/zebrad/src/components/mempool/storage/tests/vectors.rs +++ b/zebrad/src/components/mempool/storage/tests/vectors.rs @@ -8,11 +8,10 @@ use zebra_chain::{ amount::Amount, block::{Block, Height}, parameters::Network, - transaction::{UnminedTxId, VerifiedUnminedTx}, }; use crate::components::mempool::{ - config, storage::tests::unmined_transactions_in_blocks, storage::*, Mempool, + storage::tests::unmined_transactions_in_blocks, storage::*, Mempool, }; /// Eviction memory time used for tests. Most tests won't care about this diff --git a/zebrad/src/components/mempool/tests/vector.rs b/zebrad/src/components/mempool/tests/vector.rs index db1915a5305..2868fef2e65 100644 --- a/zebrad/src/components/mempool/tests/vector.rs +++ b/zebrad/src/components/mempool/tests/vector.rs @@ -1,6 +1,6 @@ //! Fixed test vectors for the mempool. -use std::{collections::HashSet, sync::Arc}; +use std::sync::Arc; use color_eyre::Report; use tokio::time::{self, timeout}; @@ -15,12 +15,10 @@ use zebra_state::{Config as StateConfig, CHAIN_TIP_UPDATE_WAIT_LIMIT}; use zebra_test::mock_service::{MockService, PanicAssertion}; use crate::components::{ - mempool::{self, storage::tests::unmined_transactions_in_blocks, *}, + mempool::{self, *}, sync::RecentSyncLengths, }; -use super::UnboxMempoolError; - /// A [`MockService`] representing the network service. type MockPeerSet = MockService; diff --git a/zebrad/src/components/sync/downloads.rs b/zebrad/src/components/sync/downloads.rs index 67f6ee4844f..7ee352ae473 100644 --- a/zebrad/src/components/sync/downloads.rs +++ b/zebrad/src/components/sync/downloads.rs @@ -2,7 +2,7 @@ use std::{ collections::HashMap, - convert::{self, TryFrom}, + convert, pin::Pin, sync::Arc, task::{Context, Poll}, diff --git a/zebrad/src/components/tokio.rs b/zebrad/src/components/tokio.rs index 802ebc31052..7478022dda1 100644 --- a/zebrad/src/components/tokio.rs +++ b/zebrad/src/components/tokio.rs @@ -9,7 +9,7 @@ use std::{future::Future, time::Duration}; -use abscissa_core::{Application, Component, FrameworkError, Shutdown}; +use abscissa_core::{Component, FrameworkError, Shutdown}; use color_eyre::Report; use tokio::runtime::Runtime; diff --git a/zebrad/tests/acceptance.rs b/zebrad/tests/acceptance.rs index 656ef9a2118..166c7183eae 100644 --- a/zebrad/tests/acceptance.rs +++ b/zebrad/tests/acceptance.rs @@ -155,7 +155,7 @@ use std::{ }; use color_eyre::{ - eyre::{eyre, Result, WrapErr}, + eyre::{eyre, WrapErr}, Help, }; use semver::Version; @@ -480,7 +480,7 @@ fn ephemeral(cache_dir_config: EphemeralConfig, cache_dir_check: EphemeralCheck) let ignored_cache_dir = run_dir.path().join("state"); if cache_dir_config == EphemeralConfig::MisconfiguredCacheDir { // Write a configuration that sets both the cache_dir and ephemeral options - config.state.cache_dir = ignored_cache_dir.clone(); + config.state.cache_dir.clone_from(&ignored_cache_dir); } if cache_dir_check == EphemeralCheck::ExistingDirectory { // We set the cache_dir config to a newly created empty temp directory, @@ -2953,11 +2953,15 @@ fn scan_start_where_left() -> Result<()> { config.shielded_scan.sapling_keys_to_scan = keys; // Add the cache dir to shielded scan, make it the same as the zebrad cache state. - config.shielded_scan.db_config_mut().cache_dir = cache_dir.clone(); + config + .shielded_scan + .db_config_mut() + .cache_dir + .clone_from(&cache_dir); config.shielded_scan.db_config_mut().ephemeral = false; // Add the cache dir to state. - config.state.cache_dir = cache_dir.clone(); + config.state.cache_dir.clone_from(&cache_dir); config.state.ephemeral = false; // Remove the scan directory before starting. diff --git a/zebrad/tests/common/launch.rs b/zebrad/tests/common/launch.rs index 82e4f451ead..0cbb52e7cb7 100644 --- a/zebrad/tests/common/launch.rs +++ b/zebrad/tests/common/launch.rs @@ -13,7 +13,6 @@ use std::{ time::Duration, }; -use color_eyre::eyre::Result; use tempfile::TempDir; use zebra_chain::parameters::Network::{self, *}; diff --git a/zebrad/tests/common/lightwalletd.rs b/zebrad/tests/common/lightwalletd.rs index 62282ed52c4..fc10242d80f 100644 --- a/zebrad/tests/common/lightwalletd.rs +++ b/zebrad/tests/common/lightwalletd.rs @@ -16,7 +16,7 @@ use tempfile::TempDir; use zebra_chain::parameters::Network::{self, *}; use zebra_test::{ args, - command::{Arguments, TestChild, TestDirExt}, + command::{Arguments, TestDirExt}, net::random_known_port, prelude::*, }; diff --git a/zebrad/tests/common/shielded_scan/scan_task_commands.rs b/zebrad/tests/common/shielded_scan/scan_task_commands.rs index 1961c8f6815..f626c0485a8 100644 --- a/zebrad/tests/common/shielded_scan/scan_task_commands.rs +++ b/zebrad/tests/common/shielded_scan/scan_task_commands.rs @@ -69,7 +69,10 @@ pub(crate) async fn run() -> Result<()> { .expect("already checked that there is a cached state path"); let mut scan_config = zebra_scan::Config::default(); - scan_config.db_config_mut().cache_dir = zebrad_state_path.clone(); + scan_config + .db_config_mut() + .cache_dir + .clone_from(&zebrad_state_path); // Logs the network as zebrad would as part of the metadata when starting up. // This is currently needed for the 'Check startup logs' step in CI to pass. diff --git a/zebrad/tests/common/sync.rs b/zebrad/tests/common/sync.rs index 5543640dd72..ff5234c2b1e 100644 --- a/zebrad/tests/common/sync.rs +++ b/zebrad/tests/common/sync.rs @@ -7,7 +7,6 @@ use std::{path::PathBuf, time::Duration}; -use color_eyre::eyre::Result; use tempfile::TempDir; use zebra_chain::{block::Height, parameters::Network};