import "hashes/sha256/512bit" as sha256 import "utils/multiplexer/256bit" as multiplex // Merkle-Tree inclusion proof for tree depth 3 <<<<<<< HEAD def main(field treeDepth, u32[8] rootDigest, private u32[8] leafDigest, private bool[2] directionSelector, u32[8] PathDigest0, private u32[8] PathDigest1) -> (field): ======= def main(field treeDepth, bool[256] rootDigest, private bool[256] leafDigest, private bool[2] directionSelector, bool[256] PathDigest0, private bool[256] PathDigest1) -> (): >>>>>>> 26f4d72ee6e0c802823cf145fbd11a372586eb28 //Setup u32[8] currentDigest = leafDigest field counter = 1 bool currentDirection = false //Loop up the tree currentDirection = directionSelector[0] u32[8] lhs = multiplex(currentDirection, currentDigest, PathDigest0) u32[8] rhs = multiplex(!currentDirection, currentDigest, PathDigest0) currentDigest = sha256(lhs, rhs) counter = counter + 1 currentDirection = directionSelector[1] lhs = multiplex(currentDirection, currentDigest, PathDigest1) rhs = multiplex(!currentDirection, currentDigest, PathDigest1) currentDigest = sha256(lhs, rhs) counter = counter + 1 assert(counter == treeDepth) assert(rootDigest == currentDigest) return