[][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.

Implementations

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: &[TxKernel]) -> Result<(), Error>[src]

Batch signature verification.

pub fn empty() -> TxKernel[src]

Build an empty tx kernel with zero values.

pub fn with_features(features: KernelFeatures) -> TxKernel[src]

Build an empty tx kernel with the provided kernel features.

Trait Implementations

impl Clone for TxKernel[src]

impl Debug for TxKernel[src]

impl DefaultHashable for TxKernel[src]

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

impl Eq for TxKernel[src]

impl Hash for TxKernel[src]

impl Ord for TxKernel[src]

impl PMMRable for TxKernel[src]

We store kernels in the kernel MMR. Note: These are "variable size" to support different kernel feature 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 PartialEq<TxKernel> for TxKernel[src]

impl PartialOrd<TxKernel> for TxKernel[src]

impl Readable for TxKernel[src]

impl Serialize for TxKernel[src]

impl Writeable for TxKernel[src]

Auto Trait Implementations

Blanket Implementations

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

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

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

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

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

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

impl<T> Erased for T

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

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

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

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

impl<T> Same<T> for T

type Output = T

Should always be Self

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> 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> UnsafeAny for T where
    T: Any