From aba9dca686df4636db028efa688c0db12730d610 Mon Sep 17 00:00:00 2001 From: fbock Date: Mon, 5 Aug 2024 11:03:16 +0200 Subject: [PATCH] fix musig pubkey submission --- .vscode/settings.json | 3 ++- .../coordinator/src/coordinator/mod.rs | 1 - .../coordinator/src/wallet/escrow_psbt.rs | 17 +++++++++------- .../coordinator/src/wallet/wallet_tests.rs | 9 +++++++++ .../src/communication/taker_requests.rs | 20 ++++++++++++++----- .../trader/src/trading/maker_utils.rs | 2 +- .../trader/src/trading/taker_utils.rs | 2 +- taptrade-cli-demo/trader/src/wallet/mod.rs | 8 ++++++-- 8 files changed, 44 insertions(+), 18 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 051dab9..f399c71 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,5 +5,6 @@ ], "nixEnvSelector.suggestion": true, "nixEnvSelector.nixFile": "${workspaceFolder}/shell.nix", - "lldb.showDisassembly": "never" + "lldb.showDisassembly": "never", + "vim.useSystemClipboard": true } diff --git a/taptrade-cli-demo/coordinator/src/coordinator/mod.rs b/taptrade-cli-demo/coordinator/src/coordinator/mod.rs index d4e399c..012ebfb 100755 --- a/taptrade-cli-demo/coordinator/src/coordinator/mod.rs +++ b/taptrade-cli-demo/coordinator/src/coordinator/mod.rs @@ -212,7 +212,6 @@ pub async fn fetch_escrow_confirmation_status( Ok(status) => status, Err(e) => return Err(FetchEscrowConfirmationError::Database(e.to_string())), } { - // rust smh Ok(true) } else { Err(FetchEscrowConfirmationError::NotFound) diff --git a/taptrade-cli-demo/coordinator/src/wallet/escrow_psbt.rs b/taptrade-cli-demo/coordinator/src/wallet/escrow_psbt.rs index 065d142..f441b5f 100644 --- a/taptrade-cli-demo/coordinator/src/wallet/escrow_psbt.rs +++ b/taptrade-cli-demo/coordinator/src/wallet/escrow_psbt.rs @@ -32,14 +32,17 @@ impl EscrowPsbtConstructionData { } } -fn aggregate_musig_pubkeys(maker_musig_pubkey: &str, taker_musig_pubkey: &str) -> Result { +pub fn aggregate_musig_pubkeys( + maker_musig_pubkey: &str, + taker_musig_pubkey: &str, +) -> Result { + debug!( + "Aggregating musig pubkeys: {} and {}", + maker_musig_pubkey, taker_musig_pubkey + ); let pubkeys: [MuSig2PubKey; 2] = [ - maker_musig_pubkey - .parse() - .context("Error parsing musig pk 1")?, - taker_musig_pubkey - .parse() - .context("Error parsing musig pk 2")?, + MuSig2PubKey::from_str(maker_musig_pubkey).context("Error parsing musig pk 1")?, + MuSig2PubKey::from_str(taker_musig_pubkey).context("Error parsing musig pk 2")?, ]; let key_agg_ctx = KeyAggContext::new(pubkeys).context("Error aggregating musig pubkeys")?; diff --git a/taptrade-cli-demo/coordinator/src/wallet/wallet_tests.rs b/taptrade-cli-demo/coordinator/src/wallet/wallet_tests.rs index a223fcf..edcf492 100644 --- a/taptrade-cli-demo/coordinator/src/wallet/wallet_tests.rs +++ b/taptrade-cli-demo/coordinator/src/wallet/wallet_tests.rs @@ -269,3 +269,12 @@ async fn test_build_escrow_transaction_output_descriptor() { dbg!(&result); // cargo test -- --nocapture to see the output assert!(result.is_ok()); } + +#[test] +fn test_aggregate_musig_pubkeys() { + let agg_pk_result = aggregate_musig_pubkeys( + "02F9308A019258C31049344F85F89D5229B531C845836F99B08601F113BCE036F9", + "03DFF1D77F2A671C5F36183726DB2341BE58FEAE1DA2DECED843240F7B502BA659", + ); + assert!(agg_pk_result.is_ok()); +} diff --git a/taptrade-cli-demo/trader/src/communication/taker_requests.rs b/taptrade-cli-demo/trader/src/communication/taker_requests.rs index 9ef2fff..bcc4b52 100644 --- a/taptrade-cli-demo/trader/src/communication/taker_requests.rs +++ b/taptrade-cli-demo/trader/src/communication/taker_requests.rs @@ -1,4 +1,5 @@ use anyhow::Context; +use reqwest::StatusCode; use super::{api::*, *}; @@ -78,10 +79,19 @@ impl OfferPsbtRequest { taker_config.coordinator_endpoint, "/submit-taker-bond" )) .json(&request) - .send()? - .json::()?; - - debug!("Trader received escrow psbt"); - Ok(res) + .send()?; + match res.status() { + StatusCode::OK => { + debug!("Taker bond accepted"); + Ok(res.json::()?) + } + _ => { + debug!( + "Taker bond submission failed: status code: {}", + res.status() + ); + Err(anyhow!("Taker bond rejected")) + } + } } } diff --git a/taptrade-cli-demo/trader/src/trading/maker_utils.rs b/taptrade-cli-demo/trader/src/trading/maker_utils.rs index 1bb789b..a54499f 100644 --- a/taptrade-cli-demo/trader/src/trading/maker_utils.rs +++ b/taptrade-cli-demo/trader/src/trading/maker_utils.rs @@ -28,7 +28,7 @@ impl ActiveOffer { signed_bond_hex: serialize_hex(&bond.clone().extract_tx()), payout_address: payout_address.address.to_string(), musig_pub_nonce_hex: hex::encode(musig_data.nonce.get_pub_for_sharing()?.serialize()), - musig_pubkey_hex: hex::encode(musig_data.public_key.to_string()), + musig_pubkey_hex: hex::encode(musig_data.public_key.serialize()), taproot_pubkey_hex: hex::encode(&trading_wallet.taproot_pubkey.serialize()), bdk_psbt_inputs_hex_csv: psbt_inputs_hex_csv.clone(), client_change_address: escrow_change_address.clone(), diff --git a/taptrade-cli-demo/trader/src/trading/taker_utils.rs b/taptrade-cli-demo/trader/src/trading/taker_utils.rs index 2ca2f47..51f0128 100644 --- a/taptrade-cli-demo/trader/src/trading/taker_utils.rs +++ b/taptrade-cli-demo/trader/src/trading/taker_utils.rs @@ -32,7 +32,7 @@ impl ActiveOffer { payout_address: payout_address.address.to_string(), taproot_pubkey_hex: trading_wallet.taproot_pubkey.to_string(), musig_pub_nonce_hex: musig_data.nonce.get_pub_for_sharing()?.to_string(), - musig_pubkey_hex: musig_data.public_key.to_string(), + musig_pubkey_hex: hex::encode(musig_data.public_key.serialize()), bdk_psbt_inputs_hex_csv: bdk_psbt_inputs_hex_csv.clone(), client_change_address: client_change_address.clone(), }; diff --git a/taptrade-cli-demo/trader/src/wallet/mod.rs b/taptrade-cli-demo/trader/src/wallet/mod.rs index 0572639..165e251 100644 --- a/taptrade-cli-demo/trader/src/wallet/mod.rs +++ b/taptrade-cli-demo/trader/src/wallet/mod.rs @@ -30,7 +30,7 @@ use bond::Bond; use cli::OfferType; use musig2::MuSigData; use serde::Serialize; -use std::str::FromStr; +use std::{ops::Add, str::FromStr}; use wallet_utils::get_seed; pub struct TradingWallet { @@ -74,7 +74,11 @@ impl TradingWallet { .x_only_public_key(); wallet.sync(&backend, SyncOptions::default())?; - dbg!("Balance: {} SAT", wallet.get_balance()?); + dbg!( + "Balance: {} SAT\nnew address: {}", + wallet.get_balance()?, + wallet.get_address(AddressIndex::New)?.address + ); Ok(TradingWallet { wallet, backend,