1{2 "experiment": "signature_benchmarks",3 "timestamp_utc": "2026-11-01T05:50:10+00:00",4 "command": "experiments/signature_benchmarks/run_bench.py --no-build --seed 34 --label M3U96a (Apple M3 Ultra)",5 "cwd": "/Users/simon-pierreboucher/wp34-sigbench",6 "seed": 34,7 "host": {8 "hostname": "MacStudnpierre2",9 "os": "Darwin 25.6.0 (26.6)",10 "machine": "arm64",11 "python": "3.14.5",12 "cpu": "Apple M3 Ultra",13 "cores": 28,14 "ram_gb": 96.015 },16 "software": {17 "numpy": "2.4.4",18 "scipy": "1.17.1",19 "sympy": "1.14.0",20 "gmpy2": null,21 "z3": "4.16.0",22 "pysat": null,23 "ecdsa": null,24 "coincurve": null25 },26 "params": {27 "seed": 34,28 "reps": 7,29 "batch_ops": 2000,30 "batch_min_sigs": 2000,31 "batch_sizes": [32 1,33 2,34 4,35 8,36 16,37 32,38 64,39 128,40 256,41 512,42 1024,43 204844 ],45 "crosscheck_n": 1000,46 "python_crosscheck_n": 200,47 "bootstrap": 2000,48 "python_ops": 20,49 "rust_command": "/Users/simon-pierreboucher/wp34-sigbench/experiments/signature_benchmarks/sigbench/target/release/sigbench --seed 34 --reps 7 --batch-ops 2000 --batch-min-sigs 2000 --batch-sizes 1,2,4,8,16,32,64,128,256,512,1024,2048 --crosscheck-n 1000 --python-crosscheck-n 200 --bootstrap 2000 --vectors /Users/simon-pierreboucher/wp34-sigbench/data/vectors/bip340_test_vectors.csv --crosscheck-out /Users/simon-pierreboucher/wp34-sigbench/results/signature_benchmarks/crosscheck_triples_MacStudnpierre2.json"50 },51 "measurements": {52 "correctness_gates": {53 "bip340_vectors_both_libraries": true,54 "cross_library_1000": true,55 "python_reference_200": true,56 "own_scalar_mult_agrees_with_k256": true,57 "batch_negative_controls_rejected": true,58 "all": true59 },60 "bip340_vectors": {61 "both_all_pass": true,62 "file": "/Users/simon-pierreboucher/wp34-sigbench/data/vectors/bip340_test_vectors.csv",63 "k256": {64 "all_pass": true,65 "details": [66 {67 "comment": "",68 "expected": true,69 "index": 0,70 "sign_checked": true,71 "sign_ok": true,72 "verify_ok": true73 },74 {75 "comment": "",76 "expected": true,77 "index": 1,78 "sign_checked": true,79 "sign_ok": true,80 "verify_ok": true81 },82 {83 "comment": "",84 "expected": true,85 "index": 2,86 "sign_checked": true,87 "sign_ok": true,88 "verify_ok": true89 },90 {91 "comment": "test fails if msg is reduced modulo p or n",92 "expected": true,93 "index": 3,94 "sign_checked": true,95 "sign_ok": true,96 "verify_ok": true97 },98 {99 "comment": "",100 "expected": true,101 "index": 4,102 "sign_checked": false,103 "sign_ok": null,104 "verify_ok": true105 },106 {107 "comment": "public key not on the curve",108 "expected": false,109 "index": 5,110 "sign_checked": false,111 "sign_ok": null,112 "verify_ok": true113 },114 {115 "comment": "has_even_y(R) is false",116 "expected": false,117 "index": 6,118 "sign_checked": false,119 "sign_ok": null,120 "verify_ok": true121 },122 {123 "comment": "negated message",124 "expected": false,125 "index": 7,126 "sign_checked": false,127 "sign_ok": null,128 "verify_ok": true129 },130 {131 "comment": "negated s value",132 "expected": false,133 "index": 8,134 "sign_checked": false,135 "sign_ok": null,136 "verify_ok": true137 },138 {139 "comment": "sG - eP is infinite. Test fails in single verification if has_even_y(inf) is defined as true and x(inf) as 0",140 "expected": false,141 "index": 9,142 "sign_checked": false,143 "sign_ok": null,144 "verify_ok": true145 },146 {147 "comment": "sG - eP is infinite. Test fails in single verification if has_even_y(inf) is defined as true and x(inf) as 1",148 "expected": false,149 "index": 10,150 "sign_checked": false,151 "sign_ok": null,152 "verify_ok": true153 },154 {155 "comment": "sig[0:32] is not an X coordinate on the curve",156 "expected": false,157 "index": 11,158 "sign_checked": false,159 "sign_ok": null,160 "verify_ok": true161 },162 {163 "comment": "sig[0:32] is equal to field size",164 "expected": false,165 "index": 12,166 "sign_checked": false,167 "sign_ok": null,168 "verify_ok": true169 },170 {171 "comment": "sig[32:64] is equal to curve order",172 "expected": false,173 "index": 13,174 "sign_checked": false,175 "sign_ok": null,176 "verify_ok": true177 },178 {179 "comment": "public key is not a valid X coordinate because it exceeds the field size",180 "expected": false,181 "index": 14,182 "sign_checked": false,183 "sign_ok": null,184 "verify_ok": true185 },186 {187 "comment": "message of size 0 (added 2022-12)",188 "expected": true,189 "index": 15,190 "sign_checked": true,191 "sign_ok": true,192 "verify_ok": true193 },194 {195 "comment": "message of size 1 (added 2022-12)",196 "expected": true,197 "index": 16,198 "sign_checked": true,199 "sign_ok": true,200 "verify_ok": true201 },202 {203 "comment": "message of size 17 (added 2022-12)",204 "expected": true,205 "index": 17,206 "sign_checked": true,207 "sign_ok": true,208 "verify_ok": true209 },210 {211 "comment": "message of size 100 (added 2022-12)",212 "expected": true,213 "index": 18,214 "sign_checked": true,215 "sign_ok": true,216 "verify_ok": true217 }218 ],219 "library": "k256 (RustCrypto)",220 "n_vectors": 19,221 "sign_cases": 8,222 "sign_pass": 8,223 "verify_pass": 19224 },225 "libsecp256k1": {226 "all_pass": true,227 "details": [228 {229 "comment": "",230 "expected": true,231 "index": 0,232 "sign_checked": true,233 "sign_ok": true,234 "verify_ok": true235 },236 {237 "comment": "",238 "expected": true,239 "index": 1,240 "sign_checked": true,241 "sign_ok": true,242 "verify_ok": true243 },244 {245 "comment": "",246 "expected": true,247 "index": 2,248 "sign_checked": true,249 "sign_ok": true,250 "verify_ok": true251 },252 {253 "comment": "test fails if msg is reduced modulo p or n",254 "expected": true,255 "index": 3,256 "sign_checked": true,257 "sign_ok": true,258 "verify_ok": true259 },260 {261 "comment": "",262 "expected": true,263 "index": 4,264 "sign_checked": false,265 "sign_ok": null,266 "verify_ok": true267 },268 {269 "comment": "public key not on the curve",270 "expected": false,271 "index": 5,272 "sign_checked": false,273 "sign_ok": null,274 "verify_ok": true275 },276 {277 "comment": "has_even_y(R) is false",278 "expected": false,279 "index": 6,280 "sign_checked": false,281 "sign_ok": null,282 "verify_ok": true283 },284 {285 "comment": "negated message",286 "expected": false,287 "index": 7,288 "sign_checked": false,289 "sign_ok": null,290 "verify_ok": true291 },292 {293 "comment": "negated s value",294 "expected": false,295 "index": 8,296 "sign_checked": false,297 "sign_ok": null,298 "verify_ok": true299 },300 {301 "comment": "sG - eP is infinite. Test fails in single verification if has_even_y(inf) is defined as true and x(inf) as 0",302 "expected": false,303 "index": 9,304 "sign_checked": false,305 "sign_ok": null,306 "verify_ok": true307 },308 {309 "comment": "sG - eP is infinite. Test fails in single verification if has_even_y(inf) is defined as true and x(inf) as 1",310 "expected": false,311 "index": 10,312 "sign_checked": false,313 "sign_ok": null,314 "verify_ok": true315 },316 {317 "comment": "sig[0:32] is not an X coordinate on the curve",318 "expected": false,319 "index": 11,320 "sign_checked": false,321 "sign_ok": null,322 "verify_ok": true323 },324 {325 "comment": "sig[0:32] is equal to field size",326 "expected": false,327 "index": 12,328 "sign_checked": false,329 "sign_ok": null,330 "verify_ok": true331 },332 {333 "comment": "sig[32:64] is equal to curve order",334 "expected": false,335 "index": 13,336 "sign_checked": false,337 "sign_ok": null,338 "verify_ok": true339 },340 {341 "comment": "public key is not a valid X coordinate because it exceeds the field size",342 "expected": false,343 "index": 14,344 "sign_checked": false,345 "sign_ok": null,346 "verify_ok": true347 },348 {349 "comment": "message of size 0 (added 2022-12)",350 "expected": true,351 "index": 15,352 "sign_checked": true,353 "sign_ok": true,354 "verify_ok": true355 },356 {357 "comment": "message of size 1 (added 2022-12)",358 "expected": true,359 "index": 16,360 "sign_checked": true,361 "sign_ok": true,362 "verify_ok": true363 },364 {365 "comment": "message of size 17 (added 2022-12)",366 "expected": true,367 "index": 17,368 "sign_checked": true,369 "sign_ok": true,370 "verify_ok": true371 },372 {373 "comment": "message of size 100 (added 2022-12)",374 "expected": true,375 "index": 18,376 "sign_checked": true,377 "sign_ok": true,378 "verify_ok": true379 }380 ],381 "library": "libsecp256k1 (rust-secp256k1)",382 "n_vectors": 19,383 "sign_cases": 8,384 "sign_pass": 8,385 "verify_pass": 19386 },387 "n_vectors": 19388 },389 "cross_library_checks": {390 "all_pass": true,391 "ecdsa_k256_sign_libsecp_verify_pass": 1000,392 "ecdsa_libsecp_sign_k256_verify_pass": 1000,393 "ecdsa_signatures_byte_identical": 1000,394 "n": 1000,395 "schnorr_k256_sign_libsecp_verify_pass": 1000,396 "schnorr_libsecp_sign_k256_verify_pass": 1000,397 "schnorr_signatures_byte_identical": 1000398 },399 "python_reference_crosscheck": {400 "n": 200,401 "source": "/Users/simon-pierreboucher/wp34-sigbench/results/signature_benchmarks/crosscheck_triples_MacStudnpierre2.json",402 "ecdsa_k256_sig_verified_by_python": 200,403 "ecdsa_libsecp_sig_verified_by_python": 200,404 "ecdsa_python_resign_identical": 200,405 "schnorr_k256_sig_verified_by_python": 200,406 "schnorr_libsecp_sig_verified_by_python": 200,407 "schnorr_python_resign_identical": 200,408 "tampered_sig_rejected_by_python": 200,409 "elapsed_s": 13.45,410 "resign_checked": true,411 "all_pass": true412 },413 "sign_verify": {414 "ecdsa_sign_k256": {415 "iqr_ns": 53.79175000000032,416 "mean_ns": 18883.256,417 "median_ns": 18848.625,418 "min_ns": 18831.646,419 "ns_per_op_samples": [420 18907.8335,421 18834.229,422 18874.104,423 18848.625,424 18840.125,425 19046.2295,426 18831.646427 ],428 "ops_per_rep": 2000,429 "ops_per_s": 53054.26788426212,430 "q1_ns": 18837.177,431 "q3_ns": 18890.96875,432 "reps": 7,433 "sd_ns": 76.78433267221082434 },435 "ecdsa_sign_libsecp256k1": {436 "iqr_ns": 769.5517499999987,437 "mean_ns": 29011.006,438 "median_ns": 29199.1875,439 "min_ns": 28564.396,440 "ns_per_op_samples": [441 29199.1875,442 29428.3955,443 29259.375,444 29477.021,445 28564.396,446 28583.125,447 28565.542448 ],449 "ops_per_rep": 2000,450 "ops_per_s": 34247.52829166908,451 "q1_ns": 28574.3335,452 "q3_ns": 29343.88525,453 "reps": 7,454 "sd_ns": 422.1895762165573455 },456 "ecdsa_verify_k256": {457 "iqr_ns": 34.57249999999476,458 "mean_ns": 33574.8215,459 "median_ns": 33524.0625,460 "min_ns": 33494.9795,461 "ns_per_op_samples": [462 33531.6665,463 33524.0625,464 33530.0,465 33496.4795,466 33496.042,467 33494.9795,468 33950.5205469 ],470 "ops_per_rep": 2000,471 "ops_per_s": 29829.320357578978,472 "q1_ns": 33496.26075,473 "q3_ns": 33530.833249999996,474 "reps": 7,475 "sd_ns": 166.49122054806097476 },477 "ecdsa_verify_libsecp256k1": {478 "iqr_ns": 37.5,479 "mean_ns": 16691.279857142858,480 "median_ns": 16680.3545,481 "min_ns": 16664.75,482 "ns_per_op_samples": [483 16734.8125,484 16712.1875,485 16680.3545,486 16676.167,487 16704.8335,488 16665.854,489 16664.75490 ],491 "ops_per_rep": 2000,492 "ops_per_s": 59950.76423585601,493 "q1_ns": 16671.0105,494 "q3_ns": 16708.5105,495 "reps": 7,496 "sd_ns": 26.501544514289243497 },498 "schnorr_sign_k256": {499 "iqr_ns": 401.4482500000013,500 "mean_ns": 14996.696428571431,501 "median_ns": 14837.9585,502 "min_ns": 14731.3335,503 "ns_per_op_samples": [504 15160.396,505 15131.4585,506 15626.7705,507 14837.9585,508 14737.125,509 14731.3335,510 14751.833511 ],512 "ops_per_rep": 2000,513 "ops_per_s": 67394.71605881631,514 "q1_ns": 14744.479,515 "q3_ns": 15145.92725,516 "reps": 7,517 "sd_ns": 332.8919594697641518 },519 "schnorr_sign_libsecp256k1": {520 "iqr_ns": 80.92725000000064,521 "mean_ns": 24748.6905,522 "median_ns": 24717.3335,523 "min_ns": 24694.75,524 "ns_per_op_samples": [525 24863.1045,526 24694.75,527 24697.854,528 24838.604,529 24717.3335,530 24725.146,531 24704.0415532 ],533 "ops_per_rep": 2000,534 "ops_per_s": 40457.438501608594,535 "q1_ns": 24700.94775,536 "q3_ns": 24781.875,537 "reps": 7,538 "sd_ns": 70.94606669975937539 },540 "schnorr_verify_k256": {541 "iqr_ns": 430.46875,542 "mean_ns": 32320.133928571428,543 "median_ns": 32497.646,544 "min_ns": 31759.083,545 "ns_per_op_samples": [546 31759.083,547 32652.521,548 32539.5625,549 32138.75,550 32096.625,551 32556.75,552 32497.646553 ],554 "ops_per_rep": 2000,555 "ops_per_s": 30771.459569717757,556 "q1_ns": 32117.6875,557 "q3_ns": 32548.15625,558 "reps": 7,559 "sd_ns": 327.5571907110819560 },561 "schnorr_verify_libsecp256k1": {562 "iqr_ns": 161.56224999999904,563 "mean_ns": 17099.41664285714,564 "median_ns": 16944.1665,565 "min_ns": 16924.729,566 "ns_per_op_samples": [567 16968.4165,568 16944.1665,569 16942.3335,570 16941.8125,571 16924.729,572 17238.854,573 17735.6045574 ],575 "ops_per_rep": 2000,576 "ops_per_s": 59017.36152085144,577 "q1_ns": 16942.073,578 "q3_ns": 17103.63525,579 "reps": 7,580 "sd_ns": 301.51599255853716581 }582 },583 "scalar_mult": {584 "glv_note": "k256: every constant-time multiplication goes through lincomb(), which always applies the GLV decomposition (no public feature toggle); the vartime path uses GLV + wNAF-5; the only non-GLV reference is our own wNAF-5 double-and-add above. libsecp256k1: the GLV endomorphism has been unconditional since v0.1 (USE_ENDOMORPHISM removed) and ecmult is not exposed by rust-secp256k1's public API; mul_tweak maps to secp256k1_ec_pubkey_tweak_mul (constant-time ecmult_const) and from_secret_key to ecmult_gen (precomputed generator table).",585 "k256_generator_mul_ct_glv": {586 "iqr_ns": 57.45799999999872,587 "mean_ns": 22889.636785714283,588 "median_ns": 22876.0625,589 "min_ns": 22856.104,590 "ns_per_op_samples": [591 22856.104,592 22876.0625,593 22913.3955,594 22868.396,595 22857.5415,596 22928.5,597 22927.458598 ],599 "ops_per_rep": 2000,600 "ops_per_s": 43713.816571361436,601 "q1_ns": 22862.96875,602 "q3_ns": 22920.42675,603 "reps": 7,604 "sd_ns": 32.39150473099511605 },606 "k256_mul_by_generator_precomputed_table": {607 "iqr_ns": 30.05199999999968,608 "mean_ns": 10807.788571428571,609 "median_ns": 10800.4165,610 "min_ns": 10788.1665,611 "ns_per_op_samples": [612 10788.1665,613 10842.333,614 10805.729,615 10800.4165,616 10836.125,617 10788.75,618 10793.0619 ],620 "ops_per_rep": 2000,621 "ops_per_s": 92589.0219141086,622 "q1_ns": 10790.875,623 "q3_ns": 10820.927,624 "reps": 7,625 "sd_ns": 22.439008947271418626 },627 "k256_mul_by_generator_vartime_table": {628 "iqr_ns": 215.25025000000096,629 "mean_ns": 9460.776714285716,630 "median_ns": 9426.2085,631 "min_ns": 9328.0,632 "ns_per_op_samples": [633 9344.583,634 9370.229,635 9328.0,636 9426.2085,637 9611.104,638 9591.625,639 9553.6875640 ],641 "ops_per_rep": 2000,642 "ops_per_s": 106087.19295780481,643 "q1_ns": 9357.405999999999,644 "q3_ns": 9572.65625,645 "reps": 7,646 "sd_ns": 121.70761815647116647 },648 "k256_point_mul_ct_glv": {649 "iqr_ns": 555.0832499999997,650 "mean_ns": 23166.4405,651 "median_ns": 23236.7295,652 "min_ns": 22841.8125,653 "ns_per_op_samples": [654 22870.521,655 22864.479,656 22841.8125,657 23385.479,658 23459.6875,659 23506.375,660 23236.7295661 ],662 "ops_per_rep": 2000,663 "ops_per_s": 43035.31613603368,664 "q1_ns": 22867.5,665 "q3_ns": 23422.58325,666 "reps": 7,667 "sd_ns": 299.61088978011685668 },669 "k256_point_mul_vartime_glv_wnaf": {670 "iqr_ns": 18.03125,671 "mean_ns": 19012.967214285713,672 "median_ns": 19015.3125,673 "min_ns": 18989.0625,674 "ns_per_op_samples": [675 19036.125,676 19025.3125,677 19013.229,678 19017.854,679 19015.3125,680 18993.875,681 18989.0625682 ],683 "ops_per_rep": 2000,684 "ops_per_s": 52589.19620700422,685 "q1_ns": 19003.552,686 "q3_ns": 19021.58325,687 "reps": 7,688 "sd_ns": 16.6036476987667689 },690 "libsecp256k1_generator_mul_ecmult_gen": {691 "iqr_ns": 157.67725000000064,692 "mean_ns": 23915.16957142857,693 "median_ns": 23797.458,694 "min_ns": 23744.854,695 "ns_per_op_samples": [696 23766.4375,697 23796.729,698 23797.458,699 23744.854,700 23897.917,701 24422.1875,702 23980.604703 ],704 "ops_per_rep": 2000,705 "ops_per_s": 42021.29487947831,706 "q1_ns": 23781.58325,707 "q3_ns": 23939.2605,708 "reps": 7,709 "sd_ns": 238.27830419742892710 },711 "libsecp256k1_point_mul_tweak_ecmult_const": {712 "iqr_ns": 52.25,713 "mean_ns": 15656.592285714287,714 "median_ns": 15607.6665,715 "min_ns": 15591.271,716 "ns_per_op_samples": [717 15653.75,718 15650.396,719 15893.4165,720 15607.6665,721 15600.9375,722 15598.7085,723 15591.271724 ],725 "ops_per_rep": 2000,726 "ops_per_s": 64071.07686469339,727 "q1_ns": 15599.823,728 "q3_ns": 15652.073,729 "reps": 7,730 "sd_ns": 107.42499066280944731 },732 "own_wnaf5_agrees_with_k256_64_cases": true,733 "own_wnaf5_point_mul_no_glv": {734 "iqr_ns": 489.82274999999936,735 "mean_ns": 29217.413571428566,736 "median_ns": 28983.8955,737 "min_ns": 28971.625,738 "ns_per_op_samples": [739 29524.583,740 29412.6875,741 29671.479,742 28971.625,743 28973.8335,744 28983.8955,745 28983.7915746 ],747 "op_counts_example": {748 "adds": 52,749 "doublings": 257,750 "identity_adds": 1,751 "mixed_adds": 0752 },753 "ops_per_rep": 2000,754 "ops_per_s": 34501.91848780299,755 "q1_ns": 28978.8125,756 "q3_ns": 29468.63525,757 "reps": 7,758 "sd_ns": 307.5477235153144759 }760 },761 "batch_verification": {762 "equation": "sum_i a_i s_i G = sum_i a_i R_i + sum_i a_i e_i P_i, a_1 = 1, a_i uniform 128-bit from ChaCha20(seed); R_i = lift_x(r_i), P_i = lift_x(pk_i); merged into one MSM with 2b+1 terms whose result must be the identity",763 "msm_algorithms": {764 "k256_lincomb_ct": "k256 0.14 library: constant-time GLV + radix-16 fixed-window interleaving (benchmarked up to ct_lincomb_max_batch)",765 "k256_lincomb_vartime": "k256 0.14 library: GLV decomposition + wNAF-5 multiscalar (wnaf crate), variable time",766 "pippenger": "own implementation: bucket method with c-bit windows (c = pippenger_window(2b+1)), mixed additions into buckets, running-sum trick",767 "straus_wnaf5": "own implementation: interleaved Straus with width-5 wNAF recoding, per-term odd-multiple tables (1 dbl + 7 adds), projective additions"768 },769 "negative_controls": {770 "all_invalid_batches_rejected": true,771 "batch_size": 64,772 "cases": {773 "r_plus_one": {774 "k256_lincomb_ct": true,775 "k256_lincomb_vartime": true,776 "pippenger": true,777 "straus_wnaf5": true,778 "unmodified_batch_accepted": true779 },780 "s_plus_one": {781 "k256_lincomb_ct": true,782 "k256_lincomb_vartime": true,783 "pippenger": true,784 "straus_wnaf5": true,785 "unmodified_batch_accepted": true786 },787 "wrong_message": {788 "k256_lincomb_ct": true,789 "k256_lincomb_vartime": true,790 "pippenger": true,791 "straus_wnaf5": true,792 "unmodified_batch_accepted": true793 }794 }795 },796 "results": [797 {798 "algorithm": "straus_wnaf5",799 "batch_size": 1,800 "msm_only_ns_per_sig_median": 37863.703,801 "msm_only_ns_per_sig_samples": [802 37904.747,803 37863.703,804 37877.7395,805 37838.8055,806 37833.0995,807 37857.391,808 39200.6545809 ],810 "n_batches_per_rep": 2000,811 "n_terms": 3,812 "op_counts_per_batch": {813 "adds": 107,814 "doublings": 259,815 "identity_adds": 1,816 "mixed_adds": 0817 },818 "op_counts_per_signature": {819 "adds": 107.0,820 "doublings": 259.0,821 "mixed_adds": 0.0,822 "total": 366.0823 },824 "per_signature": {825 "iqr_ns": 42.08325000000332,826 "mean_ns": 41625.127928571426,827 "median_ns": 41422.25,828 "min_ns": 41383.104,829 "ns_per_op_samples": [830 41463.604,831 41422.25,832 41425.9165,833 41389.6665,834 41383.104,835 41415.6875,836 42875.667837 ],838 "ops_per_rep": 2000,839 "ops_per_s": 24141.614711900005,840 "q1_ns": 41402.676999999996,841 "q3_ns": 41444.76025,842 "reps": 7,843 "sd_ns": 552.0666558957832844 },845 "sigs_per_rep": 2000,846 "speedup_vs_k256_single_verify": {847 "bootstrap_resamples": 2000,848 "ci95_high": 0.7861760012006862,849 "ci95_low": 0.774091538207822,850 "point": 0.7845456487757184851 },852 "speedup_vs_libsecp256k1_single_verify": {853 "bootstrap_resamples": 2000,854 "ci95_high": 0.4162397159288977,855 "ci95_low": 0.4085947883353314,856 "point": 0.4090595392572832857 },858 "window_bits": 5859 },860 {861 "algorithm": "pippenger",862 "batch_size": 1,863 "msm_only_ns_per_sig_median": 128402.972,864 "msm_only_ns_per_sig_samples": [865 126369.512,866 126422.9685,867 127447.3695,868 130600.072,869 132717.03,870 133060.248,871 128402.972872 ],873 "n_batches_per_rep": 2000,874 "n_terms": 3,875 "op_counts_per_batch": {876 "adds": 630,877 "doublings": 255,878 "identity_adds": 234,879 "mixed_adds": 154880 },881 "op_counts_per_signature": {882 "adds": 630.0,883 "doublings": 255.0,884 "mixed_adds": 154.0,885 "total": 1039.0886 },887 "per_signature": {888 "iqr_ns": 4832.135500000004,889 "mean_ns": 133008.00900000002,890 "median_ns": 132033.25,891 "min_ns": 130045.521,892 "ns_per_op_samples": [893 130045.521,894 130087.479,895 131150.7085,896 134406.521,897 136495.9375,898 136836.646,899 132033.25900 ],901 "ops_per_rep": 2000,902 "ops_per_s": 7573.849768902909,903 "q1_ns": 130619.09375,904 "q3_ns": 135451.22925,905 "reps": 7,906 "sd_ns": 2900.7324707003045907 },908 "sigs_per_rep": 2000,909 "speedup_vs_k256_single_verify": {910 "bootstrap_resamples": 2000,911 "ci95_high": 0.2501360065560191,912 "ci95_low": 0.2354557255595977,913 "point": 0.24613228864698855914 },915 "speedup_vs_libsecp256k1_single_verify": {916 "bootstrap_resamples": 2000,917 "ci95_high": 0.1314430870954845,918 "ci95_low": 0.12411953652466763,919 "point": 0.1283325715302774920 },921 "window_bits": 3922 },923 {924 "algorithm": "k256_lincomb_vartime",925 "batch_size": 1,926 "msm_only_ns_per_sig_median": 30657.826,927 "msm_only_ns_per_sig_samples": [928 30687.119,929 30657.826,930 30656.965,931 30630.114,932 30628.986,933 30666.121,934 30667.96935 ],936 "n_batches_per_rep": 2000,937 "n_terms": 3,938 "op_counts_per_batch": {939 "adds": 0,940 "doublings": 0,941 "identity_adds": 0,942 "mixed_adds": 0943 },944 "op_counts_per_signature": {945 "adds": 0.0,946 "doublings": 0.0,947 "mixed_adds": 0.0,948 "total": 0.0949 },950 "per_signature": {951 "iqr_ns": 30.510500000003958,952 "mean_ns": 34235.878000000004,953 "median_ns": 34243.375,954 "min_ns": 34203.9165,955 "ns_per_op_samples": [956 34260.9585,957 34233.8125,958 34243.375,959 34207.125,960 34203.9165,961 34245.875,962 34256.0835963 ],964 "ops_per_rep": 2000,965 "ops_per_s": 29202.728995024587,966 "q1_ns": 34220.46875,967 "q3_ns": 34250.979250000004,968 "reps": 7,969 "sd_ns": 22.531376308014337970 },971 "sigs_per_rep": 2000,972 "speedup_vs_k256_single_verify": {973 "bootstrap_resamples": 2000,974 "ci95_high": 0.9512510186108888,975 "ci95_low": 0.9372406165706089,976 "point": 0.9490199491142447977 },978 "speedup_vs_libsecp256k1_single_verify": {979 "bootstrap_resamples": 2000,980 "ci95_high": 0.503562201843572,981 "ci95_low": 0.494563615248077,982 "point": 0.4948159023460742983 },984 "window_bits": 0985 },986 {987 "algorithm": "k256_lincomb_ct",988 "batch_size": 1,989 "msm_only_ns_per_sig_median": 47663.242,990 "msm_only_ns_per_sig_samples": [991 47633.805,992 47658.7665,993 48232.4715,994 47964.444,995 47810.781,996 47663.242,997 47654.2825998 ],999 "n_batches_per_rep": 2000,1000 "n_terms": 3,1001 "op_counts_per_batch": {1002 "adds": 0,1003 "doublings": 0,1004 "identity_adds": 0,1005 "mixed_adds": 01006 },1007 "op_counts_per_signature": {1008 "adds": 0.0,1009 "doublings": 0.0,1010 "mixed_adds": 0.0,1011 "total": 0.01012 },1013 "per_signature": {1014 "iqr_ns": 247.87475000000268,1015 "mean_ns": 51388.184499999996,1016 "median_ns": 51239.4375,1017 "min_ns": 51212.4375,1018 "ns_per_op_samples": [1019 51212.4375,1020 51234.042,1021 51849.042,1022 51560.458,1023 51395.604,1024 51239.4375,1025 51226.27051026 ],1027 "ops_per_rep": 2000,1028 "ops_per_s": 19516.217366749977,1029 "q1_ns": 51230.15625,1030 "q3_ns": 51478.031,1031 "reps": 7,1032 "sd_ns": 239.830347957676371033 },1034 "sigs_per_rep": 2000,1035 "speedup_vs_k256_single_verify": {1036 "bootstrap_resamples": 2000,1037 "ci95_high": 0.6354515226419184,1038 "ci95_low": 0.6233012296942746,1039 "point": 0.63423112324369291040 },1041 "speedup_vs_libsecp256k1_single_verify": {1042 "bootstrap_resamples": 2000,1043 "ci95_high": 0.33647265230410667,1044 "ci95_low": 0.32859160211493854,1045 "point": 0.330686036512403141046 },1047 "window_bits": 01048 },1049 {1050 "algorithm": "straus_wnaf5",1051 "batch_size": 2,1052 "msm_only_ns_per_sig_median": 24900.267,1053 "msm_only_ns_per_sig_samples": [1054 24910.854,1055 25081.6005,1056 24900.267,1057 24911.542,1058 24899.5015,1059 24879.188,1060 24892.47351061 ],1062 "n_batches_per_rep": 1000,1063 "n_terms": 5,1064 "op_counts_per_batch": {1065 "adds": 187,1066 "doublings": 261,1067 "identity_adds": 1,1068 "mixed_adds": 01069 },1070 "op_counts_per_signature": {1071 "adds": 93.5,1072 "doublings": 130.5,1073 "mixed_adds": 0.0,1074 "total": 224.01075 },1076 "per_signature": {1077 "iqr_ns": 17.76075000000128,1078 "mean_ns": 28566.616071428572,1079 "median_ns": 28541.9795,1080 "min_ns": 28511.0625,1081 "ns_per_op_samples": [1082 28546.875,1083 28756.625,1084 28532.7915,1085 28541.9795,1086 28527.7705,1087 28511.0625,1088 28549.20851089 ],1090 "ops_per_rep": 2000,1091 "ops_per_s": 35036.11233411474,1092 "q1_ns": 28530.281,1093 "q3_ns": 28548.04175,1094 "reps": 7,1095 "sd_ns": 84.796193294288811096 },1097 "sigs_per_rep": 2000,1098 "speedup_vs_k256_single_verify": {1099 "bootstrap_resamples": 2000,1100 "ci95_high": 1.1412300866623981,1101 "ci95_low": 1.1243481116584564,1102 "point": 1.13859117585029451103 },1104 "speedup_vs_libsecp256k1_single_verify": {1105 "bootstrap_resamples": 2000,1106 "ci95_high": 0.604176916934328,1107 "ci95_low": 0.5934249455637273,1108 "point": 0.59365772090194371109 },1110 "window_bits": 51111 },1112 {1113 "algorithm": "pippenger",1114 "batch_size": 2,1115 "msm_only_ns_per_sig_median": 80944.258,1116 "msm_only_ns_per_sig_samples": [1117 81606.7265,1118 81753.7915,1119 83183.8795,1120 80892.0165,1121 80910.3795,1122 80915.337,1123 80944.2581124 ],1125 "n_batches_per_rep": 1000,1126 "n_terms": 5,1127 "op_counts_per_batch": {1128 "adds": 766,1129 "doublings": 255,1130 "identity_adds": 296,1131 "mixed_adds": 2541132 },1133 "op_counts_per_signature": {1134 "adds": 383.0,1135 "doublings": 127.5,1136 "mixed_adds": 127.0,1137 "total": 637.51138 },1139 "per_signature": {1140 "iqr_ns": 819.5835000000079,1141 "mean_ns": 85136.1845,1142 "median_ns": 84597.6875,1143 "min_ns": 84540.2915,1144 "ns_per_op_samples": [1145 85295.9585,1146 85458.75,1147 86945.0625,1148 84540.2915,1149 84560.5415,1150 84555.0,1151 84597.68751152 ],1153 "ops_per_rep": 2000,1154 "ops_per_s": 11820.65408111776,1155 "q1_ns": 84557.77075,1156 "q3_ns": 85377.35425,1157 "reps": 7,1158 "sd_ns": 886.54983171632661159 },1160 "sigs_per_rep": 2000,1161 "speedup_vs_k256_single_verify": {1162 "bootstrap_resamples": 2000,1163 "ci95_high": 0.38501113430074235,1164 "ci95_low": 0.3760732517150087,1165 "point": 0.38414343181662031166 },1167 "speedup_vs_libsecp256k1_single_verify": {1168 "bootstrap_resamples": 2000,1169 "ci95_high": 0.20387740523919343,1170 "ci95_low": 0.19825159506779588,1171 "point": 0.200291130889363841172 },1173 "window_bits": 31174 },1175 {1176 "algorithm": "k256_lincomb_vartime",1177 "batch_size": 2,1178 "msm_only_ns_per_sig_median": 23211.2325,1179 "msm_only_ns_per_sig_samples": [1180 23234.8325,1181 23199.4075,1182 23205.684,1183 23223.3685,1184 23211.2325,1185 23208.038,1186 23226.14751187 ],1188 "n_batches_per_rep": 1000,1189 "n_terms": 5,1190 "op_counts_per_batch": {1191 "adds": 0,1192 "doublings": 0,1193 "identity_adds": 0,1194 "mixed_adds": 01195 },1196 "op_counts_per_signature": {1197 "adds": 0.0,1198 "doublings": 0.0,1199 "mixed_adds": 0.0,1200 "total": 0.01201 },1202 "per_signature": {1203 "iqr_ns": 16.44800000000032,1204 "mean_ns": 26869.80942857143,1205 "median_ns": 26871.2915,1206 "min_ns": 26853.7705,1207 "ns_per_op_samples": [1208 26887.25,1209 26853.7705,1210 26864.3125,1211 26873.7915,1212 26871.2915,1213 26857.4165,1214 26880.83351215 ],1216 "ops_per_rep": 2000,1217 "ops_per_s": 37214.437571785485,1218 "q1_ns": 26860.8645,1219 "q3_ns": 26877.3125,1220 "reps": 7,1221 "sd_ns": 12.1436213929669671222 },1223 "sigs_per_rep": 2000,1224 "speedup_vs_k256_single_verify": {1225 "bootstrap_resamples": 2000,1226 "ci95_high": 1.2122070639221758,1227 "ci95_low": 1.1943467299729553,1228 "point": 1.20938161829698431229 },1230 "speedup_vs_libsecp256k1_single_verify": {1231 "bootstrap_resamples": 2000,1232 "ci95_high": 0.64170091827215,1233 "ci95_low": 0.63027511684115,1234 "point": 0.6305676264201891235 },1236 "window_bits": 01237 },1238 {1239 "algorithm": "k256_lincomb_ct",1240 "batch_size": 2,1241 "msm_only_ns_per_sig_median": 36292.7915,1242 "msm_only_ns_per_sig_samples": [1243 37212.9615,1244 37159.6615,1245 37109.338,1246 36215.7065,1247 36247.0035,1248 36292.7915,1249 36262.02151250 ],1251 "n_batches_per_rep": 1000,1252 "n_terms": 5,1253 "op_counts_per_batch": {1254 "adds": 0,1255 "doublings": 0,1256 "identity_adds": 0,1257 "mixed_adds": 01258 },1259 "op_counts_per_signature": {1260 "adds": 0.0,1261 "doublings": 0.0,1262 "mixed_adds": 0.0,1263 "total": 0.01264 },1265 "per_signature": {1266 "iqr_ns": 978.020749999996,1267 "mean_ns": 40323.27085714286,1268 "median_ns": 39937.8955,1269 "min_ns": 39853.0835,1270 "ns_per_op_samples": [1271 40955.3335,1272 40899.5,1273 40836.8125,1274 39853.0835,1275 39885.6665,1276 39937.8955,1277 39894.60451278 ],1279 "ops_per_rep": 2000,1280 "ops_per_s": 25038.87567135329,1281 "q1_ns": 39890.135500000004,1282 "q3_ns": 40868.15625,1283 "reps": 7,1284 "sd_ns": 538.53365174461751285 },1286 "sigs_per_rep": 2000,1287 "speedup_vs_k256_single_verify": {1288 "bootstrap_resamples": 2000,1289 "ci95_high": 0.8160690000072566,1290 "ci95_low": 0.7857981148913801,1291 "point": 0.81370451780565161292 },1293 "speedup_vs_libsecp256k1_single_verify": {1294 "bootstrap_resamples": 2000,1295 "ci95_high": 0.43210991100312823,1296 "ci95_low": 0.41424304698101444,1297 "point": 0.42426287834820941298 },1299 "window_bits": 01300 },1301 {1302 "algorithm": "straus_wnaf5",1303 "batch_size": 4,1304 "msm_only_ns_per_sig_median": 18388.972,1305 "msm_only_ns_per_sig_samples": [1306 18409.9975,1307 18388.972,1308 18366.673,1309 18411.878,1310 18378.1235,1311 18390.009,1312 18367.02451313 ],1314 "n_batches_per_rep": 500,1315 "n_terms": 9,1316 "op_counts_per_batch": {1317 "adds": 345,1318 "doublings": 265,1319 "identity_adds": 1,1320 "mixed_adds": 01321 },1322 "op_counts_per_signature": {1323 "adds": 86.25,1324 "doublings": 66.25,1325 "mixed_adds": 0.0,1326 "total": 152.51327 },1328 "per_signature": {1329 "iqr_ns": 26.15625,1330 "mean_ns": 22011.58635714286,1331 "median_ns": 22009.583,1332 "min_ns": 21980.7915,1333 "ns_per_op_samples": [1334 22032.25,1335 22006.646,1336 21990.146,1337 22044.8335,1338 22009.583,1339 22016.8545,1340 21980.79151341 ],1342 "ops_per_rep": 2000,1343 "ops_per_s": 45434.75448853347,1344 "q1_ns": 21998.396,1345 "q3_ns": 22024.55225,1346 "reps": 7,1347 "sd_ns": 22.3477988582664441348 },1349 "sigs_per_rep": 2000,1350 "speedup_vs_k256_single_verify": {1351 "bootstrap_resamples": 2000,1352 "ci95_high": 1.4803635483280937,1353 "ci95_low": 1.4578206437254695,1354 "point": 1.4765225674652721355 },1356 "speedup_vs_libsecp256k1_single_verify": {1357 "bootstrap_resamples": 2000,1358 "ci95_high": 0.7833476305294318,1359 "ci95_low": 0.7689788151459792,1360 "point": 0.76985404494033351361 },1362 "window_bits": 51363 },1364 {1365 "algorithm": "pippenger",1366 "batch_size": 4,1367 "msm_only_ns_per_sig_median": 59259.009,1368 "msm_only_ns_per_sig_samples": [1369 60760.2285,1370 59430.209,1371 59258.8085,1372 59250.0155,1373 59219.633,1374 59259.009,1375 59302.9731376 ],1377 "n_batches_per_rep": 500,1378 "n_terms": 9,1379 "op_counts_per_batch": {1380 "adds": 1224,1381 "doublings": 252,1382 "identity_adds": 380,1383 "mixed_adds": 3831384 },1385 "op_counts_per_signature": {1386 "adds": 306.0,1387 "doublings": 63.0,1388 "mixed_adds": 95.75,1389 "total": 464.751390 },1391 "per_signature": {1392 "iqr_ns": 122.33325000000332,1393 "mean_ns": 63140.34807142856,1394 "median_ns": 62885.9165,1395 "min_ns": 62854.9165,1396 "ns_per_op_samples": [1397 64500.354,1398 63070.5205,1399 62885.9165,1400 62876.7915,1401 62854.9165,1402 62871.5,1403 62922.43751404 ],1405 "ops_per_rep": 2000,1406 "ops_per_s": 15901.811656032714,1407 "q1_ns": 62874.145749999996,1408 "q3_ns": 62996.479,1409 "reps": 7,1410 "sd_ns": 604.14195227380321411 },1412 "sigs_per_rep": 2000,1413 "speedup_vs_k256_single_verify": {1414 "bootstrap_resamples": 2000,1415 "ci95_high": 0.5177864395323034,1416 "ci95_low": 0.5089005885086996,1417 "point": 0.51677144595642491418 },1419 "speedup_vs_libsecp256k1_single_verify": {1420 "bootstrap_resamples": 2000,1421 "ci95_high": 0.27416879247090714,1422 "ci95_low": 0.26862523673005045,1423 "point": 0.269442944351459051424 },1425 "window_bits": 41426 },1427 {1428 "algorithm": "k256_lincomb_vartime",1429 "batch_size": 4,1430 "msm_only_ns_per_sig_median": 19676.3585,1431 "msm_only_ns_per_sig_samples": [1432 20088.9145,1433 20037.5555,1434 19682.3745,1435 19564.021,1436 19676.3585,1437 19517.4,1438 19534.6041439 ],1440 "n_batches_per_rep": 500,1441 "n_terms": 9,1442 "op_counts_per_batch": {1443 "adds": 0,1444 "doublings": 0,1445 "identity_adds": 0,1446 "mixed_adds": 01447 },1448 "op_counts_per_signature": {1449 "adds": 0.0,1450 "doublings": 0.0,1451 "mixed_adds": 0.0,1452 "total": 0.01453 },1454 "per_signature": {1455 "iqr_ns": 380.15625,1456 "mean_ns": 23423.21135714286,1457 "median_ns": 23361.771,1458 "min_ns": 23168.5205,1459 "ns_per_op_samples": [1460 23863.7915,1461 23774.917,1462 23361.771,1463 23226.5625,1464 23389.4375,1465 23168.5205,1466 23177.47951467 ],1468 "ops_per_rep": 2000,1469 "ops_per_s": 42804.97398934353,1470 "q1_ns": 23202.021,1471 "q3_ns": 23582.17725,1472 "reps": 7,1473 "sd_ns": 284.793979264648271474 },1475 "sigs_per_rep": 2000,1476 "speedup_vs_k256_single_verify": {1477 "bootstrap_resamples": 2000,1478 "ci95_high": 1.4039301598778244,1479 "ci95_low": 1.3517923111992356,1480 "point": 1.3910608917448941481 },1482 "speedup_vs_libsecp256k1_single_verify": {1483 "bootstrap_resamples": 2000,1484 "ci95_high": 0.7422042758156744,1485 "ci95_low": 0.7126137811543148,1486 "point": 0.7252946063036061487 },1488 "window_bits": 01489 },1490 {1491 "algorithm": "k256_lincomb_ct",1492 "batch_size": 4,1493 "msm_only_ns_per_sig_median": 30477.128,1494 "msm_only_ns_per_sig_samples": [1495 30466.2575,1496 30483.9385,1497 30483.54,1498 30472.5255,1499 30481.272,1500 30477.128,1501 30457.90051502 ],1503 "n_batches_per_rep": 500,1504 "n_terms": 9,1505 "op_counts_per_batch": {1506 "adds": 0,1507 "doublings": 0,1508 "identity_adds": 0,1509 "mixed_adds": 01510 },1511 "op_counts_per_signature": {1512 "adds": 0.0,1513 "doublings": 0.0,1514 "mixed_adds": 0.0,1515 "total": 0.01516 },1517 "per_signature": {1518 "iqr_ns": 16.177499999997963,1519 "mean_ns": 34096.863,1520 "median_ns": 34094.854,1521 "min_ns": 34080.4165,1522 "ns_per_op_samples": [1523 34084.8955,1524 34117.0415,1525 34105.896,1526 34091.7915,1527 34103.146,1528 34094.854,1529 34080.41651530 ],1531 "ops_per_rep": 2000,1532 "ops_per_s": 29329.93935096481,1533 "q1_ns": 34088.3435,1534 "q3_ns": 34104.521,1535 "reps": 7,1536 "sd_ns": 12.7260078317335031537 },1538 "sigs_per_rep": 2000,1539 "speedup_vs_k256_single_verify": {1540 "bootstrap_resamples": 2000,1541 "ci95_high": 0.9549732814715824,1542 "ci95_low": 0.941163170107532,1543 "point": 0.95315398622912431544 },1545 "speedup_vs_libsecp256k1_single_verify": {1546 "bootstrap_resamples": 2000,1547 "ci95_high": 0.505659962164206,1548 "ci95_low": 0.4967567337917174,1549 "point": 0.496971375797649661550 },1551 "window_bits": 01552 },1553 {1554 "algorithm": "straus_wnaf5",1555 "batch_size": 8,1556 "msm_only_ns_per_sig_median": 15227.732,1557 "msm_only_ns_per_sig_samples": [1558 15294.683,1559 15241.145,1560 15216.585,1561 15215.4375,1562 15209.7305,1563 15238.08,1564 15227.7321565 ],1566 "n_batches_per_rep": 250,1567 "n_terms": 17,1568 "op_counts_per_batch": {1569 "adds": 662,1570 "doublings": 273,1571 "identity_adds": 1,1572 "mixed_adds": 01573 },1574 "op_counts_per_signature": {1575 "adds": 82.75,1576 "doublings": 34.125,1577 "mixed_adds": 0.0,1578 "total": 116.8751579 },1580 "per_signature": {1581 "iqr_ns": 24.71875,1582 "mean_ns": 18848.910714285714,1583 "median_ns": 18839.167,1584 "min_ns": 18824.8125,1585 "ns_per_op_samples": [1586 18925.375,1587 18854.604,1588 18826.4375,1589 18825.354,1590 18824.8125,1591 18846.625,1592 18839.1671593 ],1594 "ops_per_rep": 2000,1595 "ops_per_s": 53080.90320553982,1596 "q1_ns": 18825.89575,1597 "q3_ns": 18850.6145,1598 "reps": 7,1599 "sd_ns": 35.6371833668350961600 },1601 "sigs_per_rep": 2000,1602 "speedup_vs_k256_single_verify": {1603 "bootstrap_resamples": 2000,1604 "ci95_high": 1.7293101788376053,1605 "ci95_low": 1.703043648398586,1606 "point": 1.72500440173389811607 },1608 "speedup_vs_libsecp256k1_single_verify": {1609 "bootstrap_resamples": 2000,1610 "ci95_high": 0.9156726544785756,1611 "ci95_low": 0.898578060828008,1612 "point": 0.89941166188505041613 },1614 "window_bits": 51615 },1616 {1617 "algorithm": "pippenger",1618 "batch_size": 8,1619 "msm_only_ns_per_sig_median": 39667.79,1620 "msm_only_ns_per_sig_samples": [1621 40840.5035,1622 41513.021,1623 40084.354,1624 39661.0435,1625 39667.79,1626 39653.7705,1627 39664.06751628 ],1629 "n_batches_per_rep": 250,1630 "n_terms": 17,1631 "op_counts_per_batch": {1632 "adds": 1492,1633 "doublings": 252,1634 "identity_adds": 581,1635 "mixed_adds": 7451636 },1637 "op_counts_per_signature": {1638 "adds": 186.5,1639 "doublings": 31.5,1640 "mixed_adds": 93.125,1641 "total": 311.1251642 },1643 "per_signature": {1644 "iqr_ns": 881.6977499999994,1645 "mean_ns": 43819.02971428571,1646 "median_ns": 43290.0,1647 "min_ns": 43262.104,1648 "ns_per_op_samples": [1649 44577.5415,1650 45306.3335,1651 43741.5415,1652 43277.7915,1653 43277.896,1654 43262.104,1655 43290.01656 ],1657 "ops_per_rep": 2000,1658 "ops_per_s": 23100.0231000231,1659 "q1_ns": 43277.84375,1660 "q3_ns": 44159.5415,1661 "reps": 7,1662 "sd_ns": 813.34907374698081663 },1664 "sigs_per_rep": 2000,1665 "speedup_vs_k256_single_verify": {1666 "bootstrap_resamples": 2000,1667 "ci95_high": 0.7522720143326745,1668 "ci95_low": 0.7209628193605069,1669 "point": 0.75069637329637331670 },1671 "speedup_vs_libsecp256k1_single_verify": {1672 "bootstrap_resamples": 2000,1673 "ci95_high": 0.3983292995574461,1674 "ci95_low": 0.3800643312731816,1675 "point": 0.391410637560637541676 },1677 "window_bits": 41678 },1679 {1680 "algorithm": "k256_lincomb_vartime",1681 "batch_size": 8,1682 "msm_only_ns_per_sig_median": 18167.6035,1683 "msm_only_ns_per_sig_samples": [1684 17793.0005,1685 17714.141,1686 18325.0785,1687 18203.497,1688 18234.184,1689 18167.6035,1690 17909.9781691 ],1692 "n_batches_per_rep": 250,1693 "n_terms": 17,1694 "op_counts_per_batch": {1695 "adds": 0,1696 "doublings": 0,1697 "identity_adds": 0,1698 "mixed_adds": 01699 },1700 "op_counts_per_signature": {1701 "adds": 0.0,1702 "doublings": 0.0,1703 "mixed_adds": 0.0,1704 "total": 0.01705 },1706 "per_signature": {1707 "iqr_ns": 447.83350000000064,1708 "mean_ns": 21760.074285714287,1709 "median_ns": 21912.021,1710 "min_ns": 21359.5625,1711 "ns_per_op_samples": [1712 21446.708,1713 21359.5625,1714 22088.5625,1715 21951.5,1716 21976.5205,1717 21912.021,1718 21585.64551719 ],1720 "ops_per_rep": 2000,1721 "ops_per_s": 45637.05009227583,1722 "q1_ns": 21516.17675,1723 "q3_ns": 21964.01025,1724 "reps": 7,1725 "sd_ns": 289.689086055903941726 },1727 "sigs_per_rep": 2000,1728 "speedup_vs_k256_single_verify": {1729 "bootstrap_resamples": 2000,1730 "ci95_high": 1.517228774691202,1731 "ci95_low": 1.460496214585016,1732 "point": 1.48309669838304741733 },1734 "speedup_vs_libsecp256k1_single_verify": {1735 "bootstrap_resamples": 2000,1736 "ci95_high": 0.7986258275204232,1737 "ci95_low": 0.7709288419884304,1738 "point": 0.77328177533236211739 },1740 "window_bits": 01741 },1742 {1743 "algorithm": "k256_lincomb_ct",1744 "batch_size": 8,1745 "msm_only_ns_per_sig_median": 27605.0425,1746 "msm_only_ns_per_sig_samples": [1747 27611.515,1748 27587.767,1749 27625.4575,1750 27605.0425,1751 27596.411,1752 27602.1285,1753 27812.441754 ],1755 "n_batches_per_rep": 250,1756 "n_terms": 17,1757 "op_counts_per_batch": {1758 "adds": 0,1759 "doublings": 0,1760 "identity_adds": 0,1761 "mixed_adds": 01762 },1763 "op_counts_per_signature": {1764 "adds": 0.0,1765 "doublings": 0.0,1766 "mixed_adds": 0.0,1767 "total": 0.01768 },1769 "per_signature": {1770 "iqr_ns": 14.10425000000032,1771 "mean_ns": 31259.532642857142,1772 "median_ns": 31232.2915,1773 "min_ns": 31209.604,1774 "ns_per_op_samples": [1775 31234.8125,1776 31209.604,1777 31239.104,1778 31232.2915,1779 31232.1665,1780 31213.5415,1781 31455.20851782 ],1783 "ops_per_rep": 2000,1784 "ops_per_s": 32018.14378557526,1785 "q1_ns": 31222.854,1786 "q3_ns": 31236.95825,1787 "reps": 7,1788 "sd_ns": 87.002390980897391789 },1790 "sigs_per_rep": 2000,1791 "speedup_vs_k256_single_verify": {1792 "bootstrap_resamples": 2000,1793 "ci95_high": 1.042482234833878,1794 "ci95_low": 1.0275878802676353,1795 "point": 1.04051430232072481796 },1797 "speedup_vs_libsecp256k1_single_verify": {1798 "bootstrap_resamples": 2000,1799 "ci95_high": 0.5519583151556264,1800 "ci95_low": 0.5423437720877013,1801 "point": 0.54252075932372751802 },1803 "window_bits": 01804 },1805 {1806 "algorithm": "straus_wnaf5",1807 "batch_size": 16,1808 "msm_only_ns_per_sig_median": 13652.0405,1809 "msm_only_ns_per_sig_samples": [1810 13702.6885,1811 13652.0405,1812 13825.751,1813 13650.6455,1814 13649.6005,1815 13647.457,1816 13661.6051817 ],1818 "n_batches_per_rep": 125,1819 "n_terms": 33,1820 "op_counts_per_batch": {1821 "adds": 1296,1822 "doublings": 289,1823 "identity_adds": 1,1824 "mixed_adds": 01825 },1826 "op_counts_per_signature": {1827 "adds": 81.0,1828 "doublings": 18.0625,1829 "mixed_adds": 0.0,1830 "total": 99.06251831 },1832 "per_signature": {1833 "iqr_ns": 37.86475000000064,1834 "mean_ns": 17299.675714285713,1835 "median_ns": 17269.875,1836 "min_ns": 17250.9585,1837 "ns_per_op_samples": [1838 17314.292,1839 17250.9585,1840 17480.375,1841 17257.771,1842 17252.625,1843 17269.875,1844 17271.83351845 ],1846 "ops_per_rep": 2000,1847 "ops_per_s": 57904.29867037254,1848 "q1_ns": 17255.198,1849 "q3_ns": 17293.06275,1850 "reps": 7,1851 "sd_ns": 82.535124740852471852 },1853 "sigs_per_rep": 2000,1854 "speedup_vs_k256_single_verify": {1855 "bootstrap_resamples": 2000,1856 "ci95_high": 1.886497972420656,1857 "ci95_low": 1.8537647973131097,1858 "point": 1.88175340006803761859 },1860 "speedup_vs_libsecp256k1_single_verify": {1861 "bootstrap_resamples": 2000,1862 "ci95_high": 0.9989113047862268,1863 "ci95_low": 0.9785172561488509,1864 "point": 0.98114007773652091865 },1866 "window_bits": 51867 },1868 {1869 "algorithm": "pippenger",1870 "batch_size": 16,1871 "msm_only_ns_per_sig_median": 31886.127,1872 "msm_only_ns_per_sig_samples": [1873 31449.4375,1874 32053.687,1875 32149.106,1876 31762.021,1877 32138.5815,1878 31886.127,1879 31387.14651880 ],1881 "n_batches_per_rep": 125,1882 "n_terms": 33,1883 "op_counts_per_batch": {1884 "adds": 2429,1885 "doublings": 255,1886 "identity_adds": 897,1887 "mixed_adds": 12281888 },1889 "op_counts_per_signature": {1890 "adds": 151.8125,1891 "doublings": 15.9375,1892 "mixed_adds": 76.75,1893 "total": 244.51894 },1895 "per_signature": {1896 "iqr_ns": 550.2497500000027,1897 "mean_ns": 35499.69335714286,1898 "median_ns": 35558.1665,1899 "min_ns": 35002.333,1900 "ns_per_op_samples": [1901 35062.6875,1902 35743.208,1903 35849.604,1904 35429.625,1905 35852.2295,1906 35558.1665,1907 35002.3331908 ],1909 "ops_per_rep": 2000,1910 "ops_per_s": 28122.93485379793,1911 "q1_ns": 35246.15625,1912 "q3_ns": 35796.406,1913 "reps": 7,1914 "sd_ns": 354.1865559357711915 },1916 "sigs_per_rep": 2000,1917 "speedup_vs_k256_single_verify": {1918 "bootstrap_resamples": 2000,1919 "ci95_high": 0.9280396005012451,1920 "ci95_low": 0.8964220448842416,1921 "point": 0.9139291813597871922 },1923 "speedup_vs_libsecp256k1_single_verify": {1924 "bootstrap_resamples": 2000,1925 "ci95_high": 0.4865660869964048,1926 "ci95_low": 0.47259471820107135,1927 "point": 0.47651969063140531928 },1929 "window_bits": 51930 },1931 {1932 "algorithm": "k256_lincomb_vartime",1933 "batch_size": 16,1934 "msm_only_ns_per_sig_median": 17277.2315,1935 "msm_only_ns_per_sig_samples": [1936 17342.459,1937 17277.2315,1938 17487.397,1939 17162.545,1940 17190.583,1941 17357.042,1942 17236.2471943 ],1944 "n_batches_per_rep": 125,1945 "n_terms": 33,1946 "op_counts_per_batch": {1947 "adds": 0,1948 "doublings": 0,1949 "identity_adds": 0,1950 "mixed_adds": 01951 },1952 "op_counts_per_signature": {1953 "adds": 0.0,1954 "doublings": 0.0,1955 "mixed_adds": 0.0,1956 "total": 0.01957 },1958 "per_signature": {1959 "iqr_ns": 172.32274999999936,1960 "mean_ns": 21030.5535,1961 "median_ns": 21011.583,1962 "min_ns": 20890.9375,1963 "ns_per_op_samples": [1964 21099.875,1965 21011.583,1966 21260.8335,1967 20894.625,1968 20890.9375,1969 21097.708,1970 20958.31251971 ],1972 "ops_per_rep": 2000,1973 "ops_per_s": 47592.796792131274,1974 "q1_ns": 20926.46875,1975 "q3_ns": 21098.7915,1976 "reps": 7,1977 "sd_ns": 132.8482230165941978 },1979 "sigs_per_rep": 2000,1980 "speedup_vs_k256_single_verify": {1981 "bootstrap_resamples": 2000,1982 "ci95_high": 1.5573173722907208,1983 "ci95_low": 1.52117607331797,1984 "point": 1.54665386230061791985 },1986 "speedup_vs_libsecp256k1_single_verify": {1987 "bootstrap_resamples": 2000,1988 "ci95_high": 0.8225306307461538,1989 "ci95_low": 0.8029342590892126,1990 "point": 0.80642027304653821991 },1992 "window_bits": 01993 },1994 {1995 "algorithm": "k256_lincomb_ct",1996 "batch_size": 16,1997 "msm_only_ns_per_sig_median": 26715.4365,1998 "msm_only_ns_per_sig_samples": [1999 29196.8735,2000 27781.8345,2001 26887.562,2002 26715.4365,2003 26333.733,2004 26212.483,2005 26173.60552006 ],2007 "n_batches_per_rep": 125,2008 "n_terms": 33,2009 "op_counts_per_batch": {2010 "adds": 0,2011 "doublings": 0,2012 "identity_adds": 0,2013 "mixed_adds": 02014 },2015 "op_counts_per_signature": {2016 "adds": 0.0,2017 "doublings": 0.0,2018 "mixed_adds": 0.0,2019 "total": 0.02020 },2021 "per_signature": {2022 "iqr_ns": 1207.96875,2023 "mean_ns": 30773.3185,2024 "median_ns": 30383.167,2025 "min_ns": 29777.25,2026 "ns_per_op_samples": [2027 33230.875,2028 31623.3125,2029 30595.625,2030 30383.167,2031 29975.375,2032 29827.625,2033 29777.252034 ],2035 "ops_per_rep": 2000,2036 "ops_per_s": 32912.96131176845,2037 "q1_ns": 29901.5,2038 "q3_ns": 31109.46875,2039 "reps": 7,2040 "sd_ns": 1256.25564048149982041 },2042 "sigs_per_rep": 2000,2043 "speedup_vs_k256_single_verify": {2044 "bootstrap_resamples": 2000,2045 "ci95_high": 1.0909203297278949,2046 "ci95_low": 1.016299288697223,2047 "point": 1.06959376552154682048 },2049 "speedup_vs_libsecp256k1_single_verify": {2050 "bootstrap_resamples": 2000,2051 "ci95_high": 0.5751005283503542,2052 "ci95_low": 0.5357545481675899,2053 "point": 0.55768269647466312054 },2055 "window_bits": 02056 },2057 {2058 "algorithm": "straus_wnaf5",2059 "batch_size": 32,2060 "msm_only_ns_per_sig_median": 12876.077380952382,2061 "msm_only_ns_per_sig_samples": [2062 12876.077380952382,2063 12865.44990079365,2064 12856.479662698413,2065 12857.289186507936,2066 13016.35119047619,2067 13163.21626984127,2068 13210.1304563492072069 ],2070 "n_batches_per_rep": 63,2071 "n_terms": 65,2072 "op_counts_per_batch": {2073 "adds": 2565,2074 "doublings": 321,2075 "identity_adds": 1,2076 "mixed_adds": 02077 },2078 "op_counts_per_signature": {2079 "adds": 80.15625,2080 "doublings": 10.03125,2081 "mixed_adds": 0.0,2082 "total": 90.18752083 },2084 "per_signature": {2085 "iqr_ns": 303.49925595238165,2086 "mean_ns": 16612.959396258502,2087 "median_ns": 16477.96775793651,2088 "min_ns": 16456.494047619046,2089 "ns_per_op_samples": [2090 16477.96775793651,2091 16463.231646825396,2092 16456.494047619046,2093 16457.299603174604,2094 16661.065476190477,2095 16866.464285714286,2096 16908.1929563492052097 ],2098 "ops_per_rep": 2016,2099 "ops_per_s": 60687.095319649256,2100 "q1_ns": 16460.265625,2101 "q3_ns": 16763.76488095238,2102 "reps": 7,2103 "sd_ns": 201.285161227874622104 },2105 "sigs_per_rep": 2016,2106 "speedup_vs_k256_single_verify": {2107 "bootstrap_resamples": 2000,2108 "ci95_high": 1.9775430910782281,2109 "ci95_low": 1.9054823498023339,2110 "point": 1.97218774046621832111 },2112 "speedup_vs_libsecp256k1_single_verify": {2113 "bootstrap_resamples": 2000,2114 "ci95_high": 1.0471123999111176,2115 "ci95_low": 1.0044982287336874,2116 "point": 1.02829224749750762117 },2118 "window_bits": 52119 },2120 {2121 "algorithm": "pippenger",2122 "batch_size": 32,2123 "msm_only_ns_per_sig_median": 22151.82738095238,2124 "msm_only_ns_per_sig_samples": [2125 22171.37896825397,2126 22151.82738095238,2127 22136.035714285714,2128 22146.720734126986,2129 22139.34771825397,2130 22470.196428571428,2131 22722.7202380952372132 ],2133 "n_batches_per_rep": 63,2134 "n_terms": 65,2135 "op_counts_per_batch": {2136 "adds": 2811,2137 "doublings": 255,2138 "identity_adds": 1254,2139 "mixed_adds": 24202140 },2141 "op_counts_per_signature": {2142 "adds": 87.84375,2143 "doublings": 7.96875,2144 "mixed_adds": 75.625,2145 "total": 171.43752146 },2147 "per_signature": {2148 "iqr_ns": 206.09102182539937,2149 "mean_ns": 25903.740362811794,2150 "median_ns": 25749.565972222223,2151 "min_ns": 25743.283234126986,2152 "ns_per_op_samples": [2153 25777.405753968254,2154 25747.82986111111,2155 25743.283234126986,2156 25749.04910714286,2157 25749.565972222223,2158 26131.65525793651,2159 26427.3933531746042160 ],2161 "ops_per_rep": 2016,2162 "ops_per_s": 38835.60604783657,2163 "q1_ns": 25748.439484126982,2164 "q3_ns": 25954.53050595238,2165 "reps": 7,2166 "sd_ns": 270.761823105259572167 },2168 "sigs_per_rep": 2016,2169 "speedup_vs_k256_single_verify": {2170 "bootstrap_resamples": 2000,2171 "ci95_high": 1.2643879937589277,2172 "ci95_low": 1.229878080158702,2173 "point": 1.26206577753805172174 },2175 "speedup_vs_libsecp256k1_single_verify": {2176 "bootstrap_resamples": 2000,2177 "ci95_high": 0.6694947812739963,2178 "ci95_low": 0.6483452093932857,2179 "point": 0.65803697500294972180 },2181 "window_bits": 52182 },2183 {2184 "algorithm": "k256_lincomb_vartime",2185 "batch_size": 32,2186 "msm_only_ns_per_sig_median": 16860.328373015873,2187 "msm_only_ns_per_sig_samples": [2188 16905.174603174604,2189 16903.646825396827,2190 16860.328373015873,2191 17010.93005952381,2192 16828.684027777777,2193 16443.740575396827,2194 16427.4141865079362195 ],2196 "n_batches_per_rep": 63,2197 "n_terms": 65,2198 "op_counts_per_batch": {2199 "adds": 0,2200 "doublings": 0,2201 "identity_adds": 0,2202 "mixed_adds": 02203 },2204 "op_counts_per_signature": {2205 "adds": 0.0,2206 "doublings": 0.0,2207 "mixed_adds": 0.0,2208 "total": 0.02209 },2210 "per_signature": {2211 "iqr_ns": 323.55753968254066,2212 "mean_ns": 20458.59615929705,2213 "median_ns": 20577.62896825397,2214 "min_ns": 20044.97371031746,2215 "ns_per_op_samples": [2216 20617.352678571428,2217 20617.663194444445,2218 20577.62896825397,2219 20764.65376984127,2220 20524.44990079365,2221 20063.45089285714,2222 20044.973710317462223 ],2224 "ops_per_rep": 2016,2225 "ops_per_s": 48596.463739468956,2226 "q1_ns": 20293.950396825396,2227 "q3_ns": 20617.507936507936,2228 "reps": 7,2229 "sd_ns": 285.74640616630412230 },2231 "sigs_per_rep": 2016,2232 "speedup_vs_k256_single_verify": {2233 "bootstrap_resamples": 2000,2234 "ci95_high": 1.6218327880765777,2235 "ci95_low": 1.5567772206447976,2236 "point": 1.57927067545709842237 },2238 "speedup_vs_libsecp256k1_single_verify": {2239 "bootstrap_resamples": 2000,2240 "ci95_high": 0.8465172738673182,2241 "ci95_low": 0.8217135152622473,2242 "point": 0.82342657291277472243 },2244 "window_bits": 02245 },2246 {2247 "algorithm": "k256_lincomb_ct",2248 "batch_size": 32,2249 "msm_only_ns_per_sig_median": 25570.581845238095,2250 "msm_only_ns_per_sig_samples": [2251 25529.967261904763,2252 25540.199404761905,2253 25570.581845238095,2254 25567.749503968254,2255 25843.398313492064,2256 26723.422123015873,2257 28419.642361111112258 ],2259 "n_batches_per_rep": 63,2260 "n_terms": 65,2261 "op_counts_per_batch": {2262 "adds": 0,2263 "doublings": 0,2264 "identity_adds": 0,2265 "mixed_adds": 02266 },2267 "op_counts_per_signature": {2268 "adds": 0.0,2269 "doublings": 0.0,2270 "mixed_adds": 0.0,2271 "total": 0.02272 },2273 "per_signature": {2274 "iqr_ns": 832.5376984126997,2275 "mean_ns": 29866.69430272109,2276 "median_ns": 29182.97371031746,2277 "min_ns": 29138.49603174603,2278 "ns_per_op_samples": [2279 29138.49603174603,2280 29155.423115079364,2281 29182.97371031746,2282 29169.312003968254,2283 29494.068452380954,2284 30495.742063492064,2285 32430.844742063492286 ],2287 "ops_per_rep": 2016,2288 "ops_per_s": 34266.55590093124,2289 "q1_ns": 29162.36755952381,2290 "q3_ns": 29994.90525793651,2291 "reps": 7,2292 "sd_ns": 1231.49055542212822293 },2294 "sigs_per_rep": 2016,2295 "speedup_vs_k256_single_verify": {2296 "bootstrap_resamples": 2000,2297 "ci95_high": 1.1161434909878987,2298 "ci95_low": 1.0538766340916446,2299 "point": 1.11358240330767472300 },2301 "speedup_vs_libsecp256k1_single_verify": {2302 "bootstrap_resamples": 2000,2303 "ci95_high": 0.5909928214163841,2304 "ci95_low": 0.5555639034697402,2305 "point": 0.58061822856693652306 },2307 "window_bits": 02308 },2309 {2310 "algorithm": "straus_wnaf5",2311 "batch_size": 64,2312 "msm_only_ns_per_sig_median": 12562.376953125,2313 "msm_only_ns_per_sig_samples": [2314 12580.32275390625,2315 12572.2646484375,2316 12572.97802734375,2317 12539.57080078125,2318 12551.3916015625,2319 12562.376953125,2320 12560.607910156252321 ],2322 "n_batches_per_rep": 32,2323 "n_terms": 129,2324 "op_counts_per_batch": {2325 "adds": 5059,2326 "doublings": 385,2327 "identity_adds": 1,2328 "mixed_adds": 02329 },2330 "op_counts_per_signature": {2331 "adds": 79.046875,2332 "doublings": 6.015625,2333 "mixed_adds": 0.0,2334 "total": 85.06252335 },2336 "per_signature": {2337 "iqr_ns": 25.1162109375,2338 "mean_ns": 16165.393624441964,2339 "median_ns": 16163.39111328125,2340 "min_ns": 16149.06787109375,2341 "ns_per_op_samples": [2342 16181.33544921875,2343 16176.2900390625,2344 16180.806640625,2345 16149.06787109375,2346 16149.08837890625,2347 16163.39111328125,2348 16157.775878906252349 ],2350 "ops_per_rep": 2048,2351 "ops_per_s": 61868.20531604367,2352 "q1_ns": 16153.43212890625,2353 "q3_ns": 16178.54833984375,2354 "reps": 7,2355 "sd_ns": 14.1707800833100762356 },2357 "sigs_per_rep": 2048,2358 "speedup_vs_k256_single_verify": {2359 "bootstrap_resamples": 2000,2360 "ci95_high": 2.014947329318155,2361 "ci95_low": 1.9841771458408004,2362 "point": 2.01057103501610522363 },2364 "speedup_vs_libsecp256k1_single_verify": {2365 "bootstrap_resamples": 2000,2366 "ci95_high": 1.0669076071605301,2367 "ci95_low": 1.0470635906038852,2368 "point": 1.0483051719312292369 },2370 "window_bits": 52371 },2372 {2373 "algorithm": "pippenger",2374 "batch_size": 64,2375 "msm_only_ns_per_sig_median": 18316.42822265625,2376 "msm_only_ns_per_sig_samples": [2377 18331.134765625,2378 18490.904296875,2379 18315.93896484375,2380 18304.6884765625,2381 18303.8544921875,2382 18316.42822265625,2383 18508.646972656252384 ],2385 "n_batches_per_rep": 32,2386 "n_terms": 129,2387 "op_counts_per_batch": {2388 "adds": 4710,2389 "doublings": 252,2390 "identity_adds": 2063,2391 "mixed_adds": 40982392 },2393 "op_counts_per_signature": {2394 "adds": 73.59375,2395 "doublings": 3.9375,2396 "mixed_adds": 64.03125,2397 "total": 141.56252398 },2399 "per_signature": {2400 "iqr_ns": 133.18896484375,2401 "mean_ns": 21983.33740234375,2402 "median_ns": 21915.140625,2403 "min_ns": 21902.9951171875,2404 "ns_per_op_samples": [2405 21941.5078125,2406 22162.29248046875,2407 21915.140625,2408 21902.9951171875,2409 21904.1953125,2410 21914.08251953125,2411 22143.147949218752412 ],2413 "ops_per_rep": 2048,2414 "ops_per_s": 45630.55364834101,2415 "q1_ns": 21909.138916015625,2416 "q3_ns": 22042.327880859375,2417 "reps": 7,2418 "sd_ns": 116.532855072520422419 },2420 "sigs_per_rep": 2048,2421 "speedup_vs_k256_single_verify": {2422 "bootstrap_resamples": 2000,2423 "ci95_high": 1.4856542577579197,2424 "ci95_low": 1.4514083577323482,2425 "point": 1.48288557924779462426 },2427 "speedup_vs_libsecp256k1_single_verify": {2428 "bootstrap_resamples": 2000,2429 "ci95_high": 0.7866564335803525,2430 "ci95_low": 0.7651275933690249,2431 "point": 0.77317169850467252432 },2433 "window_bits": 62434 },2435 {2436 "algorithm": "k256_lincomb_vartime",2437 "batch_size": 64,2438 "msm_only_ns_per_sig_median": 16553.30419921875,2439 "msm_only_ns_per_sig_samples": [2440 16564.73876953125,2441 16574.400390625,2442 16641.93017578125,2443 16364.2998046875,2444 16553.30419921875,2445 16373.16796875,2446 16352.0097656252447 ],2448 "n_batches_per_rep": 32,2449 "n_terms": 129,2450 "op_counts_per_batch": {2451 "adds": 0,2452 "doublings": 0,2453 "identity_adds": 0,2454 "mixed_adds": 02455 },2456 "op_counts_per_signature": {2457 "adds": 0.0,2458 "doublings": 0.0,2459 "mixed_adds": 0.0,2460 "total": 0.02461 },2462 "per_signature": {2463 "iqr_ns": 241.556884765625,2464 "mean_ns": 20131.957938058036,2465 "median_ns": 20212.68701171875,2466 "min_ns": 19971.86279296875,2467 "ns_per_op_samples": [2468 20217.97705078125,2469 20232.46240234375,2470 20321.390625,2471 19974.8330078125,2472 20212.68701171875,2473 19992.49267578125,2474 19971.862792968752475 ],2476 "ops_per_rep": 2048,2477 "ops_per_s": 49473.877442431476,2478 "q1_ns": 19983.662841796875,2479 "q3_ns": 20225.2197265625,2480 "reps": 7,2481 "sd_ns": 147.009988254184782482 },2483 "sigs_per_rep": 2048,2484 "speedup_vs_k256_single_verify": {2485 "bootstrap_resamples": 2000,2486 "ci95_high": 1.629028011762262,2487 "ci95_low": 1.5875290054679205,2488 "point": 1.60778455537152352489 },2490 "speedup_vs_libsecp256k1_single_verify": {2491 "bootstrap_resamples": 2000,2492 "ci95_high": 0.862266365658496,2493 "ci95_low": 0.837383020320719,2494 "point": 0.83829361678515312495 },2496 "window_bits": 02497 },2498 {2499 "algorithm": "k256_lincomb_ct",2500 "batch_size": 64,2501 "msm_only_ns_per_sig_median": 25216.51171875,2502 "msm_only_ns_per_sig_samples": [2503 25266.07177734375,2504 25185.2216796875,2505 25213.44287109375,2506 25216.51171875,2507 25169.353515625,2508 25900.2080078125,2509 25795.554199218752510 ],2511 "n_batches_per_rep": 32,2512 "n_terms": 129,2513 "op_counts_per_batch": {2514 "adds": 0,2515 "doublings": 0,2516 "identity_adds": 0,2517 "mixed_adds": 02518 },2519 "op_counts_per_signature": {2520 "adds": 0.0,2521 "doublings": 0.0,2522 "mixed_adds": 0.0,2523 "total": 0.02524 },2525 "per_signature": {2526 "iqr_ns": 370.930908203125,2527 "mean_ns": 29023.91427176339,2528 "median_ns": 28822.20458984375,2529 "min_ns": 28770.6708984375,2530 "ns_per_op_samples": [2531 28868.1640625,2532 28794.88134765625,2533 28822.20458984375,2534 28819.64111328125,2535 28770.6708984375,2536 29603.61767578125,2537 29488.220214843752538 ],2539 "ops_per_rep": 2048,2540 "ops_per_s": 34695.47226628097,2541 "q1_ns": 28807.26123046875,2542 "q3_ns": 29178.192138671875,2543 "reps": 7,2544 "sd_ns": 359.373709530474062545 },2546 "sigs_per_rep": 2048,2547 "speedup_vs_k256_single_verify": {2548 "bootstrap_resamples": 2000,2549 "ci95_high": 1.1300467644624814,2550 "ci95_low": 1.0898843594440477,2551 "point": 1.12752117551241682552 },2553 "speedup_vs_libsecp256k1_single_verify": {2554 "bootstrap_resamples": 2000,2555 "ci95_high": 0.5981633821267691,2556 "ci95_low": 0.5745458144493776,2557 "point": 0.58788585887599712558 },2559 "window_bits": 02560 },2561 {2562 "algorithm": "straus_wnaf5",2563 "batch_size": 128,2564 "msm_only_ns_per_sig_median": 12476.25732421875,2565 "msm_only_ns_per_sig_samples": [2566 12512.04638671875,2567 12630.6357421875,2568 12476.25732421875,2569 12473.89697265625,2570 12457.23583984375,2571 12460.95947265625,2572 12493.895996093752573 ],2574 "n_batches_per_rep": 16,2575 "n_terms": 257,2576 "op_counts_per_batch": {2577 "adds": 10120,2578 "doublings": 513,2579 "identity_adds": 1,2580 "mixed_adds": 02581 },2582 "op_counts_per_signature": {2583 "adds": 79.0625,2584 "doublings": 4.0078125,2585 "mixed_adds": 0.0,2586 "total": 83.07031252587 },2588 "per_signature": {2589 "iqr_ns": 46.05078125,2590 "mean_ns": 16105.648856026786,2591 "median_ns": 16073.64892578125,2592 "min_ns": 16054.30078125,2593 "ns_per_op_samples": [2594 16120.462890625,2595 16259.19580078125,2596 16073.64892578125,2597 16070.76025390625,2598 16054.30078125,2599 16059.38720703125,2600 16101.78613281252601 ],2602 "ops_per_rep": 2048,2603 "ops_per_s": 62213.62707481155,2604 "q1_ns": 16065.07373046875,2605 "q3_ns": 16111.12451171875,2606 "reps": 7,2607 "sd_ns": 71.681024383317452608 },2609 "sigs_per_rep": 2048,2610 "speedup_vs_k256_single_verify": {2611 "bootstrap_resamples": 2000,2612 "ci95_high": 2.0262020013910162,2613 "ci95_low": 1.993300313204662,2614 "point": 2.02179642905324152615 },2616 "speedup_vs_libsecp256k1_single_verify": {2617 "bootstrap_resamples": 2000,2618 "ci95_high": 1.0726844111690252,2619 "ci95_low": 1.0509830651235808,2620 "point": 1.0541580557245152621 },2622 "window_bits": 52623 },2624 {2625 "algorithm": "pippenger",2626 "batch_size": 128,2627 "msm_only_ns_per_sig_median": 14093.8515625,2628 "msm_only_ns_per_sig_samples": [2629 13655.8642578125,2630 13661.1943359375,2631 14370.626953125,2632 14052.470703125,2633 14165.466796875,2634 14093.8515625,2635 14112.487792968752636 ],2637 "n_batches_per_rep": 16,2638 "n_terms": 257,2639 "op_counts_per_batch": {2640 "adds": 5163,2641 "doublings": 252,2642 "identity_adds": 2506,2643 "mixed_adds": 81802644 },2645 "op_counts_per_signature": {2646 "adds": 40.3359375,2647 "doublings": 1.96875,2648 "mixed_adds": 63.90625,2649 "total": 106.21093752650 },2651 "per_signature": {2652 "iqr_ns": 339.192626953125,2653 "mean_ns": 17713.698660714286,2654 "median_ns": 17814.798828125,2655 "min_ns": 17256.34765625,2656 "ns_per_op_samples": [2657 17256.34765625,2658 17265.56396484375,2659 18164.73388671875,2660 17775.24853515625,2661 17887.51220703125,2662 17831.685546875,2663 17814.7988281252664 ],2665 "ops_per_rep": 2048,2666 "ops_per_s": 56133.106505881864,2667 "q1_ns": 17520.40625,2668 "q3_ns": 17859.598876953125,2669 "reps": 7,2670 "sd_ns": 334.5566985100942671 },2672 "sigs_per_rep": 2048,2673 "speedup_vs_k256_single_verify": {2674 "bootstrap_resamples": 2000,2675 "ci95_high": 1.8846510062606274,2676 "ci95_low": 1.794359362470954,2677 "point": 1.82419382410844572678 },2679 "speedup_vs_libsecp256k1_single_verify": {2680 "bootstrap_resamples": 2000,2681 "ci95_high": 0.9827895882550489,2682 "ci95_low": 0.9471598567709311,2683 "point": 0.95112870279789542684 },2685 "window_bits": 62686 },2687 {2688 "algorithm": "k256_lincomb_vartime",2689 "batch_size": 128,2690 "msm_only_ns_per_sig_median": 16316.4072265625,2691 "msm_only_ns_per_sig_samples": [2692 16406.6572265625,2693 16329.244140625,2694 16524.76025390625,2695 16316.4072265625,2696 16289.3466796875,2697 16296.61083984375,2698 16310.546386718752699 ],2700 "n_batches_per_rep": 16,2701 "n_terms": 257,2702 "op_counts_per_batch": {2703 "adds": 0,2704 "doublings": 0,2705 "identity_adds": 0,2706 "mixed_adds": 02707 },2708 "op_counts_per_signature": {2709 "adds": 0.0,2710 "doublings": 0.0,2711 "mixed_adds": 0.0,2712 "total": 0.02713 },2714 "per_signature": {2715 "iqr_ns": 69.936279296875,2716 "mean_ns": 19958.385672433036,2717 "median_ns": 19917.92822265625,2718 "min_ns": 19889.46533203125,2719 "ns_per_op_samples": [2720 20015.70654296875,2721 19923.4619140625,2722 20162.841796875,2723 19917.92822265625,2724 19890.07568359375,2725 19889.46533203125,2726 19909.220214843752727 ],2728 "ops_per_rep": 2048,2729 "ops_per_s": 50206.024884782935,2730 "q1_ns": 19899.64794921875,2731 "q3_ns": 19969.584228515625,2732 "reps": 7,2733 "sd_ns": 99.814806248246572734 },2735 "sigs_per_rep": 2048,2736 "speedup_vs_k256_single_verify": {2737 "bootstrap_resamples": 2000,2738 "ci95_high": 1.635969767919995,2739 "ci95_low": 1.6035719214356245,2740 "point": 1.63157762377286652741 },2742 "speedup_vs_libsecp256k1_single_verify": {2743 "bootstrap_resamples": 2000,2744 "ci95_high": 0.8658728877360651,2745 "ci95_low": 0.8464519333169188,2746 "point": 0.85069924495090532747 },2748 "window_bits": 02749 },2750 {2751 "algorithm": "k256_lincomb_ct",2752 "batch_size": 128,2753 "msm_only_ns_per_sig_median": 25191.00048828125,2754 "msm_only_ns_per_sig_samples": [2755 25191.00048828125,2756 24960.10400390625,2757 24988.2607421875,2758 25003.7646484375,2759 25421.6923828125,2760 25714.0283203125,2761 25586.8730468752762 ],2763 "n_batches_per_rep": 16,2764 "n_terms": 257,2765 "op_counts_per_batch": {2766 "adds": 0,2767 "doublings": 0,2768 "identity_adds": 0,2769 "mixed_adds": 02770 },2771 "op_counts_per_signature": {2772 "adds": 0.0,2773 "doublings": 0.0,2774 "mixed_adds": 0.0,2775 "total": 0.02776 },2777 "per_signature": {2778 "iqr_ns": 616.0888671875,2779 "mean_ns": 28914.22530691964,2780 "median_ns": 28822.65185546875,2781 "min_ns": 28558.87890625,2782 "ns_per_op_samples": [2783 28822.65185546875,2784 28558.87890625,2785 28584.65576171875,2786 28608.5615234375,2787 29113.72900390625,2788 29399.43408203125,2789 29311.6660156252790 ],2791 "ops_per_rep": 2048,2792 "ops_per_s": 34694.93386710224,2793 "q1_ns": 28596.608642578125,2794 "q3_ns": 29212.697509765625,2795 "reps": 7,2796 "sd_ns": 358.21120227897392797 },2798 "sigs_per_rep": 2048,2799 "speedup_vs_k256_single_verify": {2800 "bootstrap_resamples": 2000,2801 "ci95_high": 1.1383576829208402,2802 "ci95_low": 1.0964491060613197,2803 "point": 1.12750367880649982804 },2805 "speedup_vs_libsecp256k1_single_verify": {2806 "bootstrap_resamples": 2000,2807 "ci95_high": 0.6025767491272537,2808 "ci95_low": 0.5780065005847381,2809 "point": 0.58787673615066932810 },2811 "window_bits": 02812 },2813 {2814 "algorithm": "straus_wnaf5",2815 "batch_size": 256,2816 "msm_only_ns_per_sig_median": 12508.30126953125,2817 "msm_only_ns_per_sig_samples": [2818 12527.24169921875,2819 12508.30126953125,2820 12507.06005859375,2821 12503.01123046875,2822 12520.20361328125,2823 12488.138671875,2824 12542.500488281252825 ],2826 "n_batches_per_rep": 8,2827 "n_terms": 513,2828 "op_counts_per_batch": {2829 "adds": 20212,2830 "doublings": 769,2831 "identity_adds": 1,2832 "mixed_adds": 02833 },2834 "op_counts_per_signature": {2835 "adds": 78.953125,2836 "doublings": 3.00390625,2837 "mixed_adds": 0.0,2838 "total": 81.957031252839 },2840 "per_signature": {2841 "iqr_ns": 26.9775390625,2842 "mean_ns": 16116.76304408482,2843 "median_ns": 16127.685546875,2844 "min_ns": 16088.37890625,2845 "ns_per_op_samples": [2846 16130.28955078125,2847 16127.685546875,2848 16104.89892578125,2849 16099.52783203125,2850 16128.09228515625,2851 16088.37890625,2852 16138.468261718752853 ],2854 "ops_per_rep": 2048,2855 "ops_per_s": 62005.17719008765,2856 "q1_ns": 16102.21337890625,2857 "q3_ns": 16129.19091796875,2858 "reps": 7,2859 "sd_ns": 18.9085727677491462860 },2861 "sigs_per_rep": 2048,2862 "speedup_vs_k256_single_verify": {2863 "bootstrap_resamples": 2000,2864 "ci95_high": 2.021543267675036,2865 "ci95_low": 1.9901067300774715,2866 "point": 2.01502229849074332867 },2868 "speedup_vs_libsecp256k1_single_verify": {2869 "bootstrap_resamples": 2000,2870 "ci95_high": 1.0704105675822329,2871 "ci95_low": 1.0503105010399174,2872 "point": 1.05062604617084722873 },2874 "window_bits": 52875 },2876 {2877 "algorithm": "pippenger",2878 "batch_size": 256,2879 "msm_only_ns_per_sig_median": 11731.14013671875,2880 "msm_only_ns_per_sig_samples": [2881 11731.14013671875,2882 11721.41552734375,2883 11720.15283203125,2884 11732.421875,2885 11760.82470703125,2886 11736.26708984375,2887 11728.332519531252888 ],2889 "n_batches_per_rep": 8,2890 "n_terms": 513,2891 "op_counts_per_batch": {2892 "adds": 8866,2893 "doublings": 252,2894 "identity_adds": 4282,2895 "mixed_adds": 141642896 },2897 "op_counts_per_signature": {2898 "adds": 34.6328125,2899 "doublings": 0.984375,2900 "mixed_adds": 55.328125,2901 "total": 90.94531252902 },2903 "per_signature": {2904 "iqr_ns": 13.89599609375,2905 "mean_ns": 15330.798897879464,2906 "median_ns": 15327.1279296875,2907 "min_ns": 15313.06982421875,2908 "ns_per_op_samples": [2909 15325.33740234375,2910 15316.5283203125,2911 15313.06982421875,2912 15327.1279296875,2913 15363.87109375,2914 15337.82958984375,2915 15331.8281252916 ],2917 "ops_per_rep": 2048,2918 "ops_per_s": 65243.795483893286,2919 "q1_ns": 15320.932861328125,2920 "q3_ns": 15334.828857421875,2921 "reps": 7,2922 "sd_ns": 16.8598806617772152923 },2924 "sigs_per_rep": 2048,2925 "speedup_vs_k256_single_verify": {2926 "bootstrap_resamples": 2000,2927 "ci95_high": 2.124953577142075,2928 "ci95_low": 2.0934636586268147,2929 "point": 2.1202697693319632930 },2931 "speedup_vs_libsecp256k1_single_verify": {2932 "bootstrap_resamples": 2000,2933 "ci95_high": 1.1248596717592403,2934 "ci95_low": 1.1045769155773095,2935 "point": 1.1055017337710362936 },2937 "window_bits": 72938 },2939 {2940 "algorithm": "k256_lincomb_vartime",2941 "batch_size": 256,2942 "msm_only_ns_per_sig_median": 16294.82080078125,2943 "msm_only_ns_per_sig_samples": [2944 16308.919921875,2945 16291.85009765625,2946 16294.82080078125,2947 16403.80908203125,2948 16372.86376953125,2949 16285.64501953125,2950 16283.324707031252951 ],2952 "n_batches_per_rep": 8,2953 "n_terms": 513,2954 "op_counts_per_batch": {2955 "adds": 0,2956 "doublings": 0,2957 "identity_adds": 0,2958 "mixed_adds": 02959 },2960 "op_counts_per_signature": {2961 "adds": 0.0,2962 "doublings": 0.0,2963 "mixed_adds": 0.0,2964 "total": 0.02965 },2966 "per_signature": {2967 "iqr_ns": 64.015625,2968 "mean_ns": 19925.89453125,2969 "median_ns": 19898.3154296875,2970 "min_ns": 19883.544921875,2971 "ns_per_op_samples": [2972 19910.013671875,2973 19887.939453125,2974 19898.3154296875,2975 20007.52734375,2976 19999.93896484375,2977 19893.98193359375,2978 19883.5449218752979 ],2980 "ops_per_rep": 2048,2981 "ops_per_s": 50255.5104995491,2982 "q1_ns": 19890.960693359375,2983 "q3_ns": 19954.976318359375,2984 "reps": 7,2985 "sd_ns": 53.8698957662846852986 },2987 "sigs_per_rep": 2048,2988 "speedup_vs_k256_single_verify": {2989 "bootstrap_resamples": 2000,2990 "ci95_high": 1.6365124945159122,2991 "ci95_low": 1.6069424039990357,2992 "point": 1.63318578976362972993 },2994 "speedup_vs_libsecp256k1_single_verify": {2995 "bootstrap_resamples": 2000,2996 "ci95_high": 0.866536124218038,2997 "ci95_low": 0.8471192602028205,2998 "point": 0.85153773744685812999 },3000 "window_bits": 03001 },3002 {3003 "algorithm": "k256_lincomb_ct",3004 "batch_size": 256,3005 "msm_only_ns_per_sig_median": 25624.47021484375,3006 "msm_only_ns_per_sig_samples": [3007 25624.47021484375,3008 25446.77734375,3009 25534.95361328125,3010 25670.36962890625,3011 25518.53515625,3012 27657.45068359375,3013 27548.46191406253014 ],3015 "n_batches_per_rep": 8,3016 "n_terms": 513,3017 "op_counts_per_batch": {3018 "adds": 0,3019 "doublings": 0,3020 "identity_adds": 0,3021 "mixed_adds": 03022 },3023 "op_counts_per_signature": {3024 "adds": 0.0,3025 "doublings": 0.0,3026 "mixed_adds": 0.0,3027 "total": 0.03028 },3029 "per_signature": {3030 "iqr_ns": 1187.02197265625,3031 "mean_ns": 29932.3701171875,3032 "median_ns": 29308.89892578125,3033 "min_ns": 29177.67333984375,3034 "ns_per_op_samples": [3035 29308.89892578125,3036 29177.67333984375,3037 29286.80419921875,3038 29359.70068359375,3039 29237.12158203125,3040 31618.123046875,3041 31538.269042968753042 ],3043 "ops_per_rep": 2048,3044 "ops_per_s": 34119.33019156721,3045 "q1_ns": 29261.962890625,3046 "q3_ns": 30448.98486328125,3047 "reps": 7,3048 "sd_ns": 1125.98357094843049 },3050 "sigs_per_rep": 2048,3051 "speedup_vs_k256_single_verify": {3052 "bootstrap_resamples": 2000,3053 "ci95_high": 1.1129536951407142,3054 "ci95_low": 1.019039756310441,3055 "point": 1.10879791432266343056 },3057 "speedup_vs_libsecp256k1_single_verify": {3058 "bootstrap_resamples": 2000,3059 "ci95_high": 0.5886218886408869,3060 "ci95_low": 0.5371992190477296,3061 "point": 0.57812361163439173062 },3063 "window_bits": 03064 },3065 {3066 "algorithm": "straus_wnaf5",3067 "batch_size": 512,3068 "msm_only_ns_per_sig_median": 12536.1328125,3069 "msm_only_ns_per_sig_samples": [3070 12560.11962890625,3071 12567.1796875,3072 12540.58837890625,3073 12529.52099609375,3074 12536.1328125,3075 12535.03369140625,3076 12527.770019531253077 ],3078 "n_batches_per_rep": 4,3079 "n_terms": 1025,3080 "op_counts_per_batch": {3081 "adds": 40393,3082 "doublings": 1281,3083 "identity_adds": 1,3084 "mixed_adds": 03085 },3086 "op_counts_per_signature": {3087 "adds": 78.892578125,3088 "doublings": 2.501953125,3089 "mixed_adds": 0.0,3090 "total": 81.394531253091 },3092 "per_signature": {3093 "iqr_ns": 22.29833984375,3094 "mean_ns": 16144.060477120536,3095 "median_ns": 16138.712890625,3096 "min_ns": 16123.31103515625,3097 "ns_per_op_samples": [3098 16165.568359375,3099 16170.30859375,3100 16144.775390625,3101 16128.4990234375,3102 16137.248046875,3103 16138.712890625,3104 16123.311035156253105 ],3106 "ops_per_rep": 2048,3107 "ops_per_s": 61962.80996986453,3108 "q1_ns": 16132.87353515625,3109 "q3_ns": 16155.171875,3110 "reps": 7,3111 "sd_ns": 17.79404299534343112 },3113 "sigs_per_rep": 2048,3114 "speedup_vs_k256_single_verify": {3115 "bootstrap_resamples": 2000,3116 "ci95_high": 2.0175195753004904,3117 "ci95_low": 1.9880502653903733,3118 "point": 2.0136454635659283119 },3120 "speedup_vs_libsecp256k1_single_verify": {3121 "bootstrap_resamples": 2000,3122 "ci95_high": 1.0688442845765722,3123 "ci95_low": 1.0480505926767818,3124 "point": 1.04990816893724453125 },3126 "window_bits": 53127 },3128 {3129 "algorithm": "pippenger",3130 "batch_size": 512,3131 "msm_only_ns_per_sig_median": 9719.8896484375,3132 "msm_only_ns_per_sig_samples": [3133 9499.28857421875,3134 9778.1376953125,3135 9719.8896484375,3136 9886.169921875,3137 9735.45361328125,3138 9700.05322265625,3139 9627.7675781253140 ],3141 "n_batches_per_rep": 4,3142 "n_terms": 1025,3143 "op_counts_per_batch": {3144 "adds": 9163,3145 "doublings": 252,3146 "identity_adds": 4577,3147 "mixed_adds": 283133148 },3149 "op_counts_per_signature": {3150 "adds": 17.896484375,3151 "doublings": 0.4921875,3152 "mixed_adds": 55.298828125,3153 "total": 73.68753154 },3155 "per_signature": {3156 "iqr_ns": 111.60302734375,3157 "mean_ns": 13386.52992466518,3158 "median_ns": 13426.04541015625,3159 "min_ns": 13088.48095703125,3160 "ns_per_op_samples": [3161 13088.48095703125,3162 13465.80029296875,3163 13452.5556640625,3164 13577.67724609375,3165 13426.04541015625,3166 13398.82421875,3167 13296.325683593753168 ],3169 "ops_per_rep": 2048,3170 "ops_per_s": 74482.09576615473,3171 "q1_ns": 13347.574951171875,3172 "q3_ns": 13459.177978515625,3173 "reps": 7,3174 "sd_ns": 155.918303137052423175 },3176 "sigs_per_rep": 2048,3177 "speedup_vs_k256_single_verify": {3178 "bootstrap_resamples": 2000,3179 "ci95_high": 2.447259737338591,3180 "ci95_low": 2.385912818464951,3181 "point": 2.42049278154659533182 },3183 "speedup_vs_libsecp256k1_single_verify": {3184 "bootstrap_resamples": 2000,3185 "ci95_high": 1.2964389493101882,3186 "ci95_low": 1.2581363254619387,3187 "point": 1.26203703193067083188 },3189 "window_bits": 73190 },3191 {3192 "algorithm": "k256_lincomb_vartime",3193 "batch_size": 512,3194 "msm_only_ns_per_sig_median": 16351.60302734375,3195 "msm_only_ns_per_sig_samples": [3196 16341.41015625,3197 16374.41015625,3198 16351.60302734375,3199 16345.70361328125,3200 16309.7333984375,3201 16979.49267578125,3202 16945.719238281253203 ],3204 "n_batches_per_rep": 4,3205 "n_terms": 1025,3206 "op_counts_per_batch": {3207 "adds": 0,3208 "doublings": 0,3209 "identity_adds": 0,3210 "mixed_adds": 03211 },3212 "op_counts_per_signature": {3213 "adds": 0.0,3214 "doublings": 0.0,3215 "mixed_adds": 0.0,3216 "total": 0.03217 },3218 "per_signature": {3219 "iqr_ns": 361.816162109375,3220 "mean_ns": 20137.71561104911,3221 "median_ns": 19945.86181640625,3222 "min_ns": 19904.94775390625,3223 "ns_per_op_samples": [3224 19936.421875,3225 19969.74658203125,3226 19945.86181640625,3227 19941.650390625,3228 19904.94775390625,3229 20633.4228515625,3230 20631.95800781253231 ],3232 "ops_per_rep": 2048,3233 "ops_per_s": 50135.71282126606,3234 "q1_ns": 19939.0361328125,3235 "q3_ns": 20300.852294921875,3236 "reps": 7,3237 "sd_ns": 338.66510066124083238 },3239 "sigs_per_rep": 2048,3240 "speedup_vs_k256_single_verify": {3241 "bootstrap_resamples": 2000,3242 "ci95_high": 1.6326512909339583,3243 "ci95_low": 1.5577169160498647,3244 "point": 1.62929264722316573245 },3246 "speedup_vs_libsecp256k1_single_verify": {3247 "bootstrap_resamples": 2000,3248 "ci95_high": 0.8644647590504524,3249 "ci95_low": 0.8211694446830793,3250 "point": 0.84950786563971683251 },3252 "window_bits": 03253 },3254 {3255 "algorithm": "straus_wnaf5",3256 "batch_size": 1024,3257 "msm_only_ns_per_sig_median": 12596.31396484375,3258 "msm_only_ns_per_sig_samples": [3259 12596.31396484375,3260 12577.25048828125,3261 12601.94873046875,3262 12658.04052734375,3263 12638.9365234375,3264 12582.3974609375,3265 12593.343261718753266 ],3267 "n_batches_per_rep": 2,3268 "n_terms": 2049,3269 "op_counts_per_batch": {3270 "adds": 80876,3271 "doublings": 2305,3272 "identity_adds": 1,3273 "mixed_adds": 03274 },3275 "op_counts_per_signature": {3276 "adds": 78.98046875,3277 "doublings": 2.2509765625,3278 "mixed_adds": 0.0,3279 "total": 81.23144531253280 },3281 "per_signature": {3282 "iqr_ns": 37.4345703125,3283 "mean_ns": 16205.447265625,3284 "median_ns": 16192.42333984375,3285 "min_ns": 16174.76416015625,3286 "ns_per_op_samples": [3287 16192.42333984375,3288 16174.76416015625,3289 16202.880859375,3290 16268.65625,3291 16235.697265625,3292 16175.5576171875,3293 16188.15136718753294 ],3295 "ops_per_rep": 2048,3296 "ops_per_s": 61757.27863656815,3297 "q1_ns": 16181.8544921875,3298 "q3_ns": 16219.2890625,3299 "reps": 7,3300 "sd_ns": 34.690631389465563301 },3302 "sigs_per_rep": 2048,3303 "speedup_vs_k256_single_verify": {3304 "bootstrap_resamples": 2000,3305 "ci95_high": 2.0116501248417404,3306 "ci95_low": 1.9795115340100427,3307 "point": 2.00696617905455453308 },3309 "speedup_vs_libsecp256k1_single_verify": {3310 "bootstrap_resamples": 2000,3311 "ci95_high": 1.064905659020598,3312 "ci95_low": 1.0435236148355098,3313 "point": 1.04642561180490383314 },3315 "window_bits": 53316 },3317 {3318 "algorithm": "pippenger",3319 "batch_size": 1024,3320 "msm_only_ns_per_sig_median": 8207.11328125,3321 "msm_only_ns_per_sig_samples": [3322 8207.11328125,3323 8202.5556640625,3324 8211.24267578125,3325 8202.9013671875,3326 8207.62109375,3327 8205.81103515625,3328 8211.91406253329 ],3330 "n_batches_per_rep": 2,3331 "n_terms": 2049,3332 "op_counts_per_batch": {3333 "adds": 16281,3334 "doublings": 248,3335 "identity_adds": 8122,3336 "mixed_adds": 489713337 },3338 "op_counts_per_signature": {3339 "adds": 15.8994140625,3340 "doublings": 0.2421875,3341 "mixed_adds": 47.8232421875,3342 "total": 63.964843753343 },3344 "per_signature": {3345 "iqr_ns": 5.666015625,3346 "mean_ns": 11802.115234375,3347 "median_ns": 11799.31640625,3348 "min_ns": 11794.53515625,3349 "ns_per_op_samples": [3350 11798.2177734375,3351 11796.81396484375,3352 11801.65576171875,3353 11794.53515625,3354 11804.7080078125,3355 11799.31640625,3356 11819.55957031253357 ],3358 "ops_per_rep": 2048,3359 "ops_per_s": 84750.67246016966,3360 "q1_ns": 11797.515869140625,3361 "q3_ns": 11803.181884765625,3362 "reps": 7,3363 "sd_ns": 8.3648384042679263364 },3365 "sigs_per_rep": 2048,3366 "speedup_vs_k256_single_verify": {3367 "bootstrap_resamples": 2000,3368 "ci95_high": 2.759463388894062,3369 "ci95_low": 2.71911570044655,3370 "point": 2.7541973518725433371 },3372 "speedup_vs_libsecp256k1_single_verify": {3373 "bootstrap_resamples": 2000,3374 "ci95_high": 1.4613143897474634,3375 "ci95_low": 1.4351742108985417,3376 "point": 1.43602950515207953377 },3378 "window_bits": 83379 },3380 {3381 "algorithm": "k256_lincomb_vartime",3382 "batch_size": 1024,3383 "msm_only_ns_per_sig_median": 16590.4541015625,3384 "msm_only_ns_per_sig_samples": [3385 16590.4541015625,3386 16386.29150390625,3387 16371.94775390625,3388 16353.455078125,3389 16716.1865234375,3390 17243.65234375,3391 16653.137207031253392 ],3393 "n_batches_per_rep": 2,3394 "n_terms": 2049,3395 "op_counts_per_batch": {3396 "adds": 0,3397 "doublings": 0,3398 "identity_adds": 0,3399 "mixed_adds": 03400 },3401 "op_counts_per_signature": {3402 "adds": 0.0,3403 "doublings": 0.0,3404 "mixed_adds": 0.0,3405 "total": 0.03406 },3407 "per_signature": {3408 "iqr_ns": 337.992431640625,3409 "mean_ns": 20236.339704241072,3410 "median_ns": 20192.81005859375,3411 "min_ns": 19948.99462890625,3412 "ns_per_op_samples": [3413 20192.81005859375,3414 19982.177734375,3415 19965.2099609375,3416 19948.99462890625,3417 20311.97119140625,3418 20941.81298828125,3419 20311.40136718753420 ],3421 "ops_per_rep": 2048,3422 "ops_per_s": 49522.57744703617,3423 "q1_ns": 19973.69384765625,3424 "q3_ns": 20311.686279296875,3425 "reps": 7,3426 "sd_ns": 349.19397584269033427 },3428 "sigs_per_rep": 2048,3429 "speedup_vs_k256_single_verify": {3430 "bootstrap_resamples": 2000,3431 "ci95_high": 1.629813188224145,3432 "ci95_low": 1.580227007470356,3433 "point": 1.60936719088136543434 },3435 "speedup_vs_libsecp256k1_single_verify": {3436 "bootstrap_resamples": 2000,3437 "ci95_high": 0.862711473652058,3438 "ci95_low": 0.8341035753135686,3439 "point": 0.83911879777172583440 },3441 "window_bits": 03442 },3443 {3444 "algorithm": "straus_wnaf5",3445 "batch_size": 2048,3446 "msm_only_ns_per_sig_median": 12612.26416015625,3447 "msm_only_ns_per_sig_samples": [3448 12643.5341796875,3449 12800.740234375,3450 12607.666015625,3451 12625.4072265625,3452 12612.26416015625,3453 12608.11376953125,3454 12608.947753906253455 ],3456 "n_batches_per_rep": 1,3457 "n_terms": 4097,3458 "op_counts_per_batch": {3459 "adds": 161617,3460 "doublings": 4353,3461 "identity_adds": 1,3462 "mixed_adds": 03463 },3464 "op_counts_per_signature": {3465 "adds": 78.91455078125,3466 "doublings": 2.12548828125,3467 "mixed_adds": 0.0,3468 "total": 81.04003906253469 },3470 "per_signature": {3471 "iqr_ns": 34.637451171875,3472 "mean_ns": 16243.2744140625,3473 "median_ns": 16211.28369140625,3474 "min_ns": 16202.04638671875,3475 "ns_per_op_samples": [3476 16252.72607421875,3477 16398.09130859375,3478 16211.28369140625,3479 16227.6611328125,3480 16206.4208984375,3481 16202.04638671875,3482 16204.691406253483 ],3484 "ops_per_rep": 2048,3485 "ops_per_s": 61685.429669589284,3486 "q1_ns": 16205.55615234375,3487 "q3_ns": 16240.193603515625,3488 "reps": 7,3489 "sd_ns": 70.558918576261143490 },3491 "sigs_per_rep": 2048,3492 "speedup_vs_k256_single_verify": {3493 "bootstrap_resamples": 2000,3494 "ci95_high": 2.00887970292928,3495 "ci95_low": 1.9774374989916805,3496 "point": 2.00463125676020943497 },3498 "speedup_vs_libsecp256k1_single_verify": {3499 "bootstrap_resamples": 2000,3500 "ci95_high": 1.0637051887046842,3501 "ci95_low": 1.0424302620146386,3502 "point": 1.04520819094556083503 },3504 "window_bits": 53505 },3506 {3507 "algorithm": "pippenger",3508 "batch_size": 2048,3509 "msm_only_ns_per_sig_median": 7116.53662109375,3510 "msm_only_ns_per_sig_samples": [3511 7117.1669921875,3512 7116.53662109375,3513 7114.11572265625,3514 7116.353515625,3515 7113.56591796875,3516 7133.23974609375,3517 7121.3378906253518 ],3519 "n_batches_per_rep": 1,3520 "n_terms": 4097,3521 "op_counts_per_batch": {3522 "adds": 16351,3523 "doublings": 248,3524 "identity_adds": 8192,3525 "mixed_adds": 979033526 },3527 "op_counts_per_signature": {3528 "adds": 7.98388671875,3529 "doublings": 0.12109375,3530 "mixed_adds": 47.80419921875,3531 "total": 55.90917968753532 },3533 "per_signature": {3534 "iqr_ns": 5.014892578125,3535 "mean_ns": 10715.921944754464,3536 "median_ns": 10711.080078125,3537 "min_ns": 10707.2548828125,3538 "ns_per_op_samples": [3539 10710.87646484375,3540 10710.75439453125,3541 10707.2548828125,3542 10716.59326171875,3543 10711.080078125,3544 10739.8271484375,3545 10715.06738281253546 ],3547 "ops_per_rep": 2048,3548 "ops_per_s": 93361.26634346407,3549 "q1_ns": 10710.8154296875,3550 "q3_ns": 10715.830322265625,3551 "reps": 7,3552 "sd_ns": 10.9799953226222963553 },3554 "sigs_per_rep": 2048,3555 "speedup_vs_k256_single_verify": {3556 "bootstrap_resamples": 2000,3557 "ci95_high": 3.039597189535407,3558 "ci95_low": 2.9954664635599566,3559 "point": 3.03402138374160973560 },3561 "speedup_vs_libsecp256k1_single_verify": {3562 "bootstrap_resamples": 2000,3563 "ci95_high": 1.6094718351558803,3564 "ci95_low": 1.5808953541718012,3565 "point": 1.58192884157450123566 },3567 "window_bits": 83568 },3569 {3570 "algorithm": "k256_lincomb_vartime",3571 "batch_size": 2048,3572 "msm_only_ns_per_sig_median": 16532.30810546875,3573 "msm_only_ns_per_sig_samples": [3574 16380.5947265625,3575 17224.955078125,3576 17976.62353515625,3577 16838.6025390625,3578 16349.12109375,3579 16370.462890625,3580 16532.308105468753581 ],3582 "n_batches_per_rep": 1,3583 "n_terms": 4097,3584 "op_counts_per_batch": {3585 "adds": 0,3586 "doublings": 0,3587 "identity_adds": 0,3588 "mixed_adds": 03589 },3590 "op_counts_per_signature": {3591 "adds": 0.0,3592 "doublings": 0.0,3593 "mixed_adds": 0.0,3594 "total": 0.03595 },3596 "per_signature": {3597 "iqr_ns": 706.06494140625,3598 "mean_ns": 20436.096330915178,3599 "median_ns": 20122.6806640625,3600 "min_ns": 19936.11669921875,3601 "ns_per_op_samples": [3602 19988.38330078125,3603 20821.26904296875,3604 21693.888671875,3605 20534.7900390625,3606 19936.11669921875,3607 19955.5458984375,3608 20122.68066406253609 ],3610 "ops_per_rep": 2048,3611 "ops_per_s": 49695.1681882981,3612 "q1_ns": 19971.964599609375,3613 "q3_ns": 20678.029541015625,3614 "reps": 7,3615 "sd_ns": 648.03867258083113616 },3617 "sigs_per_rep": 2048,3618 "speedup_vs_k256_single_verify": {3619 "bootstrap_resamples": 2000,3620 "ci95_high": 1.6306024733980249,3621 "ci95_low": 1.5435538503284991,3622 "point": 1.6149759836937733623 },3624 "speedup_vs_libsecp256k1_single_verify": {3625 "bootstrap_resamples": 2000,3626 "ci95_high": 0.8624436374164496,3627 "ci95_low": 0.8137032120874185,3628 "point": 0.84204320402802633629 },3630 "window_bits": 03631 }3632 ],3633 "single_verify_reference_ns": {3634 "k256_verify_raw": 32497.646,3635 "libsecp256k1_schnorr_verify": 16944.16653636 },3637 "sizes": [3638 1,3639 2,3640 4,3641 8,3642 16,3643 32,3644 64,3645 128,3646 256,3647 512,3648 1024,3649 20483650 ]3651 },3652 "python_baselines": {3653 "seed": 34,3654 "ops": 20,3655 "reps": 7,3656 "python": "3.14.5",3657 "results": {3658 "wp34_pure_python_ecdsa_sign": {3659 "reps": 7,3660 "ops_per_rep": 20,3661 "ns_per_op_samples": [3662 4615279.2,3663 4589406.25,3664 4673427.1,3665 4671043.75,3666 4623656.25,3667 4576283.35,3668 4673160.453669 ],3670 "median_ns": 4623656.25,3671 "q1_ns": 4602342.725,3672 "q3_ns": 4672102.1,3673 "iqr_ns": 69759.375,3674 "min_ns": 4576283.35,3675 "mean_ns": 4631750.907142857,3676 "sd_ns": 41235.38788650303,3677 "ops_per_s": 216.279054049487343678 },3679 "wp34_pure_python_ecdsa_verify": {3680 "reps": 7,3681 "ops_per_rep": 20,3682 "ns_per_op_samples": [3683 9114654.2,3684 9192429.15,3685 9100618.75,3686 9098322.9,3687 9096145.8,3688 9220681.25,3689 9285858.353690 ],3691 "median_ns": 9114654.2,3692 "q1_ns": 9099470.825,3693 "q3_ns": 9206555.2,3694 "iqr_ns": 107084.375,3695 "min_ns": 9096145.8,3696 "mean_ns": 9158387.2,3697 "sd_ns": 75299.15694567886,3698 "ops_per_s": 109.713432682942613699 },3700 "wp34_pure_python_ecdsa_verify_shamir": {3701 "reps": 7,3702 "ops_per_rep": 20,3703 "ns_per_op_samples": [3704 5657356.25,3705 5519695.85,3706 5494897.95,3707 5747664.55,3708 5854495.8,3709 5724783.35,3710 5723125.03711 ],3712 "median_ns": 5723125.0,3713 "q1_ns": 5588526.05,3714 "q3_ns": 5736223.949999999,3715 "iqr_ns": 147697.89999999944,3716 "min_ns": 5494897.95,3717 "mean_ns": 5674574.107142857,3718 "sd_ns": 128555.71830207325,3719 "ops_per_s": 174.729714972152463720 },3721 "wp34_pure_python_schnorr_sign": {3722 "reps": 7,3723 "ops_per_rep": 20,3724 "ns_per_op_samples": [3725 18541975.0,3726 18548685.4,3727 18528050.0,3728 19253277.1,3729 18509164.55,3730 18715677.1,3731 18492147.93732 ],3733 "median_ns": 18541975.0,3734 "q1_ns": 18518607.275,3735 "q3_ns": 18632181.25,3736 "iqr_ns": 113573.97500000149,3737 "min_ns": 18492147.9,3738 "mean_ns": 18655568.15,3739 "sd_ns": 273738.7658386299,3740 "ops_per_s": 53.9316874281191763741 },3742 "wp34_pure_python_schnorr_verify": {3743 "reps": 7,3744 "ops_per_rep": 20,3745 "ns_per_op_samples": [3746 9274020.85,3747 9219837.5,3748 9217985.45,3749 9216875.0,3750 9212522.9,3751 9509041.65,3752 9392354.153753 ],3754 "median_ns": 9219837.5,3755 "q1_ns": 9217430.225,3756 "q3_ns": 9333187.5,3757 "iqr_ns": 115757.27500000037,3758 "min_ns": 9212522.9,3759 "mean_ns": 9291805.357142856,3760 "sd_ns": 115576.07376250606,3761 "ops_per_s": 108.4617814576453762 },3763 "wp34_pure_python_schnorr_batch_verify_per_sig": {3764 "reps": 7,3765 "ops_per_rep": 16,3766 "ns_per_op_samples": [3767 7228744.8125,3768 7255359.375,3769 7301432.25,3770 7269578.125,3771 7261411.4375,3772 7261630.25,3773 7328841.1253774 ],3775 "median_ns": 7261630.25,3776 "q1_ns": 7258385.40625,3777 "q3_ns": 7285505.1875,3778 "iqr_ns": 27119.78125,3779 "min_ns": 7228744.8125,3780 "mean_ns": 7272428.196428572,3781 "sd_ns": 32836.27024471402,3782 "ops_per_s": 137.7101237012171,3783 "batch_size": 163784 }3785 },3786 "versions": {3787 "ecdsa": null,3788 "coincurve": null3789 },3790 "pure_python_batch_negative_control_rejected": true,3791 "python_ecdsa_pkg_error": "ModuleNotFoundError(\"No module named 'ecdsa'\")",3792 "coincurve_error": "ModuleNotFoundError(\"No module named 'coincurve'\")"3793 },3794 "rust_elapsed_s": 27.28,3795 "threading": "single thread (all work on the main thread; no rayon; macOS offers no hard CPU pinning from user space - affinity tags are hints only)"3796 },3797 "elapsed_s": 50.922,3798 "label": "M3U96a (Apple M3 Ultra)",3799 "toolchain": {3800 "rustc": "rustc 1.96.0 (ac68faa20 2026-05-25) (Homebrew)",3801 "cargo": "cargo 1.96.0 (30a34c682 2026-05-25) (Homebrew)",3802 "crates": {3803 "clap": "4.6.7",3804 "k256": "0.14.0",3805 "ecdsa": "0.17.0",3806 "elliptic-curve": "0.14.3",3807 "crypto-bigint": "0.7.10",3808 "primeorder": "0.14.0",3809 "wnaf": "0.14.1",3810 "sha2": "0.11.1",3811 "rand": "0.9.5",3812 "rand_chacha": "0.9.0",3813 "secp256k1": "0.33.1",3814 "secp256k1-sys": "0.14.1",3815 "serde": "1.0.229",3816 "serde_json": "1.0.154"3817 },3818 "profile": "release (opt-level 3, lto fat, codegen-units 1)",3819 "target": "aarch64-apple-darwin"3820 },3821 "crate": "experiments/signature_benchmarks/sigbench"3822}