mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-02-26 07:37:20 +00:00
core/vm: switch modexp gas computation to uint64 (#32527)
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>
This commit is contained in:
parent
d95ca2e056
commit
b381804eb1
3 changed files with 613 additions and 110 deletions
|
|
@ -24,6 +24,7 @@ import (
|
|||
"maps"
|
||||
"math"
|
||||
"math/big"
|
||||
"math/bits"
|
||||
|
||||
"github.com/consensys/gnark-crypto/ecc"
|
||||
bls12381 "github.com/consensys/gnark-crypto/ecc/bls12-381"
|
||||
|
|
@ -38,6 +39,7 @@ import (
|
|||
"github.com/ethereum/go-ethereum/crypto/kzg4844"
|
||||
"github.com/ethereum/go-ethereum/crypto/secp256r1"
|
||||
"github.com/ethereum/go-ethereum/params"
|
||||
"github.com/holiman/uint256"
|
||||
"golang.org/x/crypto/ripemd160"
|
||||
)
|
||||
|
||||
|
|
@ -378,21 +380,7 @@ type bigModExp struct {
|
|||
eip7883 bool
|
||||
}
|
||||
|
||||
var (
|
||||
big1 = big.NewInt(1)
|
||||
big3 = big.NewInt(3)
|
||||
big7 = big.NewInt(7)
|
||||
big20 = big.NewInt(20)
|
||||
big32 = big.NewInt(32)
|
||||
big64 = big.NewInt(64)
|
||||
big96 = big.NewInt(96)
|
||||
big480 = big.NewInt(480)
|
||||
big1024 = big.NewInt(1024)
|
||||
big3072 = big.NewInt(3072)
|
||||
big199680 = big.NewInt(199680)
|
||||
)
|
||||
|
||||
// modexpMultComplexity implements bigModexp multComplexity formula, as defined in EIP-198
|
||||
// byzantiumMultComplexity implements the bigModexp multComplexity formula, as defined in EIP-198.
|
||||
//
|
||||
// def mult_complexity(x):
|
||||
// if x <= 64: return x ** 2
|
||||
|
|
@ -400,120 +388,215 @@ var (
|
|||
// else: return x ** 2 // 16 + 480 * x - 199680
|
||||
//
|
||||
// where is x is max(length_of_MODULUS, length_of_BASE)
|
||||
func modexpMultComplexity(x *big.Int) *big.Int {
|
||||
// returns MaxUint64 if an overflow occurred.
|
||||
func byzantiumMultComplexity(x uint64) uint64 {
|
||||
switch {
|
||||
case x.Cmp(big64) <= 0:
|
||||
x.Mul(x, x) // x ** 2
|
||||
case x.Cmp(big1024) <= 0:
|
||||
// (x ** 2 // 4 ) + ( 96 * x - 3072)
|
||||
x = new(big.Int).Add(
|
||||
new(big.Int).Rsh(new(big.Int).Mul(x, x), 2),
|
||||
new(big.Int).Sub(new(big.Int).Mul(big96, x), big3072),
|
||||
)
|
||||
case x <= 64:
|
||||
return x * x
|
||||
case x <= 1024:
|
||||
// x^2 / 4 + 96*x - 3072
|
||||
return x*x/4 + 96*x - 3072
|
||||
|
||||
default:
|
||||
// (x ** 2 // 16) + (480 * x - 199680)
|
||||
x = new(big.Int).Add(
|
||||
new(big.Int).Rsh(new(big.Int).Mul(x, x), 4),
|
||||
new(big.Int).Sub(new(big.Int).Mul(big480, x), big199680),
|
||||
)
|
||||
// For large x, use uint256 arithmetic to avoid overflow
|
||||
// x^2 / 16 + 480*x - 199680
|
||||
|
||||
// xSqr = x^2 / 16
|
||||
carry, xSqr := bits.Mul64(x, x)
|
||||
if carry != 0 {
|
||||
return math.MaxUint64
|
||||
}
|
||||
xSqr = xSqr >> 4
|
||||
|
||||
// Calculate 480 * x (can't overflow if x^2 didn't overflow)
|
||||
x480 := x * 480
|
||||
// Calculate 480 * x - 199680 (will not underflow, since x > 1024)
|
||||
x480 = x480 - 199680
|
||||
|
||||
// xSqr + x480
|
||||
sum, carry := bits.Add64(xSqr, x480, 0)
|
||||
if carry != 0 {
|
||||
return math.MaxUint64
|
||||
}
|
||||
return sum
|
||||
}
|
||||
}
|
||||
|
||||
// berlinMultComplexity implements the multiplication complexity formula for Berlin.
|
||||
//
|
||||
// def mult_complexity(x):
|
||||
//
|
||||
// ceiling(x/8)^2
|
||||
//
|
||||
// where is x is max(length_of_MODULUS, length_of_BASE)
|
||||
func berlinMultComplexity(x uint64) uint64 {
|
||||
// x = (x + 7) / 8
|
||||
x, carry := bits.Add64(x, 7, 0)
|
||||
if carry != 0 {
|
||||
return math.MaxUint64
|
||||
}
|
||||
x /= 8
|
||||
|
||||
// x^2
|
||||
carry, x = bits.Mul64(x, x)
|
||||
if carry != 0 {
|
||||
return math.MaxUint64
|
||||
}
|
||||
return x
|
||||
}
|
||||
|
||||
// osakaMultComplexity implements the multiplication complexity formula for Osaka.
|
||||
//
|
||||
// For x <= 32: returns 16
|
||||
// For x > 32: returns 2 * ceiling(x/8)^2
|
||||
func osakaMultComplexity(x uint64) uint64 {
|
||||
if x <= 32 {
|
||||
return 16
|
||||
}
|
||||
// For x > 32, return 2 * berlinMultComplexity(x)
|
||||
result := berlinMultComplexity(x)
|
||||
carry, result := bits.Mul64(result, 2)
|
||||
if carry != 0 {
|
||||
return math.MaxUint64
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
// modexpIterationCount calculates the number of iterations for the modexp precompile.
|
||||
// This is the adjusted exponent length used in gas calculation.
|
||||
func modexpIterationCount(expLen uint64, expHead uint256.Int, multiplier uint64) uint64 {
|
||||
var iterationCount uint64
|
||||
|
||||
// For large exponents (expLen > 32), add (expLen - 32) * multiplier
|
||||
if expLen > 32 {
|
||||
iterationCount = (expLen - 32) * multiplier
|
||||
}
|
||||
|
||||
// Add the MSB position - 1 if expHead is non-zero
|
||||
if bitLen := expHead.BitLen(); bitLen > 0 {
|
||||
iterationCount += uint64(bitLen - 1)
|
||||
}
|
||||
|
||||
return max(iterationCount, 1)
|
||||
}
|
||||
|
||||
// byzantiumModexpGas calculates the gas cost for the modexp precompile using Byzantium rules.
|
||||
func byzantiumModexpGas(baseLen, expLen, modLen uint64, expHead uint256.Int) uint64 {
|
||||
const (
|
||||
multiplier = 8
|
||||
divisor = 20
|
||||
)
|
||||
|
||||
maxLen := max(baseLen, modLen)
|
||||
multComplexity := byzantiumMultComplexity(maxLen)
|
||||
if multComplexity == math.MaxUint64 {
|
||||
return math.MaxUint64
|
||||
}
|
||||
iterationCount := modexpIterationCount(expLen, expHead, multiplier)
|
||||
|
||||
// Calculate gas: (multComplexity * iterationCount) / divisor
|
||||
carry, gas := bits.Mul64(iterationCount, multComplexity)
|
||||
gas /= divisor
|
||||
if carry != 0 {
|
||||
return math.MaxUint64
|
||||
}
|
||||
return gas
|
||||
}
|
||||
|
||||
// berlinModexpGas calculates the gas cost for the modexp precompile using Berlin rules.
|
||||
func berlinModexpGas(baseLen, expLen, modLen uint64, expHead uint256.Int) uint64 {
|
||||
const (
|
||||
multiplier = 8
|
||||
divisor = 3
|
||||
minGas = 200
|
||||
)
|
||||
|
||||
maxLen := max(baseLen, modLen)
|
||||
multComplexity := berlinMultComplexity(maxLen)
|
||||
if multComplexity == math.MaxUint64 {
|
||||
return math.MaxUint64
|
||||
}
|
||||
iterationCount := modexpIterationCount(expLen, expHead, multiplier)
|
||||
|
||||
// Calculate gas: (multComplexity * iterationCount) / divisor
|
||||
carry, gas := bits.Mul64(iterationCount, multComplexity)
|
||||
gas /= divisor
|
||||
if carry != 0 {
|
||||
return math.MaxUint64
|
||||
}
|
||||
return max(gas, minGas)
|
||||
}
|
||||
|
||||
// osakaModexpGas calculates the gas cost for the modexp precompile using Osaka rules.
|
||||
func osakaModexpGas(baseLen, expLen, modLen uint64, expHead uint256.Int) uint64 {
|
||||
const (
|
||||
multiplier = 16
|
||||
divisor = 3
|
||||
minGas = 500
|
||||
)
|
||||
|
||||
maxLen := max(baseLen, modLen)
|
||||
multComplexity := osakaMultComplexity(maxLen)
|
||||
if multComplexity == math.MaxUint64 {
|
||||
return math.MaxUint64
|
||||
}
|
||||
iterationCount := modexpIterationCount(expLen, expHead, multiplier)
|
||||
|
||||
// Calculate gas: (multComplexity * iterationCount) / osakaDivisor
|
||||
carry, gas := bits.Mul64(iterationCount, multComplexity)
|
||||
if carry != 0 {
|
||||
return math.MaxUint64
|
||||
}
|
||||
return max(gas, minGas)
|
||||
}
|
||||
|
||||
// RequiredGas returns the gas required to execute the pre-compiled contract.
|
||||
func (c *bigModExp) RequiredGas(input []byte) uint64 {
|
||||
var (
|
||||
baseLen = new(big.Int).SetBytes(getData(input, 0, 32))
|
||||
expLen = new(big.Int).SetBytes(getData(input, 32, 32))
|
||||
modLen = new(big.Int).SetBytes(getData(input, 64, 32))
|
||||
)
|
||||
// Parse input lengths
|
||||
baseLenBig := new(uint256.Int).SetBytes(getData(input, 0, 32))
|
||||
expLenBig := new(uint256.Int).SetBytes(getData(input, 32, 32))
|
||||
modLenBig := new(uint256.Int).SetBytes(getData(input, 64, 32))
|
||||
|
||||
// Convert to uint64, capping at max value
|
||||
baseLen := baseLenBig.Uint64()
|
||||
if !baseLenBig.IsUint64() {
|
||||
baseLen = math.MaxUint64
|
||||
}
|
||||
expLen := expLenBig.Uint64()
|
||||
if !expLenBig.IsUint64() {
|
||||
expLen = math.MaxUint64
|
||||
}
|
||||
modLen := modLenBig.Uint64()
|
||||
if !modLenBig.IsUint64() {
|
||||
modLen = math.MaxUint64
|
||||
}
|
||||
|
||||
// Skip the header
|
||||
if len(input) > 96 {
|
||||
input = input[96:]
|
||||
} else {
|
||||
input = input[:0]
|
||||
}
|
||||
|
||||
// Retrieve the head 32 bytes of exp for the adjusted exponent length
|
||||
var expHead *big.Int
|
||||
if big.NewInt(int64(len(input))).Cmp(baseLen) <= 0 {
|
||||
expHead = new(big.Int)
|
||||
} else {
|
||||
if expLen.Cmp(big32) > 0 {
|
||||
expHead = new(big.Int).SetBytes(getData(input, baseLen.Uint64(), 32))
|
||||
var expHead uint256.Int
|
||||
if uint64(len(input)) > baseLen {
|
||||
if expLen > 32 {
|
||||
expHead.SetBytes(getData(input, baseLen, 32))
|
||||
} else {
|
||||
expHead = new(big.Int).SetBytes(getData(input, baseLen.Uint64(), expLen.Uint64()))
|
||||
// TODO: Check that if expLen < baseLen, then getData will return an empty slice
|
||||
expHead.SetBytes(getData(input, baseLen, expLen))
|
||||
}
|
||||
}
|
||||
// Calculate the adjusted exponent length
|
||||
var msb int
|
||||
if bitlen := expHead.BitLen(); bitlen > 0 {
|
||||
msb = bitlen - 1
|
||||
}
|
||||
adjExpLen := new(big.Int)
|
||||
if expLen.Cmp(big32) > 0 {
|
||||
adjExpLen.Sub(expLen, big32)
|
||||
if c.eip7883 {
|
||||
adjExpLen.Lsh(adjExpLen, 4)
|
||||
} else {
|
||||
adjExpLen.Lsh(adjExpLen, 3)
|
||||
}
|
||||
}
|
||||
adjExpLen.Add(adjExpLen, big.NewInt(int64(msb)))
|
||||
// Calculate the gas cost of the operation
|
||||
gas := new(big.Int)
|
||||
if modLen.Cmp(baseLen) < 0 {
|
||||
gas.Set(baseLen)
|
||||
|
||||
// Choose the appropriate gas calculation based on the EIP flags
|
||||
if c.eip7883 {
|
||||
return osakaModexpGas(baseLen, expLen, modLen, expHead)
|
||||
} else if c.eip2565 {
|
||||
return berlinModexpGas(baseLen, expLen, modLen, expHead)
|
||||
} else {
|
||||
gas.Set(modLen)
|
||||
return byzantiumModexpGas(baseLen, expLen, modLen, expHead)
|
||||
}
|
||||
|
||||
maxLenOver32 := gas.Cmp(big32) > 0
|
||||
if c.eip2565 {
|
||||
// EIP-2565 (Berlin fork) has three changes:
|
||||
//
|
||||
// 1. Different multComplexity (inlined here)
|
||||
// in EIP-2565 (https://eips.ethereum.org/EIPS/eip-2565):
|
||||
//
|
||||
// def mult_complexity(x):
|
||||
// ceiling(x/8)^2
|
||||
//
|
||||
// where is x is max(length_of_MODULUS, length_of_BASE)
|
||||
gas.Add(gas, big7)
|
||||
gas.Rsh(gas, 3)
|
||||
gas.Mul(gas, gas)
|
||||
|
||||
var minPrice uint64 = 200
|
||||
if c.eip7883 {
|
||||
minPrice = 500
|
||||
if maxLenOver32 {
|
||||
gas.Add(gas, gas)
|
||||
} else {
|
||||
gas = big.NewInt(16)
|
||||
}
|
||||
}
|
||||
|
||||
if adjExpLen.Cmp(big1) > 0 {
|
||||
gas.Mul(gas, adjExpLen)
|
||||
}
|
||||
// 2. Different divisor (`GQUADDIVISOR`) (3)
|
||||
if !c.eip7883 {
|
||||
gas.Div(gas, big3)
|
||||
}
|
||||
if gas.BitLen() > 64 {
|
||||
return math.MaxUint64
|
||||
}
|
||||
return max(minPrice, gas.Uint64())
|
||||
}
|
||||
|
||||
// Pre-Berlin logic.
|
||||
gas = modexpMultComplexity(gas)
|
||||
if adjExpLen.Cmp(big1) > 0 {
|
||||
gas.Mul(gas, adjExpLen)
|
||||
}
|
||||
gas.Div(gas, big20)
|
||||
if gas.BitLen() > 64 {
|
||||
return math.MaxUint64
|
||||
}
|
||||
return gas.Uint64()
|
||||
}
|
||||
|
||||
func (c *bigModExp) Run(input []byte) ([]byte, error) {
|
||||
|
|
|
|||
210
core/vm/testdata/precompiles/modexp_eip2565.json
vendored
210
core/vm/testdata/precompiles/modexp_eip2565.json
vendored
|
|
@ -117,5 +117,215 @@
|
|||
"Name": "nagydani-5-pow0x10001",
|
||||
"Gas": 87381,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000c1000000000000000000000000000000000000000000000000000000000000000cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000007d7d7d83828282348286877d7d827d407d797d7d7d7d7d7d7d7d7d7d7d5b00000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000021000000000000000000000000000000000000000000000000000000000000000cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4000007d7d7d83828282348286877d7d82",
|
||||
"Expected": "36a385a417859b5e178d3ab9",
|
||||
"Name": "marius-1-even",
|
||||
"Gas": 2057,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000d80000000000000000000000000000000000000000000000000000000000000010ffffffffffffffff76ffffffffffffff1cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c76ec7c7c7c7ffffffffffffffc7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7ffffffffffffc7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c76ec7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7ffffffffff3f000000000000000000000000",
|
||||
"Expected": "c3745de81615f80088ffffffffffffff",
|
||||
"Name": "guido-1-even",
|
||||
"Gas": 2298,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000d80000000000000000000000000000000000000000000000000000000000000010e0060000a921212121212121ff0000212b212121ffff1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f00feffff212121212121ffffffff1fe1e0e0e01e1f1f169f1f1f1f490afcefffffffffffffffff82828282828282828282828282828282828282828200ffff28ff2b212121ffff1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1fffffffffff0afceffffff7ffffffffff7c8282828282a1828282828282828282828282828200ffff28ff2b212121ffff1f1f1f1f1f1fd11f1f1f1f1f1f1f1f1f1f1fffffffffffffffff21212121212121fb2121212121ffff1f1f1f1f1f1f1f1fffaf82828282828200ffff28ff2b21828200",
|
||||
"Expected": "458ef0af2549d46d24c89079499479e1",
|
||||
"Name": "guido-2-even",
|
||||
"Gas": 2300,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "00000000000000000000000000000000000000000000000000000000000001e7000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000002cb0193585a48e18aad777e9c1b54221a0f58140392e4f091cd5f42b2e8644a9384fbd58ae1edec2477ebf7edbf7c0a3f8bd21d1890ee87646feab3c47be716f842cc3da9b940af312dc54450a960e3fc0b86e56abddd154068e10571a96fff6259431632bc15695c6c8679057e66c2c25c127e97e64ee5de6ea1fc0a4a0e431343fed1daafa072c238a45841da86a9806680bc9f298411173210790359209cd454b5af7b4d5688b4403924e5f863d97e2c5349e1a04b54fcf385b1e9d7714bab8fbf5835f6ff9ed575e77dff7af5cbb641db5d537933bae1fa6555d6c12d6fb31ca27b57771f4aebfbe0bf95e8990c0108ffe7cbdaf370be52cf3ade594543af75ad9329d2d11a402270b5b9a6bf4b83307506e118fca4862749d04e916fc7a039f0d13f2a02e0eedb800199ec95df15b4ccd8669b52586879624d51219e72102fad810b5909b1e372ddf33888fb9beb09b416e4164966edbabd89e4a286be36277fc576ed519a15643dac602e92b63d0b9121f0491da5b16ef793a967f096d80b6c81ecaaffad7e3f06a4a5ac2796f1ed9f68e6a0fd5cf191f0c5c2eec338952ff8d31abc68bf760febeb57e088995ba1d7726a2fdd6d8ca28a181378b8b4ab699bfd4b696739bbf17a9eb2df6251143046137fdbbfacac312ebf67a67da9741b596000000000000419a2917c61722b0713d3b00a2f0e1dd5aebbbe09615de424700eea3c3020fe6e9ea5de9fa1ace781df28b21f746d2ab61d0da496e08473c90ff7dfe25b43bcde76f4bafb82e0975bea75f5a0591dba80ba2fff80a07d8853bea5be13ab326ba70c57b153acc646151948d1cf061ca31b02d4719fac710e7c723ca44f5b1737824b7ccc74ba5bff980aabdbf267621cafc3d6dcc29d0ca9c16839a92ed34de136da7900aa3ee43d21aa57498981124357cf0ca9b86f9a8d3f9c604ca00c726e48f7a9945021ea6dfff92d6b2d6514693169ca133e993541bfa4c4c191de806aa80c48109bcfc9901eccfdeb2395ab75fe63c67de900829d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
||||
"Expected": "1194e971c875bb45f030316793bc6916343335b18670dfad7a4646fba99749b30283b78b818836de7400ff1a68ddad1a2dd850ec0f227441e2d4d13f5ee4b5d7a856db0a9ad1f86987e1f117d70f9e6a1a2b8d083fa82653aa16f1773b6deb2ed8a1f9e7f3a5db121c4a0c91cb954e2ec53e63422efe86c7984d79cd0e7b5e3eb8ca4980551d63f302c7d72500a84baf12c82fc7bd9b5c2ab8b9c33baf1df28b2031c58a8b2928a42c9f456e98874e22fe13cf17aa5915b11bb108b6ae40842d434604ccddcb4f64324c67b2dde32e6cd759d964f17d9cdf0046cd0ed3588e1fc4b88f67a5d4f3a870aad1cba89ead265d6ad327c8ea7ff54fe4b5e7dbe87c5c59c468543eab3675751111bfa1d6c51daf789d41dc21fd8ba9e05490f881a973a3c1567ff3129a49aa6658cf06f0a79530a7256ce5a07c2a77b4306383d538866bba376d90621c4f82d1f5f32304ee2b7170805d42418fc6967642e5648d8c64fe9c0fdff2d7c114a47add7767c8fccb8808de8c3c6e1a8880c05e16fafc1513fded8eba222dcaaa809bdb36999cc27ab8d0055009e9690e8a35b859df865dc510d25c7812d8eebbb35607ad595573f0fabd1b57970a2bc113ac6f0ca01e985032b9c2c139316ac099ed1632d2bc0fcc341343d303db2a9c3cf2ad572c6c43084b08d458bf822e92da16079f39cdb0dd10ef47f87ecae404117fc72660372cee9ea42266e7f8d973e7f6b09930ca5f96e04976bf23b9d356bbd2429597b04b7663e0e1a1228f4dfda3b854233e4888dc60c6886c1e0e8aec1705f681027b1e0b3017337557f107ef5cd272df5fd31dfec2bdffe163a8369895ffe124c0aa0ee00ca0fe1db4d5cf37b4af0e49bd73a89d88ced3d88f8e6f00d8e61ad09946d0e72cd3e25bc688a021a83758b5023daae7c269a6cbbd447aba5da7629b75801e1654ce85b8e21ccb9865654f8662e538625d75fea31000000000000000000000000000000000000000000000",
|
||||
"Name": "guido-3-even",
|
||||
"Gas": 5400,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000181000000000000000000000000000000000000000000000000000000000000000801ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2cffffffffffffffffffffffffffffffffffffffffffffffffffffffff3b10000000006c01ffffffffffffffffffffffffffffffffffffffffffffffdffffb97ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3bffffffffffffffffffffffffffffffffffffffffffffffffffffffffebafd93b37ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc5bb6affffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2a",
|
||||
"Expected": "0000000000000001",
|
||||
"Name": "guido-4-even",
|
||||
"Gas": 1026,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c0e8e77626586f73b955364c7b4bbf0bb7f7685ebd40e852b164633a4acbd3244c51f81bcdfc324a0dff2b5bec9d92e21cbebc4d5e29d3a3d30de3e03fbeab8d7f2ee5f854d076701c8753d72779187e404f9b2fb705c495137d78551250314a463ef5a213fe22de1cea28d60f518364ff95fe0b73660793e3efcfbe31bda68aeccc21cc9477a6aea5df8cae73422b700c47e54d892691e099167e77befc94780a920ae4155769cd69c30626f054134b5f003772473f57f84837402df6d166e66303f01681d2220bfea4bb888a5543db8c0916274ddb1ea93b144c042c01d8164c954b27ac388a17c8e9a7ba12a968f288f3308d6fe7bcdf28e685e9a2e00d8be1af19726b7662016d6404f9336493ad633777feb88c9d02a1d2428e566ac38f42c0bb66d2962ec349088ce0d03b35bf27f6114414ef558c87ad8e543754a352f7dffcaca429690688595ab1d1b349d9295b480a82f43ac5c9112fe40720545cc78501cd8b42f3605212fe06a835c9cbc0328e07e94aedb2ac11f6d6649e7fcd8c43",
|
||||
"Expected": "120cf297dbe810911c7d060e109e03699ccefa00a257d296c5a14b4180776c5f7c0d7f1cd789c694807689729af267b53f00373f395dee264a3daba11fcac1fa8875aee0950acd8fa656f1fc58077a7549d794dd160506ecea1acc9c0cda13795749c94f9973b683ce2162866e8d6b5b1165a4c7fa4234964d394d6ec4e0113698b89d173e24a962dd7a41a1819b0fef188ef64e7ee264595dce0d76fbc3ba42d5de833b143c8744366effede8bc8197e8f747ff8cdbc0bf1a93560bec960ca9",
|
||||
"Name": "marcin-1-base-heavy",
|
||||
"Gas": 200,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000005100000000000000000000000000000000000000000000000000000000000000080001020304050607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0001020304050607",
|
||||
"Expected": "0000000000000000",
|
||||
"Name": "marcin-1-exp-heavy",
|
||||
"Gas": 215,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "000000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000028e8e77626586f73b955364c7b4bbf0bb7f7685ebd40e852b164633a4acbd3244c000102030405060701fffffff01681d2220bfea4bb888a5543db8c0916274ddb1ea93b144c042c01d8164c950001020304050607",
|
||||
"Expected": "1abce71dc2205cce4eb6934397a88136f94641342e283cbcd30e929e85605c6718ed67f475192ffd",
|
||||
"Name": "marcin-1-balanced",
|
||||
"Gas": 200,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "000000000000000000000000000000000000000000000000000000000000019800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000198e8e77626586f73b955364c7b4bbf0bb7f7685ebd40e852b164633a4acbd3244c51f81bcdfc324a0dff2b5bec9d92e21cbebc4d5e29d3a3d30de3e03fbeab8d7f2ee5f854d076701c8753d72779187e404f9b2fb705c495137d78551250314a463ef5a213fe22de1cea28d60f518364ff95fe0b73660793e3efcfbe31bda68aeccc21cc9477a6aea5df8cae73422b700c47e54d892691e099167e77befc94780a920ae4155769cd69c30626f054134b5f003772473f57f84837402df6d166e663c29021b0e084f7dc16f6ec88cc597f1aea9f8e0b9501e0f7a546805d2a20eeda0bf080aeb3ed7ea6f9174d804bd242f0b31ff1ea24800344abb580cd87f61ca75a013a87733553966400242399dee3760877fead2cd87287747155e47a854acb50fe07922f57ae3b4553201bfd7c11aca85e1541f91db8e62dca9c418dc5feae086c9487350539c884510044efce5e3f2aaffca4215c12b9044506375097fecd9b22e2ef46f01f1af8aff742aebf96bdcaf55a341600971dc62555376b9e98a8000102030405060708090a0b0c0d0e0f101112131415161703f01681d2220bfea4bb888a5543db8c0916274ddb1ea93b144c042c01d8164c954b27ac388a17c8e9a7ba12a968f288f3308d6fe7bcdf28e685e9a2e00d8be1af19726b7662016d6404f9336493ad633777feb88c9d02a1d2428e566ac38f42c0bb66d2962ec349088ce0d03b35bf27f6114414ef558c87ad8e543754a352f7dffcaca429690688595ab1d1b349d9295b480a82f43ac5c9112fe40720545cc78501cd8b42f3605212fe06a835c9cbc0328e07e94aedb2ac11f6d6649e7fcd8c43ddce2bd0cdc6c22c4dcd345735040d5bfe3f09b7c61362089f728e2222db96cab2f2c2ccf43574f9e119f4860fd0f1b6036a43ad9db8a428ea09a4ee385112f3fe9c6656ea2cec604cbb5a9227526653bfa7035e4ae80010b1ba16a76608d5dde0a62bc019e9047b5ec05b1005fd017366130a4ba555e7be654561ee3f539c93cb2c9988fca71bf0ad9c4a426b924641a28e1e4adb93609bfa5b2bc81714cbba1110208b86d7b87be28bdf63a62e33ae81dbcc43de9192bd192c40e85faab539000102030405060708090a0b0c0d0e0f1011121314151617",
|
||||
"Expected": "817d05c4d540ace3f250fd082e2deb8c2097410fcfe4ce40862cfa015b7f62a7bb72ec1af2915cad66294447b45d177fe759eb80370b0dbd3c0e1c448d54db81eadc11e40c19e394d066a5c019c443798a98d4afd116fc220593d42fbf191b6af0ae75410badb641187ba24a0b968f742a75e2822853f137151d9ea972fd1f36b7c7cc4e71355ecf50648aec094b864cfae9316c0a7be3ddb8ab2d0050b2a029ee956c2366d49430c8f889f29ab514aea8e5b8dec40ba1b49432e30aee32ec45e96dd548205a79d8f8f918eed46acb2115c59086b1011b1d2b093cea723535c3d95efc8e51a7da43b80586d69eb7f213dfb06f7a8e789a9472392bd224411b50f8ca6f2862bcd63431912d1ff99c8d76408245da9e4bea649f0eb930b32922f2d0a345a206160be44d418f1a6c74bd49c4618392ef9350b264a461dfc684c7343211e27675b027054f1cb3d4a5b1a066d3a3ea2eed9caf13251d8be936818f15274e8e3d7539b7c5f216cef327a270fd2a886fbf679c163fb5806249f2c74da5ee0e3ffe9ad1fde2634b29b35da6da6d184ab6ae70199229",
|
||||
"Name": "marcin-2-base-heavy",
|
||||
"Gas": 867,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000010000102030405060708090a0b0c0d0e0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000102030405060708090a0b0c0d0e0f",
|
||||
"Expected": "00000000000000000000000000000000",
|
||||
"Name": "marcin-2-exp-heavy",
|
||||
"Gas": 852,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "000000000000000000000000000000000000000000000000000000000000003800000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000038e8e77626586f73b955364c7b4bbf0bb7f7685ebd40e852b164633a4acbd3244c000102030405060708090a0b0c0d0e0f10111213141516172bfffffffffffffff01681d2220bfea4bb888a5543db8c0916274ddb1ea93b144c042c01d8164c95000102030405060708090a0b0c0d0e0f1011121314151617",
|
||||
"Expected": "86bef3367fc7117c8a6b825cadebe80f3e94c321dda73e9e240b98188a1d5c071c60a195097c8d1fb85ce03a2e1b6964846edee5aa2c3f46",
|
||||
"Name": "marcin-2-balanced",
|
||||
"Gas": 996,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020e8e77626586f73b955364c7b4bbf0bb7f7685ebd40e852b164633a4acbd3244cfffffffffffffffffffffffffffffffff01681d2220bfea4bb888a5543db8c0916274ddb1ea93b144c042c01d8164c95",
|
||||
"Expected": "4004762c491606a5132134da6086284f74cc8e14b08f18b90fc09f31bca3d78f",
|
||||
"Name": "marcin-3-base-heavy",
|
||||
"Gas": 677,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000018000102030405060708090a0b0c0d0e0f1011121314151617ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000102030405060708090a0b0c0d0e0f1011121314151617",
|
||||
"Expected": "000000000000000000000000000000000000000000000000",
|
||||
"Name": "marcin-3-exp-heavy",
|
||||
"Gas": 765,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020e8e77626586f73b955364c7b4bbf0bb7f7685ebd40e852b164633a4acbd3244cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01681d2220bfea4bb888a5543db8c0916274ddb1ea93b144c042c01d8164c95",
|
||||
"Expected": "2d3feee20d394af68dd6744b86a8aca6a4a0b7f01bbcd3c3eec768245ca6acee",
|
||||
"Name": "marcin-3-balanced",
|
||||
"Gas": 1360,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "00000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000051000000000000000000000000000000000000000000000000000000000000000800ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00",
|
||||
"Expected": "00ffffffffffffff",
|
||||
"Name": "mod-8-exp-648",
|
||||
"Gas": 215,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "00000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000000800ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00",
|
||||
"Expected": "00ffffffffffffff",
|
||||
"Name": "mod-8-exp-896",
|
||||
"Gas": 298,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00",
|
||||
"Expected": "00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"Name": "mod-32-exp-32",
|
||||
"Gas": 200,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000002000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00",
|
||||
"Expected": "00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"Name": "mod-32-exp-36",
|
||||
"Gas": 200,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000002000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00",
|
||||
"Expected": "00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"Name": "mod-32-exp-40",
|
||||
"Gas": 208,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00",
|
||||
"Expected": "00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"Name": "mod-32-exp-64",
|
||||
"Gas": 336,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000000000000000000002000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00",
|
||||
"Expected": "00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"Name": "mod-32-exp-65",
|
||||
"Gas": 341,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00",
|
||||
"Expected": "00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"Name": "mod-32-exp-128",
|
||||
"Gas": 677,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "00000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000010000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00",
|
||||
"Expected": "02fd01000000000000000000000000000000fefffffffffffd03ff0000000000000000000000000000000000000000000000fefffffffffffd03ff0000000000000000000000000000000000000000000000fefffffffffffd03ff0000000000000000000000000000000000000000000000fefffffffffffd03ff0000000000000000000000000000000000000000000000fefffffffffffd03ff0000000000000000000000000000000000000000000000fefffffffffffd03ff0000000000000000000000000000000000000000000000fefffffffffffd03ff0000000000000000000000000000000000000000000000fefffffffffffd03feffffffffff",
|
||||
"Name": "mod-256-exp-2",
|
||||
"Gas": 341,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "00000000000000000000000000000000000000000000000000000000000001080000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000010800ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00",
|
||||
"Expected": "0100fefffffffffffff710f80000000006f108000000000000feffffffffffff0100fefffffffffffef90ff80000000105f008ffffffffff02fdffffffffffff0100feffffffffff00f80ff80000010101f407fffffffd06fc0000000000fd020000feffffffff00fff80ff8000101fa08f207fffffb0afa0000000001fb03000000feffffff00fffff80ff80102f80405f207fff90ef80000000002f90400000000feffff00fffffff80ff903f6050005f207f712f60000000003f7050000000000feff00fffffffff810fcf406000005f1fd16f40000000004f506000000000000fe00fffffffffff915ea0700000005e522f20000000005f306ffffffffffffffffffffffffff",
|
||||
"Name": "mod-264-exp-2",
|
||||
"Gas": 363,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "00000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000040000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00",
|
||||
"Expected": "00fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02feffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"Name": "mod-1024-exp-2",
|
||||
"Gas": 5461,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000008ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"Expected": "2a02d5f86c2375ff",
|
||||
"Name": "pawel-1-exp-heavy",
|
||||
"Gas": 298,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"Expected": "823ef7dc60d6d9616756c48f69b7c4ff",
|
||||
"Name": "pawel-2-exp-heavy",
|
||||
"Gas": 425,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000150000000000000000000000000000000000000000000000000000000000000018ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"Expected": "c817dd5aa60a41948eed409706c2aa97be3000d4da0261ff",
|
||||
"Name": "pawel-3-exp-heavy",
|
||||
"Gas": 501,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000020ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"Expected": "2defaca0137d6edacbbd5d36d6ed70cbf8a998ffb19fc270d45a18d37e0f35ff",
|
||||
"Name": "pawel-4-exp-heavy",
|
||||
"Gas": 506,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "000000000000000000000000000000000000000000000000000000000000001700000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000017bffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffe",
|
||||
"Expected": "200f14de1d474710c1c979920452e0ffc2ac6f618afba5",
|
||||
"Name": "mod_vul_pawel_3_exp_8",
|
||||
"Gas": 200,
|
||||
"NoBenchmark": false
|
||||
}
|
||||
]
|
||||
210
core/vm/testdata/precompiles/modexp_eip7883.json
vendored
210
core/vm/testdata/precompiles/modexp_eip7883.json
vendored
|
|
@ -103,5 +103,215 @@
|
|||
"Name": "nagydani-5-pow0x10001",
|
||||
"Gas": 524288,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000c1000000000000000000000000000000000000000000000000000000000000000cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000007d7d7d83828282348286877d7d827d407d797d7d7d7d7d7d7d7d7d7d7d5b00000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000021000000000000000000000000000000000000000000000000000000000000000cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4000007d7d7d83828282348286877d7d82",
|
||||
"Expected": "36a385a417859b5e178d3ab9",
|
||||
"Name": "marius-1-even",
|
||||
"Gas": 45296,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000d80000000000000000000000000000000000000000000000000000000000000010ffffffffffffffff76ffffffffffffff1cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c76ec7c7c7c7ffffffffffffffc7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7ffffffffffffc7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c76ec7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7ffffffffff3f000000000000000000000000",
|
||||
"Expected": "c3745de81615f80088ffffffffffffff",
|
||||
"Name": "guido-1-even",
|
||||
"Gas": 51136,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000d80000000000000000000000000000000000000000000000000000000000000010e0060000a921212121212121ff0000212b212121ffff1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f00feffff212121212121ffffffff1fe1e0e0e01e1f1f169f1f1f1f490afcefffffffffffffffff82828282828282828282828282828282828282828200ffff28ff2b212121ffff1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1fffffffffff0afceffffff7ffffffffff7c8282828282a1828282828282828282828282828200ffff28ff2b212121ffff1f1f1f1f1f1fd11f1f1f1f1f1f1f1f1f1f1fffffffffffffffff21212121212121fb2121212121ffff1f1f1f1f1f1f1f1fffaf82828282828200ffff28ff2b21828200",
|
||||
"Expected": "458ef0af2549d46d24c89079499479e1",
|
||||
"Name": "guido-2-even",
|
||||
"Gas": 51152,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "00000000000000000000000000000000000000000000000000000000000001e7000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000002cb0193585a48e18aad777e9c1b54221a0f58140392e4f091cd5f42b2e8644a9384fbd58ae1edec2477ebf7edbf7c0a3f8bd21d1890ee87646feab3c47be716f842cc3da9b940af312dc54450a960e3fc0b86e56abddd154068e10571a96fff6259431632bc15695c6c8679057e66c2c25c127e97e64ee5de6ea1fc0a4a0e431343fed1daafa072c238a45841da86a9806680bc9f298411173210790359209cd454b5af7b4d5688b4403924e5f863d97e2c5349e1a04b54fcf385b1e9d7714bab8fbf5835f6ff9ed575e77dff7af5cbb641db5d537933bae1fa6555d6c12d6fb31ca27b57771f4aebfbe0bf95e8990c0108ffe7cbdaf370be52cf3ade594543af75ad9329d2d11a402270b5b9a6bf4b83307506e118fca4862749d04e916fc7a039f0d13f2a02e0eedb800199ec95df15b4ccd8669b52586879624d51219e72102fad810b5909b1e372ddf33888fb9beb09b416e4164966edbabd89e4a286be36277fc576ed519a15643dac602e92b63d0b9121f0491da5b16ef793a967f096d80b6c81ecaaffad7e3f06a4a5ac2796f1ed9f68e6a0fd5cf191f0c5c2eec338952ff8d31abc68bf760febeb57e088995ba1d7726a2fdd6d8ca28a181378b8b4ab699bfd4b696739bbf17a9eb2df6251143046137fdbbfacac312ebf67a67da9741b596000000000000419a2917c61722b0713d3b00a2f0e1dd5aebbbe09615de424700eea3c3020fe6e9ea5de9fa1ace781df28b21f746d2ab61d0da496e08473c90ff7dfe25b43bcde76f4bafb82e0975bea75f5a0591dba80ba2fff80a07d8853bea5be13ab326ba70c57b153acc646151948d1cf061ca31b02d4719fac710e7c723ca44f5b1737824b7ccc74ba5bff980aabdbf267621cafc3d6dcc29d0ca9c16839a92ed34de136da7900aa3ee43d21aa57498981124357cf0ca9b86f9a8d3f9c604ca00c726e48f7a9945021ea6dfff92d6b2d6514693169ca133e993541bfa4c4c191de806aa80c48109bcfc9901eccfdeb2395ab75fe63c67de900829d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
||||
"Expected": "1194e971c875bb45f030316793bc6916343335b18670dfad7a4646fba99749b30283b78b818836de7400ff1a68ddad1a2dd850ec0f227441e2d4d13f5ee4b5d7a856db0a9ad1f86987e1f117d70f9e6a1a2b8d083fa82653aa16f1773b6deb2ed8a1f9e7f3a5db121c4a0c91cb954e2ec53e63422efe86c7984d79cd0e7b5e3eb8ca4980551d63f302c7d72500a84baf12c82fc7bd9b5c2ab8b9c33baf1df28b2031c58a8b2928a42c9f456e98874e22fe13cf17aa5915b11bb108b6ae40842d434604ccddcb4f64324c67b2dde32e6cd759d964f17d9cdf0046cd0ed3588e1fc4b88f67a5d4f3a870aad1cba89ead265d6ad327c8ea7ff54fe4b5e7dbe87c5c59c468543eab3675751111bfa1d6c51daf789d41dc21fd8ba9e05490f881a973a3c1567ff3129a49aa6658cf06f0a79530a7256ce5a07c2a77b4306383d538866bba376d90621c4f82d1f5f32304ee2b7170805d42418fc6967642e5648d8c64fe9c0fdff2d7c114a47add7767c8fccb8808de8c3c6e1a8880c05e16fafc1513fded8eba222dcaaa809bdb36999cc27ab8d0055009e9690e8a35b859df865dc510d25c7812d8eebbb35607ad595573f0fabd1b57970a2bc113ac6f0ca01e985032b9c2c139316ac099ed1632d2bc0fcc341343d303db2a9c3cf2ad572c6c43084b08d458bf822e92da16079f39cdb0dd10ef47f87ecae404117fc72660372cee9ea42266e7f8d973e7f6b09930ca5f96e04976bf23b9d356bbd2429597b04b7663e0e1a1228f4dfda3b854233e4888dc60c6886c1e0e8aec1705f681027b1e0b3017337557f107ef5cd272df5fd31dfec2bdffe163a8369895ffe124c0aa0ee00ca0fe1db4d5cf37b4af0e49bd73a89d88ced3d88f8e6f00d8e61ad09946d0e72cd3e25bc688a021a83758b5023daae7c269a6cbbd447aba5da7629b75801e1654ce85b8e21ccb9865654f8662e538625d75fea31000000000000000000000000000000000000000000000",
|
||||
"Name": "guido-3-even",
|
||||
"Gas": 32400,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000181000000000000000000000000000000000000000000000000000000000000000801ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2cffffffffffffffffffffffffffffffffffffffffffffffffffffffff3b10000000006c01ffffffffffffffffffffffffffffffffffffffffffffffdffffb97ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3bffffffffffffffffffffffffffffffffffffffffffffffffffffffffebafd93b37ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc5bb6affffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2a",
|
||||
"Expected": "0000000000000001",
|
||||
"Name": "guido-4-even",
|
||||
"Gas": 94448,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c0e8e77626586f73b955364c7b4bbf0bb7f7685ebd40e852b164633a4acbd3244c51f81bcdfc324a0dff2b5bec9d92e21cbebc4d5e29d3a3d30de3e03fbeab8d7f2ee5f854d076701c8753d72779187e404f9b2fb705c495137d78551250314a463ef5a213fe22de1cea28d60f518364ff95fe0b73660793e3efcfbe31bda68aeccc21cc9477a6aea5df8cae73422b700c47e54d892691e099167e77befc94780a920ae4155769cd69c30626f054134b5f003772473f57f84837402df6d166e66303f01681d2220bfea4bb888a5543db8c0916274ddb1ea93b144c042c01d8164c954b27ac388a17c8e9a7ba12a968f288f3308d6fe7bcdf28e685e9a2e00d8be1af19726b7662016d6404f9336493ad633777feb88c9d02a1d2428e566ac38f42c0bb66d2962ec349088ce0d03b35bf27f6114414ef558c87ad8e543754a352f7dffcaca429690688595ab1d1b349d9295b480a82f43ac5c9112fe40720545cc78501cd8b42f3605212fe06a835c9cbc0328e07e94aedb2ac11f6d6649e7fcd8c43",
|
||||
"Expected": "120cf297dbe810911c7d060e109e03699ccefa00a257d296c5a14b4180776c5f7c0d7f1cd789c694807689729af267b53f00373f395dee264a3daba11fcac1fa8875aee0950acd8fa656f1fc58077a7549d794dd160506ecea1acc9c0cda13795749c94f9973b683ce2162866e8d6b5b1165a4c7fa4234964d394d6ec4e0113698b89d173e24a962dd7a41a1819b0fef188ef64e7ee264595dce0d76fbc3ba42d5de833b143c8744366effede8bc8197e8f747ff8cdbc0bf1a93560bec960ca9",
|
||||
"Name": "marcin-1-base-heavy",
|
||||
"Gas": 1152,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000005100000000000000000000000000000000000000000000000000000000000000080001020304050607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0001020304050607",
|
||||
"Expected": "0000000000000000",
|
||||
"Name": "marcin-1-exp-heavy",
|
||||
"Gas": 16624,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "000000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000028e8e77626586f73b955364c7b4bbf0bb7f7685ebd40e852b164633a4acbd3244c000102030405060701fffffff01681d2220bfea4bb888a5543db8c0916274ddb1ea93b144c042c01d8164c950001020304050607",
|
||||
"Expected": "1abce71dc2205cce4eb6934397a88136f94641342e283cbcd30e929e85605c6718ed67f475192ffd",
|
||||
"Name": "marcin-1-balanced",
|
||||
"Gas": 1200,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "000000000000000000000000000000000000000000000000000000000000019800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000198e8e77626586f73b955364c7b4bbf0bb7f7685ebd40e852b164633a4acbd3244c51f81bcdfc324a0dff2b5bec9d92e21cbebc4d5e29d3a3d30de3e03fbeab8d7f2ee5f854d076701c8753d72779187e404f9b2fb705c495137d78551250314a463ef5a213fe22de1cea28d60f518364ff95fe0b73660793e3efcfbe31bda68aeccc21cc9477a6aea5df8cae73422b700c47e54d892691e099167e77befc94780a920ae4155769cd69c30626f054134b5f003772473f57f84837402df6d166e663c29021b0e084f7dc16f6ec88cc597f1aea9f8e0b9501e0f7a546805d2a20eeda0bf080aeb3ed7ea6f9174d804bd242f0b31ff1ea24800344abb580cd87f61ca75a013a87733553966400242399dee3760877fead2cd87287747155e47a854acb50fe07922f57ae3b4553201bfd7c11aca85e1541f91db8e62dca9c418dc5feae086c9487350539c884510044efce5e3f2aaffca4215c12b9044506375097fecd9b22e2ef46f01f1af8aff742aebf96bdcaf55a341600971dc62555376b9e98a8000102030405060708090a0b0c0d0e0f101112131415161703f01681d2220bfea4bb888a5543db8c0916274ddb1ea93b144c042c01d8164c954b27ac388a17c8e9a7ba12a968f288f3308d6fe7bcdf28e685e9a2e00d8be1af19726b7662016d6404f9336493ad633777feb88c9d02a1d2428e566ac38f42c0bb66d2962ec349088ce0d03b35bf27f6114414ef558c87ad8e543754a352f7dffcaca429690688595ab1d1b349d9295b480a82f43ac5c9112fe40720545cc78501cd8b42f3605212fe06a835c9cbc0328e07e94aedb2ac11f6d6649e7fcd8c43ddce2bd0cdc6c22c4dcd345735040d5bfe3f09b7c61362089f728e2222db96cab2f2c2ccf43574f9e119f4860fd0f1b6036a43ad9db8a428ea09a4ee385112f3fe9c6656ea2cec604cbb5a9227526653bfa7035e4ae80010b1ba16a76608d5dde0a62bc019e9047b5ec05b1005fd017366130a4ba555e7be654561ee3f539c93cb2c9988fca71bf0ad9c4a426b924641a28e1e4adb93609bfa5b2bc81714cbba1110208b86d7b87be28bdf63a62e33ae81dbcc43de9192bd192c40e85faab539000102030405060708090a0b0c0d0e0f1011121314151617",
|
||||
"Expected": "817d05c4d540ace3f250fd082e2deb8c2097410fcfe4ce40862cfa015b7f62a7bb72ec1af2915cad66294447b45d177fe759eb80370b0dbd3c0e1c448d54db81eadc11e40c19e394d066a5c019c443798a98d4afd116fc220593d42fbf191b6af0ae75410badb641187ba24a0b968f742a75e2822853f137151d9ea972fd1f36b7c7cc4e71355ecf50648aec094b864cfae9316c0a7be3ddb8ab2d0050b2a029ee956c2366d49430c8f889f29ab514aea8e5b8dec40ba1b49432e30aee32ec45e96dd548205a79d8f8f918eed46acb2115c59086b1011b1d2b093cea723535c3d95efc8e51a7da43b80586d69eb7f213dfb06f7a8e789a9472392bd224411b50f8ca6f2862bcd63431912d1ff99c8d76408245da9e4bea649f0eb930b32922f2d0a345a206160be44d418f1a6c74bd49c4618392ef9350b264a461dfc684c7343211e27675b027054f1cb3d4a5b1a066d3a3ea2eed9caf13251d8be936818f15274e8e3d7539b7c5f216cef327a270fd2a886fbf679c163fb5806249f2c74da5ee0e3ffe9ad1fde2634b29b35da6da6d184ab6ae70199229",
|
||||
"Name": "marcin-2-base-heavy",
|
||||
"Gas": 5202,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000010000102030405060708090a0b0c0d0e0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000102030405060708090a0b0c0d0e0f",
|
||||
"Expected": "00000000000000000000000000000000",
|
||||
"Name": "marcin-2-exp-heavy",
|
||||
"Gas": 16368,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "000000000000000000000000000000000000000000000000000000000000003800000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000038e8e77626586f73b955364c7b4bbf0bb7f7685ebd40e852b164633a4acbd3244c000102030405060708090a0b0c0d0e0f10111213141516172bfffffffffffffff01681d2220bfea4bb888a5543db8c0916274ddb1ea93b144c042c01d8164c95000102030405060708090a0b0c0d0e0f1011121314151617",
|
||||
"Expected": "86bef3367fc7117c8a6b825cadebe80f3e94c321dda73e9e240b98188a1d5c071c60a195097c8d1fb85ce03a2e1b6964846edee5aa2c3f46",
|
||||
"Name": "marcin-2-balanced",
|
||||
"Gas": 5978,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020e8e77626586f73b955364c7b4bbf0bb7f7685ebd40e852b164633a4acbd3244cfffffffffffffffffffffffffffffffff01681d2220bfea4bb888a5543db8c0916274ddb1ea93b144c042c01d8164c95",
|
||||
"Expected": "4004762c491606a5132134da6086284f74cc8e14b08f18b90fc09f31bca3d78f",
|
||||
"Name": "marcin-3-base-heavy",
|
||||
"Gas": 2032,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000018000102030405060708090a0b0c0d0e0f1011121314151617ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000102030405060708090a0b0c0d0e0f1011121314151617",
|
||||
"Expected": "000000000000000000000000000000000000000000000000",
|
||||
"Name": "marcin-3-exp-heavy",
|
||||
"Gas": 4080,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020e8e77626586f73b955364c7b4bbf0bb7f7685ebd40e852b164633a4acbd3244cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01681d2220bfea4bb888a5543db8c0916274ddb1ea93b144c042c01d8164c95",
|
||||
"Expected": "2d3feee20d394af68dd6744b86a8aca6a4a0b7f01bbcd3c3eec768245ca6acee",
|
||||
"Name": "marcin-3-balanced",
|
||||
"Gas": 4080,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "00000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000051000000000000000000000000000000000000000000000000000000000000000800ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00",
|
||||
"Expected": "00ffffffffffffff",
|
||||
"Name": "mod-8-exp-648",
|
||||
"Gas": 16624,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "00000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000000800ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00",
|
||||
"Expected": "00ffffffffffffff",
|
||||
"Name": "mod-8-exp-896",
|
||||
"Gas": 24560,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00",
|
||||
"Expected": "00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"Name": "mod-32-exp-32",
|
||||
"Gas": 500,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000002000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00",
|
||||
"Expected": "00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"Name": "mod-32-exp-36",
|
||||
"Gas": 560,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000002000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00",
|
||||
"Expected": "00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"Name": "mod-32-exp-40",
|
||||
"Gas": 624,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00",
|
||||
"Expected": "00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"Name": "mod-32-exp-64",
|
||||
"Gas": 1008,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000000000000000000002000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00",
|
||||
"Expected": "00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"Name": "mod-32-exp-65",
|
||||
"Gas": 1024,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00",
|
||||
"Expected": "00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"Name": "mod-32-exp-128",
|
||||
"Gas": 2032,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "00000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000010000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00",
|
||||
"Expected": "02fd01000000000000000000000000000000fefffffffffffd03ff0000000000000000000000000000000000000000000000fefffffffffffd03ff0000000000000000000000000000000000000000000000fefffffffffffd03ff0000000000000000000000000000000000000000000000fefffffffffffd03ff0000000000000000000000000000000000000000000000fefffffffffffd03ff0000000000000000000000000000000000000000000000fefffffffffffd03ff0000000000000000000000000000000000000000000000fefffffffffffd03ff0000000000000000000000000000000000000000000000fefffffffffffd03feffffffffff",
|
||||
"Name": "mod-256-exp-2",
|
||||
"Gas": 2048,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "00000000000000000000000000000000000000000000000000000000000001080000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000010800ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff00",
|
||||
"Expected": "0100fefffffffffffff710f80000000006f108000000000000feffffffffffff0100fefffffffffffef90ff80000000105f008ffffffffff02fdffffffffffff0100feffffffffff00f80ff80000010101f407fffffffd06fc0000000000fd020000feffffffff00fff80ff8000101fa08f207fffffb0afa0000000001fb03000000feffffff00fffff80ff80102f80405f207fff90ef80000000002f90400000000feffff00fffffff80ff903f6050005f207f712f60000000003f7050000000000feff00fffffffff810fcf406000005f1fd16f40000000004f506000000000000fe00fffffffffff915ea0700000005e522f20000000005f306ffffffffffffffffffffffffff",
|
||||
"Name": "mod-264-exp-2",
|
||||
"Gas": 2178,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "00000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000040000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00",
|
||||
"Expected": "00fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02fefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02feffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"Name": "mod-1024-exp-2",
|
||||
"Gas": 32768,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000008ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"Expected": "2a02d5f86c2375ff",
|
||||
"Name": "pawel-1-exp-heavy",
|
||||
"Gas": 24560,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000010ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"Expected": "823ef7dc60d6d9616756c48f69b7c4ff",
|
||||
"Name": "pawel-2-exp-heavy",
|
||||
"Gas": 6128,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000150000000000000000000000000000000000000000000000000000000000000018ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"Expected": "c817dd5aa60a41948eed409706c2aa97be3000d4da0261ff",
|
||||
"Name": "pawel-3-exp-heavy",
|
||||
"Gas": 2672,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000020ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"Expected": "2defaca0137d6edacbbd5d36d6ed70cbf8a998ffb19fc270d45a18d37e0f35ff",
|
||||
"Name": "pawel-4-exp-heavy",
|
||||
"Gas": 1520,
|
||||
"NoBenchmark": false
|
||||
},
|
||||
{
|
||||
"Input": "000000000000000000000000000000000000000000000000000000000000001700000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000017bffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffe",
|
||||
"Expected": "200f14de1d474710c1c979920452e0ffc2ac6f618afba5",
|
||||
"Name": "mod_vul_pawel_3_exp_8",
|
||||
"Gas": 1008,
|
||||
"NoBenchmark": false
|
||||
}
|
||||
]
|
||||
|
|
|
|||
Loading…
Reference in a new issue