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_u256.rs#L90 */ 4 : int 5 12 : fd_zksdk_instr_verify_proof_batched_range_proof_u256( void const * _context, void const * _proof ) { 6 12 : fd_zksdk_transcript_t transcript[1]; 7 12 : fd_zksdk_batched_range_proof_context_t const * context = _context; 8 12 : fd_zksdk_range_proof_u256_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_u256.rs#L91 */ 11 12 : uchar batch_len = 0; 12 12 : int val = batched_range_proof_context_try_into( &batch_len, context ); 13 12 : 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_u256.rs#L99-L104 18 : This is already checked in batched_range_proof_context_try_into() */ 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_u256.rs#L106-L108 21 : This can never happen: `commitments: [PodPedersenCommitment; MAX_COMMITMENTS]` */ 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_u256.rs#L110-L117 24 : We validate this inside fd_rangeproofs_verify() */ 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_u256.rs#L119 */ 27 12 : batched_range_proof_context_new_transcript( transcript, context ); 28 : 29 : /* 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_u256.rs#L122-L124 */ 30 12 : const fd_rangeproofs_ipp_proof_t ipp_proof = { 31 12 : 8, 32 12 : proof->ipp_lr_vec, 33 12 : proof->ipp_a, 34 12 : proof->ipp_b, 35 12 : }; 36 12 : int res = fd_rangeproofs_verify( 37 12 : &proof->range_proof, 38 12 : &ipp_proof, 39 12 : context->commitments, 40 12 : context->bit_lengths, 41 12 : batch_len, 42 12 : transcript 43 12 : ); 44 : 45 12 : if( FD_LIKELY( res == FD_RANGEPROOFS_SUCCESS ) ) { 46 4 : return FD_ZKSDK_VERIFY_PROOF_SUCCESS; 47 4 : } 48 8 : return FD_ZKSDK_VERIFY_PROOF_ERROR; 49 12 : }