Skip to content

Commit d4b3a8e

Browse files
committed
bppp: avoid benchmarking verification of same proof over and over
1 parent 9700ede commit d4b3a8e

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

src/bench_bppp.c

+14-10
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,14 @@
1111
#include "util.h"
1212
#include "bench.h"
1313

14+
#define MAX_PROOF_SIZE 500
15+
1416
typedef 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

4345
static 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

6567
int 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

Comments
 (0)