pub enum SpendableOutputDescriptor {
StaticOutput {
outpoint: OutPoint,
output: TxOut,
},
DelayedPaymentOutput(DelayedPaymentOutputDescriptor),
StaticPaymentOutput(StaticPaymentOutputDescriptor),
}
Expand description
When on-chain outputs are created by rust-lightning (which our counterparty is not able to claim at any point in the future) an event is generated which you must track and be able to spend on-chain. The information needed to do this is provided in this enum, including the outpoint describing which txid and output index is available, the full output which exists at that txid/index, and any keys or other information required to sign.
Variants
StaticOutput
Fields
outpoint: OutPoint
The outpoint which is spendable
output: TxOut
The output which is referenced by the given outpoint.
An output to a script which was provided via KeysInterface directly, either from
get_destination_script()
or get_shutdown_scriptpubkey()
, thus you should already know
how to spend it. No secret keys are provided as rust-lightning was never given any key.
These may include outputs from a transaction punishing our counterparty or claiming an HTLC
on-chain using the payment preimage or after it has timed out.
DelayedPaymentOutput(DelayedPaymentOutputDescriptor)
An output to a P2WSH script which can be spent with a single signature after a CSV delay.
The witness in the spending input should be:
<BIP 143 signature>
Note that the nSequence field in the spending input must be set to to_self_delay (which means the transaction is not broadcastable until at least to_self_delay blocks after the outpoint confirms).
These are generally the result of a “revocable” output to us, spendable only by us unless it is an output from an old state which we broadcast (which should never happen).
To derive the delayed_payment key which is used to sign for this input, you must pass the holder delayed_payment_base_key (ie the private key which corresponds to the pubkey in Sign::pubkeys().delayed_payment_basepoint) and the provided per_commitment_point to chan_utils::derive_private_key. The public key can be generated without the secret key using chan_utils::derive_public_key and only the delayed_payment_basepoint which appears in Sign::pubkeys().
To derive the revocation_pubkey provided here (which is used in the witness script generation), you must pass the counterparty revocation_basepoint (which appears in the call to Sign::ready_channel) and the provided per_commitment point to chan_utils::derive_public_revocation_key.
The witness script which is hashed and included in the output script_pubkey may be regenerated by passing the revocation_pubkey (derived as above), our delayed_payment pubkey (derived as above), and the to_self_delay contained here to chan_utils::get_revokeable_redeemscript.
StaticPaymentOutput(StaticPaymentOutputDescriptor)
An output to a P2WPKH, spendable exclusively by our payment key (ie the private key which
corresponds to the public key in Sign::pubkeys().payment_point).
The witness in the spending input, is, thus, simply:
<BIP 143 signature>
These are generally the result of our counterparty having broadcast the current state, allowing us to claim the non-HTLC-encumbered outputs immediately.
Trait Implementations
sourceimpl Clone for SpendableOutputDescriptor
impl Clone for SpendableOutputDescriptor
sourcefn clone(&self) -> SpendableOutputDescriptor
fn clone(&self) -> SpendableOutputDescriptor
1.0.0 · sourceconst fn clone_from(&mut self, source: &Self)
const fn clone_from(&mut self, source: &Self)
source
. Read moresourceimpl Debug for SpendableOutputDescriptor
impl Debug for SpendableOutputDescriptor
sourceimpl PartialEq<SpendableOutputDescriptor> for SpendableOutputDescriptor
impl PartialEq<SpendableOutputDescriptor> for SpendableOutputDescriptor
sourcefn eq(&self, other: &SpendableOutputDescriptor) -> bool
fn eq(&self, other: &SpendableOutputDescriptor) -> bool
sourceimpl Readable for SpendableOutputDescriptor
impl Readable for SpendableOutputDescriptor
sourceimpl Writeable for SpendableOutputDescriptor
impl Writeable for SpendableOutputDescriptor
sourcefn write<W: Writer>(&self, writer: &mut W) -> Result<(), Error>
fn write<W: Writer>(&self, writer: &mut W) -> Result<(), Error>
sourcefn encode(&self) -> Vec<u8>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A>where
A: Allocator,
fn encode(&self) -> Vec<u8>ⓘNotable traits for Vec<u8, A>impl<A> Write for Vec<u8, A>where
A: Allocator,
A: Allocator,