From 7e18c0f46bbc2c380e670ba1ad36a600d9aa41e7 Mon Sep 17 00:00:00 2001 From: Mark Spanbroek Date: Mon, 13 Nov 2023 13:17:22 +0100 Subject: [PATCH] Move merkleRoot() into its own module --- poseidon2.nim | 39 +------------------ poseidon2/merkle.nim | 34 ++++++++++++++++ .../{testPoseidon2.nim => testMerkle.nim} | 6 ++- tests/test.nim | 2 +- 4 files changed, 41 insertions(+), 40 deletions(-) create mode 100644 poseidon2/merkle.nim rename tests/poseidon2/{testPoseidon2.nim => testMerkle.nim} (93%) diff --git a/poseidon2.nim b/poseidon2.nim index bdee038..f071913 100644 --- a/poseidon2.nim +++ b/poseidon2.nim @@ -1,47 +1,12 @@ -import std/sequtils -import constantine/math/arithmetic - import poseidon2/types -import poseidon2/permutation import poseidon2/io import poseidon2/sponge import poseidon2/compress +import poseidon2/merkle export sponge export compress +export merkle export toBytes export elements export types - -#------------------------------------------------------------------------------- - -func merkleRoot*(xs: openArray[F]) : F = - let a = low(xs) - let b = high(xs) - let m = b-a+1 - - if m==1: - return xs[a] - - else: - let halfn : int = m div 2 - let n : int = 2*halfn - let isOdd : bool = (n != m) - - var ys : seq[F] - if not isOdd: - ys = newSeq[F](halfn) - else: - ys = newSeq[F](halfn+1) - - for i in 0..