Extract spend key as soon as possible

This commit is contained in:
Franck Royer 2020-12-03 09:48:18 +11:00
parent c095693a5f
commit 238f6a989d
No known key found for this signature in database
GPG Key ID: A82ED75A8DFC50A4

View File

@ -67,8 +67,7 @@ pub enum AliceState {
tx_cancel: TxCancel,
},
BtcRefunded {
tx_refund: TxRefund,
published_refund_tx: ::bitcoin::Transaction,
spend_key: monero::PrivateKey,
state3: State3,
},
BtcPunishable {
@ -244,8 +243,9 @@ pub async fn run_until(
tracing::info!("Cannot resume swap from BTC locked state, aborting");
// Alice did not lock Xmr yet
swap(
run_until(
AliceState::SafelyAborted,
is_target_state,
event_loop_handle,
bitcoin_wallet,
monero_wallet,
@ -401,12 +401,16 @@ pub async fn run_until(
.await
}
Some(published_refund_tx) => {
let spend_key = extract_monero_private_key(
published_refund_tx,
tx_refund,
state3.s_a,
state3.a.clone(),
state3.S_b_bitcoin,
)?;
run_until(
AliceState::BtcRefunded {
tx_refund,
published_refund_tx,
state3,
},
AliceState::BtcRefunded { spend_key, state3 },
is_target_state,
event_loop_handle,
bitcoin_wallet.clone(),
@ -417,18 +421,7 @@ pub async fn run_until(
}
}
}
AliceState::BtcRefunded {
tx_refund,
published_refund_tx,
state3,
} => {
let spend_key = extract_monero_private_key(
published_refund_tx,
tx_refund,
state3.s_a,
state3.a.clone(),
state3.S_b_bitcoin,
)?;
AliceState::BtcRefunded { spend_key, state3 } => {
let view_key = state3.v;
monero_wallet
@ -472,12 +465,16 @@ pub async fn run_until(
.await
}
Either::Right((published_refund_tx, _)) => {
let spend_key = extract_monero_private_key(
published_refund_tx,
tx_refund,
state3.s_a,
state3.a.clone(),
state3.S_b_bitcoin,
)?;
run_until(
AliceState::BtcRefunded {
tx_refund,
published_refund_tx,
state3,
},
AliceState::BtcRefunded { spend_key, state3 },
is_target_state,
event_loop_handle,
bitcoin_wallet.clone(),