commonware_cryptography

Module bls12381

Source
Expand description

Distributed Key Generation (DKG), Resharing, Signatures, and Threshold Signatures over the BLS12-381 curve.

§Features

This crate has the following features:

§Benchmarks

The following benchmarks were collected on 11/6/24 on a MacBook Pro (M3 Pro, Nov 2023).

cargo bench

§DKG Recovery (Contributor)

conc=1 n=5 t=3          time:   [7.8876 µs 8.0956 µs 8.4308 µs]
conc=1 n=10 t=7         time:   [33.342 µs 33.436 µs 33.554 µs]
conc=1 n=20 t=13        time:   [121.14 µs 123.02 µs 125.79 µs]
conc=1 n=50 t=33        time:   [753.15 µs 761.27 µs 773.15 µs]
conc=1 n=100 t=67       time:   [3.0440 ms 3.5310 ms 4.3212 ms]
conc=1 n=250 t=167      time:   [19.164 ms 19.226 ms 19.295 ms]
conc=1 n=500 t=333      time:   [79.523 ms 80.812 ms 82.645 ms]

§Reshare Recovery (Contributor)

conc=1 n=5 t=3          time:   [241.59 µs 253.86 µs 263.90 µs]
conc=2 n=5 t=3          time:   [175.10 µs 178.24 µs 184.16 µs]
conc=4 n=5 t=3          time:   [134.88 µs 144.18 µs 151.21 µs]
conc=8 n=5 t=3          time:   [174.37 µs 184.76 µs 192.81 µs]
conc=1 n=10 t=7         time:   [1.4708 ms 1.5347 ms 1.6063 ms]
conc=2 n=10 t=7         time:   [827.54 µs 908.99 µs 986.19 µs]
conc=4 n=10 t=7         time:   [484.35 µs 504.77 µs 535.10 µs]
conc=8 n=10 t=7         time:   [508.29 µs 606.27 µs 699.82 µs]
conc=1 n=20 t=13        time:   [5.0725 ms 5.0793 ms 5.0857 ms]
conc=2 n=20 t=13        time:   [2.8032 ms 2.8116 ms 2.8222 ms]
conc=4 n=20 t=13        time:   [1.6856 ms 1.6892 ms 1.6938 ms]
conc=8 n=20 t=13        time:   [1.0313 ms 1.1604 ms 1.2300 ms]
conc=1 n=50 t=33        time:   [37.000 ms 37.248 ms 37.937 ms]
conc=2 n=50 t=33        time:   [19.346 ms 19.642 ms 20.312 ms]
conc=4 n=50 t=33        time:   [10.533 ms 10.567 ms 10.614 ms]
conc=8 n=50 t=33        time:   [6.3829 ms 6.4347 ms 6.4721 ms]
conc=1 n=100 t=67       time:   [174.30 ms 175.16 ms 176.05 ms]
conc=2 n=100 t=67       time:   [89.835 ms 90.204 ms 90.599 ms]
conc=4 n=100 t=67       time:   [46.736 ms 47.123 ms 47.531 ms]
conc=8 n=100 t=67       time:   [29.193 ms 29.519 ms 29.870 ms]
conc=1 n=250 t=167      time:   [1.4814 s 1.4927 s 1.5062 s]
conc=2 n=250 t=167      time:   [751.83 ms 762.08 ms 780.29 ms]
conc=4 n=250 t=167      time:   [394.18 ms 397.18 ms 400.52 ms]
conc=8 n=250 t=167      time:   [239.81 ms 245.78 ms 252.11 ms]
conc=1 n=500 t=333      time:   [6.9914 s 7.0182 s 7.0452 s]
conc=2 n=500 t=333      time:   [3.5483 s 3.5575 s 3.5670 s]
conc=4 n=500 t=333      time:   [1.8668 s 1.8851 s 1.9025 s]
conc=8 n=500 t=333      time:   [1.1176 s 1.1355 s 1.1539 s]

§Partial Signature Aggregation

n=5 t=3                 time:   [126.85 µs 128.50 µs 130.67 µs]
n=10 t=7                time:   [378.70 µs 386.74 µs 397.13 µs]
n=20 t=13               time:   [764.59 µs 777.71 µs 796.76 µs]
n=50 t=33               time:   [2.1320 ms 2.1399 ms 2.1547 ms]
n=100 t=67              time:   [5.0113 ms 5.0155 ms 5.0203 ms]
n=250 t=167             time:   [16.922 ms 16.929 ms 16.937 ms]
n=500 t=333             time:   [37.642 ms 37.676 ms 37.729 ms]

§Signature Generation (Signing)

ns_len=9 msg_len=5      time:   [232.12 µs 233.63 µs 235.42 µs]

§Signature Verification

ns_len=9 msg_len=5      time:   [980.92 µs 981.37 µs 981.88 µs]

§Signature Aggregation (Same Public Key)

msgs=10                 time:   [11.731 µs 12.516 µs 13.316 µs]
msgs=100                time:   [117.02 µs 117.16 µs 117.37 µs]
msgs=1000               time:   [1.1751 ms 1.1777 ms 1.1803 ms]
msgs=10000              time:   [11.878 ms 11.966 ms 12.068 ms]

§Aggregate Signature Verification (Same Public Key)

conc=1 msgs=10          time:   [1.9960 ms 2.0150 ms 2.0263 ms]
conc=2 msgs=10          time:   [1.3962 ms 1.3979 ms 1.3998 ms]
conc=4 msgs=10          time:   [1.1857 ms 1.1882 ms 1.1906 ms]
conc=8 msgs=10          time:   [1.1787 ms 1.1873 ms 1.2022 ms]
conc=16 msgs=10         time:   [1.3770 ms 1.3882 ms 1.4133 ms]
conc=1 msgs=100         time:   [12.687 ms 12.704 ms 12.723 ms]
conc=2 msgs=100         time:   [6.8790 ms 6.9518 ms 7.0950 ms]
conc=4 msgs=100         time:   [3.9784 ms 3.9912 ms 4.0085 ms]
conc=8 msgs=100         time:   [2.8804 ms 2.9236 ms 2.9558 ms]
conc=16 msgs=100        time:   [2.7870 ms 2.8007 ms 2.8139 ms]
conc=1 msgs=1000        time:   [119.06 ms 119.11 ms 119.17 ms]
conc=2 msgs=1000        time:   [61.170 ms 61.244 ms 61.332 ms]
conc=4 msgs=1000        time:   [31.822 ms 31.882 ms 31.948 ms]
conc=8 msgs=1000        time:   [19.635 ms 19.991 ms 20.547 ms]
conc=16 msgs=1000       time:   [16.950 ms 17.039 ms 17.126 ms]
conc=1 msgs=10000       time:   [1.1826 s 1.1905 s 1.2018 s]
conc=2 msgs=10000       time:   [603.82 ms 610.05 ms 618.48 ms]
conc=4 msgs=10000       time:   [309.44 ms 312.92 ms 318.01 ms]
conc=8 msgs=10000       time:   [187.57 ms 192.75 ms 198.37 ms]
conc=16 msgs=10000      time:   [158.16 ms 161.60 ms 165.44 ms]
conc=1 msgs=50000       time:   [5.9263 s 5.9377 s 5.9547 s]
conc=2 msgs=50000       time:   [3.0152 s 3.0266 s 3.0417 s]
conc=4 msgs=50000       time:   [1.5420 s 1.5458 s 1.5500 s]
conc=8 msgs=50000       time:   [925.32 ms 929.07 ms 933.83 ms]
conc=16 msgs=50000      time:   [769.73 ms 773.88 ms 777.97 ms]

Modules§

  • Distributed Key Generation (DKG) and Resharing protocol for the BLS12-381 curve.
  • Operations over the BLS12-381 scalar field.

Structs§

  • BLS12-381 implementation of the Scheme trait.