Enum grin_core::core::transaction::KernelFeatures

source ·
pub enum KernelFeatures {
    Plain {
        fee: FeeFields,
    },
    Coinbase,
    HeightLocked {
        fee: FeeFields,
        lock_height: u64,
    },
    NoRecentDuplicate {
        fee: FeeFields,
        relative_height: NRDRelativeHeight,
    },
}
Expand description

Various tx kernel variants.

Variants§

§

Plain

Plain kernel (the default for Grin txs).

Fields

§fee: FeeFields

Plain kernels have fees.

§

Coinbase

A coinbase kernel.

§

HeightLocked

A kernel with an explicit lock height (and fee).

Fields

§fee: FeeFields

Height locked kernels have fees.

§lock_height: u64

Height locked kernels have lock heights.

§

NoRecentDuplicate

“No Recent Duplicate” (NRD) kernels enforcing relative lock height between instances.

Fields

§fee: FeeFields

These have fees.

§relative_height: NRDRelativeHeight

Relative lock height.

Implementations§

source§

impl KernelFeatures

source

pub fn as_u8(&self) -> u8

Underlying (u8) value representing this kernel variant. This is the first byte when we serialize/deserialize the kernel features.

source

pub fn as_string(&self) -> String

Conversion for backward compatibility.

source

pub fn kernel_sig_msg(&self) -> Result<Message, Error>

msg = hash(features) for coinbase kernels hash(features || fee_fields) for plain kernels hash(features || fee_fields || lock_height) for height locked kernels hash(features || fee_fields || relative_height) for NRD kernels

source§

impl KernelFeatures

source

pub fn is_coinbase(&self) -> bool

Is this a coinbase kernel?

source

pub fn is_plain(&self) -> bool

Is this a plain kernel?

source

pub fn is_height_locked(&self) -> bool

Is this a height locked kernel?

source

pub fn is_nrd(&self) -> bool

Is this an NRD kernel?

Trait Implementations§

source§

impl Clone for KernelFeatures

source§

fn clone(&self) -> KernelFeatures

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

impl Debug for KernelFeatures

source§

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

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for KernelFeatures

source§

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

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

impl PartialEq for KernelFeatures

source§

fn eq(&self, other: &KernelFeatures) -> 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.
source§

impl Readable for KernelFeatures

source§

fn read<R: Reader>(reader: &mut R) -> Result<KernelFeatures, Error>

Reads the data necessary to this Readable from the provided reader
source§

impl Serialize for KernelFeatures

source§

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

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

impl Writeable for KernelFeatures

source§

fn write<W: Writer>(&self, writer: &mut W) -> Result<(), Error>

Protocol version may increment rapidly for other unrelated changes. So we match on ranges here and not specific version values.

source§

impl Copy for KernelFeatures

source§

impl StructuralPartialEq for KernelFeatures

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> CloneAny for T
where T: Any + Clone,

source§

fn clone_any(&self) -> Box<dyn CloneAny>

source§

fn clone_any_send(&self) -> Box<dyn CloneAny + Send>
where T: Send,

source§

fn clone_any_sync(&self) -> Box<dyn CloneAny + Sync>
where T: Sync,

source§

fn clone_any_send_sync(&self) -> Box<dyn CloneAny + Send + Sync>
where T: Send + Sync,

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

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where 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, 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.
source§

impl<T> DebugAny for T
where T: Any + Debug,

source§

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

source§

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