LCOV - code coverage report
Current view: top level - flamenco/runtime/program - fd_zk_elgamal_proof_program.c (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 0 67 0.0 %
Date: 2025-03-20 12:08:36 Functions: 0 1 0.0 %

          Line data    Source code
       1             : #include "fd_zk_elgamal_proof_program.h"
       2             : #include "zksdk/fd_zksdk.h"
       3             : #include "../fd_executor.h"
       4             : #include "../fd_runtime.h"
       5             : 
       6             : /*
       7             :  * ZK ElGamal Proof Program
       8             :  */
       9             : 
      10             : int
      11           0 : fd_executor_zk_elgamal_proof_program_execute( fd_exec_instr_ctx_t * ctx ) {
      12             :   /* Feature-gate program activation */
      13           0 :   if( FD_UNLIKELY( !FD_FEATURE_ACTIVE( ctx->txn_ctx->slot, ctx->txn_ctx->features, zk_elgamal_proof_program_enabled ) ) ) {
      14           0 :     return FD_EXECUTOR_INSTR_ERR_UNSUPPORTED_PROGRAM_ID;
      15           0 :   }
      16             : 
      17           0 :   uchar const * instr_data    = ctx->instr->data;
      18           0 :   ulong         instr_data_sz = ctx->instr->data_sz;
      19             : 
      20             :   /* https://github.com/anza-xyz/agave/blob/v2.0.1/programs/zk-elgamal-proof/src/lib.rs#L172-L176 */
      21           0 :   if( FD_UNLIKELY( instr_data_sz==0UL ) ) {
      22           0 :     return FD_EXECUTOR_INSTR_ERR_INVALID_INSTR_DATA;
      23           0 :   }
      24             : 
      25           0 :   switch( instr_data[0] ) {
      26           0 :   case FD_ZKSDK_INSTR_CLOSE_CONTEXT_STATE:
      27             :     /* https://github.com/anza-xyz/agave/blob/v2.0.1/programs/zk-elgamal-proof/src/lib.rs#L179-L185 */
      28           0 :     FD_EXEC_CU_UPDATE( ctx, FD_ZKSDK_INSTR_CLOSE_CONTEXT_STATE_COMPUTE_UNITS );
      29           0 :     fd_log_collector_msg_literal( ctx, "CloseContextState" );
      30           0 :     return fd_zksdk_process_close_context_state( ctx );
      31             : 
      32           0 :   case FD_ZKSDK_INSTR_VERIFY_ZERO_CIPHERTEXT:
      33           0 :     FD_EXEC_CU_UPDATE( ctx, FD_ZKSDK_INSTR_VERIFY_ZERO_CIPHERTEXT_COMPUTE_UNITS );
      34           0 :     fd_log_collector_msg_literal( ctx, "VerifyZeroCiphertext" );
      35           0 :     break;
      36             : 
      37           0 :   case FD_ZKSDK_INSTR_VERIFY_CIPHERTEXT_CIPHERTEXT_EQUALITY:
      38           0 :     FD_EXEC_CU_UPDATE( ctx, FD_ZKSDK_INSTR_VERIFY_CIPHERTEXT_CIPHERTEXT_EQUALITY_COMPUTE_UNITS );
      39           0 :     fd_log_collector_msg_literal( ctx, "VerifyCiphertextCiphertextEquality" );
      40           0 :     break;
      41             : 
      42           0 :   case FD_ZKSDK_INSTR_VERIFY_CIPHERTEXT_COMMITMENT_EQUALITY:
      43           0 :     FD_EXEC_CU_UPDATE( ctx, FD_ZKSDK_INSTR_VERIFY_CIPHERTEXT_COMMITMENT_EQUALITY_COMPUTE_UNITS );
      44           0 :     fd_log_collector_msg_literal( ctx, "VerifyCiphertextCommitmentEquality" );
      45           0 :     break;
      46             : 
      47           0 :   case FD_ZKSDK_INSTR_VERIFY_PUBKEY_VALIDITY:
      48           0 :     FD_EXEC_CU_UPDATE( ctx, FD_ZKSDK_INSTR_VERIFY_PUBKEY_VALIDITY_COMPUTE_UNITS );
      49           0 :     fd_log_collector_msg_literal( ctx, "VerifyPubkeyValidity" );
      50           0 :     break;
      51             : 
      52           0 :   case FD_ZKSDK_INSTR_VERIFY_PERCENTAGE_WITH_CAP:
      53           0 :     FD_EXEC_CU_UPDATE( ctx, FD_ZKSDK_INSTR_VERIFY_PERCENTAGE_WITH_CAP_COMPUTE_UNITS );
      54           0 :     fd_log_collector_msg_literal( ctx, "VerifyPercentageWithCap" );
      55           0 :     break;
      56             : 
      57           0 :   case FD_ZKSDK_INSTR_VERIFY_BATCHED_RANGE_PROOF_U64:
      58           0 :     FD_EXEC_CU_UPDATE( ctx, FD_ZKSDK_INSTR_VERIFY_BATCHED_RANGE_PROOF_U64_COMPUTE_UNITS );
      59           0 :     fd_log_collector_msg_literal( ctx, "VerifyBatchedRangeProofU64" );
      60           0 :     break;
      61             : 
      62           0 :   case FD_ZKSDK_INSTR_VERIFY_BATCHED_RANGE_PROOF_U128:
      63           0 :     FD_EXEC_CU_UPDATE( ctx, FD_ZKSDK_INSTR_VERIFY_BATCHED_RANGE_PROOF_U128_COMPUTE_UNITS );
      64           0 :     fd_log_collector_msg_literal( ctx, "VerifyBatchedRangeProofU128" );
      65           0 :     break;
      66             : 
      67           0 :   case FD_ZKSDK_INSTR_VERIFY_BATCHED_RANGE_PROOF_U256:
      68           0 :     FD_EXEC_CU_UPDATE( ctx, FD_ZKSDK_INSTR_VERIFY_BATCHED_RANGE_PROOF_U256_COMPUTE_UNITS );
      69           0 :     fd_log_collector_msg_literal( ctx, "VerifyBatchedRangeProofU256" );
      70           0 :     break;
      71             : 
      72           0 :   case FD_ZKSDK_INSTR_VERIFY_GROUPED_CIPHERTEXT_2_HANDLES_VALIDITY:
      73           0 :     FD_EXEC_CU_UPDATE( ctx, FD_ZKSDK_INSTR_VERIFY_GROUPED_CIPHERTEXT_2_HANDLES_VALIDITY_COMPUTE_UNITS );
      74           0 :     fd_log_collector_msg_literal( ctx, "VerifyGroupedCiphertext2HandlesValidity" );
      75           0 :     break;
      76             : 
      77           0 :   case FD_ZKSDK_INSTR_VERIFY_BATCHED_GROUPED_CIPHERTEXT_2_HANDLES_VALIDITY:
      78           0 :     FD_EXEC_CU_UPDATE( ctx, FD_ZKSDK_INSTR_VERIFY_BATCHED_GROUPED_CIPHERTEXT_2_HANDLES_VALIDITY_COMPUTE_UNITS );
      79           0 :     fd_log_collector_msg_literal( ctx, "VerifyBatchedGroupedCiphertext2HandlesValidity" );
      80           0 :     break;
      81             : 
      82           0 :   case FD_ZKSDK_INSTR_VERIFY_GROUPED_CIPHERTEXT_3_HANDLES_VALIDITY:
      83           0 :     FD_EXEC_CU_UPDATE( ctx, FD_ZKSDK_INSTR_VERIFY_GROUPED_CIPHERTEXT_3_HANDLES_VALIDITY_COMPUTE_UNITS );
      84           0 :     fd_log_collector_msg_literal( ctx, "VerifyGroupedCiphertext3HandlesValidity" );
      85           0 :     break;
      86             : 
      87           0 :   case FD_ZKSDK_INSTR_VERIFY_BATCHED_GROUPED_CIPHERTEXT_3_HANDLES_VALIDITY:
      88           0 :     FD_EXEC_CU_UPDATE( ctx, FD_ZKSDK_INSTR_VERIFY_BATCHED_GROUPED_CIPHERTEXT_3_HANDLES_VALIDITY_COMPUTE_UNITS );
      89           0 :     fd_log_collector_msg_literal( ctx, "VerifyBatchedGroupedCiphertext3HandlesValidity" );
      90           0 :     break;
      91             : 
      92           0 :   default:
      93           0 :     return FD_EXECUTOR_INSTR_ERR_INVALID_INSTR_DATA;
      94           0 :   }
      95             : 
      96           0 :   return fd_zksdk_process_verify_proof( ctx );
      97           0 : }

Generated by: LCOV version 1.14