#[repr(u8)]pub enum ProofInstruction {
Show 15 variants
CloseContextState,
VerifyZeroBalance,
VerifyWithdraw,
VerifyCiphertextCiphertextEquality,
VerifyTransfer,
VerifyTransferWithFee,
VerifyPubkeyValidity,
VerifyRangeProofU64,
VerifyBatchedRangeProofU64,
VerifyBatchedRangeProofU128,
VerifyBatchedRangeProofU256,
VerifyCiphertextCommitmentEquality,
VerifyGroupedCiphertext2HandlesValidity,
VerifyBatchedGroupedCiphertext2HandlesValidity,
VerifyFeeSigma,
}
Variants§
CloseContextState
Close a zero-knowledge proof context state.
Accounts expected by this instruction:
0. [writable]
The proof context account to close
[writable]
The destination account for lamports[signer]
The context account’s owner
Data expected by this instruction: None
VerifyZeroBalance
Verify a zero-balance proof.
A zero-balance proof certifies that an ElGamal ciphertext encrypts the value zero.
Accounts expected by this instruction:
- Creating a proof context account
[writable]
The proof context account[]
The proof context account owner
- Otherwise None
Data expected by this instruction:
ZeroBalanceProofData
VerifyWithdraw
Verify a withdraw zero-knowledge proof.
This proof is a collection of smaller proofs that are required by the SPL Token 2022
confidential extension Withdraw
instruction.
Accounts expected by this instruction:
- Creating a proof context account
[writable]
The proof context account[]
The proof context account owner
- Otherwise None
Data expected by this instruction:
WithdrawData
VerifyCiphertextCiphertextEquality
Verify a ciphertext-ciphertext equality proof.
A ciphertext-ciphertext equality proof certifies that two ElGamal ciphertexts encrypt the same message.
Accounts expected by this instruction:
- Creating a proof context account
[writable]
The proof context account[]
The proof context account owner
- Otherwise None
Data expected by this instruction:
CiphertextCiphertextEqualityProofData
VerifyTransfer
Verify a transfer zero-knowledge proof.
This proof is a collection of smaller proofs that are required by the SPL Token 2022
confidential extension Transfer
instruction with transfer fees.
Accounts expected by this instruction:
- Creating a proof context account
[writable]
The proof context account[]
The proof context account owner
- Otherwise None
Data expected by this instruction:
TransferData
VerifyTransferWithFee
Verify a transfer with fee zero-knowledge proof.
This proof is a collection of smaller proofs that are required by the SPL Token 2022
confidential extension Transfer
instruction without transfer fees.
Accounts expected by this instruction:
- Creating a proof context account
[writable]
The proof context account[]
The proof context account owner
- Otherwise None
Data expected by this instruction:
TransferWithFeeData
VerifyPubkeyValidity
Verify a public key validity zero-knowledge proof.
A public key validity proof certifies that an ElGamal public key is well-formed and the prover knows the corresponding secret key.
Accounts expected by this instruction:
- Creating a proof context account
[writable]
The proof context account[]
The proof context account owner
- Otherwise None
Data expected by this instruction:
PubkeyValidityData
VerifyRangeProofU64
Verify a 64-bit range proof.
A range proof is defined with respect to a Pedersen commitment. The 64-bit range proof certifies that a Pedersen commitment holds an unsigned 64-bit number.
Accounts expected by this instruction:
- Creating a proof context account
[writable]
The proof context account[]
The proof context account owner
- Otherwise None
Data expected by this instruction:
RangeProofU64Data
VerifyBatchedRangeProofU64
Verify a 64-bit batched range proof.
A batched range proof is defined with respect to a sequence of Pedersen commitments [C_1, ..., C_N]
and bit-lengths [n_1, ..., n_N]
. It certifies that each commitment C_i
is a
commitment to a positive number of bit-length n_i
. Batch verifying range proofs is more
efficient than verifying independent range proofs on commitments C_1, ..., C_N
separately.
The bit-length of a batched range proof specifies the sum of the individual bit-lengths
n_1, ..., n_N
. For example, this instruction can be used to certify that two commitments
C_1
and C_2
each hold positive 32-bit numbers.
Accounts expected by this instruction:
- Creating a proof context account
[writable]
The proof context account[]
The proof context account owner
- Otherwise None
Data expected by this instruction:
BatchedRangeProof64Data
VerifyBatchedRangeProofU128
Verify 128-bit batched range proof.
The bit-length of a batched range proof specifies the sum of the individual bit-lengths
n_1, ..., n_N
. For example, this instruction can be used to certify that two commitments
C_1
and C_2
each hold positive 64-bit numbers.
Accounts expected by this instruction:
- Creating a proof context account
[writable]
The proof context account[]
The proof context account owner
- Otherwise None
Data expected by this instruction:
BatchedRangeProof128Data
VerifyBatchedRangeProofU256
Verify 256-bit batched range proof.
The bit-length of a batched range proof specifies the sum of the individual bit-lengths
n_1, ..., n_N
. For example, this instruction can be used to certify that four commitments
[C_1, C_2, C_3, C_4]
each hold positive 64-bit numbers.
Accounts expected by this instruction:
- Creating a proof context account
[writable]
The proof context account[]
The proof context account owner
- Otherwise None
Data expected by this instruction:
BatchedRangeProof256Data
VerifyCiphertextCommitmentEquality
Verify a ciphertext-commitment equality proof.
A ciphertext-commitment equality proof certifies that an ElGamal ciphertext and a Pedersen commitment encrypt/encode the same message.
Accounts expected by this instruction:
- Creating a proof context account
[writable]
The proof context account[]
The proof context account owner
- Otherwise None
Data expected by this instruction:
CiphertextCommitmentEqualityProofData
VerifyGroupedCiphertext2HandlesValidity
Verify a grouped-ciphertext validity proof.
A grouped-ciphertext validity proof certifies that a grouped ElGamal ciphertext is well-defined, i.e. the ciphertext can be decrypted by private keys associated with its decryption handles.
Accounts expected by this instruction:
- Creating a proof context account
[writable]
The proof context account[]
The proof context account owner
- Otherwise None
Data expected by this instruction:
GroupedCiphertextValidityProofContext
VerifyBatchedGroupedCiphertext2HandlesValidity
Verify a batched grouped-ciphertext validity proof.
A batched grouped-ciphertext validity proof certifies the validity of two grouped ElGamal ciphertext that are encrypted using the same set of ElGamal public keys. A batched grouped-ciphertext validity proof is shorter and more efficient than two individual grouped-ciphertext validity proofs.
Accounts expected by this instruction:
- Creating a proof context account
[writable]
The proof context account[]
The proof context account owner
- Otherwise None
Data expected by this instruction:
BatchedGroupedCiphertextValidityProofContext
VerifyFeeSigma
Verify a fee sigma proof.
A fee sigma proof certifies that a Pedersen commitment that encodes a transfer fee for SPL Token 2022 is well-formed.
Accounts expected by this instruction:
- Creating a proof context account
[writable]
The proof context account[]
The proof context account owner
- Otherwise None
Data expected by this instruction:
FeeSigmaProofData
Implementations§
source§impl ProofInstruction
impl ProofInstruction
pub fn encode_verify_proof<T, U>( &self, context_state_info: Option<ContextStateInfo<'_>>, proof_data: &T ) -> Instructionwhere T: Pod + ZkProofData<U>, U: Pod,
pub fn instruction_type(input: &[u8]) -> Option<Self>
pub fn proof_data<T, U>(input: &[u8]) -> Option<&T>where T: Pod + ZkProofData<U>, U: Pod,
Trait Implementations§
source§impl Clone for ProofInstruction
impl Clone for ProofInstruction
source§fn clone(&self) -> ProofInstruction
fn clone(&self) -> ProofInstruction
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for ProofInstruction
impl Debug for ProofInstruction
source§impl FromPrimitive for ProofInstruction
impl FromPrimitive for ProofInstruction
source§fn from_i64(n: i64) -> Option<Self>
fn from_i64(n: i64) -> Option<Self>
i64
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.source§fn from_u64(n: u64) -> Option<Self>
fn from_u64(n: u64) -> Option<Self>
u64
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.source§fn from_isize(n: isize) -> Option<Self>
fn from_isize(n: isize) -> Option<Self>
isize
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.source§fn from_i8(n: i8) -> Option<Self>
fn from_i8(n: i8) -> Option<Self>
i8
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.source§fn from_i16(n: i16) -> Option<Self>
fn from_i16(n: i16) -> Option<Self>
i16
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.source§fn from_i32(n: i32) -> Option<Self>
fn from_i32(n: i32) -> Option<Self>
i32
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.source§fn from_i128(n: i128) -> Option<Self>
fn from_i128(n: i128) -> Option<Self>
i128
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned. Read moresource§fn from_usize(n: usize) -> Option<Self>
fn from_usize(n: usize) -> Option<Self>
usize
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.source§fn from_u8(n: u8) -> Option<Self>
fn from_u8(n: u8) -> Option<Self>
u8
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.source§fn from_u16(n: u16) -> Option<Self>
fn from_u16(n: u16) -> Option<Self>
u16
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.source§fn from_u32(n: u32) -> Option<Self>
fn from_u32(n: u32) -> Option<Self>
u32
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.source§fn from_u128(n: u128) -> Option<Self>
fn from_u128(n: u128) -> Option<Self>
u128
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned. Read moresource§impl PartialEq<ProofInstruction> for ProofInstruction
impl PartialEq<ProofInstruction> for ProofInstruction
source§fn eq(&self, other: &ProofInstruction) -> bool
fn eq(&self, other: &ProofInstruction) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl ToPrimitive for ProofInstruction
impl ToPrimitive for ProofInstruction
source§fn to_i64(&self) -> Option<i64>
fn to_i64(&self) -> Option<i64>
self
to an i64
. If the value cannot be
represented by an i64
, then None
is returned.source§fn to_u64(&self) -> Option<u64>
fn to_u64(&self) -> Option<u64>
self
to a u64
. If the value cannot be
represented by a u64
, then None
is returned.source§fn to_isize(&self) -> Option<isize>
fn to_isize(&self) -> Option<isize>
self
to an isize
. If the value cannot be
represented by an isize
, then None
is returned.source§fn to_i8(&self) -> Option<i8>
fn to_i8(&self) -> Option<i8>
self
to an i8
. If the value cannot be
represented by an i8
, then None
is returned.source§fn to_i16(&self) -> Option<i16>
fn to_i16(&self) -> Option<i16>
self
to an i16
. If the value cannot be
represented by an i16
, then None
is returned.source§fn to_i32(&self) -> Option<i32>
fn to_i32(&self) -> Option<i32>
self
to an i32
. If the value cannot be
represented by an i32
, then None
is returned.source§fn to_i128(&self) -> Option<i128>
fn to_i128(&self) -> Option<i128>
self
to an i128
. If the value cannot be
represented by an i128
(i64
under the default implementation), then
None
is returned. Read moresource§fn to_usize(&self) -> Option<usize>
fn to_usize(&self) -> Option<usize>
self
to a usize
. If the value cannot be
represented by a usize
, then None
is returned.source§fn to_u8(&self) -> Option<u8>
fn to_u8(&self) -> Option<u8>
self
to a u8
. If the value cannot be
represented by a u8
, then None
is returned.source§fn to_u16(&self) -> Option<u16>
fn to_u16(&self) -> Option<u16>
self
to a u16
. If the value cannot be
represented by a u16
, then None
is returned.source§fn to_u32(&self) -> Option<u32>
fn to_u32(&self) -> Option<u32>
self
to a u32
. If the value cannot be
represented by a u32
, then None
is returned.source§fn to_u128(&self) -> Option<u128>
fn to_u128(&self) -> Option<u128>
self
to a u128
. If the value cannot be
represented by a u128
(u64
under the default implementation), then
None
is returned. Read more