Skip to content

Commit

Permalink
Merge #1476: Split liana into liana and lianad crates
Browse files Browse the repository at this point in the history
da4c102 Fix reproducible system to handle lianad crate (edouardparis)
74820d9 Split into lianad and liana crate (edouardparis)

Pull request description:

  This change introduce two crates:
  - `lianad` the crate responsible to create the `lianad` and `liana-cli` binaries and expose daemon modules for `liana-gui` to embed
  - `liana` the crate responsible for the descriptors and the core logic of the bitcoin scripts and spend transactions creation. This will allow multiple platforms and mediums to start manipulating these modules without importing all the daemon dependencies (like the database or bitcoin core clients).

ACKs for top commit:
  jp1ac4:
    ACK da4c102.

Tree-SHA512: 85a268b2bffe5fe7b54d7b1e452dd2097ae606b903e5684a7b0e996b61981ab222b6718fb19739a05d1153b4d48a85d0ec3e1e15f68afe17936eec80111ecf04
  • Loading branch information
edouardparis committed Nov 19, 2024
2 parents 36b24d4 + da4c102 commit 1f7c41a
Show file tree
Hide file tree
Showing 64 changed files with 1,076 additions and 1,029 deletions.
2 changes: 1 addition & 1 deletion .cirrus.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ task:
fingerprint_script:
- rustc --version
- cat tests/tools/taproot_signer/Cargo.lock
lianad_build_script: cd liana && cargo build --release && cd ../tests/tools/taproot_signer && cargo build --release
lianad_build_script: cd lianad && cargo build --release && cd ../tests/tools/taproot_signer && cargo build --release

deps_script: apt update && apt install -y python3 python3-pip

Expand Down
27 changes: 19 additions & 8 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@ resolver = "2"
members = [
"fuzz",
"liana",
"lianad",
"liana-gui",
"liana-ui",
]
default-members = ["liana", "liana-gui", "liana-ui"]
default-members = ["liana", "lianad", "liana-gui", "liana-ui"]

[patch.crates-io]
iced_style = { git = "https://github.com/edouardparis/iced", branch = "patch-0.12.3"}
Expand Down
4 changes: 4 additions & 0 deletions contrib/reproducible/docker/docker-build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ docker run --rm -ti \
-v "$PWD/Cargo.lock":/liana/Cargo.lock \
-v "$PWD/liana/Cargo.toml":/liana/liana/Cargo.toml \
-v "$PWD/liana/src":/liana/liana/src \
-v "$PWD/lianad/Cargo.toml":/liana/lianad/Cargo.toml \
-v "$PWD/lianad/src":/liana/lianad/src \
-v "$PWD/liana-gui/Cargo.toml":/liana/liana-gui/Cargo.toml \
-v "$PWD/liana-gui/src":/liana/liana-gui/src \
-v "$PWD/liana-ui/Cargo.toml":/liana/liana-ui/Cargo.toml \
Expand All @@ -41,6 +43,8 @@ docker run -ti \
-v "$PWD/Cargo.lock":/liana/Cargo.lock \
-v "$PWD/liana/Cargo.toml":/liana/liana/Cargo.toml \
-v "$PWD/liana/src":/liana/liana/src \
-v "$PWD/lianad/Cargo.toml":/liana/lianad/Cargo.toml \
-v "$PWD/lianad/src":/liana/lianad/src \
-v "$PWD/liana-gui/Cargo.toml":/liana/liana-gui/Cargo.toml \
-v "$PWD/liana-gui/src":/liana/liana-gui/src \
-v "$PWD/liana-ui/Cargo.toml":/liana/liana-ui/Cargo.toml \
Expand Down
2 changes: 1 addition & 1 deletion contrib/reproducible/docker/macos_cmd.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ cd ..
# Finally build the projects using the toolchain just created.
alias cargo="/liana/rust-1.71.1-x86_64-unknown-linux-gnu/cargo/bin/cargo"

for package_name in "liana" "liana-gui"; do
for package_name in "lianad" "liana-gui"; do
PATH="$PATH:$PWD/osxcross/target/bin/" \
CC=o64-clang \
CXX=o64-clang++ \
Expand Down
2 changes: 1 addition & 1 deletion contrib/reproducible/guix/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export CARGO_HOME="/liana/.cargo"

# We need to set RUSTC_BOOTSTRAP=1 as a workaround to be able to use unstable
# features in the GUI dependencies
for package_name in "liana" "liana-gui"; do
for package_name in "lianad" "liana-gui"; do
RUSTC_BOOTSTRAP=1 cargo -vvv \
--color always \
--frozen \
Expand Down
2 changes: 2 additions & 0 deletions contrib/reproducible/guix/guix-build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,8 @@ time_machine shell --no-cwd \
--expose="$BUILD_ROOT/Cargo.lock=/liana/Cargo.lock" \
--expose="$PWD/liana/src=/liana/liana/src" \
--expose="$PWD/liana/Cargo.toml=/liana/liana/Cargo.toml" \
--expose="$PWD/lianad/src=/liana/lianad/src" \
--expose="$PWD/lianad/Cargo.toml=/liana/lianad/Cargo.toml" \
--expose="$PWD/liana-gui/Cargo.toml=/liana/liana-gui/Cargo.toml" \
--expose="$PWD/liana-gui/src=/liana/liana-gui/src" \
--expose="$PWD/liana-ui/src=/liana/liana-ui/src" \
Expand Down
3 changes: 2 additions & 1 deletion liana-gui/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ path = "src/main.rs"
[dependencies]
async-trait = "0.1"
async-hwi = { version = "0.0.24" }
liana = { path = "../liana", default-features = false, features = ["nonblocking_shutdown"] }
liana = { path = "../liana" }
lianad = { path = "../lianad", default-features = false, features = ["nonblocking_shutdown"] }
liana-ui = { path = "../liana-ui" }
backtrace = "0.3"
hex = "0.4.3"
Expand Down
3 changes: 2 additions & 1 deletion liana-gui/src/app/error.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
use std::convert::From;
use std::io::ErrorKind;

use liana::{config::ConfigError, descriptors::LianaDescError, spend::SpendCreationError};
use liana::{descriptors::LianaDescError, spend::SpendCreationError};
use lianad::config::ConfigError;

use crate::{
app::{settings::SettingsError, wallet::WalletError},
Expand Down
12 changes: 5 additions & 7 deletions liana-gui/src/app/message.rs
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
use std::collections::{HashMap, HashSet};
use std::sync::Arc;

use liana::{
config::Config as DaemonConfig,
miniscript::bitcoin::{
bip32::{ChildNumber, Fingerprint},
psbt::Psbt,
Address, Txid,
},
use liana::miniscript::bitcoin::{
bip32::{ChildNumber, Fingerprint},
psbt::Psbt,
Address, Txid,
};
use lianad::config::Config as DaemonConfig;

use crate::{
app::{cache::Cache, error::Error, view, wallet::Wallet},
Expand Down
3 changes: 2 additions & 1 deletion liana-gui/src/app/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,12 @@ use iced::{clipboard, time, Command, Subscription};
use tokio::runtime::Handle;
use tracing::{error, info, warn};

pub use liana::{commands::CoinStatus, config::Config as DaemonConfig, miniscript::bitcoin};
pub use liana::miniscript::bitcoin;
use liana_ui::{
component::network_banner,
widget::{Column, Element},
};
pub use lianad::{commands::CoinStatus, config::Config as DaemonConfig};

pub use config::Config;
pub use message::Message;
Expand Down
2 changes: 1 addition & 1 deletion liana-gui/src/app/state/coins.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ use std::{cmp::Ordering, collections::HashSet};

use iced::Command;

use liana::commands::CoinStatus;
use liana_ui::widget::Element;
use lianad::commands::CoinStatus;

use crate::{
app::{
Expand Down
6 changes: 2 additions & 4 deletions liana-gui/src/app/state/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,9 @@ use std::sync::Arc;
use std::time::{SystemTime, UNIX_EPOCH};

use iced::{Command, Subscription};
use liana::{
commands::CoinStatus,
miniscript::bitcoin::{Amount, OutPoint},
};
use liana::miniscript::bitcoin::{Amount, OutPoint};
use liana_ui::widget::*;
use lianad::commands::CoinStatus;

use super::{
cache::Cache,
Expand Down
2 changes: 1 addition & 1 deletion liana-gui/src/app/state/psbt.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ use iced::Subscription;

use iced::Command;
use liana::{
commands::CoinStatus,
descriptors::LianaPolicy,
miniscript::bitcoin::{bip32::Fingerprint, psbt::Psbt, Network, Txid},
};
use lianad::commands::CoinStatus;

use liana_ui::component::toast;
use liana_ui::{
Expand Down
10 changes: 4 additions & 6 deletions liana-gui/src/app/state/recovery.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,12 @@ use std::sync::Arc;

use iced::Command;

use liana::{
commands::CoinStatus,
miniscript::bitcoin::{
bip32::{DerivationPath, Fingerprint},
secp256k1,
},
use liana::miniscript::bitcoin::{
bip32::{DerivationPath, Fingerprint},
secp256k1,
};
use liana_ui::{component::form, widget::Element};
use lianad::commands::CoinStatus;

use crate::{
app::{
Expand Down
12 changes: 5 additions & 7 deletions liana-gui/src/app/state/settings/bitcoind.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,9 @@ use chrono::{NaiveDate, Utc};
use iced::Command;
use tracing::info;

use liana::{
config::{
BitcoinBackend, BitcoinConfig, BitcoindConfig, BitcoindRpcAuth, Config, ElectrumConfig,
},
miniscript::bitcoin::Network,
use liana::miniscript::bitcoin::Network;
use lianad::config::{
BitcoinBackend, BitcoinConfig, BitcoindConfig, BitcoindRpcAuth, Config, ElectrumConfig,
};

use liana_ui::{component::form, widget::Element};
Expand Down Expand Up @@ -353,7 +351,7 @@ impl BitcoindSettings {
if let (true, Some(rpc_auth)) = (self.addr.valid, rpc_auth) {
let mut daemon_config = daemon.config().cloned().unwrap();
daemon_config.bitcoin_backend =
Some(liana::config::BitcoinBackend::Bitcoind(BitcoindConfig {
Some(lianad::config::BitcoinBackend::Bitcoind(BitcoindConfig {
rpc_auth,
addr: new_addr.unwrap(),
}));
Expand Down Expand Up @@ -461,7 +459,7 @@ impl ElectrumSettings {
if self.addr.valid {
let mut daemon_config = daemon.config().cloned().unwrap();
daemon_config.bitcoin_backend =
Some(liana::config::BitcoinBackend::Electrum(ElectrumConfig {
Some(lianad::config::BitcoinBackend::Electrum(ElectrumConfig {
addr: self.addr.value.clone(),
}));
self.processing = true;
Expand Down
6 changes: 2 additions & 4 deletions liana-gui/src/app/state/spend/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,9 @@ use std::sync::Arc;

use iced::Command;

use liana::{
commands::CoinStatus,
miniscript::bitcoin::{Network, OutPoint},
};
use liana::miniscript::bitcoin::{Network, OutPoint};
use liana_ui::widget::Element;
use lianad::commands::CoinStatus;

use super::{redirect, State};
use crate::{
Expand Down
2 changes: 1 addition & 1 deletion liana-gui/src/app/state/spend/step.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ use std::{

use iced::{Command, Subscription};
use liana::{
commands::ListCoinsEntry,
descriptors::LianaDescriptor,
miniscript::bitcoin::{
address, psbt::Psbt, secp256k1, Address, Amount, Denomination, Network, OutPoint,
},
spend::{SpendCreationError, MAX_FEERATE},
};
use lianad::commands::ListCoinsEntry;

use liana_ui::{component::form, widget::Element};

Expand Down
2 changes: 1 addition & 1 deletion liana-gui/src/app/state/transactions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ use std::{

use iced::Command;
use liana::{
commands::CoinStatus,
miniscript::bitcoin::{OutPoint, Txid},
spend::{SpendCreationError, MAX_FEERATE},
};
use liana_ui::{
component::{form, modal::Modal},
widget::*,
};
use lianad::commands::CoinStatus;

pub const HISTORY_EVENT_PAGE_SIZE: u64 = 20;

Expand Down
6 changes: 3 additions & 3 deletions liana-gui/src/app/view/settings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ use iced::{
};

use liana::{
config::BitcoindRpcAuth,
descriptors::{LianaDescriptor, LianaPolicy},
miniscript::bitcoin::{bip32::Fingerprint, Network},
};
use lianad::config::BitcoindRpcAuth;

use super::{dashboard, message::*};

Expand Down Expand Up @@ -452,7 +452,7 @@ pub fn bitcoind_edit<'a>(
pub fn bitcoind<'a>(
is_configured_node_type: bool,
network: Network,
config: &liana::config::BitcoindConfig,
config: &lianad::config::BitcoindConfig,
blockheight: i32,
is_running: Option<bool>,
can_edit: bool,
Expand Down Expand Up @@ -638,7 +638,7 @@ pub fn electrum_edit<'a>(
pub fn electrum<'a>(
is_configured_node_type: bool,
network: Network,
config: &liana::config::ElectrumConfig,
config: &lianad::config::ElectrumConfig,
blockheight: i32,
is_running: Option<bool>,
can_edit: bool,
Expand Down
7 changes: 3 additions & 4 deletions liana-gui/src/daemon/client/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ use std::iter::FromIterator;
use std::path::Path;

use async_trait::async_trait;
use liana::commands::{CoinStatus, CreateRecoveryResult};
use serde::de::DeserializeOwned;
use serde::{Deserialize, Serialize};
use serde_json::json;
Expand All @@ -13,10 +12,10 @@ use tracing::{error, info};
pub mod error;
pub mod jsonrpc;

use liana::{
commands::LabelItem,
use liana::miniscript::bitcoin::{address, psbt::Psbt, Address, Network, OutPoint, Txid};
use lianad::{
commands::{CoinStatus, CreateRecoveryResult, LabelItem},
config::Config,
miniscript::bitcoin::{address, psbt::Psbt, Address, Network, OutPoint, Txid},
};

use super::{model::*, Daemon, DaemonBackend, DaemonError};
Expand Down
4 changes: 2 additions & 2 deletions liana-gui/src/daemon/embedded.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ use tokio::sync::Mutex;

use super::{model::*, node, Daemon, DaemonBackend, DaemonError};
use async_trait::async_trait;
use liana::{
use liana::miniscript::bitcoin::{address, psbt::Psbt, Address, Network, OutPoint, Txid};
use lianad::{
commands::{CoinStatus, LabelItem},
config::Config,
miniscript::bitcoin::{address, psbt::Psbt, Address, Network, OutPoint, Txid},
DaemonControl, DaemonHandle,
};

Expand Down
8 changes: 4 additions & 4 deletions liana-gui/src/daemon/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@ use std::path::Path;

use async_trait::async_trait;

use liana::{
use liana::miniscript::bitcoin::{
address, bip32::Fingerprint, psbt::Psbt, secp256k1, Address, Network, OutPoint, Txid,
};
use lianad::{
commands::{CoinStatus, LabelItem, TransactionInfo},
config::Config,
miniscript::bitcoin::{
address, bip32::Fingerprint, psbt::Psbt, secp256k1, Address, Network, OutPoint, Txid,
},
StartupError,
};

Expand Down
Loading

0 comments on commit 1f7c41a

Please sign in to comment.