## Nim-Codex ## Copyright (c) 2023 Status Research & Development GmbH ## Licensed under either of ## * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE)) ## * MIT license ([LICENSE-MIT](LICENSE-MIT)) ## at your option. ## This file may not be copied, modified, or distributed except according to ## those terms. import std/sequtils import pkg/poseidon2 import pkg/constantine/math/io/io_fields import pkg/constantine/platforms/abstractions import pkg/questionable/results import ../utils import ../rng import ./merkletree export merkletree, poseidon2 const KeyNoneF = F.fromhex("0x0") KeyBottomLayerF = F.fromhex("0x1") KeyOddF = F.fromhex("0x2") KeyOddAndBottomLayerF = F.fromhex("0x3") Poseidon2Zero* = zero type Poseidon2Hash* = F PoseidonKeysEnum* = enum # can't use non-ordinals as enum values KeyNone KeyBottomLayer KeyOdd KeyOddAndBottomLayer Poseidon2Tree* = MerkleTree[Poseidon2Hash, PoseidonKeysEnum] Poseidon2Proof* = MerkleProof[Poseidon2Hash, PoseidonKeysEnum] func toArray32*(bytes: openArray[byte]): array[32, byte] = result[0..