Skip to content

Commit df840cb

Browse files
committed
Remove channel_value_satoshis from SignerProvider
1 parent f67b553 commit df840cb

File tree

7 files changed

+40
-89
lines changed

7 files changed

+40
-89
lines changed

lightning/src/chain/channelmonitor.rs

-2
Original file line numberDiff line numberDiff line change
@@ -5391,7 +5391,6 @@ mod tests {
53915391
SecretKey::from_slice(&[41; 32]).unwrap(),
53925392
SecretKey::from_slice(&[41; 32]).unwrap(),
53935393
[41; 32],
5394-
0,
53955394
[0; 32],
53965395
[0; 32],
53975396
);
@@ -5644,7 +5643,6 @@ mod tests {
56445643
SecretKey::from_slice(&[41; 32]).unwrap(),
56455644
SecretKey::from_slice(&[41; 32]).unwrap(),
56465645
[41; 32],
5647-
0,
56485646
[0; 32],
56495647
[0; 32],
56505648
);

lightning/src/chain/onchaintx.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,7 @@ impl<'a, 'b, ES: EntropySource, SP: SignerProvider> ReadableArgs<(&'a ES, &'b SP
386386
bytes_read += bytes_to_read;
387387
}
388388

389-
let signer = signer_provider.derive_channel_signer(channel_value_satoshis, channel_keys_id);
389+
let signer = signer_provider.derive_channel_signer(channel_keys_id);
390390

391391
let pending_claim_requests_len: u64 = Readable::read(reader)?;
392392
let mut pending_claim_requests = hash_map_with_capacity(cmp::min(pending_claim_requests_len as usize, MAX_ALLOC_SIZE / 128));
@@ -1317,7 +1317,6 @@ mod tests {
13171317
SecretKey::from_slice(&[41; 32]).unwrap(),
13181318
SecretKey::from_slice(&[41; 32]).unwrap(),
13191319
[41; 32],
1320-
0,
13211320
[0; 32],
13221321
[0; 32],
13231322
);

lightning/src/events/bump_transaction.rs

+1-4
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,7 @@ impl AnchorDescriptor {
9797
where
9898
SP::Target: SignerProvider<EcdsaSigner= S>
9999
{
100-
signer_provider.derive_channel_signer(
101-
self.channel_derivation_parameters.value_satoshis,
102-
self.channel_derivation_parameters.keys_id,
103-
)
100+
signer_provider.derive_channel_signer(self.channel_derivation_parameters.keys_id)
104101
}
105102
}
106103

lightning/src/ln/chan_utils.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1938,8 +1938,8 @@ mod tests {
19381938
let seed = [42; 32];
19391939
let network = Network::Testnet;
19401940
let keys_provider = test_utils::TestKeysInterface::new(&seed, network);
1941-
let signer = keys_provider.derive_channel_signer(3000, keys_provider.generate_channel_keys_id(false, 1_000_000, 0));
1942-
let counterparty_signer = keys_provider.derive_channel_signer(3000, keys_provider.generate_channel_keys_id(true, 1_000_000, 1));
1941+
let signer = keys_provider.derive_channel_signer(keys_provider.generate_channel_keys_id(false, 0));
1942+
let counterparty_signer = keys_provider.derive_channel_signer(keys_provider.generate_channel_keys_id(true, 1));
19431943
let delayed_payment_base = &signer.pubkeys().delayed_payment_basepoint;
19441944
let per_commitment_secret = SecretKey::from_slice(&<Vec<u8>>::from_hex("1f1e1d1c1b1a191817161514131211100f0e0d0c0b0a09080706050403020100").unwrap()[..]).unwrap();
19451945
let per_commitment_point = PublicKey::from_secret_key(&secp_ctx, &per_commitment_secret);

lightning/src/ln/channel.rs

+10-10
Original file line numberDiff line numberDiff line change
@@ -2056,7 +2056,7 @@ trait InitialRemoteCommitmentReceiver<SP: Deref> where SP::Target: SignerProvide
20562056
let funding_txo_script = funding_redeemscript.to_p2wsh();
20572057
let obscure_factor = get_commitment_transaction_number_obscure_factor(&funding.get_holder_pubkeys().payment_point, &funding.get_counterparty_pubkeys().payment_point, funding.is_outbound());
20582058
let shutdown_script = context.shutdown_scriptpubkey.clone().map(|script| script.into_inner());
2059-
let monitor_signer = signer_provider.derive_channel_signer(funding.get_value_satoshis(), context.channel_keys_id);
2059+
let monitor_signer = signer_provider.derive_channel_signer(context.channel_keys_id);
20602060
// TODO(RBF): When implementing RBF, the funding_txo passed here must only update
20612061
// ChannelMonitorImp::first_confirmed_funding_txo during channel establishment, not splicing
20622062
let channel_monitor = ChannelMonitor::new(context.secp_ctx.clone(), monitor_signer,
@@ -2350,8 +2350,8 @@ impl<SP: Deref> ChannelContext<SP> where SP::Target: SignerProvider {
23502350

23512351
let channel_value_satoshis = our_funding_satoshis.saturating_add(open_channel_fields.funding_satoshis);
23522352

2353-
let channel_keys_id = signer_provider.generate_channel_keys_id(true, channel_value_satoshis, user_id);
2354-
let holder_signer = signer_provider.derive_channel_signer(channel_value_satoshis, channel_keys_id);
2353+
let channel_keys_id = signer_provider.generate_channel_keys_id(true, user_id);
2354+
let holder_signer = signer_provider.derive_channel_signer(channel_keys_id);
23552355
let pubkeys = holder_signer.pubkeys().clone();
23562356

23572357
if config.channel_handshake_config.our_to_self_delay < BREAKDOWN_TIMEOUT {
@@ -8642,8 +8642,8 @@ impl<SP: Deref> OutboundV1Channel<SP> where SP::Target: SignerProvider {
86428642
implemention limit dust_limit_satoshis {}", holder_selected_channel_reserve_satoshis) });
86438643
}
86448644

8645-
let channel_keys_id = signer_provider.generate_channel_keys_id(false, channel_value_satoshis, user_id);
8646-
let holder_signer = signer_provider.derive_channel_signer(channel_value_satoshis, channel_keys_id);
8645+
let channel_keys_id = signer_provider.generate_channel_keys_id(false, user_id);
8646+
let holder_signer = signer_provider.derive_channel_signer(channel_keys_id);
86478647
let pubkeys = holder_signer.pubkeys().clone();
86488648

86498649
let (funding, context) = ChannelContext::new_for_outbound_channel(
@@ -9195,8 +9195,8 @@ impl<SP: Deref> PendingV2Channel<SP> where SP::Target: SignerProvider {
91959195
F::Target: FeeEstimator,
91969196
L::Target: Logger,
91979197
{
9198-
let channel_keys_id = signer_provider.generate_channel_keys_id(false, funding_satoshis, user_id);
9199-
let holder_signer = signer_provider.derive_channel_signer(funding_satoshis, channel_keys_id);
9198+
let channel_keys_id = signer_provider.generate_channel_keys_id(false, user_id);
9199+
let holder_signer = signer_provider.derive_channel_signer(channel_keys_id);
92009200
let pubkeys = holder_signer.pubkeys().clone();
92019201

92029202
let temporary_channel_id = Some(ChannelId::temporary_v2_from_revocation_basepoint(&pubkeys.revocation_basepoint));
@@ -10259,7 +10259,7 @@ impl<'a, 'b, 'c, ES: Deref, SP: Deref> ReadableArgs<(&'a ES, &'b SP, u32, &'c Ch
1025910259
});
1026010260

1026110261
let (channel_keys_id, holder_signer) = if let Some(channel_keys_id) = channel_keys_id {
10262-
let holder_signer = signer_provider.derive_channel_signer(channel_value_satoshis, channel_keys_id);
10262+
let holder_signer = signer_provider.derive_channel_signer(channel_keys_id);
1026310263
(channel_keys_id, holder_signer)
1026410264
} else {
1026510265
// `keys_data` can be `None` if we had corrupted data.
@@ -10609,11 +10609,11 @@ mod tests {
1060910609
#[cfg(taproot)]
1061010610
type TaprootSigner = InMemorySigner;
1061110611

10612-
fn generate_channel_keys_id(&self, _inbound: bool, _channel_value_satoshis: u64, _user_channel_id: u128) -> [u8; 32] {
10612+
fn generate_channel_keys_id(&self, _inbound: bool, _user_channel_id: u128) -> [u8; 32] {
1061310613
self.signer.channel_keys_id()
1061410614
}
1061510615

10616-
fn derive_channel_signer(&self, _channel_value_satoshis: u64, _channel_keys_id: [u8; 32]) -> Self::EcdsaSigner {
10616+
fn derive_channel_signer(&self, _channel_keys_id: [u8; 32]) -> Self::EcdsaSigner {
1061710617
self.signer.clone()
1061810618
}
1061910619

lightning/src/sign/mod.rs

+18-51
Original file line numberDiff line numberDiff line change
@@ -711,10 +711,7 @@ impl HTLCDescriptor {
711711
where
712712
SP::Target: SignerProvider<EcdsaSigner = S>,
713713
{
714-
signer_provider.derive_channel_signer(
715-
self.channel_derivation_parameters.value_satoshis,
716-
self.channel_derivation_parameters.keys_id,
717-
)
714+
signer_provider.derive_channel_signer(self.channel_derivation_parameters.keys_id)
718715
}
719716
}
720717

@@ -950,19 +947,15 @@ pub trait SignerProvider {
950947
/// `channel_keys_id`.
951948
///
952949
/// This method must return a different value each time it is called.
953-
fn generate_channel_keys_id(
954-
&self, inbound: bool, channel_value_satoshis: u64, user_channel_id: u128,
955-
) -> [u8; 32];
950+
fn generate_channel_keys_id(&self, inbound: bool, user_channel_id: u128) -> [u8; 32];
956951

957952
/// Derives the private key material backing a `Signer`.
958953
///
959954
/// To derive a new `Signer`, a fresh `channel_keys_id` should be obtained through
960955
/// [`SignerProvider::generate_channel_keys_id`]. Otherwise, an existing `Signer` can be
961956
/// re-derived from its `channel_keys_id`, which can be obtained through its trait method
962957
/// [`ChannelSigner::channel_keys_id`].
963-
fn derive_channel_signer(
964-
&self, channel_value_satoshis: u64, channel_keys_id: [u8; 32],
965-
) -> Self::EcdsaSigner;
958+
fn derive_channel_signer(&self, channel_keys_id: [u8; 32]) -> Self::EcdsaSigner;
966959

967960
/// Reads a [`Signer`] for this [`SignerProvider`] from the given input stream.
968961
/// This is only called during deserialization of other objects which contain
@@ -1030,8 +1023,6 @@ pub struct InMemorySigner {
10301023
pub commitment_seed: [u8; 32],
10311024
/// Holder public keys and basepoints.
10321025
pub(crate) holder_channel_pubkeys: ChannelPublicKeys,
1033-
/// The total value of this channel.
1034-
channel_value_satoshis: u64,
10351026
/// Key derivation parameters.
10361027
channel_keys_id: [u8; 32],
10371028
/// A source of random bytes.
@@ -1047,7 +1038,6 @@ impl PartialEq for InMemorySigner {
10471038
&& self.htlc_base_key == other.htlc_base_key
10481039
&& self.commitment_seed == other.commitment_seed
10491040
&& self.holder_channel_pubkeys == other.holder_channel_pubkeys
1050-
&& self.channel_value_satoshis == other.channel_value_satoshis
10511041
&& self.channel_keys_id == other.channel_keys_id
10521042
}
10531043
}
@@ -1062,7 +1052,6 @@ impl Clone for InMemorySigner {
10621052
htlc_base_key: self.htlc_base_key.clone(),
10631053
commitment_seed: self.commitment_seed.clone(),
10641054
holder_channel_pubkeys: self.holder_channel_pubkeys.clone(),
1065-
channel_value_satoshis: self.channel_value_satoshis,
10661055
channel_keys_id: self.channel_keys_id,
10671056
entropy_source: RandomBytes::new(self.get_secure_random_bytes()),
10681057
}
@@ -1074,8 +1063,7 @@ impl InMemorySigner {
10741063
pub fn new<C: Signing>(
10751064
secp_ctx: &Secp256k1<C>, funding_key: SecretKey, revocation_base_key: SecretKey,
10761065
payment_key: SecretKey, delayed_payment_base_key: SecretKey, htlc_base_key: SecretKey,
1077-
commitment_seed: [u8; 32], channel_value_satoshis: u64, channel_keys_id: [u8; 32],
1078-
rand_bytes_unique_start: [u8; 32],
1066+
commitment_seed: [u8; 32], channel_keys_id: [u8; 32], rand_bytes_unique_start: [u8; 32],
10791067
) -> InMemorySigner {
10801068
let holder_channel_pubkeys = InMemorySigner::make_holder_keys(
10811069
secp_ctx,
@@ -1092,7 +1080,6 @@ impl InMemorySigner {
10921080
delayed_payment_base_key,
10931081
htlc_base_key,
10941082
commitment_seed,
1095-
channel_value_satoshis,
10961083
holder_channel_pubkeys,
10971084
channel_keys_id,
10981085
entropy_source: RandomBytes::new(rand_bytes_unique_start),
@@ -1734,7 +1721,7 @@ impl Writeable for InMemorySigner {
17341721
self.htlc_base_key.write(writer)?;
17351722
self.commitment_seed.write(writer)?;
17361723
None::<ChannelTransactionParameters>.write(writer)?;
1737-
self.channel_value_satoshis.write(writer)?;
1724+
0u64.write(writer)?;
17381725
self.channel_keys_id.write(writer)?;
17391726

17401727
write_tlv_fields!(writer, {});
@@ -1758,7 +1745,7 @@ where
17581745
let commitment_seed = Readable::read(reader)?;
17591746
let _counterparty_channel_data: Option<ChannelTransactionParameters> =
17601747
Readable::read(reader)?;
1761-
let channel_value_satoshis = Readable::read(reader)?;
1748+
let _channel_value_satoshis: u64 = Readable::read(reader)?;
17621749
let secp_ctx = Secp256k1::signing_only();
17631750
let holder_channel_pubkeys = InMemorySigner::make_holder_keys(
17641751
&secp_ctx,
@@ -1779,7 +1766,6 @@ where
17791766
delayed_payment_base_key,
17801767
htlc_base_key,
17811768
commitment_seed,
1782-
channel_value_satoshis,
17831769
holder_channel_pubkeys,
17841770
channel_keys_id: keys_id,
17851771
entropy_source: RandomBytes::new(entropy_source.get_secure_random_bytes()),
@@ -1918,9 +1904,7 @@ impl KeysManager {
19181904
}
19191905

19201906
/// Derive an old [`EcdsaChannelSigner`] containing per-channel secrets based on a key derivation parameters.
1921-
pub fn derive_channel_keys(
1922-
&self, channel_value_satoshis: u64, params: &[u8; 32],
1923-
) -> InMemorySigner {
1907+
pub fn derive_channel_keys(&self, params: &[u8; 32]) -> InMemorySigner {
19241908
let chan_id = u64::from_be_bytes(params[0..8].try_into().unwrap());
19251909
let mut unique_start = Sha256::engine();
19261910
unique_start.input(params);
@@ -1972,7 +1956,6 @@ impl KeysManager {
19721956
delayed_payment_base_key,
19731957
htlc_base_key,
19741958
commitment_seed,
1975-
channel_value_satoshis,
19761959
params.clone(),
19771960
prng_seed,
19781961
)
@@ -2004,10 +1987,7 @@ impl KeysManager {
20041987
if keys_cache.is_none()
20051988
|| keys_cache.as_ref().unwrap().1 != descriptor.channel_keys_id
20061989
{
2007-
let signer = self.derive_channel_keys(
2008-
descriptor.channel_value_satoshis,
2009-
&descriptor.channel_keys_id,
2010-
);
1990+
let signer = self.derive_channel_keys(&descriptor.channel_keys_id);
20111991
keys_cache = Some((signer, descriptor.channel_keys_id));
20121992
}
20131993
let witness = keys_cache.as_ref().unwrap().0.sign_counterparty_payment_input(
@@ -2024,10 +2004,7 @@ impl KeysManager {
20242004
|| keys_cache.as_ref().unwrap().1 != descriptor.channel_keys_id
20252005
{
20262006
keys_cache = Some((
2027-
self.derive_channel_keys(
2028-
descriptor.channel_value_satoshis,
2029-
&descriptor.channel_keys_id,
2030-
),
2007+
self.derive_channel_keys(&descriptor.channel_keys_id),
20312008
descriptor.channel_keys_id,
20322009
));
20332010
}
@@ -2196,9 +2173,7 @@ impl SignerProvider for KeysManager {
21962173
#[cfg(taproot)]
21972174
type TaprootSigner = InMemorySigner;
21982175

2199-
fn generate_channel_keys_id(
2200-
&self, _inbound: bool, _channel_value_satoshis: u64, user_channel_id: u128,
2201-
) -> [u8; 32] {
2176+
fn generate_channel_keys_id(&self, _inbound: bool, user_channel_id: u128) -> [u8; 32] {
22022177
let child_idx = self.channel_child_index.fetch_add(1, Ordering::AcqRel);
22032178
// `child_idx` is the only thing guaranteed to make each channel unique without a restart
22042179
// (though `user_channel_id` should help, depending on user behavior). If it manages to
@@ -2214,10 +2189,8 @@ impl SignerProvider for KeysManager {
22142189
id
22152190
}
22162191

2217-
fn derive_channel_signer(
2218-
&self, channel_value_satoshis: u64, channel_keys_id: [u8; 32],
2219-
) -> Self::EcdsaSigner {
2220-
self.derive_channel_keys(channel_value_satoshis, &channel_keys_id)
2192+
fn derive_channel_signer(&self, channel_keys_id: [u8; 32]) -> Self::EcdsaSigner {
2193+
self.derive_channel_keys(&channel_keys_id)
22212194
}
22222195

22232196
fn read_chan_signer(&self, reader: &[u8]) -> Result<Self::EcdsaSigner, DecodeError> {
@@ -2341,16 +2314,12 @@ impl SignerProvider for PhantomKeysManager {
23412314
#[cfg(taproot)]
23422315
type TaprootSigner = InMemorySigner;
23432316

2344-
fn generate_channel_keys_id(
2345-
&self, inbound: bool, channel_value_satoshis: u64, user_channel_id: u128,
2346-
) -> [u8; 32] {
2347-
self.inner.generate_channel_keys_id(inbound, channel_value_satoshis, user_channel_id)
2317+
fn generate_channel_keys_id(&self, inbound: bool, user_channel_id: u128) -> [u8; 32] {
2318+
self.inner.generate_channel_keys_id(inbound, user_channel_id)
23482319
}
23492320

2350-
fn derive_channel_signer(
2351-
&self, channel_value_satoshis: u64, channel_keys_id: [u8; 32],
2352-
) -> Self::EcdsaSigner {
2353-
self.inner.derive_channel_signer(channel_value_satoshis, channel_keys_id)
2321+
fn derive_channel_signer(&self, channel_keys_id: [u8; 32]) -> Self::EcdsaSigner {
2322+
self.inner.derive_channel_signer(channel_keys_id)
23542323
}
23552324

23562325
fn read_chan_signer(&self, reader: &[u8]) -> Result<Self::EcdsaSigner, DecodeError> {
@@ -2398,10 +2367,8 @@ impl PhantomKeysManager {
23982367
}
23992368

24002369
/// See [`KeysManager::derive_channel_keys`] for documentation on this method.
2401-
pub fn derive_channel_keys(
2402-
&self, channel_value_satoshis: u64, params: &[u8; 32],
2403-
) -> InMemorySigner {
2404-
self.inner.derive_channel_keys(channel_value_satoshis, params)
2370+
pub fn derive_channel_keys(&self, params: &[u8; 32]) -> InMemorySigner {
2371+
self.inner.derive_channel_keys(params)
24052372
}
24062373

24072374
/// Gets the "node_id" secret key used to sign gossip announcements, decode onion data, etc.

lightning/src/util/test_utils.rs

+8-18
Original file line numberDiff line numberDiff line change
@@ -358,15 +358,11 @@ impl SignerProvider for OnlyReadsKeysInterface {
358358
#[cfg(taproot)]
359359
type TaprootSigner = TestChannelSigner;
360360

361-
fn generate_channel_keys_id(
362-
&self, _inbound: bool, _channel_value_satoshis: u64, _user_channel_id: u128,
363-
) -> [u8; 32] {
361+
fn generate_channel_keys_id(&self, _inbound: bool, _user_channel_id: u128) -> [u8; 32] {
364362
unreachable!();
365363
}
366364

367-
fn derive_channel_signer(
368-
&self, _channel_value_satoshis: u64, _channel_keys_id: [u8; 32],
369-
) -> Self::EcdsaSigner {
365+
fn derive_channel_signer(&self, _channel_keys_id: [u8; 32]) -> Self::EcdsaSigner {
370366
unreachable!();
371367
}
372368

@@ -1554,16 +1550,12 @@ impl SignerProvider for TestKeysInterface {
15541550
#[cfg(taproot)]
15551551
type TaprootSigner = TestChannelSigner;
15561552

1557-
fn generate_channel_keys_id(
1558-
&self, inbound: bool, channel_value_satoshis: u64, user_channel_id: u128,
1559-
) -> [u8; 32] {
1560-
self.backing.generate_channel_keys_id(inbound, channel_value_satoshis, user_channel_id)
1553+
fn generate_channel_keys_id(&self, inbound: bool, user_channel_id: u128) -> [u8; 32] {
1554+
self.backing.generate_channel_keys_id(inbound, user_channel_id)
15611555
}
15621556

1563-
fn derive_channel_signer(
1564-
&self, channel_value_satoshis: u64, channel_keys_id: [u8; 32],
1565-
) -> TestChannelSigner {
1566-
let keys = self.backing.derive_channel_signer(channel_value_satoshis, channel_keys_id);
1557+
fn derive_channel_signer(&self, channel_keys_id: [u8; 32]) -> TestChannelSigner {
1558+
let keys = self.backing.derive_channel_signer(channel_keys_id);
15671559
let state = self.make_enforcement_state_cell(keys.commitment_seed);
15681560
let signer =
15691561
TestChannelSigner::new_with_revoked(keys, state, self.disable_revocation_policy_check);
@@ -1629,10 +1621,8 @@ impl TestKeysInterface {
16291621
self
16301622
}
16311623

1632-
pub fn derive_channel_keys(
1633-
&self, channel_value_satoshis: u64, id: &[u8; 32],
1634-
) -> TestChannelSigner {
1635-
self.derive_channel_signer(channel_value_satoshis, *id)
1624+
pub fn derive_channel_keys(&self, id: &[u8; 32]) -> TestChannelSigner {
1625+
self.derive_channel_signer(*id)
16361626
}
16371627

16381628
fn make_enforcement_state_cell(

0 commit comments

Comments
 (0)