Files
bft-crdt-experiment/side-node/src/bitcoin/driver.rs

63 lines
1.8 KiB
Rust
Raw Normal View History

use crate::bitcoin::clients;
use bdk_wallet::bitcoin::{Amount, Network};
use tracing_subscriber::filter::EnvFilter;
use tracing_subscriber::util::SubscriberInitExt;
use tracing_subscriber::{fmt, layer::SubscriberExt};
pub(crate) async fn simple_transfer() -> Result<(), anyhow::Error> {
tracing_setup();
2024-06-25 15:05:33 +01:00
let mut dave = clients::esplora::create_wallet("dave", Network::Signet)?;
let mut sammy = clients::esplora::create_wallet("sammy", Network::Signet)?;
2024-06-25 14:58:53 +01:00
let _next_address = dave.next_unused_address()?;
let _ = dave.balance();
2024-06-25 14:58:53 +01:00
dave.sync().await?;
2024-07-24 18:14:08 +01:00
let _ = dave.balance();
let _sammy = sammy.balance();
sammy.sync().await?;
2024-07-24 18:14:08 +01:00
let _ = sammy.balance();
let send_amount = Amount::from_sat(500);
2024-07-24 18:14:08 +01:00
ensure_enough_sats(dave, send_amount);
let sammy_address = sammy.next_unused_address()?.address;
let tx = dave.build_and_sign_send_tx(sammy_address, send_amount)?;
dave.broadcast(&tx).await?;
2024-07-24 18:14:08 +01:00
Ok(())
}
/// Exit if the wallet does not have enough sats to send.
fn ensure_enough_sats(wallet: EsploraWallet, send_amount: bitcoin::Amount) -> _ {
if wallet.balance().total() < send_amount {
tracing::error!(
"Please send at least {} sats to the receiving address. Exiting.",
send_amount
);
std::process::exit(0);
}
}
pub(crate) async fn htlc() -> anyhow::Result<()> {
2024-07-24 16:52:35 +01:00
// dave will be our sender
let mut dave = clients::esplora::create_wallet("dave", Network::Signet)?;
// sammy will be our liquidity router
let mut sammy = clients::esplora::create_wallet("sammy", Network::Signet)?;
Ok(())
}
fn tracing_setup() {
tracing_subscriber::registry()
.with(fmt::layer())
.with(EnvFilter::from_default_env())
.init();
tracing::info!("Tracing initialized.");
}