Commit graph

87 commits

Author SHA1 Message Date
MariusVanDerWijden
c6ce2185ab core/vm: enable modexp repricing on cancun 2025-09-16 17:14:34 +02:00
Felix Lange
6a7f64e760
core/vm: use go-bigmodexpfix for modexp (#32576)
Some checks are pending
/ Windows Build (push) Waiting to run
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Docker Image (push) Waiting to run
This changes the modexp precompile to use a fork of math/big with some
patches by @GottfriedHerold to improve worst-case performance.
2025-09-16 17:08:04 +02:00
Zach Brown
b708feb9c3
core/vm: fix comment and remove unused divisor in osakaModexpGas (#32553)
The `divisor` const is not needed in the gas cost calculation in `osakaModexpGas`.
2025-09-10 21:44:18 +08:00
Marius van der Wijden
dd7fe1be4b
core/vm: fix modexp gas calculation (#32568)
fixes a bug in the gas calculation found by oss-fuzz
2025-09-10 21:37:49 +08:00
Marius van der Wijden
b381804eb1
core/vm: switch modexp gas computation to uint64 (#32527)
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
supersedes https://github.com/ethereum/go-ethereum/pull/32508/files
and builts on top of https://github.com/ethereum/go-ethereum/pull/32184

looks like a ~60% decrease in allocations / op and ~20% speed increase
(very variable, between 2-200%)

```
goos: linux
goarch: amd64
pkg: github.com/ethereum/go-ethereum/core/vm
cpu: Intel(R) Core(TM) Ultra 7 155U
                                                             │ /tmp/old.txt  │             /tmp/new.txt             │
                                                             │    sec/op     │    sec/op     vs base                │
PrecompiledModExp/eip_example1-Gas=13056-14                     23.70µ ±  3%   22.31µ ±  6%   -5.89% (p=0.004 n=10)
PrecompiledModExp/eip_example2-Gas=13056-14                     566.2n ± 12%   267.0n ±  3%  -52.85% (p=0.000 n=10)
PrecompiledModExp/nagydani-1-square-Gas=204-14                 1285.5n ±  3%   995.8n ±  3%  -22.54% (p=0.000 n=10)
PrecompiledModExp/nagydani-1-qube-Gas=204-14                    1.757µ ± 30%   1.410µ ± 16%  -19.75% (p=0.000 n=10)
PrecompiledModExp/nagydani-1-pow0x10001-Gas=3276-14             8.897µ ± 14%   6.664µ ±  2%  -25.10% (p=0.000 n=10)
PrecompiledModExp/nagydani-2-square-Gas=665-14                  2.107µ ±  8%   1.470µ ± 11%  -30.24% (p=0.000 n=10)
PrecompiledModExp/nagydani-2-qube-Gas=665-14                    3.142µ ±  3%   2.289µ ±  7%  -27.16% (p=0.000 n=10)
PrecompiledModExp/nagydani-2-pow0x10001-Gas=10649-14            14.76µ ±  3%   13.59µ ±  4%   -7.94% (p=0.000 n=10)
PrecompiledModExp/nagydani-3-square-Gas=1894-14                 3.984µ ±  3%   3.211µ ±  3%  -19.42% (p=0.000 n=10)
PrecompiledModExp/nagydani-3-qube-Gas=1894-14                   7.572µ ± 12%   6.153µ ±  3%  -18.74% (p=0.000 n=10)
PrecompiledModExp/nagydani-3-pow0x10001-Gas=30310-14            39.07µ ±  7%   37.76µ ±  5%        ~ (p=0.123 n=10)
PrecompiledModExp/nagydani-4-square-Gas=5580-14                 9.613µ ±  2%   9.221µ ±  2%   -4.08% (p=0.003 n=10)
PrecompiledModExp/nagydani-4-qube-Gas=5580-14                   21.66µ ±  5%   21.48µ ± 17%        ~ (p=0.971 n=10)
PrecompiledModExp/nagydani-4-pow0x10001-Gas=89292-14            120.7µ ±  8%   116.0µ ±  3%   -3.93% (p=0.043 n=10)
PrecompiledModExp/nagydani-5-square-Gas=17868-14                23.93µ ±  3%   24.82µ ±  3%   +3.73% (p=0.000 n=10)
PrecompiledModExp/nagydani-5-qube-Gas=17868-14                  54.98µ ±  1%   58.08µ ±  4%   +5.64% (p=0.000 n=10)
PrecompiledModExp/nagydani-5-pow0x10001-Gas=285900-14           340.3µ ±  2%   341.2µ ±  3%        ~ (p=0.529 n=10)
PrecompiledModExpEip2565/eip_example1-Gas=1360-14               21.99µ ±  3%   21.24µ ±  2%   -3.43% (p=0.000 n=10)
PrecompiledModExpEip2565/eip_example2-Gas=1360-14               568.1n ± 12%   221.1n ±  2%  -61.07% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-1-square-Gas=200-14          1272.0n ±  2%   822.3n ± 13%  -35.35% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-1-qube-Gas=200-14             1.633µ ±  3%   1.397µ ± 21%  -14.45% (p=0.023 n=10)
PrecompiledModExpEip2565/nagydani-1-pow0x10001-Gas=341-14       7.276µ ±  3%   6.703µ ±  5%   -7.88% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-2-square-Gas=200-14           1.959µ ±  3%   1.618µ ±  2%  -17.43% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-2-qube-Gas=200-14             2.959µ ±  6%   2.611µ ±  5%  -11.78% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-2-pow0x10001-Gas=1365-14      14.99µ ±  5%   13.76µ ±  4%   -8.17% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-3-square-Gas=341-14           3.870µ ±  4%   3.521µ ±  2%   -9.04% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-3-qube-Gas=341-14             6.871µ ±  3%   6.454µ ±  3%   -6.07% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-3-pow0x10001-Gas=5461-14      40.18µ ±  7%   35.55µ ±  3%  -11.52% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-4-square-Gas=1365-14          9.694µ ±  3%   8.427µ ±  3%  -13.08% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-4-qube-Gas=1365-14            21.45µ ±  2%   19.48µ ±  7%   -9.18% (p=0.001 n=10)
PrecompiledModExpEip2565/nagydani-4-pow0x10001-Gas=21845-14     118.1µ ±  2%   113.7µ ±  2%   -3.76% (p=0.003 n=10)
PrecompiledModExpEip2565/nagydani-5-square-Gas=5461-14          25.80µ ±  5%   24.05µ ±  3%   -6.76% (p=0.001 n=10)
PrecompiledModExpEip2565/nagydani-5-qube-Gas=5461-14            57.28µ ±  8%   55.76µ ±  6%        ~ (p=0.796 n=10)
PrecompiledModExpEip2565/nagydani-5-pow0x10001-Gas=87381-14     335.2µ ±  2%   346.2µ ±  3%   +3.28% (p=0.000 n=10)
PrecompiledModExpEip2565/marius-1-even-Gas=2057-14              56.24µ ±  3%   55.53µ ±  1%        ~ (p=0.280 n=10)
PrecompiledModExpEip2565/guido-1-even-Gas=2298-14               38.74µ ±  3%   38.63µ ±  6%        ~ (p=0.631 n=10)
PrecompiledModExpEip2565/guido-2-even-Gas=2300-14               61.94µ ±  2%   61.38µ ± 11%        ~ (p=0.529 n=10)
PrecompiledModExpEip2565/guido-3-even-Gas=5400-14               20.27µ ±  2%   20.19µ ±  5%        ~ (p=0.853 n=10)
PrecompiledModExpEip2565/guido-4-even-Gas=1026-14               805.8n ±  3%   359.1n ±  2%  -55.44% (p=0.000 n=10)
PrecompiledModExpEip2565/marcin-1-base-heavy-Gas=200-14         4.717µ ±  5%   3.925µ ±  5%  -16.79% (p=0.000 n=10)
PrecompiledModExpEip2565/marcin-1-exp-heavy-Gas=215-14          15.51µ ±  3%   14.77µ ±  2%   -4.76% (p=0.000 n=10)
PrecompiledModExpEip2565/marcin-1-balanced-Gas=200-14           10.42µ ±  2%   10.01µ ±  5%   -3.94% (p=0.011 n=10)
PrecompiledModExpEip2565/marcin-2-base-heavy-Gas=867-14         15.99µ ±  4%   15.65µ ±  4%        ~ (p=0.190 n=10)
PrecompiledModExpEip2565/marcin-2-exp-heavy-Gas=852-14          24.45µ ±  2%   23.36µ ±  3%   -4.47% (p=0.002 n=10)
PrecompiledModExpEip2565/marcin-2-balanced-Gas=996-14           34.59µ ± 29%   32.90µ ±  1%   -4.90% (p=0.001 n=10)
PrecompiledModExpEip2565/marcin-3-base-heavy-Gas=677-14         12.45µ ±  2%   12.00µ ± 16%        ~ (p=0.105 n=10)
PrecompiledModExpEip2565/marcin-3-exp-heavy-Gas=765-14          16.21µ ±  3%   15.58µ ±  6%        ~ (p=0.063 n=10)
PrecompiledModExpEip2565/marcin-3-balanced-Gas=1360-14          23.03µ ±  3%   21.34µ ±  2%   -7.35% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-8-exp-648-Gas=215-14               17.44µ ±  3%   16.03µ ±  1%   -8.07% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-8-exp-896-Gas=298-14               21.00µ ±  5%   19.52µ ±  2%   -7.04% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-32-exp-32-Gas=200-14               9.549µ ±  2%   9.322µ ±  2%   -2.38% (p=0.005 n=10)
PrecompiledModExpEip2565/mod-32-exp-36-Gas=200-14               10.74µ ±  1%   10.31µ ±  2%   -4.06% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-32-exp-40-Gas=208-14               11.95µ ±  2%   11.43µ ±  2%   -4.33% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-32-exp-64-Gas=336-14               18.77µ ±  3%   18.10µ ±  2%   -3.54% (p=0.002 n=10)
PrecompiledModExpEip2565/mod-32-exp-65-Gas=341-14               13.58µ ±  1%   13.47µ ±  1%        ~ (p=0.280 n=10)
PrecompiledModExpEip2565/mod-32-exp-128-Gas=677-14              13.61µ ±  3%   13.36µ ±  1%   -1.83% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-256-exp-2-Gas=341-14               6.984µ ±  2%   6.053µ ±  3%  -13.33% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-264-exp-2-Gas=363-14               7.126µ ±  5%   6.344µ ±  7%  -10.97% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-1024-exp-2-Gas=5461-14             52.41µ ± 22%   49.85µ ±  4%        ~ (p=0.089 n=10)
PrecompiledModExpEip2565/pawel-1-exp-heavy-Gas=298-14           20.93µ ± 32%   20.15µ ±  2%   -3.69% (p=0.001 n=10)
PrecompiledModExpEip2565/pawel-2-exp-heavy-Gas=425-14           19.32µ ± 17%   14.46µ ±  4%  -25.16% (p=0.000 n=10)
PrecompiledModExpEip2565/pawel-3-exp-heavy-Gas=501-14           20.22µ ± 15%   14.30µ ±  3%  -29.27% (p=0.000 n=10)
PrecompiledModExpEip2565/pawel-4-exp-heavy-Gas=506-14           14.33µ ±  3%   13.93µ ±  2%   -2.80% (p=0.001 n=10)
PrecompiledModExpEip2565/mod_vul_pawel_3_exp_8-Gas=200-14       24.30µ ± 16%   16.94µ ± 18%  -30.30% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-1-square-Gas=500-14          1477.5n ±  5%   872.8n ±  9%  -40.93% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-1-qube-Gas=500-14             2.099µ ±  8%   1.131µ ±  2%  -46.13% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-1-pow0x10001-Gas=2048-14      8.920µ ±  4%   6.356µ ±  2%  -28.74% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-2-square-Gas=512-14           2.227µ ±  4%   1.396µ ±  2%  -37.34% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-2-qube-Gas=512-14             3.507µ ±  8%   2.421µ ± 13%  -30.97% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-2-pow0x10001-Gas=8192-14      17.53µ ±  4%   14.17µ ±  5%  -19.20% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-3-square-Gas=2048-14          4.801µ ± 12%   3.498µ ±  3%  -27.15% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-3-qube-Gas=2048-14            8.284µ ±  4%   6.536µ ±  2%  -21.10% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-3-pow0x10001-Gas=32768-14     44.82µ ±  6%   37.01µ ± 24%  -17.43% (p=0.007 n=10)
PrecompiledModExpEip7883/nagydani-4-square-Gas=8192-14         11.742µ ±  4%   9.000µ ±  4%  -23.35% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-4-qube-Gas=8192-14            27.49µ ± 10%   21.34µ ±  5%  -22.35% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-4-pow0x10001-Gas=131072-14    141.4µ ± 11%   113.4µ ±  3%  -19.80% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-5-square-Gas=32768-14         31.46µ ±  5%   23.53µ ±  1%  -25.21% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-5-qube-Gas=32768-14           78.12µ ± 20%   53.74µ ±  4%  -31.20% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-5-pow0x10001-Gas=524288-14    446.3µ ±  6%   338.5µ ±  2%  -24.15% (p=0.000 n=10)
PrecompiledModExpEip7883/marius-1-even-Gas=45296-14             71.25µ ±  4%   55.33µ ±  1%  -22.34% (p=0.000 n=10)
PrecompiledModExpEip7883/guido-1-even-Gas=51136-14              51.06µ ± 14%   38.19µ ±  3%  -25.20% (p=0.000 n=10)
PrecompiledModExpEip7883/guido-2-even-Gas=51152-14              86.12µ ± 20%   60.65µ ±  2%  -29.57% (p=0.000 n=10)
PrecompiledModExpEip7883/guido-3-even-Gas=32400-14              27.53µ ± 32%   20.37µ ±  2%  -26.02% (p=0.000 n=10)
PrecompiledModExpEip7883/guido-4-even-Gas=94448-14              950.4n ±  5%   354.8n ± 28%  -62.67% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-1-base-heavy-Gas=1152-14        5.619µ ±  7%   4.440µ ±  5%  -20.98% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-1-exp-heavy-Gas=16624-14        19.03µ ± 19%   15.67µ ± 22%  -17.63% (p=0.003 n=10)
PrecompiledModExpEip7883/marcin-1-balanced-Gas=1200-14          13.83µ ± 19%   10.91µ ± 10%  -21.16% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-2-base-heavy-Gas=5202-14        23.69µ ±  9%   17.79µ ± 13%  -24.91% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-2-exp-heavy-Gas=16368-14        38.86µ ± 12%   25.69µ ± 14%  -33.89% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-2-balanced-Gas=5978-14          51.47µ ± 28%   33.67µ ± 15%  -34.58% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-3-base-heavy-Gas=2032-14        16.69µ ± 17%   12.08µ ±  2%  -27.60% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-3-exp-heavy-Gas=4080-14         19.75µ ±  5%   16.13µ ± 11%  -18.36% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-3-balanced-Gas=4080-14          28.66µ ±  9%   22.47µ ±  4%  -21.59% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-8-exp-648-Gas=16624-14             20.78µ ± 14%   16.38µ ±  2%  -21.17% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-8-exp-896-Gas=24560-14             24.35µ ± 10%   19.62µ ±  1%  -19.43% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-32-exp-32-Gas=500-14              10.312µ ±  4%   9.293µ ±  3%   -9.88% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-32-exp-36-Gas=560-14               11.69µ ± 18%   10.37µ ±  3%  -11.27% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-32-exp-40-Gas=624-14               14.17µ ± 24%   11.60µ ±  6%  -18.13% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-32-exp-64-Gas=1008-14              22.03µ ±  8%   18.22µ ±  2%  -17.28% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-32-exp-65-Gas=1024-14              16.48µ ± 11%   13.34µ ±  1%  -19.04% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-32-exp-128-Gas=2032-14             17.03µ ±  9%   13.44µ ±  1%  -21.03% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-256-exp-2-Gas=2048-14              8.123µ ± 14%   5.962µ ±  3%  -26.61% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-264-exp-2-Gas=2178-14              8.155µ ± 28%   6.799µ ±  4%  -16.64% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-1024-exp-2-Gas=32768-14            62.32µ ±  4%   49.82µ ±  1%  -20.06% (p=0.000 n=10)
PrecompiledModExpEip7883/pawel-1-exp-heavy-Gas=24560-14         26.90µ ±  7%   20.30µ ±  2%  -24.55% (p=0.000 n=10)
PrecompiledModExpEip7883/pawel-2-exp-heavy-Gas=6128-14          17.67µ ±  2%   15.61µ ± 11%  -11.66% (p=0.001 n=10)
PrecompiledModExpEip7883/pawel-3-exp-heavy-Gas=2672-14          17.50µ ±  3%   14.88µ ±  8%  -14.98% (p=0.002 n=10)
PrecompiledModExpEip7883/pawel-4-exp-heavy-Gas=1520-14          17.32µ ±  2%   14.14µ ±  5%  -18.39% (p=0.000 n=10)
PrecompiledModExpEip7883/mod_vul_pawel_3_exp_8-Gas=1008-14      21.68µ ± 24%   17.07µ ±  3%  -21.25% (p=0.000 n=10)
geomean                                                         14.64µ         12.02µ        -17.89%

                                                             │ /tmp/old.txt │             /tmp/new.txt             │
                                                             │    gas/op    │   gas/op     vs base                 │
PrecompiledModExp/eip_example1-Gas=13056-14                     13.06k ± 0%   13.06k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExp/eip_example2-Gas=13056-14                     13.06k ± 0%   13.06k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExp/nagydani-1-square-Gas=204-14                   204.0 ± 0%    204.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExp/nagydani-1-qube-Gas=204-14                     204.0 ± 0%    204.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExp/nagydani-1-pow0x10001-Gas=3276-14             3.276k ± 0%   3.276k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExp/nagydani-2-square-Gas=665-14                   665.0 ± 0%    665.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExp/nagydani-2-qube-Gas=665-14                     665.0 ± 0%    665.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExp/nagydani-2-pow0x10001-Gas=10649-14            10.65k ± 0%   10.65k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExp/nagydani-3-square-Gas=1894-14                 1.894k ± 0%   1.894k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExp/nagydani-3-qube-Gas=1894-14                   1.894k ± 0%   1.894k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExp/nagydani-3-pow0x10001-Gas=30310-14            30.31k ± 0%   30.31k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExp/nagydani-4-square-Gas=5580-14                 5.580k ± 0%   5.580k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExp/nagydani-4-qube-Gas=5580-14                   5.580k ± 0%   5.580k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExp/nagydani-4-pow0x10001-Gas=89292-14            89.29k ± 0%   89.29k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExp/nagydani-5-square-Gas=17868-14                17.87k ± 0%   17.87k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExp/nagydani-5-qube-Gas=17868-14                  17.87k ± 0%   17.87k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExp/nagydani-5-pow0x10001-Gas=285900-14           285.9k ± 0%   285.9k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/eip_example1-Gas=1360-14               1.360k ± 0%   1.360k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/eip_example2-Gas=1360-14               1.360k ± 0%   1.360k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/nagydani-1-square-Gas=200-14            200.0 ± 0%    200.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/nagydani-1-qube-Gas=200-14              200.0 ± 0%    200.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/nagydani-1-pow0x10001-Gas=341-14        341.0 ± 0%    341.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/nagydani-2-square-Gas=200-14            200.0 ± 0%    200.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/nagydani-2-qube-Gas=200-14              200.0 ± 0%    200.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/nagydani-2-pow0x10001-Gas=1365-14      1.365k ± 0%   1.365k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/nagydani-3-square-Gas=341-14            341.0 ± 0%    341.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/nagydani-3-qube-Gas=341-14              341.0 ± 0%    341.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/nagydani-3-pow0x10001-Gas=5461-14      5.461k ± 0%   5.461k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/nagydani-4-square-Gas=1365-14          1.365k ± 0%   1.365k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/nagydani-4-qube-Gas=1365-14            1.365k ± 0%   1.365k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/nagydani-4-pow0x10001-Gas=21845-14     21.84k ± 0%   21.84k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/nagydani-5-square-Gas=5461-14          5.461k ± 0%   5.461k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/nagydani-5-qube-Gas=5461-14            5.461k ± 0%   5.461k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/nagydani-5-pow0x10001-Gas=87381-14     87.38k ± 0%   87.38k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/marius-1-even-Gas=2057-14              2.057k ± 0%   2.057k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/guido-1-even-Gas=2298-14               2.298k ± 0%   2.298k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/guido-2-even-Gas=2300-14               2.300k ± 0%   2.300k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/guido-3-even-Gas=5400-14               5.400k ± 0%   5.400k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/guido-4-even-Gas=1026-14               1.026k ± 0%   1.026k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/marcin-1-base-heavy-Gas=200-14          200.0 ± 0%    200.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/marcin-1-exp-heavy-Gas=215-14           215.0 ± 0%    215.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/marcin-1-balanced-Gas=200-14            200.0 ± 0%    200.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/marcin-2-base-heavy-Gas=867-14          867.0 ± 0%    867.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/marcin-2-exp-heavy-Gas=852-14           852.0 ± 0%    852.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/marcin-2-balanced-Gas=996-14            996.0 ± 0%    996.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/marcin-3-base-heavy-Gas=677-14          677.0 ± 0%    677.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/marcin-3-exp-heavy-Gas=765-14           765.0 ± 0%    765.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/marcin-3-balanced-Gas=1360-14          1.360k ± 0%   1.360k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/mod-8-exp-648-Gas=215-14                215.0 ± 0%    215.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/mod-8-exp-896-Gas=298-14                298.0 ± 0%    298.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/mod-32-exp-32-Gas=200-14                200.0 ± 0%    200.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/mod-32-exp-36-Gas=200-14                200.0 ± 0%    200.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/mod-32-exp-40-Gas=208-14                208.0 ± 0%    208.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/mod-32-exp-64-Gas=336-14                336.0 ± 0%    336.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/mod-32-exp-65-Gas=341-14                341.0 ± 0%    341.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/mod-32-exp-128-Gas=677-14               677.0 ± 0%    677.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/mod-256-exp-2-Gas=341-14                341.0 ± 0%    341.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/mod-264-exp-2-Gas=363-14                363.0 ± 0%    363.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/mod-1024-exp-2-Gas=5461-14             5.461k ± 0%   5.461k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/pawel-1-exp-heavy-Gas=298-14            298.0 ± 0%    298.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/pawel-2-exp-heavy-Gas=425-14            425.0 ± 0%    425.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/pawel-3-exp-heavy-Gas=501-14            501.0 ± 0%    501.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/pawel-4-exp-heavy-Gas=506-14            506.0 ± 0%    506.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip2565/mod_vul_pawel_3_exp_8-Gas=200-14        200.0 ± 0%    200.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/nagydani-1-square-Gas=500-14            500.0 ± 0%    500.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/nagydani-1-qube-Gas=500-14              500.0 ± 0%    500.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/nagydani-1-pow0x10001-Gas=2048-14      2.048k ± 0%   2.048k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/nagydani-2-square-Gas=512-14            512.0 ± 0%    512.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/nagydani-2-qube-Gas=512-14              512.0 ± 0%    512.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/nagydani-2-pow0x10001-Gas=8192-14      8.192k ± 0%   8.192k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/nagydani-3-square-Gas=2048-14          2.048k ± 0%   2.048k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/nagydani-3-qube-Gas=2048-14            2.048k ± 0%   2.048k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/nagydani-3-pow0x10001-Gas=32768-14     32.77k ± 0%   32.77k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/nagydani-4-square-Gas=8192-14          8.192k ± 0%   8.192k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/nagydani-4-qube-Gas=8192-14            8.192k ± 0%   8.192k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/nagydani-4-pow0x10001-Gas=131072-14    131.1k ± 0%   131.1k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/nagydani-5-square-Gas=32768-14         32.77k ± 0%   32.77k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/nagydani-5-qube-Gas=32768-14           32.77k ± 0%   32.77k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/nagydani-5-pow0x10001-Gas=524288-14    524.3k ± 0%   524.3k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/marius-1-even-Gas=45296-14             45.30k ± 0%   45.30k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/guido-1-even-Gas=51136-14              51.14k ± 0%   51.14k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/guido-2-even-Gas=51152-14              51.15k ± 0%   51.15k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/guido-3-even-Gas=32400-14              32.40k ± 0%   32.40k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/guido-4-even-Gas=94448-14              94.45k ± 0%   94.45k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/marcin-1-base-heavy-Gas=1152-14        1.152k ± 0%   1.152k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/marcin-1-exp-heavy-Gas=16624-14        16.62k ± 0%   16.62k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/marcin-1-balanced-Gas=1200-14          1.200k ± 0%   1.200k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/marcin-2-base-heavy-Gas=5202-14        5.202k ± 0%   5.202k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/marcin-2-exp-heavy-Gas=16368-14        16.37k ± 0%   16.37k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/marcin-2-balanced-Gas=5978-14          5.978k ± 0%   5.978k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/marcin-3-base-heavy-Gas=2032-14        2.032k ± 0%   2.032k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/marcin-3-exp-heavy-Gas=4080-14         4.080k ± 0%   4.080k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/marcin-3-balanced-Gas=4080-14          4.080k ± 0%   4.080k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/mod-8-exp-648-Gas=16624-14             16.62k ± 0%   16.62k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/mod-8-exp-896-Gas=24560-14             24.56k ± 0%   24.56k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/mod-32-exp-32-Gas=500-14                500.0 ± 0%    500.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/mod-32-exp-36-Gas=560-14                560.0 ± 0%    560.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/mod-32-exp-40-Gas=624-14                624.0 ± 0%    624.0 ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/mod-32-exp-64-Gas=1008-14              1.008k ± 0%   1.008k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/mod-32-exp-65-Gas=1024-14              1.024k ± 0%   1.024k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/mod-32-exp-128-Gas=2032-14             2.032k ± 0%   2.032k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/mod-256-exp-2-Gas=2048-14              2.048k ± 0%   2.048k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/mod-264-exp-2-Gas=2178-14              2.178k ± 0%   2.178k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/mod-1024-exp-2-Gas=32768-14            32.77k ± 0%   32.77k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/pawel-1-exp-heavy-Gas=24560-14         24.56k ± 0%   24.56k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/pawel-2-exp-heavy-Gas=6128-14          6.128k ± 0%   6.128k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/pawel-3-exp-heavy-Gas=2672-14          2.672k ± 0%   2.672k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/pawel-4-exp-heavy-Gas=1520-14          1.520k ± 0%   1.520k ± 0%       ~ (p=1.000 n=10) ¹
PrecompiledModExpEip7883/mod_vul_pawel_3_exp_8-Gas=1008-14      1.008k ± 0%   1.008k ± 0%       ~ (p=1.000 n=10) ¹
geomean                                                         2.342k        2.342k       +0.00%
¹ all samples are equal

                                                             │ /tmp/old.txt │              /tmp/new.txt              │
                                                             │    mgas/s    │    mgas/s      vs base                 │
PrecompiledModExp/eip_example1-Gas=13056-14                     550.8 ±  4%     585.3 ±  5%    +6.26% (p=0.004 n=10)
PrecompiledModExp/eip_example2-Gas=13056-14                    23.06k ± 11%    48.91k ±  3%  +112.09% (p=0.000 n=10)
PrecompiledModExp/nagydani-1-square-Gas=204-14                  158.7 ±  3%     204.8 ±  3%   +29.08% (p=0.000 n=10)
PrecompiledModExp/nagydani-1-qube-Gas=204-14                    116.3 ± 23%     144.6 ± 14%   +24.33% (p=0.000 n=10)
PrecompiledModExp/nagydani-1-pow0x10001-Gas=3276-14             368.3 ± 16%     491.5 ±  2%   +33.45% (p=0.000 n=10)
PrecompiledModExp/nagydani-2-square-Gas=665-14                  315.7 ±  7%     452.9 ± 10%   +43.47% (p=0.000 n=10)
PrecompiledModExp/nagydani-2-qube-Gas=665-14                    211.6 ±  3%     290.6 ±  7%   +37.28% (p=0.000 n=10)
PrecompiledModExp/nagydani-2-pow0x10001-Gas=10649-14            721.6 ±  3%     783.8 ±  4%    +8.62% (p=0.000 n=10)
PrecompiledModExp/nagydani-3-square-Gas=1894-14                 475.4 ±  3%     590.0 ±  3%   +24.10% (p=0.000 n=10)
PrecompiledModExp/nagydani-3-qube-Gas=1894-14                   250.1 ± 11%     307.8 ±  3%   +23.05% (p=0.000 n=10)
PrecompiledModExp/nagydani-3-pow0x10001-Gas=30310-14            776.1 ±  6%     802.7 ±  5%         ~ (p=0.123 n=10)
PrecompiledModExp/nagydani-4-square-Gas=5580-14                 580.5 ±  2%     605.1 ±  2%    +4.25% (p=0.003 n=10)
PrecompiledModExp/nagydani-4-qube-Gas=5580-14                   257.6 ±  5%     259.8 ± 15%         ~ (p=0.971 n=10)
PrecompiledModExp/nagydani-4-pow0x10001-Gas=89292-14            739.7 ±  9%     770.0 ±  3%    +4.09% (p=0.043 n=10)
PrecompiledModExp/nagydani-5-square-Gas=17868-14                746.6 ±  3%     719.8 ±  3%    -3.60% (p=0.000 n=10)
PrecompiledModExp/nagydani-5-qube-Gas=17868-14                  325.0 ±  1%     307.6 ±  4%    -5.35% (p=0.000 n=10)
PrecompiledModExp/nagydani-5-pow0x10001-Gas=285900-14           840.1 ±  2%     838.0 ±  3%         ~ (p=0.529 n=10)
PrecompiledModExpEip2565/eip_example1-Gas=1360-14               61.84 ±  3%     64.03 ±  2%    +3.56% (p=0.000 n=10)
PrecompiledModExpEip2565/eip_example2-Gas=1360-14              2.394k ± 11%    6.150k ±  2%  +156.89% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-1-square-Gas=200-14           157.2 ±  2%     243.2 ± 11%   +54.66% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-1-qube-Gas=200-14             122.4 ±  3%     143.2 ± 17%   +16.90% (p=0.023 n=10)
PrecompiledModExpEip2565/nagydani-1-pow0x10001-Gas=341-14       46.86 ±  3%     50.87 ±  4%    +8.55% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-2-square-Gas=200-14           102.1 ±  3%     123.7 ±  2%   +21.17% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-2-qube-Gas=200-14             67.59 ±  5%     76.60 ±  5%   +13.34% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-2-pow0x10001-Gas=1365-14      91.06 ±  5%     99.16 ±  4%    +8.90% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-3-square-Gas=341-14           88.09 ±  4%     96.86 ±  2%    +9.96% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-3-qube-Gas=341-14             49.62 ±  3%     52.84 ±  3%    +6.48% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-3-pow0x10001-Gas=5461-14      136.0 ±  6%     153.6 ±  3%   +12.94% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-4-square-Gas=1365-14          140.8 ±  3%     161.9 ±  3%   +15.02% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-4-qube-Gas=1365-14            63.62 ±  2%     70.05 ±  6%   +10.12% (p=0.001 n=10)
PrecompiledModExpEip2565/nagydani-4-pow0x10001-Gas=21845-14     184.9 ±  2%     192.2 ±  2%    +3.92% (p=0.003 n=10)
PrecompiledModExpEip2565/nagydani-5-square-Gas=5461-14          211.7 ±  5%     227.0 ±  3%    +7.25% (p=0.001 n=10)
PrecompiledModExpEip2565/nagydani-5-qube-Gas=5461-14            95.34 ±  9%     97.93 ±  6%         ~ (p=0.796 n=10)
PrecompiledModExpEip2565/nagydani-5-pow0x10001-Gas=87381-14     260.7 ±  2%     252.4 ±  3%    -3.18% (p=0.000 n=10)
PrecompiledModExpEip2565/marius-1-even-Gas=2057-14              36.57 ±  3%     37.03 ±  1%         ~ (p=0.280 n=10)
PrecompiledModExpEip2565/guido-1-even-Gas=2298-14               59.31 ±  3%     59.48 ±  5%         ~ (p=0.631 n=10)
PrecompiledModExpEip2565/guido-2-even-Gas=2300-14               37.13 ±  2%     37.47 ± 10%         ~ (p=0.529 n=10)
PrecompiledModExpEip2565/guido-3-even-Gas=5400-14               266.4 ±  2%     267.5 ±  5%         ~ (p=0.838 n=10)
PrecompiledModExpEip2565/guido-4-even-Gas=1026-14              1.274k ±  3%    2.857k ±  3%  +124.34% (p=0.000 n=10)
PrecompiledModExpEip2565/marcin-1-base-heavy-Gas=200-14         42.39 ±  5%     50.95 ±  5%   +20.18% (p=0.000 n=10)
PrecompiledModExpEip2565/marcin-1-exp-heavy-Gas=215-14          13.86 ±  3%     14.55 ±  2%    +5.02% (p=0.000 n=10)
PrecompiledModExpEip2565/marcin-1-balanced-Gas=200-14           19.19 ±  2%     19.98 ±  5%    +4.09% (p=0.011 n=10)
PrecompiledModExpEip2565/marcin-2-base-heavy-Gas=867-14         54.23 ±  4%     55.39 ±  4%         ~ (p=0.197 n=10)
PrecompiledModExpEip2565/marcin-2-exp-heavy-Gas=852-14          34.84 ±  2%     36.47 ±  2%    +4.68% (p=0.002 n=10)
PrecompiledModExpEip2565/marcin-2-balanced-Gas=996-14           28.79 ± 23%     30.27 ±  1%    +5.16% (p=0.001 n=10)
PrecompiledModExpEip2565/marcin-3-base-heavy-Gas=677-14         54.37 ±  2%     56.42 ± 14%         ~ (p=0.093 n=10)
PrecompiledModExpEip2565/marcin-3-exp-heavy-Gas=765-14          47.19 ±  3%     49.11 ±  6%         ~ (p=0.063 n=10)
PrecompiledModExpEip2565/marcin-3-balanced-Gas=1360-14          59.05 ±  3%     63.73 ±  2%    +7.94% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-8-exp-648-Gas=215-14               12.32 ±  3%     13.41 ±  1%    +8.81% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-8-exp-896-Gas=298-14               14.19 ±  5%     15.26 ±  2%    +7.58% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-32-exp-32-Gas=200-14               20.94 ±  2%     21.45 ±  2%    +2.41% (p=0.005 n=10)
PrecompiledModExpEip2565/mod-32-exp-36-Gas=200-14               18.61 ±  1%     19.40 ±  2%    +4.25% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-32-exp-40-Gas=208-14               17.40 ±  2%     18.19 ±  2%    +4.54% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-32-exp-64-Gas=336-14               17.90 ±  3%     18.55 ±  2%    +3.66% (p=0.002 n=10)
PrecompiledModExpEip2565/mod-32-exp-65-Gas=341-14               25.10 ±  1%     25.30 ±  1%         ~ (p=0.306 n=10)
PrecompiledModExpEip2565/mod-32-exp-128-Gas=677-14              49.74 ±  3%     50.66 ±  1%    +1.86% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-256-exp-2-Gas=341-14               48.82 ±  2%     56.33 ±  3%   +15.38% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-264-exp-2-Gas=363-14               50.94 ±  5%     57.22 ±  6%   +12.33% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-1024-exp-2-Gas=5461-14             104.2 ± 18%     109.5 ±  4%         ~ (p=0.085 n=10)
PrecompiledModExpEip2565/pawel-1-exp-heavy-Gas=298-14           14.23 ± 24%     14.78 ±  2%    +3.83% (p=0.001 n=10)
PrecompiledModExpEip2565/pawel-2-exp-heavy-Gas=425-14           22.01 ± 20%     29.39 ±  4%   +33.55% (p=0.000 n=10)
PrecompiledModExpEip2565/pawel-3-exp-heavy-Gas=501-14           24.78 ± 17%     35.03 ±  3%   +41.38% (p=0.000 n=10)
PrecompiledModExpEip2565/pawel-4-exp-heavy-Gas=506-14           35.30 ±  3%     36.31 ±  2%    +2.88% (p=0.001 n=10)
PrecompiledModExpEip2565/mod_vul_pawel_3_exp_8-Gas=200-14       8.250 ± 14%    11.805 ± 15%   +43.09% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-1-square-Gas=500-14           338.4 ±  5%     574.2 ±  9%   +69.72% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-1-qube-Gas=500-14             238.3 ±  7%     442.1 ±  2%   +85.54% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-1-pow0x10001-Gas=2048-14      229.6 ±  4%     322.2 ±  2%   +40.32% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-2-square-Gas=512-14           229.9 ±  4%     366.8 ±  2%   +59.55% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-2-qube-Gas=512-14             146.1 ±  7%     211.8 ± 11%   +44.98% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-2-pow0x10001-Gas=8192-14      467.2 ±  4%     578.3 ±  5%   +23.77% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-3-square-Gas=2048-14          426.6 ± 11%     585.5 ±  3%   +37.26% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-3-qube-Gas=2048-14            247.2 ±  4%     313.4 ±  2%   +26.76% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-3-pow0x10001-Gas=32768-14     731.1 ±  5%     885.5 ± 19%   +21.11% (p=0.007 n=10)
PrecompiledModExpEip7883/nagydani-4-square-Gas=8192-14          697.7 ±  4%     910.3 ±  4%   +30.47% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-4-qube-Gas=8192-14            298.0 ±  9%     383.8 ±  5%   +28.75% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-4-pow0x10001-Gas=131072-14    926.6 ± 10%    1155.5 ±  3%   +24.70% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-5-square-Gas=32768-14        1.042k ±  5%    1.393k ±  1%   +33.64% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-5-qube-Gas=32768-14           419.5 ± 16%     609.7 ±  4%   +45.33% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-5-pow0x10001-Gas=524288-14   1.175k ±  5%    1.549k ±  2%   +31.89% (p=0.000 n=10)
PrecompiledModExpEip7883/marius-1-even-Gas=45296-14             635.8 ±  4%     818.6 ±  1%   +28.76% (p=0.000 n=10)
PrecompiledModExpEip7883/guido-1-even-Gas=51136-14             1.002k ± 13%    1.339k ±  3%   +33.66% (p=0.000 n=10)
PrecompiledModExpEip7883/guido-2-even-Gas=51152-14              594.0 ± 17%     843.3 ±  2%   +41.97% (p=0.000 n=10)
PrecompiledModExpEip7883/guido-3-even-Gas=32400-14             1.177k ± 24%    1.591k ±  2%   +35.17% (p=0.000 n=10)
PrecompiledModExpEip7883/guido-4-even-Gas=94448-14             99.37k ±  5%   266.13k ± 22%  +167.81% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-1-base-heavy-Gas=1152-14        205.0 ±  7%     259.5 ±  5%   +26.56% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-1-exp-heavy-Gas=16624-14        873.8 ± 16%    1061.0 ± 18%   +21.43% (p=0.003 n=10)
PrecompiledModExpEip7883/marcin-1-balanced-Gas=1200-14          86.77 ± 16%    110.00 ±  9%   +26.77% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-2-base-heavy-Gas=5202-14        219.6 ±  8%     293.5 ± 12%   +33.67% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-2-exp-heavy-Gas=16368-14        421.2 ± 14%     637.2 ± 13%   +51.28% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-2-balanced-Gas=5978-14          116.2 ± 22%     177.6 ± 13%   +52.86% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-3-base-heavy-Gas=2032-14        121.8 ± 14%     168.1 ±  2%   +38.11% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-3-exp-heavy-Gas=4080-14         206.6 ±  5%     253.0 ± 10%   +22.49% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-3-balanced-Gas=4080-14          142.4 ±  8%     181.6 ±  4%   +27.57% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-8-exp-648-Gas=16624-14             799.9 ± 12%    1014.5 ±  2%   +26.84% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-8-exp-896-Gas=24560-14            1.009k ±  9%    1.252k ±  1%   +24.05% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-32-exp-32-Gas=500-14               48.48 ±  4%     53.80 ±  3%   +10.96% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-32-exp-36-Gas=560-14               47.91 ± 15%     53.99 ±  3%   +12.70% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-32-exp-40-Gas=624-14               44.05 ± 19%     53.80 ±  6%   +22.12% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-32-exp-64-Gas=1008-14              45.75 ±  8%     55.31 ±  2%   +20.90% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-32-exp-65-Gas=1024-14              62.24 ± 12%     76.77 ±  1%   +23.34% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-32-exp-128-Gas=2032-14             119.3 ±  8%     151.1 ±  1%   +26.66% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-256-exp-2-Gas=2048-14              252.2 ± 12%     343.6 ±  3%   +36.25% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-264-exp-2-Gas=2178-14              267.1 ± 22%     320.4 ±  5%   +19.91% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-1024-exp-2-Gas=32768-14            525.9 ±  3%     657.7 ±  1%   +25.07% (p=0.000 n=10)
PrecompiledModExpEip7883/pawel-1-exp-heavy-Gas=24560-14         913.0 ±  7%    1210.0 ±  1%   +32.52% (p=0.000 n=10)
PrecompiledModExpEip7883/pawel-2-exp-heavy-Gas=6128-14          346.8 ±  2%     392.7 ± 10%   +13.24% (p=0.001 n=10)
PrecompiledModExpEip7883/pawel-3-exp-heavy-Gas=2672-14          152.7 ±  3%     179.7 ±  8%   +17.65% (p=0.002 n=10)
PrecompiledModExpEip7883/pawel-4-exp-heavy-Gas=1520-14          87.73 ±  2%    107.55 ±  4%   +22.59% (p=0.000 n=10)
PrecompiledModExpEip7883/mod_vul_pawel_3_exp_8-Gas=1008-14      46.50 ± 20%     59.03 ±  3%   +26.97% (p=0.000 n=10)
geomean                                                         159.9           194.8         +21.79%

                                                             │ /tmp/old.txt │             /tmp/new.txt             │
                                                             │     B/op     │     B/op      vs base                │
PrecompiledModExp/eip_example1-Gas=13056-14                    2.595Ki ± 0%   2.282Ki ± 0%  -12.04% (p=0.000 n=10)
PrecompiledModExp/eip_example2-Gas=13056-14                      672.0 ± 0%     352.0 ± 0%  -47.62% (p=0.000 n=10)
PrecompiledModExp/nagydani-1-square-Gas=204-14                  1160.0 ± 0%     888.0 ± 0%  -23.45% (p=0.000 n=10)
PrecompiledModExp/nagydani-1-qube-Gas=204-14                   1.414Ki ± 0%   1.148Ki ± 0%  -18.78% (p=0.000 n=10)
PrecompiledModExp/nagydani-1-pow0x10001-Gas=3276-14            1.898Ki ± 0%   1.633Ki ± 0%  -13.99% (p=0.000 n=10)
PrecompiledModExp/nagydani-2-square-Gas=665-14                 1.789Ki ± 0%   1.383Ki ± 0%  -22.71% (p=0.000 n=10)
PrecompiledModExp/nagydani-2-qube-Gas=665-14                   2.321Ki ± 0%   1.915Ki ± 0%  -17.50% (p=0.000 n=10)
PrecompiledModExp/nagydani-2-pow0x10001-Gas=10649-14           3.196Ki ± 0%   2.790Ki ± 0%  -12.71% (p=0.000 n=10)
PrecompiledModExp/nagydani-3-square-Gas=1894-14                2.821Ki ± 0%   2.415Ki ± 0%  -14.40% (p=0.000 n=10)
PrecompiledModExp/nagydani-3-qube-Gas=1894-14                  4.010Ki ± 0%   3.604Ki ± 0%  -10.13% (p=0.000 n=10)
PrecompiledModExp/nagydani-3-pow0x10001-Gas=30310-14           5.698Ki ± 0%   5.292Ki ± 0%   -7.13% (p=0.000 n=10)
PrecompiledModExp/nagydani-4-square-Gas=5580-14                5.042Ki ± 0%   4.636Ki ± 0%   -8.06% (p=0.000 n=10)
PrecompiledModExp/nagydani-4-qube-Gas=5580-14                  11.93Ki ± 0%   11.52Ki ± 0%   -3.42% (p=0.000 n=10)
PrecompiledModExp/nagydani-4-pow0x10001-Gas=89292-14           15.30Ki ± 0%   14.89Ki ± 0%   -2.66% (p=0.000 n=10)
PrecompiledModExp/nagydani-5-square-Gas=17868-14               9.616Ki ± 0%   9.208Ki ± 0%   -4.24% (p=0.000 n=10)
PrecompiledModExp/nagydani-5-qube-Gas=17868-14                 23.26Ki ± 0%   22.85Ki ± 0%   -1.77% (p=0.000 n=10)
PrecompiledModExp/nagydani-5-pow0x10001-Gas=285900-14          31.90Ki ± 0%   31.49Ki ± 0%   -1.29% (p=0.000 n=10)
PrecompiledModExpEip2565/eip_example1-Gas=1360-14              2.595Ki ± 0%   2.282Ki ± 0%  -12.04% (p=0.000 n=10)
PrecompiledModExpEip2565/eip_example2-Gas=1360-14                672.0 ± 0%     352.0 ± 0%  -47.62% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-1-square-Gas=200-14           1160.0 ± 0%     888.0 ± 0%  -23.45% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-1-qube-Gas=200-14            1.414Ki ± 0%   1.148Ki ± 0%  -18.78% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-1-pow0x10001-Gas=341-14      1.898Ki ± 0%   1.633Ki ± 0%  -13.99% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-2-square-Gas=200-14          1.648Ki ± 0%   1.383Ki ± 0%  -16.11% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-2-qube-Gas=200-14            2.181Ki ± 0%   1.914Ki ± 0%  -12.23% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-2-pow0x10001-Gas=1365-14     3.056Ki ± 0%   2.790Ki ± 0%   -8.69% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-3-square-Gas=341-14          2.681Ki ± 0%   2.415Ki ± 0%   -9.91% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-3-qube-Gas=341-14            3.869Ki ± 0%   3.604Ki ± 0%   -6.87% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-3-pow0x10001-Gas=5461-14     5.558Ki ± 0%   5.292Ki ± 0%   -4.78% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-4-square-Gas=1365-14         4.901Ki ± 0%   4.636Ki ± 0%   -5.42% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-4-qube-Gas=1365-14           11.78Ki ± 0%   11.52Ki ± 0%   -2.25% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-4-pow0x10001-Gas=21845-14    15.16Ki ± 0%   14.89Ki ± 0%   -1.76% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-5-square-Gas=5461-14         9.475Ki ± 0%   9.209Ki ± 0%   -2.80% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-5-qube-Gas=5461-14           23.12Ki ± 0%   22.85Ki ± 0%   -1.15% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-5-pow0x10001-Gas=87381-14    31.75Ki ± 0%   31.49Ki ± 0%   -0.83% (p=0.000 n=10)
PrecompiledModExpEip2565/marius-1-even-Gas=2057-14             2.501Ki ± 0%   2.134Ki ± 0%  -14.68% (p=0.000 n=10)
PrecompiledModExpEip2565/guido-1-even-Gas=2298-14              2.470Ki ± 0%   2.103Ki ± 0%  -14.87% (p=0.000 n=10)
PrecompiledModExpEip2565/guido-2-even-Gas=2300-14              2.587Ki ± 0%   2.228Ki ± 0%  -13.89% (p=0.000 n=10)
PrecompiledModExpEip2565/guido-3-even-Gas=5400-14              8.271Ki ± 0%   8.014Ki ± 0%   -3.12% (p=0.000 n=10)
PrecompiledModExpEip2565/guido-4-even-Gas=1026-14               1056.0 ± 0%     680.0 ± 0%  -35.61% (p=0.000 n=10)
PrecompiledModExpEip2565/marcin-1-base-heavy-Gas=200-14        2.954Ki ± 0%   2.696Ki ± 0%   -8.73% (p=0.000 n=10)
PrecompiledModExpEip2565/marcin-1-exp-heavy-Gas=215-14         1.641Ki ± 0%   1.273Ki ± 0%  -22.38% (p=0.000 n=10)
PrecompiledModExpEip2565/marcin-1-balanced-Gas=200-14          1.266Ki ± 0%   1.008Ki ± 0%  -20.37% (p=0.000 n=10)
PrecompiledModExpEip2565/marcin-2-base-heavy-Gas=867-14        9.555Ki ± 0%   9.296Ki ± 0%   -2.71% (p=0.000 n=10)
PrecompiledModExpEip2565/marcin-2-exp-heavy-Gas=852-14         2.047Ki ± 0%   1.688Ki ± 0%  -17.56% (p=0.000 n=10)
PrecompiledModExpEip2565/marcin-2-balanced-Gas=996-14          1.993Ki ± 0%   1.727Ki ± 0%  -13.38% (p=0.000 n=10)
PrecompiledModExpEip2565/marcin-3-base-heavy-Gas=677-14        2.587Ki ± 0%   2.282Ki ± 0%  -11.78% (p=0.000 n=10)
PrecompiledModExpEip2565/marcin-3-exp-heavy-Gas=765-14         2.313Ki ± 0%   2.000Ki ± 0%  -13.55% (p=0.000 n=10)
PrecompiledModExpEip2565/marcin-3-balanced-Gas=1360-14         2.610Ki ± 0%   2.298Ki ± 0%  -11.97% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-8-exp-648-Gas=215-14              1.860Ki ± 0%   1.492Ki ± 0%  -19.79% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-8-exp-896-Gas=298-14              1.876Ki ± 0%   1.508Ki ± 0%  -19.60% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-32-exp-32-Gas=200-14               1192.0 ± 0%     920.0 ± 0%  -22.82% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-32-exp-36-Gas=200-14              1.305Ki ± 0%   1.039Ki ± 0%  -20.36% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-32-exp-40-Gas=208-14               1184.0 ± 0%     920.0 ± 0%  -22.30% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-32-exp-64-Gas=336-14               1184.0 ± 0%     920.0 ± 0%  -22.30% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-32-exp-65-Gas=341-14              3.071Ki ± 0%   2.767Ki ± 0%   -9.92% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-32-exp-128-Gas=677-14             3.071Ki ± 0%   2.767Ki ± 0%   -9.92% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-256-exp-2-Gas=341-14              3.869Ki ± 0%   3.604Ki ± 0%   -6.87% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-264-exp-2-Gas=363-14              3.986Ki ± 0%   3.729Ki ± 0%   -6.47% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-1024-exp-2-Gas=5461-14            24.12Ki ± 0%   23.85Ki ± 0%   -1.10% (p=0.000 n=10)
PrecompiledModExpEip2565/pawel-1-exp-heavy-Gas=298-14          1.931Ki ± 0%   1.563Ki ± 0%  -19.02% (p=0.000 n=10)
PrecompiledModExpEip2565/pawel-2-exp-heavy-Gas=425-14          2.438Ki ± 0%   2.071Ki ± 0%  -15.06% (p=0.000 n=10)
PrecompiledModExpEip2565/pawel-3-exp-heavy-Gas=501-14          2.798Ki ± 0%   2.485Ki ± 0%  -11.17% (p=0.000 n=10)
PrecompiledModExpEip2565/pawel-4-exp-heavy-Gas=506-14          3.080Ki ± 0%   2.774Ki ± 0%   -9.92% (p=0.000 n=10)
PrecompiledModExpEip2565/mod_vul_pawel_3_exp_8-Gas=200-14       1064.0 ± 0%     800.0 ± 0%  -24.81% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-1-square-Gas=500-14           1152.0 ± 0%     888.0 ± 0%  -22.92% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-1-qube-Gas=500-14            1.406Ki ± 0%   1.148Ki ± 0%  -18.33% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-1-pow0x10001-Gas=2048-14     1.891Ki ± 0%   1.633Ki ± 0%  -13.64% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-2-square-Gas=512-14          1.641Ki ± 0%   1.383Ki ± 0%  -15.71% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-2-qube-Gas=512-14            2.173Ki ± 0%   1.915Ki ± 0%  -11.87% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-2-pow0x10001-Gas=8192-14     3.048Ki ± 0%   2.790Ki ± 0%   -8.46% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-3-square-Gas=2048-14         2.673Ki ± 0%   2.415Ki ± 0%   -9.65% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-3-qube-Gas=2048-14           3.861Ki ± 0%   3.604Ki ± 0%   -6.68% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-3-pow0x10001-Gas=32768-14    5.550Ki ± 0%   5.292Ki ± 0%   -4.65% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-4-square-Gas=8192-14         4.894Ki ± 0%   4.636Ki ± 0%   -5.27% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-4-qube-Gas=8192-14           11.78Ki ± 0%   11.52Ki ± 0%   -2.20% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-4-pow0x10001-Gas=131072-14   15.15Ki ± 0%   14.89Ki ± 0%   -1.71% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-5-square-Gas=32768-14        9.468Ki ± 0%   9.208Ki ± 0%   -2.74% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-5-qube-Gas=32768-14          23.11Ki ± 0%   22.85Ki ± 0%   -1.13% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-5-pow0x10001-Gas=524288-14   31.75Ki ± 0%   31.49Ki ± 0%   -0.81% (p=0.000 n=10)
PrecompiledModExpEip7883/marius-1-even-Gas=45296-14            2.548Ki ± 0%   2.134Ki ± 0%  -16.25% (p=0.000 n=10)
PrecompiledModExpEip7883/guido-1-even-Gas=51136-14             2.517Ki ± 0%   2.103Ki ± 0%  -16.45% (p=0.000 n=10)
PrecompiledModExpEip7883/guido-2-even-Gas=51152-14             2.642Ki ± 0%   2.228Ki ± 0%  -15.67% (p=0.000 n=10)
PrecompiledModExpEip7883/guido-3-even-Gas=32400-14             8.271Ki ± 0%   8.014Ki ± 0%   -3.12% (p=0.000 n=10)
PrecompiledModExpEip7883/guido-4-even-Gas=94448-14              1104.0 ± 0%     680.0 ± 0%  -38.41% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-1-base-heavy-Gas=1152-14       2.954Ki ± 0%   2.696Ki ± 0%   -8.73% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-1-exp-heavy-Gas=16624-14       1.688Ki ± 0%   1.273Ki ± 0%  -24.54% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-1-balanced-Gas=1200-14         1.266Ki ± 0%   1.008Ki ± 0%  -20.37% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-2-base-heavy-Gas=5202-14       9.554Ki ± 0%   9.296Ki ± 0%   -2.70% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-2-exp-heavy-Gas=16368-14       2.102Ki ± 0%   1.688Ki ± 0%  -19.72% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-2-balanced-Gas=5978-14         1.985Ki ± 0%   1.727Ki ± 0%  -13.03% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-3-base-heavy-Gas=2032-14       2.634Ki ± 0%   2.282Ki ± 0%  -13.35% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-3-exp-heavy-Gas=4080-14        2.368Ki ± 0%   2.000Ki ± 0%  -15.55% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-3-balanced-Gas=4080-14         2.665Ki ± 0%   2.298Ki ± 0%  -13.78% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-8-exp-648-Gas=16624-14            1.907Ki ± 0%   1.492Ki ± 0%  -21.76% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-8-exp-896-Gas=24560-14            1.923Ki ± 0%   1.508Ki ± 0%  -21.58% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-32-exp-32-Gas=500-14               1240.0 ± 0%     920.0 ± 0%  -25.81% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-32-exp-36-Gas=560-14              1.352Ki ± 0%   1.039Ki ± 0%  -23.12% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-32-exp-40-Gas=624-14               1240.0 ± 0%     920.0 ± 0%  -25.81% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-32-exp-64-Gas=1008-14              1240.0 ± 0%     920.0 ± 0%  -25.81% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-32-exp-65-Gas=1024-14             3.118Ki ± 0%   2.767Ki ± 0%  -11.27% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-32-exp-128-Gas=2032-14            3.118Ki ± 0%   2.767Ki ± 0%  -11.27% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-256-exp-2-Gas=2048-14             3.861Ki ± 0%   3.604Ki ± 0%   -6.68% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-264-exp-2-Gas=2178-14             3.986Ki ± 0%   3.729Ki ± 0%   -6.47% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-1024-exp-2-Gas=32768-14           24.12Ki ± 0%   23.85Ki ± 0%   -1.09% (p=0.000 n=10)
PrecompiledModExpEip7883/pawel-1-exp-heavy-Gas=24560-14        1.978Ki ± 0%   1.562Ki ± 0%  -20.99% (p=0.000 n=10)
PrecompiledModExpEip7883/pawel-2-exp-heavy-Gas=6128-14         2.485Ki ± 0%   2.071Ki ± 0%  -16.66% (p=0.000 n=10)
PrecompiledModExpEip7883/pawel-3-exp-heavy-Gas=2672-14         2.853Ki ± 0%   2.485Ki ± 0%  -12.87% (p=0.000 n=10)
PrecompiledModExpEip7883/pawel-4-exp-heavy-Gas=1520-14         3.127Ki ± 0%   2.774Ki ± 0%  -11.27% (p=0.000 n=10)
PrecompiledModExpEip7883/mod_vul_pawel_3_exp_8-Gas=1008-14      1120.0 ± 0%     800.0 ± 0%  -28.57% (p=0.000 n=10)
geomean                                                        3.164Ki        2.718Ki       -14.08%

                                                             │ /tmp/old.txt │            /tmp/new.txt            │
                                                             │  allocs/op   │ allocs/op   vs base                │
PrecompiledModExp/eip_example1-Gas=13056-14                      37.00 ± 0%   30.00 ± 0%  -18.92% (p=0.000 n=10)
PrecompiledModExp/eip_example2-Gas=13056-14                     13.000 ± 0%   6.000 ± 0%  -53.85% (p=0.000 n=10)
PrecompiledModExp/nagydani-1-square-Gas=204-14                   18.00 ± 0%   10.00 ± 0%  -44.44% (p=0.000 n=10)
PrecompiledModExp/nagydani-1-qube-Gas=204-14                     19.00 ± 0%   11.00 ± 0%  -42.11% (p=0.000 n=10)
PrecompiledModExp/nagydani-1-pow0x10001-Gas=3276-14              22.00 ± 0%   14.00 ± 0%  -36.36% (p=0.000 n=10)
PrecompiledModExp/nagydani-2-square-Gas=665-14                   23.00 ± 0%   10.00 ± 0%  -56.52% (p=0.000 n=10)
PrecompiledModExp/nagydani-2-qube-Gas=665-14                     24.00 ± 0%   11.00 ± 0%  -54.17% (p=0.000 n=10)
PrecompiledModExp/nagydani-2-pow0x10001-Gas=10649-14             27.00 ± 0%   14.00 ± 0%  -48.15% (p=0.000 n=10)
PrecompiledModExp/nagydani-3-square-Gas=1894-14                  23.00 ± 0%   10.00 ± 0%  -56.52% (p=0.000 n=10)
PrecompiledModExp/nagydani-3-qube-Gas=1894-14                    24.00 ± 0%   11.00 ± 0%  -54.17% (p=0.000 n=10)
PrecompiledModExp/nagydani-3-pow0x10001-Gas=30310-14             27.00 ± 0%   14.00 ± 0%  -48.15% (p=0.000 n=10)
PrecompiledModExp/nagydani-4-square-Gas=5580-14                  23.00 ± 0%   10.00 ± 0%  -56.52% (p=0.000 n=10)
PrecompiledModExp/nagydani-4-qube-Gas=5580-14                    25.00 ± 0%   12.00 ± 0%  -52.00% (p=0.000 n=10)
PrecompiledModExp/nagydani-4-pow0x10001-Gas=89292-14             28.00 ± 0%   15.00 ± 0%  -46.43% (p=0.000 n=10)
PrecompiledModExp/nagydani-5-square-Gas=17868-14                 24.00 ± 0%   11.00 ± 0%  -54.17% (p=0.000 n=10)
PrecompiledModExp/nagydani-5-qube-Gas=17868-14                   26.00 ± 0%   13.00 ± 0%  -50.00% (p=0.000 n=10)
PrecompiledModExp/nagydani-5-pow0x10001-Gas=285900-14            44.00 ± 0%   31.00 ± 0%  -29.55% (p=0.000 n=10)
PrecompiledModExpEip2565/eip_example1-Gas=1360-14                37.00 ± 0%   30.00 ± 0%  -18.92% (p=0.000 n=10)
PrecompiledModExpEip2565/eip_example2-Gas=1360-14               13.000 ± 0%   6.000 ± 0%  -53.85% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-1-square-Gas=200-14            18.00 ± 0%   10.00 ± 0%  -44.44% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-1-qube-Gas=200-14              19.00 ± 0%   11.00 ± 0%  -42.11% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-1-pow0x10001-Gas=341-14        22.00 ± 0%   14.00 ± 0%  -36.36% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-2-square-Gas=200-14            18.00 ± 0%   10.00 ± 0%  -44.44% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-2-qube-Gas=200-14              19.00 ± 0%   11.00 ± 0%  -42.11% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-2-pow0x10001-Gas=1365-14       22.00 ± 0%   14.00 ± 0%  -36.36% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-3-square-Gas=341-14            18.00 ± 0%   10.00 ± 0%  -44.44% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-3-qube-Gas=341-14              19.00 ± 0%   11.00 ± 0%  -42.11% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-3-pow0x10001-Gas=5461-14       22.00 ± 0%   14.00 ± 0%  -36.36% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-4-square-Gas=1365-14           18.00 ± 0%   10.00 ± 0%  -44.44% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-4-qube-Gas=1365-14             20.00 ± 0%   12.00 ± 0%  -40.00% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-4-pow0x10001-Gas=21845-14      23.00 ± 0%   15.00 ± 0%  -34.78% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-5-square-Gas=5461-14           19.00 ± 0%   11.00 ± 0%  -42.11% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-5-qube-Gas=5461-14             21.00 ± 0%   13.00 ± 0%  -38.10% (p=0.000 n=10)
PrecompiledModExpEip2565/nagydani-5-pow0x10001-Gas=87381-14      39.00 ± 0%   31.00 ± 0%  -20.51% (p=0.000 n=10)
PrecompiledModExpEip2565/marius-1-even-Gas=2057-14               52.00 ± 0%   43.00 ± 0%  -17.31% (p=0.000 n=10)
PrecompiledModExpEip2565/guido-1-even-Gas=2298-14                55.00 ± 0%   46.00 ± 0%  -16.36% (p=0.000 n=10)
PrecompiledModExpEip2565/guido-2-even-Gas=2300-14                52.00 ± 0%   44.00 ± 0%  -15.38% (p=0.000 n=10)
PrecompiledModExpEip2565/guido-3-even-Gas=5400-14                19.00 ± 0%   12.00 ± 0%  -36.84% (p=0.000 n=10)
PrecompiledModExpEip2565/guido-4-even-Gas=1026-14               18.000 ± 0%   9.000 ± 0%  -50.00% (p=0.000 n=10)
PrecompiledModExpEip2565/marcin-1-base-heavy-Gas=200-14          18.00 ± 0%   11.00 ± 0%  -38.89% (p=0.000 n=10)
PrecompiledModExpEip2565/marcin-1-exp-heavy-Gas=215-14           37.00 ± 0%   28.00 ± 0%  -24.32% (p=0.000 n=10)
PrecompiledModExpEip2565/marcin-1-balanced-Gas=200-14            19.00 ± 0%   12.00 ± 0%  -36.84% (p=0.000 n=10)
PrecompiledModExpEip2565/marcin-2-base-heavy-Gas=867-14          19.00 ± 0%   12.00 ± 0%  -36.84% (p=0.000 n=10)
PrecompiledModExpEip2565/marcin-2-exp-heavy-Gas=852-14           36.00 ± 0%   28.00 ± 0%  -22.22% (p=0.000 n=10)
PrecompiledModExpEip2565/marcin-2-balanced-Gas=996-14            23.00 ± 0%   15.00 ± 0%  -34.78% (p=0.000 n=10)
PrecompiledModExpEip2565/marcin-3-base-heavy-Gas=677-14          36.00 ± 0%   28.00 ± 0%  -22.22% (p=0.000 n=10)
PrecompiledModExpEip2565/marcin-3-exp-heavy-Gas=765-14           35.00 ± 0%   28.00 ± 0%  -20.00% (p=0.000 n=10)
PrecompiledModExpEip2565/marcin-3-balanced-Gas=1360-14           35.00 ± 0%   28.00 ± 0%  -20.00% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-8-exp-648-Gas=215-14                50.00 ± 0%   41.00 ± 0%  -18.00% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-8-exp-896-Gas=298-14                50.00 ± 0%   41.00 ± 0%  -18.00% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-32-exp-32-Gas=200-14                21.00 ± 0%   13.00 ± 0%  -38.10% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-32-exp-36-Gas=200-14                22.00 ± 0%   14.00 ± 0%  -36.36% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-32-exp-40-Gas=208-14                20.00 ± 0%   13.00 ± 0%  -35.00% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-32-exp-64-Gas=336-14                20.00 ± 0%   13.00 ± 0%  -35.00% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-32-exp-65-Gas=341-14                52.00 ± 0%   44.00 ± 0%  -15.38% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-32-exp-128-Gas=677-14               52.00 ± 0%   44.00 ± 0%  -15.38% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-256-exp-2-Gas=341-14                19.00 ± 0%   11.00 ± 0%  -42.11% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-264-exp-2-Gas=363-14                18.00 ± 0%   11.00 ± 0%  -38.89% (p=0.000 n=10)
PrecompiledModExpEip2565/mod-1024-exp-2-Gas=5461-14              22.00 ± 0%   14.00 ± 0%  -36.36% (p=0.000 n=10)
PrecompiledModExpEip2565/pawel-1-exp-heavy-Gas=298-14            52.00 ± 0%   43.00 ± 0%  -17.31% (p=0.000 n=10)
PrecompiledModExpEip2565/pawel-2-exp-heavy-Gas=425-14            54.00 ± 0%   45.00 ± 0%  -16.67% (p=0.000 n=10)
PrecompiledModExpEip2565/pawel-3-exp-heavy-Gas=501-14            52.00 ± 0%   45.00 ± 0%  -13.46% (p=0.000 n=10)
PrecompiledModExpEip2565/pawel-4-exp-heavy-Gas=506-14            53.00 ± 0%   45.00 ± 0%  -15.09% (p=0.000 n=10)
PrecompiledModExpEip2565/mod_vul_pawel_3_exp_8-Gas=200-14        19.00 ± 0%   12.00 ± 0%  -36.84% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-1-square-Gas=500-14            17.00 ± 0%   10.00 ± 0%  -41.18% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-1-qube-Gas=500-14              18.00 ± 0%   11.00 ± 0%  -38.89% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-1-pow0x10001-Gas=2048-14       21.00 ± 0%   14.00 ± 0%  -33.33% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-2-square-Gas=512-14            17.00 ± 0%   10.00 ± 0%  -41.18% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-2-qube-Gas=512-14              18.00 ± 0%   11.00 ± 0%  -38.89% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-2-pow0x10001-Gas=8192-14       21.00 ± 0%   14.00 ± 0%  -33.33% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-3-square-Gas=2048-14           17.00 ± 0%   10.00 ± 0%  -41.18% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-3-qube-Gas=2048-14             18.00 ± 0%   11.00 ± 0%  -38.89% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-3-pow0x10001-Gas=32768-14      21.00 ± 0%   14.00 ± 0%  -33.33% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-4-square-Gas=8192-14           17.00 ± 0%   10.00 ± 0%  -41.18% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-4-qube-Gas=8192-14             19.00 ± 0%   12.00 ± 0%  -36.84% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-4-pow0x10001-Gas=131072-14     22.00 ± 0%   15.00 ± 0%  -31.82% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-5-square-Gas=32768-14          18.00 ± 0%   11.00 ± 0%  -38.89% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-5-qube-Gas=32768-14            20.00 ± 0%   13.00 ± 0%  -35.00% (p=0.000 n=10)
PrecompiledModExpEip7883/nagydani-5-pow0x10001-Gas=524288-14     38.00 ± 0%   31.00 ± 0%  -18.42% (p=0.000 n=10)
PrecompiledModExpEip7883/marius-1-even-Gas=45296-14              53.00 ± 0%   43.00 ± 0%  -18.87% (p=0.000 n=10)
PrecompiledModExpEip7883/guido-1-even-Gas=51136-14               56.00 ± 0%   46.00 ± 0%  -17.86% (p=0.000 n=10)
PrecompiledModExpEip7883/guido-2-even-Gas=51152-14               54.00 ± 0%   44.00 ± 0%  -18.52% (p=0.000 n=10)
PrecompiledModExpEip7883/guido-3-even-Gas=32400-14               19.00 ± 0%   12.00 ± 0%  -36.84% (p=0.000 n=10)
PrecompiledModExpEip7883/guido-4-even-Gas=94448-14              19.000 ± 0%   9.000 ± 0%  -52.63% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-1-base-heavy-Gas=1152-14         18.00 ± 0%   11.00 ± 0%  -38.89% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-1-exp-heavy-Gas=16624-14         38.00 ± 0%   28.00 ± 0%  -26.32% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-1-balanced-Gas=1200-14           19.00 ± 0%   12.00 ± 0%  -36.84% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-2-base-heavy-Gas=5202-14         19.00 ± 0%   12.00 ± 0%  -36.84% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-2-exp-heavy-Gas=16368-14         38.00 ± 0%   28.00 ± 0%  -26.32% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-2-balanced-Gas=5978-14           22.00 ± 0%   15.00 ± 0%  -31.82% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-3-base-heavy-Gas=2032-14         37.00 ± 0%   28.00 ± 0%  -24.32% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-3-exp-heavy-Gas=4080-14          37.00 ± 0%   28.00 ± 0%  -24.32% (p=0.000 n=10)
PrecompiledModExpEip7883/marcin-3-balanced-Gas=4080-14           37.00 ± 0%   28.00 ± 0%  -24.32% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-8-exp-648-Gas=16624-14              51.00 ± 0%   41.00 ± 0%  -19.61% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-8-exp-896-Gas=24560-14              51.00 ± 0%   41.00 ± 0%  -19.61% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-32-exp-32-Gas=500-14                22.00 ± 0%   13.00 ± 0%  -40.91% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-32-exp-36-Gas=560-14                23.00 ± 0%   14.00 ± 0%  -39.13% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-32-exp-40-Gas=624-14                22.00 ± 0%   13.00 ± 0%  -40.91% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-32-exp-64-Gas=1008-14               22.00 ± 0%   13.00 ± 0%  -40.91% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-32-exp-65-Gas=1024-14               53.00 ± 0%   44.00 ± 0%  -16.98% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-32-exp-128-Gas=2032-14              53.00 ± 0%   44.00 ± 0%  -16.98% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-256-exp-2-Gas=2048-14               18.00 ± 0%   11.00 ± 0%  -38.89% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-264-exp-2-Gas=2178-14               18.00 ± 0%   11.00 ± 0%  -38.89% (p=0.000 n=10)
PrecompiledModExpEip7883/mod-1024-exp-2-Gas=32768-14             21.00 ± 0%   14.00 ± 0%  -33.33% (p=0.000 n=10)
PrecompiledModExpEip7883/pawel-1-exp-heavy-Gas=24560-14          53.00 ± 0%   43.00 ± 0%  -18.87% (p=0.000 n=10)
PrecompiledModExpEip7883/pawel-2-exp-heavy-Gas=6128-14           55.00 ± 0%   45.00 ± 0%  -18.18% (p=0.000 n=10)
PrecompiledModExpEip7883/pawel-3-exp-heavy-Gas=2672-14           54.00 ± 0%   45.00 ± 0%  -16.67% (p=0.000 n=10)
PrecompiledModExpEip7883/pawel-4-exp-heavy-Gas=1520-14           54.00 ± 0%   45.00 ± 0%  -16.67% (p=0.000 n=10)
PrecompiledModExpEip7883/mod_vul_pawel_3_exp_8-Gas=1008-14       21.00 ± 0%   12.00 ± 0%  -42.86% (p=0.000 n=10)
geomean                                                          26.59        17.27       -35.03%
```

Co-authored-by: @kevaundray
Co-authored-by: Felix Lange <fjl@twurst.com>
2025-09-08 13:33:10 +02:00
lightclient
ffe758c7a7
internal/ethapi,params: add eth_config (#32239)
~Will probably be mostly supplanted by #32224, but this should do for
now for devnet 3.~

Seems like #32224 is going to take some more time, so I have completed
the implementation of eth_config here. It is quite a bit simpler to
implement now that the config hashing was removed.

---------

Co-authored-by: MariusVanDerWijden <m.vanderwijden@live.de>
Co-authored-by: Guillaume Ballet <3272758+gballet@users.noreply.github.com>
Co-authored-by: rjl493456442 <garyrong0905@gmail.com>
2025-09-01 16:40:41 +02:00
jwasinger
a9a19c4202
core/vm: fix EIP-7823 modexp input length check (#32363)
Some checks failed
/ Linux Build (push) Has been cancelled
/ Linux Build (arm) (push) Has been cancelled
/ Windows Build (push) Has been cancelled
/ Docker Image (push) Has been cancelled
The order of the checks was wrong which would have allowed a call to
modexp with `baseLen == 0 && modLen == 0` post fusaka.

Also handles an edge case where base/mod/exp length >= 2**64

---------

Co-authored-by: Felix Lange <fjl@twurst.com>
2025-08-15 15:58:00 +02:00
cui
ccf684f1ba
core/vm: refactor to use bitutil.TestBytes (#32434) 2025-08-15 15:10:44 +08:00
nthumann
29eebb5eac
core: replace the empty fmt.Errorf with errors.New (#32274)
The `errors.new` function does not require string formatting, so its
performance is better than that of `fmt.Errorf`.
2025-07-28 09:13:50 +08:00
Marius van der Wijden
d80094f788
core/vm: triple modexp cost post-cancun (#32231)
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
https://github.com/ethereum/EIPs/pull/9969/files
2025-07-21 12:29:55 +02:00
Felix Lange
b3131f00a3
core/vm: implement EIP-7951 - precompile for secp256r1 (#31991)
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
https://github.com/ethereum/EIPs/pull/9833

Based on #27540, #30043

---------

Co-authored-by: Ulaş Erdoğan <uerdogan2001@hotmail.com>
2025-07-07 20:59:45 +02:00
jwasinger
e5da461f29
core/vm: implement updates to modexp gas cost changes in EIP-7883 (#32015)
Implements the updated gas cost changes introduced in
5cdd75157d
2025-06-13 14:01:50 +02:00
jwasinger
35dd84ce29
core/vm: implement EIP 7883 - ModExp Gas Cost Increase (#31606)
Some checks failed
/ Linux Build (push) Has been cancelled
/ Linux Build (arm) (push) Has been cancelled
/ Docker Image (push) Has been cancelled
https://eips.ethereum.org/EIPS/eip-7883

---------

Co-authored-by: MariusVanDerWijden <m.vanderwijden@live.de>
Co-authored-by: Felix Lange <fjl@twurst.com>
2025-06-05 16:47:49 +02:00
jwasinger
5e98c97abb
core/vm: implement EIP 7823 - Set upper bounds for MODEXP (#31818) 2025-06-04 18:19:11 +02:00
Guillaume Ballet
af9a3a1a03
core/state, core/vm: update stateless gas costs to follow the verkle-gen-7 testnet (#31014)
Adding values to the witness introduces a new class of issues for
computing gas: if there is not enough gas to cover adding an item to the
witness, then the item should not be added to the witness.

The problem happens when several items are added together, and that
process runs out of gas. The witness gas computation needs a way to
signal that not enough gas was provided. These values can not be
hardcoded, however, as they are context dependent, i.e. two calls to the
same function with the same parameters can give two different results.

The approach is to return both the gas that was actually consumed, and
the gas that was necessary. If the values don't match, then a witness
update OOG'd. The caller should then charge the `consumed` value
(remaining gas will be 0) and error out.

Why not return a boolean instead of the wanted value? Because when
several items are touched, we want to distinguish which item lacked gas.

---------

Signed-off-by: Guillaume Ballet <3272758+gballet@users.noreply.github.com>
2025-05-15 20:43:52 +08:00
Sina M
3003a13440
core/vm: implement EIP-2537 spec updates (#30978)
Reference:

- Remove MUL precompiles: https://github.com/ethereum/EIPs/pull/8945
- Pricing change for pairing operation:
https://github.com/ethereum/EIPs/pull/9098
- Pricing change for add, mapping and mul operations:
https://github.com/ethereum/EIPs/pull/9097
- Pricing change for MSM operations:
https://github.com/ethereum/EIPs/pull/9116

---------

Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de>
2025-01-24 15:38:17 +01:00
Péter Szilágyi
a5fe7353cf
common: drop BigMin and BigMax, they pollute our dep graph (#30645)
Way back we've added `common.math.BigMin` and `common.math.BigMax`.
These were kind of cute helpers, but unfortunate ones, because package
all over out codebase added dependencies to this package just to avoid
having to write out 3 lines of code.

Because of this, we've also started having package name clashes with the
stdlib `math`, which got solves even more badly by moving some helpers
over ***from*** the stdlib into our custom lib (e.g. MaxUint64). The
latter ones were nuked out in a previous PR and this PR nukes out BigMin
and BigMax, inlining them at all call sites.

As we're transitioning to uint256, if need be, we can add a min and max
to that.
2024-10-21 12:45:33 +03:00
Péter Szilágyi
48d05c43c9
all: get rid of custom MaxUint64 and MaxUint64 (#30636) 2024-10-20 14:41:51 +03:00
Sina M
8f4fac7b86
internal/ethapi: eth_multicall (#27720)
This is a successor PR to #25743. This PR is based on a new iteration of
the spec: https://github.com/ethereum/execution-apis/pull/484.

`eth_multicall` takes in a list of blocks, each optionally overriding
fields like number, timestamp, etc. of a base block. Each block can
include calls. At each block users can override the state. There are
extra features, such as:

- Include ether transfers as part of the logs
- Overriding precompile codes with evm bytecode
- Redirecting accounts to another address

## Breaking changes

This PR includes the following breaking changes:

- Block override fields of eth_call and debug_traceCall have had the
following fields renamed
  - `coinbase` -> `feeRecipient`
  - `random` -> `prevRandao`
  - `baseFee` -> `baseFeePerGas`

---------

Co-authored-by: Gary Rong <garyrong0905@gmail.com>
Co-authored-by: Martin Holst Swende <martin@swende.se>
2024-09-06 11:31:00 +02:00
gitglorythegreat
06f1d077d3
all: replace division with right shift if possible (#29911) 2024-06-28 18:08:31 +02:00
Guillaume Ballet
44a50c9f96
cmd, core, params, trie: add verkle access witness gas charging (#29338)
Implements some of the changes required to charge and do gas accounting in verkle testnet.
2024-05-10 20:13:11 +02:00
Aaron Chen
bc609e852a
core/vm: remove redundant error checks (#29692) 2024-05-02 11:18:59 +03:00
Marius van der Wijden
bd6bc37eec
core/vm: add subgroup checks for mul/mulexp for G1/G2 (#29637) 2024-04-30 14:35:48 +02:00
Mario Vega
94579932b1
core/vm: fix Prague contracts (#29612)
core/vm: fix prague contracts
2024-04-23 15:10:24 +02:00
Martin HS
823719b9e1
core/vm: enable bls-precompiles for Prague (#29552)
enables the bls-contracts on the "Prague" config, so that the testing-team can activate them to make tests.
2024-04-18 09:08:25 +02:00
Marius van der Wijden
f437307877
core/vm: update gascosts for BLS12-381 + use gnark instead of kilic (#29441)
This PR updates the bls contracts from our internal implementation which is an unmaintained fork of the kilic library to the gnark-crypto library that is actively maintained by consensys.

It also updates the gas-costs according to the EIP
2024-04-16 10:53:43 +02:00
Abirdcfly
b179b7b8e7
all: remove duplicate word in comments (#29531)
This change removes some duplicate words in in comments
2024-04-15 08:34:31 +02:00
cui
3caf617dcd
core/vm: move bls precompiles to correct addresses (#29445)
core: make bls precompiled contract use the correct address as in eip
2024-04-09 08:33:36 +02:00
Aaron Chen
723b1e36ad
all: fix mismatched names in comments (#29348)
* all: fix mismatched names in comments

* metrics: fix mismatched name in UpdateIfGt
2024-03-26 21:01:28 +01:00
Sina M
064f37d6f6
eth/tracers: live chain tracing with hooks (#29189)
Here we add a Go API for running tracing plugins within the main block import process. 

As an advanced user of geth, you can now create a Go file in eth/tracers/live/, and within
that file register your custom tracer implementation. Then recompile geth and select your tracer
on the command line. Hooks defined in the tracer will run whenever a block is processed.

The hook system is defined in package core/tracing. It uses a struct with callbacks, instead of 
requiring an interface, for several reasons:

- We plan to keep this API stable long-term. The core/tracing hook API does not depend on
  on deep geth internals.
- There are a lot of hooks, and tracers will only need some of them. Using a struct allows you
   to implement only the hooks you want to actually use.

All existing tracers in eth/tracers/native have been rewritten to use the new hook system.

This change breaks compatibility with the vm.EVMLogger interface that we used to have.
If you are a user of vm.EVMLogger, please migrate to core/tracing, and sorry for breaking
your stuff. But we just couldn't have both the old and new tracing APIs coexist in the EVM.

---------

Co-authored-by: Matthieu Vachon <matthieu.o.vachon@gmail.com>
Co-authored-by: Delweng <delweng@gmail.com>
Co-authored-by: Martin HS <martin@swende.se>
2024-03-22 18:53:53 +01:00
Martin HS
a5a4fa7032
all: use uint256 in state (#28598)
This change makes use of uin256 to represent balance in state. It touches primarily upon statedb, stateobject and state processing, trying to avoid changes in transaction pools, core types, rpc and tracers.
2024-01-23 14:51:58 +01:00
Martin Holst Swende
e13fa32cea
core/vm: update 4844 - point evaluation precompile address (#27874) 2023-08-08 15:54:19 +03:00
Marius van der Wijden
c537ace249
core: 4844 opcode and precompile (#27356)
* core: crypto: implement BLOBHASH and pointEval precompile

* core: crypto: fixed nitpicks, moved precompile return value

* core/vm: fix review comments
2023-06-05 16:43:25 +03:00
Martin Holst Swende
b80f05bde2
core/vm: use golang native big.Int (#26834)
reverts #26021, to use the upstream bigint instead.
2023-03-08 13:12:53 -05:00
Martin Holst Swende
9d795d0836
core/vm: use optimized bigint (#26021) 2022-10-27 10:39:01 +02:00
Martin Holst Swende
bed3b10086
common/math: optimized modexp (+ fuzzer) (#25525)
This adds a 
* core/vm, tests: optimized modexp + fuzzer

* common/math: modexp optimizations

* core/vm: special case base 1 in big modexp

* core/vm: disable fastexp
2022-10-12 10:34:52 +02:00
Martin Holst Swende
5a02b2d6d0
all: fix spelling mistakes (#25961) 2022-10-11 09:37:00 +02:00
jwasinger
d8ada03eac
core/vm: return copy of input slice in identity precompile, avoid returndata copy (#25183)
* core/vm: return copy of input slice in identity precompile.  don't deep copy return data slice upon call completion

* make use of common.CopyBytes
2022-09-20 14:58:03 +02:00
Felix Lange
b628d72766
build: upgrade to go 1.19 (#25726)
This changes the CI / release builds to use the latest Go version. It also
upgrades golangci-lint to a newer version compatible with Go 1.19.

In Go 1.19, godoc has gained official support for links and lists. The
syntax for code blocks in doc comments has changed and now requires a
leading tab character. gofmt adapts comments to the new syntax
automatically, so there are a lot of comment re-formatting changes in this
PR. We need to apply the new format in order to pass the CI lint stage with
Go 1.19.

With the linter upgrade, I have decided to disable 'gosec' - it produces
too many false-positive warnings. The 'deadcode' and 'varcheck' linters
have also been removed because golangci-lint warns about them being
unmaintained. 'unused' provides similar coverage and we already have it
enabled, so we don't lose much with this change.
2022-09-10 13:25:40 +02:00
Martin Holst Swende
a907d7e81a
all: more linters (#24783)
This enables the following linters

- typecheck
- unused
- staticcheck
- bidichk
- durationcheck
- exportloopref
- gosec

WIth a few exceptions.

- We use a deprecated protobuf in trezor. I didn't want to mess with that, since I cannot meaningfully test any changes there.
- The deprecated TypeMux is used in a few places still, so the warning for it is silenced for now.
- Using string type in context.WithValue is apparently wrong, one should use a custom type, to prevent collisions between different places in the hierarchy of callers. That should be fixed at some point, but may require some attention.
- The warnings for using weak random generator are squashed, since we use a lot of random without need for cryptographic guarantees.
2022-06-13 16:24:45 +02:00
s7v7nislands
24c590cbec
core/vm: clean up some dead functions (#24851) 2022-05-11 08:03:35 +03:00
Marius van der Wijden
9d10856e84
core, eth, internal/ethapi: create access list RPC API (#22550)
* core/vm: implement AccessListTracer

* eth: implement debug.createAccessList

* core/vm: fixed nil panics in accessListTracer

* eth: better error messages for createAccessList

* eth: some fixes on CreateAccessList

* eth: allow for provided accesslists

* eth: pass accesslist by value

* eth: remove created acocunt from accesslist

* core/vm: simplify access list tracer

* core/vm: unexport accessListTracer

* eth: return best guess if al iteration times out

* eth: return best guess if al iteration times out

* core: docstring, unexport methods

* eth: typo

* internal/ethapi: move createAccessList to eth package

* internal/ethapi: remove reexec from createAccessList

* internal/ethapi: break if al is equal to last run, not if gas is equal

* internal/web3ext: fixed arguments

* core/types: fixed equality check for accesslist

* core/types: no hardcoded vals

* core, internal: simplify access list generation, make it precise

* core/vm: fix typo

Co-authored-by: Martin Holst Swende <martin@swende.se>
Co-authored-by: Péter Szilágyi <peterke@gmail.com>
2021-04-07 17:54:31 +03:00
nebojsa94
44fe466999
core/vm: fix Byzantium address list (#22603) 2021-03-30 16:38:53 +03:00
Péter Szilágyi
0928562670
all: define Berlin hard fork spec 2021-02-26 14:24:07 +02:00
Sina Mahmoodi
eb21c652c0
cmd,core,eth,params,tests: define yolov3 + enable EIP-2565 (#22213)
Removes the yolov2 definition, adds yolov3, including EIP-2565. This PR also disables some of the erroneously generated blockchain and statetests, and adds the new genesis hash + alloc for yolov3. 
This PR disables the CLI switches for yolo, since it's not complete until we merge support for 2930.
2021-01-28 21:19:07 +01:00
Martin Holst Swende
6f4cccf8d2
core/vm, protocol_params: implement eip-2565 modexp repricing (#21607)
* core/vm, protocol_params: implement eip-2565 modexp repricing

* core/vm: fix review concerns
2020-11-13 13:39:59 +01:00
Martin Holst Swende
6487c002f6
all: implement EIP-2929 (gas cost increases for state access opcodes) + yolo-v2 (#21509)
* core/vm, core/state: implement EIP-2929 + YOLOv2

* core/state, core/vm: fix some review concerns

* core/state, core/vm: address review concerns

* core/vm: address review concerns

* core/vm: better documentation

* core/vm: unify sload cost as fully dynamic

* core/vm: fix typo

* core/vm/runtime: fix compilation flaw

* core/vm/runtime: fix renaming-err leftovers

* core/vm: renaming

* params/config: use correct yolov2 chainid for config

* core, params: use a proper new genesis for yolov2

* core/state/tests: golinter nitpicks
2020-10-23 08:26:57 +02:00
Martin Holst Swende
295693759e
core/vm: less allocations for various call variants (#21222)
* core/vm/runtime/tests: add more benchmarks

* core/vm: initial work on improving alloc count for calls to precompiles

name                                  old time/op    new time/op    delta
SimpleLoop/identity-precompile-10M-6     117ms ±75%      43ms ± 1%  -63.09%  (p=0.008 n=5+5)
SimpleLoop/loop-10M-6                   79.6ms ± 4%    70.5ms ± 1%  -11.42%  (p=0.008 n=5+5)

name                                  old alloc/op   new alloc/op   delta
SimpleLoop/identity-precompile-10M-6    24.4MB ± 0%     4.9MB ± 0%  -79.94%  (p=0.008 n=5+5)
SimpleLoop/loop-10M-6                   13.2kB ± 0%    13.2kB ± 0%     ~     (p=0.357 n=5+5)

name                                  old allocs/op  new allocs/op  delta
SimpleLoop/identity-precompile-10M-6      382k ± 0%      153k ± 0%  -59.99%  (p=0.000 n=5+4)
SimpleLoop/loop-10M-6                     40.0 ± 0%      40.0 ± 0%     ~     (all equal)

* core/vm: don't allocate big.int for touch

name                                  old time/op    new time/op    delta
SimpleLoop/identity-precompile-10M-6    43.3ms ± 1%    42.4ms ± 7%     ~     (p=0.151 n=5+5)
SimpleLoop/loop-10M-6                   70.5ms ± 1%    76.7ms ± 1%   +8.67%  (p=0.008 n=5+5)

name                                  old alloc/op   new alloc/op   delta
SimpleLoop/identity-precompile-10M-6    4.90MB ± 0%    2.46MB ± 0%  -49.83%  (p=0.008 n=5+5)
SimpleLoop/loop-10M-6                   13.2kB ± 0%    13.2kB ± 1%     ~     (p=0.571 n=5+5)

name                                  old allocs/op  new allocs/op  delta
SimpleLoop/identity-precompile-10M-6      153k ± 0%       76k ± 0%  -49.98%  (p=0.029 n=4+4)
SimpleLoop/loop-10M-6                     40.0 ± 0%      40.0 ± 0%     ~     (all equal)

* core/vm: reduce allocs in staticcall

name                                  old time/op    new time/op    delta
SimpleLoop/identity-precompile-10M-6    42.4ms ± 7%    37.5ms ± 6%  -11.68%  (p=0.008 n=5+5)
SimpleLoop/loop-10M-6                   76.7ms ± 1%    69.1ms ± 1%   -9.82%  (p=0.008 n=5+5)

name                                  old alloc/op   new alloc/op   delta
SimpleLoop/identity-precompile-10M-6    2.46MB ± 0%    0.02MB ± 0%  -99.35%  (p=0.008 n=5+5)
SimpleLoop/loop-10M-6                   13.2kB ± 1%    13.2kB ± 0%     ~     (p=0.143 n=5+5)

name                                  old allocs/op  new allocs/op  delta
SimpleLoop/identity-precompile-10M-6     76.4k ± 0%      0.1k ± 0%     ~     (p=0.079 n=4+5)
SimpleLoop/loop-10M-6                     40.0 ± 0%      40.0 ± 0%     ~     (all equal)

* trie: better use of hasher keccakState

* core/state/statedb: reduce allocations in getDeletedStateObject

* core/vm: reduce allocations in all call derivates

* core/vm: reduce allocations in call variants

- Make returnstack `uint32`
- Use a `sync.Pool` of `stack`s

* core/vm: fix tests

* core/vm: goimports

* core/vm: tracer fix + staticcall gas fix

* core/vm: add back snapshot to staticcall

* core/vm: review concerns + make returnstack pooled + enable returndata in traces

* core/vm: fix some test tracer method signatures

* core/vm: run gencodec, minor comment polish

Co-authored-by: Péter Szilágyi <peterke@gmail.com>
2020-07-16 15:06:19 +03:00
Marius van der Wijden
0c82928981
core/vm: fix incorrect computation of BLS discount (#21253)
* core/vm: fix incorrect computation of discount

During testing on Yolov1 we found that the way geth calculates the discount
is not in line with the specification. Basically what we did is calculate
128 * Bls12381GXMulGas * discount / 1000 whenever we received more than 128 pairs
of values. Correct would be to calculate k * Bls12381... for k > 128.

* core/vm: better logic for discount calculation

* core/vm: better calculation logic, added worstcase benchmarks

* core/vm: better benchmarking logic
2020-06-24 21:58:28 +02:00
Marius van der Wijden
55f30db0ae
core/vm, crypt/bls12381: fixed comments in bls (#21182)
* core/vm: crypto/bls12381: minor code comments

* crypto/bls12381: fix comment
2020-06-08 10:53:19 +03:00