Gas cost is derived by taking the average timing of the same operations over different implementations and assuming a constant 51 MGas/second
. Since the execution time is machine-specific, this constant is determined based on execution times of ECRECOVER and BNPAIR precompiles on my machine and their proposed gas price (63.8 MGas/s
for ECRECOVER and 37.8 MGas/s
for BNPAIR). Following are the proposed methods to time the precompile operations:
G1 addition: Average timing of 1000 random samples.
G1 multiplication: Average timing of 1000 samples of random worst-case of double-and-add algorithm (scalar of max bit length and max hamming weight and random base points in G1)
G2 addition: Average timing of 1000 random samples
G2 multiplication: Average timing of 1000 samples of radnom worst-case of double-and-add algorithm (scalar of max bit length and max hamming weight and random base points in G2)
G1 and G2 multiexponentiations: Expected to be performed by the Peppinger algorithm, with a table prepared for discount in case of k <= 128
points in the multiexponentiation with a discount cup max_discount
for k > 128
. To avoid non-integer arithmetic call cost is calculated as k * multiplication_cost * discount / multiplier
where multiplier = 1000
, k
is a number of (scalar, point) pairs for the call, multiplication_cost
is a corresponding single multiplication call cost for G1/G2.
Pairing: Average timing of 1000 random samples (random points in G1 and G2) for different number of pairs with linear lifting.
Pairing for 1000 samples
2.09 ms
(✅ 1.00x )
Arithmetic for BW6_761::G1
Arithmetic
Addition
3.52 us
(✅ 1.00x )
Scalar Multiplication(worst-case)
1.27 ms
(✅ 1.00x )
MSM
1
1.59 ms
(✅ 1.00x )
2
1.84 ms
(✅ 1.00x )
3
2.11 ms
(✅ 1.00x )
4
2.38 ms
(✅ 1.00x )
5
2.65 ms
(✅ 1.00x )
6
2.92 ms
(✅ 1.00x )
7
3.18 ms
(✅ 1.00x )
8
3.45 ms
(✅ 1.00x )
9
3.72 ms
(✅ 1.00x )
10
3.99 ms
(✅ 1.00x )
11
4.25 ms
(✅ 1.00x )
12
4.52 ms
(✅ 1.00x )
13
4.83 ms
(✅ 1.00x )
14
5.07 ms
(✅ 1.00x )
15
5.33 ms
(✅ 1.00x )
16
5.60 ms
(✅ 1.00x )
17
5.87 ms
(✅ 1.00x )
18
6.14 ms
(✅ 1.00x )
19
6.41 ms
(✅ 1.00x )
20
6.68 ms
(✅ 1.00x )
21
7.00 ms
(✅ 1.00x )
22
7.18 ms
(✅ 1.00x )
23
7.47 ms
(✅ 1.00x )
24
7.72 ms
(✅ 1.00x )
25
8.00 ms
(✅ 1.00x )
26
8.30 ms
(✅ 1.00x )
27
8.54 ms
(✅ 1.00x )
28
8.81 ms
(✅ 1.00x )
29
9.09 ms
(✅ 1.00x )
30
9.36 ms
(✅ 1.00x )
31
9.70 ms
(✅ 1.00x )
32
8.82 ms
(✅ 1.00x )
33
9.44 ms
(✅ 1.00x )
34
9.60 ms
(✅ 1.00x )
35
9.82 ms
(✅ 1.00x )
36
9.89 ms
(✅ 1.00x )
37
10.05 ms
(✅ 1.00x )
38
10.19 ms
(✅ 1.00x )
39
10.39 ms
(✅ 1.00x )
40
10.51 ms
(✅ 1.00x )
41
10.74 ms
(✅ 1.00x )
42
10.79 ms
(✅ 1.00x )
43
10.96 ms
(✅ 1.00x )
44
11.13 ms
(✅ 1.00x )
45
11.29 ms
(✅ 1.00x )
46
11.44 ms
(✅ 1.00x )
47
11.58 ms
(✅ 1.00x )
48
11.99 ms
(✅ 1.00x )
49
12.00 ms
(✅ 1.00x )
50
12.02 ms
(✅ 1.00x )
51
12.30 ms
(✅ 1.00x )
52
12.45 ms
(✅ 1.00x )
53
12.64 ms
(✅ 1.00x )
54
12.67 ms
(✅ 1.00x )
55
12.82 ms
(✅ 1.00x )
56
12.99 ms
(✅ 1.00x )
57
13.13 ms
(✅ 1.00x )
58
13.39 ms
(✅ 1.00x )
59
13.42 ms
(✅ 1.00x )
60
13.62 ms
(✅ 1.00x )
61
13.87 ms
(✅ 1.00x )
62
14.04 ms
(✅ 1.00x )
63
14.09 ms
(✅ 1.00x )
64
14.34 ms
(✅ 1.00x )
65
14.35 ms
(✅ 1.00x )
66
14.63 ms
(✅ 1.00x )
67
14.78 ms
(✅ 1.00x )
68
14.94 ms
(✅ 1.00x )
69
15.10 ms
(✅ 1.00x )
70
15.23 ms
(✅ 1.00x )
71
15.27 ms
(✅ 1.00x )
72
15.45 ms
(✅ 1.00x )
73
15.61 ms
(✅ 1.00x )
74
15.75 ms
(✅ 1.00x )
75
15.91 ms
(✅ 1.00x )
76
16.06 ms
(✅ 1.00x )
77
16.24 ms
(✅ 1.00x )
78
16.33 ms
(✅ 1.00x )
79
16.51 ms
(✅ 1.00x )
80
16.71 ms
(✅ 1.00x )
81
16.80 ms
(✅ 1.00x )
82
17.16 ms
(✅ 1.00x )
83
17.31 ms
(✅ 1.00x )
84
17.45 ms
(✅ 1.00x )
85
17.62 ms
(✅ 1.00x )
86
17.78 ms
(✅ 1.00x )
87
17.93 ms
(✅ 1.00x )
88
18.08 ms
(✅ 1.00x )
89
18.18 ms
(✅ 1.00x )
90
18.35 ms
(✅ 1.00x )
91
18.51 ms
(✅ 1.00x )
92
18.67 ms
(✅ 1.00x )
93
18.68 ms
(✅ 1.00x )
94
19.18 ms
(✅ 1.00x )
95
19.01 ms
(✅ 1.00x )
96
19.47 ms
(✅ 1.00x )
97
19.35 ms
(✅ 1.00x )
98
19.63 ms
(✅ 1.00x )
99
19.79 ms
(✅ 1.00x )
100
19.95 ms
(✅ 1.00x )
101
20.08 ms
(✅ 1.00x )
102
20.26 ms
(✅ 1.00x )
103
20.44 ms
(✅ 1.00x )
104
20.58 ms
(✅ 1.00x )
105
20.75 ms
(✅ 1.00x )
106
20.87 ms
(✅ 1.00x )
107
20.96 ms
(✅ 1.00x )
108
21.04 ms
(✅ 1.00x )
109
21.17 ms
(✅ 1.00x )
110
21.50 ms
(✅ 1.00x )
111
21.59 ms
(✅ 1.00x )
112
21.82 ms
(✅ 1.00x )
113
21.82 ms
(✅ 1.00x )
114
22.11 ms
(✅ 1.00x )
115
22.29 ms
(✅ 1.00x )
116
22.28 ms
(✅ 1.00x )
117
22.44 ms
(✅ 1.00x )
118
22.58 ms
(✅ 1.00x )
119
22.70 ms
(✅ 1.00x )
120
22.90 ms
(✅ 1.00x )
121
23.02 ms
(✅ 1.00x )
122
23.20 ms
(✅ 1.00x )
123
23.38 ms
(✅ 1.00x )
124
23.48 ms
(✅ 1.00x )
125
23.55 ms
(✅ 1.00x )
126
23.90 ms
(✅ 1.00x )
127
24.12 ms
(✅ 1.00x )
128
24.24 ms
(✅ 1.00x )
Arithmetic for BW6_761::G2
Arithmetic
Addition
3.49 us
(✅ 1.00x )
Scalar Multiplication(worst-case)
1.26 ms
(✅ 1.00x )
MSM
1
1.57 ms
(✅ 1.00x )
2
1.83 ms
(✅ 1.00x )
3
2.11 ms
(✅ 1.00x )
4
2.37 ms
(✅ 1.00x )
5
2.64 ms
(✅ 1.00x )
6
2.90 ms
(✅ 1.00x )
7
3.18 ms
(✅ 1.00x )
8
3.44 ms
(✅ 1.00x )
9
3.72 ms
(✅ 1.00x )
10
3.98 ms
(✅ 1.00x )
11
4.26 ms
(✅ 1.00x )
12
4.50 ms
(✅ 1.00x )
13
4.78 ms
(✅ 1.00x )
14
5.05 ms
(✅ 1.00x )
15
5.33 ms
(✅ 1.00x )
16
5.60 ms
(✅ 1.00x )
17
5.86 ms
(✅ 1.00x )
18
6.14 ms
(✅ 1.00x )
19
6.39 ms
(✅ 1.00x )
20
6.67 ms
(✅ 1.00x )
21
6.94 ms
(✅ 1.00x )
22
7.21 ms
(✅ 1.00x )
23
7.54 ms
(✅ 1.00x )
24
7.81 ms
(✅ 1.00x )
25
8.01 ms
(✅ 1.00x )
26
8.33 ms
(✅ 1.00x )
27
8.58 ms
(✅ 1.00x )
28
8.88 ms
(✅ 1.00x )
29
9.08 ms
(✅ 1.00x )
30
9.36 ms
(✅ 1.00x )
31
9.63 ms
(✅ 1.00x )
32
8.74 ms
(✅ 1.00x )
33
9.43 ms
(✅ 1.00x )
34
9.57 ms
(✅ 1.00x )
35
9.83 ms
(✅ 1.00x )
36
9.98 ms
(✅ 1.00x )
37
10.15 ms
(✅ 1.00x )
38
10.28 ms
(✅ 1.00x )
39
10.43 ms
(✅ 1.00x )
40
10.58 ms
(✅ 1.00x )
41
10.72 ms
(✅ 1.00x )
42
10.89 ms
(✅ 1.00x )
43
11.04 ms
(✅ 1.00x )
44
11.20 ms
(✅ 1.00x )
45
11.36 ms
(✅ 1.00x )
46
11.50 ms
(✅ 1.00x )
47
11.66 ms
(✅ 1.00x )
48
11.82 ms
(✅ 1.00x )
49
11.90 ms
(✅ 1.00x )
50
12.08 ms
(✅ 1.00x )
51
12.24 ms
(✅ 1.00x )
52
12.47 ms
(✅ 1.00x )
53
12.64 ms
(✅ 1.00x )
54
12.79 ms
(✅ 1.00x )
55
12.85 ms
(✅ 1.00x )
56
13.00 ms
(✅ 1.00x )
57
13.26 ms
(✅ 1.00x )
58
13.41 ms
(✅ 1.00x )
59
13.46 ms
(✅ 1.00x )
60
13.62 ms
(✅ 1.00x )
61
13.87 ms
(✅ 1.00x )
62
14.02 ms
(✅ 1.00x )
63
14.15 ms
(✅ 1.00x )
64
14.30 ms
(✅ 1.00x )
65
14.40 ms
(✅ 1.00x )
66
14.62 ms
(✅ 1.00x )
67
14.76 ms
(✅ 1.00x )
68
14.86 ms
(✅ 1.00x )
69
15.00 ms
(✅ 1.00x )
70
15.18 ms
(✅ 1.00x )
71
15.28 ms
(✅ 1.00x )
72
15.43 ms
(✅ 1.00x )
73
15.64 ms
(✅ 1.00x )
74
15.80 ms
(✅ 1.00x )
75
15.94 ms
(✅ 1.00x )
76
16.08 ms
(✅ 1.00x )
77
16.24 ms
(✅ 1.00x )
78
16.41 ms
(✅ 1.00x )
79
16.57 ms
(✅ 1.00x )
80
16.82 ms
(✅ 1.00x )
81
16.85 ms
(✅ 1.00x )
82
17.07 ms
(✅ 1.00x )
83
17.25 ms
(✅ 1.00x )
84
17.40 ms
(✅ 1.00x )
85
17.41 ms
(✅ 1.00x )
86
17.77 ms
(✅ 1.00x )
87
17.90 ms
(✅ 1.00x )
88
18.08 ms
(✅ 1.00x )
89
18.25 ms
(✅ 1.00x )
90
18.39 ms
(✅ 1.00x )
91
18.54 ms
(✅ 1.00x )
92
18.71 ms
(✅ 1.00x )
93
18.87 ms
(✅ 1.00x )
94
19.01 ms
(✅ 1.00x )
95
18.99 ms
(✅ 1.00x )
96
19.13 ms
(✅ 1.00x )
97
19.29 ms
(✅ 1.00x )
98
19.44 ms
(✅ 1.00x )
99
19.58 ms
(✅ 1.00x )
100
19.79 ms
(✅ 1.00x )
101
20.11 ms
(✅ 1.00x )
102
20.05 ms
(✅ 1.00x )
103
20.22 ms
(✅ 1.00x )
104
20.36 ms
(✅ 1.00x )
105
20.57 ms
(✅ 1.00x )
106
20.69 ms
(✅ 1.00x )
107
20.81 ms
(✅ 1.00x )
108
21.03 ms
(✅ 1.00x )
109
21.28 ms
(✅ 1.00x )
110
21.31 ms
(✅ 1.00x )
111
21.48 ms
(✅ 1.00x )
112
21.63 ms
(✅ 1.00x )
113
21.74 ms
(✅ 1.00x )
114
21.86 ms
(✅ 1.00x )
115
22.06 ms
(✅ 1.00x )
116
22.24 ms
(✅ 1.00x )
117
22.35 ms
(✅ 1.00x )
118
22.51 ms
(✅ 1.00x )
119
22.64 ms
(✅ 1.00x )
120
22.84 ms
(✅ 1.00x )
121
23.21 ms
(✅ 1.00x )
122
23.38 ms
(✅ 1.00x )
123
23.49 ms
(✅ 1.00x )
124
23.44 ms
(✅ 1.00x )
125
23.60 ms
(✅ 1.00x )
126
23.75 ms
(✅ 1.00x )
127
24.15 ms
(✅ 1.00x )
128
24.07 ms
(✅ 1.00x )
Pairing
2
8.45 ms
(✅ 1.00x )
4
12.77 ms
(✅ 1.00x )
8
22.52 ms
(✅ 1.00x )
12
33.12 ms
(✅ 1.00x )
16
41.99 ms
(✅ 1.00x )
ECRECOVER for 100000 samples
47.05 us
(✅ 1.00x )
Made with criterion-table