[][src]Struct grin_core::core::transaction::TxKernel

pub struct TxKernel {
    pub features: KernelFeatures,
    pub fee: u64,
    pub lock_height: u64,
    pub excess: Commitment,
    pub excess_sig: Signature,
}

A proof that a transaction sums to zero. Includes both the transaction's Pedersen commitment and the signature, that guarantees that the commitments amount to zero. The signature signs the fee and the lock_height, which are retained for signature validation.

Fields

features: KernelFeatures

Options for a kernel's structure or use

fee: u64

Fee originally included in the transaction this proof is for.

lock_height: u64

This kernel is not valid earlier than lock_height blocks The max lock_height of all inputs to this transaction

excess: Commitment

Remainder of the sum of all transaction commitments. If the transaction is well formed, amounts components should sum to zero and the excess is hence a valid public key.

excess_sig: Signature

The signature proving the excess is a valid public key, which signs the transaction fee.

Methods

impl TxKernel[src]

pub fn is_coinbase(&self) -> bool[src]

Is this a coinbase kernel?

pub fn is_plain(&self) -> bool[src]

Is this a plain kernel?

pub fn is_height_locked(&self) -> bool[src]

Is this a height locked kernel?

pub fn excess(&self) -> Commitment[src]

Return the excess commitment for this tx_kernel.

pub fn msg_to_sign(&self) -> Result<Message, Error>[src]

The msg signed as part of the tx kernel. Consists of the fee and the lock_height.

pub fn verify(&self) -> Result<(), Error>[src]

Verify the transaction proof validity. Entails handling the commitment as a public key and checking the signature verifies with the fee as message.

pub fn empty() -> TxKernel[src]

Build an empty tx kernel with zero values.

pub fn with_fee(self, fee: u64) -> TxKernel[src]

Builds a new tx kernel with the provided fee.

pub fn with_lock_height(self, lock_height: u64) -> TxKernel[src]

Builds a new tx kernel with the provided lock_height.

Trait Implementations

impl DefaultHashable for TxKernel[src]

impl Writeable for TxKernel[src]

impl Readable for TxKernel[src]

impl PMMRable for TxKernel[src]

We store TxKernelEntry in the kernel MMR.

type E = TxKernelEntry

The type of element actually stored in the MMR data file. This allows us to store Hash elements in the header MMR for variable size BlockHeaders. Read more

impl PartialOrd<TxKernel> for TxKernel[src]

#[must_use] fn lt(&self, other: &Rhs) -> bool1.0.0[src]

This method tests less than (for self and other) and is used by the < operator. Read more

#[must_use] fn le(&self, other: &Rhs) -> bool1.0.0[src]

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

#[must_use] fn gt(&self, other: &Rhs) -> bool1.0.0[src]

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

#[must_use] fn ge(&self, other: &Rhs) -> bool1.0.0[src]

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

impl PartialEq<TxKernel> for TxKernel[src]

#[must_use] fn ne(&self, other: &Rhs) -> bool1.0.0[src]

This method tests for !=.

impl Ord for TxKernel[src]

fn max(self, other: Self) -> Self1.21.0[src]

Compares and returns the maximum of two values. Read more

fn min(self, other: Self) -> Self1.21.0[src]

Compares and returns the minimum of two values. Read more

fn clamp(self, min: Self, max: Self) -> Self[src]

🔬 This is a nightly-only experimental API. (clamp)

Restrict a value to a certain interval. Read more

impl Eq for TxKernel[src]

impl From<TxKernel> for TxKernelEntry[src]

impl Clone for TxKernel[src]

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl Hash for TxKernel[src]

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

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

impl Debug for TxKernel[src]

impl Serialize for TxKernel[src]

impl<'de> Deserialize<'de> for TxKernel[src]

Auto Trait Implementations

Blanket Implementations

impl<D> Hashed for D where
    D: DefaultHashable
[src]

impl<H> ShortIdentifiable for H where
    H: Hashed
[src]

fn short_id(&Self, &Hash, u64) -> ShortId[src]

Generate a short_id via the following -

  • extract k0/k1 from block_hash hashed with the nonce (first two u64 values) * initialize a siphasher24 with k0/k1
    • self.hash() passing in the siphasher24 instance
    • drop the 2 most significant bytes (to return a 6 byte short_id)

impl<T> PMMRIndexHashable for T where
    T: DefaultHashable
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

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

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

impl<T> CloneAny for T where
    T: Clone + Any

impl<T> UnsafeAny for T where
    T: Any

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> Erased for T