Line data Source code
1 : #include "../fd_zksdk_private.h" 2 : 3 : /* https://github.com/solana-program/zk-elgamal-proof/blob/zk-sdk%40v5.0.1/zk-sdk/src/zk_elgamal_proof_program/proof_data/batched_range_proof/batched_range_proof_u64.rs#L82 */ 4 : int 5 222 : fd_zksdk_instr_verify_proof_batched_range_proof_u64( void const * _context, void const * _proof ) { 6 222 : fd_zksdk_transcript_t transcript[1]; 7 222 : fd_zksdk_batched_range_proof_context_t const * context = _context; 8 222 : fd_zksdk_range_proof_u64_proof_t const * proof = _proof; 9 : 10 : /* https://github.com/solana-program/zk-elgamal-proof/blob/zk-sdk%40v5.0.1/zk-sdk/src/zk_elgamal_proof_program/proof_data/batched_range_proof/batched_range_proof_u64.rs#L83 */ 11 222 : uchar batch_len = 0; 12 222 : int val = batched_range_proof_context_try_into( &batch_len, context ); 13 222 : if( FD_UNLIKELY( val != FD_ZKSDK_VERIFY_PROOF_SUCCESS ) ) { 14 6 : return val; 15 6 : } 16 : 17 : /* https://github.com/solana-program/zk-elgamal-proof/blob/zk-sdk%40v5.0.1/zk-sdk/src/zk_elgamal_proof_program/proof_data/batched_range_proof/batched_range_proof_u64.rs#L86-L88 18 : This can never happen: `commitments: [PodPedersenCommitment; MAX_COMMITMENTS]` */ 19 : 20 : /* https://github.com/solana-program/zk-elgamal-proof/blob/zk-sdk%40v5.0.1/zk-sdk/src/zk_elgamal_proof_program/proof_data/batched_range_proof/batched_range_proof_u64.rs#L90-L98 21 : We validate this inside fd_rangeproofs_verify() */ 22 : 23 : /* https://github.com/solana-program/zk-elgamal-proof/blob/zk-sdk%40v5.0.1/zk-sdk/src/zk_elgamal_proof_program/proof_data/batched_range_proof/batched_range_proof_u64.rs#L100 */ 24 216 : batched_range_proof_context_new_transcript( transcript, context ); 25 : 26 : /* https://github.com/solana-program/zk-elgamal-proof/blob/zk-sdk%40v5.0.1/zk-sdk/src/zk_elgamal_proof_program/proof_data/batched_range_proof/batched_range_proof_u64.rs#L103-L105 */ 27 216 : const fd_rangeproofs_ipp_proof_t ipp_proof = { 28 216 : 6, 29 216 : proof->ipp_lr_vec, 30 216 : proof->ipp_a, 31 216 : proof->ipp_b, 32 216 : }; 33 216 : int res = fd_rangeproofs_verify( 34 216 : &proof->range_proof, 35 216 : &ipp_proof, 36 216 : context->commitments, 37 216 : context->bit_lengths, 38 216 : batch_len, 39 216 : transcript 40 216 : ); 41 : 42 216 : if( FD_LIKELY( res == FD_RANGEPROOFS_SUCCESS ) ) { 43 175 : return FD_ZKSDK_VERIFY_PROOF_SUCCESS; 44 175 : } 45 41 : return FD_ZKSDK_VERIFY_PROOF_ERROR; 46 216 : }