Skip to content

Commit 990e346

Browse files
authored
Merge pull request #1714 from TheBlueMatt/2022-09-111-bindings-discovered-cleanups
Small Cleanups Discovered during Bindings for 0.0.111
2 parents 3f3335a + b78359a commit 990e346

File tree

7 files changed

+31
-27
lines changed

7 files changed

+31
-27
lines changed

lightning-invoice/src/lib.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -745,7 +745,7 @@ impl SignedRawInvoice {
745745
}
746746

747747
/// The hash of the `RawInvoice` that was signed.
748-
pub fn hash(&self) -> &[u8; 32] {
748+
pub fn signable_hash(&self) -> &[u8; 32] {
749749
&self.hash
750750
}
751751

@@ -853,8 +853,8 @@ impl RawInvoice {
853853
hash
854854
}
855855

856-
/// Calculate the hash of the encoded `RawInvoice`
857-
pub fn hash(&self) -> [u8; 32] {
856+
/// Calculate the hash of the encoded `RawInvoice` which should be signed.
857+
pub fn signable_hash(&self) -> [u8; 32] {
858858
use bech32::ToBase32;
859859

860860
RawInvoice::hash_from_parts(
@@ -872,7 +872,7 @@ impl RawInvoice {
872872
pub fn sign<F, E>(self, sign_method: F) -> Result<SignedRawInvoice, E>
873873
where F: FnOnce(&Message) -> Result<RecoverableSignature, E>
874874
{
875-
let raw_hash = self.hash();
875+
let raw_hash = self.signable_hash();
876876
let hash = Message::from_slice(&raw_hash[..])
877877
.expect("Hash is 32 bytes long, same as MESSAGE_SIZE");
878878
let signature = sign_method(&hash)?;
@@ -1591,7 +1591,7 @@ mod test {
15911591
0xd5, 0x18, 0xe1, 0xc9
15921592
];
15931593

1594-
assert_eq!(invoice.hash(), expected_hash)
1594+
assert_eq!(invoice.signable_hash(), expected_hash)
15951595
}
15961596

15971597
#[test]

lightning/src/ln/peer_handler.rs

+5-4
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ use util::ser::{VecWriter, Writeable, Writer};
2525
use ln::peer_channel_encryptor::{PeerChannelEncryptor,NextNoiseStep};
2626
use ln::wire;
2727
use ln::wire::Encode;
28+
use onion_message::{SimpleArcOnionMessenger, SimpleRefOnionMessenger};
2829
use routing::gossip::{NetworkGraph, P2PGossipSync};
2930
use util::atomic_counter::AtomicCounter;
3031
use util::crypto::sign;
@@ -461,8 +462,8 @@ impl Peer {
461462
/// SimpleRefPeerManager is the more appropriate type. Defining these type aliases prevents
462463
/// issues such as overly long function definitions.
463464
///
464-
/// (C-not exported) as Arcs don't make sense in bindings
465-
pub type SimpleArcPeerManager<SD, M, T, F, C, L> = PeerManager<SD, Arc<SimpleArcChannelManager<M, T, F, L>>, Arc<P2PGossipSync<Arc<NetworkGraph<Arc<L>>>, Arc<C>, Arc<L>>>, IgnoringMessageHandler, Arc<L>, Arc<IgnoringMessageHandler>>;
465+
/// (C-not exported) as `Arc`s don't make sense in bindings.
466+
pub type SimpleArcPeerManager<SD, M, T, F, C, L> = PeerManager<SD, Arc<SimpleArcChannelManager<M, T, F, L>>, Arc<P2PGossipSync<Arc<NetworkGraph<Arc<L>>>, Arc<C>, Arc<L>>>, Arc<SimpleArcOnionMessenger<L>>, Arc<L>, IgnoringMessageHandler>;
466467

467468
/// SimpleRefPeerManager is a type alias for a PeerManager reference, and is the reference
468469
/// counterpart to the SimpleArcPeerManager type alias. Use this type by default when you don't
@@ -471,8 +472,8 @@ pub type SimpleArcPeerManager<SD, M, T, F, C, L> = PeerManager<SD, Arc<SimpleArc
471472
/// But if this is not necessary, using a reference is more efficient. Defining these type aliases
472473
/// helps with issues such as long function definitions.
473474
///
474-
/// (C-not exported) as Arcs don't make sense in bindings
475-
pub type SimpleRefPeerManager<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, SD, M, T, F, C, L> = PeerManager<SD, SimpleRefChannelManager<'a, 'b, 'c, 'd, 'e, M, T, F, L>, &'e P2PGossipSync<&'g NetworkGraph<&'f L>, &'h C, &'f L>, IgnoringMessageHandler, &'f L, IgnoringMessageHandler>;
475+
/// (C-not exported) as general type aliases don't make sense in bindings.
476+
pub type SimpleRefPeerManager<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j, 'k, SD, M, T, F, C, L> = PeerManager<SD, SimpleRefChannelManager<'a, 'b, 'c, 'd, 'e, M, T, F, L>, &'e P2PGossipSync<&'g NetworkGraph<&'f L>, &'h C, &'f L>, &'i SimpleRefOnionMessenger<'j, 'k, L>, &'f L, IgnoringMessageHandler>;
476477

477478
/// A PeerManager manages a set of peers, described by their [`SocketDescriptor`] and marshalls
478479
/// socket events into messages which it passes on to its [`MessageHandler`].

lightning/src/onion_message/blinded_route.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
1212
use bitcoin::secp256k1::{self, PublicKey, Secp256k1, SecretKey};
1313

14-
use chain::keysinterface::{KeysInterface, Sign};
14+
use chain::keysinterface::KeysInterface;
1515
use super::utils;
1616
use ln::msgs::DecodeError;
1717
use util::chacha20poly1305rfc::ChaChaPolyWriteAdapter;
@@ -55,7 +55,7 @@ impl BlindedRoute {
5555
///
5656
/// Errors if less than two hops are provided or if `node_pk`(s) are invalid.
5757
// TODO: make all payloads the same size with padding + add dummy hops
58-
pub fn new<Signer: Sign, K: KeysInterface, T: secp256k1::Signing + secp256k1::Verification>
58+
pub fn new<K: KeysInterface, T: secp256k1::Signing + secp256k1::Verification>
5959
(node_pks: &[PublicKey], keys_manager: &K, secp_ctx: &Secp256k1<T>) -> Result<Self, ()>
6060
{
6161
if node_pks.len() < 2 { return Err(()) }

lightning/src/onion_message/functional_tests.rs

+7-7
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ fn two_unblinded_two_blinded() {
9898
let nodes = create_nodes(5);
9999

100100
let secp_ctx = Secp256k1::new();
101-
let blinded_route = BlindedRoute::new::<EnforcingSigner, _, _>(&[nodes[3].get_node_pk(), nodes[4].get_node_pk()], &*nodes[4].keys_manager, &secp_ctx).unwrap();
101+
let blinded_route = BlindedRoute::new(&[nodes[3].get_node_pk(), nodes[4].get_node_pk()], &*nodes[4].keys_manager, &secp_ctx).unwrap();
102102

103103
nodes[0].messenger.send_onion_message(&[nodes[1].get_node_pk(), nodes[2].get_node_pk()], Destination::BlindedRoute(blinded_route), None).unwrap();
104104
pass_along_path(&nodes, None);
@@ -109,7 +109,7 @@ fn three_blinded_hops() {
109109
let nodes = create_nodes(4);
110110

111111
let secp_ctx = Secp256k1::new();
112-
let blinded_route = BlindedRoute::new::<EnforcingSigner, _, _>(&[nodes[1].get_node_pk(), nodes[2].get_node_pk(), nodes[3].get_node_pk()], &*nodes[3].keys_manager, &secp_ctx).unwrap();
112+
let blinded_route = BlindedRoute::new(&[nodes[1].get_node_pk(), nodes[2].get_node_pk(), nodes[3].get_node_pk()], &*nodes[3].keys_manager, &secp_ctx).unwrap();
113113

114114
nodes[0].messenger.send_onion_message(&[], Destination::BlindedRoute(blinded_route), None).unwrap();
115115
pass_along_path(&nodes, None);
@@ -133,13 +133,13 @@ fn invalid_blinded_route_error() {
133133

134134
// 0 hops
135135
let secp_ctx = Secp256k1::new();
136-
let mut blinded_route = BlindedRoute::new::<EnforcingSigner, _, _>(&[nodes[1].get_node_pk(), nodes[2].get_node_pk()], &*nodes[2].keys_manager, &secp_ctx).unwrap();
136+
let mut blinded_route = BlindedRoute::new(&[nodes[1].get_node_pk(), nodes[2].get_node_pk()], &*nodes[2].keys_manager, &secp_ctx).unwrap();
137137
blinded_route.blinded_hops.clear();
138138
let err = nodes[0].messenger.send_onion_message(&[], Destination::BlindedRoute(blinded_route), None).unwrap_err();
139139
assert_eq!(err, SendError::TooFewBlindedHops);
140140

141141
// 1 hop
142-
let mut blinded_route = BlindedRoute::new::<EnforcingSigner, _, _>(&[nodes[1].get_node_pk(), nodes[2].get_node_pk()], &*nodes[2].keys_manager, &secp_ctx).unwrap();
142+
let mut blinded_route = BlindedRoute::new(&[nodes[1].get_node_pk(), nodes[2].get_node_pk()], &*nodes[2].keys_manager, &secp_ctx).unwrap();
143143
blinded_route.blinded_hops.remove(0);
144144
assert_eq!(blinded_route.blinded_hops.len(), 1);
145145
let err = nodes[0].messenger.send_onion_message(&[], Destination::BlindedRoute(blinded_route), None).unwrap_err();
@@ -152,7 +152,7 @@ fn reply_path() {
152152
let secp_ctx = Secp256k1::new();
153153

154154
// Destination::Node
155-
let reply_path = BlindedRoute::new::<EnforcingSigner, _, _>(&[nodes[2].get_node_pk(), nodes[1].get_node_pk(), nodes[0].get_node_pk()], &*nodes[0].keys_manager, &secp_ctx).unwrap();
155+
let reply_path = BlindedRoute::new(&[nodes[2].get_node_pk(), nodes[1].get_node_pk(), nodes[0].get_node_pk()], &*nodes[0].keys_manager, &secp_ctx).unwrap();
156156
nodes[0].messenger.send_onion_message(&[nodes[1].get_node_pk(), nodes[2].get_node_pk()], Destination::Node(nodes[3].get_node_pk()), Some(reply_path)).unwrap();
157157
pass_along_path(&nodes, None);
158158
// Make sure the last node successfully decoded the reply path.
@@ -161,8 +161,8 @@ fn reply_path() {
161161
format!("Received an onion message with path_id: None and reply_path").to_string(), 1);
162162

163163
// Destination::BlindedRoute
164-
let blinded_route = BlindedRoute::new::<EnforcingSigner, _, _>(&[nodes[1].get_node_pk(), nodes[2].get_node_pk(), nodes[3].get_node_pk()], &*nodes[3].keys_manager, &secp_ctx).unwrap();
165-
let reply_path = BlindedRoute::new::<EnforcingSigner, _, _>(&[nodes[2].get_node_pk(), nodes[1].get_node_pk(), nodes[0].get_node_pk()], &*nodes[0].keys_manager, &secp_ctx).unwrap();
164+
let blinded_route = BlindedRoute::new(&[nodes[1].get_node_pk(), nodes[2].get_node_pk(), nodes[3].get_node_pk()], &*nodes[3].keys_manager, &secp_ctx).unwrap();
165+
let reply_path = BlindedRoute::new(&[nodes[2].get_node_pk(), nodes[1].get_node_pk(), nodes[0].get_node_pk()], &*nodes[0].keys_manager, &secp_ctx).unwrap();
166166

167167
nodes[0].messenger.send_onion_message(&[], Destination::BlindedRoute(blinded_route), Some(reply_path)).unwrap();
168168
pass_along_path(&nodes, None);

lightning/src/onion_message/messenger.rs

+9-5
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ use prelude::*;
7171
/// // Create a blinded route to yourself, for someone to send an onion message to.
7272
/// # let your_node_id = hop_node_id1;
7373
/// let hops = [hop_node_id3, hop_node_id4, your_node_id];
74-
/// let blinded_route = BlindedRoute::new::<InMemorySigner, _, _>(&hops, &keys_manager, &secp_ctx).unwrap();
74+
/// let blinded_route = BlindedRoute::new(&hops, &keys_manager, &secp_ctx).unwrap();
7575
///
7676
/// // Send an empty onion message to a blinded route.
7777
/// # let intermediate_hops = [hop_node_id1, hop_node_id2];
@@ -378,14 +378,18 @@ impl<Signer: Sign, K: Deref, L: Deref> OnionMessageProvider for OnionMessenger<S
378378
/// Useful for simplifying the parameters of [`SimpleArcChannelManager`] and
379379
/// [`SimpleArcPeerManager`]. See their docs for more details.
380380
///
381-
///[`SimpleArcChannelManager`]: crate::ln::channelmanager::SimpleArcChannelManager
382-
///[`SimpleArcPeerManager`]: crate::ln::peer_handler::SimpleArcPeerManager
381+
/// (C-not exported) as `Arc`s don't make sense in bindings.
382+
///
383+
/// [`SimpleArcChannelManager`]: crate::ln::channelmanager::SimpleArcChannelManager
384+
/// [`SimpleArcPeerManager`]: crate::ln::peer_handler::SimpleArcPeerManager
383385
pub type SimpleArcOnionMessenger<L> = OnionMessenger<InMemorySigner, Arc<KeysManager>, Arc<L>>;
384386
/// Useful for simplifying the parameters of [`SimpleRefChannelManager`] and
385387
/// [`SimpleRefPeerManager`]. See their docs for more details.
386388
///
387-
///[`SimpleRefChannelManager`]: crate::ln::channelmanager::SimpleRefChannelManager
388-
///[`SimpleRefPeerManager`]: crate::ln::peer_handler::SimpleRefPeerManager
389+
/// (C-not exported) as general type aliases don't make sense in bindings.
390+
///
391+
/// [`SimpleRefChannelManager`]: crate::ln::channelmanager::SimpleRefChannelManager
392+
/// [`SimpleRefPeerManager`]: crate::ln::peer_handler::SimpleRefPeerManager
389393
pub type SimpleRefOnionMessenger<'a, 'b, L> = OnionMessenger<InMemorySigner, &'a KeysManager, &'b L>;
390394

391395
/// Construct onion packet payloads and keys for sending an onion message along the given

lightning/src/routing/scoring.rs

+1
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ pub trait LockableScore<'a> {
162162
/// use the Persister to persist it.
163163
pub trait WriteableScore<'a>: LockableScore<'a> + Writeable {}
164164

165+
#[cfg(not(c_bindings))]
165166
impl<'a, T> WriteableScore<'a> for T where T: LockableScore<'a> + Writeable {}
166167

167168
/// (C-not exported)

lightning/src/util/persist.rs

+2-4
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,12 @@ pub trait KVStorePersister {
2626
}
2727

2828
/// Trait that handles persisting a [`ChannelManager`], [`NetworkGraph`], and [`WriteableScore`] to disk.
29-
pub trait Persister<'a, Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref, S>
29+
pub trait Persister<'a, Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref, S: WriteableScore<'a>>
3030
where M::Target: 'static + chain::Watch<Signer>,
3131
T::Target: 'static + BroadcasterInterface,
3232
K::Target: 'static + KeysInterface<Signer = Signer>,
3333
F::Target: 'static + FeeEstimator,
3434
L::Target: 'static + Logger,
35-
S: WriteableScore<'a>,
3635
{
3736
/// Persist the given ['ChannelManager'] to disk, returning an error if persistence failed.
3837
fn persist_manager(&self, channel_manager: &ChannelManager<Signer, M, T, K, F, L>) -> Result<(), io::Error>;
@@ -44,13 +43,12 @@ pub trait Persister<'a, Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L:
4443
fn persist_scorer(&self, scorer: &S) -> Result<(), io::Error>;
4544
}
4645

47-
impl<'a, A: KVStorePersister, Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref, S> Persister<'a, Signer, M, T, K, F, L, S> for A
46+
impl<'a, A: KVStorePersister, Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref, S: WriteableScore<'a>> Persister<'a, Signer, M, T, K, F, L, S> for A
4847
where M::Target: 'static + chain::Watch<Signer>,
4948
T::Target: 'static + BroadcasterInterface,
5049
K::Target: 'static + KeysInterface<Signer = Signer>,
5150
F::Target: 'static + FeeEstimator,
5251
L::Target: 'static + Logger,
53-
S: WriteableScore<'a>,
5452
{
5553
/// Persist the given ['ChannelManager'] to disk with the name "manager", returning an error if persistence failed.
5654
fn persist_manager(&self, channel_manager: &ChannelManager<Signer, M, T, K, F, L>) -> Result<(), io::Error> {

0 commit comments

Comments
 (0)