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).
pub struct Slate {
    /// The number of participants intended to take part in this transaction
    pub num_participants: usize,
    /// Unique transaction ID, selected by sender
    pub id: Uuid,
    /// The core transaction data:
    /// inputs, outputs, kernels, kernel offset
    pub tx: Transaction,
    /// base amount (excluding fee)
    pub amount: u64,
    /// fee amount
    pub fee: u64,
    /// Block height for the transaction
    pub height: u64,
    /// Lock height
    pub lock_height: u64,
    /// 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
    pub participant_data: Vec<ParticipantData>,
}

ParticipantData

/// Public data for each participant in the slate
pub struct ParticipantData {
    /// Id of participant in the transaction. (For now, 0=sender, 1=rec)
    pub id: u64,
    /// Public key corresponding to private blinding factor
    pub public_blind_excess: PublicKey,
    /// Public key corresponding to private nonce
    pub public_nonce: PublicKey,
    /// Public partial signature
    pub part_sig: Option<Signature>,
}

可以看出由两对公钥 + 签名构成。

results matching ""

    No results matching ""