pub struct TrustedCommitmentTransaction<'a> { /* private fields */ }
Expand description

A wrapper on CommitmentTransaction indicating that the derived fields (the built bitcoin transaction and the transaction creation keys) are trusted.

See trust() and verify() functions on CommitmentTransaction.

This structure implements Deref.

Implementations§

§

impl<'a> TrustedCommitmentTransaction<'a>

pub fn txid(&self) -> Txid

The transaction ID of the built Bitcoin transaction

pub fn built_transaction(&self) -> &'a BuiltCommitmentTransaction

The pre-built Bitcoin commitment transaction

pub fn keys(&self) -> &'a TxCreationKeys

The pre-calculated transaction creation public keys.

pub fn channel_type_features(&self) -> &'a Features<ChannelTypeContext>

Should anchors be used.

pub fn get_htlc_sigs<T, ES>( &self, htlc_base_key: &SecretKey, channel_parameters: &DirectedChannelTransactionParameters<'_>, entropy_source: &ES, secp_ctx: &Secp256k1<T>, ) -> Result<Vec<Signature>, ()>
where T: Signing, ES: Deref, <ES as Deref>::Target: EntropySource,

Get a signature for each HTLC which was included in the commitment transaction (ie for which HTLCOutputInCommitment::transaction_output_index.is_some()).

The returned Vec has one entry for each HTLC, and in the same order.

This function is only valid in the holder commitment context, it always uses EcdsaSighashType::All.

pub fn revokeable_output_index(&self) -> Option<usize>

Returns the index of the revokeable output, i.e. the to_local output sending funds to the broadcaster, in the built transaction, if any exists.

There are two cases where this may return None:

  • The balance of the revokeable output is below the dust limit (only found on commitments early in the channel’s lifetime, i.e. before the channel reserve is met).
  • This commitment was created before LDK 0.0.117. In this case, the commitment transaction previously didn’t contain enough information to locate the revokeable output.

pub fn build_to_local_justice_tx( &self, feerate_per_kw: u64, destination_script: Script, ) -> Result<Transaction, ()>

Helper method to build an unsigned justice transaction spending the revokeable to_local output to a destination script. Fee estimation accounts for the expected revocation witness data that will be added when signed.

This method will error if the given fee rate results in a fee greater than the value of the output being spent, or if there exists no revokeable to_local output on this commitment transaction. See Self::revokeable_output_index for more details.

The built transaction will allow fee bumping with RBF, and this method takes feerate_per_kw as an input such that multiple copies of a justice transaction at different fee rates may be built.

Methods from Deref<Target = CommitmentTransaction>§

pub fn commitment_number(&self) -> u64

The backwards-counting commitment number

pub fn per_commitment_point(&self) -> PublicKey

The per commitment point used by the broadcaster.

pub fn to_broadcaster_value_sat(&self) -> u64

The value to be sent to the broadcaster

pub fn to_countersignatory_value_sat(&self) -> u64

The value to be sent to the counterparty

pub fn feerate_per_kw(&self) -> u32

The feerate paid per 1000-weight-unit in this commitment transaction.

pub fn htlcs(&self) -> &Vec<HTLCOutputInCommitment>

The non-dust HTLCs (direction, amt, height expiration, hash, transaction output index) which were included in this commitment transaction in output order. The transaction index is always populated.

This is not exported to bindings users as we cannot currently convert Vec references to/from C, though we should expose a less effecient version which creates a Vec of references in the future.

pub fn trust(&self) -> TrustedCommitmentTransaction<'_>

Trust our pre-built transaction and derived transaction creation public keys.

Applies a wrapper which allows access to these fields.

This should only be used if you fully trust the builder of this object. It should not be used by an external signer - instead use the verify function.

pub fn verify<T>( &self, channel_parameters: &DirectedChannelTransactionParameters<'_>, broadcaster_keys: &ChannelPublicKeys, countersignatory_keys: &ChannelPublicKeys, secp_ctx: &Secp256k1<T>, ) -> Result<TrustedCommitmentTransaction<'_>, ()>
where T: Signing + Verification,

Verify our pre-built transaction and derived transaction creation public keys.

Applies a wrapper which allows access to these fields.

An external validating signer must call this method before signing or using the built transaction.

Trait Implementations§

§

impl<'a> Deref for TrustedCommitmentTransaction<'a>

§

type Target = CommitmentTransaction

The resulting type after dereferencing.
§

fn deref(&self) -> &<TrustedCommitmentTransaction<'a> as Deref>::Target

Dereferences the value.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Any for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

§

fn type_name(&self) -> &'static str

§

impl<T> AnySync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

§

impl<T> AsAny for T
where T: Any,

§

fn as_any(&self) -> &(dyn Any + 'static)

§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

§

fn type_name(&self) -> &'static str

Gets the type name of self
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Downcast for T
where T: AsAny + ?Sized,

§

fn is<T>(&self) -> bool
where T: AsAny,

Returns true if the boxed type is the same as T. Read more
§

fn downcast_ref<T>(&self) -> Option<&T>
where T: AsAny,

Forward to the method defined on the type Any.
§

fn downcast_mut<T>(&mut self) -> Option<&mut T>
where T: AsAny,

Forward to the method defined on the type Any.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

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

source§

impl<T> IntoRequest<T> for T

source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> DartSafe for T