X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Fchain%2Fkeysinterface.rs;h=dc46880d1489bb59afbef131de551feae9b68c26;hb=3e89cc7e085023b7e3c5ccd7f444700684e97dd2;hp=1426ff5ce887f4d0ef440874ab9df00849de978a;hpb=03de0598afd032e9fd5dbbaca0aabc6a367ce4f5;p=rust-lightning diff --git a/lightning/src/chain/keysinterface.rs b/lightning/src/chain/keysinterface.rs index 1426ff5c..dc46880d 100644 --- a/lightning/src/chain/keysinterface.rs +++ b/lightning/src/chain/keysinterface.rs @@ -395,9 +395,12 @@ pub trait BaseSign { fn sign_channel_announcement(&self, msg: &UnsignedChannelAnnouncement, secp_ctx: &Secp256k1) -> Result<(Signature, Signature), ()>; /// Set the counterparty static channel data, including basepoints, - /// `counterparty_selected`/`holder_selected_contest_delay` and funding outpoint. Since these - /// are static channel data, they MUST NOT be allowed to change to different values once set, - /// as LDK may call this method more than once. + /// `counterparty_selected`/`holder_selected_contest_delay` and funding outpoint. + /// + /// This data is static, and will never change for a channel once set. For a given [`BaseSign`] + /// instance, LDK will call this method exactly once - either immediately after construction + /// (not including if done via [`KeysInterface::read_chan_signer`]) or when the funding + /// information has been generated. /// /// channel_parameters.is_populated() MUST be true. fn provide_channel_parameters(&mut self, channel_parameters: &ChannelTransactionParameters); @@ -470,8 +473,10 @@ pub trait KeysInterface { /// This method should return a different value each time it is called, to avoid linking /// on-chain funds across channels as controlled to the same user. fn get_shutdown_scriptpubkey(&self) -> ShutdownScript; - /// Get a new set of [`Sign`] for per-channel secrets. These MUST be unique even if you - /// restarted with some stale data! + /// Generates a unique `channel_keys_id` that can be used to obtain a [`Self::Signer`] through + /// [`KeysInterface::derive_channel_signer`]. The `user_channel_id` is provided to allow + /// implementations of [`KeysInterface`] to maintain a mapping between it and the generated + /// `channel_keys_id`. /// /// This method must return a different value each time it is called. fn generate_channel_keys_id(&self, inbound: bool, channel_value_satoshis: u64, user_channel_id: u128) -> [u8; 32];