projects
/
rust-lightning
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
801d6e5
)
Add payment_hash to PaymentSent #999
author
Galder Zamarreño
<galder@zamarreno.com>
Tue, 31 Aug 2021 07:56:21 +0000
(08:56 +0100)
committer
Galder Zamarreño
<galder@zamarreno.com>
Fri, 8 Oct 2021 04:53:10 +0000
(06:53 +0200)
lightning/src/ln/chanmon_update_fail_tests.rs
patch
|
blob
|
history
lightning/src/ln/channelmanager.rs
patch
|
blob
|
history
lightning/src/ln/functional_test_utils.rs
patch
|
blob
|
history
lightning/src/ln/functional_tests.rs
patch
|
blob
|
history
lightning/src/ln/reorg_tests.rs
patch
|
blob
|
history
lightning/src/ln/shutdown_tests.rs
patch
|
blob
|
history
lightning/src/util/events.rs
patch
|
blob
|
history
diff --git
a/lightning/src/ln/chanmon_update_fail_tests.rs
b/lightning/src/ln/chanmon_update_fail_tests.rs
index 9a5d2eaa90525e1ee205e83c5f736db35c699ece..6901cc2f6394de9a5270895c713f659cd81afa8f 100644
(file)
--- a/
lightning/src/ln/chanmon_update_fail_tests.rs
+++ b/
lightning/src/ln/chanmon_update_fail_tests.rs
@@
-308,7
+308,7
@@
fn do_test_monitor_temporary_update_fail(disconnect_count: usize) {
let channel_id = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known()).2;
let logger = test_utils::TestLogger::new();
let channel_id = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known()).2;
let logger = test_utils::TestLogger::new();
- let (payment_preimage_1,
_
, _) = route_payment(&nodes[0], &[&nodes[1]], 1000000);
+ let (payment_preimage_1,
payment_hash_1
, _) = route_payment(&nodes[0], &[&nodes[1]], 1000000);
// Now try to send a second payment which will fail to send
let (payment_preimage_2, payment_hash_2, payment_secret_2) = get_payment_preimage_hash!(nodes[1]);
// Now try to send a second payment which will fail to send
let (payment_preimage_2, payment_hash_2, payment_secret_2) = get_payment_preimage_hash!(nodes[1]);
@@
-344,8
+344,9
@@
fn do_test_monitor_temporary_update_fail(disconnect_count: usize) {
let events_3 = nodes[0].node.get_and_clear_pending_events();
assert_eq!(events_3.len(), 1);
match events_3[0] {
let events_3 = nodes[0].node.get_and_clear_pending_events();
assert_eq!(events_3.len(), 1);
match events_3[0] {
- Event::PaymentSent { ref payment_preimage } => {
+ Event::PaymentSent { ref payment_preimage
, ref payment_hash
} => {
assert_eq!(*payment_preimage, payment_preimage_1);
assert_eq!(*payment_preimage, payment_preimage_1);
+ assert_eq!(*payment_hash, payment_hash_1);
},
_ => panic!("Unexpected event"),
}
},
_ => panic!("Unexpected event"),
}
@@
-436,8
+437,9
@@
fn do_test_monitor_temporary_update_fail(disconnect_count: usize) {
let events_3 = nodes[0].node.get_and_clear_pending_events();
assert_eq!(events_3.len(), 1);
match events_3[0] {
let events_3 = nodes[0].node.get_and_clear_pending_events();
assert_eq!(events_3.len(), 1);
match events_3[0] {
- Event::PaymentSent { ref payment_preimage } => {
+ Event::PaymentSent { ref payment_preimage
, ref payment_hash
} => {
assert_eq!(*payment_preimage, payment_preimage_1);
assert_eq!(*payment_preimage, payment_preimage_1);
+ assert_eq!(*payment_hash, payment_hash_1);
},
_ => panic!("Unexpected event"),
}
},
_ => panic!("Unexpected event"),
}
@@
-1362,7
+1364,7
@@
fn claim_while_disconnected_monitor_update_fail() {
let logger = test_utils::TestLogger::new();
// Forward a payment for B to claim
let logger = test_utils::TestLogger::new();
// Forward a payment for B to claim
- let (payment_preimage_1,
_
, _) = route_payment(&nodes[0], &[&nodes[1]], 1000000);
+ let (payment_preimage_1,
payment_hash_1
, _) = route_payment(&nodes[0], &[&nodes[1]], 1000000);
nodes[0].node.peer_disconnected(&nodes[1].node.get_our_node_id(), false);
nodes[1].node.peer_disconnected(&nodes[0].node.get_our_node_id(), false);
nodes[0].node.peer_disconnected(&nodes[1].node.get_our_node_id(), false);
nodes[1].node.peer_disconnected(&nodes[0].node.get_our_node_id(), false);
@@
-1463,8
+1465,9
@@
fn claim_while_disconnected_monitor_update_fail() {
let events = nodes[0].node.get_and_clear_pending_events();
assert_eq!(events.len(), 1);
match events[0] {
let events = nodes[0].node.get_and_clear_pending_events();
assert_eq!(events.len(), 1);
match events[0] {
- Event::PaymentSent { ref payment_preimage } => {
+ Event::PaymentSent { ref payment_preimage
, ref payment_hash
} => {
assert_eq!(*payment_preimage, payment_preimage_1);
assert_eq!(*payment_preimage, payment_preimage_1);
+ assert_eq!(*payment_hash, payment_hash_1);
},
_ => panic!("Unexpected event"),
}
},
_ => panic!("Unexpected event"),
}
@@
-1845,7
+1848,7
@@
fn monitor_update_claim_fail_no_response() {
let logger = test_utils::TestLogger::new();
// Forward a payment for B to claim
let logger = test_utils::TestLogger::new();
// Forward a payment for B to claim
- let (payment_preimage_1,
_
, _) = route_payment(&nodes[0], &[&nodes[1]], 1000000);
+ let (payment_preimage_1,
payment_hash_1
, _) = route_payment(&nodes[0], &[&nodes[1]], 1000000);
// Now start forwarding a second payment, skipping the last RAA so B is in AwaitingRAA
let (payment_preimage_2, payment_hash_2, payment_secret_2) = get_payment_preimage_hash!(nodes[1]);
// Now start forwarding a second payment, skipping the last RAA so B is in AwaitingRAA
let (payment_preimage_2, payment_hash_2, payment_secret_2) = get_payment_preimage_hash!(nodes[1]);
@@
-1887,8
+1890,9
@@
fn monitor_update_claim_fail_no_response() {
let events = nodes[0].node.get_and_clear_pending_events();
assert_eq!(events.len(), 1);
match events[0] {
let events = nodes[0].node.get_and_clear_pending_events();
assert_eq!(events.len(), 1);
match events[0] {
- Event::PaymentSent { ref payment_preimage } => {
+ Event::PaymentSent { ref payment_preimage
, ref payment_hash
} => {
assert_eq!(*payment_preimage, payment_preimage_1);
assert_eq!(*payment_preimage, payment_preimage_1);
+ assert_eq!(*payment_hash, payment_hash_1);
},
_ => panic!("Unexpected event"),
}
},
_ => panic!("Unexpected event"),
}
diff --git
a/lightning/src/ln/channelmanager.rs
b/lightning/src/ln/channelmanager.rs
index c06fe0075ec4188768e4e390fa717b8ccd80e108..43fd8f1de7babbacf1aa10af222d8cf31b2ce2db 100644
(file)
--- a/
lightning/src/ln/channelmanager.rs
+++ b/
lightning/src/ln/channelmanager.rs
@@
-3161,8
+3161,12
@@
impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
sessions.remove(&session_priv_bytes)
} else { false };
if found_payment {
sessions.remove(&session_priv_bytes)
} else { false };
if found_payment {
+ let payment_hash = PaymentHash(Sha256::hash(&payment_preimage.0).into_inner());
self.pending_events.lock().unwrap().push(
self.pending_events.lock().unwrap().push(
- events::Event::PaymentSent { payment_preimage }
+ events::Event::PaymentSent {
+ payment_preimage,
+ payment_hash: payment_hash
+ }
);
} else {
log_trace!(self.logger, "Received duplicative fulfill for HTLC with payment_preimage {}", log_bytes!(payment_preimage.0));
);
} else {
log_trace!(self.logger, "Received duplicative fulfill for HTLC with payment_preimage {}", log_bytes!(payment_preimage.0));
@@
-5772,8
+5776,9
@@
mod tests {
// further events will be generated for subsequence path successes.
let events = nodes[0].node.get_and_clear_pending_events();
match events[0] {
// further events will be generated for subsequence path successes.
let events = nodes[0].node.get_and_clear_pending_events();
match events[0] {
- Event::PaymentSent { payment_preimage: ref preimage } => {
+ Event::PaymentSent { payment_preimage: ref preimage
, payment_hash: ref hash
} => {
assert_eq!(payment_preimage, *preimage);
assert_eq!(payment_preimage, *preimage);
+ assert_eq!(our_payment_hash, *hash);
},
_ => panic!("Unexpected event"),
}
},
_ => panic!("Unexpected event"),
}
diff --git
a/lightning/src/ln/functional_test_utils.rs
b/lightning/src/ln/functional_test_utils.rs
index dd1fedd9733c30b99002771ba7dffd9ccb426cbf..fe35fe65b82121a45438386ff54e12a830439540 100644
(file)
--- a/
lightning/src/ln/functional_test_utils.rs
+++ b/
lightning/src/ln/functional_test_utils.rs
@@
-1011,10
+1011,12
@@
macro_rules! expect_payment_received {
macro_rules! expect_payment_sent {
($node: expr, $expected_payment_preimage: expr) => {
let events = $node.node.get_and_clear_pending_events();
macro_rules! expect_payment_sent {
($node: expr, $expected_payment_preimage: expr) => {
let events = $node.node.get_and_clear_pending_events();
+ let expected_payment_hash = PaymentHash(Sha256::hash(&$expected_payment_preimage.0).into_inner());
assert_eq!(events.len(), 1);
match events[0] {
assert_eq!(events.len(), 1);
match events[0] {
- Event::PaymentSent { ref payment_preimage } => {
+ Event::PaymentSent { ref payment_preimage
, ref payment_hash
} => {
assert_eq!($expected_payment_preimage, *payment_preimage);
assert_eq!($expected_payment_preimage, *payment_preimage);
+ assert_eq!(expected_payment_hash, *payment_hash);
},
_ => panic!("Unexpected event"),
}
},
_ => panic!("Unexpected event"),
}
diff --git
a/lightning/src/ln/functional_tests.rs
b/lightning/src/ln/functional_tests.rs
index 85eef456c21103354b9dd90a1dc16947555bc9c6..08dc81e0206442c1b9263458ee6c3e3f54a3e55e 100644
(file)
--- a/
lightning/src/ln/functional_tests.rs
+++ b/
lightning/src/ln/functional_tests.rs
@@
-2481,8
+2481,8
@@
fn test_htlc_on_chain_success() {
send_payment(&nodes[0], &vec!(&nodes[1], &nodes[2])[..], 8000000);
send_payment(&nodes[0], &vec!(&nodes[1], &nodes[2])[..], 8000000);
send_payment(&nodes[0], &vec!(&nodes[1], &nodes[2])[..], 8000000);
send_payment(&nodes[0], &vec!(&nodes[1], &nodes[2])[..], 8000000);
- let (our_payment_preimage,
_payment_hash
, _payment_secret) = route_payment(&nodes[0], &vec!(&nodes[1], &nodes[2]), 3000000);
- let (our_payment_preimage_2,
_
payment_hash_2, _payment_secret_2) = route_payment(&nodes[0], &vec!(&nodes[1], &nodes[2]), 3000000);
+ let (our_payment_preimage,
payment_hash_1
, _payment_secret) = route_payment(&nodes[0], &vec!(&nodes[1], &nodes[2]), 3000000);
+ let (our_payment_preimage_2, payment_hash_2, _payment_secret_2) = route_payment(&nodes[0], &vec!(&nodes[1], &nodes[2]), 3000000);
// Broadcast legit commitment tx from C on B's chain
// Broadcast HTLC Success transaction by C on received output from C's commitment tx on B's chain
// Broadcast legit commitment tx from C on B's chain
// Broadcast HTLC Success transaction by C on received output from C's commitment tx on B's chain
@@
-2636,12
+2636,13
@@
fn test_htlc_on_chain_success() {
let mut first_claimed = false;
for event in events {
match event {
let mut first_claimed = false;
for event in events {
match event {
- Event::PaymentSent { payment_preimage } => {
- if payment_preimage == our_payment_preimage {
+ Event::PaymentSent { payment_preimage
, payment_hash
} => {
+ if payment_preimage == our_payment_preimage
&& payment_hash == payment_hash_1
{
assert!(!first_claimed);
first_claimed = true;
} else {
assert_eq!(payment_preimage, our_payment_preimage_2);
assert!(!first_claimed);
first_claimed = true;
} else {
assert_eq!(payment_preimage, our_payment_preimage_2);
+ assert_eq!(payment_hash, payment_hash_2);
}
},
_ => panic!("Unexpected event"),
}
},
_ => panic!("Unexpected event"),
@@
-3299,7
+3300,7
@@
fn test_simple_peer_disconnect() {
nodes[1].node.peer_disconnected(&nodes[0].node.get_our_node_id(), false);
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
nodes[1].node.peer_disconnected(&nodes[0].node.get_our_node_id(), false);
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
- let
payment_preimage_3 = route_payment(&nodes[0], &vec!(&nodes[1], &nodes[2])[..], 1000000).0
;
+ let
(payment_preimage_3, payment_hash_3, _) = route_payment(&nodes[0], &vec!(&nodes[1], &nodes[2])[..], 1000000)
;
let payment_preimage_4 = route_payment(&nodes[0], &vec!(&nodes[1], &nodes[2])[..], 1000000).0;
let payment_hash_5 = route_payment(&nodes[0], &vec!(&nodes[1], &nodes[2])[..], 1000000).1;
let payment_hash_6 = route_payment(&nodes[0], &vec!(&nodes[1], &nodes[2])[..], 1000000).1;
let payment_preimage_4 = route_payment(&nodes[0], &vec!(&nodes[1], &nodes[2])[..], 1000000).0;
let payment_hash_5 = route_payment(&nodes[0], &vec!(&nodes[1], &nodes[2])[..], 1000000).1;
let payment_hash_6 = route_payment(&nodes[0], &vec!(&nodes[1], &nodes[2])[..], 1000000).1;
@@
-3315,8
+3316,9
@@
fn test_simple_peer_disconnect() {
let events = nodes[0].node.get_and_clear_pending_events();
assert_eq!(events.len(), 2);
match events[0] {
let events = nodes[0].node.get_and_clear_pending_events();
assert_eq!(events.len(), 2);
match events[0] {
- Event::PaymentSent { payment_preimage } => {
+ Event::PaymentSent { payment_preimage
, payment_hash
} => {
assert_eq!(payment_preimage, payment_preimage_3);
assert_eq!(payment_preimage, payment_preimage_3);
+ assert_eq!(payment_hash, payment_hash_3);
},
_ => panic!("Unexpected event"),
}
},
_ => panic!("Unexpected event"),
}
@@
-3483,8
+3485,9
@@
fn do_test_drop_messages_peer_disconnect(messages_delivered: u8, simulate_broken
let events_4 = nodes[0].node.get_and_clear_pending_events();
assert_eq!(events_4.len(), 1);
match events_4[0] {
let events_4 = nodes[0].node.get_and_clear_pending_events();
assert_eq!(events_4.len(), 1);
match events_4[0] {
- Event::PaymentSent { ref payment_preimage } => {
+ Event::PaymentSent { ref payment_preimage
, ref payment_hash
} => {
assert_eq!(payment_preimage_1, *payment_preimage);
assert_eq!(payment_preimage_1, *payment_preimage);
+ assert_eq!(payment_hash_1, *payment_hash);
},
_ => panic!("Unexpected event"),
}
},
_ => panic!("Unexpected event"),
}
@@
-3523,8
+3526,9
@@
fn do_test_drop_messages_peer_disconnect(messages_delivered: u8, simulate_broken
let events_4 = nodes[0].node.get_and_clear_pending_events();
assert_eq!(events_4.len(), 1);
match events_4[0] {
let events_4 = nodes[0].node.get_and_clear_pending_events();
assert_eq!(events_4.len(), 1);
match events_4[0] {
- Event::PaymentSent { ref payment_preimage } => {
+ Event::PaymentSent { ref payment_preimage
, ref payment_hash
} => {
assert_eq!(payment_preimage_1, *payment_preimage);
assert_eq!(payment_preimage_1, *payment_preimage);
+ assert_eq!(payment_hash_1, *payment_hash);
},
_ => panic!("Unexpected event"),
}
},
_ => panic!("Unexpected event"),
}
@@
-3729,7
+3733,7
@@
fn test_drop_messages_peer_disconnect_dual_htlc() {
create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known());
let logger = test_utils::TestLogger::new();
create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known());
let logger = test_utils::TestLogger::new();
- let (payment_preimage_1,
_
, _) = route_payment(&nodes[0], &[&nodes[1]], 1000000);
+ let (payment_preimage_1,
payment_hash_1
, _) = route_payment(&nodes[0], &[&nodes[1]], 1000000);
// Now try to send a second payment which will fail to send
let (payment_preimage_2, payment_hash_2, payment_secret_2) = get_payment_preimage_hash!(nodes[1]);
// Now try to send a second payment which will fail to send
let (payment_preimage_2, payment_hash_2, payment_secret_2) = get_payment_preimage_hash!(nodes[1]);
@@
-3763,8
+3767,9
@@
fn test_drop_messages_peer_disconnect_dual_htlc() {
let events_3 = nodes[0].node.get_and_clear_pending_events();
assert_eq!(events_3.len(), 1);
match events_3[0] {
let events_3 = nodes[0].node.get_and_clear_pending_events();
assert_eq!(events_3.len(), 1);
match events_3[0] {
- Event::PaymentSent { ref payment_preimage } => {
+ Event::PaymentSent { ref payment_preimage
, ref payment_hash
} => {
assert_eq!(*payment_preimage, payment_preimage_1);
assert_eq!(*payment_preimage, payment_preimage_1);
+ assert_eq!(*payment_hash, payment_hash_1);
},
_ => panic!("Unexpected event"),
}
},
_ => panic!("Unexpected event"),
}
@@
-5150,8
+5155,9
@@
fn test_duplicate_payment_hash_one_failure_one_success() {
let events = nodes[0].node.get_and_clear_pending_events();
match events[0] {
let events = nodes[0].node.get_and_clear_pending_events();
match events[0] {
- Event::PaymentSent { ref payment_preimage } => {
+ Event::PaymentSent { ref payment_preimage
, ref payment_hash
} => {
assert_eq!(*payment_preimage, our_payment_preimage);
assert_eq!(*payment_preimage, our_payment_preimage);
+ assert_eq!(*payment_hash, duplicate_payment_hash);
}
_ => panic!("Unexpected event"),
}
}
_ => panic!("Unexpected event"),
}
@@
-5631,7
+5637,7
@@
fn do_htlc_claim_local_commitment_only(use_dust: bool) {
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
let chan = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known());
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
let chan = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known());
- let (our_payment_preimage,
_
, _) = route_payment(&nodes[0], &[&nodes[1]], if use_dust { 50000 } else { 3000000 });
+ let (our_payment_preimage,
our_payment_hash
, _) = route_payment(&nodes[0], &[&nodes[1]], if use_dust { 50000 } else { 3000000 });
// Claim the payment, but don't deliver A's commitment_signed, resulting in the HTLC only being
// present in B's local commitment transaction, but none of A's commitment transactions.
// Claim the payment, but don't deliver A's commitment_signed, resulting in the HTLC only being
// present in B's local commitment transaction, but none of A's commitment transactions.
@@
-5643,8
+5649,9
@@
fn do_htlc_claim_local_commitment_only(use_dust: bool) {
let events = nodes[0].node.get_and_clear_pending_events();
assert_eq!(events.len(), 1);
match events[0] {
let events = nodes[0].node.get_and_clear_pending_events();
assert_eq!(events.len(), 1);
match events[0] {
- Event::PaymentSent { payment_preimage } => {
+ Event::PaymentSent { payment_preimage
, payment_hash
} => {
assert_eq!(payment_preimage, our_payment_preimage);
assert_eq!(payment_preimage, our_payment_preimage);
+ assert_eq!(payment_hash, our_payment_hash);
},
_ => panic!("Unexpected event"),
}
},
_ => panic!("Unexpected event"),
}
@@
-6075,8
+6082,9
@@
fn test_free_and_fail_holding_cell_htlcs() {
let events = nodes[0].node.get_and_clear_pending_events();
assert_eq!(events.len(), 1);
match events[0] {
let events = nodes[0].node.get_and_clear_pending_events();
assert_eq!(events.len(), 1);
match events[0] {
- Event::PaymentSent { ref payment_preimage } => {
+ Event::PaymentSent { ref payment_preimage
, ref payment_hash
} => {
assert_eq!(*payment_preimage, payment_preimage_1);
assert_eq!(*payment_preimage, payment_preimage_1);
+ assert_eq!(*payment_hash, payment_hash_1);
}
_ => panic!("Unexpected event"),
}
}
_ => panic!("Unexpected event"),
}
diff --git
a/lightning/src/ln/reorg_tests.rs
b/lightning/src/ln/reorg_tests.rs
index 0db30b8178cdc6bb8dc6113168d93d56ecb7f762..494561733336be5a44cc76fed49393a873bc56b3 100644
(file)
--- a/
lightning/src/ln/reorg_tests.rs
+++ b/
lightning/src/ln/reorg_tests.rs
@@
-12,6
+12,7
@@
use chain::channelmonitor::{ANTI_REORG_DELAY, ChannelMonitor};
use chain::transaction::OutPoint;
use chain::{Confirm, Watch};
use chain::channelmonitor::{ANTI_REORG_DELAY, ChannelMonitor};
use chain::transaction::OutPoint;
use chain::{Confirm, Watch};
+use ln::PaymentHash;
use ln::channelmanager::{ChannelManager, ChannelManagerReadArgs};
use ln::features::InitFeatures;
use ln::msgs::{ChannelMessageHandler, ErrorAction};
use ln::channelmanager::{ChannelManager, ChannelManagerReadArgs};
use ln::features::InitFeatures;
use ln::msgs::{ChannelMessageHandler, ErrorAction};
@@
-24,6
+25,8
@@
use util::ser::{ReadableArgs, Writeable};
use bitcoin::blockdata::block::{Block, BlockHeader};
use bitcoin::blockdata::script::Builder;
use bitcoin::blockdata::opcodes;
use bitcoin::blockdata::block::{Block, BlockHeader};
use bitcoin::blockdata::script::Builder;
use bitcoin::blockdata::opcodes;
+use bitcoin::hashes::sha256::Hash as Sha256;
+use bitcoin::hashes::Hash;
use bitcoin::hash_types::BlockHash;
use bitcoin::secp256k1::Secp256k1;
use bitcoin::hash_types::BlockHash;
use bitcoin::secp256k1::Secp256k1;
diff --git
a/lightning/src/ln/shutdown_tests.rs
b/lightning/src/ln/shutdown_tests.rs
index 26d39fbad9df08a4d54b507a9ad4126dbdd9db8c..5da01d3a095862df72fa82984f59cce681b8eddd 100644
(file)
--- a/
lightning/src/ln/shutdown_tests.rs
+++ b/
lightning/src/ln/shutdown_tests.rs
@@
-80,7
+80,7
@@
fn updates_shutdown_wait() {
let chan_2 = create_announced_chan_between_nodes(&nodes, 1, 2, InitFeatures::known(), InitFeatures::known());
let logger = test_utils::TestLogger::new();
let chan_2 = create_announced_chan_between_nodes(&nodes, 1, 2, InitFeatures::known(), InitFeatures::known());
let logger = test_utils::TestLogger::new();
- let (our_payment_preimage,
_
, _) = route_payment(&nodes[0], &[&nodes[1], &nodes[2]], 100000);
+ let (our_payment_preimage,
our_payment_hash
, _) = route_payment(&nodes[0], &[&nodes[1], &nodes[2]], 100000);
nodes[0].node.close_channel(&chan_1.2).unwrap();
let node_0_shutdown = get_event_msg!(nodes[0], MessageSendEvent::SendShutdown, nodes[1].node.get_our_node_id());
nodes[0].node.close_channel(&chan_1.2).unwrap();
let node_0_shutdown = get_event_msg!(nodes[0], MessageSendEvent::SendShutdown, nodes[1].node.get_our_node_id());
@@
-125,8
+125,9
@@
fn updates_shutdown_wait() {
let events = nodes[0].node.get_and_clear_pending_events();
assert_eq!(events.len(), 1);
match events[0] {
let events = nodes[0].node.get_and_clear_pending_events();
assert_eq!(events.len(), 1);
match events[0] {
- Event::PaymentSent { ref payment_preimage } => {
+ Event::PaymentSent { ref payment_preimage
, ref payment_hash
} => {
assert_eq!(our_payment_preimage, *payment_preimage);
assert_eq!(our_payment_preimage, *payment_preimage);
+ assert_eq!(our_payment_hash, *payment_hash);
},
_ => panic!("Unexpected event"),
}
},
_ => panic!("Unexpected event"),
}
@@
-233,7
+234,7
@@
fn do_test_shutdown_rebroadcast(recv_count: u8) {
let chan_1 = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known());
let chan_2 = create_announced_chan_between_nodes(&nodes, 1, 2, InitFeatures::known(), InitFeatures::known());
let chan_1 = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known());
let chan_2 = create_announced_chan_between_nodes(&nodes, 1, 2, InitFeatures::known(), InitFeatures::known());
- let (our_payment_preimage,
_
, _) = route_payment(&nodes[0], &[&nodes[1], &nodes[2]], 100000);
+ let (our_payment_preimage,
our_payment_hash
, _) = route_payment(&nodes[0], &[&nodes[1], &nodes[2]], 100000);
nodes[1].node.close_channel(&chan_1.2).unwrap();
let node_1_shutdown = get_event_msg!(nodes[1], MessageSendEvent::SendShutdown, nodes[0].node.get_our_node_id());
nodes[1].node.close_channel(&chan_1.2).unwrap();
let node_1_shutdown = get_event_msg!(nodes[1], MessageSendEvent::SendShutdown, nodes[0].node.get_our_node_id());
@@
-298,8
+299,9
@@
fn do_test_shutdown_rebroadcast(recv_count: u8) {
let events = nodes[0].node.get_and_clear_pending_events();
assert_eq!(events.len(), 1);
match events[0] {
let events = nodes[0].node.get_and_clear_pending_events();
assert_eq!(events.len(), 1);
match events[0] {
- Event::PaymentSent { ref payment_preimage } => {
+ Event::PaymentSent { ref payment_preimage
, ref payment_hash
} => {
assert_eq!(our_payment_preimage, *payment_preimage);
assert_eq!(our_payment_preimage, *payment_preimage);
+ assert_eq!(our_payment_hash, *payment_hash);
},
_ => panic!("Unexpected event"),
}
},
_ => panic!("Unexpected event"),
}
diff --git
a/lightning/src/util/events.rs
b/lightning/src/util/events.rs
index df4d9037307c30cb20e32c9b36a07ff6c10cd4b5..ad82ca6cab9017051a64ff5bbb66bf8e56ae1537 100644
(file)
--- a/
lightning/src/util/events.rs
+++ b/
lightning/src/util/events.rs
@@
-21,7
+21,8
@@
use routing::network_graph::NetworkUpdate;
use util::ser::{Writeable, Writer, MaybeReadable, Readable, VecReadWrapper, VecWriteWrapper};
use bitcoin::blockdata::script::Script;
use util::ser::{Writeable, Writer, MaybeReadable, Readable, VecReadWrapper, VecWriteWrapper};
use bitcoin::blockdata::script::Script;
-
+use bitcoin::hashes::Hash;
+use bitcoin::hashes::sha256::Hash as Sha256;
use bitcoin::secp256k1::key::PublicKey;
use io;
use bitcoin::secp256k1::key::PublicKey;
use io;
@@
-122,6
+123,10
@@
pub enum Event {
/// Note that this serves as a payment receipt, if you wish to have such a thing, you must
/// store it somehow!
payment_preimage: PaymentPreimage,
/// Note that this serves as a payment receipt, if you wish to have such a thing, you must
/// store it somehow!
payment_preimage: PaymentPreimage,
+ /// The hash which was given to [`ChannelManager::send_payment`].
+ ///
+ /// [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
+ payment_hash: PaymentHash,
},
/// Indicates an outbound payment we made failed. Probably some intermediary node dropped
/// something. You may wish to retry with a different route.
},
/// Indicates an outbound payment we made failed. Probably some intermediary node dropped
/// something. You may wish to retry with a different route.
@@
-222,10
+227,11
@@
impl Writeable for Event {
(8, payment_preimage, option),
});
},
(8, payment_preimage, option),
});
},
- &Event::PaymentSent { ref payment_preimage
} => {
+ &Event::PaymentSent { ref payment_preimage
, ref payment_hash
} => {
2u8.write(writer)?;
write_tlv_fields!(writer, {
(0, payment_preimage, required),
2u8.write(writer)?;
write_tlv_fields!(writer, {
(0, payment_preimage, required),
+ (1, payment_hash, required),
});
},
&Event::PaymentFailed { ref payment_hash, ref rejected_by_dest, ref network_update, ref all_paths_failed,
});
},
&Event::PaymentFailed { ref payment_hash, ref rejected_by_dest, ref network_update, ref all_paths_failed,
@@
-309,11
+315,17
@@
impl MaybeReadable for Event {
2u8 => {
let f = || {
let mut payment_preimage = PaymentPreimage([0; 32]);
2u8 => {
let f = || {
let mut payment_preimage = PaymentPreimage([0; 32]);
+ let mut payment_hash = None;
read_tlv_fields!(reader, {
(0, payment_preimage, required),
read_tlv_fields!(reader, {
(0, payment_preimage, required),
+ (1, payment_hash, option),
});
});
+ if payment_hash.is_none() {
+ payment_hash = Some(PaymentHash(Sha256::hash(&payment_preimage.0[..]).into_inner()));
+ }
Ok(Some(Event::PaymentSent {
payment_preimage,
Ok(Some(Event::PaymentSent {
payment_preimage,
+ payment_hash: payment_hash.unwrap(),
}))
};
f()
}))
};
f()