#[repr(u8)]pub enum ProofInstruction {
Show 15 variants
CloseContextState = 0,
VerifyZeroBalance = 1,
VerifyWithdraw = 2,
VerifyCiphertextCiphertextEquality = 3,
VerifyTransfer = 4,
VerifyTransferWithFee = 5,
VerifyPubkeyValidity = 6,
VerifyRangeProofU64 = 7,
VerifyBatchedRangeProofU64 = 8,
VerifyBatchedRangeProofU128 = 9,
VerifyBatchedRangeProofU256 = 10,
VerifyCiphertextCommitmentEquality = 11,
VerifyGroupedCiphertext2HandlesValidity = 12,
VerifyBatchedGroupedCiphertext2HandlesValidity = 13,
VerifyFeeSigma = 14,
}
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
VerifyZeroBalance = 1
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 = 2
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 = 3
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 = 4
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 = 5
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 = 6
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 = 7
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 = 8
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 = 9
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 = 10
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 = 11
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 = 12
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 = 13
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 = 14
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 ) -> 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§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