#[repr(u8)]pub enum ProofInstruction {
Show 13 variants
CloseContextState = 0,
VerifyZeroCiphertext = 1,
VerifyCiphertextCiphertextEquality = 2,
VerifyCiphertextCommitmentEquality = 3,
VerifyPubkeyValidity = 4,
VerifyPercentageWithCap = 5,
VerifyBatchedRangeProofU64 = 6,
VerifyBatchedRangeProofU128 = 7,
VerifyBatchedRangeProofU256 = 8,
VerifyGroupedCiphertext2HandlesValidity = 9,
VerifyBatchedGroupedCiphertext2HandlesValidity = 10,
VerifyGroupedCiphertext3HandlesValidity = 11,
VerifyBatchedGroupedCiphertext3HandlesValidity = 12,
}Variants§
CloseContextState = 0
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
VerifyZeroCiphertext = 1
Verify a zero-ciphertext proof.
A zero-ciphertext proof certifies that an ElGamal ciphertext encrypts the value zero.
Accounts expected by this instruction:
There are four ways to structure the accounts, depending on whether the proof is provided as instruction data or in a separate account, and whether a proof context is created.
-
Proof in instruction data, no context state:
- No accounts are required.
-
Proof in instruction data, with context state:
[writable]The proof context account to create.[]The proof context account owner.
-
Proof in account, no context state:
[]Account to read the proof from.
-
Proof in account, with context state:
[]Account to read the proof from.[writable]The proof context account to create.[]The proof context account owner.
The instruction expects either:
i. ZeroCiphertextProofData if proof is provided as instruction data
ii. u32 byte offset if proof is provided as an account
VerifyCiphertextCiphertextEquality = 2
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:
There are four ways to structure the accounts, depending on whether the proof is provided as instruction data or in a separate account, and whether a proof context is created.
-
Proof in instruction data, no context state:
- No accounts are required.
-
Proof in instruction data, with context state:
[writable]The proof context account to create.[]The proof context account owner.
-
Proof in account, no context state:
[]Account to read the proof from.
-
Proof in account, with context state:
[]Account to read the proof from.[writable]The proof context account to create.[]The proof context account owner.
The instruction expects either:
i. CiphertextCiphertextEqualityProofData if proof is provided as instruction data
ii. u32 byte offset if proof is provided as an account
VerifyCiphertextCommitmentEquality = 3
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:
There are four ways to structure the accounts, depending on whether the proof is provided as instruction data or in a separate account, and whether a proof context is created.
-
Proof in instruction data, no context state:
- No accounts are required.
-
Proof in instruction data, with context state:
[writable]The proof context account to create.[]The proof context account owner.
-
Proof in account, no context state:
[]Account to read the proof from.
-
Proof in account, with context state:
[]Account to read the proof from.[writable]The proof context account to create.[]The proof context account owner.
The instruction expects either:
i. CiphertextCommitmentEqualityProofData if proof is provided as instruction data
ii. u32 byte offset if proof is provided as an account
VerifyPubkeyValidity = 4
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:
There are four ways to structure the accounts, depending on whether the proof is provided as instruction data or in a separate account, and whether a proof context is created.
-
Proof in instruction data, no context state:
- No accounts are required.
-
Proof in instruction data, with context state:
[writable]The proof context account to create.[]The proof context account owner.
-
Proof in account, no context state:
[]Account to read the proof from.
-
Proof in account, with context state:
[]Account to read the proof from.[writable]The proof context account to create.[]The proof context account owner.
The instruction expects either:
i. PubkeyValidityData if proof is provided as instruction data
ii. u32 byte offset if proof is provided as an account
VerifyPercentageWithCap = 5
Verify a percentage-with-cap proof.
A percentage-with-cap proof certifies that a tuple of Pedersen commitments satisfy a percentage relation.
Accounts expected by this instruction:
There are four ways to structure the accounts, depending on whether the proof is provided as instruction data or in a separate account, and whether a proof context is created.
-
Proof in instruction data, no context state:
- No accounts are required.
-
Proof in instruction data, with context state:
[writable]The proof context account to create.[]The proof context account owner.
-
Proof in account, no context state:
[]Account to read the proof from.
-
Proof in account, with context state:
[]Account to read the proof from.[writable]The proof context account to create.[]The proof context account owner.
The instruction expects either:
i. PercentageWithCapProofData if proof is provided as instruction data
ii. u32 byte offset if proof is provided as an account
VerifyBatchedRangeProofU64 = 6
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:
There are four ways to structure the accounts, depending on whether the proof is provided as instruction data or in a separate account, and whether a proof context is created.
-
Proof in instruction data, no context state:
- No accounts are required.
-
Proof in instruction data, with context state:
[writable]The proof context account to create.[]The proof context account owner.
-
Proof in account, no context state:
[]Account to read the proof from.
-
Proof in account, with context state:
[]Account to read the proof from.[writable]The proof context account to create.[]The proof context account owner.
The instruction expects either:
i. BatchedRangeProofU64Data if proof is provided as instruction data
ii. u32 byte offset if proof is provided as an account
VerifyBatchedRangeProofU128 = 7
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:
There are four ways to structure the accounts, depending on whether the proof is provided as instruction data or in a separate account, and whether a proof context is created.
-
Proof in instruction data, no context state:
- No accounts are required.
-
Proof in instruction data, with context state:
[writable]The proof context account to create.[]The proof context account owner.
-
Proof in account, no context state:
[]Account to read the proof from.
-
Proof in account, with context state:
[]Account to read the proof from.[writable]The proof context account to create.[]The proof context account owner.
The instruction expects either:
i. BatchedRangeProofU128Data if proof is provided as instruction data
ii. u32 byte offset if proof is provided as an account
VerifyBatchedRangeProofU256 = 8
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:
There are four ways to structure the accounts, depending on whether the proof is provided as instruction data or in a separate account, and whether a proof context is created.
-
Proof in instruction data, no context state:
- No accounts are required.
-
Proof in instruction data, with context state:
[writable]The proof context account to create.[]The proof context account owner.
-
Proof in account, no context state:
[]Account to read the proof from.
-
Proof in account, with context state:
[]Account to read the proof from.[writable]The proof context account to create.[]The proof context account owner.
The instruction expects either:
i. BatchedRangeProofU256Data if proof is provided as instruction data
ii. u32 byte offset if proof is provided as an account
VerifyGroupedCiphertext2HandlesValidity = 9
Verify a grouped-ciphertext with 2 handles 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:
There are four ways to structure the accounts, depending on whether the proof is provided as instruction data or in a separate account, and whether a proof context is created.
-
Proof in instruction data, no context state:
- No accounts are required.
-
Proof in instruction data, with context state:
[writable]The proof context account to create.[]The proof context account owner.
-
Proof in account, no context state:
[]Account to read the proof from.
-
Proof in account, with context state:
[]Account to read the proof from.[writable]The proof context account to create.[]The proof context account owner.
The instruction expects either:
i. GroupedCiphertext2HandlesValidityProofData if proof is provided as instruction data
ii. u32 byte offset if proof is provided as an account
VerifyBatchedGroupedCiphertext2HandlesValidity = 10
Verify a batched grouped-ciphertext with 2 handles 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:
There are four ways to structure the accounts, depending on whether the proof is provided as instruction data or in a separate account, and whether a proof context is created.
-
Proof in instruction data, no context state:
- No accounts are required.
-
Proof in instruction data, with context state:
[writable]The proof context account to create.[]The proof context account owner.
-
Proof in account, no context state:
[]Account to read the proof from.
-
Proof in account, with context state:
[]Account to read the proof from.[writable]The proof context account to create.[]The proof context account owner.
The instruction expects either:
i. BatchedGroupedCiphertext2HandlesValidityProofData if proof is provided as instruction data
ii. u32 byte offset if proof is provided as an account
VerifyGroupedCiphertext3HandlesValidity = 11
Verify a grouped-ciphertext with 3 handles 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:
There are four ways to structure the accounts, depending on whether the proof is provided as instruction data or in a separate account, and whether a proof context is created.
-
Proof in instruction data, no context state:
- No accounts are required.
-
Proof in instruction data, with context state:
[writable]The proof context account to create.[]The proof context account owner.
-
Proof in account, no context state:
[]Account to read the proof from.
-
Proof in account, with context state:
[]Account to read the proof from.[writable]The proof context account to create.[]The proof context account owner.
The instruction expects either:
i. GroupedCiphertext3HandlesValidityProofData if proof is provided as instruction data
ii. u32 byte offset if proof is provided as an account
VerifyBatchedGroupedCiphertext3HandlesValidity = 12
Verify a batched grouped-ciphertext with 3 handles 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:
There are four ways to structure the accounts, depending on whether the proof is provided as instruction data or in a separate account, and whether a proof context is created.
-
Proof in instruction data, no context state:
- No accounts are required.
-
Proof in instruction data, with context state:
[writable]The proof context account to create.[]The proof context account owner.
-
Proof in account, no context state:
[]Account to read the proof from.
-
Proof in account, with context state:
[]Account to read the proof from.[writable]The proof context account to create.[]The proof context account owner.
The instruction expects either:
i. BatchedGroupedCiphertext3HandlesValidityProofData if proof is provided as instruction data
ii. u32 byte offset if proof is provided as an account
Implementations§
Source§impl ProofInstruction
impl ProofInstruction
pub fn encode_verify_proof<T, U>( &self, context_state_info: Option<ContextStateInfo<'_>>, proof_data: &T, ) -> Instruction
pub fn encode_verify_proof_from_account( &self, context_state_info: Option<ContextStateInfo<'_>>, proof_account: &Pubkey, offset: u32, ) -> Instruction
pub fn instruction_type(input: &[u8]) -> Option<Self>
pub fn proof_data<T, U>(input: &[u8]) -> Option<&T>
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 for ProofInstruction
impl PartialEq for ProofInstruction
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 moreimpl Copy for ProofInstruction
impl Eq for ProofInstruction
impl StructuralPartialEq for ProofInstruction
Auto Trait Implementations§
impl Freeze for ProofInstruction
impl RefUnwindSafe for ProofInstruction
impl Send for ProofInstruction
impl Sync for ProofInstruction
impl Unpin for ProofInstruction
impl UnwindSafe for ProofInstruction
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> 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>
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