1111#include "util.h"
1212#include "bench.h"
1313
14+ #define MAX_PROOF_SIZE 500
15+
1416typedef struct {
1517 secp256k1_context * ctx ;
1618 secp256k1_bppp_generators * gens ;
1719 secp256k1_scratch_space * scratch ;
1820 secp256k1_pedersen_commitment commit ;
19- unsigned char proof [ 1000 ] ;
21+ unsigned char * proofs ;
2022 unsigned char blind [32 ];
2123 unsigned char nonce [32 ];
2224 size_t proof_len ;
@@ -31,13 +33,13 @@ static void bench_bppp_setup(void* arg) {
3133
3234 data -> min_value = 0 ;
3335 data -> value = 100 ;
34- data -> proof_len = sizeof ( data -> proof ) ;
36+ data -> proof_len = MAX_PROOF_SIZE ;
3537 memset (data -> blind , 0x77 , 32 );
3638 memset (data -> nonce , 0x0 , 32 );
3739 CHECK (secp256k1_pedersen_commit (data -> ctx , & data -> commit , data -> blind , data -> value , secp256k1_generator_h ));
3840
39- CHECK (secp256k1_bppp_rangeproof_prove (data -> ctx , data -> scratch , data -> gens , secp256k1_generator_h , data -> proof , & data -> proof_len , data -> n_bits , data -> base , data -> value , 0 , & data -> commit , data -> blind , data -> nonce , NULL , 0 ));
40- CHECK (secp256k1_bppp_rangeproof_verify (data -> ctx , data -> scratch , data -> gens , secp256k1_generator_h , data -> proof , data -> proof_len , data -> n_bits , data -> base , data -> min_value , & data -> commit , NULL , 0 ));
41+ CHECK (secp256k1_bppp_rangeproof_prove (data -> ctx , data -> scratch , data -> gens , secp256k1_generator_h , data -> proofs , & data -> proof_len , data -> n_bits , data -> base , data -> value , 0 , & data -> commit , data -> blind , data -> nonce , NULL , 0 ));
42+ CHECK (secp256k1_bppp_rangeproof_verify (data -> ctx , data -> scratch , data -> gens , secp256k1_generator_h , data -> proofs , data -> proof_len , data -> n_bits , data -> base , data -> min_value , & data -> commit , NULL , 0 ));
4143}
4244
4345static void bench_bppp_prove (void * arg , int iters ) {
@@ -48,8 +50,8 @@ static void bench_bppp_prove(void* arg, int iters) {
4850 data -> nonce [1 ] = i ;
4951 data -> nonce [2 ] = i >> 8 ;
5052 data -> nonce [3 ] = i >> 16 ;
51- data -> proof_len = sizeof ( data -> proof ) ;
52- CHECK (secp256k1_bppp_rangeproof_prove (data -> ctx , data -> scratch , data -> gens , secp256k1_generator_h , data -> proof , & data -> proof_len , data -> n_bits , data -> base , data -> value , 0 , & data -> commit , data -> blind , data -> nonce , NULL , 0 ));
53+ data -> proof_len = MAX_PROOF_SIZE ;
54+ CHECK (secp256k1_bppp_rangeproof_prove (data -> ctx , data -> scratch , data -> gens , secp256k1_generator_h , & data -> proofs [ i * MAX_PROOF_SIZE ] , & data -> proof_len , data -> n_bits , data -> base , data -> value , 0 , & data -> commit , data -> blind , data -> nonce , NULL , 0 ));
5355 }
5456}
5557
@@ -58,28 +60,30 @@ static void bench_bppp_verify(void* arg, int iters) {
5860 int i ;
5961
6062 for (i = 0 ; i < iters ; i ++ ) {
61- CHECK (secp256k1_bppp_rangeproof_verify (data -> ctx , data -> scratch , data -> gens , secp256k1_generator_h , data -> proof , data -> proof_len , data -> n_bits , data -> base , data -> min_value , & data -> commit , NULL , 0 ));
63+ CHECK (secp256k1_bppp_rangeproof_verify (data -> ctx , data -> scratch , data -> gens , secp256k1_generator_h , & data -> proofs [ i * MAX_PROOF_SIZE ] , data -> proof_len , data -> n_bits , data -> base , data -> min_value , & data -> commit , NULL , 0 ));
6264 }
6365}
6466
6567int main (void ) {
6668 bench_bppp_data data ;
67- int iters = get_iters (32 );
69+ int iters = get_iters (64 );
6870 char test_name [64 ];
6971
7072 data .ctx = secp256k1_context_create (SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY );
7173 data .gens = secp256k1_bppp_generators_create (data .ctx , 24 );
72- data .scratch = secp256k1_scratch_space_create (data .ctx , 8000 * 1024 );
74+ data .scratch = secp256k1_scratch_space_create (data .ctx , 80 * 1024 );
75+ data .proofs = (unsigned char * )malloc (iters * MAX_PROOF_SIZE );
7376
7477 data .n_bits = 1ul << 6 ;
7578 data .base = 16 ;
7679 sprintf (test_name , "bppp_prove_64bits_16base" );
77- run_benchmark (test_name , bench_bppp_prove , bench_bppp_setup , NULL , & data , 20 , iters );
80+ run_benchmark (test_name , bench_bppp_prove , bench_bppp_setup , NULL , & data , 4 , iters );
7881
7982 sprintf (test_name , "bppp_verify_64bits_16base" );
8083 run_benchmark (test_name , bench_bppp_verify , bench_bppp_setup , NULL , & data , 20 , iters );
8184
8285 secp256k1_scratch_space_destroy (data .ctx , data .scratch );
86+ free (data .proofs );
8387 secp256k1_bppp_generators_destroy (data .ctx , data .gens );
8488 secp256k1_context_destroy (data .ctx );
8589
0 commit comments