planetarium / libplanet

Blockchain in C#/.NET for on-chain, decentralized gaming
https://docs.libplanet.io/
GNU Lesser General Public License v2.1
506 stars 141 forks source link

Pre-study of applicability of BLS for Libplanet #3603

Closed OnedgeLee closed 6 months ago

OnedgeLee commented 8 months ago

Though BLS is widely used(e.g., on Ethereum), benefits, disadvantages and difficulties for applying on the tendermint-style consensus was not carefully studied yet. Before surveying how to apply it, checking applicability would be critical for our condition.

OnedgeLee commented 8 months ago

Signature verifying benchmark result (100 sigs)

|        Method |             Mean |           Error |           StdDev |
|-------------- |-----------------:|----------------:|-----------------:|
|          Priv |  67,060,190.8 ns | 1,623,880.99 ns |  4,526,731.12 ns |
|           Pub |         499.1 ns |        15.81 ns |         45.37 ns |
|       BLSPriv |  61,013,612.8 ns | 1,208,918.10 ns |  1,917,472.22 ns |
|        BLSPub |         380.1 ns |         7.56 ns |         16.92 ns |
|   DefaultSign |  70,977,890.7 ns | 1,495,943.64 ns |  4,194,786.34 ns |
| DefaultVerify | 187,098,998.9 ns | 3,714,770.41 ns | 10,658,372.65 ns |
|    NativeSign |   6,107,599.8 ns |   121,949.11 ns |    341,958.39 ns |
|  NativeVerify |  13,881,566.3 ns |   274,699.61 ns |    579,434.72 ns |
|       BLSSign |  40,889,632.0 ns |   810,614.24 ns |  1,522,530.03 ns |
|       BLSAggr |  94,200,094.0 ns | 1,775,619.30 ns |  4,288,320.19 ns |
| BLSFastVerify |   9,801,156.3 ns |   193,886.36 ns |    339,576.33 ns |
|     BLSVerify |   8,856,990.4 ns |   176,739.45 ns |    489,744.18 ns |
| BLSVerifyEach | 183,845,007.7 ns | 3,767,018.96 ns | 10,988,571.12 ns |

Signing : ECDSA is 6.7x faster 100 Verify(pure) : BLS is 1.6x faster 100 Verify(+aggregation) : ECDSA is 7.4x faster

Signature verifying benchmark result (10 sigs)

|        Method |             Mean |          Error |         StdDev |
|-------------- |-----------------:|---------------:|---------------:|
|          Priv |  6,504,958.07 ns | 127,521.375 ns | 213,059.570 ns |
|           Pub |         52.44 ns |       1.074 ns |       1.608 ns |
|       BLSPriv |  6,049,590.58 ns | 118,371.382 ns | 121,558.694 ns |
|        BLSPub |         40.94 ns |       0.843 ns |       1.498 ns |
|   DefaultSign |  6,852,416.24 ns | 135,106.670 ns | 150,170.705 ns |
| DefaultVerify | 18,537,422.96 ns | 354,010.520 ns | 834,444.445 ns |
|    NativeSign |    554,009.38 ns |  10,976.397 ns |  21,408.620 ns |
|  NativeVerify |  1,205,005.82 ns |  23,965.614 ns |  43,822.481 ns |
|       BLSSign |  4,114,288.44 ns |  81,141.909 ns | 162,049.161 ns |
|       BLSAggr |  9,353,755.76 ns | 186,437.945 ns | 519,714.472 ns |
| BLSFastVerify |  2,002,790.47 ns |  39,795.869 ns |  92,232.978 ns |
|     BLSVerify |  1,007,676.17 ns |  20,054.553 ns |  48,049.428 ns |
| BLSEachVerify | 16,269,376.59 ns | 322,903.157 ns | 674,019.134 ns |

Signing : ECDSA is 7.4x faster 100 Verify(pure) : BLS is 1.2x faster 100 Verify(+aggregation) : ECDSA is 8.6x faster

riemannulus commented 6 months ago

https://github.com/planetarium/libplanet/issues/3594#issuecomment-2008572918 Close.