monero-project / research-lab

A general repo for Monero Research Lab work in progress and completed work
243 stars 78 forks source link

Bulletproofs++ #101

Open selsta opened 2 years ago

selsta commented 2 years ago
test_bulletproof_3<true, 1> (100 calls) - OK: 1560 µs/call
test_bulletproof_3<false, 1> (20 calls) - OK: 5850 µs/call
test_bulletproof_3<true, 2> (50 calls) - OK: 2040 µs/call
test_bulletproof_3<false, 2> (10 calls) - OK: 8200 µs/call
test_bulletproof_3<true, 16> (10 calls) - OK: 9500 µs/call
test_bulletproof_3<false, 16> (2 calls) - OK: 73000 µs/call
test_aggregated_bulletproof_3<false, 2, 1, 1, 0, 64> (7 calls) - OK: 131428 µs/call
test_aggregated_bulletproof_3<true, 2, 1, 1, 0, 64> (7 calls) - OK: 52857 µs/call
test_bulletproof_plus<true, 1> (100 calls) - OK: 4360 µs/call
test_bulletproof_plus<false, 1> (20 calls) - OK: 26100 µs/call
test_bulletproof_plus<true, 2> (50 calls) - OK: 7360 µs/call
test_bulletproof_plus<false, 2> (10 calls) - OK: 50500 µs/call
test_bulletproof_plus<true, 16> (10 calls) - OK: 39200 µs/call
test_bulletproof_plus<false, 16> (2 calls) - OK: 343500 µs/call
test_aggregated_bulletproof_plus<false, 2, 1, 1, 0, 64> (7 calls) - OK: 466000 µs/call
test_aggregated_bulletproof_plus<true, 2, 1, 1, 0, 64> (7 calls) - OK: 56285 µs/call
test_bulletproof<true, 1> (100 calls) - OK: 4470 µs/call
test_bulletproof<false, 1> (20 calls) - OK: 28700 µs/call
test_bulletproof<true, 2> (50 calls) - OK: 7420 µs/call
test_bulletproof<false, 2> (10 calls) - OK: 56300 µs/call
test_bulletproof<true, 16> (10 calls) - OK: 39700 µs/call
test_bulletproof<false, 16> (2 calls) - OK: 384500 µs/call
test_aggregated_bulletproof<false, 2, 1, 1, 0, 64> (7 calls) - OK: 469714 µs/call
test_aggregated_bulletproof<true, 2, 1, 1, 0, 64> (7 calls) - OK: 61571 µs/call
Tests finished. Elapsed time: 75 sec

Verification speed in monero's performance tests.

plowsof commented 2 years ago

A draft proposal for getting the eprint paper audited https://repo.getmonero.org/monero-project/ccs-proposals/-/merge_requests/358

UkoeHB commented 1 year ago

Note: this is how to read the test results

test_bulletproof<true, 1> (100 calls) - OK: 4470 µs/call
test_bulletproof<false, 1> (20 calls) - OK: 28700 µs/call

- true = proof verification perf; false = proof construction perf - 1 = number of range proofs in one aggregate prof

test_aggregated_bulletproof<false, 2, 1, 1, 0, 64> (7 calls) - OK: 469714 µs/call
test_aggregated_bulletproof<true, 2, 1, 1, 0, 64> (7 calls) - OK: 61571 µs/call