From b810422486aeb241117f3bae6b45ca076d645b0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mamy=20Andr=C3=A9-Ratsimbazafy?= Date: Sun, 15 Mar 2020 20:54:14 +0100 Subject: [PATCH] Add benchmark for Ethereum 1 and Ethereum 2 curves --- bench_eth_curves_clang_old | Bin 0 -> 112960 bytes bench_eth_curves_gcc_old | Bin 0 -> 140920 bytes benchmarks/bench_eth_curves.nim | 6 ++ benchmarks/bn254_fp.nim | 140 ++++++++++++++++++++++++++++++++ benchmarks/secp256k1_fp.nim | 140 ++++++++++++++++++++++++++++++++ 5 files changed, 286 insertions(+) create mode 100755 bench_eth_curves_clang_old create mode 100755 bench_eth_curves_gcc_old create mode 100644 benchmarks/bench_eth_curves.nim create mode 100644 benchmarks/bn254_fp.nim create mode 100644 benchmarks/secp256k1_fp.nim diff --git a/bench_eth_curves_clang_old b/bench_eth_curves_clang_old new file mode 100755 index 0000000000000000000000000000000000000000..f690889f31af404f06019929a8c36754f178e095 GIT binary patch literal 112960 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 literal 0 HcmV?d00001 diff --git a/bench_eth_curves_gcc_old b/bench_eth_curves_gcc_old new file mode 100755 index 0000000000000000000000000000000000000000..f4fef0c0537847342ddc66e56b39f3f0c854b02b GIT binary patch literal 140920 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 W#Mp43l>V=NT9j&jEWy}M<^Kb_Qu$~A literal 0 HcmV?d00001 diff --git a/benchmarks/bench_eth_curves.nim b/benchmarks/bench_eth_curves.nim new file mode 100644 index 0000000..2caf0e0 --- /dev/null +++ b/benchmarks/bench_eth_curves.nim @@ -0,0 +1,6 @@ +# Benchmark of Ethereum 1 and Ethereum 2 elliptic curves + +import + ./secp256k1_fp, + ./bn254_fp, + ./bls12_381_fp diff --git a/benchmarks/bn254_fp.nim b/benchmarks/bn254_fp.nim new file mode 100644 index 0000000..4f0880d --- /dev/null +++ b/benchmarks/bn254_fp.nim @@ -0,0 +1,140 @@ +# Constantine +# Copyright (c) 2018-2019 Status Research & Development GmbH +# Copyright (c) 2020-Present Mamy André-Ratsimbazafy +# Licensed and distributed under either of +# * MIT license (license terms in the root directory or at http://opensource.org/licenses/MIT). +# * Apache v2 license (license terms in the root directory or at http://www.apache.org/licenses/LICENSE-2.0). +# at your option. This file may not be copied, modified, or distributed except according to those terms. + +# ############################################################ +# +# Benchmark of modular exponentiation +# +# ############################################################ + +# 2 implementations are available +# - 1 is constant time +# - 1 exposes the exponent bits to: +# timing attack, +# memory access analysis, +# power analysis (i.e. oscilloscopes on embedded) +# It is suitable for public exponents for example +# to compute modular inversion via the Fermat method + +import + ../constantine/config/[common, curves], + ../constantine/arithmetic/[bigints_checked, finite_fields], + ../constantine/io/[io_bigints, io_fields], + random, std/monotimes, times, strformat, + ./timers + +const Iters = 1_000_000 +const InvIters = 1000 + +randomize(1234) + +echo "\n⚠️ Measurements are approximate and use the CPU nominal clock: Turbo-Boost and overclocking will skew them." +echo "==========================================================================================================\n" + +proc report(op, field: string, start, stop: MonoTime, startClk, stopClk: int64, iters: int) = + echo &"{op:<15} {field:<15} {inNanoseconds((stop-start) div iters):>9} ns {(stopClk - startClk) div iters:>9} cycles" + +proc addBench() = + var x, y: Fp[BN254] + # BN254 field modulus + x.fromHex("0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47") + # Truncated BLS12-381 prime + y.fromHex("0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f624") + + let start = getMonotime() + let startClk = getTicks() + for _ in 0 ..< Iters: + x += y + let stopClk = getTicks() + let stop = getMonotime() + report("Addition", "Fp[BN254]", start, stop, startClk, stopClk, Iters) + + +addBench() + +proc subBench() = + var x, y: Fp[BN254] + # BN254 field modulus + x.fromHex("0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47") + # Truncated BLS12-381 prime + y.fromHex("0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f624") + + let start = getMonotime() + let startClk = getTicks() + for _ in 0 ..< Iters: + x -= y + let stopClk = getTicks() + let stop = getMonotime() + report("Substraction", "Fp[BN254]", start, stop, startClk, stopClk, Iters) + +subBench() + +proc negBench() = + var r, x: Fp[BN254] + # BN254 field modulus + x.fromHex("0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47") + + let start = getMonotime() + let startClk = getTicks() + for _ in 0 ..< Iters: + r.neg(x) + let stopClk = getTicks() + let stop = getMonotime() + report("Negation", "Fp[BN254]", start, stop, startClk, stopClk, Iters) + +negBench() + +proc mulBench() = + var r, x, y: Fp[BN254] + # BN254 field modulus + x.fromHex("0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47") + # Truncated BLS12-381 prime + y.fromHex("0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f624") + + let start = getMonotime() + let startClk = getTicks() + for _ in 0 ..< Iters: + r.prod(x, y) + let stopClk = getTicks() + let stop = getMonotime() + report("Multiplication", "Fp[BN254]", start, stop, startClk, stopClk, Iters) + +mulBench() + +proc sqrBench() = + var r, x: Fp[BN254] + # BN254 field modulus + x.fromHex("0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47") + + let start = getMonotime() + let startClk = getTicks() + for _ in 0 ..< Iters: + r.square(x) + let stopClk = getTicks() + let stop = getMonotime() + report("Squaring", "Fp[BN254]", start, stop, startClk, stopClk, Iters) + +sqrBench() + +proc invBench() = + # TODO: having x on the stack triggers stack smashing detection. To be investigated + var x: ref Fp[BN254] + new x + # BN254 field modulus + x[].fromHex("0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47") + + let start = getMonotime() + let startClk = getTicks() + for _ in 0 ..< InvIters: + # Note: we don't copy the original x so x is alterning between x and x^-1 + inv(x[]) + let stopClk = getTicks() + let stop = getMonotime() + report("Inversion", "Fp[BN254]", start, stop, startClk, stopClk, InvIters) + +invBench() diff --git a/benchmarks/secp256k1_fp.nim b/benchmarks/secp256k1_fp.nim new file mode 100644 index 0000000..89c0ee5 --- /dev/null +++ b/benchmarks/secp256k1_fp.nim @@ -0,0 +1,140 @@ +# Constantine +# Copyright (c) 2018-2019 Status Research & Development GmbH +# Copyright (c) 2020-Present Mamy André-Ratsimbazafy +# Licensed and distributed under either of +# * MIT license (license terms in the root directory or at http://opensource.org/licenses/MIT). +# * Apache v2 license (license terms in the root directory or at http://www.apache.org/licenses/LICENSE-2.0). +# at your option. This file may not be copied, modified, or distributed except according to those terms. + +# ############################################################ +# +# Benchmark of modular exponentiation +# +# ############################################################ + +# 2 implementations are available +# - 1 is constant time +# - 1 exposes the exponent bits to: +# timing attack, +# memory access analysis, +# power analysis (i.e. oscilloscopes on embedded) +# It is suitable for public exponents for example +# to compute modular inversion via the Fermat method + +import + ../constantine/config/[common, curves], + ../constantine/arithmetic/[bigints_checked, finite_fields], + ../constantine/io/[io_bigints, io_fields], + random, std/monotimes, times, strformat, + ./timers + +const Iters = 1_000_000 +const InvIters = 1000 + +randomize(1234) + +echo "\n⚠️ Measurements are approximate and use the CPU nominal clock: Turbo-Boost and overclocking will skew them." +echo "==========================================================================================================\n" + +proc report(op, field: string, start, stop: MonoTime, startClk, stopClk: int64, iters: int) = + echo &"{op:<15} {field:<15} {inNanoseconds((stop-start) div iters):>9} ns {(stopClk - startClk) div iters:>9} cycles" + +proc addBench() = + var x, y: Fp[Secp256k1] + # BN254 field modulus + x.fromHex("0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47") + # Truncated BLS12-381 prime + y.fromHex("0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f624") + + let start = getMonotime() + let startClk = getTicks() + for _ in 0 ..< Iters: + x += y + let stopClk = getTicks() + let stop = getMonotime() + report("Addition", "Fp[Secp256k1]", start, stop, startClk, stopClk, Iters) + + +addBench() + +proc subBench() = + var x, y: Fp[Secp256k1] + # BN254 field modulus + x.fromHex("0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47") + # Truncated BLS12-381 prime + y.fromHex("0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f624") + + let start = getMonotime() + let startClk = getTicks() + for _ in 0 ..< Iters: + x -= y + let stopClk = getTicks() + let stop = getMonotime() + report("Substraction", "Fp[Secp256k1]", start, stop, startClk, stopClk, Iters) + +subBench() + +proc negBench() = + var r, x: Fp[Secp256k1] + # BN254 field modulus + x.fromHex("0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47") + + let start = getMonotime() + let startClk = getTicks() + for _ in 0 ..< Iters: + r.neg(x) + let stopClk = getTicks() + let stop = getMonotime() + report("Negation", "Fp[Secp256k1]", start, stop, startClk, stopClk, Iters) + +negBench() + +proc mulBench() = + var r, x, y: Fp[Secp256k1] + # BN254 field modulus + x.fromHex("0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47") + # Truncated BLS12-381 prime + y.fromHex("0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f624") + + let start = getMonotime() + let startClk = getTicks() + for _ in 0 ..< Iters: + r.prod(x, y) + let stopClk = getTicks() + let stop = getMonotime() + report("Multiplication", "Fp[Secp256k1]", start, stop, startClk, stopClk, Iters) + +mulBench() + +proc sqrBench() = + var r, x: Fp[Secp256k1] + # BN254 field modulus + x.fromHex("0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47") + + let start = getMonotime() + let startClk = getTicks() + for _ in 0 ..< Iters: + r.square(x) + let stopClk = getTicks() + let stop = getMonotime() + report("Squaring", "Fp[Secp256k1]", start, stop, startClk, stopClk, Iters) + +sqrBench() + +proc invBench() = + # TODO: having x on the stack triggers stack smashing detection. To be investigated + var x: ref Fp[Secp256k1] + new x + # BN254 field modulus + x[].fromHex("0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47") + + let start = getMonotime() + let startClk = getTicks() + for _ in 0 ..< InvIters: + # Note: we don't copy the original x so x is alterning between x and x^-1 + inv(x[]) + let stopClk = getTicks() + let stop = getMonotime() + report("Inversion", "Fp[Secp256k1]", start, stop, startClk, stopClk, InvIters) + +invBench()