From 9b9c22cc90fd59fa2626654b7ec7fd6e6a142797 Mon Sep 17 00:00:00 2001
From: TheCharlatan <seb.kung@gmail.com>
Date: Fri, 29 Apr 2022 13:21:43 +0200
Subject: [PATCH 01/32] Walletd: Add stubs for saving a checkpoint

---
 Cargo.lock             | 23 +++++++++++++++++++
 Cargo.toml             |  3 +++
 src/bin/walletd.rs     | 10 ++++++--
 src/walletd/runtime.rs | 52 ++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 86 insertions(+), 2 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 71f664f8c..64fae93eb 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1099,6 +1099,7 @@ dependencies = [
  "lazy_static",
  "lightning_encoding 0.6.1",
  "lightning_encoding 0.7.1",
+ "lmdb",
  "lnp-core",
  "lnpbp 0.6.0",
  "lnpbp 0.7.0",
@@ -1742,6 +1743,28 @@ version = "0.5.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3"
 
+[[package]]
+name = "lmdb"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b0908efb5d6496aa977d96f91413da2635a902e5e31dbef0bfb88986c248539"
+dependencies = [
+ "bitflags",
+ "libc",
+ "lmdb-sys",
+]
+
+[[package]]
+name = "lmdb-sys"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d5b392838cfe8858e86fac37cf97a0e8c55cc60ba0a18365cadc33092f128ce9"
+dependencies = [
+ "cc",
+ "libc",
+ "pkg-config",
+]
+
 [[package]]
 name = "lnp-core"
 version = "0.6.0"
diff --git a/Cargo.toml b/Cargo.toml
index 04e6350fb..d9050ed7a 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -74,6 +74,9 @@ lazy_static = "1.4"
 lightning_encoding = "0.6.1"
 lnp-core = { version = "0.6.0", git = "https://github.com/LNP-BP/lnp-core" }
 lnpbp = { version = "0.6.0", features = ["all"] }
+lmdb = "0.8.0"
+# lnp-core =  { path = "../ext/lnp-core" }
+# internet2 = { path = "../ext/rust-internet2" }
 # Congig & logging
 log = { version = "0.4", features = ["max_level_trace", "release_max_level_debug"] }
 monero = "0.16"
diff --git a/src/bin/walletd.rs b/src/bin/walletd.rs
index 0164debd2..f8728096e 100644
--- a/src/bin/walletd.rs
+++ b/src/bin/walletd.rs
@@ -54,8 +54,14 @@ fn main() {
     let node_id = node_secrets.node_id();
 
     debug!("Starting runtime ...");
-    walletd::run(service_config, wallet_token, node_secrets, node_id)
-        .expect("Error running walletd runtime");
+    walletd::run(
+        service_config,
+        wallet_token,
+        node_secrets,
+        node_id,
+        opts.shared.data_dir,
+    )
+    .expect("Error running walletd runtime");
 
     unreachable!()
 }
diff --git a/src/walletd/runtime.rs b/src/walletd/runtime.rs
index 10d385c47..9ae46f23c 100644
--- a/src/walletd/runtime.rs
+++ b/src/walletd/runtime.rs
@@ -1,4 +1,6 @@
 use crate::service::Endpoints;
+use lmdb::{Cursor, Transaction as LMDBTransaction};
+use std::path::PathBuf;
 use std::{
     any::Any,
     collections::{HashMap, HashSet},
@@ -67,6 +69,7 @@ pub fn run(
     wallet_token: Token,
     node_secrets: NodeSecrets,
     _node_id: bitcoin::secp256k1::PublicKey,
+    data_dir: PathBuf,
 ) -> Result<(), Error> {
     let runtime = Runtime {
         identity: ServiceId::Wallet,
@@ -76,6 +79,7 @@ pub fn run(
         swaps: none!(),
         btc_addrs: none!(),
         xmr_addrs: none!(),
+        checkpoints: CheckpointGetSet::new(data_dir),
     };
 
     Service::run(config, runtime, false)
@@ -89,6 +93,7 @@ pub struct Runtime {
     swaps: HashMap<SwapId, Option<Request>>,
     btc_addrs: HashMap<SwapId, bitcoin::Address>,
     xmr_addrs: HashMap<SwapId, monero::Address>,
+    checkpoints: CheckpointGetSet,
 }
 
 impl Runtime {
@@ -1394,3 +1399,50 @@ pub fn funding_update(funding: &mut FundingTx, tx: bitcoin::Transaction) -> Resu
     let funding_bundle = FundingTransaction::<Bitcoin<SegwitV0>> { funding: tx };
     Ok(funding.update(funding_bundle.funding)?)
 }
+
+struct CheckpointGetSet(lmdb::Environment);
+
+impl CheckpointGetSet {
+    fn new(path: PathBuf) -> CheckpointGetSet {
+        let env = lmdb::Environment::new().open(&path).unwrap();
+        env.create_db(None, lmdb::DatabaseFlags::empty()).unwrap();
+        CheckpointGetSet(env)
+    }
+
+    fn set_state(&mut self, key: &SwapId, val: &[u8]) {
+        let db = self.0.open_db(None).unwrap();
+        let mut tx = self.0.begin_rw_txn().unwrap();
+        if !tx.get(db, &key).is_err() {
+            tx.del(db, &key, None).unwrap();
+        }
+        tx.put(db, &key, &val, lmdb::WriteFlags::empty()).unwrap();
+        tx.commit().unwrap();
+    }
+
+    fn get_state(&mut self, key: &SwapId) -> Vec<u8> {
+        let db = self.0.open_db(None).unwrap();
+        let tx = self.0.begin_ro_txn().unwrap();
+        let val: Vec<u8> = tx.get(db, &key).unwrap().into();
+        tx.abort();
+        val
+    }
+}
+
+#[test]
+fn test_lmdb_state() {
+    let val1 = vec![0, 1];
+    let val2 = vec![2, 3, 4, 5];
+    let key1 = SwapId::random();
+    let key2 = SwapId::random();
+    let path = std::env::current_dir().unwrap();
+    let mut state = CheckpointGetSet::new(path.to_path_buf());
+    state.set_state(&key1, &val1);
+    let res = state.get_state(&key1);
+    assert_eq!(val1, res);
+    state.set_state(&key1, &val2);
+    let res = state.get_state(&key1);
+    assert_eq!(val2, res);
+    state.set_state(&key2, &val2);
+    let res = state.get_state(&key2);
+    assert_eq!(val2, res);
+}

From d2693eab63dc4f566f390819a066ee09005bc623 Mon Sep 17 00:00:00 2001
From: TheCharlatan <seb.kung@gmail.com>
Date: Fri, 29 Apr 2022 13:22:47 +0200
Subject: [PATCH 02/32] Walletd: Remove unused nodeid arg

---
 src/bin/walletd.rs     | 2 --
 src/walletd/runtime.rs | 1 -
 2 files changed, 3 deletions(-)

diff --git a/src/bin/walletd.rs b/src/bin/walletd.rs
index f8728096e..edda9e817 100644
--- a/src/bin/walletd.rs
+++ b/src/bin/walletd.rs
@@ -51,14 +51,12 @@ fn main() {
     let wallet_token = Token(opts.wallet_token.token);
 
     let node_secrets = NodeSecrets::new(opts.key_opts.key_file.clone());
-    let node_id = node_secrets.node_id();
 
     debug!("Starting runtime ...");
     walletd::run(
         service_config,
         wallet_token,
         node_secrets,
-        node_id,
         opts.shared.data_dir,
     )
     .expect("Error running walletd runtime");
diff --git a/src/walletd/runtime.rs b/src/walletd/runtime.rs
index 9ae46f23c..ed88a271f 100644
--- a/src/walletd/runtime.rs
+++ b/src/walletd/runtime.rs
@@ -68,7 +68,6 @@ pub fn run(
     config: ServiceConfig,
     wallet_token: Token,
     node_secrets: NodeSecrets,
-    _node_id: bitcoin::secp256k1::PublicKey,
     data_dir: PathBuf,
 ) -> Result<(), Error> {
     let runtime = Runtime {

From bbba30298860c160feb43357f4405dafd8f677d0 Mon Sep 17 00:00:00 2001
From: Robert Hambrock <roberthambrock@gmail.com>
Date: Sun, 1 May 2022 04:43:39 +0200
Subject: [PATCH 03/32] impl Encodable for AliceState

---
 doc/sequencediagram.txt |  1 -
 src/walletd/runtime.rs  | 21 +++++++++++++++++++++
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/doc/sequencediagram.txt b/doc/sequencediagram.txt
index 2a376acfe..e4db6752f 100644
--- a/doc/sequencediagram.txt
+++ b/doc/sequencediagram.txt
@@ -117,7 +117,6 @@ parallel off
 
 m_swap --> m_swap : Checkpoint Alice 0
 m_swap -> m_syncer : Watch Accordant Lock
-m_swap -> m_syncer : Broadcast Accordant Lock
 
 parallel
 m_swap <- m_syncer : Accordant Lock final
diff --git a/src/walletd/runtime.rs b/src/walletd/runtime.rs
index ed88a271f..e77a7a3d6 100644
--- a/src/walletd/runtime.rs
+++ b/src/walletd/runtime.rs
@@ -45,6 +45,7 @@ use farcaster_core::{
         FullySignedPunish, FullySignedRefund, FundingTransaction, Proof, SignedAdaptorBuy,
         SignedAdaptorRefund, SignedArbitratingLock,
     },
+    consensus::{self, CanonicalBytes, Decodable, Encodable},
     crypto::{ArbitratingKeyId, GenerateKey, SharedKeyId},
     crypto::{CommitmentEngine, ProveCrossGroupDleq},
     monero::{Monero, SHARED_VIEW_KEY_ID},
@@ -123,6 +124,26 @@ pub struct AliceState {
     adaptor_refund: Option<SignedAdaptorRefund<farcaster_core::bitcoin::BitcoinSegwitV0>>,
 }
 
+impl Encodable for AliceState {
+    fn consensus_encode<W: io::Write>(&self, writer: &mut W) -> Result<usize, io::Error> {
+        let mut len = self.alice.consensus_encode(writer)?;
+        len += self.local_params.consensus_encode(writer)?;
+        len += self.local_proof.consensus_encode(writer)?;
+        len += self.key_manager.consensus_encode(writer)?;
+        len += self.pub_offer.consensus_encode(writer)?;
+        len += self.remote_commit.consensus_encode(writer)?;
+        len += self.remote_params.consensus_encode(writer)?;
+        len += self.remote_proof.consensus_encode(writer)?;
+        len += self.core_arb_setup.consensus_encode(writer)?;
+        len += self
+            .alice_cancel_signature
+            .as_canonical_bytes()
+            .consensus_encode(writer)?;
+        len += self.adaptor_refund.consensus_encode(writer)?;
+        Ok(len)
+    }
+}
+
 impl AliceState {
     fn new(
         alice: Alice<BtcXmr>,

From af5b933b8d80695a31d89a494c6dd157175e2387 Mon Sep 17 00:00:00 2001
From: Robert Hambrock <roberthambrock@gmail.com>
Date: Sun, 1 May 2022 05:04:48 +0200
Subject: [PATCH 04/32] use farcaster-core work branch

---
 Cargo.toml | 1 -
 1 file changed, 1 deletion(-)

diff --git a/Cargo.toml b/Cargo.toml
index d9050ed7a..3ebdb632d 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -47,7 +47,6 @@ required-features = ["server"]
 # farcaster_core = { version = "0.4.4", features = ["serde"] }
 farcaster_core = { git = "https://github.com/farcaster-project/farcaster-core", branch = "main", features = ["serde"] }
 
-
 anyhow = "1"
 hex = "^0.4.3"
 

From 269ba2d85d1a71ecaf430bbcf8c3e736584e5fee Mon Sep 17 00:00:00 2001
From: Robert Hambrock <roberthambrock@gmail.com>
Date: Sun, 1 May 2022 15:27:56 +0200
Subject: [PATCH 05/32] impl Decodable for AliceState

---
 src/walletd/runtime.rs | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/src/walletd/runtime.rs b/src/walletd/runtime.rs
index e77a7a3d6..31f949585 100644
--- a/src/walletd/runtime.rs
+++ b/src/walletd/runtime.rs
@@ -144,6 +144,26 @@ impl Encodable for AliceState {
     }
 }
 
+impl Decodable for AliceState {
+    fn consensus_decode<D: io::Read>(d: &mut D) -> Result<Self, consensus::Error> {
+        Ok(AliceState {
+            alice: Decodable::consensus_decode(d)?,
+            local_params: Decodable::consensus_decode(d)?,
+            local_proof: Decodable::consensus_decode(d)?,
+            key_manager: Decodable::consensus_decode(d)?,
+            pub_offer: Decodable::consensus_decode(d)?,
+            remote_commit: Decodable::consensus_decode(d)?,
+            remote_params: Decodable::consensus_decode(d)?,
+            remote_proof: Decodable::consensus_decode(d)?,
+            core_arb_setup: Decodable::consensus_decode(d)?,
+            alice_cancel_signature: Option::<Signature>::from_canonical_bytes(
+                farcaster_core::unwrap_vec_ref!(d).as_ref(),
+            )?,
+            adaptor_refund: Decodable::consensus_decode(d)?,
+        })
+    }
+}
+
 impl AliceState {
     fn new(
         alice: Alice<BtcXmr>,

From 44daa4f5d030c4a89c29f39db40c1cd684494fa3 Mon Sep 17 00:00:00 2001
From: Robert Hambrock <roberthambrock@gmail.com>
Date: Sun, 1 May 2022 16:27:26 +0200
Subject: [PATCH 06/32] impl Encodable/Decodable for BobState

---
 src/walletd/runtime.rs | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/src/walletd/runtime.rs b/src/walletd/runtime.rs
index 31f949585..565f99bca 100644
--- a/src/walletd/runtime.rs
+++ b/src/walletd/runtime.rs
@@ -203,6 +203,41 @@ pub struct BobState {
     adaptor_buy: Option<SignedAdaptorBuy<Bitcoin<SegwitV0>>>,
 }
 
+impl Encodable for BobState {
+    fn consensus_encode<W: io::Write>(&self, writer: &mut W) -> Result<usize, io::Error> {
+        let mut len = self.bob.consensus_encode(writer)?;
+        len += self.local_params.consensus_encode(writer)?;
+        len += self.local_proof.consensus_encode(writer)?;
+        len += self.key_manager.consensus_encode(writer)?;
+        len += self.pub_offer.consensus_encode(writer)?;
+        len += self.funding_tx.consensus_encode(writer)?;
+        len += self.remote_commit_params.consensus_encode(writer)?;
+        len += self.remote_params.consensus_encode(writer)?;
+        len += self.remote_proof.consensus_encode(writer)?;
+        len += self.core_arb_setup.consensus_encode(writer)?;
+        len += self.adaptor_buy.consensus_encode(writer)?;
+        Ok(len)
+    }
+}
+
+impl Decodable for BobState {
+    fn consensus_decode<D: io::Read>(d: &mut D) -> Result<Self, consensus::Error> {
+        Ok(BobState {
+            bob: Decodable::consensus_decode(d)?,
+            local_params: Decodable::consensus_decode(d)?,
+            local_proof: Decodable::consensus_decode(d)?,
+            key_manager: Decodable::consensus_decode(d)?,
+            pub_offer: Decodable::consensus_decode(d)?,
+            funding_tx: Decodable::consensus_decode(d)?,
+            remote_commit_params: Decodable::consensus_decode(d)?,
+            remote_params: Decodable::consensus_decode(d)?,
+            remote_proof: Decodable::consensus_decode(d)?,
+            core_arb_setup: Decodable::consensus_decode(d)?,
+            adaptor_buy: Decodable::consensus_decode(d)?,
+        })
+    }
+}
+
 impl BobState {
     fn new(
         bob: Bob<BtcXmr>,

From f6413a97be3db465b77a99289b17b355e6708786 Mon Sep 17 00:00:00 2001
From: Robert Hambrock <roberthambrock@gmail.com>
Date: Wed, 4 May 2022 19:21:26 +0200
Subject: [PATCH 07/32] update state diagram

---
 doc/sequence_diagram.svg |  2 +-
 doc/sequencediagram.txt  | 13 +++++++++++--
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/doc/sequence_diagram.svg b/doc/sequence_diagram.svg
index dd3fbaa80..dafcc26f1 100644
--- a/doc/sequence_diagram.svg
+++ b/doc/sequence_diagram.svg
@@ -1 +1 @@
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="2500" height="5949"><desc>title%20Farcaster%20node%0A%2F%2F%20to%20display%20the%20diagram%2C%20go%20to%20sequencediagram.org%0A%2F%2F%20dashed%20lines%2C%20not%20yet%20implemented%0A%0Aparticipant%20t_syncer%0Aparticipant%20t_wallet%0Aparticipant%20t_swap%0Aparticipant%20t_farcasterd%0Aparticipant%20t_cli%0Aparticipant%20peerd%0Aparticipant%20m_cli%0Aparticipant%20m_farcasterd%0Aparticipant%20m_swap%0Aparticipant%20m_wallet%0Aparticipant%20m_syncer%0A%0A%0A%3D%3DSetup%20and%20Commit-Reveal%3A%20Bob%20and%20Alice%20can%20be%20on%20both%20sides%3D%3D%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20launch%20farcasterd%5Cnmanually%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20launch%20walletd%0Am_farcasterd%20%3C-%20m_wallet%20%3A%20Ctl%20Hello%0Am_cli%20-%3E%20m_farcasterd%20%3A%20MakeOffer%20(deferred)%0Am_farcasterd%20-%3E%20m_wallet%20%3A%20Ctl%20GetKeys%0Am_farcasterd%20%3C-%20m_wallet%20%3A%20Ctl%20Keys%20(not%20to%20be%20held%20on%20state)%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20MakeOffer%20(continues)%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20launch%5Cnpeerd%20listen%0At_farcasterd%20-%3E%20t_farcasterd%20%3A%20launch%20farcasterd%5Cnmanually%0At_farcasterd%20-%3E%20t_farcasterd%20%3A%20launch%20walletd%0At_wallet%20-%3E%20t_farcasterd%20%3A%20Ctl%20Hello%0At_cli%20-%3E%20t_farcasterd%20%3A%20Ctl%20TakeOffer%20(deferred)%0At_wallet%20%3C-%20t_farcasterd%20%3A%20Ctl%20GetKeys%0At_wallet%20-%3E%20t_farcasterd%20%3A%20Ctl%20Keys%20(not%20to%20be%20held%20on%20state)%0At_farcasterd%20%3C-%20t_farcasterd%20%3A%20Ctl%20TakeOffer%20(continues)%0At_farcasterd%20-%3E%20t_farcasterd%20%3A%20launch%5Cnpeerd%20connect%0At_wallet%20%3C-%20t_farcasterd%20%3A%20Ctl%20TakeOffer%0At_wallet%20-%3E%20t_wallet%20%3A%20create%20taker%20wallet%0At_wallet%20-%3E%20t_farcasterd%20%3A%20Ctl%20LaunchSwap%0At_swap%20-%3E%20t_farcasterd%20%3A%20Ctl%20Hello%0At_farcasterd%20-%3E%20t_farcasterd%3Alaunch%20syncer%0At_swap%20%3C-%20t_farcasterd%20%3A%20Ctl%20TakeSwap%0At_swap%20-%3E%20peerd%20%3A%20Msg%20TakerCommit%0Apeerd%20-%3E%20m_farcasterd%20%3A%20Msg%20TakerCommit%0Am_farcasterd%20-%3E%20m_wallet%20%3A%20Ctl%20BitcoinAddress%0Am_farcasterd%20-%3E%20m_wallet%20%3A%20Msg%20TakerCommit%0Am_wallet%20-%3E%20m_wallet%20%3A%20create%20maker%20wallet%0Am_wallet%20-%3E%20m_farcasterd%20%3A%20Ctl%20LaunchSwap%0Am_swap%20-%3E%20m_farcasterd%20%3A%20Ctl%20Hello%0Am_farcasterd%20-%3E%20m_farcasterd%3Alaunch%20syncer%0Am_farcasterd%20-%3E%20m_swap%20%3A%20Ctl%20MakeSwap%0A%0Am_swap%20-%3E%20peerd%20%3A%20Msg%20MakerCommit%0At_swap%20%3C-%20peerd%20%3A%20Msg%20MakerCommit%0At_syncer%20%3C-%20t_swap%20%3A%20Ctl%20WatchHeight%0At_syncer%20%3C-%20t_swap%20%3A%20if%20Bob%2C%20Watch%20Arbitrating%20Funding%20Address%0At_swap%20-%3E%20t_wallet%20%3A%20Msg%20MakerCommit%0At_wallet%20-%3E%20t_swap%20%3A%20Ctl%20RevealProof%20(taker%20is%20sender)%0At_swap%20-%3E%20peerd%20%3A%20Msg%20RevealProof%20(taker%20is%20sender)%0At_swap%20-%3E%20peerd%20%3A%20Msg%20Reveal%20(taker%20is%20sender)%0Apeerd%20-%3E%20m_swap%20%3A%20Msg%20RevealProof%20(taker%20is%20sender)%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Alice%2C%20Msg%20RevealProof%20(taker%20is%20sender)%20%0Am_swap%20-%3E%20m_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20RevealProof%0Apeerd%20-%3E%20m_swap%20%3A%20Msg%20Reveal%20(taker%20is%20sender)%0Am_swap%20-%3E%20m_farcasterd%20%3A%20if%20Bob%2C%20ask%20for%20funding%0Am_swap%20-%3E%20m_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20Reveal%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Alice%2C%20Msg%20Reveal%20(taker%20is%20sender)%0A%0Am_swap-%3Em_syncer%3ACtl%20WatchHeight%0Am_swap%20-%3E%20m_syncer%3Aif%20Bob%2C%20Watch%20Arbitrating%20Funding%20Address%0Am_swap%20%3C-%20m_syncer%3AIf%20Bob%2C%20Arbitrating%20Funding%20event%0Am_swap-%3Em_wallet%3Aif%20Bob%2C%20Ctl%20Tx%3A%3AFunding%0Am_swap%3C-m_wallet%3AIf%20Bob%2C%20Ctl%20FundingUpdated%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20RevealProof%20(taker%20is%20sender)%20%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20Reveal%20(taker%20is%20sender)%0Am_wallet%20-%3E%20m_swap%20%3A%20Ctl%20RevealProof%20(maker%20is%20sender)%0Apeerd%20%3C-%20m_swap%20%3A%20Msg%20RevealProof%20(maker%20is%20sender)%0Apeerd%20%3C-%20m_swap%20%3A%20Msg%20Reveal%20(maker%20is%20sender)%0Apeerd%20-%3E%20t_swap%20%3A%20Msg%20RevealProof%20(maker%20is%20sender)%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Alice%2C%20Msg%20RevealProof%20(maker%20is%20sender)%0At_swap%20-%3E%20t_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20RevealProof%0Apeerd%20-%3E%20t_swap%20%3A%20Msg%20Reveal%20(maker%20is%20sender)%0At_swap%20-%3E%20t_farcasterd%20%3A%20if%20Bob%2C%20ask%20for%20funding%0At_swap%20-%3E%20t_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20Reveal%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Alice%2C%20Msg%20Reveal%20(maker%20is%20sender)%0At_syncer%20-%3E%20t_swap%3AIf%20Bob%2C%20Arbitrating%20Funding%20event%0At_swap-%3Et_wallet%3Aif%20Bob%2C%20Ctl%20Tx%3A%3AFunding%0At_swap%3C-t_wallet%3AIf%20Bob%2C%20Ctl%20FundingUpdated%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20RevealProof%20(maker%20is%20sender)%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20Reveal%20(maker%20is%20sender)%0A%3D%3DCommit-Reveal%20Complete%3D%3D%0A%3D%3DChanging%20semantics%3A%20On%20Commit-Reveal%2C%20Maker%20and%20Taker%20were%20the%20key%20roles.%20From%20now%20on%20Bob%20or%20Alice%20are%20the%20key%20roles.%20Now%20t_%20is%20bob_%20on%20the%20left%20and%20m_%20is%20alice_%20on%20the%20right.%3D%3D%0A%3D%3DSwap%20setup%3A%20Bob%20is%20left%2C%20Alice%20right%3D%3D%0At_wallet%20-%3E%20t_swap%20%3A%20Ctl%20CoreArbitratingSetup%0At_syncer%20%3C-%20t_swap%20%3A%20Watch%20Arbitrating%20Lock%0At_syncer%20%3C-%20t_swap%20%3A%20Watch%20Cancel%0At_syncer%20%3C-%20t_swap%20%3A%20Watch%20Refund%0Apeerd%20%3C-%20t_swap%20%3A%20Msg%20CoreArbitratingSetup%0Am_swap%20%3C-%20peerd%20%3A%20Msg%20CoreArbitratingSetup%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Arbitrating%20Lock%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Cancel%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Refund%0A%0Am_wallet%20%3C-%20m_swap%20%3A%20Msg%20CoreArbitratingSetup%0Am_wallet%20-%3E%20m_swap%20%3A%20Ctl%20RefundProcedureSignatures%0Am_swap%20-%3E%20peerd%20%3A%20Msg%20RefundProcedureSignatures%0Apeerd%20-%3E%20t_swap%20%3A%20Msg%20RefundProcedureSignatures%0At_wallet%20%3C-%20t_swap%20%3A%20Msg%20RefundProcedureSignatures%0At_wallet%20-%3E%20t_swap%3ACtl%20Datum%3A%3ASignedArbitratingLock%0At_wallet%20-%3E%20t_swap%20%3A%20Ctl%20BuyProcedureSignature%0At_syncer%20%3C-%20t_swap%20%3A%20Broadcast%20Arbitrating%20Lock%0At_swap%20-%3E%20t_syncer%20%3A%20Watch%20Accordant%20Lock%0At_swap%20-%3E%20t_syncer%20%3A%20Watch%20Buy%0At_swap%20--%3E%20t_swap%20%3A%20Checkpoint%20Bob%200%0A%0Aparallel%0At_syncer%20-%3E%20%20t_swap%20%3A%20Arbitrating%20Lock%20final%0Am_swap%20%3C-%20m_syncer%20%3A%20Arbitrating%20Lock%20final%0Aparallel%20off%0A%0Am_swap%20--%3E%20m_swap%20%3A%20Checkpoint%20Alice%200%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Accordant%20Lock%0Am_swap%20-%3E%20m_syncer%20%3A%20Broadcast%20Accordant%20Lock%0A%0Aparallel%0Am_swap%20%3C-%20m_syncer%20%3A%20Accordant%20Lock%20final%0At_swap%20%3C-%20t_syncer%20%3A%20Accordant%20Lock%20final%0Aparallel%20off%0A%0Apeerd%20%3C-%20t_swap%20%3A%20Msg%20BuyProcedureSignature%0Am_swap%20%3C-%20peerd%20%3A%20Msg%20BuyProcedureSignature%0Am_swap%20-%3E%20m_syncer%3AWatch%20Buy%0Am_swap%20-%3E%20m_wallet%20%3A%20Msg%20BuyProcedureSignature%0A%3D%3DSwap%20Setup%20Complete%3D%3D%0A%3D%3DBuy%20Procedure%3A%20Bob%20is%20left%2C%20Alice%20right%3D%3D%0A%0Am_swap%20%3C-%20m_wallet%20%3A%20Fully%20signed%20buy%0Am_swap%20-%3E%20m_syncer%20%3A%20Broadcast%20buy%0Aparallel%0Am_swap%20%3C-%20m_syncer%20%3A%20Event%3A%20buy%20seen%20on%20mempool%0At_swap%20%3C-%20t_syncer%20%3A%20Event%3A%20buy%20seen%20on%20mempool%0Aparallel%20off%0At_wallet%20%3C-%20t_swap%20%3A%20Ctl%20Buy%20signature%0At_wallet%20-%3E%20t_wallet%20%3A%20recover%20accordant%20keys%0A%0A%3D%3DCancel%20Init%20t%20%3E%20t0%3A%20Bob%20is%20left%2C%20Alice%20right%2C%20either%20have%20a%20fully%20signed%20and%20valid%20cancel%20tx%2C%20and%20can%20publish%3D%3D%0Aparallel%0At_swap%20%3C-%20t_syncer%20%3A%20Ctl%20Cancel%20valid%0Am_swap%20%3C-%20m_syncer%20%3A%20Ctl%20Cancel%20valid%0Aparallel%20off%0Aparallel%0Am_swap%20-%3E%20m_syncer%20%3A%20Broadcast%20cancel%20(Alice%20inits)%0At_swap%20-%3E%20t_syncer%20%3A%20Broadcast%20cancel%20(Bob%20inits)%0Aparallel%20off%0A%3D%3DCancel%20detected%20t%20%3E%20t0%3A%20Bob%20is%20left%2C%20Alice%20right%3D%3D%0At_swap%20%3C-%20t_syncer%3A%20Event%20cancel%20final%0At_swap%20-%3E%20t_syncer%20%3A%20Broadcast%20refund%0Aparallel%0At_syncer%20-%3E%20t_swap%20%3A%20Event%3A%20refund%20seen%0Am_syncer%20-%3E%20m_swap%20%3A%20Event%3A%20refund%20seen%0Aparallel%20off%0Am_swap%20-%3E%20m_wallet%20%3A%20Ctl%20Tx%3A%3ARefund%20tx%0Am_wallet%20-%3E%20m_wallet%20%3A%20recover%20accordant%20keys%0A%0A%3D%3D%20Punish%20process%20t%20%3E%20t1%20%3E%20t0%20%3D%3D%0Am_swap%3C-m_syncer%3ACtl%20Event%3A%20punish%20valid%0Am_swap-%3Em_wallet%3ACtl%20Event%3A%20punish%20valid%0Am_wallet-%3Em_wallet%3Afully%20sign%20punish%0Am_swap%3C-m_wallet%3ACtl%20Tx%3A%3APunish%0Am_swap-%3Em_syncer%3ACtl%20Broadcast%20punish%20tx%0A</desc><defs/><g><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g><rect fill="white" stroke="none" x="0" y="0" width="2500" height="5949"/></g><g><text fill="black" stroke="none" font-family="sans-serif" font-size="16.5pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1168.9324396761942" y="22.6179738" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Farcaster node</text></g><g/><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 54.824658219060545 88.511670804 L 54.824658219060545 5949.582614844013" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray="11.598960923076923,5.0262164"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 228.27118336495897 88.511670804 L 228.27118336495897 5949.582614844013" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray="11.598960923076923,5.0262164"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 88.511670804 L 692.3142580708184 5949.582614844013" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray="11.598960923076923,5.0262164"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1001.7084482708183 88.511670804 L 1001.7084482708183 5949.582614844013" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray="11.598960923076923,5.0262164"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1214.401516873162 88.511670804 L 1214.401516873162 5949.582614844013" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray="11.598960923076923,5.0262164"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1298.09250220319 88.511670804 L 1298.09250220319 5949.582614844013" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray="11.598960923076923,5.0262164"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1386.0584861980738 88.511670804 L 1386.0584861980738 5949.582614844013" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray="11.598960923076923,5.0262164"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1580.1348860992457 88.511670804 L 1580.1348860992457 5949.582614844013" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray="11.598960923076923,5.0262164"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 88.511670804 L 1782.3946203510036 5949.582614844013" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray="11.598960923076923,5.0262164"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2242.554363758035 88.511670804 L 2242.554363758035 5949.582614844013" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray="11.598960923076923,5.0262164"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2441.631888308621 88.511670804 L 2441.631888308621 5949.582614844013" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray="11.598960923076923,5.0262164"/></g><g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 7.5393246000000005 47.799317964000004 L 102.10999183812109 47.799317964000004 L 102.10999183812109 88.511670804 L 7.5393246000000005 88.511670804 L 7.5393246000000005 47.799317964000004 Z" stroke-miterlimit="10" stroke-width="2.4125838720000004" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="23.899658982" y="73.43302160400002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_syncer</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 183.40251577678222 47.799317964000004 L 273.13985095313575 47.799317964000004 L 273.13985095313575 88.511670804 L 183.40251577678222 88.511670804 L 183.40251577678222 47.799317964000004 Z" stroke-miterlimit="10" stroke-width="2.4125838720000004" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="199.76285015878221" y="73.43302160400002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_wallet</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 650.4372572764648 47.799317964000004 L 734.1912588651719 47.799317964000004 L 734.1912588651719 88.511670804 L 650.4372572764648 88.511670804 L 650.4372572764648 47.799317964000004 Z" stroke-miterlimit="10" stroke-width="2.4125838720000004" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="666.7975916584649" y="73.43302160400002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_swap</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 941.5897787752929 47.799317964000004 L 1061.8271177663437 47.799317964000004 L 1061.8271177663437 88.511670804 L 941.5897787752929 88.511670804 L 941.5897787752929 47.799317964000004 Z" stroke-miterlimit="10" stroke-width="2.4125838720000004" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="957.9501131572929" y="73.43302160400002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_farcasterd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1183.3828487127807 47.799317964000004 L 1245.4201850335435 47.799317964000004 L 1245.4201850335435 88.511670804 L 1183.3828487127807 88.511670804 L 1183.3828487127807 47.799317964000004 Z" stroke-miterlimit="10" stroke-width="2.4125838720000004" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1199.7431830947808" y="73.43302160400002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_cli</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1260.4988342335434 47.799317964000004 L 1335.6861701728365 47.799317964000004 L 1335.6861701728365 88.511670804 L 1260.4988342335434 88.511670804 L 1260.4988342335434 47.799317964000004 Z" stroke-miterlimit="10" stroke-width="2.4125838720000004" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1276.8591686155435" y="73.43302160400002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">peerd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1350.7648193728364 47.799317964000004 L 1421.352153023311 47.799317964000004 L 1421.352153023311 88.511670804 L 1350.7648193728364 88.511670804 L 1350.7648193728364 47.799317964000004 Z" stroke-miterlimit="10" stroke-width="2.4125838720000004" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1367.1251537548364" y="73.43302160400002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_cli</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1515.7412188925387 47.799317964000004 L 1644.5285533059528 47.799317964000004 L 1644.5285533059528 88.511670804 L 1515.7412188925387 88.511670804 L 1515.7412188925387 47.799317964000004 Z" stroke-miterlimit="10" stroke-width="2.4125838720000004" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1532.1015532745387" y="73.43302160400002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_farcasterd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1736.2426199381198 47.799317964000004 L 1828.5466207638874 47.799317964000004 L 1828.5466207638874 88.511670804 L 1736.2426199381198 88.511670804 L 1736.2426199381198 47.799317964000004 Z" stroke-miterlimit="10" stroke-width="2.4125838720000004" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1752.6029543201198" y="73.43302160400002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_swap</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 2193.410696551328 47.799317964000004 L 2291.698030964742 47.799317964000004 L 2291.698030964742 88.511670804 L 2193.410696551328 88.511670804 L 2193.410696551328 47.799317964000004 Z" stroke-miterlimit="10" stroke-width="2.4125838720000004" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2209.771030933328" y="73.43302160400002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_wallet</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 2390.0715531636815 47.799317964000004 L 2493.1922234535605 47.799317964000004 L 2493.1922234535605 88.511670804 L 2390.0715531636815 88.511670804 L 2390.0715531636815 47.799317964000004 Z" stroke-miterlimit="10" stroke-width="2.4125838720000004" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2406.4318875456815" y="73.43302160400002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_syncer</text></g></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 7.5393246000000005 130.98319938400002 L 2492.4606754 130.98319938400002 M 7.5393246000000005 136.00941578400003 L 2492.4606754 136.00941578400003 M 7.5393246000000005 141.03563218400004 L 2492.4606754 141.03563218400004" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 999.0982193670703 118.668969204 L 1500.9017806329298 118.668969204 L 1500.9017806329298 153.34986236400002 L 999.0982193670703 153.34986236400002 Z" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1020.2083282470703" y="139.77907808400002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Setup and Commit-Reveal: Bob and Alice can be on both sides</text></g><g><g><rect fill="white" stroke="none" x="1597.9779543192458" y="175.967836164" width="132.65692605882813" height="19.602243960000003"/></g><g><rect fill="white" stroke="none" x="1597.9779543192458" y="191.046485364" width="72.24026193529296" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1600.2397516992457" y="189.538620444" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch farcasterd</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1600.2397516992457" y="204.617269644" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">manually</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1580.1348860992457 210.64872932400002 L 1640.4494828992456 210.64872932400002 L 1640.4494828992456 230.25097328400003 L 1592.5496406072457 230.25097328400003" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1580.1348860992457,230.25097328400003) translate(-1580.1348860992457,-230.25097328400003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1592.7004270992456 223.96820278400003 L 1580.1348860992457 230.25097328400003 L 1592.7004270992456 236.53374378400002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1597.9779543192458" y="252.868947084" width="111.47359170824218" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1600.2397516992457" y="266.439731364" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch walletd</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1580.1348860992457 272.471191044 L 1640.4494828992456 272.471191044 L 1640.4494828992456 292.07343500400003 L 1592.5496406072457 292.07343500400003" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1580.1348860992457,292.07343500400003) translate(-1580.1348860992457,-292.07343500400003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1592.7004270992456 285.790664504 L 1580.1348860992457 292.07343500400003 L 1592.7004270992456 298.35620550400006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1878.0994939609939" y="314.69140880400005" width="66.49026193529296" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1880.3612913409938" y="328.26219308400005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2242.554363758035 334.29365276400006 L 1592.5496406072457 334.29365276400006" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1580.1348860992457,334.29365276400006) translate(-1580.1348860992457,-334.29365276400006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1592.7004270992456 328.01088226400003 L 1580.1348860992457 334.29365276400006 L 1592.7004270992456 340.5764232640001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1403.9015544180738" y="356.9116265640001" width="158.39026346117188" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1406.1633517980738" y="370.4824108440001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">MakeOffer (deferred)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1386.0584861980738 376.5138705240001 L 1567.7201315912457 376.5138705240001" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1580.1348860992457,376.5138705240001) translate(-1580.1348860992457,-376.5138705240001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1567.5693450992458 370.23110002400006 L 1580.1348860992457 376.5138705240001 L 1567.5693450992458 382.7966410240001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1866.507826785701" y="399.1318443240001" width="89.6735962858789" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1868.7696241657009" y="412.7026286040001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl GetKeys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1580.1348860992457 418.7340882840001 L 2230.139609250035 418.7340882840001" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(2242.554363758035,418.7340882840001) translate(-2242.554363758035,-418.7340882840001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2229.988822758035 412.4513177840001 L 2242.554363758035 418.7340882840001 L 2229.988822758035 425.01685878400014 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1787.7161588474685" y="441.3520620840001" width="247.25693216234376" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1789.9779562274684" y="454.9228463640002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Keys (not to be held on state)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2242.554363758035 460.95430604400013 L 1592.5496406072457 460.95430604400013" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1580.1348860992457,460.95430604400013) translate(-1580.1348860992457,-460.95430604400013)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1592.7004270992456 454.6715355440001 L 1580.1348860992457 460.95430604400013 L 1592.7004270992456 467.23707654400016 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1597.9779543192458" y="483.57227984400015" width="167.4735917082422" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1600.2397516992457" y="497.14306412400015" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">MakeOffer (continues)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1580.1348860992457 503.17452380400016 L 1640.4494828992456 503.17452380400016 L 1640.4494828992456 522.7767677640002 L 1592.5496406072457 522.7767677640002" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1580.1348860992457,522.7767677640002) translate(-1580.1348860992457,-522.7767677640002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1592.7004270992456 516.4939972640002 L 1580.1348860992457 522.7767677640002 L 1592.7004270992456 529.0595382640001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1597.9779543192458" y="545.3947415640002" width="53.55692758470703" height="19.602243960000003"/></g><g><rect fill="white" stroke="none" x="1597.9779543192458" y="560.4733907640002" width="91.55692758470703" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1600.2397516992457" y="558.9655258440002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1600.2397516992457" y="574.0441750440002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">peerd listen</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1580.1348860992457 580.0756347240002 L 1640.4494828992456 580.0756347240002 L 1640.4494828992456 599.6778786840002 L 1592.5496406072457 599.6778786840002" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1580.1348860992457,599.6778786840002) translate(-1580.1348860992457,-599.6778786840002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1592.7004270992456 593.3951081840003 L 1580.1348860992457 599.6778786840002 L 1592.7004270992456 605.9606491840002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1019.5515164908184" y="622.2958524840003" width="132.65692605882813" height="19.602243960000003"/></g><g><rect fill="white" stroke="none" x="1019.5515164908184" y="637.3745016840003" width="72.24026193529296" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1021.8133138708183" y="635.8666367640003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch farcasterd</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1021.8133138708183" y="650.9452859640003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">manually</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1001.7084482708183 656.9767456440003 L 1062.0230450708182 656.9767456440003 L 1062.0230450708182 676.5789896040003 L 1014.1232027788183 676.5789896040003" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1001.7084482708183,676.5789896040003) translate(-1001.7084482708183,-676.5789896040003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1014.2739892708183 670.2962191040003 L 1001.7084482708183 676.5789896040003 L 1014.2739892708183 682.8617601040003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1019.5515164908184" y="699.1969634040003" width="111.47359170824218" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1021.8133138708183" y="712.7677476840003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch walletd</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1001.7084482708183 718.7992073640003 L 1062.0230450708182 718.7992073640003 L 1062.0230450708182 738.4014513240003 L 1014.1232027788183 738.4014513240003" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1001.7084482708183,738.4014513240003) translate(-1001.7084482708183,-738.4014513240003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1014.2739892708183 732.1186808240003 L 1001.7084482708183 738.4014513240003 L 1014.2739892708183 744.6842218240002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="581.7446848502423" y="761.0194251240002" width="66.49026193529296" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="584.0064822302422" y="774.5902094040002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 228.27118336495897 780.6216690840002 L 989.2936937628183 780.6216690840002" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1001.7084482708183,780.6216690840002) translate(-1001.7084482708183,-780.6216690840002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 989.1429072708182 774.3388985840003 L 1001.7084482708183 780.6216690840002 L 989.1429072708182 786.9044395840002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1019.5515164908184" y="803.2396428840002" width="177.00693216234376" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1021.8133138708183" y="816.8104271640002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeOffer (deferred)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1214.401516873162 822.8418868440002 L 1014.1232027788183 822.8418868440002" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1001.7084482708183,822.8418868440002) translate(-1001.7084482708183,-822.8418868440002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1014.2739892708183 816.5591163440002 L 1001.7084482708183 822.8418868440002 L 1014.2739892708183 829.1246573440002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="570.1530176749493" y="845.4598606440002" width="89.6735962858789" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="572.4148150549493" y="859.0306449240002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl GetKeys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1001.7084482708183 865.0621046040002 L 240.68593787295896 865.0621046040002" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(228.27118336495897,865.0621046040002) translate(-228.27118336495897,-865.0621046040002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 240.83672436495897 858.7793341040002 L 228.27118336495897 865.0621046040002 L 240.83672436495897 871.3448751040002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="491.3613497367168" y="887.6800784040001" width="247.25693216234376" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="493.62314711671684" y="901.2508626840001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Keys (not to be held on state)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 228.27118336495897 907.2823223640002 L 989.2936937628183 907.2823223640002" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1001.7084482708183,907.2823223640002) translate(-1001.7084482708183,-907.2823223640002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 989.1429072708182 900.9995518640002 L 1001.7084482708183 907.2823223640002 L 989.1429072708182 913.5650928640001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1019.5515164908184" y="929.9002961640001" width="186.09026040941407" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1021.8133138708183" y="943.4710804440001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeOffer (continues)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1001.7084482708183 949.5025401240001 L 1062.0230450708182 949.5025401240001 L 1062.0230450708182 969.1047840840001 L 1014.1232027788183 969.1047840840001" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1001.7084482708183,969.1047840840001) translate(-1001.7084482708183,-969.1047840840001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1014.2739892708183 962.8220135840002 L 1001.7084482708183 969.1047840840001 L 1014.2739892708183 975.3875545840001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1019.5515164908184" y="991.7227578840002" width="53.55692758470703" height="19.602243960000003"/></g><g><rect fill="white" stroke="none" x="1019.5515164908184" y="1006.8014070840002" width="110.15692605882812" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1021.8133138708183" y="1005.2935421640002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1021.8133138708183" y="1020.3721913640002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">peerd connect</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1001.7084482708183 1026.4036510440003 L 1062.0230450708182 1026.4036510440003 L 1062.0230450708182 1046.0058950040002 L 1014.1232027788183 1046.0058950040002" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1001.7084482708183,1046.0058950040002) translate(-1001.7084482708183,-1046.0058950040002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1014.2739892708183 1039.7231245040002 L 1001.7084482708183 1046.0058950040002 L 1014.2739892708183 1052.2886655040002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="565.7280184378887" y="1068.6238688040003" width="98.52359476" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="567.9898158178887" y="1082.1946530840003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeOffer</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1001.7084482708183 1088.2261127640002 L 240.68593787295896 1088.2261127640002" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(228.27118336495897,1088.2261127640002) translate(-228.27118336495897,-1088.2261127640002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 240.83672436495897 1081.9433422640002 L 228.27118336495897 1088.2261127640002 L 240.83672436495897 1094.5088832640001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="246.11425158495896" y="1110.8440865640002" width="142.14026346117188" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="248.37604896495895" y="1124.4148708440002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">create taker wallet</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 228.27118336495897 1130.4463305240004 L 288.585780164959 1130.4463305240004 L 288.585780164959 1150.0485744840003 L 240.68593787295896 1150.0485744840003" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(228.27118336495897,1150.0485744840003) translate(-228.27118336495897,-1150.0485744840003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 240.83672436495897 1143.7658039840003 L 228.27118336495897 1150.0485744840003 L 240.83672436495897 1156.3313449840002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="553.9863535514141" y="1172.6665482840003" width="122.00692453294921" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="556.2481509314141" y="1186.2373325640003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl LaunchSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 228.27118336495897 1192.2687922440002 L 989.2936937628183 1192.2687922440002" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1001.7084482708183,1192.2687922440002) translate(-1001.7084482708183,-1192.2687922440002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 989.1429072708182 1185.9860217440003 L 1001.7084482708183 1192.2687922440002 L 989.1429072708182 1198.5515627440002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="813.7662222031719" y="1214.8867660440003" width="66.49026193529296" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="816.0280195831718" y="1228.4575503240003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 1234.4890100040002 L 989.2936937628183 1234.4890100040002" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1001.7084482708183,1234.4890100040002) translate(-1001.7084482708183,-1234.4890100040002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 989.1429072708182 1228.2062395040002 L 1001.7084482708183 1234.4890100040002 L 989.1429072708182 1240.7717805040002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1019.5515164908184" y="1257.1069838040003" width="106.99026193529296" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1021.8133138708183" y="1270.6777680840003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch syncer</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1001.7084482708183 1276.7092277640004 L 1062.0230450708182 1276.7092277640004 L 1062.0230450708182 1296.3114717240003 L 1014.1232027788183 1296.3114717240003" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1001.7084482708183,1296.3114717240003) translate(-1001.7084482708183,-1296.3114717240003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1014.2739892708183 1290.0287012240003 L 1001.7084482708183 1296.3114717240003 L 1014.2739892708183 1302.5942422240003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="796.3078901414043" y="1318.9294455240004" width="101.40692605882812" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="798.5696875214043" y="1332.5002298040004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1001.7084482708183 1338.5316894840003 L 704.7290125788184 1338.5316894840003" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(692.3142580708184,1338.5316894840003) translate(-692.3142580708184,-1338.5316894840003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 704.8797990708184 1332.2489189840003 L 692.3142580708184 1338.5316894840003 L 704.8797990708184 1344.8144599840002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="927.6832514581761" y="1361.1496632840003" width="135.04025735765626" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="929.945048838176" y="1374.7204475640003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg TakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 1380.7519072440002 L 1285.67774769519 1380.7519072440002" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1298.09250220319,1380.7519072440002) translate(-1298.09250220319,-1380.7519072440002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1285.52696120319 1374.4691367440003 L 1298.09250220319 1380.7519072440002 L 1285.52696120319 1387.0346777440002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1371.5935654723896" y="1403.3698810440003" width="135.04025735765626" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1373.8553628523896" y="1416.9406653240003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg TakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1298.09250220319 1422.9721250040002 L 1567.7201315912457 1422.9721250040002" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1580.1348860992457,1422.9721250040002) translate(-1580.1348860992457,-1422.9721250040002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1567.5693450992458 1416.6893545040002 L 1580.1348860992457 1422.9721250040002 L 1567.5693450992458 1429.2548955040002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1842.3078260227614" y="1445.5900988040003" width="138.07359781175782" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1844.5696234027614" y="1459.1608830840003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl BitcoinAddress</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1580.1348860992457 1465.1923427640002 L 2230.139609250035 1465.1923427640002" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(2242.554363758035,1465.1923427640002) translate(-2242.554363758035,-1465.1923427640002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2229.988822758035 1458.9095722640002 L 2242.554363758035 1465.1923427640002 L 2229.988822758035 1471.4751132640001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1843.8244962498122" y="1487.8103165640002" width="135.04025735765626" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1846.0862936298122" y="1501.3811008440002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg TakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1580.1348860992457 1507.4125605240001 L 2230.139609250035 1507.4125605240001" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(2242.554363758035,1507.4125605240001) translate(-2242.554363758035,-1507.4125605240001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2229.988822758035 1501.1297900240002 L 2242.554363758035 1507.4125605240001 L 2229.988822758035 1513.695331024 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2260.3974319780345" y="1530.0305343240002" width="150.6902665129297" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2262.6592293580347" y="1543.6013186040002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">create maker wallet</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2242.554363758035 1549.6327782840003 L 2302.868960558035 1549.6327782840003 L 2302.868960558035 1569.2350222440002 L 2254.969118266035 1569.2350222440002" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(2242.554363758035,1569.2350222440002) translate(-2242.554363758035,-1569.2350222440002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2255.119904758035 1562.9522517440003 L 2242.554363758035 1569.2350222440002 L 2255.119904758035 1575.5177927440002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1850.3411626621657" y="1591.8529960440003" width="122.00692453294921" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1852.6029600421657" y="1605.4237803240003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl LaunchSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2242.554363758035 1611.4552400040002 L 1592.5496406072457 1611.4552400040002" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1580.1348860992457,1611.4552400040002) translate(-1580.1348860992457,-1611.4552400040002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1592.7004270992456 1605.1724695040002 L 1580.1348860992457 1611.4552400040002 L 1592.7004270992456 1617.7380105040002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1648.0196222574782" y="1634.0732138040003" width="66.49026193529296" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1650.2814196374782" y="1647.6439980840003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 1653.6754577640002 L 1592.5496406072457 1653.6754577640002" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1580.1348860992457,1653.6754577640002) translate(-1580.1348860992457,-1653.6754577640002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1592.7004270992456 1647.3926872640002 L 1580.1348860992457 1653.6754577640002 L 1592.7004270992456 1659.9582282640001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1597.9779543192458" y="1676.2934315640002" width="106.99026193529296" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1600.2397516992457" y="1689.8642158440002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch syncer</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1580.1348860992457 1695.8956755240004 L 1640.4494828992456 1695.8956755240004 L 1640.4494828992456 1715.4979194840002 L 1592.5496406072457 1715.4979194840002" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1580.1348860992457,1715.4979194840002) translate(-1580.1348860992457,-1715.4979194840002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1592.7004270992456 1709.2151489840003 L 1580.1348860992457 1715.4979194840002 L 1592.7004270992456 1721.7806899840002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1627.4946207315993" y="1738.1158932840003" width="107.54026498705078" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1629.7564181115993" y="1751.6866775640003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl MakeSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1580.1348860992457 1757.7181372440002 L 1769.9798658430036 1757.7181372440002" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1782.3946203510036,1757.7181372440002) translate(-1782.3946203510036,-1757.7181372440002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1769.8290793510037 1751.4353667440002 L 1782.3946203510036 1757.7181372440002 L 1769.8290793510037 1764.0009077440002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1469.6567669488547" y="1780.3361110440003" width="141.17358865648438" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1471.9185643288547" y="1793.9068953240003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg MakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 1799.9383550040002 L 1310.50725671119 1799.9383550040002" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1298.09250220319,1799.9383550040002) translate(-1298.09250220319,-1799.9383550040002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1310.65804320319 1793.6555845040002 L 1298.09250220319 1799.9383550040002 L 1310.65804320319 1806.2211255040002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="924.616585808762" y="1822.5563288040003" width="141.17358865648438" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="926.878383188762" y="1836.1271130840003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg MakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1298.09250220319 1842.1585727640002 L 704.7290125788184 1842.1585727640002" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(692.3142580708184,1842.1585727640002) translate(-692.3142580708184,-1842.1585727640002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 704.8797990708184 1835.8758022640002 L 692.3142580708184 1842.1585727640002 L 704.8797990708184 1848.4413432640001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="311.8409935896465" y="1864.7765465640002" width="123.45692911058593" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="314.1027909696465" y="1878.3473308440002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl WatchHeight</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 1884.3787905240001 L 67.23941272706054 1884.3787905240001" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(54.824658219060545,1884.3787905240001) translate(-54.824658219060545,-1884.3787905240001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 67.39019921906055 1878.0960200240002 L 54.824658219060545 1884.3787905240001 L 67.39019921906055 1890.661561024 Z"/></g></g><g><g><rect fill="white" stroke="none" x="217.96600121904103" y="1906.9967643240002" width="311.20691385179686" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="220.22779859904102" y="1920.5675486040002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Watch Arbitrating Funding Address</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 1926.599008284 L 67.23941272706054 1926.599008284" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(54.824658219060545,1926.599008284) translate(-54.824658219060545,-1926.599008284)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 67.39019921906055 1920.3162377840001 L 54.824658219060545 1926.599008284 L 67.39019921906055 1932.881778784 Z"/></g></g><g><g><rect fill="white" stroke="none" x="389.70592638964644" y="1949.2169820840002" width="141.17358865648438" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="391.96772376964645" y="1962.7877663640002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg MakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 1968.819226044 L 240.68593787295896 1968.819226044" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(228.27118336495897,1968.819226044) translate(-228.27118336495897,-1968.819226044)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 240.83672436495897 1962.536455544 L 228.27118336495897 1968.819226044 L 240.83672436495897 1975.101996544 Z"/></g></g><g><g><rect fill="white" stroke="none" x="339.61425921435347" y="1991.4371998440001" width="241.35692300707032" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="341.8760565943535" y="2005.0079841240001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl RevealProof (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 228.27118336495897 2011.039443804 L 679.8995035628184 2011.039443804" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(692.3142580708184,2011.039443804) translate(-692.3142580708184,-2011.039443804)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 679.7487170708183 2004.756673304 L 692.3142580708184 2011.039443804 L 679.7487170708183 2017.322214304 Z"/></g></g><g><g><rect fill="white" stroke="none" x="869.7499171075901" y="2033.657417604" width="250.90692605882813" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="872.0117144875901" y="2047.228201884" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 2053.259661564 L 1285.67774769519 2053.259661564" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1298.09250220319,2053.259661564) translate(-1298.09250220319,-2053.259661564)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1285.52696120319 2046.976891064 L 1298.09250220319 2053.259661564 L 1285.52696120319 2059.542432064 Z"/></g></g><g><g><rect fill="white" stroke="none" x="888.4665842828831" y="2075.877635364" width="213.4735917082422" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="890.7283816628831" y="2089.4484196440003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 2095.479879324 L 1285.67774769519 2095.479879324" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1298.09250220319,2095.479879324) translate(-1298.09250220319,-2095.479879324)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1285.52696120319 2089.197108824 L 1298.09250220319 2095.479879324 L 1285.52696120319 2101.762649824 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1414.7900982476829" y="2118.0978531240003" width="250.90692605882813" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1417.0518956276828" y="2131.6686374040005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1298.09250220319 2137.7000970840004 L 1769.9798658430036 2137.7000970840004" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1782.3946203510036,2137.7000970840004) translate(-1782.3946203510036,-2137.7000970840004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1769.8290793510037 2131.4173265840004 L 1782.3946203510036 2137.7000970840004 L 1769.8290793510037 2143.9828675840004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1855.4126916227615" y="2160.3180708840005" width="314.1236008635156" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1857.6744890027614" y="2173.8888551640007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg RevealProof (taker is sender) </text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 2179.9203148440006 L 2230.139609250035 2179.9203148440006" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(2242.554363758035,2179.9203148440006) translate(-2242.554363758035,-2179.9203148440006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2229.988822758035 2173.6375443440006 L 2242.554363758035 2179.9203148440006 L 2229.988822758035 2186.2030853440006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1800.2376885710037" y="2202.5382886440007" width="286.27359476" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1802.4994859510036" y="2216.109072924001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg RevealProof</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 2222.1405326040003 L 1842.7092171510035 2222.1405326040003 L 1842.7092171510035 2241.7427765640005 L 1794.8093748590036 2241.7427765640005" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1782.3946203510036,2241.7427765640005) translate(-1782.3946203510036,-2241.7427765640005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1794.9601613510035 2235.4600060640005 L 1782.3946203510036 2241.7427765640005 L 1794.9601613510035 2248.0255470640004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1433.5067654229758" y="2264.3607503640005" width="213.4735917082422" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1435.7685628029758" y="2277.9315346440007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1298.09250220319 2283.9629943240006 L 1769.9798658430036 2283.9629943240006" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1782.3946203510036,2283.9629943240006) translate(-1782.3946203510036,-2283.9629943240006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1769.8290793510037 2277.6802238240007 L 1782.3946203510036 2283.9629943240006 L 1769.8290793510037 2290.2457648240006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1597.9779543192458" y="2306.5809681240007" width="166.57359781175782" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1600.2397516992457" y="2320.151752404001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ask for funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 2326.183212084001 L 1592.5496406072457 2326.183212084001" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1580.1348860992457,2326.183212084001) translate(-1580.1348860992457,-2326.183212084001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1592.7004270992456 2319.900441584001 L 1580.1348860992457 2326.183212084001 L 1592.7004270992456 2332.465982584001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1800.2376885710037" y="2348.801185884001" width="248.84026040941407" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1802.4994859510036" y="2362.371970164001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg Reveal</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 2368.4034298440006 L 1842.7092171510035 2368.4034298440006 L 1842.7092171510035 2388.0056738040007 L 1794.8093748590036 2388.0056738040007" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1782.3946203510036,2388.0056738040007) translate(-1782.3946203510036,-2388.0056738040007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1794.9601613510035 2381.7229033040007 L 1782.3946203510036 2388.0056738040007 L 1794.9601613510035 2394.2884443040007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1876.4626946745193" y="2410.623647604001" width="272.02359476" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1878.7244920545193" y="2424.194431884001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 2430.225891564001 L 2230.139609250035 2430.225891564001" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(2242.554363758035,2430.225891564001) translate(-2242.554363758035,-2430.225891564001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2229.988822758035 2423.943121064001 L 2242.554363758035 2430.225891564001 L 2229.988822758035 2436.508662064001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2050.284789774519" y="2452.843865364001" width="123.45692911058593" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2052.5465871545193" y="2466.414649644001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl WatchHeight</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 2472.446109324001 L 2429.217133800621 2472.446109324001" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(2441.631888308621,2472.446109324001) translate(-2441.631888308621,-2472.446109324001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2429.066347308621 2466.163338824001 L 2441.631888308621 2472.446109324001 L 2429.066347308621 2478.728879824001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1956.409797403914" y="2495.064083124001" width="311.20691385179686" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1958.6715947839139" y="2508.6348674040014" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Watch Arbitrating Funding Address</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 2514.6663270840013 L 2429.217133800621 2514.6663270840013" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(2441.631888308621,2514.6663270840013) translate(-2441.631888308621,-2514.6663270840013)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2429.066347308621 2508.3835565840013 L 2441.631888308621 2514.6663270840013 L 2429.066347308621 2520.9490975840013 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1989.7847897745194" y="2537.2843008840014" width="244.45692911058595" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1992.0465871545193" y="2550.8550851640016" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Arbitrating Funding event</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2441.631888308621 2556.8865448440015 L 1794.8093748590036 2556.8865448440015" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1782.3946203510036,2556.8865448440015) translate(-1782.3946203510036,-2556.8865448440015)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1794.9601613510035 2550.6037743440015 L 1782.3946203510036 2556.8865448440015 L 1794.9601613510035 2563.1693153440015 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1929.1293587980545" y="2579.5045186440016" width="166.6902665129297" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1931.3911561780544" y="2593.075302924002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Ctl Tx::Funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 2599.1067626040017 L 2230.139609250035 2599.1067626040017" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(2242.554363758035,2599.1067626040017) translate(-2242.554363758035,-2599.1067626040017)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2229.988822758035 2592.8239921040017 L 2242.554363758035 2599.1067626040017 L 2229.988822758035 2605.3895331040017 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1911.5543618498123" y="2621.7247364040018" width="201.84026040941407" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1913.8161592298122" y="2635.295520684002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Ctl FundingUpdated</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2242.554363758035 2641.326980364002 L 1794.8093748590036 2641.326980364002" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1782.3946203510036,2641.326980364002) translate(-1782.3946203510036,-2641.326980364002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1794.9601613510035 2635.044209864002 L 1782.3946203510036 2641.326980364002 L 1794.9601613510035 2647.609750864002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1800.2376885710037" y="2663.944954164002" width="424.47360696703123" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1802.4994859510036" y="2677.515738444002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg RevealProof (taker is sender) </text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 2683.547198124002 L 2230.139609250035 2683.547198124002" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(2242.554363758035,2683.547198124002) translate(-2242.554363758035,-2683.547198124002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2229.988822758035 2677.264427624002 L 2242.554363758035 2683.547198124002 L 2229.988822758035 2689.829968624002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1821.2876916227615" y="2706.165171924002" width="382.3736008635156" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1823.5494890027614" y="2719.7359562040024" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 2725.7674158840023 L 2230.139609250035 2725.7674158840023" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(2242.554363758035,2725.7674158840023) translate(-2242.554363758035,-2725.7674158840023)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2229.988822758035 2719.4846453840023 L 2242.554363758035 2725.7674158840023 L 2229.988822758035 2732.0501863840022 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1887.5210290251052" y="2748.3853896840023" width="249.90692605882813" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1889.7828264051052" y="2761.9561739640026" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2242.554363758035 2767.9876336440025 L 1794.8093748590036 2767.9876336440025" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1782.3946203510036,2767.9876336440025) translate(-1782.3946203510036,-2767.9876336440025)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1794.9601613510035 2761.7048631440025 L 1782.3946203510036 2767.9876336440025 L 1794.9601613510035 2774.2704041440024 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1410.515096721804" y="2790.6056074440025" width="259.4569291105859" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1412.776894101804" y="2804.1763917240028" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 2810.2078514040027 L 1310.50725671119 2810.2078514040027" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1298.09250220319,2810.2078514040027) translate(-1298.09250220319,-2810.2078514040027)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1310.65804320319 2803.9250809040027 L 1298.09250220319 2810.2078514040027 L 1310.65804320319 2816.4906219040026 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1429.231763897097" y="2832.8258252040027" width="222.02359476" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1431.493561277097" y="2846.396609484003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 2852.428069164003 L 1310.50725671119 2852.428069164003" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1298.09250220319,2852.428069164003) translate(-1298.09250220319,-2852.428069164003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1310.65804320319 2846.145298664003 L 1298.09250220319 2852.428069164003 L 1310.65804320319 2858.710839664003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="865.4749155817112" y="2875.046042964003" width="259.4569291105859" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="867.7367129617112" y="2888.616827244003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1298.09250220319 2894.648286924003 L 704.7290125788184 2894.648286924003" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(692.3142580708184,2894.648286924003) translate(-692.3142580708184,-2894.648286924003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 704.8797990708184 2888.365516424003 L 692.3142580708184 2894.648286924003 L 704.8797990708184 2900.931057424003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="301.28925463671675" y="2917.266260724003" width="318.00693216234373" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="303.55105201671677" y="2930.8370450040034" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 2936.8685046840033 L 240.68593787295896 2936.8685046840033" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(228.27118336495897,2936.8685046840033) translate(-228.27118336495897,-2936.8685046840033)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 240.83672436495897 2930.5857341840033 L 228.27118336495897 2936.8685046840033 L 240.83672436495897 2943.151275184003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="710.1573262908184" y="2959.4864784840033" width="286.27359476" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="712.4191236708184" y="2973.0572627640036" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg RevealProof</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 2979.088722444003 L 752.6288548708184 2979.088722444003 L 752.6288548708184 2998.690966404003 L 704.7290125788184 2998.690966404003" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(692.3142580708184,2998.690966404003) translate(-692.3142580708184,-2998.690966404003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 704.8797990708184 2992.408195904003 L 692.3142580708184 2998.690966404003 L 704.8797990708184 3004.973736904003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="884.1915827570042" y="3021.308940204003" width="222.02359476" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="886.4533801370042" y="3034.8797244840034" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1298.09250220319 3040.9111841640033 L 704.7290125788184 3040.9111841640033" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(692.3142580708184,3040.9111841640033) translate(-692.3142580708184,-3040.9111841640033)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 704.8797990708184 3034.6284136640033 L 692.3142580708184 3040.9111841640033 L 704.8797990708184 3047.1939546640033 Z"/></g></g><g><g><rect fill="white" stroke="none" x="763.7245542649395" y="3063.5291579640034" width="166.57359781175782" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="765.9863516449394" y="3077.0999422440036" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ask for funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 3083.1314019240035 L 989.2936937628183 3083.1314019240035" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1001.7084482708183,3083.1314019240035) translate(-1001.7084482708183,-3083.1314019240035)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 989.1429072708182 3076.8486314240035 L 1001.7084482708183 3083.1314019240035 L 989.1429072708182 3089.4141724240035 Z"/></g></g><g><g><rect fill="white" stroke="none" x="710.1573262908184" y="3105.7493757240036" width="248.84026040941407" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="712.4191236708184" y="3119.320160004004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg Reveal</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 3125.3516196840033 L 752.6288548708184 3125.3516196840033 L 752.6288548708184 3144.9538636440034 L 704.7290125788184 3144.9538636440034" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(692.3142580708184,3144.9538636440034) translate(-692.3142580708184,-3144.9538636440034)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 704.8797990708184 3138.6710931440034 L 692.3142580708184 3144.9538636440034 L 704.8797990708184 3151.2366341440033 Z"/></g></g><g><g><rect fill="white" stroke="none" x="320.00592944140425" y="3167.5718374440034" width="280.57358255296873" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="322.26772682140427" y="3181.1426217240037" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 3187.1740814040036 L 240.68593787295896 3187.1740814040036" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(228.27118336495897,3187.1740814040036) translate(-228.27118336495897,-3187.1740814040036)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 240.83672436495897 3180.8913109040036 L 228.27118336495897 3187.1740814040036 L 240.83672436495897 3193.4568519040035 Z"/></g></g><g><g><rect fill="white" stroke="none" x="251.3409935896465" y="3209.7920552040036" width="244.45692911058595" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="253.6027909696465" y="3223.362839484004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Arbitrating Funding event</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 54.824658219060545 3229.3942991640038 L 679.8995035628184 3229.3942991640038" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(692.3142580708184,3229.3942991640038) translate(-692.3142580708184,-3229.3942991640038)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 679.7487170708183 3223.111528664004 L 692.3142580708184 3229.3942991640038 L 679.7487170708183 3235.6770696640037 Z"/></g></g><g><g><rect fill="white" stroke="none" x="376.9475874614238" y="3252.012272964004" width="166.6902665129297" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="379.2093848414238" y="3265.583057244004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Ctl Tx::Funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 3271.614516924004 L 240.68593787295896 3271.614516924004" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(228.27118336495897,3271.614516924004) translate(-228.27118336495897,-3271.614516924004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 240.83672436495897 3265.331746424004 L 228.27118336495897 3271.614516924004 L 240.83672436495897 3277.897287424004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="359.3725905131816" y="3294.232490724004" width="201.84026040941407" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="361.6343878931816" y="3307.8032750040043" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Ctl FundingUpdated</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 228.27118336495897 3313.834734684004 L 679.8995035628184 3313.834734684004" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(692.3142580708184,3313.834734684004) translate(-692.3142580708184,-3313.834734684004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 679.7487170708183 3307.551964184004 L 692.3142580708184 3313.834734684004 L 679.7487170708183 3320.117505184004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="246.11425158495896" y="3336.4527084840042" width="428.35693826585936" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="248.37604896495895" y="3350.0234927640045" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 3356.0549524440044 L 240.68593787295896 3356.0549524440044" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(228.27118336495897,3356.0549524440044) translate(-228.27118336495897,-3356.0549524440044)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 240.83672436495897 3349.7721819440044 L 228.27118336495897 3356.0549524440044 L 240.83672436495897 3362.3377229440043 Z"/></g></g><g><g><rect fill="white" stroke="none" x="264.83092638964644" y="3378.6729262440044" width="390.92358865648436" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="267.09272376964645" y="3392.2437105240047" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 3398.2751702040046 L 240.68593787295896 3398.2751702040046" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(228.27118336495897,3398.2751702040046) translate(-228.27118336495897,-3398.2751702040046)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 240.83672436495897 3391.9923997040046 L 228.27118336495897 3398.2751702040046 L 240.83672436495897 3404.5579407040045 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 7.5393246000000005 3433.2073741840045 L 2492.4606754 3433.2073741840045 M 7.5393246000000005 3438.2335905840046 L 2492.4606754 3438.2335905840046 M 7.5393246000000005 3443.2598069840046 L 2492.4606754 3443.2598069840046" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1135.023222418828 3420.8931440040046 L 1364.9767775811717 3420.8931440040046 L 1364.9767775811717 3455.5740371640045 L 1135.023222418828 3455.5740371640045 Z" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1156.1333312988281" y="3442.0032528840047" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Commit-Reveal Complete</text></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 7.5393246000000005 3490.5062411440044 L 2492.4606754 3490.5062411440044 M 7.5393246000000005 3495.5324575440045 L 2492.4606754 3495.5324575440045 M 7.5393246000000005 3500.5586739440046 L 2492.4606754 3500.5586739440046" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 577.9815659246875 3478.1920109640046 L 1922.0184340753126 3478.1920109640046 L 1922.0184340753126 3512.8729041240044 L 577.9815659246875 3512.8729041240044 Z" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="599.0916748046875" y="3499.3021198440047" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Changing semantics: On Commit-Reveal, Maker and Taker were the key roles. From now on Bob or Alice are the key roles. Now t_ is bob_ on the left and m_ is alice_ on the right.</text></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 7.5393246000000005 3547.8051081040044 L 2492.4606754 3547.8051081040044 M 7.5393246000000005 3552.8313245040044 L 2492.4606754 3552.8313245040044 M 7.5393246000000005 3557.8575409040045 L 2492.4606754 3557.8575409040045" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1102.923223944707 3535.4908779240045 L 1397.0767760552928 3535.4908779240045 L 1397.0767760552928 3570.1717710840044 L 1102.923223944707 3570.1717710840044 Z" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1124.033332824707" y="3556.6009868040046" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Swap setup: Bob is left, Alice right</text></g><g><g><rect fill="white" stroke="none" x="367.96425768847456" y="3592.7897448840044" width="184.65692605882813" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="370.2260550684746" y="3606.3605291640047" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 228.27118336495897 3612.3919888440046 L 679.8995035628184 3612.3919888440046" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(692.3142580708184,3612.3919888440046) translate(-692.3142580708184,-3612.3919888440046)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 679.7487170708183 3606.1092183440046 L 692.3142580708184 3612.3919888440046 L 679.7487170708183 3618.6747593440045 Z"/></g></g><g><g><rect fill="white" stroke="none" x="287.73266381669725" y="3635.0099626440046" width="171.67358865648438" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="289.9944611966973" y="3648.580746924005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Arbitrating Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 3654.6122066040048 L 67.23941272706054 3654.6122066040048" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(54.824658219060545,3654.6122066040048) translate(-54.824658219060545,-3654.6122066040048)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 67.39019921906055 3648.329436104005 L 54.824658219060545 3654.6122066040048 L 67.39019921906055 3660.8949771040047 Z"/></g></g><g><g><rect fill="white" stroke="none" x="321.28265923906054" y="3677.230180404005" width="104.57359781175781" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="323.54445661906055" y="3690.800964684005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Cancel</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 3696.832424364005 L 67.23941272706054 3696.832424364005" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(54.824658219060545,3696.832424364005) translate(-54.824658219060545,-3696.832424364005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 67.39019921906055 3690.549653864005 L 54.824658219060545 3696.832424364005 L 67.39019921906055 3703.115194864005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="320.31599587846483" y="3719.450398164005" width="106.50692453294921" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="322.57779325846485" y="3733.0211824440053" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Refund</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 3739.052642124005 L 67.23941272706054 3739.052642124005" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(54.824658219060545,3739.052642124005) translate(-54.824658219060545,-3739.052642124005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 67.39019921906055 3732.769871624005 L 54.824658219060545 3739.052642124005 L 67.39019921906055 3745.335412624005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="898.0999155817112" y="3761.6706159240052" width="194.20692911058595" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="900.3617129617112" y="3775.2414002040055" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 3781.2728598840054 L 1285.67774769519 3781.2728598840054" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1298.09250220319,3781.2728598840054) translate(-1298.09250220319,-3781.2728598840054)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1285.52696120319 3774.9900893840054 L 1298.09250220319 3781.2728598840054 L 1285.52696120319 3787.5556303840053 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1443.140096721804" y="3803.8908336840054" width="194.20692911058595" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1445.401894101804" y="3817.4616179640057" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1298.09250220319 3823.4930776440056 L 1769.9798658430036 3823.4930776440056" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1782.3946203510036,3823.4930776440056) translate(-1782.3946203510036,-3823.4930776440056)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1769.8290793510037 3817.2103071440056 L 1782.3946203510036 3823.4930776440056 L 1769.8290793510037 3829.7758481440055 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2026.1764600015701" y="3846.1110514440056" width="171.67358865648438" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2028.43825738157" y="3859.681835724006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Arbitrating Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 3865.7132954040057 L 2429.217133800621 3865.7132954040057" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(2441.631888308621,3865.7132954040057) translate(-2441.631888308621,-3865.7132954040057)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2429.066347308621 3859.430524904006 L 2441.631888308621 3865.7132954040057 L 2429.066347308621 3871.9960659040057 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2059.726455423933" y="3888.331269204006" width="104.57359781175781" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2061.9882528039334" y="3901.902053484006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Cancel</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 3907.933513164006 L 2429.217133800621 3907.933513164006" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(2441.631888308621,3907.933513164006) translate(-2441.631888308621,-3907.933513164006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2429.066347308621 3901.650742664006 L 2441.631888308621 3907.933513164006 L 2429.066347308621 3914.216283664006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2058.7597920633375" y="3930.551486964006" width="106.50692453294921" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2061.0215894433377" y="3944.1222712440062" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Refund</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 3950.153730924006 L 2429.217133800621 3950.153730924006" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(2441.631888308621,3950.153730924006) translate(-2441.631888308621,-3950.153730924006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2429.066347308621 3943.870960424006 L 2441.631888308621 3950.153730924006 L 2429.066347308621 3956.436501424006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1915.3710274992263" y="3972.771704724006" width="194.20692911058595" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1917.6328248792263" y="3986.3424890040064" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 3992.3739486840063 L 2230.139609250035 3992.3739486840063" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(2242.554363758035,3992.3739486840063) translate(-2242.554363758035,-3992.3739486840063)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2229.988822758035 3986.0911781840064 L 2242.554363758035 3992.3739486840063 L 2229.988822758035 3998.6567191840063 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1895.9126916227615" y="4014.9919224840064" width="233.12360086351563" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1898.1744890027614" y="4028.5627067640066" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2242.554363758035 4034.5941664440065 L 1794.8093748590036 4034.5941664440065" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1782.3946203510036,4034.5941664440065) translate(-1782.3946203510036,-4034.5941664440065)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1794.9601613510035 4028.3113959440066 L 1782.3946203510036 4034.5941664440065 L 1794.9601613510035 4040.8769369440065 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1418.9067669488547" y="4057.2121402440066" width="242.67358865648438" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1421.1685643288547" y="4070.782924524007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 4076.8143842040067 L 1310.50725671119 4076.8143842040067" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1298.09250220319,4076.8143842040067) translate(-1298.09250220319,-4076.8143842040067)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1310.65804320319 4070.5316137040068 L 1298.09250220319 4076.8143842040067 L 1310.65804320319 4083.0971547040067 Z"/></g></g><g><g><rect fill="white" stroke="none" x="873.866585808762" y="4099.432358004006" width="242.67358865648438" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="876.128383188762" y="4113.003142284006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1298.09250220319 4119.0346019640065 L 704.7290125788184 4119.0346019640065" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(692.3142580708184,4119.0346019640065) translate(-692.3142580708184,-4119.0346019640065)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 704.8797990708184 4112.7518314640065 L 692.3142580708184 4119.0346019640065 L 704.8797990708184 4125.317372464006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="338.95592638964644" y="4141.6525757640065" width="242.67358865648438" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="341.21772376964645" y="4155.223360044006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 4161.254819724007 L 240.68593787295896 4161.254819724007" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(228.27118336495897,4161.254819724007) translate(-228.27118336495897,-4161.254819724007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 240.83672436495897 4154.972049224007 L 228.27118336495897 4161.254819724007 L 240.83672436495897 4167.537590224007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="334.6309218120097" y="4183.872793524007" width="251.32359781175782" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="336.89271919200974" y="4197.443577804006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Datum::SignedArbitratingLock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 228.27118336495897 4203.475037484007 L 679.8995035628184 4203.475037484007" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(692.3142580708184,4203.475037484007) translate(-692.3142580708184,-4203.475037484007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 679.7487170708183 4197.192266984007 L 692.3142580708184 4203.475037484007 L 679.7487170708183 4209.757807984007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="359.3559202861308" y="4226.093011284007" width="201.87360086351563" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="361.61771766613083" y="4239.663795564006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 228.27118336495897 4245.695255244007 L 679.8995035628184 4245.695255244007" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(692.3142580708184,4245.695255244007) translate(-692.3142580708184,-4245.695255244007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 679.7487170708183 4239.412484744007 L 692.3142580708184 4245.695255244007 L 679.7487170708183 4251.978025744007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="273.80766076493944" y="4268.313229044007" width="199.52359476" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="276.06945814493946" y="4281.884013324006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast Arbitrating Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 4287.915473004007 L 67.23941272706054 4287.915473004007" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(54.824658219060545,4287.915473004007) translate(-54.824658219060545,-4287.915473004007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 67.39019921906055 4281.632702504007 L 54.824658219060545 4287.915473004007 L 67.39019921906055 4294.198243504007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="290.06599206376757" y="4310.533446804007" width="167.00693216234376" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="292.3277894437676" y="4324.104231084007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Accordant Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 4330.135690764007 L 67.23941272706054 4330.135690764007" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(54.824658219060545,4330.135690764007) translate(-54.824658219060545,-4330.135690764007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 67.39019921906055 4323.8529202640075 L 54.824658219060545 4330.135690764007 L 67.39019921906055 4336.418461264007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="332.1159951155254" y="4352.7536645640075" width="82.90692605882812" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="334.3777924955254" y="4366.324448844007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 4372.355908524008 L 67.23941272706054 4372.355908524008" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(54.824658219060545,4372.355908524008) translate(-54.824658219060545,-4372.355908524008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 67.39019921906055 4366.073138024008 L 54.824658219060545 4372.355908524008 L 67.39019921906055 4378.638679024008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="710.1573262908184" y="4394.973882324008" width="134.14026346117188" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="712.4191236708184" y="4408.544666604007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Checkpoint Bob 0</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 4414.576126284008 L 752.6288548708184 4414.576126284008 L 752.6288548708184 4434.178370244008 L 704.7290125788184 4434.178370244008" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray="6.03145968"/><g transform="translate(692.3142580708184,4434.178370244008) translate(-692.3142580708184,-4434.178370244008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 704.8797990708184 4427.895599744008 L 692.3142580708184 4434.178370244008 L 704.8797990708184 4440.461140744008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="294.7659966414043" y="4456.796344044008" width="157.60692300707032" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="297.0277940214043" y="4470.367128324007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Arbitrating Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 54.824658219060545 4476.398588004008 L 679.8995035628184 4476.398588004008" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(692.3142580708184,4476.398588004008) translate(-692.3142580708184,-4476.398588004008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 679.7487170708183 4470.115817504008 L 692.3142580708184 4476.398588004008 L 679.7487170708183 4482.681358504008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2033.2097928262772" y="4456.796344044008" width="157.60692300707032" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2035.4715902062771" y="4470.367128324007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Arbitrating Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2441.631888308621 4476.398588004008 L 1794.8093748590036 4476.398588004008" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1782.3946203510036,4476.398588004008) translate(-1782.3946203510036,-4476.398588004008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1794.9601613510035 4470.115817504008 L 1782.3946203510036 4476.398588004008 L 1794.9601613510035 4482.681358504008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1800.2376885710037" y="4499.016561804008" width="141.07359781175782" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1802.4994859510036" y="4512.587346084008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Checkpoint Alice 0</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 4518.618805764008 L 1842.7092171510035 4518.618805764008 L 1842.7092171510035 4538.2210497240085 L 1794.8093748590036 4538.2210497240085" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray="6.03145968"/><g transform="translate(1782.3946203510036,4538.2210497240085) translate(-1782.3946203510036,-4538.2210497240085)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1794.9601613510035 4531.9382792240085 L 1782.3946203510036 4538.2210497240085 L 1794.9601613510035 4544.503820224008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2028.5097882486405" y="4560.839023524009" width="167.00693216234376" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2030.7715856286404" y="4574.409807804008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Accordant Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 4580.441267484009 L 2429.217133800621 4580.441267484009" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(2441.631888308621,4580.441267484009) translate(-2441.631888308621,-4580.441267484009)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2429.066347308621 4574.158496984009 L 2441.631888308621 4580.441267484009 L 2429.066347308621 4586.724037984009 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2014.5847928262772" y="4603.059241284009" width="194.85692300707032" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2016.8465902062771" y="4616.630025564008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast Accordant Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 4622.661485244009 L 2429.217133800621 4622.661485244009" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(2441.631888308621,4622.661485244009) translate(-2441.631888308621,-4622.661485244009)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2429.066347308621 4616.378714744009 L 2441.631888308621 4622.661485244009 L 2429.066347308621 4628.944255744009 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2035.5431210733475" y="4645.279459044009" width="152.9402665129297" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2037.8049184533475" y="4658.850243324008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Accordant Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2441.631888308621 4664.881703004009 L 1794.8093748590036 4664.881703004009" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1782.3946203510036,4664.881703004009) translate(-1782.3946203510036,-4664.881703004009)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1794.9601613510035 4658.598932504009 L 1782.3946203510036 4664.881703004009 L 1794.9601613510035 4671.164473504009 Z"/></g></g><g><g><rect fill="white" stroke="none" x="297.0993248884746" y="4645.279459044009" width="152.9402665129297" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="299.3611222684746" y="4658.850243324008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Accordant Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 54.824658219060545 4664.881703004009 L 679.8995035628184 4664.881703004009" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(692.3142580708184,4664.881703004009) translate(-692.3142580708184,-4664.881703004009)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 679.7487170708183 4658.598932504009 L 692.3142580708184 4664.881703004009 L 679.7487170708183 4671.164473504009 Z"/></g></g><g><g><rect fill="white" stroke="none" x="889.491585808762" y="4687.499676804009" width="211.42358865648438" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="891.753383188762" y="4701.0704610840085" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 4707.101920764009 L 1285.67774769519 4707.101920764009" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1298.09250220319,4707.101920764009) translate(-1298.09250220319,-4707.101920764009)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1285.52696120319 4700.819150264009 L 1298.09250220319 4707.101920764009 L 1285.52696120319 4713.384691264009 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1434.5317669488547" y="4729.719894564009" width="211.42358865648438" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1436.7935643288547" y="4743.290678844009" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1298.09250220319 4749.3221385240095 L 1769.9798658430036 4749.3221385240095" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1782.3946203510036,4749.3221385240095) translate(-1782.3946203510036,-4749.3221385240095)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1769.8290793510037 4743.0393680240095 L 1782.3946203510036 4749.3221385240095 L 1769.8290793510037 4755.604909024009 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2070.559791300398" y="4771.9401123240095" width="82.90692605882812" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2072.8215886803982" y="4785.510896604009" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 4791.54235628401 L 2429.217133800621 4791.54235628401" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(2441.631888308621,4791.54235628401) translate(-2441.631888308621,-4791.54235628401)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2429.066347308621 4785.25958578401 L 2441.631888308621 4791.54235628401 L 2429.066347308621 4797.82512678401 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1906.762697726277" y="4814.16033008401" width="211.42358865648438" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1909.024495106277" y="4827.731114364009" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 4833.76257404401 L 2230.139609250035 4833.76257404401" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(2242.554363758035,4833.76257404401) translate(-2242.554363758035,-4833.76257404401)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2229.988822758035 4827.47980354401 L 2242.554363758035 4833.76257404401 L 2229.988822758035 4840.04534454401 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 7.5393246000000005 4868.69477802401 L 2492.4606754 4868.69477802401 M 7.5393246000000005 4873.720994424009 L 2492.4606754 4873.720994424009 M 7.5393246000000005 4878.747210824009 L 2492.4606754 4878.747210824009" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1147.681555243535 4856.38054784401 L 1352.3184447564647 4856.38054784401 L 1352.3184447564647 4891.06144100401 L 1147.681555243535 4891.06144100401 Z" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1168.7916641235352" y="4877.490656724009" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Swap Setup Complete</text></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 7.5393246000000005 4925.99364498401 L 2492.4606754 4925.99364498401 M 7.5393246000000005 4931.019861384009 L 2492.4606754 4931.019861384009 M 7.5393246000000005 4936.046077784009 L 2492.4606754 4936.046077784009" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1092.3565506658983 4913.67941480401 L 1407.6434493341014 4913.67941480401 L 1407.6434493341014 4948.36030796401 L 1092.3565506658983 4948.36030796401 Z" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1113.4666595458984" y="4934.789523684009" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Buy Procedure: Bob is left, Alice right</text></g><g><g><rect fill="white" stroke="none" x="1950.6543603239334" y="4970.97828176401" width="123.64026346117187" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1952.9161577039333" y="4984.549066044009" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Fully signed buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2242.554363758035 4990.58052572401 L 1794.8093748590036 4990.58052572401" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1782.3946203510036,4990.58052572401) translate(-1782.3946203510036,-4990.58052572401)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1794.9601613510035 4984.29775522401 L 1782.3946203510036 4990.58052572401 L 1794.9601613510035 4996.86329622401 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2057.0097920633375" y="5013.19849952401" width="110.00692453294921" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2059.2715894433377" y="5026.769283804009" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 5032.80074348401 L 2429.217133800621 5032.80074348401" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(2441.631888308621,5032.80074348401) translate(-2441.631888308621,-5032.80074348401)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2429.066347308621 5026.51797298401 L 2441.631888308621 5032.80074348401 L 2429.066347308621 5039.08351398401 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2002.1264569498123" y="5055.41871728401" width="219.77359476" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2004.3882543298123" y="5068.9895015640095" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: buy seen on mempool</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2441.631888308621 5075.02096124401 L 1794.8093748590036 5075.02096124401" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1782.3946203510036,5075.02096124401) translate(-1782.3946203510036,-5075.02096124401)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1794.9601613510035 5068.73819074401 L 1782.3946203510036 5075.02096124401 L 1794.9601613510035 5081.30373174401 Z"/></g></g><g><g><rect fill="white" stroke="none" x="263.68266076493944" y="5055.41871728401" width="219.77359476" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="265.94445814493946" y="5068.9895015640095" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: buy seen on mempool</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 54.824658219060545 5075.02096124401 L 679.8995035628184 5075.02096124401" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(692.3142580708184,5075.02096124401) translate(-692.3142580708184,-5075.02096124401)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 679.7487170708183 5068.73819074401 L 692.3142580708184 5075.02096124401 L 679.7487170708183 5081.30373174401 Z"/></g></g><g><g><rect fill="white" stroke="none" x="394.7309241008281" y="5097.63893504401" width="131.1235932341211" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="396.9927214808281" y="5111.20971932401" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Buy signature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 5117.2411790040105 L 240.68593787295896 5117.2411790040105" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(228.27118336495897,5117.2411790040105) translate(-228.27118336495897,-5117.2411790040105)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 240.83672436495897 5110.958408504011 L 228.27118336495897 5117.2411790040105 L 240.83672436495897 5123.5239495040105 Z"/></g></g><g><g><rect fill="white" stroke="none" x="246.11425158495896" y="5139.859152804011" width="175.95692911058595" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="248.37604896495895" y="5153.42993708401" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">recover accordant keys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 228.27118336495897 5159.461396764011 L 288.585780164959 5159.461396764011 L 288.585780164959 5179.063640724011 L 240.68593787295896 5179.063640724011" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(228.27118336495897,5179.063640724011) translate(-228.27118336495897,-5179.063640724011)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 240.83672436495897 5172.780870224011 L 228.27118336495897 5179.063640724011 L 240.83672436495897 5185.346411224011 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 7.5393246000000005 5213.995844704011 L 2492.4606754 5213.995844704011 M 7.5393246000000005 5219.02206110401 L 2492.4606754 5219.02206110401 M 7.5393246000000005 5224.04827750401 L 2492.4606754 5224.04827750401" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 850.4565720282031 5201.681614524011 L 1649.543427971797 5201.681614524011 L 1649.543427971797 5236.362507684011 L 850.4565720282031 5236.362507684011 Z" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="871.5666809082031" y="5222.79172340401" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Cancel Init t &gt; t0: Bob is left, Alice right, either have a fully signed and valid cancel tx, and can publish</text></g><g><g><rect fill="white" stroke="none" x="314.1659943525859" y="5258.980481484011" width="118.80692758470703" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="316.42779173258594" y="5272.55126576401" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Cancel valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 54.824658219060545 5278.582725444011 L 679.8995035628184 5278.582725444011" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(692.3142580708184,5278.582725444011) translate(-692.3142580708184,-5278.582725444011)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 679.7487170708183 5272.299954944011 L 692.3142580708184 5278.582725444011 L 679.7487170708183 5284.865495944011 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2052.6097905374586" y="5258.980481484011" width="118.80692758470703" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2054.871587917459" y="5272.55126576401" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Cancel valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2441.631888308621 5278.582725444011 L 1794.8093748590036 5278.582725444011" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1782.3946203510036,5278.582725444011) translate(-1782.3946203510036,-5278.582725444011)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1794.9601613510035 5272.299954944011 L 1782.3946203510036 5278.582725444011 L 1794.9601613510035 5284.865495944011 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2003.4264600015701" y="5301.200699244011" width="217.17358865648438" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2005.68825738157" y="5314.77148352401" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast cancel (Alice inits)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 5320.802943204011 L 2429.217133800621 5320.802943204011" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(2441.631888308621,5320.802943204011) translate(-2441.631888308621,-5320.802943204011)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2429.066347308621 5314.520172704011 L 2441.631888308621 5320.802943204011 L 2429.066347308621 5327.085713704011 Z"/></g></g><g><g><rect fill="white" stroke="none" x="268.4493309919902" y="5301.200699244011" width="210.24025430589845" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="270.71112837199024" y="5314.77148352401" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast cancel (Bob inits)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 5320.802943204011 L 67.23941272706054 5320.802943204011" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(54.824658219060545,5320.802943204011) translate(-54.824658219060545,-5320.802943204011)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 67.39019921906055 5314.520172704011 L 54.824658219060545 5320.802943204011 L 67.39019921906055 5327.085713704011 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 7.5393246000000005 5355.735147184011 L 2492.4606754 5355.735147184011 M 7.5393246000000005 5360.761363584011 L 2492.4606754 5360.761363584011 M 7.5393246000000005 5365.78757998401 L 2492.4606754 5365.78757998401" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1062.1815628729296 5343.420917004011 L 1437.8184371270702 5343.420917004011 L 1437.8184371270702 5378.101810164011 L 1062.1815628729296 5378.101810164011 Z" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1083.2916717529297" y="5364.53102588401" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Cancel detected t &gt; t0: Bob is left, Alice right</text></g><g><g><rect fill="white" stroke="none" x="306.05766076493944" y="5400.719783964011" width="135.02359476" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="308.31945814493946" y="5414.2905682440105" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event cancel final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 54.824658219060545 5420.322027924011 L 679.8995035628184 5420.322027924011" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(692.3142580708184,5420.322027924011) translate(-692.3142580708184,-5420.322027924011)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 679.7487170708183 5414.039257424011 L 692.3142580708184 5420.322027924011 L 679.7487170708183 5426.604798424011 Z"/></g></g><g><g><rect fill="white" stroke="none" x="308.29932565141405" y="5442.940001724011" width="130.5402649870508" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="310.56112303141407" y="5456.510786004011" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast refund</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 692.3142580708184 5462.5422456840115 L 67.23941272706054 5462.5422456840115" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(54.824658219060545,5462.5422456840115) translate(-54.824658219060545,-5462.5422456840115)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 67.39019921906055 5456.2594751840115 L 54.824658219060545 5462.5422456840115 L 67.39019921906055 5468.8250161840115 Z"/></g></g><g><g><rect fill="white" stroke="none" x="301.7243248884746" y="5485.160219484012" width="143.6902665129297" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="303.9861222684746" y="5498.731003764011" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: refund seen</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 54.824658219060545 5504.762463444012 L 679.8995035628184 5504.762463444012" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(692.3142580708184,5504.762463444012) translate(-692.3142580708184,-5504.762463444012)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 679.7487170708183 5498.479692944012 L 692.3142580708184 5504.762463444012 L 679.7487170708183 5511.045233944012 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2040.1681210733475" y="5485.160219484012" width="143.6902665129297" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2042.4299184533475" y="5498.731003764011" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: refund seen</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2441.631888308621 5504.762463444012 L 1794.8093748590036 5504.762463444012" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1782.3946203510036,5504.762463444012) translate(-1782.3946203510036,-5504.762463444012)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1794.9601613510035 5498.479692944012 L 1782.3946203510036 5504.762463444012 L 1794.9601613510035 5511.045233944012 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1948.6876931486404" y="5527.380437244012" width="127.57359781175781" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1950.9494905286404" y="5540.951221524011" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Tx::Refund tx</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 5546.982681204012 L 2230.139609250035 5546.982681204012" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(2242.554363758035,5546.982681204012) translate(-2242.554363758035,-5546.982681204012)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2229.988822758035 5540.699910704012 L 2242.554363758035 5546.982681204012 L 2229.988822758035 5553.265451704012 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2260.3974319780345" y="5569.600655004012" width="175.95692911058595" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2262.6592293580347" y="5583.171439284011" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">recover accordant keys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2242.554363758035 5589.202898964012 L 2302.868960558035 5589.202898964012 L 2302.868960558035 5608.805142924012 L 2254.969118266035 5608.805142924012" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(2242.554363758035,5608.805142924012) translate(-2242.554363758035,-5608.805142924012)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2255.119904758035 5602.522372424012 L 2242.554363758035 5608.805142924012 L 2255.119904758035 5615.087913424012 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 7.5393246000000005 5643.737346904012 L 2492.4606754 5643.737346904012 M 7.5393246000000005 5648.763563304012 L 2492.4606754 5648.763563304012 M 7.5393246000000005 5653.789779704011 L 2492.4606754 5653.789779704011" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1127.648222418828 5631.423116724012 L 1372.3517775811717 5631.423116724012 L 1372.3517775811717 5666.104009884012 L 1127.648222418828 5666.104009884012 Z" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1148.7583312988281" y="5652.533225604011" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve"> Punish process t &gt; t1 &gt; t0 </text></g><g><g><rect fill="white" stroke="none" x="2027.1681210733475" y="5688.721983684012" width="169.6902665129297" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2029.4299184533475" y="5702.292767964012" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Event: punish valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2441.631888308621 5708.324227644012 L 1794.8093748590036 5708.324227644012" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1782.3946203510036,5708.324227644012) translate(-1782.3946203510036,-5708.324227644012)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1794.9601613510035 5702.041457144012 L 1782.3946203510036 5708.324227644012 L 1794.9601613510035 5714.606998144012 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1927.6293587980545" y="5730.942201444012" width="169.6902665129297" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1929.8911561780544" y="5744.512985724012" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Event: punish valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 5750.544445404013 L 2230.139609250035 5750.544445404013" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(2242.554363758035,5750.544445404013) translate(-2242.554363758035,-5750.544445404013)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2229.988822758035 5744.261674904013 L 2242.554363758035 5750.544445404013 L 2229.988822758035 5756.8272159040125 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2260.3974319780345" y="5773.162419204013" width="124.47359170824218" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2262.6592293580347" y="5786.733203484012" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">fully sign punish</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2242.554363758035 5792.764663164013 L 2302.868960558035 5792.764663164013 L 2302.868960558035 5812.366907124013 L 2254.969118266035 5812.366907124013" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(2242.554363758035,5812.366907124013) translate(-2242.554363758035,-5812.366907124013)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2255.119904758035 5806.084136624013 L 2242.554363758035 5812.366907124013 L 2255.119904758035 5818.649677624013 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1959.954359560994" y="5834.984880924013" width="105.04026498705078" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1962.2161569409939" y="5848.555665204012" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Tx::Punish</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2242.554363758035 5854.587124884013 L 1794.8093748590036 5854.587124884013" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(1782.3946203510036,5854.587124884013) translate(-1782.3946203510036,-5854.587124884013)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1794.9601613510035 5848.304354384013 L 1782.3946203510036 5854.587124884013 L 1794.9601613510035 5860.869895384013 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2024.2597882486405" y="5877.205098684013" width="175.50693216234376" height="19.602243960000003"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2026.5215856286404" y="5890.775882964012" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Broadcast punish tx</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1782.3946203510036 5896.807342644013 L 2429.217133800621 5896.807342644013" stroke-miterlimit="10" stroke-width="1.2565541" stroke-dasharray=""/><g transform="translate(2441.631888308621,5896.807342644013) translate(-2441.631888308621,-5896.807342644013)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2429.066347308621 5890.524572144013 L 2441.631888308621 5896.807342644013 L 2429.066347308621 5903.090113144013 Z"/></g></g></g><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/></g></svg>
\ No newline at end of file
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="2625" height="10337"><desc>title%20Farcaster%20node%0A%2F%2F%20to%20display%20the%20diagram%2C%20go%20to%20sequencediagram.org%0A%2F%2F%20dashed%20lines%2C%20not%20yet%20implemented%0A%0Aparticipant%20t_syncer%0Aparticipant%20t_wallet%0Aparticipant%20t_swap%0Aparticipant%20t_farcasterd%0Aparticipant%20t_cli%0Aparticipant%20peerd%0Aparticipant%20m_cli%0Aparticipant%20m_farcasterd%0Aparticipant%20m_swap%0Aparticipant%20m_wallet%0Aparticipant%20m_syncer%0A%0A%3D%3DSetup%20and%20Commit-Reveal%3A%20Bob%20and%20Alice%20can%20be%20on%20both%20sides%3D%3D%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20launch%20farcasterd%5Cnmanually%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20launch%20walletd%0Am_farcasterd%20%3C-%20m_wallet%20%3A%20Ctl%20Hello%0Am_cli%20-%3E%20m_farcasterd%20%3A%20MakeOffer%20(deferred)%0Am_farcasterd%20-%3E%20m_wallet%20%3A%20Ctl%20GetKeys%0Am_farcasterd%20%3C-%20m_wallet%20%3A%20Ctl%20Keys%20(not%20to%20be%20held%20on%20state)%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20MakeOffer%20(continues)%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20launch%5Cnpeerd%20listen%0At_farcasterd%20-%3E%20t_farcasterd%20%3A%20launch%20farcasterd%5Cnmanually%0At_farcasterd%20-%3E%20t_farcasterd%20%3A%20launch%20walletd%0At_wallet%20-%3E%20t_farcasterd%20%3A%20Ctl%20Hello%0At_cli%20-%3E%20t_farcasterd%20%3A%20Ctl%20TakeOffer%20(deferred)%0At_wallet%20%3C-%20t_farcasterd%20%3A%20Ctl%20GetKeys%0At_wallet%20-%3E%20t_farcasterd%20%3A%20Ctl%20Keys%20(not%20to%20be%20held%20on%20state)%0At_farcasterd%20%3C-%20t_farcasterd%20%3A%20Ctl%20TakeOffer%20(continues)%0At_farcasterd%20-%3E%20t_farcasterd%20%3A%20launch%5Cnpeerd%20connect%0At_wallet%20%3C-%20t_farcasterd%20%3A%20Ctl%20TakeOffer%0At_wallet%20-%3E%20t_wallet%20%3A%20create%20taker%20wallet%0At_wallet%20-%3E%20t_farcasterd%20%3A%20Ctl%20LaunchSwap%0At_swap%20-%3E%20t_farcasterd%20%3A%20Ctl%20Hello%0At_farcasterd%20-%3E%20t_farcasterd%3Alaunch%20syncer%0At_swap%20%3C-%20t_farcasterd%20%3A%20Ctl%20TakeSwap%0At_swap%20-%3E%20peerd%20%3A%20Msg%20TakerCommit%0Apeerd%20-%3E%20m_farcasterd%20%3A%20Msg%20TakerCommit%0Am_farcasterd%20-%3E%20m_wallet%20%3A%20Ctl%20BitcoinAddress%0Am_farcasterd%20-%3E%20m_wallet%20%3A%20Msg%20TakerCommit%0Am_wallet%20-%3E%20m_wallet%20%3A%20create%20maker%20wallet%0Am_wallet%20-%3E%20m_farcasterd%20%3A%20Ctl%20LaunchSwap%0Am_swap%20-%3E%20m_farcasterd%20%3A%20Ctl%20Hello%0Am_farcasterd%20-%3E%20m_farcasterd%3Alaunch%20syncer%0Am_farcasterd%20-%3E%20m_swap%20%3A%20Ctl%20MakeSwap%0A%0Am_swap%20-%3E%20peerd%20%3A%20Msg%20MakerCommit%0At_swap%20%3C-%20peerd%20%3A%20Msg%20MakerCommit%0A%2F%2F%20TODO%3A%20verify%20that%20swapd%20launches%20no%20matter%20what%0At_syncer%20%3C-%20t_swap%20%3A%20Ctl%20WatchHeight%0At_syncer%20%3C-%20t_swap%20%3A%20if%20Bob%2C%20Watch%20Arbitrating%20Funding%20Address%0At_swap%20-%3E%20t_wallet%20%3A%20Msg%20MakerCommit%0At_wallet%20-%3E%20t_swap%20%3A%20Ctl%20RevealProof%20(taker%20is%20sender)%0At_swap%20-%3E%20peerd%20%3A%20Msg%20RevealProof%20(taker%20is%20sender)%0At_swap%20-%3E%20peerd%20%3A%20Msg%20Reveal%20(taker%20is%20sender)%0Apeerd%20-%3E%20m_swap%20%3A%20Msg%20RevealProof%20(taker%20is%20sender)%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Alice%2C%20Msg%20RevealProof%20(taker%20is%20sender)%20%0Am_swap%20-%3E%20m_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20RevealProof%0Apeerd%20-%3E%20m_swap%20%3A%20Msg%20Reveal%20(taker%20is%20sender)%0Am_swap%20-%3E%20m_farcasterd%20%3A%20if%20Bob%2C%20ask%20for%20funding%0Am_swap%20-%3E%20m_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20Reveal%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Alice%2C%20Msg%20Reveal%20(taker%20is%20sender)%0A%0Am_swap-%3Em_syncer%3ACtl%20WatchHeight%0Am_swap%20-%3E%20m_syncer%3Aif%20Bob%2C%20Watch%20Arbitrating%20Funding%20Address%0Am_swap%20%3C-%20m_syncer%3AIf%20Bob%2C%20Arbitrating%20Funding%20event%0Am_swap-%3Em_wallet%3Aif%20Bob%2C%20Ctl%20Tx%3A%3AFunding%0Am_swap%3C-m_wallet%3AIf%20Bob%2C%20Ctl%20FundingUpdated%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20RevealProof%20(taker%20is%20sender)%20%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20Reveal%20(taker%20is%20sender)%0Am_wallet%20-%3E%20m_swap%20%3A%20Ctl%20RevealProof%20(maker%20is%20sender)%0Apeerd%20%3C-%20m_swap%20%3A%20Msg%20RevealProof%20(maker%20is%20sender)%0Apeerd%20%3C-%20m_swap%20%3A%20Msg%20Reveal%20(maker%20is%20sender)%0Apeerd%20-%3E%20t_swap%20%3A%20Msg%20RevealProof%20(maker%20is%20sender)%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Alice%2C%20Msg%20RevealProof%20(maker%20is%20sender)%0At_swap%20-%3E%20t_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20RevealProof%0Apeerd%20-%3E%20t_swap%20%3A%20Msg%20Reveal%20(maker%20is%20sender)%0At_swap%20-%3E%20t_farcasterd%20%3A%20if%20Bob%2C%20ask%20for%20funding%0At_swap%20-%3E%20t_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20Reveal%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Alice%2C%20Msg%20Reveal%20(maker%20is%20sender)%0At_syncer%20-%3E%20t_swap%3AIf%20Bob%2C%20Arbitrating%20Funding%20event%0At_swap-%3Et_wallet%3Aif%20Bob%2C%20Ctl%20Tx%3A%3AFunding%0At_swap%3C-t_wallet%3AIf%20Bob%2C%20Ctl%20FundingUpdated%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20RevealProof%20(maker%20is%20sender)%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20Reveal%20(maker%20is%20sender)%0A%3D%3DCommit-Reveal%20Complete%3D%3D%0A%3D%3DChanging%20semantics%3A%20On%20Commit-Reveal%2C%20Maker%20and%20Taker%20were%20the%20key%20roles.%20From%20now%20on%20Bob%20or%20Alice%20are%20the%20key%20roles.%20Now%20t_%20is%20bob_%20on%20the%20left%20and%20m_%20is%20alice_%20on%20the%20right.%3D%3D%0A%3D%3DSwap%20setup%3A%20Bob%20is%20left%2C%20Alice%20right%3D%3D%0At_wallet%20-%3E%20t_swap%20%3A%20Ctl%20CoreArbitratingSetup%0A%2F%2F%20TODO%3A%20During%20replay%20of%20Checkpoint%20Bob%200%2C%20Bob%20has%20to%20rewatch%20these%203%20txs%0At_syncer%20%3C-%20t_swap%20%3A%20Watch%20Arbitrating%20Lock%0At_syncer%20%3C-%20t_swap%20%3A%20Watch%20Cancel%0At_syncer%20%3C-%20t_swap%20%3A%20Watch%20Refund%0Apeerd%20%3C-%20t_swap%20%3A%20Msg%20CoreArbitratingSetup%0Am_swap%20%3C-%20peerd%20%3A%20Msg%20CoreArbitratingSetup%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Arbitrating%20Lock%0A%2F%2F%20TODO%3A%20During%20replay%20of%20Checkpoint%20Alice%200%2C%20Alice%20has%20to%20rewatch%20these%202%20txs%20(arbitrating%20already%20final%20then)%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Cancel%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Refund%0A%0Am_wallet%20%3C-%20m_swap%20%3A%20Msg%20CoreArbitratingSetup%0Am_wallet%20--%3E%20m_wallet%20%3A%20Checkpoint%20Alice%200%0Am_wallet%20-%3E%20m_swap%20%3A%20Ctl%20RefundProcedureSignatures%0Am_swap%20-%3E%20peerd%20%3A%20Msg%20RefundProcedureSignatures%0Apeerd%20-%3E%20t_swap%20%3A%20Msg%20RefundProcedureSignatures%0At_wallet%20%3C-%20t_swap%20%3A%20Msg%20RefundProcedureSignatures%0At_wallet%20-%3E%20t_swap%3ACtl%20Datum%3A%3ASignedArbitratingLock%0A%2F%2F%20DONE%3A%20do%20we%20know%20that%20same%20inputs%20are%20being%20used%20in%20case%20of%20replay%3F%0A%2F%2F%20-%3E%20yes%2C%20but%20create%20different%20sig%0At_wallet%20--%3E%20t_wallet%20%3A%20Checkpoint%20Bob%200%0At_wallet%20-%3E%20t_swap%20%3A%20Ctl%20BuyProcedureSignature%0At_syncer%20%3C-%20t_swap%20%3A%20Broadcast%20Arbitrating%20Lock%0At_swap%20-%3E%20t_syncer%20%3A%20Watch%20Accordant%20Lock%0At_swap%20-%3E%20t_syncer%20%3A%20Watch%20Buy%0A%0Aparallel%0At_syncer%20-%3E%20%20t_swap%20%3A%20Arbitrating%20Lock%20final%0Am_swap%20%3C-%20m_syncer%20%3A%20Arbitrating%20Lock%20final%0Aparallel%20off%0A%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Accordant%20Lock%0A%0Aparallel%0Am_swap%20%3C-%20m_syncer%20%3A%20Accordant%20Lock%20final%0At_swap%20%3C-%20t_syncer%20%3A%20Accordant%20Lock%20final%0Aparallel%20off%0A%0Apeerd%20%3C-%20t_swap%20%3A%20Msg%20BuyProcedureSignature%0Am_swap%20%3C-%20peerd%20%3A%20Msg%20BuyProcedureSignature%0Am_swap%20-%3E%20m_syncer%3AWatch%20Buy%0Am_swap%20-%3E%20m_wallet%20%3A%20Msg%20BuyProcedureSignature%0A%3D%3DSwap%20Setup%20Complete%3D%3D%0A%3D%3DBuy%20Procedure%3A%20Bob%20is%20left%2C%20Alice%20right%3D%3D%0A%0Am_swap%20%3C-%20m_wallet%20%3A%20Fully%20signed%20buy%0Am_swap%20-%3E%20m_syncer%20%3A%20Broadcast%20buy%0Aparallel%0Am_swap%20%3C-%20m_syncer%20%3A%20Event%3A%20buy%20seen%20on%20mempool%0At_swap%20%3C-%20t_syncer%20%3A%20Event%3A%20buy%20seen%20on%20mempool%0Aparallel%20off%0At_wallet%20%3C-%20t_swap%20%3A%20Ctl%20Buy%20signature%0At_wallet%20-%3E%20t_wallet%20%3A%20recover%20accordant%20keys%0A%0A%3D%3DCancel%20Init%20t%20%3E%20t0%3A%20Bob%20is%20left%2C%20Alice%20right%2C%20either%20have%20a%20fully%20signed%20and%20valid%20cancel%20tx%2C%20and%20can%20publish%3D%3D%0Aparallel%0At_swap%20%3C-%20t_syncer%20%3A%20Ctl%20Cancel%20valid%0Am_swap%20%3C-%20m_syncer%20%3A%20Ctl%20Cancel%20valid%0Aparallel%20off%0Aparallel%0Am_swap%20-%3E%20m_syncer%20%3A%20Broadcast%20cancel%20(Alice%20inits)%0At_swap%20-%3E%20t_syncer%20%3A%20Broadcast%20cancel%20(Bob%20inits)%0Aparallel%20off%0A%3D%3DCancel%20detected%20t%20%3E%20t0%3A%20Bob%20is%20left%2C%20Alice%20right%3D%3D%0At_swap%20%3C-%20t_syncer%3A%20Event%20cancel%20final%0At_swap%20-%3E%20t_syncer%20%3A%20Broadcast%20refund%0Aparallel%0At_syncer%20-%3E%20t_swap%20%3A%20Event%3A%20refund%20seen%0Am_syncer%20-%3E%20m_swap%20%3A%20Event%3A%20refund%20seen%0Aparallel%20off%0Am_swap%20-%3E%20m_wallet%20%3A%20Ctl%20Tx%3A%3ARefund%20tx%0Am_wallet%20-%3E%20m_wallet%20%3A%20recover%20accordant%20keys%0A%0A%3D%3D%20Punish%20process%20t%20%3E%20t1%20%3E%20t0%20%3D%3D%0Am_swap%3C-m_syncer%3ACtl%20Event%3A%20punish%20valid%0Am_swap-%3Em_wallet%3ACtl%20Event%3A%20punish%20valid%0Am_wallet-%3Em_wallet%3Afully%20sign%20punish%0Am_swap%3C-m_wallet%3ACtl%20Tx%3A%3APunish%0Am_swap-%3Em_syncer%3ACtl%20Broadcast%20punish%20tx%0A</desc><defs/><g><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g><rect fill="white" stroke="none" x="0" y="0" width="2625" height="10337"/></g><g><text fill="black" stroke="none" font-family="sans-serif" font-size="16.5pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1238.7019835856759" y="39.58145414999999" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Farcaster node</text></g><g/><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 154.895423907 L 69.52660506176173 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 154.895423907 L 240.92694725433986 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 154.895423907 L 703.1621409168399 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 154.895423907 L 1015.5050499387149 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1239.594293283832 154.895423907 L 1239.594293283832 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 154.895423907 L 1355.0254712418282 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1474.5260843194533 154.895423907 L 1474.5260843194533 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 154.895423907 L 1681.5072344028517 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 154.895423907 L 1893.6709101210158 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 154.895423907 L 2351.840246849922 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 154.895423907 L 2551.7708176149613 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/></g><g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 13.193818050000004 83.648806437 L 125.85939207352345 83.648806437 L 125.85939207352345 154.895423907 L 13.193818050000004 154.895423907 L 13.193818050000004 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="41.82440321850001" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_syncer</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 187.44311348964845 83.648806437 L 294.4107810190313 83.648806437 L 294.4107810190313 154.895423907 L 187.44311348964845 154.895423907 L 187.44311348964845 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="216.07369865814846" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_wallet</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 651.3067937854493 83.648806437 L 755.0174880482305 83.648806437 L 755.0174880482305 154.895423907 L 651.3067937854493 154.895423907 L 651.3067937854493 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="679.9373789539493" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_swap</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 948.1701190670899 83.648806437 L 1082.83998081034 83.648806437 L 1082.83998081034 154.895423907 L 948.1701190670899 154.895423907 L 948.1701190670899 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="976.8007042355899" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_farcasterd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1197.9286434180665 83.648806437 L 1281.2599431495978 83.648806437 L 1281.2599431495978 154.895423907 L 1197.9286434180665 154.895423907 L 1197.9286434180665 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1226.5592285865664" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_cli</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1307.6475792495978 83.648806437 L 1402.4033632340588 83.648806437 L 1402.4033632340588 154.895423907 L 1307.6475792495978 154.895423907 L 1307.6475792495978 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1336.2781644180977" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">peerd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1428.7909993340588 83.648806437 L 1520.261169304848 83.648806437 L 1520.261169304848 154.895423907 L 1428.7909993340588 154.895423907 L 1428.7909993340588 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1457.4215845025587" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_cli</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1610.102868411598 83.648806437 L 1752.9116003941058 83.648806437 L 1752.9116003941058 154.895423907 L 1610.102868411598 154.895423907 L 1610.102868411598 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1638.7334535800978" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_farcasterd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1837.7461278699964 83.648806437 L 1949.5956923720355 83.648806437 L 1949.5956923720355 154.895423907 L 1837.7461278699964 154.895423907 L 1837.7461278699964 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1866.3767130384963" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_swap</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 2294.2869779656016 83.648806437 L 2409.393515734242 83.648806437 L 2409.393515734242 154.895423907 L 2294.2869779656016 154.895423907 L 2294.2869779656016 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2322.917563134102" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_wallet</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 2491.3685954835705 83.648806437 L 2612.1730397463516 83.648806437 L 2612.1730397463516 154.895423907 L 2491.3685954835705 154.895423907 L 2491.3685954835705 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2519.9991806520707" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_syncer</text></g></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 229.22059892200002 L 2611.80618195 229.22059892200002 M 13.19381805 238.01647762200002 L 2611.80618195 238.01647762200002 M 13.19381805 246.81235632200003 L 2611.80618195 246.81235632200003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1070.6038792842187 207.67069610700003 L 1554.3961207157813 207.67069610700003 L 1554.3961207157813 268.362259137 L 1070.6038792842187 268.362259137 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1107.5465698242188" y="244.61338664700003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Setup and Commit-Reveal: Bob and Alice can be on both sides</text></g><g><g><rect fill="white" stroke="none" x="1712.7326037878515" y="307.94371328700004" width="120.3714910253125" height="34.30392693"/></g><g><rect fill="white" stroke="none" x="1712.7326037878515" y="334.33134938700005" width="66.58483941398437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028515" y="331.69258577700003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch farcasterd</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028515" y="358.08022187700004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">manually</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 368.63527631700003 L 1787.0577788028518 368.63527631700003 L 1787.0577788028518 402.939203247 L 1703.2330547918518 402.939203247" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,402.939203247) translate(-1681.5072344028517,-402.939203247)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 391.944354872 L 1681.5072344028517 402.939203247 L 1703.4969311528516 413.934051622 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1712.7326037878515" y="442.52065739700004" width="100.82247979484374" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028515" y="466.26952988700003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch walletd</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 476.824584327 L 1787.0577788028518 476.824584327 L 1787.0577788028518 511.128511257 L 1703.2330547918518 511.128511257" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,511.128511257) translate(-1681.5072344028517,-511.128511257)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 500.133662882 L 1681.5072344028517 511.128511257 L 1703.4969311528516 522.123359632 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1985.0169639247658" y="550.709965407" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1988.9751093397658" y="574.4588378970001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 585.013892337 L 1703.2330547918518 585.013892337" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,585.013892337) translate(-1681.5072344028517,-585.013892337)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 574.0190439620001 L 1681.5072344028517 585.013892337 L 1703.4969311528516 596.008740712 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1505.7514537044533" y="624.595346487" width="144.53041131339845" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1509.7095991194533" y="648.3442189770001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">MakeOffer (deferred)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1474.5260843194533 658.899273417 L 1659.7814140138516 658.899273417" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,658.899273417) translate(-1681.5072344028517,-658.899273417)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1659.5175376528518 647.9044250420001 L 1681.5072344028517 658.899273417 L 1659.5175376528518 669.894121792 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1973.6103782314065" y="698.480727567" width="86.12672478996093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1977.5685236464064" y="722.2296000570001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl GetKeys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 732.784654497 L 2330.114426460922 732.784654497" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,732.784654497) translate(-2351.840246849922,-732.784654497)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 721.7898061220001 L 2351.840246849922 732.784654497 L 2329.850550099922 743.779502872 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1905.9654578822854" y="772.366108647" width="221.41656548820313" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1909.9236032972854" y="796.1149811370001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Keys (not to be held on state)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 806.670035577 L 1703.2330547918518 806.670035577" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,806.670035577) translate(-1681.5072344028517,-806.670035577)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 795.6751872020001 L 1681.5072344028517 806.670035577 L 1703.4969311528516 817.664883952 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1712.7326037878515" y="846.251489727" width="152.68359429679688" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028515" y="870.0003622170001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">MakeOffer (continues)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 880.555416657 L 1787.0577788028518 880.555416657 L 1787.0577788028518 914.859343587 L 1703.2330547918518 914.859343587" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,914.859343587) translate(-1681.5072344028517,-914.859343587)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 903.8644952120001 L 1681.5072344028517 914.859343587 L 1703.4969311528516 925.854191962 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1712.7326037878515" y="954.4407977369999" width="51.11598260246094" height="34.30392693"/></g><g><rect fill="white" stroke="none" x="1712.7326037878515" y="980.8284338369999" width="83.70723016105468" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028515" y="978.189670227" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028515" y="1004.577306327" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">peerd listen</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 1015.1323607669999 L 1787.0577788028518 1015.1323607669999 L 1787.0577788028518 1049.436287697 L 1703.2330547918518 1049.436287697" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,1049.436287697) translate(-1681.5072344028517,-1049.436287697)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 1038.441439322 L 1681.5072344028517 1049.436287697 L 1703.4969311528516 1060.4311360719998 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="1089.017741847" width="120.3714910253125" height="34.30392693"/></g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="1115.405377947" width="66.58483941398437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="1112.766614337" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch farcasterd</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="1139.154250437" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">manually</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 1149.709304877 L 1121.0555943387149 1149.709304877 L 1121.0555943387149 1184.013231807 L 1037.230870327715 1184.013231807" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,1184.013231807) translate(-1015.5050499387149,-1184.013231807)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1037.494746688715 1173.018383432 L 1015.5050499387149 1184.013231807 L 1037.494746688715 1195.008080182 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="1223.5946859570001" width="100.82247979484374" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="1247.343558447" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch walletd</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 1257.8986128870001 L 1121.0555943387149 1257.8986128870001 L 1121.0555943387149 1292.2025398170001 L 1037.230870327715 1292.2025398170001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,1292.2025398170001) translate(-1015.5050499387149,-1292.2025398170001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1037.494746688715 1281.2076914420002 L 1015.5050499387149 1292.2025398170001 L 1037.494746688715 1303.197388192 Z"/></g></g><g><g><rect fill="white" stroke="none" x="596.5592218949063" y="1331.783993967" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="600.5173673099063" y="1355.532866457" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 1366.087920897 L 993.779229549715 1366.087920897" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,1366.087920897) translate(-1015.5050499387149,-1366.087920897)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 1355.093072522 L 1015.5050499387149 1366.087920897 L 993.5153531887149 1377.082769272 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="1405.6693750470001" width="161.6385045751172" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="1429.418247537" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeOffer (deferred)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1239.594293283832 1439.9733019770001 L 1037.230870327715 1439.9733019770001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,1439.9733019770001) translate(-1015.5050499387149,-1439.9733019770001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1037.494746688715 1428.9784536020002 L 1015.5050499387149 1439.9733019770001 L 1037.494746688715 1450.968150352 Z"/></g></g><g><g><rect fill="white" stroke="none" x="585.1526362015469" y="1479.5547561270002" width="86.12672478996093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="589.1107816165469" y="1503.3036286170002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl GetKeys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 1513.8586830570002 L 262.65276764333987 1513.8586830570002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,1513.8586830570002) translate(-240.92694725433986,-1513.8586830570002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 1502.8638346820003 L 240.92694725433986 1513.8586830570002 L 262.91664400433984 1524.8535314320002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="517.5077158524258" y="1553.4401372070004" width="221.41656548820313" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="521.4658612674258" y="1577.1890096970003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Keys (not to be held on state)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 1587.7440641370004 L 993.779229549715 1587.7440641370004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,1587.7440641370004) translate(-1015.5050499387149,-1587.7440641370004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 1576.7492157620004 L 1015.5050499387149 1587.7440641370004 L 993.5153531887149 1598.7389125120003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="1627.3255182870005" width="169.79168755851563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="1651.0743907770004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeOffer (continues)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 1661.6294452170005 L 1121.0555943387149 1661.6294452170005 L 1121.0555943387149 1695.9333721470005 L 1037.230870327715 1695.9333721470005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,1695.9333721470005) translate(-1015.5050499387149,-1695.9333721470005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1037.494746688715 1684.9385237720005 L 1015.5050499387149 1695.9333721470005 L 1037.494746688715 1706.9282205220004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="1735.5148262970004" width="51.11598260246094" height="34.30392693"/></g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="1761.9024623970004" width="100.82963616691406" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="1759.2636987870003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="1785.6513348870003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">peerd connect</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 1796.2063893270004 L 1121.0555943387149 1796.2063893270004 L 1121.0555943387149 1830.5103162570003 L 1037.230870327715 1830.5103162570003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,1830.5103162570003) translate(-1015.5050499387149,-1830.5103162570003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1037.494746688715 1819.5154678820004 L 1015.5050499387149 1830.5103162570003 L 1037.494746688715 1841.5051646320003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="581.6164805008633" y="1870.0917704070005" width="93.19903619132812" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="585.5746259158633" y="1893.8406428970004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeOffer</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 1904.3956973370005 L 262.65276764333987 1904.3956973370005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,1904.3956973370005) translate(-240.92694725433986,-1904.3956973370005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 1893.4008489620005 L 240.92694725433986 1904.3956973370005 L 262.91664400433984 1915.3905457120004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="272.15231663933986" y="1943.9771514870006" width="126.87829644523437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="276.11046205433985" y="1967.7260239770005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">create taker wallet</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 1978.2810784170006 L 346.4774916543399 1978.2810784170006 L 346.4774916543399 2012.5850053470006 L 262.65276764333987 2012.5850053470006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,2012.5850053470006) translate(-240.92694725433986,-2012.5850053470006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 2001.5901569720006 L 240.92694725433986 2012.5850053470006 L 262.91664400433984 2023.5798537220005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="570.8791987015469" y="2052.1664594970002" width="114.67359978996093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="574.8373441165469" y="2075.915331987" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl LaunchSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 2086.4703864270004 L 993.779229549715 2086.4703864270004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,2086.4703864270004) translate(-1015.5050499387149,-2086.4703864270004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 2075.4755380520005 L 1015.5050499387149 2086.4703864270004 L 993.5153531887149 2097.4652348020004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="827.6768187261564" y="2126.0518405770003" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="831.6349641411564" y="2149.8007130670003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 2160.3557675070006 L 993.779229549715 2160.3557675070006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,2160.3557675070006) translate(-1015.5050499387149,-2160.3557675070006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 2149.3609191320006 L 1015.5050499387149 2160.3557675070006 L 993.5153531887149 2171.3506158820005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="2199.9372216570005" width="98.36720330558593" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="2223.6860941470004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch syncer</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 2234.241148587 L 1121.0555943387149 2234.241148587 L 1121.0555943387149 2268.5450755170004 L 1037.230870327715 2268.5450755170004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,2268.5450755170004) translate(-1015.5050499387149,-2268.5450755170004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1037.494746688715 2257.5502271420005 L 1015.5050499387149 2268.5450755170004 L 1037.494746688715 2279.5399238920004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="810.5615690923673" y="2308.1265296670003" width="97.5440526708203" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="814.5197145073673" y="2331.8754021570003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 2342.4304565970006 L 724.8879613058399 2342.4304565970006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,2342.4304565970006) translate(-703.1621409168399,-2342.4304565970006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 2331.4356082220006 L 703.1621409168399 2342.4304565970006 L 725.1518376668399 2353.4253049720005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="966.080553547635" y="2382.0119107470005" width="126.02650506339843" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="970.038698962635" y="2405.7607832370004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg TakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 2416.3158376770007 L 1333.299650852828 2416.3158376770007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,2416.3158376770007) translate(-1355.0254712418282,-2416.3158376770007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1333.0357744918283 2405.3209893020007 L 1355.0254712418282 2416.3158376770007 L 1333.0357744918283 2427.3106860520006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1455.2531002906408" y="2455.8972918270006" width="126.02650506339843" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1459.2112457056407" y="2479.6461643170005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg TakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 2490.201218757001 L 1659.7814140138516 2490.201218757001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,2490.201218757001) translate(-1681.5072344028517,-2490.201218757001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1659.5175376528518 2479.206370382001 L 1681.5072344028517 2490.201218757001 L 1659.5175376528518 2501.1960671320007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1952.8301581996682" y="2529.7826729070007" width="127.6871648534375" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1956.7883036146682" y="2553.5315453970006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl BitcoinAddress</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 2564.086599837001 L 2330.114426460922 2564.086599837001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,2564.086599837001) translate(-2351.840246849922,-2564.086599837001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 2553.091751462001 L 2351.840246849922 2564.086599837001 L 2329.850550099922 2575.081448212001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1953.6604880946877" y="2603.668053987001" width="126.02650506339843" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1957.6186335096877" y="2627.4169264770007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg TakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 2637.971980917001 L 2330.114426460922 2637.971980917001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,2637.971980917001) translate(-2351.840246849922,-2637.971980917001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 2626.977132542001 L 2351.840246849922 2637.971980917001 L 2329.850550099922 2648.966829292001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2383.065616234922" y="2677.553435067001" width="135.0171666844922" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2387.023761649922" y="2701.302307557001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">create maker wallet</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 2711.8573619970007 L 2457.390791249922 2711.8573619970007 L 2457.390791249922 2746.161288927001 L 2373.566067238922 2746.161288927001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,2746.161288927001) translate(-2351.840246849922,-2746.161288927001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2373.829943599922 2735.166440552001 L 2351.840246849922 2746.161288927001 L 2373.829943599922 2757.156137302001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1959.3369407314065" y="2785.742743077001" width="114.67359978996093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1963.2950861464064" y="2809.4916155670007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl LaunchSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 2820.046670007001 L 1703.2330547918518 2820.046670007001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,2820.046670007001) translate(-1681.5072344028517,-2820.046670007001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 2809.051821632001 L 1681.5072344028517 2820.046670007001 L 1703.4969311528516 2831.041518382001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1755.9322955603127" y="2859.628124157001" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1759.8904409753127" y="2883.376996647001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 2893.932051087001 L 1703.2330547918518 2893.932051087001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,2893.932051087001) translate(-1681.5072344028517,-2893.932051087001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 2882.937202712001 L 1681.5072344028517 2893.932051087001 L 1703.4969311528516 2904.926899462001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1712.7326037878515" y="2933.513505237001" width="98.36720330558593" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028515" y="2957.262377727001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch syncer</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 2967.817432167001 L 1787.0577788028518 2967.817432167001 L 1787.0577788028518 3002.121359097001 L 1703.2330547918518 3002.121359097001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,3002.121359097001) translate(-1681.5072344028517,-3002.121359097001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 2991.126510722001 L 1681.5072344028517 3002.121359097001 L 1703.4969311528516 3013.116207472001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1736.37610506959" y="3041.702813247001" width="102.4259343846875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1740.33425048459" y="3065.451685737001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl MakeSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 3076.006740177001 L 1871.9450897320157 3076.006740177001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,3076.006740177001) translate(-1893.6709101210158,-3076.006740177001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1871.681213371016 3065.011891802001 L 1893.6709101210158 3076.006740177001 L 1871.681213371016 3087.001588552001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1558.8939972927892" y="3115.588194327001" width="130.90838677726563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1562.8521427077892" y="3139.337066817001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg MakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 3149.8921212570012 L 1376.7512916308283 3149.8921212570012" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,3149.8921212570012) translate(-1355.0254712418282,-3149.8921212570012)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1377.015167991828 3138.8972728820013 L 1355.0254712418282 3149.8921212570012 L 1377.015167991828 3160.886969632001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="963.6396126907014" y="3189.473575407001" width="130.90838677726563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="967.5977581057014" y="3213.222447897001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg MakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 3223.7775023370014 L 724.8879613058399 3223.7775023370014" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,3223.7775023370014) translate(-703.1621409168399,-3223.7775023370014)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 3212.7826539620014 L 703.1621409168399 3223.7775023370014 L 725.1518376668399 3234.7723507120013 Z"/></g></g><g><g><rect fill="white" stroke="none" x="329.69833847517975" y="3263.3589564870013" width="113.29206902824218" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="333.65648389017974" y="3287.107828977001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl WatchHeight</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3297.6628834170015 L 91.25242545076173 3297.6628834170015" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,3297.6628834170015) translate(-69.52660506176173,-3297.6628834170015)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 3286.6680350420015 L 69.52660506176173 3297.6628834170015 L 91.51630181176174 3308.6577317920014 Z"/></g></g><g><g><rect fill="white" stroke="none" x="246.16940018172272" y="3337.2443375670014" width="280.34994561515623" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="250.1275455967227" y="3360.9932100570013" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Watch Arbitrating Funding Address</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3371.5482644970016 L 91.25242545076173 3371.5482644970016" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,3371.5482644970016) translate(-69.52660506176173,-3371.5482644970016)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 3360.5534161220016 L 69.52660506176173 3371.5482644970016 L 91.51630181176174 3382.5431128720015 Z"/></g></g><g><g><rect fill="white" stroke="none" x="406.5903506969571" y="3411.1297186470015" width="130.90838677726563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="410.5484961119571" y="3434.8785911370014" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg MakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3445.4336455770017 L 262.65276764333987 3445.4336455770017" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,3445.4336455770017) translate(-240.92694725433986,-3445.4336455770017)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 3434.4387972020018 L 240.92694725433986 3445.4336455770017 L 262.91664400433984 3456.4284939520016 Z"/></g></g><g><g><rect fill="white" stroke="none" x="361.76218754998445" y="3485.0150997270016" width="220.56471307121095" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="365.72033296498444" y="3508.7639722170015" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl RevealProof (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 3519.319026657002 L 681.4363205278399 3519.319026657002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,3519.319026657002) translate(-703.1621409168399,-3519.319026657002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 3508.324178282002 L 703.1621409168399 3519.319026657002 L 681.1724441668399 3530.3138750320018 Z"/></g></g><g><g><rect fill="white" stroke="none" x="913.9224038283967" y="3558.9004808070017" width="230.342804501875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="917.8805492433967" y="3582.6493532970017" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3593.204407737002 L 1333.299650852828 3593.204407737002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,3593.204407737002) translate(-1355.0254712418282,-3593.204407737002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1333.0357744918283 3582.209559362002 L 1355.0254712418282 3593.204407737002 L 1333.0357744918283 3604.199256112002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="931.4420800368928" y="3632.785861887002" width="195.30345208488282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="935.4002254518928" y="3656.5347343770018" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3667.089788817002 L 1333.299650852828 3667.089788817002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,3667.089788817002) translate(-1355.0254712418282,-3667.089788817002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1333.0357744918283 3656.094940442002 L 1355.0254712418282 3667.089788817002 L 1333.0357744918283 3678.084637192002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1509.1767884304845" y="3706.671242967002" width="230.342804501875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1513.1349338454845" y="3730.420115457002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 3740.975169897002 L 1871.9450897320157 3740.975169897002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,3740.975169897002) translate(-1893.6709101210158,-3740.975169897002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1871.681213371016 3729.980321522002 L 1893.6709101210158 3740.975169897002 L 1871.681213371016 3751.970018272002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1979.885567836094" y="3780.556624047002" width="285.74002129875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1983.843713251094" y="3804.305496537002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg RevealProof (taker is sender) </text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 3814.8605509770023 L 2330.114426460922 3814.8605509770023" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,3814.8605509770023) translate(-2351.840246849922,-3814.8605509770023)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 3803.8657026020023 L 2351.840246849922 3814.8605509770023 L 2329.850550099922 3825.855399352002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1924.8962795060156" y="3854.442005127002" width="271.881867001875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1928.8544249210156" y="3878.190877617002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg RevealProof</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 3888.745932057002 L 1999.2214545210159 3888.745932057002 L 1999.2214545210159 3923.049858987002 L 1915.396730510016 3923.049858987002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,3923.049858987002) translate(-1893.6709101210158,-3923.049858987002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 3912.055010612002 L 1893.6709101210158 3923.049858987002 L 1915.6606068710157 3934.044707362002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1526.6964646389806" y="3962.631313137002" width="195.30345208488282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1530.6546100539806" y="3986.380185627002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 3996.9352400670023 L 1871.9450897320157 3996.9352400670023" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,3996.9352400670023) translate(-1893.6709101210158,-3996.9352400670023)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1871.681213371016 3985.9403916920023 L 1893.6709101210158 3996.9352400670023 L 1871.681213371016 4007.930088442002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1712.7326037878518" y="4036.516694217002" width="149.71293694816407" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028517" y="4060.265566707002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ask for funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4070.8206211470024 L 1703.2330547918518 4070.8206211470024" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,4070.8206211470024) translate(-1681.5072344028517,-4070.8206211470024)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 4059.8257727720024 L 1681.5072344028517 4070.8206211470024 L 1703.4969311528516 4081.8154695220023 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1924.8962795060156" y="4110.402075297002" width="236.84252984367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1928.8544249210156" y="4134.150947787002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg Reveal</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4144.7060022270025 L 1999.2214545210159 4144.7060022270025 L 1999.2214545210159 4179.009929157002 L 1915.396730510016 4179.009929157002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,4179.009929157002) translate(-1893.6709101210158,-4179.009929157002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 4168.015080782002 L 1893.6709101210158 4179.009929157002 L 1915.6606068710157 4190.004777532003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1999.441735438633" y="4218.591383307003" width="246.62768609367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2003.399880853633" y="4242.340255797003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4252.895310237002 L 2330.114426460922 4252.895310237002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,4252.895310237002) translate(-2351.840246849922,-4252.895310237002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 4241.900461862002 L 2351.840246849922 4252.895310237002 L 2329.850550099922 4263.890158612003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2166.0748293538672" y="4292.476764387003" width="113.29206902824218" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2170.0329747688675" y="4316.225636877003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl WatchHeight</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4326.7806913170025 L 2530.044997225961 4326.7806913170025" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,4326.7806913170025) translate(-2551.7708176149613,-4326.7806913170025)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 4315.785842942002 L 2551.7708176149613 4326.7806913170025 L 2529.7811208649614 4337.775539692003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2082.54589106041" y="4366.362145467003" width="280.34994561515623" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2086.5040364754104" y="4390.111017957003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Watch Arbitrating Funding Address</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4400.666072397003 L 2530.044997225961 4400.666072397003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,4400.666072397003) translate(-2551.7708176149613,-4400.666072397003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 4389.671224022002 L 2551.7708176149613 4400.666072397003 L 2529.7811208649614 4411.660920772003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2113.6374895711524" y="4440.247526547003" width="218.16674859367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2117.5956349861526" y="4463.996399037003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Arbitrating Funding event</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 4474.551453477003 L 1915.396730510016 4474.551453477003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,4474.551453477003) translate(-1893.6709101210158,-4474.551453477003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 4463.556605102002 L 1893.6709101210158 4474.551453477003 L 1915.6606068710157 4485.546301852003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2046.2813426774026" y="4514.132907627003" width="152.94847161613282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2050.2394880924026" y="4537.8817801170035" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Ctl Tx::Funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4548.436834557003 L 2330.114426460922 4548.436834557003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,4548.436834557003) translate(-2351.840246849922,-4548.436834557003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 4537.441986182002 L 2351.840246849922 4548.436834557003 L 2329.850550099922 4559.431682932003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2030.375832728672" y="4588.018288707003" width="184.75949151359376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2034.333978143672" y="4611.767161197004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Ctl FundingUpdated</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 4622.322215637003 L 1915.396730510016 4622.322215637003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,4622.322215637003) translate(-1893.6709101210158,-4622.322215637003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 4611.327367262003 L 1893.6709101210158 4622.322215637003 L 1915.6606068710157 4633.317064012003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1924.8962795060158" y="4661.903669787003" width="395.71859795890623" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1928.8544249210158" y="4685.652542277004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg RevealProof (taker is sender) </text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4696.207596717003 L 2330.114426460922 4696.207596717003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,4696.207596717003) translate(-2351.840246849922,-4696.207596717003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 4685.212748342003 L 2351.840246849922 4696.207596717003 L 2329.850550099922 4707.2024450920035 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1944.452462367344" y="4735.789050867003" width="356.60623223625" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1948.410607782344" y="4759.537923357004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4770.092977797003 L 2330.114426460922 4770.092977797003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,4770.092977797003) translate(-2351.840246849922,-4770.092977797003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 4759.098129422003 L 2351.840246849922 4770.092977797003 L 2329.850550099922 4781.087826172004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2008.4037868302346" y="4809.6744319470035" width="228.70358331046876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2012.3619322452346" y="4833.423304437004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 4843.978358877003 L 1915.396730510016 4843.978358877003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,4843.978358877003) translate(-1893.6709101210158,-4843.978358877003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 4832.983510502003 L 1893.6709101210158 4843.978358877003 L 1915.6606068710157 4854.973207252004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1505.1073533108556" y="4883.559813027004" width="238.48167474113282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1509.0654987258556" y="4907.308685517004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4917.863739957003 L 1376.7512916308283 4917.863739957003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,4917.863739957003) translate(-1355.0254712418282,-4917.863739957003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1377.015167991828 4906.868891582003 L 1355.0254712418282 4917.863739957003 L 1377.015167991828 4928.858588332004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1522.6270295193517" y="4957.445194107004" width="203.44232232414063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1526.5851749343517" y="4981.194066597004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4991.7491210370035 L 1376.7512916308283 4991.7491210370035" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,4991.7491210370035) translate(-1355.0254712418282,-4991.7491210370035)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1377.015167991828 4980.754272662003 L 1355.0254712418282 4991.7491210370035 L 1377.015167991828 5002.743969412004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="909.8529687087678" y="5031.330575187004" width="238.48167474113282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="913.8111141237678" y="5055.079447677004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 5065.634502117004 L 724.8879613058399 5065.634502117004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5065.634502117004) translate(-703.1621409168399,-5065.634502117004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 5054.639653742003 L 703.1621409168399 5065.634502117004 L 725.1518376668399 5076.629350492004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="327.141589710629" y="5105.215956267004" width="289.80590874992185" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="331.09973512562897" y="5128.964828757004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5139.519883197004 L 262.65276764333987 5139.519883197004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5139.519883197004) translate(-240.92694725433986,-5139.519883197004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5128.525034822003 L 240.92694725433986 5139.519883197004 L 262.91664400433984 5150.514731572004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="734.3875103018399" y="5179.101337347003" width="271.881867001875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="738.3456557168399" y="5202.850209837004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg RevealProof</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5213.405264277004 L 808.71268531684 5213.405264277004 L 808.71268531684 5247.709191207004 L 724.8879613058399 5247.709191207004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5247.709191207004) translate(-703.1621409168399,-5247.709191207004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 5236.714342832003 L 703.1621409168399 5247.709191207004 L 725.1518376668399 5258.704039582004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="927.3726449172639" y="5287.290645357004" width="203.44232232414063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="931.3307903322639" y="5311.039517847004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 5321.594572287004 L 724.8879613058399 5321.594572287004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5321.594572287004) translate(-703.1621409168399,-5321.594572287004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 5310.599723912003 L 703.1621409168399 5321.594572287004 L 725.1518376668399 5332.589420662004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="784.4771269536955" y="5361.176026437004" width="149.71293694816407" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="788.4352723686955" y="5384.9248989270045" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ask for funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5395.479953367004 L 993.779229549715 5395.479953367004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,5395.479953367004) translate(-1015.5050499387149,-5395.479953367004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 5384.4851049920035 L 1015.5050499387149 5395.479953367004 L 993.5153531887149 5406.474801742004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="734.3875103018399" y="5435.061407517003" width="236.84252984367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="738.3456557168399" y="5458.810280007004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg Reveal</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5469.365334447004 L 808.71268531684 5469.365334447004 L 808.71268531684 5503.669261377004 L 724.8879613058399 5503.669261377004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5503.669261377004) translate(-703.1621409168399,-5503.669261377004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 5492.674413002003 L 703.1621409168399 5503.669261377004 L 725.1518376668399 5514.664109752004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="344.66126591912507" y="5543.250715527004" width="254.7665563329297" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="348.61941133412506" y="5566.9995880170045" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5577.554642457004 L 262.65276764333987 5577.554642457004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5577.554642457004) translate(-240.92694725433986,-5577.554642457004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5566.5597940820035 L 240.92694725433986 5577.554642457004 L 262.91664400433984 5588.549490832004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="277.2609986924649" y="5617.136096607004" width="218.16674859367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="281.2191441074649" y="5640.884969097005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Arbitrating Funding event</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 5651.440023537004 L 681.4363205278399 5651.440023537004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5651.440023537004) translate(-703.1621409168399,-5651.440023537004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 5640.445175162004 L 703.1621409168399 5651.440023537004 L 681.1724441668399 5662.434871912004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="395.5703082775235" y="5691.021477687004" width="152.94847161613282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="399.5284536925235" y="5714.770350177005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Ctl Tx::Funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5725.325404617004 L 262.65276764333987 5725.325404617004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5725.325404617004) translate(-240.92694725433986,-5725.325404617004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5714.330556242004 L 240.92694725433986 5725.325404617004 L 262.91664400433984 5736.3202529920045 Z"/></g></g><g><g><rect fill="white" stroke="none" x="379.66479832879304" y="5764.906858767004" width="184.75949151359376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="383.62294374379303" y="5788.655731257005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Ctl FundingUpdated</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 5799.210785697004 L 681.4363205278399 5799.210785697004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5799.210785697004) translate(-703.1621409168399,-5799.210785697004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 5788.215937322004 L 703.1621409168399 5799.210785697004 L 681.1724441668399 5810.205634072005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="272.1523166393399" y="5838.792239847005" width="399.7844548925" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="276.1104620543399" y="5862.541112337005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5873.096166777004 L 262.65276764333987 5873.096166777004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5873.096166777004) translate(-240.92694725433986,-5873.096166777004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5862.101318402004 L 240.92694725433986 5873.096166777004 L 262.91664400433984 5884.091015152005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="289.67200047723054" y="5912.677620927005" width="364.74508721671873" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="293.63014589223053" y="5936.426493417005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5946.981547857004 L 262.65276764333987 5946.981547857004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5946.981547857004) translate(-240.92694725433986,-5946.981547857004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5935.986699482004 L 240.92694725433986 5946.981547857004 L 262.91664400433984 5957.976396232005 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 6008.112904822005 L 2611.80618195 6008.112904822005 M 13.19381805 6016.908783522004 L 2611.80618195 6016.908783522004 M 13.19381805 6025.704662222004 L 2611.80618195 6025.704662222004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1191.6453755610742 5986.563002007005 L 1433.3546244389258 5986.563002007005 L 1433.3546244389258 6047.254565037005 L 1191.6453755610742 6047.254565037005 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1228.5880661010742" y="6023.505692547004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Commit-Reveal Complete</text></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 6108.385922002005 L 2611.80618195 6108.385922002005 M 13.19381805 6117.181800702005 L 2611.80618195 6117.181800702005 M 13.19381805 6125.9776794020045 L 2611.80618195 6125.9776794020045" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 695.4003270381249 6086.836019187005 L 1929.599672961875 6086.836019187005 L 1929.599672961875 6147.527582217005 L 695.4003270381249 6147.527582217005 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="732.343017578125" y="6123.778709727005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Changing semantics: On Commit-Reveal, Maker and Taker were the key roles. From now on Bob or Alice are the key roles. Now t_ is bob_ on the left and m_ is alice_ on the right.</text></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 6208.658939182005 L 2611.80618195 6208.658939182005 M 13.19381805 6217.454817882005 L 2611.80618195 6217.454817882005 M 13.19381805 6226.250696582005 L 2611.80618195 6226.250696582005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1164.737744640664 6187.1090363670055 L 1460.262255359336 6187.1090363670055 L 1460.262255359336 6247.8005993970055 L 1164.737744640664 6247.8005993970055 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1201.680435180664" y="6224.051726907005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Swap setup: Bob is left, Alice right</text></g><g><g><rect fill="white" stroke="none" x="388.64119298211335" y="6287.382053547006" width="166.80670220695313" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="392.59933839711334" y="6311.130926037006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 6321.685980477006 L 681.4363205278399 6321.685980477006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,6321.685980477006) translate(-703.1621409168399,-6321.685980477006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 6310.691132102005 L 703.1621409168399 6321.685980477006 L 681.1724441668399 6332.680828852006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="308.9181184434415" y="6361.267434627006" width="154.85250909171876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="312.87626385844146" y="6385.016307117006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Arbitrating Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6395.571361557006 L 91.25242545076173 6395.571361557006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,6395.571361557006) translate(-69.52660506176173,-6395.571361557006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 6384.576513182005 L 69.52660506176173 6395.571361557006 L 91.51630181176174 6406.566209932006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="337.0283326768399" y="6435.152815707006" width="98.63208062492187" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="340.9864780918399" y="6458.9016881970065" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Cancel</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6469.456742637006 L 91.25242545076173 6469.456742637006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,6469.456742637006) translate(-69.52660506176173,-6469.456742637006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 6458.461894262005 L 69.52660506176173 6469.456742637006 L 91.51630181176174 6480.451591012006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="336.20871445174225" y="6509.038196787006" width="100.27131707511718" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="340.16685986674224" y="6532.787069277007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Refund</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6543.342123717006 L 91.25242545076173 6543.342123717006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,6543.342123717006) translate(-69.52660506176173,-6543.342123717006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 6532.347275342006 L 69.52660506176173 6543.342123717006 L 91.51630181176174 6554.336972092006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="940.8014092605256" y="6582.923577867006" width="176.5847936376172" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="944.7595546755256" y="6606.672450357007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6617.227504797006 L 1333.299650852828 6617.227504797006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,6617.227504797006) translate(-1355.0254712418282,-6617.227504797006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1333.0357744918283 6606.232656422006 L 1355.0254712418282 6617.227504797006 L 1333.0357744918283 6628.2223531720065 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1536.0557938626134" y="6656.808958947006" width="176.5847936376172" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1540.0139392776134" y="6680.557831437007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 6691.112885877006 L 1871.9450897320157 6691.112885877006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,6691.112885877006) translate(-1893.6709101210158,-6691.112885877006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1871.681213371016 6680.118037502006 L 1893.6709101210158 6691.112885877006 L 1871.681213371016 6702.107734252007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2145.294609322129" y="6730.694340027007" width="154.85250909171876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2149.252754737129" y="6754.443212517007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Arbitrating Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 6764.998266957006 L 2530.044997225961 6764.998266957006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,6764.998266957006) translate(-2551.7708176149613,-6764.998266957006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 6754.003418582006 L 2551.7708176149613 6764.998266957006 L 2529.7811208649614 6775.993115332007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2173.4048235555274" y="6804.579721107007" width="98.63208062492187" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2177.3629689705276" y="6828.328593597007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Cancel</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 6838.883648037006 L 2530.044997225961 6838.883648037006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,6838.883648037006) translate(-2551.7708176149613,-6838.883648037006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 6827.888799662006 L 2551.7708176149613 6838.883648037006 L 2529.7811208649614 6849.878496412007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2172.5852053304297" y="6878.465102187007" width="100.27131707511718" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2176.54335074543" y="6902.213974677007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Refund</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 6912.7690291170065 L 2530.044997225961 6912.7690291170065" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,6912.7690291170065) translate(-2551.7708176149613,-6912.7690291170065)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 6901.774180742006 L 2551.7708176149613 6912.7690291170065 L 2529.7811208649614 6923.763877492007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2034.4631816666604" y="6952.350483267007" width="176.5847936376172" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2038.4213270816604" y="6976.099355757007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 6986.654410197007 L 2330.114426460922 6986.654410197007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,6986.654410197007) translate(-2351.840246849922,-6986.654410197007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 6975.659561822006 L 2351.840246849922 6986.654410197007 L 2329.850550099922 6997.649258572007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2383.065616234922" y="7026.235864347006" width="129.33355767570313" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2387.023761649922" y="7049.9847368370065" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Checkpoint Alice 0</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 7060.539791277007 L 2457.390791249922 7060.539791277007 L 2457.390791249922 7094.8437182070065 L 2373.566067238922 7094.8437182070065" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="10.555054440000001"/><g transform="translate(2351.840246849922,7094.8437182070065) translate(-2351.840246849922,-7094.8437182070065)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2373.829943599922 7083.848869832006 L 2351.840246849922 7094.8437182070065 L 2373.829943599922 7105.838566582007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2015.3042766373635" y="7134.425172357007" width="214.90260369621095" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2019.2624220523635" y="7158.174044847007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 7168.729099287007 L 1915.396730510016 7168.729099287007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,7168.729099287007) translate(-1893.6709101210158,-7168.729099287007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 7157.734250912006 L 1893.6709101210158 7168.729099287007 L 1915.6606068710157 7179.723947662007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1512.0078431179845" y="7208.310553437007" width="224.680695126875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1515.9659885329845" y="7232.059425927007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 7242.614480367007 L 1376.7512916308283 7242.614480367007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,7242.614480367007) translate(-1355.0254712418282,-7242.614480367007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1377.015167991828 7231.619631992006 L 1355.0254712418282 7242.614480367007 L 1377.015167991828 7253.609328742007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="916.7534585158967" y="7282.195934517007" width="224.680695126875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="920.7116039308967" y="7305.9448070070075" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 7316.499861447007 L 724.8879613058399 7316.499861447007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,7316.499861447007) translate(-703.1621409168399,-7316.499861447007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 7305.5050130720065 L 703.1621409168399 7316.499861447007 L 725.1518376668399 7327.494709822007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="359.7041965221524" y="7356.081315597007" width="224.680695126875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="363.6623419371524" y="7379.830188087008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 7390.385242527007 L 262.65276764333987 7390.385242527007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,7390.385242527007) translate(-240.92694725433986,-7390.385242527007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 7379.390394152007 L 240.92694725433986 7390.385242527007 L 262.91664400433984 7401.380090902007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="359.7149310802579" y="7429.966696677007" width="224.65922601066407" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="363.6730764952579" y="7453.715569167008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Datum::SignedArbitratingLock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 7464.270623607007 L 681.4363205278399 7464.270623607007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,7464.270623607007) translate(-703.1621409168399,-7464.270623607007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 7453.275775232007 L 703.1621409168399 7464.270623607007 L 681.1724441668399 7475.2654719820075 Z"/></g></g><g><g><rect fill="white" stroke="none" x="272.15231663933986" y="7503.852077757007" width="123.6428075536328" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="276.11046205433985" y="7527.600950247007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Checkpoint Bob 0</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 7538.156004687007 L 346.4774916543399 7538.156004687007 L 346.4774916543399 7572.459931617007 L 262.65276764333987 7572.459931617007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="10.555054440000001"/><g transform="translate(240.92694725433986,7572.459931617007) translate(-240.92694725433986,-7572.459931617007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 7561.465083242007 L 240.92694725433986 7572.459931617007 L 262.91664400433984 7583.454779992007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="379.2639651989102" y="7612.041385767007" width="185.56115777335938" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="383.2221106139102" y="7635.790258257008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 7646.345312697007 L 681.4363205278399 7646.345312697007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,7646.345312697007) translate(-703.1621409168399,-7646.345312697007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 7635.350464322007 L 703.1621409168399 7646.345312697007 L 681.1724441668399 7657.3401610720075 Z"/></g></g><g><g><rect fill="white" stroke="none" x="296.41991898055085" y="7685.9267668470075" width="179.8489080175" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="300.37806439555084" y="7709.675639337008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast Arbitrating Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 7720.230693777007 L 91.25242545076173 7720.230693777007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,7720.230693777007) translate(-69.52660506176173,-7720.230693777007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 7709.235845402007 L 69.52660506176173 7720.230693777007 L 91.51630181176174 7731.225542152008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="309.32255264754303" y="7759.812147927008" width="154.04364068351563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="313.280698062543" y="7783.561020417008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Accordant Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 7794.116074857007 L 91.25242545076173 7794.116074857007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,7794.116074857007) translate(-69.52660506176173,-7794.116074857007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 7783.121226482007 L 69.52660506176173 7794.116074857007 L 91.51630181176174 7805.110923232008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="347.2144441270352" y="7833.697529007008" width="78.25985772453124" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="351.1725895420352" y="7857.446401497008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 7868.001455937007 L 91.25242545076173 7868.001455937007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,7868.001455937007) translate(-69.52660506176173,-7868.001455937007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 7857.006607562007 L 69.52660506176173 7868.001455937007 L 91.51630181176174 7878.996304312008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="315.976101841879" y="7907.582910087008" width="140.73654229484376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="319.93424725687896" y="7931.331782577008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Arbitrating Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 7941.886837017008 L 681.4363205278399 7941.886837017008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,7941.886837017008) translate(-703.1621409168399,-7941.886837017008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 7930.891988642007 L 703.1621409168399 7941.886837017008 L 681.1724441668399 7952.881685392008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2152.3525927205665" y="7907.582910087008" width="140.73654229484376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2156.3107381355667" y="7931.331782577008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Arbitrating Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 7941.886837017008 L 1915.396730510016 7941.886837017008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,7941.886837017008) translate(-1893.6709101210158,-7941.886837017008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 7930.891988642007 L 1893.6709101210158 7941.886837017008 L 1915.6606068710157 7952.881685392008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2145.6990435262305" y="7981.468291167008" width="154.04364068351563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2149.6571889412307" y="8005.217163657008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Accordant Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 8015.772218097008 L 2530.044997225961 8015.772218097008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,8015.772218097008) translate(-2551.7708176149613,-8015.772218097008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 8004.777369722007 L 2551.7708176149613 8015.772218097008 L 2529.7811208649614 8026.767066472008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2152.757026924668" y="8055.353672247008" width="139.92767388664063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2156.7151723396682" y="8079.102544737008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Accordant Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 8089.657599177008 L 1915.396730510016 8089.657599177008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,8089.657599177008) translate(-1893.6709101210158,-8089.657599177008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 8078.662750802007 L 1893.6709101210158 8089.657599177008 L 1915.6606068710157 8100.652447552008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="316.38053604598053" y="8055.353672247008" width="139.92767388664063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="320.3386814609805" y="8079.102544737008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Accordant Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 8089.657599177008 L 681.4363205278399 8089.657599177008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,8089.657599177008) translate(-703.1621409168399,-8089.657599177008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 8078.662750802007 L 703.1621409168399 8089.657599177008 L 681.1724441668399 8100.652447552008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="931.4241814773225" y="8129.239053327008" width="195.33924920402345" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="935.3823268923225" y="8152.9879258170085" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 8163.542980257008 L 1333.299650852828 8163.542980257008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,8163.542980257008) translate(-1355.0254712418282,-8163.542980257008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1333.0357744918283 8152.5481318820075 L 1355.0254712418282 8163.542980257008 L 1333.0357744918283 8174.537828632008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1526.6785660794103" y="8203.124434407007" width="195.33924920402345" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1530.6367114944103" y="8226.873306897007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 8237.428361337008 L 1871.9450897320157 8237.428361337008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,8237.428361337008) translate(-1893.6709101210158,-8237.428361337008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1871.681213371016 8226.433512962009 L 1893.6709101210158 8237.428361337008 L 1871.681213371016 8248.423209712008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2183.5909350057227" y="8277.009815487007" width="78.25985772453124" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2187.549080420723" y="8300.758687977006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 8311.313742417007 L 2530.044997225961 8311.313742417007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,8311.313742417007) translate(-2551.7708176149613,-8311.313742417007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 8300.318894042008 L 2551.7708176149613 8311.313742417007 L 2529.7811208649614 8322.308590792007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2025.0859538834573" y="8350.895196567006" width="195.33924920402345" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2029.0440992984572" y="8374.644069057005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 8385.199123497006 L 2330.114426460922 8385.199123497006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,8385.199123497006) translate(-2351.840246849922,-8385.199123497006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 8374.204275122007 L 2351.840246849922 8385.199123497006 L 2329.850550099922 8396.193971872006 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 8446.330480462006 L 2611.80618195 8446.330480462006 M 13.19381805 8455.126359162006 L 2611.80618195 8455.126359162006 M 13.19381805 8463.922237862007 L 2611.80618195 8463.922237862007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1202.6224644892968 8424.780577647005 L 1422.3775355107032 8424.780577647005 L 1422.3775355107032 8485.472140677006 L 1202.6224644892968 8485.472140677006 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1239.5651550292969" y="8461.723268187006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Swap Setup Complete</text></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 8546.603497642005 L 2611.80618195 8546.603497642005 M 13.19381805 8555.399376342006 L 2611.80618195 8555.399376342006 M 13.19381805 8564.195255042006 L 2611.80618195 8564.195255042006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1154.555226635293 8525.053594827004 L 1470.444773364707 8525.053594827004 L 1470.444773364707 8585.745157857005 L 1154.555226635293 8585.745157857005 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1191.497917175293" y="8561.996285367006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Buy Procedure: Bob is left, Alice right</text></g><g><g><rect fill="white" stroke="none" x="2065.830384425449" y="8625.326612007004" width="113.85038812003906" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2069.7885298404494" y="8649.075484497003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Fully signed buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 8659.630538937005 L 1915.396730510016 8659.630538937005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,8659.630538937005) translate(-1893.6709101210158,-8659.630538937005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 8648.635690562005 L 1893.6709101210158 8659.630538937005 L 1915.6606068710157 8670.625387312004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2171.905189766465" y="8699.211993087003" width="101.63134820304687" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2175.863335181465" y="8722.960865577003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 8733.515920017004 L 2530.044997225961 8733.515920017004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,8733.515920017004) translate(-2551.7708176149613,-8733.515920017004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 8722.521071642004 L 2551.7708176149613 8733.515920017004 L 2529.7811208649614 8744.510768392003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2123.823593391953" y="8773.097374167002" width="197.79454095207032" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2127.7817388069534" y="8796.846246657002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: buy seen on mempool</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 8807.401301097003 L 1915.396730510016 8807.401301097003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,8807.401301097003) translate(-1893.6709101210158,-8807.401301097003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 8796.406452722003 L 1893.6709101210158 8807.401301097003 L 1915.6606068710157 8818.396149472002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="287.4471025132657" y="8773.097374167002" width="197.79454095207032" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="291.4052479282657" y="8796.846246657002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: buy seen on mempool</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 8807.401301097003 L 681.4363205278399 8807.401301097003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,8807.401301097003) translate(-703.1621409168399,-8807.401301097003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 8796.406452722003 L 703.1621409168399 8807.401301097003 L 681.1724441668399 8818.396149472002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="412.27038914910554" y="8846.982755247001" width="119.54830987296874" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="416.22853456410553" y="8870.731627737001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Buy signature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 8881.286682177002 L 262.65276764333987 8881.286682177002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,8881.286682177002) translate(-240.92694725433986,-8881.286682177002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 8870.291833802003 L 240.92694725433986 8881.286682177002 L 262.91664400433984 8892.281530552002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="272.15231663933986" y="8920.868136327003" width="159.46952874503907" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="276.11046205433985" y="8944.617008817002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">recover accordant keys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 8955.172063257001 L 346.4774916543399 8955.172063257001 L 346.4774916543399 8989.475990187002 L 262.65276764333987 8989.475990187002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,8989.475990187002) translate(-240.92694725433986,-8989.475990187002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 8978.481141812003 L 240.92694725433986 8989.475990187002 L 262.91664400433984 9000.470838562002 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 9050.607347152001 L 2611.80618195 9050.607347152001 M 13.19381805 9059.403225852002 L 2611.80618195 9059.403225852002 M 13.19381805 9068.199104552003 L 2611.80618195 9068.199104552003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 946.9462254756249 9029.057444337 L 1678.053774524375 9029.057444337 L 1678.053774524375 9089.749007367001 L 946.9462254756249 9089.749007367001 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="983.888916015625" y="9066.000134877002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Cancel Init t &gt; t0: Bob is left, Alice right, either have a fully signed and valid cancel tx, and can publish</text></g><g><g><rect fill="white" stroke="none" x="331.46284195418366" y="9129.330461517" width="109.76306207023437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="335.42098736918365" y="9153.079334007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Cancel valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 9163.634388447 L 681.4363205278399 9163.634388447" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,9163.634388447) translate(-703.1621409168399,-9163.634388447)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 9152.639540072001 L 703.1621409168399 9163.634388447 L 681.1724441668399 9174.629236822 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2167.839332832871" y="9129.330461517" width="109.76306207023437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2171.7974782478714" y="9153.079334007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Cancel valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 9163.634388447 L 1915.396730510016 9163.634388447" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,9163.634388447) translate(-1893.6709101210158,-9163.634388447)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 9152.639540072001 L 1893.6709101210158 9163.634388447 L 1915.6606068710157 9174.629236822 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2124.6575548787696" y="9203.215842597" width="196.1266179784375" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2128.61570029377" y="9226.964715086999" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast cancel (Alice inits)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 9237.519769527 L 2530.044997225961 9237.519769527" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,9237.519769527) translate(-2551.7708176149613,-9237.519769527)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 9226.524921152 L 2551.7708176149613 9237.519769527 L 2529.7811208649614 9248.514617902 Z"/></g></g><g><g><rect fill="white" stroke="none" x="291.12643906111725" y="9203.215842597" width="190.4358678563672" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="295.08458447611724" y="9226.964715086999" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast cancel (Bob inits)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 9237.519769527 L 91.25242545076173 9237.519769527" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,9237.519769527) translate(-69.52660506176173,-9237.519769527)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 9226.524921152 L 69.52660506176173 9237.519769527 L 91.51630181176174 9248.514617902 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 9298.651126492 L 2611.80618195 9298.651126492 M 13.19381805 9307.447005192 L 2611.80618195 9307.447005192 M 13.19381805 9316.242883892 L 2611.80618195 9316.242883892" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1131.527310680703 9277.101223676998 L 1493.472689319297 9277.101223676998 L 1493.472689319297 9337.792786707 L 1131.527310680703 9337.792786707 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1168.4700012207031" y="9314.043914217" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Cancel detected t &gt; t0: Bob is left, Alice right</text></g><g><g><rect fill="white" stroke="none" x="324.9345750474454" y="9377.374240856998" width="122.81959588371093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="328.89272046244537" y="9401.123113346997" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event cancel final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 9411.678167786999 L 681.4363205278399 9411.678167786999" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,9411.678167786999) translate(-703.1621409168399,-9411.678167786999)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 9400.683319411999 L 703.1621409168399 9411.678167786999 L 681.1724441668399 9422.673016161998 Z"/></g></g><g><g><rect fill="white" stroke="none" x="326.56306168074616" y="9451.259621936997" width="119.56262261710937" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="330.52120709574615" y="9475.008494426997" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast refund</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 9485.563548866998 L 91.25242545076173 9485.563548866998" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,9485.563548866998) translate(-69.52660506176173,-9485.563548866998)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 9474.568700491998 L 69.52660506176173 9485.563548866998 L 91.51630181176174 9496.558397241997 Z"/></g></g><g><g><rect fill="white" stroke="none" x="320.8543977403165" y="9525.145003016996" width="130.97995049796876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="324.81254315531646" y="9548.893875506996" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: refund seen</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 9559.448929946997 L 681.4363205278399 9559.448929946997" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,9559.448929946997) translate(-703.1621409168399,-9559.448929946997)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 9548.454081571997 L 703.1621409168399 9559.448929946997 L 681.1724441668399 9570.443778321996 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2157.230888619004" y="9525.145003016996" width="130.97995049796876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2161.189034034004" y="9548.893875506996" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: refund seen</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 9559.448929946997 L 1915.396730510016 9559.448929946997" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,9559.448929946997) translate(-1893.6709101210158,-9559.448929946997)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 9548.454081571997 L 1893.6709101210158 9559.448929946997 L 1915.6606068710157 9570.443778321996 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2064.212617091465" y="9599.030384096995" width="117.0859227880078" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2068.170762506465" y="9622.779256586995" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Tx::Refund tx</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 9633.334311026996 L 2330.114426460922 9633.334311026996" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,9633.334311026996) translate(-2351.840246849922,-9633.334311026996)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 9622.339462651997 L 2351.840246849922 9633.334311026996 L 2329.850550099922 9644.329159401996 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2383.065616234922" y="9672.915765176997" width="159.46952874503907" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2387.023761649922" y="9696.664637666996" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">recover accordant keys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 9707.219692106995 L 2457.390791249922 9707.219692106995 L 2457.390791249922 9741.523619036996 L 2373.566067238922 9741.523619036996" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,9741.523619036996) translate(-2351.840246849922,-9741.523619036996)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2373.829943599922 9730.528770661997 L 2351.840246849922 9741.523619036996 L 2373.829943599922 9752.518467411996 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 9802.654976001995 L 2611.80618195 9802.654976001995 M 13.19381805 9811.450854701996 L 2611.80618195 9811.450854701996 M 13.19381805 9820.246733401997 L 2611.80618195 9820.246733401997" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1188.3633549922265 9781.105073186995 L 1436.6366450077735 9781.105073186995 L 1436.6366450077735 9841.796636216995 L 1188.3633549922265 9841.796636216995 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1225.3060455322266" y="9818.047763726996" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve"> Punish process t &gt; t1 &gt; t0 </text></g><g><g><rect fill="white" stroke="none" x="2146.2394869466407" y="9881.378090366994" width="152.96275384269532" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2150.197632361641" y="9905.126962856993" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Event: punish valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 9915.682017296995 L 1915.396730510016 9915.682017296995" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,9915.682017296995) translate(-1893.6709101210158,-9915.682017296995)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 9904.687168921995 L 1893.6709101210158 9915.682017296995 L 1915.6606068710157 9926.676865671994 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2046.2742015641213" y="9955.263471446993" width="152.96275384269532" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2050.2323469791213" y="9979.012343936993" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Event: punish valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 9989.567398376994 L 2330.114426460922 9989.567398376994" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,9989.567398376994) translate(-2351.840246849922,-9989.567398376994)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 9978.572550001994 L 2351.840246849922 9989.567398376994 L 2329.850550099922 10000.562246751993 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2383.065616234922" y="10029.148852526994" width="112.22546441398437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2387.023761649922" y="10052.897725016994" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">fully sign punish</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 10063.452779456993 L 2457.390791249922 10063.452779456993 L 2457.390791249922 10097.756706386994 L 2373.566067238922 10097.756706386994" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,10097.756706386994) translate(-2351.840246849922,-10097.756706386994)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2373.829943599922 10086.761858011994 L 2351.840246849922 10097.756706386994 L 2373.829943599922 10108.751554761993 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2073.1746837418555" y="10137.338160536992" width="99.16178948722656" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2077.1328291568557" y="10161.087033026992" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Tx::Punish</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 10171.642087466993 L 1915.396730510016 10171.642087466993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,10171.642087466993) translate(-1893.6709101210158,-10171.642087466993)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 10160.647239091993 L 1893.6709101210158 10171.642087466993 L 1915.6606068710157 10182.636935841992 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2143.390526070176" y="10211.223541616991" width="158.660675595625" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2147.348671485176" y="10234.972414106991" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Broadcast punish tx</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 10245.527468546992 L 2530.044997225961 10245.527468546992" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,10245.527468546992) translate(-2551.7708176149613,-10245.527468546992)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 10234.532620171993 L 2551.7708176149613 10245.527468546992 L 2529.7811208649614 10256.522316921992 Z"/></g></g></g><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/></g></svg>
\ No newline at end of file
diff --git a/doc/sequencediagram.txt b/doc/sequencediagram.txt
index e4db6752f..3edf6179e 100644
--- a/doc/sequencediagram.txt
+++ b/doc/sequencediagram.txt
@@ -49,6 +49,7 @@ m_farcasterd -> m_swap : Ctl MakeSwap
 
 m_swap -> peerd : Msg MakerCommit
 t_swap <- peerd : Msg MakerCommit
+// TODO: verify that swapd launches no matter what
 t_syncer <- t_swap : Ctl WatchHeight
 t_syncer <- t_swap : if Bob, Watch Arbitrating Funding Address
 t_swap -> t_wallet : Msg MakerCommit
@@ -89,33 +90,38 @@ t_swap -> t_wallet : if Bob, SEND PENDING Msg Reveal (maker is sender)
 ==Changing semantics: On Commit-Reveal, Maker and Taker were the key roles. From now on Bob or Alice are the key roles. Now t_ is bob_ on the left and m_ is alice_ on the right.==
 ==Swap setup: Bob is left, Alice right==
 t_wallet -> t_swap : Ctl CoreArbitratingSetup
+// TODO: During replay of Checkpoint Bob 0, Bob has to rewatch these 3 txs
 t_syncer <- t_swap : Watch Arbitrating Lock
 t_syncer <- t_swap : Watch Cancel
 t_syncer <- t_swap : Watch Refund
 peerd <- t_swap : Msg CoreArbitratingSetup
 m_swap <- peerd : Msg CoreArbitratingSetup
 m_swap -> m_syncer : Watch Arbitrating Lock
+// TODO: During replay of Checkpoint Alice 0, Alice has to rewatch these 2 txs (arbitrating already final then)
 m_swap -> m_syncer : Watch Cancel
 m_swap -> m_syncer : Watch Refund
 
 m_wallet <- m_swap : Msg CoreArbitratingSetup
+m_wallet --> m_wallet : Checkpoint Alice 0
 m_wallet -> m_swap : Ctl RefundProcedureSignatures
 m_swap -> peerd : Msg RefundProcedureSignatures
 peerd -> t_swap : Msg RefundProcedureSignatures
 t_wallet <- t_swap : Msg RefundProcedureSignatures
 t_wallet -> t_swap:Ctl Datum::SignedArbitratingLock
+// DONE: do we know that same inputs are being used in case of replay?
+// -> yes, but create different sig
+t_wallet --> t_wallet : Checkpoint Bob 0
 t_wallet -> t_swap : Ctl BuyProcedureSignature
 t_syncer <- t_swap : Broadcast Arbitrating Lock
 t_swap -> t_syncer : Watch Accordant Lock
 t_swap -> t_syncer : Watch Buy
-t_swap --> t_swap : Checkpoint Bob 0
 
 parallel
 t_syncer ->  t_swap : Arbitrating Lock final
+// TODO: maybe instead of checkpointing earlier, reach this stage via a message from walletd in lieu of the syncer
 m_swap <- m_syncer : Arbitrating Lock final
 parallel off
 
-m_swap --> m_swap : Checkpoint Alice 0
 m_swap -> m_syncer : Watch Accordant Lock
 
 parallel
@@ -140,6 +146,7 @@ t_wallet <- t_swap : Ctl Buy signature
 t_wallet -> t_wallet : recover accordant keys
 
 ==Cancel Init t > t0: Bob is left, Alice right, either have a fully signed and valid cancel tx, and can publish==
+// TODO: insert Ctl Tx::Cancel from wallet to swap (or do it after CoreArbitratingSetup, as in the code atm)
 parallel
 t_swap <- t_syncer : Ctl Cancel valid
 m_swap <- m_syncer : Ctl Cancel valid
@@ -159,8 +166,10 @@ m_swap -> m_wallet : Ctl Tx::Refund tx
 m_wallet -> m_wallet : recover accordant keys
 
 == Punish process t > t1 > t0 ==
+// TODO: none of this is true except last step
 m_swap<-m_syncer:Ctl Event: punish valid
 m_swap->m_wallet:Ctl Event: punish valid
 m_wallet->m_wallet:fully sign punish
+// TODO: in the code, this actually already happens after CoreArbitratingSetup - think about this and move either this or that
 m_swap<-m_wallet:Ctl Tx::Punish
 m_swap->m_syncer:Ctl Broadcast punish tx

From 3637bded2f5889404fff1a7bb7243ff2bcebcf98 Mon Sep 17 00:00:00 2001
From: Robert Hambrock <roberthambrock@gmail.com>
Date: Wed, 4 May 2022 19:22:46 +0200
Subject: [PATCH 08/32] dummy write state after receiving refund sigs

---
 src/swapd/runtime.rs   |   3 ++
 src/walletd/runtime.rs | 102 +++++++++++++++++++++++++++++++++--------
 2 files changed, 86 insertions(+), 19 deletions(-)

diff --git a/src/swapd/runtime.rs b/src/swapd/runtime.rs
index 0a6106558..ea56251c3 100644
--- a/src/swapd/runtime.rs
+++ b/src/swapd/runtime.rs
@@ -2084,6 +2084,7 @@ impl Runtime {
                         );
                         let txlabel = self.syncer_state.tasks.watched_txs.get(id).unwrap();
                         // saving requests of interest for later replaying latest event
+                        // TODO MAYBE: refactor this block into following TxLabel match as an outer block with inner matching again
                         match &txlabel {
                             TxLabel::Lock => {
                                 self.syncer_state.lock_tx_confs = Some(request.clone());
@@ -2105,6 +2106,7 @@ impl Runtime {
                                     && self.state.remote_params().is_some()
                                     && !self.syncer_state.acc_lock_watched() =>
                             {
+                                // TODO: implement state management here?
                                 if let (
                                     Some(Params::Alice(alice_params)),
                                     Some(Params::Bob(bob_params)),
@@ -2528,6 +2530,7 @@ impl Runtime {
                 self.state_update(endpoints, next_state)?;
             }
 
+            // TODO: checkpoint here or in caller of this
             Request::Tx(Tx::Lock(btc_lock)) if self.state.b_core_arb() => {
                 log_tx_received(self.swap_id, TxLabel::Lock);
                 self.broadcast(btc_lock, TxLabel::Lock, endpoints)?;
diff --git a/src/walletd/runtime.rs b/src/walletd/runtime.rs
index 565f99bca..d59577d5a 100644
--- a/src/walletd/runtime.rs
+++ b/src/walletd/runtime.rs
@@ -786,6 +786,24 @@ impl Runtime {
             })) => {
                 let swap_id = get_swap_id(&source)?;
                 let my_id = self.identity();
+                // let j = self.wallets.get(&swap_id).unwrap();
+                // let k: Result<BobState, _> = (*j).try_into();
+                let mut writer = vec![];
+                // TODO: checkpointing before .get_mut call for now, but should do this later
+                if let Some(Wallet::Bob(state)) = self.wallets.get(&swap_id) {
+                    let state_size = state.consensus_encode(&mut writer);
+                    // info!("writer content: {:?}", writer);
+                    info!("state size: {:?}", state_size);
+                    let path = std::env::current_dir().unwrap();
+                    let mut state = CheckpointGetSet::new(path.to_path_buf());
+                    state.set_state(&swap_id, &writer);
+                } else {
+                    error!(
+                        "{:#} | Unknown wallet and swap_id {:#}",
+                        swap_id.bright_blue_italic(),
+                        swap_id.bright_white_bold(),
+                    );
+                };
                 if let Some(Wallet::Bob(BobState {
                     bob,
                     local_params,
@@ -809,24 +827,49 @@ impl Runtime {
                     )?;
 
                     // *refund_sigs = Some(refund_proc_sigs);
-                    {
-                        let signed_arb_lock =
-                            bob.sign_arbitrating_lock(key_manager, core_arb_txs)?;
-                        let sig = signed_arb_lock.lock_sig;
-                        let tx = core_arb_setup.lock.clone();
-                        let mut lock_tx = LockTx::from_partial(tx);
-                        let lock_pubkey = key_manager.get_pubkey(ArbitratingKeyId::Lock)?;
-                        lock_tx.add_witness(lock_pubkey, sig)?;
-                        let finalized_lock_tx =
-                            Broadcastable::<BitcoinSegwitV0>::finalize_and_extract(&mut lock_tx)?;
+                    let signed_arb_lock = bob.sign_arbitrating_lock(key_manager, core_arb_txs)?;
+                    let sig = signed_arb_lock.lock_sig;
+                    let tx = core_arb_setup.lock.clone();
+                    let mut lock_tx = LockTx::from_partial(tx);
+                    let lock_pubkey = key_manager.get_pubkey(ArbitratingKeyId::Lock)?;
+                    lock_tx.add_witness(lock_pubkey, sig)?;
+                    let finalized_lock_tx: bitcoin::Transaction =
+                        Broadcastable::<BitcoinSegwitV0>::finalize_and_extract(&mut lock_tx)?;
 
-                        endpoints.send_to(
-                            ServiceBus::Ctl,
-                            my_id.clone(),
-                            source.clone(), // destination swapd
-                            Request::Tx(request::Tx::Lock(finalized_lock_tx)),
-                        )?;
-                    }
+                    // TODO: checkpoint here
+                    // {
+                    //     struct RecoveryState {
+                    //         swap_index: u32,
+                    //         params: (AliceParameters<BtcXmr>, BobParameters<BtcXmr>),
+                    //         txs: (
+                    //             PartiallySignedTransaction,
+                    //             PartiallySignedTransaction,
+                    //             bitcoin::Transaction,
+                    //         ),
+                    //     }
+
+                    //     let state = RecoveryState {
+                    //         swap_index: key_manager.get_swap_index(),
+                    //         params: (remote_params.clone(), local_params.clone()),
+                    //         txs: (
+                    //             core_arb_txs.lock.clone(),
+                    //             core_arb_txs.cancel.clone(),
+                    //             finalized_lock_tx.clone(),
+                    //         ),
+                    //     };
+
+                    //     {
+                    //         let _recovered_key_manager =
+                    //             KeyManager::new(self.node_secrets.wallet_seed, state.swap_index);
+                    //     }
+                    // }
+
+                    endpoints.send_to(
+                        ServiceBus::Ctl,
+                        my_id.clone(),
+                        source.clone(), // destination swapd
+                        Request::Tx(request::Tx::Lock(finalized_lock_tx)),
+                    )?;
 
                     {
                         if adaptor_buy.is_some() {
@@ -953,10 +996,11 @@ impl Runtime {
                         signed_adaptor_refund,
                     ));
                     *alice_cancel_signature = Some(refund_proc_signatures.cancel_sig);
+                    // NOTE: if this is the right spot for the Ctl message, it should also be replayed upon state recovery
                     {
                         // cancel
-                        let tx = core_arb_setup.as_ref().unwrap().cancel.clone();
-                        let mut cancel_tx = CancelTx::from_partial(tx);
+                        let partial_cancel_tx = core_arb_setup.as_ref().unwrap().cancel.clone();
+                        let mut cancel_tx = CancelTx::from_partial(partial_cancel_tx);
                         cancel_tx
                             .add_witness(local_params.cancel, alice_cancel_signature.unwrap())?;
                         cancel_tx.add_witness(
@@ -972,6 +1016,7 @@ impl Runtime {
                             Request::Tx(Tx::Cancel(finalized_cancel_tx)),
                         )?;
                     }
+                    // NOTE: if this is the right spot for the Ctl message, it should also be replayed upon state recovery
                     {
                         let FullySignedPunish { punish, punish_sig } = alice.fully_sign_punish(
                             key_manager,
@@ -993,6 +1038,25 @@ impl Runtime {
                         )?;
                     }
 
+                    // struct RecoveryState {
+                    //     swap_index: u32,
+                    //     params: (AliceParameters<BtcXmr>, BobParameters<BtcXmr>),
+                    //     txs:
+                    // }
+                    let state = (
+                        // swap_index
+                        // key_manager.get_swap_index(),
+                        // params
+                        (bob_parameters.clone(), local_params.clone()),
+                        // txs
+                        (
+                            core_arb_txs.lock.clone(),
+                            core_arb_txs.cancel.clone(),
+                            // finalized_lock_tx.clone(),
+                            // tx
+                        ),
+                    );
+
                     let refund_proc_signatures =
                         Msg::RefundProcedureSignatures(refund_proc_signatures);
 

From b0133f1ee91a713da9d820d8dfc2435e928dc6b1 Mon Sep 17 00:00:00 2001
From: Robert Hambrock <roberthambrock@gmail.com>
Date: Wed, 4 May 2022 19:37:11 +0200
Subject: [PATCH 09/32] update sequence_diagram.svg

---
 doc/sequence_diagram.svg | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/sequence_diagram.svg b/doc/sequence_diagram.svg
index dafcc26f1..152ea688f 100644
--- a/doc/sequence_diagram.svg
+++ b/doc/sequence_diagram.svg
@@ -1 +1 @@
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="2625" height="10337"><desc>title%20Farcaster%20node%0A%2F%2F%20to%20display%20the%20diagram%2C%20go%20to%20sequencediagram.org%0A%2F%2F%20dashed%20lines%2C%20not%20yet%20implemented%0A%0Aparticipant%20t_syncer%0Aparticipant%20t_wallet%0Aparticipant%20t_swap%0Aparticipant%20t_farcasterd%0Aparticipant%20t_cli%0Aparticipant%20peerd%0Aparticipant%20m_cli%0Aparticipant%20m_farcasterd%0Aparticipant%20m_swap%0Aparticipant%20m_wallet%0Aparticipant%20m_syncer%0A%0A%3D%3DSetup%20and%20Commit-Reveal%3A%20Bob%20and%20Alice%20can%20be%20on%20both%20sides%3D%3D%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20launch%20farcasterd%5Cnmanually%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20launch%20walletd%0Am_farcasterd%20%3C-%20m_wallet%20%3A%20Ctl%20Hello%0Am_cli%20-%3E%20m_farcasterd%20%3A%20MakeOffer%20(deferred)%0Am_farcasterd%20-%3E%20m_wallet%20%3A%20Ctl%20GetKeys%0Am_farcasterd%20%3C-%20m_wallet%20%3A%20Ctl%20Keys%20(not%20to%20be%20held%20on%20state)%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20MakeOffer%20(continues)%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20launch%5Cnpeerd%20listen%0At_farcasterd%20-%3E%20t_farcasterd%20%3A%20launch%20farcasterd%5Cnmanually%0At_farcasterd%20-%3E%20t_farcasterd%20%3A%20launch%20walletd%0At_wallet%20-%3E%20t_farcasterd%20%3A%20Ctl%20Hello%0At_cli%20-%3E%20t_farcasterd%20%3A%20Ctl%20TakeOffer%20(deferred)%0At_wallet%20%3C-%20t_farcasterd%20%3A%20Ctl%20GetKeys%0At_wallet%20-%3E%20t_farcasterd%20%3A%20Ctl%20Keys%20(not%20to%20be%20held%20on%20state)%0At_farcasterd%20%3C-%20t_farcasterd%20%3A%20Ctl%20TakeOffer%20(continues)%0At_farcasterd%20-%3E%20t_farcasterd%20%3A%20launch%5Cnpeerd%20connect%0At_wallet%20%3C-%20t_farcasterd%20%3A%20Ctl%20TakeOffer%0At_wallet%20-%3E%20t_wallet%20%3A%20create%20taker%20wallet%0At_wallet%20-%3E%20t_farcasterd%20%3A%20Ctl%20LaunchSwap%0At_swap%20-%3E%20t_farcasterd%20%3A%20Ctl%20Hello%0At_farcasterd%20-%3E%20t_farcasterd%3Alaunch%20syncer%0At_swap%20%3C-%20t_farcasterd%20%3A%20Ctl%20TakeSwap%0At_swap%20-%3E%20peerd%20%3A%20Msg%20TakerCommit%0Apeerd%20-%3E%20m_farcasterd%20%3A%20Msg%20TakerCommit%0Am_farcasterd%20-%3E%20m_wallet%20%3A%20Ctl%20BitcoinAddress%0Am_farcasterd%20-%3E%20m_wallet%20%3A%20Msg%20TakerCommit%0Am_wallet%20-%3E%20m_wallet%20%3A%20create%20maker%20wallet%0Am_wallet%20-%3E%20m_farcasterd%20%3A%20Ctl%20LaunchSwap%0Am_swap%20-%3E%20m_farcasterd%20%3A%20Ctl%20Hello%0Am_farcasterd%20-%3E%20m_farcasterd%3Alaunch%20syncer%0Am_farcasterd%20-%3E%20m_swap%20%3A%20Ctl%20MakeSwap%0A%0Am_swap%20-%3E%20peerd%20%3A%20Msg%20MakerCommit%0At_swap%20%3C-%20peerd%20%3A%20Msg%20MakerCommit%0A%2F%2F%20TODO%3A%20verify%20that%20swapd%20launches%20no%20matter%20what%0At_syncer%20%3C-%20t_swap%20%3A%20Ctl%20WatchHeight%0At_syncer%20%3C-%20t_swap%20%3A%20if%20Bob%2C%20Watch%20Arbitrating%20Funding%20Address%0At_swap%20-%3E%20t_wallet%20%3A%20Msg%20MakerCommit%0At_wallet%20-%3E%20t_swap%20%3A%20Ctl%20RevealProof%20(taker%20is%20sender)%0At_swap%20-%3E%20peerd%20%3A%20Msg%20RevealProof%20(taker%20is%20sender)%0At_swap%20-%3E%20peerd%20%3A%20Msg%20Reveal%20(taker%20is%20sender)%0Apeerd%20-%3E%20m_swap%20%3A%20Msg%20RevealProof%20(taker%20is%20sender)%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Alice%2C%20Msg%20RevealProof%20(taker%20is%20sender)%20%0Am_swap%20-%3E%20m_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20RevealProof%0Apeerd%20-%3E%20m_swap%20%3A%20Msg%20Reveal%20(taker%20is%20sender)%0Am_swap%20-%3E%20m_farcasterd%20%3A%20if%20Bob%2C%20ask%20for%20funding%0Am_swap%20-%3E%20m_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20Reveal%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Alice%2C%20Msg%20Reveal%20(taker%20is%20sender)%0A%0Am_swap-%3Em_syncer%3ACtl%20WatchHeight%0Am_swap%20-%3E%20m_syncer%3Aif%20Bob%2C%20Watch%20Arbitrating%20Funding%20Address%0Am_swap%20%3C-%20m_syncer%3AIf%20Bob%2C%20Arbitrating%20Funding%20event%0Am_swap-%3Em_wallet%3Aif%20Bob%2C%20Ctl%20Tx%3A%3AFunding%0Am_swap%3C-m_wallet%3AIf%20Bob%2C%20Ctl%20FundingUpdated%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20RevealProof%20(taker%20is%20sender)%20%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20Reveal%20(taker%20is%20sender)%0Am_wallet%20-%3E%20m_swap%20%3A%20Ctl%20RevealProof%20(maker%20is%20sender)%0Apeerd%20%3C-%20m_swap%20%3A%20Msg%20RevealProof%20(maker%20is%20sender)%0Apeerd%20%3C-%20m_swap%20%3A%20Msg%20Reveal%20(maker%20is%20sender)%0Apeerd%20-%3E%20t_swap%20%3A%20Msg%20RevealProof%20(maker%20is%20sender)%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Alice%2C%20Msg%20RevealProof%20(maker%20is%20sender)%0At_swap%20-%3E%20t_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20RevealProof%0Apeerd%20-%3E%20t_swap%20%3A%20Msg%20Reveal%20(maker%20is%20sender)%0At_swap%20-%3E%20t_farcasterd%20%3A%20if%20Bob%2C%20ask%20for%20funding%0At_swap%20-%3E%20t_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20Reveal%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Alice%2C%20Msg%20Reveal%20(maker%20is%20sender)%0At_syncer%20-%3E%20t_swap%3AIf%20Bob%2C%20Arbitrating%20Funding%20event%0At_swap-%3Et_wallet%3Aif%20Bob%2C%20Ctl%20Tx%3A%3AFunding%0At_swap%3C-t_wallet%3AIf%20Bob%2C%20Ctl%20FundingUpdated%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20RevealProof%20(maker%20is%20sender)%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20Reveal%20(maker%20is%20sender)%0A%3D%3DCommit-Reveal%20Complete%3D%3D%0A%3D%3DChanging%20semantics%3A%20On%20Commit-Reveal%2C%20Maker%20and%20Taker%20were%20the%20key%20roles.%20From%20now%20on%20Bob%20or%20Alice%20are%20the%20key%20roles.%20Now%20t_%20is%20bob_%20on%20the%20left%20and%20m_%20is%20alice_%20on%20the%20right.%3D%3D%0A%3D%3DSwap%20setup%3A%20Bob%20is%20left%2C%20Alice%20right%3D%3D%0At_wallet%20-%3E%20t_swap%20%3A%20Ctl%20CoreArbitratingSetup%0A%2F%2F%20TODO%3A%20During%20replay%20of%20Checkpoint%20Bob%200%2C%20Bob%20has%20to%20rewatch%20these%203%20txs%0At_syncer%20%3C-%20t_swap%20%3A%20Watch%20Arbitrating%20Lock%0At_syncer%20%3C-%20t_swap%20%3A%20Watch%20Cancel%0At_syncer%20%3C-%20t_swap%20%3A%20Watch%20Refund%0Apeerd%20%3C-%20t_swap%20%3A%20Msg%20CoreArbitratingSetup%0Am_swap%20%3C-%20peerd%20%3A%20Msg%20CoreArbitratingSetup%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Arbitrating%20Lock%0A%2F%2F%20TODO%3A%20During%20replay%20of%20Checkpoint%20Alice%200%2C%20Alice%20has%20to%20rewatch%20these%202%20txs%20(arbitrating%20already%20final%20then)%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Cancel%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Refund%0A%0Am_wallet%20%3C-%20m_swap%20%3A%20Msg%20CoreArbitratingSetup%0Am_wallet%20--%3E%20m_wallet%20%3A%20Checkpoint%20Alice%200%0Am_wallet%20-%3E%20m_swap%20%3A%20Ctl%20RefundProcedureSignatures%0Am_swap%20-%3E%20peerd%20%3A%20Msg%20RefundProcedureSignatures%0Apeerd%20-%3E%20t_swap%20%3A%20Msg%20RefundProcedureSignatures%0At_wallet%20%3C-%20t_swap%20%3A%20Msg%20RefundProcedureSignatures%0At_wallet%20-%3E%20t_swap%3ACtl%20Datum%3A%3ASignedArbitratingLock%0A%2F%2F%20DONE%3A%20do%20we%20know%20that%20same%20inputs%20are%20being%20used%20in%20case%20of%20replay%3F%0A%2F%2F%20-%3E%20yes%2C%20but%20create%20different%20sig%0At_wallet%20--%3E%20t_wallet%20%3A%20Checkpoint%20Bob%200%0At_wallet%20-%3E%20t_swap%20%3A%20Ctl%20BuyProcedureSignature%0At_syncer%20%3C-%20t_swap%20%3A%20Broadcast%20Arbitrating%20Lock%0At_swap%20-%3E%20t_syncer%20%3A%20Watch%20Accordant%20Lock%0At_swap%20-%3E%20t_syncer%20%3A%20Watch%20Buy%0A%0Aparallel%0At_syncer%20-%3E%20%20t_swap%20%3A%20Arbitrating%20Lock%20final%0Am_swap%20%3C-%20m_syncer%20%3A%20Arbitrating%20Lock%20final%0Aparallel%20off%0A%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Accordant%20Lock%0A%0Aparallel%0Am_swap%20%3C-%20m_syncer%20%3A%20Accordant%20Lock%20final%0At_swap%20%3C-%20t_syncer%20%3A%20Accordant%20Lock%20final%0Aparallel%20off%0A%0Apeerd%20%3C-%20t_swap%20%3A%20Msg%20BuyProcedureSignature%0Am_swap%20%3C-%20peerd%20%3A%20Msg%20BuyProcedureSignature%0Am_swap%20-%3E%20m_syncer%3AWatch%20Buy%0Am_swap%20-%3E%20m_wallet%20%3A%20Msg%20BuyProcedureSignature%0A%3D%3DSwap%20Setup%20Complete%3D%3D%0A%3D%3DBuy%20Procedure%3A%20Bob%20is%20left%2C%20Alice%20right%3D%3D%0A%0Am_swap%20%3C-%20m_wallet%20%3A%20Fully%20signed%20buy%0Am_swap%20-%3E%20m_syncer%20%3A%20Broadcast%20buy%0Aparallel%0Am_swap%20%3C-%20m_syncer%20%3A%20Event%3A%20buy%20seen%20on%20mempool%0At_swap%20%3C-%20t_syncer%20%3A%20Event%3A%20buy%20seen%20on%20mempool%0Aparallel%20off%0At_wallet%20%3C-%20t_swap%20%3A%20Ctl%20Buy%20signature%0At_wallet%20-%3E%20t_wallet%20%3A%20recover%20accordant%20keys%0A%0A%3D%3DCancel%20Init%20t%20%3E%20t0%3A%20Bob%20is%20left%2C%20Alice%20right%2C%20either%20have%20a%20fully%20signed%20and%20valid%20cancel%20tx%2C%20and%20can%20publish%3D%3D%0Aparallel%0At_swap%20%3C-%20t_syncer%20%3A%20Ctl%20Cancel%20valid%0Am_swap%20%3C-%20m_syncer%20%3A%20Ctl%20Cancel%20valid%0Aparallel%20off%0Aparallel%0Am_swap%20-%3E%20m_syncer%20%3A%20Broadcast%20cancel%20(Alice%20inits)%0At_swap%20-%3E%20t_syncer%20%3A%20Broadcast%20cancel%20(Bob%20inits)%0Aparallel%20off%0A%3D%3DCancel%20detected%20t%20%3E%20t0%3A%20Bob%20is%20left%2C%20Alice%20right%3D%3D%0At_swap%20%3C-%20t_syncer%3A%20Event%20cancel%20final%0At_swap%20-%3E%20t_syncer%20%3A%20Broadcast%20refund%0Aparallel%0At_syncer%20-%3E%20t_swap%20%3A%20Event%3A%20refund%20seen%0Am_syncer%20-%3E%20m_swap%20%3A%20Event%3A%20refund%20seen%0Aparallel%20off%0Am_swap%20-%3E%20m_wallet%20%3A%20Ctl%20Tx%3A%3ARefund%20tx%0Am_wallet%20-%3E%20m_wallet%20%3A%20recover%20accordant%20keys%0A%0A%3D%3D%20Punish%20process%20t%20%3E%20t1%20%3E%20t0%20%3D%3D%0Am_swap%3C-m_syncer%3ACtl%20Event%3A%20punish%20valid%0Am_swap-%3Em_wallet%3ACtl%20Event%3A%20punish%20valid%0Am_wallet-%3Em_wallet%3Afully%20sign%20punish%0Am_swap%3C-m_wallet%3ACtl%20Tx%3A%3APunish%0Am_swap-%3Em_syncer%3ACtl%20Broadcast%20punish%20tx%0A</desc><defs/><g><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g><rect fill="white" stroke="none" x="0" y="0" width="2625" height="10337"/></g><g><text fill="black" stroke="none" font-family="sans-serif" font-size="16.5pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1238.7019835856759" y="39.58145414999999" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Farcaster node</text></g><g/><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 154.895423907 L 69.52660506176173 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 154.895423907 L 240.92694725433986 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 154.895423907 L 703.1621409168399 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 154.895423907 L 1015.5050499387149 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1239.594293283832 154.895423907 L 1239.594293283832 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 154.895423907 L 1355.0254712418282 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1474.5260843194533 154.895423907 L 1474.5260843194533 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 154.895423907 L 1681.5072344028517 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 154.895423907 L 1893.6709101210158 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 154.895423907 L 2351.840246849922 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 154.895423907 L 2551.7708176149613 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/></g><g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 13.193818050000004 83.648806437 L 125.85939207352345 83.648806437 L 125.85939207352345 154.895423907 L 13.193818050000004 154.895423907 L 13.193818050000004 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="41.82440321850001" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_syncer</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 187.44311348964845 83.648806437 L 294.4107810190313 83.648806437 L 294.4107810190313 154.895423907 L 187.44311348964845 154.895423907 L 187.44311348964845 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="216.07369865814846" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_wallet</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 651.3067937854493 83.648806437 L 755.0174880482305 83.648806437 L 755.0174880482305 154.895423907 L 651.3067937854493 154.895423907 L 651.3067937854493 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="679.9373789539493" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_swap</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 948.1701190670899 83.648806437 L 1082.83998081034 83.648806437 L 1082.83998081034 154.895423907 L 948.1701190670899 154.895423907 L 948.1701190670899 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="976.8007042355899" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_farcasterd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1197.9286434180665 83.648806437 L 1281.2599431495978 83.648806437 L 1281.2599431495978 154.895423907 L 1197.9286434180665 154.895423907 L 1197.9286434180665 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1226.5592285865664" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_cli</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1307.6475792495978 83.648806437 L 1402.4033632340588 83.648806437 L 1402.4033632340588 154.895423907 L 1307.6475792495978 154.895423907 L 1307.6475792495978 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1336.2781644180977" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">peerd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1428.7909993340588 83.648806437 L 1520.261169304848 83.648806437 L 1520.261169304848 154.895423907 L 1428.7909993340588 154.895423907 L 1428.7909993340588 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1457.4215845025587" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_cli</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1610.102868411598 83.648806437 L 1752.9116003941058 83.648806437 L 1752.9116003941058 154.895423907 L 1610.102868411598 154.895423907 L 1610.102868411598 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1638.7334535800978" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_farcasterd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1837.7461278699964 83.648806437 L 1949.5956923720355 83.648806437 L 1949.5956923720355 154.895423907 L 1837.7461278699964 154.895423907 L 1837.7461278699964 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1866.3767130384963" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_swap</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 2294.2869779656016 83.648806437 L 2409.393515734242 83.648806437 L 2409.393515734242 154.895423907 L 2294.2869779656016 154.895423907 L 2294.2869779656016 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2322.917563134102" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_wallet</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 2491.3685954835705 83.648806437 L 2612.1730397463516 83.648806437 L 2612.1730397463516 154.895423907 L 2491.3685954835705 154.895423907 L 2491.3685954835705 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2519.9991806520707" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_syncer</text></g></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 229.22059892200002 L 2611.80618195 229.22059892200002 M 13.19381805 238.01647762200002 L 2611.80618195 238.01647762200002 M 13.19381805 246.81235632200003 L 2611.80618195 246.81235632200003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1070.6038792842187 207.67069610700003 L 1554.3961207157813 207.67069610700003 L 1554.3961207157813 268.362259137 L 1070.6038792842187 268.362259137 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1107.5465698242188" y="244.61338664700003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Setup and Commit-Reveal: Bob and Alice can be on both sides</text></g><g><g><rect fill="white" stroke="none" x="1712.7326037878515" y="307.94371328700004" width="120.3714910253125" height="34.30392693"/></g><g><rect fill="white" stroke="none" x="1712.7326037878515" y="334.33134938700005" width="66.58483941398437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028515" y="331.69258577700003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch farcasterd</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028515" y="358.08022187700004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">manually</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 368.63527631700003 L 1787.0577788028518 368.63527631700003 L 1787.0577788028518 402.939203247 L 1703.2330547918518 402.939203247" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,402.939203247) translate(-1681.5072344028517,-402.939203247)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 391.944354872 L 1681.5072344028517 402.939203247 L 1703.4969311528516 413.934051622 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1712.7326037878515" y="442.52065739700004" width="100.82247979484374" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028515" y="466.26952988700003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch walletd</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 476.824584327 L 1787.0577788028518 476.824584327 L 1787.0577788028518 511.128511257 L 1703.2330547918518 511.128511257" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,511.128511257) translate(-1681.5072344028517,-511.128511257)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 500.133662882 L 1681.5072344028517 511.128511257 L 1703.4969311528516 522.123359632 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1985.0169639247658" y="550.709965407" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1988.9751093397658" y="574.4588378970001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 585.013892337 L 1703.2330547918518 585.013892337" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,585.013892337) translate(-1681.5072344028517,-585.013892337)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 574.0190439620001 L 1681.5072344028517 585.013892337 L 1703.4969311528516 596.008740712 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1505.7514537044533" y="624.595346487" width="144.53041131339845" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1509.7095991194533" y="648.3442189770001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">MakeOffer (deferred)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1474.5260843194533 658.899273417 L 1659.7814140138516 658.899273417" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,658.899273417) translate(-1681.5072344028517,-658.899273417)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1659.5175376528518 647.9044250420001 L 1681.5072344028517 658.899273417 L 1659.5175376528518 669.894121792 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1973.6103782314065" y="698.480727567" width="86.12672478996093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1977.5685236464064" y="722.2296000570001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl GetKeys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 732.784654497 L 2330.114426460922 732.784654497" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,732.784654497) translate(-2351.840246849922,-732.784654497)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 721.7898061220001 L 2351.840246849922 732.784654497 L 2329.850550099922 743.779502872 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1905.9654578822854" y="772.366108647" width="221.41656548820313" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1909.9236032972854" y="796.1149811370001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Keys (not to be held on state)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 806.670035577 L 1703.2330547918518 806.670035577" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,806.670035577) translate(-1681.5072344028517,-806.670035577)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 795.6751872020001 L 1681.5072344028517 806.670035577 L 1703.4969311528516 817.664883952 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1712.7326037878515" y="846.251489727" width="152.68359429679688" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028515" y="870.0003622170001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">MakeOffer (continues)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 880.555416657 L 1787.0577788028518 880.555416657 L 1787.0577788028518 914.859343587 L 1703.2330547918518 914.859343587" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,914.859343587) translate(-1681.5072344028517,-914.859343587)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 903.8644952120001 L 1681.5072344028517 914.859343587 L 1703.4969311528516 925.854191962 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1712.7326037878515" y="954.4407977369999" width="51.11598260246094" height="34.30392693"/></g><g><rect fill="white" stroke="none" x="1712.7326037878515" y="980.8284338369999" width="83.70723016105468" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028515" y="978.189670227" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028515" y="1004.577306327" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">peerd listen</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 1015.1323607669999 L 1787.0577788028518 1015.1323607669999 L 1787.0577788028518 1049.436287697 L 1703.2330547918518 1049.436287697" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,1049.436287697) translate(-1681.5072344028517,-1049.436287697)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 1038.441439322 L 1681.5072344028517 1049.436287697 L 1703.4969311528516 1060.4311360719998 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="1089.017741847" width="120.3714910253125" height="34.30392693"/></g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="1115.405377947" width="66.58483941398437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="1112.766614337" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch farcasterd</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="1139.154250437" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">manually</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 1149.709304877 L 1121.0555943387149 1149.709304877 L 1121.0555943387149 1184.013231807 L 1037.230870327715 1184.013231807" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,1184.013231807) translate(-1015.5050499387149,-1184.013231807)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1037.494746688715 1173.018383432 L 1015.5050499387149 1184.013231807 L 1037.494746688715 1195.008080182 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="1223.5946859570001" width="100.82247979484374" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="1247.343558447" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch walletd</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 1257.8986128870001 L 1121.0555943387149 1257.8986128870001 L 1121.0555943387149 1292.2025398170001 L 1037.230870327715 1292.2025398170001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,1292.2025398170001) translate(-1015.5050499387149,-1292.2025398170001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1037.494746688715 1281.2076914420002 L 1015.5050499387149 1292.2025398170001 L 1037.494746688715 1303.197388192 Z"/></g></g><g><g><rect fill="white" stroke="none" x="596.5592218949063" y="1331.783993967" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="600.5173673099063" y="1355.532866457" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 1366.087920897 L 993.779229549715 1366.087920897" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,1366.087920897) translate(-1015.5050499387149,-1366.087920897)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 1355.093072522 L 1015.5050499387149 1366.087920897 L 993.5153531887149 1377.082769272 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="1405.6693750470001" width="161.6385045751172" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="1429.418247537" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeOffer (deferred)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1239.594293283832 1439.9733019770001 L 1037.230870327715 1439.9733019770001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,1439.9733019770001) translate(-1015.5050499387149,-1439.9733019770001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1037.494746688715 1428.9784536020002 L 1015.5050499387149 1439.9733019770001 L 1037.494746688715 1450.968150352 Z"/></g></g><g><g><rect fill="white" stroke="none" x="585.1526362015469" y="1479.5547561270002" width="86.12672478996093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="589.1107816165469" y="1503.3036286170002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl GetKeys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 1513.8586830570002 L 262.65276764333987 1513.8586830570002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,1513.8586830570002) translate(-240.92694725433986,-1513.8586830570002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 1502.8638346820003 L 240.92694725433986 1513.8586830570002 L 262.91664400433984 1524.8535314320002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="517.5077158524258" y="1553.4401372070004" width="221.41656548820313" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="521.4658612674258" y="1577.1890096970003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Keys (not to be held on state)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 1587.7440641370004 L 993.779229549715 1587.7440641370004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,1587.7440641370004) translate(-1015.5050499387149,-1587.7440641370004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 1576.7492157620004 L 1015.5050499387149 1587.7440641370004 L 993.5153531887149 1598.7389125120003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="1627.3255182870005" width="169.79168755851563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="1651.0743907770004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeOffer (continues)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 1661.6294452170005 L 1121.0555943387149 1661.6294452170005 L 1121.0555943387149 1695.9333721470005 L 1037.230870327715 1695.9333721470005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,1695.9333721470005) translate(-1015.5050499387149,-1695.9333721470005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1037.494746688715 1684.9385237720005 L 1015.5050499387149 1695.9333721470005 L 1037.494746688715 1706.9282205220004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="1735.5148262970004" width="51.11598260246094" height="34.30392693"/></g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="1761.9024623970004" width="100.82963616691406" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="1759.2636987870003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="1785.6513348870003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">peerd connect</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 1796.2063893270004 L 1121.0555943387149 1796.2063893270004 L 1121.0555943387149 1830.5103162570003 L 1037.230870327715 1830.5103162570003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,1830.5103162570003) translate(-1015.5050499387149,-1830.5103162570003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1037.494746688715 1819.5154678820004 L 1015.5050499387149 1830.5103162570003 L 1037.494746688715 1841.5051646320003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="581.6164805008633" y="1870.0917704070005" width="93.19903619132812" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="585.5746259158633" y="1893.8406428970004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeOffer</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 1904.3956973370005 L 262.65276764333987 1904.3956973370005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,1904.3956973370005) translate(-240.92694725433986,-1904.3956973370005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 1893.4008489620005 L 240.92694725433986 1904.3956973370005 L 262.91664400433984 1915.3905457120004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="272.15231663933986" y="1943.9771514870006" width="126.87829644523437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="276.11046205433985" y="1967.7260239770005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">create taker wallet</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 1978.2810784170006 L 346.4774916543399 1978.2810784170006 L 346.4774916543399 2012.5850053470006 L 262.65276764333987 2012.5850053470006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,2012.5850053470006) translate(-240.92694725433986,-2012.5850053470006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 2001.5901569720006 L 240.92694725433986 2012.5850053470006 L 262.91664400433984 2023.5798537220005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="570.8791987015469" y="2052.1664594970002" width="114.67359978996093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="574.8373441165469" y="2075.915331987" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl LaunchSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 2086.4703864270004 L 993.779229549715 2086.4703864270004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,2086.4703864270004) translate(-1015.5050499387149,-2086.4703864270004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 2075.4755380520005 L 1015.5050499387149 2086.4703864270004 L 993.5153531887149 2097.4652348020004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="827.6768187261564" y="2126.0518405770003" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="831.6349641411564" y="2149.8007130670003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 2160.3557675070006 L 993.779229549715 2160.3557675070006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,2160.3557675070006) translate(-1015.5050499387149,-2160.3557675070006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 2149.3609191320006 L 1015.5050499387149 2160.3557675070006 L 993.5153531887149 2171.3506158820005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="2199.9372216570005" width="98.36720330558593" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="2223.6860941470004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch syncer</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 2234.241148587 L 1121.0555943387149 2234.241148587 L 1121.0555943387149 2268.5450755170004 L 1037.230870327715 2268.5450755170004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,2268.5450755170004) translate(-1015.5050499387149,-2268.5450755170004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1037.494746688715 2257.5502271420005 L 1015.5050499387149 2268.5450755170004 L 1037.494746688715 2279.5399238920004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="810.5615690923673" y="2308.1265296670003" width="97.5440526708203" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="814.5197145073673" y="2331.8754021570003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 2342.4304565970006 L 724.8879613058399 2342.4304565970006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,2342.4304565970006) translate(-703.1621409168399,-2342.4304565970006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 2331.4356082220006 L 703.1621409168399 2342.4304565970006 L 725.1518376668399 2353.4253049720005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="966.080553547635" y="2382.0119107470005" width="126.02650506339843" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="970.038698962635" y="2405.7607832370004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg TakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 2416.3158376770007 L 1333.299650852828 2416.3158376770007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,2416.3158376770007) translate(-1355.0254712418282,-2416.3158376770007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1333.0357744918283 2405.3209893020007 L 1355.0254712418282 2416.3158376770007 L 1333.0357744918283 2427.3106860520006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1455.2531002906408" y="2455.8972918270006" width="126.02650506339843" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1459.2112457056407" y="2479.6461643170005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg TakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 2490.201218757001 L 1659.7814140138516 2490.201218757001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,2490.201218757001) translate(-1681.5072344028517,-2490.201218757001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1659.5175376528518 2479.206370382001 L 1681.5072344028517 2490.201218757001 L 1659.5175376528518 2501.1960671320007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1952.8301581996682" y="2529.7826729070007" width="127.6871648534375" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1956.7883036146682" y="2553.5315453970006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl BitcoinAddress</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 2564.086599837001 L 2330.114426460922 2564.086599837001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,2564.086599837001) translate(-2351.840246849922,-2564.086599837001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 2553.091751462001 L 2351.840246849922 2564.086599837001 L 2329.850550099922 2575.081448212001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1953.6604880946877" y="2603.668053987001" width="126.02650506339843" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1957.6186335096877" y="2627.4169264770007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg TakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 2637.971980917001 L 2330.114426460922 2637.971980917001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,2637.971980917001) translate(-2351.840246849922,-2637.971980917001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 2626.977132542001 L 2351.840246849922 2637.971980917001 L 2329.850550099922 2648.966829292001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2383.065616234922" y="2677.553435067001" width="135.0171666844922" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2387.023761649922" y="2701.302307557001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">create maker wallet</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 2711.8573619970007 L 2457.390791249922 2711.8573619970007 L 2457.390791249922 2746.161288927001 L 2373.566067238922 2746.161288927001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,2746.161288927001) translate(-2351.840246849922,-2746.161288927001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2373.829943599922 2735.166440552001 L 2351.840246849922 2746.161288927001 L 2373.829943599922 2757.156137302001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1959.3369407314065" y="2785.742743077001" width="114.67359978996093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1963.2950861464064" y="2809.4916155670007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl LaunchSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 2820.046670007001 L 1703.2330547918518 2820.046670007001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,2820.046670007001) translate(-1681.5072344028517,-2820.046670007001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 2809.051821632001 L 1681.5072344028517 2820.046670007001 L 1703.4969311528516 2831.041518382001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1755.9322955603127" y="2859.628124157001" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1759.8904409753127" y="2883.376996647001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 2893.932051087001 L 1703.2330547918518 2893.932051087001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,2893.932051087001) translate(-1681.5072344028517,-2893.932051087001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 2882.937202712001 L 1681.5072344028517 2893.932051087001 L 1703.4969311528516 2904.926899462001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1712.7326037878515" y="2933.513505237001" width="98.36720330558593" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028515" y="2957.262377727001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch syncer</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 2967.817432167001 L 1787.0577788028518 2967.817432167001 L 1787.0577788028518 3002.121359097001 L 1703.2330547918518 3002.121359097001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,3002.121359097001) translate(-1681.5072344028517,-3002.121359097001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 2991.126510722001 L 1681.5072344028517 3002.121359097001 L 1703.4969311528516 3013.116207472001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1736.37610506959" y="3041.702813247001" width="102.4259343846875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1740.33425048459" y="3065.451685737001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl MakeSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 3076.006740177001 L 1871.9450897320157 3076.006740177001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,3076.006740177001) translate(-1893.6709101210158,-3076.006740177001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1871.681213371016 3065.011891802001 L 1893.6709101210158 3076.006740177001 L 1871.681213371016 3087.001588552001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1558.8939972927892" y="3115.588194327001" width="130.90838677726563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1562.8521427077892" y="3139.337066817001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg MakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 3149.8921212570012 L 1376.7512916308283 3149.8921212570012" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,3149.8921212570012) translate(-1355.0254712418282,-3149.8921212570012)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1377.015167991828 3138.8972728820013 L 1355.0254712418282 3149.8921212570012 L 1377.015167991828 3160.886969632001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="963.6396126907014" y="3189.473575407001" width="130.90838677726563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="967.5977581057014" y="3213.222447897001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg MakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 3223.7775023370014 L 724.8879613058399 3223.7775023370014" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,3223.7775023370014) translate(-703.1621409168399,-3223.7775023370014)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 3212.7826539620014 L 703.1621409168399 3223.7775023370014 L 725.1518376668399 3234.7723507120013 Z"/></g></g><g><g><rect fill="white" stroke="none" x="329.69833847517975" y="3263.3589564870013" width="113.29206902824218" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="333.65648389017974" y="3287.107828977001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl WatchHeight</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3297.6628834170015 L 91.25242545076173 3297.6628834170015" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,3297.6628834170015) translate(-69.52660506176173,-3297.6628834170015)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 3286.6680350420015 L 69.52660506176173 3297.6628834170015 L 91.51630181176174 3308.6577317920014 Z"/></g></g><g><g><rect fill="white" stroke="none" x="246.16940018172272" y="3337.2443375670014" width="280.34994561515623" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="250.1275455967227" y="3360.9932100570013" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Watch Arbitrating Funding Address</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3371.5482644970016 L 91.25242545076173 3371.5482644970016" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,3371.5482644970016) translate(-69.52660506176173,-3371.5482644970016)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 3360.5534161220016 L 69.52660506176173 3371.5482644970016 L 91.51630181176174 3382.5431128720015 Z"/></g></g><g><g><rect fill="white" stroke="none" x="406.5903506969571" y="3411.1297186470015" width="130.90838677726563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="410.5484961119571" y="3434.8785911370014" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg MakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3445.4336455770017 L 262.65276764333987 3445.4336455770017" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,3445.4336455770017) translate(-240.92694725433986,-3445.4336455770017)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 3434.4387972020018 L 240.92694725433986 3445.4336455770017 L 262.91664400433984 3456.4284939520016 Z"/></g></g><g><g><rect fill="white" stroke="none" x="361.76218754998445" y="3485.0150997270016" width="220.56471307121095" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="365.72033296498444" y="3508.7639722170015" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl RevealProof (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 3519.319026657002 L 681.4363205278399 3519.319026657002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,3519.319026657002) translate(-703.1621409168399,-3519.319026657002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 3508.324178282002 L 703.1621409168399 3519.319026657002 L 681.1724441668399 3530.3138750320018 Z"/></g></g><g><g><rect fill="white" stroke="none" x="913.9224038283967" y="3558.9004808070017" width="230.342804501875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="917.8805492433967" y="3582.6493532970017" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3593.204407737002 L 1333.299650852828 3593.204407737002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,3593.204407737002) translate(-1355.0254712418282,-3593.204407737002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1333.0357744918283 3582.209559362002 L 1355.0254712418282 3593.204407737002 L 1333.0357744918283 3604.199256112002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="931.4420800368928" y="3632.785861887002" width="195.30345208488282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="935.4002254518928" y="3656.5347343770018" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3667.089788817002 L 1333.299650852828 3667.089788817002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,3667.089788817002) translate(-1355.0254712418282,-3667.089788817002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1333.0357744918283 3656.094940442002 L 1355.0254712418282 3667.089788817002 L 1333.0357744918283 3678.084637192002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1509.1767884304845" y="3706.671242967002" width="230.342804501875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1513.1349338454845" y="3730.420115457002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 3740.975169897002 L 1871.9450897320157 3740.975169897002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,3740.975169897002) translate(-1893.6709101210158,-3740.975169897002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1871.681213371016 3729.980321522002 L 1893.6709101210158 3740.975169897002 L 1871.681213371016 3751.970018272002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1979.885567836094" y="3780.556624047002" width="285.74002129875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1983.843713251094" y="3804.305496537002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg RevealProof (taker is sender) </text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 3814.8605509770023 L 2330.114426460922 3814.8605509770023" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,3814.8605509770023) translate(-2351.840246849922,-3814.8605509770023)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 3803.8657026020023 L 2351.840246849922 3814.8605509770023 L 2329.850550099922 3825.855399352002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1924.8962795060156" y="3854.442005127002" width="271.881867001875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1928.8544249210156" y="3878.190877617002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg RevealProof</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 3888.745932057002 L 1999.2214545210159 3888.745932057002 L 1999.2214545210159 3923.049858987002 L 1915.396730510016 3923.049858987002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,3923.049858987002) translate(-1893.6709101210158,-3923.049858987002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 3912.055010612002 L 1893.6709101210158 3923.049858987002 L 1915.6606068710157 3934.044707362002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1526.6964646389806" y="3962.631313137002" width="195.30345208488282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1530.6546100539806" y="3986.380185627002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 3996.9352400670023 L 1871.9450897320157 3996.9352400670023" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,3996.9352400670023) translate(-1893.6709101210158,-3996.9352400670023)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1871.681213371016 3985.9403916920023 L 1893.6709101210158 3996.9352400670023 L 1871.681213371016 4007.930088442002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1712.7326037878518" y="4036.516694217002" width="149.71293694816407" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028517" y="4060.265566707002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ask for funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4070.8206211470024 L 1703.2330547918518 4070.8206211470024" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,4070.8206211470024) translate(-1681.5072344028517,-4070.8206211470024)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 4059.8257727720024 L 1681.5072344028517 4070.8206211470024 L 1703.4969311528516 4081.8154695220023 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1924.8962795060156" y="4110.402075297002" width="236.84252984367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1928.8544249210156" y="4134.150947787002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg Reveal</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4144.7060022270025 L 1999.2214545210159 4144.7060022270025 L 1999.2214545210159 4179.009929157002 L 1915.396730510016 4179.009929157002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,4179.009929157002) translate(-1893.6709101210158,-4179.009929157002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 4168.015080782002 L 1893.6709101210158 4179.009929157002 L 1915.6606068710157 4190.004777532003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1999.441735438633" y="4218.591383307003" width="246.62768609367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2003.399880853633" y="4242.340255797003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4252.895310237002 L 2330.114426460922 4252.895310237002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,4252.895310237002) translate(-2351.840246849922,-4252.895310237002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 4241.900461862002 L 2351.840246849922 4252.895310237002 L 2329.850550099922 4263.890158612003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2166.0748293538672" y="4292.476764387003" width="113.29206902824218" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2170.0329747688675" y="4316.225636877003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl WatchHeight</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4326.7806913170025 L 2530.044997225961 4326.7806913170025" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,4326.7806913170025) translate(-2551.7708176149613,-4326.7806913170025)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 4315.785842942002 L 2551.7708176149613 4326.7806913170025 L 2529.7811208649614 4337.775539692003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2082.54589106041" y="4366.362145467003" width="280.34994561515623" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2086.5040364754104" y="4390.111017957003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Watch Arbitrating Funding Address</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4400.666072397003 L 2530.044997225961 4400.666072397003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,4400.666072397003) translate(-2551.7708176149613,-4400.666072397003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 4389.671224022002 L 2551.7708176149613 4400.666072397003 L 2529.7811208649614 4411.660920772003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2113.6374895711524" y="4440.247526547003" width="218.16674859367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2117.5956349861526" y="4463.996399037003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Arbitrating Funding event</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 4474.551453477003 L 1915.396730510016 4474.551453477003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,4474.551453477003) translate(-1893.6709101210158,-4474.551453477003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 4463.556605102002 L 1893.6709101210158 4474.551453477003 L 1915.6606068710157 4485.546301852003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2046.2813426774026" y="4514.132907627003" width="152.94847161613282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2050.2394880924026" y="4537.8817801170035" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Ctl Tx::Funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4548.436834557003 L 2330.114426460922 4548.436834557003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,4548.436834557003) translate(-2351.840246849922,-4548.436834557003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 4537.441986182002 L 2351.840246849922 4548.436834557003 L 2329.850550099922 4559.431682932003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2030.375832728672" y="4588.018288707003" width="184.75949151359376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2034.333978143672" y="4611.767161197004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Ctl FundingUpdated</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 4622.322215637003 L 1915.396730510016 4622.322215637003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,4622.322215637003) translate(-1893.6709101210158,-4622.322215637003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 4611.327367262003 L 1893.6709101210158 4622.322215637003 L 1915.6606068710157 4633.317064012003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1924.8962795060158" y="4661.903669787003" width="395.71859795890623" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1928.8544249210158" y="4685.652542277004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg RevealProof (taker is sender) </text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4696.207596717003 L 2330.114426460922 4696.207596717003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,4696.207596717003) translate(-2351.840246849922,-4696.207596717003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 4685.212748342003 L 2351.840246849922 4696.207596717003 L 2329.850550099922 4707.2024450920035 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1944.452462367344" y="4735.789050867003" width="356.60623223625" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1948.410607782344" y="4759.537923357004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4770.092977797003 L 2330.114426460922 4770.092977797003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,4770.092977797003) translate(-2351.840246849922,-4770.092977797003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 4759.098129422003 L 2351.840246849922 4770.092977797003 L 2329.850550099922 4781.087826172004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2008.4037868302346" y="4809.6744319470035" width="228.70358331046876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2012.3619322452346" y="4833.423304437004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 4843.978358877003 L 1915.396730510016 4843.978358877003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,4843.978358877003) translate(-1893.6709101210158,-4843.978358877003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 4832.983510502003 L 1893.6709101210158 4843.978358877003 L 1915.6606068710157 4854.973207252004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1505.1073533108556" y="4883.559813027004" width="238.48167474113282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1509.0654987258556" y="4907.308685517004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4917.863739957003 L 1376.7512916308283 4917.863739957003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,4917.863739957003) translate(-1355.0254712418282,-4917.863739957003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1377.015167991828 4906.868891582003 L 1355.0254712418282 4917.863739957003 L 1377.015167991828 4928.858588332004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1522.6270295193517" y="4957.445194107004" width="203.44232232414063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1526.5851749343517" y="4981.194066597004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4991.7491210370035 L 1376.7512916308283 4991.7491210370035" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,4991.7491210370035) translate(-1355.0254712418282,-4991.7491210370035)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1377.015167991828 4980.754272662003 L 1355.0254712418282 4991.7491210370035 L 1377.015167991828 5002.743969412004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="909.8529687087678" y="5031.330575187004" width="238.48167474113282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="913.8111141237678" y="5055.079447677004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 5065.634502117004 L 724.8879613058399 5065.634502117004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5065.634502117004) translate(-703.1621409168399,-5065.634502117004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 5054.639653742003 L 703.1621409168399 5065.634502117004 L 725.1518376668399 5076.629350492004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="327.141589710629" y="5105.215956267004" width="289.80590874992185" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="331.09973512562897" y="5128.964828757004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5139.519883197004 L 262.65276764333987 5139.519883197004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5139.519883197004) translate(-240.92694725433986,-5139.519883197004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5128.525034822003 L 240.92694725433986 5139.519883197004 L 262.91664400433984 5150.514731572004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="734.3875103018399" y="5179.101337347003" width="271.881867001875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="738.3456557168399" y="5202.850209837004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg RevealProof</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5213.405264277004 L 808.71268531684 5213.405264277004 L 808.71268531684 5247.709191207004 L 724.8879613058399 5247.709191207004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5247.709191207004) translate(-703.1621409168399,-5247.709191207004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 5236.714342832003 L 703.1621409168399 5247.709191207004 L 725.1518376668399 5258.704039582004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="927.3726449172639" y="5287.290645357004" width="203.44232232414063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="931.3307903322639" y="5311.039517847004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 5321.594572287004 L 724.8879613058399 5321.594572287004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5321.594572287004) translate(-703.1621409168399,-5321.594572287004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 5310.599723912003 L 703.1621409168399 5321.594572287004 L 725.1518376668399 5332.589420662004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="784.4771269536955" y="5361.176026437004" width="149.71293694816407" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="788.4352723686955" y="5384.9248989270045" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ask for funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5395.479953367004 L 993.779229549715 5395.479953367004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,5395.479953367004) translate(-1015.5050499387149,-5395.479953367004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 5384.4851049920035 L 1015.5050499387149 5395.479953367004 L 993.5153531887149 5406.474801742004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="734.3875103018399" y="5435.061407517003" width="236.84252984367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="738.3456557168399" y="5458.810280007004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg Reveal</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5469.365334447004 L 808.71268531684 5469.365334447004 L 808.71268531684 5503.669261377004 L 724.8879613058399 5503.669261377004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5503.669261377004) translate(-703.1621409168399,-5503.669261377004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 5492.674413002003 L 703.1621409168399 5503.669261377004 L 725.1518376668399 5514.664109752004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="344.66126591912507" y="5543.250715527004" width="254.7665563329297" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="348.61941133412506" y="5566.9995880170045" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5577.554642457004 L 262.65276764333987 5577.554642457004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5577.554642457004) translate(-240.92694725433986,-5577.554642457004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5566.5597940820035 L 240.92694725433986 5577.554642457004 L 262.91664400433984 5588.549490832004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="277.2609986924649" y="5617.136096607004" width="218.16674859367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="281.2191441074649" y="5640.884969097005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Arbitrating Funding event</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 5651.440023537004 L 681.4363205278399 5651.440023537004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5651.440023537004) translate(-703.1621409168399,-5651.440023537004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 5640.445175162004 L 703.1621409168399 5651.440023537004 L 681.1724441668399 5662.434871912004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="395.5703082775235" y="5691.021477687004" width="152.94847161613282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="399.5284536925235" y="5714.770350177005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Ctl Tx::Funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5725.325404617004 L 262.65276764333987 5725.325404617004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5725.325404617004) translate(-240.92694725433986,-5725.325404617004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5714.330556242004 L 240.92694725433986 5725.325404617004 L 262.91664400433984 5736.3202529920045 Z"/></g></g><g><g><rect fill="white" stroke="none" x="379.66479832879304" y="5764.906858767004" width="184.75949151359376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="383.62294374379303" y="5788.655731257005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Ctl FundingUpdated</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 5799.210785697004 L 681.4363205278399 5799.210785697004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5799.210785697004) translate(-703.1621409168399,-5799.210785697004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 5788.215937322004 L 703.1621409168399 5799.210785697004 L 681.1724441668399 5810.205634072005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="272.1523166393399" y="5838.792239847005" width="399.7844548925" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="276.1104620543399" y="5862.541112337005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5873.096166777004 L 262.65276764333987 5873.096166777004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5873.096166777004) translate(-240.92694725433986,-5873.096166777004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5862.101318402004 L 240.92694725433986 5873.096166777004 L 262.91664400433984 5884.091015152005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="289.67200047723054" y="5912.677620927005" width="364.74508721671873" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="293.63014589223053" y="5936.426493417005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5946.981547857004 L 262.65276764333987 5946.981547857004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5946.981547857004) translate(-240.92694725433986,-5946.981547857004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5935.986699482004 L 240.92694725433986 5946.981547857004 L 262.91664400433984 5957.976396232005 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 6008.112904822005 L 2611.80618195 6008.112904822005 M 13.19381805 6016.908783522004 L 2611.80618195 6016.908783522004 M 13.19381805 6025.704662222004 L 2611.80618195 6025.704662222004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1191.6453755610742 5986.563002007005 L 1433.3546244389258 5986.563002007005 L 1433.3546244389258 6047.254565037005 L 1191.6453755610742 6047.254565037005 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1228.5880661010742" y="6023.505692547004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Commit-Reveal Complete</text></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 6108.385922002005 L 2611.80618195 6108.385922002005 M 13.19381805 6117.181800702005 L 2611.80618195 6117.181800702005 M 13.19381805 6125.9776794020045 L 2611.80618195 6125.9776794020045" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 695.4003270381249 6086.836019187005 L 1929.599672961875 6086.836019187005 L 1929.599672961875 6147.527582217005 L 695.4003270381249 6147.527582217005 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="732.343017578125" y="6123.778709727005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Changing semantics: On Commit-Reveal, Maker and Taker were the key roles. From now on Bob or Alice are the key roles. Now t_ is bob_ on the left and m_ is alice_ on the right.</text></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 6208.658939182005 L 2611.80618195 6208.658939182005 M 13.19381805 6217.454817882005 L 2611.80618195 6217.454817882005 M 13.19381805 6226.250696582005 L 2611.80618195 6226.250696582005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1164.737744640664 6187.1090363670055 L 1460.262255359336 6187.1090363670055 L 1460.262255359336 6247.8005993970055 L 1164.737744640664 6247.8005993970055 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1201.680435180664" y="6224.051726907005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Swap setup: Bob is left, Alice right</text></g><g><g><rect fill="white" stroke="none" x="388.64119298211335" y="6287.382053547006" width="166.80670220695313" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="392.59933839711334" y="6311.130926037006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 6321.685980477006 L 681.4363205278399 6321.685980477006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,6321.685980477006) translate(-703.1621409168399,-6321.685980477006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 6310.691132102005 L 703.1621409168399 6321.685980477006 L 681.1724441668399 6332.680828852006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="308.9181184434415" y="6361.267434627006" width="154.85250909171876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="312.87626385844146" y="6385.016307117006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Arbitrating Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6395.571361557006 L 91.25242545076173 6395.571361557006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,6395.571361557006) translate(-69.52660506176173,-6395.571361557006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 6384.576513182005 L 69.52660506176173 6395.571361557006 L 91.51630181176174 6406.566209932006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="337.0283326768399" y="6435.152815707006" width="98.63208062492187" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="340.9864780918399" y="6458.9016881970065" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Cancel</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6469.456742637006 L 91.25242545076173 6469.456742637006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,6469.456742637006) translate(-69.52660506176173,-6469.456742637006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 6458.461894262005 L 69.52660506176173 6469.456742637006 L 91.51630181176174 6480.451591012006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="336.20871445174225" y="6509.038196787006" width="100.27131707511718" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="340.16685986674224" y="6532.787069277007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Refund</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6543.342123717006 L 91.25242545076173 6543.342123717006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,6543.342123717006) translate(-69.52660506176173,-6543.342123717006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 6532.347275342006 L 69.52660506176173 6543.342123717006 L 91.51630181176174 6554.336972092006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="940.8014092605256" y="6582.923577867006" width="176.5847936376172" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="944.7595546755256" y="6606.672450357007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6617.227504797006 L 1333.299650852828 6617.227504797006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,6617.227504797006) translate(-1355.0254712418282,-6617.227504797006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1333.0357744918283 6606.232656422006 L 1355.0254712418282 6617.227504797006 L 1333.0357744918283 6628.2223531720065 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1536.0557938626134" y="6656.808958947006" width="176.5847936376172" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1540.0139392776134" y="6680.557831437007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 6691.112885877006 L 1871.9450897320157 6691.112885877006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,6691.112885877006) translate(-1893.6709101210158,-6691.112885877006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1871.681213371016 6680.118037502006 L 1893.6709101210158 6691.112885877006 L 1871.681213371016 6702.107734252007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2145.294609322129" y="6730.694340027007" width="154.85250909171876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2149.252754737129" y="6754.443212517007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Arbitrating Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 6764.998266957006 L 2530.044997225961 6764.998266957006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,6764.998266957006) translate(-2551.7708176149613,-6764.998266957006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 6754.003418582006 L 2551.7708176149613 6764.998266957006 L 2529.7811208649614 6775.993115332007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2173.4048235555274" y="6804.579721107007" width="98.63208062492187" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2177.3629689705276" y="6828.328593597007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Cancel</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 6838.883648037006 L 2530.044997225961 6838.883648037006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,6838.883648037006) translate(-2551.7708176149613,-6838.883648037006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 6827.888799662006 L 2551.7708176149613 6838.883648037006 L 2529.7811208649614 6849.878496412007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2172.5852053304297" y="6878.465102187007" width="100.27131707511718" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2176.54335074543" y="6902.213974677007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Refund</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 6912.7690291170065 L 2530.044997225961 6912.7690291170065" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,6912.7690291170065) translate(-2551.7708176149613,-6912.7690291170065)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 6901.774180742006 L 2551.7708176149613 6912.7690291170065 L 2529.7811208649614 6923.763877492007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2034.4631816666604" y="6952.350483267007" width="176.5847936376172" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2038.4213270816604" y="6976.099355757007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 6986.654410197007 L 2330.114426460922 6986.654410197007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,6986.654410197007) translate(-2351.840246849922,-6986.654410197007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 6975.659561822006 L 2351.840246849922 6986.654410197007 L 2329.850550099922 6997.649258572007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2383.065616234922" y="7026.235864347006" width="129.33355767570313" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2387.023761649922" y="7049.9847368370065" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Checkpoint Alice 0</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 7060.539791277007 L 2457.390791249922 7060.539791277007 L 2457.390791249922 7094.8437182070065 L 2373.566067238922 7094.8437182070065" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="10.555054440000001"/><g transform="translate(2351.840246849922,7094.8437182070065) translate(-2351.840246849922,-7094.8437182070065)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2373.829943599922 7083.848869832006 L 2351.840246849922 7094.8437182070065 L 2373.829943599922 7105.838566582007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2015.3042766373635" y="7134.425172357007" width="214.90260369621095" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2019.2624220523635" y="7158.174044847007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 7168.729099287007 L 1915.396730510016 7168.729099287007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,7168.729099287007) translate(-1893.6709101210158,-7168.729099287007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 7157.734250912006 L 1893.6709101210158 7168.729099287007 L 1915.6606068710157 7179.723947662007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1512.0078431179845" y="7208.310553437007" width="224.680695126875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1515.9659885329845" y="7232.059425927007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 7242.614480367007 L 1376.7512916308283 7242.614480367007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,7242.614480367007) translate(-1355.0254712418282,-7242.614480367007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1377.015167991828 7231.619631992006 L 1355.0254712418282 7242.614480367007 L 1377.015167991828 7253.609328742007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="916.7534585158967" y="7282.195934517007" width="224.680695126875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="920.7116039308967" y="7305.9448070070075" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 7316.499861447007 L 724.8879613058399 7316.499861447007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,7316.499861447007) translate(-703.1621409168399,-7316.499861447007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 7305.5050130720065 L 703.1621409168399 7316.499861447007 L 725.1518376668399 7327.494709822007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="359.7041965221524" y="7356.081315597007" width="224.680695126875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="363.6623419371524" y="7379.830188087008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 7390.385242527007 L 262.65276764333987 7390.385242527007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,7390.385242527007) translate(-240.92694725433986,-7390.385242527007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 7379.390394152007 L 240.92694725433986 7390.385242527007 L 262.91664400433984 7401.380090902007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="359.7149310802579" y="7429.966696677007" width="224.65922601066407" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="363.6730764952579" y="7453.715569167008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Datum::SignedArbitratingLock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 7464.270623607007 L 681.4363205278399 7464.270623607007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,7464.270623607007) translate(-703.1621409168399,-7464.270623607007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 7453.275775232007 L 703.1621409168399 7464.270623607007 L 681.1724441668399 7475.2654719820075 Z"/></g></g><g><g><rect fill="white" stroke="none" x="272.15231663933986" y="7503.852077757007" width="123.6428075536328" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="276.11046205433985" y="7527.600950247007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Checkpoint Bob 0</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 7538.156004687007 L 346.4774916543399 7538.156004687007 L 346.4774916543399 7572.459931617007 L 262.65276764333987 7572.459931617007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="10.555054440000001"/><g transform="translate(240.92694725433986,7572.459931617007) translate(-240.92694725433986,-7572.459931617007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 7561.465083242007 L 240.92694725433986 7572.459931617007 L 262.91664400433984 7583.454779992007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="379.2639651989102" y="7612.041385767007" width="185.56115777335938" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="383.2221106139102" y="7635.790258257008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 7646.345312697007 L 681.4363205278399 7646.345312697007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,7646.345312697007) translate(-703.1621409168399,-7646.345312697007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 7635.350464322007 L 703.1621409168399 7646.345312697007 L 681.1724441668399 7657.3401610720075 Z"/></g></g><g><g><rect fill="white" stroke="none" x="296.41991898055085" y="7685.9267668470075" width="179.8489080175" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="300.37806439555084" y="7709.675639337008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast Arbitrating Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 7720.230693777007 L 91.25242545076173 7720.230693777007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,7720.230693777007) translate(-69.52660506176173,-7720.230693777007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 7709.235845402007 L 69.52660506176173 7720.230693777007 L 91.51630181176174 7731.225542152008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="309.32255264754303" y="7759.812147927008" width="154.04364068351563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="313.280698062543" y="7783.561020417008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Accordant Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 7794.116074857007 L 91.25242545076173 7794.116074857007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,7794.116074857007) translate(-69.52660506176173,-7794.116074857007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 7783.121226482007 L 69.52660506176173 7794.116074857007 L 91.51630181176174 7805.110923232008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="347.2144441270352" y="7833.697529007008" width="78.25985772453124" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="351.1725895420352" y="7857.446401497008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 7868.001455937007 L 91.25242545076173 7868.001455937007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,7868.001455937007) translate(-69.52660506176173,-7868.001455937007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 7857.006607562007 L 69.52660506176173 7868.001455937007 L 91.51630181176174 7878.996304312008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="315.976101841879" y="7907.582910087008" width="140.73654229484376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="319.93424725687896" y="7931.331782577008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Arbitrating Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 7941.886837017008 L 681.4363205278399 7941.886837017008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,7941.886837017008) translate(-703.1621409168399,-7941.886837017008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 7930.891988642007 L 703.1621409168399 7941.886837017008 L 681.1724441668399 7952.881685392008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2152.3525927205665" y="7907.582910087008" width="140.73654229484376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2156.3107381355667" y="7931.331782577008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Arbitrating Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 7941.886837017008 L 1915.396730510016 7941.886837017008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,7941.886837017008) translate(-1893.6709101210158,-7941.886837017008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 7930.891988642007 L 1893.6709101210158 7941.886837017008 L 1915.6606068710157 7952.881685392008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2145.6990435262305" y="7981.468291167008" width="154.04364068351563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2149.6571889412307" y="8005.217163657008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Accordant Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 8015.772218097008 L 2530.044997225961 8015.772218097008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,8015.772218097008) translate(-2551.7708176149613,-8015.772218097008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 8004.777369722007 L 2551.7708176149613 8015.772218097008 L 2529.7811208649614 8026.767066472008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2152.757026924668" y="8055.353672247008" width="139.92767388664063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2156.7151723396682" y="8079.102544737008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Accordant Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 8089.657599177008 L 1915.396730510016 8089.657599177008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,8089.657599177008) translate(-1893.6709101210158,-8089.657599177008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 8078.662750802007 L 1893.6709101210158 8089.657599177008 L 1915.6606068710157 8100.652447552008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="316.38053604598053" y="8055.353672247008" width="139.92767388664063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="320.3386814609805" y="8079.102544737008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Accordant Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 8089.657599177008 L 681.4363205278399 8089.657599177008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,8089.657599177008) translate(-703.1621409168399,-8089.657599177008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 8078.662750802007 L 703.1621409168399 8089.657599177008 L 681.1724441668399 8100.652447552008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="931.4241814773225" y="8129.239053327008" width="195.33924920402345" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="935.3823268923225" y="8152.9879258170085" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 8163.542980257008 L 1333.299650852828 8163.542980257008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,8163.542980257008) translate(-1355.0254712418282,-8163.542980257008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1333.0357744918283 8152.5481318820075 L 1355.0254712418282 8163.542980257008 L 1333.0357744918283 8174.537828632008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1526.6785660794103" y="8203.124434407007" width="195.33924920402345" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1530.6367114944103" y="8226.873306897007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 8237.428361337008 L 1871.9450897320157 8237.428361337008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,8237.428361337008) translate(-1893.6709101210158,-8237.428361337008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1871.681213371016 8226.433512962009 L 1893.6709101210158 8237.428361337008 L 1871.681213371016 8248.423209712008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2183.5909350057227" y="8277.009815487007" width="78.25985772453124" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2187.549080420723" y="8300.758687977006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 8311.313742417007 L 2530.044997225961 8311.313742417007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,8311.313742417007) translate(-2551.7708176149613,-8311.313742417007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 8300.318894042008 L 2551.7708176149613 8311.313742417007 L 2529.7811208649614 8322.308590792007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2025.0859538834573" y="8350.895196567006" width="195.33924920402345" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2029.0440992984572" y="8374.644069057005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 8385.199123497006 L 2330.114426460922 8385.199123497006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,8385.199123497006) translate(-2351.840246849922,-8385.199123497006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 8374.204275122007 L 2351.840246849922 8385.199123497006 L 2329.850550099922 8396.193971872006 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 8446.330480462006 L 2611.80618195 8446.330480462006 M 13.19381805 8455.126359162006 L 2611.80618195 8455.126359162006 M 13.19381805 8463.922237862007 L 2611.80618195 8463.922237862007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1202.6224644892968 8424.780577647005 L 1422.3775355107032 8424.780577647005 L 1422.3775355107032 8485.472140677006 L 1202.6224644892968 8485.472140677006 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1239.5651550292969" y="8461.723268187006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Swap Setup Complete</text></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 8546.603497642005 L 2611.80618195 8546.603497642005 M 13.19381805 8555.399376342006 L 2611.80618195 8555.399376342006 M 13.19381805 8564.195255042006 L 2611.80618195 8564.195255042006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1154.555226635293 8525.053594827004 L 1470.444773364707 8525.053594827004 L 1470.444773364707 8585.745157857005 L 1154.555226635293 8585.745157857005 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1191.497917175293" y="8561.996285367006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Buy Procedure: Bob is left, Alice right</text></g><g><g><rect fill="white" stroke="none" x="2065.830384425449" y="8625.326612007004" width="113.85038812003906" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2069.7885298404494" y="8649.075484497003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Fully signed buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 8659.630538937005 L 1915.396730510016 8659.630538937005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,8659.630538937005) translate(-1893.6709101210158,-8659.630538937005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 8648.635690562005 L 1893.6709101210158 8659.630538937005 L 1915.6606068710157 8670.625387312004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2171.905189766465" y="8699.211993087003" width="101.63134820304687" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2175.863335181465" y="8722.960865577003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 8733.515920017004 L 2530.044997225961 8733.515920017004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,8733.515920017004) translate(-2551.7708176149613,-8733.515920017004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 8722.521071642004 L 2551.7708176149613 8733.515920017004 L 2529.7811208649614 8744.510768392003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2123.823593391953" y="8773.097374167002" width="197.79454095207032" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2127.7817388069534" y="8796.846246657002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: buy seen on mempool</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 8807.401301097003 L 1915.396730510016 8807.401301097003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,8807.401301097003) translate(-1893.6709101210158,-8807.401301097003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 8796.406452722003 L 1893.6709101210158 8807.401301097003 L 1915.6606068710157 8818.396149472002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="287.4471025132657" y="8773.097374167002" width="197.79454095207032" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="291.4052479282657" y="8796.846246657002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: buy seen on mempool</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 8807.401301097003 L 681.4363205278399 8807.401301097003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,8807.401301097003) translate(-703.1621409168399,-8807.401301097003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 8796.406452722003 L 703.1621409168399 8807.401301097003 L 681.1724441668399 8818.396149472002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="412.27038914910554" y="8846.982755247001" width="119.54830987296874" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="416.22853456410553" y="8870.731627737001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Buy signature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 8881.286682177002 L 262.65276764333987 8881.286682177002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,8881.286682177002) translate(-240.92694725433986,-8881.286682177002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 8870.291833802003 L 240.92694725433986 8881.286682177002 L 262.91664400433984 8892.281530552002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="272.15231663933986" y="8920.868136327003" width="159.46952874503907" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="276.11046205433985" y="8944.617008817002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">recover accordant keys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 8955.172063257001 L 346.4774916543399 8955.172063257001 L 346.4774916543399 8989.475990187002 L 262.65276764333987 8989.475990187002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,8989.475990187002) translate(-240.92694725433986,-8989.475990187002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 8978.481141812003 L 240.92694725433986 8989.475990187002 L 262.91664400433984 9000.470838562002 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 9050.607347152001 L 2611.80618195 9050.607347152001 M 13.19381805 9059.403225852002 L 2611.80618195 9059.403225852002 M 13.19381805 9068.199104552003 L 2611.80618195 9068.199104552003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 946.9462254756249 9029.057444337 L 1678.053774524375 9029.057444337 L 1678.053774524375 9089.749007367001 L 946.9462254756249 9089.749007367001 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="983.888916015625" y="9066.000134877002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Cancel Init t &gt; t0: Bob is left, Alice right, either have a fully signed and valid cancel tx, and can publish</text></g><g><g><rect fill="white" stroke="none" x="331.46284195418366" y="9129.330461517" width="109.76306207023437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="335.42098736918365" y="9153.079334007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Cancel valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 9163.634388447 L 681.4363205278399 9163.634388447" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,9163.634388447) translate(-703.1621409168399,-9163.634388447)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 9152.639540072001 L 703.1621409168399 9163.634388447 L 681.1724441668399 9174.629236822 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2167.839332832871" y="9129.330461517" width="109.76306207023437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2171.7974782478714" y="9153.079334007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Cancel valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 9163.634388447 L 1915.396730510016 9163.634388447" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,9163.634388447) translate(-1893.6709101210158,-9163.634388447)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 9152.639540072001 L 1893.6709101210158 9163.634388447 L 1915.6606068710157 9174.629236822 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2124.6575548787696" y="9203.215842597" width="196.1266179784375" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2128.61570029377" y="9226.964715086999" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast cancel (Alice inits)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 9237.519769527 L 2530.044997225961 9237.519769527" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,9237.519769527) translate(-2551.7708176149613,-9237.519769527)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 9226.524921152 L 2551.7708176149613 9237.519769527 L 2529.7811208649614 9248.514617902 Z"/></g></g><g><g><rect fill="white" stroke="none" x="291.12643906111725" y="9203.215842597" width="190.4358678563672" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="295.08458447611724" y="9226.964715086999" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast cancel (Bob inits)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 9237.519769527 L 91.25242545076173 9237.519769527" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,9237.519769527) translate(-69.52660506176173,-9237.519769527)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 9226.524921152 L 69.52660506176173 9237.519769527 L 91.51630181176174 9248.514617902 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 9298.651126492 L 2611.80618195 9298.651126492 M 13.19381805 9307.447005192 L 2611.80618195 9307.447005192 M 13.19381805 9316.242883892 L 2611.80618195 9316.242883892" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1131.527310680703 9277.101223676998 L 1493.472689319297 9277.101223676998 L 1493.472689319297 9337.792786707 L 1131.527310680703 9337.792786707 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1168.4700012207031" y="9314.043914217" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Cancel detected t &gt; t0: Bob is left, Alice right</text></g><g><g><rect fill="white" stroke="none" x="324.9345750474454" y="9377.374240856998" width="122.81959588371093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="328.89272046244537" y="9401.123113346997" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event cancel final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 9411.678167786999 L 681.4363205278399 9411.678167786999" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,9411.678167786999) translate(-703.1621409168399,-9411.678167786999)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 9400.683319411999 L 703.1621409168399 9411.678167786999 L 681.1724441668399 9422.673016161998 Z"/></g></g><g><g><rect fill="white" stroke="none" x="326.56306168074616" y="9451.259621936997" width="119.56262261710937" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="330.52120709574615" y="9475.008494426997" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast refund</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 9485.563548866998 L 91.25242545076173 9485.563548866998" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,9485.563548866998) translate(-69.52660506176173,-9485.563548866998)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 9474.568700491998 L 69.52660506176173 9485.563548866998 L 91.51630181176174 9496.558397241997 Z"/></g></g><g><g><rect fill="white" stroke="none" x="320.8543977403165" y="9525.145003016996" width="130.97995049796876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="324.81254315531646" y="9548.893875506996" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: refund seen</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 9559.448929946997 L 681.4363205278399 9559.448929946997" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,9559.448929946997) translate(-703.1621409168399,-9559.448929946997)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 9548.454081571997 L 703.1621409168399 9559.448929946997 L 681.1724441668399 9570.443778321996 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2157.230888619004" y="9525.145003016996" width="130.97995049796876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2161.189034034004" y="9548.893875506996" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: refund seen</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 9559.448929946997 L 1915.396730510016 9559.448929946997" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,9559.448929946997) translate(-1893.6709101210158,-9559.448929946997)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 9548.454081571997 L 1893.6709101210158 9559.448929946997 L 1915.6606068710157 9570.443778321996 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2064.212617091465" y="9599.030384096995" width="117.0859227880078" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2068.170762506465" y="9622.779256586995" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Tx::Refund tx</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 9633.334311026996 L 2330.114426460922 9633.334311026996" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,9633.334311026996) translate(-2351.840246849922,-9633.334311026996)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 9622.339462651997 L 2351.840246849922 9633.334311026996 L 2329.850550099922 9644.329159401996 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2383.065616234922" y="9672.915765176997" width="159.46952874503907" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2387.023761649922" y="9696.664637666996" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">recover accordant keys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 9707.219692106995 L 2457.390791249922 9707.219692106995 L 2457.390791249922 9741.523619036996 L 2373.566067238922 9741.523619036996" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,9741.523619036996) translate(-2351.840246849922,-9741.523619036996)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2373.829943599922 9730.528770661997 L 2351.840246849922 9741.523619036996 L 2373.829943599922 9752.518467411996 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 9802.654976001995 L 2611.80618195 9802.654976001995 M 13.19381805 9811.450854701996 L 2611.80618195 9811.450854701996 M 13.19381805 9820.246733401997 L 2611.80618195 9820.246733401997" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1188.3633549922265 9781.105073186995 L 1436.6366450077735 9781.105073186995 L 1436.6366450077735 9841.796636216995 L 1188.3633549922265 9841.796636216995 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1225.3060455322266" y="9818.047763726996" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve"> Punish process t &gt; t1 &gt; t0 </text></g><g><g><rect fill="white" stroke="none" x="2146.2394869466407" y="9881.378090366994" width="152.96275384269532" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2150.197632361641" y="9905.126962856993" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Event: punish valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 9915.682017296995 L 1915.396730510016 9915.682017296995" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,9915.682017296995) translate(-1893.6709101210158,-9915.682017296995)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 9904.687168921995 L 1893.6709101210158 9915.682017296995 L 1915.6606068710157 9926.676865671994 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2046.2742015641213" y="9955.263471446993" width="152.96275384269532" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2050.2323469791213" y="9979.012343936993" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Event: punish valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 9989.567398376994 L 2330.114426460922 9989.567398376994" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,9989.567398376994) translate(-2351.840246849922,-9989.567398376994)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 9978.572550001994 L 2351.840246849922 9989.567398376994 L 2329.850550099922 10000.562246751993 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2383.065616234922" y="10029.148852526994" width="112.22546441398437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2387.023761649922" y="10052.897725016994" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">fully sign punish</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 10063.452779456993 L 2457.390791249922 10063.452779456993 L 2457.390791249922 10097.756706386994 L 2373.566067238922 10097.756706386994" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,10097.756706386994) translate(-2351.840246849922,-10097.756706386994)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2373.829943599922 10086.761858011994 L 2351.840246849922 10097.756706386994 L 2373.829943599922 10108.751554761993 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2073.1746837418555" y="10137.338160536992" width="99.16178948722656" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2077.1328291568557" y="10161.087033026992" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Tx::Punish</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 10171.642087466993 L 1915.396730510016 10171.642087466993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,10171.642087466993) translate(-1893.6709101210158,-10171.642087466993)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 10160.647239091993 L 1893.6709101210158 10171.642087466993 L 1915.6606068710157 10182.636935841992 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2143.390526070176" y="10211.223541616991" width="158.660675595625" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2147.348671485176" y="10234.972414106991" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Broadcast punish tx</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 10245.527468546992 L 2530.044997225961 10245.527468546992" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,10245.527468546992) translate(-2551.7708176149613,-10245.527468546992)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 10234.532620171993 L 2551.7708176149613 10245.527468546992 L 2529.7811208649614 10256.522316921992 Z"/></g></g></g><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/></g></svg>
\ No newline at end of file
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="2625" height="10337"><desc>title%20Farcaster%20node%0A%2F%2F%20to%20display%20the%20diagram%2C%20go%20to%20sequencediagram.org%0A%2F%2F%20dashed%20lines%2C%20not%20yet%20implemented%0A%0Aparticipant%20t_syncer%0Aparticipant%20t_wallet%0Aparticipant%20t_swap%0Aparticipant%20t_farcasterd%0Aparticipant%20t_cli%0Aparticipant%20peerd%0Aparticipant%20m_cli%0Aparticipant%20m_farcasterd%0Aparticipant%20m_swap%0Aparticipant%20m_wallet%0Aparticipant%20m_syncer%0A%0A%3D%3DSetup%20and%20Commit-Reveal%3A%20Bob%20and%20Alice%20can%20be%20on%20both%20sides%3D%3D%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20launch%20farcasterd%5Cnmanually%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20launch%20walletd%0Am_farcasterd%20%3C-%20m_wallet%20%3A%20Ctl%20Hello%0Am_cli%20-%3E%20m_farcasterd%20%3A%20MakeOffer%20(deferred)%0Am_farcasterd%20-%3E%20m_wallet%20%3A%20Ctl%20GetKeys%0Am_farcasterd%20%3C-%20m_wallet%20%3A%20Ctl%20Keys%20(not%20to%20be%20held%20on%20state)%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20MakeOffer%20(continues)%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20launch%5Cnpeerd%20listen%0At_farcasterd%20-%3E%20t_farcasterd%20%3A%20launch%20farcasterd%5Cnmanually%0At_farcasterd%20-%3E%20t_farcasterd%20%3A%20launch%20walletd%0At_wallet%20-%3E%20t_farcasterd%20%3A%20Ctl%20Hello%0At_cli%20-%3E%20t_farcasterd%20%3A%20Ctl%20TakeOffer%20(deferred)%0At_wallet%20%3C-%20t_farcasterd%20%3A%20Ctl%20GetKeys%0At_wallet%20-%3E%20t_farcasterd%20%3A%20Ctl%20Keys%20(not%20to%20be%20held%20on%20state)%0At_farcasterd%20%3C-%20t_farcasterd%20%3A%20Ctl%20TakeOffer%20(continues)%0At_farcasterd%20-%3E%20t_farcasterd%20%3A%20launch%5Cnpeerd%20connect%0At_wallet%20%3C-%20t_farcasterd%20%3A%20Ctl%20TakeOffer%0At_wallet%20-%3E%20t_wallet%20%3A%20create%20taker%20wallet%0At_wallet%20-%3E%20t_farcasterd%20%3A%20Ctl%20LaunchSwap%0At_swap%20-%3E%20t_farcasterd%20%3A%20Ctl%20Hello%0At_farcasterd%20-%3E%20t_farcasterd%3Alaunch%20syncer%0At_swap%20%3C-%20t_farcasterd%20%3A%20Ctl%20TakeSwap%0At_swap%20-%3E%20peerd%20%3A%20Msg%20TakerCommit%0Apeerd%20-%3E%20m_farcasterd%20%3A%20Msg%20TakerCommit%0Am_farcasterd%20-%3E%20m_wallet%20%3A%20Ctl%20BitcoinAddress%0Am_farcasterd%20-%3E%20m_wallet%20%3A%20Msg%20TakerCommit%0Am_wallet%20-%3E%20m_wallet%20%3A%20create%20maker%20wallet%0Am_wallet%20-%3E%20m_farcasterd%20%3A%20Ctl%20LaunchSwap%0Am_swap%20-%3E%20m_farcasterd%20%3A%20Ctl%20Hello%0Am_farcasterd%20-%3E%20m_farcasterd%3Alaunch%20syncer%0Am_farcasterd%20-%3E%20m_swap%20%3A%20Ctl%20MakeSwap%0A%0Am_swap%20-%3E%20peerd%20%3A%20Msg%20MakerCommit%0At_swap%20%3C-%20peerd%20%3A%20Msg%20MakerCommit%0A%2F%2F%20TODO%3A%20verify%20that%20swapd%20launches%20no%20matter%20what%0At_syncer%20%3C-%20t_swap%20%3A%20Ctl%20WatchHeight%0At_syncer%20%3C-%20t_swap%20%3A%20if%20Bob%2C%20Watch%20Arbitrating%20Funding%20Address%0At_swap%20-%3E%20t_wallet%20%3A%20Msg%20MakerCommit%0At_wallet%20-%3E%20t_swap%20%3A%20Ctl%20RevealProof%20(taker%20is%20sender)%0At_swap%20-%3E%20peerd%20%3A%20Msg%20RevealProof%20(taker%20is%20sender)%0At_swap%20-%3E%20peerd%20%3A%20Msg%20Reveal%20(taker%20is%20sender)%0Apeerd%20-%3E%20m_swap%20%3A%20Msg%20RevealProof%20(taker%20is%20sender)%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Alice%2C%20Msg%20RevealProof%20(taker%20is%20sender)%20%0Am_swap%20-%3E%20m_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20RevealProof%0Apeerd%20-%3E%20m_swap%20%3A%20Msg%20Reveal%20(taker%20is%20sender)%0Am_swap%20-%3E%20m_farcasterd%20%3A%20if%20Bob%2C%20ask%20for%20funding%0Am_swap%20-%3E%20m_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20Reveal%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Alice%2C%20Msg%20Reveal%20(taker%20is%20sender)%0A%0Am_swap-%3Em_syncer%3ACtl%20WatchHeight%0Am_swap%20-%3E%20m_syncer%3Aif%20Bob%2C%20Watch%20Arbitrating%20Funding%20Address%0Am_swap%20%3C-%20m_syncer%3AIf%20Bob%2C%20Arbitrating%20Funding%20event%0Am_swap-%3Em_wallet%3Aif%20Bob%2C%20Ctl%20Tx%3A%3AFunding%0Am_swap%3C-m_wallet%3AIf%20Bob%2C%20Ctl%20FundingUpdated%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20RevealProof%20(taker%20is%20sender)%20%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20Reveal%20(taker%20is%20sender)%0Am_wallet%20-%3E%20m_swap%20%3A%20Ctl%20RevealProof%20(maker%20is%20sender)%0Apeerd%20%3C-%20m_swap%20%3A%20Msg%20RevealProof%20(maker%20is%20sender)%0Apeerd%20%3C-%20m_swap%20%3A%20Msg%20Reveal%20(maker%20is%20sender)%0Apeerd%20-%3E%20t_swap%20%3A%20Msg%20RevealProof%20(maker%20is%20sender)%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Alice%2C%20Msg%20RevealProof%20(maker%20is%20sender)%0At_swap%20-%3E%20t_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20RevealProof%0Apeerd%20-%3E%20t_swap%20%3A%20Msg%20Reveal%20(maker%20is%20sender)%0At_swap%20-%3E%20t_farcasterd%20%3A%20if%20Bob%2C%20ask%20for%20funding%0At_swap%20-%3E%20t_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20Reveal%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Alice%2C%20Msg%20Reveal%20(maker%20is%20sender)%0At_syncer%20-%3E%20t_swap%3AIf%20Bob%2C%20Arbitrating%20Funding%20event%0At_swap-%3Et_wallet%3Aif%20Bob%2C%20Ctl%20Tx%3A%3AFunding%0At_swap%3C-t_wallet%3AIf%20Bob%2C%20Ctl%20FundingUpdated%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20RevealProof%20(maker%20is%20sender)%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20Reveal%20(maker%20is%20sender)%0A%3D%3DCommit-Reveal%20Complete%3D%3D%0A%3D%3DChanging%20semantics%3A%20On%20Commit-Reveal%2C%20Maker%20and%20Taker%20were%20the%20key%20roles.%20From%20now%20on%20Bob%20or%20Alice%20are%20the%20key%20roles.%20Now%20t_%20is%20bob_%20on%20the%20left%20and%20m_%20is%20alice_%20on%20the%20right.%3D%3D%0A%3D%3DSwap%20setup%3A%20Bob%20is%20left%2C%20Alice%20right%3D%3D%0At_wallet%20-%3E%20t_swap%20%3A%20Ctl%20CoreArbitratingSetup%0A%2F%2F%20TODO%3A%20During%20replay%20of%20Checkpoint%20Bob%200%2C%20Bob%20has%20to%20rewatch%20these%203%20txs%0At_syncer%20%3C-%20t_swap%20%3A%20Watch%20Arbitrating%20Lock%0At_syncer%20%3C-%20t_swap%20%3A%20Watch%20Cancel%0At_syncer%20%3C-%20t_swap%20%3A%20Watch%20Refund%0Apeerd%20%3C-%20t_swap%20%3A%20Msg%20CoreArbitratingSetup%0Am_swap%20%3C-%20peerd%20%3A%20Msg%20CoreArbitratingSetup%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Arbitrating%20Lock%0A%2F%2F%20TODO%3A%20During%20replay%20of%20Checkpoint%20Alice%200%2C%20Alice%20has%20to%20rewatch%20these%202%20txs%20(arbitrating%20already%20final%20then)%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Cancel%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Refund%0A%0Am_wallet%20%3C-%20m_swap%20%3A%20Msg%20CoreArbitratingSetup%0Am_wallet%20--%3E%20m_wallet%20%3A%20Checkpoint%20Alice%200%0Am_wallet%20-%3E%20m_swap%20%3A%20Ctl%20RefundProcedureSignatures%0Am_swap%20-%3E%20peerd%20%3A%20Msg%20RefundProcedureSignatures%0Apeerd%20-%3E%20t_swap%20%3A%20Msg%20RefundProcedureSignatures%0At_wallet%20%3C-%20t_swap%20%3A%20Msg%20RefundProcedureSignatures%0At_wallet%20-%3E%20t_swap%3ACtl%20Datum%3A%3ASignedArbitratingLock%0A%2F%2F%20DONE%3A%20do%20we%20know%20that%20same%20inputs%20are%20being%20used%20in%20case%20of%20replay%3F%0A%2F%2F%20-%3E%20yes%2C%20but%20create%20different%20sig%0At_wallet%20--%3E%20t_wallet%20%3A%20Checkpoint%20Bob%200%0At_wallet%20-%3E%20t_swap%20%3A%20Ctl%20BuyProcedureSignature%0At_syncer%20%3C-%20t_swap%20%3A%20Broadcast%20Arbitrating%20Lock%0At_swap%20-%3E%20t_syncer%20%3A%20Watch%20Accordant%20Lock%0At_swap%20-%3E%20t_syncer%20%3A%20Watch%20Buy%0A%0Aparallel%0At_syncer%20-%3E%20%20t_swap%20%3A%20Arbitrating%20Lock%20final%0A%2F%2F%20TODO%3A%20maybe%20instead%20of%20checkpointing%20earlier%2C%20reach%20this%20stage%20via%20a%20message%20from%20walletd%20in%20lieu%20of%20the%20syncer%0Am_swap%20%3C-%20m_syncer%20%3A%20Arbitrating%20Lock%20final%0Aparallel%20off%0A%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Accordant%20Lock%0A%0Aparallel%0Am_swap%20%3C-%20m_syncer%20%3A%20Accordant%20Lock%20final%0At_swap%20%3C-%20t_syncer%20%3A%20Accordant%20Lock%20final%0Aparallel%20off%0A%0Apeerd%20%3C-%20t_swap%20%3A%20Msg%20BuyProcedureSignature%0Am_swap%20%3C-%20peerd%20%3A%20Msg%20BuyProcedureSignature%0Am_swap%20-%3E%20m_syncer%3AWatch%20Buy%0Am_swap%20-%3E%20m_wallet%20%3A%20Msg%20BuyProcedureSignature%0A%3D%3DSwap%20Setup%20Complete%3D%3D%0A%3D%3DBuy%20Procedure%3A%20Bob%20is%20left%2C%20Alice%20right%3D%3D%0A%0Am_swap%20%3C-%20m_wallet%20%3A%20Fully%20signed%20buy%0Am_swap%20-%3E%20m_syncer%20%3A%20Broadcast%20buy%0Aparallel%0Am_swap%20%3C-%20m_syncer%20%3A%20Event%3A%20buy%20seen%20on%20mempool%0At_swap%20%3C-%20t_syncer%20%3A%20Event%3A%20buy%20seen%20on%20mempool%0Aparallel%20off%0At_wallet%20%3C-%20t_swap%20%3A%20Ctl%20Buy%20signature%0At_wallet%20-%3E%20t_wallet%20%3A%20recover%20accordant%20keys%0A%0A%3D%3DCancel%20Init%20t%20%3E%20t0%3A%20Bob%20is%20left%2C%20Alice%20right%2C%20either%20have%20a%20fully%20signed%20and%20valid%20cancel%20tx%2C%20and%20can%20publish%3D%3D%0A%2F%2F%20TODO%3A%20insert%20Ctl%20Tx%3A%3ACancel%20from%20wallet%20to%20swap%20(or%20do%20it%20after%20CoreArbitratingSetup%2C%20as%20in%20the%20code%20atm)%0Aparallel%0At_swap%20%3C-%20t_syncer%20%3A%20Ctl%20Cancel%20valid%0Am_swap%20%3C-%20m_syncer%20%3A%20Ctl%20Cancel%20valid%0Aparallel%20off%0Aparallel%0Am_swap%20-%3E%20m_syncer%20%3A%20Broadcast%20cancel%20(Alice%20inits)%0At_swap%20-%3E%20t_syncer%20%3A%20Broadcast%20cancel%20(Bob%20inits)%0Aparallel%20off%0A%3D%3DCancel%20detected%20t%20%3E%20t0%3A%20Bob%20is%20left%2C%20Alice%20right%3D%3D%0At_swap%20%3C-%20t_syncer%3A%20Event%20cancel%20final%0At_swap%20-%3E%20t_syncer%20%3A%20Broadcast%20refund%0Aparallel%0At_syncer%20-%3E%20t_swap%20%3A%20Event%3A%20refund%20seen%0Am_syncer%20-%3E%20m_swap%20%3A%20Event%3A%20refund%20seen%0Aparallel%20off%0Am_swap%20-%3E%20m_wallet%20%3A%20Ctl%20Tx%3A%3ARefund%20tx%0Am_wallet%20-%3E%20m_wallet%20%3A%20recover%20accordant%20keys%0A%0A%3D%3D%20Punish%20process%20t%20%3E%20t1%20%3E%20t0%20%3D%3D%0A%2F%2F%20TODO%3A%20none%20of%20this%20is%20true%20except%20last%20step%0Am_swap%3C-m_syncer%3ACtl%20Event%3A%20punish%20valid%0Am_swap-%3Em_wallet%3ACtl%20Event%3A%20punish%20valid%0Am_wallet-%3Em_wallet%3Afully%20sign%20punish%0A%2F%2F%20TODO%3A%20in%20the%20code%2C%20this%20actually%20already%20happens%20after%20CoreArbitratingSetup%20-%20think%20about%20this%20and%20move%20either%20this%20or%20that%0Am_swap%3C-m_wallet%3ACtl%20Tx%3A%3APunish%0Am_swap-%3Em_syncer%3ACtl%20Broadcast%20punish%20tx%0A</desc><defs/><g><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g><rect fill="white" stroke="none" x="0" y="0" width="2625" height="10337"/></g><g><text fill="black" stroke="none" font-family="sans-serif" font-size="16.5pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1238.7019835856759" y="39.58145414999999" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Farcaster node</text></g><g/><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 154.895423907 L 69.52660506176173 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 154.895423907 L 240.92694725433986 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 154.895423907 L 703.1621409168399 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 154.895423907 L 1015.5050499387149 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1239.594293283832 154.895423907 L 1239.594293283832 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 154.895423907 L 1355.0254712418282 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1474.5260843194533 154.895423907 L 1474.5260843194533 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 154.895423907 L 1681.5072344028517 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 154.895423907 L 1893.6709101210158 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 154.895423907 L 2351.840246849922 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 154.895423907 L 2551.7708176149613 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/></g><g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 13.193818050000004 83.648806437 L 125.85939207352345 83.648806437 L 125.85939207352345 154.895423907 L 13.193818050000004 154.895423907 L 13.193818050000004 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="41.82440321850001" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_syncer</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 187.44311348964845 83.648806437 L 294.4107810190313 83.648806437 L 294.4107810190313 154.895423907 L 187.44311348964845 154.895423907 L 187.44311348964845 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="216.07369865814846" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_wallet</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 651.3067937854493 83.648806437 L 755.0174880482305 83.648806437 L 755.0174880482305 154.895423907 L 651.3067937854493 154.895423907 L 651.3067937854493 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="679.9373789539493" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_swap</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 948.1701190670899 83.648806437 L 1082.83998081034 83.648806437 L 1082.83998081034 154.895423907 L 948.1701190670899 154.895423907 L 948.1701190670899 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="976.8007042355899" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_farcasterd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1197.9286434180665 83.648806437 L 1281.2599431495978 83.648806437 L 1281.2599431495978 154.895423907 L 1197.9286434180665 154.895423907 L 1197.9286434180665 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1226.5592285865664" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_cli</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1307.6475792495978 83.648806437 L 1402.4033632340588 83.648806437 L 1402.4033632340588 154.895423907 L 1307.6475792495978 154.895423907 L 1307.6475792495978 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1336.2781644180977" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">peerd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1428.7909993340588 83.648806437 L 1520.261169304848 83.648806437 L 1520.261169304848 154.895423907 L 1428.7909993340588 154.895423907 L 1428.7909993340588 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1457.4215845025587" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_cli</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1610.102868411598 83.648806437 L 1752.9116003941058 83.648806437 L 1752.9116003941058 154.895423907 L 1610.102868411598 154.895423907 L 1610.102868411598 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1638.7334535800978" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_farcasterd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1837.7461278699964 83.648806437 L 1949.5956923720355 83.648806437 L 1949.5956923720355 154.895423907 L 1837.7461278699964 154.895423907 L 1837.7461278699964 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1866.3767130384963" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_swap</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 2294.2869779656016 83.648806437 L 2409.393515734242 83.648806437 L 2409.393515734242 154.895423907 L 2294.2869779656016 154.895423907 L 2294.2869779656016 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2322.917563134102" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_wallet</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 2491.3685954835705 83.648806437 L 2612.1730397463516 83.648806437 L 2612.1730397463516 154.895423907 L 2491.3685954835705 154.895423907 L 2491.3685954835705 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2519.9991806520707" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_syncer</text></g></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 229.22059892200002 L 2611.80618195 229.22059892200002 M 13.19381805 238.01647762200002 L 2611.80618195 238.01647762200002 M 13.19381805 246.81235632200003 L 2611.80618195 246.81235632200003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1070.6038792842187 207.67069610700003 L 1554.3961207157813 207.67069610700003 L 1554.3961207157813 268.362259137 L 1070.6038792842187 268.362259137 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1107.5465698242188" y="244.61338664700003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Setup and Commit-Reveal: Bob and Alice can be on both sides</text></g><g><g><rect fill="white" stroke="none" x="1712.7326037878515" y="307.94371328700004" width="120.3714910253125" height="34.30392693"/></g><g><rect fill="white" stroke="none" x="1712.7326037878515" y="334.33134938700005" width="66.58483941398437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028515" y="331.69258577700003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch farcasterd</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028515" y="358.08022187700004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">manually</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 368.63527631700003 L 1787.0577788028518 368.63527631700003 L 1787.0577788028518 402.939203247 L 1703.2330547918518 402.939203247" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,402.939203247) translate(-1681.5072344028517,-402.939203247)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 391.944354872 L 1681.5072344028517 402.939203247 L 1703.4969311528516 413.934051622 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1712.7326037878515" y="442.52065739700004" width="100.82247979484374" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028515" y="466.26952988700003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch walletd</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 476.824584327 L 1787.0577788028518 476.824584327 L 1787.0577788028518 511.128511257 L 1703.2330547918518 511.128511257" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,511.128511257) translate(-1681.5072344028517,-511.128511257)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 500.133662882 L 1681.5072344028517 511.128511257 L 1703.4969311528516 522.123359632 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1985.0169639247658" y="550.709965407" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1988.9751093397658" y="574.4588378970001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 585.013892337 L 1703.2330547918518 585.013892337" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,585.013892337) translate(-1681.5072344028517,-585.013892337)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 574.0190439620001 L 1681.5072344028517 585.013892337 L 1703.4969311528516 596.008740712 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1505.7514537044533" y="624.595346487" width="144.53041131339845" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1509.7095991194533" y="648.3442189770001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">MakeOffer (deferred)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1474.5260843194533 658.899273417 L 1659.7814140138516 658.899273417" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,658.899273417) translate(-1681.5072344028517,-658.899273417)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1659.5175376528518 647.9044250420001 L 1681.5072344028517 658.899273417 L 1659.5175376528518 669.894121792 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1973.6103782314065" y="698.480727567" width="86.12672478996093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1977.5685236464064" y="722.2296000570001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl GetKeys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 732.784654497 L 2330.114426460922 732.784654497" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,732.784654497) translate(-2351.840246849922,-732.784654497)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 721.7898061220001 L 2351.840246849922 732.784654497 L 2329.850550099922 743.779502872 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1905.9654578822854" y="772.366108647" width="221.41656548820313" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1909.9236032972854" y="796.1149811370001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Keys (not to be held on state)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 806.670035577 L 1703.2330547918518 806.670035577" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,806.670035577) translate(-1681.5072344028517,-806.670035577)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 795.6751872020001 L 1681.5072344028517 806.670035577 L 1703.4969311528516 817.664883952 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1712.7326037878515" y="846.251489727" width="152.68359429679688" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028515" y="870.0003622170001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">MakeOffer (continues)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 880.555416657 L 1787.0577788028518 880.555416657 L 1787.0577788028518 914.859343587 L 1703.2330547918518 914.859343587" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,914.859343587) translate(-1681.5072344028517,-914.859343587)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 903.8644952120001 L 1681.5072344028517 914.859343587 L 1703.4969311528516 925.854191962 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1712.7326037878515" y="954.4407977369999" width="51.11598260246094" height="34.30392693"/></g><g><rect fill="white" stroke="none" x="1712.7326037878515" y="980.8284338369999" width="83.70723016105468" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028515" y="978.189670227" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028515" y="1004.577306327" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">peerd listen</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 1015.1323607669999 L 1787.0577788028518 1015.1323607669999 L 1787.0577788028518 1049.436287697 L 1703.2330547918518 1049.436287697" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,1049.436287697) translate(-1681.5072344028517,-1049.436287697)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 1038.441439322 L 1681.5072344028517 1049.436287697 L 1703.4969311528516 1060.4311360719998 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="1089.017741847" width="120.3714910253125" height="34.30392693"/></g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="1115.405377947" width="66.58483941398437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="1112.766614337" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch farcasterd</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="1139.154250437" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">manually</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 1149.709304877 L 1121.0555943387149 1149.709304877 L 1121.0555943387149 1184.013231807 L 1037.230870327715 1184.013231807" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,1184.013231807) translate(-1015.5050499387149,-1184.013231807)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1037.494746688715 1173.018383432 L 1015.5050499387149 1184.013231807 L 1037.494746688715 1195.008080182 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="1223.5946859570001" width="100.82247979484374" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="1247.343558447" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch walletd</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 1257.8986128870001 L 1121.0555943387149 1257.8986128870001 L 1121.0555943387149 1292.2025398170001 L 1037.230870327715 1292.2025398170001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,1292.2025398170001) translate(-1015.5050499387149,-1292.2025398170001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1037.494746688715 1281.2076914420002 L 1015.5050499387149 1292.2025398170001 L 1037.494746688715 1303.197388192 Z"/></g></g><g><g><rect fill="white" stroke="none" x="596.5592218949063" y="1331.783993967" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="600.5173673099063" y="1355.532866457" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 1366.087920897 L 993.779229549715 1366.087920897" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,1366.087920897) translate(-1015.5050499387149,-1366.087920897)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 1355.093072522 L 1015.5050499387149 1366.087920897 L 993.5153531887149 1377.082769272 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="1405.6693750470001" width="161.6385045751172" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="1429.418247537" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeOffer (deferred)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1239.594293283832 1439.9733019770001 L 1037.230870327715 1439.9733019770001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,1439.9733019770001) translate(-1015.5050499387149,-1439.9733019770001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1037.494746688715 1428.9784536020002 L 1015.5050499387149 1439.9733019770001 L 1037.494746688715 1450.968150352 Z"/></g></g><g><g><rect fill="white" stroke="none" x="585.1526362015469" y="1479.5547561270002" width="86.12672478996093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="589.1107816165469" y="1503.3036286170002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl GetKeys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 1513.8586830570002 L 262.65276764333987 1513.8586830570002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,1513.8586830570002) translate(-240.92694725433986,-1513.8586830570002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 1502.8638346820003 L 240.92694725433986 1513.8586830570002 L 262.91664400433984 1524.8535314320002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="517.5077158524258" y="1553.4401372070004" width="221.41656548820313" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="521.4658612674258" y="1577.1890096970003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Keys (not to be held on state)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 1587.7440641370004 L 993.779229549715 1587.7440641370004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,1587.7440641370004) translate(-1015.5050499387149,-1587.7440641370004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 1576.7492157620004 L 1015.5050499387149 1587.7440641370004 L 993.5153531887149 1598.7389125120003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="1627.3255182870005" width="169.79168755851563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="1651.0743907770004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeOffer (continues)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 1661.6294452170005 L 1121.0555943387149 1661.6294452170005 L 1121.0555943387149 1695.9333721470005 L 1037.230870327715 1695.9333721470005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,1695.9333721470005) translate(-1015.5050499387149,-1695.9333721470005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1037.494746688715 1684.9385237720005 L 1015.5050499387149 1695.9333721470005 L 1037.494746688715 1706.9282205220004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="1735.5148262970004" width="51.11598260246094" height="34.30392693"/></g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="1761.9024623970004" width="100.82963616691406" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="1759.2636987870003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="1785.6513348870003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">peerd connect</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 1796.2063893270004 L 1121.0555943387149 1796.2063893270004 L 1121.0555943387149 1830.5103162570003 L 1037.230870327715 1830.5103162570003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,1830.5103162570003) translate(-1015.5050499387149,-1830.5103162570003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1037.494746688715 1819.5154678820004 L 1015.5050499387149 1830.5103162570003 L 1037.494746688715 1841.5051646320003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="581.6164805008633" y="1870.0917704070005" width="93.19903619132812" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="585.5746259158633" y="1893.8406428970004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeOffer</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 1904.3956973370005 L 262.65276764333987 1904.3956973370005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,1904.3956973370005) translate(-240.92694725433986,-1904.3956973370005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 1893.4008489620005 L 240.92694725433986 1904.3956973370005 L 262.91664400433984 1915.3905457120004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="272.15231663933986" y="1943.9771514870006" width="126.87829644523437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="276.11046205433985" y="1967.7260239770005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">create taker wallet</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 1978.2810784170006 L 346.4774916543399 1978.2810784170006 L 346.4774916543399 2012.5850053470006 L 262.65276764333987 2012.5850053470006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,2012.5850053470006) translate(-240.92694725433986,-2012.5850053470006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 2001.5901569720006 L 240.92694725433986 2012.5850053470006 L 262.91664400433984 2023.5798537220005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="570.8791987015469" y="2052.1664594970002" width="114.67359978996093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="574.8373441165469" y="2075.915331987" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl LaunchSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 2086.4703864270004 L 993.779229549715 2086.4703864270004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,2086.4703864270004) translate(-1015.5050499387149,-2086.4703864270004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 2075.4755380520005 L 1015.5050499387149 2086.4703864270004 L 993.5153531887149 2097.4652348020004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="827.6768187261564" y="2126.0518405770003" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="831.6349641411564" y="2149.8007130670003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 2160.3557675070006 L 993.779229549715 2160.3557675070006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,2160.3557675070006) translate(-1015.5050499387149,-2160.3557675070006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 2149.3609191320006 L 1015.5050499387149 2160.3557675070006 L 993.5153531887149 2171.3506158820005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="2199.9372216570005" width="98.36720330558593" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="2223.6860941470004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch syncer</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 2234.241148587 L 1121.0555943387149 2234.241148587 L 1121.0555943387149 2268.5450755170004 L 1037.230870327715 2268.5450755170004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,2268.5450755170004) translate(-1015.5050499387149,-2268.5450755170004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1037.494746688715 2257.5502271420005 L 1015.5050499387149 2268.5450755170004 L 1037.494746688715 2279.5399238920004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="810.5615690923673" y="2308.1265296670003" width="97.5440526708203" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="814.5197145073673" y="2331.8754021570003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 2342.4304565970006 L 724.8879613058399 2342.4304565970006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,2342.4304565970006) translate(-703.1621409168399,-2342.4304565970006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 2331.4356082220006 L 703.1621409168399 2342.4304565970006 L 725.1518376668399 2353.4253049720005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="966.080553547635" y="2382.0119107470005" width="126.02650506339843" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="970.038698962635" y="2405.7607832370004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg TakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 2416.3158376770007 L 1333.299650852828 2416.3158376770007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,2416.3158376770007) translate(-1355.0254712418282,-2416.3158376770007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1333.0357744918283 2405.3209893020007 L 1355.0254712418282 2416.3158376770007 L 1333.0357744918283 2427.3106860520006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1455.2531002906408" y="2455.8972918270006" width="126.02650506339843" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1459.2112457056407" y="2479.6461643170005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg TakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 2490.201218757001 L 1659.7814140138516 2490.201218757001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,2490.201218757001) translate(-1681.5072344028517,-2490.201218757001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1659.5175376528518 2479.206370382001 L 1681.5072344028517 2490.201218757001 L 1659.5175376528518 2501.1960671320007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1952.8301581996682" y="2529.7826729070007" width="127.6871648534375" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1956.7883036146682" y="2553.5315453970006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl BitcoinAddress</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 2564.086599837001 L 2330.114426460922 2564.086599837001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,2564.086599837001) translate(-2351.840246849922,-2564.086599837001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 2553.091751462001 L 2351.840246849922 2564.086599837001 L 2329.850550099922 2575.081448212001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1953.6604880946877" y="2603.668053987001" width="126.02650506339843" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1957.6186335096877" y="2627.4169264770007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg TakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 2637.971980917001 L 2330.114426460922 2637.971980917001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,2637.971980917001) translate(-2351.840246849922,-2637.971980917001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 2626.977132542001 L 2351.840246849922 2637.971980917001 L 2329.850550099922 2648.966829292001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2383.065616234922" y="2677.553435067001" width="135.0171666844922" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2387.023761649922" y="2701.302307557001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">create maker wallet</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 2711.8573619970007 L 2457.390791249922 2711.8573619970007 L 2457.390791249922 2746.161288927001 L 2373.566067238922 2746.161288927001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,2746.161288927001) translate(-2351.840246849922,-2746.161288927001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2373.829943599922 2735.166440552001 L 2351.840246849922 2746.161288927001 L 2373.829943599922 2757.156137302001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1959.3369407314065" y="2785.742743077001" width="114.67359978996093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1963.2950861464064" y="2809.4916155670007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl LaunchSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 2820.046670007001 L 1703.2330547918518 2820.046670007001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,2820.046670007001) translate(-1681.5072344028517,-2820.046670007001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 2809.051821632001 L 1681.5072344028517 2820.046670007001 L 1703.4969311528516 2831.041518382001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1755.9322955603127" y="2859.628124157001" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1759.8904409753127" y="2883.376996647001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 2893.932051087001 L 1703.2330547918518 2893.932051087001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,2893.932051087001) translate(-1681.5072344028517,-2893.932051087001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 2882.937202712001 L 1681.5072344028517 2893.932051087001 L 1703.4969311528516 2904.926899462001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1712.7326037878515" y="2933.513505237001" width="98.36720330558593" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028515" y="2957.262377727001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch syncer</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 2967.817432167001 L 1787.0577788028518 2967.817432167001 L 1787.0577788028518 3002.121359097001 L 1703.2330547918518 3002.121359097001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,3002.121359097001) translate(-1681.5072344028517,-3002.121359097001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 2991.126510722001 L 1681.5072344028517 3002.121359097001 L 1703.4969311528516 3013.116207472001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1736.37610506959" y="3041.702813247001" width="102.4259343846875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1740.33425048459" y="3065.451685737001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl MakeSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 3076.006740177001 L 1871.9450897320157 3076.006740177001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,3076.006740177001) translate(-1893.6709101210158,-3076.006740177001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1871.681213371016 3065.011891802001 L 1893.6709101210158 3076.006740177001 L 1871.681213371016 3087.001588552001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1558.8939972927892" y="3115.588194327001" width="130.90838677726563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1562.8521427077892" y="3139.337066817001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg MakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 3149.8921212570012 L 1376.7512916308283 3149.8921212570012" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,3149.8921212570012) translate(-1355.0254712418282,-3149.8921212570012)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1377.015167991828 3138.8972728820013 L 1355.0254712418282 3149.8921212570012 L 1377.015167991828 3160.886969632001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="963.6396126907014" y="3189.473575407001" width="130.90838677726563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="967.5977581057014" y="3213.222447897001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg MakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 3223.7775023370014 L 724.8879613058399 3223.7775023370014" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,3223.7775023370014) translate(-703.1621409168399,-3223.7775023370014)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 3212.7826539620014 L 703.1621409168399 3223.7775023370014 L 725.1518376668399 3234.7723507120013 Z"/></g></g><g><g><rect fill="white" stroke="none" x="329.69833847517975" y="3263.3589564870013" width="113.29206902824218" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="333.65648389017974" y="3287.107828977001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl WatchHeight</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3297.6628834170015 L 91.25242545076173 3297.6628834170015" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,3297.6628834170015) translate(-69.52660506176173,-3297.6628834170015)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 3286.6680350420015 L 69.52660506176173 3297.6628834170015 L 91.51630181176174 3308.6577317920014 Z"/></g></g><g><g><rect fill="white" stroke="none" x="246.16940018172272" y="3337.2443375670014" width="280.34994561515623" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="250.1275455967227" y="3360.9932100570013" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Watch Arbitrating Funding Address</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3371.5482644970016 L 91.25242545076173 3371.5482644970016" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,3371.5482644970016) translate(-69.52660506176173,-3371.5482644970016)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 3360.5534161220016 L 69.52660506176173 3371.5482644970016 L 91.51630181176174 3382.5431128720015 Z"/></g></g><g><g><rect fill="white" stroke="none" x="406.5903506969571" y="3411.1297186470015" width="130.90838677726563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="410.5484961119571" y="3434.8785911370014" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg MakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3445.4336455770017 L 262.65276764333987 3445.4336455770017" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,3445.4336455770017) translate(-240.92694725433986,-3445.4336455770017)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 3434.4387972020018 L 240.92694725433986 3445.4336455770017 L 262.91664400433984 3456.4284939520016 Z"/></g></g><g><g><rect fill="white" stroke="none" x="361.76218754998445" y="3485.0150997270016" width="220.56471307121095" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="365.72033296498444" y="3508.7639722170015" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl RevealProof (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 3519.319026657002 L 681.4363205278399 3519.319026657002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,3519.319026657002) translate(-703.1621409168399,-3519.319026657002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 3508.324178282002 L 703.1621409168399 3519.319026657002 L 681.1724441668399 3530.3138750320018 Z"/></g></g><g><g><rect fill="white" stroke="none" x="913.9224038283967" y="3558.9004808070017" width="230.342804501875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="917.8805492433967" y="3582.6493532970017" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3593.204407737002 L 1333.299650852828 3593.204407737002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,3593.204407737002) translate(-1355.0254712418282,-3593.204407737002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1333.0357744918283 3582.209559362002 L 1355.0254712418282 3593.204407737002 L 1333.0357744918283 3604.199256112002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="931.4420800368928" y="3632.785861887002" width="195.30345208488282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="935.4002254518928" y="3656.5347343770018" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3667.089788817002 L 1333.299650852828 3667.089788817002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,3667.089788817002) translate(-1355.0254712418282,-3667.089788817002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1333.0357744918283 3656.094940442002 L 1355.0254712418282 3667.089788817002 L 1333.0357744918283 3678.084637192002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1509.1767884304845" y="3706.671242967002" width="230.342804501875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1513.1349338454845" y="3730.420115457002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 3740.975169897002 L 1871.9450897320157 3740.975169897002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,3740.975169897002) translate(-1893.6709101210158,-3740.975169897002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1871.681213371016 3729.980321522002 L 1893.6709101210158 3740.975169897002 L 1871.681213371016 3751.970018272002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1979.885567836094" y="3780.556624047002" width="285.74002129875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1983.843713251094" y="3804.305496537002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg RevealProof (taker is sender) </text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 3814.8605509770023 L 2330.114426460922 3814.8605509770023" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,3814.8605509770023) translate(-2351.840246849922,-3814.8605509770023)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 3803.8657026020023 L 2351.840246849922 3814.8605509770023 L 2329.850550099922 3825.855399352002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1924.8962795060156" y="3854.442005127002" width="271.881867001875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1928.8544249210156" y="3878.190877617002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg RevealProof</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 3888.745932057002 L 1999.2214545210159 3888.745932057002 L 1999.2214545210159 3923.049858987002 L 1915.396730510016 3923.049858987002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,3923.049858987002) translate(-1893.6709101210158,-3923.049858987002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 3912.055010612002 L 1893.6709101210158 3923.049858987002 L 1915.6606068710157 3934.044707362002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1526.6964646389806" y="3962.631313137002" width="195.30345208488282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1530.6546100539806" y="3986.380185627002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 3996.9352400670023 L 1871.9450897320157 3996.9352400670023" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,3996.9352400670023) translate(-1893.6709101210158,-3996.9352400670023)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1871.681213371016 3985.9403916920023 L 1893.6709101210158 3996.9352400670023 L 1871.681213371016 4007.930088442002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1712.7326037878518" y="4036.516694217002" width="149.71293694816407" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028517" y="4060.265566707002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ask for funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4070.8206211470024 L 1703.2330547918518 4070.8206211470024" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,4070.8206211470024) translate(-1681.5072344028517,-4070.8206211470024)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 4059.8257727720024 L 1681.5072344028517 4070.8206211470024 L 1703.4969311528516 4081.8154695220023 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1924.8962795060156" y="4110.402075297002" width="236.84252984367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1928.8544249210156" y="4134.150947787002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg Reveal</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4144.7060022270025 L 1999.2214545210159 4144.7060022270025 L 1999.2214545210159 4179.009929157002 L 1915.396730510016 4179.009929157002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,4179.009929157002) translate(-1893.6709101210158,-4179.009929157002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 4168.015080782002 L 1893.6709101210158 4179.009929157002 L 1915.6606068710157 4190.004777532003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1999.441735438633" y="4218.591383307003" width="246.62768609367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2003.399880853633" y="4242.340255797003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4252.895310237002 L 2330.114426460922 4252.895310237002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,4252.895310237002) translate(-2351.840246849922,-4252.895310237002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 4241.900461862002 L 2351.840246849922 4252.895310237002 L 2329.850550099922 4263.890158612003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2166.0748293538672" y="4292.476764387003" width="113.29206902824218" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2170.0329747688675" y="4316.225636877003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl WatchHeight</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4326.7806913170025 L 2530.044997225961 4326.7806913170025" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,4326.7806913170025) translate(-2551.7708176149613,-4326.7806913170025)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 4315.785842942002 L 2551.7708176149613 4326.7806913170025 L 2529.7811208649614 4337.775539692003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2082.54589106041" y="4366.362145467003" width="280.34994561515623" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2086.5040364754104" y="4390.111017957003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Watch Arbitrating Funding Address</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4400.666072397003 L 2530.044997225961 4400.666072397003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,4400.666072397003) translate(-2551.7708176149613,-4400.666072397003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 4389.671224022002 L 2551.7708176149613 4400.666072397003 L 2529.7811208649614 4411.660920772003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2113.6374895711524" y="4440.247526547003" width="218.16674859367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2117.5956349861526" y="4463.996399037003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Arbitrating Funding event</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 4474.551453477003 L 1915.396730510016 4474.551453477003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,4474.551453477003) translate(-1893.6709101210158,-4474.551453477003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 4463.556605102002 L 1893.6709101210158 4474.551453477003 L 1915.6606068710157 4485.546301852003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2046.2813426774026" y="4514.132907627003" width="152.94847161613282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2050.2394880924026" y="4537.8817801170035" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Ctl Tx::Funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4548.436834557003 L 2330.114426460922 4548.436834557003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,4548.436834557003) translate(-2351.840246849922,-4548.436834557003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 4537.441986182002 L 2351.840246849922 4548.436834557003 L 2329.850550099922 4559.431682932003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2030.375832728672" y="4588.018288707003" width="184.75949151359376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2034.333978143672" y="4611.767161197004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Ctl FundingUpdated</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 4622.322215637003 L 1915.396730510016 4622.322215637003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,4622.322215637003) translate(-1893.6709101210158,-4622.322215637003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 4611.327367262003 L 1893.6709101210158 4622.322215637003 L 1915.6606068710157 4633.317064012003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1924.8962795060158" y="4661.903669787003" width="395.71859795890623" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1928.8544249210158" y="4685.652542277004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg RevealProof (taker is sender) </text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4696.207596717003 L 2330.114426460922 4696.207596717003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,4696.207596717003) translate(-2351.840246849922,-4696.207596717003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 4685.212748342003 L 2351.840246849922 4696.207596717003 L 2329.850550099922 4707.2024450920035 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1944.452462367344" y="4735.789050867003" width="356.60623223625" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1948.410607782344" y="4759.537923357004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4770.092977797003 L 2330.114426460922 4770.092977797003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,4770.092977797003) translate(-2351.840246849922,-4770.092977797003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 4759.098129422003 L 2351.840246849922 4770.092977797003 L 2329.850550099922 4781.087826172004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2008.4037868302346" y="4809.6744319470035" width="228.70358331046876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2012.3619322452346" y="4833.423304437004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 4843.978358877003 L 1915.396730510016 4843.978358877003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,4843.978358877003) translate(-1893.6709101210158,-4843.978358877003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 4832.983510502003 L 1893.6709101210158 4843.978358877003 L 1915.6606068710157 4854.973207252004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1505.1073533108556" y="4883.559813027004" width="238.48167474113282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1509.0654987258556" y="4907.308685517004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4917.863739957003 L 1376.7512916308283 4917.863739957003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,4917.863739957003) translate(-1355.0254712418282,-4917.863739957003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1377.015167991828 4906.868891582003 L 1355.0254712418282 4917.863739957003 L 1377.015167991828 4928.858588332004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1522.6270295193517" y="4957.445194107004" width="203.44232232414063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1526.5851749343517" y="4981.194066597004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4991.7491210370035 L 1376.7512916308283 4991.7491210370035" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,4991.7491210370035) translate(-1355.0254712418282,-4991.7491210370035)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1377.015167991828 4980.754272662003 L 1355.0254712418282 4991.7491210370035 L 1377.015167991828 5002.743969412004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="909.8529687087678" y="5031.330575187004" width="238.48167474113282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="913.8111141237678" y="5055.079447677004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 5065.634502117004 L 724.8879613058399 5065.634502117004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5065.634502117004) translate(-703.1621409168399,-5065.634502117004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 5054.639653742003 L 703.1621409168399 5065.634502117004 L 725.1518376668399 5076.629350492004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="327.141589710629" y="5105.215956267004" width="289.80590874992185" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="331.09973512562897" y="5128.964828757004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5139.519883197004 L 262.65276764333987 5139.519883197004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5139.519883197004) translate(-240.92694725433986,-5139.519883197004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5128.525034822003 L 240.92694725433986 5139.519883197004 L 262.91664400433984 5150.514731572004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="734.3875103018399" y="5179.101337347003" width="271.881867001875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="738.3456557168399" y="5202.850209837004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg RevealProof</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5213.405264277004 L 808.71268531684 5213.405264277004 L 808.71268531684 5247.709191207004 L 724.8879613058399 5247.709191207004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5247.709191207004) translate(-703.1621409168399,-5247.709191207004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 5236.714342832003 L 703.1621409168399 5247.709191207004 L 725.1518376668399 5258.704039582004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="927.3726449172639" y="5287.290645357004" width="203.44232232414063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="931.3307903322639" y="5311.039517847004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 5321.594572287004 L 724.8879613058399 5321.594572287004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5321.594572287004) translate(-703.1621409168399,-5321.594572287004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 5310.599723912003 L 703.1621409168399 5321.594572287004 L 725.1518376668399 5332.589420662004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="784.4771269536955" y="5361.176026437004" width="149.71293694816407" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="788.4352723686955" y="5384.9248989270045" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ask for funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5395.479953367004 L 993.779229549715 5395.479953367004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,5395.479953367004) translate(-1015.5050499387149,-5395.479953367004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 5384.4851049920035 L 1015.5050499387149 5395.479953367004 L 993.5153531887149 5406.474801742004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="734.3875103018399" y="5435.061407517003" width="236.84252984367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="738.3456557168399" y="5458.810280007004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg Reveal</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5469.365334447004 L 808.71268531684 5469.365334447004 L 808.71268531684 5503.669261377004 L 724.8879613058399 5503.669261377004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5503.669261377004) translate(-703.1621409168399,-5503.669261377004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 5492.674413002003 L 703.1621409168399 5503.669261377004 L 725.1518376668399 5514.664109752004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="344.66126591912507" y="5543.250715527004" width="254.7665563329297" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="348.61941133412506" y="5566.9995880170045" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5577.554642457004 L 262.65276764333987 5577.554642457004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5577.554642457004) translate(-240.92694725433986,-5577.554642457004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5566.5597940820035 L 240.92694725433986 5577.554642457004 L 262.91664400433984 5588.549490832004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="277.2609986924649" y="5617.136096607004" width="218.16674859367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="281.2191441074649" y="5640.884969097005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Arbitrating Funding event</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 5651.440023537004 L 681.4363205278399 5651.440023537004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5651.440023537004) translate(-703.1621409168399,-5651.440023537004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 5640.445175162004 L 703.1621409168399 5651.440023537004 L 681.1724441668399 5662.434871912004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="395.5703082775235" y="5691.021477687004" width="152.94847161613282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="399.5284536925235" y="5714.770350177005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Ctl Tx::Funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5725.325404617004 L 262.65276764333987 5725.325404617004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5725.325404617004) translate(-240.92694725433986,-5725.325404617004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5714.330556242004 L 240.92694725433986 5725.325404617004 L 262.91664400433984 5736.3202529920045 Z"/></g></g><g><g><rect fill="white" stroke="none" x="379.66479832879304" y="5764.906858767004" width="184.75949151359376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="383.62294374379303" y="5788.655731257005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Ctl FundingUpdated</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 5799.210785697004 L 681.4363205278399 5799.210785697004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5799.210785697004) translate(-703.1621409168399,-5799.210785697004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 5788.215937322004 L 703.1621409168399 5799.210785697004 L 681.1724441668399 5810.205634072005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="272.1523166393399" y="5838.792239847005" width="399.7844548925" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="276.1104620543399" y="5862.541112337005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5873.096166777004 L 262.65276764333987 5873.096166777004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5873.096166777004) translate(-240.92694725433986,-5873.096166777004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5862.101318402004 L 240.92694725433986 5873.096166777004 L 262.91664400433984 5884.091015152005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="289.67200047723054" y="5912.677620927005" width="364.74508721671873" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="293.63014589223053" y="5936.426493417005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5946.981547857004 L 262.65276764333987 5946.981547857004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5946.981547857004) translate(-240.92694725433986,-5946.981547857004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5935.986699482004 L 240.92694725433986 5946.981547857004 L 262.91664400433984 5957.976396232005 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 6008.112904822005 L 2611.80618195 6008.112904822005 M 13.19381805 6016.908783522004 L 2611.80618195 6016.908783522004 M 13.19381805 6025.704662222004 L 2611.80618195 6025.704662222004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1191.6453755610742 5986.563002007005 L 1433.3546244389258 5986.563002007005 L 1433.3546244389258 6047.254565037005 L 1191.6453755610742 6047.254565037005 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1228.5880661010742" y="6023.505692547004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Commit-Reveal Complete</text></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 6108.385922002005 L 2611.80618195 6108.385922002005 M 13.19381805 6117.181800702005 L 2611.80618195 6117.181800702005 M 13.19381805 6125.9776794020045 L 2611.80618195 6125.9776794020045" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 695.4003270381249 6086.836019187005 L 1929.599672961875 6086.836019187005 L 1929.599672961875 6147.527582217005 L 695.4003270381249 6147.527582217005 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="732.343017578125" y="6123.778709727005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Changing semantics: On Commit-Reveal, Maker and Taker were the key roles. From now on Bob or Alice are the key roles. Now t_ is bob_ on the left and m_ is alice_ on the right.</text></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 6208.658939182005 L 2611.80618195 6208.658939182005 M 13.19381805 6217.454817882005 L 2611.80618195 6217.454817882005 M 13.19381805 6226.250696582005 L 2611.80618195 6226.250696582005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1164.737744640664 6187.1090363670055 L 1460.262255359336 6187.1090363670055 L 1460.262255359336 6247.8005993970055 L 1164.737744640664 6247.8005993970055 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1201.680435180664" y="6224.051726907005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Swap setup: Bob is left, Alice right</text></g><g><g><rect fill="white" stroke="none" x="388.64119298211335" y="6287.382053547006" width="166.80670220695313" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="392.59933839711334" y="6311.130926037006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 6321.685980477006 L 681.4363205278399 6321.685980477006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,6321.685980477006) translate(-703.1621409168399,-6321.685980477006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 6310.691132102005 L 703.1621409168399 6321.685980477006 L 681.1724441668399 6332.680828852006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="308.9181184434415" y="6361.267434627006" width="154.85250909171876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="312.87626385844146" y="6385.016307117006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Arbitrating Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6395.571361557006 L 91.25242545076173 6395.571361557006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,6395.571361557006) translate(-69.52660506176173,-6395.571361557006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 6384.576513182005 L 69.52660506176173 6395.571361557006 L 91.51630181176174 6406.566209932006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="337.0283326768399" y="6435.152815707006" width="98.63208062492187" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="340.9864780918399" y="6458.9016881970065" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Cancel</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6469.456742637006 L 91.25242545076173 6469.456742637006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,6469.456742637006) translate(-69.52660506176173,-6469.456742637006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 6458.461894262005 L 69.52660506176173 6469.456742637006 L 91.51630181176174 6480.451591012006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="336.20871445174225" y="6509.038196787006" width="100.27131707511718" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="340.16685986674224" y="6532.787069277007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Refund</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6543.342123717006 L 91.25242545076173 6543.342123717006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,6543.342123717006) translate(-69.52660506176173,-6543.342123717006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 6532.347275342006 L 69.52660506176173 6543.342123717006 L 91.51630181176174 6554.336972092006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="940.8014092605256" y="6582.923577867006" width="176.5847936376172" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="944.7595546755256" y="6606.672450357007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6617.227504797006 L 1333.299650852828 6617.227504797006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,6617.227504797006) translate(-1355.0254712418282,-6617.227504797006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1333.0357744918283 6606.232656422006 L 1355.0254712418282 6617.227504797006 L 1333.0357744918283 6628.2223531720065 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1536.0557938626134" y="6656.808958947006" width="176.5847936376172" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1540.0139392776134" y="6680.557831437007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 6691.112885877006 L 1871.9450897320157 6691.112885877006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,6691.112885877006) translate(-1893.6709101210158,-6691.112885877006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1871.681213371016 6680.118037502006 L 1893.6709101210158 6691.112885877006 L 1871.681213371016 6702.107734252007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2145.294609322129" y="6730.694340027007" width="154.85250909171876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2149.252754737129" y="6754.443212517007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Arbitrating Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 6764.998266957006 L 2530.044997225961 6764.998266957006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,6764.998266957006) translate(-2551.7708176149613,-6764.998266957006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 6754.003418582006 L 2551.7708176149613 6764.998266957006 L 2529.7811208649614 6775.993115332007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2173.4048235555274" y="6804.579721107007" width="98.63208062492187" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2177.3629689705276" y="6828.328593597007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Cancel</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 6838.883648037006 L 2530.044997225961 6838.883648037006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,6838.883648037006) translate(-2551.7708176149613,-6838.883648037006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 6827.888799662006 L 2551.7708176149613 6838.883648037006 L 2529.7811208649614 6849.878496412007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2172.5852053304297" y="6878.465102187007" width="100.27131707511718" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2176.54335074543" y="6902.213974677007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Refund</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 6912.7690291170065 L 2530.044997225961 6912.7690291170065" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,6912.7690291170065) translate(-2551.7708176149613,-6912.7690291170065)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 6901.774180742006 L 2551.7708176149613 6912.7690291170065 L 2529.7811208649614 6923.763877492007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2034.4631816666604" y="6952.350483267007" width="176.5847936376172" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2038.4213270816604" y="6976.099355757007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 6986.654410197007 L 2330.114426460922 6986.654410197007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,6986.654410197007) translate(-2351.840246849922,-6986.654410197007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 6975.659561822006 L 2351.840246849922 6986.654410197007 L 2329.850550099922 6997.649258572007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2383.065616234922" y="7026.235864347006" width="129.33355767570313" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2387.023761649922" y="7049.9847368370065" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Checkpoint Alice 0</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 7060.539791277007 L 2457.390791249922 7060.539791277007 L 2457.390791249922 7094.8437182070065 L 2373.566067238922 7094.8437182070065" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="10.555054440000001"/><g transform="translate(2351.840246849922,7094.8437182070065) translate(-2351.840246849922,-7094.8437182070065)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2373.829943599922 7083.848869832006 L 2351.840246849922 7094.8437182070065 L 2373.829943599922 7105.838566582007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2015.3042766373635" y="7134.425172357007" width="214.90260369621095" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2019.2624220523635" y="7158.174044847007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 7168.729099287007 L 1915.396730510016 7168.729099287007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,7168.729099287007) translate(-1893.6709101210158,-7168.729099287007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 7157.734250912006 L 1893.6709101210158 7168.729099287007 L 1915.6606068710157 7179.723947662007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1512.0078431179845" y="7208.310553437007" width="224.680695126875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1515.9659885329845" y="7232.059425927007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 7242.614480367007 L 1376.7512916308283 7242.614480367007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,7242.614480367007) translate(-1355.0254712418282,-7242.614480367007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1377.015167991828 7231.619631992006 L 1355.0254712418282 7242.614480367007 L 1377.015167991828 7253.609328742007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="916.7534585158967" y="7282.195934517007" width="224.680695126875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="920.7116039308967" y="7305.9448070070075" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 7316.499861447007 L 724.8879613058399 7316.499861447007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,7316.499861447007) translate(-703.1621409168399,-7316.499861447007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 7305.5050130720065 L 703.1621409168399 7316.499861447007 L 725.1518376668399 7327.494709822007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="359.7041965221524" y="7356.081315597007" width="224.680695126875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="363.6623419371524" y="7379.830188087008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 7390.385242527007 L 262.65276764333987 7390.385242527007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,7390.385242527007) translate(-240.92694725433986,-7390.385242527007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 7379.390394152007 L 240.92694725433986 7390.385242527007 L 262.91664400433984 7401.380090902007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="359.7149310802579" y="7429.966696677007" width="224.65922601066407" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="363.6730764952579" y="7453.715569167008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Datum::SignedArbitratingLock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 7464.270623607007 L 681.4363205278399 7464.270623607007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,7464.270623607007) translate(-703.1621409168399,-7464.270623607007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 7453.275775232007 L 703.1621409168399 7464.270623607007 L 681.1724441668399 7475.2654719820075 Z"/></g></g><g><g><rect fill="white" stroke="none" x="272.15231663933986" y="7503.852077757007" width="123.6428075536328" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="276.11046205433985" y="7527.600950247007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Checkpoint Bob 0</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 7538.156004687007 L 346.4774916543399 7538.156004687007 L 346.4774916543399 7572.459931617007 L 262.65276764333987 7572.459931617007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="10.555054440000001"/><g transform="translate(240.92694725433986,7572.459931617007) translate(-240.92694725433986,-7572.459931617007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 7561.465083242007 L 240.92694725433986 7572.459931617007 L 262.91664400433984 7583.454779992007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="379.2639651989102" y="7612.041385767007" width="185.56115777335938" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="383.2221106139102" y="7635.790258257008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 7646.345312697007 L 681.4363205278399 7646.345312697007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,7646.345312697007) translate(-703.1621409168399,-7646.345312697007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 7635.350464322007 L 703.1621409168399 7646.345312697007 L 681.1724441668399 7657.3401610720075 Z"/></g></g><g><g><rect fill="white" stroke="none" x="296.41991898055085" y="7685.9267668470075" width="179.8489080175" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="300.37806439555084" y="7709.675639337008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast Arbitrating Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 7720.230693777007 L 91.25242545076173 7720.230693777007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,7720.230693777007) translate(-69.52660506176173,-7720.230693777007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 7709.235845402007 L 69.52660506176173 7720.230693777007 L 91.51630181176174 7731.225542152008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="309.32255264754303" y="7759.812147927008" width="154.04364068351563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="313.280698062543" y="7783.561020417008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Accordant Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 7794.116074857007 L 91.25242545076173 7794.116074857007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,7794.116074857007) translate(-69.52660506176173,-7794.116074857007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 7783.121226482007 L 69.52660506176173 7794.116074857007 L 91.51630181176174 7805.110923232008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="347.2144441270352" y="7833.697529007008" width="78.25985772453124" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="351.1725895420352" y="7857.446401497008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 7868.001455937007 L 91.25242545076173 7868.001455937007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,7868.001455937007) translate(-69.52660506176173,-7868.001455937007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 7857.006607562007 L 69.52660506176173 7868.001455937007 L 91.51630181176174 7878.996304312008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="315.976101841879" y="7907.582910087008" width="140.73654229484376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="319.93424725687896" y="7931.331782577008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Arbitrating Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 7941.886837017008 L 681.4363205278399 7941.886837017008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,7941.886837017008) translate(-703.1621409168399,-7941.886837017008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 7930.891988642007 L 703.1621409168399 7941.886837017008 L 681.1724441668399 7952.881685392008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2152.3525927205665" y="7907.582910087008" width="140.73654229484376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2156.3107381355667" y="7931.331782577008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Arbitrating Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 7941.886837017008 L 1915.396730510016 7941.886837017008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,7941.886837017008) translate(-1893.6709101210158,-7941.886837017008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 7930.891988642007 L 1893.6709101210158 7941.886837017008 L 1915.6606068710157 7952.881685392008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2145.6990435262305" y="7981.468291167008" width="154.04364068351563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2149.6571889412307" y="8005.217163657008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Accordant Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 8015.772218097008 L 2530.044997225961 8015.772218097008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,8015.772218097008) translate(-2551.7708176149613,-8015.772218097008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 8004.777369722007 L 2551.7708176149613 8015.772218097008 L 2529.7811208649614 8026.767066472008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2152.757026924668" y="8055.353672247008" width="139.92767388664063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2156.7151723396682" y="8079.102544737008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Accordant Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 8089.657599177008 L 1915.396730510016 8089.657599177008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,8089.657599177008) translate(-1893.6709101210158,-8089.657599177008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 8078.662750802007 L 1893.6709101210158 8089.657599177008 L 1915.6606068710157 8100.652447552008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="316.38053604598053" y="8055.353672247008" width="139.92767388664063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="320.3386814609805" y="8079.102544737008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Accordant Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 8089.657599177008 L 681.4363205278399 8089.657599177008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,8089.657599177008) translate(-703.1621409168399,-8089.657599177008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 8078.662750802007 L 703.1621409168399 8089.657599177008 L 681.1724441668399 8100.652447552008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="931.4241814773225" y="8129.239053327008" width="195.33924920402345" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="935.3823268923225" y="8152.9879258170085" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 8163.542980257008 L 1333.299650852828 8163.542980257008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,8163.542980257008) translate(-1355.0254712418282,-8163.542980257008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1333.0357744918283 8152.5481318820075 L 1355.0254712418282 8163.542980257008 L 1333.0357744918283 8174.537828632008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1526.6785660794103" y="8203.124434407007" width="195.33924920402345" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1530.6367114944103" y="8226.873306897007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 8237.428361337008 L 1871.9450897320157 8237.428361337008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,8237.428361337008) translate(-1893.6709101210158,-8237.428361337008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1871.681213371016 8226.433512962009 L 1893.6709101210158 8237.428361337008 L 1871.681213371016 8248.423209712008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2183.5909350057227" y="8277.009815487007" width="78.25985772453124" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2187.549080420723" y="8300.758687977006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 8311.313742417007 L 2530.044997225961 8311.313742417007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,8311.313742417007) translate(-2551.7708176149613,-8311.313742417007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 8300.318894042008 L 2551.7708176149613 8311.313742417007 L 2529.7811208649614 8322.308590792007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2025.0859538834573" y="8350.895196567006" width="195.33924920402345" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2029.0440992984572" y="8374.644069057005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 8385.199123497006 L 2330.114426460922 8385.199123497006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,8385.199123497006) translate(-2351.840246849922,-8385.199123497006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 8374.204275122007 L 2351.840246849922 8385.199123497006 L 2329.850550099922 8396.193971872006 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 8446.330480462006 L 2611.80618195 8446.330480462006 M 13.19381805 8455.126359162006 L 2611.80618195 8455.126359162006 M 13.19381805 8463.922237862007 L 2611.80618195 8463.922237862007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1202.6224644892968 8424.780577647005 L 1422.3775355107032 8424.780577647005 L 1422.3775355107032 8485.472140677006 L 1202.6224644892968 8485.472140677006 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1239.5651550292969" y="8461.723268187006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Swap Setup Complete</text></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 8546.603497642005 L 2611.80618195 8546.603497642005 M 13.19381805 8555.399376342006 L 2611.80618195 8555.399376342006 M 13.19381805 8564.195255042006 L 2611.80618195 8564.195255042006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1154.555226635293 8525.053594827004 L 1470.444773364707 8525.053594827004 L 1470.444773364707 8585.745157857005 L 1154.555226635293 8585.745157857005 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1191.497917175293" y="8561.996285367006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Buy Procedure: Bob is left, Alice right</text></g><g><g><rect fill="white" stroke="none" x="2065.830384425449" y="8625.326612007004" width="113.85038812003906" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2069.7885298404494" y="8649.075484497003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Fully signed buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 8659.630538937005 L 1915.396730510016 8659.630538937005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,8659.630538937005) translate(-1893.6709101210158,-8659.630538937005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 8648.635690562005 L 1893.6709101210158 8659.630538937005 L 1915.6606068710157 8670.625387312004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2171.905189766465" y="8699.211993087003" width="101.63134820304687" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2175.863335181465" y="8722.960865577003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 8733.515920017004 L 2530.044997225961 8733.515920017004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,8733.515920017004) translate(-2551.7708176149613,-8733.515920017004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 8722.521071642004 L 2551.7708176149613 8733.515920017004 L 2529.7811208649614 8744.510768392003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2123.823593391953" y="8773.097374167002" width="197.79454095207032" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2127.7817388069534" y="8796.846246657002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: buy seen on mempool</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 8807.401301097003 L 1915.396730510016 8807.401301097003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,8807.401301097003) translate(-1893.6709101210158,-8807.401301097003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 8796.406452722003 L 1893.6709101210158 8807.401301097003 L 1915.6606068710157 8818.396149472002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="287.4471025132657" y="8773.097374167002" width="197.79454095207032" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="291.4052479282657" y="8796.846246657002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: buy seen on mempool</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 8807.401301097003 L 681.4363205278399 8807.401301097003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,8807.401301097003) translate(-703.1621409168399,-8807.401301097003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 8796.406452722003 L 703.1621409168399 8807.401301097003 L 681.1724441668399 8818.396149472002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="412.27038914910554" y="8846.982755247001" width="119.54830987296874" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="416.22853456410553" y="8870.731627737001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Buy signature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 8881.286682177002 L 262.65276764333987 8881.286682177002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,8881.286682177002) translate(-240.92694725433986,-8881.286682177002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 8870.291833802003 L 240.92694725433986 8881.286682177002 L 262.91664400433984 8892.281530552002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="272.15231663933986" y="8920.868136327003" width="159.46952874503907" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="276.11046205433985" y="8944.617008817002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">recover accordant keys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 8955.172063257001 L 346.4774916543399 8955.172063257001 L 346.4774916543399 8989.475990187002 L 262.65276764333987 8989.475990187002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,8989.475990187002) translate(-240.92694725433986,-8989.475990187002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 8978.481141812003 L 240.92694725433986 8989.475990187002 L 262.91664400433984 9000.470838562002 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 9050.607347152001 L 2611.80618195 9050.607347152001 M 13.19381805 9059.403225852002 L 2611.80618195 9059.403225852002 M 13.19381805 9068.199104552003 L 2611.80618195 9068.199104552003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 946.9462254756249 9029.057444337 L 1678.053774524375 9029.057444337 L 1678.053774524375 9089.749007367001 L 946.9462254756249 9089.749007367001 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="983.888916015625" y="9066.000134877002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Cancel Init t &gt; t0: Bob is left, Alice right, either have a fully signed and valid cancel tx, and can publish</text></g><g><g><rect fill="white" stroke="none" x="331.46284195418366" y="9129.330461517" width="109.76306207023437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="335.42098736918365" y="9153.079334007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Cancel valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 9163.634388447 L 681.4363205278399 9163.634388447" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,9163.634388447) translate(-703.1621409168399,-9163.634388447)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 9152.639540072001 L 703.1621409168399 9163.634388447 L 681.1724441668399 9174.629236822 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2167.839332832871" y="9129.330461517" width="109.76306207023437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2171.7974782478714" y="9153.079334007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Cancel valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 9163.634388447 L 1915.396730510016 9163.634388447" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,9163.634388447) translate(-1893.6709101210158,-9163.634388447)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 9152.639540072001 L 1893.6709101210158 9163.634388447 L 1915.6606068710157 9174.629236822 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2124.6575548787696" y="9203.215842597" width="196.1266179784375" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2128.61570029377" y="9226.964715086999" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast cancel (Alice inits)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 9237.519769527 L 2530.044997225961 9237.519769527" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,9237.519769527) translate(-2551.7708176149613,-9237.519769527)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 9226.524921152 L 2551.7708176149613 9237.519769527 L 2529.7811208649614 9248.514617902 Z"/></g></g><g><g><rect fill="white" stroke="none" x="291.12643906111725" y="9203.215842597" width="190.4358678563672" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="295.08458447611724" y="9226.964715086999" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast cancel (Bob inits)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 9237.519769527 L 91.25242545076173 9237.519769527" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,9237.519769527) translate(-69.52660506176173,-9237.519769527)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 9226.524921152 L 69.52660506176173 9237.519769527 L 91.51630181176174 9248.514617902 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 9298.651126492 L 2611.80618195 9298.651126492 M 13.19381805 9307.447005192 L 2611.80618195 9307.447005192 M 13.19381805 9316.242883892 L 2611.80618195 9316.242883892" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1131.527310680703 9277.101223676998 L 1493.472689319297 9277.101223676998 L 1493.472689319297 9337.792786707 L 1131.527310680703 9337.792786707 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1168.4700012207031" y="9314.043914217" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Cancel detected t &gt; t0: Bob is left, Alice right</text></g><g><g><rect fill="white" stroke="none" x="324.9345750474454" y="9377.374240856998" width="122.81959588371093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="328.89272046244537" y="9401.123113346997" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event cancel final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 9411.678167786999 L 681.4363205278399 9411.678167786999" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,9411.678167786999) translate(-703.1621409168399,-9411.678167786999)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 9400.683319411999 L 703.1621409168399 9411.678167786999 L 681.1724441668399 9422.673016161998 Z"/></g></g><g><g><rect fill="white" stroke="none" x="326.56306168074616" y="9451.259621936997" width="119.56262261710937" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="330.52120709574615" y="9475.008494426997" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast refund</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 9485.563548866998 L 91.25242545076173 9485.563548866998" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,9485.563548866998) translate(-69.52660506176173,-9485.563548866998)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 9474.568700491998 L 69.52660506176173 9485.563548866998 L 91.51630181176174 9496.558397241997 Z"/></g></g><g><g><rect fill="white" stroke="none" x="320.8543977403165" y="9525.145003016996" width="130.97995049796876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="324.81254315531646" y="9548.893875506996" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: refund seen</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 9559.448929946997 L 681.4363205278399 9559.448929946997" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,9559.448929946997) translate(-703.1621409168399,-9559.448929946997)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 9548.454081571997 L 703.1621409168399 9559.448929946997 L 681.1724441668399 9570.443778321996 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2157.230888619004" y="9525.145003016996" width="130.97995049796876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2161.189034034004" y="9548.893875506996" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: refund seen</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 9559.448929946997 L 1915.396730510016 9559.448929946997" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,9559.448929946997) translate(-1893.6709101210158,-9559.448929946997)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 9548.454081571997 L 1893.6709101210158 9559.448929946997 L 1915.6606068710157 9570.443778321996 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2064.212617091465" y="9599.030384096995" width="117.0859227880078" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2068.170762506465" y="9622.779256586995" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Tx::Refund tx</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 9633.334311026996 L 2330.114426460922 9633.334311026996" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,9633.334311026996) translate(-2351.840246849922,-9633.334311026996)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 9622.339462651997 L 2351.840246849922 9633.334311026996 L 2329.850550099922 9644.329159401996 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2383.065616234922" y="9672.915765176997" width="159.46952874503907" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2387.023761649922" y="9696.664637666996" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">recover accordant keys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 9707.219692106995 L 2457.390791249922 9707.219692106995 L 2457.390791249922 9741.523619036996 L 2373.566067238922 9741.523619036996" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,9741.523619036996) translate(-2351.840246849922,-9741.523619036996)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2373.829943599922 9730.528770661997 L 2351.840246849922 9741.523619036996 L 2373.829943599922 9752.518467411996 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 9802.654976001995 L 2611.80618195 9802.654976001995 M 13.19381805 9811.450854701996 L 2611.80618195 9811.450854701996 M 13.19381805 9820.246733401997 L 2611.80618195 9820.246733401997" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1188.3633549922265 9781.105073186995 L 1436.6366450077735 9781.105073186995 L 1436.6366450077735 9841.796636216995 L 1188.3633549922265 9841.796636216995 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1225.3060455322266" y="9818.047763726996" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve"> Punish process t &gt; t1 &gt; t0 </text></g><g><g><rect fill="white" stroke="none" x="2146.2394869466407" y="9881.378090366994" width="152.96275384269532" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2150.197632361641" y="9905.126962856993" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Event: punish valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 9915.682017296995 L 1915.396730510016 9915.682017296995" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,9915.682017296995) translate(-1893.6709101210158,-9915.682017296995)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 9904.687168921995 L 1893.6709101210158 9915.682017296995 L 1915.6606068710157 9926.676865671994 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2046.2742015641213" y="9955.263471446993" width="152.96275384269532" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2050.2323469791213" y="9979.012343936993" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Event: punish valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 9989.567398376994 L 2330.114426460922 9989.567398376994" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,9989.567398376994) translate(-2351.840246849922,-9989.567398376994)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 9978.572550001994 L 2351.840246849922 9989.567398376994 L 2329.850550099922 10000.562246751993 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2383.065616234922" y="10029.148852526994" width="112.22546441398437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2387.023761649922" y="10052.897725016994" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">fully sign punish</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 10063.452779456993 L 2457.390791249922 10063.452779456993 L 2457.390791249922 10097.756706386994 L 2373.566067238922 10097.756706386994" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,10097.756706386994) translate(-2351.840246849922,-10097.756706386994)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2373.829943599922 10086.761858011994 L 2351.840246849922 10097.756706386994 L 2373.829943599922 10108.751554761993 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2073.1746837418555" y="10137.338160536992" width="99.16178948722656" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2077.1328291568557" y="10161.087033026992" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Tx::Punish</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 10171.642087466993 L 1915.396730510016 10171.642087466993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,10171.642087466993) translate(-1893.6709101210158,-10171.642087466993)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 10160.647239091993 L 1893.6709101210158 10171.642087466993 L 1915.6606068710157 10182.636935841992 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2143.390526070176" y="10211.223541616991" width="158.660675595625" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2147.348671485176" y="10234.972414106991" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Broadcast punish tx</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 10245.527468546992 L 2530.044997225961 10245.527468546992" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,10245.527468546992) translate(-2551.7708176149613,-10245.527468546992)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 10234.532620171993 L 2551.7708176149613 10245.527468546992 L 2529.7811208649614 10256.522316921992 Z"/></g></g></g><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/></g></svg>
\ No newline at end of file

From 54b33b019c00d2704addd3b0a204ba287f279fde Mon Sep 17 00:00:00 2001
From: Robert Hambrock <roberthambrock@gmail.com>
Date: Wed, 11 May 2022 18:23:31 +0200
Subject: [PATCH 10/32] create state recovery sequence diagram & amend main
 sequence diagram

---
 doc/sequence_diagram.svg              |  1 -
 doc/sequencediagram.svg               |  1 +
 doc/sequencediagram.txt               | 12 ++++++++--
 doc/staterecovery_sequencediagram.svg |  1 +
 doc/staterecovery_sequencediagram.txt | 32 +++++++++++++++++++++++++++
 5 files changed, 44 insertions(+), 3 deletions(-)
 delete mode 100644 doc/sequence_diagram.svg
 create mode 100644 doc/sequencediagram.svg
 create mode 100644 doc/staterecovery_sequencediagram.svg
 create mode 100644 doc/staterecovery_sequencediagram.txt

diff --git a/doc/sequence_diagram.svg b/doc/sequence_diagram.svg
deleted file mode 100644
index 152ea688f..000000000
--- a/doc/sequence_diagram.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="2625" height="10337"><desc>title%20Farcaster%20node%0A%2F%2F%20to%20display%20the%20diagram%2C%20go%20to%20sequencediagram.org%0A%2F%2F%20dashed%20lines%2C%20not%20yet%20implemented%0A%0Aparticipant%20t_syncer%0Aparticipant%20t_wallet%0Aparticipant%20t_swap%0Aparticipant%20t_farcasterd%0Aparticipant%20t_cli%0Aparticipant%20peerd%0Aparticipant%20m_cli%0Aparticipant%20m_farcasterd%0Aparticipant%20m_swap%0Aparticipant%20m_wallet%0Aparticipant%20m_syncer%0A%0A%3D%3DSetup%20and%20Commit-Reveal%3A%20Bob%20and%20Alice%20can%20be%20on%20both%20sides%3D%3D%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20launch%20farcasterd%5Cnmanually%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20launch%20walletd%0Am_farcasterd%20%3C-%20m_wallet%20%3A%20Ctl%20Hello%0Am_cli%20-%3E%20m_farcasterd%20%3A%20MakeOffer%20(deferred)%0Am_farcasterd%20-%3E%20m_wallet%20%3A%20Ctl%20GetKeys%0Am_farcasterd%20%3C-%20m_wallet%20%3A%20Ctl%20Keys%20(not%20to%20be%20held%20on%20state)%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20MakeOffer%20(continues)%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20launch%5Cnpeerd%20listen%0At_farcasterd%20-%3E%20t_farcasterd%20%3A%20launch%20farcasterd%5Cnmanually%0At_farcasterd%20-%3E%20t_farcasterd%20%3A%20launch%20walletd%0At_wallet%20-%3E%20t_farcasterd%20%3A%20Ctl%20Hello%0At_cli%20-%3E%20t_farcasterd%20%3A%20Ctl%20TakeOffer%20(deferred)%0At_wallet%20%3C-%20t_farcasterd%20%3A%20Ctl%20GetKeys%0At_wallet%20-%3E%20t_farcasterd%20%3A%20Ctl%20Keys%20(not%20to%20be%20held%20on%20state)%0At_farcasterd%20%3C-%20t_farcasterd%20%3A%20Ctl%20TakeOffer%20(continues)%0At_farcasterd%20-%3E%20t_farcasterd%20%3A%20launch%5Cnpeerd%20connect%0At_wallet%20%3C-%20t_farcasterd%20%3A%20Ctl%20TakeOffer%0At_wallet%20-%3E%20t_wallet%20%3A%20create%20taker%20wallet%0At_wallet%20-%3E%20t_farcasterd%20%3A%20Ctl%20LaunchSwap%0At_swap%20-%3E%20t_farcasterd%20%3A%20Ctl%20Hello%0At_farcasterd%20-%3E%20t_farcasterd%3Alaunch%20syncer%0At_swap%20%3C-%20t_farcasterd%20%3A%20Ctl%20TakeSwap%0At_swap%20-%3E%20peerd%20%3A%20Msg%20TakerCommit%0Apeerd%20-%3E%20m_farcasterd%20%3A%20Msg%20TakerCommit%0Am_farcasterd%20-%3E%20m_wallet%20%3A%20Ctl%20BitcoinAddress%0Am_farcasterd%20-%3E%20m_wallet%20%3A%20Msg%20TakerCommit%0Am_wallet%20-%3E%20m_wallet%20%3A%20create%20maker%20wallet%0Am_wallet%20-%3E%20m_farcasterd%20%3A%20Ctl%20LaunchSwap%0Am_swap%20-%3E%20m_farcasterd%20%3A%20Ctl%20Hello%0Am_farcasterd%20-%3E%20m_farcasterd%3Alaunch%20syncer%0Am_farcasterd%20-%3E%20m_swap%20%3A%20Ctl%20MakeSwap%0A%0Am_swap%20-%3E%20peerd%20%3A%20Msg%20MakerCommit%0At_swap%20%3C-%20peerd%20%3A%20Msg%20MakerCommit%0A%2F%2F%20TODO%3A%20verify%20that%20swapd%20launches%20no%20matter%20what%0At_syncer%20%3C-%20t_swap%20%3A%20Ctl%20WatchHeight%0At_syncer%20%3C-%20t_swap%20%3A%20if%20Bob%2C%20Watch%20Arbitrating%20Funding%20Address%0At_swap%20-%3E%20t_wallet%20%3A%20Msg%20MakerCommit%0At_wallet%20-%3E%20t_swap%20%3A%20Ctl%20RevealProof%20(taker%20is%20sender)%0At_swap%20-%3E%20peerd%20%3A%20Msg%20RevealProof%20(taker%20is%20sender)%0At_swap%20-%3E%20peerd%20%3A%20Msg%20Reveal%20(taker%20is%20sender)%0Apeerd%20-%3E%20m_swap%20%3A%20Msg%20RevealProof%20(taker%20is%20sender)%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Alice%2C%20Msg%20RevealProof%20(taker%20is%20sender)%20%0Am_swap%20-%3E%20m_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20RevealProof%0Apeerd%20-%3E%20m_swap%20%3A%20Msg%20Reveal%20(taker%20is%20sender)%0Am_swap%20-%3E%20m_farcasterd%20%3A%20if%20Bob%2C%20ask%20for%20funding%0Am_swap%20-%3E%20m_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20Reveal%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Alice%2C%20Msg%20Reveal%20(taker%20is%20sender)%0A%0Am_swap-%3Em_syncer%3ACtl%20WatchHeight%0Am_swap%20-%3E%20m_syncer%3Aif%20Bob%2C%20Watch%20Arbitrating%20Funding%20Address%0Am_swap%20%3C-%20m_syncer%3AIf%20Bob%2C%20Arbitrating%20Funding%20event%0Am_swap-%3Em_wallet%3Aif%20Bob%2C%20Ctl%20Tx%3A%3AFunding%0Am_swap%3C-m_wallet%3AIf%20Bob%2C%20Ctl%20FundingUpdated%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20RevealProof%20(taker%20is%20sender)%20%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20Reveal%20(taker%20is%20sender)%0Am_wallet%20-%3E%20m_swap%20%3A%20Ctl%20RevealProof%20(maker%20is%20sender)%0Apeerd%20%3C-%20m_swap%20%3A%20Msg%20RevealProof%20(maker%20is%20sender)%0Apeerd%20%3C-%20m_swap%20%3A%20Msg%20Reveal%20(maker%20is%20sender)%0Apeerd%20-%3E%20t_swap%20%3A%20Msg%20RevealProof%20(maker%20is%20sender)%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Alice%2C%20Msg%20RevealProof%20(maker%20is%20sender)%0At_swap%20-%3E%20t_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20RevealProof%0Apeerd%20-%3E%20t_swap%20%3A%20Msg%20Reveal%20(maker%20is%20sender)%0At_swap%20-%3E%20t_farcasterd%20%3A%20if%20Bob%2C%20ask%20for%20funding%0At_swap%20-%3E%20t_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20Reveal%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Alice%2C%20Msg%20Reveal%20(maker%20is%20sender)%0At_syncer%20-%3E%20t_swap%3AIf%20Bob%2C%20Arbitrating%20Funding%20event%0At_swap-%3Et_wallet%3Aif%20Bob%2C%20Ctl%20Tx%3A%3AFunding%0At_swap%3C-t_wallet%3AIf%20Bob%2C%20Ctl%20FundingUpdated%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20RevealProof%20(maker%20is%20sender)%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20Reveal%20(maker%20is%20sender)%0A%3D%3DCommit-Reveal%20Complete%3D%3D%0A%3D%3DChanging%20semantics%3A%20On%20Commit-Reveal%2C%20Maker%20and%20Taker%20were%20the%20key%20roles.%20From%20now%20on%20Bob%20or%20Alice%20are%20the%20key%20roles.%20Now%20t_%20is%20bob_%20on%20the%20left%20and%20m_%20is%20alice_%20on%20the%20right.%3D%3D%0A%3D%3DSwap%20setup%3A%20Bob%20is%20left%2C%20Alice%20right%3D%3D%0At_wallet%20-%3E%20t_swap%20%3A%20Ctl%20CoreArbitratingSetup%0A%2F%2F%20TODO%3A%20During%20replay%20of%20Checkpoint%20Bob%200%2C%20Bob%20has%20to%20rewatch%20these%203%20txs%0At_syncer%20%3C-%20t_swap%20%3A%20Watch%20Arbitrating%20Lock%0At_syncer%20%3C-%20t_swap%20%3A%20Watch%20Cancel%0At_syncer%20%3C-%20t_swap%20%3A%20Watch%20Refund%0Apeerd%20%3C-%20t_swap%20%3A%20Msg%20CoreArbitratingSetup%0Am_swap%20%3C-%20peerd%20%3A%20Msg%20CoreArbitratingSetup%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Arbitrating%20Lock%0A%2F%2F%20TODO%3A%20During%20replay%20of%20Checkpoint%20Alice%200%2C%20Alice%20has%20to%20rewatch%20these%202%20txs%20(arbitrating%20already%20final%20then)%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Cancel%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Refund%0A%0Am_wallet%20%3C-%20m_swap%20%3A%20Msg%20CoreArbitratingSetup%0Am_wallet%20--%3E%20m_wallet%20%3A%20Checkpoint%20Alice%200%0Am_wallet%20-%3E%20m_swap%20%3A%20Ctl%20RefundProcedureSignatures%0Am_swap%20-%3E%20peerd%20%3A%20Msg%20RefundProcedureSignatures%0Apeerd%20-%3E%20t_swap%20%3A%20Msg%20RefundProcedureSignatures%0At_wallet%20%3C-%20t_swap%20%3A%20Msg%20RefundProcedureSignatures%0At_wallet%20-%3E%20t_swap%3ACtl%20Datum%3A%3ASignedArbitratingLock%0A%2F%2F%20DONE%3A%20do%20we%20know%20that%20same%20inputs%20are%20being%20used%20in%20case%20of%20replay%3F%0A%2F%2F%20-%3E%20yes%2C%20but%20create%20different%20sig%0At_wallet%20--%3E%20t_wallet%20%3A%20Checkpoint%20Bob%200%0At_wallet%20-%3E%20t_swap%20%3A%20Ctl%20BuyProcedureSignature%0At_syncer%20%3C-%20t_swap%20%3A%20Broadcast%20Arbitrating%20Lock%0At_swap%20-%3E%20t_syncer%20%3A%20Watch%20Accordant%20Lock%0At_swap%20-%3E%20t_syncer%20%3A%20Watch%20Buy%0A%0Aparallel%0At_syncer%20-%3E%20%20t_swap%20%3A%20Arbitrating%20Lock%20final%0A%2F%2F%20TODO%3A%20maybe%20instead%20of%20checkpointing%20earlier%2C%20reach%20this%20stage%20via%20a%20message%20from%20walletd%20in%20lieu%20of%20the%20syncer%0Am_swap%20%3C-%20m_syncer%20%3A%20Arbitrating%20Lock%20final%0Aparallel%20off%0A%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Accordant%20Lock%0A%0Aparallel%0Am_swap%20%3C-%20m_syncer%20%3A%20Accordant%20Lock%20final%0At_swap%20%3C-%20t_syncer%20%3A%20Accordant%20Lock%20final%0Aparallel%20off%0A%0Apeerd%20%3C-%20t_swap%20%3A%20Msg%20BuyProcedureSignature%0Am_swap%20%3C-%20peerd%20%3A%20Msg%20BuyProcedureSignature%0Am_swap%20-%3E%20m_syncer%3AWatch%20Buy%0Am_swap%20-%3E%20m_wallet%20%3A%20Msg%20BuyProcedureSignature%0A%3D%3DSwap%20Setup%20Complete%3D%3D%0A%3D%3DBuy%20Procedure%3A%20Bob%20is%20left%2C%20Alice%20right%3D%3D%0A%0Am_swap%20%3C-%20m_wallet%20%3A%20Fully%20signed%20buy%0Am_swap%20-%3E%20m_syncer%20%3A%20Broadcast%20buy%0Aparallel%0Am_swap%20%3C-%20m_syncer%20%3A%20Event%3A%20buy%20seen%20on%20mempool%0At_swap%20%3C-%20t_syncer%20%3A%20Event%3A%20buy%20seen%20on%20mempool%0Aparallel%20off%0At_wallet%20%3C-%20t_swap%20%3A%20Ctl%20Buy%20signature%0At_wallet%20-%3E%20t_wallet%20%3A%20recover%20accordant%20keys%0A%0A%3D%3DCancel%20Init%20t%20%3E%20t0%3A%20Bob%20is%20left%2C%20Alice%20right%2C%20either%20have%20a%20fully%20signed%20and%20valid%20cancel%20tx%2C%20and%20can%20publish%3D%3D%0A%2F%2F%20TODO%3A%20insert%20Ctl%20Tx%3A%3ACancel%20from%20wallet%20to%20swap%20(or%20do%20it%20after%20CoreArbitratingSetup%2C%20as%20in%20the%20code%20atm)%0Aparallel%0At_swap%20%3C-%20t_syncer%20%3A%20Ctl%20Cancel%20valid%0Am_swap%20%3C-%20m_syncer%20%3A%20Ctl%20Cancel%20valid%0Aparallel%20off%0Aparallel%0Am_swap%20-%3E%20m_syncer%20%3A%20Broadcast%20cancel%20(Alice%20inits)%0At_swap%20-%3E%20t_syncer%20%3A%20Broadcast%20cancel%20(Bob%20inits)%0Aparallel%20off%0A%3D%3DCancel%20detected%20t%20%3E%20t0%3A%20Bob%20is%20left%2C%20Alice%20right%3D%3D%0At_swap%20%3C-%20t_syncer%3A%20Event%20cancel%20final%0At_swap%20-%3E%20t_syncer%20%3A%20Broadcast%20refund%0Aparallel%0At_syncer%20-%3E%20t_swap%20%3A%20Event%3A%20refund%20seen%0Am_syncer%20-%3E%20m_swap%20%3A%20Event%3A%20refund%20seen%0Aparallel%20off%0Am_swap%20-%3E%20m_wallet%20%3A%20Ctl%20Tx%3A%3ARefund%20tx%0Am_wallet%20-%3E%20m_wallet%20%3A%20recover%20accordant%20keys%0A%0A%3D%3D%20Punish%20process%20t%20%3E%20t1%20%3E%20t0%20%3D%3D%0A%2F%2F%20TODO%3A%20none%20of%20this%20is%20true%20except%20last%20step%0Am_swap%3C-m_syncer%3ACtl%20Event%3A%20punish%20valid%0Am_swap-%3Em_wallet%3ACtl%20Event%3A%20punish%20valid%0Am_wallet-%3Em_wallet%3Afully%20sign%20punish%0A%2F%2F%20TODO%3A%20in%20the%20code%2C%20this%20actually%20already%20happens%20after%20CoreArbitratingSetup%20-%20think%20about%20this%20and%20move%20either%20this%20or%20that%0Am_swap%3C-m_wallet%3ACtl%20Tx%3A%3APunish%0Am_swap-%3Em_syncer%3ACtl%20Broadcast%20punish%20tx%0A</desc><defs/><g><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g><rect fill="white" stroke="none" x="0" y="0" width="2625" height="10337"/></g><g><text fill="black" stroke="none" font-family="sans-serif" font-size="16.5pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1238.7019835856759" y="39.58145414999999" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Farcaster node</text></g><g/><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 154.895423907 L 69.52660506176173 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 154.895423907 L 240.92694725433986 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 154.895423907 L 703.1621409168399 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 154.895423907 L 1015.5050499387149 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1239.594293283832 154.895423907 L 1239.594293283832 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 154.895423907 L 1355.0254712418282 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1474.5260843194533 154.895423907 L 1474.5260843194533 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 154.895423907 L 1681.5072344028517 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 154.895423907 L 1893.6709101210158 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 154.895423907 L 2351.840246849922 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 154.895423907 L 2551.7708176149613 10337.884194896993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/></g><g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 13.193818050000004 83.648806437 L 125.85939207352345 83.648806437 L 125.85939207352345 154.895423907 L 13.193818050000004 154.895423907 L 13.193818050000004 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="41.82440321850001" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_syncer</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 187.44311348964845 83.648806437 L 294.4107810190313 83.648806437 L 294.4107810190313 154.895423907 L 187.44311348964845 154.895423907 L 187.44311348964845 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="216.07369865814846" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_wallet</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 651.3067937854493 83.648806437 L 755.0174880482305 83.648806437 L 755.0174880482305 154.895423907 L 651.3067937854493 154.895423907 L 651.3067937854493 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="679.9373789539493" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_swap</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 948.1701190670899 83.648806437 L 1082.83998081034 83.648806437 L 1082.83998081034 154.895423907 L 948.1701190670899 154.895423907 L 948.1701190670899 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="976.8007042355899" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_farcasterd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1197.9286434180665 83.648806437 L 1281.2599431495978 83.648806437 L 1281.2599431495978 154.895423907 L 1197.9286434180665 154.895423907 L 1197.9286434180665 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1226.5592285865664" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_cli</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1307.6475792495978 83.648806437 L 1402.4033632340588 83.648806437 L 1402.4033632340588 154.895423907 L 1307.6475792495978 154.895423907 L 1307.6475792495978 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1336.2781644180977" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">peerd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1428.7909993340588 83.648806437 L 1520.261169304848 83.648806437 L 1520.261169304848 154.895423907 L 1428.7909993340588 154.895423907 L 1428.7909993340588 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1457.4215845025587" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_cli</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1610.102868411598 83.648806437 L 1752.9116003941058 83.648806437 L 1752.9116003941058 154.895423907 L 1610.102868411598 154.895423907 L 1610.102868411598 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1638.7334535800978" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_farcasterd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1837.7461278699964 83.648806437 L 1949.5956923720355 83.648806437 L 1949.5956923720355 154.895423907 L 1837.7461278699964 154.895423907 L 1837.7461278699964 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1866.3767130384963" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_swap</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 2294.2869779656016 83.648806437 L 2409.393515734242 83.648806437 L 2409.393515734242 154.895423907 L 2294.2869779656016 154.895423907 L 2294.2869779656016 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2322.917563134102" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_wallet</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 2491.3685954835705 83.648806437 L 2612.1730397463516 83.648806437 L 2612.1730397463516 154.895423907 L 2491.3685954835705 154.895423907 L 2491.3685954835705 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2519.9991806520707" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_syncer</text></g></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 229.22059892200002 L 2611.80618195 229.22059892200002 M 13.19381805 238.01647762200002 L 2611.80618195 238.01647762200002 M 13.19381805 246.81235632200003 L 2611.80618195 246.81235632200003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1070.6038792842187 207.67069610700003 L 1554.3961207157813 207.67069610700003 L 1554.3961207157813 268.362259137 L 1070.6038792842187 268.362259137 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1107.5465698242188" y="244.61338664700003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Setup and Commit-Reveal: Bob and Alice can be on both sides</text></g><g><g><rect fill="white" stroke="none" x="1712.7326037878515" y="307.94371328700004" width="120.3714910253125" height="34.30392693"/></g><g><rect fill="white" stroke="none" x="1712.7326037878515" y="334.33134938700005" width="66.58483941398437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028515" y="331.69258577700003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch farcasterd</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028515" y="358.08022187700004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">manually</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 368.63527631700003 L 1787.0577788028518 368.63527631700003 L 1787.0577788028518 402.939203247 L 1703.2330547918518 402.939203247" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,402.939203247) translate(-1681.5072344028517,-402.939203247)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 391.944354872 L 1681.5072344028517 402.939203247 L 1703.4969311528516 413.934051622 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1712.7326037878515" y="442.52065739700004" width="100.82247979484374" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028515" y="466.26952988700003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch walletd</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 476.824584327 L 1787.0577788028518 476.824584327 L 1787.0577788028518 511.128511257 L 1703.2330547918518 511.128511257" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,511.128511257) translate(-1681.5072344028517,-511.128511257)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 500.133662882 L 1681.5072344028517 511.128511257 L 1703.4969311528516 522.123359632 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1985.0169639247658" y="550.709965407" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1988.9751093397658" y="574.4588378970001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 585.013892337 L 1703.2330547918518 585.013892337" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,585.013892337) translate(-1681.5072344028517,-585.013892337)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 574.0190439620001 L 1681.5072344028517 585.013892337 L 1703.4969311528516 596.008740712 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1505.7514537044533" y="624.595346487" width="144.53041131339845" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1509.7095991194533" y="648.3442189770001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">MakeOffer (deferred)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1474.5260843194533 658.899273417 L 1659.7814140138516 658.899273417" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,658.899273417) translate(-1681.5072344028517,-658.899273417)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1659.5175376528518 647.9044250420001 L 1681.5072344028517 658.899273417 L 1659.5175376528518 669.894121792 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1973.6103782314065" y="698.480727567" width="86.12672478996093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1977.5685236464064" y="722.2296000570001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl GetKeys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 732.784654497 L 2330.114426460922 732.784654497" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,732.784654497) translate(-2351.840246849922,-732.784654497)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 721.7898061220001 L 2351.840246849922 732.784654497 L 2329.850550099922 743.779502872 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1905.9654578822854" y="772.366108647" width="221.41656548820313" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1909.9236032972854" y="796.1149811370001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Keys (not to be held on state)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 806.670035577 L 1703.2330547918518 806.670035577" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,806.670035577) translate(-1681.5072344028517,-806.670035577)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 795.6751872020001 L 1681.5072344028517 806.670035577 L 1703.4969311528516 817.664883952 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1712.7326037878515" y="846.251489727" width="152.68359429679688" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028515" y="870.0003622170001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">MakeOffer (continues)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 880.555416657 L 1787.0577788028518 880.555416657 L 1787.0577788028518 914.859343587 L 1703.2330547918518 914.859343587" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,914.859343587) translate(-1681.5072344028517,-914.859343587)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 903.8644952120001 L 1681.5072344028517 914.859343587 L 1703.4969311528516 925.854191962 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1712.7326037878515" y="954.4407977369999" width="51.11598260246094" height="34.30392693"/></g><g><rect fill="white" stroke="none" x="1712.7326037878515" y="980.8284338369999" width="83.70723016105468" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028515" y="978.189670227" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028515" y="1004.577306327" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">peerd listen</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 1015.1323607669999 L 1787.0577788028518 1015.1323607669999 L 1787.0577788028518 1049.436287697 L 1703.2330547918518 1049.436287697" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,1049.436287697) translate(-1681.5072344028517,-1049.436287697)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 1038.441439322 L 1681.5072344028517 1049.436287697 L 1703.4969311528516 1060.4311360719998 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="1089.017741847" width="120.3714910253125" height="34.30392693"/></g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="1115.405377947" width="66.58483941398437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="1112.766614337" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch farcasterd</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="1139.154250437" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">manually</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 1149.709304877 L 1121.0555943387149 1149.709304877 L 1121.0555943387149 1184.013231807 L 1037.230870327715 1184.013231807" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,1184.013231807) translate(-1015.5050499387149,-1184.013231807)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1037.494746688715 1173.018383432 L 1015.5050499387149 1184.013231807 L 1037.494746688715 1195.008080182 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="1223.5946859570001" width="100.82247979484374" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="1247.343558447" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch walletd</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 1257.8986128870001 L 1121.0555943387149 1257.8986128870001 L 1121.0555943387149 1292.2025398170001 L 1037.230870327715 1292.2025398170001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,1292.2025398170001) translate(-1015.5050499387149,-1292.2025398170001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1037.494746688715 1281.2076914420002 L 1015.5050499387149 1292.2025398170001 L 1037.494746688715 1303.197388192 Z"/></g></g><g><g><rect fill="white" stroke="none" x="596.5592218949063" y="1331.783993967" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="600.5173673099063" y="1355.532866457" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 1366.087920897 L 993.779229549715 1366.087920897" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,1366.087920897) translate(-1015.5050499387149,-1366.087920897)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 1355.093072522 L 1015.5050499387149 1366.087920897 L 993.5153531887149 1377.082769272 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="1405.6693750470001" width="161.6385045751172" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="1429.418247537" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeOffer (deferred)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1239.594293283832 1439.9733019770001 L 1037.230870327715 1439.9733019770001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,1439.9733019770001) translate(-1015.5050499387149,-1439.9733019770001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1037.494746688715 1428.9784536020002 L 1015.5050499387149 1439.9733019770001 L 1037.494746688715 1450.968150352 Z"/></g></g><g><g><rect fill="white" stroke="none" x="585.1526362015469" y="1479.5547561270002" width="86.12672478996093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="589.1107816165469" y="1503.3036286170002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl GetKeys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 1513.8586830570002 L 262.65276764333987 1513.8586830570002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,1513.8586830570002) translate(-240.92694725433986,-1513.8586830570002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 1502.8638346820003 L 240.92694725433986 1513.8586830570002 L 262.91664400433984 1524.8535314320002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="517.5077158524258" y="1553.4401372070004" width="221.41656548820313" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="521.4658612674258" y="1577.1890096970003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Keys (not to be held on state)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 1587.7440641370004 L 993.779229549715 1587.7440641370004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,1587.7440641370004) translate(-1015.5050499387149,-1587.7440641370004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 1576.7492157620004 L 1015.5050499387149 1587.7440641370004 L 993.5153531887149 1598.7389125120003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="1627.3255182870005" width="169.79168755851563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="1651.0743907770004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeOffer (continues)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 1661.6294452170005 L 1121.0555943387149 1661.6294452170005 L 1121.0555943387149 1695.9333721470005 L 1037.230870327715 1695.9333721470005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,1695.9333721470005) translate(-1015.5050499387149,-1695.9333721470005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1037.494746688715 1684.9385237720005 L 1015.5050499387149 1695.9333721470005 L 1037.494746688715 1706.9282205220004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="1735.5148262970004" width="51.11598260246094" height="34.30392693"/></g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="1761.9024623970004" width="100.82963616691406" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="1759.2636987870003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="1785.6513348870003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">peerd connect</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 1796.2063893270004 L 1121.0555943387149 1796.2063893270004 L 1121.0555943387149 1830.5103162570003 L 1037.230870327715 1830.5103162570003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,1830.5103162570003) translate(-1015.5050499387149,-1830.5103162570003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1037.494746688715 1819.5154678820004 L 1015.5050499387149 1830.5103162570003 L 1037.494746688715 1841.5051646320003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="581.6164805008633" y="1870.0917704070005" width="93.19903619132812" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="585.5746259158633" y="1893.8406428970004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeOffer</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 1904.3956973370005 L 262.65276764333987 1904.3956973370005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,1904.3956973370005) translate(-240.92694725433986,-1904.3956973370005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 1893.4008489620005 L 240.92694725433986 1904.3956973370005 L 262.91664400433984 1915.3905457120004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="272.15231663933986" y="1943.9771514870006" width="126.87829644523437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="276.11046205433985" y="1967.7260239770005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">create taker wallet</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 1978.2810784170006 L 346.4774916543399 1978.2810784170006 L 346.4774916543399 2012.5850053470006 L 262.65276764333987 2012.5850053470006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,2012.5850053470006) translate(-240.92694725433986,-2012.5850053470006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 2001.5901569720006 L 240.92694725433986 2012.5850053470006 L 262.91664400433984 2023.5798537220005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="570.8791987015469" y="2052.1664594970002" width="114.67359978996093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="574.8373441165469" y="2075.915331987" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl LaunchSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 2086.4703864270004 L 993.779229549715 2086.4703864270004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,2086.4703864270004) translate(-1015.5050499387149,-2086.4703864270004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 2075.4755380520005 L 1015.5050499387149 2086.4703864270004 L 993.5153531887149 2097.4652348020004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="827.6768187261564" y="2126.0518405770003" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="831.6349641411564" y="2149.8007130670003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 2160.3557675070006 L 993.779229549715 2160.3557675070006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,2160.3557675070006) translate(-1015.5050499387149,-2160.3557675070006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 2149.3609191320006 L 1015.5050499387149 2160.3557675070006 L 993.5153531887149 2171.3506158820005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1046.7304193237148" y="2199.9372216570005" width="98.36720330558593" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1050.6885647387148" y="2223.6860941470004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch syncer</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 2234.241148587 L 1121.0555943387149 2234.241148587 L 1121.0555943387149 2268.5450755170004 L 1037.230870327715 2268.5450755170004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,2268.5450755170004) translate(-1015.5050499387149,-2268.5450755170004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1037.494746688715 2257.5502271420005 L 1015.5050499387149 2268.5450755170004 L 1037.494746688715 2279.5399238920004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="810.5615690923673" y="2308.1265296670003" width="97.5440526708203" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="814.5197145073673" y="2331.8754021570003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 2342.4304565970006 L 724.8879613058399 2342.4304565970006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,2342.4304565970006) translate(-703.1621409168399,-2342.4304565970006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 2331.4356082220006 L 703.1621409168399 2342.4304565970006 L 725.1518376668399 2353.4253049720005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="966.080553547635" y="2382.0119107470005" width="126.02650506339843" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="970.038698962635" y="2405.7607832370004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg TakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 2416.3158376770007 L 1333.299650852828 2416.3158376770007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,2416.3158376770007) translate(-1355.0254712418282,-2416.3158376770007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1333.0357744918283 2405.3209893020007 L 1355.0254712418282 2416.3158376770007 L 1333.0357744918283 2427.3106860520006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1455.2531002906408" y="2455.8972918270006" width="126.02650506339843" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1459.2112457056407" y="2479.6461643170005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg TakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 2490.201218757001 L 1659.7814140138516 2490.201218757001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,2490.201218757001) translate(-1681.5072344028517,-2490.201218757001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1659.5175376528518 2479.206370382001 L 1681.5072344028517 2490.201218757001 L 1659.5175376528518 2501.1960671320007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1952.8301581996682" y="2529.7826729070007" width="127.6871648534375" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1956.7883036146682" y="2553.5315453970006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl BitcoinAddress</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 2564.086599837001 L 2330.114426460922 2564.086599837001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,2564.086599837001) translate(-2351.840246849922,-2564.086599837001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 2553.091751462001 L 2351.840246849922 2564.086599837001 L 2329.850550099922 2575.081448212001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1953.6604880946877" y="2603.668053987001" width="126.02650506339843" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1957.6186335096877" y="2627.4169264770007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg TakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 2637.971980917001 L 2330.114426460922 2637.971980917001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,2637.971980917001) translate(-2351.840246849922,-2637.971980917001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 2626.977132542001 L 2351.840246849922 2637.971980917001 L 2329.850550099922 2648.966829292001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2383.065616234922" y="2677.553435067001" width="135.0171666844922" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2387.023761649922" y="2701.302307557001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">create maker wallet</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 2711.8573619970007 L 2457.390791249922 2711.8573619970007 L 2457.390791249922 2746.161288927001 L 2373.566067238922 2746.161288927001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,2746.161288927001) translate(-2351.840246849922,-2746.161288927001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2373.829943599922 2735.166440552001 L 2351.840246849922 2746.161288927001 L 2373.829943599922 2757.156137302001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1959.3369407314065" y="2785.742743077001" width="114.67359978996093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1963.2950861464064" y="2809.4916155670007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl LaunchSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 2820.046670007001 L 1703.2330547918518 2820.046670007001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,2820.046670007001) translate(-1681.5072344028517,-2820.046670007001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 2809.051821632001 L 1681.5072344028517 2820.046670007001 L 1703.4969311528516 2831.041518382001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1755.9322955603127" y="2859.628124157001" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1759.8904409753127" y="2883.376996647001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 2893.932051087001 L 1703.2330547918518 2893.932051087001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,2893.932051087001) translate(-1681.5072344028517,-2893.932051087001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 2882.937202712001 L 1681.5072344028517 2893.932051087001 L 1703.4969311528516 2904.926899462001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1712.7326037878515" y="2933.513505237001" width="98.36720330558593" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028515" y="2957.262377727001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch syncer</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 2967.817432167001 L 1787.0577788028518 2967.817432167001 L 1787.0577788028518 3002.121359097001 L 1703.2330547918518 3002.121359097001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,3002.121359097001) translate(-1681.5072344028517,-3002.121359097001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 2991.126510722001 L 1681.5072344028517 3002.121359097001 L 1703.4969311528516 3013.116207472001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1736.37610506959" y="3041.702813247001" width="102.4259343846875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1740.33425048459" y="3065.451685737001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl MakeSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1681.5072344028517 3076.006740177001 L 1871.9450897320157 3076.006740177001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,3076.006740177001) translate(-1893.6709101210158,-3076.006740177001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1871.681213371016 3065.011891802001 L 1893.6709101210158 3076.006740177001 L 1871.681213371016 3087.001588552001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1558.8939972927892" y="3115.588194327001" width="130.90838677726563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1562.8521427077892" y="3139.337066817001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg MakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 3149.8921212570012 L 1376.7512916308283 3149.8921212570012" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,3149.8921212570012) translate(-1355.0254712418282,-3149.8921212570012)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1377.015167991828 3138.8972728820013 L 1355.0254712418282 3149.8921212570012 L 1377.015167991828 3160.886969632001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="963.6396126907014" y="3189.473575407001" width="130.90838677726563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="967.5977581057014" y="3213.222447897001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg MakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 3223.7775023370014 L 724.8879613058399 3223.7775023370014" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,3223.7775023370014) translate(-703.1621409168399,-3223.7775023370014)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 3212.7826539620014 L 703.1621409168399 3223.7775023370014 L 725.1518376668399 3234.7723507120013 Z"/></g></g><g><g><rect fill="white" stroke="none" x="329.69833847517975" y="3263.3589564870013" width="113.29206902824218" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="333.65648389017974" y="3287.107828977001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl WatchHeight</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3297.6628834170015 L 91.25242545076173 3297.6628834170015" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,3297.6628834170015) translate(-69.52660506176173,-3297.6628834170015)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 3286.6680350420015 L 69.52660506176173 3297.6628834170015 L 91.51630181176174 3308.6577317920014 Z"/></g></g><g><g><rect fill="white" stroke="none" x="246.16940018172272" y="3337.2443375670014" width="280.34994561515623" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="250.1275455967227" y="3360.9932100570013" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Watch Arbitrating Funding Address</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3371.5482644970016 L 91.25242545076173 3371.5482644970016" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,3371.5482644970016) translate(-69.52660506176173,-3371.5482644970016)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 3360.5534161220016 L 69.52660506176173 3371.5482644970016 L 91.51630181176174 3382.5431128720015 Z"/></g></g><g><g><rect fill="white" stroke="none" x="406.5903506969571" y="3411.1297186470015" width="130.90838677726563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="410.5484961119571" y="3434.8785911370014" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg MakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3445.4336455770017 L 262.65276764333987 3445.4336455770017" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,3445.4336455770017) translate(-240.92694725433986,-3445.4336455770017)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 3434.4387972020018 L 240.92694725433986 3445.4336455770017 L 262.91664400433984 3456.4284939520016 Z"/></g></g><g><g><rect fill="white" stroke="none" x="361.76218754998445" y="3485.0150997270016" width="220.56471307121095" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="365.72033296498444" y="3508.7639722170015" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl RevealProof (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 3519.319026657002 L 681.4363205278399 3519.319026657002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,3519.319026657002) translate(-703.1621409168399,-3519.319026657002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 3508.324178282002 L 703.1621409168399 3519.319026657002 L 681.1724441668399 3530.3138750320018 Z"/></g></g><g><g><rect fill="white" stroke="none" x="913.9224038283967" y="3558.9004808070017" width="230.342804501875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="917.8805492433967" y="3582.6493532970017" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3593.204407737002 L 1333.299650852828 3593.204407737002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,3593.204407737002) translate(-1355.0254712418282,-3593.204407737002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1333.0357744918283 3582.209559362002 L 1355.0254712418282 3593.204407737002 L 1333.0357744918283 3604.199256112002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="931.4420800368928" y="3632.785861887002" width="195.30345208488282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="935.4002254518928" y="3656.5347343770018" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3667.089788817002 L 1333.299650852828 3667.089788817002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,3667.089788817002) translate(-1355.0254712418282,-3667.089788817002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1333.0357744918283 3656.094940442002 L 1355.0254712418282 3667.089788817002 L 1333.0357744918283 3678.084637192002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1509.1767884304845" y="3706.671242967002" width="230.342804501875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1513.1349338454845" y="3730.420115457002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 3740.975169897002 L 1871.9450897320157 3740.975169897002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,3740.975169897002) translate(-1893.6709101210158,-3740.975169897002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1871.681213371016 3729.980321522002 L 1893.6709101210158 3740.975169897002 L 1871.681213371016 3751.970018272002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1979.885567836094" y="3780.556624047002" width="285.74002129875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1983.843713251094" y="3804.305496537002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg RevealProof (taker is sender) </text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 3814.8605509770023 L 2330.114426460922 3814.8605509770023" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,3814.8605509770023) translate(-2351.840246849922,-3814.8605509770023)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 3803.8657026020023 L 2351.840246849922 3814.8605509770023 L 2329.850550099922 3825.855399352002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1924.8962795060156" y="3854.442005127002" width="271.881867001875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1928.8544249210156" y="3878.190877617002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg RevealProof</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 3888.745932057002 L 1999.2214545210159 3888.745932057002 L 1999.2214545210159 3923.049858987002 L 1915.396730510016 3923.049858987002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,3923.049858987002) translate(-1893.6709101210158,-3923.049858987002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 3912.055010612002 L 1893.6709101210158 3923.049858987002 L 1915.6606068710157 3934.044707362002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1526.6964646389806" y="3962.631313137002" width="195.30345208488282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1530.6546100539806" y="3986.380185627002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 3996.9352400670023 L 1871.9450897320157 3996.9352400670023" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,3996.9352400670023) translate(-1893.6709101210158,-3996.9352400670023)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1871.681213371016 3985.9403916920023 L 1893.6709101210158 3996.9352400670023 L 1871.681213371016 4007.930088442002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1712.7326037878518" y="4036.516694217002" width="149.71293694816407" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1716.6907492028517" y="4060.265566707002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ask for funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4070.8206211470024 L 1703.2330547918518 4070.8206211470024" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1681.5072344028517,4070.8206211470024) translate(-1681.5072344028517,-4070.8206211470024)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1703.4969311528516 4059.8257727720024 L 1681.5072344028517 4070.8206211470024 L 1703.4969311528516 4081.8154695220023 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1924.8962795060156" y="4110.402075297002" width="236.84252984367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1928.8544249210156" y="4134.150947787002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg Reveal</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4144.7060022270025 L 1999.2214545210159 4144.7060022270025 L 1999.2214545210159 4179.009929157002 L 1915.396730510016 4179.009929157002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,4179.009929157002) translate(-1893.6709101210158,-4179.009929157002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 4168.015080782002 L 1893.6709101210158 4179.009929157002 L 1915.6606068710157 4190.004777532003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1999.441735438633" y="4218.591383307003" width="246.62768609367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2003.399880853633" y="4242.340255797003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4252.895310237002 L 2330.114426460922 4252.895310237002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,4252.895310237002) translate(-2351.840246849922,-4252.895310237002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 4241.900461862002 L 2351.840246849922 4252.895310237002 L 2329.850550099922 4263.890158612003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2166.0748293538672" y="4292.476764387003" width="113.29206902824218" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2170.0329747688675" y="4316.225636877003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl WatchHeight</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4326.7806913170025 L 2530.044997225961 4326.7806913170025" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,4326.7806913170025) translate(-2551.7708176149613,-4326.7806913170025)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 4315.785842942002 L 2551.7708176149613 4326.7806913170025 L 2529.7811208649614 4337.775539692003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2082.54589106041" y="4366.362145467003" width="280.34994561515623" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2086.5040364754104" y="4390.111017957003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Watch Arbitrating Funding Address</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4400.666072397003 L 2530.044997225961 4400.666072397003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,4400.666072397003) translate(-2551.7708176149613,-4400.666072397003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 4389.671224022002 L 2551.7708176149613 4400.666072397003 L 2529.7811208649614 4411.660920772003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2113.6374895711524" y="4440.247526547003" width="218.16674859367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2117.5956349861526" y="4463.996399037003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Arbitrating Funding event</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 4474.551453477003 L 1915.396730510016 4474.551453477003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,4474.551453477003) translate(-1893.6709101210158,-4474.551453477003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 4463.556605102002 L 1893.6709101210158 4474.551453477003 L 1915.6606068710157 4485.546301852003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2046.2813426774026" y="4514.132907627003" width="152.94847161613282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2050.2394880924026" y="4537.8817801170035" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Ctl Tx::Funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4548.436834557003 L 2330.114426460922 4548.436834557003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,4548.436834557003) translate(-2351.840246849922,-4548.436834557003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 4537.441986182002 L 2351.840246849922 4548.436834557003 L 2329.850550099922 4559.431682932003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2030.375832728672" y="4588.018288707003" width="184.75949151359376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2034.333978143672" y="4611.767161197004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Ctl FundingUpdated</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 4622.322215637003 L 1915.396730510016 4622.322215637003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,4622.322215637003) translate(-1893.6709101210158,-4622.322215637003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 4611.327367262003 L 1893.6709101210158 4622.322215637003 L 1915.6606068710157 4633.317064012003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1924.8962795060158" y="4661.903669787003" width="395.71859795890623" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1928.8544249210158" y="4685.652542277004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg RevealProof (taker is sender) </text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4696.207596717003 L 2330.114426460922 4696.207596717003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,4696.207596717003) translate(-2351.840246849922,-4696.207596717003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 4685.212748342003 L 2351.840246849922 4696.207596717003 L 2329.850550099922 4707.2024450920035 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1944.452462367344" y="4735.789050867003" width="356.60623223625" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1948.410607782344" y="4759.537923357004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4770.092977797003 L 2330.114426460922 4770.092977797003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,4770.092977797003) translate(-2351.840246849922,-4770.092977797003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 4759.098129422003 L 2351.840246849922 4770.092977797003 L 2329.850550099922 4781.087826172004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2008.4037868302346" y="4809.6744319470035" width="228.70358331046876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2012.3619322452346" y="4833.423304437004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 4843.978358877003 L 1915.396730510016 4843.978358877003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,4843.978358877003) translate(-1893.6709101210158,-4843.978358877003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 4832.983510502003 L 1893.6709101210158 4843.978358877003 L 1915.6606068710157 4854.973207252004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1505.1073533108556" y="4883.559813027004" width="238.48167474113282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1509.0654987258556" y="4907.308685517004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4917.863739957003 L 1376.7512916308283 4917.863739957003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,4917.863739957003) translate(-1355.0254712418282,-4917.863739957003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1377.015167991828 4906.868891582003 L 1355.0254712418282 4917.863739957003 L 1377.015167991828 4928.858588332004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1522.6270295193517" y="4957.445194107004" width="203.44232232414063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1526.5851749343517" y="4981.194066597004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 4991.7491210370035 L 1376.7512916308283 4991.7491210370035" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,4991.7491210370035) translate(-1355.0254712418282,-4991.7491210370035)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1377.015167991828 4980.754272662003 L 1355.0254712418282 4991.7491210370035 L 1377.015167991828 5002.743969412004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="909.8529687087678" y="5031.330575187004" width="238.48167474113282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="913.8111141237678" y="5055.079447677004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 5065.634502117004 L 724.8879613058399 5065.634502117004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5065.634502117004) translate(-703.1621409168399,-5065.634502117004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 5054.639653742003 L 703.1621409168399 5065.634502117004 L 725.1518376668399 5076.629350492004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="327.141589710629" y="5105.215956267004" width="289.80590874992185" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="331.09973512562897" y="5128.964828757004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5139.519883197004 L 262.65276764333987 5139.519883197004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5139.519883197004) translate(-240.92694725433986,-5139.519883197004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5128.525034822003 L 240.92694725433986 5139.519883197004 L 262.91664400433984 5150.514731572004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="734.3875103018399" y="5179.101337347003" width="271.881867001875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="738.3456557168399" y="5202.850209837004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg RevealProof</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5213.405264277004 L 808.71268531684 5213.405264277004 L 808.71268531684 5247.709191207004 L 724.8879613058399 5247.709191207004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5247.709191207004) translate(-703.1621409168399,-5247.709191207004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 5236.714342832003 L 703.1621409168399 5247.709191207004 L 725.1518376668399 5258.704039582004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="927.3726449172639" y="5287.290645357004" width="203.44232232414063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="931.3307903322639" y="5311.039517847004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 5321.594572287004 L 724.8879613058399 5321.594572287004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5321.594572287004) translate(-703.1621409168399,-5321.594572287004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 5310.599723912003 L 703.1621409168399 5321.594572287004 L 725.1518376668399 5332.589420662004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="784.4771269536955" y="5361.176026437004" width="149.71293694816407" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="788.4352723686955" y="5384.9248989270045" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ask for funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5395.479953367004 L 993.779229549715 5395.479953367004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,5395.479953367004) translate(-1015.5050499387149,-5395.479953367004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 5384.4851049920035 L 1015.5050499387149 5395.479953367004 L 993.5153531887149 5406.474801742004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="734.3875103018399" y="5435.061407517003" width="236.84252984367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="738.3456557168399" y="5458.810280007004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg Reveal</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5469.365334447004 L 808.71268531684 5469.365334447004 L 808.71268531684 5503.669261377004 L 724.8879613058399 5503.669261377004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5503.669261377004) translate(-703.1621409168399,-5503.669261377004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 5492.674413002003 L 703.1621409168399 5503.669261377004 L 725.1518376668399 5514.664109752004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="344.66126591912507" y="5543.250715527004" width="254.7665563329297" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="348.61941133412506" y="5566.9995880170045" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5577.554642457004 L 262.65276764333987 5577.554642457004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5577.554642457004) translate(-240.92694725433986,-5577.554642457004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5566.5597940820035 L 240.92694725433986 5577.554642457004 L 262.91664400433984 5588.549490832004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="277.2609986924649" y="5617.136096607004" width="218.16674859367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="281.2191441074649" y="5640.884969097005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Arbitrating Funding event</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 5651.440023537004 L 681.4363205278399 5651.440023537004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5651.440023537004) translate(-703.1621409168399,-5651.440023537004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 5640.445175162004 L 703.1621409168399 5651.440023537004 L 681.1724441668399 5662.434871912004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="395.5703082775235" y="5691.021477687004" width="152.94847161613282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="399.5284536925235" y="5714.770350177005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Ctl Tx::Funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5725.325404617004 L 262.65276764333987 5725.325404617004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5725.325404617004) translate(-240.92694725433986,-5725.325404617004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5714.330556242004 L 240.92694725433986 5725.325404617004 L 262.91664400433984 5736.3202529920045 Z"/></g></g><g><g><rect fill="white" stroke="none" x="379.66479832879304" y="5764.906858767004" width="184.75949151359376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="383.62294374379303" y="5788.655731257005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Ctl FundingUpdated</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 5799.210785697004 L 681.4363205278399 5799.210785697004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5799.210785697004) translate(-703.1621409168399,-5799.210785697004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 5788.215937322004 L 703.1621409168399 5799.210785697004 L 681.1724441668399 5810.205634072005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="272.1523166393399" y="5838.792239847005" width="399.7844548925" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="276.1104620543399" y="5862.541112337005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5873.096166777004 L 262.65276764333987 5873.096166777004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5873.096166777004) translate(-240.92694725433986,-5873.096166777004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5862.101318402004 L 240.92694725433986 5873.096166777004 L 262.91664400433984 5884.091015152005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="289.67200047723054" y="5912.677620927005" width="364.74508721671873" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="293.63014589223053" y="5936.426493417005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5946.981547857004 L 262.65276764333987 5946.981547857004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5946.981547857004) translate(-240.92694725433986,-5946.981547857004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5935.986699482004 L 240.92694725433986 5946.981547857004 L 262.91664400433984 5957.976396232005 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 6008.112904822005 L 2611.80618195 6008.112904822005 M 13.19381805 6016.908783522004 L 2611.80618195 6016.908783522004 M 13.19381805 6025.704662222004 L 2611.80618195 6025.704662222004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1191.6453755610742 5986.563002007005 L 1433.3546244389258 5986.563002007005 L 1433.3546244389258 6047.254565037005 L 1191.6453755610742 6047.254565037005 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1228.5880661010742" y="6023.505692547004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Commit-Reveal Complete</text></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 6108.385922002005 L 2611.80618195 6108.385922002005 M 13.19381805 6117.181800702005 L 2611.80618195 6117.181800702005 M 13.19381805 6125.9776794020045 L 2611.80618195 6125.9776794020045" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 695.4003270381249 6086.836019187005 L 1929.599672961875 6086.836019187005 L 1929.599672961875 6147.527582217005 L 695.4003270381249 6147.527582217005 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="732.343017578125" y="6123.778709727005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Changing semantics: On Commit-Reveal, Maker and Taker were the key roles. From now on Bob or Alice are the key roles. Now t_ is bob_ on the left and m_ is alice_ on the right.</text></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 6208.658939182005 L 2611.80618195 6208.658939182005 M 13.19381805 6217.454817882005 L 2611.80618195 6217.454817882005 M 13.19381805 6226.250696582005 L 2611.80618195 6226.250696582005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1164.737744640664 6187.1090363670055 L 1460.262255359336 6187.1090363670055 L 1460.262255359336 6247.8005993970055 L 1164.737744640664 6247.8005993970055 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1201.680435180664" y="6224.051726907005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Swap setup: Bob is left, Alice right</text></g><g><g><rect fill="white" stroke="none" x="388.64119298211335" y="6287.382053547006" width="166.80670220695313" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="392.59933839711334" y="6311.130926037006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 6321.685980477006 L 681.4363205278399 6321.685980477006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,6321.685980477006) translate(-703.1621409168399,-6321.685980477006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 6310.691132102005 L 703.1621409168399 6321.685980477006 L 681.1724441668399 6332.680828852006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="308.9181184434415" y="6361.267434627006" width="154.85250909171876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="312.87626385844146" y="6385.016307117006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Arbitrating Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6395.571361557006 L 91.25242545076173 6395.571361557006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,6395.571361557006) translate(-69.52660506176173,-6395.571361557006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 6384.576513182005 L 69.52660506176173 6395.571361557006 L 91.51630181176174 6406.566209932006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="337.0283326768399" y="6435.152815707006" width="98.63208062492187" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="340.9864780918399" y="6458.9016881970065" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Cancel</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6469.456742637006 L 91.25242545076173 6469.456742637006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,6469.456742637006) translate(-69.52660506176173,-6469.456742637006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 6458.461894262005 L 69.52660506176173 6469.456742637006 L 91.51630181176174 6480.451591012006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="336.20871445174225" y="6509.038196787006" width="100.27131707511718" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="340.16685986674224" y="6532.787069277007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Refund</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6543.342123717006 L 91.25242545076173 6543.342123717006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,6543.342123717006) translate(-69.52660506176173,-6543.342123717006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 6532.347275342006 L 69.52660506176173 6543.342123717006 L 91.51630181176174 6554.336972092006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="940.8014092605256" y="6582.923577867006" width="176.5847936376172" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="944.7595546755256" y="6606.672450357007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6617.227504797006 L 1333.299650852828 6617.227504797006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,6617.227504797006) translate(-1355.0254712418282,-6617.227504797006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1333.0357744918283 6606.232656422006 L 1355.0254712418282 6617.227504797006 L 1333.0357744918283 6628.2223531720065 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1536.0557938626134" y="6656.808958947006" width="176.5847936376172" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1540.0139392776134" y="6680.557831437007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 6691.112885877006 L 1871.9450897320157 6691.112885877006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,6691.112885877006) translate(-1893.6709101210158,-6691.112885877006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1871.681213371016 6680.118037502006 L 1893.6709101210158 6691.112885877006 L 1871.681213371016 6702.107734252007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2145.294609322129" y="6730.694340027007" width="154.85250909171876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2149.252754737129" y="6754.443212517007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Arbitrating Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 6764.998266957006 L 2530.044997225961 6764.998266957006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,6764.998266957006) translate(-2551.7708176149613,-6764.998266957006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 6754.003418582006 L 2551.7708176149613 6764.998266957006 L 2529.7811208649614 6775.993115332007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2173.4048235555274" y="6804.579721107007" width="98.63208062492187" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2177.3629689705276" y="6828.328593597007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Cancel</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 6838.883648037006 L 2530.044997225961 6838.883648037006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,6838.883648037006) translate(-2551.7708176149613,-6838.883648037006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 6827.888799662006 L 2551.7708176149613 6838.883648037006 L 2529.7811208649614 6849.878496412007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2172.5852053304297" y="6878.465102187007" width="100.27131707511718" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2176.54335074543" y="6902.213974677007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Refund</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 6912.7690291170065 L 2530.044997225961 6912.7690291170065" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,6912.7690291170065) translate(-2551.7708176149613,-6912.7690291170065)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 6901.774180742006 L 2551.7708176149613 6912.7690291170065 L 2529.7811208649614 6923.763877492007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2034.4631816666604" y="6952.350483267007" width="176.5847936376172" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2038.4213270816604" y="6976.099355757007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 6986.654410197007 L 2330.114426460922 6986.654410197007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,6986.654410197007) translate(-2351.840246849922,-6986.654410197007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 6975.659561822006 L 2351.840246849922 6986.654410197007 L 2329.850550099922 6997.649258572007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2383.065616234922" y="7026.235864347006" width="129.33355767570313" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2387.023761649922" y="7049.9847368370065" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Checkpoint Alice 0</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 7060.539791277007 L 2457.390791249922 7060.539791277007 L 2457.390791249922 7094.8437182070065 L 2373.566067238922 7094.8437182070065" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="10.555054440000001"/><g transform="translate(2351.840246849922,7094.8437182070065) translate(-2351.840246849922,-7094.8437182070065)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2373.829943599922 7083.848869832006 L 2351.840246849922 7094.8437182070065 L 2373.829943599922 7105.838566582007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2015.3042766373635" y="7134.425172357007" width="214.90260369621095" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2019.2624220523635" y="7158.174044847007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 7168.729099287007 L 1915.396730510016 7168.729099287007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,7168.729099287007) translate(-1893.6709101210158,-7168.729099287007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 7157.734250912006 L 1893.6709101210158 7168.729099287007 L 1915.6606068710157 7179.723947662007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1512.0078431179845" y="7208.310553437007" width="224.680695126875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1515.9659885329845" y="7232.059425927007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 7242.614480367007 L 1376.7512916308283 7242.614480367007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,7242.614480367007) translate(-1355.0254712418282,-7242.614480367007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1377.015167991828 7231.619631992006 L 1355.0254712418282 7242.614480367007 L 1377.015167991828 7253.609328742007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="916.7534585158967" y="7282.195934517007" width="224.680695126875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="920.7116039308967" y="7305.9448070070075" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 7316.499861447007 L 724.8879613058399 7316.499861447007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,7316.499861447007) translate(-703.1621409168399,-7316.499861447007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 7305.5050130720065 L 703.1621409168399 7316.499861447007 L 725.1518376668399 7327.494709822007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="359.7041965221524" y="7356.081315597007" width="224.680695126875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="363.6623419371524" y="7379.830188087008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 7390.385242527007 L 262.65276764333987 7390.385242527007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,7390.385242527007) translate(-240.92694725433986,-7390.385242527007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 7379.390394152007 L 240.92694725433986 7390.385242527007 L 262.91664400433984 7401.380090902007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="359.7149310802579" y="7429.966696677007" width="224.65922601066407" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="363.6730764952579" y="7453.715569167008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Datum::SignedArbitratingLock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 7464.270623607007 L 681.4363205278399 7464.270623607007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,7464.270623607007) translate(-703.1621409168399,-7464.270623607007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 7453.275775232007 L 703.1621409168399 7464.270623607007 L 681.1724441668399 7475.2654719820075 Z"/></g></g><g><g><rect fill="white" stroke="none" x="272.15231663933986" y="7503.852077757007" width="123.6428075536328" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="276.11046205433985" y="7527.600950247007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Checkpoint Bob 0</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 7538.156004687007 L 346.4774916543399 7538.156004687007 L 346.4774916543399 7572.459931617007 L 262.65276764333987 7572.459931617007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="10.555054440000001"/><g transform="translate(240.92694725433986,7572.459931617007) translate(-240.92694725433986,-7572.459931617007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 7561.465083242007 L 240.92694725433986 7572.459931617007 L 262.91664400433984 7583.454779992007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="379.2639651989102" y="7612.041385767007" width="185.56115777335938" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="383.2221106139102" y="7635.790258257008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 7646.345312697007 L 681.4363205278399 7646.345312697007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,7646.345312697007) translate(-703.1621409168399,-7646.345312697007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 7635.350464322007 L 703.1621409168399 7646.345312697007 L 681.1724441668399 7657.3401610720075 Z"/></g></g><g><g><rect fill="white" stroke="none" x="296.41991898055085" y="7685.9267668470075" width="179.8489080175" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="300.37806439555084" y="7709.675639337008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast Arbitrating Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 7720.230693777007 L 91.25242545076173 7720.230693777007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,7720.230693777007) translate(-69.52660506176173,-7720.230693777007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 7709.235845402007 L 69.52660506176173 7720.230693777007 L 91.51630181176174 7731.225542152008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="309.32255264754303" y="7759.812147927008" width="154.04364068351563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="313.280698062543" y="7783.561020417008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Accordant Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 7794.116074857007 L 91.25242545076173 7794.116074857007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,7794.116074857007) translate(-69.52660506176173,-7794.116074857007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 7783.121226482007 L 69.52660506176173 7794.116074857007 L 91.51630181176174 7805.110923232008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="347.2144441270352" y="7833.697529007008" width="78.25985772453124" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="351.1725895420352" y="7857.446401497008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 7868.001455937007 L 91.25242545076173 7868.001455937007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,7868.001455937007) translate(-69.52660506176173,-7868.001455937007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 7857.006607562007 L 69.52660506176173 7868.001455937007 L 91.51630181176174 7878.996304312008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="315.976101841879" y="7907.582910087008" width="140.73654229484376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="319.93424725687896" y="7931.331782577008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Arbitrating Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 7941.886837017008 L 681.4363205278399 7941.886837017008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,7941.886837017008) translate(-703.1621409168399,-7941.886837017008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 7930.891988642007 L 703.1621409168399 7941.886837017008 L 681.1724441668399 7952.881685392008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2152.3525927205665" y="7907.582910087008" width="140.73654229484376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2156.3107381355667" y="7931.331782577008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Arbitrating Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 7941.886837017008 L 1915.396730510016 7941.886837017008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,7941.886837017008) translate(-1893.6709101210158,-7941.886837017008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 7930.891988642007 L 1893.6709101210158 7941.886837017008 L 1915.6606068710157 7952.881685392008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2145.6990435262305" y="7981.468291167008" width="154.04364068351563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2149.6571889412307" y="8005.217163657008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Accordant Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 8015.772218097008 L 2530.044997225961 8015.772218097008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,8015.772218097008) translate(-2551.7708176149613,-8015.772218097008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 8004.777369722007 L 2551.7708176149613 8015.772218097008 L 2529.7811208649614 8026.767066472008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2152.757026924668" y="8055.353672247008" width="139.92767388664063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2156.7151723396682" y="8079.102544737008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Accordant Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 8089.657599177008 L 1915.396730510016 8089.657599177008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,8089.657599177008) translate(-1893.6709101210158,-8089.657599177008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 8078.662750802007 L 1893.6709101210158 8089.657599177008 L 1915.6606068710157 8100.652447552008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="316.38053604598053" y="8055.353672247008" width="139.92767388664063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="320.3386814609805" y="8079.102544737008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Accordant Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 8089.657599177008 L 681.4363205278399 8089.657599177008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,8089.657599177008) translate(-703.1621409168399,-8089.657599177008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 8078.662750802007 L 703.1621409168399 8089.657599177008 L 681.1724441668399 8100.652447552008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="931.4241814773225" y="8129.239053327008" width="195.33924920402345" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="935.3823268923225" y="8152.9879258170085" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 8163.542980257008 L 1333.299650852828 8163.542980257008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1355.0254712418282,8163.542980257008) translate(-1355.0254712418282,-8163.542980257008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1333.0357744918283 8152.5481318820075 L 1355.0254712418282 8163.542980257008 L 1333.0357744918283 8174.537828632008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1526.6785660794103" y="8203.124434407007" width="195.33924920402345" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1530.6367114944103" y="8226.873306897007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1355.0254712418282 8237.428361337008 L 1871.9450897320157 8237.428361337008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,8237.428361337008) translate(-1893.6709101210158,-8237.428361337008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1871.681213371016 8226.433512962009 L 1893.6709101210158 8237.428361337008 L 1871.681213371016 8248.423209712008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2183.5909350057227" y="8277.009815487007" width="78.25985772453124" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2187.549080420723" y="8300.758687977006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 8311.313742417007 L 2530.044997225961 8311.313742417007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,8311.313742417007) translate(-2551.7708176149613,-8311.313742417007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 8300.318894042008 L 2551.7708176149613 8311.313742417007 L 2529.7811208649614 8322.308590792007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2025.0859538834573" y="8350.895196567006" width="195.33924920402345" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2029.0440992984572" y="8374.644069057005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 8385.199123497006 L 2330.114426460922 8385.199123497006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,8385.199123497006) translate(-2351.840246849922,-8385.199123497006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 8374.204275122007 L 2351.840246849922 8385.199123497006 L 2329.850550099922 8396.193971872006 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 8446.330480462006 L 2611.80618195 8446.330480462006 M 13.19381805 8455.126359162006 L 2611.80618195 8455.126359162006 M 13.19381805 8463.922237862007 L 2611.80618195 8463.922237862007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1202.6224644892968 8424.780577647005 L 1422.3775355107032 8424.780577647005 L 1422.3775355107032 8485.472140677006 L 1202.6224644892968 8485.472140677006 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1239.5651550292969" y="8461.723268187006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Swap Setup Complete</text></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 8546.603497642005 L 2611.80618195 8546.603497642005 M 13.19381805 8555.399376342006 L 2611.80618195 8555.399376342006 M 13.19381805 8564.195255042006 L 2611.80618195 8564.195255042006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1154.555226635293 8525.053594827004 L 1470.444773364707 8525.053594827004 L 1470.444773364707 8585.745157857005 L 1154.555226635293 8585.745157857005 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1191.497917175293" y="8561.996285367006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Buy Procedure: Bob is left, Alice right</text></g><g><g><rect fill="white" stroke="none" x="2065.830384425449" y="8625.326612007004" width="113.85038812003906" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2069.7885298404494" y="8649.075484497003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Fully signed buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 8659.630538937005 L 1915.396730510016 8659.630538937005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,8659.630538937005) translate(-1893.6709101210158,-8659.630538937005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 8648.635690562005 L 1893.6709101210158 8659.630538937005 L 1915.6606068710157 8670.625387312004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2171.905189766465" y="8699.211993087003" width="101.63134820304687" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2175.863335181465" y="8722.960865577003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 8733.515920017004 L 2530.044997225961 8733.515920017004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,8733.515920017004) translate(-2551.7708176149613,-8733.515920017004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 8722.521071642004 L 2551.7708176149613 8733.515920017004 L 2529.7811208649614 8744.510768392003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2123.823593391953" y="8773.097374167002" width="197.79454095207032" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2127.7817388069534" y="8796.846246657002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: buy seen on mempool</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 8807.401301097003 L 1915.396730510016 8807.401301097003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,8807.401301097003) translate(-1893.6709101210158,-8807.401301097003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 8796.406452722003 L 1893.6709101210158 8807.401301097003 L 1915.6606068710157 8818.396149472002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="287.4471025132657" y="8773.097374167002" width="197.79454095207032" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="291.4052479282657" y="8796.846246657002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: buy seen on mempool</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 8807.401301097003 L 681.4363205278399 8807.401301097003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,8807.401301097003) translate(-703.1621409168399,-8807.401301097003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 8796.406452722003 L 703.1621409168399 8807.401301097003 L 681.1724441668399 8818.396149472002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="412.27038914910554" y="8846.982755247001" width="119.54830987296874" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="416.22853456410553" y="8870.731627737001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Buy signature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 8881.286682177002 L 262.65276764333987 8881.286682177002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,8881.286682177002) translate(-240.92694725433986,-8881.286682177002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 8870.291833802003 L 240.92694725433986 8881.286682177002 L 262.91664400433984 8892.281530552002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="272.15231663933986" y="8920.868136327003" width="159.46952874503907" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="276.11046205433985" y="8944.617008817002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">recover accordant keys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 8955.172063257001 L 346.4774916543399 8955.172063257001 L 346.4774916543399 8989.475990187002 L 262.65276764333987 8989.475990187002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,8989.475990187002) translate(-240.92694725433986,-8989.475990187002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 8978.481141812003 L 240.92694725433986 8989.475990187002 L 262.91664400433984 9000.470838562002 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 9050.607347152001 L 2611.80618195 9050.607347152001 M 13.19381805 9059.403225852002 L 2611.80618195 9059.403225852002 M 13.19381805 9068.199104552003 L 2611.80618195 9068.199104552003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 946.9462254756249 9029.057444337 L 1678.053774524375 9029.057444337 L 1678.053774524375 9089.749007367001 L 946.9462254756249 9089.749007367001 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="983.888916015625" y="9066.000134877002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Cancel Init t &gt; t0: Bob is left, Alice right, either have a fully signed and valid cancel tx, and can publish</text></g><g><g><rect fill="white" stroke="none" x="331.46284195418366" y="9129.330461517" width="109.76306207023437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="335.42098736918365" y="9153.079334007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Cancel valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 9163.634388447 L 681.4363205278399 9163.634388447" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,9163.634388447) translate(-703.1621409168399,-9163.634388447)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 9152.639540072001 L 703.1621409168399 9163.634388447 L 681.1724441668399 9174.629236822 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2167.839332832871" y="9129.330461517" width="109.76306207023437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2171.7974782478714" y="9153.079334007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Cancel valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 9163.634388447 L 1915.396730510016 9163.634388447" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,9163.634388447) translate(-1893.6709101210158,-9163.634388447)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 9152.639540072001 L 1893.6709101210158 9163.634388447 L 1915.6606068710157 9174.629236822 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2124.6575548787696" y="9203.215842597" width="196.1266179784375" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2128.61570029377" y="9226.964715086999" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast cancel (Alice inits)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 9237.519769527 L 2530.044997225961 9237.519769527" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,9237.519769527) translate(-2551.7708176149613,-9237.519769527)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 9226.524921152 L 2551.7708176149613 9237.519769527 L 2529.7811208649614 9248.514617902 Z"/></g></g><g><g><rect fill="white" stroke="none" x="291.12643906111725" y="9203.215842597" width="190.4358678563672" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="295.08458447611724" y="9226.964715086999" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast cancel (Bob inits)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 9237.519769527 L 91.25242545076173 9237.519769527" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,9237.519769527) translate(-69.52660506176173,-9237.519769527)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 9226.524921152 L 69.52660506176173 9237.519769527 L 91.51630181176174 9248.514617902 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 9298.651126492 L 2611.80618195 9298.651126492 M 13.19381805 9307.447005192 L 2611.80618195 9307.447005192 M 13.19381805 9316.242883892 L 2611.80618195 9316.242883892" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1131.527310680703 9277.101223676998 L 1493.472689319297 9277.101223676998 L 1493.472689319297 9337.792786707 L 1131.527310680703 9337.792786707 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1168.4700012207031" y="9314.043914217" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Cancel detected t &gt; t0: Bob is left, Alice right</text></g><g><g><rect fill="white" stroke="none" x="324.9345750474454" y="9377.374240856998" width="122.81959588371093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="328.89272046244537" y="9401.123113346997" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event cancel final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 9411.678167786999 L 681.4363205278399 9411.678167786999" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,9411.678167786999) translate(-703.1621409168399,-9411.678167786999)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 9400.683319411999 L 703.1621409168399 9411.678167786999 L 681.1724441668399 9422.673016161998 Z"/></g></g><g><g><rect fill="white" stroke="none" x="326.56306168074616" y="9451.259621936997" width="119.56262261710937" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="330.52120709574615" y="9475.008494426997" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast refund</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 9485.563548866998 L 91.25242545076173 9485.563548866998" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,9485.563548866998) translate(-69.52660506176173,-9485.563548866998)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 9474.568700491998 L 69.52660506176173 9485.563548866998 L 91.51630181176174 9496.558397241997 Z"/></g></g><g><g><rect fill="white" stroke="none" x="320.8543977403165" y="9525.145003016996" width="130.97995049796876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="324.81254315531646" y="9548.893875506996" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: refund seen</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 9559.448929946997 L 681.4363205278399 9559.448929946997" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,9559.448929946997) translate(-703.1621409168399,-9559.448929946997)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 9548.454081571997 L 703.1621409168399 9559.448929946997 L 681.1724441668399 9570.443778321996 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2157.230888619004" y="9525.145003016996" width="130.97995049796876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2161.189034034004" y="9548.893875506996" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: refund seen</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 9559.448929946997 L 1915.396730510016 9559.448929946997" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,9559.448929946997) translate(-1893.6709101210158,-9559.448929946997)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 9548.454081571997 L 1893.6709101210158 9559.448929946997 L 1915.6606068710157 9570.443778321996 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2064.212617091465" y="9599.030384096995" width="117.0859227880078" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2068.170762506465" y="9622.779256586995" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Tx::Refund tx</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 9633.334311026996 L 2330.114426460922 9633.334311026996" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,9633.334311026996) translate(-2351.840246849922,-9633.334311026996)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 9622.339462651997 L 2351.840246849922 9633.334311026996 L 2329.850550099922 9644.329159401996 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2383.065616234922" y="9672.915765176997" width="159.46952874503907" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2387.023761649922" y="9696.664637666996" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">recover accordant keys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 9707.219692106995 L 2457.390791249922 9707.219692106995 L 2457.390791249922 9741.523619036996 L 2373.566067238922 9741.523619036996" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,9741.523619036996) translate(-2351.840246849922,-9741.523619036996)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2373.829943599922 9730.528770661997 L 2351.840246849922 9741.523619036996 L 2373.829943599922 9752.518467411996 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 9802.654976001995 L 2611.80618195 9802.654976001995 M 13.19381805 9811.450854701996 L 2611.80618195 9811.450854701996 M 13.19381805 9820.246733401997 L 2611.80618195 9820.246733401997" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1188.3633549922265 9781.105073186995 L 1436.6366450077735 9781.105073186995 L 1436.6366450077735 9841.796636216995 L 1188.3633549922265 9841.796636216995 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1225.3060455322266" y="9818.047763726996" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve"> Punish process t &gt; t1 &gt; t0 </text></g><g><g><rect fill="white" stroke="none" x="2146.2394869466407" y="9881.378090366994" width="152.96275384269532" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2150.197632361641" y="9905.126962856993" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Event: punish valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2551.7708176149613 9915.682017296995 L 1915.396730510016 9915.682017296995" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,9915.682017296995) translate(-1893.6709101210158,-9915.682017296995)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 9904.687168921995 L 1893.6709101210158 9915.682017296995 L 1915.6606068710157 9926.676865671994 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2046.2742015641213" y="9955.263471446993" width="152.96275384269532" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2050.2323469791213" y="9979.012343936993" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Event: punish valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 9989.567398376994 L 2330.114426460922 9989.567398376994" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,9989.567398376994) translate(-2351.840246849922,-9989.567398376994)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2329.850550099922 9978.572550001994 L 2351.840246849922 9989.567398376994 L 2329.850550099922 10000.562246751993 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2383.065616234922" y="10029.148852526994" width="112.22546441398437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2387.023761649922" y="10052.897725016994" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">fully sign punish</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 10063.452779456993 L 2457.390791249922 10063.452779456993 L 2457.390791249922 10097.756706386994 L 2373.566067238922 10097.756706386994" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2351.840246849922,10097.756706386994) translate(-2351.840246849922,-10097.756706386994)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2373.829943599922 10086.761858011994 L 2351.840246849922 10097.756706386994 L 2373.829943599922 10108.751554761993 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2073.1746837418555" y="10137.338160536992" width="99.16178948722656" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2077.1328291568557" y="10161.087033026992" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Tx::Punish</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2351.840246849922 10171.642087466993 L 1915.396730510016 10171.642087466993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1893.6709101210158,10171.642087466993) translate(-1893.6709101210158,-10171.642087466993)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1915.6606068710157 10160.647239091993 L 1893.6709101210158 10171.642087466993 L 1915.6606068710157 10182.636935841992 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2143.390526070176" y="10211.223541616991" width="158.660675595625" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2147.348671485176" y="10234.972414106991" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Broadcast punish tx</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1893.6709101210158 10245.527468546992 L 2530.044997225961 10245.527468546992" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2551.7708176149613,10245.527468546992) translate(-2551.7708176149613,-10245.527468546992)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2529.7811208649614 10234.532620171993 L 2551.7708176149613 10245.527468546992 L 2529.7811208649614 10256.522316921992 Z"/></g></g></g><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/></g></svg>
\ No newline at end of file
diff --git a/doc/sequencediagram.svg b/doc/sequencediagram.svg
new file mode 100644
index 000000000..923e83d8e
--- /dev/null
+++ b/doc/sequencediagram.svg
@@ -0,0 +1 @@
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="3056" height="10712"><desc>title%20Farcaster%20node%0A%2F%2F%20to%20display%20the%20diagram%2C%20go%20to%20sequencediagram.org%0A%2F%2F%20dashed%20lines%2C%20not%20yet%20implemented%0A%0Aparticipant%20t_syncer%0Aparticipant%20t_wallet%0Aparticipant%20t_swap%0Aparticipant%20t_checkpoint%0Aparticipant%20t_farcasterd%0Aparticipant%20t_cli%0Aparticipant%20peerd%0Aparticipant%20m_cli%0Aparticipant%20m_farcasterd%0Aparticipant%20m_checkpoint%0Aparticipant%20m_swap%0Aparticipant%20m_wallet%0Aparticipant%20m_syncer%0A%0A%3D%3DSetup%20and%20Commit-Reveal%3A%20Bob%20and%20Alice%20can%20be%20on%20both%20sides%3D%3D%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20launch%20farcasterd%5Cnmanually%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20launch%20walletd%0Am_farcasterd%20%3C-%20m_wallet%20%3A%20Ctl%20Hello%0Am_cli%20-%3E%20m_farcasterd%20%3A%20MakeOffer%20(deferred)%0Am_farcasterd%20-%3E%20m_wallet%20%3A%20Ctl%20GetKeys%0Am_farcasterd%20%3C-%20m_wallet%20%3A%20Ctl%20Keys%20(not%20to%20be%20held%20on%20state)%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20MakeOffer%20(continues)%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20launch%5Cnpeerd%20listen%0At_farcasterd%20-%3E%20t_farcasterd%20%3A%20launch%20farcasterd%5Cnmanually%0At_farcasterd%20-%3E%20t_farcasterd%20%3A%20launch%20walletd%0At_wallet%20-%3E%20t_farcasterd%20%3A%20Ctl%20Hello%0At_cli%20-%3E%20t_farcasterd%20%3A%20Ctl%20TakeOffer%20(deferred)%0At_wallet%20%3C-%20t_farcasterd%20%3A%20Ctl%20GetKeys%0At_wallet%20-%3E%20t_farcasterd%20%3A%20Ctl%20Keys%20(not%20to%20be%20held%20on%20state)%0At_farcasterd%20%3C-%20t_farcasterd%20%3A%20Ctl%20TakeOffer%20(continues)%0At_farcasterd%20-%3E%20t_farcasterd%20%3A%20launch%5Cnpeerd%20connect%0At_wallet%20%3C-%20t_farcasterd%20%3A%20Ctl%20TakeOffer%0At_wallet%20-%3E%20t_wallet%20%3A%20create%20taker%20wallet%0At_wallet%20-%3E%20t_farcasterd%20%3A%20Ctl%20LaunchSwap%0At_swap%20-%3E%20t_farcasterd%20%3A%20Ctl%20Hello%0At_farcasterd%20-%3E%20t_farcasterd%3Alaunch%20syncer%0At_swap%20%3C-%20t_farcasterd%20%3A%20Ctl%20TakeSwap%0At_swap%20-%3E%20peerd%20%3A%20Msg%20TakerCommit%0Apeerd%20-%3E%20m_farcasterd%20%3A%20Msg%20TakerCommit%0Am_farcasterd%20-%3E%20m_wallet%20%3A%20Ctl%20BitcoinAddress%0Am_farcasterd%20-%3E%20m_wallet%20%3A%20Msg%20TakerCommit%0Am_wallet%20-%3E%20m_wallet%20%3A%20create%20maker%20wallet%0Am_wallet%20-%3E%20m_farcasterd%20%3A%20Ctl%20LaunchSwap%0Am_swap%20-%3E%20m_farcasterd%20%3A%20Ctl%20Hello%0Am_farcasterd%20-%3E%20m_farcasterd%3Alaunch%20syncer%0Am_farcasterd%20-%3E%20m_swap%20%3A%20Ctl%20MakeSwap%0A%0Am_swap%20-%3E%20peerd%20%3A%20Msg%20MakerCommit%0At_swap%20%3C-%20peerd%20%3A%20Msg%20MakerCommit%0A%2F%2F%20TODO%3A%20verify%20that%20swapd%20launches%20no%20matter%20what%0At_syncer%20%3C-%20t_swap%20%3A%20Ctl%20WatchHeight%0At_syncer%20%3C-%20t_swap%20%3A%20if%20Bob%2C%20Watch%20Arbitrating%20Funding%20Address%0At_swap%20-%3E%20t_wallet%20%3A%20Msg%20MakerCommit%0At_wallet%20-%3E%20t_swap%20%3A%20Ctl%20RevealProof%20(taker%20is%20sender)%0At_swap%20-%3E%20peerd%20%3A%20Msg%20RevealProof%20(taker%20is%20sender)%0At_swap%20-%3E%20peerd%20%3A%20Msg%20Reveal%20(taker%20is%20sender)%0Apeerd%20-%3E%20m_swap%20%3A%20Msg%20RevealProof%20(taker%20is%20sender)%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Alice%2C%20Msg%20RevealProof%20(taker%20is%20sender)%20%0Am_swap%20-%3E%20m_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20RevealProof%0Apeerd%20-%3E%20m_swap%20%3A%20Msg%20Reveal%20(taker%20is%20sender)%0Am_swap%20-%3E%20m_farcasterd%20%3A%20if%20Bob%2C%20ask%20for%20funding%0Am_swap%20-%3E%20m_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20Reveal%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Alice%2C%20Msg%20Reveal%20(taker%20is%20sender)%0A%0Am_swap-%3Em_syncer%3ACtl%20WatchHeight%0Am_swap%20-%3E%20m_syncer%3Aif%20Bob%2C%20Watch%20Arbitrating%20Funding%20Address%0Am_swap%20%3C-%20m_syncer%3AIf%20Bob%2C%20Arbitrating%20Funding%20event%0Am_swap-%3Em_wallet%3Aif%20Bob%2C%20Ctl%20Tx%3A%3AFunding%0Am_swap%3C-m_wallet%3AIf%20Bob%2C%20Ctl%20FundingUpdated%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20RevealProof%20(taker%20is%20sender)%20%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20Reveal%20(taker%20is%20sender)%0Am_wallet%20-%3E%20m_swap%20%3A%20Ctl%20RevealProof%20(maker%20is%20sender)%0Apeerd%20%3C-%20m_swap%20%3A%20Msg%20RevealProof%20(maker%20is%20sender)%0Apeerd%20%3C-%20m_swap%20%3A%20Msg%20Reveal%20(maker%20is%20sender)%0Apeerd%20-%3E%20t_swap%20%3A%20Msg%20RevealProof%20(maker%20is%20sender)%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Alice%2C%20Msg%20RevealProof%20(maker%20is%20sender)%0At_swap%20-%3E%20t_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20RevealProof%0Apeerd%20-%3E%20t_swap%20%3A%20Msg%20Reveal%20(maker%20is%20sender)%0At_swap%20-%3E%20t_farcasterd%20%3A%20if%20Bob%2C%20ask%20for%20funding%0At_swap%20-%3E%20t_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20Reveal%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Alice%2C%20Msg%20Reveal%20(maker%20is%20sender)%0At_syncer%20-%3E%20t_swap%3AIf%20Bob%2C%20Arbitrating%20Funding%20event%0At_swap-%3Et_wallet%3Aif%20Bob%2C%20Ctl%20Tx%3A%3AFunding%0At_swap%3C-t_wallet%3AIf%20Bob%2C%20Ctl%20FundingUpdated%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20RevealProof%20(maker%20is%20sender)%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20Reveal%20(maker%20is%20sender)%0A%3D%3DCommit-Reveal%20Complete%3D%3D%0A%3D%3DChanging%20semantics%3A%20On%20Commit-Reveal%2C%20Maker%20and%20Taker%20were%20the%20key%20roles.%20From%20now%20on%20Bob%20or%20Alice%20are%20the%20key%20roles.%20Now%20t_%20is%20bob_%20on%20the%20left%20and%20m_%20is%20alice_%20on%20the%20right.%3D%3D%0A%3D%3DSwap%20setup%3A%20Bob%20is%20left%2C%20Alice%20right%3D%3D%0At_wallet%20-%3E%20t_checkpoint%3A%20CheckpointWalletBobPrelockBob%0At_wallet%20-%3E%20t_swap%20%3A%20Ctl%20CoreArbitratingSetup%0At_swap%20-%3E%20t_checkpoint%3A%20CheckpointSwapBobPrelockBob%0A%2F%2F%20TODO%3A%20During%20replay%20of%20Checkpoint%20Bob%200%2C%20Bob%20has%20to%20rewatch%20these%203%20txs%0At_syncer%20%3C-%20t_swap%20%3A%20Watch%20Arbitrating%20Lock%0At_syncer%20%3C-%20t_swap%20%3A%20Watch%20Cancel%0At_syncer%20%3C-%20t_swap%20%3A%20Watch%20Refund%0Apeerd%20%3C-%20t_swap%20%3A%20Msg%20CoreArbitratingSetup%0Am_swap%20%3C-%20peerd%20%3A%20Msg%20CoreArbitratingSetup%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Arbitrating%20Lock%0A%2F%2F%20TODO%3A%20During%20replay%20of%20Checkpoint%20Alice%200%2C%20Alice%20has%20to%20rewatch%20these%202%20txs%20(arbitrating%20already%20final%20then)%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Cancel%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Refund%0A%0Am_wallet%20%3C-%20m_swap%20%3A%20Msg%20CoreArbitratingSetup%0Am_wallet%20-%3E%20m_checkpoint%20%3A%20CheckpointWalletAlicePrelockBob%0Am_wallet%20-%3E%20m_swap%20%3A%20Ctl%20RefundProcedureSignatures%0Am_swap%20-%3E%20m_checkpoint%20%3A%20CheckpointSwapAlicePrelockBob%0Am_swap%20-%3E%20peerd%20%3A%20Msg%20RefundProcedureSignatures%0Apeerd%20-%3E%20t_swap%20%3A%20Msg%20RefundProcedureSignatures%0At_wallet%20%3C-%20t_swap%20%3A%20Msg%20RefundProcedureSignatures%0At_wallet%20-%3E%20t_swap%3ACtl%20Datum%3A%3ASignedArbitratingLock%0A%2F%2F%20DONE%3A%20do%20we%20know%20that%20same%20inputs%20are%20being%20used%20in%20case%20of%20replay%3F%0A%2F%2F%20-%3E%20yes%2C%20but%20create%20different%20sig%0At_wallet%20-%3E%20t_checkpoint%20%3A%20CheckpointWalletBobPreBuySig%0At_wallet%20-%3E%20t_swap%20%3A%20Ctl%20BuyProcedureSignature%0At_swap%20-%3E%20t_checkpoint%20%3A%20CheckpointSwapBobPreBuySig%0At_syncer%20%3C-%20t_swap%20%3A%20Broadcast%20Arbitrating%20Lock%0At_swap%20-%3E%20t_syncer%20%3A%20Watch%20Accordant%20Lock%0At_swap%20-%3E%20t_syncer%20%3A%20Watch%20Buy%0A%0Aparallel%0At_syncer%20-%3E%20%20t_swap%20%3A%20Arbitrating%20Lock%20final%0A%2F%2F%20TODO%3A%20maybe%20instead%20of%20checkpointing%20earlier%2C%20reach%20this%20stage%20via%20a%20message%20from%20walletd%20in%20lieu%20of%20the%20syncer%0Am_swap%20%3C-%20m_syncer%20%3A%20Arbitrating%20Lock%20final%0Aparallel%20off%0A%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Accordant%20Lock%0A%0Aparallel%0Am_swap%20%3C-%20m_syncer%20%3A%20Accordant%20Lock%20final%0At_swap%20%3C-%20t_syncer%20%3A%20Accordant%20Lock%20final%0Aparallel%20off%0A%0Apeerd%20%3C-%20t_swap%20%3A%20Msg%20BuyProcedureSignature%0Am_swap%20%3C-%20peerd%20%3A%20Msg%20BuyProcedureSignature%0Am_swap%20-%3E%20m_checkpoint%20%3A%20CheckpointSwapAlicePreBuy%0Am_swap%20-%3E%20m_syncer%3AWatch%20Buy%0Am_swap%20-%3E%20m_wallet%20%3A%20Msg%20BuyProcedureSignature%0Am_wallet%20-%3E%20m_checkpoint%20%3A%20CheckpointWalletAlicePreBuy%0A%3D%3DSwap%20Setup%20Complete%3D%3D%0A%3D%3DBuy%20Procedure%3A%20Bob%20is%20left%2C%20Alice%20right%3D%3D%0A%0Am_swap%20%3C-%20m_wallet%20%3A%20Fully%20signed%20buy%0Am_swap%20-%3E%20m_syncer%20%3A%20Broadcast%20buy%0Aparallel%0Am_swap%20%3C-%20m_syncer%20%3A%20Event%3A%20buy%20seen%20on%20mempool%0At_swap%20%3C-%20t_syncer%20%3A%20Event%3A%20buy%20seen%20on%20mempool%0Aparallel%20off%0At_wallet%20%3C-%20t_swap%20%3A%20Ctl%20Buy%20signature%0At_wallet%20-%3E%20t_wallet%20%3A%20recover%20accordant%20keys%0A%0A%3D%3DCancel%20Init%20t%20%3E%20t0%3A%20Bob%20is%20left%2C%20Alice%20right%2C%20either%20have%20a%20fully%20signed%20and%20valid%20cancel%20tx%2C%20and%20can%20publish%3D%3D%0A%2F%2F%20TODO%3A%20insert%20Ctl%20Tx%3A%3ACancel%20from%20wallet%20to%20swap%20(or%20do%20it%20after%20CoreArbitratingSetup%2C%20as%20in%20the%20code%20atm)%0Aparallel%0At_swap%20%3C-%20t_syncer%20%3A%20Ctl%20Cancel%20valid%0Am_swap%20%3C-%20m_syncer%20%3A%20Ctl%20Cancel%20valid%0Aparallel%20off%0Aparallel%0Am_swap%20-%3E%20m_syncer%20%3A%20Broadcast%20cancel%20(Alice%20inits)%0At_swap%20-%3E%20t_syncer%20%3A%20Broadcast%20cancel%20(Bob%20inits)%0Aparallel%20off%0A%3D%3DCancel%20detected%20t%20%3E%20t0%3A%20Bob%20is%20left%2C%20Alice%20right%3D%3D%0At_swap%20%3C-%20t_syncer%3A%20Event%20cancel%20final%0At_swap%20-%3E%20t_syncer%20%3A%20Broadcast%20refund%0Aparallel%0At_syncer%20-%3E%20t_swap%20%3A%20Event%3A%20refund%20seen%0Am_syncer%20-%3E%20m_swap%20%3A%20Event%3A%20refund%20seen%0Aparallel%20off%0Am_swap%20-%3E%20m_wallet%20%3A%20Ctl%20Tx%3A%3ARefund%20tx%0Am_wallet%20-%3E%20m_wallet%20%3A%20recover%20accordant%20keys%0A%0A%3D%3D%20Punish%20process%20t%20%3E%20t1%20%3E%20t0%20%3D%3D%0A%2F%2F%20TODO%3A%20none%20of%20this%20is%20true%20except%20last%20step%0Am_swap%3C-m_syncer%3ACtl%20Event%3A%20punish%20valid%0Am_swap-%3Em_wallet%3ACtl%20Event%3A%20punish%20valid%0Am_wallet-%3Em_wallet%3Afully%20sign%20punish%0A%2F%2F%20TODO%3A%20in%20the%20code%2C%20this%20actually%20already%20happens%20after%20CoreArbitratingSetup%20-%20think%20about%20this%20and%20move%20either%20this%20or%20that%0Am_swap%3C-m_wallet%3ACtl%20Tx%3A%3APunish%0Am_swap-%3Em_syncer%3ACtl%20Broadcast%20punish%20tx%0A</desc><defs/><g><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g><rect fill="white" stroke="none" x="0" y="0" width="3056" height="10712"/></g><g><text fill="black" stroke="none" font-family="sans-serif" font-size="16.5pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1454.509185461842" y="39.58145414999999" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Farcaster node</text></g><g/><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 154.895423907 L 69.52660506176173 10712.588627516989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 154.895423907 L 240.92694725433986 10712.588627516989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 154.895423907 L 703.1621409168399 10712.588627516989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 154.895423907 L 1015.5050499387149 10712.588627516989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1179.0142308263985 154.895423907 L 1179.0142308263985 10712.588627516989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1403.1034741715157 154.895423907 L 1403.1034741715157 10712.588627516989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 154.895423907 L 1518.5346521295119 10712.588627516989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1638.035265207137 154.895423907 L 1638.035265207137 10712.588627516989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 154.895423907 L 1845.0164152905354 10712.588627516989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2038.1610516073324 154.895423907 L 2038.1610516073324 10712.588627516989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 154.895423907 L 2325.285313873348 10712.588627516989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2783.4546506022543 154.895423907 L 2783.4546506022543 10712.588627516989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2983.3852213672935 154.895423907 L 2983.3852213672935 10712.588627516989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/></g><g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 13.193818050000004 83.648806437 L 125.85939207352345 83.648806437 L 125.85939207352345 154.895423907 L 13.193818050000004 154.895423907 L 13.193818050000004 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="41.82440321850001" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_syncer</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 187.44311348964845 83.648806437 L 294.4107810190313 83.648806437 L 294.4107810190313 154.895423907 L 187.44311348964845 154.895423907 L 187.44311348964845 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="216.07369865814846" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_wallet</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 651.3067937854493 83.648806437 L 755.0174880482305 83.648806437 L 755.0174880482305 154.895423907 L 651.3067937854493 154.895423907 L 651.3067937854493 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="679.9373789539493" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_swap</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 945.7184360226563 83.648806437 L 1085.2916638547736 83.648806437 L 1085.2916638547736 154.895423907 L 945.7184360226563 154.895423907 L 945.7184360226563 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="974.3490211911563" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_checkpoint</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1111.6792999547736 83.648806437 L 1246.3491616980236 83.648806437 L 1246.3491616980236 154.895423907 L 1111.6792999547736 154.895423907 L 1111.6792999547736 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1140.3098851232735" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_farcasterd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1361.4378243057502 83.648806437 L 1444.7691240372815 83.648806437 L 1444.7691240372815 154.895423907 L 1361.4378243057502 154.895423907 L 1361.4378243057502 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1390.06840947425" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_cli</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1471.1567601372815 83.648806437 L 1565.9125441217425 83.648806437 L 1565.9125441217425 154.895423907 L 1471.1567601372815 154.895423907 L 1471.1567601372815 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1499.7873453057814" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">peerd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1592.3001802217425 83.648806437 L 1683.7703501925316 83.648806437 L 1683.7703501925316 154.895423907 L 1592.3001802217425 154.895423907 L 1592.3001802217425 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1620.9307653902424" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_cli</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1773.6120492992816 83.648806437 L 1916.4207812817895 83.648806437 L 1916.4207812817895 154.895423907 L 1773.6120492992816 154.895423907 L 1773.6120492992816 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1802.2426344677815" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_farcasterd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1964.305002571645 83.648806437 L 2112.01710064302 83.648806437 L 2112.01710064302 154.895423907 L 1964.305002571645 154.895423907 L 1964.305002571645 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1992.935587740145" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_checkpoint</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 2269.3605316223284 83.648806437 L 2381.2100961243673 83.648806437 L 2381.2100961243673 154.895423907 L 2269.3605316223284 154.895423907 L 2269.3605316223284 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2297.9911167908285" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_swap</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 2725.901381717934 83.648806437 L 2841.0079194865743 83.648806437 L 2841.0079194865743 154.895423907 L 2725.901381717934 154.895423907 L 2725.901381717934 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2754.531966886434" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_wallet</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 2922.9829992359028 83.648806437 L 3043.787443498684 83.648806437 L 3043.787443498684 154.895423907 L 2922.9829992359028 154.895423907 L 2922.9829992359028 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2951.613584404403" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_syncer</text></g></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 229.22059892200002 L 3042.80618195 229.22059892200002 M 13.19381805 238.01647762200002 L 3042.80618195 238.01647762200002 M 13.19381805 246.81235632200003 L 3042.80618195 246.81235632200003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1286.1038792842187 207.67069610700003 L 1769.8961207157813 207.67069610700003 L 1769.8961207157813 268.362259137 L 1286.1038792842187 268.362259137 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1323.0465698242188" y="244.61338664700003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Setup and Commit-Reveal: Bob and Alice can be on both sides</text></g><g><g><rect fill="white" stroke="none" x="1876.2417846755352" y="307.94371328700004" width="120.3714910253125" height="34.30392693"/></g><g><rect fill="white" stroke="none" x="1876.2417846755352" y="334.33134938700005" width="66.58483941398437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1880.1999300905352" y="331.69258577700003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch farcasterd</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1880.1999300905352" y="358.08022187700004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">manually</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 368.63527631700003 L 1950.5669596905354 368.63527631700003 L 1950.5669596905354 402.939203247 L 1866.7422356795355 402.939203247" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,402.939203247) translate(-1845.0164152905354,-402.939203247)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 391.944354872 L 1845.0164152905354 402.939203247 L 1867.0061120405353 413.934051622 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1876.2417846755352" y="442.52065739700004" width="100.82247979484374" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1880.1999300905352" y="466.26952988700003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch walletd</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 476.824584327 L 1950.5669596905354 476.824584327 L 1950.5669596905354 511.128511257 L 1866.7422356795355 511.128511257" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,511.128511257) translate(-1845.0164152905354,-511.128511257)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 500.133662882 L 1845.0164152905354 511.128511257 L 1867.0061120405353 522.123359632 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2282.5787562447736" y="550.709965407" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2286.536901659774" y="574.4588378970001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2783.4546506022543 585.013892337 L 1866.7422356795355 585.013892337" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,585.013892337) translate(-1845.0164152905354,-585.013892337)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 574.0190439620001 L 1845.0164152905354 585.013892337 L 1867.0061120405353 596.008740712 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1669.260634592137" y="624.595346487" width="144.53041131339845" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1673.218780007137" y="648.3442189770001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">MakeOffer (deferred)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1638.035265207137 658.899273417 L 1823.2905949015353 658.899273417" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,658.899273417) translate(-1845.0164152905354,-658.899273417)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1823.0267185405355 647.9044250420001 L 1845.0164152905354 658.899273417 L 1823.0267185405355 669.894121792 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2271.172170551414" y="698.480727567" width="86.12672478996093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2275.1303159664144" y="722.2296000570001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl GetKeys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 732.784654497 L 2761.7288302132542 732.784654497" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,732.784654497) translate(-2783.4546506022543,-732.784654497)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2761.4649538522544 721.7898061220001 L 2783.4546506022543 732.784654497 L 2761.4649538522544 743.779502872 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2203.527250202293" y="772.366108647" width="221.41656548820313" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2207.4853956172933" y="796.1149811370001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Keys (not to be held on state)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2783.4546506022543 806.670035577 L 1866.7422356795355 806.670035577" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,806.670035577) translate(-1845.0164152905354,-806.670035577)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 795.6751872020001 L 1845.0164152905354 806.670035577 L 1867.0061120405353 817.664883952 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1876.2417846755352" y="846.251489727" width="152.68359429679688" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1880.1999300905352" y="870.0003622170001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">MakeOffer (continues)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 880.555416657 L 1950.5669596905354 880.555416657 L 1950.5669596905354 914.859343587 L 1866.7422356795355 914.859343587" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,914.859343587) translate(-1845.0164152905354,-914.859343587)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 903.8644952120001 L 1845.0164152905354 914.859343587 L 1867.0061120405353 925.854191962 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1876.2417846755352" y="954.4407977369999" width="51.11598260246094" height="34.30392693"/></g><g><rect fill="white" stroke="none" x="1876.2417846755352" y="980.8284338369999" width="83.70723016105468" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1880.1999300905352" y="978.189670227" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1880.1999300905352" y="1004.577306327" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">peerd listen</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 1015.1323607669999 L 1950.5669596905354 1015.1323607669999 L 1950.5669596905354 1049.436287697 L 1866.7422356795355 1049.436287697" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,1049.436287697) translate(-1845.0164152905354,-1049.436287697)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 1038.441439322 L 1845.0164152905354 1049.436287697 L 1867.0061120405353 1060.4311360719998 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1210.2396002113983" y="1089.017741847" width="120.3714910253125" height="34.30392693"/></g><g><rect fill="white" stroke="none" x="1210.2396002113983" y="1115.405377947" width="66.58483941398437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1214.1977456263983" y="1112.766614337" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch farcasterd</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1214.1977456263983" y="1139.154250437" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">manually</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1179.0142308263985 1149.709304877 L 1284.5647752263985 1149.709304877 L 1284.5647752263985 1184.013231807 L 1200.7400512153986 1184.013231807" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,1184.013231807) translate(-1179.0142308263985,-1184.013231807)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1201.0039275763984 1173.018383432 L 1179.0142308263985 1184.013231807 L 1201.0039275763984 1195.008080182 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1210.2396002113983" y="1223.5946859570001" width="100.82247979484374" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1214.1977456263983" y="1247.343558447" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch walletd</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1179.0142308263985 1257.8986128870001 L 1284.5647752263985 1257.8986128870001 L 1284.5647752263985 1292.2025398170001 L 1200.7400512153986 1292.2025398170001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,1292.2025398170001) translate(-1179.0142308263985,-1292.2025398170001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1201.0039275763984 1281.2076914420002 L 1179.0142308263985 1292.2025398170001 L 1201.0039275763984 1303.197388192 Z"/></g></g><g><g><rect fill="white" stroke="none" x="678.3138123387481" y="1331.783993967" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="682.2719577537481" y="1355.532866457" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 1366.087920897 L 1157.2884104373984 1366.087920897" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,1366.087920897) translate(-1179.0142308263985,-1366.087920897)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1157.0245340763986 1355.093072522 L 1179.0142308263985 1366.087920897 L 1157.0245340763986 1377.082769272 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1210.2396002113985" y="1405.6693750470001" width="161.6385045751172" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1214.1977456263985" y="1429.418247537" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeOffer (deferred)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1403.1034741715157 1439.9733019770001 L 1200.7400512153986 1439.9733019770001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,1439.9733019770001) translate(-1179.0142308263985,-1439.9733019770001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1201.0039275763984 1428.9784536020002 L 1179.0142308263985 1439.9733019770001 L 1201.0039275763984 1450.968150352 Z"/></g></g><g><g><rect fill="white" stroke="none" x="666.9072266453887" y="1479.5547561270002" width="86.12672478996093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="670.8653720603887" y="1503.3036286170002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl GetKeys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1179.0142308263985 1513.8586830570002 L 262.65276764333987 1513.8586830570002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,1513.8586830570002) translate(-240.92694725433986,-1513.8586830570002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 1502.8638346820003 L 240.92694725433986 1513.8586830570002 L 262.91664400433984 1524.8535314320002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="599.2623062962676" y="1553.4401372070004" width="221.41656548820313" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="603.2204517112676" y="1577.1890096970003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Keys (not to be held on state)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 1587.7440641370004 L 1157.2884104373984 1587.7440641370004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,1587.7440641370004) translate(-1179.0142308263985,-1587.7440641370004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1157.0245340763986 1576.7492157620004 L 1179.0142308263985 1587.7440641370004 L 1157.0245340763986 1598.7389125120003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1210.2396002113983" y="1627.3255182870005" width="169.79168755851563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1214.1977456263983" y="1651.0743907770004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeOffer (continues)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1179.0142308263985 1661.6294452170005 L 1284.5647752263985 1661.6294452170005 L 1284.5647752263985 1695.9333721470005 L 1200.7400512153986 1695.9333721470005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,1695.9333721470005) translate(-1179.0142308263985,-1695.9333721470005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1201.0039275763984 1684.9385237720005 L 1179.0142308263985 1695.9333721470005 L 1201.0039275763984 1706.9282205220004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1210.2396002113983" y="1735.5148262970004" width="51.11598260246094" height="34.30392693"/></g><g><rect fill="white" stroke="none" x="1210.2396002113983" y="1761.9024623970004" width="100.82963616691406" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1214.1977456263983" y="1759.2636987870003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1214.1977456263983" y="1785.6513348870003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">peerd connect</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1179.0142308263985 1796.2063893270004 L 1284.5647752263985 1796.2063893270004 L 1284.5647752263985 1830.5103162570003 L 1200.7400512153986 1830.5103162570003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,1830.5103162570003) translate(-1179.0142308263985,-1830.5103162570003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1201.0039275763984 1819.5154678820004 L 1179.0142308263985 1830.5103162570003 L 1201.0039275763984 1841.5051646320003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="663.3710709447051" y="1870.0917704070005" width="93.19903619132812" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="667.3292163597051" y="1893.8406428970004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeOffer</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1179.0142308263985 1904.3956973370005 L 262.65276764333987 1904.3956973370005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,1904.3956973370005) translate(-240.92694725433986,-1904.3956973370005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 1893.4008489620005 L 240.92694725433986 1904.3956973370005 L 262.91664400433984 1915.3905457120004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="272.15231663933986" y="1943.9771514870006" width="126.87829644523437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="276.11046205433985" y="1967.7260239770005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">create taker wallet</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 1978.2810784170006 L 346.4774916543399 1978.2810784170006 L 346.4774916543399 2012.5850053470006 L 262.65276764333987 2012.5850053470006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,2012.5850053470006) translate(-240.92694725433986,-2012.5850053470006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 2001.5901569720006 L 240.92694725433986 2012.5850053470006 L 262.91664400433984 2023.5798537220005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="652.6337891453887" y="2052.1664594970002" width="114.67359978996093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="656.5919345603887" y="2075.915331987" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl LaunchSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 2086.4703864270004 L 1157.2884104373984 2086.4703864270004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,2086.4703864270004) translate(-1179.0142308263985,-2086.4703864270004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1157.0245340763986 2075.4755380520005 L 1179.0142308263985 2086.4703864270004 L 1157.0245340763986 2097.4652348020004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="909.4314091699981" y="2126.0518405770003" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="913.3895545849981" y="2149.8007130670003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 2160.3557675070006 L 1157.2884104373984 2160.3557675070006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,2160.3557675070006) translate(-1179.0142308263985,-2160.3557675070006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1157.0245340763986 2149.3609191320006 L 1179.0142308263985 2160.3557675070006 L 1157.0245340763986 2171.3506158820005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1210.2396002113983" y="2199.9372216570005" width="98.36720330558593" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1214.1977456263983" y="2223.6860941470004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch syncer</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1179.0142308263985 2234.241148587 L 1284.5647752263985 2234.241148587 L 1284.5647752263985 2268.5450755170004 L 1200.7400512153986 2268.5450755170004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,2268.5450755170004) translate(-1179.0142308263985,-2268.5450755170004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1201.0039275763984 2257.5502271420005 L 1179.0142308263985 2268.5450755170004 L 1201.0039275763984 2279.5399238920004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="892.316159536209" y="2308.1265296670003" width="97.5440526708203" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="896.274304951209" y="2331.8754021570003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1179.0142308263985 2342.4304565970006 L 724.8879613058399 2342.4304565970006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,2342.4304565970006) translate(-703.1621409168399,-2342.4304565970006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 2331.4356082220006 L 703.1621409168399 2342.4304565970006 L 725.1518376668399 2353.4253049720005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1047.8351439914766" y="2382.0119107470005" width="126.02650506339843" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1051.7932894064766" y="2405.7607832370004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg TakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 2416.3158376770007 L 1496.8088317405118 2416.3158376770007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1518.5346521295119,2416.3158376770007) translate(-1518.5346521295119,-2416.3158376770007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1496.544955379512 2405.3209893020007 L 1518.5346521295119 2416.3158376770007 L 1496.544955379512 2427.3106860520006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1618.7622811783244" y="2455.8972918270006" width="126.02650506339843" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1622.7204265933244" y="2479.6461643170005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg TakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 2490.201218757001 L 1823.2905949015353 2490.201218757001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,2490.201218757001) translate(-1845.0164152905354,-2490.201218757001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1823.0267185405355 2479.206370382001 L 1845.0164152905354 2490.201218757001 L 1823.0267185405355 2501.1960671320007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2250.391950519676" y="2529.7826729070007" width="127.6871648534375" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2254.350095934676" y="2553.5315453970006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl BitcoinAddress</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 2564.086599837001 L 2761.7288302132542 2564.086599837001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,2564.086599837001) translate(-2783.4546506022543,-2564.086599837001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2761.4649538522544 2553.091751462001 L 2783.4546506022543 2564.086599837001 L 2761.4649538522544 2575.081448212001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2251.2222804146954" y="2603.668053987001" width="126.02650506339843" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2255.1804258296957" y="2627.4169264770007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg TakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 2637.971980917001 L 2761.7288302132542 2637.971980917001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,2637.971980917001) translate(-2783.4546506022543,-2637.971980917001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2761.4649538522544 2626.977132542001 L 2783.4546506022543 2637.971980917001 L 2761.4649538522544 2648.966829292001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2814.680019987254" y="2677.553435067001" width="135.0171666844922" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2818.6381654022543" y="2701.302307557001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">create maker wallet</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2783.4546506022543 2711.8573619970007 L 2889.0051950022544 2711.8573619970007 L 2889.0051950022544 2746.161288927001 L 2805.1804709912544 2746.161288927001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,2746.161288927001) translate(-2783.4546506022543,-2746.161288927001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2805.444347352254 2735.166440552001 L 2783.4546506022543 2746.161288927001 L 2805.444347352254 2757.156137302001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2256.898733051414" y="2785.742743077001" width="114.67359978996093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2260.8568784664144" y="2809.4916155670007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl LaunchSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2783.4546506022543 2820.046670007001 L 1866.7422356795355 2820.046670007001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,2820.046670007001) translate(-1845.0164152905354,-2820.046670007001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 2809.051821632001 L 1845.0164152905354 2820.046670007001 L 1867.0061120405353 2831.041518382001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2053.4940878803204" y="2859.628124157001" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2057.4522332953206" y="2883.376996647001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 2893.932051087001 L 1866.7422356795355 2893.932051087001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,2893.932051087001) translate(-1845.0164152905354,-2893.932051087001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 2882.937202712001 L 1845.0164152905354 2893.932051087001 L 1867.0061120405353 2904.926899462001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1876.2417846755352" y="2933.513505237001" width="98.36720330558593" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1880.1999300905352" y="2957.262377727001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch syncer</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 2967.817432167001 L 1950.5669596905354 2967.817432167001 L 1950.5669596905354 3002.121359097001 L 1866.7422356795355 3002.121359097001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,3002.121359097001) translate(-1845.0164152905354,-3002.121359097001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 2991.126510722001 L 1845.0164152905354 3002.121359097001 L 1867.0061120405353 3013.116207472001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2033.937897389598" y="3041.702813247001" width="102.4259343846875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2037.896042804598" y="3065.451685737001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl MakeSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 3076.006740177001 L 2303.559493484348 3076.006740177001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,3076.006740177001) translate(-2325.285313873348,-3076.006740177001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2303.295617123348 3065.011891802001 L 2325.285313873348 3076.006740177001 L 2303.295617123348 3087.001588552001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1856.4557896127972" y="3115.588194327001" width="130.90838677726563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1860.4139350277972" y="3139.337066817001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg MakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 3149.8921212570012 L 1540.260472518512 3149.8921212570012" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1518.5346521295119,3149.8921212570012) translate(-1518.5346521295119,-3149.8921212570012)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1540.5243488795118 3138.8972728820013 L 1518.5346521295119 3149.8921212570012 L 1540.5243488795118 3160.886969632001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1045.394203134543" y="3189.473575407001" width="130.90838677726563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1049.352348549543" y="3213.222447897001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg MakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 3223.7775023370014 L 724.8879613058399 3223.7775023370014" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,3223.7775023370014) translate(-703.1621409168399,-3223.7775023370014)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 3212.7826539620014 L 703.1621409168399 3223.7775023370014 L 725.1518376668399 3234.7723507120013 Z"/></g></g><g><g><rect fill="white" stroke="none" x="329.69833847517975" y="3263.3589564870013" width="113.29206902824218" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="333.65648389017974" y="3287.107828977001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl WatchHeight</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3297.6628834170015 L 91.25242545076173 3297.6628834170015" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,3297.6628834170015) translate(-69.52660506176173,-3297.6628834170015)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 3286.6680350420015 L 69.52660506176173 3297.6628834170015 L 91.51630181176174 3308.6577317920014 Z"/></g></g><g><g><rect fill="white" stroke="none" x="246.16940018172272" y="3337.2443375670014" width="280.34994561515623" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="250.1275455967227" y="3360.9932100570013" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Watch Arbitrating Funding Address</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3371.5482644970016 L 91.25242545076173 3371.5482644970016" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,3371.5482644970016) translate(-69.52660506176173,-3371.5482644970016)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 3360.5534161220016 L 69.52660506176173 3371.5482644970016 L 91.51630181176174 3382.5431128720015 Z"/></g></g><g><g><rect fill="white" stroke="none" x="406.5903506969571" y="3411.1297186470015" width="130.90838677726563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="410.5484961119571" y="3434.8785911370014" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg MakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3445.4336455770017 L 262.65276764333987 3445.4336455770017" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,3445.4336455770017) translate(-240.92694725433986,-3445.4336455770017)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 3434.4387972020018 L 240.92694725433986 3445.4336455770017 L 262.91664400433984 3456.4284939520016 Z"/></g></g><g><g><rect fill="white" stroke="none" x="361.76218754998445" y="3485.0150997270016" width="220.56471307121095" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="365.72033296498444" y="3508.7639722170015" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl RevealProof (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 3519.319026657002 L 681.4363205278399 3519.319026657002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,3519.319026657002) translate(-703.1621409168399,-3519.319026657002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 3508.324178282002 L 703.1621409168399 3519.319026657002 L 681.1724441668399 3530.3138750320018 Z"/></g></g><g><g><rect fill="white" stroke="none" x="995.6769942722383" y="3558.9004808070017" width="230.342804501875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="999.6351396872383" y="3582.6493532970017" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3593.204407737002 L 1496.8088317405118 3593.204407737002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1518.5346521295119,3593.204407737002) translate(-1518.5346521295119,-3593.204407737002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1496.544955379512 3582.209559362002 L 1518.5346521295119 3593.204407737002 L 1496.544955379512 3604.199256112002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1013.1966704807344" y="3632.785861887002" width="195.30345208488282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1017.1548158957344" y="3656.5347343770018" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3667.089788817002 L 1496.8088317405118 3667.089788817002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1518.5346521295119,3667.089788817002) translate(-1518.5346521295119,-3667.089788817002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1496.544955379512 3656.094940442002 L 1518.5346521295119 3667.089788817002 L 1496.544955379512 3678.084637192002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1806.7385807504925" y="3706.671242967002" width="230.342804501875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1810.6967261654925" y="3730.420115457002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 3740.975169897002 L 2303.559493484348 3740.975169897002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,3740.975169897002) translate(-2325.285313873348,-3740.975169897002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2303.295617123348 3729.980321522002 L 2325.285313873348 3740.975169897002 L 2303.295617123348 3751.970018272002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2411.499971588426" y="3780.556624047002" width="285.74002129875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2415.458117003426" y="3804.305496537002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg RevealProof (taker is sender) </text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 3814.8605509770023 L 2761.7288302132542 3814.8605509770023" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,3814.8605509770023) translate(-2783.4546506022543,-3814.8605509770023)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2761.4649538522544 3803.8657026020023 L 2783.4546506022543 3814.8605509770023 L 2761.4649538522544 3825.855399352002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2356.510683258348" y="3854.442005127002" width="271.881867001875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2360.468828673348" y="3878.190877617002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg RevealProof</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 3888.745932057002 L 2430.835858273348 3888.745932057002 L 2430.835858273348 3923.049858987002 L 2347.011134262348 3923.049858987002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,3923.049858987002) translate(-2325.285313873348,-3923.049858987002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2347.275010623348 3912.055010612002 L 2325.285313873348 3923.049858987002 L 2347.275010623348 3934.044707362002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1824.2582569589886" y="3962.631313137002" width="195.30345208488282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1828.2164023739886" y="3986.380185627002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 3996.9352400670023 L 2303.559493484348 3996.9352400670023" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,3996.9352400670023) translate(-2325.285313873348,-3996.9352400670023)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2303.295617123348 3985.9403916920023 L 2325.285313873348 3996.9352400670023 L 2303.295617123348 4007.930088442002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2010.2943961078597" y="4036.516694217002" width="149.71293694816407" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2014.2525415228597" y="4060.265566707002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ask for funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 4070.8206211470024 L 1866.7422356795355 4070.8206211470024" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,4070.8206211470024) translate(-1845.0164152905354,-4070.8206211470024)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 4059.8257727720024 L 1845.0164152905354 4070.8206211470024 L 1867.0061120405353 4081.8154695220023 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2356.510683258348" y="4110.402075297002" width="236.84252984367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2360.468828673348" y="4134.150947787002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg Reveal</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 4144.7060022270025 L 2430.835858273348 4144.7060022270025 L 2430.835858273348 4179.009929157002 L 2347.011134262348 4179.009929157002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,4179.009929157002) translate(-2325.285313873348,-4179.009929157002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2347.275010623348 4168.015080782002 L 2325.285313873348 4179.009929157002 L 2347.275010623348 4190.004777532003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2431.056139190965" y="4218.591383307003" width="246.62768609367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2435.0142846059653" y="4242.340255797003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 4252.895310237002 L 2761.7288302132542 4252.895310237002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,4252.895310237002) translate(-2783.4546506022543,-4252.895310237002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2761.4649538522544 4241.900461862002 L 2783.4546506022543 4252.895310237002 L 2761.4649538522544 4263.890158612003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2597.6892331061995" y="4292.476764387003" width="113.29206902824218" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2601.6473785211997" y="4316.225636877003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl WatchHeight</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 4326.7806913170025 L 2961.6594009782934 4326.7806913170025" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2983.3852213672935,4326.7806913170025) translate(-2983.3852213672935,-4326.7806913170025)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2961.3955246172936 4315.785842942002 L 2983.3852213672935 4326.7806913170025 L 2961.3955246172936 4337.775539692003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2514.1602948127424" y="4366.362145467003" width="280.34994561515623" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2518.1184402277427" y="4390.111017957003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Watch Arbitrating Funding Address</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 4400.666072397003 L 2961.6594009782934 4400.666072397003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2983.3852213672935,4400.666072397003) translate(-2983.3852213672935,-4400.666072397003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2961.3955246172936 4389.671224022002 L 2983.3852213672935 4400.666072397003 L 2961.3955246172936 4411.660920772003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2545.2518933234846" y="4440.247526547003" width="218.16674859367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2549.210038738485" y="4463.996399037003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Arbitrating Funding event</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2983.3852213672935 4474.551453477003 L 2347.011134262348 4474.551453477003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,4474.551453477003) translate(-2325.285313873348,-4474.551453477003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2347.275010623348 4463.556605102002 L 2325.285313873348 4474.551453477003 L 2347.275010623348 4485.546301852003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2477.8957464297346" y="4514.132907627003" width="152.94847161613282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2481.853891844735" y="4537.8817801170035" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Ctl Tx::Funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 4548.436834557003 L 2761.7288302132542 4548.436834557003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,4548.436834557003) translate(-2783.4546506022543,-4548.436834557003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2761.4649538522544 4537.441986182002 L 2783.4546506022543 4548.436834557003 L 2761.4649538522544 4559.431682932003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2461.990236481004" y="4588.018288707003" width="184.75949151359376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2465.9483818960043" y="4611.767161197004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Ctl FundingUpdated</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2783.4546506022543 4622.322215637003 L 2347.011134262348 4622.322215637003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,4622.322215637003) translate(-2325.285313873348,-4622.322215637003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2347.275010623348 4611.327367262003 L 2325.285313873348 4622.322215637003 L 2347.275010623348 4633.317064012003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2356.510683258348" y="4661.903669787003" width="395.71859795890623" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2360.468828673348" y="4685.652542277004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg RevealProof (taker is sender) </text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 4696.207596717003 L 2761.7288302132542 4696.207596717003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,4696.207596717003) translate(-2783.4546506022543,-4696.207596717003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2761.4649538522544 4685.212748342003 L 2783.4546506022543 4696.207596717003 L 2761.4649538522544 4707.2024450920035 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2376.066866119676" y="4735.789050867003" width="356.60623223625" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2380.025011534676" y="4759.537923357004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 4770.092977797003 L 2761.7288302132542 4770.092977797003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,4770.092977797003) translate(-2783.4546506022543,-4770.092977797003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2761.4649538522544 4759.098129422003 L 2783.4546506022543 4770.092977797003 L 2761.4649538522544 4781.087826172004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2440.0181905825666" y="4809.6744319470035" width="228.70358331046876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2443.976335997567" y="4833.423304437004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2783.4546506022543 4843.978358877003 L 2347.011134262348 4843.978358877003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,4843.978358877003) translate(-2325.285313873348,-4843.978358877003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2347.275010623348 4832.983510502003 L 2325.285313873348 4843.978358877003 L 2347.275010623348 4854.973207252004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1802.6691456308636" y="4883.559813027004" width="238.48167474113282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1806.6272910458636" y="4907.308685517004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 4917.863739957003 L 1540.260472518512 4917.863739957003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1518.5346521295119,4917.863739957003) translate(-1518.5346521295119,-4917.863739957003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1540.5243488795118 4906.868891582003 L 1518.5346521295119 4917.863739957003 L 1540.5243488795118 4928.858588332004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1820.1888218393597" y="4957.445194107004" width="203.44232232414063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1824.1469672543597" y="4981.194066597004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 4991.7491210370035 L 1540.260472518512 4991.7491210370035" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1518.5346521295119,4991.7491210370035) translate(-1518.5346521295119,-4991.7491210370035)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1540.5243488795118 4980.754272662003 L 1518.5346521295119 4991.7491210370035 L 1540.5243488795118 5002.743969412004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="991.6075591526094" y="5031.330575187004" width="238.48167474113282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="995.5657045676094" y="5055.079447677004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 5065.634502117004 L 724.8879613058399 5065.634502117004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5065.634502117004) translate(-703.1621409168399,-5065.634502117004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 5054.639653742003 L 703.1621409168399 5065.634502117004 L 725.1518376668399 5076.629350492004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="327.141589710629" y="5105.215956267004" width="289.80590874992185" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="331.09973512562897" y="5128.964828757004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5139.519883197004 L 262.65276764333987 5139.519883197004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5139.519883197004) translate(-240.92694725433986,-5139.519883197004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5128.525034822003 L 240.92694725433986 5139.519883197004 L 262.91664400433984 5150.514731572004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="734.3875103018399" y="5179.101337347003" width="271.881867001875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="738.3456557168399" y="5202.850209837004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg RevealProof</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5213.405264277004 L 808.71268531684 5213.405264277004 L 808.71268531684 5247.709191207004 L 724.8879613058399 5247.709191207004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5247.709191207004) translate(-703.1621409168399,-5247.709191207004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 5236.714342832003 L 703.1621409168399 5247.709191207004 L 725.1518376668399 5258.704039582004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1009.1272353611055" y="5287.290645357004" width="203.44232232414063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1013.0853807761055" y="5311.039517847004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 5321.594572287004 L 724.8879613058399 5321.594572287004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5321.594572287004) translate(-703.1621409168399,-5321.594572287004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 5310.599723912003 L 703.1621409168399 5321.594572287004 L 725.1518376668399 5332.589420662004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="866.2317173975372" y="5361.176026437004" width="149.71293694816407" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="870.1898628125372" y="5384.9248989270045" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ask for funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5395.479953367004 L 1157.2884104373984 5395.479953367004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,5395.479953367004) translate(-1179.0142308263985,-5395.479953367004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1157.0245340763986 5384.4851049920035 L 1179.0142308263985 5395.479953367004 L 1157.0245340763986 5406.474801742004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="734.3875103018399" y="5435.061407517003" width="236.84252984367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="738.3456557168399" y="5458.810280007004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg Reveal</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5469.365334447004 L 808.71268531684 5469.365334447004 L 808.71268531684 5503.669261377004 L 724.8879613058399 5503.669261377004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5503.669261377004) translate(-703.1621409168399,-5503.669261377004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 5492.674413002003 L 703.1621409168399 5503.669261377004 L 725.1518376668399 5514.664109752004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="344.66126591912507" y="5543.250715527004" width="254.7665563329297" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="348.61941133412506" y="5566.9995880170045" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5577.554642457004 L 262.65276764333987 5577.554642457004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5577.554642457004) translate(-240.92694725433986,-5577.554642457004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5566.5597940820035 L 240.92694725433986 5577.554642457004 L 262.91664400433984 5588.549490832004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="277.2609986924649" y="5617.136096607004" width="218.16674859367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="281.2191441074649" y="5640.884969097005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Arbitrating Funding event</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 5651.440023537004 L 681.4363205278399 5651.440023537004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5651.440023537004) translate(-703.1621409168399,-5651.440023537004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 5640.445175162004 L 703.1621409168399 5651.440023537004 L 681.1724441668399 5662.434871912004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="395.5703082775235" y="5691.021477687004" width="152.94847161613282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="399.5284536925235" y="5714.770350177005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Ctl Tx::Funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5725.325404617004 L 262.65276764333987 5725.325404617004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5725.325404617004) translate(-240.92694725433986,-5725.325404617004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5714.330556242004 L 240.92694725433986 5725.325404617004 L 262.91664400433984 5736.3202529920045 Z"/></g></g><g><g><rect fill="white" stroke="none" x="379.66479832879304" y="5764.906858767004" width="184.75949151359376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="383.62294374379303" y="5788.655731257005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Ctl FundingUpdated</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 5799.210785697004 L 681.4363205278399 5799.210785697004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5799.210785697004) translate(-703.1621409168399,-5799.210785697004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 5788.215937322004 L 703.1621409168399 5799.210785697004 L 681.1724441668399 5810.205634072005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="272.1523166393399" y="5838.792239847005" width="399.7844548925" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="276.1104620543399" y="5862.541112337005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5873.096166777004 L 262.65276764333987 5873.096166777004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5873.096166777004) translate(-240.92694725433986,-5873.096166777004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5862.101318402004 L 240.92694725433986 5873.096166777004 L 262.91664400433984 5884.091015152005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="289.67200047723054" y="5912.677620927005" width="364.74508721671873" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="293.63014589223053" y="5936.426493417005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5946.981547857004 L 262.65276764333987 5946.981547857004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5946.981547857004) translate(-240.92694725433986,-5946.981547857004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5935.986699482004 L 240.92694725433986 5946.981547857004 L 262.91664400433984 5957.976396232005 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 6008.112904822005 L 3042.80618195 6008.112904822005 M 13.19381805 6016.908783522004 L 3042.80618195 6016.908783522004 M 13.19381805 6025.704662222004 L 3042.80618195 6025.704662222004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1407.1453755610742 5986.563002007005 L 1648.8546244389258 5986.563002007005 L 1648.8546244389258 6047.254565037005 L 1407.1453755610742 6047.254565037005 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1444.0880661010742" y="6023.505692547004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Commit-Reveal Complete</text></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 6108.385922002005 L 3042.80618195 6108.385922002005 M 13.19381805 6117.181800702005 L 3042.80618195 6117.181800702005 M 13.19381805 6125.9776794020045 L 3042.80618195 6125.9776794020045" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 910.9003270381249 6086.836019187005 L 2145.099672961875 6086.836019187005 L 2145.099672961875 6147.527582217005 L 910.9003270381249 6147.527582217005 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="947.843017578125" y="6123.778709727005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Changing semantics: On Commit-Reveal, Maker and Taker were the key roles. From now on Bob or Alice are the key roles. Now t_ is bob_ on the left and m_ is alice_ on the right.</text></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 6208.658939182005 L 3042.80618195 6208.658939182005 M 13.19381805 6217.454817882005 L 3042.80618195 6217.454817882005 M 13.19381805 6226.250696582005 L 3042.80618195 6226.250696582005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1380.237744640664 6187.1090363670055 L 1675.762255359336 6187.1090363670055 L 1675.762255359336 6247.8005993970055 L 1380.237744640664 6247.8005993970055 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1417.180435180664" y="6224.051726907005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Swap setup: Bob is left, Alice right</text></g><g><g><rect fill="white" stroke="none" x="516.963701875375" y="6287.382053547006" width="222.5045934423047" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="520.921847290375" y="6311.130926037006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">CheckpointWalletBobPrelockBob</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 6321.685980477006 L 993.779229549715 6321.685980477006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,6321.685980477006) translate(-1015.5050499387149,-6321.685980477006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 6310.691132102005 L 1015.5050499387149 6321.685980477006 L 993.5153531887149 6332.680828852006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="388.64119298211335" y="6361.267434627006" width="166.80670220695313" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="392.59933839711334" y="6385.016307117006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 6395.571361557006 L 681.4363205278399 6395.571361557006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,6395.571361557006) translate(-703.1621409168399,-6395.571361557006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 6384.576513182005 L 703.1621409168399 6395.571361557006 L 681.1724441668399 6406.566209932006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="749.8422087408048" y="6435.152815707006" width="218.98277337394532" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="753.8003541558048" y="6458.9016881970065" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">CheckpointSwapBobPrelockBob</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6469.456742637006 L 993.779229549715 6469.456742637006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,6469.456742637006) translate(-1015.5050499387149,-6469.456742637006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 6458.461894262005 L 1015.5050499387149 6469.456742637006 L 993.5153531887149 6480.451591012006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="308.9181184434415" y="6509.038196787006" width="154.85250909171876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="312.87626385844146" y="6532.787069277007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Arbitrating Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6543.342123717006 L 91.25242545076173 6543.342123717006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,6543.342123717006) translate(-69.52660506176173,-6543.342123717006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 6532.347275342006 L 69.52660506176173 6543.342123717006 L 91.51630181176174 6554.336972092006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="337.0283326768399" y="6582.923577867006" width="98.63208062492187" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="340.9864780918399" y="6606.672450357007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Cancel</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6617.227504797006 L 91.25242545076173 6617.227504797006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,6617.227504797006) translate(-69.52660506176173,-6617.227504797006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 6606.232656422006 L 69.52660506176173 6617.227504797006 L 91.51630181176174 6628.2223531720065 Z"/></g></g><g><g><rect fill="white" stroke="none" x="336.20871445174225" y="6656.808958947006" width="100.27131707511718" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="340.16685986674224" y="6680.557831437007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Refund</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6691.112885877006 L 91.25242545076173 6691.112885877006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,6691.112885877006) translate(-69.52660506176173,-6691.112885877006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 6680.118037502006 L 69.52660506176173 6691.112885877006 L 91.51630181176174 6702.107734252007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1022.5559997043672" y="6730.694340027007" width="176.5847936376172" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1026.5141451193672" y="6754.443212517007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6764.998266957006 L 1496.8088317405118 6764.998266957006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1518.5346521295119,6764.998266957006) translate(-1518.5346521295119,-6764.998266957006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1496.544955379512 6754.003418582006 L 1518.5346521295119 6764.998266957006 L 1496.544955379512 6775.993115332007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1833.6175861826214" y="6804.579721107007" width="176.5847936376172" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1837.5757315976214" y="6828.328593597007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 6838.883648037006 L 2303.559493484348 6838.883648037006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,6838.883648037006) translate(-2325.285313873348,-6838.883648037006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2303.295617123348 6827.888799662006 L 2325.285313873348 6838.883648037006 L 2303.295617123348 6849.878496412007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2576.909013074461" y="6878.465102187007" width="154.85250909171876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2580.8671584894614" y="6902.213974677007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Arbitrating Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 6912.7690291170065 L 2961.6594009782934 6912.7690291170065" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2983.3852213672935,6912.7690291170065) translate(-2983.3852213672935,-6912.7690291170065)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2961.3955246172936 6901.774180742006 L 2983.3852213672935 6912.7690291170065 L 2961.3955246172936 6923.763877492007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2605.0192273078596" y="6952.350483267007" width="98.63208062492187" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2608.97737272286" y="6976.099355757007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Cancel</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 6986.654410197007 L 2961.6594009782934 6986.654410197007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2983.3852213672935,6986.654410197007) translate(-2983.3852213672935,-6986.654410197007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2961.3955246172936 6975.659561822006 L 2983.3852213672935 6986.654410197007 L 2961.3955246172936 6997.649258572007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2604.199609082762" y="7026.235864347007" width="100.27131707511718" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2608.157754497762" y="7049.984736837007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Refund</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 7060.539791277007 L 2961.6594009782934 7060.539791277007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2983.3852213672935,7060.539791277007) translate(-2983.3852213672935,-7060.539791277007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2961.3955246172936 7049.544942902006 L 2983.3852213672935 7060.539791277007 L 2961.3955246172936 7071.534639652007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2466.0775854189924" y="7100.121245427007" width="176.5847936376172" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2470.0357308339926" y="7123.8701179170075" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 7134.425172357007 L 2761.7288302132542 7134.425172357007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,7134.425172357007) translate(-2783.4546506022543,-7134.425172357007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2761.4649538522544 7123.4303239820065 L 2783.4546506022543 7134.425172357007 L 2761.4649538522544 7145.420020732007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2296.7101793226057" y="7174.006626507007" width="228.195343564375" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2300.668324737606" y="7197.755498997008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">CheckpointWalletAlicePrelockBob</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2783.4546506022543 7208.310553437007 L 2059.8868719963325 7208.310553437007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2038.1610516073324,7208.310553437007) translate(-2038.1610516073324,-7208.310553437007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2060.1507483573323 7197.315705062007 L 2038.1610516073324 7208.310553437007 L 2060.1507483573323 7219.305401812007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2446.9186803896955" y="7247.892007587007" width="214.90260369621095" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2450.8768258046957" y="7271.640880077008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2783.4546506022543 7282.195934517007 L 2347.011134262348 7282.195934517007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,7282.195934517007) translate(-2325.285313873348,-7282.195934517007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2347.275010623348 7271.201086142007 L 2325.285313873348 7282.195934517007 L 2347.275010623348 7293.1907828920075 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2069.386420992332" y="7321.7773886670075" width="224.67352349601563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2073.3445664073324" y="7345.526261157008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">CheckpointSwapAlicePrelockBob</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 7356.081315597007 L 2059.8868719963325 7356.081315597007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2038.1610516073324,7356.081315597007) translate(-2038.1610516073324,-7356.081315597007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2060.1507483573323 7345.086467222007 L 2038.1610516073324 7356.081315597007 L 2060.1507483573323 7367.076163972008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1809.5696354379925" y="7395.662769747008" width="224.680695126875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1813.5277808529925" y="7419.411642237008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 7429.966696677007 L 1540.260472518512 7429.966696677007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1518.5346521295119,7429.966696677007) translate(-1518.5346521295119,-7429.966696677007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1540.5243488795118 7418.971848302007 L 1518.5346521295119 7429.966696677007 L 1540.5243488795118 7440.961545052008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="998.5080489597383" y="7469.548150827008" width="224.680695126875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1002.4661943747383" y="7493.297023317008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 7503.8520777570075 L 724.8879613058399 7503.8520777570075" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,7503.8520777570075) translate(-703.1621409168399,-7503.8520777570075)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 7492.857229382007 L 703.1621409168399 7503.8520777570075 L 725.1518376668399 7514.846926132008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="359.7041965221524" y="7543.433531907008" width="224.680695126875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="363.6623419371524" y="7567.182404397008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 7577.737458837008 L 262.65276764333987 7577.737458837008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,7577.737458837008) translate(-240.92694725433986,-7577.737458837008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 7566.742610462007 L 240.92694725433986 7577.737458837008 L 262.91664400433984 7588.732307212008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="359.7149310802579" y="7617.318912987008" width="224.65922601066407" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="363.6730764952579" y="7641.067785477008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Datum::SignedArbitratingLock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 7651.622839917008 L 681.4363205278399 7651.622839917008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,7651.622839917008) translate(-703.1621409168399,-7651.622839917008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 7640.627991542007 L 703.1621409168399 7651.622839917008 L 681.1724441668399 7662.617688292008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="519.816240937875" y="7691.204294067008" width="216.7995153173047" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="523.774386352875" y="7714.953166557008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">CheckpointWalletBobPreBuySig</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 7725.508220997008 L 993.779229549715 7725.508220997008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,7725.508220997008) translate(-1015.5050499387149,-7725.508220997008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 7714.513372622007 L 1015.5050499387149 7725.508220997008 L 993.5153531887149 7736.503069372008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="379.2639651989102" y="7765.089675147008" width="185.56115777335938" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="383.2221106139102" y="7788.838547637009" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 7799.393602077008 L 681.4363205278399 7799.393602077008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,7799.393602077008) translate(-703.1621409168399,-7799.393602077008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 7788.3987537020075 L 703.1621409168399 7799.393602077008 L 681.1724441668399 7810.388450452008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="752.6947478033048" y="7838.975056227008" width="213.27769524894532" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="756.6528932183048" y="7862.723928717009" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">CheckpointSwapBobPreBuySig</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 7873.278983157008 L 993.779229549715 7873.278983157008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,7873.278983157008) translate(-1015.5050499387149,-7873.278983157008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 7862.284134782008 L 1015.5050499387149 7873.278983157008 L 993.5153531887149 7884.273831532008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="296.41991898055085" y="7912.860437307008" width="179.8489080175" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="300.37806439555084" y="7936.609309797009" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast Arbitrating Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 7947.164364237008 L 91.25242545076173 7947.164364237008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,7947.164364237008) translate(-69.52660506176173,-7947.164364237008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 7936.169515862008 L 69.52660506176173 7947.164364237008 L 91.51630181176174 7958.159212612009 Z"/></g></g><g><g><rect fill="white" stroke="none" x="309.32255264754303" y="7986.7458183870085" width="154.04364068351563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="313.280698062543" y="8010.494690877009" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Accordant Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 8021.049745317008 L 91.25242545076173 8021.049745317008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,8021.049745317008) translate(-69.52660506176173,-8021.049745317008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 8010.054896942008 L 69.52660506176173 8021.049745317008 L 91.51630181176174 8032.044593692009 Z"/></g></g><g><g><rect fill="white" stroke="none" x="347.2144441270352" y="8060.631199467009" width="78.25985772453124" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="351.1725895420352" y="8084.380071957009" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 8094.935126397008 L 91.25242545076173 8094.935126397008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,8094.935126397008) translate(-69.52660506176173,-8094.935126397008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 8083.940278022008 L 69.52660506176173 8094.935126397008 L 91.51630181176174 8105.929974772009 Z"/></g></g><g><g><rect fill="white" stroke="none" x="315.976101841879" y="8134.516580547009" width="140.73654229484376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="319.93424725687896" y="8158.265453037009" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Arbitrating Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 8168.8205074770085 L 681.4363205278399 8168.8205074770085" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,8168.8205074770085) translate(-703.1621409168399,-8168.8205074770085)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 8157.825659102008 L 703.1621409168399 8168.8205074770085 L 681.1724441668399 8179.815355852009 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2583.9669964728987" y="8134.516580547009" width="140.73654229484376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2587.925141887899" y="8158.265453037009" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Arbitrating Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2983.3852213672935 8168.8205074770085 L 2347.011134262348 8168.8205074770085" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,8168.8205074770085) translate(-2325.285313873348,-8168.8205074770085)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2347.275010623348 8157.825659102008 L 2325.285313873348 8168.8205074770085 L 2347.275010623348 8179.815355852009 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2577.3134472785628" y="8208.401961627007" width="154.04364068351563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2581.271592693563" y="8232.150834117007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Accordant Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 8242.705888557008 L 2961.6594009782934 8242.705888557008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2983.3852213672935,8242.705888557008) translate(-2983.3852213672935,-8242.705888557008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2961.3955246172936 8231.711040182008 L 2983.3852213672935 8242.705888557008 L 2961.3955246172936 8253.700736932007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2584.3714306770003" y="8282.287342707006" width="139.92767388664063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2588.3295760920005" y="8306.036215197006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Accordant Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2983.3852213672935 8316.591269637007 L 2347.011134262348 8316.591269637007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,8316.591269637007) translate(-2325.285313873348,-8316.591269637007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2347.275010623348 8305.596421262007 L 2325.285313873348 8316.591269637007 L 2347.275010623348 8327.586118012006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="316.38053604598053" y="8282.287342707006" width="139.92767388664063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="320.3386814609805" y="8306.036215197006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Accordant Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 8316.591269637007 L 681.4363205278399 8316.591269637007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,8316.591269637007) translate(-703.1621409168399,-8316.591269637007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 8305.596421262007 L 703.1621409168399 8316.591269637007 L 681.1724441668399 8327.586118012006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1013.1787719211641" y="8356.172723787005" width="195.33924920402345" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1017.1369173361641" y="8379.921596277005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 8390.476650717006 L 1496.8088317405118 8390.476650717006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1518.5346521295119,8390.476650717006) translate(-1518.5346521295119,-8390.476650717006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1496.544955379512 8379.481802342007 L 1518.5346521295119 8390.476650717006 L 1496.544955379512 8401.471499092006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1824.2403583994183" y="8430.058104867005" width="195.33924920402345" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1828.1985038144182" y="8453.806977357004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 8464.362031797005 L 2303.559493484348 8464.362031797005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,8464.362031797005) translate(-2325.285313873348,-8464.362031797005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2303.295617123348 8453.367183422006 L 2325.285313873348 8464.362031797005 L 2303.295617123348 8475.356880172005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2082.8330838951642" y="8503.943485947004" width="197.78019769035157" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2086.7912293101645" y="8527.692358437003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">CheckpointSwapAlicePreBuy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 8538.247412877005 L 2059.8868719963325 8538.247412877005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2038.1610516073324,8538.247412877005) translate(-2038.1610516073324,-8538.247412877005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2060.1507483573323 8527.252564502005 L 2038.1610516073324 8538.247412877005 L 2060.1507483573323 8549.242261252004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2615.205338758055" y="8577.828867027003" width="78.25985772453124" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2619.163484173055" y="8601.577739517003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 8612.132793957004 L 2961.6594009782934 8612.132793957004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2983.3852213672935,8612.132793957004) translate(-2983.3852213672935,-8612.132793957004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2961.3955246172936 8601.137945582004 L 2983.3852213672935 8612.132793957004 L 2961.3955246172936 8623.127642332003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2456.7003576357893" y="8651.714248107002" width="195.33924920402345" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2460.6585030507895" y="8675.463120597002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 8686.018175037003 L 2761.7288302132542 8686.018175037003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,8686.018175037003) translate(-2783.4546506022543,-8686.018175037003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2761.4649538522544 8675.023326662003 L 2783.4546506022543 8686.018175037003 L 2761.4649538522544 8697.013023412002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2310.1568422254377" y="8725.599629187001" width="201.30201775871095" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2314.114987640438" y="8749.348501677001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">CheckpointWalletAlicePreBuy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2783.4546506022543 8759.903556117002 L 2059.8868719963325 8759.903556117002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2038.1610516073324,8759.903556117002) translate(-2038.1610516073324,-8759.903556117002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2060.1507483573323 8748.908707742003 L 2038.1610516073324 8759.903556117002 L 2060.1507483573323 8770.898404492002 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 8821.034913082001 L 3042.80618195 8821.034913082001 M 13.19381805 8829.830791782002 L 3042.80618195 8829.830791782002 M 13.19381805 8838.626670482003 L 3042.80618195 8838.626670482003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1418.1224644892968 8799.485010267 L 1637.8775355107032 8799.485010267 L 1637.8775355107032 8860.176573297002 L 1418.1224644892968 8860.176573297002 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1455.0651550292969" y="8836.427700807002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Swap Setup Complete</text></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 8921.307930262 L 3042.80618195 8921.307930262 M 13.19381805 8930.103808962001 L 3042.80618195 8930.103808962001 M 13.19381805 8938.899687662002 L 3042.80618195 8938.899687662002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1370.055226635293 8899.758027447 L 1685.944773364707 8899.758027447 L 1685.944773364707 8960.449590477001 L 1370.055226635293 8960.449590477001 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1406.997917175293" y="8936.700717987002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Buy Procedure: Bob is left, Alice right</text></g><g><g><rect fill="white" stroke="none" x="2497.4447881777814" y="9000.031044627" width="113.85038812003906" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2501.4029335927817" y="9023.779917116999" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Fully signed buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2783.4546506022543 9034.334971557 L 2347.011134262348 9034.334971557" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,9034.334971557) translate(-2325.285313873348,-9034.334971557)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2347.275010623348 9023.340123182 L 2325.285313873348 9034.334971557 L 2347.275010623348 9045.329819932 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2603.519593518797" y="9073.916425706999" width="101.63134820304687" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2607.4777389337974" y="9097.665298196998" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 9108.220352637 L 2961.6594009782934 9108.220352637" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2983.3852213672935,9108.220352637) translate(-2983.3852213672935,-9108.220352637)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2961.3955246172936 9097.225504262 L 2983.3852213672935 9108.220352637 L 2961.3955246172936 9119.215201011999 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2555.4379971442854" y="9147.801806786998" width="197.79454095207032" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2559.3961425592856" y="9171.550679276997" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: buy seen on mempool</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2983.3852213672935 9182.105733716999 L 2347.011134262348 9182.105733716999" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,9182.105733716999) translate(-2325.285313873348,-9182.105733716999)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2347.275010623348 9171.110885342 L 2325.285313873348 9182.105733716999 L 2347.275010623348 9193.100582091998 Z"/></g></g><g><g><rect fill="white" stroke="none" x="287.4471025132657" y="9147.801806786998" width="197.79454095207032" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="291.4052479282657" y="9171.550679276997" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: buy seen on mempool</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 9182.105733716999 L 681.4363205278399 9182.105733716999" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,9182.105733716999) translate(-703.1621409168399,-9182.105733716999)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 9171.110885342 L 703.1621409168399 9182.105733716999 L 681.1724441668399 9193.100582091998 Z"/></g></g><g><g><rect fill="white" stroke="none" x="412.27038914910554" y="9221.687187866997" width="119.54830987296874" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="416.22853456410553" y="9245.436060356997" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Buy signature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 9255.991114796998 L 262.65276764333987 9255.991114796998" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,9255.991114796998) translate(-240.92694725433986,-9255.991114796998)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 9244.996266421998 L 240.92694725433986 9255.991114796998 L 262.91664400433984 9266.985963171997 Z"/></g></g><g><g><rect fill="white" stroke="none" x="272.15231663933986" y="9295.572568946998" width="159.46952874503907" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="276.11046205433985" y="9319.321441436998" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">recover accordant keys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 9329.876495876997 L 346.4774916543399 9329.876495876997 L 346.4774916543399 9364.180422806998 L 262.65276764333987 9364.180422806998" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,9364.180422806998) translate(-240.92694725433986,-9364.180422806998)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 9353.185574431998 L 240.92694725433986 9364.180422806998 L 262.91664400433984 9375.175271181997 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 9425.311779771997 L 3042.80618195 9425.311779771997 M 13.19381805 9434.107658471998 L 3042.80618195 9434.107658471998 M 13.19381805 9442.903537171998 L 3042.80618195 9442.903537171998" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1162.446225475625 9403.761876956996 L 1893.553774524375 9403.761876956996 L 1893.553774524375 9464.453439986997 L 1162.446225475625 9464.453439986997 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1199.388916015625" y="9440.704567496998" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Cancel Init t &gt; t0: Bob is left, Alice right, either have a fully signed and valid cancel tx, and can publish</text></g><g><g><rect fill="white" stroke="none" x="331.46284195418366" y="9504.034894136996" width="109.76306207023437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="335.42098736918365" y="9527.783766626995" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Cancel valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 9538.338821066996 L 681.4363205278399 9538.338821066996" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,9538.338821066996) translate(-703.1621409168399,-9538.338821066996)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 9527.343972691997 L 703.1621409168399 9538.338821066996 L 681.1724441668399 9549.333669441996 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2599.4537365852034" y="9504.034894136996" width="109.76306207023437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2603.4118820002036" y="9527.783766626995" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Cancel valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2983.3852213672935 9538.338821066996 L 2347.011134262348 9538.338821066996" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,9538.338821066996) translate(-2325.285313873348,-9538.338821066996)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2347.275010623348 9527.343972691997 L 2325.285313873348 9538.338821066996 L 2347.275010623348 9549.333669441996 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2556.271958631102" y="9577.920275216995" width="196.1266179784375" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2560.230104046102" y="9601.669147706994" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast cancel (Alice inits)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 9612.224202146996 L 2961.6594009782934 9612.224202146996" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2983.3852213672935,9612.224202146996) translate(-2983.3852213672935,-9612.224202146996)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2961.3955246172936 9601.229353771996 L 2983.3852213672935 9612.224202146996 L 2961.3955246172936 9623.219050521995 Z"/></g></g><g><g><rect fill="white" stroke="none" x="291.12643906111725" y="9577.920275216995" width="190.4358678563672" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="295.08458447611724" y="9601.669147706994" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast cancel (Bob inits)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 9612.224202146996 L 91.25242545076173 9612.224202146996" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,9612.224202146996) translate(-69.52660506176173,-9612.224202146996)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 9601.229353771996 L 69.52660506176173 9612.224202146996 L 91.51630181176174 9623.219050521995 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 9673.355559111995 L 3042.80618195 9673.355559111995 M 13.19381805 9682.151437811995 L 3042.80618195 9682.151437811995 M 13.19381805 9690.947316511996 L 3042.80618195 9690.947316511996" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1347.027310680703 9651.805656296994 L 1708.972689319297 9651.805656296994 L 1708.972689319297 9712.497219326995 L 1347.027310680703 9712.497219326995 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1383.9700012207031" y="9688.748346836996" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Cancel detected t &gt; t0: Bob is left, Alice right</text></g><g><g><rect fill="white" stroke="none" x="324.9345750474454" y="9752.078673476994" width="122.81959588371093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="328.89272046244537" y="9775.827545966993" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event cancel final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 9786.382600406994 L 681.4363205278399 9786.382600406994" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,9786.382600406994) translate(-703.1621409168399,-9786.382600406994)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 9775.387752031995 L 703.1621409168399 9786.382600406994 L 681.1724441668399 9797.377448781994 Z"/></g></g><g><g><rect fill="white" stroke="none" x="326.56306168074616" y="9825.964054556993" width="119.56262261710937" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="330.52120709574615" y="9849.712927046992" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast refund</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 9860.267981486993 L 91.25242545076173 9860.267981486993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,9860.267981486993) translate(-69.52660506176173,-9860.267981486993)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 9849.273133111994 L 69.52660506176173 9860.267981486993 L 91.51630181176174 9871.262829861993 Z"/></g></g><g><g><rect fill="white" stroke="none" x="320.8543977403165" y="9899.849435636992" width="130.97995049796876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="324.81254315531646" y="9923.598308126991" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: refund seen</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 9934.153362566993 L 681.4363205278399 9934.153362566993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,9934.153362566993) translate(-703.1621409168399,-9934.153362566993)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 9923.158514191993 L 703.1621409168399 9934.153362566993 L 681.1724441668399 9945.148210941992 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2588.845292371336" y="9899.849435636992" width="130.97995049796876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2592.8034377863364" y="9923.598308126991" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: refund seen</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2983.3852213672935 9934.153362566993 L 2347.011134262348 9934.153362566993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,9934.153362566993) translate(-2325.285313873348,-9934.153362566993)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2347.275010623348 9923.158514191993 L 2325.285313873348 9934.153362566993 L 2347.275010623348 9945.148210941992 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2495.827020843797" y="9973.734816716991" width="117.0859227880078" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2499.7851662587973" y="9997.48368920699" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Tx::Refund tx</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 10008.038743646992 L 2761.7288302132542 10008.038743646992" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,10008.038743646992) translate(-2783.4546506022543,-10008.038743646992)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2761.4649538522544 9997.043895271992 L 2783.4546506022543 10008.038743646992 L 2761.4649538522544 10019.033592021991 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2814.680019987254" y="10047.620197796992" width="159.46952874503907" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2818.6381654022543" y="10071.369070286992" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">recover accordant keys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2783.4546506022543 10081.924124726991 L 2889.0051950022544 10081.924124726991 L 2889.0051950022544 10116.228051656992 L 2805.1804709912544 10116.228051656992" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,10116.228051656992) translate(-2783.4546506022543,-10116.228051656992)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2805.444347352254 10105.233203281992 L 2783.4546506022543 10116.228051656992 L 2805.444347352254 10127.222900031991 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 10177.359408621991 L 3042.80618195 10177.359408621991 M 13.19381805 10186.155287321992 L 3042.80618195 10186.155287321992 M 13.19381805 10194.951166021992 L 3042.80618195 10194.951166021992" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1403.8633549922265 10155.80950580699 L 1652.1366450077735 10155.80950580699 L 1652.1366450077735 10216.501068836991 L 1403.8633549922265 10216.501068836991 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1440.8060455322266" y="10192.752196346992" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve"> Punish process t &gt; t1 &gt; t0 </text></g><g><g><rect fill="white" stroke="none" x="2577.853890698973" y="10256.08252298699" width="152.96275384269532" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2581.812036113973" y="10279.83139547699" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Event: punish valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2983.3852213672935 10290.38644991699 L 2347.011134262348 10290.38644991699" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,10290.38644991699) translate(-2325.285313873348,-10290.38644991699)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2347.275010623348 10279.39160154199 L 2325.285313873348 10290.38644991699 L 2347.275010623348 10301.38129829199 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2477.8886053164533" y="10329.967904066989" width="152.96275384269532" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2481.8467507314535" y="10353.716776556988" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Event: punish valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 10364.27183099699 L 2761.7288302132542 10364.27183099699" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,10364.27183099699) translate(-2783.4546506022543,-10364.27183099699)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2761.4649538522544 10353.27698262199 L 2783.4546506022543 10364.27183099699 L 2761.4649538522544 10375.266679371989 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2814.680019987254" y="10403.85328514699" width="112.22546441398437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2818.6381654022543" y="10427.60215763699" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">fully sign punish</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2783.4546506022543 10438.157212076989 L 2889.0051950022544 10438.157212076989 L 2889.0051950022544 10472.46113900699 L 2805.1804709912544 10472.46113900699" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,10472.46113900699) translate(-2783.4546506022543,-10472.46113900699)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2805.444347352254 10461.46629063199 L 2783.4546506022543 10472.46113900699 L 2805.444347352254 10483.455987381989 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2504.7890874941877" y="10512.042593156988" width="99.16178948722656" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2508.747232909188" y="10535.791465646987" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Tx::Punish</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2783.4546506022543 10546.346520086989 L 2347.011134262348 10546.346520086989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,10546.346520086989) translate(-2325.285313873348,-10546.346520086989)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2347.275010623348 10535.35167171199 L 2325.285313873348 10546.346520086989 L 2347.275010623348 10557.341368461988 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2575.004929822508" y="10585.927974236987" width="158.660675595625" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2578.9630752375083" y="10609.676846726987" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Broadcast punish tx</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 10620.231901166988 L 2961.6594009782934 10620.231901166988" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2983.3852213672935,10620.231901166988) translate(-2983.3852213672935,-10620.231901166988)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2961.3955246172936 10609.237052791988 L 2983.3852213672935 10620.231901166988 L 2961.3955246172936 10631.226749541987 Z"/></g></g></g><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/></g></svg>
\ No newline at end of file
diff --git a/doc/sequencediagram.txt b/doc/sequencediagram.txt
index 3edf6179e..71783c99d 100644
--- a/doc/sequencediagram.txt
+++ b/doc/sequencediagram.txt
@@ -5,11 +5,13 @@ title Farcaster node
 participant t_syncer
 participant t_wallet
 participant t_swap
+participant t_checkpoint
 participant t_farcasterd
 participant t_cli
 participant peerd
 participant m_cli
 participant m_farcasterd
+participant m_checkpoint
 participant m_swap
 participant m_wallet
 participant m_syncer
@@ -89,7 +91,9 @@ t_swap -> t_wallet : if Bob, SEND PENDING Msg Reveal (maker is sender)
 ==Commit-Reveal Complete==
 ==Changing semantics: On Commit-Reveal, Maker and Taker were the key roles. From now on Bob or Alice are the key roles. Now t_ is bob_ on the left and m_ is alice_ on the right.==
 ==Swap setup: Bob is left, Alice right==
+t_wallet -> t_checkpoint: CheckpointWalletBobPrelockBob
 t_wallet -> t_swap : Ctl CoreArbitratingSetup
+t_swap -> t_checkpoint: CheckpointSwapBobPrelockBob
 // TODO: During replay of Checkpoint Bob 0, Bob has to rewatch these 3 txs
 t_syncer <- t_swap : Watch Arbitrating Lock
 t_syncer <- t_swap : Watch Cancel
@@ -102,16 +106,18 @@ m_swap -> m_syncer : Watch Cancel
 m_swap -> m_syncer : Watch Refund
 
 m_wallet <- m_swap : Msg CoreArbitratingSetup
-m_wallet --> m_wallet : Checkpoint Alice 0
+m_wallet -> m_checkpoint : CheckpointWalletAlicePrelockBob
 m_wallet -> m_swap : Ctl RefundProcedureSignatures
+m_swap -> m_checkpoint : CheckpointSwapAlicePrelockBob
 m_swap -> peerd : Msg RefundProcedureSignatures
 peerd -> t_swap : Msg RefundProcedureSignatures
 t_wallet <- t_swap : Msg RefundProcedureSignatures
 t_wallet -> t_swap:Ctl Datum::SignedArbitratingLock
 // DONE: do we know that same inputs are being used in case of replay?
 // -> yes, but create different sig
-t_wallet --> t_wallet : Checkpoint Bob 0
+t_wallet -> t_checkpoint : CheckpointWalletBobPreBuySig
 t_wallet -> t_swap : Ctl BuyProcedureSignature
+t_swap -> t_checkpoint : CheckpointSwapBobPreBuySig
 t_syncer <- t_swap : Broadcast Arbitrating Lock
 t_swap -> t_syncer : Watch Accordant Lock
 t_swap -> t_syncer : Watch Buy
@@ -131,8 +137,10 @@ parallel off
 
 peerd <- t_swap : Msg BuyProcedureSignature
 m_swap <- peerd : Msg BuyProcedureSignature
+m_swap -> m_checkpoint : CheckpointSwapAlicePreBuy
 m_swap -> m_syncer:Watch Buy
 m_swap -> m_wallet : Msg BuyProcedureSignature
+m_wallet -> m_checkpoint : CheckpointWalletAlicePreBuy
 ==Swap Setup Complete==
 ==Buy Procedure: Bob is left, Alice right==
 
diff --git a/doc/staterecovery_sequencediagram.svg b/doc/staterecovery_sequencediagram.svg
new file mode 100644
index 000000000..f7bb9cd2a
--- /dev/null
+++ b/doc/staterecovery_sequencediagram.svg
@@ -0,0 +1 @@
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1091" height="1482"><desc>title%20State%20Recovery%20Procedure%0A%0Aparticipant%20syncerd%0A%2F%2F%20TODO%3A%20remove%20walletd%20once%20it's%20stateless%0Aparticipant%20walletd%0Aparticipant%20swapd%0Aparticipant%20checkpointd%0Aparticipant%20farcasterd%0Aparticipant%20cli%0Aparticipant%20peerd%0A%0A%3D%3D%20State%20Recovery%20Procedure%0Aentryspacing%200.8%0Afarcasterd%20-%3E%20checkpointd%20%3A%20launch%0Acheckpointd%20-%3E%20farcasterd%20%3A%20RecoverableStates%0Afarcasterd%20-%3E%20cli%20%3A%20RecoverableStates%0Acli%20-%3E%20farcasterd%20%3A%20RecoverSelectedState%0Afarcasterd%20-%3E%20walletd%20%3A%20launch%0Afarcasterd%20-%3E%20swapd%20%3A%20launch%0Afarcasterd%20-%3E%20syncerd%20%3A%20launch%0Afarcasterd%20-%3E%20peerd%20%3A%20launch%0Awalletd%20-%3E%20farcasterd%20%3A%20Ctl%20Hello%0Aswapd%20-%3E%20farcasterd%20%3A%20Ctl%20Hello%0Asyncerd%20-%3E%20farcasterd%20%3A%20Ctl%20Hello%0Apeerd%20-%3E%20farcasterd%20%3A%20Ctl%20Hello%0Afarcasterd%20-%3E%20checkpointd%20%3A%20RecoverSelectedState%0Acheckpointd%20-%3E%20walletd%20%3A%20RecoverWallet%0Acheckpointd%20-%3E%20peerd%20%3A%20RecoverPeerd%0Acheckpointd%20-%3E%20swapd%20%3A%20RecoverSwap%0A%2F%2F%20these%20tasks%20could%20be%20checkpointed%2C%20but%20can%20probably%20be%20recreated%20from%20scratch%20based%20on%20recovered%20state%20in%20swapd%20(and%20currently%20also%20walletd)%0Aswapd%20-%3E%20syncerd%20%3A%20WatchTasks%0Aswapd%20-%3E%20swapd%20%3A%20ResumeSwap%0A%0A%0A%0A</desc><defs/><g><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g><rect fill="white" stroke="none" x="0" y="0" width="1091" height="1482"/></g><g><text fill="black" stroke="none" font-family="sans-serif" font-size="16.5pt" font-style="normal" font-weight="normal" text-decoration="normal" x="416.6242765061778" y="39.58145414999999" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">State Recovery Procedure</text></g><g/><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 67.4900984089297 154.895423907 L 67.4900984089297 1482.1935197369999" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 199.62134197971878 154.895423907 L 199.62134197971878 1482.1935197369999" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 327.2751456701368 154.895423907 L 327.2751456701368 1482.1935197369999" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 488.901986671504 154.895423907 L 488.901986671504 1482.1935197369999" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 705.1386756953322 154.895423907 L 705.1386756953322 1482.1935197369999" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 921.3753647191603 154.895423907 L 921.3753647191603 1482.1935197369999" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1030.693444532625 154.895423907 L 1030.693444532625 1482.1935197369999" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/></g><g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 13.193818050000004 83.648806437 L 121.78637876785939 83.648806437 L 121.78637876785939 154.895423907 L 13.193818050000004 154.895423907 L 13.193818050000004 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="41.82440321850001" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">syncerd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 148.1740148678594 83.648806437 L 251.06866909157816 83.648806437 L 251.06866909157816 154.895423907 L 148.1740148678594 154.895423907 L 148.1740148678594 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="176.8046000363594" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">walletd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 277.45630519157817 83.648806437 L 377.09398614869536 83.648806437 L 377.09398614869536 154.895423907 L 277.45630519157817 154.895423907 L 277.45630519157817 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="306.0868903600782" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">swapd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 421.1518794082774 83.648806437 L 556.6520939347306 83.648806437 L 556.6520939347306 154.895423907 L 421.1518794082774 154.895423907 L 421.1518794082774 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="449.78246457677744" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">checkpointd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 643.9168429682384 83.648806437 L 766.3605084224259 83.648806437 L 766.3605084224259 154.895423907 L 643.9168429682384 154.895423907 L 643.9168429682384 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="672.5474281367384" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">farcasterd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 885.8228129979259 83.648806437 L 956.9279164403947 83.648806437 L 956.9279164403947 154.895423907 L 885.8228129979259 154.895423907 L 885.8228129979259 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="914.4533981664259" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">cli</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 983.3155525403946 83.648806437 L 1078.0713365248555 83.648806437 L 1078.0713365248555 154.895423907 L 983.3155525403946 154.895423907 L 983.3155525403946 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1011.9461377088946" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">peerd</text></g></g><g><g><g><rect fill="white" stroke="none" x="571.4623398821876" y="199.75440527700005" width="51.11598260246094" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="575.4204852971876" y="223.50327776700004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 705.1386756953322 234.05833220700003 L 510.627807060504 234.05833220700003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(488.901986671504,234.05833220700003) translate(-488.901986671504,-234.05833220700003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 510.891683421504 223.06348383200003 L 488.901986671504 234.05833220700003 L 510.891683421504 245.05318058200004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="531.1294999163673" y="265.72349552700007" width="131.78166253410157" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="535.0876453313673" y="289.47236801700006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">RecoverableStates</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 488.901986671504 300.02742245700006 L 683.4128553063322 300.02742245700006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(705.1386756953322,300.02742245700006) translate(-705.1386756953322,-300.02742245700006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 683.1489789453321 289.03257408200005 L 705.1386756953322 300.02742245700006 L 683.1489789453321 311.02227083200006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="747.3661889401955" y="331.6925857770001" width="131.78166253410157" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="751.3243343551954" y="355.4414582670001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">RecoverableStates</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 705.1386756953322 365.9965127070001 L 899.6495443301603 365.9965127070001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(921.3753647191603,365.9965127070001) translate(-921.3753647191603,-365.9965127070001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 899.3856679691603 355.0016643320001 L 921.3753647191603 365.9965127070001 L 899.3856679691603 376.9913610820001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="736.3640450803322" y="397.6616760270001" width="153.78595025382813" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="740.3221904953322" y="421.4105485170001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">RecoverSelectedState</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 921.3753647191603 431.9656029570001 L 726.8644960843321 431.9656029570001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(705.1386756953322,431.9656029570001) translate(-705.1386756953322,-431.9656029570001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 727.1283724453322 420.9707545820001 L 705.1386756953322 431.9656029570001 L 727.1283724453322 442.9604513320001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="426.822017536295" y="463.63076627700013" width="51.11598260246094" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="430.780162951295" y="487.37963876700013" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 705.1386756953322 497.9346932070001 L 221.34716236871878 497.9346932070001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(199.62134197971878,497.9346932070001) translate(-199.62134197971878,-497.9346932070001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 221.61103872971879 486.9398448320001 L 199.62134197971878 497.9346932070001 L 221.61103872971879 508.9295415820001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="490.648919381504" y="529.5998565270002" width="51.11598260246094" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="494.607064796504" y="553.3487290170002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 705.1386756953322 563.9037834570001 L 349.0009660591368 563.9037834570001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(327.2751456701368,563.9037834570001) translate(-327.2751456701368,-563.9037834570001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 349.2648424201368 552.9089350820002 L 327.2751456701368 563.9037834570001 L 349.2648424201368 574.8986318320001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="360.7563957509004" y="595.5689467770002" width="51.11598260246094" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="364.7145411659004" y="619.3178192670002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 705.1386756953322 629.8728737070002 L 89.2159187979297 629.8728737070002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(67.4900984089297,629.8728737070002) translate(-67.4900984089297,-629.8728737070002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 89.4797951589297 618.8780253320002 L 67.4900984089297 629.8728737070002 L 89.4797951589297 640.8677220820001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="842.3580688127481" y="661.5380370270002" width="51.11598260246094" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="846.3162142277481" y="685.2869095170003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 705.1386756953322 695.8419639570002 L 1008.9676241436251 695.8419639570002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1030.693444532625,695.8419639570002) translate(-1030.693444532625,-695.8419639570002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1008.7037477826251 684.8471155820002 L 1030.693444532625 695.8419639570002 L 1008.7037477826251 706.8368123320001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="420.72323213590437" y="727.5071272770002" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="424.68137755090436" y="751.2559997670003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 199.62134197971878 761.8110542070002 L 683.4128553063322 761.8110542070002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(705.1386756953322,761.8110542070002) translate(-705.1386756953322,-761.8110542070002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 683.1489789453321 750.8162058320003 L 705.1386756953322 761.8110542070002 L 683.1489789453321 772.8059025820002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="484.5501339811134" y="793.4762175270002" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="488.5082793961134" y="817.2250900170003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 327.2751456701368 827.7801444570002 L 683.4128553063322 827.7801444570002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(705.1386756953322,827.7801444570002) translate(-705.1386756953322,-827.7801444570002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 683.1489789453321 816.7852960820003 L 705.1386756953322 827.7801444570002 L 683.1489789453321 838.7749928320002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="354.6576103505098" y="859.4453077770003" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="358.6157557655098" y="883.1941802670003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 67.4900984089297 893.7492347070003 L 683.4128553063322 893.7492347070003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(705.1386756953322,893.7492347070003) translate(-705.1386756953322,-893.7492347070003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 683.1489789453321 882.7543863320003 L 705.1386756953322 893.7492347070003 L 683.1489789453321 904.7440830820002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="836.2592834123575" y="925.4143980270003" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="840.2174288273575" y="949.1632705170003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1030.693444532625 959.7183249570003 L 726.8644960843321 959.7183249570003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(705.1386756953322,959.7183249570003) translate(-705.1386756953322,-959.7183249570003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 727.1283724453322 948.7234765820003 L 705.1386756953322 959.7183249570003 L 727.1283724453322 970.7131733320002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="520.127356056504" y="991.3834882770002" width="153.78595025382813" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="524.085501471504" y="1015.1323607670003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">RecoverSelectedState</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 705.1386756953322 1025.6874152070002 L 510.627807060504 1025.6874152070002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(488.901986671504,1025.6874152070002) translate(-488.901986671504,-1025.6874152070002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 510.891683421504 1014.6925668320002 L 488.901986671504 1025.6874152070002 L 510.891683421504 1036.6822635820001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="292.9127031757481" y="1057.352578527" width="102.69792229972656" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="296.8708485907481" y="1081.101451017" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">RecoverWallet</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 488.901986671504 1091.656505457 L 221.34716236871878 1091.656505457" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(199.62134197971878,1091.656505457) translate(-199.62134197971878,-1091.656505457)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 221.61103872971879 1080.6616570820001 L 199.62134197971878 1091.656505457 L 221.61103872971879 1102.651353832 Z"/></g></g><g><g><rect fill="white" stroke="none" x="708.9856196865762" y="1123.321668777" width="101.62419183097656" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="712.9437651015762" y="1147.070541267" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">RecoverPeerd</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 488.901986671504 1157.625595707 L 1008.9676241436251 1157.625595707" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1030.693444532625,1157.625595707) translate(-1030.693444532625,-1157.625595707)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1008.7037477826251 1146.630747332 L 1030.693444532625 1157.625595707 L 1008.7037477826251 1168.620444082 Z"/></g></g><g><g><rect fill="white" stroke="none" x="358.5005150551368" y="1189.290759027" width="99.17610223136718" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="362.4586604701368" y="1213.0396315169999" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">RecoverSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 488.901986671504 1223.594685957 L 349.0009660591368 1223.594685957" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(327.2751456701368,1223.594685957) translate(-327.2751456701368,-1223.594685957)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 349.2648424201368 1212.599837582 L 327.2751456701368 1223.594685957 L 349.2648424201368 1234.5895343319999 Z"/></g></g><g><g><rect fill="white" stroke="none" x="154.1832580576387" y="1255.2598492769998" width="86.39872796378906" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="158.1414034726387" y="1279.0087217669998" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">WatchTasks</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 327.2751456701368 1289.5637762069998 L 89.2159187979297 1289.5637762069998" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(67.4900984089297,1289.5637762069998) translate(-67.4900984089297,-1289.5637762069998)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 89.4797951589297 1278.5689278319999 L 67.4900984089297 1289.5637762069998 L 89.4797951589297 1300.5586245819998 Z"/></g></g><g><g><rect fill="white" stroke="none" x="358.5005150551368" y="1321.228939527" width="99.17611749015624" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="362.4586604701368" y="1344.977812017" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">ResumeSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 327.2751456701368 1355.532866457 L 432.82569007013683 1355.532866457 L 432.82569007013683 1389.836793387 L 349.0009660591368 1389.836793387" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(327.2751456701368,1389.836793387) translate(-327.2751456701368,-1389.836793387)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 349.2648424201368 1378.841945012 L 327.2751456701368 1389.836793387 L 349.2648424201368 1400.831641762 Z"/></g></g></g><g/><g/><g/><g/><g/><g/><g/></g></svg>
\ No newline at end of file
diff --git a/doc/staterecovery_sequencediagram.txt b/doc/staterecovery_sequencediagram.txt
new file mode 100644
index 000000000..d9d32b99c
--- /dev/null
+++ b/doc/staterecovery_sequencediagram.txt
@@ -0,0 +1,32 @@
+title State Recovery Procedure
+
+participant syncerd
+// TODO: remove walletd once it's stateless
+participant walletd
+participant swapd
+participant checkpointd
+participant farcasterd
+participant cli
+participant peerd
+
+== State Recovery Procedure
+entryspacing 0.8
+farcasterd -> checkpointd : launch
+checkpointd -> farcasterd : RecoverableStates
+farcasterd -> cli : RecoverableStates
+cli -> farcasterd : RecoverSelectedState
+farcasterd -> walletd : launch
+farcasterd -> swapd : launch
+farcasterd -> syncerd : launch
+farcasterd -> peerd : launch
+walletd -> farcasterd : Ctl Hello
+swapd -> farcasterd : Ctl Hello
+syncerd -> farcasterd : Ctl Hello
+peerd -> farcasterd : Ctl Hello
+farcasterd -> checkpointd : RecoverSelectedState
+checkpointd -> walletd : RecoverWallet
+checkpointd -> peerd : RecoverPeerd
+checkpointd -> swapd : RecoverSwap
+// these tasks could be checkpointed, but can probably be recreated from scratch based on recovered state in swapd (and currently also walletd)
+swapd -> syncerd : WatchTasks
+swapd -> swapd : ResumeSwap

From a1ead1ee8b1c296ebb584da32526a90c70263d18 Mon Sep 17 00:00:00 2001
From: Robert Hambrock <roberthambrock@gmail.com>
Date: Wed, 11 May 2022 19:07:11 +0200
Subject: [PATCH 11/32] clone walletd service for new checkpointd service

---
 src/checkpointd/mod.rs     |   21 +
 src/checkpointd/opts.rs    |  176 ++++
 src/checkpointd/runtime.rs | 1584 ++++++++++++++++++++++++++++++++++++
 3 files changed, 1781 insertions(+)
 create mode 100644 src/checkpointd/mod.rs
 create mode 100644 src/checkpointd/opts.rs
 create mode 100644 src/checkpointd/runtime.rs

diff --git a/src/checkpointd/mod.rs b/src/checkpointd/mod.rs
new file mode 100644
index 000000000..77ff80bc8
--- /dev/null
+++ b/src/checkpointd/mod.rs
@@ -0,0 +1,21 @@
+// LNP Node: node running lightning network protocol and generalized lightning
+// channels.
+// Written in 2020 by
+//     Dr. Maxim Orlovsky <orlovsky@pandoracore.com>
+//
+// To the extent possible under law, the author(s) have dedicated all
+// copyright and related and neighboring rights to this software to
+// the public domain worldwide. This software is distributed without
+// any warranty.
+//
+// You should have received a copy of the MIT License
+// along with this software.
+// If not, see <https://opensource.org/licenses/MIT>.
+
+#[cfg(feature = "shell")]
+mod opts;
+mod runtime;
+
+#[cfg(feature = "shell")]
+pub use opts::{KeyOpts, NodeSecrets, Opts};
+pub use runtime::run;
diff --git a/src/checkpointd/opts.rs b/src/checkpointd/opts.rs
new file mode 100644
index 000000000..ba23cff14
--- /dev/null
+++ b/src/checkpointd/opts.rs
@@ -0,0 +1,176 @@
+// LNP Node: node running lightning network protocol and generalized lightning
+// channels.
+// Written in 2020 by
+//     Dr. Maxim Orlovsky <orlovsky@pandoracore.com>
+//
+// To the extent possible under law, the author(s) have dedicated all
+// copyright and related and neighboring rights to this software to
+// the public domain worldwide. This software is distributed without
+// any warranty.
+//
+// You should have received a copy of the MIT License
+// along with this software.
+// If not, see <https://opensource.org/licenses/MIT>.
+
+use crate::opts::FARCASTER_KEY_FILE;
+use clap::{AppSettings, Clap, ValueHint};
+use std::path::PathBuf;
+use std::{fs, io::Read};
+
+use crate::opts::TokenString;
+use bitcoin::secp256k1::{
+    rand::{rngs::ThreadRng, thread_rng},
+    PublicKey, Secp256k1, SecretKey,
+};
+use strict_encoding::{StrictDecode, StrictEncode};
+
+/// Walletd daemon; part of Farcaster Node
+#[derive(Clap, Clone, PartialEq, Eq, Debug)]
+#[clap(
+    name = "walletd",
+    bin_name = "walletd",
+    author,
+    version,
+    setting = AppSettings::ColoredHelp
+)]
+pub struct Opts {
+    /// Node key configuration
+    #[clap(flatten)]
+    pub key_opts: KeyOpts,
+
+    /// Walletd token
+    #[clap(flatten)]
+    pub wallet_token: TokenString,
+
+    /// These params can be read also from the configuration file, not just
+    /// command-line args or environment variables
+    #[clap(flatten)]
+    pub shared: crate::opts::Opts,
+}
+
+impl Opts {
+    pub fn process(&mut self) {
+        self.shared.process();
+        self.key_opts.process(&self.shared);
+    }
+}
+
+/// Node key configuration
+#[derive(Clap, Clone, PartialEq, Eq, Debug)]
+pub struct KeyOpts {
+    /// Node key file
+    ///
+    /// Location for the file containing node private Secp256k1 key
+    /// (unencrypted)
+    #[clap(
+        short,
+        long,
+        env = "FARCASTER_KEY_FILE",
+        default_value = FARCASTER_KEY_FILE,
+        value_hint = ValueHint::FilePath
+    )]
+    pub key_file: String,
+}
+
+#[derive(StrictEncode, StrictDecode, Clone, PartialEq, Eq, Debug)]
+pub struct Counter(pub u32);
+impl Counter {
+    fn increment(&mut self) -> u32 {
+        self.0 += 1;
+        self.0
+    }
+}
+
+/// Hold secret keys and seeds
+#[derive(StrictEncode, StrictDecode, Clone, PartialEq, Eq, Debug)]
+pub struct NodeSecrets {
+    /// local key file
+    pub key_file: String,
+    /// local node private information
+    pub peerd_secret_key: SecretKey,
+    /// seed used for deriving addresses
+    pub wallet_seed: [u8; 32],
+    /// wallet last derivation index
+    pub wallet_counter: Counter,
+}
+
+impl NodeSecrets {
+    pub fn new(key_file: String) -> Self {
+        if PathBuf::from(key_file.clone()).exists() {
+            NodeSecrets::strict_decode(fs::File::open(key_file.clone()).unwrap_or_else(|_| {
+                panic!(
+                    "Unable to open key file {}; please check that the user \
+                    running the deamon has necessary permissions",
+                    key_file
+                )
+            }))
+            .expect("Unable to read node code file format")
+        } else {
+            let mut rng = thread_rng();
+            let peer_private_key = SecretKey::new(&mut rng);
+            let wallet_seed = Self::create_seed(&mut rng);
+            let node_secrets = Self {
+                key_file: key_file.clone(),
+                peerd_secret_key: peer_private_key,
+                wallet_seed,
+                wallet_counter: Counter(0),
+            };
+
+            let key_file_handle = fs::File::create(&key_file).unwrap_or_else(|_| {
+                panic!(
+                    "Unable to create key file '{}'; please check that path exists",
+                    key_file
+                )
+            });
+            node_secrets
+                .strict_encode(key_file_handle)
+                .expect("Unable to save generated node secrets");
+            node_secrets
+        }
+    }
+
+    pub fn node_id(&self) -> PublicKey {
+        PublicKey::from_secret_key(&Secp256k1::new(), &self.peerd_secret_key)
+    }
+
+    fn create_seed(rng: &mut ThreadRng) -> [u8; 32] {
+        let mut seed_buf = [0u8; 32];
+        let key = SecretKey::new(rng);
+        let mut key_iter = key[..].iter();
+        let mut reader = std::io::Cursor::new(&mut key_iter);
+        reader
+            .read_exact(&mut seed_buf)
+            .expect("wallet_key has 32 bytes");
+        {
+            let expected_key = SecretKey::from_slice(&seed_buf).expect("wallet_seed has 32 bytes");
+            assert_eq!(
+                expected_key, key,
+                "Cannot go back and forward from bytes to secret key"
+            );
+        }
+        seed_buf
+    }
+
+    pub fn increment_wallet_counter(&mut self) -> u32 {
+        self.wallet_counter.increment();
+        let key_file_handle = fs::File::create(&self.key_file).unwrap_or_else(|_| {
+            panic!(
+                "Unable to create key file '{}'; please check that path exists",
+                self.key_file
+            )
+        });
+        self.strict_encode(key_file_handle)
+            .expect("Unable to save incremented wallet counter");
+        self.wallet_counter.0
+    }
+
+    pub fn wallet_seed(&self) -> [u8; 32] {
+        self.wallet_seed
+    }
+}
+
+impl KeyOpts {
+    pub fn process(&mut self, shared: &crate::opts::Opts) {
+        shared.process_dir(&mut self.key_file);
+    }
+}
diff --git a/src/checkpointd/runtime.rs b/src/checkpointd/runtime.rs
new file mode 100644
index 000000000..46381bbd6
--- /dev/null
+++ b/src/checkpointd/runtime.rs
@@ -0,0 +1,1584 @@
+use lmdb::{Cursor, Transaction as LMDBTransaction};
+use std::path::PathBuf;
+use std::{
+    any::Any,
+    collections::{HashMap, HashSet},
+    convert::{TryFrom, TryInto},
+    io::{self, Write},
+    ptr::swap_nonoverlapping,
+    str::FromStr,
+};
+
+use crate::swapd::get_swap_id;
+use crate::walletd::NodeSecrets;
+use crate::LogStyle;
+use crate::Senders;
+use crate::{
+    rpc::{
+        request::{
+            self, BitcoinAddress, Commit, Keys, MoneroAddress, Msg, Params, Reveal, Token, Tx,
+        },
+        Request, ServiceBus,
+    },
+    syncerd::SweepXmrAddress,
+};
+use crate::{CtlServer, Error, Service, ServiceConfig, ServiceId};
+use bitcoin::{
+    hashes::hex::FromHex,
+    secp256k1::{self, rand::thread_rng, PublicKey, Secp256k1, SecretKey, Signature},
+    util::{
+        bip32::{DerivationPath, ExtendedPrivKey},
+        psbt::serialize::Deserialize,
+    },
+    Address,
+};
+use colored::Colorize;
+use farcaster_core::{
+    bitcoin::{
+        segwitv0::{BuyTx, CancelTx, FundingTx, PunishTx, RefundTx},
+        segwitv0::{LockTx, SegwitV0},
+        Bitcoin, BitcoinSegwitV0,
+    },
+    blockchain::FeePriority,
+    bundle::{
+        AliceParameters, BobParameters, CoreArbitratingTransactions, FullySignedBuy,
+        FullySignedPunish, FullySignedRefund, FundingTransaction, Proof, SignedAdaptorBuy,
+        SignedAdaptorRefund, SignedArbitratingLock,
+    },
+    consensus::{self, CanonicalBytes, Decodable, Encodable},
+    crypto::{ArbitratingKeyId, GenerateKey, SharedKeyId},
+    crypto::{CommitmentEngine, ProveCrossGroupDleq},
+    monero::{Monero, SHARED_VIEW_KEY_ID},
+    negotiation::PublicOffer,
+    protocol_message::{
+        BuyProcedureSignature, CommitAliceParameters, CommitBobParameters, CoreArbitratingSetup,
+        RefundProcedureSignatures,
+    },
+    role::{Alice, Bob, SwapRole, TradeRole},
+    swap::btcxmr::{BtcXmr, KeyManager},
+    swap::SwapId,
+    syncer::{AddressTransaction, Boolean, Event},
+    transaction::{Broadcastable, Fundable, Transaction, TxLabel, Witnessable},
+};
+use internet2::{LocalNode, ToNodeAddr, TypedEnum, LIGHTNING_P2P_DEFAULT_PORT};
+// use lnp::{ChannelId as SwapId, TempChannelId as TempSwapId};
+use microservices::esb::{self, Handler};
+use request::{LaunchSwap, NodeId};
+
+pub fn run(
+    config: ServiceConfig,
+    wallet_token: Token,
+    node_secrets: NodeSecrets,
+    data_dir: PathBuf,
+) -> Result<(), Error> {
+    let runtime = Runtime {
+        identity: ServiceId::Wallet,
+        wallet_token,
+        node_secrets,
+        wallets: none!(),
+        swaps: none!(),
+        btc_addrs: none!(),
+        xmr_addrs: none!(),
+        checkpoints: CheckpointGetSet::new(data_dir),
+    };
+
+    Service::run(config, runtime, false)
+}
+
+pub struct Runtime {
+    identity: ServiceId,
+    wallet_token: Token,
+    node_secrets: NodeSecrets,
+    wallets: HashMap<SwapId, Wallet>,
+    swaps: HashMap<SwapId, Option<Request>>,
+    btc_addrs: HashMap<SwapId, bitcoin::Address>,
+    xmr_addrs: HashMap<SwapId, monero::Address>,
+    checkpoints: CheckpointGetSet,
+}
+
+impl Runtime {
+    fn clean_up_after_swap(&mut self, swapid: &SwapId) {
+        self.wallets.remove(swapid);
+        self.btc_addrs.remove(swapid);
+        self.xmr_addrs.remove(swapid);
+        self.swaps.remove(swapid);
+    }
+}
+
+pub enum Wallet {
+    Alice(AliceState),
+    Bob(BobState),
+}
+
+pub struct AliceState {
+    alice: Alice<BtcXmr>,
+    local_params: AliceParameters<BtcXmr>,
+    local_proof: Proof<BtcXmr>,
+    key_manager: KeyManager,
+    pub_offer: PublicOffer<BtcXmr>,
+    remote_commit: Option<CommitBobParameters<BtcXmr>>,
+    remote_params: Option<BobParameters<BtcXmr>>,
+    remote_proof: Option<Proof<BtcXmr>>,
+    core_arb_setup: Option<CoreArbitratingSetup<BtcXmr>>,
+    alice_cancel_signature: Option<Signature>,
+    adaptor_refund: Option<SignedAdaptorRefund<farcaster_core::bitcoin::BitcoinSegwitV0>>,
+}
+
+impl Encodable for AliceState {
+    fn consensus_encode<W: io::Write>(&self, writer: &mut W) -> Result<usize, io::Error> {
+        let mut len = self.alice.consensus_encode(writer)?;
+        len += self.local_params.consensus_encode(writer)?;
+        len += self.local_proof.consensus_encode(writer)?;
+        len += self.key_manager.consensus_encode(writer)?;
+        len += self.pub_offer.consensus_encode(writer)?;
+        len += self.remote_commit.consensus_encode(writer)?;
+        len += self.remote_params.consensus_encode(writer)?;
+        len += self.remote_proof.consensus_encode(writer)?;
+        len += self.core_arb_setup.consensus_encode(writer)?;
+        len += self
+            .alice_cancel_signature
+            .as_canonical_bytes()
+            .consensus_encode(writer)?;
+        len += self.adaptor_refund.consensus_encode(writer)?;
+        Ok(len)
+    }
+}
+
+impl Decodable for AliceState {
+    fn consensus_decode<D: io::Read>(d: &mut D) -> Result<Self, consensus::Error> {
+        Ok(AliceState {
+            alice: Decodable::consensus_decode(d)?,
+            local_params: Decodable::consensus_decode(d)?,
+            local_proof: Decodable::consensus_decode(d)?,
+            key_manager: Decodable::consensus_decode(d)?,
+            pub_offer: Decodable::consensus_decode(d)?,
+            remote_commit: Decodable::consensus_decode(d)?,
+            remote_params: Decodable::consensus_decode(d)?,
+            remote_proof: Decodable::consensus_decode(d)?,
+            core_arb_setup: Decodable::consensus_decode(d)?,
+            alice_cancel_signature: Option::<Signature>::from_canonical_bytes(
+                farcaster_core::unwrap_vec_ref!(d).as_ref(),
+            )?,
+            adaptor_refund: Decodable::consensus_decode(d)?,
+        })
+    }
+}
+
+impl AliceState {
+    fn new(
+        alice: Alice<BtcXmr>,
+        local_params: AliceParameters<BtcXmr>,
+        local_proof: Proof<BtcXmr>,
+        key_manager: KeyManager,
+        pub_offer: PublicOffer<BtcXmr>,
+        remote_commit: Option<CommitBobParameters<BtcXmr>>,
+    ) -> Self {
+        Self {
+            alice,
+            local_params,
+            local_proof,
+            key_manager,
+            pub_offer,
+            remote_commit,
+            remote_params: None,
+            remote_proof: None,
+            core_arb_setup: None,
+            alice_cancel_signature: None,
+            adaptor_refund: None,
+        }
+    }
+}
+
+pub struct BobState {
+    bob: Bob<BtcXmr>,
+    local_params: BobParameters<BtcXmr>,
+    local_proof: Proof<BtcXmr>,
+    key_manager: KeyManager,
+    pub_offer: PublicOffer<BtcXmr>,
+    funding_tx: Option<FundingTx>,
+    remote_commit_params: Option<CommitAliceParameters<BtcXmr>>,
+    remote_params: Option<AliceParameters<BtcXmr>>,
+    remote_proof: Option<Proof<BtcXmr>>,
+    core_arb_setup: Option<CoreArbitratingSetup<BtcXmr>>,
+    adaptor_buy: Option<SignedAdaptorBuy<Bitcoin<SegwitV0>>>,
+}
+
+impl Encodable for BobState {
+    fn consensus_encode<W: io::Write>(&self, writer: &mut W) -> Result<usize, io::Error> {
+        let mut len = self.bob.consensus_encode(writer)?;
+        len += self.local_params.consensus_encode(writer)?;
+        len += self.local_proof.consensus_encode(writer)?;
+        len += self.key_manager.consensus_encode(writer)?;
+        len += self.pub_offer.consensus_encode(writer)?;
+        len += self.funding_tx.consensus_encode(writer)?;
+        len += self.remote_commit_params.consensus_encode(writer)?;
+        len += self.remote_params.consensus_encode(writer)?;
+        len += self.remote_proof.consensus_encode(writer)?;
+        len += self.core_arb_setup.consensus_encode(writer)?;
+        len += self.adaptor_buy.consensus_encode(writer)?;
+        Ok(len)
+    }
+}
+
+impl Decodable for BobState {
+    fn consensus_decode<D: io::Read>(d: &mut D) -> Result<Self, consensus::Error> {
+        Ok(BobState {
+            bob: Decodable::consensus_decode(d)?,
+            local_params: Decodable::consensus_decode(d)?,
+            local_proof: Decodable::consensus_decode(d)?,
+            key_manager: Decodable::consensus_decode(d)?,
+            pub_offer: Decodable::consensus_decode(d)?,
+            funding_tx: Decodable::consensus_decode(d)?,
+            remote_commit_params: Decodable::consensus_decode(d)?,
+            remote_params: Decodable::consensus_decode(d)?,
+            remote_proof: Decodable::consensus_decode(d)?,
+            core_arb_setup: Decodable::consensus_decode(d)?,
+            adaptor_buy: Decodable::consensus_decode(d)?,
+        })
+    }
+}
+
+impl BobState {
+    fn new(
+        bob: Bob<BtcXmr>,
+        local_params: BobParameters<BtcXmr>,
+        local_proof: Proof<BtcXmr>,
+        key_manager: KeyManager,
+        pub_offer: PublicOffer<BtcXmr>,
+        funding_tx: Option<FundingTx>,
+        remote_commit_params: Option<CommitAliceParameters<BtcXmr>>,
+    ) -> Self {
+        Self {
+            bob,
+            local_params,
+            local_proof,
+            key_manager,
+            pub_offer,
+            funding_tx,
+            remote_commit_params,
+            remote_params: None,
+            remote_proof: None,
+            core_arb_setup: None,
+            adaptor_buy: None,
+        }
+    }
+}
+
+impl CtlServer for Runtime {}
+
+impl esb::Handler<ServiceBus> for Runtime {
+    type Request = Request;
+    type Address = ServiceId;
+    type Error = Error;
+
+    fn identity(&self) -> ServiceId {
+        self.identity.clone()
+    }
+
+    fn handle(
+        &mut self,
+        senders: &mut esb::SenderList<ServiceBus, ServiceId>,
+        bus: ServiceBus,
+        source: ServiceId,
+        request: Request,
+    ) -> Result<(), Self::Error> {
+        match bus {
+            ServiceBus::Msg => self.handle_rpc_msg(senders, source, request),
+            ServiceBus::Ctl => self.handle_rpc_ctl(senders, source, request),
+            _ => Err(Error::NotSupported(ServiceBus::Bridge, request.get_type())),
+        }
+    }
+
+    fn handle_err(&mut self, _: esb::Error) -> Result<(), esb::Error> {
+        // We do nothing and do not propagate error; it's already being reported
+        // with `error!` macro by the controller. If we propagate error here
+        // this will make whole daemon panic
+        Ok(())
+    }
+}
+
+impl Runtime {
+    fn send_farcasterd(
+        &self,
+        senders: &mut Senders,
+        message: request::Request,
+    ) -> Result<(), Error> {
+        senders.send_to(
+            ServiceBus::Ctl,
+            self.identity(),
+            ServiceId::Farcasterd,
+            message,
+        )?;
+        Ok(())
+    }
+
+    fn handle_rpc_msg(
+        &mut self,
+        senders: &mut Senders,
+        source: ServiceId,
+        request: Request,
+    ) -> Result<(), Error> {
+        let req_swap_id = get_swap_id(&source).ok();
+        match &request {
+            Request::Protocol(Msg::TakerCommit(_)) if source == ServiceId::Farcasterd => {}
+            Request::Protocol(msg)
+                if req_swap_id.is_some() && Some(msg.swap_id()) != req_swap_id =>
+            {
+                error!("Msg and source don't have same swap_id, ignoring...");
+                return Ok(());
+            }
+            // TODO enter farcasterd messages allowed
+            _ => {}
+        }
+        match request {
+            Request::Hello => {
+                // Ignoring; this is used to set remote identity at ZMQ level
+            }
+
+            // Handled in Msg to avoid race condition between Msg and Ctl bus (2 msgs sent
+            // sequencially on the diferent buses arriving in random order), now both msgs go
+            // through the msg bus, and always arrive in the correct order. BitcoinAddress arriving
+            // after TakerCommit, blocks TakerCommit, as `self.btc_addrs.contains_key(&swap_id) ==
+            // false`
+            Request::BitcoinAddress(BitcoinAddress(swapid, btc_addr)) => {
+                if self.btc_addrs.insert(swapid, btc_addr).is_some() {
+                    error!("btc_addrs rm accidentally")
+                };
+            }
+
+            // Handled in Msg to avoid race condition between Msg and Ctl bus (2 msgs sent
+            // sequencially on the diferent buses arriving in random order), now both msgs go
+            // through the msg bus, and always arrive in the correct order. MoneroAddress arriving
+            // after TakerCommit, blocks TakerCommit, as `self.xmr_addrs.contains_key(&swap_id) ==
+            // false`
+            Request::MoneroAddress(MoneroAddress(swapid, xmr_addr)) => {
+                if self.xmr_addrs.insert(swapid, xmr_addr).is_some() {
+                    error!("xmr_addrs rm accidentally")
+                };
+            }
+            // 1st protocol message received through peer connection, and last
+            // handled by farcasterd, receiving taker commit because we are
+            // maker
+            Request::Protocol(Msg::TakerCommit(request::TakeCommit {
+                commit: remote_commit,
+                public_offer,
+                swap_id,
+            })) if self.btc_addrs.contains_key(&swap_id)
+                && self.xmr_addrs.contains_key(&swap_id) =>
+            {
+                let pub_offer: PublicOffer<BtcXmr> = FromStr::from_str(&public_offer)?;
+                trace!(
+                    "Offer {} is known, you created it previously, initiating swap with taker",
+                    &pub_offer
+                );
+                let PublicOffer { offer, .. } = pub_offer.clone();
+                let external_address = self.btc_addrs.remove(&swap_id).expect("checked above");
+                match offer.maker_role {
+                    SwapRole::Bob => {
+                        let bob = Bob::<BtcXmr>::new(external_address, FeePriority::Low);
+                        let wallet_index = self.node_secrets.increment_wallet_counter();
+                        let mut key_manager =
+                            KeyManager::new(self.node_secrets.wallet_seed, wallet_index)?;
+                        let (local_params, local_proof) =
+                            bob.generate_parameters(&mut key_manager, &pub_offer)?;
+                        if self.wallets.get(&swap_id).is_none() {
+                            let funding = create_funding(&mut key_manager, offer.network)?;
+                            let funding_addr = funding.get_address()?;
+                            let funding_fee = bitcoin::Amount::from_sat(150);
+                            let funding_amount = offer.arbitrating_amount + funding_fee;
+                            debug!(
+                                "{} | Send {} to {}",
+                                swap_id.bright_blue_italic(),
+                                funding_amount.bright_green_bold(),
+                                funding_addr.addr(),
+                            );
+                            debug!(
+                                "{} | Loading {}",
+                                swap_id.bright_blue_italic(),
+                                "Wallet::Bob".bright_yellow()
+                            );
+                            if let request::Commit::AliceParameters(remote_commit) =
+                                remote_commit.clone()
+                            {
+                                let bob_wallet = BobState::new(
+                                    bob,
+                                    local_params.clone(),
+                                    local_proof,
+                                    key_manager,
+                                    pub_offer.clone(),
+                                    Some(funding),
+                                    Some(remote_commit),
+                                );
+                                self.wallets.insert(swap_id, Wallet::Bob(bob_wallet));
+                            } else {
+                                error!("{} | Not Commit::Alice", swap_id.bright_blue_italic());
+                                return Ok(());
+                            }
+                            let launch_swap = LaunchSwap {
+                                local_trade_role: TradeRole::Maker,
+                                public_offer: pub_offer,
+                                local_params: Params::Bob(local_params),
+                                swap_id,
+                                remote_commit: Some(remote_commit),
+                                funding_address: Some(funding_addr),
+                            };
+                            self.swaps.insert(swap_id, None);
+                            self.send_ctl(
+                                senders,
+                                ServiceId::Farcasterd,
+                                Request::LaunchSwap(launch_swap),
+                            )?;
+                        } else {
+                            error!("{} | Wallet already existed", swap_id.bright_blue_italic());
+                        }
+                    }
+                    SwapRole::Alice => {
+                        let alice: Alice<BtcXmr> = Alice::new(external_address, FeePriority::Low);
+                        let wallet_seed = self.node_secrets.wallet_seed;
+                        let wallet_index = self.node_secrets.increment_wallet_counter();
+                        let mut key_manager = KeyManager::new(wallet_seed, wallet_index)?;
+                        let (local_params, local_proof) =
+                            alice.generate_parameters(&mut key_manager, &pub_offer)?;
+                        if self.wallets.get(&swap_id).is_none() {
+                            debug!(
+                                "{} | Loading {}",
+                                swap_id.bright_blue_italic(),
+                                "Wallet::Alice".bright_yellow()
+                            );
+                            if let request::Commit::BobParameters(bob_commit) =
+                                remote_commit.clone()
+                            {
+                                let alice_state = AliceState::new(
+                                    alice,
+                                    local_params.clone(),
+                                    local_proof,
+                                    key_manager,
+                                    pub_offer.clone(),
+                                    Some(bob_commit),
+                                );
+
+                                self.wallets.insert(swap_id, Wallet::Alice(alice_state));
+
+                                let launch_swap = LaunchSwap {
+                                    local_trade_role: TradeRole::Maker,
+                                    public_offer: pub_offer,
+                                    local_params: Params::Alice(local_params),
+                                    swap_id,
+                                    remote_commit: Some(remote_commit),
+                                    funding_address: None,
+                                };
+                                self.send_ctl(
+                                    senders,
+                                    ServiceId::Farcasterd,
+                                    Request::LaunchSwap(launch_swap),
+                                )?;
+                            } else {
+                                error!("{} | Not Commit::Bob", swap_id.bright_blue_italic());
+                            }
+                        } else {
+                            error!("{} | Wallet already existed", swap_id.bright_blue_italic());
+                        }
+                    }
+                }
+            }
+            Request::Protocol(Msg::MakerCommit(commit)) => {
+                let req_swap_id = req_swap_id.expect("validated previously");
+                match commit {
+                    Commit::BobParameters(CommitBobParameters { swap_id, .. }) => {
+                        if let Some(Wallet::Alice(AliceState {
+                            remote_commit, // None
+                            ..
+                        })) = self.wallets.get_mut(&swap_id)
+                        {
+                            if remote_commit.is_some() {
+                                error!(
+                                    "{} | Bob commit (remote) already set",
+                                    swap_id.bright_blue_italic(),
+                                );
+                            } else if let Commit::BobParameters(commit) = commit {
+                                trace!("Setting bob commit");
+                                *remote_commit = Some(commit);
+                            }
+                        } else {
+                            error!(
+                                "{} | Wallet not found or not on correct state",
+                                swap_id.bright_blue_italic(),
+                            );
+                            return Ok(());
+                        }
+                    }
+                    Commit::AliceParameters(CommitAliceParameters { swap_id, .. }) => {
+                        if let Some(Wallet::Bob(BobState {
+                            remote_commit_params, // None
+                            ..
+                        })) = self.wallets.get_mut(&swap_id)
+                        {
+                            if remote_commit_params.is_some() {
+                                error!(
+                                    "{} | Alice commit (remote) already set",
+                                    swap_id.bright_blue_italic(),
+                                );
+                            } else if let Commit::AliceParameters(commit) = commit {
+                                trace!("Setting alice commit");
+                                *remote_commit_params = Some(commit);
+                            }
+                        } else {
+                            error!(
+                                "{} | Wallet not found or not on correct state",
+                                swap_id.bright_blue_italic(),
+                            );
+                            return Ok(());
+                        }
+                    }
+                }
+                let proof: &Proof<BtcXmr> = match self.wallets.get(&req_swap_id).unwrap() {
+                    Wallet::Alice(AliceState { local_proof, .. }) => local_proof,
+                    Wallet::Bob(BobState { local_proof, .. }) => local_proof,
+                };
+                senders.send_to(
+                    ServiceBus::Ctl,
+                    ServiceId::Wallet,
+                    // TODO: (maybe) what if the message responded to is not sent by swapd?
+                    source,
+                    Request::Protocol(Msg::Reveal((req_swap_id, proof.clone()).into())),
+                )?;
+            }
+            Request::Protocol(Msg::Reveal(Reveal::Proof(proof))) => {
+                let swap_id = get_swap_id(&source)?;
+                let wallet = self.wallets.get_mut(&swap_id);
+                match wallet {
+                    Some(Wallet::Alice(AliceState { remote_proof, .. })) => {
+                        *remote_proof = Some(Proof { proof: proof.proof })
+                    }
+                    Some(Wallet::Bob(BobState {
+                        bob: _,
+                        local_params: _,
+                        local_proof: _,
+                        key_manager: _,
+                        pub_offer: _,
+                        funding_tx: _,
+                        remote_commit_params: _,
+                        remote_params: _,
+                        remote_proof,
+                        ..
+                    })) => *remote_proof = Some(Proof { proof: proof.proof }),
+                    None => error!(
+                        "{} | wallet for specified swap does not exist",
+                        swap_id.bright_blue_italic(),
+                    ),
+                }
+            }
+            Request::Protocol(Msg::Reveal(reveal)) => {
+                let swap_id = get_swap_id(&source)?;
+                match reveal {
+                    // receiving from counterparty Bob, thus I'm Alice (Maker or Taker)
+                    Reveal::BobParameters(reveal) => {
+                        if let Some(Wallet::Alice(AliceState {
+                            local_proof,
+                            key_manager,
+                            pub_offer,
+                            remote_commit: Some(bob_commit),
+                            remote_params,                 // None
+                            remote_proof: Some(bob_proof), // Should be Some() at this stage
+                            ..
+                        })) = self.wallets.get_mut(&swap_id)
+                        {
+                            if let Some(remote_params) = remote_params {
+                                error!(
+                                    "{} | bob_params were previously set to: {}",
+                                    swap_id.bright_blue_italic(),
+                                    remote_params
+                                );
+                            } else {
+                                trace!("Setting bob params: {}", reveal);
+                                bob_commit.verify_with_reveal(&CommitmentEngine, reveal.clone())?;
+                                let remote_params_candidate: BobParameters<BtcXmr> = reveal.into();
+                                let proof_verification = key_manager.verify_proof(
+                                    &remote_params_candidate.spend,
+                                    &remote_params_candidate.adaptor,
+                                    bob_proof.proof.clone(), /* remote_params_candidate.proof.
+                                                              * clone(), */
+                                );
+
+                                if proof_verification.is_err() {
+                                    error!("{} | DLEQ proof invalid", swap_id.bright_blue_italic());
+                                    return Ok(());
+                                }
+                                *remote_params = Some(remote_params_candidate);
+                                // if we're maker, send Ctl RevealProof to counterparty
+                                if pub_offer.swap_role(&TradeRole::Maker) == SwapRole::Alice {
+                                    senders.send_to(
+                                        ServiceBus::Ctl,
+                                        ServiceId::Wallet,
+                                        // TODO: (maybe) what if the message responded to is not
+                                        // sent by swapd?
+                                        source,
+                                        Request::Protocol(Msg::Reveal(
+                                            (swap_id, local_proof.clone()).into(),
+                                        )),
+                                    )?;
+                                }
+                                // nothing to do yet, waiting for Msg
+                                // CoreArbitratingSetup to proceed
+                            }
+                        } else {
+                            error!(
+                                "{} | only Some(Wallet::Alice)",
+                                swap_id.bright_blue_italic(),
+                            );
+                        }
+                        return Ok(());
+                    }
+                    // getting parameters from counterparty alice routed through
+                    // swapd, thus I'm Bob on this swap: Bob can proceed
+                    Reveal::AliceParameters(reveal) => {
+                        if let Some(Wallet::Bob(BobState {
+                            bob,
+                            local_params,
+                            local_proof,
+                            key_manager,
+                            pub_offer,
+                            funding_tx: Some(funding_tx),
+                            remote_params,                    // None
+                            remote_proof: Some(remote_proof), // Some
+                            core_arb_setup,                   // None
+                            ..
+                        })) = self.wallets.get_mut(&swap_id)
+                        {
+                            // set wallet params
+                            if remote_params.is_some() {
+                                error!(
+                                    "{} | Alice params already set",
+                                    swap_id.bright_blue_italic(),
+                                );
+                                return Ok(());
+                            }
+
+                            trace!("Setting remote params: {}", reveal);
+                            let remote_params_candidate: AliceParameters<BtcXmr> = reveal.into();
+                            let proof_verification = key_manager.verify_proof(
+                                &remote_params_candidate.spend,
+                                &remote_params_candidate.adaptor,
+                                remote_proof.proof.clone(),
+                            );
+
+                            if proof_verification.is_err() {
+                                error!("{} | DLEQ proof invalid", swap_id.bright_blue_italic());
+                                return Ok(());
+                            }
+                            *remote_params = Some(remote_params_candidate);
+
+                            // if we're maker, send Ctl RevealProof to counterparty
+                            if pub_offer.swap_role(&TradeRole::Maker) == SwapRole::Bob {
+                                senders.send_to(
+                                    ServiceBus::Ctl,
+                                    ServiceId::Wallet,
+                                    // TODO: (maybe) what if the message responded to is not sent
+                                    // by swapd?
+                                    source.clone(),
+                                    Request::Protocol(Msg::Reveal(
+                                        (swap_id, local_proof.clone()).into(),
+                                    )),
+                                )?;
+                            }
+
+                            // set wallet core_arb_txs
+                            if core_arb_setup.is_some() {
+                                error!(
+                                    "{} | Core Arb Txs already set",
+                                    swap_id.bright_blue_italic(),
+                                );
+                                return Ok(());
+                            }
+                            if !funding_tx.was_seen() {
+                                error!("{} | Funding not yet seen", swap_id.bright_blue_italic());
+                                return Ok(());
+                            }
+                            // FIXME should be set before
+                            let core_arbitrating_txs = bob.core_arbitrating_transactions(
+                                &remote_params.clone().expect("alice_params set above"),
+                                local_params,
+                                funding_tx.clone(),
+                                pub_offer,
+                            )?;
+                            let cosign_arbitrating_cancel =
+                                bob.cosign_arbitrating_cancel(key_manager, &core_arbitrating_txs)?;
+                            *core_arb_setup = Some(CoreArbitratingSetup::<BtcXmr>::from((
+                                swap_id,
+                                core_arbitrating_txs,
+                                cosign_arbitrating_cancel,
+                            )));
+                            let core_arb_setup_msg =
+                                Msg::CoreArbitratingSetup(core_arb_setup.clone().unwrap());
+                            self.send_ctl(senders, source, Request::Protocol(core_arb_setup_msg))?;
+                        } else {
+                            error!("{} | only Some(Wallet::Bob)", swap_id.bright_blue_italic());
+                        }
+                    }
+                    Reveal::Proof(reveal) => {
+                        match self.wallets.get_mut(&swap_id) {
+                            Some(Wallet::Alice(AliceState {
+                                remote_proof, // Should be Some() at this stage
+                                ..
+                            })) => {
+                                *remote_proof = Some(Proof {
+                                    proof: reveal.proof,
+                                });
+                                todo!()
+                            }
+                            Some(Wallet::Bob(BobState {
+                                key_manager,
+                                remote_params,
+                                remote_proof,
+                                ..
+                            })) => {
+                                match (remote_params, remote_proof.clone()) {
+                                    (None, None) => {
+                                        *remote_proof = Some(Proof {
+                                            proof: reveal.proof,
+                                        });
+                                    }
+                                    (Some(params), None) => {
+                                        let verification_result = key_manager.verify_proof(
+                                            &params.spend,
+                                            &params.adaptor,
+                                            reveal.proof.clone(),
+                                        );
+                                        if verification_result.is_ok() {
+                                            *remote_proof = Some(Proof {
+                                                proof: reveal.proof,
+                                            });
+                                        } else {
+                                            error!(
+                                                "{} | DLEQ proof invalid",
+                                                swap_id.bright_blue_italic(),
+                                            )
+                                        }
+                                    }
+                                    (None, Some(_)) => {
+                                        error!(
+                                            "{} | already set DLEQ proof",
+                                            swap_id.bright_blue_italic(),
+                                        )
+                                    }
+                                    (Some(_), Some(_)) => {
+                                        error!(
+                                            "{} | already set DLEQ proof and parameters",
+                                            swap_id.bright_blue_italic(),
+                                        )
+                                    }
+                                };
+                            }
+                            None => {
+                                error!("{} | only Some(Wallet::_)", swap_id.bright_blue_italic());
+                            }
+                        }
+                    }
+                }
+            }
+            Request::Protocol(Msg::RefundProcedureSignatures(RefundProcedureSignatures {
+                swap_id: _,
+                cancel_sig: alice_cancel_sig,
+                refund_adaptor_sig,
+            })) => {
+                let swap_id = get_swap_id(&source)?;
+                let my_id = self.identity();
+                // let j = self.wallets.get(&swap_id).unwrap();
+                // let k: Result<BobState, _> = (*j).try_into();
+                let mut writer = vec![];
+                // TODO: checkpointing before .get_mut call for now, but should do this later
+                if let Some(Wallet::Bob(state)) = self.wallets.get(&swap_id) {
+                    let state_size = state.consensus_encode(&mut writer);
+                    // info!("writer content: {:?}", writer);
+                    info!("state size: {:?}", state_size);
+                    let path = std::env::current_dir().unwrap();
+                    let mut state = CheckpointGetSet::new(path.to_path_buf());
+                    state.set_state(&swap_id, &writer);
+                } else {
+                    error!(
+                        "{:#} | Unknown wallet and swap_id {:#}",
+                        swap_id.bright_blue_italic(),
+                        swap_id.bright_white_bold(),
+                    );
+                };
+                if let Some(Wallet::Bob(BobState {
+                    bob,
+                    local_params,
+                    key_manager,
+                    pub_offer,
+                    remote_params: Some(remote_params),
+                    core_arb_setup: Some(core_arb_setup),
+                    adaptor_buy, // None
+                    ..
+                })) = self.wallets.get_mut(&swap_id)
+                {
+                    let core_arb_txs = &(core_arb_setup.clone()).into();
+                    let signed_adaptor_refund = &SignedAdaptorRefund { refund_adaptor_sig };
+
+                    bob.validate_adaptor_refund(
+                        key_manager,
+                        remote_params,
+                        local_params,
+                        core_arb_txs,
+                        signed_adaptor_refund,
+                    )?;
+
+                    // *refund_sigs = Some(refund_proc_sigs);
+                    let signed_arb_lock = bob.sign_arbitrating_lock(key_manager, core_arb_txs)?;
+                    let sig = signed_arb_lock.lock_sig;
+                    let tx = core_arb_setup.lock.clone();
+                    let mut lock_tx = LockTx::from_partial(tx);
+                    let lock_pubkey = key_manager.get_pubkey(ArbitratingKeyId::Lock)?;
+                    lock_tx.add_witness(lock_pubkey, sig)?;
+                    let finalized_lock_tx: bitcoin::Transaction =
+                        Broadcastable::<BitcoinSegwitV0>::finalize_and_extract(&mut lock_tx)?;
+
+                    // TODO: checkpoint here
+                    // {
+                    //     struct RecoveryState {
+                    //         swap_index: u32,
+                    //         params: (AliceParameters<BtcXmr>, BobParameters<BtcXmr>),
+                    //         txs: (
+                    //             PartiallySignedTransaction,
+                    //             PartiallySignedTransaction,
+                    //             bitcoin::Transaction,
+                    //         ),
+                    //     }
+
+                    //     let state = RecoveryState {
+                    //         swap_index: key_manager.get_swap_index(),
+                    //         params: (remote_params.clone(), local_params.clone()),
+                    //         txs: (
+                    //             core_arb_txs.lock.clone(),
+                    //             core_arb_txs.cancel.clone(),
+                    //             finalized_lock_tx.clone(),
+                    //         ),
+                    //     };
+
+                    //     {
+                    //         let _recovered_key_manager =
+                    //             KeyManager::new(self.node_secrets.wallet_seed, state.swap_index);
+                    //     }
+                    // }
+
+                    senders.send_to(
+                        ServiceBus::Ctl,
+                        my_id.clone(),
+                        source.clone(), // destination swapd
+                        Request::Tx(request::Tx::Lock(finalized_lock_tx)),
+                    )?;
+
+                    {
+                        if adaptor_buy.is_some() {
+                            error!("{} | adaptor_buy already set", swap_id.bright_blue_italic());
+                            return Ok(());
+                        }
+                        *adaptor_buy = Some(bob.sign_adaptor_buy(
+                            key_manager,
+                            remote_params,
+                            local_params,
+                            core_arb_txs,
+                            pub_offer,
+                        )?);
+                        let buy_proc_sig = BuyProcedureSignature::<BtcXmr>::from((
+                            swap_id,
+                            adaptor_buy.clone().unwrap(),
+                        ));
+                        let buy_proc_sig = Msg::BuyProcedureSignature(buy_proc_sig);
+                        senders.send_to(
+                            ServiceBus::Ctl,
+                            my_id.clone(),
+                            source.clone(), // destination swapd
+                            Request::Protocol(buy_proc_sig),
+                        )?;
+                    }
+
+                    {
+                        // cancel
+                        let tx = core_arb_setup.cancel.clone();
+                        let mut cancel_tx = CancelTx::from_partial(tx);
+                        cancel_tx.add_witness(remote_params.cancel, alice_cancel_sig)?;
+                        cancel_tx.add_witness(local_params.cancel, core_arb_setup.cancel_sig)?;
+                        let finalized_cancel_tx =
+                            Broadcastable::<BitcoinSegwitV0>::finalize_and_extract(&mut cancel_tx)?;
+                        senders.send_to(
+                            ServiceBus::Ctl,
+                            my_id.clone(),
+                            source.clone(), // destination swapd
+                            Request::Tx(Tx::Cancel(finalized_cancel_tx)),
+                        )?;
+                    }
+                    {
+                        // refund
+                        let FullySignedRefund {
+                            refund_sig,
+                            refund_adapted_sig,
+                        } = bob.fully_sign_refund(
+                            key_manager,
+                            core_arb_txs.clone(),
+                            signed_adaptor_refund,
+                        )?;
+                        let tx = core_arb_setup.refund.clone();
+                        let mut refund_tx = RefundTx::from_partial(tx);
+
+                        refund_tx.add_witness(local_params.refund, refund_sig)?;
+                        refund_tx.add_witness(remote_params.refund, refund_adapted_sig)?;
+                        let final_refund_tx =
+                            Broadcastable::<BitcoinSegwitV0>::finalize_and_extract(&mut refund_tx)?;
+                        senders.send_to(
+                            ServiceBus::Ctl,
+                            my_id,
+                            source, // destination swapd
+                            Request::Tx(Tx::Refund(final_refund_tx)),
+                        )?;
+                    }
+                } else {
+                    error!(
+                        "{:#} | Unknown wallet and swap_id {:#}",
+                        swap_id.bright_blue_italic(),
+                        swap_id.bright_white_bold(),
+                    );
+                }
+            }
+            Request::Protocol(Msg::CoreArbitratingSetup(core_arbitrating_setup)) => {
+                let swap_id = get_swap_id(&source)?;
+                let my_id = self.identity();
+                if let Some(Wallet::Alice(AliceState {
+                    alice,
+                    local_params,
+                    key_manager,
+                    pub_offer,
+                    remote_params: Some(bob_parameters),
+                    core_arb_setup,         // None
+                    alice_cancel_signature, // None
+                    adaptor_refund,         // None
+                    ..
+                })) = self.wallets.get_mut(&swap_id)
+                {
+                    if core_arb_setup.is_some() {
+                        error!(
+                            "{} | core_arb_txs already set for alice",
+                            swap_id.bright_blue_italic(),
+                        );
+                        return Ok(());
+                    }
+                    if alice_cancel_signature.is_some() {
+                        error!(
+                            "{} | alice_cancel_sig already set for alice",
+                            swap_id.bright_blue_italic(),
+                        );
+                        return Ok(());
+                    }
+                    *core_arb_setup = Some(core_arbitrating_setup.clone());
+                    let core_arb_txs: CoreArbitratingTransactions<Bitcoin<SegwitV0>> =
+                        core_arbitrating_setup.into();
+                    let signed_adaptor_refund = alice.sign_adaptor_refund(
+                        key_manager,
+                        local_params,
+                        bob_parameters,
+                        &core_arb_txs,
+                        pub_offer,
+                    )?;
+                    *adaptor_refund = Some(signed_adaptor_refund.clone());
+                    let cosigned_arb_cancel = alice.cosign_arbitrating_cancel(
+                        key_manager,
+                        local_params,
+                        bob_parameters,
+                        &core_arb_txs,
+                        pub_offer,
+                    )?;
+                    let refund_proc_signatures = RefundProcedureSignatures::from((
+                        swap_id,
+                        cosigned_arb_cancel,
+                        signed_adaptor_refund,
+                    ));
+                    *alice_cancel_signature = Some(refund_proc_signatures.cancel_sig);
+                    // NOTE: if this is the right spot for the Ctl message, it should also be replayed upon state recovery
+                    {
+                        // cancel
+                        let partial_cancel_tx = core_arb_setup.as_ref().unwrap().cancel.clone();
+                        let mut cancel_tx = CancelTx::from_partial(partial_cancel_tx);
+                        cancel_tx
+                            .add_witness(local_params.cancel, alice_cancel_signature.unwrap())?;
+                        cancel_tx.add_witness(
+                            bob_parameters.cancel,
+                            core_arb_setup.as_ref().unwrap().cancel_sig,
+                        )?;
+                        let finalized_cancel_tx =
+                            Broadcastable::<BitcoinSegwitV0>::finalize_and_extract(&mut cancel_tx)?;
+                        senders.send_to(
+                            ServiceBus::Ctl,
+                            my_id.clone(),
+                            source.clone(), // destination swapd
+                            Request::Tx(Tx::Cancel(finalized_cancel_tx)),
+                        )?;
+                    }
+                    // NOTE: if this is the right spot for the Ctl message, it should also be replayed upon state recovery
+                    {
+                        let FullySignedPunish { punish, punish_sig } = alice.fully_sign_punish(
+                            key_manager,
+                            local_params,
+                            bob_parameters,
+                            &core_arb_txs,
+                            pub_offer,
+                        )?;
+
+                        let mut punish_tx = PunishTx::from_partial(punish);
+                        punish_tx.add_witness(local_params.punish, punish_sig)?;
+                        let tx =
+                            Broadcastable::<BitcoinSegwitV0>::finalize_and_extract(&mut punish_tx)?;
+                        senders.send_to(
+                            ServiceBus::Ctl,
+                            my_id.clone(),
+                            source.clone(),
+                            Request::Tx(Tx::Punish(tx)),
+                        )?;
+                    }
+
+                    // struct RecoveryState {
+                    //     swap_index: u32,
+                    //     params: (AliceParameters<BtcXmr>, BobParameters<BtcXmr>),
+                    //     txs:
+                    // }
+                    let state = (
+                        // swap_index
+                        // key_manager.get_swap_index(),
+                        // params
+                        (bob_parameters.clone(), local_params.clone()),
+                        // txs
+                        (
+                            core_arb_txs.lock.clone(),
+                            core_arb_txs.cancel.clone(),
+                            // finalized_lock_tx.clone(),
+                            // tx
+                        ),
+                    );
+
+                    let refund_proc_signatures =
+                        Msg::RefundProcedureSignatures(refund_proc_signatures);
+
+                    senders.send_to(
+                        ServiceBus::Ctl,
+                        my_id,
+                        source,
+                        Request::Protocol(refund_proc_signatures),
+                    )?
+                } else {
+                    error!(
+                        "{} | only Some(Wallet::Alice)",
+                        swap_id.bright_blue_italic(),
+                    );
+                }
+            }
+            Request::Protocol(Msg::BuyProcedureSignature(BuyProcedureSignature {
+                swap_id,
+                buy,
+                buy_adaptor_sig: buy_encrypted_sig,
+            })) => {
+                trace!("wallet received buyproceduresignature");
+                let signed_adaptor_buy = SignedAdaptorBuy {
+                    buy: buy.clone(),
+                    buy_adaptor_sig: buy_encrypted_sig,
+                };
+                let id = self.identity();
+                if let Some(Wallet::Alice(AliceState {
+                    alice,
+                    local_params: alice_params,
+                    key_manager,
+                    pub_offer,
+                    remote_params: Some(bob_parameters),
+                    core_arb_setup: Some(core_arb_setup),
+                    alice_cancel_signature: Some(alice_cancel_sig),
+                    ..
+                })) = self.wallets.get_mut(&swap_id)
+                {
+                    let core_arb_txs = &(core_arb_setup.clone()).into();
+
+                    // cancel
+                    let tx = core_arb_setup.cancel.clone();
+                    let mut cancel_tx = CancelTx::from_partial(tx);
+                    cancel_tx.add_witness(alice_params.cancel, *alice_cancel_sig)?;
+                    cancel_tx.add_witness(bob_parameters.cancel, core_arb_setup.cancel_sig)?;
+                    let finalized_cancel_tx =
+                        Broadcastable::<BitcoinSegwitV0>::finalize_and_extract(&mut cancel_tx)?;
+                    senders.send_to(
+                        ServiceBus::Ctl,
+                        id.clone(),
+                        source.clone(), // destination swapd
+                        Request::Tx(Tx::Cancel(finalized_cancel_tx)),
+                    )?;
+
+                    // buy
+                    let mut buy_tx = BuyTx::from_partial(buy);
+                    alice.validate_adaptor_buy(
+                        key_manager,
+                        alice_params,
+                        bob_parameters,
+                        core_arb_txs,
+                        pub_offer,
+                        &signed_adaptor_buy,
+                    )?;
+                    let FullySignedBuy {
+                        buy_sig,
+                        buy_adapted_sig: buy_decrypted_sig,
+                    } = alice.fully_sign_buy(
+                        key_manager,
+                        alice_params,
+                        bob_parameters,
+                        core_arb_txs,
+                        pub_offer,
+                        &signed_adaptor_buy,
+                    )?;
+                    buy_tx.add_witness(key_manager.get_pubkey(ArbitratingKeyId::Buy)?, buy_sig)?;
+                    buy_tx.add_witness(bob_parameters.buy, buy_decrypted_sig)?;
+                    let tx = Broadcastable::<BitcoinSegwitV0>::finalize_and_extract(&mut buy_tx)?;
+                    trace!("wallet sends fullysignedbuy");
+                    senders.send_to(ServiceBus::Ctl, id, source, Request::Tx(Tx::Buy(tx)))?;
+
+                    // buy_adaptor_sig
+                } else {
+                    error!(
+                        "{} | could not get alice's wallet",
+                        swap_id.bright_blue_italic(),
+                    )
+                }
+            }
+            req => {
+                error!(
+                    "MSG RPC can only be used for forwarding farcaster protocol messages, found {:?}, {:#?}",
+                    req.get_type(), req
+                )
+            }
+        }
+        Ok(())
+    }
+
+    fn handle_rpc_ctl(
+        &mut self,
+        senders: &mut Senders,
+        source: ServiceId,
+        request: Request,
+    ) -> Result<(), Error> {
+        match request {
+            Request::Hello => match &source {
+                ServiceId::Swap(swap_id) => {
+                    if let Some(option_req) = self.swaps.get_mut(swap_id) {
+                        trace!("Known swapd, you launched it");
+                        if let Some(req) = option_req {
+                            let request = req.clone();
+                            *option_req = None;
+                            self.send_ctl(senders, source, request)?
+                        }
+                    }
+                }
+                source => {
+                    debug!("Received Hello from {}", source);
+                }
+            },
+            Request::TakeOffer(request::PubOffer {
+                public_offer,
+                external_address,
+                internal_address,
+                peer_secret_key: None,
+            }) if source == ServiceId::Farcasterd => {
+                let PublicOffer { offer, .. } = public_offer.clone();
+
+                let swap_id: SwapId = SwapId::random();
+                self.swaps.insert(swap_id, None);
+                self.xmr_addrs
+                    .insert(swap_id, monero::Address::from_str(&internal_address)?);
+
+                // since we're takers, we are on the other side of the trade
+                let taker_role = offer.maker_role.other();
+                let wallet_index = self.node_secrets.increment_wallet_counter();
+                let mut key_manager = KeyManager::new(self.node_secrets.wallet_seed, wallet_index)?;
+                match taker_role {
+                    SwapRole::Bob => {
+                        let bob: Bob<BtcXmr> = Bob::new(external_address, FeePriority::Low);
+                        let (local_params, local_proof) =
+                            bob.generate_parameters(&mut key_manager, &public_offer)?;
+                        let funding = create_funding(&mut key_manager, offer.network)?;
+                        let funding_addr = funding.get_address()?;
+                        let funding_fee = bitcoin::Amount::from_sat(150);
+                        let funding_amount = offer.arbitrating_amount + funding_fee;
+                        debug!(
+                            "{} | Send {} to {}",
+                            swap_id.bright_blue_italic(),
+                            funding_amount.to_string().bright_green_bold(),
+                            funding_addr.addr(),
+                        );
+                        debug!(
+                            "{} | Loading {}",
+                            swap_id.bright_blue_italic(),
+                            "Wallet::Bob".bright_yellow()
+                        );
+                        if self.wallets.get(&swap_id).is_none() {
+                            let local_wallet = BobState::new(
+                                bob,
+                                local_params.clone(),
+                                local_proof,
+                                key_manager,
+                                public_offer.clone(),
+                                Some(funding),
+                                None,
+                            );
+                            self.wallets.insert(swap_id, Wallet::Bob(local_wallet));
+                        } else {
+                            error!("{} | Wallet already exists", swap_id.bright_blue_italic());
+                            return Ok(());
+                        }
+                        let launch_swap = LaunchSwap {
+                            local_trade_role: TradeRole::Taker,
+                            public_offer,
+                            local_params: Params::Bob(local_params),
+                            swap_id,
+                            remote_commit: None,
+                            funding_address: Some(funding_addr),
+                        };
+                        senders.send_to(
+                            ServiceBus::Ctl,
+                            source,
+                            ServiceId::Farcasterd,
+                            Request::LaunchSwap(launch_swap),
+                        )?;
+                    }
+                    SwapRole::Alice => {
+                        let alice: Alice<BtcXmr> = Alice::new(external_address, FeePriority::Low);
+                        let (local_params, local_proof) =
+                            alice.generate_parameters(&mut key_manager, &public_offer)?;
+                        let wallet_seed = self.node_secrets.wallet_seed;
+                        let key_manager = KeyManager::new(wallet_seed, wallet_index)?;
+
+                        if self.wallets.get(&swap_id).is_none() {
+                            // TODO instead of storing in state, start building
+                            // requests and store the state in there directly
+                            debug!(
+                                "{} | Loading Alice Taker's Wallet",
+                                swap_id.bright_blue_italic()
+                            );
+                            let wallet = AliceState::new(
+                                alice,
+                                local_params.clone(),
+                                local_proof,
+                                key_manager,
+                                public_offer.clone(),
+                                None,
+                            );
+                            self.wallets.insert(swap_id, Wallet::Alice(wallet));
+                        } else {
+                            error!("{} | Wallet already exists", swap_id.bright_blue_italic());
+                        }
+                        let launch_swap = LaunchSwap {
+                            local_trade_role: TradeRole::Taker,
+                            public_offer,
+                            local_params: Params::Alice(local_params),
+                            swap_id,
+                            remote_commit: None,
+                            funding_address: None,
+                        };
+                        senders.send_to(
+                            ServiceBus::Ctl,
+                            source,
+                            ServiceId::Farcasterd,
+                            Request::LaunchSwap(launch_swap),
+                        )?;
+                    }
+                };
+            }
+            Request::Tx(Tx::Funding(tx)) => {
+                let swap_id = get_swap_id(&source)?;
+                if let Some(Wallet::Bob(BobState {
+                    funding_tx: Some(funding),
+                    ..
+                })) = self.wallets.get_mut(&swap_id)
+                {
+                    if funding.was_seen() {
+                        warn!(
+                            "{} | funding was previously updated, ignoring",
+                            swap_id.bright_blue_italic(),
+                        );
+                        return Ok(());
+                    }
+                    funding_update(funding, tx)?;
+                    debug!(
+                        "{} | bob's wallet informs swapd that funding was successfully updated",
+                        swap_id.bright_blue_italic(),
+                    );
+                    senders.send_to(
+                        ServiceBus::Ctl,
+                        ServiceId::Wallet,
+                        // TODO: (maybe) what if this message responded to is not sent by swapd?
+                        source,
+                        Request::FundingUpdated,
+                    )?;
+                }
+            }
+            Request::Tx(Tx::Buy(buy_tx)) => {
+                let swap_id = get_swap_id(&source)?;
+                if let Some(Wallet::Bob(BobState {
+                    bob,
+                    local_params,
+                    key_manager,
+                    remote_params: Some(alice_params),
+                    core_arb_setup: Some(_),
+                    adaptor_buy: Some(adaptor_buy),
+                    pub_offer,
+                    ..
+                })) = self.wallets.get_mut(&swap_id)
+                {
+                    let sk_a_btc = bob.recover_accordant_key(
+                        key_manager,
+                        alice_params,
+                        adaptor_buy.clone(),
+                        buy_tx,
+                    );
+                    let mut sk_a_btc_buf: Vec<u8> = (*sk_a_btc.as_ref()).into();
+                    sk_a_btc_buf.reverse();
+                    let sk_a = monero::PrivateKey::from_slice(sk_a_btc_buf.as_ref())
+                        .expect("Valid Monero Private Key");
+                    info!(
+                        "{} | Extracted monero key from Buy tx: {}",
+                        swap_id.bright_blue_italic(),
+                        sk_a.bright_white_italic()
+                    );
+                    let sk_b = key_manager.get_or_derive_monero_spend_key()?;
+                    let spend = sk_a + sk_b;
+                    info!(
+                        "{} | Full secret monero spending key: {}",
+                        swap_id.bright_blue_italic(),
+                        spend.bright_green_bold()
+                    );
+                    let view_key_alice = *alice_params
+                        .accordant_shared_keys
+                        .clone()
+                        .into_iter()
+                        .find(|vk| vk.tag() == &SharedKeyId::new(SHARED_VIEW_KEY_ID))
+                        .unwrap()
+                        .elem();
+
+                    let view_key_bob = *local_params
+                        .accordant_shared_keys
+                        .clone()
+                        .into_iter()
+                        .find(|vk| vk.tag() == &SharedKeyId::new(SHARED_VIEW_KEY_ID))
+                        .unwrap()
+                        .elem();
+                    let view = view_key_alice + view_key_bob;
+                    info!(
+                        "{} | Full secret monero view key: {}",
+                        swap_id.bright_blue_italic(),
+                        view.bright_green_bold()
+                    );
+                    let network = pub_offer.offer.network.into();
+                    let keypair = monero::KeyPair { view, spend };
+                    let corresponding_address = monero::Address::from_keypair(network, &keypair);
+                    info!(
+                        "{} | Corresponding address: {}",
+                        swap_id.bright_blue_italic(),
+                        corresponding_address
+                    );
+                    let address = self
+                        .xmr_addrs
+                        .remove(&get_swap_id(&source)?)
+                        .expect("checked at the start of a swap");
+                    let sweep_keys = SweepXmrAddress {
+                        view_key: view,
+                        spend_key: spend,
+                        address,
+                        minimum_balance: pub_offer.offer.accordant_amount,
+                    };
+                    senders.send_to(
+                        ServiceBus::Ctl,
+                        self.identity(),
+                        source,
+                        Request::SweepXmrAddress(sweep_keys),
+                    )?;
+                }
+            }
+            Request::Tx(Tx::Refund(refund_tx)) => {
+                let swap_id = get_swap_id(&source)?;
+                if let Some(Wallet::Alice(AliceState {
+                    alice,
+                    local_params,
+                    key_manager,
+                    remote_params: Some(bob_params), //remote
+                    remote_proof: Some(_),
+                    adaptor_refund: Some(adaptor_refund),
+                    pub_offer,
+                    ..
+                })) = self.wallets.get_mut(&get_swap_id(&source)?)
+                {
+                    let sk_b_btc = alice.recover_accordant_key(
+                        key_manager,
+                        bob_params,
+                        adaptor_refund.clone(),
+                        refund_tx,
+                    );
+                    let mut sk_b_btc_buf: Vec<u8> = (*sk_b_btc.as_ref()).into();
+                    sk_b_btc_buf.reverse();
+                    let sk_b = monero::PrivateKey::from_slice(sk_b_btc_buf.as_ref())
+                        .expect("Valid Monero Private Key");
+                    info!(
+                        "{} | Extracted monero key from Refund tx: {}",
+                        swap_id.bright_blue_italic(),
+                        sk_b.bright_white_italic()
+                    );
+
+                    let sk_a = key_manager.get_or_derive_monero_spend_key()?;
+                    let spend = sk_a + sk_b;
+                    info!(
+                        "{} | Full secret monero spending key: {}",
+                        swap_id.bright_blue_italic(),
+                        spend.bright_green_bold()
+                    );
+
+                    let view_key_bob = *bob_params
+                        .accordant_shared_keys
+                        .clone()
+                        .into_iter()
+                        .find(|vk| vk.tag() == &SharedKeyId::new(SHARED_VIEW_KEY_ID))
+                        .unwrap()
+                        .elem();
+
+                    let view_key_alice = *local_params
+                        .accordant_shared_keys
+                        .clone()
+                        .into_iter()
+                        .find(|vk| vk.tag() == &SharedKeyId::new(SHARED_VIEW_KEY_ID))
+                        .unwrap()
+                        .elem();
+                    let view = view_key_alice + view_key_bob;
+                    info!(
+                        "{} | Full secret monero view key: {}",
+                        swap_id.bright_blue_italic(),
+                        view.bright_green_bold()
+                    );
+                    let network = pub_offer.offer.network.into();
+                    let keypair = monero::KeyPair { view, spend };
+                    let corresponding_address = monero::Address::from_keypair(network, &keypair);
+                    info!(
+                        "{} | Corresponding address: {}",
+                        swap_id.bright_blue_italic(),
+                        corresponding_address
+                    );
+                    let address = self
+                        .xmr_addrs
+                        .remove(&get_swap_id(&source)?)
+                        .expect("checked at the start of a swap");
+                    let sweep_keys = SweepXmrAddress {
+                        view_key: view,
+                        spend_key: spend,
+                        address,
+                        minimum_balance: pub_offer.offer.accordant_amount,
+                    };
+                    senders.send_to(
+                        ServiceBus::Ctl,
+                        self.identity(),
+                        source,
+                        Request::SweepXmrAddress(sweep_keys),
+                    )?;
+                }
+            }
+            Request::GetKeys(request::GetKeys(wallet_token, request_id)) => {
+                if wallet_token != self.wallet_token {
+                    return Err(Error::InvalidToken);
+                }
+                trace!("sent Secret request to farcasterd");
+                // let mut rng = thread_rng();
+                // let sk = SecretKey::new(&mut rng);
+                // let pk = PublicKey::from_secret_key(&Secp256k1::new(), &sk);
+                // self.send_farcasterd(senders, Request::Keys(Keys(sk, pk, request_id)))?
+                self.send_farcasterd(
+                    senders,
+                    Request::Keys(Keys(
+                        self.node_secrets.peerd_secret_key,
+                        self.node_secrets.node_id(),
+                        request_id,
+                    )),
+                )?
+            }
+            Request::SwapOutcome(success) => {
+                let swap_id = get_swap_id(&source)?;
+                let success = match success {
+                    request::Outcome::Buy => success.bright_green_bold(),
+                    _ => success.err(),
+                };
+                info!(
+                    "{} | {} in swap {}, cleaning up data",
+                    swap_id.bright_blue_italic(),
+                    &success,
+                    &swap_id.bright_blue_italic(),
+                );
+                self.clean_up_after_swap(&swap_id);
+            }
+
+            _ => {
+                error!(
+                    "Request {:?} is not supported by the CTL interface",
+                    request
+                );
+            }
+        }
+        Ok(())
+    }
+}
+
+pub fn create_funding(
+    key_manager: &mut KeyManager,
+    net: farcaster_core::blockchain::Network,
+) -> Result<FundingTx, Error> {
+    let pk = key_manager.get_pubkey(ArbitratingKeyId::Lock)?;
+    Ok(FundingTx::initialize(pk, net)?)
+}
+
+pub fn funding_update(funding: &mut FundingTx, tx: bitcoin::Transaction) -> Result<(), Error> {
+    let funding_bundle = FundingTransaction::<Bitcoin<SegwitV0>> { funding: tx };
+    Ok(funding.update(funding_bundle.funding)?)
+}
+
+struct CheckpointGetSet(lmdb::Environment);
+
+impl CheckpointGetSet {
+    fn new(path: PathBuf) -> CheckpointGetSet {
+        let env = lmdb::Environment::new().open(&path).unwrap();
+        env.create_db(None, lmdb::DatabaseFlags::empty()).unwrap();
+        CheckpointGetSet(env)
+    }
+
+    fn set_state(&mut self, key: &SwapId, val: &[u8]) {
+        let db = self.0.open_db(None).unwrap();
+        let mut tx = self.0.begin_rw_txn().unwrap();
+        if !tx.get(db, &key).is_err() {
+            tx.del(db, &key, None).unwrap();
+        }
+        tx.put(db, &key, &val, lmdb::WriteFlags::empty()).unwrap();
+        tx.commit().unwrap();
+    }
+
+    fn get_state(&mut self, key: &SwapId) -> Vec<u8> {
+        let db = self.0.open_db(None).unwrap();
+        let tx = self.0.begin_ro_txn().unwrap();
+        let val: Vec<u8> = tx.get(db, &key).unwrap().into();
+        tx.abort();
+        val
+    }
+}
+
+#[test]
+fn test_lmdb_state() {
+    let val1 = vec![0, 1];
+    let val2 = vec![2, 3, 4, 5];
+    let key1 = SwapId::random();
+    let key2 = SwapId::random();
+    let path = std::env::current_dir().unwrap();
+    let mut state = CheckpointGetSet::new(path.to_path_buf());
+    state.set_state(&key1, &val1);
+    let res = state.get_state(&key1);
+    assert_eq!(val1, res);
+    state.set_state(&key1, &val2);
+    let res = state.get_state(&key1);
+    assert_eq!(val2, res);
+    state.set_state(&key2, &val2);
+    let res = state.get_state(&key2);
+    assert_eq!(val2, res);
+}

From e50333d243f9274483b0e3beb3d20633fc8ed6d2 Mon Sep 17 00:00:00 2001
From: Robert Hambrock <roberthambrock@gmail.com>
Date: Wed, 11 May 2022 19:14:25 +0200
Subject: [PATCH 12/32] prune down to minimal template

---
 src/checkpointd/opts.rs    |  135 +---
 src/checkpointd/runtime.rs | 1334 ------------------------------------
 2 files changed, 3 insertions(+), 1466 deletions(-)

diff --git a/src/checkpointd/opts.rs b/src/checkpointd/opts.rs
index ba23cff14..149ea4419 100644
--- a/src/checkpointd/opts.rs
+++ b/src/checkpointd/opts.rs
@@ -24,24 +24,16 @@ use bitcoin::secp256k1::{
 };
 use strict_encoding::{StrictDecode, StrictEncode};
 
-/// Walletd daemon; part of Farcaster Node
+/// checkpoint daemon; part of Farcaster Node
 #[derive(Clap, Clone, PartialEq, Eq, Debug)]
 #[clap(
-    name = "walletd",
-    bin_name = "walletd",
+    name = "checkpointd",
+    bin_name = "checkpointd",
     author,
     version,
     setting = AppSettings::ColoredHelp
 )]
 pub struct Opts {
-    /// Node key configuration
-    #[clap(flatten)]
-    pub key_opts: KeyOpts,
-
-    /// Walletd token
-    #[clap(flatten)]
-    pub wallet_token: TokenString,
-
     /// These params can be read also from the configuration file, not just
     /// command-line args or environment variables
     #[clap(flatten)]
@@ -51,126 +43,5 @@ pub struct Opts {
 impl Opts {
     pub fn process(&mut self) {
         self.shared.process();
-        self.key_opts.process(&self.shared);
-    }
-}
-
-/// Node key configuration
-#[derive(Clap, Clone, PartialEq, Eq, Debug)]
-pub struct KeyOpts {
-    /// Node key file
-    ///
-    /// Location for the file containing node private Secp256k1 key
-    /// (unencrypted)
-    #[clap(
-        short,
-        long,
-        env = "FARCASTER_KEY_FILE",
-        default_value = FARCASTER_KEY_FILE,
-        value_hint = ValueHint::FilePath
-    )]
-    pub key_file: String,
-}
-
-#[derive(StrictEncode, StrictDecode, Clone, PartialEq, Eq, Debug)]
-pub struct Counter(pub u32);
-impl Counter {
-    fn increment(&mut self) -> u32 {
-        self.0 += 1;
-        self.0
-    }
-}
-
-/// Hold secret keys and seeds
-#[derive(StrictEncode, StrictDecode, Clone, PartialEq, Eq, Debug)]
-pub struct NodeSecrets {
-    /// local key file
-    pub key_file: String,
-    /// local node private information
-    pub peerd_secret_key: SecretKey,
-    /// seed used for deriving addresses
-    pub wallet_seed: [u8; 32],
-    /// wallet last derivation index
-    pub wallet_counter: Counter,
-}
-
-impl NodeSecrets {
-    pub fn new(key_file: String) -> Self {
-        if PathBuf::from(key_file.clone()).exists() {
-            NodeSecrets::strict_decode(fs::File::open(key_file.clone()).unwrap_or_else(|_| {
-                panic!(
-                    "Unable to open key file {}; please check that the user \
-                    running the deamon has necessary permissions",
-                    key_file
-                )
-            }))
-            .expect("Unable to read node code file format")
-        } else {
-            let mut rng = thread_rng();
-            let peer_private_key = SecretKey::new(&mut rng);
-            let wallet_seed = Self::create_seed(&mut rng);
-            let node_secrets = Self {
-                key_file: key_file.clone(),
-                peerd_secret_key: peer_private_key,
-                wallet_seed,
-                wallet_counter: Counter(0),
-            };
-
-            let key_file_handle = fs::File::create(&key_file).unwrap_or_else(|_| {
-                panic!(
-                    "Unable to create key file '{}'; please check that path exists",
-                    key_file
-                )
-            });
-            node_secrets
-                .strict_encode(key_file_handle)
-                .expect("Unable to save generated node secrets");
-            node_secrets
-        }
-    }
-
-    pub fn node_id(&self) -> PublicKey {
-        PublicKey::from_secret_key(&Secp256k1::new(), &self.peerd_secret_key)
-    }
-
-    fn create_seed(rng: &mut ThreadRng) -> [u8; 32] {
-        let mut seed_buf = [0u8; 32];
-        let key = SecretKey::new(rng);
-        let mut key_iter = key[..].iter();
-        let mut reader = std::io::Cursor::new(&mut key_iter);
-        reader
-            .read_exact(&mut seed_buf)
-            .expect("wallet_key has 32 bytes");
-        {
-            let expected_key = SecretKey::from_slice(&seed_buf).expect("wallet_seed has 32 bytes");
-            assert_eq!(
-                expected_key, key,
-                "Cannot go back and forward from bytes to secret key"
-            );
-        }
-        seed_buf
-    }
-
-    pub fn increment_wallet_counter(&mut self) -> u32 {
-        self.wallet_counter.increment();
-        let key_file_handle = fs::File::create(&self.key_file).unwrap_or_else(|_| {
-            panic!(
-                "Unable to create key file '{}'; please check that path exists",
-                self.key_file
-            )
-        });
-        self.strict_encode(key_file_handle)
-            .expect("Unable to save incremented wallet counter");
-        self.wallet_counter.0
-    }
-
-    pub fn wallet_seed(&self) -> [u8; 32] {
-        self.wallet_seed
-    }
-}
-
-impl KeyOpts {
-    pub fn process(&mut self, shared: &crate::opts::Opts) {
-        shared.process_dir(&mut self.key_file);
     }
 }
diff --git a/src/checkpointd/runtime.rs b/src/checkpointd/runtime.rs
index 46381bbd6..feaee8859 100644
--- a/src/checkpointd/runtime.rs
+++ b/src/checkpointd/runtime.rs
@@ -73,12 +73,6 @@ pub fn run(
 ) -> Result<(), Error> {
     let runtime = Runtime {
         identity: ServiceId::Wallet,
-        wallet_token,
-        node_secrets,
-        wallets: none!(),
-        swaps: none!(),
-        btc_addrs: none!(),
-        xmr_addrs: none!(),
         checkpoints: CheckpointGetSet::new(data_dir),
     };
 
@@ -87,181 +81,10 @@ pub fn run(
 
 pub struct Runtime {
     identity: ServiceId,
-    wallet_token: Token,
-    node_secrets: NodeSecrets,
-    wallets: HashMap<SwapId, Wallet>,
-    swaps: HashMap<SwapId, Option<Request>>,
-    btc_addrs: HashMap<SwapId, bitcoin::Address>,
-    xmr_addrs: HashMap<SwapId, monero::Address>,
     checkpoints: CheckpointGetSet,
 }
 
 impl Runtime {
-    fn clean_up_after_swap(&mut self, swapid: &SwapId) {
-        self.wallets.remove(swapid);
-        self.btc_addrs.remove(swapid);
-        self.xmr_addrs.remove(swapid);
-        self.swaps.remove(swapid);
-    }
-}
-
-pub enum Wallet {
-    Alice(AliceState),
-    Bob(BobState),
-}
-
-pub struct AliceState {
-    alice: Alice<BtcXmr>,
-    local_params: AliceParameters<BtcXmr>,
-    local_proof: Proof<BtcXmr>,
-    key_manager: KeyManager,
-    pub_offer: PublicOffer<BtcXmr>,
-    remote_commit: Option<CommitBobParameters<BtcXmr>>,
-    remote_params: Option<BobParameters<BtcXmr>>,
-    remote_proof: Option<Proof<BtcXmr>>,
-    core_arb_setup: Option<CoreArbitratingSetup<BtcXmr>>,
-    alice_cancel_signature: Option<Signature>,
-    adaptor_refund: Option<SignedAdaptorRefund<farcaster_core::bitcoin::BitcoinSegwitV0>>,
-}
-
-impl Encodable for AliceState {
-    fn consensus_encode<W: io::Write>(&self, writer: &mut W) -> Result<usize, io::Error> {
-        let mut len = self.alice.consensus_encode(writer)?;
-        len += self.local_params.consensus_encode(writer)?;
-        len += self.local_proof.consensus_encode(writer)?;
-        len += self.key_manager.consensus_encode(writer)?;
-        len += self.pub_offer.consensus_encode(writer)?;
-        len += self.remote_commit.consensus_encode(writer)?;
-        len += self.remote_params.consensus_encode(writer)?;
-        len += self.remote_proof.consensus_encode(writer)?;
-        len += self.core_arb_setup.consensus_encode(writer)?;
-        len += self
-            .alice_cancel_signature
-            .as_canonical_bytes()
-            .consensus_encode(writer)?;
-        len += self.adaptor_refund.consensus_encode(writer)?;
-        Ok(len)
-    }
-}
-
-impl Decodable for AliceState {
-    fn consensus_decode<D: io::Read>(d: &mut D) -> Result<Self, consensus::Error> {
-        Ok(AliceState {
-            alice: Decodable::consensus_decode(d)?,
-            local_params: Decodable::consensus_decode(d)?,
-            local_proof: Decodable::consensus_decode(d)?,
-            key_manager: Decodable::consensus_decode(d)?,
-            pub_offer: Decodable::consensus_decode(d)?,
-            remote_commit: Decodable::consensus_decode(d)?,
-            remote_params: Decodable::consensus_decode(d)?,
-            remote_proof: Decodable::consensus_decode(d)?,
-            core_arb_setup: Decodable::consensus_decode(d)?,
-            alice_cancel_signature: Option::<Signature>::from_canonical_bytes(
-                farcaster_core::unwrap_vec_ref!(d).as_ref(),
-            )?,
-            adaptor_refund: Decodable::consensus_decode(d)?,
-        })
-    }
-}
-
-impl AliceState {
-    fn new(
-        alice: Alice<BtcXmr>,
-        local_params: AliceParameters<BtcXmr>,
-        local_proof: Proof<BtcXmr>,
-        key_manager: KeyManager,
-        pub_offer: PublicOffer<BtcXmr>,
-        remote_commit: Option<CommitBobParameters<BtcXmr>>,
-    ) -> Self {
-        Self {
-            alice,
-            local_params,
-            local_proof,
-            key_manager,
-            pub_offer,
-            remote_commit,
-            remote_params: None,
-            remote_proof: None,
-            core_arb_setup: None,
-            alice_cancel_signature: None,
-            adaptor_refund: None,
-        }
-    }
-}
-
-pub struct BobState {
-    bob: Bob<BtcXmr>,
-    local_params: BobParameters<BtcXmr>,
-    local_proof: Proof<BtcXmr>,
-    key_manager: KeyManager,
-    pub_offer: PublicOffer<BtcXmr>,
-    funding_tx: Option<FundingTx>,
-    remote_commit_params: Option<CommitAliceParameters<BtcXmr>>,
-    remote_params: Option<AliceParameters<BtcXmr>>,
-    remote_proof: Option<Proof<BtcXmr>>,
-    core_arb_setup: Option<CoreArbitratingSetup<BtcXmr>>,
-    adaptor_buy: Option<SignedAdaptorBuy<Bitcoin<SegwitV0>>>,
-}
-
-impl Encodable for BobState {
-    fn consensus_encode<W: io::Write>(&self, writer: &mut W) -> Result<usize, io::Error> {
-        let mut len = self.bob.consensus_encode(writer)?;
-        len += self.local_params.consensus_encode(writer)?;
-        len += self.local_proof.consensus_encode(writer)?;
-        len += self.key_manager.consensus_encode(writer)?;
-        len += self.pub_offer.consensus_encode(writer)?;
-        len += self.funding_tx.consensus_encode(writer)?;
-        len += self.remote_commit_params.consensus_encode(writer)?;
-        len += self.remote_params.consensus_encode(writer)?;
-        len += self.remote_proof.consensus_encode(writer)?;
-        len += self.core_arb_setup.consensus_encode(writer)?;
-        len += self.adaptor_buy.consensus_encode(writer)?;
-        Ok(len)
-    }
-}
-
-impl Decodable for BobState {
-    fn consensus_decode<D: io::Read>(d: &mut D) -> Result<Self, consensus::Error> {
-        Ok(BobState {
-            bob: Decodable::consensus_decode(d)?,
-            local_params: Decodable::consensus_decode(d)?,
-            local_proof: Decodable::consensus_decode(d)?,
-            key_manager: Decodable::consensus_decode(d)?,
-            pub_offer: Decodable::consensus_decode(d)?,
-            funding_tx: Decodable::consensus_decode(d)?,
-            remote_commit_params: Decodable::consensus_decode(d)?,
-            remote_params: Decodable::consensus_decode(d)?,
-            remote_proof: Decodable::consensus_decode(d)?,
-            core_arb_setup: Decodable::consensus_decode(d)?,
-            adaptor_buy: Decodable::consensus_decode(d)?,
-        })
-    }
-}
-
-impl BobState {
-    fn new(
-        bob: Bob<BtcXmr>,
-        local_params: BobParameters<BtcXmr>,
-        local_proof: Proof<BtcXmr>,
-        key_manager: KeyManager,
-        pub_offer: PublicOffer<BtcXmr>,
-        funding_tx: Option<FundingTx>,
-        remote_commit_params: Option<CommitAliceParameters<BtcXmr>>,
-    ) -> Self {
-        Self {
-            bob,
-            local_params,
-            local_proof,
-            key_manager,
-            pub_offer,
-            funding_tx,
-            remote_commit_params,
-            remote_params: None,
-            remote_proof: None,
-            core_arb_setup: None,
-            adaptor_buy: None,
-        }
-    }
 }
 
 impl CtlServer for Runtime {}
@@ -335,814 +158,6 @@ impl Runtime {
                 // Ignoring; this is used to set remote identity at ZMQ level
             }
 
-            // Handled in Msg to avoid race condition between Msg and Ctl bus (2 msgs sent
-            // sequencially on the diferent buses arriving in random order), now both msgs go
-            // through the msg bus, and always arrive in the correct order. BitcoinAddress arriving
-            // after TakerCommit, blocks TakerCommit, as `self.btc_addrs.contains_key(&swap_id) ==
-            // false`
-            Request::BitcoinAddress(BitcoinAddress(swapid, btc_addr)) => {
-                if self.btc_addrs.insert(swapid, btc_addr).is_some() {
-                    error!("btc_addrs rm accidentally")
-                };
-            }
-
-            // Handled in Msg to avoid race condition between Msg and Ctl bus (2 msgs sent
-            // sequencially on the diferent buses arriving in random order), now both msgs go
-            // through the msg bus, and always arrive in the correct order. MoneroAddress arriving
-            // after TakerCommit, blocks TakerCommit, as `self.xmr_addrs.contains_key(&swap_id) ==
-            // false`
-            Request::MoneroAddress(MoneroAddress(swapid, xmr_addr)) => {
-                if self.xmr_addrs.insert(swapid, xmr_addr).is_some() {
-                    error!("xmr_addrs rm accidentally")
-                };
-            }
-            // 1st protocol message received through peer connection, and last
-            // handled by farcasterd, receiving taker commit because we are
-            // maker
-            Request::Protocol(Msg::TakerCommit(request::TakeCommit {
-                commit: remote_commit,
-                public_offer,
-                swap_id,
-            })) if self.btc_addrs.contains_key(&swap_id)
-                && self.xmr_addrs.contains_key(&swap_id) =>
-            {
-                let pub_offer: PublicOffer<BtcXmr> = FromStr::from_str(&public_offer)?;
-                trace!(
-                    "Offer {} is known, you created it previously, initiating swap with taker",
-                    &pub_offer
-                );
-                let PublicOffer { offer, .. } = pub_offer.clone();
-                let external_address = self.btc_addrs.remove(&swap_id).expect("checked above");
-                match offer.maker_role {
-                    SwapRole::Bob => {
-                        let bob = Bob::<BtcXmr>::new(external_address, FeePriority::Low);
-                        let wallet_index = self.node_secrets.increment_wallet_counter();
-                        let mut key_manager =
-                            KeyManager::new(self.node_secrets.wallet_seed, wallet_index)?;
-                        let (local_params, local_proof) =
-                            bob.generate_parameters(&mut key_manager, &pub_offer)?;
-                        if self.wallets.get(&swap_id).is_none() {
-                            let funding = create_funding(&mut key_manager, offer.network)?;
-                            let funding_addr = funding.get_address()?;
-                            let funding_fee = bitcoin::Amount::from_sat(150);
-                            let funding_amount = offer.arbitrating_amount + funding_fee;
-                            debug!(
-                                "{} | Send {} to {}",
-                                swap_id.bright_blue_italic(),
-                                funding_amount.bright_green_bold(),
-                                funding_addr.addr(),
-                            );
-                            debug!(
-                                "{} | Loading {}",
-                                swap_id.bright_blue_italic(),
-                                "Wallet::Bob".bright_yellow()
-                            );
-                            if let request::Commit::AliceParameters(remote_commit) =
-                                remote_commit.clone()
-                            {
-                                let bob_wallet = BobState::new(
-                                    bob,
-                                    local_params.clone(),
-                                    local_proof,
-                                    key_manager,
-                                    pub_offer.clone(),
-                                    Some(funding),
-                                    Some(remote_commit),
-                                );
-                                self.wallets.insert(swap_id, Wallet::Bob(bob_wallet));
-                            } else {
-                                error!("{} | Not Commit::Alice", swap_id.bright_blue_italic());
-                                return Ok(());
-                            }
-                            let launch_swap = LaunchSwap {
-                                local_trade_role: TradeRole::Maker,
-                                public_offer: pub_offer,
-                                local_params: Params::Bob(local_params),
-                                swap_id,
-                                remote_commit: Some(remote_commit),
-                                funding_address: Some(funding_addr),
-                            };
-                            self.swaps.insert(swap_id, None);
-                            self.send_ctl(
-                                senders,
-                                ServiceId::Farcasterd,
-                                Request::LaunchSwap(launch_swap),
-                            )?;
-                        } else {
-                            error!("{} | Wallet already existed", swap_id.bright_blue_italic());
-                        }
-                    }
-                    SwapRole::Alice => {
-                        let alice: Alice<BtcXmr> = Alice::new(external_address, FeePriority::Low);
-                        let wallet_seed = self.node_secrets.wallet_seed;
-                        let wallet_index = self.node_secrets.increment_wallet_counter();
-                        let mut key_manager = KeyManager::new(wallet_seed, wallet_index)?;
-                        let (local_params, local_proof) =
-                            alice.generate_parameters(&mut key_manager, &pub_offer)?;
-                        if self.wallets.get(&swap_id).is_none() {
-                            debug!(
-                                "{} | Loading {}",
-                                swap_id.bright_blue_italic(),
-                                "Wallet::Alice".bright_yellow()
-                            );
-                            if let request::Commit::BobParameters(bob_commit) =
-                                remote_commit.clone()
-                            {
-                                let alice_state = AliceState::new(
-                                    alice,
-                                    local_params.clone(),
-                                    local_proof,
-                                    key_manager,
-                                    pub_offer.clone(),
-                                    Some(bob_commit),
-                                );
-
-                                self.wallets.insert(swap_id, Wallet::Alice(alice_state));
-
-                                let launch_swap = LaunchSwap {
-                                    local_trade_role: TradeRole::Maker,
-                                    public_offer: pub_offer,
-                                    local_params: Params::Alice(local_params),
-                                    swap_id,
-                                    remote_commit: Some(remote_commit),
-                                    funding_address: None,
-                                };
-                                self.send_ctl(
-                                    senders,
-                                    ServiceId::Farcasterd,
-                                    Request::LaunchSwap(launch_swap),
-                                )?;
-                            } else {
-                                error!("{} | Not Commit::Bob", swap_id.bright_blue_italic());
-                            }
-                        } else {
-                            error!("{} | Wallet already existed", swap_id.bright_blue_italic());
-                        }
-                    }
-                }
-            }
-            Request::Protocol(Msg::MakerCommit(commit)) => {
-                let req_swap_id = req_swap_id.expect("validated previously");
-                match commit {
-                    Commit::BobParameters(CommitBobParameters { swap_id, .. }) => {
-                        if let Some(Wallet::Alice(AliceState {
-                            remote_commit, // None
-                            ..
-                        })) = self.wallets.get_mut(&swap_id)
-                        {
-                            if remote_commit.is_some() {
-                                error!(
-                                    "{} | Bob commit (remote) already set",
-                                    swap_id.bright_blue_italic(),
-                                );
-                            } else if let Commit::BobParameters(commit) = commit {
-                                trace!("Setting bob commit");
-                                *remote_commit = Some(commit);
-                            }
-                        } else {
-                            error!(
-                                "{} | Wallet not found or not on correct state",
-                                swap_id.bright_blue_italic(),
-                            );
-                            return Ok(());
-                        }
-                    }
-                    Commit::AliceParameters(CommitAliceParameters { swap_id, .. }) => {
-                        if let Some(Wallet::Bob(BobState {
-                            remote_commit_params, // None
-                            ..
-                        })) = self.wallets.get_mut(&swap_id)
-                        {
-                            if remote_commit_params.is_some() {
-                                error!(
-                                    "{} | Alice commit (remote) already set",
-                                    swap_id.bright_blue_italic(),
-                                );
-                            } else if let Commit::AliceParameters(commit) = commit {
-                                trace!("Setting alice commit");
-                                *remote_commit_params = Some(commit);
-                            }
-                        } else {
-                            error!(
-                                "{} | Wallet not found or not on correct state",
-                                swap_id.bright_blue_italic(),
-                            );
-                            return Ok(());
-                        }
-                    }
-                }
-                let proof: &Proof<BtcXmr> = match self.wallets.get(&req_swap_id).unwrap() {
-                    Wallet::Alice(AliceState { local_proof, .. }) => local_proof,
-                    Wallet::Bob(BobState { local_proof, .. }) => local_proof,
-                };
-                senders.send_to(
-                    ServiceBus::Ctl,
-                    ServiceId::Wallet,
-                    // TODO: (maybe) what if the message responded to is not sent by swapd?
-                    source,
-                    Request::Protocol(Msg::Reveal((req_swap_id, proof.clone()).into())),
-                )?;
-            }
-            Request::Protocol(Msg::Reveal(Reveal::Proof(proof))) => {
-                let swap_id = get_swap_id(&source)?;
-                let wallet = self.wallets.get_mut(&swap_id);
-                match wallet {
-                    Some(Wallet::Alice(AliceState { remote_proof, .. })) => {
-                        *remote_proof = Some(Proof { proof: proof.proof })
-                    }
-                    Some(Wallet::Bob(BobState {
-                        bob: _,
-                        local_params: _,
-                        local_proof: _,
-                        key_manager: _,
-                        pub_offer: _,
-                        funding_tx: _,
-                        remote_commit_params: _,
-                        remote_params: _,
-                        remote_proof,
-                        ..
-                    })) => *remote_proof = Some(Proof { proof: proof.proof }),
-                    None => error!(
-                        "{} | wallet for specified swap does not exist",
-                        swap_id.bright_blue_italic(),
-                    ),
-                }
-            }
-            Request::Protocol(Msg::Reveal(reveal)) => {
-                let swap_id = get_swap_id(&source)?;
-                match reveal {
-                    // receiving from counterparty Bob, thus I'm Alice (Maker or Taker)
-                    Reveal::BobParameters(reveal) => {
-                        if let Some(Wallet::Alice(AliceState {
-                            local_proof,
-                            key_manager,
-                            pub_offer,
-                            remote_commit: Some(bob_commit),
-                            remote_params,                 // None
-                            remote_proof: Some(bob_proof), // Should be Some() at this stage
-                            ..
-                        })) = self.wallets.get_mut(&swap_id)
-                        {
-                            if let Some(remote_params) = remote_params {
-                                error!(
-                                    "{} | bob_params were previously set to: {}",
-                                    swap_id.bright_blue_italic(),
-                                    remote_params
-                                );
-                            } else {
-                                trace!("Setting bob params: {}", reveal);
-                                bob_commit.verify_with_reveal(&CommitmentEngine, reveal.clone())?;
-                                let remote_params_candidate: BobParameters<BtcXmr> = reveal.into();
-                                let proof_verification = key_manager.verify_proof(
-                                    &remote_params_candidate.spend,
-                                    &remote_params_candidate.adaptor,
-                                    bob_proof.proof.clone(), /* remote_params_candidate.proof.
-                                                              * clone(), */
-                                );
-
-                                if proof_verification.is_err() {
-                                    error!("{} | DLEQ proof invalid", swap_id.bright_blue_italic());
-                                    return Ok(());
-                                }
-                                *remote_params = Some(remote_params_candidate);
-                                // if we're maker, send Ctl RevealProof to counterparty
-                                if pub_offer.swap_role(&TradeRole::Maker) == SwapRole::Alice {
-                                    senders.send_to(
-                                        ServiceBus::Ctl,
-                                        ServiceId::Wallet,
-                                        // TODO: (maybe) what if the message responded to is not
-                                        // sent by swapd?
-                                        source,
-                                        Request::Protocol(Msg::Reveal(
-                                            (swap_id, local_proof.clone()).into(),
-                                        )),
-                                    )?;
-                                }
-                                // nothing to do yet, waiting for Msg
-                                // CoreArbitratingSetup to proceed
-                            }
-                        } else {
-                            error!(
-                                "{} | only Some(Wallet::Alice)",
-                                swap_id.bright_blue_italic(),
-                            );
-                        }
-                        return Ok(());
-                    }
-                    // getting parameters from counterparty alice routed through
-                    // swapd, thus I'm Bob on this swap: Bob can proceed
-                    Reveal::AliceParameters(reveal) => {
-                        if let Some(Wallet::Bob(BobState {
-                            bob,
-                            local_params,
-                            local_proof,
-                            key_manager,
-                            pub_offer,
-                            funding_tx: Some(funding_tx),
-                            remote_params,                    // None
-                            remote_proof: Some(remote_proof), // Some
-                            core_arb_setup,                   // None
-                            ..
-                        })) = self.wallets.get_mut(&swap_id)
-                        {
-                            // set wallet params
-                            if remote_params.is_some() {
-                                error!(
-                                    "{} | Alice params already set",
-                                    swap_id.bright_blue_italic(),
-                                );
-                                return Ok(());
-                            }
-
-                            trace!("Setting remote params: {}", reveal);
-                            let remote_params_candidate: AliceParameters<BtcXmr> = reveal.into();
-                            let proof_verification = key_manager.verify_proof(
-                                &remote_params_candidate.spend,
-                                &remote_params_candidate.adaptor,
-                                remote_proof.proof.clone(),
-                            );
-
-                            if proof_verification.is_err() {
-                                error!("{} | DLEQ proof invalid", swap_id.bright_blue_italic());
-                                return Ok(());
-                            }
-                            *remote_params = Some(remote_params_candidate);
-
-                            // if we're maker, send Ctl RevealProof to counterparty
-                            if pub_offer.swap_role(&TradeRole::Maker) == SwapRole::Bob {
-                                senders.send_to(
-                                    ServiceBus::Ctl,
-                                    ServiceId::Wallet,
-                                    // TODO: (maybe) what if the message responded to is not sent
-                                    // by swapd?
-                                    source.clone(),
-                                    Request::Protocol(Msg::Reveal(
-                                        (swap_id, local_proof.clone()).into(),
-                                    )),
-                                )?;
-                            }
-
-                            // set wallet core_arb_txs
-                            if core_arb_setup.is_some() {
-                                error!(
-                                    "{} | Core Arb Txs already set",
-                                    swap_id.bright_blue_italic(),
-                                );
-                                return Ok(());
-                            }
-                            if !funding_tx.was_seen() {
-                                error!("{} | Funding not yet seen", swap_id.bright_blue_italic());
-                                return Ok(());
-                            }
-                            // FIXME should be set before
-                            let core_arbitrating_txs = bob.core_arbitrating_transactions(
-                                &remote_params.clone().expect("alice_params set above"),
-                                local_params,
-                                funding_tx.clone(),
-                                pub_offer,
-                            )?;
-                            let cosign_arbitrating_cancel =
-                                bob.cosign_arbitrating_cancel(key_manager, &core_arbitrating_txs)?;
-                            *core_arb_setup = Some(CoreArbitratingSetup::<BtcXmr>::from((
-                                swap_id,
-                                core_arbitrating_txs,
-                                cosign_arbitrating_cancel,
-                            )));
-                            let core_arb_setup_msg =
-                                Msg::CoreArbitratingSetup(core_arb_setup.clone().unwrap());
-                            self.send_ctl(senders, source, Request::Protocol(core_arb_setup_msg))?;
-                        } else {
-                            error!("{} | only Some(Wallet::Bob)", swap_id.bright_blue_italic());
-                        }
-                    }
-                    Reveal::Proof(reveal) => {
-                        match self.wallets.get_mut(&swap_id) {
-                            Some(Wallet::Alice(AliceState {
-                                remote_proof, // Should be Some() at this stage
-                                ..
-                            })) => {
-                                *remote_proof = Some(Proof {
-                                    proof: reveal.proof,
-                                });
-                                todo!()
-                            }
-                            Some(Wallet::Bob(BobState {
-                                key_manager,
-                                remote_params,
-                                remote_proof,
-                                ..
-                            })) => {
-                                match (remote_params, remote_proof.clone()) {
-                                    (None, None) => {
-                                        *remote_proof = Some(Proof {
-                                            proof: reveal.proof,
-                                        });
-                                    }
-                                    (Some(params), None) => {
-                                        let verification_result = key_manager.verify_proof(
-                                            &params.spend,
-                                            &params.adaptor,
-                                            reveal.proof.clone(),
-                                        );
-                                        if verification_result.is_ok() {
-                                            *remote_proof = Some(Proof {
-                                                proof: reveal.proof,
-                                            });
-                                        } else {
-                                            error!(
-                                                "{} | DLEQ proof invalid",
-                                                swap_id.bright_blue_italic(),
-                                            )
-                                        }
-                                    }
-                                    (None, Some(_)) => {
-                                        error!(
-                                            "{} | already set DLEQ proof",
-                                            swap_id.bright_blue_italic(),
-                                        )
-                                    }
-                                    (Some(_), Some(_)) => {
-                                        error!(
-                                            "{} | already set DLEQ proof and parameters",
-                                            swap_id.bright_blue_italic(),
-                                        )
-                                    }
-                                };
-                            }
-                            None => {
-                                error!("{} | only Some(Wallet::_)", swap_id.bright_blue_italic());
-                            }
-                        }
-                    }
-                }
-            }
-            Request::Protocol(Msg::RefundProcedureSignatures(RefundProcedureSignatures {
-                swap_id: _,
-                cancel_sig: alice_cancel_sig,
-                refund_adaptor_sig,
-            })) => {
-                let swap_id = get_swap_id(&source)?;
-                let my_id = self.identity();
-                // let j = self.wallets.get(&swap_id).unwrap();
-                // let k: Result<BobState, _> = (*j).try_into();
-                let mut writer = vec![];
-                // TODO: checkpointing before .get_mut call for now, but should do this later
-                if let Some(Wallet::Bob(state)) = self.wallets.get(&swap_id) {
-                    let state_size = state.consensus_encode(&mut writer);
-                    // info!("writer content: {:?}", writer);
-                    info!("state size: {:?}", state_size);
-                    let path = std::env::current_dir().unwrap();
-                    let mut state = CheckpointGetSet::new(path.to_path_buf());
-                    state.set_state(&swap_id, &writer);
-                } else {
-                    error!(
-                        "{:#} | Unknown wallet and swap_id {:#}",
-                        swap_id.bright_blue_italic(),
-                        swap_id.bright_white_bold(),
-                    );
-                };
-                if let Some(Wallet::Bob(BobState {
-                    bob,
-                    local_params,
-                    key_manager,
-                    pub_offer,
-                    remote_params: Some(remote_params),
-                    core_arb_setup: Some(core_arb_setup),
-                    adaptor_buy, // None
-                    ..
-                })) = self.wallets.get_mut(&swap_id)
-                {
-                    let core_arb_txs = &(core_arb_setup.clone()).into();
-                    let signed_adaptor_refund = &SignedAdaptorRefund { refund_adaptor_sig };
-
-                    bob.validate_adaptor_refund(
-                        key_manager,
-                        remote_params,
-                        local_params,
-                        core_arb_txs,
-                        signed_adaptor_refund,
-                    )?;
-
-                    // *refund_sigs = Some(refund_proc_sigs);
-                    let signed_arb_lock = bob.sign_arbitrating_lock(key_manager, core_arb_txs)?;
-                    let sig = signed_arb_lock.lock_sig;
-                    let tx = core_arb_setup.lock.clone();
-                    let mut lock_tx = LockTx::from_partial(tx);
-                    let lock_pubkey = key_manager.get_pubkey(ArbitratingKeyId::Lock)?;
-                    lock_tx.add_witness(lock_pubkey, sig)?;
-                    let finalized_lock_tx: bitcoin::Transaction =
-                        Broadcastable::<BitcoinSegwitV0>::finalize_and_extract(&mut lock_tx)?;
-
-                    // TODO: checkpoint here
-                    // {
-                    //     struct RecoveryState {
-                    //         swap_index: u32,
-                    //         params: (AliceParameters<BtcXmr>, BobParameters<BtcXmr>),
-                    //         txs: (
-                    //             PartiallySignedTransaction,
-                    //             PartiallySignedTransaction,
-                    //             bitcoin::Transaction,
-                    //         ),
-                    //     }
-
-                    //     let state = RecoveryState {
-                    //         swap_index: key_manager.get_swap_index(),
-                    //         params: (remote_params.clone(), local_params.clone()),
-                    //         txs: (
-                    //             core_arb_txs.lock.clone(),
-                    //             core_arb_txs.cancel.clone(),
-                    //             finalized_lock_tx.clone(),
-                    //         ),
-                    //     };
-
-                    //     {
-                    //         let _recovered_key_manager =
-                    //             KeyManager::new(self.node_secrets.wallet_seed, state.swap_index);
-                    //     }
-                    // }
-
-                    senders.send_to(
-                        ServiceBus::Ctl,
-                        my_id.clone(),
-                        source.clone(), // destination swapd
-                        Request::Tx(request::Tx::Lock(finalized_lock_tx)),
-                    )?;
-
-                    {
-                        if adaptor_buy.is_some() {
-                            error!("{} | adaptor_buy already set", swap_id.bright_blue_italic());
-                            return Ok(());
-                        }
-                        *adaptor_buy = Some(bob.sign_adaptor_buy(
-                            key_manager,
-                            remote_params,
-                            local_params,
-                            core_arb_txs,
-                            pub_offer,
-                        )?);
-                        let buy_proc_sig = BuyProcedureSignature::<BtcXmr>::from((
-                            swap_id,
-                            adaptor_buy.clone().unwrap(),
-                        ));
-                        let buy_proc_sig = Msg::BuyProcedureSignature(buy_proc_sig);
-                        senders.send_to(
-                            ServiceBus::Ctl,
-                            my_id.clone(),
-                            source.clone(), // destination swapd
-                            Request::Protocol(buy_proc_sig),
-                        )?;
-                    }
-
-                    {
-                        // cancel
-                        let tx = core_arb_setup.cancel.clone();
-                        let mut cancel_tx = CancelTx::from_partial(tx);
-                        cancel_tx.add_witness(remote_params.cancel, alice_cancel_sig)?;
-                        cancel_tx.add_witness(local_params.cancel, core_arb_setup.cancel_sig)?;
-                        let finalized_cancel_tx =
-                            Broadcastable::<BitcoinSegwitV0>::finalize_and_extract(&mut cancel_tx)?;
-                        senders.send_to(
-                            ServiceBus::Ctl,
-                            my_id.clone(),
-                            source.clone(), // destination swapd
-                            Request::Tx(Tx::Cancel(finalized_cancel_tx)),
-                        )?;
-                    }
-                    {
-                        // refund
-                        let FullySignedRefund {
-                            refund_sig,
-                            refund_adapted_sig,
-                        } = bob.fully_sign_refund(
-                            key_manager,
-                            core_arb_txs.clone(),
-                            signed_adaptor_refund,
-                        )?;
-                        let tx = core_arb_setup.refund.clone();
-                        let mut refund_tx = RefundTx::from_partial(tx);
-
-                        refund_tx.add_witness(local_params.refund, refund_sig)?;
-                        refund_tx.add_witness(remote_params.refund, refund_adapted_sig)?;
-                        let final_refund_tx =
-                            Broadcastable::<BitcoinSegwitV0>::finalize_and_extract(&mut refund_tx)?;
-                        senders.send_to(
-                            ServiceBus::Ctl,
-                            my_id,
-                            source, // destination swapd
-                            Request::Tx(Tx::Refund(final_refund_tx)),
-                        )?;
-                    }
-                } else {
-                    error!(
-                        "{:#} | Unknown wallet and swap_id {:#}",
-                        swap_id.bright_blue_italic(),
-                        swap_id.bright_white_bold(),
-                    );
-                }
-            }
-            Request::Protocol(Msg::CoreArbitratingSetup(core_arbitrating_setup)) => {
-                let swap_id = get_swap_id(&source)?;
-                let my_id = self.identity();
-                if let Some(Wallet::Alice(AliceState {
-                    alice,
-                    local_params,
-                    key_manager,
-                    pub_offer,
-                    remote_params: Some(bob_parameters),
-                    core_arb_setup,         // None
-                    alice_cancel_signature, // None
-                    adaptor_refund,         // None
-                    ..
-                })) = self.wallets.get_mut(&swap_id)
-                {
-                    if core_arb_setup.is_some() {
-                        error!(
-                            "{} | core_arb_txs already set for alice",
-                            swap_id.bright_blue_italic(),
-                        );
-                        return Ok(());
-                    }
-                    if alice_cancel_signature.is_some() {
-                        error!(
-                            "{} | alice_cancel_sig already set for alice",
-                            swap_id.bright_blue_italic(),
-                        );
-                        return Ok(());
-                    }
-                    *core_arb_setup = Some(core_arbitrating_setup.clone());
-                    let core_arb_txs: CoreArbitratingTransactions<Bitcoin<SegwitV0>> =
-                        core_arbitrating_setup.into();
-                    let signed_adaptor_refund = alice.sign_adaptor_refund(
-                        key_manager,
-                        local_params,
-                        bob_parameters,
-                        &core_arb_txs,
-                        pub_offer,
-                    )?;
-                    *adaptor_refund = Some(signed_adaptor_refund.clone());
-                    let cosigned_arb_cancel = alice.cosign_arbitrating_cancel(
-                        key_manager,
-                        local_params,
-                        bob_parameters,
-                        &core_arb_txs,
-                        pub_offer,
-                    )?;
-                    let refund_proc_signatures = RefundProcedureSignatures::from((
-                        swap_id,
-                        cosigned_arb_cancel,
-                        signed_adaptor_refund,
-                    ));
-                    *alice_cancel_signature = Some(refund_proc_signatures.cancel_sig);
-                    // NOTE: if this is the right spot for the Ctl message, it should also be replayed upon state recovery
-                    {
-                        // cancel
-                        let partial_cancel_tx = core_arb_setup.as_ref().unwrap().cancel.clone();
-                        let mut cancel_tx = CancelTx::from_partial(partial_cancel_tx);
-                        cancel_tx
-                            .add_witness(local_params.cancel, alice_cancel_signature.unwrap())?;
-                        cancel_tx.add_witness(
-                            bob_parameters.cancel,
-                            core_arb_setup.as_ref().unwrap().cancel_sig,
-                        )?;
-                        let finalized_cancel_tx =
-                            Broadcastable::<BitcoinSegwitV0>::finalize_and_extract(&mut cancel_tx)?;
-                        senders.send_to(
-                            ServiceBus::Ctl,
-                            my_id.clone(),
-                            source.clone(), // destination swapd
-                            Request::Tx(Tx::Cancel(finalized_cancel_tx)),
-                        )?;
-                    }
-                    // NOTE: if this is the right spot for the Ctl message, it should also be replayed upon state recovery
-                    {
-                        let FullySignedPunish { punish, punish_sig } = alice.fully_sign_punish(
-                            key_manager,
-                            local_params,
-                            bob_parameters,
-                            &core_arb_txs,
-                            pub_offer,
-                        )?;
-
-                        let mut punish_tx = PunishTx::from_partial(punish);
-                        punish_tx.add_witness(local_params.punish, punish_sig)?;
-                        let tx =
-                            Broadcastable::<BitcoinSegwitV0>::finalize_and_extract(&mut punish_tx)?;
-                        senders.send_to(
-                            ServiceBus::Ctl,
-                            my_id.clone(),
-                            source.clone(),
-                            Request::Tx(Tx::Punish(tx)),
-                        )?;
-                    }
-
-                    // struct RecoveryState {
-                    //     swap_index: u32,
-                    //     params: (AliceParameters<BtcXmr>, BobParameters<BtcXmr>),
-                    //     txs:
-                    // }
-                    let state = (
-                        // swap_index
-                        // key_manager.get_swap_index(),
-                        // params
-                        (bob_parameters.clone(), local_params.clone()),
-                        // txs
-                        (
-                            core_arb_txs.lock.clone(),
-                            core_arb_txs.cancel.clone(),
-                            // finalized_lock_tx.clone(),
-                            // tx
-                        ),
-                    );
-
-                    let refund_proc_signatures =
-                        Msg::RefundProcedureSignatures(refund_proc_signatures);
-
-                    senders.send_to(
-                        ServiceBus::Ctl,
-                        my_id,
-                        source,
-                        Request::Protocol(refund_proc_signatures),
-                    )?
-                } else {
-                    error!(
-                        "{} | only Some(Wallet::Alice)",
-                        swap_id.bright_blue_italic(),
-                    );
-                }
-            }
-            Request::Protocol(Msg::BuyProcedureSignature(BuyProcedureSignature {
-                swap_id,
-                buy,
-                buy_adaptor_sig: buy_encrypted_sig,
-            })) => {
-                trace!("wallet received buyproceduresignature");
-                let signed_adaptor_buy = SignedAdaptorBuy {
-                    buy: buy.clone(),
-                    buy_adaptor_sig: buy_encrypted_sig,
-                };
-                let id = self.identity();
-                if let Some(Wallet::Alice(AliceState {
-                    alice,
-                    local_params: alice_params,
-                    key_manager,
-                    pub_offer,
-                    remote_params: Some(bob_parameters),
-                    core_arb_setup: Some(core_arb_setup),
-                    alice_cancel_signature: Some(alice_cancel_sig),
-                    ..
-                })) = self.wallets.get_mut(&swap_id)
-                {
-                    let core_arb_txs = &(core_arb_setup.clone()).into();
-
-                    // cancel
-                    let tx = core_arb_setup.cancel.clone();
-                    let mut cancel_tx = CancelTx::from_partial(tx);
-                    cancel_tx.add_witness(alice_params.cancel, *alice_cancel_sig)?;
-                    cancel_tx.add_witness(bob_parameters.cancel, core_arb_setup.cancel_sig)?;
-                    let finalized_cancel_tx =
-                        Broadcastable::<BitcoinSegwitV0>::finalize_and_extract(&mut cancel_tx)?;
-                    senders.send_to(
-                        ServiceBus::Ctl,
-                        id.clone(),
-                        source.clone(), // destination swapd
-                        Request::Tx(Tx::Cancel(finalized_cancel_tx)),
-                    )?;
-
-                    // buy
-                    let mut buy_tx = BuyTx::from_partial(buy);
-                    alice.validate_adaptor_buy(
-                        key_manager,
-                        alice_params,
-                        bob_parameters,
-                        core_arb_txs,
-                        pub_offer,
-                        &signed_adaptor_buy,
-                    )?;
-                    let FullySignedBuy {
-                        buy_sig,
-                        buy_adapted_sig: buy_decrypted_sig,
-                    } = alice.fully_sign_buy(
-                        key_manager,
-                        alice_params,
-                        bob_parameters,
-                        core_arb_txs,
-                        pub_offer,
-                        &signed_adaptor_buy,
-                    )?;
-                    buy_tx.add_witness(key_manager.get_pubkey(ArbitratingKeyId::Buy)?, buy_sig)?;
-                    buy_tx.add_witness(bob_parameters.buy, buy_decrypted_sig)?;
-                    let tx = Broadcastable::<BitcoinSegwitV0>::finalize_and_extract(&mut buy_tx)?;
-                    trace!("wallet sends fullysignedbuy");
-                    senders.send_to(ServiceBus::Ctl, id, source, Request::Tx(Tx::Buy(tx)))?;
-
-                    // buy_adaptor_sig
-                } else {
-                    error!(
-                        "{} | could not get alice's wallet",
-                        swap_id.bright_blue_italic(),
-                    )
-                }
-            }
             req => {
                 error!(
                     "MSG RPC can only be used for forwarding farcaster protocol messages, found {:?}, {:#?}",
@@ -1175,342 +190,6 @@ impl Runtime {
                     debug!("Received Hello from {}", source);
                 }
             },
-            Request::TakeOffer(request::PubOffer {
-                public_offer,
-                external_address,
-                internal_address,
-                peer_secret_key: None,
-            }) if source == ServiceId::Farcasterd => {
-                let PublicOffer { offer, .. } = public_offer.clone();
-
-                let swap_id: SwapId = SwapId::random();
-                self.swaps.insert(swap_id, None);
-                self.xmr_addrs
-                    .insert(swap_id, monero::Address::from_str(&internal_address)?);
-
-                // since we're takers, we are on the other side of the trade
-                let taker_role = offer.maker_role.other();
-                let wallet_index = self.node_secrets.increment_wallet_counter();
-                let mut key_manager = KeyManager::new(self.node_secrets.wallet_seed, wallet_index)?;
-                match taker_role {
-                    SwapRole::Bob => {
-                        let bob: Bob<BtcXmr> = Bob::new(external_address, FeePriority::Low);
-                        let (local_params, local_proof) =
-                            bob.generate_parameters(&mut key_manager, &public_offer)?;
-                        let funding = create_funding(&mut key_manager, offer.network)?;
-                        let funding_addr = funding.get_address()?;
-                        let funding_fee = bitcoin::Amount::from_sat(150);
-                        let funding_amount = offer.arbitrating_amount + funding_fee;
-                        debug!(
-                            "{} | Send {} to {}",
-                            swap_id.bright_blue_italic(),
-                            funding_amount.to_string().bright_green_bold(),
-                            funding_addr.addr(),
-                        );
-                        debug!(
-                            "{} | Loading {}",
-                            swap_id.bright_blue_italic(),
-                            "Wallet::Bob".bright_yellow()
-                        );
-                        if self.wallets.get(&swap_id).is_none() {
-                            let local_wallet = BobState::new(
-                                bob,
-                                local_params.clone(),
-                                local_proof,
-                                key_manager,
-                                public_offer.clone(),
-                                Some(funding),
-                                None,
-                            );
-                            self.wallets.insert(swap_id, Wallet::Bob(local_wallet));
-                        } else {
-                            error!("{} | Wallet already exists", swap_id.bright_blue_italic());
-                            return Ok(());
-                        }
-                        let launch_swap = LaunchSwap {
-                            local_trade_role: TradeRole::Taker,
-                            public_offer,
-                            local_params: Params::Bob(local_params),
-                            swap_id,
-                            remote_commit: None,
-                            funding_address: Some(funding_addr),
-                        };
-                        senders.send_to(
-                            ServiceBus::Ctl,
-                            source,
-                            ServiceId::Farcasterd,
-                            Request::LaunchSwap(launch_swap),
-                        )?;
-                    }
-                    SwapRole::Alice => {
-                        let alice: Alice<BtcXmr> = Alice::new(external_address, FeePriority::Low);
-                        let (local_params, local_proof) =
-                            alice.generate_parameters(&mut key_manager, &public_offer)?;
-                        let wallet_seed = self.node_secrets.wallet_seed;
-                        let key_manager = KeyManager::new(wallet_seed, wallet_index)?;
-
-                        if self.wallets.get(&swap_id).is_none() {
-                            // TODO instead of storing in state, start building
-                            // requests and store the state in there directly
-                            debug!(
-                                "{} | Loading Alice Taker's Wallet",
-                                swap_id.bright_blue_italic()
-                            );
-                            let wallet = AliceState::new(
-                                alice,
-                                local_params.clone(),
-                                local_proof,
-                                key_manager,
-                                public_offer.clone(),
-                                None,
-                            );
-                            self.wallets.insert(swap_id, Wallet::Alice(wallet));
-                        } else {
-                            error!("{} | Wallet already exists", swap_id.bright_blue_italic());
-                        }
-                        let launch_swap = LaunchSwap {
-                            local_trade_role: TradeRole::Taker,
-                            public_offer,
-                            local_params: Params::Alice(local_params),
-                            swap_id,
-                            remote_commit: None,
-                            funding_address: None,
-                        };
-                        senders.send_to(
-                            ServiceBus::Ctl,
-                            source,
-                            ServiceId::Farcasterd,
-                            Request::LaunchSwap(launch_swap),
-                        )?;
-                    }
-                };
-            }
-            Request::Tx(Tx::Funding(tx)) => {
-                let swap_id = get_swap_id(&source)?;
-                if let Some(Wallet::Bob(BobState {
-                    funding_tx: Some(funding),
-                    ..
-                })) = self.wallets.get_mut(&swap_id)
-                {
-                    if funding.was_seen() {
-                        warn!(
-                            "{} | funding was previously updated, ignoring",
-                            swap_id.bright_blue_italic(),
-                        );
-                        return Ok(());
-                    }
-                    funding_update(funding, tx)?;
-                    debug!(
-                        "{} | bob's wallet informs swapd that funding was successfully updated",
-                        swap_id.bright_blue_italic(),
-                    );
-                    senders.send_to(
-                        ServiceBus::Ctl,
-                        ServiceId::Wallet,
-                        // TODO: (maybe) what if this message responded to is not sent by swapd?
-                        source,
-                        Request::FundingUpdated,
-                    )?;
-                }
-            }
-            Request::Tx(Tx::Buy(buy_tx)) => {
-                let swap_id = get_swap_id(&source)?;
-                if let Some(Wallet::Bob(BobState {
-                    bob,
-                    local_params,
-                    key_manager,
-                    remote_params: Some(alice_params),
-                    core_arb_setup: Some(_),
-                    adaptor_buy: Some(adaptor_buy),
-                    pub_offer,
-                    ..
-                })) = self.wallets.get_mut(&swap_id)
-                {
-                    let sk_a_btc = bob.recover_accordant_key(
-                        key_manager,
-                        alice_params,
-                        adaptor_buy.clone(),
-                        buy_tx,
-                    );
-                    let mut sk_a_btc_buf: Vec<u8> = (*sk_a_btc.as_ref()).into();
-                    sk_a_btc_buf.reverse();
-                    let sk_a = monero::PrivateKey::from_slice(sk_a_btc_buf.as_ref())
-                        .expect("Valid Monero Private Key");
-                    info!(
-                        "{} | Extracted monero key from Buy tx: {}",
-                        swap_id.bright_blue_italic(),
-                        sk_a.bright_white_italic()
-                    );
-                    let sk_b = key_manager.get_or_derive_monero_spend_key()?;
-                    let spend = sk_a + sk_b;
-                    info!(
-                        "{} | Full secret monero spending key: {}",
-                        swap_id.bright_blue_italic(),
-                        spend.bright_green_bold()
-                    );
-                    let view_key_alice = *alice_params
-                        .accordant_shared_keys
-                        .clone()
-                        .into_iter()
-                        .find(|vk| vk.tag() == &SharedKeyId::new(SHARED_VIEW_KEY_ID))
-                        .unwrap()
-                        .elem();
-
-                    let view_key_bob = *local_params
-                        .accordant_shared_keys
-                        .clone()
-                        .into_iter()
-                        .find(|vk| vk.tag() == &SharedKeyId::new(SHARED_VIEW_KEY_ID))
-                        .unwrap()
-                        .elem();
-                    let view = view_key_alice + view_key_bob;
-                    info!(
-                        "{} | Full secret monero view key: {}",
-                        swap_id.bright_blue_italic(),
-                        view.bright_green_bold()
-                    );
-                    let network = pub_offer.offer.network.into();
-                    let keypair = monero::KeyPair { view, spend };
-                    let corresponding_address = monero::Address::from_keypair(network, &keypair);
-                    info!(
-                        "{} | Corresponding address: {}",
-                        swap_id.bright_blue_italic(),
-                        corresponding_address
-                    );
-                    let address = self
-                        .xmr_addrs
-                        .remove(&get_swap_id(&source)?)
-                        .expect("checked at the start of a swap");
-                    let sweep_keys = SweepXmrAddress {
-                        view_key: view,
-                        spend_key: spend,
-                        address,
-                        minimum_balance: pub_offer.offer.accordant_amount,
-                    };
-                    senders.send_to(
-                        ServiceBus::Ctl,
-                        self.identity(),
-                        source,
-                        Request::SweepXmrAddress(sweep_keys),
-                    )?;
-                }
-            }
-            Request::Tx(Tx::Refund(refund_tx)) => {
-                let swap_id = get_swap_id(&source)?;
-                if let Some(Wallet::Alice(AliceState {
-                    alice,
-                    local_params,
-                    key_manager,
-                    remote_params: Some(bob_params), //remote
-                    remote_proof: Some(_),
-                    adaptor_refund: Some(adaptor_refund),
-                    pub_offer,
-                    ..
-                })) = self.wallets.get_mut(&get_swap_id(&source)?)
-                {
-                    let sk_b_btc = alice.recover_accordant_key(
-                        key_manager,
-                        bob_params,
-                        adaptor_refund.clone(),
-                        refund_tx,
-                    );
-                    let mut sk_b_btc_buf: Vec<u8> = (*sk_b_btc.as_ref()).into();
-                    sk_b_btc_buf.reverse();
-                    let sk_b = monero::PrivateKey::from_slice(sk_b_btc_buf.as_ref())
-                        .expect("Valid Monero Private Key");
-                    info!(
-                        "{} | Extracted monero key from Refund tx: {}",
-                        swap_id.bright_blue_italic(),
-                        sk_b.bright_white_italic()
-                    );
-
-                    let sk_a = key_manager.get_or_derive_monero_spend_key()?;
-                    let spend = sk_a + sk_b;
-                    info!(
-                        "{} | Full secret monero spending key: {}",
-                        swap_id.bright_blue_italic(),
-                        spend.bright_green_bold()
-                    );
-
-                    let view_key_bob = *bob_params
-                        .accordant_shared_keys
-                        .clone()
-                        .into_iter()
-                        .find(|vk| vk.tag() == &SharedKeyId::new(SHARED_VIEW_KEY_ID))
-                        .unwrap()
-                        .elem();
-
-                    let view_key_alice = *local_params
-                        .accordant_shared_keys
-                        .clone()
-                        .into_iter()
-                        .find(|vk| vk.tag() == &SharedKeyId::new(SHARED_VIEW_KEY_ID))
-                        .unwrap()
-                        .elem();
-                    let view = view_key_alice + view_key_bob;
-                    info!(
-                        "{} | Full secret monero view key: {}",
-                        swap_id.bright_blue_italic(),
-                        view.bright_green_bold()
-                    );
-                    let network = pub_offer.offer.network.into();
-                    let keypair = monero::KeyPair { view, spend };
-                    let corresponding_address = monero::Address::from_keypair(network, &keypair);
-                    info!(
-                        "{} | Corresponding address: {}",
-                        swap_id.bright_blue_italic(),
-                        corresponding_address
-                    );
-                    let address = self
-                        .xmr_addrs
-                        .remove(&get_swap_id(&source)?)
-                        .expect("checked at the start of a swap");
-                    let sweep_keys = SweepXmrAddress {
-                        view_key: view,
-                        spend_key: spend,
-                        address,
-                        minimum_balance: pub_offer.offer.accordant_amount,
-                    };
-                    senders.send_to(
-                        ServiceBus::Ctl,
-                        self.identity(),
-                        source,
-                        Request::SweepXmrAddress(sweep_keys),
-                    )?;
-                }
-            }
-            Request::GetKeys(request::GetKeys(wallet_token, request_id)) => {
-                if wallet_token != self.wallet_token {
-                    return Err(Error::InvalidToken);
-                }
-                trace!("sent Secret request to farcasterd");
-                // let mut rng = thread_rng();
-                // let sk = SecretKey::new(&mut rng);
-                // let pk = PublicKey::from_secret_key(&Secp256k1::new(), &sk);
-                // self.send_farcasterd(senders, Request::Keys(Keys(sk, pk, request_id)))?
-                self.send_farcasterd(
-                    senders,
-                    Request::Keys(Keys(
-                        self.node_secrets.peerd_secret_key,
-                        self.node_secrets.node_id(),
-                        request_id,
-                    )),
-                )?
-            }
-            Request::SwapOutcome(success) => {
-                let swap_id = get_swap_id(&source)?;
-                let success = match success {
-                    request::Outcome::Buy => success.bright_green_bold(),
-                    _ => success.err(),
-                };
-                info!(
-                    "{} | {} in swap {}, cleaning up data",
-                    swap_id.bright_blue_italic(),
-                    &success,
-                    &swap_id.bright_blue_italic(),
-                );
-                self.clean_up_after_swap(&swap_id);
-            }
 
             _ => {
                 error!(
@@ -1523,19 +202,6 @@ impl Runtime {
     }
 }
 
-pub fn create_funding(
-    key_manager: &mut KeyManager,
-    net: farcaster_core::blockchain::Network,
-) -> Result<FundingTx, Error> {
-    let pk = key_manager.get_pubkey(ArbitratingKeyId::Lock)?;
-    Ok(FundingTx::initialize(pk, net)?)
-}
-
-pub fn funding_update(funding: &mut FundingTx, tx: bitcoin::Transaction) -> Result<(), Error> {
-    let funding_bundle = FundingTransaction::<Bitcoin<SegwitV0>> { funding: tx };
-    Ok(funding.update(funding_bundle.funding)?)
-}
-
 struct CheckpointGetSet(lmdb::Environment);
 
 impl CheckpointGetSet {

From eff27fefaabed42f6e18078628dfafcc1abcbe5e Mon Sep 17 00:00:00 2001
From: Robert Hambrock <roberthambrock@gmail.com>
Date: Wed, 11 May 2022 19:19:19 +0200
Subject: [PATCH 13/32] update sequencediagram

---
 doc/sequencediagram.svg |  2 +-
 doc/sequencediagram.txt | 20 ++++++++++----------
 2 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/doc/sequencediagram.svg b/doc/sequencediagram.svg
index 923e83d8e..b8db93e89 100644
--- a/doc/sequencediagram.svg
+++ b/doc/sequencediagram.svg
@@ -1 +1 @@
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="3056" height="10712"><desc>title%20Farcaster%20node%0A%2F%2F%20to%20display%20the%20diagram%2C%20go%20to%20sequencediagram.org%0A%2F%2F%20dashed%20lines%2C%20not%20yet%20implemented%0A%0Aparticipant%20t_syncer%0Aparticipant%20t_wallet%0Aparticipant%20t_swap%0Aparticipant%20t_checkpoint%0Aparticipant%20t_farcasterd%0Aparticipant%20t_cli%0Aparticipant%20peerd%0Aparticipant%20m_cli%0Aparticipant%20m_farcasterd%0Aparticipant%20m_checkpoint%0Aparticipant%20m_swap%0Aparticipant%20m_wallet%0Aparticipant%20m_syncer%0A%0A%3D%3DSetup%20and%20Commit-Reveal%3A%20Bob%20and%20Alice%20can%20be%20on%20both%20sides%3D%3D%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20launch%20farcasterd%5Cnmanually%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20launch%20walletd%0Am_farcasterd%20%3C-%20m_wallet%20%3A%20Ctl%20Hello%0Am_cli%20-%3E%20m_farcasterd%20%3A%20MakeOffer%20(deferred)%0Am_farcasterd%20-%3E%20m_wallet%20%3A%20Ctl%20GetKeys%0Am_farcasterd%20%3C-%20m_wallet%20%3A%20Ctl%20Keys%20(not%20to%20be%20held%20on%20state)%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20MakeOffer%20(continues)%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20launch%5Cnpeerd%20listen%0At_farcasterd%20-%3E%20t_farcasterd%20%3A%20launch%20farcasterd%5Cnmanually%0At_farcasterd%20-%3E%20t_farcasterd%20%3A%20launch%20walletd%0At_wallet%20-%3E%20t_farcasterd%20%3A%20Ctl%20Hello%0At_cli%20-%3E%20t_farcasterd%20%3A%20Ctl%20TakeOffer%20(deferred)%0At_wallet%20%3C-%20t_farcasterd%20%3A%20Ctl%20GetKeys%0At_wallet%20-%3E%20t_farcasterd%20%3A%20Ctl%20Keys%20(not%20to%20be%20held%20on%20state)%0At_farcasterd%20%3C-%20t_farcasterd%20%3A%20Ctl%20TakeOffer%20(continues)%0At_farcasterd%20-%3E%20t_farcasterd%20%3A%20launch%5Cnpeerd%20connect%0At_wallet%20%3C-%20t_farcasterd%20%3A%20Ctl%20TakeOffer%0At_wallet%20-%3E%20t_wallet%20%3A%20create%20taker%20wallet%0At_wallet%20-%3E%20t_farcasterd%20%3A%20Ctl%20LaunchSwap%0At_swap%20-%3E%20t_farcasterd%20%3A%20Ctl%20Hello%0At_farcasterd%20-%3E%20t_farcasterd%3Alaunch%20syncer%0At_swap%20%3C-%20t_farcasterd%20%3A%20Ctl%20TakeSwap%0At_swap%20-%3E%20peerd%20%3A%20Msg%20TakerCommit%0Apeerd%20-%3E%20m_farcasterd%20%3A%20Msg%20TakerCommit%0Am_farcasterd%20-%3E%20m_wallet%20%3A%20Ctl%20BitcoinAddress%0Am_farcasterd%20-%3E%20m_wallet%20%3A%20Msg%20TakerCommit%0Am_wallet%20-%3E%20m_wallet%20%3A%20create%20maker%20wallet%0Am_wallet%20-%3E%20m_farcasterd%20%3A%20Ctl%20LaunchSwap%0Am_swap%20-%3E%20m_farcasterd%20%3A%20Ctl%20Hello%0Am_farcasterd%20-%3E%20m_farcasterd%3Alaunch%20syncer%0Am_farcasterd%20-%3E%20m_swap%20%3A%20Ctl%20MakeSwap%0A%0Am_swap%20-%3E%20peerd%20%3A%20Msg%20MakerCommit%0At_swap%20%3C-%20peerd%20%3A%20Msg%20MakerCommit%0A%2F%2F%20TODO%3A%20verify%20that%20swapd%20launches%20no%20matter%20what%0At_syncer%20%3C-%20t_swap%20%3A%20Ctl%20WatchHeight%0At_syncer%20%3C-%20t_swap%20%3A%20if%20Bob%2C%20Watch%20Arbitrating%20Funding%20Address%0At_swap%20-%3E%20t_wallet%20%3A%20Msg%20MakerCommit%0At_wallet%20-%3E%20t_swap%20%3A%20Ctl%20RevealProof%20(taker%20is%20sender)%0At_swap%20-%3E%20peerd%20%3A%20Msg%20RevealProof%20(taker%20is%20sender)%0At_swap%20-%3E%20peerd%20%3A%20Msg%20Reveal%20(taker%20is%20sender)%0Apeerd%20-%3E%20m_swap%20%3A%20Msg%20RevealProof%20(taker%20is%20sender)%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Alice%2C%20Msg%20RevealProof%20(taker%20is%20sender)%20%0Am_swap%20-%3E%20m_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20RevealProof%0Apeerd%20-%3E%20m_swap%20%3A%20Msg%20Reveal%20(taker%20is%20sender)%0Am_swap%20-%3E%20m_farcasterd%20%3A%20if%20Bob%2C%20ask%20for%20funding%0Am_swap%20-%3E%20m_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20Reveal%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Alice%2C%20Msg%20Reveal%20(taker%20is%20sender)%0A%0Am_swap-%3Em_syncer%3ACtl%20WatchHeight%0Am_swap%20-%3E%20m_syncer%3Aif%20Bob%2C%20Watch%20Arbitrating%20Funding%20Address%0Am_swap%20%3C-%20m_syncer%3AIf%20Bob%2C%20Arbitrating%20Funding%20event%0Am_swap-%3Em_wallet%3Aif%20Bob%2C%20Ctl%20Tx%3A%3AFunding%0Am_swap%3C-m_wallet%3AIf%20Bob%2C%20Ctl%20FundingUpdated%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20RevealProof%20(taker%20is%20sender)%20%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20Reveal%20(taker%20is%20sender)%0Am_wallet%20-%3E%20m_swap%20%3A%20Ctl%20RevealProof%20(maker%20is%20sender)%0Apeerd%20%3C-%20m_swap%20%3A%20Msg%20RevealProof%20(maker%20is%20sender)%0Apeerd%20%3C-%20m_swap%20%3A%20Msg%20Reveal%20(maker%20is%20sender)%0Apeerd%20-%3E%20t_swap%20%3A%20Msg%20RevealProof%20(maker%20is%20sender)%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Alice%2C%20Msg%20RevealProof%20(maker%20is%20sender)%0At_swap%20-%3E%20t_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20RevealProof%0Apeerd%20-%3E%20t_swap%20%3A%20Msg%20Reveal%20(maker%20is%20sender)%0At_swap%20-%3E%20t_farcasterd%20%3A%20if%20Bob%2C%20ask%20for%20funding%0At_swap%20-%3E%20t_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20Reveal%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Alice%2C%20Msg%20Reveal%20(maker%20is%20sender)%0At_syncer%20-%3E%20t_swap%3AIf%20Bob%2C%20Arbitrating%20Funding%20event%0At_swap-%3Et_wallet%3Aif%20Bob%2C%20Ctl%20Tx%3A%3AFunding%0At_swap%3C-t_wallet%3AIf%20Bob%2C%20Ctl%20FundingUpdated%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20RevealProof%20(maker%20is%20sender)%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20Reveal%20(maker%20is%20sender)%0A%3D%3DCommit-Reveal%20Complete%3D%3D%0A%3D%3DChanging%20semantics%3A%20On%20Commit-Reveal%2C%20Maker%20and%20Taker%20were%20the%20key%20roles.%20From%20now%20on%20Bob%20or%20Alice%20are%20the%20key%20roles.%20Now%20t_%20is%20bob_%20on%20the%20left%20and%20m_%20is%20alice_%20on%20the%20right.%3D%3D%0A%3D%3DSwap%20setup%3A%20Bob%20is%20left%2C%20Alice%20right%3D%3D%0At_wallet%20-%3E%20t_checkpoint%3A%20CheckpointWalletBobPrelockBob%0At_wallet%20-%3E%20t_swap%20%3A%20Ctl%20CoreArbitratingSetup%0At_swap%20-%3E%20t_checkpoint%3A%20CheckpointSwapBobPrelockBob%0A%2F%2F%20TODO%3A%20During%20replay%20of%20Checkpoint%20Bob%200%2C%20Bob%20has%20to%20rewatch%20these%203%20txs%0At_syncer%20%3C-%20t_swap%20%3A%20Watch%20Arbitrating%20Lock%0At_syncer%20%3C-%20t_swap%20%3A%20Watch%20Cancel%0At_syncer%20%3C-%20t_swap%20%3A%20Watch%20Refund%0Apeerd%20%3C-%20t_swap%20%3A%20Msg%20CoreArbitratingSetup%0Am_swap%20%3C-%20peerd%20%3A%20Msg%20CoreArbitratingSetup%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Arbitrating%20Lock%0A%2F%2F%20TODO%3A%20During%20replay%20of%20Checkpoint%20Alice%200%2C%20Alice%20has%20to%20rewatch%20these%202%20txs%20(arbitrating%20already%20final%20then)%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Cancel%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Refund%0A%0Am_wallet%20%3C-%20m_swap%20%3A%20Msg%20CoreArbitratingSetup%0Am_wallet%20-%3E%20m_checkpoint%20%3A%20CheckpointWalletAlicePrelockBob%0Am_wallet%20-%3E%20m_swap%20%3A%20Ctl%20RefundProcedureSignatures%0Am_swap%20-%3E%20m_checkpoint%20%3A%20CheckpointSwapAlicePrelockBob%0Am_swap%20-%3E%20peerd%20%3A%20Msg%20RefundProcedureSignatures%0Apeerd%20-%3E%20t_swap%20%3A%20Msg%20RefundProcedureSignatures%0At_wallet%20%3C-%20t_swap%20%3A%20Msg%20RefundProcedureSignatures%0At_wallet%20-%3E%20t_swap%3ACtl%20Datum%3A%3ASignedArbitratingLock%0A%2F%2F%20DONE%3A%20do%20we%20know%20that%20same%20inputs%20are%20being%20used%20in%20case%20of%20replay%3F%0A%2F%2F%20-%3E%20yes%2C%20but%20create%20different%20sig%0At_wallet%20-%3E%20t_checkpoint%20%3A%20CheckpointWalletBobPreBuySig%0At_wallet%20-%3E%20t_swap%20%3A%20Ctl%20BuyProcedureSignature%0At_swap%20-%3E%20t_checkpoint%20%3A%20CheckpointSwapBobPreBuySig%0At_syncer%20%3C-%20t_swap%20%3A%20Broadcast%20Arbitrating%20Lock%0At_swap%20-%3E%20t_syncer%20%3A%20Watch%20Accordant%20Lock%0At_swap%20-%3E%20t_syncer%20%3A%20Watch%20Buy%0A%0Aparallel%0At_syncer%20-%3E%20%20t_swap%20%3A%20Arbitrating%20Lock%20final%0A%2F%2F%20TODO%3A%20maybe%20instead%20of%20checkpointing%20earlier%2C%20reach%20this%20stage%20via%20a%20message%20from%20walletd%20in%20lieu%20of%20the%20syncer%0Am_swap%20%3C-%20m_syncer%20%3A%20Arbitrating%20Lock%20final%0Aparallel%20off%0A%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Accordant%20Lock%0A%0Aparallel%0Am_swap%20%3C-%20m_syncer%20%3A%20Accordant%20Lock%20final%0At_swap%20%3C-%20t_syncer%20%3A%20Accordant%20Lock%20final%0Aparallel%20off%0A%0Apeerd%20%3C-%20t_swap%20%3A%20Msg%20BuyProcedureSignature%0Am_swap%20%3C-%20peerd%20%3A%20Msg%20BuyProcedureSignature%0Am_swap%20-%3E%20m_checkpoint%20%3A%20CheckpointSwapAlicePreBuy%0Am_swap%20-%3E%20m_syncer%3AWatch%20Buy%0Am_swap%20-%3E%20m_wallet%20%3A%20Msg%20BuyProcedureSignature%0Am_wallet%20-%3E%20m_checkpoint%20%3A%20CheckpointWalletAlicePreBuy%0A%3D%3DSwap%20Setup%20Complete%3D%3D%0A%3D%3DBuy%20Procedure%3A%20Bob%20is%20left%2C%20Alice%20right%3D%3D%0A%0Am_swap%20%3C-%20m_wallet%20%3A%20Fully%20signed%20buy%0Am_swap%20-%3E%20m_syncer%20%3A%20Broadcast%20buy%0Aparallel%0Am_swap%20%3C-%20m_syncer%20%3A%20Event%3A%20buy%20seen%20on%20mempool%0At_swap%20%3C-%20t_syncer%20%3A%20Event%3A%20buy%20seen%20on%20mempool%0Aparallel%20off%0At_wallet%20%3C-%20t_swap%20%3A%20Ctl%20Buy%20signature%0At_wallet%20-%3E%20t_wallet%20%3A%20recover%20accordant%20keys%0A%0A%3D%3DCancel%20Init%20t%20%3E%20t0%3A%20Bob%20is%20left%2C%20Alice%20right%2C%20either%20have%20a%20fully%20signed%20and%20valid%20cancel%20tx%2C%20and%20can%20publish%3D%3D%0A%2F%2F%20TODO%3A%20insert%20Ctl%20Tx%3A%3ACancel%20from%20wallet%20to%20swap%20(or%20do%20it%20after%20CoreArbitratingSetup%2C%20as%20in%20the%20code%20atm)%0Aparallel%0At_swap%20%3C-%20t_syncer%20%3A%20Ctl%20Cancel%20valid%0Am_swap%20%3C-%20m_syncer%20%3A%20Ctl%20Cancel%20valid%0Aparallel%20off%0Aparallel%0Am_swap%20-%3E%20m_syncer%20%3A%20Broadcast%20cancel%20(Alice%20inits)%0At_swap%20-%3E%20t_syncer%20%3A%20Broadcast%20cancel%20(Bob%20inits)%0Aparallel%20off%0A%3D%3DCancel%20detected%20t%20%3E%20t0%3A%20Bob%20is%20left%2C%20Alice%20right%3D%3D%0At_swap%20%3C-%20t_syncer%3A%20Event%20cancel%20final%0At_swap%20-%3E%20t_syncer%20%3A%20Broadcast%20refund%0Aparallel%0At_syncer%20-%3E%20t_swap%20%3A%20Event%3A%20refund%20seen%0Am_syncer%20-%3E%20m_swap%20%3A%20Event%3A%20refund%20seen%0Aparallel%20off%0Am_swap%20-%3E%20m_wallet%20%3A%20Ctl%20Tx%3A%3ARefund%20tx%0Am_wallet%20-%3E%20m_wallet%20%3A%20recover%20accordant%20keys%0A%0A%3D%3D%20Punish%20process%20t%20%3E%20t1%20%3E%20t0%20%3D%3D%0A%2F%2F%20TODO%3A%20none%20of%20this%20is%20true%20except%20last%20step%0Am_swap%3C-m_syncer%3ACtl%20Event%3A%20punish%20valid%0Am_swap-%3Em_wallet%3ACtl%20Event%3A%20punish%20valid%0Am_wallet-%3Em_wallet%3Afully%20sign%20punish%0A%2F%2F%20TODO%3A%20in%20the%20code%2C%20this%20actually%20already%20happens%20after%20CoreArbitratingSetup%20-%20think%20about%20this%20and%20move%20either%20this%20or%20that%0Am_swap%3C-m_wallet%3ACtl%20Tx%3A%3APunish%0Am_swap-%3Em_syncer%3ACtl%20Broadcast%20punish%20tx%0A</desc><defs/><g><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g><rect fill="white" stroke="none" x="0" y="0" width="3056" height="10712"/></g><g><text fill="black" stroke="none" font-family="sans-serif" font-size="16.5pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1454.509185461842" y="39.58145414999999" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Farcaster node</text></g><g/><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 154.895423907 L 69.52660506176173 10712.588627516989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 154.895423907 L 240.92694725433986 10712.588627516989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 154.895423907 L 703.1621409168399 10712.588627516989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 154.895423907 L 1015.5050499387149 10712.588627516989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1179.0142308263985 154.895423907 L 1179.0142308263985 10712.588627516989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1403.1034741715157 154.895423907 L 1403.1034741715157 10712.588627516989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 154.895423907 L 1518.5346521295119 10712.588627516989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1638.035265207137 154.895423907 L 1638.035265207137 10712.588627516989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 154.895423907 L 1845.0164152905354 10712.588627516989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2038.1610516073324 154.895423907 L 2038.1610516073324 10712.588627516989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 154.895423907 L 2325.285313873348 10712.588627516989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2783.4546506022543 154.895423907 L 2783.4546506022543 10712.588627516989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2983.3852213672935 154.895423907 L 2983.3852213672935 10712.588627516989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/></g><g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 13.193818050000004 83.648806437 L 125.85939207352345 83.648806437 L 125.85939207352345 154.895423907 L 13.193818050000004 154.895423907 L 13.193818050000004 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="41.82440321850001" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_syncer</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 187.44311348964845 83.648806437 L 294.4107810190313 83.648806437 L 294.4107810190313 154.895423907 L 187.44311348964845 154.895423907 L 187.44311348964845 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="216.07369865814846" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_wallet</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 651.3067937854493 83.648806437 L 755.0174880482305 83.648806437 L 755.0174880482305 154.895423907 L 651.3067937854493 154.895423907 L 651.3067937854493 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="679.9373789539493" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_swap</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 945.7184360226563 83.648806437 L 1085.2916638547736 83.648806437 L 1085.2916638547736 154.895423907 L 945.7184360226563 154.895423907 L 945.7184360226563 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="974.3490211911563" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_checkpoint</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1111.6792999547736 83.648806437 L 1246.3491616980236 83.648806437 L 1246.3491616980236 154.895423907 L 1111.6792999547736 154.895423907 L 1111.6792999547736 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1140.3098851232735" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_farcasterd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1361.4378243057502 83.648806437 L 1444.7691240372815 83.648806437 L 1444.7691240372815 154.895423907 L 1361.4378243057502 154.895423907 L 1361.4378243057502 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1390.06840947425" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_cli</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1471.1567601372815 83.648806437 L 1565.9125441217425 83.648806437 L 1565.9125441217425 154.895423907 L 1471.1567601372815 154.895423907 L 1471.1567601372815 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1499.7873453057814" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">peerd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1592.3001802217425 83.648806437 L 1683.7703501925316 83.648806437 L 1683.7703501925316 154.895423907 L 1592.3001802217425 154.895423907 L 1592.3001802217425 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1620.9307653902424" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_cli</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1773.6120492992816 83.648806437 L 1916.4207812817895 83.648806437 L 1916.4207812817895 154.895423907 L 1773.6120492992816 154.895423907 L 1773.6120492992816 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1802.2426344677815" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_farcasterd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1964.305002571645 83.648806437 L 2112.01710064302 83.648806437 L 2112.01710064302 154.895423907 L 1964.305002571645 154.895423907 L 1964.305002571645 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1992.935587740145" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_checkpoint</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 2269.3605316223284 83.648806437 L 2381.2100961243673 83.648806437 L 2381.2100961243673 154.895423907 L 2269.3605316223284 154.895423907 L 2269.3605316223284 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2297.9911167908285" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_swap</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 2725.901381717934 83.648806437 L 2841.0079194865743 83.648806437 L 2841.0079194865743 154.895423907 L 2725.901381717934 154.895423907 L 2725.901381717934 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2754.531966886434" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_wallet</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 2922.9829992359028 83.648806437 L 3043.787443498684 83.648806437 L 3043.787443498684 154.895423907 L 2922.9829992359028 154.895423907 L 2922.9829992359028 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2951.613584404403" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_syncer</text></g></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 229.22059892200002 L 3042.80618195 229.22059892200002 M 13.19381805 238.01647762200002 L 3042.80618195 238.01647762200002 M 13.19381805 246.81235632200003 L 3042.80618195 246.81235632200003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1286.1038792842187 207.67069610700003 L 1769.8961207157813 207.67069610700003 L 1769.8961207157813 268.362259137 L 1286.1038792842187 268.362259137 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1323.0465698242188" y="244.61338664700003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Setup and Commit-Reveal: Bob and Alice can be on both sides</text></g><g><g><rect fill="white" stroke="none" x="1876.2417846755352" y="307.94371328700004" width="120.3714910253125" height="34.30392693"/></g><g><rect fill="white" stroke="none" x="1876.2417846755352" y="334.33134938700005" width="66.58483941398437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1880.1999300905352" y="331.69258577700003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch farcasterd</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1880.1999300905352" y="358.08022187700004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">manually</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 368.63527631700003 L 1950.5669596905354 368.63527631700003 L 1950.5669596905354 402.939203247 L 1866.7422356795355 402.939203247" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,402.939203247) translate(-1845.0164152905354,-402.939203247)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 391.944354872 L 1845.0164152905354 402.939203247 L 1867.0061120405353 413.934051622 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1876.2417846755352" y="442.52065739700004" width="100.82247979484374" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1880.1999300905352" y="466.26952988700003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch walletd</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 476.824584327 L 1950.5669596905354 476.824584327 L 1950.5669596905354 511.128511257 L 1866.7422356795355 511.128511257" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,511.128511257) translate(-1845.0164152905354,-511.128511257)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 500.133662882 L 1845.0164152905354 511.128511257 L 1867.0061120405353 522.123359632 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2282.5787562447736" y="550.709965407" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2286.536901659774" y="574.4588378970001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2783.4546506022543 585.013892337 L 1866.7422356795355 585.013892337" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,585.013892337) translate(-1845.0164152905354,-585.013892337)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 574.0190439620001 L 1845.0164152905354 585.013892337 L 1867.0061120405353 596.008740712 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1669.260634592137" y="624.595346487" width="144.53041131339845" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1673.218780007137" y="648.3442189770001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">MakeOffer (deferred)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1638.035265207137 658.899273417 L 1823.2905949015353 658.899273417" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,658.899273417) translate(-1845.0164152905354,-658.899273417)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1823.0267185405355 647.9044250420001 L 1845.0164152905354 658.899273417 L 1823.0267185405355 669.894121792 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2271.172170551414" y="698.480727567" width="86.12672478996093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2275.1303159664144" y="722.2296000570001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl GetKeys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 732.784654497 L 2761.7288302132542 732.784654497" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,732.784654497) translate(-2783.4546506022543,-732.784654497)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2761.4649538522544 721.7898061220001 L 2783.4546506022543 732.784654497 L 2761.4649538522544 743.779502872 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2203.527250202293" y="772.366108647" width="221.41656548820313" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2207.4853956172933" y="796.1149811370001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Keys (not to be held on state)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2783.4546506022543 806.670035577 L 1866.7422356795355 806.670035577" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,806.670035577) translate(-1845.0164152905354,-806.670035577)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 795.6751872020001 L 1845.0164152905354 806.670035577 L 1867.0061120405353 817.664883952 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1876.2417846755352" y="846.251489727" width="152.68359429679688" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1880.1999300905352" y="870.0003622170001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">MakeOffer (continues)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 880.555416657 L 1950.5669596905354 880.555416657 L 1950.5669596905354 914.859343587 L 1866.7422356795355 914.859343587" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,914.859343587) translate(-1845.0164152905354,-914.859343587)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 903.8644952120001 L 1845.0164152905354 914.859343587 L 1867.0061120405353 925.854191962 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1876.2417846755352" y="954.4407977369999" width="51.11598260246094" height="34.30392693"/></g><g><rect fill="white" stroke="none" x="1876.2417846755352" y="980.8284338369999" width="83.70723016105468" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1880.1999300905352" y="978.189670227" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1880.1999300905352" y="1004.577306327" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">peerd listen</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 1015.1323607669999 L 1950.5669596905354 1015.1323607669999 L 1950.5669596905354 1049.436287697 L 1866.7422356795355 1049.436287697" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,1049.436287697) translate(-1845.0164152905354,-1049.436287697)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 1038.441439322 L 1845.0164152905354 1049.436287697 L 1867.0061120405353 1060.4311360719998 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1210.2396002113983" y="1089.017741847" width="120.3714910253125" height="34.30392693"/></g><g><rect fill="white" stroke="none" x="1210.2396002113983" y="1115.405377947" width="66.58483941398437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1214.1977456263983" y="1112.766614337" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch farcasterd</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1214.1977456263983" y="1139.154250437" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">manually</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1179.0142308263985 1149.709304877 L 1284.5647752263985 1149.709304877 L 1284.5647752263985 1184.013231807 L 1200.7400512153986 1184.013231807" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,1184.013231807) translate(-1179.0142308263985,-1184.013231807)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1201.0039275763984 1173.018383432 L 1179.0142308263985 1184.013231807 L 1201.0039275763984 1195.008080182 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1210.2396002113983" y="1223.5946859570001" width="100.82247979484374" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1214.1977456263983" y="1247.343558447" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch walletd</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1179.0142308263985 1257.8986128870001 L 1284.5647752263985 1257.8986128870001 L 1284.5647752263985 1292.2025398170001 L 1200.7400512153986 1292.2025398170001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,1292.2025398170001) translate(-1179.0142308263985,-1292.2025398170001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1201.0039275763984 1281.2076914420002 L 1179.0142308263985 1292.2025398170001 L 1201.0039275763984 1303.197388192 Z"/></g></g><g><g><rect fill="white" stroke="none" x="678.3138123387481" y="1331.783993967" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="682.2719577537481" y="1355.532866457" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 1366.087920897 L 1157.2884104373984 1366.087920897" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,1366.087920897) translate(-1179.0142308263985,-1366.087920897)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1157.0245340763986 1355.093072522 L 1179.0142308263985 1366.087920897 L 1157.0245340763986 1377.082769272 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1210.2396002113985" y="1405.6693750470001" width="161.6385045751172" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1214.1977456263985" y="1429.418247537" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeOffer (deferred)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1403.1034741715157 1439.9733019770001 L 1200.7400512153986 1439.9733019770001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,1439.9733019770001) translate(-1179.0142308263985,-1439.9733019770001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1201.0039275763984 1428.9784536020002 L 1179.0142308263985 1439.9733019770001 L 1201.0039275763984 1450.968150352 Z"/></g></g><g><g><rect fill="white" stroke="none" x="666.9072266453887" y="1479.5547561270002" width="86.12672478996093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="670.8653720603887" y="1503.3036286170002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl GetKeys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1179.0142308263985 1513.8586830570002 L 262.65276764333987 1513.8586830570002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,1513.8586830570002) translate(-240.92694725433986,-1513.8586830570002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 1502.8638346820003 L 240.92694725433986 1513.8586830570002 L 262.91664400433984 1524.8535314320002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="599.2623062962676" y="1553.4401372070004" width="221.41656548820313" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="603.2204517112676" y="1577.1890096970003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Keys (not to be held on state)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 1587.7440641370004 L 1157.2884104373984 1587.7440641370004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,1587.7440641370004) translate(-1179.0142308263985,-1587.7440641370004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1157.0245340763986 1576.7492157620004 L 1179.0142308263985 1587.7440641370004 L 1157.0245340763986 1598.7389125120003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1210.2396002113983" y="1627.3255182870005" width="169.79168755851563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1214.1977456263983" y="1651.0743907770004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeOffer (continues)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1179.0142308263985 1661.6294452170005 L 1284.5647752263985 1661.6294452170005 L 1284.5647752263985 1695.9333721470005 L 1200.7400512153986 1695.9333721470005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,1695.9333721470005) translate(-1179.0142308263985,-1695.9333721470005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1201.0039275763984 1684.9385237720005 L 1179.0142308263985 1695.9333721470005 L 1201.0039275763984 1706.9282205220004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1210.2396002113983" y="1735.5148262970004" width="51.11598260246094" height="34.30392693"/></g><g><rect fill="white" stroke="none" x="1210.2396002113983" y="1761.9024623970004" width="100.82963616691406" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1214.1977456263983" y="1759.2636987870003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1214.1977456263983" y="1785.6513348870003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">peerd connect</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1179.0142308263985 1796.2063893270004 L 1284.5647752263985 1796.2063893270004 L 1284.5647752263985 1830.5103162570003 L 1200.7400512153986 1830.5103162570003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,1830.5103162570003) translate(-1179.0142308263985,-1830.5103162570003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1201.0039275763984 1819.5154678820004 L 1179.0142308263985 1830.5103162570003 L 1201.0039275763984 1841.5051646320003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="663.3710709447051" y="1870.0917704070005" width="93.19903619132812" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="667.3292163597051" y="1893.8406428970004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeOffer</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1179.0142308263985 1904.3956973370005 L 262.65276764333987 1904.3956973370005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,1904.3956973370005) translate(-240.92694725433986,-1904.3956973370005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 1893.4008489620005 L 240.92694725433986 1904.3956973370005 L 262.91664400433984 1915.3905457120004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="272.15231663933986" y="1943.9771514870006" width="126.87829644523437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="276.11046205433985" y="1967.7260239770005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">create taker wallet</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 1978.2810784170006 L 346.4774916543399 1978.2810784170006 L 346.4774916543399 2012.5850053470006 L 262.65276764333987 2012.5850053470006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,2012.5850053470006) translate(-240.92694725433986,-2012.5850053470006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 2001.5901569720006 L 240.92694725433986 2012.5850053470006 L 262.91664400433984 2023.5798537220005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="652.6337891453887" y="2052.1664594970002" width="114.67359978996093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="656.5919345603887" y="2075.915331987" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl LaunchSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 2086.4703864270004 L 1157.2884104373984 2086.4703864270004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,2086.4703864270004) translate(-1179.0142308263985,-2086.4703864270004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1157.0245340763986 2075.4755380520005 L 1179.0142308263985 2086.4703864270004 L 1157.0245340763986 2097.4652348020004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="909.4314091699981" y="2126.0518405770003" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="913.3895545849981" y="2149.8007130670003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 2160.3557675070006 L 1157.2884104373984 2160.3557675070006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,2160.3557675070006) translate(-1179.0142308263985,-2160.3557675070006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1157.0245340763986 2149.3609191320006 L 1179.0142308263985 2160.3557675070006 L 1157.0245340763986 2171.3506158820005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1210.2396002113983" y="2199.9372216570005" width="98.36720330558593" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1214.1977456263983" y="2223.6860941470004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch syncer</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1179.0142308263985 2234.241148587 L 1284.5647752263985 2234.241148587 L 1284.5647752263985 2268.5450755170004 L 1200.7400512153986 2268.5450755170004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,2268.5450755170004) translate(-1179.0142308263985,-2268.5450755170004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1201.0039275763984 2257.5502271420005 L 1179.0142308263985 2268.5450755170004 L 1201.0039275763984 2279.5399238920004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="892.316159536209" y="2308.1265296670003" width="97.5440526708203" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="896.274304951209" y="2331.8754021570003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1179.0142308263985 2342.4304565970006 L 724.8879613058399 2342.4304565970006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,2342.4304565970006) translate(-703.1621409168399,-2342.4304565970006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 2331.4356082220006 L 703.1621409168399 2342.4304565970006 L 725.1518376668399 2353.4253049720005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1047.8351439914766" y="2382.0119107470005" width="126.02650506339843" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1051.7932894064766" y="2405.7607832370004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg TakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 2416.3158376770007 L 1496.8088317405118 2416.3158376770007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1518.5346521295119,2416.3158376770007) translate(-1518.5346521295119,-2416.3158376770007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1496.544955379512 2405.3209893020007 L 1518.5346521295119 2416.3158376770007 L 1496.544955379512 2427.3106860520006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1618.7622811783244" y="2455.8972918270006" width="126.02650506339843" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1622.7204265933244" y="2479.6461643170005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg TakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 2490.201218757001 L 1823.2905949015353 2490.201218757001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,2490.201218757001) translate(-1845.0164152905354,-2490.201218757001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1823.0267185405355 2479.206370382001 L 1845.0164152905354 2490.201218757001 L 1823.0267185405355 2501.1960671320007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2250.391950519676" y="2529.7826729070007" width="127.6871648534375" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2254.350095934676" y="2553.5315453970006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl BitcoinAddress</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 2564.086599837001 L 2761.7288302132542 2564.086599837001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,2564.086599837001) translate(-2783.4546506022543,-2564.086599837001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2761.4649538522544 2553.091751462001 L 2783.4546506022543 2564.086599837001 L 2761.4649538522544 2575.081448212001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2251.2222804146954" y="2603.668053987001" width="126.02650506339843" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2255.1804258296957" y="2627.4169264770007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg TakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 2637.971980917001 L 2761.7288302132542 2637.971980917001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,2637.971980917001) translate(-2783.4546506022543,-2637.971980917001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2761.4649538522544 2626.977132542001 L 2783.4546506022543 2637.971980917001 L 2761.4649538522544 2648.966829292001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2814.680019987254" y="2677.553435067001" width="135.0171666844922" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2818.6381654022543" y="2701.302307557001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">create maker wallet</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2783.4546506022543 2711.8573619970007 L 2889.0051950022544 2711.8573619970007 L 2889.0051950022544 2746.161288927001 L 2805.1804709912544 2746.161288927001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,2746.161288927001) translate(-2783.4546506022543,-2746.161288927001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2805.444347352254 2735.166440552001 L 2783.4546506022543 2746.161288927001 L 2805.444347352254 2757.156137302001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2256.898733051414" y="2785.742743077001" width="114.67359978996093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2260.8568784664144" y="2809.4916155670007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl LaunchSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2783.4546506022543 2820.046670007001 L 1866.7422356795355 2820.046670007001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,2820.046670007001) translate(-1845.0164152905354,-2820.046670007001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 2809.051821632001 L 1845.0164152905354 2820.046670007001 L 1867.0061120405353 2831.041518382001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2053.4940878803204" y="2859.628124157001" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2057.4522332953206" y="2883.376996647001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 2893.932051087001 L 1866.7422356795355 2893.932051087001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,2893.932051087001) translate(-1845.0164152905354,-2893.932051087001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 2882.937202712001 L 1845.0164152905354 2893.932051087001 L 1867.0061120405353 2904.926899462001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1876.2417846755352" y="2933.513505237001" width="98.36720330558593" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1880.1999300905352" y="2957.262377727001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch syncer</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 2967.817432167001 L 1950.5669596905354 2967.817432167001 L 1950.5669596905354 3002.121359097001 L 1866.7422356795355 3002.121359097001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,3002.121359097001) translate(-1845.0164152905354,-3002.121359097001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 2991.126510722001 L 1845.0164152905354 3002.121359097001 L 1867.0061120405353 3013.116207472001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2033.937897389598" y="3041.702813247001" width="102.4259343846875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2037.896042804598" y="3065.451685737001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl MakeSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 3076.006740177001 L 2303.559493484348 3076.006740177001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,3076.006740177001) translate(-2325.285313873348,-3076.006740177001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2303.295617123348 3065.011891802001 L 2325.285313873348 3076.006740177001 L 2303.295617123348 3087.001588552001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1856.4557896127972" y="3115.588194327001" width="130.90838677726563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1860.4139350277972" y="3139.337066817001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg MakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 3149.8921212570012 L 1540.260472518512 3149.8921212570012" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1518.5346521295119,3149.8921212570012) translate(-1518.5346521295119,-3149.8921212570012)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1540.5243488795118 3138.8972728820013 L 1518.5346521295119 3149.8921212570012 L 1540.5243488795118 3160.886969632001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1045.394203134543" y="3189.473575407001" width="130.90838677726563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1049.352348549543" y="3213.222447897001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg MakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 3223.7775023370014 L 724.8879613058399 3223.7775023370014" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,3223.7775023370014) translate(-703.1621409168399,-3223.7775023370014)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 3212.7826539620014 L 703.1621409168399 3223.7775023370014 L 725.1518376668399 3234.7723507120013 Z"/></g></g><g><g><rect fill="white" stroke="none" x="329.69833847517975" y="3263.3589564870013" width="113.29206902824218" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="333.65648389017974" y="3287.107828977001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl WatchHeight</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3297.6628834170015 L 91.25242545076173 3297.6628834170015" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,3297.6628834170015) translate(-69.52660506176173,-3297.6628834170015)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 3286.6680350420015 L 69.52660506176173 3297.6628834170015 L 91.51630181176174 3308.6577317920014 Z"/></g></g><g><g><rect fill="white" stroke="none" x="246.16940018172272" y="3337.2443375670014" width="280.34994561515623" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="250.1275455967227" y="3360.9932100570013" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Watch Arbitrating Funding Address</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3371.5482644970016 L 91.25242545076173 3371.5482644970016" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,3371.5482644970016) translate(-69.52660506176173,-3371.5482644970016)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 3360.5534161220016 L 69.52660506176173 3371.5482644970016 L 91.51630181176174 3382.5431128720015 Z"/></g></g><g><g><rect fill="white" stroke="none" x="406.5903506969571" y="3411.1297186470015" width="130.90838677726563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="410.5484961119571" y="3434.8785911370014" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg MakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3445.4336455770017 L 262.65276764333987 3445.4336455770017" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,3445.4336455770017) translate(-240.92694725433986,-3445.4336455770017)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 3434.4387972020018 L 240.92694725433986 3445.4336455770017 L 262.91664400433984 3456.4284939520016 Z"/></g></g><g><g><rect fill="white" stroke="none" x="361.76218754998445" y="3485.0150997270016" width="220.56471307121095" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="365.72033296498444" y="3508.7639722170015" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl RevealProof (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 3519.319026657002 L 681.4363205278399 3519.319026657002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,3519.319026657002) translate(-703.1621409168399,-3519.319026657002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 3508.324178282002 L 703.1621409168399 3519.319026657002 L 681.1724441668399 3530.3138750320018 Z"/></g></g><g><g><rect fill="white" stroke="none" x="995.6769942722383" y="3558.9004808070017" width="230.342804501875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="999.6351396872383" y="3582.6493532970017" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3593.204407737002 L 1496.8088317405118 3593.204407737002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1518.5346521295119,3593.204407737002) translate(-1518.5346521295119,-3593.204407737002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1496.544955379512 3582.209559362002 L 1518.5346521295119 3593.204407737002 L 1496.544955379512 3604.199256112002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1013.1966704807344" y="3632.785861887002" width="195.30345208488282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1017.1548158957344" y="3656.5347343770018" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3667.089788817002 L 1496.8088317405118 3667.089788817002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1518.5346521295119,3667.089788817002) translate(-1518.5346521295119,-3667.089788817002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1496.544955379512 3656.094940442002 L 1518.5346521295119 3667.089788817002 L 1496.544955379512 3678.084637192002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1806.7385807504925" y="3706.671242967002" width="230.342804501875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1810.6967261654925" y="3730.420115457002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 3740.975169897002 L 2303.559493484348 3740.975169897002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,3740.975169897002) translate(-2325.285313873348,-3740.975169897002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2303.295617123348 3729.980321522002 L 2325.285313873348 3740.975169897002 L 2303.295617123348 3751.970018272002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2411.499971588426" y="3780.556624047002" width="285.74002129875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2415.458117003426" y="3804.305496537002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg RevealProof (taker is sender) </text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 3814.8605509770023 L 2761.7288302132542 3814.8605509770023" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,3814.8605509770023) translate(-2783.4546506022543,-3814.8605509770023)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2761.4649538522544 3803.8657026020023 L 2783.4546506022543 3814.8605509770023 L 2761.4649538522544 3825.855399352002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2356.510683258348" y="3854.442005127002" width="271.881867001875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2360.468828673348" y="3878.190877617002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg RevealProof</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 3888.745932057002 L 2430.835858273348 3888.745932057002 L 2430.835858273348 3923.049858987002 L 2347.011134262348 3923.049858987002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,3923.049858987002) translate(-2325.285313873348,-3923.049858987002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2347.275010623348 3912.055010612002 L 2325.285313873348 3923.049858987002 L 2347.275010623348 3934.044707362002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1824.2582569589886" y="3962.631313137002" width="195.30345208488282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1828.2164023739886" y="3986.380185627002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 3996.9352400670023 L 2303.559493484348 3996.9352400670023" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,3996.9352400670023) translate(-2325.285313873348,-3996.9352400670023)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2303.295617123348 3985.9403916920023 L 2325.285313873348 3996.9352400670023 L 2303.295617123348 4007.930088442002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2010.2943961078597" y="4036.516694217002" width="149.71293694816407" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2014.2525415228597" y="4060.265566707002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ask for funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 4070.8206211470024 L 1866.7422356795355 4070.8206211470024" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,4070.8206211470024) translate(-1845.0164152905354,-4070.8206211470024)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 4059.8257727720024 L 1845.0164152905354 4070.8206211470024 L 1867.0061120405353 4081.8154695220023 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2356.510683258348" y="4110.402075297002" width="236.84252984367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2360.468828673348" y="4134.150947787002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg Reveal</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 4144.7060022270025 L 2430.835858273348 4144.7060022270025 L 2430.835858273348 4179.009929157002 L 2347.011134262348 4179.009929157002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,4179.009929157002) translate(-2325.285313873348,-4179.009929157002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2347.275010623348 4168.015080782002 L 2325.285313873348 4179.009929157002 L 2347.275010623348 4190.004777532003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2431.056139190965" y="4218.591383307003" width="246.62768609367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2435.0142846059653" y="4242.340255797003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 4252.895310237002 L 2761.7288302132542 4252.895310237002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,4252.895310237002) translate(-2783.4546506022543,-4252.895310237002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2761.4649538522544 4241.900461862002 L 2783.4546506022543 4252.895310237002 L 2761.4649538522544 4263.890158612003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2597.6892331061995" y="4292.476764387003" width="113.29206902824218" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2601.6473785211997" y="4316.225636877003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl WatchHeight</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 4326.7806913170025 L 2961.6594009782934 4326.7806913170025" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2983.3852213672935,4326.7806913170025) translate(-2983.3852213672935,-4326.7806913170025)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2961.3955246172936 4315.785842942002 L 2983.3852213672935 4326.7806913170025 L 2961.3955246172936 4337.775539692003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2514.1602948127424" y="4366.362145467003" width="280.34994561515623" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2518.1184402277427" y="4390.111017957003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Watch Arbitrating Funding Address</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 4400.666072397003 L 2961.6594009782934 4400.666072397003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2983.3852213672935,4400.666072397003) translate(-2983.3852213672935,-4400.666072397003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2961.3955246172936 4389.671224022002 L 2983.3852213672935 4400.666072397003 L 2961.3955246172936 4411.660920772003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2545.2518933234846" y="4440.247526547003" width="218.16674859367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2549.210038738485" y="4463.996399037003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Arbitrating Funding event</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2983.3852213672935 4474.551453477003 L 2347.011134262348 4474.551453477003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,4474.551453477003) translate(-2325.285313873348,-4474.551453477003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2347.275010623348 4463.556605102002 L 2325.285313873348 4474.551453477003 L 2347.275010623348 4485.546301852003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2477.8957464297346" y="4514.132907627003" width="152.94847161613282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2481.853891844735" y="4537.8817801170035" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Ctl Tx::Funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 4548.436834557003 L 2761.7288302132542 4548.436834557003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,4548.436834557003) translate(-2783.4546506022543,-4548.436834557003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2761.4649538522544 4537.441986182002 L 2783.4546506022543 4548.436834557003 L 2761.4649538522544 4559.431682932003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2461.990236481004" y="4588.018288707003" width="184.75949151359376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2465.9483818960043" y="4611.767161197004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Ctl FundingUpdated</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2783.4546506022543 4622.322215637003 L 2347.011134262348 4622.322215637003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,4622.322215637003) translate(-2325.285313873348,-4622.322215637003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2347.275010623348 4611.327367262003 L 2325.285313873348 4622.322215637003 L 2347.275010623348 4633.317064012003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2356.510683258348" y="4661.903669787003" width="395.71859795890623" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2360.468828673348" y="4685.652542277004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg RevealProof (taker is sender) </text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 4696.207596717003 L 2761.7288302132542 4696.207596717003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,4696.207596717003) translate(-2783.4546506022543,-4696.207596717003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2761.4649538522544 4685.212748342003 L 2783.4546506022543 4696.207596717003 L 2761.4649538522544 4707.2024450920035 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2376.066866119676" y="4735.789050867003" width="356.60623223625" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2380.025011534676" y="4759.537923357004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 4770.092977797003 L 2761.7288302132542 4770.092977797003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,4770.092977797003) translate(-2783.4546506022543,-4770.092977797003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2761.4649538522544 4759.098129422003 L 2783.4546506022543 4770.092977797003 L 2761.4649538522544 4781.087826172004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2440.0181905825666" y="4809.6744319470035" width="228.70358331046876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2443.976335997567" y="4833.423304437004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2783.4546506022543 4843.978358877003 L 2347.011134262348 4843.978358877003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,4843.978358877003) translate(-2325.285313873348,-4843.978358877003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2347.275010623348 4832.983510502003 L 2325.285313873348 4843.978358877003 L 2347.275010623348 4854.973207252004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1802.6691456308636" y="4883.559813027004" width="238.48167474113282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1806.6272910458636" y="4907.308685517004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 4917.863739957003 L 1540.260472518512 4917.863739957003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1518.5346521295119,4917.863739957003) translate(-1518.5346521295119,-4917.863739957003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1540.5243488795118 4906.868891582003 L 1518.5346521295119 4917.863739957003 L 1540.5243488795118 4928.858588332004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1820.1888218393597" y="4957.445194107004" width="203.44232232414063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1824.1469672543597" y="4981.194066597004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 4991.7491210370035 L 1540.260472518512 4991.7491210370035" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1518.5346521295119,4991.7491210370035) translate(-1518.5346521295119,-4991.7491210370035)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1540.5243488795118 4980.754272662003 L 1518.5346521295119 4991.7491210370035 L 1540.5243488795118 5002.743969412004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="991.6075591526094" y="5031.330575187004" width="238.48167474113282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="995.5657045676094" y="5055.079447677004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 5065.634502117004 L 724.8879613058399 5065.634502117004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5065.634502117004) translate(-703.1621409168399,-5065.634502117004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 5054.639653742003 L 703.1621409168399 5065.634502117004 L 725.1518376668399 5076.629350492004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="327.141589710629" y="5105.215956267004" width="289.80590874992185" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="331.09973512562897" y="5128.964828757004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5139.519883197004 L 262.65276764333987 5139.519883197004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5139.519883197004) translate(-240.92694725433986,-5139.519883197004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5128.525034822003 L 240.92694725433986 5139.519883197004 L 262.91664400433984 5150.514731572004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="734.3875103018399" y="5179.101337347003" width="271.881867001875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="738.3456557168399" y="5202.850209837004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg RevealProof</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5213.405264277004 L 808.71268531684 5213.405264277004 L 808.71268531684 5247.709191207004 L 724.8879613058399 5247.709191207004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5247.709191207004) translate(-703.1621409168399,-5247.709191207004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 5236.714342832003 L 703.1621409168399 5247.709191207004 L 725.1518376668399 5258.704039582004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1009.1272353611055" y="5287.290645357004" width="203.44232232414063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1013.0853807761055" y="5311.039517847004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 5321.594572287004 L 724.8879613058399 5321.594572287004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5321.594572287004) translate(-703.1621409168399,-5321.594572287004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 5310.599723912003 L 703.1621409168399 5321.594572287004 L 725.1518376668399 5332.589420662004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="866.2317173975372" y="5361.176026437004" width="149.71293694816407" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="870.1898628125372" y="5384.9248989270045" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ask for funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5395.479953367004 L 1157.2884104373984 5395.479953367004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,5395.479953367004) translate(-1179.0142308263985,-5395.479953367004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1157.0245340763986 5384.4851049920035 L 1179.0142308263985 5395.479953367004 L 1157.0245340763986 5406.474801742004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="734.3875103018399" y="5435.061407517003" width="236.84252984367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="738.3456557168399" y="5458.810280007004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg Reveal</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5469.365334447004 L 808.71268531684 5469.365334447004 L 808.71268531684 5503.669261377004 L 724.8879613058399 5503.669261377004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5503.669261377004) translate(-703.1621409168399,-5503.669261377004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 5492.674413002003 L 703.1621409168399 5503.669261377004 L 725.1518376668399 5514.664109752004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="344.66126591912507" y="5543.250715527004" width="254.7665563329297" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="348.61941133412506" y="5566.9995880170045" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5577.554642457004 L 262.65276764333987 5577.554642457004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5577.554642457004) translate(-240.92694725433986,-5577.554642457004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5566.5597940820035 L 240.92694725433986 5577.554642457004 L 262.91664400433984 5588.549490832004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="277.2609986924649" y="5617.136096607004" width="218.16674859367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="281.2191441074649" y="5640.884969097005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Arbitrating Funding event</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 5651.440023537004 L 681.4363205278399 5651.440023537004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5651.440023537004) translate(-703.1621409168399,-5651.440023537004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 5640.445175162004 L 703.1621409168399 5651.440023537004 L 681.1724441668399 5662.434871912004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="395.5703082775235" y="5691.021477687004" width="152.94847161613282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="399.5284536925235" y="5714.770350177005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Ctl Tx::Funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5725.325404617004 L 262.65276764333987 5725.325404617004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5725.325404617004) translate(-240.92694725433986,-5725.325404617004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5714.330556242004 L 240.92694725433986 5725.325404617004 L 262.91664400433984 5736.3202529920045 Z"/></g></g><g><g><rect fill="white" stroke="none" x="379.66479832879304" y="5764.906858767004" width="184.75949151359376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="383.62294374379303" y="5788.655731257005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Ctl FundingUpdated</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 5799.210785697004 L 681.4363205278399 5799.210785697004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5799.210785697004) translate(-703.1621409168399,-5799.210785697004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 5788.215937322004 L 703.1621409168399 5799.210785697004 L 681.1724441668399 5810.205634072005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="272.1523166393399" y="5838.792239847005" width="399.7844548925" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="276.1104620543399" y="5862.541112337005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5873.096166777004 L 262.65276764333987 5873.096166777004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5873.096166777004) translate(-240.92694725433986,-5873.096166777004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5862.101318402004 L 240.92694725433986 5873.096166777004 L 262.91664400433984 5884.091015152005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="289.67200047723054" y="5912.677620927005" width="364.74508721671873" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="293.63014589223053" y="5936.426493417005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5946.981547857004 L 262.65276764333987 5946.981547857004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5946.981547857004) translate(-240.92694725433986,-5946.981547857004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5935.986699482004 L 240.92694725433986 5946.981547857004 L 262.91664400433984 5957.976396232005 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 6008.112904822005 L 3042.80618195 6008.112904822005 M 13.19381805 6016.908783522004 L 3042.80618195 6016.908783522004 M 13.19381805 6025.704662222004 L 3042.80618195 6025.704662222004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1407.1453755610742 5986.563002007005 L 1648.8546244389258 5986.563002007005 L 1648.8546244389258 6047.254565037005 L 1407.1453755610742 6047.254565037005 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1444.0880661010742" y="6023.505692547004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Commit-Reveal Complete</text></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 6108.385922002005 L 3042.80618195 6108.385922002005 M 13.19381805 6117.181800702005 L 3042.80618195 6117.181800702005 M 13.19381805 6125.9776794020045 L 3042.80618195 6125.9776794020045" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 910.9003270381249 6086.836019187005 L 2145.099672961875 6086.836019187005 L 2145.099672961875 6147.527582217005 L 910.9003270381249 6147.527582217005 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="947.843017578125" y="6123.778709727005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Changing semantics: On Commit-Reveal, Maker and Taker were the key roles. From now on Bob or Alice are the key roles. Now t_ is bob_ on the left and m_ is alice_ on the right.</text></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 6208.658939182005 L 3042.80618195 6208.658939182005 M 13.19381805 6217.454817882005 L 3042.80618195 6217.454817882005 M 13.19381805 6226.250696582005 L 3042.80618195 6226.250696582005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1380.237744640664 6187.1090363670055 L 1675.762255359336 6187.1090363670055 L 1675.762255359336 6247.8005993970055 L 1380.237744640664 6247.8005993970055 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1417.180435180664" y="6224.051726907005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Swap setup: Bob is left, Alice right</text></g><g><g><rect fill="white" stroke="none" x="516.963701875375" y="6287.382053547006" width="222.5045934423047" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="520.921847290375" y="6311.130926037006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">CheckpointWalletBobPrelockBob</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 6321.685980477006 L 993.779229549715 6321.685980477006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,6321.685980477006) translate(-1015.5050499387149,-6321.685980477006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 6310.691132102005 L 1015.5050499387149 6321.685980477006 L 993.5153531887149 6332.680828852006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="388.64119298211335" y="6361.267434627006" width="166.80670220695313" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="392.59933839711334" y="6385.016307117006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 6395.571361557006 L 681.4363205278399 6395.571361557006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,6395.571361557006) translate(-703.1621409168399,-6395.571361557006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 6384.576513182005 L 703.1621409168399 6395.571361557006 L 681.1724441668399 6406.566209932006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="749.8422087408048" y="6435.152815707006" width="218.98277337394532" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="753.8003541558048" y="6458.9016881970065" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">CheckpointSwapBobPrelockBob</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6469.456742637006 L 993.779229549715 6469.456742637006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,6469.456742637006) translate(-1015.5050499387149,-6469.456742637006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 6458.461894262005 L 1015.5050499387149 6469.456742637006 L 993.5153531887149 6480.451591012006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="308.9181184434415" y="6509.038196787006" width="154.85250909171876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="312.87626385844146" y="6532.787069277007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Arbitrating Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6543.342123717006 L 91.25242545076173 6543.342123717006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,6543.342123717006) translate(-69.52660506176173,-6543.342123717006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 6532.347275342006 L 69.52660506176173 6543.342123717006 L 91.51630181176174 6554.336972092006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="337.0283326768399" y="6582.923577867006" width="98.63208062492187" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="340.9864780918399" y="6606.672450357007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Cancel</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6617.227504797006 L 91.25242545076173 6617.227504797006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,6617.227504797006) translate(-69.52660506176173,-6617.227504797006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 6606.232656422006 L 69.52660506176173 6617.227504797006 L 91.51630181176174 6628.2223531720065 Z"/></g></g><g><g><rect fill="white" stroke="none" x="336.20871445174225" y="6656.808958947006" width="100.27131707511718" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="340.16685986674224" y="6680.557831437007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Refund</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6691.112885877006 L 91.25242545076173 6691.112885877006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,6691.112885877006) translate(-69.52660506176173,-6691.112885877006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 6680.118037502006 L 69.52660506176173 6691.112885877006 L 91.51630181176174 6702.107734252007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1022.5559997043672" y="6730.694340027007" width="176.5847936376172" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1026.5141451193672" y="6754.443212517007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6764.998266957006 L 1496.8088317405118 6764.998266957006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1518.5346521295119,6764.998266957006) translate(-1518.5346521295119,-6764.998266957006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1496.544955379512 6754.003418582006 L 1518.5346521295119 6764.998266957006 L 1496.544955379512 6775.993115332007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1833.6175861826214" y="6804.579721107007" width="176.5847936376172" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1837.5757315976214" y="6828.328593597007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 6838.883648037006 L 2303.559493484348 6838.883648037006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,6838.883648037006) translate(-2325.285313873348,-6838.883648037006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2303.295617123348 6827.888799662006 L 2325.285313873348 6838.883648037006 L 2303.295617123348 6849.878496412007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2576.909013074461" y="6878.465102187007" width="154.85250909171876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2580.8671584894614" y="6902.213974677007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Arbitrating Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 6912.7690291170065 L 2961.6594009782934 6912.7690291170065" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2983.3852213672935,6912.7690291170065) translate(-2983.3852213672935,-6912.7690291170065)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2961.3955246172936 6901.774180742006 L 2983.3852213672935 6912.7690291170065 L 2961.3955246172936 6923.763877492007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2605.0192273078596" y="6952.350483267007" width="98.63208062492187" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2608.97737272286" y="6976.099355757007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Cancel</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 6986.654410197007 L 2961.6594009782934 6986.654410197007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2983.3852213672935,6986.654410197007) translate(-2983.3852213672935,-6986.654410197007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2961.3955246172936 6975.659561822006 L 2983.3852213672935 6986.654410197007 L 2961.3955246172936 6997.649258572007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2604.199609082762" y="7026.235864347007" width="100.27131707511718" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2608.157754497762" y="7049.984736837007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Refund</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 7060.539791277007 L 2961.6594009782934 7060.539791277007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2983.3852213672935,7060.539791277007) translate(-2983.3852213672935,-7060.539791277007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2961.3955246172936 7049.544942902006 L 2983.3852213672935 7060.539791277007 L 2961.3955246172936 7071.534639652007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2466.0775854189924" y="7100.121245427007" width="176.5847936376172" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2470.0357308339926" y="7123.8701179170075" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 7134.425172357007 L 2761.7288302132542 7134.425172357007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,7134.425172357007) translate(-2783.4546506022543,-7134.425172357007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2761.4649538522544 7123.4303239820065 L 2783.4546506022543 7134.425172357007 L 2761.4649538522544 7145.420020732007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2296.7101793226057" y="7174.006626507007" width="228.195343564375" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2300.668324737606" y="7197.755498997008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">CheckpointWalletAlicePrelockBob</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2783.4546506022543 7208.310553437007 L 2059.8868719963325 7208.310553437007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2038.1610516073324,7208.310553437007) translate(-2038.1610516073324,-7208.310553437007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2060.1507483573323 7197.315705062007 L 2038.1610516073324 7208.310553437007 L 2060.1507483573323 7219.305401812007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2446.9186803896955" y="7247.892007587007" width="214.90260369621095" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2450.8768258046957" y="7271.640880077008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2783.4546506022543 7282.195934517007 L 2347.011134262348 7282.195934517007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,7282.195934517007) translate(-2325.285313873348,-7282.195934517007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2347.275010623348 7271.201086142007 L 2325.285313873348 7282.195934517007 L 2347.275010623348 7293.1907828920075 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2069.386420992332" y="7321.7773886670075" width="224.67352349601563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2073.3445664073324" y="7345.526261157008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">CheckpointSwapAlicePrelockBob</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 7356.081315597007 L 2059.8868719963325 7356.081315597007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2038.1610516073324,7356.081315597007) translate(-2038.1610516073324,-7356.081315597007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2060.1507483573323 7345.086467222007 L 2038.1610516073324 7356.081315597007 L 2060.1507483573323 7367.076163972008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1809.5696354379925" y="7395.662769747008" width="224.680695126875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1813.5277808529925" y="7419.411642237008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 7429.966696677007 L 1540.260472518512 7429.966696677007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1518.5346521295119,7429.966696677007) translate(-1518.5346521295119,-7429.966696677007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1540.5243488795118 7418.971848302007 L 1518.5346521295119 7429.966696677007 L 1540.5243488795118 7440.961545052008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="998.5080489597383" y="7469.548150827008" width="224.680695126875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1002.4661943747383" y="7493.297023317008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 7503.8520777570075 L 724.8879613058399 7503.8520777570075" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,7503.8520777570075) translate(-703.1621409168399,-7503.8520777570075)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 7492.857229382007 L 703.1621409168399 7503.8520777570075 L 725.1518376668399 7514.846926132008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="359.7041965221524" y="7543.433531907008" width="224.680695126875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="363.6623419371524" y="7567.182404397008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 7577.737458837008 L 262.65276764333987 7577.737458837008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,7577.737458837008) translate(-240.92694725433986,-7577.737458837008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 7566.742610462007 L 240.92694725433986 7577.737458837008 L 262.91664400433984 7588.732307212008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="359.7149310802579" y="7617.318912987008" width="224.65922601066407" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="363.6730764952579" y="7641.067785477008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Datum::SignedArbitratingLock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 7651.622839917008 L 681.4363205278399 7651.622839917008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,7651.622839917008) translate(-703.1621409168399,-7651.622839917008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 7640.627991542007 L 703.1621409168399 7651.622839917008 L 681.1724441668399 7662.617688292008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="519.816240937875" y="7691.204294067008" width="216.7995153173047" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="523.774386352875" y="7714.953166557008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">CheckpointWalletBobPreBuySig</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 7725.508220997008 L 993.779229549715 7725.508220997008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,7725.508220997008) translate(-1015.5050499387149,-7725.508220997008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 7714.513372622007 L 1015.5050499387149 7725.508220997008 L 993.5153531887149 7736.503069372008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="379.2639651989102" y="7765.089675147008" width="185.56115777335938" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="383.2221106139102" y="7788.838547637009" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 7799.393602077008 L 681.4363205278399 7799.393602077008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,7799.393602077008) translate(-703.1621409168399,-7799.393602077008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 7788.3987537020075 L 703.1621409168399 7799.393602077008 L 681.1724441668399 7810.388450452008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="752.6947478033048" y="7838.975056227008" width="213.27769524894532" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="756.6528932183048" y="7862.723928717009" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">CheckpointSwapBobPreBuySig</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 7873.278983157008 L 993.779229549715 7873.278983157008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,7873.278983157008) translate(-1015.5050499387149,-7873.278983157008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 7862.284134782008 L 1015.5050499387149 7873.278983157008 L 993.5153531887149 7884.273831532008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="296.41991898055085" y="7912.860437307008" width="179.8489080175" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="300.37806439555084" y="7936.609309797009" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast Arbitrating Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 7947.164364237008 L 91.25242545076173 7947.164364237008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,7947.164364237008) translate(-69.52660506176173,-7947.164364237008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 7936.169515862008 L 69.52660506176173 7947.164364237008 L 91.51630181176174 7958.159212612009 Z"/></g></g><g><g><rect fill="white" stroke="none" x="309.32255264754303" y="7986.7458183870085" width="154.04364068351563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="313.280698062543" y="8010.494690877009" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Accordant Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 8021.049745317008 L 91.25242545076173 8021.049745317008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,8021.049745317008) translate(-69.52660506176173,-8021.049745317008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 8010.054896942008 L 69.52660506176173 8021.049745317008 L 91.51630181176174 8032.044593692009 Z"/></g></g><g><g><rect fill="white" stroke="none" x="347.2144441270352" y="8060.631199467009" width="78.25985772453124" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="351.1725895420352" y="8084.380071957009" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 8094.935126397008 L 91.25242545076173 8094.935126397008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,8094.935126397008) translate(-69.52660506176173,-8094.935126397008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 8083.940278022008 L 69.52660506176173 8094.935126397008 L 91.51630181176174 8105.929974772009 Z"/></g></g><g><g><rect fill="white" stroke="none" x="315.976101841879" y="8134.516580547009" width="140.73654229484376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="319.93424725687896" y="8158.265453037009" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Arbitrating Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 8168.8205074770085 L 681.4363205278399 8168.8205074770085" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,8168.8205074770085) translate(-703.1621409168399,-8168.8205074770085)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 8157.825659102008 L 703.1621409168399 8168.8205074770085 L 681.1724441668399 8179.815355852009 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2583.9669964728987" y="8134.516580547009" width="140.73654229484376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2587.925141887899" y="8158.265453037009" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Arbitrating Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2983.3852213672935 8168.8205074770085 L 2347.011134262348 8168.8205074770085" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,8168.8205074770085) translate(-2325.285313873348,-8168.8205074770085)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2347.275010623348 8157.825659102008 L 2325.285313873348 8168.8205074770085 L 2347.275010623348 8179.815355852009 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2577.3134472785628" y="8208.401961627007" width="154.04364068351563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2581.271592693563" y="8232.150834117007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Accordant Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 8242.705888557008 L 2961.6594009782934 8242.705888557008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2983.3852213672935,8242.705888557008) translate(-2983.3852213672935,-8242.705888557008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2961.3955246172936 8231.711040182008 L 2983.3852213672935 8242.705888557008 L 2961.3955246172936 8253.700736932007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2584.3714306770003" y="8282.287342707006" width="139.92767388664063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2588.3295760920005" y="8306.036215197006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Accordant Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2983.3852213672935 8316.591269637007 L 2347.011134262348 8316.591269637007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,8316.591269637007) translate(-2325.285313873348,-8316.591269637007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2347.275010623348 8305.596421262007 L 2325.285313873348 8316.591269637007 L 2347.275010623348 8327.586118012006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="316.38053604598053" y="8282.287342707006" width="139.92767388664063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="320.3386814609805" y="8306.036215197006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Accordant Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 8316.591269637007 L 681.4363205278399 8316.591269637007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,8316.591269637007) translate(-703.1621409168399,-8316.591269637007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 8305.596421262007 L 703.1621409168399 8316.591269637007 L 681.1724441668399 8327.586118012006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1013.1787719211641" y="8356.172723787005" width="195.33924920402345" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1017.1369173361641" y="8379.921596277005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 8390.476650717006 L 1496.8088317405118 8390.476650717006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1518.5346521295119,8390.476650717006) translate(-1518.5346521295119,-8390.476650717006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1496.544955379512 8379.481802342007 L 1518.5346521295119 8390.476650717006 L 1496.544955379512 8401.471499092006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1824.2403583994183" y="8430.058104867005" width="195.33924920402345" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1828.1985038144182" y="8453.806977357004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 8464.362031797005 L 2303.559493484348 8464.362031797005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,8464.362031797005) translate(-2325.285313873348,-8464.362031797005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2303.295617123348 8453.367183422006 L 2325.285313873348 8464.362031797005 L 2303.295617123348 8475.356880172005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2082.8330838951642" y="8503.943485947004" width="197.78019769035157" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2086.7912293101645" y="8527.692358437003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">CheckpointSwapAlicePreBuy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 8538.247412877005 L 2059.8868719963325 8538.247412877005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2038.1610516073324,8538.247412877005) translate(-2038.1610516073324,-8538.247412877005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2060.1507483573323 8527.252564502005 L 2038.1610516073324 8538.247412877005 L 2060.1507483573323 8549.242261252004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2615.205338758055" y="8577.828867027003" width="78.25985772453124" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2619.163484173055" y="8601.577739517003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 8612.132793957004 L 2961.6594009782934 8612.132793957004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2983.3852213672935,8612.132793957004) translate(-2983.3852213672935,-8612.132793957004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2961.3955246172936 8601.137945582004 L 2983.3852213672935 8612.132793957004 L 2961.3955246172936 8623.127642332003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2456.7003576357893" y="8651.714248107002" width="195.33924920402345" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2460.6585030507895" y="8675.463120597002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 8686.018175037003 L 2761.7288302132542 8686.018175037003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,8686.018175037003) translate(-2783.4546506022543,-8686.018175037003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2761.4649538522544 8675.023326662003 L 2783.4546506022543 8686.018175037003 L 2761.4649538522544 8697.013023412002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2310.1568422254377" y="8725.599629187001" width="201.30201775871095" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2314.114987640438" y="8749.348501677001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">CheckpointWalletAlicePreBuy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2783.4546506022543 8759.903556117002 L 2059.8868719963325 8759.903556117002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2038.1610516073324,8759.903556117002) translate(-2038.1610516073324,-8759.903556117002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2060.1507483573323 8748.908707742003 L 2038.1610516073324 8759.903556117002 L 2060.1507483573323 8770.898404492002 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 8821.034913082001 L 3042.80618195 8821.034913082001 M 13.19381805 8829.830791782002 L 3042.80618195 8829.830791782002 M 13.19381805 8838.626670482003 L 3042.80618195 8838.626670482003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1418.1224644892968 8799.485010267 L 1637.8775355107032 8799.485010267 L 1637.8775355107032 8860.176573297002 L 1418.1224644892968 8860.176573297002 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1455.0651550292969" y="8836.427700807002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Swap Setup Complete</text></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 8921.307930262 L 3042.80618195 8921.307930262 M 13.19381805 8930.103808962001 L 3042.80618195 8930.103808962001 M 13.19381805 8938.899687662002 L 3042.80618195 8938.899687662002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1370.055226635293 8899.758027447 L 1685.944773364707 8899.758027447 L 1685.944773364707 8960.449590477001 L 1370.055226635293 8960.449590477001 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1406.997917175293" y="8936.700717987002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Buy Procedure: Bob is left, Alice right</text></g><g><g><rect fill="white" stroke="none" x="2497.4447881777814" y="9000.031044627" width="113.85038812003906" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2501.4029335927817" y="9023.779917116999" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Fully signed buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2783.4546506022543 9034.334971557 L 2347.011134262348 9034.334971557" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,9034.334971557) translate(-2325.285313873348,-9034.334971557)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2347.275010623348 9023.340123182 L 2325.285313873348 9034.334971557 L 2347.275010623348 9045.329819932 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2603.519593518797" y="9073.916425706999" width="101.63134820304687" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2607.4777389337974" y="9097.665298196998" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 9108.220352637 L 2961.6594009782934 9108.220352637" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2983.3852213672935,9108.220352637) translate(-2983.3852213672935,-9108.220352637)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2961.3955246172936 9097.225504262 L 2983.3852213672935 9108.220352637 L 2961.3955246172936 9119.215201011999 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2555.4379971442854" y="9147.801806786998" width="197.79454095207032" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2559.3961425592856" y="9171.550679276997" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: buy seen on mempool</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2983.3852213672935 9182.105733716999 L 2347.011134262348 9182.105733716999" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,9182.105733716999) translate(-2325.285313873348,-9182.105733716999)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2347.275010623348 9171.110885342 L 2325.285313873348 9182.105733716999 L 2347.275010623348 9193.100582091998 Z"/></g></g><g><g><rect fill="white" stroke="none" x="287.4471025132657" y="9147.801806786998" width="197.79454095207032" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="291.4052479282657" y="9171.550679276997" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: buy seen on mempool</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 9182.105733716999 L 681.4363205278399 9182.105733716999" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,9182.105733716999) translate(-703.1621409168399,-9182.105733716999)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 9171.110885342 L 703.1621409168399 9182.105733716999 L 681.1724441668399 9193.100582091998 Z"/></g></g><g><g><rect fill="white" stroke="none" x="412.27038914910554" y="9221.687187866997" width="119.54830987296874" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="416.22853456410553" y="9245.436060356997" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Buy signature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 9255.991114796998 L 262.65276764333987 9255.991114796998" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,9255.991114796998) translate(-240.92694725433986,-9255.991114796998)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 9244.996266421998 L 240.92694725433986 9255.991114796998 L 262.91664400433984 9266.985963171997 Z"/></g></g><g><g><rect fill="white" stroke="none" x="272.15231663933986" y="9295.572568946998" width="159.46952874503907" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="276.11046205433985" y="9319.321441436998" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">recover accordant keys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 9329.876495876997 L 346.4774916543399 9329.876495876997 L 346.4774916543399 9364.180422806998 L 262.65276764333987 9364.180422806998" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,9364.180422806998) translate(-240.92694725433986,-9364.180422806998)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 9353.185574431998 L 240.92694725433986 9364.180422806998 L 262.91664400433984 9375.175271181997 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 9425.311779771997 L 3042.80618195 9425.311779771997 M 13.19381805 9434.107658471998 L 3042.80618195 9434.107658471998 M 13.19381805 9442.903537171998 L 3042.80618195 9442.903537171998" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1162.446225475625 9403.761876956996 L 1893.553774524375 9403.761876956996 L 1893.553774524375 9464.453439986997 L 1162.446225475625 9464.453439986997 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1199.388916015625" y="9440.704567496998" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Cancel Init t &gt; t0: Bob is left, Alice right, either have a fully signed and valid cancel tx, and can publish</text></g><g><g><rect fill="white" stroke="none" x="331.46284195418366" y="9504.034894136996" width="109.76306207023437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="335.42098736918365" y="9527.783766626995" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Cancel valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 9538.338821066996 L 681.4363205278399 9538.338821066996" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,9538.338821066996) translate(-703.1621409168399,-9538.338821066996)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 9527.343972691997 L 703.1621409168399 9538.338821066996 L 681.1724441668399 9549.333669441996 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2599.4537365852034" y="9504.034894136996" width="109.76306207023437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2603.4118820002036" y="9527.783766626995" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Cancel valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2983.3852213672935 9538.338821066996 L 2347.011134262348 9538.338821066996" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,9538.338821066996) translate(-2325.285313873348,-9538.338821066996)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2347.275010623348 9527.343972691997 L 2325.285313873348 9538.338821066996 L 2347.275010623348 9549.333669441996 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2556.271958631102" y="9577.920275216995" width="196.1266179784375" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2560.230104046102" y="9601.669147706994" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast cancel (Alice inits)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 9612.224202146996 L 2961.6594009782934 9612.224202146996" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2983.3852213672935,9612.224202146996) translate(-2983.3852213672935,-9612.224202146996)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2961.3955246172936 9601.229353771996 L 2983.3852213672935 9612.224202146996 L 2961.3955246172936 9623.219050521995 Z"/></g></g><g><g><rect fill="white" stroke="none" x="291.12643906111725" y="9577.920275216995" width="190.4358678563672" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="295.08458447611724" y="9601.669147706994" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast cancel (Bob inits)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 9612.224202146996 L 91.25242545076173 9612.224202146996" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,9612.224202146996) translate(-69.52660506176173,-9612.224202146996)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 9601.229353771996 L 69.52660506176173 9612.224202146996 L 91.51630181176174 9623.219050521995 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 9673.355559111995 L 3042.80618195 9673.355559111995 M 13.19381805 9682.151437811995 L 3042.80618195 9682.151437811995 M 13.19381805 9690.947316511996 L 3042.80618195 9690.947316511996" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1347.027310680703 9651.805656296994 L 1708.972689319297 9651.805656296994 L 1708.972689319297 9712.497219326995 L 1347.027310680703 9712.497219326995 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1383.9700012207031" y="9688.748346836996" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Cancel detected t &gt; t0: Bob is left, Alice right</text></g><g><g><rect fill="white" stroke="none" x="324.9345750474454" y="9752.078673476994" width="122.81959588371093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="328.89272046244537" y="9775.827545966993" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event cancel final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 9786.382600406994 L 681.4363205278399 9786.382600406994" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,9786.382600406994) translate(-703.1621409168399,-9786.382600406994)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 9775.387752031995 L 703.1621409168399 9786.382600406994 L 681.1724441668399 9797.377448781994 Z"/></g></g><g><g><rect fill="white" stroke="none" x="326.56306168074616" y="9825.964054556993" width="119.56262261710937" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="330.52120709574615" y="9849.712927046992" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast refund</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 9860.267981486993 L 91.25242545076173 9860.267981486993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,9860.267981486993) translate(-69.52660506176173,-9860.267981486993)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 9849.273133111994 L 69.52660506176173 9860.267981486993 L 91.51630181176174 9871.262829861993 Z"/></g></g><g><g><rect fill="white" stroke="none" x="320.8543977403165" y="9899.849435636992" width="130.97995049796876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="324.81254315531646" y="9923.598308126991" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: refund seen</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 9934.153362566993 L 681.4363205278399 9934.153362566993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,9934.153362566993) translate(-703.1621409168399,-9934.153362566993)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 9923.158514191993 L 703.1621409168399 9934.153362566993 L 681.1724441668399 9945.148210941992 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2588.845292371336" y="9899.849435636992" width="130.97995049796876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2592.8034377863364" y="9923.598308126991" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: refund seen</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2983.3852213672935 9934.153362566993 L 2347.011134262348 9934.153362566993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,9934.153362566993) translate(-2325.285313873348,-9934.153362566993)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2347.275010623348 9923.158514191993 L 2325.285313873348 9934.153362566993 L 2347.275010623348 9945.148210941992 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2495.827020843797" y="9973.734816716991" width="117.0859227880078" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2499.7851662587973" y="9997.48368920699" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Tx::Refund tx</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 10008.038743646992 L 2761.7288302132542 10008.038743646992" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,10008.038743646992) translate(-2783.4546506022543,-10008.038743646992)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2761.4649538522544 9997.043895271992 L 2783.4546506022543 10008.038743646992 L 2761.4649538522544 10019.033592021991 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2814.680019987254" y="10047.620197796992" width="159.46952874503907" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2818.6381654022543" y="10071.369070286992" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">recover accordant keys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2783.4546506022543 10081.924124726991 L 2889.0051950022544 10081.924124726991 L 2889.0051950022544 10116.228051656992 L 2805.1804709912544 10116.228051656992" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,10116.228051656992) translate(-2783.4546506022543,-10116.228051656992)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2805.444347352254 10105.233203281992 L 2783.4546506022543 10116.228051656992 L 2805.444347352254 10127.222900031991 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 10177.359408621991 L 3042.80618195 10177.359408621991 M 13.19381805 10186.155287321992 L 3042.80618195 10186.155287321992 M 13.19381805 10194.951166021992 L 3042.80618195 10194.951166021992" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1403.8633549922265 10155.80950580699 L 1652.1366450077735 10155.80950580699 L 1652.1366450077735 10216.501068836991 L 1403.8633549922265 10216.501068836991 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1440.8060455322266" y="10192.752196346992" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve"> Punish process t &gt; t1 &gt; t0 </text></g><g><g><rect fill="white" stroke="none" x="2577.853890698973" y="10256.08252298699" width="152.96275384269532" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2581.812036113973" y="10279.83139547699" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Event: punish valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2983.3852213672935 10290.38644991699 L 2347.011134262348 10290.38644991699" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,10290.38644991699) translate(-2325.285313873348,-10290.38644991699)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2347.275010623348 10279.39160154199 L 2325.285313873348 10290.38644991699 L 2347.275010623348 10301.38129829199 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2477.8886053164533" y="10329.967904066989" width="152.96275384269532" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2481.8467507314535" y="10353.716776556988" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Event: punish valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 10364.27183099699 L 2761.7288302132542 10364.27183099699" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,10364.27183099699) translate(-2783.4546506022543,-10364.27183099699)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2761.4649538522544 10353.27698262199 L 2783.4546506022543 10364.27183099699 L 2761.4649538522544 10375.266679371989 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2814.680019987254" y="10403.85328514699" width="112.22546441398437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2818.6381654022543" y="10427.60215763699" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">fully sign punish</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2783.4546506022543 10438.157212076989 L 2889.0051950022544 10438.157212076989 L 2889.0051950022544 10472.46113900699 L 2805.1804709912544 10472.46113900699" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2783.4546506022543,10472.46113900699) translate(-2783.4546506022543,-10472.46113900699)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2805.444347352254 10461.46629063199 L 2783.4546506022543 10472.46113900699 L 2805.444347352254 10483.455987381989 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2504.7890874941877" y="10512.042593156988" width="99.16178948722656" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2508.747232909188" y="10535.791465646987" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Tx::Punish</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2783.4546506022543 10546.346520086989 L 2347.011134262348 10546.346520086989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2325.285313873348,10546.346520086989) translate(-2325.285313873348,-10546.346520086989)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2347.275010623348 10535.35167171199 L 2325.285313873348 10546.346520086989 L 2347.275010623348 10557.341368461988 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2575.004929822508" y="10585.927974236987" width="158.660675595625" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2578.9630752375083" y="10609.676846726987" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Broadcast punish tx</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2325.285313873348 10620.231901166988 L 2961.6594009782934 10620.231901166988" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2983.3852213672935,10620.231901166988) translate(-2983.3852213672935,-10620.231901166988)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2961.3955246172936 10609.237052791988 L 2983.3852213672935 10620.231901166988 L 2961.3955246172936 10631.226749541987 Z"/></g></g></g><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/></g></svg>
\ No newline at end of file
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1930" height="2007"><desc>t_wallet%20-%3E%20t_swap%20%3A%20Ctl%20BuyProcedureSignature%0At_swap%20-%3E%20t_checkpoint%20%3A%20Ctl%20CheckpointSwapBobPreBuySig%0At_syncer%20%3C-%20t_swap%20%3A%20Broadcast%20Arbitrating%20Lock%0At_swap%20-%3E%20t_syncer%20%3A%20Watch%20Accordant%20Lock%0At_swap%20-%3E%20t_syncer%20%3A%20Watch%20Buy%0A%0Aparallel%0At_syncer%20-%3E%20%20t_swap%20%3A%20Arbitrating%20Lock%20final%0A%2F%2F%20TODO%3A%20maybe%20instead%20of%20checkpointing%20earlier%2C%20reach%20this%20stage%20via%20a%20message%20from%20walletd%20in%20lieu%20of%20the%20syncer%0Am_swap%20%3C-%20m_syncer%20%3A%20Arbitrating%20Lock%20final%0Aparallel%20off%0A%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Accordant%20Lock%0A%0Aparallel%0Am_swap%20%3C-%20m_syncer%20%3A%20Accordant%20Lock%20final%0At_swap%20%3C-%20t_syncer%20%3A%20Accordant%20Lock%20final%0Aparallel%20off%0A%0Apeerd%20%3C-%20t_swap%20%3A%20Msg%20BuyProcedureSignature%0Am_swap%20%3C-%20peerd%20%3A%20Msg%20BuyProcedureSignature%0Am_swap%20-%3E%20m_checkpoint%20%3A%20Ctl%20CheckpointSwapAlicePreBuy%0Am_swap%20-%3E%20m_syncer%3AWatch%20Buy%0Am_swap%20-%3E%20m_wallet%20%3A%20Msg%20BuyProcedureSignature%0Am_wallet%20-%3E%20m_checkpoint%20%3A%20Ctl%20CheckpointWalletAlicePreBuy%0A%3D%3DSwap%20Setup%20Complete%3D%3D%0A%3D%3DBuy%20Procedure%3A%20Bob%20is%20left%2C%20Alice%20right%3D%3D%0A%0Am_swap%20%3C-%20m_wallet%20%3A%20Fully%20signed%20buy%0Am_swap%20-%3E%20m_syncer%20%3A%20Broadcast%20buy%0Aparallel%0Am_swap%20%3C-%20m_syncer%20%3A%20Event%3A%20buy%20seen%20on%20mempool%0At_swap%20%3C-%20t_syncer%20%3A%20Event%3A%20buy%20seen%20on%20mempool%0Aparallel%20off%0At_wallet%20%3C-%20t_swap%20%3A%20Ctl%20Buy%20signature%0At_wallet%20-%3E%20t_wallet%20%3A%20recover%20accordant%20keys%0A%0A%3D%3DCancel%20Init%20t%20%3E%20t0%3A%20Bob%20is%20left%2C%20Alice%20right%2C%20either%20have%20a%20fully%20signed%20and%20valid%20cancel%20tx%2C%20and%20can%20publish%3D%3D%0A%2F%2F%20TODO%3A%20insert%20Ctl%20Tx%3A%3ACancel%20from%20wallet%20to%20swap%20(or%20do%20it%20after%20CoreArbitratingSetup%2C%20as%20in%20the%20code%20atm)%0Aparallel%0At_swap%20%3C-%20t_syncer%20%3A%20Ctl%20Cancel%20valid%0Am_swap%20%3C-%20m_syncer%20%3A%20Ctl%20Cancel%20valid%0Aparallel%20off%0A%20%E2%9E%8A%20%20-%207.7k%20sequencediagram.txt%20%20Text%20%20%E2%93%90%20Clp%20%E2%93%A8%20%E2%92%BA%20h%20%E2%93%80%20%E2%93%81%20%20Git%3Astate_recovery%20Mod%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20edit%20%20unix%20%7C%20141%3A27%20%2019%3A18%20%2070%25%0A</desc><defs/><g><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g><rect fill="white" stroke="none" x="0" y="0" width="1930" height="2007"/></g><g/><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 66.67765181469142 88.92633365700001 L 66.67765181469142 2007.3074781270006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 314.68954835805084 88.92633365700001 L 314.68954835805084 2007.3074781270006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 612.4079573525821 88.92633365700001 L 612.4079573525821 2007.3074781270006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 764.9149943804025 88.92633365700001 L 764.9149943804025 2007.3074781270006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 908.0376396235549 88.92633365700001 L 908.0376396235549 2007.3074781270006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1168.2829193456253 88.92633365700001 L 1168.2829193456253 2007.3074781270006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1426.0729073196487 88.92633365700001 L 1426.0729073196487 2007.3074781270006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1573.6944844475668 88.92633365700001 L 1573.6944844475668 2007.3074781270006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1859.4372159518637 88.92633365700001 L 1859.4372159518637 2007.3074781270006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/></g><g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 13.193818050000004 17.679716187000004 L 120.16148557938283 17.679716187000004 L 120.16148557938283 88.92633365700001 L 13.193818050000004 88.92633365700001 L 13.193818050000004 17.679716187000004 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="41.82440321850001" y="62.53869755700001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_wallet</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 262.8342012266602 17.679716187000004 L 366.54489548944144 17.679716187000004 L 366.54489548944144 88.92633365700001 L 262.8342012266602 88.92633365700001 L 262.8342012266602 17.679716187000004 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="291.4647863951602" y="62.53869755700001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_swap</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 542.6213434365235 17.679716187000004 L 682.1945712686406 17.679716187000004 L 682.1945712686406 88.92633365700001 L 542.6213434365235 88.92633365700001 L 542.6213434365235 17.679716187000004 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="571.2519286050235" y="62.53869755700001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_checkpoint</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 708.5822073686408 17.679716187000004 L 821.2477813921641 17.679716187000004 L 821.2477813921641 88.92633365700001 L 708.5822073686408 88.92633365700001 L 708.5822073686408 17.679716187000004 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="737.2127925371408" y="62.53869755700001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_syncer</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 847.6354174921643 17.679716187000004 L 968.4398617549455 17.679716187000004 L 968.4398617549455 88.92633365700001 L 847.6354174921643 88.92633365700001 L 847.6354174921643 17.679716187000004 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="876.2660026606643" y="62.53869755700001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_syncer</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1112.3581370946058 17.679716187000004 L 1224.207701596645 17.679716187000004 L 1224.207701596645 88.92633365700001 L 1112.3581370946058 88.92633365700001 L 1112.3581370946058 17.679716187000004 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1140.9887222631057" y="62.53869755700001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_swap</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1378.6950153274183 17.679716187000004 L 1473.4507993118793 17.679716187000004 L 1473.4507993118793 88.92633365700001 L 1378.6950153274183 88.92633365700001 L 1378.6950153274183 17.679716187000004 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1407.3256004959183" y="62.53869755700001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">peerd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1499.8384354118793 17.679716187000004 L 1647.5505334832544 17.679716187000004 L 1647.5505334832544 88.92633365700001 L 1499.8384354118793 88.92633365700001 L 1499.8384354118793 17.679716187000004 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1528.4690205803793" y="62.53869755700001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_checkpoint</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1801.8839470675434 17.679716187000004 L 1916.9904848361841 17.679716187000004 L 1916.9904848361841 88.92633365700001 L 1801.8839470675434 88.92633365700001 L 1801.8839470675434 17.679716187000004 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1830.5145322360434" y="62.53869755700001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_wallet</text></g></g><g><g><g><rect fill="white" stroke="none" x="97.90302119969145" y="141.701605857" width="185.56115777335938" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="101.86116661469146" y="165.450478347" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 66.67765181469142 176.00553278700002 L 292.96372796905086 176.00553278700002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(314.68954835805084,176.00553278700002) translate(-314.68954835805084,-176.00553278700002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 292.69985160805084 165.01068441200002 L 314.68954835805084 176.00553278700002 L 292.69985160805084 187.00038116200002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="345.91491774305086" y="215.586986937" width="235.26767022453126" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="349.87306315805085" y="239.335859427" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl CheckpointSwapBobPreBuySig</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 314.68954835805084 249.89091386700002 L 590.6821369635821 249.89091386700002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(612.4079573525821,249.89091386700002) translate(-612.4079573525821,-249.89091386700002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 590.4182606025821 238.89606549200002 L 612.4079573525821 249.89091386700002 L 590.4182606025821 260.885762242 Z"/></g></g><g><g><rect fill="white" stroke="none" x="449.8778173604767" y="289.472368017" width="179.8489080175" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="453.8359627754767" y="313.221240507" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast Arbitrating Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 314.68954835805084 323.776294947 L 743.1891739914025 323.776294947" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(764.9149943804025,323.776294947) translate(-764.9149943804025,-323.776294947)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 742.9252976304025 312.781446572 L 764.9149943804025 323.776294947 L 742.9252976304025 334.771143322 Z"/></g></g><g><g><rect fill="white" stroke="none" x="462.78045102746887" y="363.357749097" width="154.04364068351563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="466.73859644246886" y="387.106621587" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Accordant Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 314.68954835805084 397.661676027 L 743.1891739914025 397.661676027" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(764.9149943804025,397.661676027) translate(-764.9149943804025,-397.661676027)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 742.9252976304025 386.666827652 L 764.9149943804025 397.661676027 L 742.9252976304025 408.656524402 Z"/></g></g><g><g><rect fill="white" stroke="none" x="500.67234250696106" y="437.243130177" width="78.25985772453124" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="504.63048792196105" y="460.992002667" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 314.68954835805084 471.547057107 L 743.1891739914025 471.547057107" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(764.9149943804025,471.547057107) translate(-764.9149943804025,-471.547057107)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 742.9252976304025 460.552208732 L 764.9149943804025 471.547057107 L 742.9252976304025 482.541905482 Z"/></g></g><g><g><rect fill="white" stroke="none" x="469.4340002218048" y="511.128511257" width="140.73654229484376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="473.3921456368048" y="534.877383747" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Arbitrating Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 764.9149943804025 545.432438187 L 336.4153687470508 545.432438187" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(314.68954835805084,545.432438187) translate(-314.68954835805084,-545.432438187)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 336.67924510805085 534.437589812 L 314.68954835805084 545.432438187 L 336.67924510805085 556.427286562 Z"/></g></g><g><g><rect fill="white" stroke="none" x="967.7920083371682" y="511.128511257" width="140.73654229484376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="971.7501537521682" y="534.877383747" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Arbitrating Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 908.0376396235549 545.432438187 L 1146.5570989566252 545.432438187" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1168.2829193456253,545.432438187) translate(-1168.2829193456253,-545.432438187)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1146.2932225956254 534.437589812 L 1168.2829193456253 545.432438187 L 1146.2932225956254 556.427286562 Z"/></g></g><g><g><rect fill="white" stroke="none" x="961.1384591428323" y="585.013892337" width="154.04364068351563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="965.0966045578323" y="608.7627648270001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Accordant Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1168.2829193456253 619.317819267 L 929.7634600125549 619.317819267" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(908.0376396235549,619.317819267) translate(-908.0376396235549,-619.317819267)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 930.0273363735549 608.3229708920001 L 908.0376396235549 619.317819267 L 930.0273363735549 630.312667642 Z"/></g></g><g><g><rect fill="white" stroke="none" x="968.1964425412698" y="658.899273417" width="139.92767388664063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="972.1545879562698" y="682.6481459070001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Accordant Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 908.0376396235549 693.203200347 L 1146.5570989566252 693.203200347" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1168.2829193456253,693.203200347) translate(-1168.2829193456253,-693.203200347)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1146.2932225956254 682.2083519720001 L 1168.2829193456253 693.203200347 L 1146.2932225956254 704.198048722 Z"/></g></g><g><g><rect fill="white" stroke="none" x="469.83843442590637" y="658.899273417" width="139.92767388664063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="473.79657984090636" y="682.6481459070001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Accordant Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 764.9149943804025 693.203200347 L 336.4153687470508 693.203200347" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(314.68954835805084,693.203200347) translate(-314.68954835805084,-693.203200347)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 336.67924510805085 682.2083519720001 L 314.68954835805084 693.203200347 L 336.67924510805085 704.198048722 Z"/></g></g><g><g><rect fill="white" stroke="none" x="772.7116032368381" y="732.784654497" width="195.33924920402345" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="776.6697486518381" y="756.5335269870001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 314.68954835805084 767.088581427 L 1404.3470869306486 767.088581427" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1426.0729073196487,767.088581427) translate(-1426.0729073196487,-767.088581427)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1404.0832105696488 756.0937330520001 L 1426.0729073196487 767.088581427 L 1404.0832105696488 778.083429802 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1199.5082887306253" y="806.670035577" width="195.33924920402345" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1203.4664341456253" y="830.4189080670001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1426.0729073196487 840.973962507 L 1190.0087397346254 840.973962507" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1168.2829193456253,840.973962507) translate(-1168.2829193456253,-840.973962507)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1190.2726160956252 829.9791141320001 L 1168.2829193456253 840.973962507 L 1190.2726160956252 851.968810882 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1261.1036155636273" y="880.555416657" width="219.7701726659375" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1265.0617609786273" y="904.3042891470001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl CheckpointSwapAlicePreBuy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1168.2829193456253 914.859343587 L 1551.9686640585667 914.859343587" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1573.6944844475668,914.859343587) translate(-1573.6944844475668,-914.859343587)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1551.7047876975669 903.8644952120001 L 1573.6944844475668 914.859343587 L 1551.7047876975669 925.854191962 Z"/></g></g><g><g><rect fill="white" stroke="none" x="999.0303506223245" y="954.440797737" width="78.25985772453124" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1002.9884960373245" y="978.1896702270001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1168.2829193456253 988.744724667 L 929.7634600125549 988.744724667" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(908.0376396235549,988.744724667) translate(-908.0376396235549,-988.744724667)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 930.0273363735549 977.7498762920001 L 908.0376396235549 988.744724667 L 930.0273363735549 999.739573042 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1416.1904430467328" y="1028.326178817" width="195.33924920402345" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1420.1485884617327" y="1052.075051307" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1168.2829193456253 1062.630105747 L 1837.7113955628636 1062.630105747" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1859.4372159518637,1062.630105747) translate(-1859.4372159518637,-1062.630105747)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1837.4475192018638 1051.635257372 L 1859.4372159518637 1062.630105747 L 1837.4475192018638 1073.624954122 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1604.9198538325668" y="1102.2115598970001" width="223.29199273429688" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1608.8779992475668" y="1125.960432387" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl CheckpointWalletAlicePreBuy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1859.4372159518637 1136.5154868270001 L 1595.4203048365669 1136.5154868270001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1573.6944844475668,1136.5154868270001) translate(-1573.6944844475668,-1136.5154868270001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1595.6841811975667 1125.5206384520002 L 1573.6944844475668 1136.5154868270001 L 1595.6841811975667 1147.510335202 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 1197.646843792 L 1916.80618195 1197.646843792 M 13.19381805 1206.442722492 L 1916.80618195 1206.442722492 M 13.19381805 1215.238601192 L 1916.80618195 1215.238601192" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 855.1224644892968 1176.096940977 L 1074.8775355107032 1176.096940977 L 1074.8775355107032 1236.788504007 L 855.1224644892968 1236.788504007 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="892.0651550292969" y="1213.0396315169999" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Swap Setup Complete</text></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 1297.919860972 L 1916.80618195 1297.919860972 M 13.19381805 1306.715739672 L 1916.80618195 1306.715739672 M 13.19381805 1315.511618372 L 1916.80618195 1315.511618372" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 807.0552266352929 1276.369958157 L 1122.944773364707 1276.369958157 L 1122.944773364707 1337.061521187 L 807.0552266352929 1337.061521187 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="843.997917175293" y="1313.3126486969998" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Buy Procedure: Bob is left, Alice right</text></g><g><g><rect fill="white" stroke="none" x="1456.934873588725" y="1376.642975337" width="113.85038812003906" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1460.893019003725" y="1400.391847827" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Fully signed buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1859.4372159518637 1410.946902267 L 1190.0087397346254 1410.946902267" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1168.2829193456253,1410.946902267) translate(-1168.2829193456253,-1410.946902267)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1190.2726160956252 1399.952053892 L 1168.2829193456253 1410.946902267 L 1190.2726160956252 1421.941750642 Z"/></g></g><g><g><rect fill="white" stroke="none" x="987.3446053830667" y="1450.5283564170002" width="101.63134820304687" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="991.3027507980667" y="1474.277228907" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1168.2829193456253 1484.8322833470002 L 929.7634600125549 1484.8322833470002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(908.0376396235549,1484.8322833470002) translate(-908.0376396235549,-1484.8322833470002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 930.0273363735549 1473.8374349720002 L 908.0376396235549 1484.8322833470002 L 930.0273363735549 1495.827131722 Z"/></g></g><g><g><rect fill="white" stroke="none" x="939.263009008555" y="1524.4137374970003" width="197.79454095207032" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="943.2211544235549" y="1548.1626099870002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: buy seen on mempool</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 908.0376396235549 1558.7176644270003 L 1146.5570989566252 1558.7176644270003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1168.2829193456253,1558.7176644270003) translate(-1168.2829193456253,-1558.7176644270003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1146.2932225956254 1547.7228160520003 L 1168.2829193456253 1558.7176644270003 L 1146.2932225956254 1569.7125128020002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="440.9050008931915" y="1524.4137374970003" width="197.79454095207032" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="444.8631463081915" y="1548.1626099870002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: buy seen on mempool</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 764.9149943804025 1558.7176644270003 L 336.4153687470508 1558.7176644270003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(314.68954835805084,1558.7176644270003) translate(-314.68954835805084,-1558.7176644270003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 336.67924510805085 1547.7228160520003 L 314.68954835805084 1558.7176644270003 L 336.67924510805085 1569.7125128020002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="130.90944514988678" y="1598.2991185770004" width="119.54830987296874" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="134.86759056488677" y="1622.0479910670003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Buy signature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 314.68954835805084 1632.6030455070004 L 88.40347220369142 1632.6030455070004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(66.67765181469142,1632.6030455070004) translate(-66.67765181469142,-1632.6030455070004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 88.66734856469142 1621.6081971320004 L 66.67765181469142 1632.6030455070004 L 88.66734856469142 1643.5978938820003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="97.90302119969142" y="1672.1844996570005" width="159.46952874503907" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="101.86116661469143" y="1695.9333721470005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">recover accordant keys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 66.67765181469142 1706.4884265870005 L 172.22819621469142 1706.4884265870005 L 172.22819621469142 1740.7923535170005 L 88.40347220369142 1740.7923535170005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(66.67765181469142,1740.7923535170005) translate(-66.67765181469142,-1740.7923535170005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 88.66734856469142 1729.7975051420005 L 66.67765181469142 1740.7923535170005 L 88.66734856469142 1751.7872018920004 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 1801.9237104820006 L 1916.80618195 1801.9237104820006 M 13.19381805 1810.7195891820006 L 1916.80618195 1810.7195891820006 M 13.19381805 1819.5154678820006 L 1916.80618195 1819.5154678820006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 599.4462254756249 1780.3738076670006 L 1330.553774524375 1780.3738076670006 L 1330.553774524375 1841.0653706970006 L 599.4462254756249 1841.0653706970006 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="636.388916015625" y="1817.3164982070004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Cancel Init t &gt; t0: Bob is left, Alice right, either have a fully signed and valid cancel tx, and can publish</text></g><g><g><rect fill="white" stroke="none" x="484.9207403341095" y="1880.6468248470007" width="109.76306207023437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="488.8788857491095" y="1904.3956973370007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Cancel valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 764.9149943804025 1914.9507517770007 L 336.4153687470508 1914.9507517770007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(314.68954835805084,1914.9507517770007) translate(-314.68954835805084,-1914.9507517770007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 336.67924510805085 1903.9559034020008 L 314.68954835805084 1914.9507517770007 L 336.67924510805085 1925.9456001520007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="983.2787484494729" y="1880.6468248470007" width="109.76306207023437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="987.2368938644729" y="1904.3956973370007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Cancel valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 908.0376396235549 1914.9507517770007 L 1146.5570989566252 1914.9507517770007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1168.2829193456253,1914.9507517770007) translate(-1168.2829193456253,-1914.9507517770007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1146.2932225956254 1903.9559034020008 L 1168.2829193456253 1914.9507517770007 L 1146.2932225956254 1925.9456001520007 Z"/></g></g></g><g/><g/><g/><g/><g/><g/><g/><g/><g/></g></svg>
\ No newline at end of file
diff --git a/doc/sequencediagram.txt b/doc/sequencediagram.txt
index 71783c99d..c9345127e 100644
--- a/doc/sequencediagram.txt
+++ b/doc/sequencediagram.txt
@@ -91,33 +91,33 @@ t_swap -> t_wallet : if Bob, SEND PENDING Msg Reveal (maker is sender)
 ==Commit-Reveal Complete==
 ==Changing semantics: On Commit-Reveal, Maker and Taker were the key roles. From now on Bob or Alice are the key roles. Now t_ is bob_ on the left and m_ is alice_ on the right.==
 ==Swap setup: Bob is left, Alice right==
-t_wallet -> t_checkpoint: CheckpointWalletBobPrelockBob
+t_wallet -> t_checkpoint: Ctl CheckpointWalletBobPrelockBob
 t_wallet -> t_swap : Ctl CoreArbitratingSetup
-t_swap -> t_checkpoint: CheckpointSwapBobPrelockBob
-// TODO: During replay of Checkpoint Bob 0, Bob has to rewatch these 3 txs
+t_swap -> t_checkpoint: Ctl CheckpointSwapBobPrelockBob
+// TODO: During replay of CheckpointSwapBobPrelockBob, Bob has to rewatch these 3 txs
 t_syncer <- t_swap : Watch Arbitrating Lock
 t_syncer <- t_swap : Watch Cancel
 t_syncer <- t_swap : Watch Refund
 peerd <- t_swap : Msg CoreArbitratingSetup
 m_swap <- peerd : Msg CoreArbitratingSetup
 m_swap -> m_syncer : Watch Arbitrating Lock
-// TODO: During replay of Checkpoint Alice 0, Alice has to rewatch these 2 txs (arbitrating already final then)
+// TODO: During replay of CheckpointWalletAlicePrelockBob, Alice has to rewatch these 2 txs (arbitrating already final then)
 m_swap -> m_syncer : Watch Cancel
 m_swap -> m_syncer : Watch Refund
 
 m_wallet <- m_swap : Msg CoreArbitratingSetup
-m_wallet -> m_checkpoint : CheckpointWalletAlicePrelockBob
+m_wallet -> m_checkpoint : Ctl CheckpointWalletAlicePrelockBob
 m_wallet -> m_swap : Ctl RefundProcedureSignatures
-m_swap -> m_checkpoint : CheckpointSwapAlicePrelockBob
+m_swap -> m_checkpoint : Ctl CheckpointSwapAlicePrelockBob
 m_swap -> peerd : Msg RefundProcedureSignatures
 peerd -> t_swap : Msg RefundProcedureSignatures
 t_wallet <- t_swap : Msg RefundProcedureSignatures
 t_wallet -> t_swap:Ctl Datum::SignedArbitratingLock
 // DONE: do we know that same inputs are being used in case of replay?
 // -> yes, but create different sig
-t_wallet -> t_checkpoint : CheckpointWalletBobPreBuySig
+t_wallet -> t_checkpoint : Ctl CheckpointWalletBobPreBuySig
 t_wallet -> t_swap : Ctl BuyProcedureSignature
-t_swap -> t_checkpoint : CheckpointSwapBobPreBuySig
+t_swap -> t_checkpoint : Ctl CheckpointSwapBobPreBuySig
 t_syncer <- t_swap : Broadcast Arbitrating Lock
 t_swap -> t_syncer : Watch Accordant Lock
 t_swap -> t_syncer : Watch Buy
@@ -137,10 +137,10 @@ parallel off
 
 peerd <- t_swap : Msg BuyProcedureSignature
 m_swap <- peerd : Msg BuyProcedureSignature
-m_swap -> m_checkpoint : CheckpointSwapAlicePreBuy
+m_swap -> m_checkpoint : Ctl CheckpointSwapAlicePreBuy
 m_swap -> m_syncer:Watch Buy
 m_swap -> m_wallet : Msg BuyProcedureSignature
-m_wallet -> m_checkpoint : CheckpointWalletAlicePreBuy
+m_wallet -> m_checkpoint : Ctl CheckpointWalletAlicePreBuy
 ==Swap Setup Complete==
 ==Buy Procedure: Bob is left, Alice right==
 

From c51c72ef9f05938238fc1e0d742de5a2c6b0cdb5 Mon Sep 17 00:00:00 2001
From: Robert Hambrock <roberthambrock@gmail.com>
Date: Wed, 11 May 2022 19:20:58 +0200
Subject: [PATCH 14/32] clone walletd.rs to checkpointd.rs

---
 src/bin/checkpointd.rs | 65 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 65 insertions(+)
 create mode 100644 src/bin/checkpointd.rs

diff --git a/src/bin/checkpointd.rs b/src/bin/checkpointd.rs
new file mode 100644
index 000000000..d29281190
--- /dev/null
+++ b/src/bin/checkpointd.rs
@@ -0,0 +1,65 @@
+// LNP Node: node running lightning network protocol and generalized lightning
+// channels.
+// Written in 2020 by
+//     Dr. Maxim Orlovsky <orlovsky@pandoracore.com>
+//
+// To the extent possible under law, the author(s) have dedicated all
+// copyright and related and neighboring rights to this software to
+// the public domain worldwide. This software is distributed without
+// any warranty.
+//
+// You should have received a copy of the MIT License
+// along with this software.
+// If not, see <https://opensource.org/licenses/MIT>.
+
+#![recursion_limit = "256"]
+// Coding conventions
+#![deny(
+    non_upper_case_globals,
+    non_camel_case_types,
+    non_snake_case,
+    unused_mut,
+    unused_imports,
+    dead_code,
+    missing_docs
+)]
+
+//! Main executable for walletd: farcaster node wallet microservice.
+
+#[macro_use]
+extern crate log;
+
+use clap::Clap;
+
+use farcaster_node::ServiceConfig;
+use farcaster_node::{
+    rpc::request::Token,
+    walletd::{self, NodeSecrets, Opts},
+};
+
+fn main() {
+    let mut opts = Opts::parse();
+    trace!("Command-line arguments: {:?}", &opts);
+    opts.process();
+    trace!("Processed arguments: {:?}", &opts);
+
+    let service_config: ServiceConfig = opts.shared.clone().into();
+    trace!("Daemon configuration: {:#?}", &service_config);
+    debug!("MSG RPC socket {}", &service_config.msg_endpoint);
+    debug!("CTL RPC socket {}", &service_config.ctl_endpoint);
+
+    let wallet_token = Token(opts.wallet_token.token);
+
+    let node_secrets = NodeSecrets::new(opts.key_opts.key_file.clone());
+
+    debug!("Starting runtime ...");
+    walletd::run(
+        service_config,
+        wallet_token,
+        node_secrets,
+        opts.shared.data_dir,
+    )
+    .expect("Error running walletd runtime");
+
+    unreachable!()
+}

From d746475843372ef1953ba1d823f1b142f88731d8 Mon Sep 17 00:00:00 2001
From: Robert Hambrock <roberthambrock@gmail.com>
Date: Wed, 11 May 2022 19:44:35 +0200
Subject: [PATCH 15/32] add missing + add checkpoint template

---
 src/bin/checkpointd.rs     | 12 +++---------
 src/checkpointd/mod.rs     |  2 +-
 src/checkpointd/runtime.rs | 30 ++++++++++++++++++------------
 src/lib.rs                 |  2 ++
 src/rpc/request.rs         | 12 ++++++++++++
 5 files changed, 36 insertions(+), 22 deletions(-)

diff --git a/src/bin/checkpointd.rs b/src/bin/checkpointd.rs
index d29281190..6134f2621 100644
--- a/src/bin/checkpointd.rs
+++ b/src/bin/checkpointd.rs
@@ -24,7 +24,7 @@
     missing_docs
 )]
 
-//! Main executable for walletd: farcaster node wallet microservice.
+//! Main executable for checkpointd: farcaster node checkpointing microservice.
 
 #[macro_use]
 extern crate log;
@@ -34,7 +34,7 @@ use clap::Clap;
 use farcaster_node::ServiceConfig;
 use farcaster_node::{
     rpc::request::Token,
-    walletd::{self, NodeSecrets, Opts},
+    checkpointd::{self, Opts},
 };
 
 fn main() {
@@ -48,15 +48,9 @@ fn main() {
     debug!("MSG RPC socket {}", &service_config.msg_endpoint);
     debug!("CTL RPC socket {}", &service_config.ctl_endpoint);
 
-    let wallet_token = Token(opts.wallet_token.token);
-
-    let node_secrets = NodeSecrets::new(opts.key_opts.key_file.clone());
-
     debug!("Starting runtime ...");
-    walletd::run(
+    checkpointd::run(
         service_config,
-        wallet_token,
-        node_secrets,
         opts.shared.data_dir,
     )
     .expect("Error running walletd runtime");
diff --git a/src/checkpointd/mod.rs b/src/checkpointd/mod.rs
index 77ff80bc8..7804a8f97 100644
--- a/src/checkpointd/mod.rs
+++ b/src/checkpointd/mod.rs
@@ -17,5 +17,5 @@ mod opts;
 mod runtime;
 
 #[cfg(feature = "shell")]
-pub use opts::{KeyOpts, NodeSecrets, Opts};
+pub use opts::Opts;
 pub use runtime::run;
diff --git a/src/checkpointd/runtime.rs b/src/checkpointd/runtime.rs
index feaee8859..70da84465 100644
--- a/src/checkpointd/runtime.rs
+++ b/src/checkpointd/runtime.rs
@@ -67,8 +67,6 @@ use request::{LaunchSwap, NodeId};
 
 pub fn run(
     config: ServiceConfig,
-    wallet_token: Token,
-    node_secrets: NodeSecrets,
     data_dir: PathBuf,
 ) -> Result<(), Error> {
     let runtime = Runtime {
@@ -176,21 +174,29 @@ impl Runtime {
     ) -> Result<(), Error> {
         match request {
             Request::Hello => match &source {
-                ServiceId::Swap(swap_id) => {
-                    if let Some(option_req) = self.swaps.get_mut(swap_id) {
-                        trace!("Known swapd, you launched it");
-                        if let Some(req) = option_req {
-                            let request = req.clone();
-                            *option_req = None;
-                            self.send_ctl(senders, source, request)?
-                        }
-                    }
-                }
+                // ServiceId::Swap(swap_id) => {
+                //     if let Some(option_req) = self.swaps.get_mut(swap_id) {
+                //         trace!("Known swapd, you launched it");
+                //         if let Some(req) = option_req {
+                //             let request = req.clone();
+                //             *option_req = None;
+                //             self.send_ctl(senders, source, request)?
+                //         }
+                //     }
+                // }
                 source => {
                     debug!("Received Hello from {}", source);
                 }
             },
 
+            Request::Checkpoint(CheckpointWalletAlicePreBuy) => {
+                todo!();
+            }
+
+            Request::Checkpoint(CheckpointWalletAlicePreBuy) => {
+                todo!();
+            }
+
             _ => {
                 error!(
                     "Request {:?} is not supported by the CTL interface",
diff --git a/src/lib.rs b/src/lib.rs
index 2d8507844..032d7d3de 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -73,6 +73,8 @@ pub mod swapd;
 pub mod syncerd;
 #[cfg(feature = "node")]
 pub mod walletd;
+#[cfg(feature = "node")]
+pub mod checkpointd;
 
 #[cfg(feature = "_rpc")]
 pub use crate::config::Config;
diff --git a/src/rpc/request.rs b/src/rpc/request.rs
index 4814131d7..b8c35dfc4 100644
--- a/src/rpc/request.rs
+++ b/src/rpc/request.rs
@@ -655,6 +655,11 @@ pub enum Request {
     #[display("task({0})", alt = "{0:#}")]
     #[from]
     SweepXmrAddress(SweepXmrAddress),
+
+    #[api(type = 1304)]
+    #[display("checkpoint({0})", alt = "{0:#}")]
+    #[from]
+    Checkpoint(Checkpoint),
 }
 
 #[derive(Clone, Debug, Display, StrictEncode, StrictDecode)]
@@ -673,6 +678,13 @@ pub enum FundingInfo {
     Monero(MoneroFundingInfo),
 }
 
+#[derive(Clone, Debug, Display, StrictDecode, StrictEncode)]
+#[display("checkpoint")]
+pub enum Checkpoint {
+    CheckpointWalletAlicePreBuy,
+    CheckpointSwapAlicePreBuy,
+}
+
 impl FromStr for BitcoinFundingInfo {
     type Err = Error;
     fn from_str(s: &str) -> Result<Self, Error> {

From 37127c716b534607df830b93ab2501c022540d34 Mon Sep 17 00:00:00 2001
From: Robert Hambrock <roberthambrock@gmail.com>
Date: Wed, 11 May 2022 19:48:57 +0200
Subject: [PATCH 16/32] update sequencediagram

---
 doc/sequencediagram.svg | 2 +-
 doc/sequencediagram.txt | 2 ++
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/doc/sequencediagram.svg b/doc/sequencediagram.svg
index b8db93e89..0ddf90bc5 100644
--- a/doc/sequencediagram.svg
+++ b/doc/sequencediagram.svg
@@ -1 +1 @@
-<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1930" height="2007"><desc>t_wallet%20-%3E%20t_swap%20%3A%20Ctl%20BuyProcedureSignature%0At_swap%20-%3E%20t_checkpoint%20%3A%20Ctl%20CheckpointSwapBobPreBuySig%0At_syncer%20%3C-%20t_swap%20%3A%20Broadcast%20Arbitrating%20Lock%0At_swap%20-%3E%20t_syncer%20%3A%20Watch%20Accordant%20Lock%0At_swap%20-%3E%20t_syncer%20%3A%20Watch%20Buy%0A%0Aparallel%0At_syncer%20-%3E%20%20t_swap%20%3A%20Arbitrating%20Lock%20final%0A%2F%2F%20TODO%3A%20maybe%20instead%20of%20checkpointing%20earlier%2C%20reach%20this%20stage%20via%20a%20message%20from%20walletd%20in%20lieu%20of%20the%20syncer%0Am_swap%20%3C-%20m_syncer%20%3A%20Arbitrating%20Lock%20final%0Aparallel%20off%0A%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Accordant%20Lock%0A%0Aparallel%0Am_swap%20%3C-%20m_syncer%20%3A%20Accordant%20Lock%20final%0At_swap%20%3C-%20t_syncer%20%3A%20Accordant%20Lock%20final%0Aparallel%20off%0A%0Apeerd%20%3C-%20t_swap%20%3A%20Msg%20BuyProcedureSignature%0Am_swap%20%3C-%20peerd%20%3A%20Msg%20BuyProcedureSignature%0Am_swap%20-%3E%20m_checkpoint%20%3A%20Ctl%20CheckpointSwapAlicePreBuy%0Am_swap%20-%3E%20m_syncer%3AWatch%20Buy%0Am_swap%20-%3E%20m_wallet%20%3A%20Msg%20BuyProcedureSignature%0Am_wallet%20-%3E%20m_checkpoint%20%3A%20Ctl%20CheckpointWalletAlicePreBuy%0A%3D%3DSwap%20Setup%20Complete%3D%3D%0A%3D%3DBuy%20Procedure%3A%20Bob%20is%20left%2C%20Alice%20right%3D%3D%0A%0Am_swap%20%3C-%20m_wallet%20%3A%20Fully%20signed%20buy%0Am_swap%20-%3E%20m_syncer%20%3A%20Broadcast%20buy%0Aparallel%0Am_swap%20%3C-%20m_syncer%20%3A%20Event%3A%20buy%20seen%20on%20mempool%0At_swap%20%3C-%20t_syncer%20%3A%20Event%3A%20buy%20seen%20on%20mempool%0Aparallel%20off%0At_wallet%20%3C-%20t_swap%20%3A%20Ctl%20Buy%20signature%0At_wallet%20-%3E%20t_wallet%20%3A%20recover%20accordant%20keys%0A%0A%3D%3DCancel%20Init%20t%20%3E%20t0%3A%20Bob%20is%20left%2C%20Alice%20right%2C%20either%20have%20a%20fully%20signed%20and%20valid%20cancel%20tx%2C%20and%20can%20publish%3D%3D%0A%2F%2F%20TODO%3A%20insert%20Ctl%20Tx%3A%3ACancel%20from%20wallet%20to%20swap%20(or%20do%20it%20after%20CoreArbitratingSetup%2C%20as%20in%20the%20code%20atm)%0Aparallel%0At_swap%20%3C-%20t_syncer%20%3A%20Ctl%20Cancel%20valid%0Am_swap%20%3C-%20m_syncer%20%3A%20Ctl%20Cancel%20valid%0Aparallel%20off%0A%20%E2%9E%8A%20%20-%207.7k%20sequencediagram.txt%20%20Text%20%20%E2%93%90%20Clp%20%E2%93%A8%20%E2%92%BA%20h%20%E2%93%80%20%E2%93%81%20%20Git%3Astate_recovery%20Mod%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20edit%20%20unix%20%7C%20141%3A27%20%2019%3A18%20%2070%25%0A</desc><defs/><g><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g><rect fill="white" stroke="none" x="0" y="0" width="1930" height="2007"/></g><g/><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 66.67765181469142 88.92633365700001 L 66.67765181469142 2007.3074781270006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 314.68954835805084 88.92633365700001 L 314.68954835805084 2007.3074781270006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 612.4079573525821 88.92633365700001 L 612.4079573525821 2007.3074781270006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 764.9149943804025 88.92633365700001 L 764.9149943804025 2007.3074781270006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 908.0376396235549 88.92633365700001 L 908.0376396235549 2007.3074781270006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1168.2829193456253 88.92633365700001 L 1168.2829193456253 2007.3074781270006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1426.0729073196487 88.92633365700001 L 1426.0729073196487 2007.3074781270006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1573.6944844475668 88.92633365700001 L 1573.6944844475668 2007.3074781270006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1859.4372159518637 88.92633365700001 L 1859.4372159518637 2007.3074781270006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/></g><g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 13.193818050000004 17.679716187000004 L 120.16148557938283 17.679716187000004 L 120.16148557938283 88.92633365700001 L 13.193818050000004 88.92633365700001 L 13.193818050000004 17.679716187000004 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="41.82440321850001" y="62.53869755700001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_wallet</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 262.8342012266602 17.679716187000004 L 366.54489548944144 17.679716187000004 L 366.54489548944144 88.92633365700001 L 262.8342012266602 88.92633365700001 L 262.8342012266602 17.679716187000004 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="291.4647863951602" y="62.53869755700001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_swap</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 542.6213434365235 17.679716187000004 L 682.1945712686406 17.679716187000004 L 682.1945712686406 88.92633365700001 L 542.6213434365235 88.92633365700001 L 542.6213434365235 17.679716187000004 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="571.2519286050235" y="62.53869755700001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_checkpoint</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 708.5822073686408 17.679716187000004 L 821.2477813921641 17.679716187000004 L 821.2477813921641 88.92633365700001 L 708.5822073686408 88.92633365700001 L 708.5822073686408 17.679716187000004 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="737.2127925371408" y="62.53869755700001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_syncer</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 847.6354174921643 17.679716187000004 L 968.4398617549455 17.679716187000004 L 968.4398617549455 88.92633365700001 L 847.6354174921643 88.92633365700001 L 847.6354174921643 17.679716187000004 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="876.2660026606643" y="62.53869755700001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_syncer</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1112.3581370946058 17.679716187000004 L 1224.207701596645 17.679716187000004 L 1224.207701596645 88.92633365700001 L 1112.3581370946058 88.92633365700001 L 1112.3581370946058 17.679716187000004 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1140.9887222631057" y="62.53869755700001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_swap</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1378.6950153274183 17.679716187000004 L 1473.4507993118793 17.679716187000004 L 1473.4507993118793 88.92633365700001 L 1378.6950153274183 88.92633365700001 L 1378.6950153274183 17.679716187000004 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1407.3256004959183" y="62.53869755700001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">peerd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1499.8384354118793 17.679716187000004 L 1647.5505334832544 17.679716187000004 L 1647.5505334832544 88.92633365700001 L 1499.8384354118793 88.92633365700001 L 1499.8384354118793 17.679716187000004 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1528.4690205803793" y="62.53869755700001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_checkpoint</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1801.8839470675434 17.679716187000004 L 1916.9904848361841 17.679716187000004 L 1916.9904848361841 88.92633365700001 L 1801.8839470675434 88.92633365700001 L 1801.8839470675434 17.679716187000004 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1830.5145322360434" y="62.53869755700001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_wallet</text></g></g><g><g><g><rect fill="white" stroke="none" x="97.90302119969145" y="141.701605857" width="185.56115777335938" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="101.86116661469146" y="165.450478347" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 66.67765181469142 176.00553278700002 L 292.96372796905086 176.00553278700002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(314.68954835805084,176.00553278700002) translate(-314.68954835805084,-176.00553278700002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 292.69985160805084 165.01068441200002 L 314.68954835805084 176.00553278700002 L 292.69985160805084 187.00038116200002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="345.91491774305086" y="215.586986937" width="235.26767022453126" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="349.87306315805085" y="239.335859427" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl CheckpointSwapBobPreBuySig</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 314.68954835805084 249.89091386700002 L 590.6821369635821 249.89091386700002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(612.4079573525821,249.89091386700002) translate(-612.4079573525821,-249.89091386700002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 590.4182606025821 238.89606549200002 L 612.4079573525821 249.89091386700002 L 590.4182606025821 260.885762242 Z"/></g></g><g><g><rect fill="white" stroke="none" x="449.8778173604767" y="289.472368017" width="179.8489080175" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="453.8359627754767" y="313.221240507" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast Arbitrating Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 314.68954835805084 323.776294947 L 743.1891739914025 323.776294947" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(764.9149943804025,323.776294947) translate(-764.9149943804025,-323.776294947)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 742.9252976304025 312.781446572 L 764.9149943804025 323.776294947 L 742.9252976304025 334.771143322 Z"/></g></g><g><g><rect fill="white" stroke="none" x="462.78045102746887" y="363.357749097" width="154.04364068351563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="466.73859644246886" y="387.106621587" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Accordant Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 314.68954835805084 397.661676027 L 743.1891739914025 397.661676027" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(764.9149943804025,397.661676027) translate(-764.9149943804025,-397.661676027)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 742.9252976304025 386.666827652 L 764.9149943804025 397.661676027 L 742.9252976304025 408.656524402 Z"/></g></g><g><g><rect fill="white" stroke="none" x="500.67234250696106" y="437.243130177" width="78.25985772453124" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="504.63048792196105" y="460.992002667" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 314.68954835805084 471.547057107 L 743.1891739914025 471.547057107" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(764.9149943804025,471.547057107) translate(-764.9149943804025,-471.547057107)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 742.9252976304025 460.552208732 L 764.9149943804025 471.547057107 L 742.9252976304025 482.541905482 Z"/></g></g><g><g><rect fill="white" stroke="none" x="469.4340002218048" y="511.128511257" width="140.73654229484376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="473.3921456368048" y="534.877383747" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Arbitrating Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 764.9149943804025 545.432438187 L 336.4153687470508 545.432438187" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(314.68954835805084,545.432438187) translate(-314.68954835805084,-545.432438187)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 336.67924510805085 534.437589812 L 314.68954835805084 545.432438187 L 336.67924510805085 556.427286562 Z"/></g></g><g><g><rect fill="white" stroke="none" x="967.7920083371682" y="511.128511257" width="140.73654229484376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="971.7501537521682" y="534.877383747" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Arbitrating Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 908.0376396235549 545.432438187 L 1146.5570989566252 545.432438187" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1168.2829193456253,545.432438187) translate(-1168.2829193456253,-545.432438187)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1146.2932225956254 534.437589812 L 1168.2829193456253 545.432438187 L 1146.2932225956254 556.427286562 Z"/></g></g><g><g><rect fill="white" stroke="none" x="961.1384591428323" y="585.013892337" width="154.04364068351563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="965.0966045578323" y="608.7627648270001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Accordant Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1168.2829193456253 619.317819267 L 929.7634600125549 619.317819267" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(908.0376396235549,619.317819267) translate(-908.0376396235549,-619.317819267)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 930.0273363735549 608.3229708920001 L 908.0376396235549 619.317819267 L 930.0273363735549 630.312667642 Z"/></g></g><g><g><rect fill="white" stroke="none" x="968.1964425412698" y="658.899273417" width="139.92767388664063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="972.1545879562698" y="682.6481459070001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Accordant Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 908.0376396235549 693.203200347 L 1146.5570989566252 693.203200347" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1168.2829193456253,693.203200347) translate(-1168.2829193456253,-693.203200347)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1146.2932225956254 682.2083519720001 L 1168.2829193456253 693.203200347 L 1146.2932225956254 704.198048722 Z"/></g></g><g><g><rect fill="white" stroke="none" x="469.83843442590637" y="658.899273417" width="139.92767388664063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="473.79657984090636" y="682.6481459070001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Accordant Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 764.9149943804025 693.203200347 L 336.4153687470508 693.203200347" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(314.68954835805084,693.203200347) translate(-314.68954835805084,-693.203200347)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 336.67924510805085 682.2083519720001 L 314.68954835805084 693.203200347 L 336.67924510805085 704.198048722 Z"/></g></g><g><g><rect fill="white" stroke="none" x="772.7116032368381" y="732.784654497" width="195.33924920402345" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="776.6697486518381" y="756.5335269870001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 314.68954835805084 767.088581427 L 1404.3470869306486 767.088581427" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1426.0729073196487,767.088581427) translate(-1426.0729073196487,-767.088581427)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1404.0832105696488 756.0937330520001 L 1426.0729073196487 767.088581427 L 1404.0832105696488 778.083429802 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1199.5082887306253" y="806.670035577" width="195.33924920402345" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1203.4664341456253" y="830.4189080670001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1426.0729073196487 840.973962507 L 1190.0087397346254 840.973962507" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1168.2829193456253,840.973962507) translate(-1168.2829193456253,-840.973962507)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1190.2726160956252 829.9791141320001 L 1168.2829193456253 840.973962507 L 1190.2726160956252 851.968810882 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1261.1036155636273" y="880.555416657" width="219.7701726659375" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1265.0617609786273" y="904.3042891470001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl CheckpointSwapAlicePreBuy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1168.2829193456253 914.859343587 L 1551.9686640585667 914.859343587" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1573.6944844475668,914.859343587) translate(-1573.6944844475668,-914.859343587)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1551.7047876975669 903.8644952120001 L 1573.6944844475668 914.859343587 L 1551.7047876975669 925.854191962 Z"/></g></g><g><g><rect fill="white" stroke="none" x="999.0303506223245" y="954.440797737" width="78.25985772453124" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1002.9884960373245" y="978.1896702270001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1168.2829193456253 988.744724667 L 929.7634600125549 988.744724667" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(908.0376396235549,988.744724667) translate(-908.0376396235549,-988.744724667)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 930.0273363735549 977.7498762920001 L 908.0376396235549 988.744724667 L 930.0273363735549 999.739573042 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1416.1904430467328" y="1028.326178817" width="195.33924920402345" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1420.1485884617327" y="1052.075051307" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1168.2829193456253 1062.630105747 L 1837.7113955628636 1062.630105747" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1859.4372159518637,1062.630105747) translate(-1859.4372159518637,-1062.630105747)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1837.4475192018638 1051.635257372 L 1859.4372159518637 1062.630105747 L 1837.4475192018638 1073.624954122 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1604.9198538325668" y="1102.2115598970001" width="223.29199273429688" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1608.8779992475668" y="1125.960432387" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl CheckpointWalletAlicePreBuy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1859.4372159518637 1136.5154868270001 L 1595.4203048365669 1136.5154868270001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1573.6944844475668,1136.5154868270001) translate(-1573.6944844475668,-1136.5154868270001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1595.6841811975667 1125.5206384520002 L 1573.6944844475668 1136.5154868270001 L 1595.6841811975667 1147.510335202 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 1197.646843792 L 1916.80618195 1197.646843792 M 13.19381805 1206.442722492 L 1916.80618195 1206.442722492 M 13.19381805 1215.238601192 L 1916.80618195 1215.238601192" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 855.1224644892968 1176.096940977 L 1074.8775355107032 1176.096940977 L 1074.8775355107032 1236.788504007 L 855.1224644892968 1236.788504007 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="892.0651550292969" y="1213.0396315169999" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Swap Setup Complete</text></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 1297.919860972 L 1916.80618195 1297.919860972 M 13.19381805 1306.715739672 L 1916.80618195 1306.715739672 M 13.19381805 1315.511618372 L 1916.80618195 1315.511618372" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 807.0552266352929 1276.369958157 L 1122.944773364707 1276.369958157 L 1122.944773364707 1337.061521187 L 807.0552266352929 1337.061521187 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="843.997917175293" y="1313.3126486969998" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Buy Procedure: Bob is left, Alice right</text></g><g><g><rect fill="white" stroke="none" x="1456.934873588725" y="1376.642975337" width="113.85038812003906" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1460.893019003725" y="1400.391847827" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Fully signed buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1859.4372159518637 1410.946902267 L 1190.0087397346254 1410.946902267" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1168.2829193456253,1410.946902267) translate(-1168.2829193456253,-1410.946902267)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1190.2726160956252 1399.952053892 L 1168.2829193456253 1410.946902267 L 1190.2726160956252 1421.941750642 Z"/></g></g><g><g><rect fill="white" stroke="none" x="987.3446053830667" y="1450.5283564170002" width="101.63134820304687" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="991.3027507980667" y="1474.277228907" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1168.2829193456253 1484.8322833470002 L 929.7634600125549 1484.8322833470002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(908.0376396235549,1484.8322833470002) translate(-908.0376396235549,-1484.8322833470002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 930.0273363735549 1473.8374349720002 L 908.0376396235549 1484.8322833470002 L 930.0273363735549 1495.827131722 Z"/></g></g><g><g><rect fill="white" stroke="none" x="939.263009008555" y="1524.4137374970003" width="197.79454095207032" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="943.2211544235549" y="1548.1626099870002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: buy seen on mempool</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 908.0376396235549 1558.7176644270003 L 1146.5570989566252 1558.7176644270003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1168.2829193456253,1558.7176644270003) translate(-1168.2829193456253,-1558.7176644270003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1146.2932225956254 1547.7228160520003 L 1168.2829193456253 1558.7176644270003 L 1146.2932225956254 1569.7125128020002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="440.9050008931915" y="1524.4137374970003" width="197.79454095207032" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="444.8631463081915" y="1548.1626099870002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: buy seen on mempool</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 764.9149943804025 1558.7176644270003 L 336.4153687470508 1558.7176644270003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(314.68954835805084,1558.7176644270003) translate(-314.68954835805084,-1558.7176644270003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 336.67924510805085 1547.7228160520003 L 314.68954835805084 1558.7176644270003 L 336.67924510805085 1569.7125128020002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="130.90944514988678" y="1598.2991185770004" width="119.54830987296874" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="134.86759056488677" y="1622.0479910670003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Buy signature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 314.68954835805084 1632.6030455070004 L 88.40347220369142 1632.6030455070004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(66.67765181469142,1632.6030455070004) translate(-66.67765181469142,-1632.6030455070004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 88.66734856469142 1621.6081971320004 L 66.67765181469142 1632.6030455070004 L 88.66734856469142 1643.5978938820003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="97.90302119969142" y="1672.1844996570005" width="159.46952874503907" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="101.86116661469143" y="1695.9333721470005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">recover accordant keys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 66.67765181469142 1706.4884265870005 L 172.22819621469142 1706.4884265870005 L 172.22819621469142 1740.7923535170005 L 88.40347220369142 1740.7923535170005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(66.67765181469142,1740.7923535170005) translate(-66.67765181469142,-1740.7923535170005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 88.66734856469142 1729.7975051420005 L 66.67765181469142 1740.7923535170005 L 88.66734856469142 1751.7872018920004 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 1801.9237104820006 L 1916.80618195 1801.9237104820006 M 13.19381805 1810.7195891820006 L 1916.80618195 1810.7195891820006 M 13.19381805 1819.5154678820006 L 1916.80618195 1819.5154678820006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 599.4462254756249 1780.3738076670006 L 1330.553774524375 1780.3738076670006 L 1330.553774524375 1841.0653706970006 L 599.4462254756249 1841.0653706970006 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="636.388916015625" y="1817.3164982070004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Cancel Init t &gt; t0: Bob is left, Alice right, either have a fully signed and valid cancel tx, and can publish</text></g><g><g><rect fill="white" stroke="none" x="484.9207403341095" y="1880.6468248470007" width="109.76306207023437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="488.8788857491095" y="1904.3956973370007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Cancel valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 764.9149943804025 1914.9507517770007 L 336.4153687470508 1914.9507517770007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(314.68954835805084,1914.9507517770007) translate(-314.68954835805084,-1914.9507517770007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 336.67924510805085 1903.9559034020008 L 314.68954835805084 1914.9507517770007 L 336.67924510805085 1925.9456001520007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="983.2787484494729" y="1880.6468248470007" width="109.76306207023437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="987.2368938644729" y="1904.3956973370007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Cancel valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 908.0376396235549 1914.9507517770007 L 1146.5570989566252 1914.9507517770007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1168.2829193456253,1914.9507517770007) translate(-1168.2829193456253,-1914.9507517770007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1146.2932225956254 1903.9559034020008 L 1168.2829193456253 1914.9507517770007 L 1146.2932225956254 1925.9456001520007 Z"/></g></g></g><g/><g/><g/><g/><g/><g/><g/><g/><g/></g></svg>
\ No newline at end of file
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="3078" height="10860"><desc>title%20Farcaster%20node%0A%2F%2F%20to%20display%20the%20diagram%2C%20go%20to%20sequencediagram.org%0A%2F%2F%20dashed%20lines%2C%20not%20yet%20implemented%0A%0Aparticipant%20t_syncer%0Aparticipant%20t_wallet%0Aparticipant%20t_swap%0Aparticipant%20t_checkpoint%0Aparticipant%20t_farcasterd%0Aparticipant%20t_cli%0Aparticipant%20peerd%0Aparticipant%20m_cli%0Aparticipant%20m_farcasterd%0Aparticipant%20m_checkpoint%0Aparticipant%20m_swap%0Aparticipant%20m_wallet%0Aparticipant%20m_syncer%0A%0A%3D%3DSetup%20and%20Commit-Reveal%3A%20Bob%20and%20Alice%20can%20be%20on%20both%20sides%3D%3D%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20launch%20farcasterd%5Cnmanually%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20launch%20walletd%0Am_farcasterd%20%3C-%20m_wallet%20%3A%20Ctl%20Hello%0Am_cli%20-%3E%20m_farcasterd%20%3A%20MakeOffer%20(deferred)%0Am_farcasterd%20-%3E%20m_wallet%20%3A%20Ctl%20GetKeys%0Am_farcasterd%20%3C-%20m_wallet%20%3A%20Ctl%20Keys%20(not%20to%20be%20held%20on%20state)%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20MakeOffer%20(continues)%0Am_farcasterd%20-%3E%20m_farcasterd%20%3A%20launch%5Cnpeerd%20listen%0At_farcasterd%20-%3E%20t_farcasterd%20%3A%20launch%20farcasterd%5Cnmanually%0At_farcasterd%20-%3E%20t_farcasterd%20%3A%20launch%20walletd%0At_wallet%20-%3E%20t_farcasterd%20%3A%20Ctl%20Hello%0At_cli%20-%3E%20t_farcasterd%20%3A%20Ctl%20TakeOffer%20(deferred)%0At_wallet%20%3C-%20t_farcasterd%20%3A%20Ctl%20GetKeys%0At_wallet%20-%3E%20t_farcasterd%20%3A%20Ctl%20Keys%20(not%20to%20be%20held%20on%20state)%0At_farcasterd%20%3C-%20t_farcasterd%20%3A%20Ctl%20TakeOffer%20(continues)%0At_farcasterd%20-%3E%20t_farcasterd%20%3A%20launch%5Cnpeerd%20connect%0At_wallet%20%3C-%20t_farcasterd%20%3A%20Ctl%20TakeOffer%0At_wallet%20-%3E%20t_wallet%20%3A%20create%20taker%20wallet%0At_wallet%20-%3E%20t_farcasterd%20%3A%20Ctl%20LaunchSwap%0At_swap%20-%3E%20t_farcasterd%20%3A%20Ctl%20Hello%0At_swap%20-%3E%20t_wallet%20%3A%20Ctl%20Hello%0At_farcasterd%20-%3E%20t_farcasterd%3Alaunch%20syncer%0At_swap%20%3C-%20t_farcasterd%20%3A%20Ctl%20TakeSwap%0At_swap%20-%3E%20peerd%20%3A%20Msg%20TakerCommit%0Apeerd%20-%3E%20m_farcasterd%20%3A%20Msg%20TakerCommit%0Am_farcasterd%20-%3E%20m_wallet%20%3A%20Ctl%20BitcoinAddress%0Am_farcasterd%20-%3E%20m_wallet%20%3A%20Msg%20TakerCommit%0Am_wallet%20-%3E%20m_wallet%20%3A%20create%20maker%20wallet%0Am_wallet%20-%3E%20m_farcasterd%20%3A%20Ctl%20LaunchSwap%0Am_swap%20-%3E%20m_farcasterd%20%3A%20Ctl%20Hello%0Am_swap%20-%3E%20m_wallet%20%3A%20Ctl%20Hello%0Am_farcasterd%20-%3E%20m_farcasterd%3Alaunch%20syncer%0Am_farcasterd%20-%3E%20m_swap%20%3A%20Ctl%20MakeSwap%0A%0Am_swap%20-%3E%20peerd%20%3A%20Msg%20MakerCommit%0At_swap%20%3C-%20peerd%20%3A%20Msg%20MakerCommit%0A%2F%2F%20TODO%3A%20verify%20that%20swapd%20launches%20no%20matter%20what%0At_syncer%20%3C-%20t_swap%20%3A%20Ctl%20WatchHeight%0At_syncer%20%3C-%20t_swap%20%3A%20if%20Bob%2C%20Watch%20Arbitrating%20Funding%20Address%0At_swap%20-%3E%20t_wallet%20%3A%20Msg%20MakerCommit%0At_wallet%20-%3E%20t_swap%20%3A%20Ctl%20RevealProof%20(taker%20is%20sender)%0At_swap%20-%3E%20peerd%20%3A%20Msg%20RevealProof%20(taker%20is%20sender)%0At_swap%20-%3E%20peerd%20%3A%20Msg%20Reveal%20(taker%20is%20sender)%0Apeerd%20-%3E%20m_swap%20%3A%20Msg%20RevealProof%20(taker%20is%20sender)%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Alice%2C%20Msg%20RevealProof%20(taker%20is%20sender)%20%0Am_swap%20-%3E%20m_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20RevealProof%0Apeerd%20-%3E%20m_swap%20%3A%20Msg%20Reveal%20(taker%20is%20sender)%0Am_swap%20-%3E%20m_farcasterd%20%3A%20if%20Bob%2C%20ask%20for%20funding%0Am_swap%20-%3E%20m_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20Reveal%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Alice%2C%20Msg%20Reveal%20(taker%20is%20sender)%0A%0Am_swap-%3Em_syncer%3ACtl%20WatchHeight%0Am_swap%20-%3E%20m_syncer%3Aif%20Bob%2C%20Watch%20Arbitrating%20Funding%20Address%0Am_swap%20%3C-%20m_syncer%3AIf%20Bob%2C%20Arbitrating%20Funding%20event%0Am_swap-%3Em_wallet%3Aif%20Bob%2C%20Ctl%20Tx%3A%3AFunding%0Am_swap%3C-m_wallet%3AIf%20Bob%2C%20Ctl%20FundingUpdated%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20RevealProof%20(taker%20is%20sender)%20%0Am_swap%20-%3E%20m_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20Reveal%20(taker%20is%20sender)%0Am_wallet%20-%3E%20m_swap%20%3A%20Ctl%20RevealProof%20(maker%20is%20sender)%0Apeerd%20%3C-%20m_swap%20%3A%20Msg%20RevealProof%20(maker%20is%20sender)%0Apeerd%20%3C-%20m_swap%20%3A%20Msg%20Reveal%20(maker%20is%20sender)%0Apeerd%20-%3E%20t_swap%20%3A%20Msg%20RevealProof%20(maker%20is%20sender)%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Alice%2C%20Msg%20RevealProof%20(maker%20is%20sender)%0At_swap%20-%3E%20t_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20RevealProof%0Apeerd%20-%3E%20t_swap%20%3A%20Msg%20Reveal%20(maker%20is%20sender)%0At_swap%20-%3E%20t_farcasterd%20%3A%20if%20Bob%2C%20ask%20for%20funding%0At_swap%20-%3E%20t_swap%20%3A%20if%20Bob%2C%20ADD%20PENDING%20Msg%20Reveal%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Alice%2C%20Msg%20Reveal%20(maker%20is%20sender)%0At_syncer%20-%3E%20t_swap%3AIf%20Bob%2C%20Arbitrating%20Funding%20event%0At_swap-%3Et_wallet%3Aif%20Bob%2C%20Ctl%20Tx%3A%3AFunding%0At_swap%3C-t_wallet%3AIf%20Bob%2C%20Ctl%20FundingUpdated%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20RevealProof%20(maker%20is%20sender)%0At_swap%20-%3E%20t_wallet%20%3A%20if%20Bob%2C%20SEND%20PENDING%20Msg%20Reveal%20(maker%20is%20sender)%0A%3D%3DCommit-Reveal%20Complete%3D%3D%0A%3D%3DChanging%20semantics%3A%20On%20Commit-Reveal%2C%20Maker%20and%20Taker%20were%20the%20key%20roles.%20From%20now%20on%20Bob%20or%20Alice%20are%20the%20key%20roles.%20Now%20t_%20is%20bob_%20on%20the%20left%20and%20m_%20is%20alice_%20on%20the%20right.%3D%3D%0A%3D%3DSwap%20setup%3A%20Bob%20is%20left%2C%20Alice%20right%3D%3D%0At_wallet%20-%3E%20t_checkpoint%3A%20Ctl%20CheckpointWalletBobPrelockBob%0At_wallet%20-%3E%20t_swap%20%3A%20Ctl%20CoreArbitratingSetup%0At_swap%20-%3E%20t_checkpoint%3A%20Ctl%20CheckpointSwapBobPrelockBob%0A%2F%2F%20TODO%3A%20During%20replay%20of%20CheckpointSwapBobPrelockBob%2C%20Bob%20has%20to%20rewatch%20these%203%20txs%0At_syncer%20%3C-%20t_swap%20%3A%20Watch%20Arbitrating%20Lock%0At_syncer%20%3C-%20t_swap%20%3A%20Watch%20Cancel%0At_syncer%20%3C-%20t_swap%20%3A%20Watch%20Refund%0Apeerd%20%3C-%20t_swap%20%3A%20Msg%20CoreArbitratingSetup%0Am_swap%20%3C-%20peerd%20%3A%20Msg%20CoreArbitratingSetup%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Arbitrating%20Lock%0A%2F%2F%20TODO%3A%20During%20replay%20of%20CheckpointWalletAlicePrelockBob%2C%20Alice%20has%20to%20rewatch%20these%202%20txs%20(arbitrating%20already%20final%20then)%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Cancel%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Refund%0A%0Am_wallet%20%3C-%20m_swap%20%3A%20Msg%20CoreArbitratingSetup%0Am_wallet%20-%3E%20m_checkpoint%20%3A%20Ctl%20CheckpointWalletAlicePrelockBob%0Am_wallet%20-%3E%20m_swap%20%3A%20Ctl%20RefundProcedureSignatures%0Am_swap%20-%3E%20m_checkpoint%20%3A%20Ctl%20CheckpointSwapAlicePrelockBob%0Am_swap%20-%3E%20peerd%20%3A%20Msg%20RefundProcedureSignatures%0Apeerd%20-%3E%20t_swap%20%3A%20Msg%20RefundProcedureSignatures%0At_wallet%20%3C-%20t_swap%20%3A%20Msg%20RefundProcedureSignatures%0At_wallet%20-%3E%20t_swap%3ACtl%20Datum%3A%3ASignedArbitratingLock%0A%2F%2F%20DONE%3A%20do%20we%20know%20that%20same%20inputs%20are%20being%20used%20in%20case%20of%20replay%3F%0A%2F%2F%20-%3E%20yes%2C%20but%20create%20different%20sig%0At_wallet%20-%3E%20t_checkpoint%20%3A%20Ctl%20CheckpointWalletBobPreBuySig%0At_wallet%20-%3E%20t_swap%20%3A%20Ctl%20BuyProcedureSignature%0At_swap%20-%3E%20t_checkpoint%20%3A%20Ctl%20CheckpointSwapBobPreBuySig%0At_syncer%20%3C-%20t_swap%20%3A%20Broadcast%20Arbitrating%20Lock%0At_swap%20-%3E%20t_syncer%20%3A%20Watch%20Accordant%20Lock%0At_swap%20-%3E%20t_syncer%20%3A%20Watch%20Buy%0A%0Aparallel%0At_syncer%20-%3E%20%20t_swap%20%3A%20Arbitrating%20Lock%20final%0A%2F%2F%20TODO%3A%20maybe%20instead%20of%20checkpointing%20earlier%2C%20reach%20this%20stage%20via%20a%20message%20from%20walletd%20in%20lieu%20of%20the%20syncer%0Am_swap%20%3C-%20m_syncer%20%3A%20Arbitrating%20Lock%20final%0Aparallel%20off%0A%0Am_swap%20-%3E%20m_syncer%20%3A%20Watch%20Accordant%20Lock%0A%0Aparallel%0Am_swap%20%3C-%20m_syncer%20%3A%20Accordant%20Lock%20final%0At_swap%20%3C-%20t_syncer%20%3A%20Accordant%20Lock%20final%0Aparallel%20off%0A%0Apeerd%20%3C-%20t_swap%20%3A%20Msg%20BuyProcedureSignature%0Am_swap%20%3C-%20peerd%20%3A%20Msg%20BuyProcedureSignature%0Am_swap%20-%3E%20m_checkpoint%20%3A%20Ctl%20CheckpointSwapAlicePreBuy%0Am_swap%20-%3E%20m_syncer%3AWatch%20Buy%0Am_swap%20-%3E%20m_wallet%20%3A%20Msg%20BuyProcedureSignature%0Am_wallet%20-%3E%20m_checkpoint%20%3A%20Ctl%20CheckpointWalletAlicePreBuy%0A%3D%3DSwap%20Setup%20Complete%3D%3D%0A%3D%3DBuy%20Procedure%3A%20Bob%20is%20left%2C%20Alice%20right%3D%3D%0A%0Am_swap%20%3C-%20m_wallet%20%3A%20Fully%20signed%20buy%0Am_swap%20-%3E%20m_syncer%20%3A%20Broadcast%20buy%0Aparallel%0Am_swap%20%3C-%20m_syncer%20%3A%20Event%3A%20buy%20seen%20on%20mempool%0At_swap%20%3C-%20t_syncer%20%3A%20Event%3A%20buy%20seen%20on%20mempool%0Aparallel%20off%0At_wallet%20%3C-%20t_swap%20%3A%20Ctl%20Buy%20signature%0At_wallet%20-%3E%20t_wallet%20%3A%20recover%20accordant%20keys%0A%0A%3D%3DCancel%20Init%20t%20%3E%20t0%3A%20Bob%20is%20left%2C%20Alice%20right%2C%20either%20have%20a%20fully%20signed%20and%20valid%20cancel%20tx%2C%20and%20can%20publish%3D%3D%0A%2F%2F%20TODO%3A%20insert%20Ctl%20Tx%3A%3ACancel%20from%20wallet%20to%20swap%20(or%20do%20it%20after%20CoreArbitratingSetup%2C%20as%20in%20the%20code%20atm)%0Aparallel%0At_swap%20%3C-%20t_syncer%20%3A%20Ctl%20Cancel%20valid%0Am_swap%20%3C-%20m_syncer%20%3A%20Ctl%20Cancel%20valid%0Aparallel%20off%0Aparallel%0Am_swap%20-%3E%20m_syncer%20%3A%20Broadcast%20cancel%20(Alice%20inits)%0At_swap%20-%3E%20t_syncer%20%3A%20Broadcast%20cancel%20(Bob%20inits)%0Aparallel%20off%0A%3D%3DCancel%20detected%20t%20%3E%20t0%3A%20Bob%20is%20left%2C%20Alice%20right%3D%3D%0At_swap%20%3C-%20t_syncer%3A%20Event%20cancel%20final%0At_swap%20-%3E%20t_syncer%20%3A%20Broadcast%20refund%0Aparallel%0At_syncer%20-%3E%20t_swap%20%3A%20Event%3A%20refund%20seen%0Am_syncer%20-%3E%20m_swap%20%3A%20Event%3A%20refund%20seen%0Aparallel%20off%0Am_swap%20-%3E%20m_wallet%20%3A%20Ctl%20Tx%3A%3ARefund%20tx%0Am_wallet%20-%3E%20m_wallet%20%3A%20recover%20accordant%20keys%0A%0A%3D%3D%20Punish%20process%20t%20%3E%20t1%20%3E%20t0%20%3D%3D%0A%2F%2F%20TODO%3A%20none%20of%20this%20is%20true%20except%20last%20step%0Am_swap%3C-m_syncer%3ACtl%20Event%3A%20punish%20valid%0Am_swap-%3Em_wallet%3ACtl%20Event%3A%20punish%20valid%0Am_wallet-%3Em_wallet%3Afully%20sign%20punish%0A%2F%2F%20TODO%3A%20in%20the%20code%2C%20this%20actually%20already%20happens%20after%20CoreArbitratingSetup%20-%20think%20about%20this%20and%20move%20either%20this%20or%20that%0Am_swap%3C-m_wallet%3ACtl%20Tx%3A%3APunish%0Am_swap-%3Em_syncer%3ACtl%20Broadcast%20punish%20tx%0A</desc><defs/><g><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g><rect fill="white" stroke="none" x="0" y="0" width="3078" height="10860"/></g><g><text fill="black" stroke="none" font-family="sans-serif" font-size="16.5pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1465.504172949635" y="39.58145414999999" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Farcaster node</text></g><g/><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 154.895423907 L 69.52660506176173 10860.359389676987" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 154.895423907 L 240.92694725433986 10860.359389676987" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 154.895423907 L 703.1621409168399 10860.359389676987" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1015.5050499387149 154.895423907 L 1015.5050499387149 10860.359389676987" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1179.0142308263985 154.895423907 L 1179.0142308263985 10860.359389676987" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1403.1034741715157 154.895423907 L 1403.1034741715157 10860.359389676987" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 154.895423907 L 1518.5346521295119 10860.359389676987" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1638.035265207137 154.895423907 L 1638.035265207137 10860.359389676987" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 154.895423907 L 1845.0164152905354 10860.359389676987" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2038.1610516073324 154.895423907 L 2038.1610516073324 10860.359389676987" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 154.895423907 L 2347.275288848934 10860.359389676987" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2805.4446255778403 154.895423907 L 2805.4446255778403 10860.359389676987" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 3005.3751963428795 154.895423907 L 3005.3751963428795 10860.359389676987" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray="20.298181615384618,8.795878700000001"/></g><g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 13.193818050000004 83.648806437 L 125.85939207352345 83.648806437 L 125.85939207352345 154.895423907 L 13.193818050000004 154.895423907 L 13.193818050000004 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="41.82440321850001" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_syncer</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 187.44311348964845 83.648806437 L 294.4107810190313 83.648806437 L 294.4107810190313 154.895423907 L 187.44311348964845 154.895423907 L 187.44311348964845 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="216.07369865814846" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_wallet</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 651.3067937854493 83.648806437 L 755.0174880482305 83.648806437 L 755.0174880482305 154.895423907 L 651.3067937854493 154.895423907 L 651.3067937854493 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="679.9373789539493" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_swap</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 945.7184360226563 83.648806437 L 1085.2916638547736 83.648806437 L 1085.2916638547736 154.895423907 L 945.7184360226563 154.895423907 L 945.7184360226563 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="974.3490211911563" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_checkpoint</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1111.6792999547736 83.648806437 L 1246.3491616980236 83.648806437 L 1246.3491616980236 154.895423907 L 1111.6792999547736 154.895423907 L 1111.6792999547736 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1140.3098851232735" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_farcasterd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1361.4378243057502 83.648806437 L 1444.7691240372815 83.648806437 L 1444.7691240372815 154.895423907 L 1361.4378243057502 154.895423907 L 1361.4378243057502 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1390.06840947425" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">t_cli</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1471.1567601372815 83.648806437 L 1565.9125441217425 83.648806437 L 1565.9125441217425 154.895423907 L 1471.1567601372815 154.895423907 L 1471.1567601372815 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1499.7873453057814" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">peerd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1592.3001802217425 83.648806437 L 1683.7703501925316 83.648806437 L 1683.7703501925316 154.895423907 L 1592.3001802217425 154.895423907 L 1592.3001802217425 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1620.9307653902424" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_cli</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1773.6120492992816 83.648806437 L 1916.4207812817895 83.648806437 L 1916.4207812817895 154.895423907 L 1773.6120492992816 154.895423907 L 1773.6120492992816 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1802.2426344677815" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_farcasterd</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1964.305002571645 83.648806437 L 2112.01710064302 83.648806437 L 2112.01710064302 154.895423907 L 1964.305002571645 154.895423907 L 1964.305002571645 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1992.935587740145" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_checkpoint</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 2291.3505065979143 83.648806437 L 2403.200071099953 83.648806437 L 2403.200071099953 154.895423907 L 2291.3505065979143 154.895423907 L 2291.3505065979143 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2319.9810917664145" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_swap</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 2747.89135669352 83.648806437 L 2862.9978944621603 83.648806437 L 2862.9978944621603 154.895423907 L 2747.89135669352 154.895423907 L 2747.89135669352 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2776.52194186202" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_wallet</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 2944.9729742114887 83.648806437 L 3065.77741847427 83.648806437 L 3065.77741847427 154.895423907 L 2944.9729742114887 154.895423907 L 2944.9729742114887 83.648806437 Z" stroke-miterlimit="10" stroke-width="4.222021776" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2973.603559379989" y="128.507787807" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">m_syncer</text></g></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 229.22059892200002 L 3064.80618195 229.22059892200002 M 13.19381805 238.01647762200002 L 3064.80618195 238.01647762200002 M 13.19381805 246.81235632200003 L 3064.80618195 246.81235632200003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1297.1038792842187 207.67069610700003 L 1780.8961207157813 207.67069610700003 L 1780.8961207157813 268.362259137 L 1297.1038792842187 268.362259137 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1334.0465698242188" y="244.61338664700003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Setup and Commit-Reveal: Bob and Alice can be on both sides</text></g><g><g><rect fill="white" stroke="none" x="1876.2417846755352" y="307.94371328700004" width="120.3714910253125" height="34.30392693"/></g><g><rect fill="white" stroke="none" x="1876.2417846755352" y="334.33134938700005" width="66.58483941398437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1880.1999300905352" y="331.69258577700003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch farcasterd</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1880.1999300905352" y="358.08022187700004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">manually</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 368.63527631700003 L 1950.5669596905354 368.63527631700003 L 1950.5669596905354 402.939203247 L 1866.7422356795355 402.939203247" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,402.939203247) translate(-1845.0164152905354,-402.939203247)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 391.944354872 L 1845.0164152905354 402.939203247 L 1867.0061120405353 413.934051622 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1876.2417846755352" y="442.52065739700004" width="100.82247979484374" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1880.1999300905352" y="466.26952988700003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch walletd</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 476.824584327 L 1950.5669596905354 476.824584327 L 1950.5669596905354 511.128511257 L 1866.7422356795355 511.128511257" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,511.128511257) translate(-1845.0164152905354,-511.128511257)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 500.133662882 L 1845.0164152905354 511.128511257 L 1867.0061120405353 522.123359632 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2293.5737437325665" y="550.709965407" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2297.5318891475667" y="574.4588378970001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2805.4446255778403 585.013892337 L 1866.7422356795355 585.013892337" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,585.013892337) translate(-1845.0164152905354,-585.013892337)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 574.0190439620001 L 1845.0164152905354 585.013892337 L 1867.0061120405353 596.008740712 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1669.260634592137" y="624.595346487" width="144.53041131339845" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1673.218780007137" y="648.3442189770001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">MakeOffer (deferred)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1638.035265207137 658.899273417 L 1823.2905949015353 658.899273417" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,658.899273417) translate(-1845.0164152905354,-658.899273417)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1823.0267185405355 647.9044250420001 L 1845.0164152905354 658.899273417 L 1823.0267185405355 669.894121792 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2282.167158039207" y="698.480727567" width="86.12672478996093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2286.1253034542074" y="722.2296000570001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl GetKeys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 732.784654497 L 2783.71880518884 732.784654497" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2805.4446255778403,732.784654497) translate(-2805.4446255778403,-732.784654497)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2783.4549288278404 721.7898061220001 L 2805.4446255778403 732.784654497 L 2783.4549288278404 743.779502872 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2214.522237690086" y="772.366108647" width="221.41656548820313" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2218.4803831050863" y="796.1149811370001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Keys (not to be held on state)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2805.4446255778403 806.670035577 L 1866.7422356795355 806.670035577" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,806.670035577) translate(-1845.0164152905354,-806.670035577)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 795.6751872020001 L 1845.0164152905354 806.670035577 L 1867.0061120405353 817.664883952 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1876.2417846755352" y="846.251489727" width="152.68359429679688" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1880.1999300905352" y="870.0003622170001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">MakeOffer (continues)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 880.555416657 L 1950.5669596905354 880.555416657 L 1950.5669596905354 914.859343587 L 1866.7422356795355 914.859343587" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,914.859343587) translate(-1845.0164152905354,-914.859343587)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 903.8644952120001 L 1845.0164152905354 914.859343587 L 1867.0061120405353 925.854191962 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1876.2417846755352" y="954.4407977369999" width="51.11598260246094" height="34.30392693"/></g><g><rect fill="white" stroke="none" x="1876.2417846755352" y="980.8284338369999" width="83.70723016105468" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1880.1999300905352" y="978.189670227" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1880.1999300905352" y="1004.577306327" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">peerd listen</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 1015.1323607669999 L 1950.5669596905354 1015.1323607669999 L 1950.5669596905354 1049.436287697 L 1866.7422356795355 1049.436287697" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,1049.436287697) translate(-1845.0164152905354,-1049.436287697)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 1038.441439322 L 1845.0164152905354 1049.436287697 L 1867.0061120405353 1060.4311360719998 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1210.2396002113983" y="1089.017741847" width="120.3714910253125" height="34.30392693"/></g><g><rect fill="white" stroke="none" x="1210.2396002113983" y="1115.405377947" width="66.58483941398437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1214.1977456263983" y="1112.766614337" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch farcasterd</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1214.1977456263983" y="1139.154250437" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">manually</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1179.0142308263985 1149.709304877 L 1284.5647752263985 1149.709304877 L 1284.5647752263985 1184.013231807 L 1200.7400512153986 1184.013231807" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,1184.013231807) translate(-1179.0142308263985,-1184.013231807)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1201.0039275763984 1173.018383432 L 1179.0142308263985 1184.013231807 L 1201.0039275763984 1195.008080182 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1210.2396002113983" y="1223.5946859570001" width="100.82247979484374" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1214.1977456263983" y="1247.343558447" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch walletd</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1179.0142308263985 1257.8986128870001 L 1284.5647752263985 1257.8986128870001 L 1284.5647752263985 1292.2025398170001 L 1200.7400512153986 1292.2025398170001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,1292.2025398170001) translate(-1179.0142308263985,-1292.2025398170001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1201.0039275763984 1281.2076914420002 L 1179.0142308263985 1292.2025398170001 L 1201.0039275763984 1303.197388192 Z"/></g></g><g><g><rect fill="white" stroke="none" x="678.3138123387481" y="1331.783993967" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="682.2719577537481" y="1355.532866457" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 1366.087920897 L 1157.2884104373984 1366.087920897" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,1366.087920897) translate(-1179.0142308263985,-1366.087920897)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1157.0245340763986 1355.093072522 L 1179.0142308263985 1366.087920897 L 1157.0245340763986 1377.082769272 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1210.2396002113985" y="1405.6693750470001" width="161.6385045751172" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1214.1977456263985" y="1429.418247537" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeOffer (deferred)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1403.1034741715157 1439.9733019770001 L 1200.7400512153986 1439.9733019770001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,1439.9733019770001) translate(-1179.0142308263985,-1439.9733019770001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1201.0039275763984 1428.9784536020002 L 1179.0142308263985 1439.9733019770001 L 1201.0039275763984 1450.968150352 Z"/></g></g><g><g><rect fill="white" stroke="none" x="666.9072266453887" y="1479.5547561270002" width="86.12672478996093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="670.8653720603887" y="1503.3036286170002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl GetKeys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1179.0142308263985 1513.8586830570002 L 262.65276764333987 1513.8586830570002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,1513.8586830570002) translate(-240.92694725433986,-1513.8586830570002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 1502.8638346820003 L 240.92694725433986 1513.8586830570002 L 262.91664400433984 1524.8535314320002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="599.2623062962676" y="1553.4401372070004" width="221.41656548820313" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="603.2204517112676" y="1577.1890096970003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Keys (not to be held on state)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 1587.7440641370004 L 1157.2884104373984 1587.7440641370004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,1587.7440641370004) translate(-1179.0142308263985,-1587.7440641370004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1157.0245340763986 1576.7492157620004 L 1179.0142308263985 1587.7440641370004 L 1157.0245340763986 1598.7389125120003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1210.2396002113983" y="1627.3255182870005" width="169.79168755851563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1214.1977456263983" y="1651.0743907770004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeOffer (continues)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1179.0142308263985 1661.6294452170005 L 1284.5647752263985 1661.6294452170005 L 1284.5647752263985 1695.9333721470005 L 1200.7400512153986 1695.9333721470005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,1695.9333721470005) translate(-1179.0142308263985,-1695.9333721470005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1201.0039275763984 1684.9385237720005 L 1179.0142308263985 1695.9333721470005 L 1201.0039275763984 1706.9282205220004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1210.2396002113983" y="1735.5148262970004" width="51.11598260246094" height="34.30392693"/></g><g><rect fill="white" stroke="none" x="1210.2396002113983" y="1761.9024623970004" width="100.82963616691406" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1214.1977456263983" y="1759.2636987870003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch</text><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1214.1977456263983" y="1785.6513348870003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">peerd connect</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1179.0142308263985 1796.2063893270004 L 1284.5647752263985 1796.2063893270004 L 1284.5647752263985 1830.5103162570003 L 1200.7400512153986 1830.5103162570003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,1830.5103162570003) translate(-1179.0142308263985,-1830.5103162570003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1201.0039275763984 1819.5154678820004 L 1179.0142308263985 1830.5103162570003 L 1201.0039275763984 1841.5051646320003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="663.3710709447051" y="1870.0917704070005" width="93.19903619132812" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="667.3292163597051" y="1893.8406428970004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeOffer</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1179.0142308263985 1904.3956973370005 L 262.65276764333987 1904.3956973370005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,1904.3956973370005) translate(-240.92694725433986,-1904.3956973370005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 1893.4008489620005 L 240.92694725433986 1904.3956973370005 L 262.91664400433984 1915.3905457120004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="272.15231663933986" y="1943.9771514870006" width="126.87829644523437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="276.11046205433985" y="1967.7260239770005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">create taker wallet</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 1978.2810784170006 L 346.4774916543399 1978.2810784170006 L 346.4774916543399 2012.5850053470006 L 262.65276764333987 2012.5850053470006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,2012.5850053470006) translate(-240.92694725433986,-2012.5850053470006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 2001.5901569720006 L 240.92694725433986 2012.5850053470006 L 262.91664400433984 2023.5798537220005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="652.6337891453887" y="2052.1664594970002" width="114.67359978996093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="656.5919345603887" y="2075.915331987" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl LaunchSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 2086.4703864270004 L 1157.2884104373984 2086.4703864270004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,2086.4703864270004) translate(-1179.0142308263985,-2086.4703864270004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1157.0245340763986 2075.4755380520005 L 1179.0142308263985 2086.4703864270004 L 1157.0245340763986 2097.4652348020004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="909.4314091699981" y="2126.0518405770003" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="913.3895545849981" y="2149.8007130670003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 2160.3557675070006 L 1157.2884104373984 2160.3557675070006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,2160.3557675070006) translate(-1179.0142308263985,-2160.3557675070006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1157.0245340763986 2149.3609191320006 L 1179.0142308263985 2160.3557675070006 L 1157.0245340763986 2171.3506158820005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="440.3877673839688" y="2199.9372216570005" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="444.3459127989688" y="2223.6860941470004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 2234.2411485870007 L 262.65276764333987 2234.2411485870007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,2234.2411485870007) translate(-240.92694725433986,-2234.2411485870007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 2223.2463002120007 L 240.92694725433986 2234.2411485870007 L 262.91664400433984 2245.2359969620006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1210.2396002113983" y="2273.8226027370006" width="98.36720330558593" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1214.1977456263983" y="2297.5714752270005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch syncer</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1179.0142308263985 2308.1265296670003 L 1284.5647752263985 2308.1265296670003 L 1284.5647752263985 2342.4304565970006 L 1200.7400512153986 2342.4304565970006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,2342.4304565970006) translate(-1179.0142308263985,-2342.4304565970006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1201.0039275763984 2331.4356082220006 L 1179.0142308263985 2342.4304565970006 L 1201.0039275763984 2353.4253049720005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="892.316159536209" y="2382.0119107470005" width="97.5440526708203" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="896.274304951209" y="2405.7607832370004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl TakeSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1179.0142308263985 2416.3158376770007 L 724.8879613058399 2416.3158376770007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,2416.3158376770007) translate(-703.1621409168399,-2416.3158376770007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 2405.3209893020007 L 703.1621409168399 2416.3158376770007 L 725.1518376668399 2427.3106860520006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1047.8351439914766" y="2455.8972918270006" width="126.02650506339843" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1051.7932894064766" y="2479.6461643170005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg TakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 2490.201218757001 L 1496.8088317405118 2490.201218757001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1518.5346521295119,2490.201218757001) translate(-1518.5346521295119,-2490.201218757001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1496.544955379512 2479.206370382001 L 1518.5346521295119 2490.201218757001 L 1496.544955379512 2501.1960671320007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1618.7622811783244" y="2529.7826729070007" width="126.02650506339843" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1622.7204265933244" y="2553.5315453970006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg TakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 2564.086599837001 L 1823.2905949015353 2564.086599837001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,2564.086599837001) translate(-1845.0164152905354,-2564.086599837001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1823.0267185405355 2553.091751462001 L 1845.0164152905354 2564.086599837001 L 1823.0267185405355 2575.081448212001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2261.386938007469" y="2603.668053987001" width="127.6871648534375" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2265.345083422469" y="2627.4169264770007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl BitcoinAddress</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 2637.971980917001 L 2783.71880518884 2637.971980917001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2805.4446255778403,2637.971980917001) translate(-2805.4446255778403,-2637.971980917001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2783.4549288278404 2626.977132542001 L 2805.4446255778403 2637.971980917001 L 2783.4549288278404 2648.966829292001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2262.2172679024884" y="2677.553435067001" width="126.02650506339843" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2266.1754133174886" y="2701.302307557001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg TakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 2711.857361997001 L 2783.71880518884 2711.857361997001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2805.4446255778403,2711.857361997001) translate(-2805.4446255778403,-2711.857361997001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2783.4549288278404 2700.862513622001 L 2805.4446255778403 2711.857361997001 L 2783.4549288278404 2722.852210372001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2836.66999496284" y="2751.438816147001" width="135.0171666844922" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2840.6281403778403" y="2775.187688637001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">create maker wallet</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2805.4446255778403 2785.742743077001 L 2910.9951699778403 2785.742743077001 L 2910.9951699778403 2820.046670007001 L 2827.1704459668404 2820.046670007001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2805.4446255778403,2820.046670007001) translate(-2805.4446255778403,-2820.046670007001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2827.43432232784 2809.051821632001 L 2805.4446255778403 2820.046670007001 L 2827.43432232784 2831.041518382001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2267.893720539207" y="2859.628124157001" width="114.67359978996093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2271.8518659542074" y="2883.376996647001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl LaunchSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2805.4446255778403 2893.932051087001 L 1866.7422356795355 2893.932051087001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,2893.932051087001) translate(-1845.0164152905354,-2893.932051087001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 2882.937202712001 L 1845.0164152905354 2893.932051087001 L 1867.0061120405353 2904.926899462001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2064.4890753681134" y="2933.513505237001" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2068.4472207831136" y="2957.262377727001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 2967.8174321670012 L 1866.7422356795355 2967.8174321670012" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,2967.8174321670012) translate(-1845.0164152905354,-2967.8174321670012)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 2956.8225837920013 L 1845.0164152905354 2967.8174321670012 L 1867.0061120405353 2978.812280542001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2544.703180511766" y="3007.398886317001" width="63.31355340324219" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2548.661325926766" y="3031.147758807001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Hello</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 3041.7028132470014 L 2783.71880518884 3041.7028132470014" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2805.4446255778403,3041.7028132470014) translate(-2805.4446255778403,-3041.7028132470014)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2783.4549288278404 3030.7079648720014 L 2805.4446255778403 3041.7028132470014 L 2783.4549288278404 3052.6976616220013 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1876.2417846755352" y="3081.2842673970013" width="98.36720330558593" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1880.1999300905352" y="3105.033139887001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">launch syncer</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 3115.588194327001 L 1950.5669596905354 3115.588194327001 L 1950.5669596905354 3149.8921212570012 L 1866.7422356795355 3149.8921212570012" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,3149.8921212570012) translate(-1845.0164152905354,-3149.8921212570012)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 3138.8972728820013 L 1845.0164152905354 3149.8921212570012 L 1867.0061120405353 3160.886969632001 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2044.932884877391" y="3189.473575407001" width="102.4259343846875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2048.891030292391" y="3213.222447897001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl MakeSwap</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1845.0164152905354 3223.7775023370014 L 2325.549468459934 3223.7775023370014" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2347.275288848934,3223.7775023370014) translate(-2347.275288848934,-3223.7775023370014)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2325.285592098934 3212.7826539620014 L 2347.275288848934 3223.7775023370014 L 2325.285592098934 3234.7723507120013 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1867.4507771005901" y="3263.3589564870013" width="130.90838677726563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1871.4089225155901" y="3287.107828977001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg MakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 3297.6628834170015 L 1540.260472518512 3297.6628834170015" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1518.5346521295119,3297.6628834170015) translate(-1518.5346521295119,-3297.6628834170015)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1540.5243488795118 3286.6680350420015 L 1518.5346521295119 3297.6628834170015 L 1540.5243488795118 3308.6577317920014 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1045.394203134543" y="3337.2443375670014" width="130.90838677726563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1049.352348549543" y="3360.9932100570013" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg MakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 3371.5482644970016 L 724.8879613058399 3371.5482644970016" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,3371.5482644970016) translate(-703.1621409168399,-3371.5482644970016)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 3360.5534161220016 L 703.1621409168399 3371.5482644970016 L 725.1518376668399 3382.5431128720015 Z"/></g></g><g><g><rect fill="white" stroke="none" x="329.69833847517975" y="3411.1297186470015" width="113.29206902824218" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="333.65648389017974" y="3434.8785911370014" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl WatchHeight</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3445.4336455770017 L 91.25242545076173 3445.4336455770017" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,3445.4336455770017) translate(-69.52660506176173,-3445.4336455770017)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 3434.4387972020018 L 69.52660506176173 3445.4336455770017 L 91.51630181176174 3456.4284939520016 Z"/></g></g><g><g><rect fill="white" stroke="none" x="246.16940018172272" y="3485.0150997270016" width="280.34994561515623" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="250.1275455967227" y="3508.7639722170015" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Watch Arbitrating Funding Address</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3519.319026657002 L 91.25242545076173 3519.319026657002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,3519.319026657002) translate(-69.52660506176173,-3519.319026657002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 3508.324178282002 L 69.52660506176173 3519.319026657002 L 91.51630181176174 3530.3138750320018 Z"/></g></g><g><g><rect fill="white" stroke="none" x="406.5903506969571" y="3558.9004808070017" width="130.90838677726563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="410.5484961119571" y="3582.6493532970017" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg MakerCommit</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3593.204407737002 L 262.65276764333987 3593.204407737002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,3593.204407737002) translate(-240.92694725433986,-3593.204407737002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 3582.209559362002 L 240.92694725433986 3593.204407737002 L 262.91664400433984 3604.199256112002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="361.76218754998445" y="3632.785861887002" width="220.56471307121095" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="365.72033296498444" y="3656.5347343770018" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl RevealProof (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 3667.089788817002 L 681.4363205278399 3667.089788817002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,3667.089788817002) translate(-703.1621409168399,-3667.089788817002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 3656.094940442002 L 703.1621409168399 3667.089788817002 L 681.1724441668399 3678.084637192002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="995.6769942722383" y="3706.671242967002" width="230.342804501875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="999.6351396872383" y="3730.420115457002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3740.975169897002 L 1496.8088317405118 3740.975169897002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1518.5346521295119,3740.975169897002) translate(-1518.5346521295119,-3740.975169897002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1496.544955379512 3729.980321522002 L 1518.5346521295119 3740.975169897002 L 1496.544955379512 3751.970018272002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1013.1966704807344" y="3780.556624047002" width="195.30345208488282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1017.1548158957344" y="3804.305496537002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 3814.8605509770023 L 1496.8088317405118 3814.8605509770023" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1518.5346521295119,3814.8605509770023) translate(-1518.5346521295119,-3814.8605509770023)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1496.544955379512 3803.8657026020023 L 1518.5346521295119 3814.8605509770023 L 1496.544955379512 3825.855399352002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1817.7335682382854" y="3854.442005127002" width="230.342804501875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1821.6917136532854" y="3878.190877617002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 3888.7459320570024 L 2325.549468459934 3888.7459320570024" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2347.275288848934,3888.7459320570024) translate(-2347.275288848934,-3888.7459320570024)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2325.285592098934 3877.7510836820024 L 2347.275288848934 3888.7459320570024 L 2325.285592098934 3899.7407804320023 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2433.489946564012" y="3928.3273862070023" width="285.74002129875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2437.448091979012" y="3952.0762586970022" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg RevealProof (taker is sender) </text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 3962.6313131370025 L 2783.71880518884 3962.6313131370025" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2805.4446255778403,3962.6313131370025) translate(-2805.4446255778403,-3962.6313131370025)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2783.4549288278404 3951.6364647620026 L 2805.4446255778403 3962.6313131370025 L 2783.4549288278404 3973.6261615120025 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2378.500658233934" y="4002.2127672870024" width="271.881867001875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2382.458803648934" y="4025.9616397770023" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg RevealProof</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 4036.516694217002 L 2452.825833248934 4036.516694217002 L 2452.825833248934 4070.8206211470024 L 2369.001109237934 4070.8206211470024" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2347.275288848934,4070.8206211470024) translate(-2347.275288848934,-4070.8206211470024)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2369.264985598934 4059.8257727720024 L 2347.275288848934 4070.8206211470024 L 2369.264985598934 4081.8154695220023 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1835.2532444467815" y="4110.402075297003" width="195.30345208488282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1839.2113898617815" y="4134.150947787003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 4144.7060022270025 L 2325.549468459934 4144.7060022270025" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2347.275288848934,4144.7060022270025) translate(-2347.275288848934,-4144.7060022270025)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2325.285592098934 4133.711153852002 L 2347.275288848934 4144.7060022270025 L 2325.285592098934 4155.700850602003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2021.2893835956527" y="4184.287456377003" width="149.71293694816407" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2025.2475290106527" y="4208.036328867003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ask for funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 4218.591383307003 L 1866.7422356795355 4218.591383307003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1845.0164152905354,4218.591383307003) translate(-1845.0164152905354,-4218.591383307003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1867.0061120405353 4207.596534932002 L 1845.0164152905354 4218.591383307003 L 1867.0061120405353 4229.586231682003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2378.500658233934" y="4258.172837457002" width="236.84252984367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2382.458803648934" y="4281.9217099470025" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg Reveal</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 4292.476764387003 L 2452.825833248934 4292.476764387003 L 2452.825833248934 4326.7806913170025 L 2369.001109237934 4326.7806913170025" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2347.275288848934,4326.7806913170025) translate(-2347.275288848934,-4326.7806913170025)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2369.264985598934 4315.785842942002 L 2347.275288848934 4326.7806913170025 L 2369.264985598934 4337.775539692003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2453.046114166551" y="4366.362145467003" width="246.62768609367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2457.004259581551" y="4390.111017957003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 4400.666072397003 L 2783.71880518884 4400.666072397003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2805.4446255778403,4400.666072397003) translate(-2805.4446255778403,-4400.666072397003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2783.4549288278404 4389.671224022002 L 2805.4446255778403 4400.666072397003 L 2783.4549288278404 4411.660920772003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2619.6792080817854" y="4440.247526547003" width="113.29206902824218" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2623.6373534967856" y="4463.996399037003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl WatchHeight</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 4474.551453477003 L 2983.6493759538794 4474.551453477003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(3005.3751963428795,4474.551453477003) translate(-3005.3751963428795,-4474.551453477003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2983.3854995928796 4463.556605102002 L 3005.3751963428795 4474.551453477003 L 2983.3854995928796 4485.546301852003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2536.1502697883284" y="4514.132907627003" width="280.34994561515623" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2540.1084152033286" y="4537.8817801170035" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Watch Arbitrating Funding Address</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 4548.436834557003 L 2983.6493759538794 4548.436834557003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(3005.3751963428795,4548.436834557003) translate(-3005.3751963428795,-4548.436834557003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2983.3854995928796 4537.441986182002 L 3005.3751963428795 4548.436834557003 L 2983.3854995928796 4559.431682932003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2567.2418682990706" y="4588.018288707003" width="218.16674859367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2571.200013714071" y="4611.767161197004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Arbitrating Funding event</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 3005.3751963428795 4622.322215637003 L 2369.001109237934 4622.322215637003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2347.275288848934,4622.322215637003) translate(-2347.275288848934,-4622.322215637003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2369.264985598934 4611.327367262003 L 2347.275288848934 4622.322215637003 L 2369.264985598934 4633.317064012003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2499.8857214053205" y="4661.903669787003" width="152.94847161613282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2503.8438668203207" y="4685.652542277004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Ctl Tx::Funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 4696.207596717003 L 2783.71880518884 4696.207596717003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2805.4446255778403,4696.207596717003) translate(-2805.4446255778403,-4696.207596717003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2783.4549288278404 4685.212748342003 L 2805.4446255778403 4696.207596717003 L 2783.4549288278404 4707.2024450920035 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2483.98021145659" y="4735.789050867003" width="184.75949151359376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2487.9383568715903" y="4759.537923357004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Ctl FundingUpdated</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2805.4446255778403 4770.092977797003 L 2369.001109237934 4770.092977797003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2347.275288848934,4770.092977797003) translate(-2347.275288848934,-4770.092977797003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2369.264985598934 4759.098129422003 L 2347.275288848934 4770.092977797003 L 2369.264985598934 4781.087826172004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2378.500658233934" y="4809.6744319470035" width="395.71859795890623" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2382.458803648934" y="4833.423304437004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg RevealProof (taker is sender) </text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 4843.978358877003 L 2783.71880518884 4843.978358877003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2805.4446255778403,4843.978358877003) translate(-2805.4446255778403,-4843.978358877003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2783.4549288278404 4832.983510502003 L 2805.4446255778403 4843.978358877003 L 2783.4549288278404 4854.973207252004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2398.056841095262" y="4883.559813027004" width="356.60623223625" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2402.014986510262" y="4907.308685517004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg Reveal (taker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 4917.863739957003 L 2783.71880518884 4917.863739957003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2805.4446255778403,4917.863739957003) translate(-2805.4446255778403,-4917.863739957003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2783.4549288278404 4906.868891582003 L 2805.4446255778403 4917.863739957003 L 2783.4549288278404 4928.858588332004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2462.0081655581525" y="4957.445194107004" width="228.70358331046876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2465.9663109731528" y="4981.194066597004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2805.4446255778403 4991.7491210370035 L 2369.001109237934 4991.7491210370035" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2347.275288848934,4991.7491210370035) translate(-2347.275288848934,-4991.7491210370035)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2369.264985598934 4980.754272662003 L 2347.275288848934 4991.7491210370035 L 2369.264985598934 5002.743969412004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1813.6641331186565" y="5031.330575187004" width="238.48167474113282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1817.6222785336565" y="5055.079447677004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 5065.634502117004 L 1540.260472518512 5065.634502117004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1518.5346521295119,5065.634502117004) translate(-1518.5346521295119,-5065.634502117004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1540.5243488795118 5054.639653742003 L 1518.5346521295119 5065.634502117004 L 1540.5243488795118 5076.629350492004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1831.1838093271526" y="5105.215956267004" width="203.44232232414063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1835.1419547421526" y="5128.964828757004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 5139.519883197004 L 1540.260472518512 5139.519883197004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1518.5346521295119,5139.519883197004) translate(-1518.5346521295119,-5139.519883197004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1540.5243488795118 5128.525034822003 L 1518.5346521295119 5139.519883197004 L 1540.5243488795118 5150.514731572004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="991.6075591526094" y="5179.101337347004" width="238.48167474113282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="995.5657045676094" y="5202.8502098370045" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 5213.405264277004 L 724.8879613058399 5213.405264277004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5213.405264277004) translate(-703.1621409168399,-5213.405264277004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 5202.4104159020035 L 703.1621409168399 5213.405264277004 L 725.1518376668399 5224.400112652004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="327.141589710629" y="5252.986718427004" width="289.80590874992185" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="331.09973512562897" y="5276.735590917005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5287.290645357004 L 262.65276764333987 5287.290645357004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5287.290645357004) translate(-240.92694725433986,-5287.290645357004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5276.295796982004 L 240.92694725433986 5287.290645357004 L 262.91664400433984 5298.285493732004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="734.3875103018399" y="5326.872099507003" width="271.881867001875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="738.3456557168399" y="5350.620971997004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg RevealProof</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5361.176026437004 L 808.71268531684 5361.176026437004 L 808.71268531684 5395.479953367004 L 724.8879613058399 5395.479953367004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5395.479953367004) translate(-703.1621409168399,-5395.479953367004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 5384.4851049920035 L 703.1621409168399 5395.479953367004 L 725.1518376668399 5406.474801742004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1009.1272353611055" y="5435.061407517004" width="203.44232232414063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1013.0853807761055" y="5458.810280007005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 5469.365334447004 L 724.8879613058399 5469.365334447004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5469.365334447004) translate(-703.1621409168399,-5469.365334447004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 5458.370486072004 L 703.1621409168399 5469.365334447004 L 725.1518376668399 5480.360182822004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="866.2317173975372" y="5508.946788597004" width="149.71293694816407" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="870.1898628125372" y="5532.695661087005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ask for funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5543.250715527004 L 1157.2884104373984 5543.250715527004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1179.0142308263985,5543.250715527004) translate(-1179.0142308263985,-5543.250715527004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1157.0245340763986 5532.255867152004 L 1179.0142308263985 5543.250715527004 L 1157.0245340763986 5554.2455639020045 Z"/></g></g><g><g><rect fill="white" stroke="none" x="734.3875103018399" y="5582.832169677004" width="236.84252984367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="738.3456557168399" y="5606.581042167004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, ADD PENDING Msg Reveal</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5617.136096607004 L 808.71268531684 5617.136096607004 L 808.71268531684 5651.440023537004 L 724.8879613058399 5651.440023537004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5651.440023537004) translate(-703.1621409168399,-5651.440023537004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 5640.445175162004 L 703.1621409168399 5651.440023537004 L 725.1518376668399 5662.434871912004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="344.66126591912507" y="5691.021477687004" width="254.7665563329297" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="348.61941133412506" y="5714.770350177005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Alice, Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5725.325404617004 L 262.65276764333987 5725.325404617004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5725.325404617004) translate(-240.92694725433986,-5725.325404617004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5714.330556242004 L 240.92694725433986 5725.325404617004 L 262.91664400433984 5736.3202529920045 Z"/></g></g><g><g><rect fill="white" stroke="none" x="277.2609986924649" y="5764.906858767004" width="218.16674859367188" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="281.2191441074649" y="5788.655731257005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Arbitrating Funding event</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 5799.210785697004 L 681.4363205278399 5799.210785697004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5799.210785697004) translate(-703.1621409168399,-5799.210785697004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 5788.215937322004 L 703.1621409168399 5799.210785697004 L 681.1724441668399 5810.205634072005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="395.5703082775235" y="5838.792239847005" width="152.94847161613282" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="399.5284536925235" y="5862.541112337005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, Ctl Tx::Funding</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 5873.096166777004 L 262.65276764333987 5873.096166777004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,5873.096166777004) translate(-240.92694725433986,-5873.096166777004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 5862.101318402004 L 240.92694725433986 5873.096166777004 L 262.91664400433984 5884.091015152005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="379.66479832879304" y="5912.677620927005" width="184.75949151359376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="383.62294374379303" y="5936.426493417005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">If Bob, Ctl FundingUpdated</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 5946.981547857004 L 681.4363205278399 5946.981547857004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,5946.981547857004) translate(-703.1621409168399,-5946.981547857004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 5935.986699482004 L 703.1621409168399 5946.981547857004 L 681.1724441668399 5957.976396232005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="272.1523166393399" y="5986.563002007005" width="399.7844548925" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="276.1104620543399" y="6010.311874497005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg RevealProof (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6020.866928937005 L 262.65276764333987 6020.866928937005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,6020.866928937005) translate(-240.92694725433986,-6020.866928937005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 6009.872080562004 L 240.92694725433986 6020.866928937005 L 262.91664400433984 6031.861777312005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="289.67200047723054" y="6060.448383087005" width="364.74508721671873" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="293.63014589223053" y="6084.197255577005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">if Bob, SEND PENDING Msg Reveal (maker is sender)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6094.752310017005 L 262.65276764333987 6094.752310017005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,6094.752310017005) translate(-240.92694725433986,-6094.752310017005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 6083.757461642004 L 240.92694725433986 6094.752310017005 L 262.91664400433984 6105.747158392005 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 6155.883666982005 L 3064.80618195 6155.883666982005 M 13.19381805 6164.679545682005 L 3064.80618195 6164.679545682005 M 13.19381805 6173.475424382004 L 3064.80618195 6173.475424382004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1418.1453755610742 6134.333764167005 L 1659.8546244389258 6134.333764167005 L 1659.8546244389258 6195.025327197005 L 1418.1453755610742 6195.025327197005 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1455.0880661010742" y="6171.276454707005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Commit-Reveal Complete</text></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 6256.156684162005 L 3064.80618195 6256.156684162005 M 13.19381805 6264.952562862005 L 3064.80618195 6264.952562862005 M 13.19381805 6273.748441562005 L 3064.80618195 6273.748441562005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 921.9003270381249 6234.606781347005 L 2156.099672961875 6234.606781347005 L 2156.099672961875 6295.298344377005 L 921.9003270381249 6295.298344377005 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="958.843017578125" y="6271.549471887005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Changing semantics: On Commit-Reveal, Maker and Taker were the key roles. From now on Bob or Alice are the key roles. Now t_ is bob_ on the left and m_ is alice_ on the right.</text></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 6356.4297013420055 L 3064.80618195 6356.4297013420055 M 13.19381805 6365.225580042005 L 3064.80618195 6365.225580042005 M 13.19381805 6374.021458742005 L 3064.80618195 6374.021458742005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1391.237744640664 6334.879798527006 L 1686.762255359336 6334.879798527006 L 1686.762255359336 6395.571361557006 L 1391.237744640664 6395.571361557006 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1428.180435180664" y="6371.822489067005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Swap setup: Bob is left, Alice right</text></g><g><g><rect fill="white" stroke="none" x="505.96871438758205" y="6435.152815707006" width="244.49456841789063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="509.92685980258204" y="6458.9016881970065" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl CheckpointWalletBobPrelockBob</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 6469.456742637006 L 993.779229549715 6469.456742637006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,6469.456742637006) translate(-1015.5050499387149,-6469.456742637006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 6458.461894262005 L 1015.5050499387149 6469.456742637006 L 993.5153531887149 6480.451591012006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="388.64119298211335" y="6509.038196787006" width="166.80670220695313" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="392.59933839711334" y="6532.787069277007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 6543.342123717006 L 681.4363205278399 6543.342123717006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,6543.342123717006) translate(-703.1621409168399,-6543.342123717006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 6532.347275342006 L 703.1621409168399 6543.342123717006 L 681.1724441668399 6554.336972092006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="738.8472212530119" y="6582.923577867006" width="240.97274834953126" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="742.8053666680119" y="6606.672450357007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl CheckpointSwapBobPrelockBob</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6617.227504797006 L 993.779229549715 6617.227504797006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,6617.227504797006) translate(-1015.5050499387149,-6617.227504797006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 6606.232656422006 L 1015.5050499387149 6617.227504797006 L 993.5153531887149 6628.2223531720065 Z"/></g></g><g><g><rect fill="white" stroke="none" x="308.9181184434415" y="6656.808958947006" width="154.85250909171876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="312.87626385844146" y="6680.557831437007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Arbitrating Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6691.112885877006 L 91.25242545076173 6691.112885877006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,6691.112885877006) translate(-69.52660506176173,-6691.112885877006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 6680.118037502006 L 69.52660506176173 6691.112885877006 L 91.51630181176174 6702.107734252007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="337.0283326768399" y="6730.694340027007" width="98.63208062492187" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="340.9864780918399" y="6754.443212517007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Cancel</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6764.998266957006 L 91.25242545076173 6764.998266957006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,6764.998266957006) translate(-69.52660506176173,-6764.998266957006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 6754.003418582006 L 69.52660506176173 6764.998266957006 L 91.51630181176174 6775.993115332007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="336.20871445174225" y="6804.579721107007" width="100.27131707511718" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="340.16685986674224" y="6828.328593597007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Refund</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6838.883648037006 L 91.25242545076173 6838.883648037006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,6838.883648037006) translate(-69.52660506176173,-6838.883648037006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 6827.888799662006 L 69.52660506176173 6838.883648037006 L 91.51630181176174 6849.878496412007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1022.5559997043672" y="6878.465102187007" width="176.5847936376172" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1026.5141451193672" y="6902.213974677007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 6912.7690291170065 L 1496.8088317405118 6912.7690291170065" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1518.5346521295119,6912.7690291170065) translate(-1518.5346521295119,-6912.7690291170065)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1496.544955379512 6901.774180742006 L 1518.5346521295119 6912.7690291170065 L 1496.544955379512 6923.763877492007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1844.6125736704143" y="6952.350483267007" width="176.5847936376172" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1848.5707190854143" y="6976.099355757007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 6986.654410197007 L 2325.549468459934 6986.654410197007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2347.275288848934,6986.654410197007) translate(-2347.275288848934,-6986.654410197007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2325.285592098934 6975.659561822006 L 2347.275288848934 6986.654410197007 L 2325.285592098934 6997.649258572007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2598.898988050047" y="7026.235864347007" width="154.85250909171876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2602.8571334650474" y="7049.984736837007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Arbitrating Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 7060.539791277007 L 2983.6493759538794 7060.539791277007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(3005.3751963428795,7060.539791277007) translate(-3005.3751963428795,-7060.539791277007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2983.3854995928796 7049.544942902006 L 3005.3751963428795 7060.539791277007 L 2983.3854995928796 7071.534639652007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2627.0092022834456" y="7100.121245427007" width="98.63208062492187" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2630.967347698446" y="7123.8701179170075" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Cancel</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 7134.425172357007 L 2983.6493759538794 7134.425172357007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(3005.3751963428795,7134.425172357007) translate(-3005.3751963428795,-7134.425172357007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2983.3854995928796 7123.4303239820065 L 3005.3751963428795 7134.425172357007 L 2983.3854995928796 7145.420020732007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2626.189584058348" y="7174.006626507007" width="100.27131707511718" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2630.147729473348" y="7197.755498997008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Refund</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 7208.310553437007 L 2983.6493759538794 7208.310553437007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(3005.3751963428795,7208.310553437007) translate(-3005.3751963428795,-7208.310553437007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2983.3854995928796 7197.315705062007 L 3005.3751963428795 7208.310553437007 L 2983.3854995928796 7219.305401812007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2488.0675603945783" y="7247.892007587007" width="176.5847936376172" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2492.0257058095785" y="7271.640880077008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg CoreArbitratingSetup</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 7282.195934517007 L 2783.71880518884 7282.195934517007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2805.4446255778403,7282.195934517007) translate(-2805.4446255778403,-7282.195934517007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2783.4549288278404 7271.201086142007 L 2805.4446255778403 7282.195934517007 L 2783.4549288278404 7293.1907828920075 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2296.7101793226057" y="7321.7773886670075" width="250.18531853996095" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2300.668324737606" y="7345.526261157008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl CheckpointWalletAlicePrelockBob</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2805.4446255778403 7356.081315597007 L 2059.8868719963325 7356.081315597007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2038.1610516073324,7356.081315597007) translate(-2038.1610516073324,-7356.081315597007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2060.1507483573323 7345.086467222007 L 2038.1610516073324 7356.081315597007 L 2060.1507483573323 7367.076163972008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2468.9086553652814" y="7395.662769747008" width="214.90260369621095" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2472.8668007802817" y="7419.411642237008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2805.4446255778403 7429.966696677007 L 2369.001109237934 7429.966696677007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2347.275288848934,7429.966696677007) translate(-2347.275288848934,-7429.966696677007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2369.264985598934 7418.971848302007 L 2347.275288848934 7429.966696677007 L 2369.264985598934 7440.961545052008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2069.386420992332" y="7469.548150827008" width="246.66349847160157" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2073.3445664073324" y="7493.297023317008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl CheckpointSwapAlicePrelockBob</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 7503.8520777570075 L 2059.8868719963325 7503.8520777570075" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2038.1610516073324,7503.8520777570075) translate(-2038.1610516073324,-7503.8520777570075)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2060.1507483573323 7492.857229382007 L 2038.1610516073324 7503.8520777570075 L 2060.1507483573323 7514.846926132008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1820.5646229257854" y="7543.433531907008" width="224.680695126875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1824.5227683407854" y="7567.182404397008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 7577.737458837008 L 1540.260472518512 7577.737458837008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1518.5346521295119,7577.737458837008) translate(-1518.5346521295119,-7577.737458837008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1540.5243488795118 7566.742610462007 L 1518.5346521295119 7577.737458837008 L 1540.5243488795118 7588.732307212008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="998.5080489597383" y="7617.318912987008" width="224.680695126875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1002.4661943747383" y="7641.067785477008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 7651.622839917008 L 724.8879613058399 7651.622839917008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,7651.622839917008) translate(-703.1621409168399,-7651.622839917008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 725.1518376668399 7640.627991542007 L 703.1621409168399 7651.622839917008 L 725.1518376668399 7662.617688292008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="359.7041965221524" y="7691.204294067008" width="224.680695126875" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="363.6623419371524" y="7714.953166557008" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg RefundProcedureSignatures</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 7725.508220997008 L 262.65276764333987 7725.508220997008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,7725.508220997008) translate(-240.92694725433986,-7725.508220997008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 7714.513372622007 L 240.92694725433986 7725.508220997008 L 262.91664400433984 7736.503069372008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="359.7149310802579" y="7765.089675147008" width="224.65922601066407" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="363.6730764952579" y="7788.838547637009" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Datum::SignedArbitratingLock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 7799.393602077008 L 681.4363205278399 7799.393602077008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,7799.393602077008) translate(-703.1621409168399,-7799.393602077008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 7788.3987537020075 L 703.1621409168399 7799.393602077008 L 681.1724441668399 7810.388450452008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="508.82125345008205" y="7838.975056227008" width="238.78949029289063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="512.779398865082" y="7862.723928717009" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl CheckpointWalletBobPreBuySig</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 7873.278983157008 L 993.779229549715 7873.278983157008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,7873.278983157008) translate(-1015.5050499387149,-7873.278983157008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 7862.284134782008 L 1015.5050499387149 7873.278983157008 L 993.5153531887149 7884.273831532008 Z"/></g></g><g><g><rect fill="white" stroke="none" x="379.2639651989102" y="7912.860437307008" width="185.56115777335938" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="383.2221106139102" y="7936.609309797009" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 7947.164364237008 L 681.4363205278399 7947.164364237008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,7947.164364237008) translate(-703.1621409168399,-7947.164364237008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 7936.169515862008 L 703.1621409168399 7947.164364237008 L 681.1724441668399 7958.159212612009 Z"/></g></g><g><g><rect fill="white" stroke="none" x="741.6997603155119" y="7986.7458183870085" width="235.26767022453126" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="745.6579057305119" y="8010.494690877009" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl CheckpointSwapBobPreBuySig</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 8021.049745317008 L 993.779229549715 8021.049745317008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1015.5050499387149,8021.049745317008) translate(-1015.5050499387149,-8021.049745317008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 993.5153531887149 8010.054896942008 L 1015.5050499387149 8021.049745317008 L 993.5153531887149 8032.044593692009 Z"/></g></g><g><g><rect fill="white" stroke="none" x="296.41991898055085" y="8060.631199467009" width="179.8489080175" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="300.37806439555084" y="8084.380071957009" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast Arbitrating Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 8094.935126397008 L 91.25242545076173 8094.935126397008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,8094.935126397008) translate(-69.52660506176173,-8094.935126397008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 8083.940278022008 L 69.52660506176173 8094.935126397008 L 91.51630181176174 8105.929974772009 Z"/></g></g><g><g><rect fill="white" stroke="none" x="309.32255264754303" y="8134.516580547009" width="154.04364068351563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="313.280698062543" y="8158.265453037009" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Accordant Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 8168.8205074770085 L 91.25242545076173 8168.8205074770085" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,8168.8205074770085) translate(-69.52660506176173,-8168.8205074770085)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 8157.825659102008 L 69.52660506176173 8168.8205074770085 L 91.51630181176174 8179.815355852009 Z"/></g></g><g><g><rect fill="white" stroke="none" x="347.2144441270352" y="8208.401961627007" width="78.25985772453124" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="351.1725895420352" y="8232.150834117007" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 8242.705888557008 L 91.25242545076173 8242.705888557008" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,8242.705888557008) translate(-69.52660506176173,-8242.705888557008)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 8231.711040182008 L 69.52660506176173 8242.705888557008 L 91.51630181176174 8253.700736932007 Z"/></g></g><g><g><rect fill="white" stroke="none" x="315.976101841879" y="8282.287342707006" width="140.73654229484376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="319.93424725687896" y="8306.036215197006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Arbitrating Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 8316.591269637007 L 681.4363205278399 8316.591269637007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,8316.591269637007) translate(-703.1621409168399,-8316.591269637007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 8305.596421262007 L 703.1621409168399 8316.591269637007 L 681.1724441668399 8327.586118012006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2605.9569714484846" y="8282.287342707006" width="140.73654229484376" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2609.915116863485" y="8306.036215197006" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Arbitrating Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 3005.3751963428795 8316.591269637007 L 2369.001109237934 8316.591269637007" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2347.275288848934,8316.591269637007) translate(-2347.275288848934,-8316.591269637007)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2369.264985598934 8305.596421262007 L 2347.275288848934 8316.591269637007 L 2369.264985598934 8327.586118012006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2599.3034222541487" y="8356.172723787005" width="154.04364068351563" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2603.261567669149" y="8379.921596277005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Accordant Lock</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 8390.476650717006 L 2983.6493759538794 8390.476650717006" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(3005.3751963428795,8390.476650717006) translate(-3005.3751963428795,-8390.476650717006)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2983.3854995928796 8379.481802342007 L 3005.3751963428795 8390.476650717006 L 2983.3854995928796 8401.471499092006 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2606.361405652586" y="8430.058104867005" width="139.92767388664063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2610.3195510675864" y="8453.806977357004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Accordant Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 3005.3751963428795 8464.362031797005 L 2369.001109237934 8464.362031797005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2347.275288848934,8464.362031797005) translate(-2347.275288848934,-8464.362031797005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2369.264985598934 8453.367183422006 L 2347.275288848934 8464.362031797005 L 2369.264985598934 8475.356880172005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="316.38053604598053" y="8430.058104867005" width="139.92767388664063" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="320.3386814609805" y="8453.806977357004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Accordant Lock final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 8464.362031797005 L 681.4363205278399 8464.362031797005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,8464.362031797005) translate(-703.1621409168399,-8464.362031797005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 8453.367183422006 L 703.1621409168399 8464.362031797005 L 681.1724441668399 8475.356880172005 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1013.1787719211641" y="8503.943485947004" width="195.33924920402345" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1017.1369173361641" y="8527.692358437003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 8538.247412877005 L 1496.8088317405118 8538.247412877005" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(1518.5346521295119,8538.247412877005) translate(-1518.5346521295119,-8538.247412877005)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 1496.544955379512 8527.252564502005 L 1518.5346521295119 8538.247412877005 L 1496.544955379512 8549.242261252004 Z"/></g></g><g><g><rect fill="white" stroke="none" x="1835.2353458872112" y="8577.828867027003" width="195.33924920402345" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1839.1934913022112" y="8601.577739517003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 1518.5346521295119 8612.132793957004 L 2325.549468459934 8612.132793957004" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2347.275288848934,8612.132793957004) translate(-2347.275288848934,-8612.132793957004)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2325.285592098934 8601.137945582004 L 2347.275288848934 8612.132793957004 L 2325.285592098934 8623.127642332003 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2082.8330838951642" y="8651.714248107002" width="219.7701726659375" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2086.7912293101645" y="8675.463120597002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl CheckpointSwapAlicePreBuy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 8686.018175037003 L 2059.8868719963325 8686.018175037003" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2038.1610516073324,8686.018175037003) translate(-2038.1610516073324,-8686.018175037003)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2060.1507483573323 8675.023326662003 L 2038.1610516073324 8686.018175037003 L 2060.1507483573323 8697.013023412002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2637.195313733641" y="8725.599629187001" width="78.25985772453124" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2641.153459148641" y="8749.348501677001" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Watch Buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 8759.903556117002 L 2983.6493759538794 8759.903556117002" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(3005.3751963428795,8759.903556117002) translate(-3005.3751963428795,-8759.903556117002)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2983.3854995928796 8748.908707742003 L 3005.3751963428795 8759.903556117002 L 2983.3854995928796 8770.898404492002 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2478.690332611375" y="8799.485010267" width="195.33924920402345" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2482.6484780263754" y="8823.233882757" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Msg BuyProcedureSignature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 8833.788937197001 L 2783.71880518884 8833.788937197001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2805.4446255778403,8833.788937197001) translate(-2805.4446255778403,-8833.788937197001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2783.4549288278404 8822.794088822002 L 2805.4446255778403 8833.788937197001 L 2783.4549288278404 8844.783785572 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2310.1568422254377" y="8873.370391347" width="223.29199273429688" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2314.114987640438" y="8897.119263837" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl CheckpointWalletAlicePreBuy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2805.4446255778403 8907.674318277 L 2059.8868719963325 8907.674318277" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2038.1610516073324,8907.674318277) translate(-2038.1610516073324,-8907.674318277)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2060.1507483573323 8896.679469902001 L 2038.1610516073324 8907.674318277 L 2060.1507483573323 8918.669166652 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 8968.805675242 L 3064.80618195 8968.805675242 M 13.19381805 8977.601553942 L 3064.80618195 8977.601553942 M 13.19381805 8986.397432642001 L 3064.80618195 8986.397432642001" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1429.1224644892968 8947.255772427 L 1648.8775355107032 8947.255772427 L 1648.8775355107032 9007.947335457 L 1429.1224644892968 9007.947335457 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1466.0651550292969" y="8984.198462967" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Swap Setup Complete</text></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 9069.078692422 L 3064.80618195 9069.078692422 M 13.19381805 9077.874571122 L 3064.80618195 9077.874571122 M 13.19381805 9086.670449822 L 3064.80618195 9086.670449822" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1381.055226635293 9047.528789606999 L 1696.944773364707 9047.528789606999 L 1696.944773364707 9108.220352637 L 1381.055226635293 9108.220352637 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1417.997917175293" y="9084.471480147" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Buy Procedure: Bob is left, Alice right</text></g><g><g><rect fill="white" stroke="none" x="2519.4347631533674" y="9147.801806786998" width="113.85038812003906" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2523.3929085683676" y="9171.550679276997" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Fully signed buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2805.4446255778403 9182.105733716999 L 2369.001109237934 9182.105733716999" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2347.275288848934,9182.105733716999) translate(-2347.275288848934,-9182.105733716999)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2369.264985598934 9171.110885342 L 2347.275288848934 9182.105733716999 L 2369.264985598934 9193.100582091998 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2625.509568494383" y="9221.687187866997" width="101.63134820304687" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2629.4677139093833" y="9245.436060356997" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast buy</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 9255.991114796998 L 2983.6493759538794 9255.991114796998" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(3005.3751963428795,9255.991114796998) translate(-3005.3751963428795,-9255.991114796998)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2983.3854995928796 9244.996266421998 L 3005.3751963428795 9255.991114796998 L 2983.3854995928796 9266.985963171997 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2577.4279721198714" y="9295.572568946996" width="197.79454095207032" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2581.3861175348716" y="9319.321441436996" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: buy seen on mempool</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 3005.3751963428795 9329.876495876997 L 2369.001109237934 9329.876495876997" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2347.275288848934,9329.876495876997) translate(-2347.275288848934,-9329.876495876997)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2369.264985598934 9318.881647501998 L 2347.275288848934 9329.876495876997 L 2369.264985598934 9340.871344251997 Z"/></g></g><g><g><rect fill="white" stroke="none" x="287.4471025132657" y="9295.572568946996" width="197.79454095207032" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="291.4052479282657" y="9319.321441436996" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: buy seen on mempool</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 9329.876495876997 L 681.4363205278399 9329.876495876997" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,9329.876495876997) translate(-703.1621409168399,-9329.876495876997)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 9318.881647501998 L 703.1621409168399 9329.876495876997 L 681.1724441668399 9340.871344251997 Z"/></g></g><g><g><rect fill="white" stroke="none" x="412.27038914910554" y="9369.457950026996" width="119.54830987296874" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="416.22853456410553" y="9393.206822516995" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Buy signature</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 9403.761876956996 L 262.65276764333987 9403.761876956996" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,9403.761876956996) translate(-240.92694725433986,-9403.761876956996)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 9392.767028581997 L 240.92694725433986 9403.761876956996 L 262.91664400433984 9414.756725331996 Z"/></g></g><g><g><rect fill="white" stroke="none" x="272.15231663933986" y="9443.343331106997" width="159.46952874503907" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="276.11046205433985" y="9467.092203596996" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">recover accordant keys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 240.92694725433986 9477.647258036995 L 346.4774916543399 9477.647258036995 L 346.4774916543399 9511.951184966996 L 262.65276764333987 9511.951184966996" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(240.92694725433986,9511.951184966996) translate(-240.92694725433986,-9511.951184966996)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 262.91664400433984 9500.956336591997 L 240.92694725433986 9511.951184966996 L 262.91664400433984 9522.946033341996 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 9573.082541931995 L 3064.80618195 9573.082541931995 M 13.19381805 9581.878420631996 L 3064.80618195 9581.878420631996 M 13.19381805 9590.674299331997 L 3064.80618195 9590.674299331997" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1173.446225475625 9551.532639116995 L 1904.553774524375 9551.532639116995 L 1904.553774524375 9612.224202146996 L 1173.446225475625 9612.224202146996 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1210.388916015625" y="9588.475329656996" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Cancel Init t &gt; t0: Bob is left, Alice right, either have a fully signed and valid cancel tx, and can publish</text></g><g><g><rect fill="white" stroke="none" x="331.46284195418366" y="9651.805656296994" width="109.76306207023437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="335.42098736918365" y="9675.554528786994" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Cancel valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 9686.109583226995 L 681.4363205278399 9686.109583226995" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,9686.109583226995) translate(-703.1621409168399,-9686.109583226995)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 9675.114734851995 L 703.1621409168399 9686.109583226995 L 681.1724441668399 9697.104431601994 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2621.4437115607893" y="9651.805656296994" width="109.76306207023437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2625.4018569757895" y="9675.554528786994" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Cancel valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 3005.3751963428795 9686.109583226995 L 2369.001109237934 9686.109583226995" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2347.275288848934,9686.109583226995) translate(-2347.275288848934,-9686.109583226995)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2369.264985598934 9675.114734851995 L 2347.275288848934 9686.109583226995 L 2369.264985598934 9697.104431601994 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2578.2619336066878" y="9725.691037376993" width="196.1266179784375" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2582.220079021688" y="9749.439909866993" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast cancel (Alice inits)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 9759.994964306994 L 2983.6493759538794 9759.994964306994" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(3005.3751963428795,9759.994964306994) translate(-3005.3751963428795,-9759.994964306994)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2983.3854995928796 9749.000115931995 L 3005.3751963428795 9759.994964306994 L 2983.3854995928796 9770.989812681993 Z"/></g></g><g><g><rect fill="white" stroke="none" x="291.12643906111725" y="9725.691037376993" width="190.4358678563672" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="295.08458447611724" y="9749.439909866993" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast cancel (Bob inits)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 9759.994964306994 L 91.25242545076173 9759.994964306994" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,9759.994964306994) translate(-69.52660506176173,-9759.994964306994)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 9749.000115931995 L 69.52660506176173 9759.994964306994 L 91.51630181176174 9770.989812681993 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 9821.126321271993 L 3064.80618195 9821.126321271993 M 13.19381805 9829.922199971994 L 3064.80618195 9829.922199971994 M 13.19381805 9838.718078671995 L 3064.80618195 9838.718078671995" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1358.027310680703 9799.576418456993 L 1719.972689319297 9799.576418456993 L 1719.972689319297 9860.267981486993 L 1358.027310680703 9860.267981486993 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1394.9700012207031" y="9836.519108996994" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Cancel detected t &gt; t0: Bob is left, Alice right</text></g><g><g><rect fill="white" stroke="none" x="324.9345750474454" y="9899.849435636992" width="122.81959588371093" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="328.89272046244537" y="9923.598308126991" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event cancel final</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 9934.153362566993 L 681.4363205278399 9934.153362566993" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,9934.153362566993) translate(-703.1621409168399,-9934.153362566993)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 9923.158514191993 L 703.1621409168399 9934.153362566993 L 681.1724441668399 9945.148210941992 Z"/></g></g><g><g><rect fill="white" stroke="none" x="326.56306168074616" y="9973.734816716991" width="119.56262261710937" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="330.52120709574615" y="9997.48368920699" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Broadcast refund</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 703.1621409168399 10008.038743646992 L 91.25242545076173 10008.038743646992" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(69.52660506176173,10008.038743646992) translate(-69.52660506176173,-10008.038743646992)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 91.51630181176174 9997.043895271992 L 69.52660506176173 10008.038743646992 L 91.51630181176174 10019.033592021991 Z"/></g></g><g><g><rect fill="white" stroke="none" x="320.8543977403165" y="10047.62019779699" width="130.97995049796876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="324.81254315531646" y="10071.36907028699" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: refund seen</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 69.52660506176173 10081.924124726991 L 681.4363205278399 10081.924124726991" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(703.1621409168399,10081.924124726991) translate(-703.1621409168399,-10081.924124726991)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 681.1724441668399 10070.929276351992 L 703.1621409168399 10081.924124726991 L 681.1724441668399 10092.91897310199 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2610.835267346922" y="10047.62019779699" width="130.97995049796876" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2614.7934127619224" y="10071.36907028699" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Event: refund seen</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 3005.3751963428795 10081.924124726991 L 2369.001109237934 10081.924124726991" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2347.275288848934,10081.924124726991) translate(-2347.275288848934,-10081.924124726991)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2369.264985598934 10070.929276351992 L 2347.275288848934 10081.924124726991 L 2369.264985598934 10092.91897310199 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2517.816995819383" y="10121.50557887699" width="117.0859227880078" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2521.775141234383" y="10145.254451366989" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Tx::Refund tx</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 10155.80950580699 L 2783.71880518884 10155.80950580699" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2805.4446255778403,10155.80950580699) translate(-2805.4446255778403,-10155.80950580699)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2783.4549288278404 10144.81465743199 L 2805.4446255778403 10155.80950580699 L 2783.4549288278404 10166.80435418199 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2836.66999496284" y="10195.39095995699" width="159.46952874503907" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2840.6281403778403" y="10219.13983244699" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">recover accordant keys</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2805.4446255778403 10229.69488688699 L 2910.9951699778403 10229.69488688699 L 2910.9951699778403 10263.99881381699 L 2827.1704459668404 10263.99881381699" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2805.4446255778403,10263.99881381699) translate(-2805.4446255778403,-10263.99881381699)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2827.43432232784 10253.00396544199 L 2805.4446255778403 10263.99881381699 L 2827.43432232784 10274.99366219199 Z"/></g></g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 13.19381805 10325.13017078199 L 3064.80618195 10325.13017078199 M 13.19381805 10333.92604948199 L 3064.80618195 10333.92604948199 M 13.19381805 10342.72192818199 L 3064.80618195 10342.72192818199" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 1414.8633549922265 10303.580267966989 L 1663.1366450077735 10303.580267966989 L 1663.1366450077735 10364.27183099699 L 1414.8633549922265 10364.27183099699 Z" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="1451.8060455322266" y="10340.52295850699" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve"> Punish process t &gt; t1 &gt; t0 </text></g><g><g><rect fill="white" stroke="none" x="2599.843865674559" y="10403.853285146988" width="152.96275384269532" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2603.802011089559" y="10427.602157636988" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Event: punish valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 3005.3751963428795 10438.157212076989 L 2369.001109237934 10438.157212076989" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2347.275288848934,10438.157212076989) translate(-2347.275288848934,-10438.157212076989)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2369.264985598934 10427.16236370199 L 2347.275288848934 10438.157212076989 L 2369.264985598934 10449.152060451988 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2499.8785802920393" y="10477.738666226987" width="152.96275384269532" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2503.8367257070395" y="10501.487538716987" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Event: punish valid</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 10512.042593156988 L 2783.71880518884 10512.042593156988" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2805.4446255778403,10512.042593156988) translate(-2805.4446255778403,-10512.042593156988)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2783.4549288278404 10501.047744781989 L 2805.4446255778403 10512.042593156988 L 2783.4549288278404 10523.037441531987 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2836.66999496284" y="10551.624047306988" width="112.22546441398437" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2840.6281403778403" y="10575.372919796988" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">fully sign punish</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2805.4446255778403 10585.927974236987 L 2910.9951699778403 10585.927974236987 L 2910.9951699778403 10620.231901166988 L 2827.1704459668404 10620.231901166988" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2805.4446255778403,10620.231901166988) translate(-2805.4446255778403,-10620.231901166988)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2827.43432232784 10609.237052791988 L 2805.4446255778403 10620.231901166988 L 2827.43432232784 10631.226749541987 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2526.7790624697736" y="10659.813355316986" width="99.16178948722656" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2530.737207884774" y="10683.562227806986" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Tx::Punish</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2805.4446255778403 10694.117282246987 L 2369.001109237934 10694.117282246987" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(2347.275288848934,10694.117282246987) translate(-2347.275288848934,-10694.117282246987)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2369.264985598934 10683.122433871988 L 2347.275288848934 10694.117282246987 L 2369.264985598934 10705.112130621987 Z"/></g></g><g><g><rect fill="white" stroke="none" x="2596.994904798094" y="10733.698736396986" width="158.660675595625" height="34.30392693"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="2600.9530502130942" y="10757.447608886985" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Ctl Broadcast punish tx</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 2347.275288848934 10768.002663326986 L 2983.6493759538794 10768.002663326986" stroke-miterlimit="10" stroke-width="2.1989696750000003" stroke-dasharray=""/><g transform="translate(3005.3751963428795,10768.002663326986) translate(-3005.3751963428795,-10768.002663326986)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 2983.3854995928796 10757.007814951987 L 3005.3751963428795 10768.002663326986 L 2983.3854995928796 10778.997511701986 Z"/></g></g></g><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/></g></svg>
\ No newline at end of file
diff --git a/doc/sequencediagram.txt b/doc/sequencediagram.txt
index c9345127e..b49142041 100644
--- a/doc/sequencediagram.txt
+++ b/doc/sequencediagram.txt
@@ -37,6 +37,7 @@ t_wallet <- t_farcasterd : Ctl TakeOffer
 t_wallet -> t_wallet : create taker wallet
 t_wallet -> t_farcasterd : Ctl LaunchSwap
 t_swap -> t_farcasterd : Ctl Hello
+t_swap -> t_wallet : Ctl Hello
 t_farcasterd -> t_farcasterd:launch syncer
 t_swap <- t_farcasterd : Ctl TakeSwap
 t_swap -> peerd : Msg TakerCommit
@@ -46,6 +47,7 @@ m_farcasterd -> m_wallet : Msg TakerCommit
 m_wallet -> m_wallet : create maker wallet
 m_wallet -> m_farcasterd : Ctl LaunchSwap
 m_swap -> m_farcasterd : Ctl Hello
+m_swap -> m_wallet : Ctl Hello
 m_farcasterd -> m_farcasterd:launch syncer
 m_farcasterd -> m_swap : Ctl MakeSwap
 

From 9d3aa15089abbebe48ee2247629f0508de26b23d Mon Sep 17 00:00:00 2001
From: Robert Hambrock <roberthambrock@gmail.com>
Date: Wed, 11 May 2022 21:28:22 +0200
Subject: [PATCH 17/32] impl/derive missing traits & other cleanup

---
 src/bin/checkpointd.rs     |  5 +----
 src/checkpointd/runtime.rs | 12 ++++++------
 src/rpc/request.rs         | 10 +++++-----
 src/walletd/mod.rs         |  2 +-
 src/walletd/runtime.rs     |  4 ++++
 5 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/src/bin/checkpointd.rs b/src/bin/checkpointd.rs
index 6134f2621..a4f726989 100644
--- a/src/bin/checkpointd.rs
+++ b/src/bin/checkpointd.rs
@@ -32,10 +32,7 @@ extern crate log;
 use clap::Clap;
 
 use farcaster_node::ServiceConfig;
-use farcaster_node::{
-    rpc::request::Token,
-    checkpointd::{self, Opts},
-};
+use farcaster_node::checkpointd::{self, Opts};
 
 fn main() {
     let mut opts = Opts::parse();
diff --git a/src/checkpointd/runtime.rs b/src/checkpointd/runtime.rs
index 70da84465..927dbe906 100644
--- a/src/checkpointd/runtime.rs
+++ b/src/checkpointd/runtime.rs
@@ -189,13 +189,13 @@ impl Runtime {
                 }
             },
 
-            Request::Checkpoint(CheckpointWalletAlicePreBuy) => {
-                todo!();
-            }
+            // Request::Checkpoint(CheckpointWalletAlicePreBuy(wallet_state)) => {
+            //     todo!();
+            // }
 
-            Request::Checkpoint(CheckpointWalletAlicePreBuy) => {
-                todo!();
-            }
+            // Request::Checkpoint(CheckpointSwapAlicePreBuy) => {
+            //     todo!();
+            // }
 
             _ => {
                 error!(
diff --git a/src/rpc/request.rs b/src/rpc/request.rs
index b8c35dfc4..8dda582f9 100644
--- a/src/rpc/request.rs
+++ b/src/rpc/request.rs
@@ -14,11 +14,11 @@
 
 #![allow(clippy::clone_on_copy)]
 
-use crate::syncerd::{
+use crate::{farcasterd, syncerd::{
     types::{Event, Task},
     Coin, SweepXmrAddress,
-};
-use crate::walletd::NodeSecrets;
+}};
+use crate::walletd::{NodeSecrets, runtime::AliceState};
 use amplify::{Holder, ToYamlString, Wrapper};
 use farcaster_core::syncer::BroadcastTransaction;
 use farcaster_core::{bundle::SignedArbitratingLock, syncer::Abort};
@@ -681,8 +681,8 @@ pub enum FundingInfo {
 #[derive(Clone, Debug, Display, StrictDecode, StrictEncode)]
 #[display("checkpoint")]
 pub enum Checkpoint {
-    CheckpointWalletAlicePreBuy,
-    CheckpointSwapAlicePreBuy,
+    CheckpointWalletAlicePreBuy(AliceState),
+    // CheckpointSwapAlicePreBuy(SwapState),
 }
 
 impl FromStr for BitcoinFundingInfo {
diff --git a/src/walletd/mod.rs b/src/walletd/mod.rs
index 77ff80bc8..37a37e2cc 100644
--- a/src/walletd/mod.rs
+++ b/src/walletd/mod.rs
@@ -14,7 +14,7 @@
 
 #[cfg(feature = "shell")]
 mod opts;
-mod runtime;
+pub mod runtime;
 
 #[cfg(feature = "shell")]
 pub use opts::{KeyOpts, NodeSecrets, Opts};
diff --git a/src/walletd/runtime.rs b/src/walletd/runtime.rs
index d59577d5a..29ee40b9d 100644
--- a/src/walletd/runtime.rs
+++ b/src/walletd/runtime.rs
@@ -34,6 +34,7 @@ use bitcoin::{
 };
 use colored::Colorize;
 use farcaster_core::{
+    impl_strict_encoding,
     bitcoin::{
         segwitv0::{BuyTx, CancelTx, FundingTx, PunishTx, RefundTx},
         segwitv0::{LockTx, SegwitV0},
@@ -110,6 +111,7 @@ pub enum Wallet {
     Bob(BobState),
 }
 
+#[derive(Clone, Debug)]
 pub struct AliceState {
     alice: Alice<BtcXmr>,
     local_params: AliceParameters<BtcXmr>,
@@ -164,6 +166,8 @@ impl Decodable for AliceState {
     }
 }
 
+impl_strict_encoding!(AliceState);
+
 impl AliceState {
     fn new(
         alice: Alice<BtcXmr>,

From a46f5a48cf56da32cae971086fe7074c8c61cc25 Mon Sep 17 00:00:00 2001
From: Robert Hambrock <roberthambrock@gmail.com>
Date: Thu, 12 May 2022 01:25:47 +0200
Subject: [PATCH 18/32] rudimentary checkpoint writing

---
 src/checkpointd/runtime.rs | 50 ++++++++++++++++++++++++--------------
 src/service.rs             |  3 +++
 2 files changed, 35 insertions(+), 18 deletions(-)

diff --git a/src/checkpointd/runtime.rs b/src/checkpointd/runtime.rs
index 927dbe906..57208f6c8 100644
--- a/src/checkpointd/runtime.rs
+++ b/src/checkpointd/runtime.rs
@@ -65,10 +65,7 @@ use internet2::{LocalNode, ToNodeAddr, TypedEnum, LIGHTNING_P2P_DEFAULT_PORT};
 use microservices::esb::{self, Handler};
 use request::{LaunchSwap, NodeId};
 
-pub fn run(
-    config: ServiceConfig,
-    data_dir: PathBuf,
-) -> Result<(), Error> {
+pub fn run(config: ServiceConfig, data_dir: PathBuf) -> Result<(), Error> {
     let runtime = Runtime {
         identity: ServiceId::Wallet,
         checkpoints: CheckpointGetSet::new(data_dir),
@@ -82,8 +79,7 @@ pub struct Runtime {
     checkpoints: CheckpointGetSet,
 }
 
-impl Runtime {
-}
+impl Runtime {}
 
 impl CtlServer for Runtime {}
 
@@ -189,11 +185,14 @@ impl Runtime {
                 }
             },
 
-            // Request::Checkpoint(CheckpointWalletAlicePreBuy(wallet_state)) => {
-            //     todo!();
-            // }
+            Request::Checkpoint(request::Checkpoint::CheckpointWalletAlicePreBuy(wallet_state)) => {
+                let key = (get_swap_id(&source)?, self.identity.clone()).into();
+                let mut state_encoded = vec![];
+                let _state_size = wallet_state.consensus_encode(&mut state_encoded);
+                self.checkpoints.set_state(&key, &state_encoded);
+            }
 
-            // Request::Checkpoint(CheckpointSwapAlicePreBuy) => {
+            // Request::Checkpoint(request::Checkpoint::CheckpointSwapAlicePreBuy(_)) => {
             //     todo!();
             // }
 
@@ -208,6 +207,21 @@ impl Runtime {
     }
 }
 
+// TODO: replace this ugly temp structure
+struct CheckpointKey(Vec<u8>);
+
+impl From<(SwapId, ServiceId)> for CheckpointKey {
+    fn from((swapid, serviceid): (SwapId, ServiceId)) -> Self {
+        CheckpointKey(
+            Into::<[u8; 32]>::into(swapid)
+                .iter()
+                .cloned()
+                .chain(Into::<Vec<u8>>::into(serviceid).iter().cloned())
+                .collect(),
+        )
+    }
+}
+
 struct CheckpointGetSet(lmdb::Environment);
 
 impl CheckpointGetSet {
@@ -217,20 +231,20 @@ impl CheckpointGetSet {
         CheckpointGetSet(env)
     }
 
-    fn set_state(&mut self, key: &SwapId, val: &[u8]) {
+    fn set_state(&mut self, key: &CheckpointKey, val: &[u8]) {
         let db = self.0.open_db(None).unwrap();
         let mut tx = self.0.begin_rw_txn().unwrap();
-        if !tx.get(db, &key).is_err() {
-            tx.del(db, &key, None).unwrap();
+        if !tx.get(db, &key.0).is_err() {
+            tx.del(db, &key.0, None).unwrap();
         }
-        tx.put(db, &key, &val, lmdb::WriteFlags::empty()).unwrap();
+        tx.put(db, &key.0, &val, lmdb::WriteFlags::empty()).unwrap();
         tx.commit().unwrap();
     }
 
-    fn get_state(&mut self, key: &SwapId) -> Vec<u8> {
+    fn get_state(&mut self, key: &CheckpointKey) -> Vec<u8> {
         let db = self.0.open_db(None).unwrap();
         let tx = self.0.begin_ro_txn().unwrap();
-        let val: Vec<u8> = tx.get(db, &key).unwrap().into();
+        let val: Vec<u8> = tx.get(db, &key.0).unwrap().into();
         tx.abort();
         val
     }
@@ -240,8 +254,8 @@ impl CheckpointGetSet {
 fn test_lmdb_state() {
     let val1 = vec![0, 1];
     let val2 = vec![2, 3, 4, 5];
-    let key1 = SwapId::random();
-    let key2 = SwapId::random();
+    let key1 = (SwapId::random(), ServiceId::Checkpoint).into();
+    let key2 = (SwapId::random(), ServiceId::Checkpoint).into();
     let path = std::env::current_dir().unwrap();
     let mut state = CheckpointGetSet::new(path.to_path_buf());
     state.set_state(&key1, &val1);
diff --git a/src/service.rs b/src/service.rs
index 9139b44dd..72227695e 100644
--- a/src/service.rs
+++ b/src/service.rs
@@ -129,6 +129,9 @@ pub enum ServiceId {
     #[display("grpcd")]
     Grpcd,
 
+    #[display("checkpointd")]
+    Checkpoint,
+
     #[display("other<{0}>")]
     Other(ClientName),
 }

From bd121d2a97728bf07e5bd61bc882b3a44a95c16c Mon Sep 17 00:00:00 2001
From: Robert Hambrock <roberthambrock@gmail.com>
Date: Thu, 12 May 2022 01:28:18 +0200
Subject: [PATCH 19/32] cargo fmt

---
 src/bin/checkpointd.rs     |  8 ++------
 src/checkpointd/runtime.rs |  1 -
 src/lib.rs                 |  4 ++--
 src/rpc/request.rs         | 13 ++++++++-----
 src/walletd/runtime.rs     |  2 +-
 5 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/src/bin/checkpointd.rs b/src/bin/checkpointd.rs
index a4f726989..3841fc5dd 100644
--- a/src/bin/checkpointd.rs
+++ b/src/bin/checkpointd.rs
@@ -31,8 +31,8 @@ extern crate log;
 
 use clap::Clap;
 
-use farcaster_node::ServiceConfig;
 use farcaster_node::checkpointd::{self, Opts};
+use farcaster_node::ServiceConfig;
 
 fn main() {
     let mut opts = Opts::parse();
@@ -46,11 +46,7 @@ fn main() {
     debug!("CTL RPC socket {}", &service_config.ctl_endpoint);
 
     debug!("Starting runtime ...");
-    checkpointd::run(
-        service_config,
-        opts.shared.data_dir,
-    )
-    .expect("Error running walletd runtime");
+    checkpointd::run(service_config, opts.shared.data_dir).expect("Error running walletd runtime");
 
     unreachable!()
 }
diff --git a/src/checkpointd/runtime.rs b/src/checkpointd/runtime.rs
index 57208f6c8..77b5d29c8 100644
--- a/src/checkpointd/runtime.rs
+++ b/src/checkpointd/runtime.rs
@@ -195,7 +195,6 @@ impl Runtime {
             // Request::Checkpoint(request::Checkpoint::CheckpointSwapAlicePreBuy(_)) => {
             //     todo!();
             // }
-
             _ => {
                 error!(
                     "Request {:?} is not supported by the CTL interface",
diff --git a/src/lib.rs b/src/lib.rs
index 032d7d3de..92ec0601b 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -59,6 +59,8 @@ pub mod opts;
 #[cfg(feature = "_rpc")]
 pub mod rpc;
 
+#[cfg(feature = "node")]
+pub mod checkpointd;
 #[cfg(feature = "node")]
 pub mod farcasterd;
 #[cfg(feature = "node")]
@@ -73,8 +75,6 @@ pub mod swapd;
 pub mod syncerd;
 #[cfg(feature = "node")]
 pub mod walletd;
-#[cfg(feature = "node")]
-pub mod checkpointd;
 
 #[cfg(feature = "_rpc")]
 pub use crate::config::Config;
diff --git a/src/rpc/request.rs b/src/rpc/request.rs
index 8dda582f9..cb27da60e 100644
--- a/src/rpc/request.rs
+++ b/src/rpc/request.rs
@@ -14,11 +14,14 @@
 
 #![allow(clippy::clone_on_copy)]
 
-use crate::{farcasterd, syncerd::{
-    types::{Event, Task},
-    Coin, SweepXmrAddress,
-}};
-use crate::walletd::{NodeSecrets, runtime::AliceState};
+use crate::walletd::{runtime::AliceState, NodeSecrets};
+use crate::{
+    farcasterd,
+    syncerd::{
+        types::{Event, Task},
+        Coin, SweepXmrAddress,
+    },
+};
 use amplify::{Holder, ToYamlString, Wrapper};
 use farcaster_core::syncer::BroadcastTransaction;
 use farcaster_core::{bundle::SignedArbitratingLock, syncer::Abort};
diff --git a/src/walletd/runtime.rs b/src/walletd/runtime.rs
index 29ee40b9d..b17b32915 100644
--- a/src/walletd/runtime.rs
+++ b/src/walletd/runtime.rs
@@ -34,7 +34,6 @@ use bitcoin::{
 };
 use colored::Colorize;
 use farcaster_core::{
-    impl_strict_encoding,
     bitcoin::{
         segwitv0::{BuyTx, CancelTx, FundingTx, PunishTx, RefundTx},
         segwitv0::{LockTx, SegwitV0},
@@ -49,6 +48,7 @@ use farcaster_core::{
     consensus::{self, CanonicalBytes, Decodable, Encodable},
     crypto::{ArbitratingKeyId, GenerateKey, SharedKeyId},
     crypto::{CommitmentEngine, ProveCrossGroupDleq},
+    impl_strict_encoding,
     monero::{Monero, SHARED_VIEW_KEY_ID},
     negotiation::PublicOffer,
     protocol_message::{

From bc9b937f53841a462202a81b1f55a16bbfa236b4 Mon Sep 17 00:00:00 2001
From: Robert Hambrock <roberthambrock@gmail.com>
Date: Thu, 12 May 2022 01:55:37 +0200
Subject: [PATCH 20/32] note re. indexing enums

---
 src/checkpointd/runtime.rs | 2 ++
 src/rpc/request.rs         | 1 +
 2 files changed, 3 insertions(+)

diff --git a/src/checkpointd/runtime.rs b/src/checkpointd/runtime.rs
index 77b5d29c8..e588dafc0 100644
--- a/src/checkpointd/runtime.rs
+++ b/src/checkpointd/runtime.rs
@@ -185,6 +185,8 @@ impl Runtime {
                 }
             },
 
+            // TODO: use RFC 2363 once stabilized: https://github.com/rust-lang/rust/issues/60553
+            // then, instead of explicitly matching on checkpoint variant, can use index as with fieldless enums, so have one generic request match for all originating services & checkpoint indices
             Request::Checkpoint(request::Checkpoint::CheckpointWalletAlicePreBuy(wallet_state)) => {
                 let key = (get_swap_id(&source)?, self.identity.clone()).into();
                 let mut state_encoded = vec![];
diff --git a/src/rpc/request.rs b/src/rpc/request.rs
index cb27da60e..0d95e9dea 100644
--- a/src/rpc/request.rs
+++ b/src/rpc/request.rs
@@ -684,6 +684,7 @@ pub enum FundingInfo {
 #[derive(Clone, Debug, Display, StrictDecode, StrictEncode)]
 #[display("checkpoint")]
 pub enum Checkpoint {
+    // TODO: use RFC 2363 once stabilized: https://github.com/rust-lang/rust/issues/60553
     CheckpointWalletAlicePreBuy(AliceState),
     // CheckpointSwapAlicePreBuy(SwapState),
 }

From c68474ed409e5963212be2c5c71e7d1cd887d9f4 Mon Sep 17 00:00:00 2001
From: TheCharlatan <seb.kung@gmail.com>
Date: Wed, 1 Jun 2022 22:39:54 +0200
Subject: [PATCH 21/32] Checkpointd: Adapt to deps bump

---
 src/bin/checkpointd.rs     |  2 +-
 src/checkpointd/opts.rs    | 12 ++------
 src/checkpointd/runtime.rs | 62 ++++++++------------------------------
 3 files changed, 17 insertions(+), 59 deletions(-)

diff --git a/src/bin/checkpointd.rs b/src/bin/checkpointd.rs
index 3841fc5dd..ef9660644 100644
--- a/src/bin/checkpointd.rs
+++ b/src/bin/checkpointd.rs
@@ -29,7 +29,7 @@
 #[macro_use]
 extern crate log;
 
-use clap::Clap;
+use clap::Parser;
 
 use farcaster_node::checkpointd::{self, Opts};
 use farcaster_node::ServiceConfig;
diff --git a/src/checkpointd/opts.rs b/src/checkpointd/opts.rs
index 149ea4419..5d1edfc88 100644
--- a/src/checkpointd/opts.rs
+++ b/src/checkpointd/opts.rs
@@ -13,7 +13,7 @@
 // If not, see <https://opensource.org/licenses/MIT>.
 
 use crate::opts::FARCASTER_KEY_FILE;
-use clap::{AppSettings, Clap, ValueHint};
+use clap::{AppSettings, Parser, ValueHint};
 use std::path::PathBuf;
 use std::{fs, io::Read};
 
@@ -25,14 +25,8 @@ use bitcoin::secp256k1::{
 use strict_encoding::{StrictDecode, StrictEncode};
 
 /// checkpoint daemon; part of Farcaster Node
-#[derive(Clap, Clone, PartialEq, Eq, Debug)]
-#[clap(
-    name = "checkpointd",
-    bin_name = "checkpointd",
-    author,
-    version,
-    setting = AppSettings::ColoredHelp
-)]
+#[derive(Parser, Clone, PartialEq, Eq, Debug)]
+#[clap(name = "checkpointd", bin_name = "checkpointd", author, version)]
 pub struct Opts {
     /// These params can be read also from the configuration file, not just
     /// command-line args or environment variables
diff --git a/src/checkpointd/runtime.rs b/src/checkpointd/runtime.rs
index e588dafc0..49b06654b 100644
--- a/src/checkpointd/runtime.rs
+++ b/src/checkpointd/runtime.rs
@@ -1,3 +1,5 @@
+use crate::farcaster_core::consensus::Encodable;
+use farcaster_core::swap::SwapId;
 use lmdb::{Cursor, Transaction as LMDBTransaction};
 use std::path::PathBuf;
 use std::{
@@ -11,8 +13,8 @@ use std::{
 
 use crate::swapd::get_swap_id;
 use crate::walletd::NodeSecrets;
+use crate::Endpoints;
 use crate::LogStyle;
-use crate::Senders;
 use crate::{
     rpc::{
         request::{
@@ -23,45 +25,8 @@ use crate::{
     syncerd::SweepXmrAddress,
 };
 use crate::{CtlServer, Error, Service, ServiceConfig, ServiceId};
-use bitcoin::{
-    hashes::hex::FromHex,
-    secp256k1::{self, rand::thread_rng, PublicKey, Secp256k1, SecretKey, Signature},
-    util::{
-        bip32::{DerivationPath, ExtendedPrivKey},
-        psbt::serialize::Deserialize,
-    },
-    Address,
-};
 use colored::Colorize;
-use farcaster_core::{
-    bitcoin::{
-        segwitv0::{BuyTx, CancelTx, FundingTx, PunishTx, RefundTx},
-        segwitv0::{LockTx, SegwitV0},
-        Bitcoin, BitcoinSegwitV0,
-    },
-    blockchain::FeePriority,
-    bundle::{
-        AliceParameters, BobParameters, CoreArbitratingTransactions, FullySignedBuy,
-        FullySignedPunish, FullySignedRefund, FundingTransaction, Proof, SignedAdaptorBuy,
-        SignedAdaptorRefund, SignedArbitratingLock,
-    },
-    consensus::{self, CanonicalBytes, Decodable, Encodable},
-    crypto::{ArbitratingKeyId, GenerateKey, SharedKeyId},
-    crypto::{CommitmentEngine, ProveCrossGroupDleq},
-    monero::{Monero, SHARED_VIEW_KEY_ID},
-    negotiation::PublicOffer,
-    protocol_message::{
-        BuyProcedureSignature, CommitAliceParameters, CommitBobParameters, CoreArbitratingSetup,
-        RefundProcedureSignatures,
-    },
-    role::{Alice, Bob, SwapRole, TradeRole},
-    swap::btcxmr::{BtcXmr, KeyManager},
-    swap::SwapId,
-    syncer::{AddressTransaction, Boolean, Event},
-    transaction::{Broadcastable, Fundable, Transaction, TxLabel, Witnessable},
-};
-use internet2::{LocalNode, ToNodeAddr, TypedEnum, LIGHTNING_P2P_DEFAULT_PORT};
-// use lnp::{ChannelId as SwapId, TempChannelId as TempSwapId};
+use internet2::TypedEnum;
 use microservices::esb::{self, Handler};
 use request::{LaunchSwap, NodeId};
 
@@ -85,7 +50,6 @@ impl CtlServer for Runtime {}
 
 impl esb::Handler<ServiceBus> for Runtime {
     type Request = Request;
-    type Address = ServiceId;
     type Error = Error;
 
     fn identity(&self) -> ServiceId {
@@ -94,19 +58,19 @@ impl esb::Handler<ServiceBus> for Runtime {
 
     fn handle(
         &mut self,
-        senders: &mut esb::SenderList<ServiceBus, ServiceId>,
+        endpoints: &mut Endpoints,
         bus: ServiceBus,
         source: ServiceId,
         request: Request,
     ) -> Result<(), Self::Error> {
         match bus {
-            ServiceBus::Msg => self.handle_rpc_msg(senders, source, request),
-            ServiceBus::Ctl => self.handle_rpc_ctl(senders, source, request),
+            ServiceBus::Msg => self.handle_rpc_msg(endpoints, source, request),
+            ServiceBus::Ctl => self.handle_rpc_ctl(endpoints, source, request),
             _ => Err(Error::NotSupported(ServiceBus::Bridge, request.get_type())),
         }
     }
 
-    fn handle_err(&mut self, _: esb::Error) -> Result<(), esb::Error> {
+    fn handle_err(&mut self, _: &mut Endpoints, _: esb::Error<ServiceId>) -> Result<(), Error> {
         // We do nothing and do not propagate error; it's already being reported
         // with `error!` macro by the controller. If we propagate error here
         // this will make whole daemon panic
@@ -117,10 +81,10 @@ impl esb::Handler<ServiceBus> for Runtime {
 impl Runtime {
     fn send_farcasterd(
         &self,
-        senders: &mut Senders,
+        endpoints: &mut Endpoints,
         message: request::Request,
     ) -> Result<(), Error> {
-        senders.send_to(
+        endpoints.send_to(
             ServiceBus::Ctl,
             self.identity(),
             ServiceId::Farcasterd,
@@ -131,7 +95,7 @@ impl Runtime {
 
     fn handle_rpc_msg(
         &mut self,
-        senders: &mut Senders,
+        endpoints: &mut Endpoints,
         source: ServiceId,
         request: Request,
     ) -> Result<(), Error> {
@@ -164,7 +128,7 @@ impl Runtime {
 
     fn handle_rpc_ctl(
         &mut self,
-        senders: &mut Senders,
+        endpoints: &mut Endpoints,
         source: ServiceId,
         request: Request,
     ) -> Result<(), Error> {
@@ -176,7 +140,7 @@ impl Runtime {
                 //         if let Some(req) = option_req {
                 //             let request = req.clone();
                 //             *option_req = None;
-                //             self.send_ctl(senders, source, request)?
+                //             self.send_ctl(endpoints, source, request)?
                 //         }
                 //     }
                 // }

From 8ba3e029a7ce815c798bb5fa0f71f87afd3c73c7 Mon Sep 17 00:00:00 2001
From: TheCharlatan <seb.kung@gmail.com>
Date: Sun, 5 Jun 2022 13:49:46 +0200
Subject: [PATCH 22/32] Implement walletd checkpointing with checkpointd
 service

This commit is broken because the maximum message frame size is
exceeded.
---
 src/bin/walletd.rs         |   2 +-
 src/checkpointd/runtime.rs |  25 ++---
 src/rpc/request.rs         |  17 +++-
 src/walletd/runtime.rs     | 199 +++++++++++++++++--------------------
 4 files changed, 114 insertions(+), 129 deletions(-)

diff --git a/src/bin/walletd.rs b/src/bin/walletd.rs
index edda9e817..c4c694abb 100644
--- a/src/bin/walletd.rs
+++ b/src/bin/walletd.rs
@@ -57,7 +57,7 @@ fn main() {
         service_config,
         wallet_token,
         node_secrets,
-        opts.shared.data_dir,
+        // opts.shared.data_dir,
     )
     .expect("Error running walletd runtime");
 
diff --git a/src/checkpointd/runtime.rs b/src/checkpointd/runtime.rs
index 49b06654b..c79f6956b 100644
--- a/src/checkpointd/runtime.rs
+++ b/src/checkpointd/runtime.rs
@@ -10,6 +10,7 @@ use std::{
     ptr::swap_nonoverlapping,
     str::FromStr,
 };
+use strict_encoding::StrictEncode;
 
 use crate::swapd::get_swap_id;
 use crate::walletd::NodeSecrets;
@@ -95,7 +96,7 @@ impl Runtime {
 
     fn handle_rpc_msg(
         &mut self,
-        endpoints: &mut Endpoints,
+        _endpoints: &mut Endpoints,
         source: ServiceId,
         request: Request,
     ) -> Result<(), Error> {
@@ -128,22 +129,12 @@ impl Runtime {
 
     fn handle_rpc_ctl(
         &mut self,
-        endpoints: &mut Endpoints,
+        _endpoints: &mut Endpoints,
         source: ServiceId,
         request: Request,
     ) -> Result<(), Error> {
         match request {
             Request::Hello => match &source {
-                // ServiceId::Swap(swap_id) => {
-                //     if let Some(option_req) = self.swaps.get_mut(swap_id) {
-                //         trace!("Known swapd, you launched it");
-                //         if let Some(req) = option_req {
-                //             let request = req.clone();
-                //             *option_req = None;
-                //             self.send_ctl(endpoints, source, request)?
-                //         }
-                //     }
-                // }
                 source => {
                     debug!("Received Hello from {}", source);
                 }
@@ -151,16 +142,14 @@ impl Runtime {
 
             // TODO: use RFC 2363 once stabilized: https://github.com/rust-lang/rust/issues/60553
             // then, instead of explicitly matching on checkpoint variant, can use index as with fieldless enums, so have one generic request match for all originating services & checkpoint indices
-            Request::Checkpoint(request::Checkpoint::CheckpointWalletAlicePreBuy(wallet_state)) => {
-                let key = (get_swap_id(&source)?, self.identity.clone()).into();
+            Request::Checkpoint(request::Checkpoint { swap_id, state }) => {
+                trace!("setting checkpoint with state: {}", state);
+                let key = (swap_id, source).into();
                 let mut state_encoded = vec![];
-                let _state_size = wallet_state.consensus_encode(&mut state_encoded);
+                let _state_size = state.strict_encode(&mut state_encoded);
                 self.checkpoints.set_state(&key, &state_encoded);
             }
 
-            // Request::Checkpoint(request::Checkpoint::CheckpointSwapAlicePreBuy(_)) => {
-            //     todo!();
-            // }
             _ => {
                 error!(
                     "Request {:?} is not supported by the CTL interface",
diff --git a/src/rpc/request.rs b/src/rpc/request.rs
index 0d95e9dea..417ae2982 100644
--- a/src/rpc/request.rs
+++ b/src/rpc/request.rs
@@ -14,6 +14,7 @@
 
 #![allow(clippy::clone_on_copy)]
 
+use crate::walletd::runtime::BobState;
 use crate::walletd::{runtime::AliceState, NodeSecrets};
 use crate::{
     farcasterd,
@@ -682,11 +683,19 @@ pub enum FundingInfo {
 }
 
 #[derive(Clone, Debug, Display, StrictDecode, StrictEncode)]
-#[display("checkpoint")]
-pub enum Checkpoint {
-    // TODO: use RFC 2363 once stabilized: https://github.com/rust-lang/rust/issues/60553
+#[display(Debug)]
+pub struct Checkpoint {
+    pub swap_id: SwapId,
+    pub state: CheckpointState,
+}
+
+#[derive(Clone, Debug, Display, StrictDecode, StrictEncode)]
+#[display(Debug)]
+pub enum CheckpointState {
+    CheckpointWalletAlicePreLock(AliceState),
+    CheckpointWalletBobPreLock(BobState),
     CheckpointWalletAlicePreBuy(AliceState),
-    // CheckpointSwapAlicePreBuy(SwapState),
+    CheckpointWalletBobPreBuy(BobState),
 }
 
 impl FromStr for BitcoinFundingInfo {
diff --git a/src/walletd/runtime.rs b/src/walletd/runtime.rs
index b17b32915..bd39df368 100644
--- a/src/walletd/runtime.rs
+++ b/src/walletd/runtime.rs
@@ -1,4 +1,5 @@
 use crate::service::Endpoints;
+use crate::walletd::runtime::request::Checkpoint;
 use lmdb::{Cursor, Transaction as LMDBTransaction};
 use std::path::PathBuf;
 use std::{
@@ -62,7 +63,6 @@ use farcaster_core::{
     transaction::{Broadcastable, Fundable, Transaction, TxLabel, Witnessable},
 };
 use internet2::{LocalNode, ToNodeAddr, TypedEnum, LIGHTNING_P2P_DEFAULT_PORT};
-// use lnp::{ChannelId as SwapId, TempChannelId as TempSwapId};
 use microservices::esb::{self, Handler};
 use request::{LaunchSwap, NodeId};
 
@@ -70,7 +70,6 @@ pub fn run(
     config: ServiceConfig,
     wallet_token: Token,
     node_secrets: NodeSecrets,
-    data_dir: PathBuf,
 ) -> Result<(), Error> {
     let runtime = Runtime {
         identity: ServiceId::Wallet,
@@ -80,7 +79,6 @@ pub fn run(
         swaps: none!(),
         btc_addrs: none!(),
         xmr_addrs: none!(),
-        checkpoints: CheckpointGetSet::new(data_dir),
     };
 
     Service::run(config, runtime, false)
@@ -94,7 +92,6 @@ pub struct Runtime {
     swaps: HashMap<SwapId, Option<Request>>,
     btc_addrs: HashMap<SwapId, bitcoin::Address>,
     xmr_addrs: HashMap<SwapId, monero::Address>,
-    checkpoints: CheckpointGetSet,
 }
 
 impl Runtime {
@@ -106,6 +103,11 @@ impl Runtime {
     }
 }
 
+use strict_encoding::{
+    strategies::HashFixedBytes, strict_encode_list, Strategy, StrictDecode, StrictEncode,
+};
+
+#[derive(Clone, Debug, StrictEncode, StrictDecode)]
 pub enum Wallet {
     Alice(AliceState),
     Bob(BobState),
@@ -193,6 +195,7 @@ impl AliceState {
     }
 }
 
+#[derive(Clone, Debug)]
 pub struct BobState {
     bob: Bob<BtcXmr>,
     local_params: BobParameters<BtcXmr>,
@@ -268,6 +271,8 @@ impl BobState {
     }
 }
 
+impl_strict_encoding!(BobState);
+
 impl CtlServer for Runtime {}
 
 impl esb::Handler<ServiceBus> for Runtime {
@@ -642,10 +647,11 @@ impl Runtime {
                             key_manager,
                             pub_offer,
                             funding_tx: Some(funding_tx),
+                            remote_commit_params,
                             remote_params,                    // None
                             remote_proof: Some(remote_proof), // Some
                             core_arb_setup,                   // None
-                            ..
+                            adaptor_buy,
                         })) = self.wallets.get_mut(&swap_id)
                         {
                             // set wallet params
@@ -685,6 +691,33 @@ impl Runtime {
                                 )?;
                             }
 
+                            // checkpoint here after proof verification and potentially sending RevealProof
+                            let swap_id = get_swap_id(&source)?;
+                            trace!("checkpointing bob pre lock.");
+                            endpoints.send_to(
+                                ServiceBus::Ctl,
+                                ServiceId::Wallet,
+                                ServiceId::Checkpoint,
+                                Request::Checkpoint(Checkpoint {
+                                    swap_id,
+                                    state: request::CheckpointState::CheckpointWalletBobPreLock(
+                                        BobState {
+                                            bob: bob.clone(),
+                                            local_params: local_params.clone(),
+                                            local_proof: local_proof.clone(),
+                                            key_manager: key_manager.clone(),
+                                            pub_offer: pub_offer.clone(),
+                                            funding_tx: Some(funding_tx.clone()),
+                                            remote_commit_params: remote_commit_params.clone(),
+                                            remote_params: remote_params.clone(),
+                                            remote_proof: Some(remote_proof.clone()),
+                                            core_arb_setup: core_arb_setup.clone(),
+                                            adaptor_buy: adaptor_buy.clone(),
+                                        },
+                                    ),
+                                }),
+                            )?;
+
                             // set wallet core_arb_txs
                             if core_arb_setup.is_some() {
                                 error!(
@@ -713,6 +746,7 @@ impl Runtime {
                             )));
                             let core_arb_setup_msg =
                                 Msg::CoreArbitratingSetup(core_arb_setup.clone().unwrap());
+
                             self.send_ctl(
                                 endpoints,
                                 source,
@@ -790,17 +824,20 @@ impl Runtime {
             })) => {
                 let swap_id = get_swap_id(&source)?;
                 let my_id = self.identity();
-                // let j = self.wallets.get(&swap_id).unwrap();
-                // let k: Result<BobState, _> = (*j).try_into();
-                let mut writer = vec![];
                 // TODO: checkpointing before .get_mut call for now, but should do this later
+                trace!("checkpointing bob pre buy.");
                 if let Some(Wallet::Bob(state)) = self.wallets.get(&swap_id) {
-                    let state_size = state.consensus_encode(&mut writer);
-                    // info!("writer content: {:?}", writer);
-                    info!("state size: {:?}", state_size);
-                    let path = std::env::current_dir().unwrap();
-                    let mut state = CheckpointGetSet::new(path.to_path_buf());
-                    state.set_state(&swap_id, &writer);
+                    endpoints.send_to(
+                        ServiceBus::Ctl,
+                        ServiceId::Wallet,
+                        ServiceId::Checkpoint,
+                        Request::Checkpoint(Checkpoint {
+                            swap_id,
+                            state: request::CheckpointState::CheckpointWalletBobPreBuy(
+                                state.clone(),
+                            ),
+                        }),
+                    )?;
                 } else {
                     error!(
                         "{:#} | Unknown wallet and swap_id {:#}",
@@ -841,32 +878,6 @@ impl Runtime {
                         Broadcastable::<BitcoinSegwitV0>::finalize_and_extract(&mut lock_tx)?;
 
                     // TODO: checkpoint here
-                    // {
-                    //     struct RecoveryState {
-                    //         swap_index: u32,
-                    //         params: (AliceParameters<BtcXmr>, BobParameters<BtcXmr>),
-                    //         txs: (
-                    //             PartiallySignedTransaction,
-                    //             PartiallySignedTransaction,
-                    //             bitcoin::Transaction,
-                    //         ),
-                    //     }
-
-                    //     let state = RecoveryState {
-                    //         swap_index: key_manager.get_swap_index(),
-                    //         params: (remote_params.clone(), local_params.clone()),
-                    //         txs: (
-                    //             core_arb_txs.lock.clone(),
-                    //             core_arb_txs.cancel.clone(),
-                    //             finalized_lock_tx.clone(),
-                    //         ),
-                    //     };
-
-                    //     {
-                    //         let _recovered_key_manager =
-                    //             KeyManager::new(self.node_secrets.wallet_seed, state.swap_index);
-                    //     }
-                    // }
 
                     endpoints.send_to(
                         ServiceBus::Ctl,
@@ -950,6 +961,27 @@ impl Runtime {
             Request::Protocol(Msg::CoreArbitratingSetup(core_arbitrating_setup)) => {
                 let swap_id = get_swap_id(&source)?;
                 let my_id = self.identity();
+                trace!("checkpointing alice pre lock.");
+                if let Some(Wallet::Alice(state)) = self.wallets.get(&swap_id) {
+                    endpoints.send_to(
+                        ServiceBus::Ctl,
+                        ServiceId::Wallet,
+                        ServiceId::Checkpoint,
+                        Request::Checkpoint(Checkpoint {
+                            swap_id,
+                            state: request::CheckpointState::CheckpointWalletAlicePreLock(
+                                state.clone(),
+                            ),
+                        }),
+                    )?;
+                } else {
+                    error!(
+                        "{:#} | Unknown wallet and swap_id {:#}",
+                        swap_id.bright_blue_italic(),
+                        swap_id.bright_white_bold(),
+                    );
+                };
+
                 if let Some(Wallet::Alice(AliceState {
                     alice,
                     local_params,
@@ -1042,25 +1074,6 @@ impl Runtime {
                         )?;
                     }
 
-                    // struct RecoveryState {
-                    //     swap_index: u32,
-                    //     params: (AliceParameters<BtcXmr>, BobParameters<BtcXmr>),
-                    //     txs:
-                    // }
-                    let state = (
-                        // swap_index
-                        // key_manager.get_swap_index(),
-                        // params
-                        (bob_parameters.clone(), local_params.clone()),
-                        // txs
-                        (
-                            core_arb_txs.lock.clone(),
-                            core_arb_txs.cancel.clone(),
-                            // finalized_lock_tx.clone(),
-                            // tx
-                        ),
-                    );
-
                     let refund_proc_signatures =
                         Msg::RefundProcedureSignatures(refund_proc_signatures);
 
@@ -1088,6 +1101,27 @@ impl Runtime {
                     buy_adaptor_sig: buy_encrypted_sig,
                 };
                 let id = self.identity();
+                trace!("checkpointing alice pre buy.");
+                if let Some(Wallet::Alice(state)) = self.wallets.get(&swap_id) {
+                    endpoints.send_to(
+                        ServiceBus::Ctl,
+                        ServiceId::Wallet,
+                        ServiceId::Checkpoint,
+                        Request::Checkpoint(Checkpoint {
+                            swap_id,
+                            state: request::CheckpointState::CheckpointWalletAlicePreBuy(
+                                state.clone(),
+                            ),
+                        }),
+                    )?;
+                } else {
+                    error!(
+                        "{:#} | Unknown wallet and swap_id {:#}",
+                        swap_id.bright_blue_italic(),
+                        swap_id.bright_white_bold(),
+                    );
+                };
+
                 if let Some(Wallet::Alice(AliceState {
                     alice,
                     local_params: alice_params,
@@ -1542,50 +1576,3 @@ pub fn funding_update(funding: &mut FundingTx, tx: bitcoin::Transaction) -> Resu
     let funding_bundle = FundingTransaction::<Bitcoin<SegwitV0>> { funding: tx };
     Ok(funding.update(funding_bundle.funding)?)
 }
-
-struct CheckpointGetSet(lmdb::Environment);
-
-impl CheckpointGetSet {
-    fn new(path: PathBuf) -> CheckpointGetSet {
-        let env = lmdb::Environment::new().open(&path).unwrap();
-        env.create_db(None, lmdb::DatabaseFlags::empty()).unwrap();
-        CheckpointGetSet(env)
-    }
-
-    fn set_state(&mut self, key: &SwapId, val: &[u8]) {
-        let db = self.0.open_db(None).unwrap();
-        let mut tx = self.0.begin_rw_txn().unwrap();
-        if !tx.get(db, &key).is_err() {
-            tx.del(db, &key, None).unwrap();
-        }
-        tx.put(db, &key, &val, lmdb::WriteFlags::empty()).unwrap();
-        tx.commit().unwrap();
-    }
-
-    fn get_state(&mut self, key: &SwapId) -> Vec<u8> {
-        let db = self.0.open_db(None).unwrap();
-        let tx = self.0.begin_ro_txn().unwrap();
-        let val: Vec<u8> = tx.get(db, &key).unwrap().into();
-        tx.abort();
-        val
-    }
-}
-
-#[test]
-fn test_lmdb_state() {
-    let val1 = vec![0, 1];
-    let val2 = vec![2, 3, 4, 5];
-    let key1 = SwapId::random();
-    let key2 = SwapId::random();
-    let path = std::env::current_dir().unwrap();
-    let mut state = CheckpointGetSet::new(path.to_path_buf());
-    state.set_state(&key1, &val1);
-    let res = state.get_state(&key1);
-    assert_eq!(val1, res);
-    state.set_state(&key1, &val2);
-    let res = state.get_state(&key1);
-    assert_eq!(val2, res);
-    state.set_state(&key2, &val2);
-    let res = state.get_state(&key2);
-    assert_eq!(val2, res);
-}

From 93fd4b1fc5bab2c2ca2966d1c3f7b5c2a7fcdb5c Mon Sep 17 00:00:00 2001
From: TheCharlatan <seb.kung@gmail.com>
Date: Sun, 5 Jun 2022 22:40:56 +0200
Subject: [PATCH 23/32] Request: Add a request type for a multipart checkpoint
 message

---
 src/rpc/request.rs     |  43 +++++++++++++++
 src/walletd/runtime.rs | 122 ++++++++++++++++++++++++-----------------
 2 files changed, 114 insertions(+), 51 deletions(-)

diff --git a/src/rpc/request.rs b/src/rpc/request.rs
index 417ae2982..5374b9b43 100644
--- a/src/rpc/request.rs
+++ b/src/rpc/request.rs
@@ -664,6 +664,11 @@ pub enum Request {
     #[display("checkpoint({0})", alt = "{0:#}")]
     #[from]
     Checkpoint(Checkpoint),
+
+    #[api(type = 1305)]
+    #[display("checkpoint_multipart({0})")]
+    #[from]
+    CheckpointMultipartChunk(CheckpointMultipartChunk),
 }
 
 #[derive(Clone, Debug, Display, StrictEncode, StrictDecode)]
@@ -682,6 +687,44 @@ pub enum FundingInfo {
     Monero(MoneroFundingInfo),
 }
 
+#[derive(Clone, Debug, Display, StrictDecode, StrictEncode)]
+#[display("{swap_id}, {msg_number}, {checkpoint_type}")]
+pub struct CheckpointMultipartChunk {
+    pub swap_id: SwapId,
+    pub msg_number: usize,
+    pub msgs_total: usize,
+    pub serialized_state_chunk: Vec<u8>,
+    pub checkpoint_type: CheckpointType,
+}
+
+#[derive(Clone, Debug, Display, StrictDecode, StrictEncode)]
+#[display(Debug)]
+pub enum CheckpointType {
+    CheckpointWalletAlicePreLock,
+    CheckpointWalletBobPreLock,
+    CheckpointWalletAlicePreBuy,
+    CheckpointWalletBobPreBuy,
+}
+
+impl From<CheckpointState> for CheckpointType {
+    fn from(state: CheckpointState) -> CheckpointType {
+        match state {
+            CheckpointState::CheckpointWalletAlicePreBuy(_) => {
+                CheckpointType::CheckpointWalletAlicePreBuy
+            }
+            CheckpointState::CheckpointWalletAlicePreLock(_) => {
+                CheckpointType::CheckpointWalletAlicePreLock
+            }
+            CheckpointState::CheckpointWalletBobPreBuy(_) => {
+                CheckpointType::CheckpointWalletBobPreBuy
+            }
+            CheckpointState::CheckpointWalletBobPreLock(_) => {
+                CheckpointType::CheckpointWalletBobPreLock
+            }
+        }
+    }
+}
+
 #[derive(Clone, Debug, Display, StrictDecode, StrictEncode)]
 #[display(Debug)]
 pub struct Checkpoint {
diff --git a/src/walletd/runtime.rs b/src/walletd/runtime.rs
index bd39df368..695530ad7 100644
--- a/src/walletd/runtime.rs
+++ b/src/walletd/runtime.rs
@@ -1,5 +1,7 @@
 use crate::service::Endpoints;
 use crate::walletd::runtime::request::Checkpoint;
+use crate::walletd::runtime::request::CheckpointMultipartChunk;
+use crate::walletd::runtime::request::CheckpointType;
 use lmdb::{Cursor, Transaction as LMDBTransaction};
 use std::path::PathBuf;
 use std::{
@@ -694,27 +696,21 @@ impl Runtime {
                             // checkpoint here after proof verification and potentially sending RevealProof
                             let swap_id = get_swap_id(&source)?;
                             trace!("checkpointing bob pre lock.");
-                            endpoints.send_to(
-                                ServiceBus::Ctl,
-                                ServiceId::Wallet,
-                                ServiceId::Checkpoint,
-                                Request::Checkpoint(Checkpoint {
-                                    swap_id,
-                                    state: request::CheckpointState::CheckpointWalletBobPreLock(
-                                        BobState {
-                                            bob: bob.clone(),
-                                            local_params: local_params.clone(),
-                                            local_proof: local_proof.clone(),
-                                            key_manager: key_manager.clone(),
-                                            pub_offer: pub_offer.clone(),
-                                            funding_tx: Some(funding_tx.clone()),
-                                            remote_commit_params: remote_commit_params.clone(),
-                                            remote_params: remote_params.clone(),
-                                            remote_proof: Some(remote_proof.clone()),
-                                            core_arb_setup: core_arb_setup.clone(),
-                                            adaptor_buy: adaptor_buy.clone(),
-                                        },
-                                    ),
+                            checkpoint_state(
+                                endpoints,
+                                swap_id,
+                                request::CheckpointState::CheckpointWalletBobPreLock(BobState {
+                                    bob: bob.clone(),
+                                    local_params: local_params.clone(),
+                                    local_proof: local_proof.clone(),
+                                    key_manager: key_manager.clone(),
+                                    pub_offer: pub_offer.clone(),
+                                    funding_tx: Some(funding_tx.clone()),
+                                    remote_commit_params: remote_commit_params.clone(),
+                                    remote_params: remote_params.clone(),
+                                    remote_proof: Some(remote_proof.clone()),
+                                    core_arb_setup: core_arb_setup.clone(),
+                                    adaptor_buy: adaptor_buy.clone(),
                                 }),
                             )?;
 
@@ -827,16 +823,10 @@ impl Runtime {
                 // TODO: checkpointing before .get_mut call for now, but should do this later
                 trace!("checkpointing bob pre buy.");
                 if let Some(Wallet::Bob(state)) = self.wallets.get(&swap_id) {
-                    endpoints.send_to(
-                        ServiceBus::Ctl,
-                        ServiceId::Wallet,
-                        ServiceId::Checkpoint,
-                        Request::Checkpoint(Checkpoint {
-                            swap_id,
-                            state: request::CheckpointState::CheckpointWalletBobPreBuy(
-                                state.clone(),
-                            ),
-                        }),
+                    checkpoint_state(
+                        endpoints,
+                        swap_id,
+                        request::CheckpointState::CheckpointWalletBobPreBuy(state.clone()),
                     )?;
                 } else {
                     error!(
@@ -963,16 +953,10 @@ impl Runtime {
                 let my_id = self.identity();
                 trace!("checkpointing alice pre lock.");
                 if let Some(Wallet::Alice(state)) = self.wallets.get(&swap_id) {
-                    endpoints.send_to(
-                        ServiceBus::Ctl,
-                        ServiceId::Wallet,
-                        ServiceId::Checkpoint,
-                        Request::Checkpoint(Checkpoint {
-                            swap_id,
-                            state: request::CheckpointState::CheckpointWalletAlicePreLock(
-                                state.clone(),
-                            ),
-                        }),
+                    checkpoint_state(
+                        endpoints,
+                        swap_id,
+                        request::CheckpointState::CheckpointWalletAlicePreLock(state.clone()),
                     )?;
                 } else {
                     error!(
@@ -1103,16 +1087,10 @@ impl Runtime {
                 let id = self.identity();
                 trace!("checkpointing alice pre buy.");
                 if let Some(Wallet::Alice(state)) = self.wallets.get(&swap_id) {
-                    endpoints.send_to(
-                        ServiceBus::Ctl,
-                        ServiceId::Wallet,
-                        ServiceId::Checkpoint,
-                        Request::Checkpoint(Checkpoint {
-                            swap_id,
-                            state: request::CheckpointState::CheckpointWalletAlicePreBuy(
-                                state.clone(),
-                            ),
-                        }),
+                    checkpoint_state(
+                        endpoints,
+                        swap_id,
+                        request::CheckpointState::CheckpointWalletAlicePreBuy(state.clone()),
                     )?;
                 } else {
                     error!(
@@ -1564,6 +1542,48 @@ impl Runtime {
     }
 }
 
+pub fn checkpoint_state(
+    endpoints: &mut Endpoints,
+    swap_id: SwapId,
+    state: request::CheckpointState,
+) -> Result<(), Error> {
+    let mut serialized_state = vec![];
+    let size = state.strict_encode(&mut serialized_state).unwrap();
+    // if the size exceeds a boundary, send a multi-part message
+    let max_chunk_size = internet2::transport::MAX_FRAME_SIZE - 1024;
+    if size > max_chunk_size {
+        let checkpoint_type: CheckpointType = state.into();
+        let chunks: Vec<(usize, Vec<u8>)> = serialized_state
+            .chunks_mut(max_chunk_size)
+            .enumerate()
+            .map(|(n, chunk)| (n, chunk.to_vec()))
+            .collect();
+        let chunks_total = chunks.len();
+        for (n, chunk) in chunks {
+            endpoints.send_to(
+                ServiceBus::Ctl,
+                ServiceId::Wallet,
+                ServiceId::Checkpoint,
+                Request::CheckpointMultipartChunk(CheckpointMultipartChunk {
+                    swap_id,
+                    msg_number: n,
+                    msgs_total: chunks_total,
+                    serialized_state_chunk: chunk,
+                    checkpoint_type: checkpoint_type.clone(),
+                }),
+            )?;
+        }
+    } else {
+        endpoints.send_to(
+            ServiceBus::Ctl,
+            ServiceId::Wallet,
+            ServiceId::Checkpoint,
+            Request::Checkpoint(Checkpoint { swap_id, state }),
+        )?;
+    }
+    Ok(())
+}
+
 pub fn create_funding(
     key_manager: &mut KeyManager,
     net: farcaster_core::blockchain::Network,

From 4b84cb570a2a64695499a8a59c6d66790d341c4c Mon Sep 17 00:00:00 2001
From: TheCharlatan <seb.kung@gmail.com>
Date: Mon, 6 Jun 2022 14:37:42 +0200
Subject: [PATCH 24/32] Request: Handle multipart message chunks in checkpointd

---
 src/checkpointd/runtime.rs | 82 +++++++++++++++++++++++++++++++++-----
 src/farcasterd/runtime.rs  |  2 +
 src/rpc/request.rs         | 11 ++---
 src/walletd/runtime.rs     | 22 ++++++++--
 4 files changed, 99 insertions(+), 18 deletions(-)

diff --git a/src/checkpointd/runtime.rs b/src/checkpointd/runtime.rs
index c79f6956b..82b2b4c3e 100644
--- a/src/checkpointd/runtime.rs
+++ b/src/checkpointd/runtime.rs
@@ -1,3 +1,4 @@
+use crate::checkpointd::runtime::request::CheckpointType;
 use crate::farcaster_core::consensus::Encodable;
 use farcaster_core::swap::SwapId;
 use lmdb::{Cursor, Transaction as LMDBTransaction};
@@ -10,12 +11,14 @@ use std::{
     ptr::swap_nonoverlapping,
     str::FromStr,
 };
+use strict_encoding::StrictDecode;
 use strict_encoding::StrictEncode;
 
 use crate::swapd::get_swap_id;
-use crate::walletd::NodeSecrets;
 use crate::Endpoints;
 use crate::LogStyle;
+use bitcoin::hashes::{ripemd160, Hash};
+
 use crate::{
     rpc::{
         request::{
@@ -33,16 +36,24 @@ use request::{LaunchSwap, NodeId};
 
 pub fn run(config: ServiceConfig, data_dir: PathBuf) -> Result<(), Error> {
     let runtime = Runtime {
-        identity: ServiceId::Wallet,
+        identity: ServiceId::Checkpoint,
         checkpoints: CheckpointGetSet::new(data_dir),
+        pending_checkpoint_chunks: map![],
     };
 
     Service::run(config, runtime, false)
 }
 
+#[derive(Clone, Debug, Eq, PartialEq, Hash)]
+struct CheckpointChunk {
+    pub msg_index: usize,
+    pub serialized_state_chunk: Vec<u8>,
+}
+
 pub struct Runtime {
     identity: ServiceId,
     checkpoints: CheckpointGetSet,
+    pending_checkpoint_chunks: HashMap<[u8; 20], HashSet<CheckpointChunk>>,
 }
 
 impl Runtime {}
@@ -129,7 +140,7 @@ impl Runtime {
 
     fn handle_rpc_ctl(
         &mut self,
-        _endpoints: &mut Endpoints,
+        endpoints: &mut Endpoints,
         source: ServiceId,
         request: Request,
     ) -> Result<(), Error> {
@@ -140,8 +151,64 @@ impl Runtime {
                 }
             },
 
-            // TODO: use RFC 2363 once stabilized: https://github.com/rust-lang/rust/issues/60553
-            // then, instead of explicitly matching on checkpoint variant, can use index as with fieldless enums, so have one generic request match for all originating services & checkpoint indices
+            Request::CheckpointMultipartChunk(request::CheckpointMultipartChunk {
+                checksum,
+                msg_index,
+                msgs_total,
+                serialized_state_chunk,
+                swap_id,
+                // checkpoint_type,
+            }) => {
+                debug!("received checkpoint multipart message");
+                if self.pending_checkpoint_chunks.contains_key(&checksum) {
+                    let chunks = self
+                        .pending_checkpoint_chunks
+                        .get_mut(&checksum)
+                        .expect("checked with contains_key");
+                    chunks.insert(CheckpointChunk {
+                        msg_index,
+                        serialized_state_chunk,
+                    });
+                } else {
+                    let mut chunk = HashSet::new();
+                    chunk.insert(CheckpointChunk {
+                        msg_index,
+                        serialized_state_chunk,
+                    });
+                    self.pending_checkpoint_chunks.insert(checksum, chunk);
+                }
+                let mut chunks = self
+                    .pending_checkpoint_chunks
+                    .get(&checksum)
+                    .unwrap_or(&HashSet::new())
+                    .clone();
+                if chunks.len() >= msgs_total {
+                    let mut chunk_tup_vec = chunks
+                        .drain()
+                        .map(|chunk| (chunk.msg_index, chunk.serialized_state_chunk))
+                        .collect::<Vec<(usize, Vec<u8>)>>(); // map to vec
+                    chunk_tup_vec.sort_by(|a, b| a.0.cmp(&b.0)); // sort in ascending order
+                    let chunk_vec = chunk_tup_vec
+                        .drain(..)
+                        .map(|(_, chunk)| chunk)
+                        .collect::<Vec<Vec<u8>>>(); // drop the extra integer index
+                    let serialized_checkpoint =
+                        chunk_vec.into_iter().flatten().collect::<Vec<u8>>(); // accumulate the chunked message into a single serialized message
+                    if ripemd160::Hash::hash(&serialized_checkpoint).into_inner() != checksum {
+                        error!("\n\nlmao, of course it does not work yet\n\n");
+                    }
+                    // serialize request and recurse to handle the actual request
+                    let request = Request::Checkpoint(request::Checkpoint {
+                        swap_id,
+                        state: request::CheckpointState::strict_decode(std::io::Cursor::new(
+                            serialized_checkpoint,
+                        ))
+                        .expect("this should work given that the checksum has matched"),
+                    });
+                    self.handle_rpc_ctl(endpoints, source, request)?;
+                }
+            }
+
             Request::Checkpoint(request::Checkpoint { swap_id, state }) => {
                 trace!("setting checkpoint with state: {}", state);
                 let key = (swap_id, source).into();
@@ -151,10 +218,7 @@ impl Runtime {
             }
 
             _ => {
-                error!(
-                    "Request {:?} is not supported by the CTL interface",
-                    request
-                );
+                error!("Request {} is not supported by the CTL interface", request);
             }
         }
         Ok(())
diff --git a/src/farcasterd/runtime.rs b/src/farcasterd/runtime.rs
index fe9a5748d..87daf6a06 100644
--- a/src/farcasterd/runtime.rs
+++ b/src/farcasterd/runtime.rs
@@ -115,6 +115,8 @@ pub fn run(
             ],
         )?;
     }
+    let empty: Vec<String> = vec![];
+    let _checkpointd = launch("checkpointd", empty)?;
 
     if config.is_auto_funding_enable() {
         info!("farcasterd will attempt to fund automatically");
diff --git a/src/rpc/request.rs b/src/rpc/request.rs
index 5374b9b43..bd32701df 100644
--- a/src/rpc/request.rs
+++ b/src/rpc/request.rs
@@ -688,16 +688,17 @@ pub enum FundingInfo {
 }
 
 #[derive(Clone, Debug, Display, StrictDecode, StrictEncode)]
-#[display("{swap_id}, {msg_number}, {checkpoint_type}")]
+#[display("{msg_index}, {msgs_total}, {swap_id}")]
 pub struct CheckpointMultipartChunk {
-    pub swap_id: SwapId,
-    pub msg_number: usize,
+    pub checksum: [u8; 20],
+    pub msg_index: usize,
     pub msgs_total: usize,
     pub serialized_state_chunk: Vec<u8>,
-    pub checkpoint_type: CheckpointType,
+    pub swap_id: SwapId,
+    // pub checkpoint_type: CheckpointType,
 }
 
-#[derive(Clone, Debug, Display, StrictDecode, StrictEncode)]
+#[derive(Clone, Debug, Display, PartialEq, Eq, Hash, StrictDecode, StrictEncode)]
 #[display(Debug)]
 pub enum CheckpointType {
     CheckpointWalletAlicePreLock,
diff --git a/src/walletd/runtime.rs b/src/walletd/runtime.rs
index 695530ad7..007847791 100644
--- a/src/walletd/runtime.rs
+++ b/src/walletd/runtime.rs
@@ -28,6 +28,7 @@ use crate::{
 use crate::{CtlServer, Error, Service, ServiceConfig, ServiceId};
 use bitcoin::{
     hashes::hex::FromHex,
+    hashes::{ripemd160, Hash},
     secp256k1::{self, ecdsa::Signature, rand::thread_rng, PublicKey, Secp256k1, SecretKey},
     util::{
         bip32::{DerivationPath, ExtendedPrivKey},
@@ -1549,10 +1550,18 @@ pub fn checkpoint_state(
 ) -> Result<(), Error> {
     let mut serialized_state = vec![];
     let size = state.strict_encode(&mut serialized_state).unwrap();
+
+    let state =
+        request::CheckpointState::strict_decode(std::io::Cursor::new(serialized_state.clone()))
+            .expect("this has to work given that the checkpoint was just serialized");
+
     // if the size exceeds a boundary, send a multi-part message
     let max_chunk_size = internet2::transport::MAX_FRAME_SIZE - 1024;
+    debug!("checkpointing state");
     if size > max_chunk_size {
-        let checkpoint_type: CheckpointType = state.into();
+        let checksum: [u8; 20] = ripemd160::Hash::hash(&serialized_state).into_inner();
+        debug!("need to chunk the checkpoint message");
+        // let checkpoint_type: CheckpointType = state.into();
         let chunks: Vec<(usize, Vec<u8>)> = serialized_state
             .chunks_mut(max_chunk_size)
             .enumerate()
@@ -1560,18 +1569,23 @@ pub fn checkpoint_state(
             .collect();
         let chunks_total = chunks.len();
         for (n, chunk) in chunks {
+            debug!(
+                "sending {} chunked checkpoint message of a total {}",
+                n, chunks_total
+            );
             endpoints.send_to(
                 ServiceBus::Ctl,
                 ServiceId::Wallet,
                 ServiceId::Checkpoint,
                 Request::CheckpointMultipartChunk(CheckpointMultipartChunk {
-                    swap_id,
-                    msg_number: n,
+                    checksum,
+                    msg_index: n,
                     msgs_total: chunks_total,
                     serialized_state_chunk: chunk,
-                    checkpoint_type: checkpoint_type.clone(),
+                    swap_id,
                 }),
             )?;
+            std::thread::sleep(std::time::Duration::from_millis(1));
         }
     } else {
         endpoints.send_to(

From 50a4294c339d4592aaba933cbdf23fbb7e795a9d Mon Sep 17 00:00:00 2001
From: TheCharlatan <seb.kung@gmail.com>
Date: Mon, 6 Jun 2022 16:17:12 +0200
Subject: [PATCH 25/32] Bump farcaster-core deps for KeyManager patch

---
 Cargo.lock                 | 2 +-
 src/checkpointd/runtime.rs | 6 ++++--
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 64fae93eb..0f93f098d 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1042,7 +1042,7 @@ checksum = "d9435d864e017c3c6afeac1654189b06cdb491cf2ff73dbf0d73b0f292f42ff8"
 [[package]]
 name = "farcaster_core"
 version = "0.4.4"
-source = "git+https://github.com/farcaster-project/farcaster-core?branch=main#abd71f7c16ce9058b5cfb7dfd28e9cdbd029f757"
+source = "git+https://github.com/farcaster-project/farcaster-core?branch=main#0f7f8c58c5d8fa88be108c9f6457ac975cb0ab86"
 dependencies = [
  "amplify",
  "base58-monero",
diff --git a/src/checkpointd/runtime.rs b/src/checkpointd/runtime.rs
index 82b2b4c3e..71ef6c295 100644
--- a/src/checkpointd/runtime.rs
+++ b/src/checkpointd/runtime.rs
@@ -195,7 +195,9 @@ impl Runtime {
                     let serialized_checkpoint =
                         chunk_vec.into_iter().flatten().collect::<Vec<u8>>(); // accumulate the chunked message into a single serialized message
                     if ripemd160::Hash::hash(&serialized_checkpoint).into_inner() != checksum {
-                        error!("\n\nlmao, of course it does not work yet\n\n");
+                        // this should never happen
+                        error!("Unable to checkpoint the message, checksum did not match");
+                        Ok(())
                     }
                     // serialize request and recurse to handle the actual request
                     let request = Request::Checkpoint(request::Checkpoint {
@@ -210,7 +212,7 @@ impl Runtime {
             }
 
             Request::Checkpoint(request::Checkpoint { swap_id, state }) => {
-                trace!("setting checkpoint with state: {}", state);
+                debug!("setting checkpoint with state: {}", state);
                 let key = (swap_id, source).into();
                 let mut state_encoded = vec![];
                 let _state_size = state.strict_encode(&mut state_encoded);

From c5d33afbb6f1af64987960a17ed149ae96bd743b Mon Sep 17 00:00:00 2001
From: TheCharlatan <seb.kung@gmail.com>
Date: Mon, 6 Jun 2022 18:42:47 +0200
Subject: [PATCH 26/32] Checkpointd: Prepare for review

- Improve error handling
- More descriptive comments
- Fix imports
---
 src/bin/checkpointd.rs     |  3 ++-
 src/checkpointd/runtime.rs | 45 +++++++--------------------------
 src/rpc/request.rs         | 29 ---------------------
 src/walletd/runtime.rs     | 52 ++++++++++++++++++--------------------
 4 files changed, 35 insertions(+), 94 deletions(-)

diff --git a/src/bin/checkpointd.rs b/src/bin/checkpointd.rs
index ef9660644..469a36e29 100644
--- a/src/bin/checkpointd.rs
+++ b/src/bin/checkpointd.rs
@@ -46,7 +46,8 @@ fn main() {
     debug!("CTL RPC socket {}", &service_config.ctl_endpoint);
 
     debug!("Starting runtime ...");
-    checkpointd::run(service_config, opts.shared.data_dir).expect("Error running walletd runtime");
+    checkpointd::run(service_config, opts.shared.data_dir)
+        .expect("Error running checkpointd runtime");
 
     unreachable!()
 }
diff --git a/src/checkpointd/runtime.rs b/src/checkpointd/runtime.rs
index 71ef6c295..16381ddf1 100644
--- a/src/checkpointd/runtime.rs
+++ b/src/checkpointd/runtime.rs
@@ -1,4 +1,3 @@
-use crate::checkpointd::runtime::request::CheckpointType;
 use crate::farcaster_core::consensus::Encodable;
 use farcaster_core::swap::SwapId;
 use lmdb::{Cursor, Transaction as LMDBTransaction};
@@ -91,38 +90,12 @@ impl esb::Handler<ServiceBus> for Runtime {
 }
 
 impl Runtime {
-    fn send_farcasterd(
-        &self,
-        endpoints: &mut Endpoints,
-        message: request::Request,
-    ) -> Result<(), Error> {
-        endpoints.send_to(
-            ServiceBus::Ctl,
-            self.identity(),
-            ServiceId::Farcasterd,
-            message,
-        )?;
-        Ok(())
-    }
-
     fn handle_rpc_msg(
         &mut self,
         _endpoints: &mut Endpoints,
-        source: ServiceId,
+        _source: ServiceId,
         request: Request,
     ) -> Result<(), Error> {
-        let req_swap_id = get_swap_id(&source).ok();
-        match &request {
-            Request::Protocol(Msg::TakerCommit(_)) if source == ServiceId::Farcasterd => {}
-            Request::Protocol(msg)
-                if req_swap_id.is_some() && Some(msg.swap_id()) != req_swap_id =>
-            {
-                error!("Msg and source don't have same swap_id, ignoring...");
-                return Ok(());
-            }
-            // TODO enter farcasterd messages allowed
-            _ => {}
-        }
         match request {
             Request::Hello => {
                 // Ignoring; this is used to set remote identity at ZMQ level
@@ -157,7 +130,6 @@ impl Runtime {
                 msgs_total,
                 serialized_state_chunk,
                 swap_id,
-                // checkpoint_type,
             }) => {
                 debug!("received checkpoint multipart message");
                 if self.pending_checkpoint_chunks.contains_key(&checksum) {
@@ -186,18 +158,20 @@ impl Runtime {
                     let mut chunk_tup_vec = chunks
                         .drain()
                         .map(|chunk| (chunk.msg_index, chunk.serialized_state_chunk))
-                        .collect::<Vec<(usize, Vec<u8>)>>(); // map to vec
-                    chunk_tup_vec.sort_by(|a, b| a.0.cmp(&b.0)); // sort in ascending order
+                        .collect::<Vec<(usize, Vec<u8>)>>(); // map the hashset to a vec for sorting
+                    chunk_tup_vec.sort_by(|(msg_number_a, _), (msg_number_b, _)| {
+                        msg_number_a.cmp(&msg_number_b)
+                    }); // sort in ascending order
                     let chunk_vec = chunk_tup_vec
                         .drain(..)
                         .map(|(_, chunk)| chunk)
                         .collect::<Vec<Vec<u8>>>(); // drop the extra integer index
                     let serialized_checkpoint =
-                        chunk_vec.into_iter().flatten().collect::<Vec<u8>>(); // accumulate the chunked message into a single serialized message
+                        chunk_vec.into_iter().flatten().collect::<Vec<u8>>(); // collect the chunked messages into a single serialized message
                     if ripemd160::Hash::hash(&serialized_checkpoint).into_inner() != checksum {
                         // this should never happen
                         error!("Unable to checkpoint the message, checksum did not match");
-                        Ok(())
+                        return Ok(());
                     }
                     // serialize request and recurse to handle the actual request
                     let request = Request::Checkpoint(request::Checkpoint {
@@ -205,14 +179,14 @@ impl Runtime {
                         state: request::CheckpointState::strict_decode(std::io::Cursor::new(
                             serialized_checkpoint,
                         ))
-                        .expect("this should work given that the checksum has matched"),
+                        .map_err(|err| Error::Farcaster(err.to_string()))?,
                     });
                     self.handle_rpc_ctl(endpoints, source, request)?;
                 }
             }
 
             Request::Checkpoint(request::Checkpoint { swap_id, state }) => {
-                debug!("setting checkpoint with state: {}", state);
+                debug!("setting checkpoint");
                 let key = (swap_id, source).into();
                 let mut state_encoded = vec![];
                 let _state_size = state.strict_encode(&mut state_encoded);
@@ -227,7 +201,6 @@ impl Runtime {
     }
 }
 
-// TODO: replace this ugly temp structure
 struct CheckpointKey(Vec<u8>);
 
 impl From<(SwapId, ServiceId)> for CheckpointKey {
diff --git a/src/rpc/request.rs b/src/rpc/request.rs
index bd32701df..f04941cfb 100644
--- a/src/rpc/request.rs
+++ b/src/rpc/request.rs
@@ -695,35 +695,6 @@ pub struct CheckpointMultipartChunk {
     pub msgs_total: usize,
     pub serialized_state_chunk: Vec<u8>,
     pub swap_id: SwapId,
-    // pub checkpoint_type: CheckpointType,
-}
-
-#[derive(Clone, Debug, Display, PartialEq, Eq, Hash, StrictDecode, StrictEncode)]
-#[display(Debug)]
-pub enum CheckpointType {
-    CheckpointWalletAlicePreLock,
-    CheckpointWalletBobPreLock,
-    CheckpointWalletAlicePreBuy,
-    CheckpointWalletBobPreBuy,
-}
-
-impl From<CheckpointState> for CheckpointType {
-    fn from(state: CheckpointState) -> CheckpointType {
-        match state {
-            CheckpointState::CheckpointWalletAlicePreBuy(_) => {
-                CheckpointType::CheckpointWalletAlicePreBuy
-            }
-            CheckpointState::CheckpointWalletAlicePreLock(_) => {
-                CheckpointType::CheckpointWalletAlicePreLock
-            }
-            CheckpointState::CheckpointWalletBobPreBuy(_) => {
-                CheckpointType::CheckpointWalletBobPreBuy
-            }
-            CheckpointState::CheckpointWalletBobPreLock(_) => {
-                CheckpointType::CheckpointWalletBobPreLock
-            }
-        }
-    }
 }
 
 #[derive(Clone, Debug, Display, StrictDecode, StrictEncode)]
diff --git a/src/walletd/runtime.rs b/src/walletd/runtime.rs
index 007847791..13c4586d9 100644
--- a/src/walletd/runtime.rs
+++ b/src/walletd/runtime.rs
@@ -1,8 +1,6 @@
 use crate::service::Endpoints;
-use crate::walletd::runtime::request::Checkpoint;
-use crate::walletd::runtime::request::CheckpointMultipartChunk;
-use crate::walletd::runtime::request::CheckpointType;
 use lmdb::{Cursor, Transaction as LMDBTransaction};
+use request::{Checkpoint, CheckpointMultipartChunk};
 use std::path::PathBuf;
 use std::{
     any::Any,
@@ -859,23 +857,26 @@ impl Runtime {
                     )?;
 
                     // *refund_sigs = Some(refund_proc_sigs);
-                    let signed_arb_lock = bob.sign_arbitrating_lock(key_manager, core_arb_txs)?;
-                    let sig = signed_arb_lock.lock_sig;
-                    let tx = core_arb_setup.lock.clone();
-                    let mut lock_tx = LockTx::from_partial(tx);
-                    let lock_pubkey = key_manager.get_pubkey(ArbitratingKeyId::Lock)?;
-                    lock_tx.add_witness(lock_pubkey, sig)?;
-                    let finalized_lock_tx: bitcoin::Transaction =
-                        Broadcastable::<BitcoinSegwitV0>::finalize_and_extract(&mut lock_tx)?;
-
-                    // TODO: checkpoint here
+                    {
+                        let signed_arb_lock =
+                            bob.sign_arbitrating_lock(key_manager, core_arb_txs)?;
+                        let sig = signed_arb_lock.lock_sig;
+                        let tx = core_arb_setup.lock.clone();
+                        let mut lock_tx = LockTx::from_partial(tx);
+                        let lock_pubkey = key_manager.get_pubkey(ArbitratingKeyId::Lock)?;
+                        lock_tx.add_witness(lock_pubkey, sig)?;
+                        let finalized_lock_tx: bitcoin::Transaction =
+                            Broadcastable::<BitcoinSegwitV0>::finalize_and_extract(&mut lock_tx)?;
+
+                        // TODO: checkpoint here
 
-                    endpoints.send_to(
-                        ServiceBus::Ctl,
-                        my_id.clone(),
-                        source.clone(), // destination swapd
-                        Request::Tx(request::Tx::Lock(finalized_lock_tx)),
-                    )?;
+                        endpoints.send_to(
+                            ServiceBus::Ctl,
+                            my_id.clone(),
+                            source.clone(), // destination swapd
+                            Request::Tx(request::Tx::Lock(finalized_lock_tx)),
+                        )?;
+                    }
 
                     {
                         if adaptor_buy.is_some() {
@@ -1551,17 +1552,12 @@ pub fn checkpoint_state(
     let mut serialized_state = vec![];
     let size = state.strict_encode(&mut serialized_state).unwrap();
 
-    let state =
-        request::CheckpointState::strict_decode(std::io::Cursor::new(serialized_state.clone()))
-            .expect("this has to work given that the checkpoint was just serialized");
-
     // if the size exceeds a boundary, send a multi-part message
     let max_chunk_size = internet2::transport::MAX_FRAME_SIZE - 1024;
-    debug!("checkpointing state");
+    debug!("checkpointing wallet state");
     if size > max_chunk_size {
         let checksum: [u8; 20] = ripemd160::Hash::hash(&serialized_state).into_inner();
         debug!("need to chunk the checkpoint message");
-        // let checkpoint_type: CheckpointType = state.into();
         let chunks: Vec<(usize, Vec<u8>)> = serialized_state
             .chunks_mut(max_chunk_size)
             .enumerate()
@@ -1570,8 +1566,9 @@ pub fn checkpoint_state(
         let chunks_total = chunks.len();
         for (n, chunk) in chunks {
             debug!(
-                "sending {} chunked checkpoint message of a total {}",
-                n, chunks_total
+                "sending chunked checkpoint message {} of a total {}",
+                n + 1,
+                chunks_total
             );
             endpoints.send_to(
                 ServiceBus::Ctl,
@@ -1585,7 +1582,6 @@ pub fn checkpoint_state(
                     swap_id,
                 }),
             )?;
-            std::thread::sleep(std::time::Duration::from_millis(1));
         }
     } else {
         endpoints.send_to(

From 16c877948c1eb3673f5ce361067c3186670a7ac8 Mon Sep 17 00:00:00 2001
From: TheCharlatan <seb.kung@gmail.com>
Date: Tue, 7 Jun 2022 23:58:13 +0200
Subject: [PATCH 27/32] Checkpointd: Handle errors properly

---
 src/checkpointd/runtime.rs | 149 +++++++++++++++++++++++++++----------
 src/rpc/request.rs         |   8 ++
 2 files changed, 119 insertions(+), 38 deletions(-)

diff --git a/src/checkpointd/runtime.rs b/src/checkpointd/runtime.rs
index 16381ddf1..ca5c93a2d 100644
--- a/src/checkpointd/runtime.rs
+++ b/src/checkpointd/runtime.rs
@@ -36,7 +36,7 @@ use request::{LaunchSwap, NodeId};
 pub fn run(config: ServiceConfig, data_dir: PathBuf) -> Result<(), Error> {
     let runtime = Runtime {
         identity: ServiceId::Checkpoint,
-        checkpoints: CheckpointGetSet::new(data_dir),
+        checkpoints: CheckpointGetSet::new(data_dir).unwrap(),
         pending_checkpoint_chunks: map![],
     };
 
@@ -187,10 +187,34 @@ impl Runtime {
 
             Request::Checkpoint(request::Checkpoint { swap_id, state }) => {
                 debug!("setting checkpoint");
-                let key = (swap_id, source).into();
+                let key = CheckpointKey {
+                    swap_id,
+                    service_id: source,
+                };
                 let mut state_encoded = vec![];
                 let _state_size = state.strict_encode(&mut state_encoded);
-                self.checkpoints.set_state(&key, &state_encoded);
+                self.checkpoints
+                    .set_state(&key, &state_encoded)
+                    .expect("failed to set checkpoint state");
+            }
+
+            Request::RetrieveAllCheckpointInfo => {
+                let _pairs = self.checkpoints.get_all_key_value_pairs();
+            }
+
+            Request::DeleteCheckpoint(swap_id) => {
+                self.checkpoints
+                    .delete_state(CheckpointKey {
+                        swap_id,
+                        service_id: ServiceId::Wallet,
+                    })
+                    .expect("failed to delete Wallet state");
+                self.checkpoints
+                    .delete_state(CheckpointKey {
+                        swap_id,
+                        service_id: ServiceId::Swap(swap_id),
+                    })
+                    .expect("failed to delete Swap state");
             }
 
             _ => {
@@ -201,45 +225,84 @@ impl Runtime {
     }
 }
 
-struct CheckpointKey(Vec<u8>);
+#[derive(Debug, Clone)]
+struct CheckpointKey {
+    swap_id: SwapId,
+    service_id: ServiceId,
+}
+
+impl From<CheckpointKey> for Vec<u8> {
+    fn from(checkpoint_key: CheckpointKey) -> Self {
+        Into::<[u8; 32]>::into(checkpoint_key.swap_id)
+            .iter()
+            .cloned()
+            .chain(
+                Into::<Vec<u8>>::into(checkpoint_key.service_id)
+                    .iter()
+                    .cloned(),
+            )
+            .collect()
+    }
+}
 
-impl From<(SwapId, ServiceId)> for CheckpointKey {
-    fn from((swapid, serviceid): (SwapId, ServiceId)) -> Self {
-        CheckpointKey(
-            Into::<[u8; 32]>::into(swapid)
-                .iter()
-                .cloned()
-                .chain(Into::<Vec<u8>>::into(serviceid).iter().cloned())
-                .collect(),
-        )
+impl From<Vec<u8>> for CheckpointKey {
+    fn from(raw_key: Vec<u8>) -> Self {
+        CheckpointKey {
+            swap_id: SwapId(raw_key[0..32].try_into().unwrap()),
+            service_id: raw_key[32..].to_vec().into(),
+        }
     }
 }
 
 struct CheckpointGetSet(lmdb::Environment);
 
 impl CheckpointGetSet {
-    fn new(path: PathBuf) -> CheckpointGetSet {
-        let env = lmdb::Environment::new().open(&path).unwrap();
-        env.create_db(None, lmdb::DatabaseFlags::empty()).unwrap();
-        CheckpointGetSet(env)
+    fn new(path: PathBuf) -> Result<CheckpointGetSet, lmdb::Error> {
+        let env = lmdb::Environment::new().open(&path)?;
+        env.create_db(None, lmdb::DatabaseFlags::empty())?;
+        Ok(CheckpointGetSet(env))
     }
 
-    fn set_state(&mut self, key: &CheckpointKey, val: &[u8]) {
-        let db = self.0.open_db(None).unwrap();
-        let mut tx = self.0.begin_rw_txn().unwrap();
-        if !tx.get(db, &key.0).is_err() {
-            tx.del(db, &key.0, None).unwrap();
+    fn set_state(&mut self, key: &CheckpointKey, val: &[u8]) -> Result<(), lmdb::Error> {
+        let db = self.0.open_db(None)?;
+        let mut tx = self.0.begin_rw_txn()?;
+        if !tx.get(db, &Vec::from(key.clone())).is_err() {
+            tx.del(db, &Vec::from(key.clone()), None)?;
         }
-        tx.put(db, &key.0, &val, lmdb::WriteFlags::empty()).unwrap();
-        tx.commit().unwrap();
+        tx.put(db, &Vec::from(key.clone()), &val, lmdb::WriteFlags::empty())?;
+        tx.commit()?;
+        Ok(())
     }
 
-    fn get_state(&mut self, key: &CheckpointKey) -> Vec<u8> {
-        let db = self.0.open_db(None).unwrap();
-        let tx = self.0.begin_ro_txn().unwrap();
-        let val: Vec<u8> = tx.get(db, &key.0).unwrap().into();
+    fn get_state(&mut self, key: &CheckpointKey) -> Result<Vec<u8>, lmdb::Error> {
+        let db = self.0.open_db(None)?;
+        let tx = self.0.begin_ro_txn()?;
+        let val: Vec<u8> = tx.get(db, &Vec::from(key.clone()))?.into();
         tx.abort();
-        val
+        Ok(val)
+    }
+
+    fn delete_state(&mut self, key: CheckpointKey) -> Result<(), lmdb::Error> {
+        let db = self.0.open_db(None)?;
+        let mut tx = self.0.begin_rw_txn()?;
+        if let Err(err) = tx.del(db, &Vec::from(key), None) {
+            error!("{}", err);
+        }
+        tx.commit()?;
+        Ok(())
+    }
+
+    fn get_all_key_value_pairs(&mut self) -> Result<Vec<(CheckpointKey, Vec<u8>)>, lmdb::Error> {
+        let db = self.0.open_db(None)?;
+        let tx = self.0.begin_ro_txn()?;
+        let mut cursor = tx.open_ro_cursor(db)?;
+        let res = cursor
+            .iter()
+            .map(|(key, value)| (CheckpointKey::from(key.to_vec()), value.to_vec()))
+            .collect();
+        drop(cursor);
+        tx.abort();
+        Ok(res)
     }
 }
 
@@ -247,17 +310,27 @@ impl CheckpointGetSet {
 fn test_lmdb_state() {
     let val1 = vec![0, 1];
     let val2 = vec![2, 3, 4, 5];
-    let key1 = (SwapId::random(), ServiceId::Checkpoint).into();
-    let key2 = (SwapId::random(), ServiceId::Checkpoint).into();
+    let key1 = CheckpointKey {
+        swap_id: SwapId::random(),
+        service_id: ServiceId::Swap(SwapId::random()),
+    };
+    let key2 = CheckpointKey {
+        swap_id: SwapId::random(),
+        service_id: ServiceId::Checkpoint,
+    };
     let path = std::env::current_dir().unwrap();
-    let mut state = CheckpointGetSet::new(path.to_path_buf());
-    state.set_state(&key1, &val1);
-    let res = state.get_state(&key1);
+    let mut state = CheckpointGetSet::new(path.to_path_buf()).unwrap();
+    state.set_state(&key1, &val1).unwrap();
+    let res = state.get_state(&key1).unwrap();
     assert_eq!(val1, res);
-    state.set_state(&key1, &val2);
-    let res = state.get_state(&key1);
+    state.set_state(&key1, &val2).unwrap();
+    let res = state.get_state(&key1).unwrap();
     assert_eq!(val2, res);
-    state.set_state(&key2, &val2);
-    let res = state.get_state(&key2);
+    state.set_state(&key2, &val2).unwrap();
+    let res = state.get_state(&key2).unwrap();
     assert_eq!(val2, res);
+    state.delete_state(key2.clone()).unwrap();
+    let res = state.get_state(&key2);
+    assert!(res.is_err());
+    state.get_all_key_value_pairs().unwrap();
 }
diff --git a/src/rpc/request.rs b/src/rpc/request.rs
index f04941cfb..359244772 100644
--- a/src/rpc/request.rs
+++ b/src/rpc/request.rs
@@ -669,6 +669,14 @@ pub enum Request {
     #[display("checkpoint_multipart({0})")]
     #[from]
     CheckpointMultipartChunk(CheckpointMultipartChunk),
+
+    #[api(type = 1306)]
+    #[display("retrieve_all_checkpoint_info")]
+    RetrieveAllCheckpointInfo,
+
+    #[api(type = 1307)]
+    #[display("delete_checkpoint")]
+    DeleteCheckpoint(SwapId),
 }
 
 #[derive(Clone, Debug, Display, StrictEncode, StrictDecode)]

From 9b5bcbf585724990785bdd220c381dfea920b1ae Mon Sep 17 00:00:00 2001
From: TheCharlatan <seb.kung@gmail.com>
Date: Wed, 8 Jun 2022 11:45:39 +0200
Subject: [PATCH 28/32] Tests: kill checkpointd when cleaning up processes

---
 tests/functional-swap.rs | 10 +++++++++-
 tests/rpc.rs             |  9 ++++++++-
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/tests/functional-swap.rs b/tests/functional-swap.rs
index 62c967952..f2457b3d3 100644
--- a/tests/functional-swap.rs
+++ b/tests/functional-swap.rs
@@ -1587,7 +1587,15 @@ fn cleanup_processes(mut farcasterds: Vec<process::Child>) {
         .get_processes()
         .iter()
         .filter(|(_pid, process)| {
-            ["swapd", "grpcd", "walletd", "syncerd", "peerd"].contains(&process.name())
+            [
+                "swapd",
+                "grpcd",
+                "checkpointd",
+                "walletd",
+                "syncerd",
+                "peerd",
+            ]
+            .contains(&process.name())
                 && procs
                     .iter()
                     .map(|proc| proc.0)
diff --git a/tests/rpc.rs b/tests/rpc.rs
index c76a9e18c..e819a9465 100644
--- a/tests/rpc.rs
+++ b/tests/rpc.rs
@@ -127,7 +127,14 @@ fn spawn_swap() {
             .stdout;
 
         use regex::RegexSet;
-        let re = RegexSet::new(&[r" farcasterd", r" peerd", r" swapd", r" walletd"]).unwrap();
+        let re = RegexSet::new(&[
+            r" farcasterd",
+            r" peerd",
+            r" swapd",
+            r" walletd",
+            r" checkpointd",
+        ])
+        .unwrap();
 
         let matches: Vec<_> = re
             .matches(std::str::from_utf8(&ps_out).unwrap())

From 42e49ff1ad316c4e29c4707f1a2c2a257cad7857 Mon Sep 17 00:00:00 2001
From: TheCharlatan <seb.kung@gmail.com>
Date: Wed, 8 Jun 2022 13:55:24 +0200
Subject: [PATCH 29/32] Attempt to fix CI unit test stall

---
 Cargo.toml         | 1 +
 src/bin/walletd.rs | 9 ++-------
 tests/rpc.rs       | 2 +-
 3 files changed, 4 insertions(+), 8 deletions(-)

diff --git a/Cargo.toml b/Cargo.toml
index 3ebdb632d..cdcf086d1 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -13,6 +13,7 @@ description = "Farcaster node"
 
 [lib]
 name = "farcaster_node"
+doctest = false
 
 [[bin]]
 name = "farcasterd"
diff --git a/src/bin/walletd.rs b/src/bin/walletd.rs
index c4c694abb..19823afc8 100644
--- a/src/bin/walletd.rs
+++ b/src/bin/walletd.rs
@@ -53,13 +53,8 @@ fn main() {
     let node_secrets = NodeSecrets::new(opts.key_opts.key_file.clone());
 
     debug!("Starting runtime ...");
-    walletd::run(
-        service_config,
-        wallet_token,
-        node_secrets,
-        // opts.shared.data_dir,
-    )
-    .expect("Error running walletd runtime");
+    walletd::run(service_config, wallet_token, node_secrets)
+        .expect("Error running walletd runtime");
 
     unreachable!()
 }
diff --git a/tests/rpc.rs b/tests/rpc.rs
index e819a9465..692953454 100644
--- a/tests/rpc.rs
+++ b/tests/rpc.rs
@@ -98,7 +98,7 @@ fn spawn_swap() {
         .get_processes()
         .iter()
         .filter(|(_pid, process)| {
-            ["peerd", "swapd", "walletd"].contains(&process.name())
+            ["peerd", "swapd", "walletd", "checkpointd"].contains(&process.name())
                 && [farcasterd_maker.id(), farcasterd_taker.id()]
                     .contains(&(process.parent().unwrap() as u32))
         })

From 1957e8f55a95e04fd21ac38b0f998d88058a22cd Mon Sep 17 00:00:00 2001
From: TheCharlatan <seb.kung@gmail.com>
Date: Wed, 8 Jun 2022 15:13:36 +0200
Subject: [PATCH 30/32] Tests: do not skip doctest

---
 Cargo.toml | 1 -
 1 file changed, 1 deletion(-)

diff --git a/Cargo.toml b/Cargo.toml
index cdcf086d1..3ebdb632d 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -13,7 +13,6 @@ description = "Farcaster node"
 
 [lib]
 name = "farcaster_node"
-doctest = false
 
 [[bin]]
 name = "farcasterd"

From 89ebf9f1c0343a90ef4425fdfda4772b57da796e Mon Sep 17 00:00:00 2001
From: TheCharlatan <seb.kung@gmail.com>
Date: Mon, 13 Jun 2022 18:12:41 +0200
Subject: [PATCH 31/32] Rename checkpointd to databased

---
 src/bin/{checkpointd.rs => databased.rs}  |  7 ++-
 src/{checkpointd => databased}/mod.rs     |  0
 src/{checkpointd => databased}/opts.rs    |  4 +-
 src/{checkpointd => databased}/runtime.rs | 56 +++++++++++------------
 src/farcasterd/runtime.rs                 |  2 +-
 src/lib.rs                                |  2 +-
 src/service.rs                            |  4 +-
 src/walletd/runtime.rs                    |  4 +-
 8 files changed, 39 insertions(+), 40 deletions(-)
 rename src/bin/{checkpointd.rs => databased.rs} (84%)
 rename src/{checkpointd => databased}/mod.rs (100%)
 rename src/{checkpointd => databased}/opts.rs (90%)
 rename src/{checkpointd => databased}/runtime.rs (86%)

diff --git a/src/bin/checkpointd.rs b/src/bin/databased.rs
similarity index 84%
rename from src/bin/checkpointd.rs
rename to src/bin/databased.rs
index 469a36e29..3eaa0c0df 100644
--- a/src/bin/checkpointd.rs
+++ b/src/bin/databased.rs
@@ -24,14 +24,14 @@
     missing_docs
 )]
 
-//! Main executable for checkpointd: farcaster node checkpointing microservice.
+//! Main executable for databased: farcaster node databaseing microservice.
 
 #[macro_use]
 extern crate log;
 
 use clap::Parser;
 
-use farcaster_node::checkpointd::{self, Opts};
+use farcaster_node::databased::{self, Opts};
 use farcaster_node::ServiceConfig;
 
 fn main() {
@@ -46,8 +46,7 @@ fn main() {
     debug!("CTL RPC socket {}", &service_config.ctl_endpoint);
 
     debug!("Starting runtime ...");
-    checkpointd::run(service_config, opts.shared.data_dir)
-        .expect("Error running checkpointd runtime");
+    databased::run(service_config, opts.shared.data_dir).expect("Error running databased runtime");
 
     unreachable!()
 }
diff --git a/src/checkpointd/mod.rs b/src/databased/mod.rs
similarity index 100%
rename from src/checkpointd/mod.rs
rename to src/databased/mod.rs
diff --git a/src/checkpointd/opts.rs b/src/databased/opts.rs
similarity index 90%
rename from src/checkpointd/opts.rs
rename to src/databased/opts.rs
index 5d1edfc88..9a6cc2c09 100644
--- a/src/checkpointd/opts.rs
+++ b/src/databased/opts.rs
@@ -24,9 +24,9 @@ use bitcoin::secp256k1::{
 };
 use strict_encoding::{StrictDecode, StrictEncode};
 
-/// checkpoint daemon; part of Farcaster Node
+/// database daemon; part of Farcaster Node
 #[derive(Parser, Clone, PartialEq, Eq, Debug)]
-#[clap(name = "checkpointd", bin_name = "checkpointd", author, version)]
+#[clap(name = "databased", bin_name = "databased", author, version)]
 pub struct Opts {
     /// These params can be read also from the configuration file, not just
     /// command-line args or environment variables
diff --git a/src/checkpointd/runtime.rs b/src/databased/runtime.rs
similarity index 86%
rename from src/checkpointd/runtime.rs
rename to src/databased/runtime.rs
index ca5c93a2d..d0f6aea78 100644
--- a/src/checkpointd/runtime.rs
+++ b/src/databased/runtime.rs
@@ -35,8 +35,8 @@ use request::{LaunchSwap, NodeId};
 
 pub fn run(config: ServiceConfig, data_dir: PathBuf) -> Result<(), Error> {
     let runtime = Runtime {
-        identity: ServiceId::Checkpoint,
-        checkpoints: CheckpointGetSet::new(data_dir).unwrap(),
+        identity: ServiceId::Database,
+        database: Database::new(data_dir).unwrap(),
         pending_checkpoint_chunks: map![],
     };
 
@@ -51,7 +51,7 @@ struct CheckpointChunk {
 
 pub struct Runtime {
     identity: ServiceId,
-    checkpoints: CheckpointGetSet,
+    database: Database,
     pending_checkpoint_chunks: HashMap<[u8; 20], HashSet<CheckpointChunk>>,
 }
 
@@ -193,24 +193,24 @@ impl Runtime {
                 };
                 let mut state_encoded = vec![];
                 let _state_size = state.strict_encode(&mut state_encoded);
-                self.checkpoints
-                    .set_state(&key, &state_encoded)
+                self.database
+                    .set_checkpoint_state(&key, &state_encoded)
                     .expect("failed to set checkpoint state");
             }
 
             Request::RetrieveAllCheckpointInfo => {
-                let _pairs = self.checkpoints.get_all_key_value_pairs();
+                let _pairs = self.database.get_all_key_value_pairs();
             }
 
             Request::DeleteCheckpoint(swap_id) => {
-                self.checkpoints
-                    .delete_state(CheckpointKey {
+                self.database
+                    .delete_checkpoint_state(CheckpointKey {
                         swap_id,
                         service_id: ServiceId::Wallet,
                     })
                     .expect("failed to delete Wallet state");
-                self.checkpoints
-                    .delete_state(CheckpointKey {
+                self.database
+                    .delete_checkpoint_state(CheckpointKey {
                         swap_id,
                         service_id: ServiceId::Swap(swap_id),
                     })
@@ -254,16 +254,16 @@ impl From<Vec<u8>> for CheckpointKey {
     }
 }
 
-struct CheckpointGetSet(lmdb::Environment);
+struct Database(lmdb::Environment);
 
-impl CheckpointGetSet {
-    fn new(path: PathBuf) -> Result<CheckpointGetSet, lmdb::Error> {
+impl Database {
+    fn new(path: PathBuf) -> Result<Database, lmdb::Error> {
         let env = lmdb::Environment::new().open(&path)?;
         env.create_db(None, lmdb::DatabaseFlags::empty())?;
-        Ok(CheckpointGetSet(env))
+        Ok(Database(env))
     }
 
-    fn set_state(&mut self, key: &CheckpointKey, val: &[u8]) -> Result<(), lmdb::Error> {
+    fn set_checkpoint_state(&mut self, key: &CheckpointKey, val: &[u8]) -> Result<(), lmdb::Error> {
         let db = self.0.open_db(None)?;
         let mut tx = self.0.begin_rw_txn()?;
         if !tx.get(db, &Vec::from(key.clone())).is_err() {
@@ -274,7 +274,7 @@ impl CheckpointGetSet {
         Ok(())
     }
 
-    fn get_state(&mut self, key: &CheckpointKey) -> Result<Vec<u8>, lmdb::Error> {
+    fn get_checkpoint_state(&mut self, key: &CheckpointKey) -> Result<Vec<u8>, lmdb::Error> {
         let db = self.0.open_db(None)?;
         let tx = self.0.begin_ro_txn()?;
         let val: Vec<u8> = tx.get(db, &Vec::from(key.clone()))?.into();
@@ -282,7 +282,7 @@ impl CheckpointGetSet {
         Ok(val)
     }
 
-    fn delete_state(&mut self, key: CheckpointKey) -> Result<(), lmdb::Error> {
+    fn delete_checkpoint_state(&mut self, key: CheckpointKey) -> Result<(), lmdb::Error> {
         let db = self.0.open_db(None)?;
         let mut tx = self.0.begin_rw_txn()?;
         if let Err(err) = tx.del(db, &Vec::from(key), None) {
@@ -316,21 +316,21 @@ fn test_lmdb_state() {
     };
     let key2 = CheckpointKey {
         swap_id: SwapId::random(),
-        service_id: ServiceId::Checkpoint,
+        service_id: ServiceId::Database,
     };
     let path = std::env::current_dir().unwrap();
-    let mut state = CheckpointGetSet::new(path.to_path_buf()).unwrap();
-    state.set_state(&key1, &val1).unwrap();
-    let res = state.get_state(&key1).unwrap();
+    let mut database = Database::new(path.to_path_buf()).unwrap();
+    database.set_checkpoint_state(&key1, &val1).unwrap();
+    let res = database.get_checkpoint_state(&key1).unwrap();
     assert_eq!(val1, res);
-    state.set_state(&key1, &val2).unwrap();
-    let res = state.get_state(&key1).unwrap();
+    database.set_checkpoint_state(&key1, &val2).unwrap();
+    let res = database.get_checkpoint_state(&key1).unwrap();
     assert_eq!(val2, res);
-    state.set_state(&key2, &val2).unwrap();
-    let res = state.get_state(&key2).unwrap();
+    database.set_checkpoint_state(&key2, &val2).unwrap();
+    let res = database.get_checkpoint_state(&key2).unwrap();
     assert_eq!(val2, res);
-    state.delete_state(key2.clone()).unwrap();
-    let res = state.get_state(&key2);
+    database.delete_checkpoint_state(key2.clone()).unwrap();
+    let res = database.get_checkpoint_state(&key2);
     assert!(res.is_err());
-    state.get_all_key_value_pairs().unwrap();
+    database.get_all_key_value_pairs().unwrap();
 }
diff --git a/src/farcasterd/runtime.rs b/src/farcasterd/runtime.rs
index 87daf6a06..62df16ace 100644
--- a/src/farcasterd/runtime.rs
+++ b/src/farcasterd/runtime.rs
@@ -116,7 +116,7 @@ pub fn run(
         )?;
     }
     let empty: Vec<String> = vec![];
-    let _checkpointd = launch("checkpointd", empty)?;
+    let _databased = launch("databased", empty)?;
 
     if config.is_auto_funding_enable() {
         info!("farcasterd will attempt to fund automatically");
diff --git a/src/lib.rs b/src/lib.rs
index 92ec0601b..da79d73ad 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -60,7 +60,7 @@ pub mod opts;
 pub mod rpc;
 
 #[cfg(feature = "node")]
-pub mod checkpointd;
+pub mod databased;
 #[cfg(feature = "node")]
 pub mod farcasterd;
 #[cfg(feature = "node")]
diff --git a/src/service.rs b/src/service.rs
index 72227695e..04965a764 100644
--- a/src/service.rs
+++ b/src/service.rs
@@ -129,8 +129,8 @@ pub enum ServiceId {
     #[display("grpcd")]
     Grpcd,
 
-    #[display("checkpointd")]
-    Checkpoint,
+    #[display("databased")]
+    Database,
 
     #[display("other<{0}>")]
     Other(ClientName),
diff --git a/src/walletd/runtime.rs b/src/walletd/runtime.rs
index 13c4586d9..7f3a4dc42 100644
--- a/src/walletd/runtime.rs
+++ b/src/walletd/runtime.rs
@@ -1573,7 +1573,7 @@ pub fn checkpoint_state(
             endpoints.send_to(
                 ServiceBus::Ctl,
                 ServiceId::Wallet,
-                ServiceId::Checkpoint,
+                ServiceId::Database,
                 Request::CheckpointMultipartChunk(CheckpointMultipartChunk {
                     checksum,
                     msg_index: n,
@@ -1587,7 +1587,7 @@ pub fn checkpoint_state(
         endpoints.send_to(
             ServiceBus::Ctl,
             ServiceId::Wallet,
-            ServiceId::Checkpoint,
+            ServiceId::Database,
             Request::Checkpoint(Checkpoint { swap_id, state }),
         )?;
     }

From 867aed7b1d92dd53bb34a554064406300df45520 Mon Sep 17 00:00:00 2001
From: TheCharlatan <seb.kung@gmail.com>
Date: Mon, 13 Jun 2022 20:48:23 +0200
Subject: [PATCH 32/32] Test: rename checkpoint to database

---
 tests/functional-swap.rs | 10 +---------
 tests/rpc.rs             |  4 ++--
 2 files changed, 3 insertions(+), 11 deletions(-)

diff --git a/tests/functional-swap.rs b/tests/functional-swap.rs
index f2457b3d3..3a50f317f 100644
--- a/tests/functional-swap.rs
+++ b/tests/functional-swap.rs
@@ -1587,15 +1587,7 @@ fn cleanup_processes(mut farcasterds: Vec<process::Child>) {
         .get_processes()
         .iter()
         .filter(|(_pid, process)| {
-            [
-                "swapd",
-                "grpcd",
-                "checkpointd",
-                "walletd",
-                "syncerd",
-                "peerd",
-            ]
-            .contains(&process.name())
+            ["swapd", "grpcd", "databased", "walletd", "syncerd", "peerd"].contains(&process.name())
                 && procs
                     .iter()
                     .map(|proc| proc.0)
diff --git a/tests/rpc.rs b/tests/rpc.rs
index 692953454..8f10fa742 100644
--- a/tests/rpc.rs
+++ b/tests/rpc.rs
@@ -98,7 +98,7 @@ fn spawn_swap() {
         .get_processes()
         .iter()
         .filter(|(_pid, process)| {
-            ["peerd", "swapd", "walletd", "checkpointd"].contains(&process.name())
+            ["peerd", "swapd", "walletd", "databased"].contains(&process.name())
                 && [farcasterd_maker.id(), farcasterd_taker.id()]
                     .contains(&(process.parent().unwrap() as u32))
         })
@@ -132,7 +132,7 @@ fn spawn_swap() {
             r" peerd",
             r" swapd",
             r" walletd",
-            r" checkpointd",
+            r" databased",
         ])
         .unwrap();