[−][src]Struct grin_core::core::transaction::TxKernel
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]
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
[src]
__D: Deserializer<'de>,
impl Eq for TxKernel
[src]
impl Hash for TxKernel
[src]
fn hash<H: Hasher>(&self, state: &mut H)
[src]
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
impl Ord for TxKernel
[src]
fn cmp(&self, other: &TxKernel) -> Ordering
[src]
#[must_use]fn max(self, other: Self) -> Self
1.21.0[src]
#[must_use]fn min(self, other: Self) -> Self
1.21.0[src]
#[must_use]fn clamp(self, min: Self, max: Self) -> Self
[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
fn as_elmt(&self) -> Self::E
[src]
fn elmt_size() -> Option<u16>
[src]
impl PartialEq<TxKernel> for TxKernel
[src]
impl PartialOrd<TxKernel> for TxKernel
[src]
fn partial_cmp(&self, other: &TxKernel) -> Option<Ordering>
[src]
#[must_use]fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
impl Readable for TxKernel
[src]
impl Serialize for TxKernel
[src]
fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error> where
__S: Serializer,
[src]
__S: Serializer,
impl Writeable for TxKernel
[src]
Auto Trait Implementations
impl RefUnwindSafe for TxKernel
impl Send for TxKernel
impl Sync for TxKernel
impl Unpin for TxKernel
impl UnwindSafe for TxKernel
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> CloneAny for T where
T: Clone + Any,
T: Clone + Any,
fn clone_any(&self) -> Box<dyn CloneAny + 'static>
fn clone_any_send(&self) -> Box<dyn CloneAny + 'static + Send> where
T: Send,
T: Send,
fn clone_any_sync(&self) -> Box<dyn CloneAny + 'static + Sync> where
T: Sync,
T: Sync,
fn clone_any_send_sync(&self) -> Box<dyn CloneAny + 'static + Sync + Send> where
T: Send + Sync,
T: Send + Sync,
impl<T> DebugAny for T where
T: Any + Debug,
T: Any + Debug,
impl<T> DeserializeOwned for T where
T: for<'de> Deserialize<'de>,
[src]
T: for<'de> Deserialize<'de>,
impl<T> Erased for T
impl<T> From<T> for T
[src]
impl<D> Hashed for D where
D: DefaultHashable,
[src]
D: DefaultHashable,
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> PMMRIndexHashable for T where
T: DefaultHashable,
[src]
T: DefaultHashable,
fn hash_with_index(&Self, u64) -> Hash
[src]
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<H> ShortIdentifiable for H where
H: Hashed,
[src]
H: Hashed,
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]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> UnsafeAny for T where
T: Any,
T: Any,