From 0eea21e13c4df743f9c9de96d1595012ab54e4a6 Mon Sep 17 00:00:00 2001 From: Rigidity Date: Sun, 9 Jun 2024 16:39:42 -0400 Subject: [PATCH 1/2] Cleanup error types --- crates/chia-sdk-parser/src/conditions.rs | 43 +++++-------------- crates/chia-sdk-parser/src/error.rs | 14 +++--- crates/chia-sdk-signer/src/error.rs | 15 +++++++ crates/chia-sdk-signer/src/lib.rs | 4 +- .../chia-sdk-signer/src/required_signature.rs | 8 ++-- crates/chia-sdk-signer/src/sign_error.rs | 15 ------- crates/chia-sdk-test/src/simulator.rs | 4 +- .../{simulator_error.rs => error.rs} | 6 +-- .../src/simulator/simulator_data.rs | 2 +- .../src/simulator/ws_connection.rs | 2 +- 10 files changed, 46 insertions(+), 67 deletions(-) create mode 100644 crates/chia-sdk-signer/src/error.rs delete mode 100644 crates/chia-sdk-signer/src/sign_error.rs rename crates/chia-sdk-test/src/simulator/{simulator_error.rs => error.rs} (89%) diff --git a/crates/chia-sdk-parser/src/conditions.rs b/crates/chia-sdk-parser/src/conditions.rs index e16ba164..dc26fc8e 100644 --- a/crates/chia-sdk-parser/src/conditions.rs +++ b/crates/chia-sdk-parser/src/conditions.rs @@ -2,29 +2,18 @@ use std::collections::HashSet; use chia_protocol::{Coin, CoinSpend}; use chia_sdk_types::conditions::Condition; -use clvm_traits::{FromClvm, FromClvmError, ToClvmError, ToNodePtr}; -use clvmr::{ - reduction::{EvalErr, Reduction}, - Allocator, NodePtr, -}; -use thiserror::Error; - -#[derive(Debug, Error)] -pub enum ConditionError { - #[error("eval error: {0}")] - Eval(#[from] EvalErr), - - #[error("clvm error: {0}")] - Clvm(#[from] FromClvmError), -} +use clvm_traits::{FromClvm, ToNodePtr}; +use clvmr::{reduction::Reduction, Allocator, NodePtr}; + +use crate::ParseError; pub fn parse_conditions( allocator: &mut Allocator, conditions: NodePtr, -) -> Result>, FromClvmError> { +) -> Result>, ParseError> { Vec::::from_clvm(allocator, conditions)? .into_iter() - .map(|condition| Condition::from_clvm(allocator, condition)) + .map(|condition| Ok(Condition::from_clvm(allocator, condition)?)) .collect() } @@ -32,7 +21,7 @@ pub fn run_puzzle( allocator: &mut Allocator, puzzle: NodePtr, solution: NodePtr, -) -> Result { +) -> Result { let Reduction(_cost, output) = clvmr::run_program( allocator, &clvmr::ChiaDialect::new(0), @@ -47,24 +36,12 @@ pub fn puzzle_conditions( allocator: &mut Allocator, puzzle: NodePtr, solution: NodePtr, -) -> Result>, ConditionError> { +) -> Result>, ParseError> { let output = run_puzzle(allocator, puzzle, solution)?; - Ok(parse_conditions(allocator, output)?) -} - -#[derive(Debug, Error)] -pub enum ParseBundleError { - #[error("condition error: {0}")] - Condition(#[from] ConditionError), - - #[error("to clvm error: {0}")] - ToClvm(#[from] ToClvmError), - - #[error("from clvm error: {0}")] - From(#[from] FromClvmError), + parse_conditions(allocator, output) } -pub fn non_ephemeral_coins(coin_spends: &[CoinSpend]) -> Result, ParseBundleError> { +pub fn non_ephemeral_coins(coin_spends: &[CoinSpend]) -> Result, ParseError> { let mut allocator = Allocator::new(); let mut created_coins = HashSet::new(); diff --git a/crates/chia-sdk-parser/src/error.rs b/crates/chia-sdk-parser/src/error.rs index 29114f07..1b748c08 100644 --- a/crates/chia-sdk-parser/src/error.rs +++ b/crates/chia-sdk-parser/src/error.rs @@ -1,15 +1,17 @@ -use clvm_traits::FromClvmError; +use clvm_traits::{FromClvmError, ToClvmError}; +use clvmr::reduction::EvalErr; use thiserror::Error; -use crate::ConditionError; - #[derive(Debug, Error)] pub enum ParseError { - #[error("failed to parse clvm value: {0}")] + #[error("failed to serialize clvm value: {0}")] + ToClvm(#[from] ToClvmError), + + #[error("failed to deserialize clvm value: {0}")] FromClvm(#[from] FromClvmError), - #[error("condition error: {0}")] - Condition(#[from] ConditionError), + #[error("clvm eval error: {0}")] + Eval(#[from] EvalErr), #[error("invalid mod hash")] InvalidModHash, diff --git a/crates/chia-sdk-signer/src/error.rs b/crates/chia-sdk-signer/src/error.rs new file mode 100644 index 00000000..5f4ff5ea --- /dev/null +++ b/crates/chia-sdk-signer/src/error.rs @@ -0,0 +1,15 @@ +use chia_sdk_parser::ParseError; +use clvm_traits::ToClvmError; +use thiserror::Error; + +#[derive(Debug, Error)] +pub enum SignerError { + #[error("parse error: {0}")] + ParseError(#[from] ParseError), + + #[error("clvm error")] + ToClvm(#[from] ToClvmError), + + #[error("infinity public key")] + InfinityPublicKey, +} diff --git a/crates/chia-sdk-signer/src/lib.rs b/crates/chia-sdk-signer/src/lib.rs index 9e4e108c..26a78b83 100644 --- a/crates/chia-sdk-signer/src/lib.rs +++ b/crates/chia-sdk-signer/src/lib.rs @@ -1,5 +1,5 @@ +mod error; mod required_signature; -mod sign_error; +pub use error::*; pub use required_signature::*; -pub use sign_error::*; diff --git a/crates/chia-sdk-signer/src/required_signature.rs b/crates/chia-sdk-signer/src/required_signature.rs index 8f6f3fd2..53e9625d 100644 --- a/crates/chia-sdk-signer/src/required_signature.rs +++ b/crates/chia-sdk-signer/src/required_signature.rs @@ -10,7 +10,7 @@ use clvmr::{ Allocator, }; -use crate::SignError; +use crate::SignerError; #[derive(Debug, Clone)] pub struct RequiredSignature { @@ -93,7 +93,7 @@ impl RequiredSignature { allocator: &mut Allocator, coin_spend: &CoinSpend, agg_sig_me: Bytes32, - ) -> Result, SignError> { + ) -> Result, SignerError> { let puzzle = coin_spend.puzzle_reveal.to_node_ptr(allocator)?; let solution = coin_spend.solution.to_node_ptr(allocator)?; let conditions = puzzle_conditions(allocator, puzzle, solution)?; @@ -106,7 +106,7 @@ impl RequiredSignature { }; if agg_sig.public_key.is_inf() { - return Err(SignError::InfinityPublicKey); + return Err(SignerError::InfinityPublicKey); } result.push(Self::from_condition(&coin_spend.coin, agg_sig, agg_sig_me)); @@ -122,7 +122,7 @@ impl RequiredSignature { allocator: &mut Allocator, coin_spends: &[CoinSpend], agg_sig_me: Bytes32, - ) -> Result, SignError> { + ) -> Result, SignerError> { let mut required_signatures = Vec::new(); for coin_spend in coin_spends { required_signatures.extend(Self::from_coin_spend(allocator, coin_spend, agg_sig_me)?); diff --git a/crates/chia-sdk-signer/src/sign_error.rs b/crates/chia-sdk-signer/src/sign_error.rs deleted file mode 100644 index 82a1efe3..00000000 --- a/crates/chia-sdk-signer/src/sign_error.rs +++ /dev/null @@ -1,15 +0,0 @@ -use chia_sdk_parser::ConditionError; -use clvm_traits::ToClvmError; -use thiserror::Error; - -#[derive(Debug, Error)] -pub enum SignError { - #[error("condition error: {0}")] - Condition(#[from] ConditionError), - - #[error("to clvm error: {0}")] - Clvm(#[from] ToClvmError), - - #[error("infinity public key")] - InfinityPublicKey, -} diff --git a/crates/chia-sdk-test/src/simulator.rs b/crates/chia-sdk-test/src/simulator.rs index 1ae1344d..95e9e9d2 100644 --- a/crates/chia-sdk-test/src/simulator.rs +++ b/crates/chia-sdk-test/src/simulator.rs @@ -4,20 +4,20 @@ use bip39::Mnemonic; use chia_bls::SecretKey; use chia_client::Peer; use chia_protocol::{Bytes32, Coin, CoinState}; +use error::SimulatorError; use peer_map::PeerMap; use rand::{Rng, SeedableRng}; use rand_chacha::ChaCha8Rng; use simulator_config::SimulatorConfig; use simulator_data::SimulatorData; -use simulator_error::SimulatorError; use tokio::{net::TcpListener, sync::Mutex, task::JoinHandle}; use tokio_tungstenite::connect_async; use ws_connection::ws_connection; +mod error; mod peer_map; mod simulator_config; mod simulator_data; -mod simulator_error; mod ws_connection; #[derive(Debug)] diff --git a/crates/chia-sdk-test/src/simulator/simulator_error.rs b/crates/chia-sdk-test/src/simulator/error.rs similarity index 89% rename from crates/chia-sdk-test/src/simulator/simulator_error.rs rename to crates/chia-sdk-test/src/simulator/error.rs index 33f4399d..d9921535 100644 --- a/crates/chia-sdk-test/src/simulator/simulator_error.rs +++ b/crates/chia-sdk-test/src/simulator/error.rs @@ -2,7 +2,7 @@ use std::io; use chia_consensus::gen::validation_error::ValidationErr; use chia_protocol::ProtocolMessageTypes; -use chia_sdk_signer::SignError; +use chia_sdk_signer::SignerError; use futures_channel::mpsc::SendError; use thiserror::Error; use tokio_tungstenite::tungstenite; @@ -21,8 +21,8 @@ pub enum SimulatorError { #[error("consensus error: {0}")] Consensus(#[from] chia_consensus::error::Error), - #[error("sign error: {0}")] - Sign(#[from] SignError), + #[error("signer error: {0}")] + Signer(#[from] SignerError), #[error("validation error: {0}")] Validation(#[from] ValidationErr), diff --git a/crates/chia-sdk-test/src/simulator/simulator_data.rs b/crates/chia-sdk-test/src/simulator/simulator_data.rs index ff3e4c95..62de381b 100644 --- a/crates/chia-sdk-test/src/simulator/simulator_data.rs +++ b/crates/chia-sdk-test/src/simulator/simulator_data.rs @@ -18,7 +18,7 @@ use clvmr::{ use indexmap::{IndexMap, IndexSet}; use tokio::sync::MutexGuard; -use super::{simulator_config::SimulatorConfig, simulator_error::SimulatorError}; +use super::{error::SimulatorError, simulator_config::SimulatorConfig}; #[derive(Debug, Default, Clone)] pub(crate) struct SimulatorData { diff --git a/crates/chia-sdk-test/src/simulator/ws_connection.rs b/crates/chia-sdk-test/src/simulator/ws_connection.rs index cb8fbea4..33ade431 100644 --- a/crates/chia-sdk-test/src/simulator/ws_connection.rs +++ b/crates/chia-sdk-test/src/simulator/ws_connection.rs @@ -21,10 +21,10 @@ use tokio::{ use tokio_tungstenite::{tungstenite::Message as WsMessage, WebSocketStream}; use super::{ + error::SimulatorError, peer_map::Ws, simulator_config::SimulatorConfig, simulator_data::{new_transaction, SimulatorData}, - simulator_error::SimulatorError, PeerMap, }; From 08f3fb67320d34c3e23c87aa01aa68bdea4113cf Mon Sep 17 00:00:00 2001 From: Rigidity Date: Sun, 9 Jun 2024 16:40:29 -0400 Subject: [PATCH 2/2] ParseError => Parse --- crates/chia-sdk-signer/src/error.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/chia-sdk-signer/src/error.rs b/crates/chia-sdk-signer/src/error.rs index 5f4ff5ea..85199a84 100644 --- a/crates/chia-sdk-signer/src/error.rs +++ b/crates/chia-sdk-signer/src/error.rs @@ -5,7 +5,7 @@ use thiserror::Error; #[derive(Debug, Error)] pub enum SignerError { #[error("parse error: {0}")] - ParseError(#[from] ParseError), + Parse(#[from] ParseError), #[error("clvm error")] ToClvm(#[from] ToClvmError),