diff --git a/protocols/v2/codec-sv2/src/decoder.rs b/protocols/v2/codec-sv2/src/decoder.rs index 751ae17d5..5f387b3fe 100644 --- a/protocols/v2/codec-sv2/src/decoder.rs +++ b/protocols/v2/codec-sv2/src/decoder.rs @@ -216,6 +216,9 @@ impl<'a, T: Serialize + GetSize + Deserialize<'a>, B: IsBuffer + AeadBuffer> Wit // Since the frame length is already validated during the handshake process, this // operation is infallible + #[allow(clippy::useless_conversion)] + // Clippy is wrong here about the `src.into()` conversion. It is necessary to convert the + // `Vec` into a `B::Slice` to be able to call `from_bytes_unchecked`. let frame = HandShakeFrame::from_bytes_unchecked(src.into()); frame.into() diff --git a/protocols/v2/roles-logic-sv2/Cargo.toml b/protocols/v2/roles-logic-sv2/Cargo.toml index 42039b4ea..e6eff2a6e 100644 --- a/protocols/v2/roles-logic-sv2/Cargo.toml +++ b/protocols/v2/roles-logic-sv2/Cargo.toml @@ -27,9 +27,9 @@ nohash-hasher = "0.2.0" siphasher = "1" primitive-types = "0.13.1" hex = {package = "hex-conservative", version = "*"} +codec_sv2 = { path = "../../../protocols/v2/codec-sv2", features = ["noise_sv2"] } [dev-dependencies] -codec_sv2 = { path = "../../../protocols/v2/codec-sv2" } quickcheck = "1.0.3" quickcheck_macros = "1" rand = "0.8.5" diff --git a/protocols/v2/roles-logic-sv2/src/lib.rs b/protocols/v2/roles-logic-sv2/src/lib.rs index 74627707c..fa514f261 100644 --- a/protocols/v2/roles-logic-sv2/src/lib.rs +++ b/protocols/v2/roles-logic-sv2/src/lib.rs @@ -32,3 +32,13 @@ pub use errors::Error; pub use job_declaration_sv2; pub use mining_sv2; pub use template_distribution_sv2; + +pub use binary_sv2::{Error as BinaryError, B0255, B064K, U256}; + +pub use codec_sv2::{framing_sv2::Error as FramingError, Error as CodecError}; + +pub use codec_sv2::{noise_sv2::Error as NoiseError, HandshakeRole, Initiator, Responder}; + +pub use codec_sv2::{StandardEitherFrame, StandardSv2Frame}; + +pub use const_sv2::MESSAGE_TYPE_CHANNEL_ENDPOINT_CHANGED; diff --git a/roles/Cargo.lock b/roles/Cargo.lock index e0e4afa4b..82345855a 100644 --- a/roles/Cargo.lock +++ b/roles/Cargo.lock @@ -2104,17 +2104,12 @@ version = "0.1.3" dependencies = [ "async-channel 1.9.0", "async-recursion 1.1.1", - "binary_sv2", - "buffer_sv2", - "codec_sv2", "config", - "const_sv2", "error_handling", "hex", "key-utils", "network_helpers_sv2", "nohash-hasher", - "noise_sv2", "rand", "roles_logic_sv2", "serde", @@ -2243,6 +2238,7 @@ version = "2.0.0" dependencies = [ "binary_sv2", "chacha20poly1305", + "codec_sv2", "common_messages_sv2", "const_sv2", "framing_sv2", diff --git a/roles/pool/Cargo.toml b/roles/pool/Cargo.toml index 729ef00d7..abbb635d8 100644 --- a/roles/pool/Cargo.toml +++ b/roles/pool/Cargo.toml @@ -19,12 +19,7 @@ path = "src/lib/mod.rs" [dependencies] stratum-common = { path = "../../common" } async-channel = "1.5.1" -binary_sv2 = { path = "../../protocols/v2/binary-sv2" } -buffer_sv2 = { path = "../../utils/buffer" } -codec_sv2 = { path = "../../protocols/v2/codec-sv2", features = ["noise_sv2"] } -const_sv2 = { path = "../../protocols/v2/const-sv2" } network_helpers_sv2 = { path = "../roles-utils/network-helpers", features =["with_buffer_pool"] } -noise_sv2 = { path = "../../protocols/v2/noise-sv2" } rand = "0.8.4" roles_logic_sv2 = { path = "../../protocols/v2/roles-logic-sv2" } serde = { version = "1.0.89", features = ["derive", "alloc"], default-features = false } diff --git a/roles/pool/src/lib/error.rs b/roles/pool/src/lib/error.rs index ead10b8fa..e5233526f 100644 --- a/roles/pool/src/lib/error.rs +++ b/roles/pool/src/lib/error.rs @@ -1,21 +1,20 @@ +use roles_logic_sv2::{parsers::Mining, BinaryError, CodecError, FramingError, NoiseError}; use std::{ convert::From, fmt::Debug, sync::{MutexGuard, PoisonError}, }; -use roles_logic_sv2::parsers::Mining; - #[derive(std::fmt::Debug)] pub enum PoolError { Io(std::io::Error), ChannelSend(Box), ChannelRecv(async_channel::RecvError), - BinarySv2(binary_sv2::Error), - Codec(codec_sv2::Error), - Noise(noise_sv2::Error), + BinarySv2(BinaryError), + Codec(CodecError), + Noise(NoiseError), RolesLogic(roles_logic_sv2::Error), - Framing(codec_sv2::framing_sv2::Error), + Framing(FramingError), PoisonLock(String), ComponentShutdown(String), Custom(String), @@ -58,20 +57,20 @@ impl From for PoolError { } } -impl From for PoolError { - fn from(e: binary_sv2::Error) -> PoolError { +impl From for PoolError { + fn from(e: BinaryError) -> PoolError { PoolError::BinarySv2(e) } } -impl From for PoolError { - fn from(e: codec_sv2::Error) -> PoolError { +impl From for PoolError { + fn from(e: CodecError) -> PoolError { PoolError::Codec(e) } } -impl From for PoolError { - fn from(e: noise_sv2::Error) -> PoolError { +impl From for PoolError { + fn from(e: NoiseError) -> PoolError { PoolError::Noise(e) } } @@ -93,8 +92,8 @@ impl From for PoolError { PoolError::Custom(e) } } -impl From for PoolError { - fn from(e: codec_sv2::framing_sv2::Error) -> PoolError { +impl From for PoolError { + fn from(e: FramingError) -> PoolError { PoolError::Framing(e) } } diff --git a/roles/pool/src/lib/mining_pool/mod.rs b/roles/pool/src/lib/mining_pool/mod.rs index 49d6c49aa..b2665183f 100644 --- a/roles/pool/src/lib/mining_pool/mod.rs +++ b/roles/pool/src/lib/mining_pool/mod.rs @@ -5,8 +5,6 @@ use super::{ status, }; use async_channel::{Receiver, Sender}; -use binary_sv2::U256; -use codec_sv2::{HandshakeRole, Responder, StandardEitherFrame, StandardSv2Frame}; use error_handling::handle_result; use key_utils::SignatureService; use network_helpers_sv2::noise_connection::Connection; @@ -22,6 +20,7 @@ use roles_logic_sv2::{ routing_logic::MiningRoutingLogic, template_distribution_sv2::{NewTemplate, SetNewPrevHash, SubmitSolution}, utils::{CoinbaseOutput as CoinbaseOutput_, Mutex}, + CodecError, HandshakeRole, Responder, StandardEitherFrame, StandardSv2Frame, U256, }; use std::{collections::HashMap, convert::TryInto, net::SocketAddr, sync::Arc}; use stratum_common::{ @@ -137,7 +136,7 @@ impl Downstream { Ok(received) => { let received: Result = received .try_into() - .map_err(|e| PoolError::Codec(codec_sv2::Error::FramingSv2Error(e))); + .map_err(|e| PoolError::Codec(CodecError::FramingSv2Error(e))); let std_frame = handle_result!(status_tx, received); handle_result!( status_tx, @@ -562,8 +561,8 @@ impl Pool { #[cfg(test)] mod test { - use binary_sv2::{B0255, B064K}; use ext_config::{Config, File, FileFormat}; + use roles_logic_sv2::{B0255, B064K}; use std::convert::TryInto; use tracing::error; diff --git a/roles/pool/src/lib/template_receiver/mod.rs b/roles/pool/src/lib/template_receiver/mod.rs index c22f3d745..c5b5b0e59 100644 --- a/roles/pool/src/lib/template_receiver/mod.rs +++ b/roles/pool/src/lib/template_receiver/mod.rs @@ -4,7 +4,6 @@ use super::{ status, }; use async_channel::{Receiver, Sender}; -use codec_sv2::{HandshakeRole, Initiator}; use error_handling::handle_result; use key_utils::Secp256k1PublicKey; use network_helpers_sv2::noise_connection::Connection; @@ -15,6 +14,7 @@ use roles_logic_sv2::{ CoinbaseOutputDataSize, NewTemplate, SetNewPrevHash, SubmitSolution, }, utils::Mutex, + CodecError, HandshakeRole, Initiator, }; use std::{convert::TryInto, net::SocketAddr, sync::Arc}; use tokio::{net::TcpStream, task}; @@ -114,7 +114,7 @@ impl TemplateRx { status_tx, message_from_tp .try_into() - .map_err(|e| PoolError::Codec(codec_sv2::Error::FramingSv2Error(e))) + .map_err(|e| PoolError::Codec(CodecError::FramingSv2Error(e))) ); let message_type_res = message_from_tp .get_header() diff --git a/roles/pool/src/lib/template_receiver/setup_connection.rs b/roles/pool/src/lib/template_receiver/setup_connection.rs index 50c681f7b..12ff5f4ed 100644 --- a/roles/pool/src/lib/template_receiver/setup_connection.rs +++ b/roles/pool/src/lib/template_receiver/setup_connection.rs @@ -10,6 +10,7 @@ use roles_logic_sv2::{ parsers::{AnyMessage, CommonMessages}, routing_logic::{CommonRoutingLogic, NoRouting}, utils::Mutex, + CodecError, MESSAGE_TYPE_CHANNEL_ENDPOINT_CHANGED, }; use std::{convert::TryInto, net::SocketAddr, sync::Arc}; @@ -52,7 +53,7 @@ impl SetupConnectionHandler { .recv() .await? .try_into() - .map_err(|e| PoolError::Codec(codec_sv2::Error::FramingSv2Error(e)))?; + .map_err(|e| PoolError::Codec(CodecError::FramingSv2Error(e)))?; let message_type = incoming .get_header() .ok_or_else(|| PoolError::Custom(String::from("No header set")))? @@ -101,7 +102,7 @@ impl ParseUpstreamCommonMessages for SetupConnectionHandler { _: roles_logic_sv2::common_messages_sv2::ChannelEndpointChanged, ) -> Result { Err(Error::UnexpectedMessage( - const_sv2::MESSAGE_TYPE_CHANNEL_ENDPOINT_CHANGED, + MESSAGE_TYPE_CHANNEL_ENDPOINT_CHANGED, )) } }