pub struct Script(/* private fields */);
Expand description

A Bitcoin script

Implementations§

§

impl Script

pub fn new() -> Script

Creates a new empty script

pub fn len(&self) -> usize

The length in bytes of the script

pub fn is_empty(&self) -> bool

Whether the script is the empty script

pub fn as_bytes(&self) -> &[u8]

Returns the script data

pub fn to_bytes(&self) -> Vec<u8>

Returns a copy of the script data

pub fn into_bytes(self) -> Vec<u8>

Convert the script into a byte vector

pub fn to_p2sh(&self) -> Script

Compute the P2SH output corresponding to this redeem script

pub fn to_v0_p2wsh(&self) -> Script

Compute the P2WSH output corresponding to this witnessScript (aka the “witness redeem script”)

pub fn is_p2sh(&self) -> bool

Checks whether a script pubkey is a p2sh output

pub fn is_p2pkh(&self) -> bool

Checks whether a script pubkey is a p2pkh output

pub fn is_p2pk(&self) -> bool

Checks whether a script pubkey is a p2pkh output

pub fn is_v0_p2wsh(&self) -> bool

Checks whether a script pubkey is a p2wsh output

pub fn is_v0_p2wpkh(&self) -> bool

Checks whether a script pubkey is a p2wpkh output

pub fn is_op_return(&self) -> bool

Check if this is an OP_RETURN output

pub fn is_provably_unspendable(&self) -> bool

Whether a script can be proven to have no satisfying input

pub fn iter(&self, enforce_minimal: bool) -> Instructions<'_>

Iterate over the script in the form of Instructions, which are an enum covering opcodes, datapushes and errors. At most one error will be returned and then the iterator will end. To instead iterate over the script as sequence of bytes, treat it as a slice using script[..] or convert it to a vector using into_bytes().

Trait Implementations§

§

impl Clone for Script

§

fn clone(&self) -> Script

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<D> ConsensusDecodable<D> for Scriptwhere D: SimpleDecoder,

§

fn consensus_decode(d: &mut D) -> Result<Script, Error>

Decode an object with a well-defined format
§

impl<S> ConsensusEncodable<S> for Scriptwhere S: SimpleEncoder,

§

fn consensus_encode(&self, s: &mut S) -> Result<(), Error>

Encode an object with a well-defined format
§

impl Debug for Script

§

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

Formats the value using the given formatter. Read more
§

impl Default for Script

§

fn default() -> Script

Returns the “default value” for a type. Read more
§

impl Display for Script

§

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

Formats the value using the given formatter. Read more
§

impl From<Vec<u8>> for Script

Creates a new script from an existing vector

§

fn from(v: Vec<u8>) -> Script

Converts to this type from the input type.
§

impl Hash for Script

§

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 Index<Range<usize>> for Script

§

type Output = [u8]

The returned type after indexing.
§

fn index(&self, index: Range<usize>) -> &[u8]

Performs the indexing (container[index]) operation. Read more
§

impl Index<RangeFrom<usize>> for Script

§

type Output = [u8]

The returned type after indexing.
§

fn index(&self, index: RangeFrom<usize>) -> &[u8]

Performs the indexing (container[index]) operation. Read more
§

impl Index<RangeFull> for Script

§

type Output = [u8]

The returned type after indexing.
§

fn index(&self, _: RangeFull) -> &[u8]

Performs the indexing (container[index]) operation. Read more
§

impl Index<RangeTo<usize>> for Script

§

type Output = [u8]

The returned type after indexing.
§

fn index(&self, index: RangeTo<usize>) -> &[u8]

Performs the indexing (container[index]) operation. Read more
§

impl LowerHex for Script

§

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

Formats the value using the given formatter.
§

impl Ord for Script

§

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

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

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

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

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

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

fn clamp(self, min: Self, max: Self) -> Selfwhere Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
§

impl PartialEq for Script

§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

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

impl PartialOrd for Script

§

fn partial_cmp(&self, other: &Script) -> 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

This method 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

This method 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

This method 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

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

impl UpperHex for Script

§

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

Formats the value using the given formatter.
§

impl Eq for Script

§

impl StructuralEq for Script

§

impl StructuralPartialEq for Script

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
§

impl<T> CallHasher for Twhere T: Hash + ?Sized,

§

default fn get_hash<H, B>(value: &H, build_hasher: &B) -> u64where H: Hash + ?Sized, B: BuildHasher,

§

impl<T> Clear for Twhere T: InitializableFromZeroed + ?Sized,

§

fn clear(&mut self)

Completely overwrites this value.
source§

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

source§

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

Compare self to key and return true if they are equal.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> InitializableFromZeroed for Twhere T: Default,

§

unsafe fn initialize(place: *mut T)

Called to initialize a place to a valid value, after it is set to all-bits-zero. Read more
source§

impl<T> Instrument for T

source§

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

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

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 Twhere 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> Same for T

§

type Output = T

Should always be Self
§

impl<S> SliceExt for Swhere S: Index<RangeFull> + ?Sized,

§

fn utf8char_indices(&self) -> Utf8CharDecoder<'_>where <S as Index<RangeFull>>::Output: Borrow<[u8]>,

Decode u8 slices as UTF-8 and iterate over the codepoints as Utf8Chars, Read more
§

fn utf16char_indices(&self) -> Utf16CharDecoder<'_>where <S as Index<RangeFull>>::Output: Borrow<[u16]>,

Decode u16 slices as UTF-16 and iterate over the codepoints as Utf16Chars, Read more
source§

impl<T> ToOwned for Twhere T: Clone,

§

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> ToString for Twhere T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for Twhere 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 Twhere 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 Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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