#[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:
[]
(Optional) Account to read the proof from[writable]
(Optional) The proof context account[]
(Optional) 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:
[]
(Optional) Account to read the proof from[writable]
(Optional) The proof context account[]
(Optional) 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:
[]
(Optional) Account to read the proof from[writable]
(Optional) The proof context account[]
(Optional) 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:
[]
(Optional) Account to read the proof from[writable]
(Optional) The proof context account[]
(Optional) 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:
[]
(Optional) Account to read the proof from[writable]
(Optional) The proof context account[]
(Optional) 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:
[]
(Optional) Account to read the proof from[writable]
(Optional) The proof context account[]
(Optional) 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:
[]
(Optional) Account to read the proof from[writable]
(Optional) The proof context account[]
(Optional) 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:
[]
(Optional) Account to read the proof from[writable]
(Optional) The proof context account[]
(Optional) 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:
[]
(Optional) Account to read the proof from[writable]
(Optional) The proof context account[]
(Optional) 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:
[]
(Optional) Account to read the proof from[writable]
(Optional) The proof context account[]
(Optional) 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:
- Creating a proof context account
[]
(Optional) Account to read the proof from[writable]
The proof context account[]
The proof context account owner
- Otherwise None
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:
- Creating a proof context account
[]
(Optional) Account to read the proof from[writable]
The proof context account[]
The proof context account owner
- Otherwise None
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<ProofInstruction>
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<ProofInstruction>
fn from_i64(n: i64) -> Option<ProofInstruction>
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<ProofInstruction>
fn from_u64(n: u64) -> Option<ProofInstruction>
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§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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