#[repr(C)]pub struct WithdrawData {
pub pubkey: ElGamalPubkey,
pub final_ciphertext: ElGamalCiphertext,
pub proof: WithdrawProof,
}
Expand description
This struct includes the cryptographic proof and the account data information needed to verify the proof
- The pre-instruction should call WithdrawData::verify_proof(&self)
- The actual program should check that
current_ct
is consistent with what is currently stored in the confidential token account TODO: update this statement
Fields§
§pubkey: ElGamalPubkey
The source account ElGamal pubkey
final_ciphertext: ElGamalCiphertext
The source account available balance after the withdraw (encrypted by
source_pk
proof: WithdrawProof
Range proof
Implementations§
Source§impl WithdrawData
impl WithdrawData
pub fn new( amount: u64, keypair: &ElGamalKeypair, current_balance: u64, current_ciphertext: &ElGamalCiphertext, ) -> Result<Self, ProofError>
Trait Implementations§
Source§impl Clone for WithdrawData
impl Clone for WithdrawData
Source§fn clone(&self) -> WithdrawData
fn clone(&self) -> WithdrawData
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Verifiable for WithdrawData
impl Verifiable for WithdrawData
impl Copy for WithdrawData
impl Pod for WithdrawData
Auto Trait Implementations§
impl Freeze for WithdrawData
impl RefUnwindSafe for WithdrawData
impl Send for WithdrawData
impl Sync for WithdrawData
impl Unpin for WithdrawData
impl UnwindSafe for WithdrawData
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CheckedBitPattern for Twhere
T: AnyBitPattern,
impl<T> CheckedBitPattern for Twhere
T: AnyBitPattern,
Source§type Bits = T
type Bits = T
Self
must have the same layout as the specified Bits
except for
the possible invalid bit patterns being checked during
is_valid_bit_pattern
.Source§fn is_valid_bit_pattern(_bits: &T) -> bool
fn is_valid_bit_pattern(_bits: &T) -> bool
If this function returns true, then it must be valid to reinterpret
bits
as &Self
.Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more