mirror of
https://github.com/comit-network/xmr-btc-swap.git
synced 2025-09-22 05:44:43 -04:00
Revert "Reimplement tx_punish check without breaking database changes"
This reverts commit ab33bcde8f
.
This commit is contained in:
parent
a25decfadb
commit
783bae0f85
2 changed files with 26 additions and 34 deletions
|
@ -1,6 +1,6 @@
|
||||||
use crate::bitcoin::{parse_rpc_error_code, RpcErrorCode, Wallet};
|
use crate::bitcoin::{parse_rpc_error_code, RpcErrorCode, Wallet};
|
||||||
use crate::protocol::bob::BobState;
|
use crate::protocol::bob::BobState;
|
||||||
use crate::protocol::{Database, State};
|
use crate::protocol::Database;
|
||||||
use anyhow::{bail, Result};
|
use anyhow::{bail, Result};
|
||||||
use bitcoin::Txid;
|
use bitcoin::Txid;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
@ -123,19 +123,7 @@ pub async fn refund(
|
||||||
Ok(state)
|
Ok(state)
|
||||||
}
|
}
|
||||||
Err(error) => {
|
Err(error) => {
|
||||||
let state3 = db
|
if state6
|
||||||
.get_states(swap_id)
|
|
||||||
.await?
|
|
||||||
.iter()
|
|
||||||
.find_map(|state| {
|
|
||||||
if let State::Bob(BobState::BtcLocked { state3, .. }) = state {
|
|
||||||
Some(state3.clone())
|
|
||||||
} else {
|
|
||||||
None
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if state3
|
|
||||||
.expect("Error: weren't able to extract State3 from database.")
|
|
||||||
.check_for_tx_punish(bitcoin_wallet.as_ref())
|
.check_for_tx_punish(bitcoin_wallet.as_ref())
|
||||||
.await
|
.await
|
||||||
.is_ok()
|
.is_ok()
|
||||||
|
|
|
@ -436,6 +436,7 @@ impl State3 {
|
||||||
cancel_timelock: self.cancel_timelock,
|
cancel_timelock: self.cancel_timelock,
|
||||||
punish_timelock: self.punish_timelock,
|
punish_timelock: self.punish_timelock,
|
||||||
refund_address: self.refund_address.clone(),
|
refund_address: self.refund_address.clone(),
|
||||||
|
punish_address: self.punish_address.clone(),
|
||||||
tx_lock: self.tx_lock.clone(),
|
tx_lock: self.tx_lock.clone(),
|
||||||
tx_cancel_sig_a: self.tx_cancel_sig_a.clone(),
|
tx_cancel_sig_a: self.tx_cancel_sig_a.clone(),
|
||||||
tx_refund_encsig: self.tx_refund_encsig.clone(),
|
tx_refund_encsig: self.tx_refund_encsig.clone(),
|
||||||
|
@ -471,26 +472,6 @@ impl State3 {
|
||||||
tx_cancel_status,
|
tx_cancel_status,
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
pub async fn check_for_tx_punish(
|
|
||||||
&self,
|
|
||||||
bitcoin_wallet: &bitcoin::Wallet,
|
|
||||||
) -> Result<Transaction> {
|
|
||||||
let tx_cancel = bitcoin::TxCancel::new(
|
|
||||||
&self.tx_lock,
|
|
||||||
self.cancel_timelock,
|
|
||||||
self.A,
|
|
||||||
self.b.public(),
|
|
||||||
self.tx_cancel_fee,
|
|
||||||
)?;
|
|
||||||
let tx_punish = bitcoin::TxPunish::new(
|
|
||||||
&tx_cancel,
|
|
||||||
&self.punish_address,
|
|
||||||
self.punish_timelock,
|
|
||||||
self.tx_punish_fee,
|
|
||||||
);
|
|
||||||
let tx = bitcoin_wallet.get_raw_transaction(tx_punish.txid()).await?;
|
|
||||||
Ok(tx)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
|
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
|
||||||
|
@ -605,6 +586,7 @@ impl State4 {
|
||||||
cancel_timelock: self.cancel_timelock,
|
cancel_timelock: self.cancel_timelock,
|
||||||
punish_timelock: self.punish_timelock,
|
punish_timelock: self.punish_timelock,
|
||||||
refund_address: self.refund_address,
|
refund_address: self.refund_address,
|
||||||
|
punish_address: self.punish_address,
|
||||||
tx_lock: self.tx_lock,
|
tx_lock: self.tx_lock,
|
||||||
tx_cancel_sig_a: self.tx_cancel_sig_a,
|
tx_cancel_sig_a: self.tx_cancel_sig_a,
|
||||||
tx_refund_encsig: self.tx_refund_encsig,
|
tx_refund_encsig: self.tx_refund_encsig,
|
||||||
|
@ -646,6 +628,7 @@ pub struct State6 {
|
||||||
cancel_timelock: CancelTimelock,
|
cancel_timelock: CancelTimelock,
|
||||||
punish_timelock: PunishTimelock,
|
punish_timelock: PunishTimelock,
|
||||||
refund_address: bitcoin::Address,
|
refund_address: bitcoin::Address,
|
||||||
|
punish_address: bitcoin::Address,
|
||||||
tx_lock: bitcoin::TxLock,
|
tx_lock: bitcoin::TxLock,
|
||||||
tx_cancel_sig_a: Signature,
|
tx_cancel_sig_a: Signature,
|
||||||
tx_refund_encsig: bitcoin::EncryptedSignature,
|
tx_refund_encsig: bitcoin::EncryptedSignature,
|
||||||
|
@ -698,6 +681,27 @@ impl State6 {
|
||||||
Ok(tx)
|
Ok(tx)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn check_for_tx_punish(
|
||||||
|
&self,
|
||||||
|
bitcoin_wallet: &bitcoin::Wallet,
|
||||||
|
) -> Result<Transaction> {
|
||||||
|
let tx_cancel = bitcoin::TxCancel::new(
|
||||||
|
&self.tx_lock,
|
||||||
|
self.cancel_timelock,
|
||||||
|
self.A,
|
||||||
|
self.b.public(),
|
||||||
|
self.tx_cancel_fee,
|
||||||
|
)?;
|
||||||
|
let tx_punish = bitcoin::TxPunish::new(
|
||||||
|
&tx_cancel,
|
||||||
|
&self.punish_address,
|
||||||
|
self.punish_timelock,
|
||||||
|
self.tx_punish_fee,
|
||||||
|
);
|
||||||
|
let tx = bitcoin_wallet.get_raw_transaction(tx_punish.txid()).await?;
|
||||||
|
Ok(tx)
|
||||||
|
}
|
||||||
|
|
||||||
pub async fn submit_tx_cancel(
|
pub async fn submit_tx_cancel(
|
||||||
&self,
|
&self,
|
||||||
bitcoin_wallet: &bitcoin::Wallet,
|
bitcoin_wallet: &bitcoin::Wallet,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue