projects
/
rust-lightning
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge pull request #1219 from TheBlueMatt/2021-12-0.0.104-bindings
[rust-lightning]
/
lightning-invoice
/
src
/
utils.rs
diff --git
a/lightning-invoice/src/utils.rs
b/lightning-invoice/src/utils.rs
index e47141161b533fb3008ddd10c2a18e8bfb139f23..53fdc13f2fc2255f7102a3225252f4139e887efc 100644
(file)
--- a/
lightning-invoice/src/utils.rs
+++ b/
lightning-invoice/src/utils.rs
@@
-1,6
+1,6
@@
//! Convenient utilities to create an invoice.
//! Convenient utilities to create an invoice.
-use {Currency, DEFAULT_EXPIRY_TIME, Invoice, InvoiceBuilder, SignOrCreationError, RawInvoice};
+use {C
reationError, C
urrency, DEFAULT_EXPIRY_TIME, Invoice, InvoiceBuilder, SignOrCreationError, RawInvoice};
use payment::{Payer, Router};
use bech32::ToBase32;
use payment::{Payer, Router};
use bech32::ToBase32;
@@
-8,10
+8,10
@@
use bitcoin_hashes::Hash;
use lightning::chain;
use lightning::chain::chaininterface::{BroadcasterInterface, FeeEstimator};
use lightning::chain::keysinterface::{Sign, KeysInterface};
use lightning::chain;
use lightning::chain::chaininterface::{BroadcasterInterface, FeeEstimator};
use lightning::chain::keysinterface::{Sign, KeysInterface};
-use lightning::ln::{PaymentHash, PaymentSecret};
+use lightning::ln::{PaymentHash, Payment
Preimage, Payment
Secret};
use lightning::ln::channelmanager::{ChannelDetails, ChannelManager, PaymentId, PaymentSendFailure, MIN_FINAL_CLTV_EXPIRY};
use lightning::ln::msgs::LightningError;
use lightning::ln::channelmanager::{ChannelDetails, ChannelManager, PaymentId, PaymentSendFailure, MIN_FINAL_CLTV_EXPIRY};
use lightning::ln::msgs::LightningError;
-use lightning::routing;
+use lightning::routing
::scoring::Score
;
use lightning::routing::network_graph::{NetworkGraph, RoutingFees};
use lightning::routing::router::{Route, RouteHint, RouteHintHop, RouteParameters, find_route};
use lightning::util::logger::Logger;
use lightning::routing::network_graph::{NetworkGraph, RoutingFees};
use lightning::routing::router::{Route, RouteHint, RouteHintHop, RouteParameters, find_route};
use lightning::util::logger::Logger;
@@
-60,11
+60,11
@@
where
}]));
}
}]));
}
+ // `create_inbound_payment` only returns an error if the amount is greater than the total bitcoin
+ // supply.
let (payment_hash, payment_secret) = channelmanager.create_inbound_payment(
let (payment_hash, payment_secret) = channelmanager.create_inbound_payment(
- amt_msat,
- DEFAULT_EXPIRY_TIME.try_into().unwrap(),
- 0,
- );
+ amt_msat, DEFAULT_EXPIRY_TIME.try_into().unwrap())
+ .map_err(|()| SignOrCreationError::CreationError(CreationError::InvalidAmount))?;
let our_node_pubkey = channelmanager.get_our_node_id();
let mut invoice = InvoiceBuilder::new(network)
.description(description)
let our_node_pubkey = channelmanager.get_our_node_id();
let mut invoice = InvoiceBuilder::new(network)
.description(description)
@@
-97,23
+97,23
@@
where
}
/// A [`Router`] implemented using [`find_route`].
}
/// A [`Router`] implemented using [`find_route`].
-pub struct DefaultRouter<G
, L: Deref> where G: Deref<Target = NetworkGraph>,
L::Target: Logger {
+pub struct DefaultRouter<G
: Deref<Target = NetworkGraph>, L: Deref> where
L::Target: Logger {
network_graph: G,
logger: L,
}
network_graph: G,
logger: L,
}
-impl<G
, L: Deref> DefaultRouter<G, L> where G: Deref<Target = NetworkGraph>,
L::Target: Logger {
+impl<G
: Deref<Target = NetworkGraph>, L: Deref> DefaultRouter<G, L> where
L::Target: Logger {
/// Creates a new router using the given [`NetworkGraph`] and [`Logger`].
pub fn new(network_graph: G, logger: L) -> Self {
Self { network_graph, logger }
}
}
/// Creates a new router using the given [`NetworkGraph`] and [`Logger`].
pub fn new(network_graph: G, logger: L) -> Self {
Self { network_graph, logger }
}
}
-impl<G
, L: Deref, S: routing::
Score> Router<S> for DefaultRouter<G, L>
-where
G: Deref<Target = NetworkGraph>,
L::Target: Logger {
+impl<G
: Deref<Target = NetworkGraph>, L: Deref, S:
Score> Router<S> for DefaultRouter<G, L>
+where L::Target: Logger {
fn find_route(
fn find_route(
- &self, payer: &PublicKey, params: &RouteParameters,
first_hops: Option<&[&ChannelDetails]>
,
- scorer: &S
+ &self, payer: &PublicKey, params: &RouteParameters,
_payment_hash: &PaymentHash
,
+
first_hops: Option<&[&ChannelDetails]>,
scorer: &S
) -> Result<Route, LightningError> {
find_route(payer, params, &*self.network_graph, first_hops, &*self.logger, scorer)
}
) -> Result<Route, LightningError> {
find_route(payer, params, &*self.network_graph, first_hops, &*self.logger, scorer)
}
@@
-141,11
+141,22
@@
where
self.send_payment(route, payment_hash, payment_secret)
}
self.send_payment(route, payment_hash, payment_secret)
}
+ fn send_spontaneous_payment(
+ &self, route: &Route, payment_preimage: PaymentPreimage,
+ ) -> Result<PaymentId, PaymentSendFailure> {
+ self.send_spontaneous_payment(route, Some(payment_preimage))
+ .map(|(_, payment_id)| payment_id)
+ }
+
fn retry_payment(
&self, route: &Route, payment_id: PaymentId
) -> Result<(), PaymentSendFailure> {
self.retry_payment(route, payment_id)
}
fn retry_payment(
&self, route: &Route, payment_id: PaymentId
) -> Result<(), PaymentSendFailure> {
self.retry_payment(route, payment_id)
}
+
+ fn abandon_payment(&self, payment_id: PaymentId) {
+ self.abandon_payment(payment_id)
+ }
}
#[cfg(test)]
}
#[cfg(test)]
@@
-157,7
+168,6
@@
mod test {
use lightning::ln::features::InitFeatures;
use lightning::ln::msgs::ChannelMessageHandler;
use lightning::routing::router::{Payee, RouteParameters, find_route};
use lightning::ln::features::InitFeatures;
use lightning::ln::msgs::ChannelMessageHandler;
use lightning::routing::router::{Payee, RouteParameters, find_route};
- use lightning::routing::scorer::Scorer;
use lightning::util::events::MessageSendEventsProvider;
use lightning::util::test_utils;
#[test]
use lightning::util::events::MessageSendEventsProvider;
use lightning::util::test_utils;
#[test]
@@
-172,7
+182,7
@@
mod test {
assert_eq!(invoice.min_final_cltv_expiry(), MIN_FINAL_CLTV_EXPIRY as u64);
assert_eq!(invoice.description(), InvoiceDescription::Direct(&Description("test".to_string())));
assert_eq!(invoice.min_final_cltv_expiry(), MIN_FINAL_CLTV_EXPIRY as u64);
assert_eq!(invoice.description(), InvoiceDescription::Direct(&Description("test".to_string())));
- let payee = Payee::
new
(invoice.recover_payee_pub_key())
+ let payee = Payee::
from_node_id
(invoice.recover_payee_pub_key())
.with_features(invoice.features().unwrap().clone())
.with_route_hints(invoice.route_hints());
let params = RouteParameters {
.with_features(invoice.features().unwrap().clone())
.with_route_hints(invoice.route_hints());
let params = RouteParameters {
@@
-181,9
+191,9
@@
mod test {
final_cltv_expiry_delta: invoice.min_final_cltv_expiry() as u32,
};
let first_hops = nodes[0].node.list_usable_channels();
final_cltv_expiry_delta: invoice.min_final_cltv_expiry() as u32,
};
let first_hops = nodes[0].node.list_usable_channels();
- let network_graph =
&nodes[0].net_graph_msg_handler
.network_graph;
+ let network_graph =
node_cfgs[0]
.network_graph;
let logger = test_utils::TestLogger::new();
let logger = test_utils::TestLogger::new();
- let scorer =
Scorer::new
(0);
+ let scorer =
test_utils::TestScorer::with_fixed_penalty
(0);
let route = find_route(
&nodes[0].node.get_our_node_id(), ¶ms, network_graph,
Some(&first_hops.iter().collect::<Vec<_>>()), &logger, &scorer,
let route = find_route(
&nodes[0].node.get_our_node_id(), ¶ms, network_graph,
Some(&first_hops.iter().collect::<Vec<_>>()), &logger, &scorer,