Skip to content

Commit

Permalink
f
Browse files Browse the repository at this point in the history
  • Loading branch information
jbesraa committed Jun 28, 2024
1 parent 3292bd3 commit e5f3a6b
Show file tree
Hide file tree
Showing 6 changed files with 59 additions and 40 deletions.
6 changes: 4 additions & 2 deletions src/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -491,8 +491,8 @@ impl ArcedNodeBuilder {
}

/// Configures the [`Node`] instance to enable payjoin transactions.
pub fn set_payjoin_config(&self, payjoin_relay: String) -> Result<(), BuildError> {
self.inner.write().unwrap().set_payjoin_config(payjoin_relay).map(|_| ())
pub fn set_payjoin_config(&self, payjoin_directory: String, payjoin_relay: String, ohttp_keys: Option<String>) -> Result<(), BuildError> {
self.inner.write().unwrap().set_payjoin_config(payjoin_directory, payjoin_relay, ohttp_keys).map(|_| ())
}

/// Configures the [`Node`] instance to source its gossip data from the given RapidGossipSync
Expand Down Expand Up @@ -1016,6 +1016,8 @@ fn build_with_store_internal(
Arc::clone(&logger),
pj_config.payjoin_relay.clone(),
)));
dbg!("directory", pj_config.payjoin_directory.clone());
dbg!("relay", pj_config.payjoin_relay.clone());
payjoin_receiver = Some(Arc::new(PayjoinReceiver::new(
Arc::clone(&logger),
Arc::clone(&wallet),
Expand Down
4 changes: 4 additions & 0 deletions src/payjoin_receiver.rs
Original file line number Diff line number Diff line change
Expand Up @@ -354,6 +354,7 @@ impl PayjoinReceiver {
let payjoin_directory = match payjoin_directory.join("/ohttp-keys") {
Ok(payjoin_directory) => payjoin_directory,
Err(e) => {
dbg!(&e);
log_info!(
self.logger,
"Payjoin Receiver: Unable to construct ohttp keys url {}",
Expand All @@ -365,6 +366,7 @@ impl PayjoinReceiver {
let proxy = match reqwest::Proxy::all(self.payjoin_relay.to_string()) {
Ok(proxy) => proxy,
Err(e) => {
dbg!(&e);
log_info!(
self.logger,
"Payjoin Receiver: Unable to construct reqwest proxy {}",
Expand All @@ -376,6 +378,7 @@ impl PayjoinReceiver {
let client = match reqwest::Client::builder().proxy(proxy).build() {
Ok(client) => client,
Err(e) => {
dbg!(&e);
log_info!(
self.logger,
"Payjoin Receiver: Unable to construct reqwest client {}",
Expand All @@ -387,6 +390,7 @@ impl PayjoinReceiver {
let response = match client.get(payjoin_directory).send().await {
Ok(response) => response,
Err(e) => {
dbg!(&e);
log_info!(
self.logger,
"Payjoin Receiver: Unable to make request to fetch ohttp keys {}",
Expand Down
13 changes: 13 additions & 0 deletions src/payment/payjoin/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -340,3 +340,16 @@ impl PayjoinPayment {
}
}
}

// use crate::lightning::chain::{Filter, WatchedOutput};

// impl Filter for PayjoinPayment {
// fn register_tx(&self, txid: &bitcoin::Txid, script_pubkey: &bitcoin::Script) {
// if let Some(receiver) = &self.receiver {
// receiver.register_tx(txid);
// }
// }
// fn register_output(&self, output: WatchOutput) {
// }
// }

6 changes: 3 additions & 3 deletions tests/common/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -147,10 +147,10 @@ macro_rules! expect_payment_successful_event {

pub(crate) use expect_payment_successful_event;

macro_rules! expect_payjoin_tx_sent_successfully_event {
macro_rules! expect_payjoin_payment_pending_event {
($node: expr) => {{
match $node.wait_next_event() {
ref e @ Event::PayjoinTxSendSuccess { txid } => {
ref e @ Event::PayjoinPaymentPending { txid } => {
println!("{} got event {:?}", $node.node_id(), e);
$node.event_handled();
txid
Expand All @@ -162,7 +162,7 @@ macro_rules! expect_payjoin_tx_sent_successfully_event {
}};
}

pub(crate) use expect_payjoin_tx_sent_successfully_event;
pub(crate) use expect_payjoin_payment_pending_event;

pub(crate) fn setup_bitcoind_and_electrsd() -> (BitcoinD, ElectrsD) {
let bitcoind_exe =
Expand Down
66 changes: 33 additions & 33 deletions tests/integration_tests_payjoin.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
mod common;

use common::{
expect_payjoin_tx_sent_successfully_event, generate_blocks_and_wait,
expect_payjoin_payment_pending_event, generate_blocks_and_wait,
premine_and_distribute_funds, setup_bitcoind_and_electrsd, setup_two_payjoin_nodes,
wait_for_tx,
};
Expand Down Expand Up @@ -33,42 +33,42 @@ fn send_receive_regular_payjoin_transaction() {
dbg!(&payjoin_uri);
let sender_payjoin_payment = node_b_pj_sender.payjoin_payment();
assert!(sender_payjoin_payment.send(payjoin_uri).is_ok());
let txid = expect_payjoin_tx_sent_successfully_event!(node_b_pj_sender);
let txid = expect_payjoin_payment_pending_event!(node_b_pj_sender);
wait_for_tx(&electrsd.client, txid);
generate_blocks_and_wait(&bitcoind.client, &electrsd.client, 6);
node_b_pj_sender.sync_wallets().unwrap();
let node_b_balance = node_b_pj_sender.list_balances();
assert!(node_b_balance.total_onchain_balance_sats < premine_amount_sat - 80000);
}

#[test]
fn send_payjoin_with_amount() {
let (bitcoind, electrsd) = setup_bitcoind_and_electrsd();
let (node_a_pj_receiver, node_b_pj_sender) = setup_two_payjoin_nodes(&electrsd, false);
let addr_b = node_b_pj_sender.onchain_payment().new_address().unwrap();
let addr_a = node_a_pj_receiver.onchain_payment().new_address().unwrap();
let premine_amount_sat = 100_000_00;
premine_and_distribute_funds(
&bitcoind.client,
&electrsd.client,
vec![addr_b, addr_a],
Amount::from_sat(premine_amount_sat),
);
node_a_pj_receiver.sync_wallets().unwrap();
node_b_pj_sender.sync_wallets().unwrap();
assert_eq!(node_b_pj_sender.list_balances().spendable_onchain_balance_sats, premine_amount_sat);
assert_eq!(node_a_pj_receiver.list_balances().spendable_onchain_balance_sats, 100_000_00);
assert_eq!(node_a_pj_receiver.next_event(), None);
let payjoin_payment = node_a_pj_receiver.payjoin_payment();
let payjoin_uri = payjoin_payment.receive(Amount::from_sat(100_000_000)).unwrap();
let payjoin_uri = payjoin_uri.to_string();
dbg!(&payjoin_uri);
let sender_payjoin_payment = node_b_pj_sender.payjoin_payment();
assert!(sender_payjoin_payment.send_with_amount(payjoin_uri, 80_000).is_ok());
let txid = expect_payjoin_tx_sent_successfully_event!(node_b_pj_sender);
wait_for_tx(&electrsd.client, txid);
generate_blocks_and_wait(&bitcoind.client, &electrsd.client, 6);
node_b_pj_sender.sync_wallets().unwrap();
let node_b_balance = node_b_pj_sender.list_balances();
assert!(node_b_balance.total_onchain_balance_sats < premine_amount_sat - 80000);
}
// #[test]
// fn send_payjoin_with_amount() {
// let (bitcoind, electrsd) = setup_bitcoind_and_electrsd();
// let (node_a_pj_receiver, node_b_pj_sender) = setup_two_payjoin_nodes(&electrsd, false);
// let addr_b = node_b_pj_sender.onchain_payment().new_address().unwrap();
// let addr_a = node_a_pj_receiver.onchain_payment().new_address().unwrap();
// let premine_amount_sat = 100_000_00;
// premine_and_distribute_funds(
// &bitcoind.client,
// &electrsd.client,
// vec![addr_b, addr_a],
// Amount::from_sat(premine_amount_sat),
// );
// node_a_pj_receiver.sync_wallets().unwrap();
// node_b_pj_sender.sync_wallets().unwrap();
// assert_eq!(node_b_pj_sender.list_balances().spendable_onchain_balance_sats, premine_amount_sat);
// assert_eq!(node_a_pj_receiver.list_balances().spendable_onchain_balance_sats, 100_000_00);
// assert_eq!(node_a_pj_receiver.next_event(), None);
// let payjoin_payment = node_a_pj_receiver.payjoin_payment();
// let payjoin_uri = payjoin_payment.receive(Amount::from_sat(100_000_000)).unwrap();
// let payjoin_uri = payjoin_uri.to_string();
// dbg!(&payjoin_uri);
// let sender_payjoin_payment = node_b_pj_sender.payjoin_payment();
// assert!(sender_payjoin_payment.send_with_amount(payjoin_uri, 80_000).is_ok());
// let txid = expect_payjoin_tx_sent_successfully_event!(node_b_pj_sender);
// wait_for_tx(&electrsd.client, txid);
// generate_blocks_and_wait(&bitcoind.client, &electrsd.client, 6);
// node_b_pj_sender.sync_wallets().unwrap();
// let node_b_balance = node_b_pj_sender.list_balances();
// assert!(node_b_balance.total_onchain_balance_sats < premine_amount_sat - 80000);
// }
4 changes: 2 additions & 2 deletions tests/integration_tests_payjoin_with_channel_opening.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ mod common;

use common::{
expect_channel_pending_event, expect_channel_ready_event,
expect_payjoin_tx_sent_successfully_event, generate_blocks_and_wait,
expect_payjoin_payment_pending_event, generate_blocks_and_wait,
premine_and_distribute_funds, setup_bitcoind_and_electrsd, setup_two_payjoin_nodes,
wait_for_tx,
};
Expand Down Expand Up @@ -46,7 +46,7 @@ fn send_receive_payjoin_transaction_with_channel_opening() {
assert!(sender_payjoin_payment.send(payjoin_uri).is_ok());
expect_channel_pending_event!(node_a_pj_receiver, node_b_pj_sender.node_id());
expect_channel_pending_event!(node_b_pj_sender, node_a_pj_receiver.node_id());
let txid = expect_payjoin_tx_sent_successfully_event!(node_b_pj_sender);
let txid = expect_payjoin_payment_pending_event!(node_b_pj_sender);
wait_for_tx(&electrsd.client, txid);
generate_blocks_and_wait(&bitcoind.client, &electrsd.client, 6);
node_a_pj_receiver.sync_wallets().unwrap();
Expand Down

0 comments on commit e5f3a6b

Please sign in to comment.