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

pub struct TxKernel {
    pub features: KernelFeatures,
    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

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 (sum of the commitment public keys).

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. Based on kernel features and associated fields (fee and 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 batch_sig_verify(tx_kernels: &Vec<TxKernel>) -> Result<(), Error>[src]

Batch signature verification.

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. Will panic if we cannot safely do this on the existing kernel. i.e. Do not try and set a fee on a coinbase kernel.

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

Builds a new tx kernel with the provided lock_height. Will panic if we cannot safely do this on the existing kernel. i.e. Do not try and set a lock_height on a coinbase kernel.

Trait Implementations

impl DefaultHashable for TxKernel[src]

impl Writeable for TxKernel[src]

impl Readable for TxKernel[src]

impl FixedLength for TxKernel[src]

Kernels are "variable size" but we need to implement FixedLength for legacy reasons. At some point we will refactor the MMR backend so this is no longer required.

impl PMMRable for TxKernel[src]

We store kernels in the kernel MMR. Note: These are "variable size" to support different kernel featuere variants.

type E = Self

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 Clone for TxKernel[src]

impl Eq for TxKernel[src]

impl Ord for TxKernel[src]

impl PartialEq<TxKernel> for TxKernel[src]

impl PartialOrd<TxKernel> for TxKernel[src]

impl Debug for TxKernel[src]

impl Hash 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, U> Into<U> for T where
    U: From<T>, 
[src]

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

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

type Owned = T

The resulting type after obtaining ownership.

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> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<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