bdk_chain::bitcoin

Struct TxOut

pub struct TxOut {
    pub value: Amount,
    pub script_pubkey: ScriptBuf,
}
Expand description

Bitcoin transaction output.

Defines new coins to be created as a result of the transaction, along with spending conditions (“script”, aka “output script”), which an input spending it must satisfy.

An output that is not yet spent by an input is called Unspent Transaction Output (“UTXO”).

§Bitcoin Core References

Fields§

§value: Amount

The value of the output, in satoshis.

§script_pubkey: ScriptBuf

The script which must be satisfied for the output to be spent.

Implementations§

§

impl TxOut

pub const NULL: TxOut = _

This is used as a “null txout” in consensus signing code.

pub fn weight(&self) -> Weight

The weight of this output.

Keep in mind that when adding a TxOut to a Transaction the total weight of the transaction might increase more than TxOut::weight. This happens when the new output added causes the output length VarInt to increase its encoding length.

§Panics

If output size * 4 overflows, this should never happen under normal conditions. Use Weght::from_vb_checked(self.size() as u64) if you are concerned.

pub fn size(&self) -> usize

Returns the total number of bytes that this output contributes to a transaction.

There is no difference between base size vs total size for outputs.

pub fn minimal_non_dust(script_pubkey: ScriptBuf) -> TxOut

Creates a TxOut with given script and the smallest possible value that is not dust per current Core policy.

Dust depends on the -dustrelayfee value of the Bitcoin Core node you are broadcasting to. This function uses the default value of 0.00003 BTC/kB (3 sat/vByte).

To use a custom value, use minimal_non_dust_custom.

pub fn minimal_non_dust_custom( script_pubkey: ScriptBuf, dust_relay_fee: FeeRate, ) -> TxOut

Creates a TxOut with given script and the smallest possible value that is not dust per current Core policy.

Dust depends on the -dustrelayfee value of the Bitcoin Core node you are broadcasting to. This function lets you set the fee rate used in dust calculation.

The current default value in Bitcoin Core (as of v26) is 3 sat/vByte.

To use the default Bitcoin Core value, use minimal_non_dust.

Trait Implementations§

§

impl Clone for TxOut

§

fn clone(&self) -> TxOut

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

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

Performs copy-assignment from source. Read more
§

impl Debug for TxOut

§

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

Formats the value using the given formatter. Read more
§

impl Decodable for TxOut

§

fn consensus_decode_from_finite_reader<R>(r: &mut R) -> Result<TxOut, Error>
where R: Read + ?Sized,

Decode Self from a size-limited reader. Read more
§

fn consensus_decode<R>(r: &mut R) -> Result<TxOut, Error>
where R: Read + ?Sized,

Decode an object with a well-defined format. Read more
§

impl<'de> Deserialize<'de> for TxOut

§

fn deserialize<__D>( __deserializer: __D, ) -> Result<TxOut, <__D as Deserializer<'de>>::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
§

impl Encodable for TxOut

§

fn consensus_encode<R>(&self, r: &mut R) -> Result<usize, Error>
where R: Write + ?Sized,

Encodes an object with a well-defined format. Read more
§

impl Hash for TxOut

§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
§

impl Ord for TxOut

§

fn cmp(&self, other: &TxOut) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
§

impl PartialEq for TxOut

§

fn eq(&self, other: &TxOut) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
§

impl PartialOrd for TxOut

§

fn partial_cmp(&self, other: &TxOut) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
§

impl Serialize for TxOut

§

fn serialize<__S>( &self, __serializer: __S, ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
§

impl Eq for TxOut

§

impl StructuralPartialEq for TxOut

Auto Trait Implementations§

§

impl Freeze for TxOut

§

impl RefUnwindSafe for TxOut

§

impl Send for TxOut

§

impl Sync for TxOut

§

impl Unpin for TxOut

§

impl UnwindSafe for TxOut

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, dst: *mut u8)

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

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. 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.
§

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

§

fn vzip(self) -> V

Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,