Package org.ldk.structs
Class KeysManager
- java.lang.Object
-
- org.ldk.structs.KeysManager
-
public class KeysManager extends Object
Simple implementation of [`EntropySource`], [`NodeSigner`], and [`SignerProvider`] 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'. Unilateral closes may use seed/1'. Cooperative closes may use seed/2'. The two close keys may be needed to claim on-chain funds! This struct cannot be used for nodes that wish to support receiving phantom payments; [`PhantomKeysManager`] must be used instead. Note that switching between this struct and [`PhantomKeysManager`] will invalidate any previously issued invoices and attempts to pay previous invoices will fail.
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description EntropySource
as_EntropySource()
Constructs a new EntropySource which calls the relevant methods on this_arg.NodeSigner
as_NodeSigner()
Constructs a new NodeSigner which calls the relevant methods on this_arg.SignerProvider
as_SignerProvider()
Constructs a new SignerProvider which calls the relevant methods on this_arg.InMemorySigner
derive_channel_keys(long channel_value_satoshis, byte[] params)
Derive an old [`WriteableEcdsaChannelSigner`] containing per-channel secrets based on a key derivation parameters.protected void
finalize()
byte[]
get_node_secret_key()
Gets the \"node_id\" secret key used to sign gossip announcements, decode onion data, etc.static KeysManager
of(byte[] seed, long starting_time_secs, int starting_time_nanos)
Constructs a [`KeysManager`] from a 32-byte seed.Result_TransactionNoneZ
spend_spendable_outputs(SpendableOutputDescriptor[] descriptors, TxOut[] outputs, byte[] change_destination_script, int feerate_sat_per_1000_weight)
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).
-
-
-
Method Detail
-
finalize
protected void finalize() throws Throwable
-
of
public static KeysManager of(byte[] seed, long starting_time_secs, int starting_time_nanos)
Constructs a [`KeysManager`] from a 32-byte seed. If the seed is in some way biased (e.g., 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. [`ChannelMonitor`]: crate::chain::channelmonitor::ChannelMonitor
-
get_node_secret_key
public byte[] get_node_secret_key()
Gets the \"node_id\" secret key used to sign gossip announcements, decode onion data, etc.
-
derive_channel_keys
public InMemorySigner derive_channel_keys(long channel_value_satoshis, byte[] params)
Derive an old [`WriteableEcdsaChannelSigner`] containing per-channel secrets based on a key derivation parameters.
-
spend_spendable_outputs
public Result_TransactionNoneZ spend_spendable_outputs(SpendableOutputDescriptor[] descriptors, TxOut[] outputs, byte[] change_destination_script, int feerate_sat_per_1000_weight)
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, if a descriptor was duplicated, or if an output descriptor `script_pubkey` does not match the one we can spend. 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`].
-
as_EntropySource
public EntropySource as_EntropySource()
Constructs a new EntropySource which calls the relevant methods on this_arg. This copies the `inner` pointer in this_arg and thus the returned EntropySource must be freed before this_arg is
-
as_NodeSigner
public NodeSigner as_NodeSigner()
Constructs a new NodeSigner which calls the relevant methods on this_arg. This copies the `inner` pointer in this_arg and thus the returned NodeSigner must be freed before this_arg is
-
as_SignerProvider
public SignerProvider as_SignerProvider()
Constructs a new SignerProvider which calls the relevant methods on this_arg. This copies the `inner` pointer in this_arg and thus the returned SignerProvider must be freed before this_arg is
-
-