Merge branch 'cooperative-release-of-funds' of https://github.com/patrini32/xmr-btc-swap into pr/1676

This commit is contained in:
binarybaron 2024-07-11 09:30:49 +02:00
commit f8c3276642
6 changed files with 63 additions and 38 deletions

View file

@ -67,7 +67,7 @@ tracing-appender = "0.2"
tracing-futures = { version = "0.2", features = [ "std-future", "futures-03" ] }
tracing-subscriber = { version = "0.3", default-features = false, features = [ "fmt", "ansi", "env-filter", "time", "tracing-log", "json" ] }
url = { version = "2", features = [ "serde" ] }
uuid = { version = "1.9", features = [ "serde", "v4" ] }
uuid = { version = "1.10", features = [ "serde", "v4" ] }
void = "1"
[target.'cfg(not(windows))'.dependencies]
@ -79,7 +79,7 @@ zip = "0.5"
[dev-dependencies]
bitcoin-harness = { git = "https://github.com/delta1/bitcoin-harness-rs.git", rev = "80cc8d05db2610d8531011be505b7bee2b5cdf9f" }
get-port = "3"
hyper = "1.3"
hyper = "1.4"
jsonrpsee = { version = "0.16.2", features = [ "ws-client" ] }
mockito = "1.4"
monero-harness = { path = "../monero-harness" }

View file

@ -267,6 +267,10 @@ impl Context {
tasks: Arc::new(PendingTaskList::default()),
}
}
pub fn bitcoin_wallet(&self) -> Option<Arc<bitcoin::Wallet>> {
self.bitcoin_wallet.clone()
}
}
impl fmt::Debug for Context {

View file

@ -69,6 +69,37 @@ where
monero_receive_address,
tor,
} => {
let context = Context::build(
Some(bitcoin),
Some(monero),
Some(tor),
data,
is_testnet,
debug,
json,
None,
)
.await?;
// when no refund address was provided we default to the internal wallet
let bitcoin_change_address = match bitcoin_change_address {
Some(addr) => addr,
None => {
let internal_wallet_address = context
.bitcoin_wallet()
.expect("bitcoin wallet should exist")
.new_address()
.await?;
tracing::info!(
internal_wallet_address=%internal_wallet_address,
"No --change-address supplied. Any change will be received to the internal wallet."
);
internal_wallet_address
}
};
let monero_receive_address =
monero_address::validate_is_testnet(monero_receive_address, is_testnet)?;
let bitcoin_change_address =
@ -81,17 +112,6 @@ where
swap_id: Uuid::new_v4(),
});
let context = Context::build(
Some(bitcoin),
Some(monero),
Some(tor),
data,
is_testnet,
debug,
json,
None,
)
.await?;
(context, request)
}
CliCommand::History => {
@ -300,10 +320,10 @@ enum CliCommand {
#[structopt(
long = "change-address",
help = "The bitcoin address where any form of change or excess funds should be sent to",
help = "The bitcoin address where any form of change or excess funds should be sent to. If omitted they will be sent to the internal wallet.",
parse(try_from_str = bitcoin_address::parse)
)]
bitcoin_change_address: bitcoin::Address,
bitcoin_change_address: Option<bitcoin::Address>,
#[structopt(flatten)]
monero: Monero,