Skip to content

End user implementation of cryptographic primitives from ark-substrate

License

Notifications You must be signed in to change notification settings

duniter/arkworks-substrate

 
 

Repository files navigation

Arkworks Sustrate Extensions

Specializations of the crates defined in arkworks-ext ready to be used in the Substrate runtime.

Benchmark results

extrinsic arkworkrs(µs)1 ark-substrate(µs)2 speedup3 dummy(µs)4 native(µs)5
groth16_verification (bls12_381) 23335.84 3569.35 ${\color{green}\bf 6.54 \boldsymbol{\times}}$ 190.80 3440
bls12_381_pairing 9092.61 1390.80 ${\color{green}\bf 6.54 \boldsymbol{\times}}$ 24.64 1270
bls12_381_msm_g1, 10 arguments 6921.99 949.58 ${\color{green}\bf 7.29 \boldsymbol{\times}}$ 50.07 568.89
bls12_381_msm_g1, 1000 arguments 194969.80 30158.23 ${\color{green}\bf 6.46 \boldsymbol{\times}}$ 2169.47 10750
bls12_381_msm_g2, 10 arguments 21513.87 2870.33 ${\color{green}\bf 7.57 \boldsymbol{\times}}$ 50.06 1600
bls12_381_msm_g2, 1000 arguments 621769.22 100801.74 ${\color{green}\bf 7.50 \boldsymbol{\times}}$ 3640.63 31900
bls12_381_mul_projective_g1 486.34 75.01 ${\color{green}\bf 6.48 \boldsymbol{\times}}$ 11.94 45.59
bls12_381_mul_affine_g1 420.01 79.26 ${\color{green}\bf 5.30 \boldsymbol{\times}}$ 11.11 38.74
bls12_381_mul_projective_g2 1498.84 210.50 ${\color{green}\bf 7.12 \boldsymbol{\times}}$ 14.63 146.93
bls12_381_mul_affine_g2 1234.92 214.00 ${\color{green}\bf 5.77 \boldsymbol{\times}}$ 13.17 123.68
bls12_377_pairing 8904.20 1449.52 ${\color{green}\bf 6.14 \boldsymbol{\times}}$ 25.88 1470
bls12_377_msm_g1, 10 arguments 6592.47 902.50 ${\color{green}\bf 7.30 \boldsymbol{\times}}$ 29.20 582.19
bls12_377_msm_g1, 1000 arguments 191793.87 28828.95 ${\color{green}\bf 6.65 \boldsymbol{\times}}$ 1307.62 11000
bls12_377_msm_g2, 10 arguments 22509.51 3251.84 ${\color{green}\bf 6.92 \boldsymbol{\times}}$ 35.06 1860
bls12_377_msm_g2, 1000 arguments 632339.00 94521.78 ${\color{green}\bf 6.69 \boldsymbol{\times}}$ 2556.48 36020
bls12_377_mul_projective_g1 424.21 65.68 ${\color{green}\bf 6.46 \boldsymbol{\times}}$ 11.76 46.54
bls12_377_mul_affine_g1 363.85 65.68 ${\color{green}\bf 5.54 \boldsymbol{\times}}$ 10.50 39.81
bls12_377_mul_projective_g2 1339.39 212.20 ${\color{green}\bf 6.31 \boldsymbol{\times}}$ 14.56 167.91
bls12_377_mul_affine_g2 1122.08 208.74 ${\color{green}\bf 5.38 \boldsymbol{\times}}$ 13.08 141.49
bw6_761_pairing 52065.18 6791.27 ${\color{green}\bf 7.67 \boldsymbol{\times}}$ 34.70 6780
bw6_761_msm_g1, 10 arguments 47050.21 5559.53 ${\color{green}\bf 8.46 \boldsymbol{\times}}$ 67.79 2760
bw6_761_msm_g1, 1000 arguments 1167536.06 143517.21 ${\color{green}\bf 8.14 \boldsymbol{\times}}$ 4630.95 56680
bw6_761_msm_g2, 10 arguments 41055.89 4874.46 ${\color{green}\bf 8.42 \boldsymbol{\times}}$ 58.37 2960
bw6_761_msm_g2, 1000 arguments 1209593.25 143437.77 ${\color{green}\bf 8.43 \boldsymbol{\times}}$ 4345.36 74550
bw6_761_mul_projective_g1 1678.86 223.57 ${\color{green}\bf 7.51 \boldsymbol{\times}}$ 27.54 221.73
bw6_761_mul_affine_g1 1387.87 222.05 ${\color{green}\bf 6.25 \boldsymbol{\times}}$ 27.55 183.16
bw6_761_mul_projective_g2 1919.98 308.60 ${\color{green}\bf 6.22 \boldsymbol{\times}}$ 26.99 221.75
bw6_761_mul_affine_g2 1388.21 222.47 ${\color{green}\bf 6.24 \boldsymbol{\times}}$ 21.90 184.79
ed_on_bls12_381_bandersnatch_msm_sw, 10 arguments 3616.81 557.96 ${\color{green}\bf 6.48 \boldsymbol{\times}}$ 21.43 457.93
ed_on_bls12_381_bandersnatch_msm_sw, 1000 arguments 94473.54 16254.32 ${\color{green}\bf 5.81 \boldsymbol{\times}}$ 982.29 7460
ed_on_bls12_381_bandersnatch_mul_projective_sw 235.38 40.70 ${\color{green}\bf 5.78 \boldsymbol{\times}}$ 9.03 33.12
ed_on_bls12_381_bandersnatch_mul_affine_sw 204.04 41.66 ${\color{green}\bf 4.90 \boldsymbol{\times}}$ 8.78 29.50
ed_on_bls12_381_bandersnatch_msm_te, 10 arguments 5427.77 744.74 ${\color{green}\bf 7.29 \boldsymbol{\times}}$ 24.05 538.16
ed_on_bls12_381_bandersnatch_msm_te, 1000 arguments 106610.20 16690.71 ${\color{green}\bf 6.39 \boldsymbol{\times}}$ 1195.35 7460
ed_on_bls12_381_bandersnatch_mul_projective_te 183.29 34.63 ${\color{green}\bf 5.29 \boldsymbol{\times}}$ 9.55 24.83
ed_on_bls12_381_bandersnatch_mul_affine_te 181.84 33.99 ${\color{green}\bf 5.35 \boldsymbol{\times}}$ 9.50 29.47
ed_on_bls12_377_msm, 10 arguments 5304.03 700.51 ${\color{green}\bf 7.57 \boldsymbol{\times}}$ 24.02 523.27
ed_on_bls12_377_msm, 1000 arguments 105563.53 15757.62 ${\color{green}\bf 6.70 \boldsymbol{\times}}$ 1200.45 7370
ed_on_bls12_377_mul_projective 179.54 32.72 ${\color{green}\bf 5.49 \boldsymbol{\times}}$ 9.72 24.07
ed_on_bls12_377_mul_affine 177.53 33.24 ${\color{green}\bf 5.34 \boldsymbol{\times}}$ 9.76 23.90

Usage

Refer to ark-substrate-examples for some insights.

Footnotes

  1. implemented in a Substrate pallet with arkworks library.

  2. implemented in a Substrate pallet with ark-substrate library.

  3. speedup by using ark-substrate with host calls, compared to native speed.

  4. These extrinsics just receive the arguments, deserialize them without using them and then take a generator or zero element of the expected return group, serialize it and return it. Calling a host call through an extrinsic which does nothing has been benchmarked with 3.98µs.

  5. native execution, computed by this repo.

About

End user implementation of cryptographic primitives from ark-substrate

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%