#[repr(C)]pub struct ConfidentialTransferAccount {
pub approved: PodBool,
pub elgamal_pubkey: PodElGamalPubkey,
pub pending_balance_lo: EncryptedBalance,
pub pending_balance_hi: EncryptedBalance,
pub available_balance: EncryptedBalance,
pub decryptable_available_balance: DecryptableBalance,
pub allow_confidential_credits: PodBool,
pub allow_non_confidential_credits: PodBool,
pub pending_balance_credit_counter: PodU64,
pub maximum_pending_balance_credit_counter: PodU64,
pub expected_pending_balance_credit_counter: PodU64,
pub actual_pending_balance_credit_counter: PodU64,
}
Expand description
Confidential account state
Fields§
§approved: PodBool
true
if this account has been approved for use. All confidential
transfer operations for the account will fail until approval is
granted.
elgamal_pubkey: PodElGamalPubkey
The public key associated with ElGamal encryption
pending_balance_lo: EncryptedBalance
The low 16 bits of the pending balance (encrypted by elgamal_pubkey
)
pending_balance_hi: EncryptedBalance
The high 48 bits of the pending balance (encrypted by elgamal_pubkey
)
available_balance: EncryptedBalance
The available balance (encrypted by encrypiton_pubkey
)
decryptable_available_balance: DecryptableBalance
The decryptable available balance
allow_confidential_credits: PodBool
If false
, the extended account rejects any incoming confidential
transfers
allow_non_confidential_credits: PodBool
If false
, the base account rejects any incoming transfers
pending_balance_credit_counter: PodU64
The total number of Deposit
and Transfer
instructions that have
credited pending_balance
maximum_pending_balance_credit_counter: PodU64
The maximum number of Deposit
and Transfer
instructions that can
credit pending_balance
before the ApplyPendingBalance
instruction is executed
expected_pending_balance_credit_counter: PodU64
The expected_pending_balance_credit_counter
value that was included in
the last ApplyPendingBalance
instruction
actual_pending_balance_credit_counter: PodU64
The actual pending_balance_credit_counter
when the last
ApplyPendingBalance
instruction was executed
Implementations§
Source§impl ConfidentialTransferAccount
impl ConfidentialTransferAccount
Sourcepub fn approved(&self) -> ProgramResult
pub fn approved(&self) -> ProgramResult
Check if a ConfidentialTransferAccount
has been approved for use.
Sourcepub fn closable(&self) -> ProgramResult
pub fn closable(&self) -> ProgramResult
Check if a ConfidentialTransferAccount
is in a closable state.
Sourcepub fn non_confidential_transfer_allowed(&self) -> ProgramResult
pub fn non_confidential_transfer_allowed(&self) -> ProgramResult
Check if a base account of a ConfidentialTransferAccount
accepts
non-confidential transfers.
Sourcepub fn valid_as_source(&self) -> ProgramResult
pub fn valid_as_source(&self) -> ProgramResult
Checks if a ConfidentialTransferAccount
is configured to send funds.
Sourcepub fn valid_as_destination(&self) -> ProgramResult
pub fn valid_as_destination(&self) -> ProgramResult
Checks if a confidential extension is configured to receive funds.
A destination account can receive funds if the following conditions are satisfied:
- The account is approved by the confidential transfer mint authority
- The account is not disabled by the account owner
- The number of credits into the account has not reached the maximum credit counter
Sourcepub fn increment_pending_balance_credit_counter(&mut self) -> ProgramResult
pub fn increment_pending_balance_credit_counter(&mut self) -> ProgramResult
Increments a confidential extension pending balance credit counter.
Trait Implementations§
Source§impl Clone for ConfidentialTransferAccount
impl Clone for ConfidentialTransferAccount
Source§fn clone(&self) -> ConfidentialTransferAccount
fn clone(&self) -> ConfidentialTransferAccount
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for ConfidentialTransferAccount
impl Debug for ConfidentialTransferAccount
Source§impl Default for ConfidentialTransferAccount
impl Default for ConfidentialTransferAccount
Source§fn default() -> ConfidentialTransferAccount
fn default() -> ConfidentialTransferAccount
Source§impl Extension for ConfidentialTransferAccount
impl Extension for ConfidentialTransferAccount
Source§const TYPE: ExtensionType = ExtensionType::ConfidentialTransferAccount
const TYPE: ExtensionType = ExtensionType::ConfidentialTransferAccount
impl Copy for ConfidentialTransferAccount
impl Pod for ConfidentialTransferAccount
impl StructuralPartialEq for ConfidentialTransferAccount
Auto Trait Implementations§
impl Freeze for ConfidentialTransferAccount
impl RefUnwindSafe for ConfidentialTransferAccount
impl Send for ConfidentialTransferAccount
impl Sync for ConfidentialTransferAccount
impl Unpin for ConfidentialTransferAccount
impl UnwindSafe for ConfidentialTransferAccount
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
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
bits
as &Self
.Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)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>
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>
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