diff --git a/py-scripts/speedup_curvemult.py b/py-scripts/speedup_curvemult.py index 1589a40..18d48af 100644 --- a/py-scripts/speedup_curvemult.py +++ b/py-scripts/speedup_curvemult.py @@ -11,21 +11,21 @@ import random import time -from btclib.ecc.curve import secp256k1 as ec -from btclib.curvegroup import ( +from btclib.ec.curve import secp256k1 as ec +from btclib.ec.curve_group import ( _mult, - _mult_base_3, - _mult_fixed_window, - _mult_fixed_window_cached, - _mult_jac, - _mult_mont_ladder, + mult_base_3, + mult_fixed_window, + mult_fixed_window_cached, + mult_jac, + mult_mont_ladder, cached_multiples, cached_multiples_fixwind, ) -from btclib.curvegroup2 import ( - _mult_endomorphism_secp256k1, - _mult_sliding_window, - _mult_w_NAF, +from btclib.ec.curve_group_2 import ( + mult_endomorphism_secp256k1, + mult_sliding_window, + mult_w_NAF, ) # setup @@ -47,14 +47,14 @@ T = ec.GJ start = time.time() for q in qs: - T = _mult_jac(q, ec.GJ, ec) if gen_only else _mult_jac(q, T, ec) + T = mult_jac(q, ec.GJ, ec) if gen_only else mult_jac(q, T, ec) double_and_add = time.time() - start print(f"Double & add : {double_and_add / benchmark:.0%}") T = ec.GJ start = time.time() for q in qs: - T = _mult_mont_ladder(q, ec.GJ, ec) if gen_only else _mult_mont_ladder(q, T, ec) + T = mult_mont_ladder(q, ec.GJ, ec) if gen_only else mult_mont_ladder(q, T, ec) montgomery = time.time() - start print(f"Montgomery ladder: {montgomery / benchmark:.0%}") @@ -63,7 +63,7 @@ T = ec.GJ start = time.time() for q in qs: - T = _mult_base_3(q, ec.GJ, ec) if gen_only else _mult_base_3(q, T, ec) + T = mult_base_3(q, ec.GJ, ec) if gen_only else mult_base_3(q, T, ec) base3 = time.time() - start print(f"Base 3 : {base3 / benchmark:.0%}", cached_multiples.cache_info()) @@ -75,9 +75,9 @@ start = time.time() for q in qs: T = ( - _mult_fixed_window(q, ec.GJ, ec, w, cached) + mult_fixed_window(q, ec.GJ, ec, w, cached) if gen_only - else _mult_fixed_window(q, T, ec, w, cached) + else mult_fixed_window(q, T, ec, w, cached) ) fixed_window_4 = time.time() - start print( @@ -93,9 +93,9 @@ start = time.time() for q in qs: T = ( - _mult_fixed_window(q, ec.GJ, ec, w, cached) + mult_fixed_window(q, ec.GJ, ec, w, cached) if gen_only - else _mult_fixed_window(q, T, ec, w, cached) + else mult_fixed_window(q, T, ec, w, cached) ) fixed_window_5 = time.time() - start print( @@ -111,9 +111,9 @@ start = time.time() for q in qs: T = ( - _mult_fixed_window(q, ec.GJ, ec, w, cached) + mult_fixed_window(q, ec.GJ, ec, w, cached) if gen_only - else _mult_fixed_window(q, T, ec, w, cached) + else mult_fixed_window(q, T, ec, w, cached) ) fixed_window_4_ca = time.time() - start print( @@ -129,9 +129,9 @@ start = time.time() for q in qs: T = ( - _mult_fixed_window(q, ec.GJ, ec, w, cached) + mult_fixed_window(q, ec.GJ, ec, w, cached) if gen_only - else _mult_fixed_window(q, T, ec, w, cached) + else mult_fixed_window(q, T, ec, w, cached) ) fixed_window_5_ca = time.time() - start print( @@ -145,9 +145,9 @@ start = time.time() for q in qs: T = ( - _mult_fixed_window_cached(q, ec.GJ, ec) + mult_fixed_window_cached(q, ec.GJ, ec) if gen_only - else _mult_fixed_window_cached(q, T, ec) + else mult_fixed_window_cached(q, T, ec) ) fixed_window_cached = time.time() - start print( @@ -162,9 +162,9 @@ start = time.time() for q in qs: T = ( - _mult_sliding_window(q, ec.GJ, ec, 5) + mult_sliding_window(q, ec.GJ, ec, 5) if gen_only - else _mult_sliding_window(q, T, ec, w) + else mult_sliding_window(q, T, ec, w) ) sliding_window_4 = time.time() - start print( @@ -179,9 +179,9 @@ start = time.time() for q in qs: T = ( - _mult_sliding_window(q, ec.GJ, ec, 5) + mult_sliding_window(q, ec.GJ, ec, 5) if gen_only - else _mult_sliding_window(q, T, ec, w) + else mult_sliding_window(q, T, ec, w) ) sliding_window_5 = time.time() - start print( @@ -195,7 +195,7 @@ w = 4 start = time.time() for q in qs: - T = _mult_w_NAF(q, ec.GJ, ec, 4) if gen_only else _mult_w_NAF(q, T, ec, w) + T = mult_w_NAF(q, ec.GJ, ec, 4) if gen_only else _mult_w_NAF(q, T, ec, w) wNAF_4 = time.time() - start print(f"wNAF 4 : {wNAF_4 / benchmark:.0%}", cached_multiples.cache_info()) @@ -205,7 +205,7 @@ w = 5 start = time.time() for q in qs: - T = _mult_w_NAF(q, ec.GJ, ec, 4) if gen_only else _mult_w_NAF(q, T, ec, w) + T = mult_w_NAF(q, ec.GJ, ec, 4) if gen_only else mult_w_NAF(q, T, ec, w) wNAF_5 = time.time() - start print(f"wNAF 5 : {wNAF_5 / benchmark:.0%}", cached_multiples.cache_info()) @@ -214,7 +214,7 @@ start = time.time() for q in qs: T = ( - _mult_endomorphism_secp256k1(q, ec.GJ, ec) + mult_endomorphism_secp256k1(q, ec.GJ, ec) if gen_only else _mult_endomorphism_secp256k1(q, T, ec) ) diff --git a/py-scripts/speedup_doubleandadd.py b/py-scripts/speedup_doubleandadd.py index e22fb6b..3c05a13 100644 --- a/py-scripts/speedup_doubleandadd.py +++ b/py-scripts/speedup_doubleandadd.py @@ -11,45 +11,45 @@ import random import time -from btclib.ecc.curve import secp256k1 as ec -from btclib.curvegroup import ( - _mult_aff, - _mult_jac, - _mult_recursive_aff, - _mult_recursive_jac, +from btclib.ec.curve import secp256k1 as ec +from btclib.ec.curve_group import ( + mult_aff, + mult_jac, + mult_recursive_aff, + mult_recursive_jac, ) # setup -random.seed(42) +random.seed(350746) qs = [random.getrandbits(ec.nlen) % ec.n for _ in range(100)] start = time.time() for q in qs: # starts from affine coordinates, ends with affine coordinates - ec._aff_from_jac(_mult_jac(q, ec.GJ, ec)) + ec.aff_from_jac(mult_jac(q, ec.GJ, ec)) benchmark = time.time() - start print("Benchmark completed") start = time.time() for q in qs: - _mult_recursive_aff(q, ec.G, ec) + mult_recursive_aff(q, ec.G, ec) recursive_aff = time.time() - start print(f"Recursive aff : {recursive_aff / benchmark:.0%}") start = time.time() for q in qs: - ec._aff_from_jac(_mult_recursive_jac(q, ec.GJ, ec)) + ec.aff_from_jac(mult_recursive_jac(q, ec.GJ, ec)) recursive_jac = time.time() - start print(f"Recursive jac : {recursive_jac / benchmark:.0%}") start = time.time() for q in qs: - _mult_aff(q, ec.G, ec) + mult_aff(q, ec.G, ec) double_add_aff = time.time() - start print(f"Double and add aff : {double_add_aff / benchmark:.0%}") start = time.time() for q in qs: - ec._aff_from_jac(_mult_jac(q, ec.GJ, ec)) + ec.aff_from_jac(mult_jac(q, ec.GJ, ec)) double_add_jac = time.time() - start print(f"Double and add jac : {double_add_jac / benchmark:.0%}") diff --git a/py-scripts/speedup_fixwind.py b/py-scripts/speedup_fixwind.py index 06d780b..21f92d3 100644 --- a/py-scripts/speedup_fixwind.py +++ b/py-scripts/speedup_fixwind.py @@ -11,12 +11,12 @@ import random import time -from btclib.ecc.curve import secp256k1 as ec -from btclib.curvegroup import ( - _mult_base_3, - _mult_fixed_window, - _mult_jac, - _mult_mont_ladder, +from btclib.ec.curve import secp256k1 as ec +from btclib.ec.curve_group import ( + mult_base_3, + mult_fixed_window, + mult_jac, + mult_mont_ladder, ) # setup @@ -27,28 +27,28 @@ T = ec.GJ start = time.time() for q in qs: - T = _mult_jac(q, T, ec) + T = mult_jac(q, T, ec) benchmark = time.time() - start print("Benchmark completed") T = ec.GJ start = time.time() for q in qs: - T = _mult_jac(q, T, ec) + T = mult_jac(q, T, ec) double_and_add = time.time() - start print(f"Double & add : {double_and_add / benchmark:.0%}") T = ec.GJ start = time.time() for q in qs: - T = _mult_mont_ladder(q, T, ec) + T = mult_mont_ladder(q, T, ec) montgomery = time.time() - start print(f"Montgomery ladder: {montgomery / benchmark:.0%}") T = ec.GJ start = time.time() for q in qs: - T = _mult_base_3(q, T, ec) + T = mult_base_3(q, T, ec) base3 = time.time() - start print(f"Base 3 : {base3 / benchmark:.0%}") @@ -56,7 +56,7 @@ w = 4 start = time.time() for q in qs: - T = _mult_fixed_window(q, T, ec, w) + T = mult_fixed_window(q, T, ec, w) fixed_window_4 = time.time() - start print(f"Fixed window 4 : {fixed_window_4 / benchmark:.0%}") @@ -64,6 +64,6 @@ w = 5 start = time.time() for q in qs: - T = _mult_fixed_window(q, T, ec, w) + T = mult_fixed_window(q, T, ec, w) fixed_window_5 = time.time() - start print(f"Fixed window 5 : {fixed_window_5 / benchmark:.0%}") diff --git a/py-scripts/speedup_jacobian.py b/py-scripts/speedup_jacobian.py index 40a1233..cbae549 100644 --- a/py-scripts/speedup_jacobian.py +++ b/py-scripts/speedup_jacobian.py @@ -11,8 +11,8 @@ import random import time -from btclib.ecc.curve import secp256k1 as ec -from btclib.curvegroup import _mult_aff, _mult_jac +from btclib.ec.curve import secp256k1 as ec +from btclib.ec.curve_group import mult_aff, mult_jac random.seed(42) @@ -20,13 +20,13 @@ qs = [random.getrandbits(ec.nlen) % ec.n for _ in range(50)] start = time.time() for q in qs: - _mult_aff(q, ec.G, ec) + mult_aff(q, ec.G, ec) elapsed1 = time.time() - start start = time.time() for q in qs: # starts from affine coordinates, ends with affine coordinates - ec._aff_from_jac(_mult_jac(q, ec.GJ, ec)) + ec.aff_from_jac(mult_jac(q, ec.GJ, ec)) elapsed2 = time.time() - start print(elapsed2 / elapsed1) diff --git a/py-scripts/speedup_shamir.py b/py-scripts/speedup_shamir.py index 1b6d47a..f688b45 100644 --- a/py-scripts/speedup_shamir.py +++ b/py-scripts/speedup_shamir.py @@ -11,8 +11,9 @@ import random import time -from btclib.ecc.curve import secp256k1 as ec -from btclib.curvegroup import _double_mult, _mult +from btclib.ec.curve import secp256k1 as ec +from btclib.ec.curve_group import _mult, _double_mult +from btclib.ec.curve import mult, double_mult random.seed(42) @@ -35,7 +36,7 @@ start = time.time() for u, v, QJ in zip(us, vs, QJs): - ec._add_jac(_mult(u, ec.GJ, ec), _mult(v, QJ, ec)) + ec.add_jac(_mult(u, ec.GJ, ec), _mult(v, QJ, ec)) elapsed1 = time.time() - start start = time.time()