[][src]Struct grin_wallet_libwallet::Slate

pub struct Slate {
    pub version_info: VersionCompatInfo,
    pub num_participants: u8,
    pub id: Uuid,
    pub state: SlateState,
    pub tx: Option<Transaction>,
    pub amount: u64,
    pub fee: u64,
    pub ttl_cutoff_height: u64,
    pub kernel_features: u8,
    pub offset: BlindingFactor,
    pub participant_data: Vec<ParticipantData>,
    pub payment_proof: Option<PaymentInfo>,
    pub kernel_features_args: Option<KernelFeaturesArgs>,
    pub participant_id: Option<PublicKey>,
}

A 'Slate' is passed around to all parties to build up all of the public transaction data needed to create a finalized transaction. Callers can pass the slate around by whatever means they choose, (but we can provide some binary or JSON serialization helpers here).

Fields

version_info: VersionCompatInfo

Versioning info

num_participants: u8

The number of participants intended to take part in this transaction

id: Uuid

Unique transaction ID, selected by sender

state: SlateState

Slate state

tx: Option<Transaction>

The core transaction data: inputs, outputs, kernels, kernel offset Optional as of V4 to allow for a compact transaction initiation

amount: u64

base amount (excluding fee)

fee: u64

fee amount

ttl_cutoff_height: u64

TTL, the block height at which wallets should refuse to process the transaction and unlock all associated outputs

kernel_features: u8

Kernel Features flag - 0: plain 1: coinbase (invalid) 2: height_locked 3: NRD

offset: BlindingFactor

Offset, needed when posting of tranasction is deferred

participant_data: Vec<ParticipantData>

Participant data, each participant in the transaction will insert their public data here. For now, 0 is sender and 1 is receiver, though this will change for multi-party

payment_proof: Option<PaymentInfo>

Payment Proof

kernel_features_args: Option<KernelFeaturesArgs>

Kernel features arguments

participant_id: Option<PublicKey>

participant ID, only stored for compatibility with V3 slates not serialized anywhere

Implementations

impl Slate[src]

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

Return the transaction, throwing an error if it doesn't exist to be used at points in the code where the existence of a transaction is assumed

pub fn tx_or_err_mut(&mut self) -> Result<&mut Transaction, Error>[src]

As above, but return mutable reference

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

Whether the slate started life as a compact slate

pub fn num_participants(&self) -> u8[src]

number of participants

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

Compact the slate for initial sending, storing the excess + offset explicit and removing my input/output data This info must be stored in the context for repopulation later

pub fn deserialize_upgrade(slate_json: &str) -> Result<Slate, Error>[src]

Recieve a slate, upgrade it to the latest version internally Throw error if this can't be done

pub fn upgrade(v_slate: VersionedSlate) -> Result<Slate, Error>[src]

Upgrade a versioned slate

pub fn blank(num_participants: u8, is_invoice: bool) -> Slate[src]

Create a new slate

pub fn remove_other_sigdata<K>(
    &mut self,
    keychain: &K,
    sec_nonce: &SecretKey,
    sec_key: &SecretKey
) -> Result<(), Error> where
    K: Keychain, 
[src]

Removes any signature data that isn't mine, for compacting slates for a return journey

pub fn add_transaction_elements<K, B>(
    &mut self,
    keychain: &K,
    builder: &B,
    elems: Vec<Box<Append<K, B>>>
) -> Result<BlindingFactor, Error> where
    K: Keychain,
    B: ProofBuild, 
[src]

Adds selected inputs and outputs to the slate's transaction Returns blinding factor

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

Update the tx kernel based on kernel features derived from the current slate. The fee may change as we build a transaction and we need to update the tx kernel to reflect this during the tx building process.

pub fn fill_round_1<K>(
    &mut self,
    keychain: &K,
    sec_key: &mut SecretKey,
    sec_nonce: &SecretKey,
    use_test_rng: bool
) -> Result<(), Error> where
    K: Keychain, 
[src]

Completes callers part of round 1, adding public key info to the slate

pub fn fill_round_2<K>(
    &mut self,
    keychain: &K,
    sec_key: &SecretKey,
    sec_nonce: &SecretKey
) -> Result<(), Error> where
    K: Keychain, 
[src]

Completes caller's part of round 2, completing signatures

pub fn finalize<K>(&mut self, keychain: &K) -> Result<(), Error> where
    K: Keychain, 
[src]

Creates the final signature, callable by either the sender or recipient (after phase 3: sender confirmation)

pub fn add_participant_info<K>(
    &mut self,
    keychain: &K,
    sec_key: &SecretKey,
    sec_nonce: &SecretKey,
    part_sig: Option<Signature>
) -> Result<(), Error> where
    K: Keychain, 
[src]

Adds participants public keys to the slate data and saves participant's transaction context sec_key can be overridden to replace the blinding factor (by whoever split the offset)

pub fn generate_offset<K>(
    &mut self,
    keychain: &K,
    sec_key: &mut SecretKey,
    use_test_rng: bool
) -> Result<(), Error> where
    K: Keychain, 
[src]

Somebody involved needs to generate an offset with their private key For now, we'll have the transaction initiator be responsible for it Return offset private key for the participant to use later in the transaction

pub fn calc_excess(&self, secp: &Secp256k1) -> Result<Commitment, Error>[src]

Calculate the excess

Trait Implementations

impl Clone for Slate[src]

impl Debug for Slate[src]

impl Display for Slate[src]

impl<'_> From<&'_ Slate> for SlateV4[src]

impl<'_> From<&'_ Slate> for Option<Vec<CommitsV4>>[src]

impl From<Slate> for SlateV4[src]

impl From<SlateV4> for Slate[src]

impl From<VersionedSlate> for Slate[src]

impl Serialize for Slate[src]

Auto Trait Implementations

impl RefUnwindSafe for Slate

impl Send for Slate

impl Sync for Slate

impl Unpin for Slate

impl UnwindSafe for Slate

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<'a, T> DefaultFeatures<'a> for T where
    T: 'a + Clone + Send + Sync

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

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

impl<'a, T> NonSyncFeatures<'a> for T where
    T: 'a + Clone

impl<T> SafeBorrow<T> for T where
    T: ?Sized

impl<T> Same<T> for T

type Output = T

Should always be Self

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

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[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> UnsafeAny for T where
    T: Any

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,