Skip to main content

DetectedOutput

Struct DetectedOutput 

Source
pub struct DetectedOutput {
    pub outpoint: OutPoint,
    pub amount: Amount,
    pub script_pubkey: ScriptBuf,
    pub label: Option<u32>,
    /* private fields */
}
Expand description

A Silent Payment output detected during transaction scanning.

Created by crate::BlockScanner::scan_transaction when an output matches the receiver’s keys (with or without a label).

§Spending

Call derive_spend_key with the receiver’s spend secret key to obtain the tweaked private key for signing. The returned SecretKey must be erased after use.

Fields§

§outpoint: OutPoint

The outpoint (txid:vout) identifying this output.

§amount: Amount

The output amount in satoshis.

§script_pubkey: ScriptBuf

The output’s scriptPubKey (P2TR).

§label: Option<u32>

The label index if this output matched via a labeled address.

Implementations§

Source§

impl DetectedOutput

Source

pub fn new( outpoint: OutPoint, amount: Amount, script_pubkey: ScriptBuf, tweak: SecretKey, label: Option<u32>, ) -> DetectedOutput

Create a new detected output.

Source

pub fn derive_spend_key( &self, spend_secret: &SpendSecretKey, secp: &Secp256k1<All>, ) -> Result<SecretKey, ReceiveError>

Derive the tweaked private key for spending this output.

Computes spend_key = b_spend + tweak where the tweak already includes the label scalar if the output was received via a labeled address.

§Security (SEC-01)

The returned SecretKey contains the full spending private key. The caller must erase it via non_secure_erase() after signing.

§Errors

Returns ReceiveError::SpendKeyDerivation if:

  • The tweak addition overflows the curve order
  • The derived public key does not match the output script
Source

pub fn tweak_secret_key(&self) -> &SecretKey

Access the tweak scalar for advanced use (e.g., PSBT Phase 3).

Trait Implementations§

Source§

impl Clone for DetectedOutput

Source§

fn clone(&self) -> DetectedOutput

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for DetectedOutput

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more

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
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
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

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>,

Source§

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.