[−][src]Struct grin_wallet_libwallet::Slate
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]
&mut self,
keychain: &K,
sec_nonce: &SecretKey,
sec_key: &SecretKey
) -> Result<(), Error> where
K: Keychain,
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]
&mut self,
keychain: &K,
builder: &B,
elems: Vec<Box<Append<K, B>>>
) -> Result<BlindingFactor, Error> where
K: Keychain,
B: ProofBuild,
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]
&mut self,
keychain: &K,
sec_key: &mut SecretKey,
sec_nonce: &SecretKey,
use_test_rng: bool
) -> Result<(), Error> where
K: Keychain,
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]
&mut self,
keychain: &K,
sec_key: &SecretKey,
sec_nonce: &SecretKey
) -> Result<(), Error> where
K: Keychain,
Completes caller's part of round 2, completing signatures
pub fn finalize<K>(&mut self, keychain: &K) -> Result<(), Error> where
K: Keychain,
[src]
K: Keychain,
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]
&mut self,
keychain: &K,
sec_key: &SecretKey,
sec_nonce: &SecretKey,
part_sig: Option<Signature>
) -> Result<(), Error> where
K: Keychain,
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]
&mut self,
keychain: &K,
sec_key: &mut SecretKey,
use_test_rng: bool
) -> Result<(), Error> where
K: Keychain,
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]
fn from(slate: VersionedSlate) -> 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]
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<'a, T> DefaultFeatures<'a> for T where
T: 'a + Clone + Send + Sync,
T: 'a + Clone + Send + Sync,
fn clone_boxed(&self) -> Box<dyn DefaultFeatures<'a> + 'a>
fn self_address_mut(&mut self) -> *mut ()
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<'a, T> NonSyncFeatures<'a> for T where
T: 'a + Clone,
T: 'a + Clone,
fn clone_boxed(&self) -> Box<dyn NonSyncFeatures<'a> + 'a>
fn self_address_mut(&mut self) -> *mut ()
impl<T> SafeBorrow<T> for T where
T: ?Sized,
T: ?Sized,
fn borrow_replacement(ptr: &T) -> &T
impl<T> Same<T> for T
type Output = T
Should always be Self
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> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
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,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,