From fed9a8bde61bee94e08e5f914eb2bc77b8221a1b Mon Sep 17 00:00:00 2001 From: Daniel Karzel Date: Fri, 1 Oct 2021 18:17:37 +1000 Subject: [PATCH 1/3] Fix commit transaction publication 1. Finalize with correct descriptor (of lock tx) 2. Restart fix: Allow retrieving the commit tx in state `PendingCommit` so we can re-publish in that state. 3. Update cfd feed after state transition to `PendingCommit` to see updated state in UI. --- daemon/src/maker_cfd.rs | 3 +++ daemon/src/model/cfd.rs | 9 +++++---- daemon/src/taker_cfd.rs | 3 +++ 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/daemon/src/maker_cfd.rs b/daemon/src/maker_cfd.rs index fd3c5b3..51df511 100644 --- a/daemon/src/maker_cfd.rs +++ b/daemon/src/maker_cfd.rs @@ -445,6 +445,9 @@ impl Actor { let new_state = cfd.handle(CfdStateChangeEvent::CommitTxSent)?; insert_new_cfd_state_by_order_id(cfd.order.id, new_state, &mut conn).await?; + self.cfd_feed_actor_inbox + .send(load_all_cfds(&mut conn).await?)?; + Ok(()) } diff --git a/daemon/src/model/cfd.rs b/daemon/src/model/cfd.rs index d665a72..fd6c7a0 100644 --- a/daemon/src/model/cfd.rs +++ b/daemon/src/model/cfd.rs @@ -322,7 +322,7 @@ impl Display for CfdState { write!(f, "Open") } CfdState::PendingCommit { .. } => { - write!(f, "Pending Committ") + write!(f, "Pending Commit") } CfdState::OpenCommitted { .. } => { write!(f, "Open Committed") @@ -624,8 +624,9 @@ impl Cfd { } pub fn commit_tx(&self) -> Result { - let dlc = if let CfdState::Open { dlc, .. } | CfdState::PendingOpen { dlc, .. } = - self.state.clone() + let dlc = if let CfdState::Open { dlc, .. } + | CfdState::PendingOpen { dlc, .. } + | CfdState::PendingCommit { dlc, .. } = self.state.clone() { dlc } else { @@ -652,7 +653,7 @@ impl Cfd { let signed_commit_tx = finalize_spend_transaction( dlc.commit.0, - &dlc.commit.2, + &dlc.lock.1, (our_pubkey, our_sig), (counterparty_pubkey, counterparty_sig), )?; diff --git a/daemon/src/taker_cfd.rs b/daemon/src/taker_cfd.rs index d990bc9..602ddee 100644 --- a/daemon/src/taker_cfd.rs +++ b/daemon/src/taker_cfd.rs @@ -370,6 +370,9 @@ impl Actor { let new_state = cfd.handle(CfdStateChangeEvent::CommitTxSent)?; insert_new_cfd_state_by_order_id(cfd.order.id, new_state, &mut conn).await?; + self.cfd_feed_actor_inbox + .send(load_all_cfds(&mut conn).await?)?; + Ok(()) } From 60e4b2cee0ca6bbafffab1c683722183bf342fc5 Mon Sep 17 00:00:00 2001 From: Daniel Karzel Date: Fri, 1 Oct 2021 18:29:47 +1000 Subject: [PATCH 2/3] Fix transition to `CommitFinality` from `PendingCommit` --- daemon/src/model/cfd.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/daemon/src/model/cfd.rs b/daemon/src/model/cfd.rs index fd6c7a0..33aef88 100644 --- a/daemon/src/model/cfd.rs +++ b/daemon/src/model/cfd.rs @@ -475,9 +475,9 @@ impl Cfd { } } monitor::Event::CommitFinality(_) => { - let dlc = if let Open { dlc, .. } = self.state.clone() { + let dlc = if let PendingCommit { dlc, .. } = self.state.clone() { dlc - } else if let PendingOpen { dlc, .. } = self.state.clone() { + } else if let PendingOpen { dlc, .. } | Open { dlc, .. } = self.state.clone() { tracing::debug!(%order_id, "Was in unexpected state {}, jumping ahead to OpenCommitted", self.state); dlc } else { From 13814813a9ea78f5ff1406074047cb8e18020397 Mon Sep 17 00:00:00 2001 From: Daniel Karzel Date: Fri, 1 Oct 2021 18:30:15 +1000 Subject: [PATCH 3/3] Refresh feed after state transition after monitor event --- daemon/src/maker_cfd.rs | 3 +++ daemon/src/taker_cfd.rs | 3 +++ 2 files changed, 6 insertions(+) diff --git a/daemon/src/maker_cfd.rs b/daemon/src/maker_cfd.rs index 51df511..a0869d9 100644 --- a/daemon/src/maker_cfd.rs +++ b/daemon/src/maker_cfd.rs @@ -461,6 +461,9 @@ impl Actor { insert_new_cfd_state_by_order_id(order_id, new_state.clone(), &mut conn).await?; + self.cfd_feed_actor_inbox + .send(load_all_cfds(&mut conn).await?)?; + // TODO: Not sure that should be done here... // Consider bubbling the refund availability up to the user, and let user trigger // transaction publication diff --git a/daemon/src/taker_cfd.rs b/daemon/src/taker_cfd.rs index 602ddee..7eb86f8 100644 --- a/daemon/src/taker_cfd.rs +++ b/daemon/src/taker_cfd.rs @@ -337,6 +337,9 @@ impl Actor { insert_new_cfd_state_by_order_id(order_id, new_state.clone(), &mut conn).await?; + self.cfd_feed_actor_inbox + .send(load_all_cfds(&mut conn).await?)?; + // TODO: Not sure that should be done here... // Consider bubbling the refund availability up to the user, and let user trigger // transaction publication