X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Futil%2Fevents.rs;h=3032aec75820d2d602a9ebf6d619ac7f13bf9cc1;hb=64b9e83dfed1979adecab83f6efcf10f95ecf987;hp=a06c7f1e3c0b75ca7bba3562407afb22f5cd158a;hpb=8d8ee55463612dc5e1661657d7eb2b1a1e8271cc;p=rust-lightning diff --git a/lightning/src/util/events.rs b/lightning/src/util/events.rs index a06c7f1e..3032aec7 100644 --- a/lightning/src/util/events.rs +++ b/lightning/src/util/events.rs @@ -319,7 +319,8 @@ pub enum Event { /// The script which should be used in the transaction output. output_script: Script, /// The `user_channel_id` value passed in to [`ChannelManager::create_channel`], or a - /// random value for an inbound channel. + /// random value for an inbound channel. This may be zero for objects serialized with LDK + /// versions prior to 0.0.113. /// /// [`ChannelManager::create_channel`]: crate::ln::channelmanager::ChannelManager::create_channel user_channel_id: u128, @@ -341,6 +342,13 @@ pub enum Event { /// [`ChannelManager::claim_funds`]: crate::ln::channelmanager::ChannelManager::claim_funds /// [`ChannelManager::fail_htlc_backwards`]: crate::ln::channelmanager::ChannelManager::fail_htlc_backwards PaymentReceived { + /// The node that received the payment. + /// This is useful to identify payments which were received via [phantom node payments]. + /// This field will always be filled in when the event was generated by LDK versions + /// 0.0.113 and above. + /// + /// [phantom node payments]: crate::chain::keysinterface::PhantomKeysManager + receiver_node_id: Option, /// The hash for which the preimage should be handed to the ChannelManager. Note that LDK will /// not stop you from registering duplicate payment hashes for inbound payments. payment_hash: PaymentHash, @@ -365,6 +373,13 @@ pub enum Event { /// /// [`ChannelManager::claim_funds`]: crate::ln::channelmanager::ChannelManager::claim_funds PaymentClaimed { + /// The node that received the payment. + /// This is useful to identify payments which were received via [phantom node payments]. + /// This field will always be filled in when the event was generated by LDK versions + /// 0.0.113 and above. + /// + /// [phantom node payments]: crate::chain::keysinterface::PhantomKeysManager + receiver_node_id: Option, /// The payment hash of the claimed payment. Note that LDK will not stop you from /// registering duplicate payment hashes for inbound payments. payment_hash: PaymentHash, @@ -632,8 +647,9 @@ pub enum Event { /// The `user_channel_id` value passed in to [`ChannelManager::create_channel`] for outbound /// channels, or to [`ChannelManager::accept_inbound_channel`] for inbound channels if /// [`UserConfig::manually_accept_inbound_channels`] config flag is set to true. Otherwise - /// `user_channel_id` will be randomized for an inbound channel. - /// This will always be zero for objects serialized with LDK versions prior to 0.0.102. + /// `user_channel_id` will be randomized for inbound channels. + /// This may be zero for inbound channels serialized prior to 0.0.113 and will always be + /// zero for objects serialized with LDK versions prior to 0.0.102. /// /// [`ChannelManager::create_channel`]: crate::ln::channelmanager::ChannelManager::create_channel /// [`ChannelManager::accept_inbound_channel`]: crate::ln::channelmanager::ChannelManager::accept_inbound_channel @@ -737,7 +753,7 @@ impl Writeable for Event { // We never write out FundingGenerationReady events as, upon disconnection, peers // drop any channels which have not yet exchanged funding_signed. }, - &Event::PaymentReceived { ref payment_hash, ref amount_msat, ref purpose } => { + &Event::PaymentReceived { ref payment_hash, ref amount_msat, ref purpose, ref receiver_node_id } => { 1u8.write(writer)?; let mut payment_secret = None; let payment_preimage; @@ -752,6 +768,7 @@ impl Writeable for Event { } write_tlv_fields!(writer, { (0, payment_hash, required), + (1, receiver_node_id, option), (2, payment_secret, option), (4, amount_msat, required), (6, 0u64, required), // user_payment_id required for compatibility with 0.0.103 and earlier @@ -852,10 +869,11 @@ impl Writeable for Event { // We never write the OpenChannelRequest events as, upon disconnection, peers // drop any channels which have not yet exchanged funding_signed. }, - &Event::PaymentClaimed { ref payment_hash, ref amount_msat, ref purpose } => { + &Event::PaymentClaimed { ref payment_hash, ref amount_msat, ref purpose, ref receiver_node_id } => { 19u8.write(writer)?; write_tlv_fields!(writer, { (0, payment_hash, required), + (1, receiver_node_id, option), (2, purpose, required), (4, amount_msat, required), }); @@ -921,9 +939,11 @@ impl MaybeReadable for Event { let mut payment_preimage = None; let mut payment_secret = None; let mut amount_msat = 0; + let mut receiver_node_id = None; let mut _user_payment_id = None::; // For compatibility with 0.0.103 and earlier read_tlv_fields!(reader, { (0, payment_hash, required), + (1, receiver_node_id, option), (2, payment_secret, option), (4, amount_msat, required), (6, _user_payment_id, option), @@ -938,6 +958,7 @@ impl MaybeReadable for Event { None => return Err(msgs::DecodeError::InvalidValue), }; Ok(Some(Event::PaymentReceived { + receiver_node_id, payment_hash, amount_msat, purpose, @@ -1115,13 +1136,16 @@ impl MaybeReadable for Event { let mut payment_hash = PaymentHash([0; 32]); let mut purpose = None; let mut amount_msat = 0; + let mut receiver_node_id = None; read_tlv_fields!(reader, { (0, payment_hash, required), + (1, receiver_node_id, option), (2, purpose, ignorable), (4, amount_msat, required), }); if purpose.is_none() { return Ok(None); } Ok(Some(Event::PaymentClaimed { + receiver_node_id, payment_hash, purpose: purpose.unwrap(), amount_msat,