Starting work on HTLC commands

This commit is contained in:
Dave Hrycyszyn
2024-07-24 16:39:19 +01:00
parent 931cba9cde
commit 3d19cc50fb
4 changed files with 13 additions and 23 deletions

View File

@@ -72,14 +72,18 @@ Later, we will aim to remove the Side Watcher from the architecture, by (a) movi
## Bitcoin integration
There is a Bitcoin client integrated into the node, which can do simple coin transfers using esplora and the Mutinynet server's Signet (30 second blocktime).
There is an Esplora Bitcoin client integrated into the node
### Simple coin transfers
The client can do simple coin transfers using esplora and the Mutinynet server's Signet (30 second blocktime).
The client's demo driver can be run by doing:
```
cargo run -- init dave
cargo run -- init sammy
cargo run -- btc
cargo run -- btc-transfer
```
You'll need to have funded the "dave" address prior to running the `btc` command - otherwise the transfer will fail gracefully.
@@ -88,6 +92,11 @@ I was using this primarily as a way to experiment with constructing and broadcas
There is a second, unused Bitcoin client in place which uses Blockstream's Electrum server, but this didn't seem to be working properly with respect to Signet Bitcoin network during my testing, so I went with the esplora / Mutiny version instead.
### HTLCs (in progress)
An experimental driver for Bitcoin Hash Time Locked Contracts (HTLCs).
## Possible uses
### DKG

View File

@@ -54,25 +54,6 @@ pub async fn run() -> Result<(), anyhow::Error> {
Ok(())
}
// /// Create a BDK wallet using BIP 84 descriptor ("m/84h/1h/0h/0" and "m/84h/1h/0h/1")
// pub fn create_wallet(xkey: ExtendedKey) -> anyhow::Result<Wallet<MemoryDatabase>> {
// let xprv = xkey
// .into_xprv(Network::Testnet)
// .expect("couldn't turn xkey into xprv");
// let external_descriptor = Bip84(xprv, KeychainKind::External);
// let internal_descriptor = Some(Bip84(xprv, KeychainKind::Internal));
// let wallet = Wallet::new(
// external_descriptor,
// internal_descriptor,
// Network::Testnet,
// MemoryDatabase::default(),
// )?;
// Ok(wallet)
// }
fn display_balance(wallet: &Wallet<MemoryDatabase>) {
println!(
"Wallet balance for {} after syncing: {:?} sats on network {}",

View File

@@ -18,7 +18,7 @@ pub(crate) struct Args {
#[derive(Subcommand)]
pub(crate) enum Commands {
/// Placeholder for future BTC commands
Btc {},
BtcTransfer {},
/// runs the Side Node
Run { name: String },

View File

@@ -28,7 +28,7 @@ pub async fn run() {
let mut node = setup(name).await;
node.start().await;
}
Some(Commands::Btc {}) => {
Some(Commands::BtcTransfer {}) => {
let _ = bitcoin::driver::run().await;
}
None => println!("No command provided. Exiting. See --help for more information."),