mirror of
https://github.com/monero-project/monero.git
synced 2025-05-08 18:24:57 -04:00
rct: add a zeroCommit cache for common pre-rct case
This is called for every pre-rct output at blockchain sync time, and a lot of them wil hit the cache, saving a scalarmult each.
This commit is contained in:
parent
963d247154
commit
5d7c231604
4 changed files with 211 additions and 0 deletions
|
@ -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