Struct lightning::chain::keysinterface::KeysManager [−][src]
pub struct KeysManager { /* fields omitted */ }
Expand description
Simple KeysInterface implementor that takes a 32-byte seed for use as a BIP 32 extended key and derives keys from that.
Your node_id is seed/0’ ChannelMonitor closes may use seed/1’ Cooperative closes may use seed/2’ The two close keys may be needed to claim on-chain funds!
Implementations
Constructs a KeysManager from a 32-byte seed. If the seed is in some way biased (eg your CSRNG is busted) this may panic (but more importantly, you will possibly lose funds). starting_time isn’t strictly required to actually be a time, but it must absolutely, without a doubt, be unique to this instance. ie if you start multiple times with the same seed, starting_time must be unique to each run. Thus, the easiest way to achieve this is to simply use the current time (with very high precision).
The seed MUST be backed up safely prior to use so that the keys can be re-created, however, obviously, starting_time should be unique every time you reload the library - it is only used to generate new ephemeral key data (which will be stored by the individual channel if necessary).
Note that the seed is required to recover certain on-chain funds independent of ChannelMonitor data, though a current copy of ChannelMonitor data is also required for any channel, and some on-chain during-closing funds.
Note that until the 0.1 release there is no guarantee of backward compatibility between versions. Once the library is more fully supported, the docs will be updated to include a detailed description of the guarantee.
pub fn derive_channel_keys(
&self,
channel_value_satoshis: u64,
params: &[u8; 32]
) -> InMemorySigner
[src]
pub fn derive_channel_keys(
&self,
channel_value_satoshis: u64,
params: &[u8; 32]
) -> InMemorySigner
[src]Derive an old Sign containing per-channel secrets based on a key derivation parameters.
Key derivation parameters are accessible through a per-channel secrets Sign::channel_keys_id and is provided inside DynamicOuputP2WSH in case of onchain output detection for which a corresponding delayed_payment_key must be derived.
pub fn spend_spendable_outputs<C: Signing>(
&self,
descriptors: &[&SpendableOutputDescriptor],
outputs: Vec<TxOut>,
change_destination_script: Script,
feerate_sat_per_1000_weight: u32,
secp_ctx: &Secp256k1<C>
) -> Result<Transaction, ()>
[src]
pub fn spend_spendable_outputs<C: Signing>(
&self,
descriptors: &[&SpendableOutputDescriptor],
outputs: Vec<TxOut>,
change_destination_script: Script,
feerate_sat_per_1000_weight: u32,
secp_ctx: &Secp256k1<C>
) -> Result<Transaction, ()>
[src]Creates a Transaction which spends the given descriptors to the given outputs, plus an output to the given change destination (if sufficient change value remains). The transaction will have a feerate, at least, of the given value.
Returns Err(())
if the output value is greater than the input value minus required fee or
if a descriptor was duplicated.
We do not enforce that outputs meet the dust limit or that any output scripts are standard.
May panic if the SpendableOutputDescriptor
s were not generated by Channels which used
this KeysManager or one of the InMemorySigner
created by this KeysManager.
Trait Implementations
type Signer = InMemorySigner
type Signer = InMemorySigner
A type which implements Sign which will be returned by get_channel_signer.
Get node secret key (aka node_id or network_key). Read more
Get a script pubkey which we send funds to when claiming on-chain contestable outputs. Read more
Get a public key which we will send funds to (in the form of a P2WPKH output) when closing a channel. Read more
Get a new set of Sign for per-channel secrets. These MUST be unique even if you restarted with some stale data! Read more
Gets a unique, cryptographically-secure, random 32 byte value. This is used for encrypting onion packets and for temporary channel IDs. There is no requirement that these be persisted anywhere, though they must be unique across restarts. Read more
Reads a Signer
for this KeysInterface
from the given input stream.
This is only called during deserialization of other objects which contain
Sign
-implementing objects (ie ChannelMonitor
s and ChannelManager
s).
The bytes are exactly those which <Self::Signer as Writeable>::write()
writes, and
contain no versioning scheme. You may wish to include your own version prefix and ensure
you’ve read all of the provided bytes to ensure no corruption occurred. Read more
Sign an invoice’s preimage (note that this is the preimage of the invoice, not the HTLC’s preimage). By parameterizing by the preimage instead of the hash, we allow implementors of this trait to parse the invoice and make sure they’re signing what they expect, rather than blindly signing the hash. Read more
Auto Trait Implementations
impl RefUnwindSafe for KeysManager
impl Send for KeysManager
impl Sync for KeysManager
impl Unpin for KeysManager
impl UnwindSafe for KeysManager