pub struct PhantomKeysManager { /* private fields */ }
Expand description

Similar to KeysManager, but allows the node using this struct to receive phantom node payments.

A phantom node payment is a payment made to a phantom invoice, which is an invoice that can be paid to one of multiple nodes. This works because we encode the invoice route hints such that LDK will recognize an incoming payment as destined for a phantom node, and collect the payment itself without ever needing to forward to this fake node.

Phantom node payments are useful for load balancing between multiple LDK nodes. They also provide some fault tolerance, because payers will automatically retry paying other provided nodes in the case that one node goes down.

Note that multi-path payments are not supported in phantom invoices for security reasons. Switching between this struct and KeysManager will invalidate any previously issued invoices and attempts to pay previous invoices will fail.

Implementations

Constructs a PhantomKeysManager given a 32-byte seed and an additional cross_node_seed that is shared across all nodes that intend to participate in phantom node payments together.

See KeysManager::new for more information on seed, starting_time_secs, and starting_time_nanos.

cross_node_seed must be the same across all phantom payment-receiving nodes and also the same across restarts, or else inbound payments may fail.

See KeysManager::spend_spendable_outputs for documentation on this method.

See KeysManager::derive_channel_keys for documentation on this method.

Trait Implementations

A type which implements Sign which will be returned by get_channel_signer.

Get node secret key based on the provided Recipient. Read more

Get secret key material as bytes for use in encrypting and decrypting inbound payment data. Read more

Get a script pubkey which we send funds to when claiming on-chain contestable outputs. Read more

Get a script pubkey which we will send funds to 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 ChannelMonitors and ChannelManagers). 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. By parameterizing by the raw invoice bytes 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. The hrp is ascii bytes, while the invoice data is base32. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.