From f295731cbd99ced9da57a71f0998956665b73b7c Mon Sep 17 00:00:00 2001 From: f321x Date: Tue, 9 Jul 2024 11:05:18 +0000 Subject: [PATCH] fix taker bond validation endpoint --- .../coordinator/src/communication/mod.rs | 36 ++++++++++--------- .../coordinator/src/database/mod.rs | 7 ++-- 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/taptrade-cli-demo/coordinator/src/communication/mod.rs b/taptrade-cli-demo/coordinator/src/communication/mod.rs index fa44254..74c2f11 100755 --- a/taptrade-cli-demo/coordinator/src/communication/mod.rs +++ b/taptrade-cli-demo/coordinator/src/communication/mod.rs @@ -26,7 +26,7 @@ async fn receive_order( Extension(wallet): Extension>, Json(order): Json, ) -> Result, AppError> { - dbg!(&order); + debug!("{:#?}", &order); if order.sanity_check().is_err() { return Err(AppError(anyhow!("Invalid order request"))); } @@ -64,11 +64,11 @@ async fn submit_maker_bond( { Ok(()) => (), Err(e) => { - dbg!(e); + error!("{}", e); return Ok(StatusCode::NOT_ACCEPTABLE.into_response()); } } - trace!("\nBond validation successful"); + debug!("\nBond validation successful"); let offer_id_hex: String = generate_random_order_id(16); // 16 bytes random offer id, maybe a different system makes more sense later on? (uuid or increasing counter...) // create address for taker bond let new_taker_bond_address = wallet.get_new_address().await.context(format!( @@ -117,22 +117,26 @@ async fn submit_taker_bond( let bond_requirements = database .fetch_taker_bond_requirements(&payload.offer.offer_id_hex) .await; - // match bond_requirements { - // Ok(bond_requirements) => { - // if !wallet - // .validate_bond_tx_hex(&payload.trade_data.signed_bond_hex, &bond_requirements) - // .await? - // { - // dbg!("Taker Bond validation failed"); - // return Ok(StatusCode::NOT_ACCEPTABLE.into_response()); - // } - // } - // Err(_) => return Ok(StatusCode::NOT_FOUND.into_response()), - // } + match bond_requirements { + Ok(bond_requirements) => { + match wallet + .validate_bond_tx_hex(&payload.trade_data.signed_bond_hex, &bond_requirements) + .await + { + Ok(()) => (), + Err(e) => { + warn!("{}", e); + return Ok(StatusCode::NOT_ACCEPTABLE.into_response()); + } + } + } + Err(_) => return Ok(StatusCode::NOT_FOUND.into_response()), + } + debug!("\nTaker bond validation successful"); + panic!("Trade contract PSBT not implemented!"); let trade_contract_psbt_taker = "".to_string(); // implement psbt let trade_contract_psbt_maker = "".to_string(); // implement psbt - panic!("Trade contract PSBT not implemented!"); database .add_taker_info_and_move_table( diff --git a/taptrade-cli-demo/coordinator/src/database/mod.rs b/taptrade-cli-demo/coordinator/src/database/mod.rs index d703262..eb6bb32 100644 --- a/taptrade-cli-demo/coordinator/src/database/mod.rs +++ b/taptrade-cli-demo/coordinator/src/database/mod.rs @@ -281,18 +281,19 @@ impl CoordinatorDB { pub async fn fetch_taker_bond_requirements( &self, offer_id_hex: &String, - ) -> Result { + ) -> Result { let taker_bond_requirements = sqlx::query( - "SELECT taker_bond_address, bond_amount_sat FROM active_maker_offers WHERE offer_id = ?", + "SELECT taker_bond_address, bond_amount_sat, amount_sat FROM active_maker_offers WHERE offer_id = ?", ) .bind(offer_id_hex) .fetch_one(&*self.db_pool) .await?; - Ok(BondRequirementResponse { + Ok(BondRequirements { bond_address: taker_bond_requirements.try_get("taker_bond_address")?, locking_amount_sat: taker_bond_requirements.try_get::("bond_amount_sat")? as u64, + min_input_sum_sat: taker_bond_requirements.try_get::("amount_sat")? as u64, }) }