From 7e67c52fa2a4ee68437a5fd906d9848a2f0a7150 Mon Sep 17 00:00:00 2001 From: moneromooo-monero Date: Fri, 30 Mar 2018 20:44:51 +0100 Subject: [PATCH] Add a define for the max number of bulletproof multi-outputs --- src/cryptonote_config.h | 2 ++ src/ringct/bulletproofs.cc | 3 ++- src/ringct/rctSigs.cpp | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/cryptonote_config.h b/src/cryptonote_config.h index a0dcf2df1..00bc2f275 100644 --- a/src/cryptonote_config.h +++ b/src/cryptonote_config.h @@ -141,6 +141,8 @@ #define DEFAULT_TXPOOL_MAX_SIZE 648000000ull // 3 days at 300000, in bytes +#define BULLETPROOF_MAX_OUTPUTS 16 + // New constants are intended to go here namespace config { diff --git a/src/ringct/bulletproofs.cc b/src/ringct/bulletproofs.cc index 94be0e545..dc5918738 100644 --- a/src/ringct/bulletproofs.cc +++ b/src/ringct/bulletproofs.cc @@ -33,6 +33,7 @@ #include #include "misc_log_ex.h" #include "common/perf_timer.h" +#include "cryptonote_config.h" extern "C" { #include "crypto/crypto-ops.h" @@ -57,7 +58,7 @@ static rct::keyV vector_dup(const rct::key &x, size_t n); static rct::key inner_product(const rct::keyV &a, const rct::keyV &b); static constexpr size_t maxN = 64; -static constexpr size_t maxM = 16; +static constexpr size_t maxM = BULLETPROOF_MAX_OUTPUTS; static rct::key Hi[maxN*maxM], Gi[maxN*maxM]; static ge_p3 Hi_p3[maxN*maxM], Gi_p3[maxN*maxM]; static ge_dsmp Gprecomp[maxN*maxM], Hprecomp[maxN*maxM]; diff --git a/src/ringct/rctSigs.cpp b/src/ringct/rctSigs.cpp index 2175d1659..d2dc87e27 100644 --- a/src/ringct/rctSigs.cpp +++ b/src/ringct/rctSigs.cpp @@ -762,7 +762,7 @@ namespace rct { { size_t batch_size = 1; if (range_proof_type == RangeProofMultiOutputBulletproof) - while (batch_size * 2 + amounts_proved <= n_amounts && batch_size * 2 <= 16) + while (batch_size * 2 + amounts_proved <= n_amounts && batch_size * 2 <= BULLETPROOF_MAX_OUTPUTS) batch_size *= 2; rct::keyV C, masks; std::vector batch_amounts(batch_size);