mirror of
https://git.wownero.com/wownero/wownero.git
synced 2024-08-15 01:03:23 +00:00
Merge pull request #4795
5d7c2316
rct: add a zeroCommit cache for common pre-rct case (moneromooo-monero)
This commit is contained in:
commit
46f989bc49
4 changed files with 211 additions and 0 deletions
|
@ -40,6 +40,7 @@ enum test_op
|
|||
op_sc_mul,
|
||||
op_ge_add_raw,
|
||||
op_ge_add_p3_p3,
|
||||
op_zeroCommitCached,
|
||||
ops_fast,
|
||||
|
||||
op_addKeys,
|
||||
|
@ -55,6 +56,7 @@ enum test_op
|
|||
op_addKeys3,
|
||||
op_addKeys3_2,
|
||||
op_isInMainSubgroup,
|
||||
op_zeroCommitUncached,
|
||||
};
|
||||
|
||||
template<test_op op>
|
||||
|
@ -111,6 +113,8 @@ public:
|
|||
case op_addKeys3: rct::addKeys3(key, scalar0, point0, scalar1, precomp1); break;
|
||||
case op_addKeys3_2: rct::addKeys3(key, scalar0, precomp0, scalar1, precomp1); break;
|
||||
case op_isInMainSubgroup: rct::isInMainSubgroup(point0); break;
|
||||
case op_zeroCommitUncached: rct::zeroCommit(9001); break;
|
||||
case op_zeroCommitCached: rct::zeroCommit(9000); break;
|
||||
default: return false;
|
||||
}
|
||||
return true;
|
||||
|
|
|
@ -261,6 +261,8 @@ int main(int argc, char** argv)
|
|||
TEST_PERFORMANCE1(filter, p, test_crypto_ops, op_addKeys3);
|
||||
TEST_PERFORMANCE1(filter, p, test_crypto_ops, op_addKeys3_2);
|
||||
TEST_PERFORMANCE1(filter, p, test_crypto_ops, op_isInMainSubgroup);
|
||||
TEST_PERFORMANCE1(filter, p, test_crypto_ops, op_zeroCommitUncached);
|
||||
TEST_PERFORMANCE1(filter, p, test_crypto_ops, op_zeroCommitCached);
|
||||
|
||||
TEST_PERFORMANCE2(filter, p, test_multiexp, multiexp_bos_coster, 2);
|
||||
TEST_PERFORMANCE2(filter, p, test_multiexp, multiexp_bos_coster, 4);
|
||||
|
|
|
@ -1086,6 +1086,25 @@ TEST(ringct, zeroCommmit)
|
|||
ASSERT_EQ(z, manual);
|
||||
}
|
||||
|
||||
static rct::key uncachedZeroCommit(uint64_t amount)
|
||||
{
|
||||
const rct::key am = rct::d2h(amount);
|
||||
const rct::key bH = rct::scalarmultH(am);
|
||||
return rct::addKeys(rct::G, bH);
|
||||
}
|
||||
|
||||
TEST(ringct, zeroCommitCache)
|
||||
{
|
||||
ASSERT_EQ(rct::zeroCommit(0), uncachedZeroCommit(0));
|
||||
ASSERT_EQ(rct::zeroCommit(1), uncachedZeroCommit(1));
|
||||
ASSERT_EQ(rct::zeroCommit(2), uncachedZeroCommit(2));
|
||||
ASSERT_EQ(rct::zeroCommit(10), uncachedZeroCommit(10));
|
||||
ASSERT_EQ(rct::zeroCommit(200), uncachedZeroCommit(200));
|
||||
ASSERT_EQ(rct::zeroCommit(1000000000), uncachedZeroCommit(1000000000));
|
||||
ASSERT_EQ(rct::zeroCommit(3000000000000), uncachedZeroCommit(3000000000000));
|
||||
ASSERT_EQ(rct::zeroCommit(900000000000000), uncachedZeroCommit(900000000000000));
|
||||
}
|
||||
|
||||
TEST(ringct, H)
|
||||
{
|
||||
ge_p3 p3;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue