Skip to content

Commit 1c8a06c

Browse files
committed
Remove generic Signer parameter where it can be inferred from KeysInterface
1 parent b6fce3d commit 1c8a06c

File tree

12 files changed

+75
-79
lines changed

12 files changed

+75
-79
lines changed

lightning-background-processor/src/lib.rs

+11-13
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ extern crate lightning_rapid_gossip_sync;
1717
use lightning::chain;
1818
use lightning::chain::chaininterface::{BroadcasterInterface, FeeEstimator};
1919
use lightning::chain::chainmonitor::{ChainMonitor, Persist};
20-
use lightning::chain::keysinterface::{Sign, KeysInterface};
20+
use lightning::chain::keysinterface::KeysInterface;
2121
use lightning::ln::channelmanager::ChannelManager;
2222
use lightning::ln::msgs::{ChannelMessageHandler, OnionMessageHandler, RoutingMessageHandler};
2323
use lightning::ln::peer_handler::{CustomMessageHandler, PeerManager, SocketDescriptor};
@@ -365,7 +365,6 @@ macro_rules! define_run_body {
365365
#[cfg(feature = "futures")]
366366
pub async fn process_events_async<
367367
'a,
368-
Signer: 'static + Sign,
369368
CA: 'static + Deref + Send + Sync,
370369
CF: 'static + Deref + Send + Sync,
371370
CW: 'static + Deref + Send + Sync,
@@ -381,7 +380,7 @@ pub async fn process_events_async<
381380
OMH: 'static + Deref + Send + Sync,
382381
EH: 'static + EventHandler + Send,
383382
PS: 'static + Deref + Send,
384-
M: 'static + Deref<Target = ChainMonitor<Signer, CF, T, F, L, P>> + Send + Sync,
383+
M: 'static + Deref<Target = ChainMonitor<<K::Target as KeysInterface>::Signer, CF, T, F, L, P>> + Send + Sync,
385384
CM: 'static + Deref<Target = ChannelManager<CW, T, K, F, L>> + Send + Sync,
386385
PGS: 'static + Deref<Target = P2PGossipSync<G, CA, L>> + Send + Sync,
387386
RGS: 'static + Deref<Target = RapidGossipSync<G, L>> + Send,
@@ -399,17 +398,17 @@ pub async fn process_events_async<
399398
where
400399
CA::Target: 'static + chain::Access,
401400
CF::Target: 'static + chain::Filter,
402-
CW::Target: 'static + chain::Watch<Signer>,
401+
CW::Target: 'static + chain::Watch<<K::Target as KeysInterface>::Signer>,
403402
T::Target: 'static + BroadcasterInterface,
404-
K::Target: 'static + KeysInterface<Signer = Signer>,
403+
K::Target: 'static + KeysInterface,
405404
F::Target: 'static + FeeEstimator,
406405
L::Target: 'static + Logger,
407-
P::Target: 'static + Persist<Signer>,
406+
P::Target: 'static + Persist<<K::Target as KeysInterface>::Signer>,
408407
CMH::Target: 'static + ChannelMessageHandler,
409408
OMH::Target: 'static + OnionMessageHandler,
410409
RMH::Target: 'static + RoutingMessageHandler,
411410
UMH::Target: 'static + CustomMessageHandler,
412-
PS::Target: 'static + Persister<'a, Signer, CW, T, K, F, L, SC>,
411+
PS::Target: 'static + Persister<'a, CW, T, K, F, L, SC>,
413412
{
414413
let mut should_continue = true;
415414
define_run_body!(persister, event_handler, chain_monitor, channel_manager,
@@ -471,7 +470,6 @@ impl BackgroundProcessor {
471470
/// [`NetworkGraph::write`]: lightning::routing::gossip::NetworkGraph#impl-Writeable
472471
pub fn start<
473472
'a,
474-
Signer: 'static + Sign,
475473
CA: 'static + Deref + Send + Sync,
476474
CF: 'static + Deref + Send + Sync,
477475
CW: 'static + Deref + Send + Sync,
@@ -487,7 +485,7 @@ impl BackgroundProcessor {
487485
RMH: 'static + Deref + Send + Sync,
488486
EH: 'static + EventHandler + Send,
489487
PS: 'static + Deref + Send,
490-
M: 'static + Deref<Target = ChainMonitor<Signer, CF, T, F, L, P>> + Send + Sync,
488+
M: 'static + Deref<Target = ChainMonitor<<K::Target as KeysInterface>::Signer, CF, T, F, L, P>> + Send + Sync,
491489
CM: 'static + Deref<Target = ChannelManager<CW, T, K, F, L>> + Send + Sync,
492490
PGS: 'static + Deref<Target = P2PGossipSync<G, CA, L>> + Send + Sync,
493491
RGS: 'static + Deref<Target = RapidGossipSync<G, L>> + Send,
@@ -502,17 +500,17 @@ impl BackgroundProcessor {
502500
where
503501
CA::Target: 'static + chain::Access,
504502
CF::Target: 'static + chain::Filter,
505-
CW::Target: 'static + chain::Watch<Signer>,
503+
CW::Target: 'static + chain::Watch<<K::Target as KeysInterface>::Signer>,
506504
T::Target: 'static + BroadcasterInterface,
507-
K::Target: 'static + KeysInterface<Signer = Signer>,
505+
K::Target: 'static + KeysInterface,
508506
F::Target: 'static + FeeEstimator,
509507
L::Target: 'static + Logger,
510-
P::Target: 'static + Persist<Signer>,
508+
P::Target: 'static + Persist<<K::Target as KeysInterface>::Signer>,
511509
CMH::Target: 'static + ChannelMessageHandler,
512510
OMH::Target: 'static + OnionMessageHandler,
513511
RMH::Target: 'static + RoutingMessageHandler,
514512
UMH::Target: 'static + CustomMessageHandler,
515-
PS::Target: 'static + Persister<'a, Signer, CW, T, K, F, L, SC>,
513+
PS::Target: 'static + Persister<'a, CW, T, K, F, L, SC>,
516514
{
517515
let stop_thread = Arc::new(AtomicBool::new(false));
518516
let stop_thread_clone = stop_thread.clone();

lightning-block-sync/src/init.rs

+5-6
Original file line numberDiff line numberDiff line change
@@ -61,16 +61,15 @@ BlockSourceResult<ValidatedBlockHeader> where B::Target: BlockSource {
6161
///
6262
/// async fn init_sync<
6363
/// B: BlockSource,
64-
/// K: KeysInterface<Signer = S>,
65-
/// S: keysinterface::Sign,
64+
/// K: KeysInterface,
6665
/// T: BroadcasterInterface,
6766
/// F: FeeEstimator,
6867
/// L: Logger,
6968
/// C: chain::Filter,
70-
/// P: chainmonitor::Persist<S>,
69+
/// P: chainmonitor::Persist<K::Signer>,
7170
/// >(
7271
/// block_source: &B,
73-
/// chain_monitor: &ChainMonitor<S, &C, &T, &F, &L, &P>,
72+
/// chain_monitor: &ChainMonitor<K::Signer, &C, &T, &F, &L, &P>,
7473
/// config: UserConfig,
7574
/// keys_manager: &K,
7675
/// tx_broadcaster: &T,
@@ -80,7 +79,7 @@ BlockSourceResult<ValidatedBlockHeader> where B::Target: BlockSource {
8079
/// ) {
8180
/// // Read a serialized channel monitor paired with the block hash when it was persisted.
8281
/// let serialized_monitor = "...";
83-
/// let (monitor_block_hash, mut monitor) = <(BlockHash, ChannelMonitor<S>)>::read(
82+
/// let (monitor_block_hash, mut monitor) = <(BlockHash, ChannelMonitor<K::Signer>)>::read(
8483
/// &mut Cursor::new(&serialized_monitor), keys_manager).unwrap();
8584
///
8685
/// // Read the channel manager paired with the block hash when it was persisted.
@@ -95,7 +94,7 @@ BlockSourceResult<ValidatedBlockHeader> where B::Target: BlockSource {
9594
/// config,
9695
/// vec![&mut monitor],
9796
/// );
98-
/// <(BlockHash, ChannelManager<&ChainMonitor<S, &C, &T, &F, &L, &P>, &T, &K, &F, &L>)>::read(
97+
/// <(BlockHash, ChannelManager<&ChainMonitor<K::Signer, &C, &T, &F, &L, &P>, &T, &K, &F, &L>)>::read(
9998
/// &mut Cursor::new(&serialized_manager), read_args).unwrap()
10099
/// };
101100
///

lightning-invoice/src/utils.rs

+10-11
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use bech32::ToBase32;
88
use bitcoin_hashes::{Hash, sha256};
99
use lightning::chain;
1010
use lightning::chain::chaininterface::{BroadcasterInterface, FeeEstimator};
11-
use lightning::chain::keysinterface::{Recipient, KeysInterface, Sign};
11+
use lightning::chain::keysinterface::{Recipient, KeysInterface};
1212
use lightning::ln::{PaymentHash, PaymentPreimage, PaymentSecret};
1313
use lightning::ln::channelmanager::{ChannelDetails, ChannelManager, PaymentId, PaymentSendFailure, MIN_FINAL_CLTV_EXPIRY};
1414
#[cfg(feature = "std")]
@@ -54,7 +54,7 @@ use crate::sync::Mutex;
5454
/// [`ChannelManager::create_inbound_payment`]: lightning::ln::channelmanager::ChannelManager::create_inbound_payment
5555
/// [`ChannelManager::create_inbound_payment_for_hash`]: lightning::ln::channelmanager::ChannelManager::create_inbound_payment_for_hash
5656
/// [`PhantomRouteHints::channels`]: lightning::ln::channelmanager::PhantomRouteHints::channels
57-
pub fn create_phantom_invoice<Signer: Sign, K: Deref, L: Deref>(
57+
pub fn create_phantom_invoice<K: Deref, L: Deref>(
5858
amt_msat: Option<u64>, payment_hash: Option<PaymentHash>, description: String,
5959
invoice_expiry_delta_secs: u32, phantom_route_hints: Vec<PhantomRouteHints>, keys_manager: K,
6060
logger: L, network: Currency,
@@ -65,7 +65,7 @@ where
6565
{
6666
let description = Description::new(description).map_err(SignOrCreationError::CreationError)?;
6767
let description = InvoiceDescription::Direct(&description,);
68-
_create_phantom_invoice::<Signer, K, L>(
68+
_create_phantom_invoice::<K, L>(
6969
amt_msat, payment_hash, description, invoice_expiry_delta_secs, phantom_route_hints,
7070
keys_manager, logger, network,
7171
)
@@ -103,7 +103,7 @@ where
103103
/// [`ChannelManager::create_inbound_payment`]: lightning::ln::channelmanager::ChannelManager::create_inbound_payment
104104
/// [`ChannelManager::create_inbound_payment_for_hash`]: lightning::ln::channelmanager::ChannelManager::create_inbound_payment_for_hash
105105
/// [`PhantomRouteHints::channels`]: lightning::ln::channelmanager::PhantomRouteHints::channels
106-
pub fn create_phantom_invoice_with_description_hash<Signer: Sign, K: Deref, L: Deref>(
106+
pub fn create_phantom_invoice_with_description_hash<K: Deref, L: Deref>(
107107
amt_msat: Option<u64>, payment_hash: Option<PaymentHash>, invoice_expiry_delta_secs: u32,
108108
description_hash: Sha256, phantom_route_hints: Vec<PhantomRouteHints>, keys_manager: K,
109109
logger: L, network: Currency
@@ -112,14 +112,14 @@ where
112112
K::Target: KeysInterface,
113113
L::Target: Logger,
114114
{
115-
_create_phantom_invoice::<Signer, K, L>(
115+
_create_phantom_invoice::<K, L>(
116116
amt_msat, payment_hash, InvoiceDescription::Hash(&description_hash),
117117
invoice_expiry_delta_secs, phantom_route_hints, keys_manager, logger, network,
118118
)
119119
}
120120

121121
#[cfg(feature = "std")]
122-
fn _create_phantom_invoice<Signer: Sign, K: Deref, L: Deref>(
122+
fn _create_phantom_invoice<K: Deref, L: Deref>(
123123
amt_msat: Option<u64>, payment_hash: Option<PaymentHash>, description: InvoiceDescription,
124124
invoice_expiry_delta_secs: u32, phantom_route_hints: Vec<PhantomRouteHints>, keys_manager: K,
125125
logger: L, network: Currency,
@@ -690,7 +690,6 @@ mod test {
690690
use lightning::ln::functional_test_utils::*;
691691
use lightning::ln::msgs::ChannelMessageHandler;
692692
use lightning::routing::router::{PaymentParameters, RouteParameters, find_route};
693-
use lightning::util::enforcing_trait_impls::EnforcingSigner;
694693
use lightning::util::events::{MessageSendEvent, MessageSendEventsProvider, Event};
695694
use lightning::util::test_utils;
696695
use lightning::util::config::UserConfig;
@@ -1016,7 +1015,7 @@ mod test {
10161015
let non_default_invoice_expiry_secs = 4200;
10171016

10181017
let invoice =
1019-
crate::utils::create_phantom_invoice::<EnforcingSigner, &test_utils::TestKeysInterface, &test_utils::TestLogger>(
1018+
crate::utils::create_phantom_invoice::<&test_utils::TestKeysInterface, &test_utils::TestLogger>(
10201019
Some(payment_amt), payment_hash, "test".to_string(), non_default_invoice_expiry_secs,
10211020
route_hints, &nodes[1].keys_manager, &nodes[1].logger, Currency::BitcoinTestnet
10221021
).unwrap();
@@ -1125,7 +1124,7 @@ mod test {
11251124
nodes[2].node.get_phantom_route_hints(),
11261125
];
11271126

1128-
let invoice = crate::utils::create_phantom_invoice::<EnforcingSigner, &test_utils::TestKeysInterface, &test_utils::TestLogger>(Some(payment_amt), Some(payment_hash), "test".to_string(), 3600, route_hints, &nodes[1].keys_manager, &nodes[1].logger, Currency::BitcoinTestnet).unwrap();
1127+
let invoice = crate::utils::create_phantom_invoice::<&test_utils::TestKeysInterface, &test_utils::TestLogger>(Some(payment_amt), Some(payment_hash), "test".to_string(), 3600, route_hints, &nodes[1].keys_manager, &nodes[1].logger, Currency::BitcoinTestnet).unwrap();
11291128

11301129
let chan_0_1 = &nodes[1].node.list_usable_channels()[0];
11311130
assert_eq!(invoice.route_hints()[0].0[0].htlc_minimum_msat, chan_0_1.inbound_htlc_minimum_msat);
@@ -1153,7 +1152,7 @@ mod test {
11531152
let description_hash = crate::Sha256(Hash::hash("Description hash phantom invoice".as_bytes()));
11541153
let non_default_invoice_expiry_secs = 4200;
11551154
let invoice = crate::utils::create_phantom_invoice_with_description_hash::<
1156-
EnforcingSigner, &test_utils::TestKeysInterface, &test_utils::TestLogger,
1155+
&test_utils::TestKeysInterface, &test_utils::TestLogger,
11571156
>(
11581157
Some(payment_amt), None, non_default_invoice_expiry_secs, description_hash,
11591158
route_hints, &nodes[1].keys_manager, &nodes[1].logger, Currency::BitcoinTestnet
@@ -1470,7 +1469,7 @@ mod test {
14701469
.map(|route_hint| route_hint.phantom_scid)
14711470
.collect::<HashSet<u64>>();
14721471

1473-
let invoice = crate::utils::create_phantom_invoice::<EnforcingSigner, &test_utils::TestKeysInterface, &test_utils::TestLogger>(invoice_amt, None, "test".to_string(), 3600, phantom_route_hints, &invoice_node.keys_manager, &invoice_node.logger, Currency::BitcoinTestnet).unwrap();
1472+
let invoice = crate::utils::create_phantom_invoice::<&test_utils::TestKeysInterface, &test_utils::TestLogger>(invoice_amt, None, "test".to_string(), 3600, phantom_route_hints, &invoice_node.keys_manager, &invoice_node.logger, Currency::BitcoinTestnet).unwrap();
14741473

14751474
let invoice_hints = invoice.private_routes();
14761475

lightning-persister/src/lib.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ extern crate libc;
2020
use bitcoin::hash_types::{BlockHash, Txid};
2121
use bitcoin::hashes::hex::FromHex;
2222
use lightning::chain::channelmonitor::ChannelMonitor;
23-
use lightning::chain::keysinterface::{Sign, KeysInterface};
23+
use lightning::chain::keysinterface::KeysInterface;
2424
use lightning::util::ser::{ReadableArgs, Writeable};
2525
use lightning::util::persist::KVStorePersister;
2626
use std::fs;
@@ -59,10 +59,10 @@ impl FilesystemPersister {
5959
}
6060

6161
/// Read `ChannelMonitor`s from disk.
62-
pub fn read_channelmonitors<Signer: Sign, K: Deref> (
62+
pub fn read_channelmonitors<K: Deref> (
6363
&self, keys_manager: K
64-
) -> Result<Vec<(BlockHash, ChannelMonitor<Signer>)>, std::io::Error>
65-
where K::Target: KeysInterface<Signer=Signer> + Sized,
64+
) -> Result<Vec<(BlockHash, ChannelMonitor<<K::Target as KeysInterface>::Signer>)>, std::io::Error>
65+
where K::Target: KeysInterface + Sized,
6666
{
6767
let mut path = PathBuf::from(&self.path_to_channel_data);
6868
path.push("monitors");
@@ -105,7 +105,7 @@ impl FilesystemPersister {
105105

106106
let contents = fs::read(&file.path())?;
107107
let mut buffer = Cursor::new(&contents);
108-
match <(BlockHash, ChannelMonitor<Signer>)>::read(&mut buffer, &*keys_manager) {
108+
match <(BlockHash, ChannelMonitor<<K::Target as KeysInterface>::Signer>)>::read(&mut buffer, &*keys_manager) {
109109
Ok((blockhash, channel_monitor)) => {
110110
if channel_monitor.get_funding_txo().0.txid != txid.unwrap() || channel_monitor.get_funding_txo().0.index != index.unwrap() {
111111
return Err(std::io::Error::new(std::io::ErrorKind::InvalidData, "ChannelMonitor was stored in the wrong file"));

lightning/src/chain/channelmonitor.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -3551,8 +3551,8 @@ where
35513551

35523552
const MAX_ALLOC_SIZE: usize = 64*1024;
35533553

3554-
impl<'a, Signer: Sign, K: KeysInterface<Signer = Signer>> ReadableArgs<&'a K>
3555-
for (BlockHash, ChannelMonitor<Signer>) {
3554+
impl<'a, K: KeysInterface> ReadableArgs<&'a K>
3555+
for (BlockHash, ChannelMonitor<K::Signer>) {
35563556
fn read<R: io::Read>(reader: &mut R, keys_manager: &'a K) -> Result<Self, DecodeError> {
35573557
macro_rules! unwrap_obj {
35583558
($key: expr) => {
@@ -3736,7 +3736,7 @@ impl<'a, Signer: Sign, K: KeysInterface<Signer = Signer>> ReadableArgs<&'a K>
37363736
return Err(DecodeError::InvalidValue);
37373737
}
37383738
}
3739-
let onchain_tx_handler: OnchainTxHandler<Signer> = ReadableArgs::read(reader, keys_manager)?;
3739+
let onchain_tx_handler: OnchainTxHandler<K::Signer> = ReadableArgs::read(reader, keys_manager)?;
37403740

37413741
let lockdown_from_offchain = Readable::read(reader)?;
37423742
let holder_tx_signed = Readable::read(reader)?;

lightning/src/ln/channel.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -4205,7 +4205,7 @@ impl<Signer: Sign> Channel<Signer> {
42054205
pub fn shutdown<K: Deref>(
42064206
&mut self, keys_provider: &K, their_features: &InitFeatures, msg: &msgs::Shutdown
42074207
) -> Result<(Option<msgs::Shutdown>, Option<ChannelMonitorUpdate>, Vec<(HTLCSource, PaymentHash)>), ChannelError>
4208-
where K::Target: KeysInterface<Signer = Signer>
4208+
where K::Target: KeysInterface
42094209
{
42104210
if self.channel_state & (ChannelState::PeerDisconnected as u32) == ChannelState::PeerDisconnected as u32 {
42114211
return Err(ChannelError::Close("Peer sent shutdown when we needed a channel_reestablish".to_owned()));
@@ -5825,7 +5825,7 @@ impl<Signer: Sign> Channel<Signer> {
58255825
/// holding cell HTLCs for payment failure.
58265826
pub fn get_shutdown<K: Deref>(&mut self, keys_provider: &K, their_features: &InitFeatures, target_feerate_sats_per_kw: Option<u32>)
58275827
-> Result<(msgs::Shutdown, Option<ChannelMonitorUpdate>, Vec<(HTLCSource, PaymentHash)>), APIError>
5828-
where K::Target: KeysInterface<Signer = Signer> {
5828+
where K::Target: KeysInterface {
58295829
for htlc in self.pending_outbound_htlcs.iter() {
58305830
if let OutboundHTLCState::LocalAnnounced(_) = htlc.state {
58315831
return Err(APIError::APIMisuseError{err: "Cannot begin shutdown with pending HTLCs. Process pending events first".to_owned()});
@@ -6284,8 +6284,8 @@ impl<Signer: Sign> Writeable for Channel<Signer> {
62846284
}
62856285

62866286
const MAX_ALLOC_SIZE: usize = 64*1024;
6287-
impl<'a, Signer: Sign, K: Deref> ReadableArgs<(&'a K, u32)> for Channel<Signer>
6288-
where K::Target: KeysInterface<Signer = Signer> {
6287+
impl<'a, K: Deref> ReadableArgs<(&'a K, u32)> for Channel<<K::Target as KeysInterface>::Signer>
6288+
where K::Target: KeysInterface {
62896289
fn read<R : io::Read>(reader: &mut R, args: (&'a K, u32)) -> Result<Self, DecodeError> {
62906290
let (keys_source, serialized_height) = args;
62916291
let ver = read_ver_prefix!(reader, SERIALIZATION_VERSION);

0 commit comments

Comments
 (0)