LCOV - code coverage report
Current view: top level - ballet/zksdk - fd_zksdk.h (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 1 13 7.7 %
Date: 2026-02-13 06:06:24 Functions: 0 0 -

          Line data    Source code
       1             : #ifndef HEADER_fd_src_ballet_zksdk_fd_zksdk_h
       2             : #define HEADER_fd_src_ballet_zksdk_fd_zksdk_h
       3             : 
       4             : #include "fd_zksdk_common.h"
       5             : 
       6             : /* FD_ZKSDK_INSTR_{...} identify ZK ElGamal Proof Program instructions.
       7             :    https://github.com/solana-program/zk-elgamal-proof/blob/zk-sdk%40v5.0.0/zk-sdk/src/zk_elgamal_proof_program/instruction.rs#L53 */
       8             : 
       9           0 : #define FD_ZKSDK_INSTR_CLOSE_CONTEXT_STATE                                  ((uchar) 0)
      10           0 : #define FD_ZKSDK_INSTR_VERIFY_ZERO_CIPHERTEXT                               ((uchar) 1)
      11           0 : #define FD_ZKSDK_INSTR_VERIFY_CIPHERTEXT_CIPHERTEXT_EQUALITY                ((uchar) 2)
      12           0 : #define FD_ZKSDK_INSTR_VERIFY_CIPHERTEXT_COMMITMENT_EQUALITY                ((uchar) 3)
      13           3 : #define FD_ZKSDK_INSTR_VERIFY_PUBKEY_VALIDITY                               ((uchar) 4)
      14           0 : #define FD_ZKSDK_INSTR_VERIFY_PERCENTAGE_WITH_CAP                           ((uchar) 5)
      15           0 : #define FD_ZKSDK_INSTR_VERIFY_BATCHED_RANGE_PROOF_U64                       ((uchar) 6)
      16           0 : #define FD_ZKSDK_INSTR_VERIFY_BATCHED_RANGE_PROOF_U128                      ((uchar) 7)
      17           0 : #define FD_ZKSDK_INSTR_VERIFY_BATCHED_RANGE_PROOF_U256                      ((uchar) 8)
      18           0 : #define FD_ZKSDK_INSTR_VERIFY_GROUPED_CIPHERTEXT_2_HANDLES_VALIDITY         ((uchar) 9)
      19           0 : #define FD_ZKSDK_INSTR_VERIFY_BATCHED_GROUPED_CIPHERTEXT_2_HANDLES_VALIDITY ((uchar)10)
      20           0 : #define FD_ZKSDK_INSTR_VERIFY_GROUPED_CIPHERTEXT_3_HANDLES_VALIDITY         ((uchar)11)
      21           0 : #define FD_ZKSDK_INSTR_VERIFY_BATCHED_GROUPED_CIPHERTEXT_3_HANDLES_VALIDITY ((uchar)12)
      22             : 
      23             : /* Instruction context struct, proof struct, and in some cases
      24             :    ZKP verify function. */
      25             : #include "instructions/fd_zksdk_zero_ciphertext.h"
      26             : #include "instructions/fd_zksdk_ciphertext_ciphertext_equality.h"
      27             : #include "instructions/fd_zksdk_ciphertext_commitment_equality.h"
      28             : #include "instructions/fd_zksdk_pubkey_validity.h"
      29             : #include "instructions/fd_zksdk_percentage_with_cap.h"
      30             : #include "instructions/fd_zksdk_batched_range_proofs.h"
      31             : #include "instructions/fd_zksdk_batched_grouped_ciphertext_validity.h"
      32             : 
      33             : /* Size of the context struct for each verify_proof instruction. */
      34             : static const ulong fd_zksdk_context_sz[] = {
      35             :   0, // (placeholder/unused)                             FD_ZKSDK_INSTR_CLOSE_CONTEXT_STATE
      36             :   sizeof(fd_zksdk_zero_ciphertext_context_t),         // FD_ZKSDK_INSTR_VERIFY_ZERO_CIPHERTEXT
      37             :   sizeof(fd_zksdk_ciph_ciph_eq_context_t),            // FD_ZKSDK_INSTR_VERIFY_CIPHERTEXT_CIPHERTEXT_EQUALITY
      38             :   sizeof(fd_zksdk_ciph_comm_eq_context_t),            // FD_ZKSDK_INSTR_VERIFY_CIPHERTEXT_COMMITMENT_EQUALITY
      39             :   sizeof(fd_zksdk_pubkey_validity_context_t),         // FD_ZKSDK_INSTR_VERIFY_PUBKEY_VALIDITY
      40             :   sizeof(fd_zksdk_percentage_with_cap_context_t),     // FD_ZKSDK_INSTR_VERIFY_PERCENTAGE_WITH_CAP
      41             :   sizeof(fd_zksdk_batched_range_proof_context_t),     // FD_ZKSDK_INSTR_VERIFY_BATCHED_RANGE_PROOF_U64
      42             :   sizeof(fd_zksdk_batched_range_proof_context_t),     // FD_ZKSDK_INSTR_VERIFY_BATCHED_RANGE_PROOF_U128
      43             :   sizeof(fd_zksdk_batched_range_proof_context_t),     // FD_ZKSDK_INSTR_VERIFY_BATCHED_RANGE_PROOF_U256
      44             :   sizeof(fd_zksdk_grp_ciph_2h_val_context_t),         // FD_ZKSDK_INSTR_VERFIY_GROUPED_CIPHERTEXT_2_HANDLES_VALIDITY
      45             :   sizeof(fd_zksdk_batched_grp_ciph_2h_val_context_t), // FD_ZKSDK_INSTR_VERIFY_BATCHED_GROUPED_CIPHERTEXT_2_HANDLES_VALIDITY
      46             :   sizeof(fd_zksdk_grp_ciph_3h_val_context_t),         // FD_ZKSDK_INSTR_VERFIY_GROUPED_CIPHERTEXT_3_HANDLES_VALIDITY
      47             :   sizeof(fd_zksdk_batched_grp_ciph_3h_val_context_t), // FD_ZKSDK_INSTR_VERIFY_BATCHED_GROUPED_CIPHERTEXT_3_HANDLES_VALIDITY
      48             : };
      49             : 
      50             : /* Size of the proof struct for each verify_proof instruction. */
      51             : static const ulong fd_zksdk_proof_sz[] = {
      52             :   0, // (placeholder/unused)                             FD_ZKSDK_INSTR_CLOSE_CONTEXT_STATE
      53             :   sizeof(fd_zksdk_zero_ciphertext_proof_t),           // FD_ZKSDK_INSTR_VERIFY_ZERO_CIPHERTEXT
      54             :   sizeof(fd_zksdk_ciph_ciph_eq_proof_t),              // FD_ZKSDK_INSTR_VERIFY_CIPHERTEXT_CIPHERTEXT_EQUALITY
      55             :   sizeof(fd_zksdk_ciph_comm_eq_proof_t),              // FD_ZKSDK_INSTR_VERIFY_CIPHERTEXT_COMMITMENT_EQUALITY
      56             :   sizeof(fd_zksdk_pubkey_validity_proof_t),           // FD_ZKSDK_INSTR_VERIFY_PUBKEY_VALIDITY
      57             :   sizeof(fd_zksdk_percentage_with_cap_proof_t),       // FD_ZKSDK_INSTR_VERIFY_PERCENTAGE_WITH_CAP
      58             :   sizeof(fd_zksdk_range_proof_u64_proof_t),           // FD_ZKSDK_INSTR_VERIFY_BATCHED_RANGE_PROOF_U64
      59             :   sizeof(fd_zksdk_range_proof_u128_proof_t),          // FD_ZKSDK_INSTR_VERIFY_BATCHED_RANGE_PROOF_U128
      60             :   sizeof(fd_zksdk_range_proof_u256_proof_t),          // FD_ZKSDK_INSTR_VERIFY_BATCHED_RANGE_PROOF_U256
      61             :   sizeof(fd_zksdk_grp_ciph_2h_val_proof_t),           // FD_ZKSDK_INSTR_VERFIY_GROUPED_CIPHERTEXT_2_HANDLES_VALIDITY
      62             :   sizeof(fd_zksdk_batched_grp_ciph_2h_val_proof_t),   // FD_ZKSDK_INSTR_VERIFY_BATCHED_GROUPED_CIPHERTEXT_2_HANDLES_VALIDITY
      63             :   sizeof(fd_zksdk_grp_ciph_3h_val_proof_t),           // FD_ZKSDK_INSTR_VERFIY_GROUPED_CIPHERTEXT_3_HANDLES_VALIDITY
      64             :   sizeof(fd_zksdk_batched_grp_ciph_3h_val_proof_t),   // FD_ZKSDK_INSTR_VERIFY_BATCHED_GROUPED_CIPHERTEXT_3_HANDLES_VALIDITY
      65             : };
      66             : 
      67             : /* ProofContextStateMeta
      68             :    https://github.com/solana-program/zk-elgamal-proof/blob/zk-sdk%40v5.0.0/zk-sdk/src/zk_elgamal_proof_program/state.rs#L71 */
      69             : struct __attribute__((packed)) fd_zksdk_proof_ctx_state_meta {
      70             :   uchar ctx_state_authority[ 32 ];
      71             :   uchar proof_type;
      72             : };
      73             : typedef struct fd_zksdk_proof_ctx_state_meta fd_zksdk_proof_ctx_state_meta_t;
      74             : 
      75             : /* Define all the fd_zksdk_instr_verify_proof_* functions with a macro
      76             :    so it's easy to keep the interface. */
      77             : #define DEFINE_VERIFY_PROOF(name)                                \
      78             :     int                                                          \
      79             :     fd_zksdk_instr_verify_proof_ ## name( void const * context,  \
      80             :                                           void const * proof );
      81             : 
      82             : FD_PROTOTYPES_BEGIN
      83             : 
      84             : DEFINE_VERIFY_PROOF(zero_ciphertext)
      85             : DEFINE_VERIFY_PROOF(ciphertext_ciphertext_equality)
      86             : DEFINE_VERIFY_PROOF(ciphertext_commitment_equality)
      87             : DEFINE_VERIFY_PROOF(pubkey_validity)
      88             : DEFINE_VERIFY_PROOF(percentage_with_cap)
      89             : DEFINE_VERIFY_PROOF(batched_range_proof_u64)
      90             : DEFINE_VERIFY_PROOF(batched_range_proof_u128)
      91             : DEFINE_VERIFY_PROOF(batched_range_proof_u256)
      92             : DEFINE_VERIFY_PROOF(grouped_ciphertext_2_handles_validity)
      93             : DEFINE_VERIFY_PROOF(batched_grouped_ciphertext_2_handles_validity)
      94             : DEFINE_VERIFY_PROOF(grouped_ciphertext_3_handles_validity)
      95             : DEFINE_VERIFY_PROOF(batched_grouped_ciphertext_3_handles_validity)
      96             : 
      97             : FD_PROTOTYPES_END
      98             : 
      99             : #endif /* HEADER_fd_src_ballet_zksdk_fd_zksdk_h */

Generated by: LCOV version 1.14