diff options
author | luigi1111 <luigi1111w@gmail.com> | 2022-05-16 13:48:23 -0500 |
---|---|---|
committer | luigi1111 <luigi1111w@gmail.com> | 2022-05-16 13:48:23 -0500 |
commit | f4669bfa2b2679816c4e04da9f912ed920ed383d (patch) | |
tree | ed9a9e8aa7d31d208371d82817027a7bc20d9cd2 /src/ringct/rctSigs.cpp | |
parent | Merge pull request #8321 (diff) | |
parent | wallet2: speedup large tx construction: reserve vector memory (diff) | |
download | monero-f4669bfa2b2679816c4e04da9f912ed920ed383d.tar.xz |
Merge pull request #8046
df2e680 wallet2: speedup large tx construction: reserve vector memory (moneromooo-monero)
38cdf01 wallet2: speedup large tx construction: batch ringdb lookups (Crypto City)
353cd53 wallet2: speedup large tx construction: no pointless clsag generation (Crypto City)
2b95178 wallet2: speedup large tx construction: batch ringdb updates (Crypto City)
c9cf0b7 wallet2: speedup large tx construction: cache public key validity (moneromooo-monero)
Diffstat (limited to '')
-rw-r--r-- | src/ringct/rctSigs.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/ringct/rctSigs.cpp b/src/ringct/rctSigs.cpp index 3e85f60ce..bd67778ec 100644 --- a/src/ringct/rctSigs.cpp +++ b/src/ringct/rctSigs.cpp @@ -79,6 +79,7 @@ namespace return rct::Bulletproof{rct::keyV(n_outs, I), I, I, I, I, I, I, rct::keyV(nrl, I), rct::keyV(nrl, I), I, I, I}; } + rct::BulletproofPlus make_dummy_bulletproof_plus(const std::vector<uint64_t> &outamounts, rct::keyV &C, rct::keyV &masks) { const size_t n_outs = outamounts.size(); @@ -109,6 +110,13 @@ namespace return rct::BulletproofPlus{rct::keyV(n_outs, I), I, I, I, I, I, I, rct::keyV(nrl, I), rct::keyV(nrl, I)}; } + + rct::clsag make_dummy_clsag(size_t ring_size) + { + const rct::key I = rct::identity(); + const size_t n_scalars = ring_size; + return rct::clsag{rct::keyV(n_scalars, I), I, I, I}; + } } namespace rct { @@ -1323,7 +1331,10 @@ namespace rct { { if (is_rct_clsag(rv.type)) { - rv.p.CLSAGs[i] = proveRctCLSAGSimple(full_message, rv.mixRing[i], inSk[i], a[i], pseudoOuts[i], kLRki ? &(*kLRki)[i]: NULL, msout ? &msout->c[i] : NULL, msout ? &msout->mu_p[i] : NULL, index[i], hwdev); + if (hwdev.get_mode() == hw::device::TRANSACTION_CREATE_FAKE) + rv.p.CLSAGs[i] = make_dummy_clsag(rv.mixRing[i].size()); + else + rv.p.CLSAGs[i] = proveRctCLSAGSimple(full_message, rv.mixRing[i], inSk[i], a[i], pseudoOuts[i], kLRki ? &(*kLRki)[i]: NULL, msout ? &msout->c[i] : NULL, msout ? &msout->mu_p[i] : NULL, index[i], hwdev); } else { |