diff --git a/daemon/build.rs b/daemon/build.rs index fdc86e2..eab1855 100644 --- a/daemon/build.rs +++ b/daemon/build.rs @@ -1,5 +1,7 @@ use anyhow::Result; -use vergen::{vergen, Config, SemverKind}; +use vergen::vergen; +use vergen::Config; +use vergen::SemverKind; fn main() -> Result<()> { std::fs::create_dir_all("../maker-frontend/dist/maker")?; diff --git a/daemon/src/address_map.rs b/daemon/src/address_map.rs index 7425b6e..7cfc961 100644 --- a/daemon/src/address_map.rs +++ b/daemon/src/address_map.rs @@ -2,7 +2,9 @@ use anyhow::Result; use std::collections::hash_map::Entry; use std::collections::HashMap; use std::hash::Hash; -use xtra::{Address, Handler, Message}; +use xtra::Address; +use xtra::Handler; +use xtra::Message; pub struct AddressMap { inner: HashMap>, diff --git a/daemon/src/auth.rs b/daemon/src/auth.rs index 1689d99..143ab1b 100644 --- a/daemon/src/auth.rs +++ b/daemon/src/auth.rs @@ -1,9 +1,13 @@ use hex::FromHexError; use rocket::http::Status; -use rocket::outcome::{try_outcome, IntoOutcome}; -use rocket::request::{FromRequest, Outcome}; -use rocket::{Request, State}; -use rocket_basicauth::{BasicAuth, BasicAuthError}; +use rocket::outcome::try_outcome; +use rocket::outcome::IntoOutcome; +use rocket::request::FromRequest; +use rocket::request::Outcome; +use rocket::Request; +use rocket::State; +use rocket_basicauth::BasicAuth; +use rocket_basicauth::BasicAuthError; use std::fmt; use std::str::FromStr; diff --git a/daemon/src/bdk_ext.rs b/daemon/src/bdk_ext.rs index 4beb979..786005d 100644 --- a/daemon/src/bdk_ext.rs +++ b/daemon/src/bdk_ext.rs @@ -1,14 +1,18 @@ use anyhow::Result; +use bdk::bitcoin; use bdk::bitcoin::util::bip32::ExtendedPrivKey; -use bdk::bitcoin::{self, Amount, Network}; -use rand::{CryptoRng, RngCore}; +use bdk::bitcoin::Amount; +use bdk::bitcoin::Network; +use rand::CryptoRng; +use rand::RngCore; pub fn new_test_wallet( rng: &mut (impl RngCore + CryptoRng), utxo_amount: Amount, num_utxos: u8, ) -> Result> { - use bdk::{populate_test_db, testutils}; + use bdk::populate_test_db; + use bdk::testutils; let mut seed = [0u8; 32]; rng.fill_bytes(&mut seed); diff --git a/daemon/src/bitmex_price_feed.rs b/daemon/src/bitmex_price_feed.rs index d0d5115..27a62a4 100644 --- a/daemon/src/bitmex_price_feed.rs +++ b/daemon/src/bitmex_price_feed.rs @@ -1,8 +1,12 @@ -use crate::model::{Price, Timestamp}; -use crate::{projection, supervisor, Tasks}; +use crate::model::Price; +use crate::model::Timestamp; +use crate::projection; +use crate::supervisor; +use crate::Tasks; use anyhow::Result; use async_trait::async_trait; -use futures::{SinkExt, TryStreamExt}; +use futures::SinkExt; +use futures::TryStreamExt; use rust_decimal::Decimal; use std::convert::TryFrom; use std::time::Duration; diff --git a/daemon/src/cfd_actors.rs b/daemon/src/cfd_actors.rs index be7808f..91744d1 100644 --- a/daemon/src/cfd_actors.rs +++ b/daemon/src/cfd_actors.rs @@ -1,6 +1,16 @@ -use crate::model::cfd::{Attestation, Cfd, CfdState, OrderId}; -use crate::{db, monitor, oracle, projection, try_continue, wallet}; -use anyhow::{bail, Context, Result}; +use crate::db; +use crate::model::cfd::Attestation; +use crate::model::cfd::Cfd; +use crate::model::cfd::CfdState; +use crate::model::cfd::OrderId; +use crate::monitor; +use crate::oracle; +use crate::projection; +use crate::try_continue; +use crate::wallet; +use anyhow::bail; +use anyhow::Context; +use anyhow::Result; use sqlx::pool::PoolConnection; use sqlx::Sqlite; diff --git a/daemon/src/collab_settlement_maker.rs b/daemon/src/collab_settlement_maker.rs index 25aba91..e696b11 100644 --- a/daemon/src/collab_settlement_maker.rs +++ b/daemon/src/collab_settlement_maker.rs @@ -1,9 +1,14 @@ -use crate::address_map::{ActorName, Stopping}; -use crate::model::cfd::{ - Cfd, CollaborativeSettlement, OrderId, Role, SettlementKind, SettlementProposal, -}; +use crate::address_map::ActorName; +use crate::address_map::Stopping; +use crate::maker_inc_connections; +use crate::model::cfd::Cfd; +use crate::model::cfd::CollaborativeSettlement; +use crate::model::cfd::OrderId; +use crate::model::cfd::Role; +use crate::model::cfd::SettlementKind; +use crate::model::cfd::SettlementProposal; use crate::model::Identity; -use crate::{maker_inc_connections, projection}; +use crate::projection; use anyhow::Context; use async_trait::async_trait; use bdk::bitcoin::Script; diff --git a/daemon/src/collab_settlement_taker.rs b/daemon/src/collab_settlement_taker.rs index 9599727..60df227 100644 --- a/daemon/src/collab_settlement_taker.rs +++ b/daemon/src/collab_settlement_taker.rs @@ -1,10 +1,16 @@ -use crate::address_map::{ActorName, Stopping}; -use crate::model::cfd::{ - Cfd, CollaborativeSettlement, OrderId, SettlementKind, SettlementProposal, -}; +use crate::address_map::ActorName; +use crate::address_map::Stopping; +use crate::connection; +use crate::model::cfd::Cfd; +use crate::model::cfd::CollaborativeSettlement; +use crate::model::cfd::OrderId; +use crate::model::cfd::SettlementKind; +use crate::model::cfd::SettlementProposal; use crate::model::Price; -use crate::{connection, projection, wire}; -use anyhow::{Context, Result}; +use crate::projection; +use crate::wire; +use anyhow::Context; +use anyhow::Result; use async_trait::async_trait; use xtra::prelude::MessageChannel; use xtra_productivity::xtra_productivity; diff --git a/daemon/src/connection.rs b/daemon/src/connection.rs index 44acab1..dfe0598 100644 --- a/daemon/src/connection.rs +++ b/daemon/src/connection.rs @@ -1,22 +1,39 @@ -use crate::address_map::{AddressMap, Stopping}; +use crate::address_map::AddressMap; +use crate::address_map::Stopping; +use crate::collab_settlement_taker; +use crate::log_error; use crate::model::cfd::OrderId; -use crate::model::{Identity, Price, Timestamp, Usd}; +use crate::model::Identity; +use crate::model::Price; +use crate::model::Timestamp; +use crate::model::Usd; +use crate::noise; +use crate::rollover_taker; +use crate::send_to_socket; +use crate::setup_taker; use crate::taker_cfd::CurrentOrder; use crate::tokio_ext::FutureExt; -use crate::wire::{EncryptedJsonCodec, TakerToMaker, Version}; -use crate::{ - collab_settlement_taker, log_error, noise, rollover_taker, send_to_socket, setup_taker, wire, - Tasks, -}; -use anyhow::{bail, Context, Result}; +use crate::wire; +use crate::wire::EncryptedJsonCodec; +use crate::wire::TakerToMaker; +use crate::wire::Version; +use crate::Tasks; +use anyhow::bail; +use anyhow::Context; +use anyhow::Result; use bdk::bitcoin::Amount; -use futures::{SinkExt, StreamExt, TryStreamExt}; +use futures::SinkExt; +use futures::StreamExt; +use futures::TryStreamExt; use std::net::SocketAddr; -use std::sync::{Arc, Mutex}; -use std::time::{Duration, SystemTime}; +use std::sync::Arc; +use std::sync::Mutex; +use std::time::Duration; +use std::time::SystemTime; use tokio::net::TcpStream; use tokio::sync::watch; -use tokio_util::codec::{FramedRead, FramedWrite}; +use tokio_util::codec::FramedRead; +use tokio_util::codec::FramedWrite; use xtra::prelude::MessageChannel; use xtra::KeepRunning; use xtra_productivity::xtra_productivity; diff --git a/daemon/src/db.rs b/daemon/src/db.rs index 59d37b7..869a57b 100644 --- a/daemon/src/db.rs +++ b/daemon/src/db.rs @@ -1,8 +1,12 @@ -use crate::model::cfd::{Cfd, CfdState, OrderId}; +use crate::model::cfd::Cfd; +use crate::model::cfd::CfdState; +use crate::model::cfd::OrderId; use crate::model::BitMexPriceEventId; -use anyhow::{Context, Result}; +use anyhow::Context; +use anyhow::Result; use sqlx::pool::PoolConnection; -use sqlx::{Sqlite, SqlitePool}; +use sqlx::Sqlite; +use sqlx::SqlitePool; use std::mem; use time::Duration; @@ -355,8 +359,13 @@ pub async fn load_cfds_by_oracle_event_id( #[cfg(test)] mod tests { use super::*; - use crate::model::cfd::{Cfd, CfdState, Order, Origin}; - use crate::model::{Identity, Price, Usd}; + use crate::model::cfd::Cfd; + use crate::model::cfd::CfdState; + use crate::model::cfd::Order; + use crate::model::cfd::Origin; + use crate::model::Identity; + use crate::model::Price; + use crate::model::Usd; use crate::seed::Seed; use pretty_assertions::assert_eq; use rand::Rng; diff --git a/daemon/src/housekeeping.rs b/daemon/src/housekeeping.rs index c20f287..e243b84 100644 --- a/daemon/src/housekeeping.rs +++ b/daemon/src/housekeeping.rs @@ -1,9 +1,13 @@ -use crate::db::{append_cfd_state, load_all_cfds}; -use crate::model::cfd::{Cfd, CfdState}; -use crate::{try_continue, wallet}; +use crate::db::append_cfd_state; +use crate::db::load_all_cfds; +use crate::model::cfd::Cfd; +use crate::model::cfd::CfdState; +use crate::try_continue; +use crate::wallet; use anyhow::Result; use sqlx::pool::PoolConnection; -use sqlx::{Sqlite, SqlitePool}; +use sqlx::Sqlite; +use sqlx::SqlitePool; use xtra::Address; /// Perform necessary housekeeping before actor system startup diff --git a/daemon/src/keypair.rs b/daemon/src/keypair.rs index d9afffe..4cae028 100644 --- a/daemon/src/keypair.rs +++ b/daemon/src/keypair.rs @@ -1,6 +1,8 @@ use bdk::bitcoin; -use bdk::bitcoin::secp256k1::{self, SECP256K1}; -use rand::{CryptoRng, RngCore}; +use bdk::bitcoin::secp256k1; +use bdk::bitcoin::secp256k1::SECP256K1; +use rand::CryptoRng; +use rand::RngCore; pub fn new(rng: &mut R) -> (secp256k1::SecretKey, bitcoin::PublicKey) where diff --git a/daemon/src/lib.rs b/daemon/src/lib.rs index d3d65b5..053378d 100644 --- a/daemon/src/lib.rs +++ b/daemon/src/lib.rs @@ -1,8 +1,11 @@ #![cfg_attr(not(test), warn(clippy::unwrap_used))] #![warn(clippy::disallowed_method)] use crate::db::load_all_cfds; -use crate::maker_cfd::{FromTaker, TakerConnected}; -use crate::model::cfd::{Cfd, Order, UpdateCfdProposals}; +use crate::maker_cfd::FromTaker; +use crate::maker_cfd::TakerConnected; +use crate::model::cfd::Cfd; +use crate::model::cfd::Order; +use crate::model::cfd::UpdateCfdProposals; use crate::model::Identity; use crate::oracle::Attestation; use crate::tokio_ext::FutureExt; @@ -16,8 +19,10 @@ use sqlx::SqlitePool; use std::future::Future; use std::time::Duration; use tokio::sync::watch; -use xtra::message_channel::{MessageChannel, StrongMessageChannel}; -use xtra::{Actor, Address}; +use xtra::message_channel::MessageChannel; +use xtra::message_channel::StrongMessageChannel; +use xtra::Actor; +use xtra::Address; pub mod sqlx_ext; // Must come first because it is a macro. diff --git a/daemon/src/logger.rs b/daemon/src/logger.rs index c450794..ce72f85 100644 --- a/daemon/src/logger.rs +++ b/daemon/src/logger.rs @@ -1,7 +1,8 @@ use anyhow::Result; use tracing_subscriber::filter::LevelFilter; use tracing_subscriber::fmt::time::ChronoLocal; -use tracing_subscriber::{EnvFilter, FmtSubscriber}; +use tracing_subscriber::EnvFilter; +use tracing_subscriber::FmtSubscriber; pub fn init(level: LevelFilter, json_format: bool) -> Result<()> { if level == LevelFilter::OFF { diff --git a/daemon/src/maker.rs b/daemon/src/maker.rs index a70aa1d..0bff118 100644 --- a/daemon/src/maker.rs +++ b/daemon/src/maker.rs @@ -1,16 +1,30 @@ -use anyhow::{Context, Result}; +use anyhow::Context; +use anyhow::Result; +use bdk::bitcoin; use bdk::bitcoin::secp256k1::schnorrsig; use bdk::bitcoin::Amount; -use bdk::{bitcoin, FeeRate}; -use clap::{Parser, Subcommand}; -use daemon::auth::{self, MAKER_USERNAME}; +use bdk::FeeRate; +use clap::Parser; +use clap::Subcommand; +use daemon::auth; +use daemon::auth::MAKER_USERNAME; +use daemon::bitmex_price_feed; +use daemon::db; +use daemon::housekeeping; +use daemon::logger; +use daemon::maker_inc_connections; use daemon::model::cfd::Role; +use daemon::monitor; +use daemon::oracle; +use daemon::projection; use daemon::seed::Seed; -use daemon::{ - bitmex_price_feed, db, housekeeping, logger, maker_inc_connections, monitor, oracle, - projection, supervisor, wallet, MakerActorSystem, Tasks, HEARTBEAT_INTERVAL, N_PAYOUTS, - SETTLEMENT_INTERVAL, -}; +use daemon::supervisor; +use daemon::wallet; +use daemon::MakerActorSystem; +use daemon::Tasks; +use daemon::HEARTBEAT_INTERVAL; +use daemon::N_PAYOUTS; +use daemon::SETTLEMENT_INTERVAL; use sqlx::sqlite::SqliteConnectOptions; use sqlx::SqlitePool; use std::net::SocketAddr; diff --git a/daemon/src/maker_cfd.rs b/daemon/src/maker_cfd.rs index b76719f..604646b 100644 --- a/daemon/src/maker_cfd.rs +++ b/daemon/src/maker_cfd.rs @@ -1,31 +1,56 @@ -use crate::address_map::{AddressMap, Stopping}; -use crate::cfd_actors::{self, append_cfd_state, insert_cfd_and_update_feed}; +use crate::address_map::AddressMap; +use crate::address_map::Stopping; +use crate::cfd_actors::append_cfd_state; +use crate::cfd_actors::insert_cfd_and_update_feed; +use crate::cfd_actors::{self}; +use crate::collab_settlement_maker; use crate::db::load_cfd_by_order_id; -use crate::model::cfd::{ - Cfd, CfdState, CfdStateCommon, Dlc, Order, OrderId, Origin, Role, RollOverProposal, - SettlementKind, SettlementProposal, UpdateCfdProposal, -}; -use crate::model::{Identity, Price, Timestamp, Usd}; +use crate::log_error; +use crate::maker_inc_connections; +use crate::model::cfd::Cfd; +use crate::model::cfd::CfdState; +use crate::model::cfd::CfdStateCommon; +use crate::model::cfd::Dlc; +use crate::model::cfd::Order; +use crate::model::cfd::OrderId; +use crate::model::cfd::Origin; +use crate::model::cfd::Role; +use crate::model::cfd::RollOverProposal; +use crate::model::cfd::SettlementKind; +use crate::model::cfd::SettlementProposal; +use crate::model::cfd::UpdateCfdProposal; +use crate::model::Identity; +use crate::model::Price; +use crate::model::Timestamp; +use crate::model::Usd; use crate::monitor::MonitorParams; -use crate::projection::{ - try_into_update_rollover_proposal, Update, UpdateRollOverProposal, UpdateSettlementProposal, -}; +use crate::monitor::{self}; +use crate::oracle; +use crate::projection; +use crate::projection::try_into_update_rollover_proposal; +use crate::projection::Update; +use crate::projection::UpdateRollOverProposal; +use crate::projection::UpdateSettlementProposal; +use crate::setup_contract; use crate::setup_contract::RolloverParams; +use crate::setup_maker; use crate::tokio_ext::FutureExt; +use crate::wallet; +use crate::wire; use crate::wire::TakerToMaker; -use crate::{ - collab_settlement_maker, log_error, maker_inc_connections, monitor, oracle, projection, - setup_contract, setup_maker, wallet, wire, Tasks, -}; -use anyhow::{Context as _, Result}; +use crate::Tasks; +use anyhow::Context as _; +use anyhow::Result; use async_trait::async_trait; use bdk::bitcoin::secp256k1::schnorrsig; use futures::channel::mpsc; +use futures::future; use futures::future::RemoteHandle; -use futures::{future, SinkExt}; +use futures::SinkExt; use sqlx::pool::PoolConnection; use sqlx::Sqlite; -use std::collections::{HashMap, HashSet}; +use std::collections::HashMap; +use std::collections::HashSet; use time::Duration; use xtra::prelude::*; use xtra::Actor as _; diff --git a/daemon/src/maker_inc_connections.rs b/daemon/src/maker_inc_connections.rs index 5d72295..b84faf7 100644 --- a/daemon/src/maker_inc_connections.rs +++ b/daemon/src/maker_inc_connections.rs @@ -1,20 +1,39 @@ -use crate::address_map::{AddressMap, Stopping}; -use crate::maker_cfd::{FromTaker, TakerConnected, TakerDisconnected}; -use crate::model::cfd::{Order, OrderId}; +use crate::address_map::AddressMap; +use crate::address_map::Stopping; +use crate::collab_settlement_maker; +use crate::maker_cfd; +use crate::maker_cfd::FromTaker; +use crate::maker_cfd::TakerConnected; +use crate::maker_cfd::TakerDisconnected; +use crate::model::cfd::Order; +use crate::model::cfd::OrderId; use crate::model::Identity; +use crate::noise; use crate::noise::TransportStateExt; +use crate::send_to_socket; +use crate::setup_maker; use crate::tokio_ext::FutureExt; -use crate::wire::{taker_to_maker, EncryptedJsonCodec, MakerToTaker, TakerToMaker, Version}; -use crate::{collab_settlement_maker, maker_cfd, noise, send_to_socket, setup_maker, wire, Tasks}; -use anyhow::{bail, Context, Result}; -use futures::{SinkExt, TryStreamExt}; +use crate::wire; +use crate::wire::taker_to_maker; +use crate::wire::EncryptedJsonCodec; +use crate::wire::MakerToTaker; +use crate::wire::TakerToMaker; +use crate::wire::Version; +use crate::Tasks; +use anyhow::bail; +use anyhow::Context; +use anyhow::Result; +use futures::SinkExt; +use futures::TryStreamExt; use std::collections::HashMap; use std::io; use std::net::SocketAddr; -use std::sync::{Arc, Mutex}; +use std::sync::Arc; +use std::sync::Mutex; use std::time::Duration; use tokio::net::TcpStream; -use tokio_util::codec::{FramedRead, FramedWrite}; +use tokio_util::codec::FramedRead; +use tokio_util::codec::FramedWrite; use xtra::prelude::*; use xtra::KeepRunning; use xtra_productivity::xtra_productivity; diff --git a/daemon/src/model.rs b/daemon/src/model.rs index dbb6a91..1bb4aa6 100644 --- a/daemon/src/model.rs +++ b/daemon/src/model.rs @@ -1,19 +1,32 @@ -use crate::{impl_sqlx_type_display_from_str, olivia}; -use anyhow::{Context, Result}; -use bdk::bitcoin::{Address, Amount, Denomination}; +use crate::impl_sqlx_type_display_from_str; +use crate::olivia; +use anyhow::Context; +use anyhow::Result; +use bdk::bitcoin::Address; +use bdk::bitcoin::Amount; +use bdk::bitcoin::Denomination; use chrono::DateTime; use reqwest::Url; use rust_decimal::prelude::ToPrimitive; use rust_decimal::Decimal; use serde::de::Error as _; -use serde::{Deserialize, Serialize}; -use serde_with::{DeserializeFromStr, SerializeDisplay}; +use serde::Deserialize; +use serde::Serialize; +use serde_with::DeserializeFromStr; +use serde_with::SerializeDisplay; use std::convert::TryInto; +use std::fmt; use std::num::NonZeroU8; -use std::ops::{Add, Div, Mul, Sub}; -use std::time::{SystemTime, UNIX_EPOCH}; -use std::{fmt, str}; -use time::{OffsetDateTime, PrimitiveDateTime, Time}; +use std::ops::Add; +use std::ops::Div; +use std::ops::Mul; +use std::ops::Sub; +use std::str; +use std::time::SystemTime; +use std::time::UNIX_EPOCH; +use time::OffsetDateTime; +use time::PrimitiveDateTime; +use time::Time; pub mod cfd; diff --git a/daemon/src/model/cfd.rs b/daemon/src/model/cfd.rs index 75675ff..cd10440 100644 --- a/daemon/src/model/cfd.rs +++ b/daemon/src/model/cfd.rs @@ -1,24 +1,47 @@ -use crate::model::{ - BitMexPriceEventId, Identity, InversePrice, Leverage, Percent, Position, Price, Timestamp, - TradingPair, Usd, -}; -use crate::{monitor, oracle, payout_curve}; -use anyhow::{bail, Context, Result}; -use bdk::bitcoin::secp256k1::{SecretKey, Signature}; -use bdk::bitcoin::{Address, Amount, PublicKey, Script, SignedAmount, Transaction, Txid}; +use crate::model::BitMexPriceEventId; +use crate::model::Identity; +use crate::model::InversePrice; +use crate::model::Leverage; +use crate::model::Percent; +use crate::model::Position; +use crate::model::Price; +use crate::model::Timestamp; +use crate::model::TradingPair; +use crate::model::Usd; +use crate::monitor; +use crate::oracle; +use crate::payout_curve; +use anyhow::bail; +use anyhow::Context; +use anyhow::Result; +use bdk::bitcoin::secp256k1::SecretKey; +use bdk::bitcoin::secp256k1::Signature; +use bdk::bitcoin::Address; +use bdk::bitcoin::Amount; +use bdk::bitcoin::PublicKey; +use bdk::bitcoin::Script; +use bdk::bitcoin::SignedAmount; +use bdk::bitcoin::Transaction; +use bdk::bitcoin::Txid; use bdk::descriptor::Descriptor; use bdk::miniscript::DescriptorTrait; -use maia::secp256k1_zkp::{self, EcdsaAdaptorSignature, SECP256K1}; -use maia::{finalize_spend_transaction, spending_tx_sighash, TransactionExt}; +use maia::finalize_spend_transaction; +use maia::secp256k1_zkp; +use maia::secp256k1_zkp::EcdsaAdaptorSignature; +use maia::secp256k1_zkp::SECP256K1; +use maia::spending_tx_sighash; +use maia::TransactionExt; use rocket::request::FromParam; use rust_decimal::prelude::FromPrimitive; use rust_decimal::Decimal; use serde::de::Error as _; -use serde::{Deserialize, Serialize}; +use serde::Deserialize; +use serde::Serialize; use std::collections::HashMap; use std::fmt; use std::ops::RangeInclusive; -use time::{Duration, OffsetDateTime}; +use time::Duration; +use time::OffsetDateTime; use uuid::adapter::Hyphenated; use uuid::Uuid; diff --git a/daemon/src/monitor.rs b/daemon/src/monitor.rs index 90711e2..4933a26 100644 --- a/daemon/src/monitor.rs +++ b/daemon/src/monitor.rs @@ -1,19 +1,34 @@ -use crate::model::cfd::{CetStatus, Cfd, CfdState, Dlc, OrderId}; +use crate::log_error; +use crate::model; +use crate::model::cfd::CetStatus; +use crate::model::cfd::Cfd; +use crate::model::cfd::CfdState; +use crate::model::cfd::Dlc; +use crate::model::cfd::OrderId; use crate::model::BitMexPriceEventId; +use crate::oracle; use crate::oracle::Attestation; -use crate::{log_error, model, oracle, try_continue}; -use anyhow::{Context, Result}; +use crate::try_continue; +use anyhow::Context; +use anyhow::Result; use async_trait::async_trait; -use bdk::bitcoin::{PublicKey, Script, Txid}; +use bdk::bitcoin::PublicKey; +use bdk::bitcoin::Script; +use bdk::bitcoin::Txid; use bdk::descriptor::Descriptor; -use bdk::electrum_client::{ElectrumApi, GetHistoryRes, HeaderNotification}; +use bdk::electrum_client::ElectrumApi; +use bdk::electrum_client::GetHistoryRes; +use bdk::electrum_client::HeaderNotification; use bdk::miniscript::DescriptorTrait; use std::collections::hash_map::Entry; -use std::collections::{BTreeMap, HashMap}; -use std::convert::{TryFrom, TryInto}; +use std::collections::BTreeMap; +use std::collections::HashMap; +use std::convert::TryFrom; +use std::convert::TryInto; use std::fmt; use std::marker::Send; -use std::ops::{Add, RangeInclusive}; +use std::ops::Add; +use std::ops::RangeInclusive; use xtra::prelude::StrongMessageChannel; use xtra_productivity::xtra_productivity; @@ -669,10 +684,14 @@ impl xtra::Handler for Actor { mod tests { use super::*; use bdk::bitcoin::blockdata::block; - use bdk::electrum_client::{ - Batch, Error, GetBalanceRes, GetHeadersRes, GetMerkleRes, ListUnspentRes, - RawHeaderNotification, ServerFeaturesRes, - }; + use bdk::electrum_client::Batch; + use bdk::electrum_client::Error; + use bdk::electrum_client::GetBalanceRes; + use bdk::electrum_client::GetHeadersRes; + use bdk::electrum_client::GetMerkleRes; + use bdk::electrum_client::ListUnspentRes; + use bdk::electrum_client::RawHeaderNotification; + use bdk::electrum_client::ServerFeaturesRes; use std::iter::FromIterator; use tracing_subscriber::prelude::*; diff --git a/daemon/src/noise.rs b/daemon/src/noise.rs index 1021774..1bcf5b2 100644 --- a/daemon/src/noise.rs +++ b/daemon/src/noise.rs @@ -1,7 +1,11 @@ -use anyhow::{anyhow, Context, Result}; -use snow::{Builder, TransportState}; +use anyhow::anyhow; +use anyhow::Context; +use anyhow::Result; +use snow::Builder; +use snow::TransportState; use std::io; -use tokio::io::{AsyncReadExt, AsyncWriteExt}; +use tokio::io::AsyncReadExt; +use tokio::io::AsyncWriteExt; use tokio::net::TcpStream; pub static NOISE_MAX_MSG_LEN: u32 = 65535; diff --git a/daemon/src/oracle.rs b/daemon/src/oracle.rs index 3ca8c4d..4e95fcd 100644 --- a/daemon/src/oracle.rs +++ b/daemon/src/oracle.rs @@ -1,12 +1,19 @@ -use crate::model::cfd::{Cfd, CfdState}; +use crate::log_error; +use crate::model::cfd::Cfd; +use crate::model::cfd::CfdState; use crate::model::BitMexPriceEventId; -use crate::{log_error, tokio_ext, try_continue}; -use anyhow::{Context, Result}; +use crate::tokio_ext; +use crate::try_continue; +use anyhow::Context; +use anyhow::Result; use async_trait::async_trait; -use maia::secp256k1_zkp::{schnorrsig, SecretKey}; -use rocket::time::{OffsetDateTime, Time}; +use maia::secp256k1_zkp::schnorrsig; +use maia::secp256k1_zkp::SecretKey; +use rocket::time::OffsetDateTime; +use rocket::time::Time; use serde::Deserialize; -use std::collections::{HashMap, HashSet}; +use std::collections::HashMap; +use std::collections::HashSet; use std::ops::Add; use time::ext::NumericalDuration; use time::Duration; @@ -304,7 +311,8 @@ impl xtra::Message for NewAttestationFetched { mod olivia_api { use crate::model::BitMexPriceEventId; use anyhow::Context; - use maia::secp256k1_zkp::{schnorrsig, SecretKey}; + use maia::secp256k1_zkp::schnorrsig; + use maia::secp256k1_zkp::SecretKey; use std::convert::TryFrom; use time::OffsetDateTime; @@ -391,8 +399,10 @@ mod olivia_api { mod timestamp { use crate::olivia; use serde::de::Error as _; - use serde::{Deserialize, Deserializer}; - use time::{OffsetDateTime, PrimitiveDateTime}; + use serde::Deserialize; + use serde::Deserializer; + use time::OffsetDateTime; + use time::PrimitiveDateTime; pub fn deserialize<'a, D>(deserializer: D) -> Result where diff --git a/daemon/src/payout_curve.rs b/daemon/src/payout_curve.rs index f556110..4842721 100644 --- a/daemon/src/payout_curve.rs +++ b/daemon/src/payout_curve.rs @@ -1,14 +1,18 @@ -use std::fmt; - -use crate::model::{Leverage, Price, Usd}; +use crate::model::Leverage; +use crate::model::Price; +use crate::model::Usd; use crate::payout_curve::curve::Curve; -use anyhow::{Context, Result}; +use anyhow::Context; +use anyhow::Result; use bdk::bitcoin; use itertools::Itertools; -use maia::{generate_payouts, Payout}; +use maia::generate_payouts; +use maia::Payout; use ndarray::prelude::*; -use num::{FromPrimitive, ToPrimitive}; +use num::FromPrimitive; +use num::ToPrimitive; use rust_decimal::Decimal; +use std::fmt; mod basis; mod basis_eval; diff --git a/daemon/src/payout_curve/basis.rs b/daemon/src/payout_curve/basis.rs index 21c4af1..2d819fd 100644 --- a/daemon/src/payout_curve/basis.rs +++ b/daemon/src/payout_curve/basis.rs @@ -2,10 +2,10 @@ use crate::payout_curve::basis_eval::*; use crate::payout_curve::csr_tools::CSR; use crate::payout_curve::utils::*; use crate::payout_curve::Error; - use core::cmp::max; +use ndarray::concatenate; use ndarray::prelude::*; -use ndarray::{concatenate, s}; +use ndarray::s; #[derive(Clone, Debug)] pub struct BSplineBasis { diff --git a/daemon/src/payout_curve/basis_eval.rs b/daemon/src/payout_curve/basis_eval.rs index a5ce8a1..ed33d3e 100644 --- a/daemon/src/payout_curve/basis_eval.rs +++ b/daemon/src/payout_curve/basis_eval.rs @@ -1,7 +1,6 @@ use crate::payout_curve::csr_tools::CSR; use crate::payout_curve::utils::*; use crate::payout_curve::Error; - use ndarray::prelude::*; use std::cmp::min; diff --git a/daemon/src/payout_curve/compat.rs b/daemon/src/payout_curve/compat.rs index 6306ec6..c907769 100644 --- a/daemon/src/payout_curve/compat.rs +++ b/daemon/src/payout_curve/compat.rs @@ -1,5 +1,9 @@ -use nalgebra::{ComplexField, DMatrix, Dynamic, Scalar}; -use ndarray::{Array1, Array2}; +use nalgebra::ComplexField; +use nalgebra::DMatrix; +use nalgebra::Dynamic; +use nalgebra::Scalar; +use ndarray::Array1; +use ndarray::Array2; use std::fmt::Debug; pub trait ToNAlgebraMatrix { diff --git a/daemon/src/payout_curve/csr_tools.rs b/daemon/src/payout_curve/csr_tools.rs index d386f26..9bdd304 100644 --- a/daemon/src/payout_curve/csr_tools.rs +++ b/daemon/src/payout_curve/csr_tools.rs @@ -1,4 +1,5 @@ -use crate::payout_curve::compat::{To1DArray, ToNAlgebraMatrix}; +use crate::payout_curve::compat::To1DArray; +use crate::payout_curve::compat::ToNAlgebraMatrix; use crate::payout_curve::Error; use itertools::Itertools; use ndarray::prelude::*; diff --git a/daemon/src/payout_curve/curve.rs b/daemon/src/payout_curve/curve.rs index 41fedb9..f72d04f 100644 --- a/daemon/src/payout_curve/curve.rs +++ b/daemon/src/payout_curve/curve.rs @@ -2,7 +2,6 @@ use crate::payout_curve::basis::BSplineBasis; use crate::payout_curve::splineobject::SplineObject; use crate::payout_curve::utils::*; use crate::payout_curve::Error; - use ndarray::prelude::*; use ndarray::s; use std::cmp::max; diff --git a/daemon/src/payout_curve/curve_factory.rs b/daemon/src/payout_curve/curve_factory.rs index d4e5335..551ad55 100644 --- a/daemon/src/payout_curve/curve_factory.rs +++ b/daemon/src/payout_curve/curve_factory.rs @@ -2,7 +2,6 @@ use crate::payout_curve::basis::BSplineBasis; use crate::payout_curve::curve::Curve; use crate::payout_curve::utils::cmp_f64; use crate::payout_curve::Error; - use ndarray::prelude::*; /// Perform general spline interpolation on a provided basis. diff --git a/daemon/src/payout_curve/splineobject.rs b/daemon/src/payout_curve/splineobject.rs index 71a4ca5..5fd5dc1 100644 --- a/daemon/src/payout_curve/splineobject.rs +++ b/daemon/src/payout_curve/splineobject.rs @@ -2,9 +2,11 @@ use crate::payout_curve::basis::BSplineBasis; use crate::payout_curve::csr_tools::CSR; use crate::payout_curve::Error; use itertools::Itertools; +use ndarray::concatenate; use ndarray::prelude::*; -use ndarray::{concatenate, Order}; -use ndarray_einsum_beta::{einsum, tensordot}; +use ndarray::Order; +use ndarray_einsum_beta::einsum; +use ndarray_einsum_beta::tensordot; use std::collections::HashMap; #[derive(Clone, Debug)] diff --git a/daemon/src/projection.rs b/daemon/src/projection.rs index a5493bd..d63cc9b 100644 --- a/daemon/src/projection.rs +++ b/daemon/src/projection.rs @@ -1,16 +1,29 @@ -use std::collections::HashMap; - -use crate::model::cfd::{ - Cfd as ModelCfd, OrderId, Role, RollOverProposal, SettlementKind, SettlementProposal, - UpdateCfdProposal, -}; -use crate::model::{Leverage, Position, Timestamp, TradingPair}; -use crate::{bitmex_price_feed, db, model, tx, Order, UpdateCfdProposals}; +use crate::bitmex_price_feed; +use crate::db; +use crate::model; +use crate::model::cfd::Cfd as ModelCfd; +use crate::model::cfd::OrderId; +use crate::model::cfd::Role; +use crate::model::cfd::RollOverProposal; +use crate::model::cfd::SettlementKind; +use crate::model::cfd::SettlementProposal; +use crate::model::cfd::UpdateCfdProposal; +use crate::model::Leverage; +use crate::model::Position; +use crate::model::Timestamp; +use crate::model::TradingPair; +use crate::tx; +use crate::Order; +use crate::UpdateCfdProposals; use anyhow::Result; -use bdk::bitcoin::{Amount, Network, SignedAmount}; +use bdk::bitcoin::Amount; +use bdk::bitcoin::Network; +use bdk::bitcoin::SignedAmount; use itertools::Itertools; use rust_decimal::Decimal; -use serde::{Deserialize, Serialize}; +use serde::Deserialize; +use serde::Serialize; +use std::collections::HashMap; use time::OffsetDateTime; use tokio::sync::watch; use xtra_productivity::xtra_productivity; @@ -597,7 +610,8 @@ mod tests { use super::*; use rust_decimal_macros::dec; - use serde_test::{assert_ser_tokens, Token}; + use serde_test::assert_ser_tokens; + use serde_test::Token; #[test] fn usd_serializes_with_only_cents() { diff --git a/daemon/src/rollover_taker.rs b/daemon/src/rollover_taker.rs index 033edd5..bf9df21 100644 --- a/daemon/src/rollover_taker.rs +++ b/daemon/src/rollover_taker.rs @@ -1,16 +1,30 @@ -use crate::address_map::{ActorName, Stopping}; +use crate::address_map::ActorName; +use crate::address_map::Stopping; use crate::connection; -use crate::model::cfd::{Cfd, Dlc, OrderId, Role, RollOverProposal, SettlementKind}; -use crate::model::{BitMexPriceEventId, Timestamp}; -use crate::oracle::{self, GetAnnouncement}; -use crate::projection::{self, UpdateRollOverProposal}; -use crate::setup_contract::{self, RolloverParams}; +use crate::model::cfd::Cfd; +use crate::model::cfd::Dlc; +use crate::model::cfd::OrderId; +use crate::model::cfd::Role; +use crate::model::cfd::RollOverProposal; +use crate::model::cfd::SettlementKind; +use crate::model::BitMexPriceEventId; +use crate::model::Timestamp; +use crate::oracle; +use crate::oracle::GetAnnouncement; +use crate::projection; +use crate::projection::UpdateRollOverProposal; +use crate::setup_contract; +use crate::setup_contract::RolloverParams; use crate::tokio_ext::spawn_fallible; -use crate::wire::{self, RollOverMsg}; -use anyhow::{Context, Result}; +use crate::wire; +use crate::wire::RollOverMsg; +use anyhow::Context; +use anyhow::Result; use async_trait::async_trait; -use futures::channel::mpsc::{self, UnboundedSender}; -use futures::{future, SinkExt}; +use futures::channel::mpsc; +use futures::channel::mpsc::UnboundedSender; +use futures::future; +use futures::SinkExt; use maia::secp256k1_zkp::schnorrsig; use xtra::prelude::MessageChannel; use xtra_productivity::xtra_productivity; diff --git a/daemon/src/routes.rs b/daemon/src/routes.rs index 85a8c89..1b1fc16 100644 --- a/daemon/src/routes.rs +++ b/daemon/src/routes.rs @@ -1,4 +1,5 @@ -use rocket::http::{ContentType, Status}; +use rocket::http::ContentType; +use rocket::http::Status; use rust_embed::EmbeddedFile; use std::borrow::Cow; use std::path::PathBuf; diff --git a/daemon/src/routes_maker.rs b/daemon/src/routes_maker.rs index bcd86ff..4bb8072 100644 --- a/daemon/src/routes_maker.rs +++ b/daemon/src/routes_maker.rs @@ -1,16 +1,29 @@ use anyhow::Result; use bdk::bitcoin::Network; use daemon::auth::Authenticated; +use daemon::maker_cfd; +use daemon::maker_inc_connections; use daemon::model::cfd::OrderId; -use daemon::model::{Price, Usd, WalletInfo}; -use daemon::projection::{Cfd, CfdAction, Feeds, Identity}; +use daemon::model::Price; +use daemon::model::Usd; +use daemon::model::WalletInfo; +use daemon::monitor; +use daemon::oracle; +use daemon::projection::Cfd; +use daemon::projection::CfdAction; +use daemon::projection::Feeds; +use daemon::projection::Identity; use daemon::routes::EmbeddedFileExt; use daemon::to_sse_event::ToSseEvent; -use daemon::{maker_cfd, maker_inc_connections, monitor, oracle, wallet}; -use http_api_problem::{HttpApiProblem, StatusCode}; -use rocket::http::{ContentType, Header, Status}; +use daemon::wallet; +use http_api_problem::HttpApiProblem; +use http_api_problem::StatusCode; +use rocket::http::ContentType; +use rocket::http::Header; +use rocket::http::Status; +use rocket::response::status; use rocket::response::stream::EventStream; -use rocket::response::{status, Responder}; +use rocket::response::Responder; use rocket::serde::json::Json; use rocket::State; use rust_embed::RustEmbed; @@ -266,9 +279,11 @@ pub async fn get_takers<'r>( mod tests { use super::*; use daemon::auth::Password; - use rocket::http::{Header, Status}; + use rocket::http::Header; + use rocket::http::Status; use rocket::local::blocking::Client; - use rocket::{Build, Rocket}; + use rocket::Build; + use rocket::Rocket; #[test] fn routes_are_password_protected() { diff --git a/daemon/src/routes_taker.rs b/daemon/src/routes_taker.rs index 7011dd6..347d266 100644 --- a/daemon/src/routes_taker.rs +++ b/daemon/src/routes_taker.rs @@ -1,19 +1,34 @@ -use bdk::bitcoin::{Amount, Network}; +use bdk::bitcoin::Amount; +use bdk::bitcoin::Network; +use daemon::bitmex_price_feed; use daemon::connection::ConnectionStatus; -use daemon::model::cfd::{calculate_long_margin, OrderId}; -use daemon::model::{Leverage, Price, Usd, WalletInfo}; -use daemon::projection::{CfdAction, Feeds}; +use daemon::model::cfd::calculate_long_margin; +use daemon::model::cfd::OrderId; +use daemon::model::Leverage; +use daemon::model::Price; +use daemon::model::Usd; +use daemon::model::WalletInfo; +use daemon::monitor; +use daemon::oracle; +use daemon::projection::CfdAction; +use daemon::projection::Feeds; use daemon::routes::EmbeddedFileExt; +use daemon::taker_cfd; use daemon::to_sse_event::ToSseEvent; -use daemon::{bitmex_price_feed, monitor, oracle, taker_cfd, tx, wallet}; -use http_api_problem::{HttpApiProblem, StatusCode}; -use rocket::http::{ContentType, Status}; +use daemon::tx; +use daemon::wallet; +use http_api_problem::HttpApiProblem; +use http_api_problem::StatusCode; +use rocket::http::ContentType; +use rocket::http::Status; +use rocket::response::status; use rocket::response::stream::EventStream; -use rocket::response::{status, Responder}; +use rocket::response::Responder; use rocket::serde::json::Json; use rocket::State; use rust_embed::RustEmbed; -use serde::{Deserialize, Serialize}; +use serde::Deserialize; +use serde::Serialize; use std::borrow::Cow; use std::path::PathBuf; use tokio::select; diff --git a/daemon/src/seed.rs b/daemon/src/seed.rs index 7ccbba4..95c722c 100644 --- a/daemon/src/seed.rs +++ b/daemon/src/seed.rs @@ -1,4 +1,5 @@ -use anyhow::{anyhow, Result}; +use anyhow::anyhow; +use anyhow::Result; use bdk::bitcoin::util::bip32::ExtendedPrivKey; use bdk::bitcoin::Network; use hkdf::Hkdf; diff --git a/daemon/src/send_to_socket.rs b/daemon/src/send_to_socket.rs index a87b005..3ba2ba9 100644 --- a/daemon/src/send_to_socket.rs +++ b/daemon/src/send_to_socket.rs @@ -1,11 +1,13 @@ -use crate::wire::{self, EncryptedJsonCodec}; +use crate::wire; +use crate::wire::EncryptedJsonCodec; use futures::SinkExt; use serde::Serialize; use std::fmt; use tokio::io::AsyncWriteExt; use tokio::net::tcp::OwnedWriteHalf; use tokio_util::codec::FramedWrite; -use xtra::{Handler, Message}; +use xtra::Handler; +use xtra::Message; pub struct Actor { write: FramedWrite>, diff --git a/daemon/src/setup_contract.rs b/daemon/src/setup_contract.rs index 70c91a9..4aeb981 100644 --- a/daemon/src/setup_contract.rs +++ b/daemon/src/setup_contract.rs @@ -1,25 +1,52 @@ -use crate::model::cfd::{Cet, Dlc, RevokedCommit, Role}; -use crate::model::{Leverage, Price, Usd}; +use crate::model; +use crate::model::cfd::Cet; +use crate::model::cfd::Dlc; +use crate::model::cfd::RevokedCommit; +use crate::model::cfd::Role; +use crate::model::Leverage; +use crate::model::Price; +use crate::model::Usd; +use crate::oracle; +use crate::payout_curve; use crate::tokio_ext::FutureExt; -use crate::wire::{ - Msg0, Msg1, Msg2, Msg3, RollOverMsg, RollOverMsg0, RollOverMsg1, RollOverMsg2, RollOverMsg3, - SetupMsg, -}; -use crate::{model, oracle, payout_curve, wallet}; -use anyhow::{Context, Result}; -use bdk::bitcoin::secp256k1::{schnorrsig, Signature, SECP256K1}; +use crate::wallet; +use crate::wire::Msg0; +use crate::wire::Msg1; +use crate::wire::Msg2; +use crate::wire::Msg3; +use crate::wire::RollOverMsg; +use crate::wire::RollOverMsg0; +use crate::wire::RollOverMsg1; +use crate::wire::RollOverMsg2; +use crate::wire::RollOverMsg3; +use crate::wire::SetupMsg; +use anyhow::Context; +use anyhow::Result; +use bdk::bitcoin::secp256k1::schnorrsig; +use bdk::bitcoin::secp256k1::Signature; +use bdk::bitcoin::secp256k1::SECP256K1; use bdk::bitcoin::util::psbt::PartiallySignedTransaction; -use bdk::bitcoin::{Amount, PublicKey, Transaction}; +use bdk::bitcoin::Amount; +use bdk::bitcoin::PublicKey; +use bdk::bitcoin::Transaction; use bdk::descriptor::Descriptor; use bdk::miniscript::DescriptorTrait; use futures::stream::FusedStream; -use futures::{Sink, SinkExt, StreamExt}; +use futures::Sink; +use futures::SinkExt; +use futures::StreamExt; +use maia::commit_descriptor; +use maia::compute_adaptor_pk; +use maia::create_cfd_transactions; +use maia::interval; +use maia::lock_descriptor; +use maia::renew_cfd_transactions; +use maia::secp256k1_zkp; use maia::secp256k1_zkp::EcdsaAdaptorSignature; -use maia::{ - commit_descriptor, compute_adaptor_pk, create_cfd_transactions, interval, lock_descriptor, - renew_cfd_transactions, secp256k1_zkp, spending_tx_sighash, Announcement, PartyParams, - PunishParams, -}; +use maia::spending_tx_sighash; +use maia::Announcement; +use maia::PartyParams; +use maia::PunishParams; use std::collections::HashMap; use std::iter::FromIterator; use std::ops::RangeInclusive; diff --git a/daemon/src/setup_maker.rs b/daemon/src/setup_maker.rs index 9785d94..5eb295b 100644 --- a/daemon/src/setup_maker.rs +++ b/daemon/src/setup_maker.rs @@ -1,15 +1,26 @@ -use crate::address_map::{ActorName, Stopping}; -use crate::model::cfd::{Cfd, Dlc, Order, OrderId, Role}; +use crate::address_map::ActorName; +use crate::address_map::Stopping; +use crate::maker_inc_connections; +use crate::model::cfd::Cfd; +use crate::model::cfd::Dlc; +use crate::model::cfd::Order; +use crate::model::cfd::OrderId; +use crate::model::cfd::Role; use crate::model::Identity; use crate::oracle::Announcement; -use crate::setup_contract::{self, SetupParams}; +use crate::setup_contract; +use crate::setup_contract::SetupParams; use crate::tokio_ext::spawn_fallible; -use crate::wire::{self, SetupMsg}; -use crate::{maker_inc_connections, wallet}; -use anyhow::{Context, Result}; +use crate::wallet; +use crate::wire; +use crate::wire::SetupMsg; +use anyhow::Context; +use anyhow::Result; use async_trait::async_trait; -use futures::channel::mpsc::{self, UnboundedSender}; -use futures::{future, SinkExt}; +use futures::channel::mpsc; +use futures::channel::mpsc::UnboundedSender; +use futures::future; +use futures::SinkExt; use maia::secp256k1_zkp::schnorrsig; use xtra::prelude::MessageChannel; use xtra_productivity::xtra_productivity; diff --git a/daemon/src/setup_taker.rs b/daemon/src/setup_taker.rs index 914058f..4b301fc 100644 --- a/daemon/src/setup_taker.rs +++ b/daemon/src/setup_taker.rs @@ -1,13 +1,25 @@ -use crate::model::cfd::{Cfd, CfdState, Completed, Dlc, OrderId, Role}; +use crate::address_map; +use crate::connection; +use crate::model::cfd::Cfd; +use crate::model::cfd::CfdState; +use crate::model::cfd::Completed; +use crate::model::cfd::Dlc; +use crate::model::cfd::OrderId; +use crate::model::cfd::Role; use crate::oracle::Announcement; -use crate::setup_contract::{self, SetupParams}; +use crate::setup_contract; +use crate::setup_contract::SetupParams; use crate::tokio_ext::spawn_fallible; -use crate::wire::{self, SetupMsg}; -use crate::{address_map, connection, wallet}; -use anyhow::{Context, Result}; +use crate::wallet; +use crate::wire; +use crate::wire::SetupMsg; +use anyhow::Context; +use anyhow::Result; use async_trait::async_trait; -use futures::channel::mpsc::{self, UnboundedSender}; -use futures::{future, SinkExt}; +use futures::channel::mpsc; +use futures::channel::mpsc::UnboundedSender; +use futures::future; +use futures::SinkExt; use maia::secp256k1_zkp::schnorrsig; use xtra::prelude::*; use xtra_productivity::xtra_productivity; diff --git a/daemon/src/supervisor.rs b/daemon/src/supervisor.rs index 71783d3..fa364a6 100644 --- a/daemon/src/supervisor.rs +++ b/daemon/src/supervisor.rs @@ -1,7 +1,8 @@ use crate::Tasks; use async_trait::async_trait; use std::fmt; -use xtra::{Address, Context}; +use xtra::Address; +use xtra::Context; use xtra_productivity::xtra_productivity; /// A supervising actor reacts to messages from the actor it is supervising and restarts it based on diff --git a/daemon/src/taker.rs b/daemon/src/taker.rs index 638c034..cbb5cab 100644 --- a/daemon/src/taker.rs +++ b/daemon/src/taker.rs @@ -1,16 +1,30 @@ -use anyhow::{Context, Result}; +use anyhow::Context; +use anyhow::Result; +use bdk::bitcoin; use bdk::bitcoin::secp256k1::schnorrsig; -use bdk::bitcoin::{Address, Amount}; -use bdk::{bitcoin, FeeRate}; -use clap::{Parser, Subcommand}; +use bdk::bitcoin::Address; +use bdk::bitcoin::Amount; +use bdk::FeeRate; +use clap::Parser; +use clap::Subcommand; +use daemon::bitmex_price_feed; use daemon::connection::connect; +use daemon::db; +use daemon::housekeeping; +use daemon::logger; use daemon::model::cfd::Role; use daemon::model::Identity; +use daemon::monitor; +use daemon::oracle; +use daemon::projection; use daemon::seed::Seed; -use daemon::{ - bitmex_price_feed, db, housekeeping, logger, monitor, oracle, projection, supervisor, wallet, - TakerActorSystem, Tasks, HEARTBEAT_INTERVAL, N_PAYOUTS, SETTLEMENT_INTERVAL, -}; +use daemon::supervisor; +use daemon::wallet; +use daemon::TakerActorSystem; +use daemon::Tasks; +use daemon::HEARTBEAT_INTERVAL; +use daemon::N_PAYOUTS; +use daemon::SETTLEMENT_INTERVAL; use sqlx::sqlite::SqliteConnectOptions; use sqlx::SqlitePool; use std::net::SocketAddr; diff --git a/daemon/src/taker_cfd.rs b/daemon/src/taker_cfd.rs index 12815c9..6b25323 100644 --- a/daemon/src/taker_cfd.rs +++ b/daemon/src/taker_cfd.rs @@ -1,14 +1,34 @@ -use crate::address_map::{AddressMap, Stopping}; -use crate::cfd_actors::{self, append_cfd_state, insert_cfd_and_update_feed}; +use crate::address_map::AddressMap; +use crate::address_map::Stopping; +use crate::cfd_actors::append_cfd_state; +use crate::cfd_actors::insert_cfd_and_update_feed; +use crate::cfd_actors::{self}; +use crate::collab_settlement_taker; +use crate::connection; use crate::db::load_cfd_by_order_id; -use crate::model::cfd::{Cfd, CfdState, CfdStateCommon, Completed, Order, OrderId, Origin, Role}; -use crate::model::{Identity, Price, Usd}; -use crate::monitor::{self, MonitorParams}; -use crate::{ - collab_settlement_taker, connection, log_error, oracle, projection, rollover_taker, - setup_taker, wallet, Tasks, -}; -use anyhow::{bail, Context as _, Result}; +use crate::log_error; +use crate::model::cfd::Cfd; +use crate::model::cfd::CfdState; +use crate::model::cfd::CfdStateCommon; +use crate::model::cfd::Completed; +use crate::model::cfd::Order; +use crate::model::cfd::OrderId; +use crate::model::cfd::Origin; +use crate::model::cfd::Role; +use crate::model::Identity; +use crate::model::Price; +use crate::model::Usd; +use crate::monitor::MonitorParams; +use crate::monitor::{self}; +use crate::oracle; +use crate::projection; +use crate::rollover_taker; +use crate::setup_taker; +use crate::wallet; +use crate::Tasks; +use anyhow::bail; +use anyhow::Context as _; +use anyhow::Result; use async_trait::async_trait; use bdk::bitcoin::secp256k1::schnorrsig; use xtra::prelude::*; diff --git a/daemon/src/to_sse_event.rs b/daemon/src/to_sse_event.rs index f4d206e..08fccf2 100644 --- a/daemon/src/to_sse_event.rs +++ b/daemon/src/to_sse_event.rs @@ -1,7 +1,13 @@ +use crate::connection; +use crate::model; use crate::model::Timestamp; -use crate::projection::{Cfd, CfdAction, CfdOrder, Identity, Quote}; -use crate::to_sse_event::ConnectionCloseReason::{MakerVersionOutdated, TakerVersionOutdated}; -use crate::{connection, model}; +use crate::projection::Cfd; +use crate::projection::CfdAction; +use crate::projection::CfdOrder; +use crate::projection::Identity; +use crate::projection::Quote; +use crate::to_sse_event::ConnectionCloseReason::MakerVersionOutdated; +use crate::to_sse_event::ConnectionCloseReason::TakerVersionOutdated; use bdk::bitcoin::Amount; use rocket::request::FromParam; use rocket::response::stream::Event; diff --git a/daemon/src/tokio_ext.rs b/daemon/src/tokio_ext.rs index 7357dc3..29a355e 100644 --- a/daemon/src/tokio_ext.rs +++ b/daemon/src/tokio_ext.rs @@ -1,10 +1,12 @@ use futures::future::RemoteHandle; use futures::FutureExt as _; -use std::any::{Any, TypeId}; +use std::any::Any; +use std::any::TypeId; use std::fmt; use std::future::Future; use std::time::Duration; -use tokio::time::{timeout, Timeout}; +use tokio::time::timeout; +use tokio::time::Timeout; pub fn spawn_fallible(future: F) where diff --git a/daemon/src/tx.rs b/daemon/src/tx.rs index b404552..8b658a6 100644 --- a/daemon/src/tx.rs +++ b/daemon/src/tx.rs @@ -1,4 +1,5 @@ -use bdk::bitcoin::{Network, Txid}; +use bdk::bitcoin::Network; +use bdk::bitcoin::Txid; use serde::Serialize; use crate::model::cfd; diff --git a/daemon/src/wallet.rs b/daemon/src/wallet.rs index 3eb1849..20a96b8 100644 --- a/daemon/src/wallet.rs +++ b/daemon/src/wallet.rs @@ -1,17 +1,31 @@ -use crate::model::{Timestamp, WalletInfo}; +use crate::model::Timestamp; +use crate::model::WalletInfo; use crate::Tasks; -use anyhow::{bail, Context, Result}; +use anyhow::bail; +use anyhow::Context; +use anyhow::Result; use async_trait::async_trait; use bdk::bitcoin::consensus::encode::serialize_hex; use bdk::bitcoin::util::bip32::ExtendedPrivKey; use bdk::bitcoin::util::psbt::PartiallySignedTransaction; -use bdk::bitcoin::{Address, Amount, OutPoint, PublicKey, Script, Transaction, Txid}; -use bdk::blockchain::{ElectrumBlockchain, NoopProgress}; +use bdk::bitcoin::Address; +use bdk::bitcoin::Amount; +use bdk::bitcoin::OutPoint; +use bdk::bitcoin::PublicKey; +use bdk::bitcoin::Script; +use bdk::bitcoin::Transaction; +use bdk::bitcoin::Txid; +use bdk::blockchain::ElectrumBlockchain; +use bdk::blockchain::NoopProgress; use bdk::database::BatchDatabase; +use bdk::electrum_client; use bdk::wallet::tx_builder::TxOrdering; use bdk::wallet::AddressIndex; -use bdk::{electrum_client, FeeRate, KeychainKind, SignOptions}; -use maia::{PartyParams, TxBuilderExt}; +use bdk::FeeRate; +use bdk::KeychainKind; +use bdk::SignOptions; +use maia::PartyParams; +use maia::TxBuilderExt; use rocket::serde::json::Value; use std::collections::HashSet; use std::time::Duration; diff --git a/daemon/src/wire.rs b/daemon/src/wire.rs index acbe859..dbcf7cb 100644 --- a/daemon/src/wire.rs +++ b/daemon/src/wire.rs @@ -1,22 +1,37 @@ -use crate::model::cfd::{Order, OrderId}; -use crate::model::{BitMexPriceEventId, Price, Timestamp, Usd}; -use crate::noise::{NOISE_MAX_MSG_LEN, NOISE_TAG_LEN}; -use anyhow::{bail, Result}; +use crate::model::cfd::Order; +use crate::model::cfd::OrderId; +use crate::model::BitMexPriceEventId; +use crate::model::Price; +use crate::model::Timestamp; +use crate::model::Usd; +use crate::noise::NOISE_MAX_MSG_LEN; +use crate::noise::NOISE_TAG_LEN; +use anyhow::bail; +use anyhow::Result; use bdk::bitcoin::secp256k1::Signature; use bdk::bitcoin::util::psbt::PartiallySignedTransaction; -use bdk::bitcoin::{Address, Amount, PublicKey}; +use bdk::bitcoin::Address; +use bdk::bitcoin::Amount; +use bdk::bitcoin::PublicKey; use bytes::BytesMut; -use maia::secp256k1_zkp::{EcdsaAdaptorSignature, SecretKey}; -use maia::{CfdTransactions, PartyParams, PunishParams}; +use maia::secp256k1_zkp::EcdsaAdaptorSignature; +use maia::secp256k1_zkp::SecretKey; +use maia::CfdTransactions; +use maia::PartyParams; +use maia::PunishParams; use serde::de::DeserializeOwned; -use serde::{Deserialize, Serialize}; +use serde::Deserialize; +use serde::Serialize; use snow::TransportState; use std::collections::HashMap; use std::fmt; use std::marker::PhantomData; use std::ops::RangeInclusive; -use std::sync::{Arc, Mutex}; -use tokio_util::codec::{Decoder, Encoder, LengthDelimitedCodec}; +use std::sync::Arc; +use std::sync::Mutex; +use tokio_util::codec::Decoder; +use tokio_util::codec::Encoder; +use tokio_util::codec::LengthDelimitedCodec; #[derive(Debug, Clone, Serialize, Deserialize, Eq, PartialEq, PartialOrd)] pub struct Version(semver::Version); diff --git a/daemon/tests/happy_path.rs b/daemon/tests/happy_path.rs index 0b2732a..7c60860 100644 --- a/daemon/tests/happy_path.rs +++ b/daemon/tests/happy_path.rs @@ -1,14 +1,24 @@ use std::time::Duration; -use crate::harness::flow::{is_next_none, next, next_cfd, next_order, next_some}; -use crate::harness::{ - deliver_close_finality_event, deliver_lock_finality_event, dummy_new_order, init_tracing, - start_both, Maker, MakerConfig, Taker, TakerConfig, -}; +use crate::harness::deliver_close_finality_event; +use crate::harness::deliver_lock_finality_event; +use crate::harness::dummy_new_order; +use crate::harness::flow::is_next_none; +use crate::harness::flow::next; +use crate::harness::flow::next_cfd; +use crate::harness::flow::next_order; +use crate::harness::flow::next_some; +use crate::harness::init_tracing; +use crate::harness::start_both; +use crate::harness::Maker; +use crate::harness::MakerConfig; +use crate::harness::Taker; +use crate::harness::TakerConfig; use daemon::connection::ConnectionStatus; use daemon::model::cfd::OrderId; use daemon::model::Usd; -use daemon::projection::{CfdState, Identity}; +use daemon::projection::CfdState; +use daemon::projection::Identity; use maia::secp256k1_zkp::schnorrsig; use rust_decimal_macros::dec; use tokio::time::sleep; diff --git a/daemon/tests/harness/flow.rs b/daemon/tests/harness/flow.rs index d43dfa7..a73e6ab 100644 --- a/daemon/tests/harness/flow.rs +++ b/daemon/tests/harness/flow.rs @@ -1,5 +1,7 @@ -use anyhow::{Context, Result}; -use daemon::projection::{Cfd, CfdOrder}; +use anyhow::Context; +use anyhow::Result; +use daemon::projection::Cfd; +use daemon::projection::CfdOrder; use daemon::tokio_ext::FutureExt; use std::time::Duration; use tokio::sync::watch; diff --git a/daemon/tests/harness/maia.rs b/daemon/tests/harness/maia.rs index 4da7815..19ddd95 100644 --- a/daemon/tests/harness/maia.rs +++ b/daemon/tests/harness/maia.rs @@ -1,4 +1,5 @@ -use maia::secp256k1_zkp::{schnorrsig, SecretKey}; +use maia::secp256k1_zkp::schnorrsig; +use maia::secp256k1_zkp::SecretKey; use maia::Announcement; use std::str::FromStr; diff --git a/daemon/tests/harness/mocks/mod.rs b/daemon/tests/harness/mocks/mod.rs index e21f48c..c8d0bab 100644 --- a/daemon/tests/harness/mocks/mod.rs +++ b/daemon/tests/harness/mocks/mod.rs @@ -1,6 +1,7 @@ use std::sync::Arc; -use tokio::sync::{Mutex, MutexGuard}; +use tokio::sync::Mutex; +use tokio::sync::MutexGuard; use self::monitor::MonitorActor; use self::oracle::OracleActor; diff --git a/daemon/tests/harness/mocks/monitor.rs b/daemon/tests/harness/mocks/monitor.rs index 52de3bf..b3934ee 100644 --- a/daemon/tests/harness/mocks/monitor.rs +++ b/daemon/tests/harness/mocks/monitor.rs @@ -1,6 +1,7 @@ use std::sync::Arc; -use daemon::{monitor, oracle}; +use daemon::monitor; +use daemon::oracle; use mockall::*; use tokio::sync::Mutex; use xtra_productivity::xtra_productivity; diff --git a/daemon/tests/harness/mocks/wallet.rs b/daemon/tests/harness/mocks/wallet.rs index 0566313..b2c9671 100644 --- a/daemon/tests/harness/mocks/wallet.rs +++ b/daemon/tests/harness/mocks/wallet.rs @@ -1,14 +1,18 @@ use anyhow::Result; +use bdk::bitcoin::ecdsa; use bdk::bitcoin::util::psbt::PartiallySignedTransaction; -use bdk::bitcoin::{ecdsa, Amount, Txid}; +use bdk::bitcoin::Amount; +use bdk::bitcoin::Txid; use bdk::wallet::tx_builder::TxOrdering; use bdk::wallet::AddressIndex; use bdk::FeeRate; use daemon::bdk_ext::new_test_wallet; -use daemon::model::{Timestamp, WalletInfo}; +use daemon::model::Timestamp; +use daemon::model::WalletInfo; use daemon::wallet; use maia::secp256k1_zkp::Secp256k1; -use maia::{PartyParams, TxBuilderExt}; +use maia::PartyParams; +use maia::TxBuilderExt; use mockall::*; use rand::thread_rng; use std::sync::Arc; diff --git a/daemon/tests/harness/mod.rs b/daemon/tests/harness/mod.rs index 14fb03a..745fd59 100644 --- a/daemon/tests/harness/mod.rs +++ b/daemon/tests/harness/mod.rs @@ -3,15 +3,27 @@ use crate::harness::mocks::oracle::OracleActor; use crate::harness::mocks::wallet::WalletActor; use crate::schnorrsig; use ::bdk::bitcoin::Network; -use daemon::connection::{connect, ConnectionStatus}; -use daemon::model::cfd::{OrderId, Role}; -use daemon::model::{self, Price, Usd}; -use daemon::projection::{Cfd, CfdOrder, Feeds, Identity}; +use daemon::connection::connect; +use daemon::connection::ConnectionStatus; +use daemon::db; +use daemon::maker_cfd; +use daemon::maker_inc_connections; +use daemon::model::cfd::OrderId; +use daemon::model::cfd::Role; +use daemon::model::Price; +use daemon::model::Usd; +use daemon::model::{self}; +use daemon::projection; +use daemon::projection::Cfd; +use daemon::projection::CfdOrder; +use daemon::projection::Feeds; +use daemon::projection::Identity; use daemon::seed::Seed; -use daemon::{ - db, maker_cfd, maker_inc_connections, projection, taker_cfd, MakerActorSystem, Tasks, - HEARTBEAT_INTERVAL, N_PAYOUTS, -}; +use daemon::taker_cfd; +use daemon::MakerActorSystem; +use daemon::Tasks; +use daemon::HEARTBEAT_INTERVAL; +use daemon::N_PAYOUTS; use rust_decimal_macros::dec; use sqlx::SqlitePool; use std::net::SocketAddr; diff --git a/dprint.json b/dprint.json index 9756968..1a07a93 100644 --- a/dprint.json +++ b/dprint.json @@ -3,7 +3,7 @@ "projectType": "openSource", "incremental": true, "rustfmt": { - "imports_granularity": "module", + "imports_granularity": "item", "wrap_comments": true, "comment_width": 120 },