From b88febc173ece044da043b98469f3faa110ef41e Mon Sep 17 00:00:00 2001 From: Ethan Buchman Date: Sun, 18 Aug 2019 17:11:20 -0400 Subject: [PATCH] Remove all optional compilation (#16) * rm optional * rm all #[cfg(feature = ... * derive serde for validator::Info * straglers * fix import --- Cargo.toml | 47 ++++++++++---------------------- src/abci.rs | 10 ------- src/abci/gas.rs | 2 -- src/abci/log.rs | 2 -- src/abci/transaction.rs | 6 +--- src/abci/transaction/hash.rs | 3 -- src/account.rs | 3 -- src/block.rs | 4 +-- src/block/commit.rs | 7 ++--- src/block/header.rs | 43 ++++++++++------------------- src/block/height.rs | 3 -- src/block/id.rs | 4 +-- src/block/meta.rs | 4 +-- src/block/parts.rs | 13 +++------ src/block/size.rs | 31 +++++++-------------- src/chain/id.rs | 3 -- src/config/node_key.rs | 3 -- src/config/priv_validator_key.rs | 3 -- src/consensus/params.rs | 7 ++--- src/consensus/state.rs | 13 +++------ src/error.rs | 5 ---- src/evidence.rs | 18 ++++-------- src/hash.rs | 3 -- src/lib.rs | 14 ---------- src/moniker.rs | 4 +-- src/net.rs | 3 -- src/node.rs | 2 -- src/node/id.rs | 3 -- src/private_key.rs | 6 ---- src/public_key.rs | 35 +++++++----------------- src/rpc/endpoint/abci_info.rs | 2 -- src/rpc/endpoint/abci_query.rs | 9 ++---- src/rpc/method.rs | 2 -- src/serializers.rs | 3 -- src/signature.rs | 5 ---- src/time.rs | 7 +---- src/timeout.rs | 3 -- src/validator.rs | 9 +----- src/version.rs | 4 +-- src/vote.rs | 26 ++++++------------ src/vote/power.rs | 3 -- tests/config.rs | 1 - tests/integration.rs | 1 - tests/rpc.rs | 1 - tests/secret_connection.rs | 6 +--- 45 files changed, 86 insertions(+), 300 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 3b44c575a..a7921321d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,49 +28,32 @@ authors = [ circle-ci = { repository = "tendermint/kms" } [dependencies] -byteorder = { version = "1.2", optional = true } +byteorder = { version = "1.2" } bytes = "0.4" chrono = { version = "0.4", features = ["serde"] } digest = "0.8" failure = "0.1" -hkdf = { version = "0.7", optional = true } -hyper = { version = "0.10", optional = true } -prost-amino = { version = "0.4.0", optional = true } -prost-amino-derive = { version = "0.4.0", optional = true } -rand_os = { version = "0.1", optional = true } -ring = { version = "0.14", optional = true } -serde = { version = "1", optional = true, features = ["derive"] } -serde_json = { version = "1", optional = true } +hkdf = { version = "0.7" } +hyper = { version = "0.10" } +prost-amino = { version = "0.4.0" } +prost-amino-derive = { version = "0.4.0" } +rand_os = { version = "0.1" } +ring = { version = "0.14" } +serde = { version = "1", features = ["derive"] } +serde_json = { version = "1" } signatory = { version = "0.12", features = ["ed25519", "ecdsa"] } -signatory-dalek = { version = "0.12", optional = true } +signatory-dalek = { version = "0.12" } sha2 = { version = "0.8", default-features = false } subtle = "2" subtle-encoding = { version = "0.3", features = ["bech32-preview"] } -tai64 = { version = "2", optional = true, features = ["chrono"] } -toml = { version = "0.5", optional = true } -uuid = { version = "0.7", optional = true, default-features = false } -x25519-dalek = { version = "0.5", optional = true, default-features = false, features = ["u64_backend"] } -zeroize = { version = "0.9", optional = true } +tai64 = { version = "2", features = ["chrono"] } +toml = { version = "0.5" } +uuid = { version = "0.7", default-features = false } +x25519-dalek = { version = "0.5", default-features = false, features = ["u64_backend"] } +zeroize = { version = "0.9" } [dev-dependencies] serde_json = "1" -[features] -default = ["serde", "tai64"] -amino-types = ["prost-amino", "prost-amino-derive"] -config = ["serde", "serde_json", "toml", "zeroize"] -keys = ["signatory-dalek"] -rpc = ["hyper", "rand_os", "serde", "serde_json", "uuid"] -secret-connection = [ - "amino-types", - "byteorder", - "rand_os", - "hkdf", - "ring", - "signatory-dalek", - "x25519-dalek", - "zeroize" -] - [package.metadata.docs.rs] all-features = true diff --git a/src/abci.rs b/src/abci.rs index 79efc5778..eeeabcab8 100644 --- a/src/abci.rs +++ b/src/abci.rs @@ -7,27 +7,17 @@ //! //! -#[cfg(feature = "rpc")] mod code; -#[cfg(feature = "rpc")] mod data; -#[cfg(feature = "rpc")] mod gas; -#[cfg(feature = "rpc")] mod info; -#[cfg(feature = "rpc")] mod log; -#[cfg(feature = "rpc")] mod path; -#[cfg(feature = "rpc")] mod proof; -#[cfg(feature = "rpc")] mod responses; -#[cfg(any(feature = "config", feature = "rpc"))] pub mod tag; pub mod transaction; -#[cfg(feature = "rpc")] pub use self::{ code::Code, data::Data, gas::Gas, info::Info, log::Log, path::Path, proof::Proof, responses::Responses, transaction::Transaction, diff --git a/src/abci/gas.rs b/src/abci/gas.rs index ec59e5556..4d90cccdb 100644 --- a/src/abci/gas.rs +++ b/src/abci/gas.rs @@ -49,7 +49,6 @@ impl FromStr for Gas { } } -#[cfg(feature = "serde")] impl<'de> Deserialize<'de> for Gas { fn deserialize>(deserializer: D) -> Result { Ok(Self::from_str(&String::deserialize(deserializer)?) @@ -57,7 +56,6 @@ impl<'de> Deserialize<'de> for Gas { } } -#[cfg(feature = "serde")] impl Serialize for Gas { fn serialize(&self, serializer: S) -> Result { self.to_string().serialize(serializer) diff --git a/src/abci/log.rs b/src/abci/log.rs index 91c627531..3c9f9be8f 100644 --- a/src/abci/log.rs +++ b/src/abci/log.rs @@ -1,4 +1,3 @@ -#[cfg(feature = "serde_json")] use crate::{Error, ErrorKind}; use serde::{Deserialize, Serialize}; use std::fmt::{self, Display}; @@ -9,7 +8,6 @@ pub struct Log(String); impl Log { /// Parse the log data as JSON, returning a `serde_json::Value` - #[cfg(feature = "serde_json")] pub fn parse_json(&self) -> Result { serde_json::from_str(&self.0).map_err(|_| ErrorKind::Parse.into()) } diff --git a/src/abci/transaction.rs b/src/abci/transaction.rs index bd645dd00..71723c0f7 100644 --- a/src/abci/transaction.rs +++ b/src/abci/transaction.rs @@ -4,7 +4,6 @@ mod hash; pub use self::hash::Hash; use std::slice; -#[cfg(feature = "serde")] use { serde::{de::Error as _, Deserialize, Deserializer, Serialize, Serializer}, subtle_encoding::base64, @@ -41,7 +40,6 @@ impl AsRef<[u8]> for Transaction { } } -#[cfg(feature = "serde")] impl<'de> Deserialize<'de> for Transaction { fn deserialize>(deserializer: D) -> Result { let bytes = base64::decode(String::deserialize(deserializer)?.as_bytes()) @@ -51,7 +49,6 @@ impl<'de> Deserialize<'de> for Transaction { } } -#[cfg(feature = "serde")] impl Serialize for Transaction { fn serialize(&self, serializer: S) -> Result { String::from_utf8(base64::encode(self.as_bytes())) @@ -64,8 +61,7 @@ impl Serialize for Transaction { /// transactions are arbitrary byte arrays. /// /// -#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))] -#[derive(Clone, Debug)] +#[derive(Deserialize, Serialize, Clone, Debug)] pub struct Data { txs: Option>, } diff --git a/src/abci/transaction/hash.rs b/src/abci/transaction/hash.rs index 3bbb316ad..aa14acc51 100644 --- a/src/abci/transaction/hash.rs +++ b/src/abci/transaction/hash.rs @@ -1,7 +1,6 @@ //! Transaction hashes use crate::error::{Error, ErrorKind}; -#[cfg(feature = "serde")] use serde::{de, Deserialize, Deserializer, Serialize, Serializer}; use std::{ fmt::{self, Debug, Display}, @@ -77,7 +76,6 @@ impl FromStr for Hash { } } -#[cfg(feature = "serde")] impl<'de> Deserialize<'de> for Hash { fn deserialize(deserializer: D) -> Result where @@ -94,7 +92,6 @@ impl<'de> Deserialize<'de> for Hash { } } -#[cfg(feature = "serde")] impl Serialize for Hash { fn serialize(&self, serializer: S) -> Result { self.to_string().serialize(serializer) diff --git a/src/account.rs b/src/account.rs index 17b603e32..9c51ad3c1 100644 --- a/src/account.rs +++ b/src/account.rs @@ -1,7 +1,6 @@ //! Tendermint accounts use crate::error::{Error, ErrorKind}; -#[cfg(feature = "serde")] use serde::{de, Deserialize, Deserializer, Serialize, Serializer}; use sha2::{Digest, Sha256}; use signatory::{ecdsa::curve::secp256k1, ed25519}; @@ -99,7 +98,6 @@ impl FromStr for Id { } } -#[cfg(feature = "serde")] impl<'de> Deserialize<'de> for Id { fn deserialize(deserializer: D) -> Result where @@ -116,7 +114,6 @@ impl<'de> Deserialize<'de> for Id { } } -#[cfg(feature = "serde")] impl Serialize for Id { fn serialize(&self, serializer: S) -> Result { self.to_string().serialize(serializer) diff --git a/src/block.rs b/src/block.rs index c8aa31383..440da5cda 100644 --- a/src/block.rs +++ b/src/block.rs @@ -17,15 +17,13 @@ pub use self::{ size::Size, }; use crate::{abci::transaction, evidence}; -#[cfg(feature = "serde")] use serde::{Deserialize, Serialize}; /// Blocks consist of a header, transactions, votes (the commit), and a list of /// evidence of malfeasance (i.e. signing conflicting votes). /// /// -#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))] -#[derive(Clone, Debug)] +#[derive(Deserialize, Serialize, Clone, Debug)] pub struct Block { /// Block header pub header: Header, diff --git a/src/block/commit.rs b/src/block/commit.rs index c20f71019..76c907736 100644 --- a/src/block/commit.rs +++ b/src/block/commit.rs @@ -1,15 +1,13 @@ //! Commits to a Tendermint blockchain use crate::{block, Vote}; -#[cfg(feature = "serde")] use serde::{Deserialize, Serialize}; use std::{ops::Deref, slice}; /// Last commit to a particular blockchain: +2/3 precommit signatures. /// /// -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -#[derive(Clone, Debug)] +#[derive(Serialize, Deserialize, Clone, Debug)] pub struct LastCommit { /// Block ID of the last commit pub block_id: block::Id, @@ -19,8 +17,7 @@ pub struct LastCommit { } /// Precommits which certify that a block is valid -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -#[derive(Clone, Debug)] +#[derive(Serialize, Deserialize, Clone, Debug)] pub struct Precommits(Option>>); impl Precommits { diff --git a/src/block/header.rs b/src/block/header.rs index 620fde23e..c609bd05a 100644 --- a/src/block/header.rs +++ b/src/block/header.rs @@ -1,7 +1,6 @@ //! Block headers use crate::{account, block, chain, Hash, Time}; -#[cfg(feature = "serde")] use { crate::serializers, serde::{Deserialize, Serialize}, @@ -12,8 +11,7 @@ use { /// previous block, and the results returned by the application. /// /// -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -#[derive(Clone, Debug)] +#[derive(Serialize, Deserialize, Clone, Debug)] pub struct Header { /// Header version pub version: Version, @@ -28,22 +26,16 @@ pub struct Header { pub time: Time, /// Number of transactions in block - #[cfg_attr( - feature = "serde", - serde( - serialize_with = "serializers::serialize_u64", - deserialize_with = "serializers::parse_u64" - ) + #[serde( + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" )] pub num_txs: u64, /// Total number of transactions - #[cfg_attr( - feature = "serde", - serde( - serialize_with = "serializers::serialize_u64", - deserialize_with = "serializers::parse_u64" - ) + #[serde( + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" )] pub total_txs: u64, @@ -82,26 +74,19 @@ pub struct Header { /// application. /// /// -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -#[derive(Clone, Debug)] +#[derive(Serialize, Deserialize, Clone, Debug)] pub struct Version { /// Block version - #[cfg_attr( - feature = "serde", - serde( - serialize_with = "serializers::serialize_u64", - deserialize_with = "serializers::parse_u64" - ) + #[serde( + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" )] pub block: u64, /// App version - #[cfg_attr( - feature = "serde", - serde( - serialize_with = "serializers::serialize_u64", - deserialize_with = "serializers::parse_u64" - ) + #[serde( + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" )] pub app: u64, } diff --git a/src/block/height.rs b/src/block/height.rs index 05cb3e320..b3cdb930e 100644 --- a/src/block/height.rs +++ b/src/block/height.rs @@ -1,5 +1,4 @@ use crate::error::{Error, ErrorKind}; -#[cfg(feature = "serde")] use serde::{de::Error as _, Deserialize, Deserializer, Serialize, Serializer}; use std::{ fmt::{self, Debug, Display}, @@ -90,7 +89,6 @@ impl FromStr for Height { } } -#[cfg(feature = "serde")] impl<'de> Deserialize<'de> for Height { fn deserialize>(deserializer: D) -> Result { Ok(Self::from_str(&String::deserialize(deserializer)?) @@ -98,7 +96,6 @@ impl<'de> Deserialize<'de> for Height { } } -#[cfg(feature = "serde")] impl Serialize for Height { fn serialize(&self, serializer: S) -> Result { self.to_string().serialize(serializer) diff --git a/src/block/id.rs b/src/block/id.rs index 4c6427a4c..7bc37c74d 100644 --- a/src/block/id.rs +++ b/src/block/id.rs @@ -3,7 +3,6 @@ use crate::{ error::Error, hash::{Algorithm, Hash}, }; -#[cfg(feature = "serde")] use serde::{Deserialize, Serialize}; use std::{ fmt::{self, Display}, @@ -17,8 +16,7 @@ pub const PREFIX_LENGTH: usize = 10; /// as well as the number of parts in the block. /// /// -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -#[derive(Clone, Debug, Hash, Eq, PartialEq, PartialOrd, Ord)] +#[derive(Serialize, Deserialize, Clone, Debug, Hash, Eq, PartialEq, PartialOrd, Ord)] pub struct Id { /// The block's main hash is the Merkle root of all the fields in the /// block header. diff --git a/src/block/meta.rs b/src/block/meta.rs index 05dafe717..b325fe8cd 100644 --- a/src/block/meta.rs +++ b/src/block/meta.rs @@ -1,12 +1,10 @@ //! Block metadata use super::{Header, Id}; -#[cfg(feature = "serde")] use serde::{Deserialize, Serialize}; /// Block metadata -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -#[derive(Clone, Debug)] +#[derive(Serialize, Deserialize, Clone, Debug)] pub struct Meta { /// ID of the block pub block_id: Id, diff --git a/src/block/parts.rs b/src/block/parts.rs index 53b14b423..61e2d2170 100644 --- a/src/block/parts.rs +++ b/src/block/parts.rs @@ -1,23 +1,18 @@ //! Block parts use crate::Hash; -#[cfg(feature = "serde")] use { crate::serializers, serde::{Deserialize, Serialize}, }; /// Block parts header -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -#[derive(Clone, Debug, Hash, Eq, PartialEq, PartialOrd, Ord)] +#[derive(Serialize, Deserialize, Clone, Debug, Hash, Eq, PartialEq, PartialOrd, Ord)] pub struct Header { /// Number of parts in this block - #[cfg_attr( - feature = "serde", - serde( - serialize_with = "serializers::serialize_u64", - deserialize_with = "serializers::parse_u64" - ) + #[serde( + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" )] pub total: u64, diff --git a/src/block/size.rs b/src/block/size.rs index d789f1abc..7a663672a 100644 --- a/src/block/size.rs +++ b/src/block/size.rs @@ -1,42 +1,31 @@ //! Block size parameters -#[cfg(feature = "serde")] use { crate::serializers, serde::{Deserialize, Serialize}, }; /// Block size parameters -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -#[derive(Clone, Debug, Eq, PartialEq)] +#[derive(Serialize, Deserialize, Clone, Debug, Eq, PartialEq)] pub struct Size { /// Maximum number of bytes in a block - #[cfg_attr( - feature = "serde", - serde( - serialize_with = "serializers::serialize_u64", - deserialize_with = "serializers::parse_u64" - ) + #[serde( + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" )] pub max_bytes: u64, /// Maximum amount of gas which can be spent on a block - #[cfg_attr( - feature = "serde", - serde( - serialize_with = "serializers::serialize_u64", - deserialize_with = "serializers::parse_u64" - ) + #[serde( + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" )] pub max_gas: u64, /// Time iota in ms - #[cfg_attr( - feature = "serde", - serde( - serialize_with = "serializers::serialize_u64", - deserialize_with = "serializers::parse_u64" - ) + #[serde( + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" )] pub time_iota_ms: u64, } diff --git a/src/chain/id.rs b/src/chain/id.rs index 7d0ec8312..62383d8e8 100644 --- a/src/chain/id.rs +++ b/src/chain/id.rs @@ -1,7 +1,6 @@ //! Tendermint blockchain identifiers use crate::error::{Error, ErrorKind}; -#[cfg(feature = "serde")] use serde::{de::Error as _, Deserialize, Deserializer, Serialize, Serializer}; use std::{ cmp::Ordering, @@ -104,14 +103,12 @@ impl PartialEq for Id { impl Eq for Id {} -#[cfg(feature = "serde")] impl Serialize for Id { fn serialize(&self, serializer: S) -> Result { self.as_str().serialize(serializer) } } -#[cfg(feature = "serde")] impl<'de> Deserialize<'de> for Id { fn deserialize>(deserializer: D) -> Result { Self::from_str(&String::deserialize(deserializer)?) diff --git a/src/config/node_key.rs b/src/config/node_key.rs index 62835858d..e68c627d8 100644 --- a/src/config/node_key.rs +++ b/src/config/node_key.rs @@ -4,7 +4,6 @@ use crate::{ error::{Error, ErrorKind}, private_key::PrivateKey, }; -#[cfg(feature = "signatory-dalek")] use crate::{node, public_key::PublicKey}; use serde::{Deserialize, Serialize}; use std::{fs, path::Path}; @@ -40,7 +39,6 @@ impl NodeKey { } /// Get the public key for this keypair - #[cfg(feature = "signatory-dalek")] pub fn public_key(&self) -> PublicKey { match &self.priv_key { PrivateKey::Ed25519(key) => key.public_key(), @@ -48,7 +46,6 @@ impl NodeKey { } /// Get node ID for this keypair - #[cfg(feature = "signatory-dalek")] pub fn node_id(&self) -> node::Id { match &self.public_key() { PublicKey::Ed25519(key) => node::Id::from(*key), diff --git a/src/config/priv_validator_key.rs b/src/config/priv_validator_key.rs index 6e44a0248..0ba4189e7 100644 --- a/src/config/priv_validator_key.rs +++ b/src/config/priv_validator_key.rs @@ -1,6 +1,5 @@ //! Validator private keys -#[cfg(feature = "signatory-dalek")] use crate::public_key::TendermintKey; use crate::{ account, @@ -30,7 +29,6 @@ impl PrivValidatorKey { let result = serde_json::from_str::(json_string.as_ref())?; // Validate that the parsed key type is usable as a consensus key - #[cfg(feature = "signatory-dalek")] TendermintKey::new_consensus_key(result.priv_key.public_key())?; Ok(result) @@ -54,7 +52,6 @@ impl PrivValidatorKey { } /// Get the consensus public key for this validator private key - #[cfg(feature = "signatory-dalek")] pub fn consensus_pubkey(&self) -> TendermintKey { TendermintKey::new_consensus_key(self.priv_key.public_key()).unwrap() } diff --git a/src/consensus/params.rs b/src/consensus/params.rs index ec4635774..cbe051297 100644 --- a/src/consensus/params.rs +++ b/src/consensus/params.rs @@ -1,12 +1,10 @@ //! Tendermint consensus parameters use crate::{block, evidence, public_key}; -#[cfg(feature = "serde")] use serde::{Deserialize, Serialize}; /// Tendermint consensus parameters -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -#[derive(Clone, Debug, Eq, PartialEq)] +#[derive(Serialize, Deserialize, Clone, Debug, Eq, PartialEq)] pub struct Params { /// Block size parameters pub block: block::Size, @@ -19,8 +17,7 @@ pub struct Params { } /// Validator consensus parameters -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -#[derive(Clone, Debug, Eq, PartialEq)] +#[derive(Serialize, Deserialize, Clone, Debug, Eq, PartialEq)] pub struct ValidatorParams { /// Allowed algorithms for validator signing pub pub_key_types: Vec, diff --git a/src/consensus/state.rs b/src/consensus/state.rs index cac461e0e..00fe29795 100644 --- a/src/consensus/state.rs +++ b/src/consensus/state.rs @@ -2,7 +2,6 @@ pub use crate::block; pub use std::{cmp::Ordering, fmt}; -#[cfg(feature = "serde")] use { crate::serializers, serde::{Deserialize, Serialize}, @@ -13,19 +12,15 @@ use { pub const NIL_PLACEHOLDER: &str = ""; /// Tendermint consensus state -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -#[derive(Clone, Debug, Default, Eq, PartialEq)] +#[derive(Serialize, Deserialize, Clone, Debug, Default, Eq, PartialEq)] pub struct State { /// Current block height pub height: block::Height, /// Current consensus round - #[cfg_attr( - feature = "serde", - serde( - serialize_with = "serializers::serialize_i64", - deserialize_with = "serializers::parse_i64" - ) + #[serde( + serialize_with = "serializers::serialize_i64", + deserialize_with = "serializers::parse_i64" )] pub round: i64, diff --git a/src/error.rs b/src/error.rs index 18e3157b5..5b9e8ca0e 100644 --- a/src/error.rs +++ b/src/error.rs @@ -5,7 +5,6 @@ use std::{ fmt::{self, Display}, io, }; -#[cfg(feature = "secret-connection")] use {chrono, prost, subtle_encoding}; /// Create a new error (of a given kind) with a formatted message @@ -90,21 +89,18 @@ impl From for Error { } } -#[cfg(feature = "secret-connection")] impl From for Error { fn from(err: prost::DecodeError) -> Self { err!(ErrorKind::Parse, err) } } -#[cfg(feature = "secret-connection")] impl From for Error { fn from(err: prost::EncodeError) -> Self { err!(ErrorKind::Parse, err) } } -#[cfg(feature = "serde_json")] impl From for Error { fn from(err: serde_json::error::Error) -> Self { err!(ErrorKind::Parse, err) @@ -124,7 +120,6 @@ impl From for Error { } } -#[cfg(feature = "toml")] impl From for Error { fn from(err: toml::de::Error) -> Self { err!(ErrorKind::Parse, err) diff --git a/src/evidence.rs b/src/evidence.rs index 41ca29155..c449539fc 100644 --- a/src/evidence.rs +++ b/src/evidence.rs @@ -1,7 +1,6 @@ //! Evidence of malfeasance by validators (i.e. signing conflicting votes). use std::slice; -#[cfg(feature = "serde")] use { crate::serializers, serde::{de::Error as _, Deserialize, Deserializer, Serialize, Serializer}, @@ -32,7 +31,6 @@ impl Evidence { } } -#[cfg(feature = "serde")] impl<'de> Deserialize<'de> for Evidence { fn deserialize>(deserializer: D) -> Result { let bytes = base64::decode(String::deserialize(deserializer)?.as_bytes()) @@ -42,7 +40,6 @@ impl<'de> Deserialize<'de> for Evidence { } } -#[cfg(feature = "serde")] impl Serialize for Evidence { fn serialize(&self, serializer: S) -> Result { String::from_utf8(base64::encode(self.to_amino_bytes())) @@ -54,8 +51,7 @@ impl Serialize for Evidence { /// Evidence data is a wrapper for a list of `Evidence`. /// /// -#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))] -#[derive(Clone, Debug)] +#[derive(Deserialize, Serialize, Clone, Debug)] pub struct Data { evidence: Option>, } @@ -92,16 +88,12 @@ impl AsRef<[Evidence]> for Data { } /// Evidence collection parameters -#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))] -#[derive(Clone, Debug, Eq, PartialEq)] +#[derive(Deserialize, Serialize, Clone, Debug, Eq, PartialEq)] pub struct Params { /// Maximum allowed age for evidence to be collected - #[cfg_attr( - feature = "serde", - serde( - serialize_with = "serializers::serialize_u64", - deserialize_with = "serializers::parse_u64" - ) + #[serde( + serialize_with = "serializers::serialize_u64", + deserialize_with = "serializers::parse_u64" )] pub max_age: u64, } diff --git a/src/hash.rs b/src/hash.rs index 281cc6a8a..8f0ca5327 100644 --- a/src/hash.rs +++ b/src/hash.rs @@ -1,7 +1,6 @@ //! Hash functions and their outputs use crate::error::{Error, ErrorKind}; -#[cfg(feature = "serde")] use serde::{de::Error as _, Deserialize, Deserializer, Serialize, Serializer}; use std::{ fmt::{self, Debug, Display}, @@ -102,7 +101,6 @@ impl FromStr for Hash { } } -#[cfg(feature = "serde")] impl<'de> Deserialize<'de> for Hash { fn deserialize>(deserializer: D) -> Result { let hex = String::deserialize(deserializer)?; @@ -115,7 +113,6 @@ impl<'de> Deserialize<'de> for Hash { } } -#[cfg(feature = "serde")] impl Serialize for Hash { fn serialize(&self, serializer: S) -> Result { self.to_string().serialize(serializer) diff --git a/src/lib.rs b/src/lib.rs index a6f128b6a..08c765150 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -18,9 +18,7 @@ html_root_url = "https://docs.rs/tendermint/0.10.0" )] -#[cfg(feature = "amino-types")] extern crate prost_amino as prost; -#[cfg(feature = "amino-types")] #[macro_use] extern crate prost_amino_derive as prost_derive; @@ -29,43 +27,32 @@ pub mod error; pub mod abci; pub mod account; -#[cfg(feature = "amino-types")] pub mod amino_types; pub mod block; pub mod chain; -#[cfg(feature = "rpc")] pub mod channel; -#[cfg(feature = "config")] pub mod config; pub mod consensus; pub mod evidence; -#[cfg(any(feature = "config", feature = "rpc"))] pub mod genesis; pub mod hash; pub mod merkle; mod moniker; pub mod net; pub mod node; -#[cfg(feature = "config")] pub mod private_key; pub mod public_key; -#[cfg(feature = "rpc")] pub mod rpc; -#[cfg(feature = "secret-connection")] pub mod secret_connection; -#[cfg(feature = "serde")] mod serializers; pub mod signature; pub mod time; mod timeout; -#[cfg(feature = "amino-types")] pub mod validator; mod version; pub mod vote; -#[cfg(feature = "rpc")] pub use crate::genesis::Genesis; -#[cfg(feature = "secret-connection")] pub use crate::secret_connection::SecretConnection; pub use crate::{ block::Block, @@ -79,5 +66,4 @@ pub use crate::{ version::Version, vote::Vote, }; -#[cfg(feature = "config")] pub use private_key::PrivateKey; diff --git a/src/moniker.rs b/src/moniker.rs index a6c017024..b5ca283da 100644 --- a/src/moniker.rs +++ b/src/moniker.rs @@ -1,7 +1,6 @@ //! Monikers: names associated with validators use crate::error::Error; -#[cfg(feature = "serde")] use serde::{Deserialize, Serialize}; use std::{ fmt::{self, Display}, @@ -9,8 +8,7 @@ use std::{ }; /// Validator display names -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -#[derive(Clone, Debug, Eq, Hash, PartialEq, PartialOrd, Ord)] +#[derive(Serialize, Deserialize, Clone, Debug, Eq, Hash, PartialEq, PartialOrd, Ord)] pub struct Moniker(String); impl FromStr for Moniker { diff --git a/src/net.rs b/src/net.rs index 350a43606..fcd6905f2 100644 --- a/src/net.rs +++ b/src/net.rs @@ -4,7 +4,6 @@ use crate::{ error::{Error, ErrorKind}, node, }; -#[cfg(feature = "serde")] use serde::{de::Error as _, Deserialize, Deserializer, Serialize, Serializer}; use std::{ fmt::{self, Display}, @@ -40,7 +39,6 @@ pub enum Address { }, } -#[cfg(feature = "serde")] impl<'de> Deserialize<'de> for Address { fn deserialize>(deserializer: D) -> Result { Self::from_str(&String::deserialize(deserializer)?) @@ -127,7 +125,6 @@ impl Address { } } -#[cfg(feature = "serde")] impl Serialize for Address { fn serialize(&self, serializer: S) -> Result { self.to_string().serialize(serializer) diff --git a/src/node.rs b/src/node.rs index 923adae32..824b78244 100644 --- a/src/node.rs +++ b/src/node.rs @@ -1,9 +1,7 @@ //! Nodes in Tendermint blockchain networks mod id; -#[cfg(feature = "rpc")] pub mod info; pub use self::id::Id; -#[cfg(feature = "rpc")] pub use self::info::Info; diff --git a/src/node/id.rs b/src/node/id.rs index 89e31c0f1..b0d440de1 100644 --- a/src/node/id.rs +++ b/src/node/id.rs @@ -1,7 +1,6 @@ //! Tendermint node IDs use crate::error::{Error, ErrorKind}; -#[cfg(feature = "serde")] use serde::{de, Deserialize, Deserializer, Serialize, Serializer}; use sha2::{Digest, Sha256}; use signatory::ed25519; @@ -94,7 +93,6 @@ impl PartialEq for Id { } } -#[cfg(feature = "serde")] impl<'de> Deserialize<'de> for Id { fn deserialize(deserializer: D) -> Result where @@ -111,7 +109,6 @@ impl<'de> Deserialize<'de> for Id { } } -#[cfg(feature = "serde")] impl Serialize for Id { fn serialize(&self, serializer: S) -> Result { self.to_string().serialize(serializer) diff --git a/src/private_key.rs b/src/private_key.rs index 59b1258ee..efdb87dbb 100644 --- a/src/private_key.rs +++ b/src/private_key.rs @@ -1,12 +1,9 @@ //! Cryptographic private keys -#[cfg(feature = "signatory-dalek")] use crate::public_key::PublicKey; use serde::{de, de::Error as _, ser, Deserialize, Serialize}; use signatory::ed25519; -#[cfg(feature = "signatory-dalek")] use signatory::PublicKeyed; -#[cfg(feature = "signatory-dalek")] use signatory_dalek::Ed25519Signer; use subtle_encoding::{Base64, Encoding}; use zeroize::{Zeroize, Zeroizing}; @@ -25,7 +22,6 @@ pub enum PrivateKey { impl PrivateKey { /// Get the public key associated with this private key - #[cfg(feature = "signatory-dalek")] pub fn public_key(&self) -> PublicKey { match self { PrivateKey::Ed25519(private_key) => private_key.public_key(), @@ -47,7 +43,6 @@ pub struct Ed25519Keypair([u8; ED25519_KEYPAIR_SIZE]); impl Ed25519Keypair { /// Get the public key associated with this keypair - #[cfg(feature = "signatory-dalek")] pub fn public_key(&self) -> PublicKey { let seed = ed25519::Seed::from_keypair(&self.0[..]).unwrap(); let pk = signatory_dalek::Ed25519Signer::from(&seed) @@ -63,7 +58,6 @@ impl Ed25519Keypair { } /// Get a Signatory Ed25519 signer (ed25519-dalek based) - #[cfg(feature = "signatory-dalek")] pub fn to_signer(&self) -> Ed25519Signer { Ed25519Signer::from(&self.to_seed()) } diff --git a/src/public_key.rs b/src/public_key.rs index 841050a97..52e7c0765 100644 --- a/src/public_key.rs +++ b/src/public_key.rs @@ -1,7 +1,6 @@ //! Public keys used in Tendermint networks use crate::error::{Error, ErrorKind}; -#[cfg(feature = "serde")] use serde::{de::Error as _, Deserialize, Deserializer, Serialize, Serializer}; use signatory::{ecdsa::curve::secp256k1, ed25519}; use std::{ @@ -9,34 +8,27 @@ use std::{ ops::Deref, str::FromStr, }; -#[cfg(feature = "serde")] use subtle_encoding::base64; use subtle_encoding::{bech32, hex}; /// Public keys allowed in Tendermint protocols -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -#[cfg_attr(feature = "serde", serde(tag = "type", content = "value"))] +#[derive(Serialize, Deserialize)] +#[serde(tag = "type", content = "value")] #[derive(Copy, Clone, Debug, Hash, Eq, PartialEq, PartialOrd, Ord)] pub enum PublicKey { /// Ed25519 keys - #[cfg_attr( - feature = "serde", - serde( - rename = "tendermint/PubKeyEd25519", - serialize_with = "serialize_ed25519_base64", - deserialize_with = "deserialize_ed25519_base64" - ) + #[serde( + rename = "tendermint/PubKeyEd25519", + serialize_with = "serialize_ed25519_base64", + deserialize_with = "deserialize_ed25519_base64" )] Ed25519(ed25519::PublicKey), /// Secp256k1 keys - #[cfg_attr( - feature = "serde", - serde( - rename = "tendermint/PubKeySecp256k1", - serialize_with = "serialize_secp256k1_base64", - deserialize_with = "deserialize_secp256k1_base64" - ) + #[serde( + rename = "tendermint/PubKeySecp256k1", + serialize_with = "serialize_secp256k1_base64", + deserialize_with = "deserialize_secp256k1_base64" )] Secp256k1(secp256k1::PublicKey), } @@ -192,14 +184,12 @@ impl FromStr for Algorithm { } } -#[cfg(feature = "serde")] impl Serialize for Algorithm { fn serialize(&self, serializer: S) -> Result { self.as_str().serialize(serializer) } } -#[cfg(feature = "serde")] impl<'de> Deserialize<'de> for Algorithm { fn deserialize>(deserializer: D) -> Result { Self::from_str(&String::deserialize(deserializer)?) @@ -208,7 +198,6 @@ impl<'de> Deserialize<'de> for Algorithm { } /// Serialize the bytes of an Ed25519 public key as Base64. Used for serializing JSON -#[cfg(feature = "serde")] fn serialize_ed25519_base64(pk: &ed25519::PublicKey, serializer: S) -> Result where S: Serializer, @@ -219,7 +208,6 @@ where } /// Serialize the bytes of a secp256k1 ECDSA public key as Base64. Used for serializing JSON -#[cfg(feature = "serde")] fn serialize_secp256k1_base64( pk: &secp256k1::PublicKey, serializer: S, @@ -232,7 +220,6 @@ where .serialize(serializer) } -#[cfg(feature = "serde")] fn deserialize_ed25519_base64<'de, D>(deserializer: D) -> Result where D: Deserializer<'de>, @@ -243,7 +230,6 @@ where ed25519::PublicKey::from_bytes(&bytes).ok_or_else(|| D::Error::custom("invalid ed25519 key")) } -#[cfg(feature = "serde")] fn deserialize_secp256k1_base64<'de, D>( deserializer: D, ) -> Result @@ -294,7 +280,6 @@ mod tests { ); } - #[cfg(feature = "serde")] #[test] fn json_parsing() { let json_string = "{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RblzMO4is5L1hZz6wo4kPbptzOyue6LTk4+lPhD1FRk=\"}"; diff --git a/src/rpc/endpoint/abci_info.rs b/src/rpc/endpoint/abci_info.rs index 16d4c23d3..c3f5b068d 100644 --- a/src/rpc/endpoint/abci_info.rs +++ b/src/rpc/endpoint/abci_info.rs @@ -46,7 +46,6 @@ pub struct AbciInfo { } /// Parse Base64-encoded app hash -#[cfg(feature = "rpc")] pub(crate) fn parse_app_hash<'de, D>(deserializer: D) -> Result where D: Deserializer<'de>, @@ -58,7 +57,6 @@ where } /// Serialize Base64-encoded app hash -#[cfg(feature = "rpc")] pub(crate) fn serialize_app_hash(hash: &Hash, serializer: S) -> Result where S: Serializer, diff --git a/src/rpc/endpoint/abci_query.rs b/src/rpc/endpoint/abci_query.rs index 88670ff38..d7010ad18 100644 --- a/src/rpc/endpoint/abci_query.rs +++ b/src/rpc/endpoint/abci_query.rs @@ -67,12 +67,9 @@ pub struct AbciQuery { pub info: Option, /// Index - #[cfg_attr( - feature = "serde", - serde( - serialize_with = "serializers::serialize_i64", - deserialize_with = "serializers::parse_i64" - ) + #[serde( + serialize_with = "serializers::serialize_i64", + deserialize_with = "serializers::parse_i64" )] pub index: i64, diff --git a/src/rpc/method.rs b/src/rpc/method.rs index 5275cedf7..c344b649b 100644 --- a/src/rpc/method.rs +++ b/src/rpc/method.rs @@ -107,14 +107,12 @@ impl Display for Method { } } -#[cfg(feature = "serde")] impl Serialize for Method { fn serialize(&self, serializer: S) -> Result { self.as_str().serialize(serializer) } } -#[cfg(feature = "serde")] impl<'de> Deserialize<'de> for Method { fn deserialize>(deserializer: D) -> Result { Self::from_str(&String::deserialize(deserializer)?) diff --git a/src/serializers.rs b/src/serializers.rs index f66cd0a3c..d5dbd3bff 100644 --- a/src/serializers.rs +++ b/src/serializers.rs @@ -1,7 +1,6 @@ //! Serde serializers use serde::{de::Error as _, Deserialize, Deserializer, Serialize, Serializer}; -#[cfg(feature = "rpc")] use std::time::Duration; /// Parse `i64` from a JSON string @@ -43,7 +42,6 @@ where } /// Parse `Duration` from a JSON string containing a nanosecond count -#[cfg(feature = "rpc")] pub(crate) fn parse_duration<'de, D>(deserializer: D) -> Result where D: Deserializer<'de>, @@ -57,7 +55,6 @@ where } /// Serialize `Duration` as a JSON string containing a nanosecond count -#[cfg(feature = "rpc")] pub(crate) fn serialize_duration(duration: &Duration, serializer: S) -> Result where S: Serializer, diff --git a/src/signature.rs b/src/signature.rs index f61c99896..07d7a0101 100644 --- a/src/signature.rs +++ b/src/signature.rs @@ -1,10 +1,7 @@ //! Cryptographic (a.k.a. digital) signatures -#[cfg(feature = "serde")] use serde::{de::Error as _, Deserialize, Deserializer, Serialize, Serializer}; -#[cfg(feature = "serde")] use signatory::Signature as SignatureTrait; -#[cfg(feature = "serde")] use subtle_encoding::base64; /// Signatures @@ -23,7 +20,6 @@ impl Signature { } } -#[cfg(feature = "serde")] impl<'de> Deserialize<'de> for Signature { fn deserialize>(deserializer: D) -> Result { let bytes = base64::decode(String::deserialize(deserializer)?.as_bytes()) @@ -36,7 +32,6 @@ impl<'de> Deserialize<'de> for Signature { } } -#[cfg(feature = "serde")] impl Serialize for Signature { fn serialize(&self, serializer: S) -> Result { let sig_bytes = match self { diff --git a/src/time.rs b/src/time.rs index 39be196f1..33b253f52 100644 --- a/src/time.rs +++ b/src/time.rs @@ -2,16 +2,13 @@ use crate::error::{Error, ErrorKind}; use chrono::{DateTime, Utc}; -#[cfg(feature = "serde")] use serde::{Deserialize, Serialize}; use std::time::{Duration, SystemTime, UNIX_EPOCH}; -#[cfg(feature = "tai64")] use tai64::TAI64N; /// Tendermint timestamps /// -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -#[derive(Copy, Clone, Debug, Eq, PartialEq, PartialOrd, Ord)] +#[derive(Serialize, Deserialize, Copy, Clone, Debug, Eq, PartialEq, PartialOrd, Ord)] pub struct Time(DateTime); impl Time { @@ -70,14 +67,12 @@ impl From