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 0 : fd_zksdk_instr_verify_proof_batched_range_proof_u64( void const * _context, void const * _proof ) { 6 0 : fd_zksdk_transcript_t transcript[1]; 7 0 : fd_zksdk_batched_range_proof_context_t const * context = _context; 8 0 : 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 0 : uchar batch_len = 0; 12 0 : int val = batched_range_proof_context_try_into( &batch_len, context ); 13 0 : if( FD_UNLIKELY( val != FD_ZKSDK_VERIFY_PROOF_SUCCESS ) ) { 14 0 : return val; 15 0 : } 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 0 : 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 0 : const fd_rangeproofs_ipp_proof_t ipp_proof = { 28 0 : 6, 29 0 : proof->ipp_lr_vec, 30 0 : proof->ipp_a, 31 0 : proof->ipp_b, 32 0 : }; 33 0 : int res = fd_rangeproofs_verify( 34 0 : &proof->range_proof, 35 0 : &ipp_proof, 36 0 : context->commitments, 37 0 : context->bit_lengths, 38 0 : batch_len, 39 0 : transcript 40 0 : ); 41 : 42 0 : if( FD_LIKELY( res == FD_RANGEPROOFS_SUCCESS ) ) { 43 0 : return FD_ZKSDK_VERIFY_PROOF_SUCCESS; 44 0 : } 45 0 : return FD_ZKSDK_VERIFY_PROOF_ERROR; 46 0 : }