diff --git a/barretenberg/cpp/src/barretenberg/benchmark/merkle_tree_bench/merkle_tree.bench.cpp b/barretenberg/cpp/src/barretenberg/benchmark/merkle_tree_bench/merkle_tree.bench.cpp index 392138158763..1fadcf94d282 100644 --- a/barretenberg/cpp/src/barretenberg/benchmark/merkle_tree_bench/merkle_tree.bench.cpp +++ b/barretenberg/cpp/src/barretenberg/benchmark/merkle_tree_bench/merkle_tree.bench.cpp @@ -28,7 +28,7 @@ static std::vector VALUES = []() { void hash(State& state) noexcept { for (auto _ : state) { - hash_pair_native({ 0, 0, 0, 0 }, { 1, 1, 1, 1 }); + PedersenHashPolicy::hash_pair({ 0, 0, 0, 0 }, { 1, 1, 1, 1 }); } } BENCHMARK(hash)->MinTime(5); diff --git a/barretenberg/cpp/src/barretenberg/crypto/merkle_tree/hash.hpp b/barretenberg/cpp/src/barretenberg/crypto/merkle_tree/hash.hpp index fd516fa73bd2..755e92fa40b6 100644 --- a/barretenberg/cpp/src/barretenberg/crypto/merkle_tree/hash.hpp +++ b/barretenberg/cpp/src/barretenberg/crypto/merkle_tree/hash.hpp @@ -5,13 +5,8 @@ // ===================== #pragma once -#include "barretenberg/common/assert.hpp" -#include "barretenberg/common/net.hpp" -#include "barretenberg/crypto/blake2s/blake2s.hpp" -#include "barretenberg/crypto/pedersen_commitment/pedersen.hpp" #include "barretenberg/crypto/pedersen_hash/pedersen.hpp" #include "barretenberg/crypto/poseidon2/poseidon2.hpp" -#include "barretenberg/numeric/bitop/pow.hpp" #include namespace bb::crypto::merkle_tree { @@ -35,53 +30,4 @@ struct Poseidon2HashPolicy { static fr zero_hash() { return fr::zero(); } }; -inline bb::fr hash_pair_native(bb::fr const& lhs, bb::fr const& rhs) -{ - return crypto::pedersen_hash::hash({ lhs, rhs }); // uses lookup tables -} - -inline bb::fr hash_native(std::vector const& inputs) -{ - return crypto::pedersen_hash::hash(inputs); // uses lookup tables -} - -/** - * Computes the root of a tree with leaves given as the vector `input`. - * - * @param input: vector of leaf values. - * @returns root as field - */ -inline bb::fr compute_tree_root_native(std::vector const& input) -{ - BB_ASSERT(numeric::is_power_of_two(input.size()), "Check if the input vector size is a power of 2."); - auto layer = input; - while (layer.size() > 1) { - std::vector next_layer(layer.size() / 2); - for (size_t i = 0; i < next_layer.size(); ++i) { - next_layer[i] = crypto::pedersen_hash::hash({ layer[i * 2], layer[i * 2 + 1] }); - } - layer = std::move(next_layer); - } - - return layer[0]; -} - -// TODO write test -inline std::vector compute_tree_native(std::vector const& input) -{ - BB_ASSERT(numeric::is_power_of_two(input.size()), "Check if the input vector size is a power of 2."); - auto layer = input; - std::vector tree(input); - while (layer.size() > 1) { - std::vector next_layer(layer.size() / 2); - for (size_t i = 0; i < next_layer.size(); ++i) { - next_layer[i] = crypto::pedersen_hash::hash({ layer[i * 2], layer[i * 2 + 1] }); - tree.push_back(next_layer[i]); - } - layer = std::move(next_layer); - } - - return tree; -} - } // namespace bb::crypto::merkle_tree diff --git a/barretenberg/cpp/src/barretenberg/crypto/merkle_tree/hash_path.hpp b/barretenberg/cpp/src/barretenberg/crypto/merkle_tree/hash_path.hpp index 10c0912bfbd1..69378f504b5d 100644 --- a/barretenberg/cpp/src/barretenberg/crypto/merkle_tree/hash_path.hpp +++ b/barretenberg/cpp/src/barretenberg/crypto/merkle_tree/hash_path.hpp @@ -16,23 +16,6 @@ using fr_hash_path = std::vector>; using fr_sibling_path = std::vector; template using hash_path = std::vector, bb::stdlib::field_t>>; -inline fr_hash_path get_new_hash_path(fr_hash_path const& old_path, uint128_t index, fr const& value) -{ - fr_hash_path path = old_path; - fr current = value; - for (size_t i = 0; i < old_path.size(); ++i) { - bool path_bit = static_cast(index & 0x1); - if (path_bit) { - path[i].second = current; - } else { - path[i].first = current; - } - current = hash_pair_native(path[i].first, path[i].second); - index /= 2; - } - return path; -} - inline fr_hash_path get_random_hash_path(size_t const& tree_depth) { fr_hash_path path; @@ -52,20 +35,6 @@ template inline hash_path create_witness_hash_path(Ctx& ctx, return result; } -inline fr get_hash_path_root(fr_hash_path const& input) -{ - return hash_pair_native(input[input.size() - 1].first, input[input.size() - 1].second); -} - -inline fr zero_hash_at_height(size_t height) -{ - auto current = fr(0); - for (size_t i = 0; i < height; ++i) { - current = hash_pair_native(current, current); - } - return current; -} - } // namespace bb::crypto::merkle_tree // We add to std namespace as fr_hash_path is actually a std::vector, and this is the only way diff --git a/barretenberg/cpp/src/barretenberg/crypto/merkle_tree/nullifier_tree/nullifier_memory_tree.test.cpp b/barretenberg/cpp/src/barretenberg/crypto/merkle_tree/nullifier_tree/nullifier_memory_tree.test.cpp index e3cfcdb4f065..77ad97982a1a 100644 --- a/barretenberg/cpp/src/barretenberg/crypto/merkle_tree/nullifier_tree/nullifier_memory_tree.test.cpp +++ b/barretenberg/cpp/src/barretenberg/crypto/merkle_tree/nullifier_tree/nullifier_memory_tree.test.cpp @@ -32,7 +32,7 @@ bool check_hash_path(const fr& root, for (size_t i = 0; i < depth_; ++i) { fr left = (index & 1) ? path[i].first : current; fr right = (index & 1) ? current : path[i].second; - current = hash_pair_native(left, right); + current = HashPolicy::hash_pair(left, right); index >>= 1; } return current == root; diff --git a/boxes/boxes/vanilla/contracts/src/main.nr b/boxes/boxes/vanilla/contracts/src/main.nr index 063c2defc972..3a9aafec2ad5 100644 --- a/boxes/boxes/vanilla/contracts/src/main.nr +++ b/boxes/boxes/vanilla/contracts/src/main.nr @@ -16,7 +16,7 @@ pub contract PrivateVoting { storage::storage, }; use dep::aztec::state_vars::{Map, PublicImmutable, PublicMutable}; - use dep::aztec::protocol_types::{address::AztecAddress, traits::{Hash, ToField}}; + use dep::aztec::protocol_types::{address::AztecAddress, hash::poseidon2_hash, traits::{Hash, ToField}}; #[storage] struct Storage { @@ -39,7 +39,7 @@ pub contract PrivateVoting { let msg_sender_npk_m_hash = get_public_keys(self.msg_sender()).npk_m.hash(); let secret = self.context.request_nsk_app(msg_sender_npk_m_hash); // get secret key of caller of function - let nullifier = std::hash::pedersen_hash([self.msg_sender().to_field(), secret]); // derive nullifier from sender and secret + let nullifier = poseidon2_hash([self.msg_sender().to_field(), secret]); // derive nullifier from sender and secret self.context.push_nullifier(nullifier); self.enqueue_self.add_to_tally_public(candidate); } diff --git a/noir-projects/aztec-nr/aztec/src/hash.nr b/noir-projects/aztec-nr/aztec/src/hash.nr index 03f99c942708..d3c27e38680a 100644 --- a/noir-projects/aztec-nr/aztec/src/hash.nr +++ b/noir-projects/aztec-nr/aztec/src/hash.nr @@ -7,15 +7,10 @@ use dep::protocol_types::{ DOM_SEP__PUBLIC_CALLDATA, DOM_SEP__SECRET_HASH, MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS, }, hash::{poseidon2_hash_subarray, poseidon2_hash_with_separator, sha256_to_field}, - point::Point, traits::ToField, }; -pub use dep::protocol_types::hash::{compute_siloed_nullifier, pedersen_hash}; - -pub fn pedersen_commitment(inputs: [Field; N], hash_index: u32) -> Point { - std::hash::pedersen_commitment_with_separator(inputs, hash_index) -} +pub use dep::protocol_types::hash::compute_siloed_nullifier; pub fn compute_secret_hash(secret: Field) -> Field { poseidon2_hash_with_separator([secret], DOM_SEP__SECRET_HASH) diff --git a/noir-projects/noir-contracts/contracts/app/card_game_contract/src/main.nr b/noir-projects/noir-contracts/contracts/app/card_game_contract/src/main.nr index f771ace9971b..4757ff0e6b71 100644 --- a/noir-projects/noir-contracts/contracts/app/card_game_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/app/card_game_contract/src/main.nr @@ -5,8 +5,9 @@ use dep::aztec::macros::aztec; #[aztec] pub contract CardGame { - use dep::aztec::{hash::pedersen_hash, state_vars::{Map, PublicMutable}}; use dep::aztec::protocol_types::address::AztecAddress; + use dep::aztec::protocol_types::hash::poseidon2_hash; + use dep::aztec::state_vars::{Map, PublicMutable}; use dep::aztec::note::constants::MAX_NOTES_PER_PAGE; @@ -103,7 +104,7 @@ pub contract CardGame { let mut collection = self.storage.collections; let _inserted_cards = collection.add_cards(cards, player); - self.enqueue_self.on_cards_claimed(game, player, pedersen_hash(cards_fields, 0)); + self.enqueue_self.on_cards_claimed(game, player, poseidon2_hash(cards_fields)); } #[external("public")] @@ -117,7 +118,7 @@ pub contract CardGame { assert_eq( cards_hash, - pedersen_hash(game_data.rounds_cards.map(|card: Card| card.to_field()), 0), + poseidon2_hash(game_data.rounds_cards.map(|card: Card| card.to_field())), ); let winner = game_data.winner(); diff --git a/noir-projects/noir-contracts/contracts/app/lending_contract/src/helpers.nr b/noir-projects/noir-contracts/contracts/app/lending_contract/src/helpers.nr index 60d35236b22c..173667c8986f 100644 --- a/noir-projects/noir-contracts/contracts/app/lending_contract/src/helpers.nr +++ b/noir-projects/noir-contracts/contracts/app/lending_contract/src/helpers.nr @@ -1,4 +1,4 @@ -use dep::aztec::hash::pedersen_hash; +use dep::aztec::protocol_types::hash::poseidon2_hash; use std::ops::{Add, Sub}; // Utility used to easily get a "id" for a private user that sits in the same @@ -8,7 +8,7 @@ pub fn compute_identifier(secret: Field, on_behalf_of: Field, this: Field) -> Fi // EITHER secret OR on_behalf_of MUST be set. But not both assert(!((secret == 0) as bool & (on_behalf_of == 0) as bool)); if (secret != 0) { - pedersen_hash([this, secret], 0) + poseidon2_hash([this, secret]) } else { on_behalf_of } diff --git a/noir-projects/noir-contracts/contracts/test/test_contract/src/main.nr b/noir-projects/noir-contracts/contracts/test/test_contract/src/main.nr index 011c6d0df13e..762dbf4527be 100644 --- a/noir-projects/noir-contracts/contracts/test/test_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/test/test_contract/src/main.nr @@ -36,8 +36,6 @@ pub contract Test { }, // Event related messages::message_delivery::MessageDelivery, - // Hashing - hash::pedersen_hash, // History and inclusion proofs history::note_inclusion::ProveNoteInclusion, // Key management @@ -51,6 +49,7 @@ pub contract Test { // Contract instance management publish_contract_instance::publish_contract_instance_for_public_execution, }; + use std::hash::pedersen_hash_with_separator; use std::meta::derive; use token_portal_content_hash_lib::get_mint_to_private_content_hash; @@ -427,7 +426,7 @@ pub contract Test { } fn get_commitment(self) -> Field { - pedersen_hash([self.amount, self.secret_hash], 0) + pedersen_hash_with_separator([self.amount, self.secret_hash], 0) } } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr b/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr index bbc0911b0092..e77593d5eb69 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr @@ -218,12 +218,6 @@ pub fn accumulate_sha256(v0: Field, v1: Field) -> Field { sha256_to_field(hash_input_flattened) } -// TODO: remove this. The protocol doesn't need it. -#[inline_always] -pub fn pedersen_hash(inputs: [Field; N], hash_index: u32) -> Field { - std::hash::pedersen_hash_with_separator(inputs, hash_index) -} - pub fn poseidon2_hash(inputs: [Field; N]) -> Field { poseidon::poseidon2::Poseidon2::hash(inputs, N) } diff --git a/yarn-project/end-to-end/src/simulators/lending_simulator.ts b/yarn-project/end-to-end/src/simulators/lending_simulator.ts index 38e6e9266e48..fe10d7ed2276 100644 --- a/yarn-project/end-to-end/src/simulators/lending_simulator.ts +++ b/yarn-project/end-to-end/src/simulators/lending_simulator.ts @@ -4,7 +4,7 @@ import { Fr } from '@aztec/aztec.js/fields'; import { CheatCodes } from '@aztec/aztec/testing'; import type { RollupContract } from '@aztec/ethereum/contracts'; import { SlotNumber } from '@aztec/foundation/branded-types'; -import { pedersenHash } from '@aztec/foundation/crypto/pedersen'; +import { poseidon2Hash } from '@aztec/foundation/crypto/poseidon'; import type { TestDateProvider } from '@aztec/foundation/timer'; import type { LendingContract } from '@aztec/noir-contracts.js/Lending'; @@ -29,7 +29,7 @@ export class LendingAccount { * @returns Key in public space */ public key() { - return pedersenHash([this.address, this.secret]); + return poseidon2Hash([this.address, this.secret]); } } diff --git a/yarn-project/foundation/src/trees/balanced_merkle_tree_root.ts b/yarn-project/foundation/src/trees/balanced_merkle_tree_root.ts index 7e39a99f0753..41593402acc2 100644 --- a/yarn-project/foundation/src/trees/balanced_merkle_tree_root.ts +++ b/yarn-project/foundation/src/trees/balanced_merkle_tree_root.ts @@ -1,10 +1,7 @@ -import { pedersenMerkleHash, poseidonMerkleHash, shaMerkleHash } from './hasher.js'; +import { poseidonMerkleHash, shaMerkleHash } from './hasher.js'; export const computeBalancedShaRoot = (leaves: Buffer[]) => computeBalancedMerkleTreeRoot(leaves); -export const computeBalancedPedersenRoot = async (leaves: Buffer[]) => - await computeBalancedMerkleTreeRootAsync(leaves, pedersenMerkleHash); - export const computeBalancedPoseidonRoot = async (leaves: Buffer[]) => await computeBalancedMerkleTreeRootAsync(leaves, poseidonMerkleHash); @@ -33,7 +30,7 @@ export function computeBalancedMerkleTreeRoot(leaves: Buffer[], hasher = shaMerk /** * Computes the Merkle root with the provided leaves **asynchronously**. - * This method uses an asynchronous hash function (defaults to `pedersenHash`). + * This method uses an asynchronous hash function (defaults to `poseidon2Hash`). * * @throws If the number of leaves is not a power of two. */ diff --git a/yarn-project/foundation/src/trees/hasher.ts b/yarn-project/foundation/src/trees/hasher.ts index c4970262bd14..2adad35dfc25 100644 --- a/yarn-project/foundation/src/trees/hasher.ts +++ b/yarn-project/foundation/src/trees/hasher.ts @@ -1,4 +1,3 @@ -import { pedersenHash as pedersenHashArray } from '../crypto/pedersen/index.js'; import { poseidon2Hash } from '../crypto/poseidon/index.js'; import { sha256Trunc } from '../crypto/sha256/index.js'; @@ -45,8 +44,5 @@ export interface AsyncHasher { export const shaMerkleHash: Hasher['hash'] = (left: Buffer, right: Buffer) => sha256Trunc(Buffer.concat([left, right])) as Buffer; -export const pedersenMerkleHash: AsyncHasher['hash'] = async (left: Buffer, right: Buffer) => - (await pedersenHashArray([left, right])).toBuffer() as Buffer; - export const poseidonMerkleHash: AsyncHasher['hash'] = async (left: Buffer, right: Buffer) => (await poseidon2Hash([left, right])).toBuffer() as Buffer; diff --git a/yarn-project/foundation/src/trees/merkle_tree_calculator.ts b/yarn-project/foundation/src/trees/merkle_tree_calculator.ts index 66c160e06e35..f0b9bec6ac7c 100644 --- a/yarn-project/foundation/src/trees/merkle_tree_calculator.ts +++ b/yarn-project/foundation/src/trees/merkle_tree_calculator.ts @@ -1,4 +1,4 @@ -import { pedersenHash } from '@aztec/foundation/crypto/pedersen'; +import { poseidon2Hash } from '@aztec/foundation/crypto/poseidon'; import type { AsyncHasher } from './hasher.js'; import { MerkleTree } from './merkle_tree.js'; @@ -19,7 +19,7 @@ export class MerkleTreeCalculator { height: number, zeroLeaf: Buffer = Buffer.alloc(32), hasher = async (left: Buffer, right: Buffer) => - (await pedersenHash([left, right])).toBuffer() as Buffer, + (await poseidon2Hash([left, right])).toBuffer() as Buffer, ) { const zeroHashes = [zeroLeaf]; for (let i = 0; i < height; i++) { diff --git a/yarn-project/foundation/src/trees/sibling_path.ts b/yarn-project/foundation/src/trees/sibling_path.ts index 50a7da1d7d7a..81773d59cdb3 100644 --- a/yarn-project/foundation/src/trees/sibling_path.ts +++ b/yarn-project/foundation/src/trees/sibling_path.ts @@ -1,5 +1,5 @@ import { makeTuple } from '../array/array.js'; -import { pedersenHash } from '../crypto/pedersen/index.js'; +import { poseidon2Hash } from '../crypto/poseidon/index.js'; import { Fr } from '../curves/bn254/index.js'; import { schemas } from '../schemas/index.js'; import { @@ -172,7 +172,7 @@ export async function computeRootFromSiblingPath( leaf: Buffer, siblingPath: Buffer[], index: number, - hasher = async (left: Buffer, right: Buffer) => (await pedersenHash([left, right])).toBuffer(), + hasher = async (left: Buffer, right: Buffer) => (await poseidon2Hash([left, right])).toBuffer(), ) { let result = leaf; for (const sibling of siblingPath) { diff --git a/yarn-project/merkle-tree/src/index.ts b/yarn-project/merkle-tree/src/index.ts index 61b9fba3d00f..af115fbb1c4d 100644 --- a/yarn-project/merkle-tree/src/index.ts +++ b/yarn-project/merkle-tree/src/index.ts @@ -2,7 +2,6 @@ export * from './interfaces/append_only_tree.js'; export * from './interfaces/indexed_tree.js'; export * from './interfaces/merkle_tree.js'; export * from './interfaces/update_only_tree.js'; -export * from './pedersen.js'; export * from './poseidon.js'; export * from './sparse_tree/sparse_tree.js'; export { StandardIndexedTree } from './standard_indexed_tree/standard_indexed_tree.js'; diff --git a/yarn-project/merkle-tree/src/pedersen.ts b/yarn-project/merkle-tree/src/pedersen.ts deleted file mode 100644 index 3d32dd5dcc43..000000000000 --- a/yarn-project/merkle-tree/src/pedersen.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { pedersenHash } from '@aztec/foundation/crypto/sync'; -import { Fr } from '@aztec/foundation/curves/bn254'; -import type { Hasher } from '@aztec/foundation/trees'; - -/** - * A helper class encapsulating Pedersen hash functionality. - * @deprecated Don't call pedersen directly in production code. Instead, create suitably-named functions for specific - * purposes. - */ -export class Pedersen implements Hasher { - /* - * @deprecated Don't call pedersen directly in production code. Instead, create suitably-named functions for specific - * purposes. - */ - public hash(lhs: Uint8Array, rhs: Uint8Array) { - return pedersenHash([ - Fr.fromBuffer(Buffer.from(lhs)), - Fr.fromBuffer(Buffer.from(rhs)), - ]).toBuffer() as Buffer; - } - - /* - * @deprecated Don't call pedersen directly in production code. Instead, create suitably-named functions for specific - * purposes. - */ - public hashInputs(inputs: Buffer[]) { - const inputFields = inputs.map(i => Fr.fromBuffer(i)); - return pedersenHash(inputFields).toBuffer() as Buffer; - } -} diff --git a/yarn-project/merkle-tree/src/snapshots/append_only_snapshot.test.ts b/yarn-project/merkle-tree/src/snapshots/append_only_snapshot.test.ts index ee051d80c5ec..9712657f6295 100644 --- a/yarn-project/merkle-tree/src/snapshots/append_only_snapshot.test.ts +++ b/yarn-project/merkle-tree/src/snapshots/append_only_snapshot.test.ts @@ -3,7 +3,7 @@ import type { FromBuffer } from '@aztec/foundation/serialize'; import type { AztecKVStore } from '@aztec/kv-store'; import { openTmpStore } from '@aztec/kv-store/lmdb'; -import { Pedersen, StandardTree, newTree } from '../index.js'; +import { Poseidon, StandardTree, newTree } from '../index.js'; import { AppendOnlySnapshotBuilder } from './append_only_snapshot.js'; import { describeSnapshotBuilderTestSuite } from './snapshot_builder_test_suite.js'; @@ -14,7 +14,7 @@ describe('AppendOnlySnapshot', () => { beforeEach(async () => { db = openTmpStore(); - const hasher = new Pedersen(); + const hasher = new Poseidon(); const deserializer: FromBuffer = { fromBuffer: b => b }; tree = await newTree(StandardTree, db, hasher, 'test', deserializer, 4); snapshotBuilder = new AppendOnlySnapshotBuilder(db, tree, hasher, deserializer); diff --git a/yarn-project/merkle-tree/src/snapshots/full_snapshot.test.ts b/yarn-project/merkle-tree/src/snapshots/full_snapshot.test.ts index 61a3df85792d..f943b9bbdb66 100644 --- a/yarn-project/merkle-tree/src/snapshots/full_snapshot.test.ts +++ b/yarn-project/merkle-tree/src/snapshots/full_snapshot.test.ts @@ -3,7 +3,7 @@ import type { FromBuffer } from '@aztec/foundation/serialize'; import type { AztecKVStore } from '@aztec/kv-store'; import { openTmpStore } from '@aztec/kv-store/lmdb'; -import { Pedersen, StandardTree, newTree } from '../index.js'; +import { Poseidon, StandardTree, newTree } from '../index.js'; import { FullTreeSnapshotBuilder } from './full_snapshot.js'; import { describeSnapshotBuilderTestSuite } from './snapshot_builder_test_suite.js'; @@ -15,7 +15,7 @@ describe('FullSnapshotBuilder', () => { beforeEach(async () => { db = openTmpStore(); const deserializer: FromBuffer = { fromBuffer: b => b }; - tree = await newTree(StandardTree, db, new Pedersen(), 'test', deserializer, 4); + tree = await newTree(StandardTree, db, new Poseidon(), 'test', deserializer, 4); snapshotBuilder = new FullTreeSnapshotBuilder(db, tree, deserializer); }); diff --git a/yarn-project/merkle-tree/src/snapshots/indexed_tree_snapshot.test.ts b/yarn-project/merkle-tree/src/snapshots/indexed_tree_snapshot.test.ts index bd7e3748008e..7d558a5f6df2 100644 --- a/yarn-project/merkle-tree/src/snapshots/indexed_tree_snapshot.test.ts +++ b/yarn-project/merkle-tree/src/snapshots/indexed_tree_snapshot.test.ts @@ -5,7 +5,7 @@ import type { AztecKVStore } from '@aztec/kv-store'; import { openTmpStore } from '@aztec/kv-store/lmdb'; import { NullifierLeaf, NullifierLeafPreimage } from '@aztec/stdlib/trees'; -import { Pedersen, newTree } from '../index.js'; +import { Poseidon, newTree } from '../index.js'; import { StandardIndexedTreeWithAppend } from '../standard_indexed_tree/test/standard_indexed_tree_with_append.js'; import { IndexedTreeSnapshotBuilder } from './indexed_tree_snapshot.js'; import { describeSnapshotBuilderTestSuite } from './snapshot_builder_test_suite.js'; @@ -31,7 +31,7 @@ describe('IndexedTreeSnapshotBuilder', () => { beforeEach(async () => { db = openTmpStore(); - tree = await newTree(NullifierTree, db, new Pedersen(), 'test', { fromBuffer: (b: Buffer) => b }, 4); + tree = await newTree(NullifierTree, db, new Poseidon(), 'test', { fromBuffer: (b: Buffer) => b }, 4); snapshotBuilder = new IndexedTreeSnapshotBuilder(db, tree, NullifierLeafPreimage); }); diff --git a/yarn-project/merkle-tree/src/sparse_tree/sparse_tree.test.ts b/yarn-project/merkle-tree/src/sparse_tree/sparse_tree.test.ts index acb7784b99ae..1f70bf5bacee 100644 --- a/yarn-project/merkle-tree/src/sparse_tree/sparse_tree.test.ts +++ b/yarn-project/merkle-tree/src/sparse_tree/sparse_tree.test.ts @@ -9,7 +9,7 @@ import { openTmpStore } from '@aztec/kv-store/lmdb'; import { INITIAL_LEAF, newTree } from '../index.js'; import type { UpdateOnlyTree } from '../interfaces/update_only_tree.js'; import { loadTree } from '../load_tree.js'; -import { Pedersen } from '../pedersen.js'; +import { Poseidon } from '../poseidon.js'; import { standardBasedTreeTestSuite } from '../test/standard_based_test_suite.js'; import { treeTestSuite } from '../test/test_suite.js'; import { SparseTree } from './sparse_tree.js'; @@ -46,16 +46,16 @@ treeTestSuite('SparseTree', createDb, createFromName); standardBasedTreeTestSuite('SparseTree', createDb); describe('SparseTreeSpecific', () => { - let pedersen: Pedersen; + let poseidon: Poseidon; beforeEach(() => { - pedersen = new Pedersen(); + poseidon = new Poseidon(); }); it('throws when index is bigger than (2^DEPTH - 1) ', async () => { const db = openTmpStore(); const depth = 32; - const tree = await createDb(db, pedersen, 'test', depth); + const tree = await createDb(db, poseidon, 'test', depth); const index = 2n ** BigInt(depth); expect(() => tree.updateLeaf(Buffer.alloc(32), index)).toThrow(); @@ -66,7 +66,7 @@ describe('SparseTreeSpecific', () => { const maxIndex = 2 ** depth - 1; const db = openTmpStore(); - const tree = await createDb(db, pedersen, 'test', depth); + const tree = await createDb(db, poseidon, 'test', depth); const randomIndex = randomBigInt(BigInt(maxIndex)); expect(tree.getNumLeaves(false)).toEqual(0n); @@ -85,7 +85,7 @@ describe('SparseTreeSpecific', () => { const maxIndex = 2 ** depth - 1; const db = openTmpStore(); - const tree = await createDb(db, pedersen, 'test', depth); + const tree = await createDb(db, poseidon, 'test', depth); const randomIndex = randomBigInt(BigInt(maxIndex)); expect(tree.getNumLeaves(false)).toEqual(0n); @@ -101,13 +101,13 @@ describe('SparseTreeSpecific', () => { it('should have correct root and sibling path after in a "non-append-only" way', async () => { const db = openTmpStore(); - const tree = await createDb(db, pedersen, 'test', 3); + const tree = await createDb(db, poseidon, 'test', 3); - const level2ZeroHash = pedersen.hash(INITIAL_LEAF, INITIAL_LEAF); - const level1ZeroHash = pedersen.hash(level2ZeroHash, level2ZeroHash); + const level2ZeroHash = poseidon.hash(INITIAL_LEAF, INITIAL_LEAF); + const level1ZeroHash = poseidon.hash(level2ZeroHash, level2ZeroHash); expect(tree.getNumLeaves(false)).toEqual(0n); - expect(tree.getRoot(false)).toEqual(pedersen.hash(level1ZeroHash, level1ZeroHash)); + expect(tree.getRoot(false)).toEqual(poseidon.hash(level1ZeroHash, level1ZeroHash)); // Insert leaf at index 3 let level1LeftHash: Buffer; @@ -115,9 +115,9 @@ describe('SparseTreeSpecific', () => { { await tree.updateLeaf(leafAtIndex3, 3n); expect(tree.getNumLeaves(true)).toEqual(1n); - const level2Hash = pedersen.hash(INITIAL_LEAF, leafAtIndex3); - level1LeftHash = pedersen.hash(level2ZeroHash, level2Hash); - const root = pedersen.hash(level1LeftHash, level1ZeroHash); + const level2Hash = poseidon.hash(INITIAL_LEAF, leafAtIndex3); + level1LeftHash = poseidon.hash(level2ZeroHash, level2Hash); + const root = poseidon.hash(level1LeftHash, level1ZeroHash); expect(tree.getRoot(true)).toEqual(root); expect(await tree.getSiblingPath(3n, true)).toEqual( new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, level2ZeroHash, level1ZeroHash]), @@ -130,9 +130,9 @@ describe('SparseTreeSpecific', () => { const leafAtIndex6 = Fr.random().toBuffer(); await tree.updateLeaf(leafAtIndex6, 6n); expect(tree.getNumLeaves(true)).toEqual(2n); - const level2Hash = pedersen.hash(leafAtIndex6, INITIAL_LEAF); - level1RightHash = pedersen.hash(level2ZeroHash, level2Hash); - const root = pedersen.hash(level1LeftHash, level1RightHash); + const level2Hash = poseidon.hash(leafAtIndex6, INITIAL_LEAF); + level1RightHash = poseidon.hash(level2ZeroHash, level2Hash); + const root = poseidon.hash(level1LeftHash, level1RightHash); expect(tree.getRoot(true)).toEqual(root); expect(await tree.getSiblingPath(6n, true)).toEqual( new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, level2ZeroHash, level1LeftHash]), @@ -144,9 +144,9 @@ describe('SparseTreeSpecific', () => { { await tree.updateLeaf(leafAtIndex2, 2n); expect(tree.getNumLeaves(true)).toEqual(3n); - const level2Hash = pedersen.hash(leafAtIndex2, leafAtIndex3); - level1LeftHash = pedersen.hash(level2ZeroHash, level2Hash); - const root = pedersen.hash(level1LeftHash, level1RightHash); + const level2Hash = poseidon.hash(leafAtIndex2, leafAtIndex3); + level1LeftHash = poseidon.hash(level2ZeroHash, level2Hash); + const root = poseidon.hash(level1LeftHash, level1RightHash); expect(tree.getRoot(true)).toEqual(root); expect(await tree.getSiblingPath(2n, true)).toEqual( new SiblingPath(TEST_TREE_DEPTH, [leafAtIndex3, level2ZeroHash, level1RightHash]), @@ -158,9 +158,9 @@ describe('SparseTreeSpecific', () => { const updatedLeafAtIndex3 = Fr.random().toBuffer(); await tree.updateLeaf(updatedLeafAtIndex3, 3n); expect(tree.getNumLeaves(true)).toEqual(3n); - const level2Hash = pedersen.hash(leafAtIndex2, updatedLeafAtIndex3); - level1LeftHash = pedersen.hash(level2ZeroHash, level2Hash); - const root = pedersen.hash(level1LeftHash, level1RightHash); + const level2Hash = poseidon.hash(leafAtIndex2, updatedLeafAtIndex3); + level1LeftHash = poseidon.hash(level2ZeroHash, level2Hash); + const root = poseidon.hash(level1LeftHash, level1RightHash); expect(tree.getRoot(true)).toEqual(root); expect(await tree.getSiblingPath(3n, true)).toEqual( new SiblingPath(TEST_TREE_DEPTH, [leafAtIndex2, level2ZeroHash, level1RightHash]), @@ -174,7 +174,7 @@ describe('SparseTreeSpecific', () => { const maxIndex = 2 ** depth - 1; const db = openTmpStore(); - const tree = await createDb(db, pedersen, 'test', depth); + const tree = await createDb(db, poseidon, 'test', depth); const leaves = Array.from({ length: 1000 }).map(() => Fr.random().toBuffer()); const indices = Array.from({ length: 1000 }).map(() => randomBigInt(BigInt(maxIndex))); diff --git a/yarn-project/merkle-tree/src/standard_indexed_tree/test/standard_indexed_tree.test.ts b/yarn-project/merkle-tree/src/standard_indexed_tree/test/standard_indexed_tree.test.ts index 23331b414334..5cb10fc46bb2 100644 --- a/yarn-project/merkle-tree/src/standard_indexed_tree/test/standard_indexed_tree.test.ts +++ b/yarn-project/merkle-tree/src/standard_indexed_tree/test/standard_indexed_tree.test.ts @@ -12,7 +12,7 @@ import { PublicDataTreeLeafPreimage, } from '@aztec/stdlib/trees'; -import { INITIAL_LEAF, type MerkleTree, Pedersen, loadTree, newTree } from '../../index.js'; +import { INITIAL_LEAF, type MerkleTree, Poseidon, loadTree, newTree } from '../../index.js'; import { treeTestSuite } from '../../test/test_suite.js'; import { StandardIndexedTreeWithAppend } from './standard_indexed_tree_with_append.js'; @@ -92,16 +92,16 @@ const TEST_TREE_DEPTH = 3; treeTestSuite('StandardIndexedTree', createDb, createFromName); describe('StandardIndexedTreeSpecific', () => { - let pedersen: Pedersen; + let poseidon: Poseidon; beforeEach(() => { - pedersen = new Pedersen(); + poseidon = new Poseidon(); }); it('produces the correct roots and sibling paths', async () => { // Create a depth-3 indexed merkle tree const db = openTmpStore(); - const tree = await createDb(db, pedersen, 'test', 3); + const tree = await createDb(db, poseidon, 'test', 3); /** * Initial state: @@ -113,19 +113,19 @@ describe('StandardIndexedTreeSpecific', () => { * nextVal 0 0 0 0 0 0 0 0. */ - const initialLeafHash = pedersen.hashInputs(createNullifierTreeLeafHashInputs(0, 0, 0)); - const level1ZeroHash = pedersen.hash(INITIAL_LEAF, INITIAL_LEAF); - const level2ZeroHash = pedersen.hash(level1ZeroHash, level1ZeroHash); + const initialLeafHash = poseidon.hashInputs(createNullifierTreeLeafHashInputs(0, 0, 0)); + const level1ZeroHash = poseidon.hash(INITIAL_LEAF, INITIAL_LEAF); + const level2ZeroHash = poseidon.hash(level1ZeroHash, level1ZeroHash); let index0Hash = initialLeafHash; // Each element is named by the level followed by the index on that level. E.g. e10 -> level 1, index 0, e21 -> level 2, index 1 - let e10 = pedersen.hash(index0Hash, INITIAL_LEAF); - let e20 = pedersen.hash(e10, level1ZeroHash); + let e10 = poseidon.hash(index0Hash, INITIAL_LEAF); + let e20 = poseidon.hash(e10, level1ZeroHash); const initialE20 = e20; // Kept for calculating committed state later const initialE10 = e10; - let root = pedersen.hash(e20, level2ZeroHash); + let root = poseidon.hash(e20, level2ZeroHash); const initialRoot = root; const emptySiblingPath = new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, level1ZeroHash, level2ZeroHash]); @@ -147,11 +147,11 @@ describe('StandardIndexedTreeSpecific', () => { * nextIdx 1 0 0 0 0 0 0 0 * nextVal 30 0 0 0 0 0 0 0. */ - index0Hash = pedersen.hashInputs(createNullifierTreeLeafHashInputs(0, 1, 30)); - let index1Hash = pedersen.hashInputs(createNullifierTreeLeafHashInputs(30, 0, 0)); - e10 = pedersen.hash(index0Hash, index1Hash); - e20 = pedersen.hash(e10, level1ZeroHash); - root = pedersen.hash(e20, level2ZeroHash); + index0Hash = poseidon.hashInputs(createNullifierTreeLeafHashInputs(0, 1, 30)); + let index1Hash = poseidon.hashInputs(createNullifierTreeLeafHashInputs(30, 0, 0)); + e10 = poseidon.hash(index0Hash, index1Hash); + e20 = poseidon.hash(e10, level1ZeroHash); + root = poseidon.hash(e20, level2ZeroHash); tree.appendLeaves([toBufferBE(30n, 32)]); @@ -174,12 +174,12 @@ describe('StandardIndexedTreeSpecific', () => { * nextIdx 2 0 1 0 0 0 0 0 * nextVal 10 0 30 0 0 0 0 0. */ - index0Hash = pedersen.hashInputs(createNullifierTreeLeafHashInputs(0, 2, 10)); - let index2Hash = pedersen.hashInputs(createNullifierTreeLeafHashInputs(10, 1, 30)); - e10 = pedersen.hash(index0Hash, index1Hash); - let e11 = pedersen.hash(index2Hash, INITIAL_LEAF); - e20 = pedersen.hash(e10, e11); - root = pedersen.hash(e20, level2ZeroHash); + index0Hash = poseidon.hashInputs(createNullifierTreeLeafHashInputs(0, 2, 10)); + let index2Hash = poseidon.hashInputs(createNullifierTreeLeafHashInputs(10, 1, 30)); + e10 = poseidon.hash(index0Hash, index1Hash); + let e11 = poseidon.hash(index2Hash, INITIAL_LEAF); + e20 = poseidon.hash(e10, e11); + root = poseidon.hash(e20, level2ZeroHash); tree.appendLeaves([toBufferBE(10n, 32)]); @@ -206,12 +206,12 @@ describe('StandardIndexedTreeSpecific', () => { * nextIdx 2 0 3 1 0 0 0 0 * nextVal 10 0 20 30 0 0 0 0. */ - e10 = pedersen.hash(index0Hash, index1Hash); - index2Hash = pedersen.hashInputs(createNullifierTreeLeafHashInputs(10, 3, 20)); - const index3Hash = pedersen.hashInputs(createNullifierTreeLeafHashInputs(20, 1, 30)); - e11 = pedersen.hash(index2Hash, index3Hash); - e20 = pedersen.hash(e10, e11); - root = pedersen.hash(e20, level2ZeroHash); + e10 = poseidon.hash(index0Hash, index1Hash); + index2Hash = poseidon.hashInputs(createNullifierTreeLeafHashInputs(10, 3, 20)); + const index3Hash = poseidon.hashInputs(createNullifierTreeLeafHashInputs(20, 1, 30)); + e11 = poseidon.hash(index2Hash, index3Hash); + e20 = poseidon.hash(e10, e11); + root = poseidon.hash(e20, level2ZeroHash); tree.appendLeaves([toBufferBE(20n, 32)]); @@ -238,13 +238,13 @@ describe('StandardIndexedTreeSpecific', () => { * nextIdx 2 4 3 1 0 0 0 0 * nextVal 10 50 20 30 0 0 0 0. */ - index1Hash = pedersen.hashInputs(createNullifierTreeLeafHashInputs(30, 4, 50)); - const index4Hash = pedersen.hashInputs(createNullifierTreeLeafHashInputs(50, 0, 0)); - e10 = pedersen.hash(index0Hash, index1Hash); - e20 = pedersen.hash(e10, e11); - const e12 = pedersen.hash(index4Hash, INITIAL_LEAF); - const e21 = pedersen.hash(e12, level1ZeroHash); - root = pedersen.hash(e20, e21); + index1Hash = poseidon.hashInputs(createNullifierTreeLeafHashInputs(30, 4, 50)); + const index4Hash = poseidon.hashInputs(createNullifierTreeLeafHashInputs(50, 0, 0)); + e10 = poseidon.hash(index0Hash, index1Hash); + e20 = poseidon.hash(e10, e11); + const e12 = poseidon.hash(index4Hash, INITIAL_LEAF); + const e21 = poseidon.hash(e12, level1ZeroHash); + root = poseidon.hash(e20, e21); tree.appendLeaves([toBufferBE(50n, 32)]); @@ -297,7 +297,7 @@ describe('StandardIndexedTreeSpecific', () => { it('Can append empty leaves and handle insertions', async () => { // Create a depth-3 indexed merkle tree - const tree = await createDb(openTmpStore(), pedersen, 'test', 3); + const tree = await createDb(openTmpStore(), poseidon, 'test', 3); /** * Initial state: @@ -310,18 +310,18 @@ describe('StandardIndexedTreeSpecific', () => { */ const INITIAL_LEAF = toBufferBE(0n, 32); - const initialLeafHash = pedersen.hashInputs(createNullifierTreeLeafHashInputs(0, 0, 0)); - const level1ZeroHash = pedersen.hash(INITIAL_LEAF, INITIAL_LEAF); - const level2ZeroHash = pedersen.hash(level1ZeroHash, level1ZeroHash); + const initialLeafHash = poseidon.hashInputs(createNullifierTreeLeafHashInputs(0, 0, 0)); + const level1ZeroHash = poseidon.hash(INITIAL_LEAF, INITIAL_LEAF); + const level2ZeroHash = poseidon.hash(level1ZeroHash, level1ZeroHash); let index0Hash = initialLeafHash; - let e10 = pedersen.hash(index0Hash, INITIAL_LEAF); - let e20 = pedersen.hash(e10, level1ZeroHash); + let e10 = poseidon.hash(index0Hash, INITIAL_LEAF); + let e20 = poseidon.hash(e10, level1ZeroHash); const inite10 = e10; const inite20 = e20; - let root = pedersen.hash(e20, level2ZeroHash); + let root = poseidon.hash(e20, level2ZeroHash); const initialRoot = root; const emptySiblingPath = new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, level1ZeroHash, level2ZeroHash]); @@ -344,11 +344,11 @@ describe('StandardIndexedTreeSpecific', () => { * nextIdx 1 0 0 0 0 0 0 0 * nextVal 30 0 0 0 0 0 0 0. */ - index0Hash = pedersen.hashInputs(createNullifierTreeLeafHashInputs(0, 1, 30)); - let index1Hash = pedersen.hashInputs(createNullifierTreeLeafHashInputs(30, 0, 0)); - e10 = pedersen.hash(index0Hash, index1Hash); - e20 = pedersen.hash(e10, level1ZeroHash); - root = pedersen.hash(e20, level2ZeroHash); + index0Hash = poseidon.hashInputs(createNullifierTreeLeafHashInputs(0, 1, 30)); + let index1Hash = poseidon.hashInputs(createNullifierTreeLeafHashInputs(30, 0, 0)); + e10 = poseidon.hash(index0Hash, index1Hash); + e20 = poseidon.hash(e10, level1ZeroHash); + root = poseidon.hash(e20, level2ZeroHash); tree.appendLeaves([toBufferBE(30n, 32)]); @@ -370,12 +370,12 @@ describe('StandardIndexedTreeSpecific', () => { * nextIdx 2 0 1 0 0 0 0 0 * nextVal 10 0 30 0 0 0 0 0. */ - index0Hash = pedersen.hashInputs(createNullifierTreeLeafHashInputs(0, 2, 10)); - let index2Hash = pedersen.hashInputs(createNullifierTreeLeafHashInputs(10, 1, 30)); - e10 = pedersen.hash(index0Hash, index1Hash); - let e11 = pedersen.hash(index2Hash, INITIAL_LEAF); - e20 = pedersen.hash(e10, e11); - root = pedersen.hash(e20, level2ZeroHash); + index0Hash = poseidon.hashInputs(createNullifierTreeLeafHashInputs(0, 2, 10)); + let index2Hash = poseidon.hashInputs(createNullifierTreeLeafHashInputs(10, 1, 30)); + e10 = poseidon.hash(index0Hash, index1Hash); + let e11 = poseidon.hash(index2Hash, INITIAL_LEAF); + e20 = poseidon.hash(e10, e11); + root = poseidon.hash(e20, level2ZeroHash); tree.appendLeaves([toBufferBE(10n, 32)]); @@ -402,12 +402,12 @@ describe('StandardIndexedTreeSpecific', () => { * nextIdx 2 0 3 1 0 0 0 0 * nextVal 10 0 20 30 0 0 0 0. */ - e10 = pedersen.hash(index0Hash, index1Hash); - index2Hash = pedersen.hashInputs(createNullifierTreeLeafHashInputs(10, 3, 20)); - const index3Hash = pedersen.hashInputs(createNullifierTreeLeafHashInputs(20, 1, 30)); - e11 = pedersen.hash(index2Hash, index3Hash); - e20 = pedersen.hash(e10, e11); - root = pedersen.hash(e20, level2ZeroHash); + e10 = poseidon.hash(index0Hash, index1Hash); + index2Hash = poseidon.hashInputs(createNullifierTreeLeafHashInputs(10, 3, 20)); + const index3Hash = poseidon.hashInputs(createNullifierTreeLeafHashInputs(20, 1, 30)); + e11 = poseidon.hash(index2Hash, index3Hash); + e20 = poseidon.hash(e10, e11); + root = poseidon.hash(e20, level2ZeroHash); tree.appendLeaves([toBufferBE(20n, 32)]); @@ -442,13 +442,13 @@ describe('StandardIndexedTreeSpecific', () => { * nextIdx 2 6 3 1 0 0 0 0 * nextVal 10 50 20 30 0 0 0 0. */ - index1Hash = pedersen.hashInputs(createNullifierTreeLeafHashInputs(30, 6, 50)); - const index6Hash = pedersen.hashInputs(createNullifierTreeLeafHashInputs(50, 0, 0)); - e10 = pedersen.hash(index0Hash, index1Hash); - e20 = pedersen.hash(e10, e11); - const e13 = pedersen.hash(index6Hash, INITIAL_LEAF); - const e21 = pedersen.hash(level1ZeroHash, e13); - root = pedersen.hash(e20, e21); + index1Hash = poseidon.hashInputs(createNullifierTreeLeafHashInputs(30, 6, 50)); + const index6Hash = poseidon.hashInputs(createNullifierTreeLeafHashInputs(50, 0, 0)); + e10 = poseidon.hash(index0Hash, index1Hash); + e20 = poseidon.hash(e10, e11); + const e13 = poseidon.hash(index6Hash, INITIAL_LEAF); + const e21 = poseidon.hash(level1ZeroHash, e13); + root = poseidon.hash(e20, e21); tree.appendLeaves([toBufferBE(50n, 32)]); @@ -514,8 +514,8 @@ describe('StandardIndexedTreeSpecific', () => { const SUBTREE_HEIGHT = 5; // originally from NULLIFIER_SUBTREE_HEIGHT // Create a depth-3 indexed merkle tree - const appendTree = await createDb(openTmpStore(), pedersen, 'test', TREE_HEIGHT, INITIAL_TREE_SIZE); - const insertTree = await createDb(openTmpStore(), pedersen, 'test', TREE_HEIGHT, INITIAL_TREE_SIZE); + const appendTree = await createDb(openTmpStore(), poseidon, 'test', TREE_HEIGHT, INITIAL_TREE_SIZE); + const insertTree = await createDb(openTmpStore(), poseidon, 'test', TREE_HEIGHT, INITIAL_TREE_SIZE); appendTree.appendLeaves(leaves); await insertTree.batchInsert(leaves, SUBTREE_HEIGHT); @@ -527,7 +527,7 @@ describe('StandardIndexedTreeSpecific', () => { it('should be able to find indexes of leaves', async () => { const db = openTmpStore(); - const tree = await createDb(db, pedersen, 'test', 3); + const tree = await createDb(db, poseidon, 'test', 3); const values = [Buffer.alloc(32, 1), Buffer.alloc(32, 2)]; tree.appendLeaves([values[0]]); @@ -545,7 +545,7 @@ describe('StandardIndexedTreeSpecific', () => { it('should be able to upsert leaves', async () => { // Create a depth-3 indexed merkle tree const db = openTmpStore(); - const tree = await newTree(PublicDataTree, db, pedersen, 'test', {}, 3, 1); + const tree = await newTree(PublicDataTree, db, poseidon, 'test', {}, 3, 1); /** * Initial state: @@ -559,17 +559,17 @@ describe('StandardIndexedTreeSpecific', () => { */ const EMPTY_LEAF = toBufferBE(0n, 32); - const initialLeafHash = pedersen.hashInputs(createPublicDataTreeLeafHashInputs(0, 0, 0, 0)); - const level1ZeroHash = pedersen.hash(EMPTY_LEAF, EMPTY_LEAF); - const level2ZeroHash = pedersen.hash(level1ZeroHash, level1ZeroHash); + const initialLeafHash = poseidon.hashInputs(createPublicDataTreeLeafHashInputs(0, 0, 0, 0)); + const level1ZeroHash = poseidon.hash(EMPTY_LEAF, EMPTY_LEAF); + const level2ZeroHash = poseidon.hash(level1ZeroHash, level1ZeroHash); let index0Hash = initialLeafHash; - let e10 = pedersen.hash(index0Hash, EMPTY_LEAF); - let e20 = pedersen.hash(e10, level1ZeroHash); + let e10 = poseidon.hash(index0Hash, EMPTY_LEAF); + let e20 = poseidon.hash(e10, level1ZeroHash); const inite10 = e10; - let root = pedersen.hash(e20, level2ZeroHash); + let root = poseidon.hash(e20, level2ZeroHash); const initialRoot = root; const emptySiblingPath = new SiblingPath(TEST_TREE_DEPTH, [EMPTY_LEAF, level1ZeroHash, level2ZeroHash]); @@ -593,11 +593,11 @@ describe('StandardIndexedTreeSpecific', () => { * nextIdx 1 0 0 0 0 0 0 0 * nextSlot 30 0 0 0 0 0 0 0. */ - index0Hash = pedersen.hashInputs(createPublicDataTreeLeafHashInputs(0, 0, 1, 30)); - let index1Hash = pedersen.hashInputs(createPublicDataTreeLeafHashInputs(30, 5, 0, 0)); - e10 = pedersen.hash(index0Hash, index1Hash); - e20 = pedersen.hash(e10, level1ZeroHash); - root = pedersen.hash(e20, level2ZeroHash); + index0Hash = poseidon.hashInputs(createPublicDataTreeLeafHashInputs(0, 0, 1, 30)); + let index1Hash = poseidon.hashInputs(createPublicDataTreeLeafHashInputs(30, 5, 0, 0)); + e10 = poseidon.hash(index0Hash, index1Hash); + e20 = poseidon.hash(e10, level1ZeroHash); + root = poseidon.hash(e20, level2ZeroHash); tree.appendLeaves([createPublicDataTreeLeaf(30, 5).toBuffer()]); @@ -620,10 +620,10 @@ describe('StandardIndexedTreeSpecific', () => { * nextIdx 1 0 0 0 0 0 0 0 * nextSlot 30 0 0 0 0 0 0 0. */ - index1Hash = pedersen.hashInputs(createPublicDataTreeLeafHashInputs(30, 10, 0, 0)); - e10 = pedersen.hash(index0Hash, index1Hash); - e20 = pedersen.hash(e10, level1ZeroHash); - root = pedersen.hash(e20, level2ZeroHash); + index1Hash = poseidon.hashInputs(createPublicDataTreeLeafHashInputs(30, 10, 0, 0)); + e10 = poseidon.hash(index0Hash, index1Hash); + e20 = poseidon.hash(e10, level1ZeroHash); + root = poseidon.hash(e20, level2ZeroHash); tree.appendLeaves([createPublicDataTreeLeaf(30, 10).toBuffer()]); @@ -655,8 +655,8 @@ describe('StandardIndexedTreeSpecific', () => { const SUBTREE_HEIGHT = 5; const db = openTmpStore(); - const appendTree = await newTree(PublicDataTree, db, pedersen, 'test', TREE_HEIGHT, INITIAL_TREE_SIZE); - const insertTree = await newTree(PublicDataTree, db, pedersen, 'test', TREE_HEIGHT, INITIAL_TREE_SIZE); + const appendTree = await newTree(PublicDataTree, db, poseidon, 'test', TREE_HEIGHT, INITIAL_TREE_SIZE); + const insertTree = await newTree(PublicDataTree, db, poseidon, 'test', TREE_HEIGHT, INITIAL_TREE_SIZE); appendTree.appendLeaves(initialState.map(leaf => leaf.toBuffer())); insertTree.appendLeaves(initialState.map(leaf => leaf.toBuffer())); diff --git a/yarn-project/merkle-tree/src/standard_tree/standard_tree.test.ts b/yarn-project/merkle-tree/src/standard_tree/standard_tree.test.ts index 8b88e02e1ba1..29e17406dbcc 100644 --- a/yarn-project/merkle-tree/src/standard_tree/standard_tree.test.ts +++ b/yarn-project/merkle-tree/src/standard_tree/standard_tree.test.ts @@ -8,7 +8,7 @@ import { loadTree } from '../load_tree.js'; import { newTree } from '../new_tree.js'; import { standardBasedTreeTestSuite } from '../test/standard_based_test_suite.js'; import { treeTestSuite } from '../test/test_suite.js'; -import { PedersenWithCounter } from '../test/utils/pedersen_with_counter.js'; +import { PoseidonWithCounter } from '../test/utils/poseidon_with_counter.js'; import { INITIAL_LEAF } from '../tree_base.js'; import { StandardTree } from './standard_tree.js'; @@ -28,22 +28,22 @@ treeTestSuite('StandardTree', createDb, createFromName); standardBasedTreeTestSuite('StandardTree', createDb); describe('StandardTree_batchAppend', () => { - let pedersen: PedersenWithCounter; + let poseidon: PoseidonWithCounter; beforeAll(() => { - pedersen = new PedersenWithCounter(); + poseidon = new PoseidonWithCounter(); }); afterEach(() => { - pedersen.resetCounter(); + poseidon.resetCounter(); }); it('correctly computes root when batch appending and calls hash function expected num times', async () => { const db = openTmpStore(); - const tree = await createDb(db, pedersen, 'test', 3); + const tree = await createDb(db, poseidon, 'test', 3); const leaves = Array.from({ length: 5 }, _ => Fr.random().toBuffer()); - pedersen.resetCounter(); + poseidon.resetCounter(); tree.appendLeaves(leaves); // We append 5 leaves so to update values we do the following hashing on each level: @@ -58,25 +58,25 @@ describe('StandardTree_batchAppend', () => { const level0NumHashing = 1; const expectedNumHashing = level2NumHashing + level1NumHashing + level0NumHashing; - expect(pedersen.hashCounter).toEqual(expectedNumHashing); + expect(poseidon.hashCounter).toEqual(expectedNumHashing); - const level2Node0 = pedersen.hash(leaves[0], leaves[1]); - const level2Node1 = pedersen.hash(leaves[2], leaves[3]); - const level2Node2 = pedersen.hash(leaves[4], INITIAL_LEAF); + const level2Node0 = poseidon.hash(leaves[0], leaves[1]); + const level2Node1 = poseidon.hash(leaves[2], leaves[3]); + const level2Node2 = poseidon.hash(leaves[4], INITIAL_LEAF); - const level2ZeroHash = pedersen.hash(INITIAL_LEAF, INITIAL_LEAF); + const level2ZeroHash = poseidon.hash(INITIAL_LEAF, INITIAL_LEAF); - const level1Node0 = pedersen.hash(level2Node0, level2Node1); - const level1Node1 = pedersen.hash(level2Node2, level2ZeroHash); + const level1Node0 = poseidon.hash(level2Node0, level2Node1); + const level1Node1 = poseidon.hash(level2Node2, level2ZeroHash); - const root = pedersen.hash(level1Node0, level1Node1); + const root = poseidon.hash(level1Node0, level1Node1); expect(tree.getRoot(true)).toEqual(root); }); it('should be able to find indexes of leaves', async () => { const db = openTmpStore(); - const tree = await createDb(db, pedersen, 'test', 3); + const tree = await createDb(db, poseidon, 'test', 3); const values = [Buffer.alloc(32, 1), Buffer.alloc(32, 2)]; tree.appendLeaves([values[0]]); diff --git a/yarn-project/merkle-tree/src/test/standard_based_test_suite.ts b/yarn-project/merkle-tree/src/test/standard_based_test_suite.ts index 2c98fa37db0a..4a50e654fbfe 100644 --- a/yarn-project/merkle-tree/src/test/standard_based_test_suite.ts +++ b/yarn-project/merkle-tree/src/test/standard_based_test_suite.ts @@ -4,7 +4,7 @@ import type { Hasher } from '@aztec/foundation/trees'; import type { AztecKVStore } from '@aztec/kv-store'; import { openTmpStore } from '@aztec/kv-store/lmdb'; -import { INITIAL_LEAF, Pedersen } from '../index.js'; +import { INITIAL_LEAF, Poseidon } from '../index.js'; import type { AppendOnlyTree } from '../interfaces/append_only_tree.js'; import type { UpdateOnlyTree } from '../interfaces/update_only_tree.js'; import { appendLeaves } from './utils/append_leaves.js'; @@ -21,11 +21,11 @@ export const standardBasedTreeTestSuite = ( ) => Promise, ) => { describe(testName, () => { - let pedersen: Pedersen; + let poseidon: Poseidon; const values: Buffer[] = []; beforeAll(() => { - pedersen = new Pedersen(); + poseidon = new Poseidon(); for (let i = 0; i < 4; ++i) { const v = Buffer.alloc(32, i + 1); @@ -36,25 +36,25 @@ export const standardBasedTreeTestSuite = ( it('should have correct empty tree root for depth 32', async () => { const db = openTmpStore(); - const tree = await createDb(db, pedersen, 'test', 32); + const tree = await createDb(db, poseidon, 'test', 32); const root = tree.getRoot(false); - expect(root.toString('hex')).toEqual('16642d9ccd8346c403aa4c3fa451178b22534a27035cdaa6ec34ae53b29c50cb'); + expect(root.toString('hex')).toEqual('0b59baa35b9dc267744f0ccb4e3b0255c1fc512460d91130c6bc19fb2668568d'); }); it('should throw when appending beyond max index', async () => { const db = openTmpStore(); - const tree = await createDb(db, pedersen, 'test', 2); + const tree = await createDb(db, poseidon, 'test', 2); const leaves = Array.from({ length: 5 }, _ => Fr.random().toBuffer()); await expect(appendLeaves(tree, leaves)).rejects.toThrow(); }); it('should have correct root and sibling paths', async () => { const db = openTmpStore(); - const tree = await createDb(db, pedersen, 'test', 2); + const tree = await createDb(db, poseidon, 'test', 2); - const level1ZeroHash = pedersen.hash(INITIAL_LEAF, INITIAL_LEAF); + const level1ZeroHash = poseidon.hash(INITIAL_LEAF, INITIAL_LEAF); expect(tree.getNumLeaves(false)).toEqual(0n); - expect(tree.getRoot(false)).toEqual(pedersen.hash(level1ZeroHash, level1ZeroHash)); + expect(tree.getRoot(false)).toEqual(poseidon.hash(level1ZeroHash, level1ZeroHash)); expect(await tree.getSiblingPath(0n, false)).toEqual( new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, level1ZeroHash]), ); @@ -62,23 +62,23 @@ export const standardBasedTreeTestSuite = ( await appendLeaves(tree, [values[0]]); expect(tree.getNumLeaves(true)).toEqual(1n); expect(tree.getNumLeaves(false)).toEqual(0n); - expect(tree.getRoot(true)).toEqual(pedersen.hash(pedersen.hash(values[0], INITIAL_LEAF), level1ZeroHash)); + expect(tree.getRoot(true)).toEqual(poseidon.hash(poseidon.hash(values[0], INITIAL_LEAF), level1ZeroHash)); expect(await tree.getSiblingPath(0n, true)).toEqual( new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, level1ZeroHash]), ); - expect(tree.getRoot(false)).toEqual(pedersen.hash(level1ZeroHash, level1ZeroHash)); + expect(tree.getRoot(false)).toEqual(poseidon.hash(level1ZeroHash, level1ZeroHash)); expect(await tree.getSiblingPath(0n, false)).toEqual( new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, level1ZeroHash]), ); await appendLeaves(tree, [values[1]]); expect(tree.getNumLeaves(true)).toEqual(2n); - expect(tree.getRoot(true)).toEqual(pedersen.hash(pedersen.hash(values[0], values[1]), level1ZeroHash)); + expect(tree.getRoot(true)).toEqual(poseidon.hash(poseidon.hash(values[0], values[1]), level1ZeroHash)); expect(await tree.getSiblingPath(1n, true)).toEqual( new SiblingPath(TEST_TREE_DEPTH, [values[0], level1ZeroHash]), ); expect(tree.getNumLeaves(false)).toEqual(0n); - expect(tree.getRoot(false)).toEqual(pedersen.hash(level1ZeroHash, level1ZeroHash)); + expect(tree.getRoot(false)).toEqual(poseidon.hash(level1ZeroHash, level1ZeroHash)); expect(await tree.getSiblingPath(1n, false)).toEqual( new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, level1ZeroHash]), ); @@ -86,13 +86,13 @@ export const standardBasedTreeTestSuite = ( await appendLeaves(tree, [values[2]]); expect(tree.getNumLeaves(true)).toEqual(3n); expect(tree.getRoot(true)).toEqual( - pedersen.hash(pedersen.hash(values[0], values[1]), pedersen.hash(values[2], INITIAL_LEAF)), + poseidon.hash(poseidon.hash(values[0], values[1]), poseidon.hash(values[2], INITIAL_LEAF)), ); expect(await tree.getSiblingPath(2n, true)).toEqual( - new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, pedersen.hash(values[0], values[1])]), + new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, poseidon.hash(values[0], values[1])]), ); expect(tree.getNumLeaves(false)).toEqual(0n); - expect(tree.getRoot(false)).toEqual(pedersen.hash(level1ZeroHash, level1ZeroHash)); + expect(tree.getRoot(false)).toEqual(poseidon.hash(level1ZeroHash, level1ZeroHash)); expect(await tree.getSiblingPath(2n, false)).toEqual( new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, level1ZeroHash]), ); @@ -100,29 +100,29 @@ export const standardBasedTreeTestSuite = ( await appendLeaves(tree, [values[3]]); expect(tree.getNumLeaves(true)).toEqual(4n); expect(tree.getRoot(true)).toEqual( - pedersen.hash(pedersen.hash(values[0], values[1]), pedersen.hash(values[2], values[3])), + poseidon.hash(poseidon.hash(values[0], values[1]), poseidon.hash(values[2], values[3])), ); expect(await tree.getSiblingPath(3n, true)).toEqual( - new SiblingPath(TEST_TREE_DEPTH, [values[2], pedersen.hash(values[0], values[1])]), + new SiblingPath(TEST_TREE_DEPTH, [values[2], poseidon.hash(values[0], values[1])]), ); expect(tree.getNumLeaves(false)).toEqual(0n); - expect(tree.getRoot(false)).toEqual(pedersen.hash(level1ZeroHash, level1ZeroHash)); + expect(tree.getRoot(false)).toEqual(poseidon.hash(level1ZeroHash, level1ZeroHash)); expect(await tree.getSiblingPath(3n, false)).toEqual( new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, level1ZeroHash]), ); // Lifted from memory_tree.test.cpp to ensure consistency. //expect(root.toString('hex')).toEqual('0bf2e78afd70f72b0e6eafb03c41faef167a82441b05e517cdf35d813302061f'); expect(await tree.getSiblingPath(0n, true)).toEqual( - new SiblingPath(TEST_TREE_DEPTH, [values[1], pedersen.hash(values[2], values[3])]), + new SiblingPath(TEST_TREE_DEPTH, [values[1], poseidon.hash(values[2], values[3])]), ); expect(await tree.getSiblingPath(1n, true)).toEqual( - new SiblingPath(TEST_TREE_DEPTH, [values[0], pedersen.hash(values[2], values[3])]), + new SiblingPath(TEST_TREE_DEPTH, [values[0], poseidon.hash(values[2], values[3])]), ); expect(await tree.getSiblingPath(2n, true)).toEqual( - new SiblingPath(TEST_TREE_DEPTH, [values[3], pedersen.hash(values[0], values[1])]), + new SiblingPath(TEST_TREE_DEPTH, [values[3], poseidon.hash(values[0], values[1])]), ); expect(await tree.getSiblingPath(3n, true)).toEqual( - new SiblingPath(TEST_TREE_DEPTH, [values[2], pedersen.hash(values[0], values[1])]), + new SiblingPath(TEST_TREE_DEPTH, [values[2], poseidon.hash(values[0], values[1])]), ); await tree.commit(); diff --git a/yarn-project/merkle-tree/src/test/test_suite.ts b/yarn-project/merkle-tree/src/test/test_suite.ts index de1e0fe3aea0..ccb92e67fd55 100644 --- a/yarn-project/merkle-tree/src/test/test_suite.ts +++ b/yarn-project/merkle-tree/src/test/test_suite.ts @@ -3,7 +3,7 @@ import type { Hasher } from '@aztec/foundation/trees'; import type { AztecKVStore } from '@aztec/kv-store'; import { openTmpStore } from '@aztec/kv-store/lmdb'; -import { Pedersen } from '../index.js'; +import { Poseidon } from '../index.js'; import type { AppendOnlyTree } from '../interfaces/append_only_tree.js'; import type { UpdateOnlyTree } from '../interfaces/update_only_tree.js'; import { appendLeaves } from './utils/append_leaves.js'; @@ -36,7 +36,7 @@ export const treeTestSuite = ( ) => { describe(testName, () => { const values: Buffer[] = []; - let pedersen: Pedersen; + let poseidon: Poseidon; beforeAll(() => { for (let i = 0; i < 32; ++i) { @@ -47,15 +47,15 @@ export const treeTestSuite = ( }); beforeEach(() => { - pedersen = new Pedersen(); + poseidon = new Poseidon(); }); it('should revert changes on rollback', async () => { const dbEmpty = openTmpStore(); - const emptyTree = await createDb(dbEmpty, pedersen, 'test', 10); + const emptyTree = await createDb(dbEmpty, poseidon, 'test', 10); const db = openTmpStore(); - const tree = await createDb(db, pedersen, 'test2', 10); + const tree = await createDb(db, poseidon, 'test2', 10); await appendLeaves(tree, values.slice(0, 4)); const firstRoot = tree.getRoot(true); @@ -87,10 +87,10 @@ export const treeTestSuite = ( it('should not revert changes after commit', async () => { const dbEmpty = openTmpStore(); - const emptyTree = await createDb(dbEmpty, pedersen, 'test', 10); + const emptyTree = await createDb(dbEmpty, poseidon, 'test', 10); const db = openTmpStore(); - const tree = await createDb(db, pedersen, 'test2', 10); + const tree = await createDb(db, poseidon, 'test2', 10); await appendLeaves(tree, values.slice(0, 4)); expect(tree.getRoot(true)).not.toEqual(emptyTree.getRoot(true)); @@ -106,11 +106,11 @@ export const treeTestSuite = ( it('should be able to restore from previous committed data', async () => { const db = openTmpStore(); - const tree = await createDb(db, pedersen, 'test', 10); + const tree = await createDb(db, poseidon, 'test', 10); await appendLeaves(tree, values.slice(0, 4)); await tree.commit(); - const tree2 = await createFromName(db, pedersen, 'test'); + const tree2 = await createFromName(db, poseidon, 'test'); // both committed and uncommitted should be equal to the restored data expect(tree.getRoot(true)).toEqual(tree2.getRoot(true)); @@ -125,14 +125,14 @@ export const treeTestSuite = ( const db = openTmpStore(); await expect( (async () => { - await createFromName(db, pedersen, 'a_whole_new_tree'); + await createFromName(db, poseidon, 'a_whole_new_tree'); })(), ).rejects.toThrow(); }); it('should serialize sibling path data to a buffer and be able to deserialize it back', async () => { const db = openTmpStore(); - const tree = await createDb(db, pedersen, 'test', 10); + const tree = await createDb(db, poseidon, 'test', 10); await appendLeaves(tree, values.slice(0, 1)); const siblingPath = await tree.getSiblingPath(0n, true); diff --git a/yarn-project/merkle-tree/src/test/utils/pedersen_with_counter.ts b/yarn-project/merkle-tree/src/test/utils/poseidon_with_counter.ts similarity index 65% rename from yarn-project/merkle-tree/src/test/utils/pedersen_with_counter.ts rename to yarn-project/merkle-tree/src/test/utils/poseidon_with_counter.ts index d6a9ec347c47..9271456a97cd 100644 --- a/yarn-project/merkle-tree/src/test/utils/pedersen_with_counter.ts +++ b/yarn-project/merkle-tree/src/test/utils/poseidon_with_counter.ts @@ -1,11 +1,11 @@ -import { Pedersen } from '../../index.js'; +import { Poseidon } from '../../index.js'; /** * A test utility allowing us to count the number of times the hash function has been called. - * @deprecated Don't call pedersen directly in production code. Instead, create suitably-named functions for specific + * @deprecated Don't call poseidon2 directly in production code. Instead, create suitably-named functions for specific * purposes. */ -export class PedersenWithCounter extends Pedersen { +export class PoseidonWithCounter extends Poseidon { /** * The number of times the hash function has been called. */ @@ -16,7 +16,7 @@ export class PedersenWithCounter extends Pedersen { * @param lhs - The first 32-byte array. * @param rhs - The second 32-byte array. * @returns The new 32-byte hash. - * @deprecated Don't call pedersen directly in production code. Instead, create suitably-named functions for specific + * @deprecated Don't call poseidon2 directly in production code. Instead, create suitably-named functions for specific * purposes. */ public override hash(lhs: Uint8Array, rhs: Uint8Array) { diff --git a/yarn-project/noir-protocol-circuits-types/src/__snapshots__/noir_test_gen.test.ts.snap b/yarn-project/noir-protocol-circuits-types/src/__snapshots__/noir_test_gen.test.ts.snap index 168a642eaf94..a8858f1fdf12 100644 --- a/yarn-project/noir-protocol-circuits-types/src/__snapshots__/noir_test_gen.test.ts.snap +++ b/yarn-project/noir-protocol-circuits-types/src/__snapshots__/noir_test_gen.test.ts.snap @@ -2,13 +2,13 @@ exports[`Data generation for noir tests Computes contract info for defaultContract 1`] = ` { - "address": "AztecAddress { inner: 0x00204a62efe98dfab19d055c36323311c718a36768d17a11b73d7d1da3cfc611 }", + "address": "AztecAddress { inner: 0x197fecf3ef0ce8aea0c4e97085eff2e55a61c3ffc2728055a7f5212dfdfc6b05 }", "artifact_hash": "0x0000000000000000000000000000000000000000000000000000000000003039", "contract_address_salt": "0x000000000000000000000000000000000000000000000000000000000000ddd5", - "contract_class_id": "ContractClassId { inner: 0x05f9427d40b11ea829d365a3dfa6470529d8767611d2499f226aff85a2275ceb }", + "contract_class_id": "ContractClassId { inner: 0x1f9a0837131f73ee6b7f18feb43d7f305e9202060947e2c4c57a6788c11d6b48 }", "deployer": "AztecAddress { inner: 0x0000000000000000000000000000000000000000000000000000000000000000 }", - "partial_address": "PartialAddress { inner: 0x277ef3900caa8c16c8b09af381a153b1090b8dcd05ca8d11381bd556d3dff83f }", - "private_functions_root": "0x1f5723197ad3493936f2a95d7ec2095e54f3e1e74aeb3b71ef1e4af52be749ea", + "partial_address": "PartialAddress { inner: 0x1f25b7e6117515624636e717f423abab25d2bce1be0e89ae2c546f340760b2ae }", + "private_functions_root": "0x111150b83bd3dd6692d78e66b7505082d94bde1e4286a60bc24a9944e1238a10", "public_bytecode_commitment": "0x02b7e5d00c7db713d9bbca97fb00109acf3a5d6c017b61fe3760ef35a72c88ae", "public_keys": "PublicKeys { inner: 0x01498945581e0eb9f8427ad6021184c700ef091d570892c437d12c7d90364bbd170ae506787c5c43d6ca9255d571c10fa9ffa9d141666e290c347c5c9ab7e34400c044b05b6ca83b9c2dbae79cc1135155956a64e136819136e9947fe5e5866c1c1f0ca244c7cd46b682552bff8ae77dea40b966a71de076ec3b7678f2bdb1511b00316144359e9a3ec8e49c1cdb7eeb0cedd190dfd9dc90eea5115aa779e287080ffc74d7a8b0bccb88ac11f45874172f3847eb8b92654aaa58a3d2b8dc7833019c111f36ad3fc1d9b7a7a14344314d2864b94f030594cd67f753ef774a1efb2039907fe37f08d10739255141bb066c506a12f7d1e8dfec21abc58494705b6f }", "salted_initialization_hash": "SaltedInitializationHash { inner: 0x13a939daa511233e5446905ed2cadbee14948fa75df183b53b5c14b612bffe88 }", @@ -17,13 +17,13 @@ exports[`Data generation for noir tests Computes contract info for defaultContra exports[`Data generation for noir tests Computes contract info for parentContract 1`] = ` { - "address": "AztecAddress { inner: 0x1c39b2e8dd895a050e47e2acc00852475d9786ed38ce28d9b625db01f9595971 }", + "address": "AztecAddress { inner: 0x0824f18102f61435fc8f690abcb44f1e60690ac4e8bf9b14e453c34434b1e5be }", "artifact_hash": "0x00000000000000000000000000000000000000000000000000000000000004bc", "contract_address_salt": "0x0000000000000000000000000000000000000000000000000000000000001618", - "contract_class_id": "ContractClassId { inner: 0x27a7371f6abbef7894bbe0b8b09bb2f1a329ff651b28fb604f083dd3ff01c193 }", + "contract_class_id": "ContractClassId { inner: 0x187225570228a6601e764222c86371709ca615702d3579ec80b1d1a5b0857f56 }", "deployer": "AztecAddress { inner: 0x0000000000000000000000000000000000000000000000000000000000000000 }", - "partial_address": "PartialAddress { inner: 0x0c4c2173b41718780243a3160059661269c6c0fe86020e2e80338dbb2458f92b }", - "private_functions_root": "0x164ec839e154a97418997f29881d8bf2efafa5ea0a03d16ed576694a85150e61", + "partial_address": "PartialAddress { inner: 0x094bd414214b2bafc654bd8f42e5fe63c2ff9265cfa0f1e7c3bd2b2fda7c716f }", + "private_functions_root": "0x266a7c20d00e3a11d7d215ace10bc3381636a737072df3db9cc498c11980a437", "public_bytecode_commitment": "0x1fa970012bd11a88985f21a34cf26a285e696af1986c6348c6c46aedc6cc890b", "public_keys": "PublicKeys { inner: 0x01498945581e0eb9f8427ad6021184c700ef091d570892c437d12c7d90364bbd170ae506787c5c43d6ca9255d571c10fa9ffa9d141666e290c347c5c9ab7e34400c044b05b6ca83b9c2dbae79cc1135155956a64e136819136e9947fe5e5866c1c1f0ca244c7cd46b682552bff8ae77dea40b966a71de076ec3b7678f2bdb1511b00316144359e9a3ec8e49c1cdb7eeb0cedd190dfd9dc90eea5115aa779e287080ffc74d7a8b0bccb88ac11f45874172f3847eb8b92654aaa58a3d2b8dc7833019c111f36ad3fc1d9b7a7a14344314d2864b94f030594cd67f753ef774a1efb2039907fe37f08d10739255141bb066c506a12f7d1e8dfec21abc58494705b6f }", "salted_initialization_hash": "SaltedInitializationHash { inner: 0x24bd6ac7a182e2cf25e437c72f53544ef81dfd97d9afee23abb07a638e7be749 }", @@ -32,13 +32,13 @@ exports[`Data generation for noir tests Computes contract info for parentContrac exports[`Data generation for noir tests Computes contract info for updatedContract 1`] = ` { - "address": "AztecAddress { inner: 0x2dd3ecb9b3937c680a20d06c2994999d5e8a72e8901bfe0f7e31b2e6ccb7e80e }", + "address": "AztecAddress { inner: 0x1be1fee643f8ac124bd47fc222edd73ec1d67706aa0b1e0707addbc9e9cd3bad }", "artifact_hash": "0x0000000000000000000000000000000000000000000000000000000000054501", "contract_address_salt": "0x0000000000000000000000000000000000000000000000000000000000000315", - "contract_class_id": "ContractClassId { inner: 0x218c779f08028a0e6581034d3ee3debfb78d7ba8ece5b84f8ac3bac760b6310e }", + "contract_class_id": "ContractClassId { inner: 0x19e75f274b7832c07da50d64eb6316de2447f7d91a9827e8a8745104d1b1fcf5 }", "deployer": "AztecAddress { inner: 0x0000000000000000000000000000000000000000000000000000000000000000 }", - "partial_address": "PartialAddress { inner: 0x05af9078f69f9bad9fd33b81fcfcd88e3d360a2378555effffee13b1932c8cf7 }", - "private_functions_root": "0x1b8462562b1df0f1e94258ecfb5f1829e2a849193b903dc30d104ca10e6fc74a", + "partial_address": "PartialAddress { inner: 0x0ac8e513c7069c420b28c32a989d846efffe50674c1d987705e9631b92c6852c }", + "private_functions_root": "0x2a35e33b01a072d2cd52451e7cf20af95ce7a2ccd47b8643757fbb166603210a", "public_bytecode_commitment": "0x169c8c76eb583c568c282a65efd575aee36469420e546e374a6ccb01ce9907cd", "public_keys": "PublicKeys { inner: 0x01498945581e0eb9f8427ad6021184c700ef091d570892c437d12c7d90364bbd170ae506787c5c43d6ca9255d571c10fa9ffa9d141666e290c347c5c9ab7e34400c044b05b6ca83b9c2dbae79cc1135155956a64e136819136e9947fe5e5866c1c1f0ca244c7cd46b682552bff8ae77dea40b966a71de076ec3b7678f2bdb1511b00316144359e9a3ec8e49c1cdb7eeb0cedd190dfd9dc90eea5115aa779e287080ffc74d7a8b0bccb88ac11f45874172f3847eb8b92654aaa58a3d2b8dc7833019c111f36ad3fc1d9b7a7a14344314d2864b94f030594cd67f753ef774a1efb2039907fe37f08d10739255141bb066c506a12f7d1e8dfec21abc58494705b6f }", "salted_initialization_hash": "SaltedInitializationHash { inner: 0x2168f485e821a180e08604f018f041f683bb0f510c34f5441bc2241b24998242 }", @@ -52,12 +52,12 @@ exports[`Data generation for noir tests Computes function tree for the private f leaf_index: 0, sibling_path: [ 0x037939dcecffeec83a83cc58ede4b23e1494778484d3e92be639a5ea31bf4790, -0x233d10e0c959338e062b1c76fb81e17fcf61643da568eac372bb7feac8bfa357, -0x0e1ce4f11f4d51a7d3136abbd625315fff3876d322e46ad8401da96f8e43a614, -0x1a0ca5eecb1430479902264f04e557160a4666fb42bb8b283c6397e3d17ac937, -0x2a6595890719fef7967c209488728aa5342438ba52058a3c770202f55acf6854, -0x0a43a7d0ff038f2492a51b4465c73f28c0644cdde523cb652668b167eab21b7a, -0x2a9072ec897e59149199988f87258e75d43dea6ccb509eb1f6f864c3294dd512 +0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290, +0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20, +0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e, +0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf, +0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76, +0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b ], }", "vk_hash": "0x000000000000000000000000000000000000000000000000000000000001e0f3", @@ -70,13 +70,13 @@ exports[`Data generation for noir tests Computes function tree for the private f "membership_witness": "MembershipWitness { leaf_index: 0, sibling_path: [ -0x27b1d0839a5b23baf12a8d195b18ac288fcf401afb2f70b8a4b529ede5fa9fed, -0x233d10e0c959338e062b1c76fb81e17fcf61643da568eac372bb7feac8bfa357, -0x0e1ce4f11f4d51a7d3136abbd625315fff3876d322e46ad8401da96f8e43a614, -0x1a0ca5eecb1430479902264f04e557160a4666fb42bb8b283c6397e3d17ac937, -0x2a6595890719fef7967c209488728aa5342438ba52058a3c770202f55acf6854, -0x0a43a7d0ff038f2492a51b4465c73f28c0644cdde523cb652668b167eab21b7a, -0x2a9072ec897e59149199988f87258e75d43dea6ccb509eb1f6f864c3294dd512 +0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1, +0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290, +0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20, +0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e, +0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf, +0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76, +0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b ], }", "vk_hash": "0x00000000000000000000000000000000000000000000000000000000000c0d1d", @@ -90,12 +90,12 @@ exports[`Data generation for noir tests Computes function tree for the private f leaf_index: 0, sibling_path: [ 0x2bcb577804e7496d0fcea84772c2801ee2e0c90f64472b6e8c5809fac00deb77, -0x233d10e0c959338e062b1c76fb81e17fcf61643da568eac372bb7feac8bfa357, -0x0e1ce4f11f4d51a7d3136abbd625315fff3876d322e46ad8401da96f8e43a614, -0x1a0ca5eecb1430479902264f04e557160a4666fb42bb8b283c6397e3d17ac937, -0x2a6595890719fef7967c209488728aa5342438ba52058a3c770202f55acf6854, -0x0a43a7d0ff038f2492a51b4465c73f28c0644cdde523cb652668b167eab21b7a, -0x2a9072ec897e59149199988f87258e75d43dea6ccb509eb1f6f864c3294dd512 +0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290, +0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20, +0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e, +0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf, +0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76, +0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b ], }", "vk_hash": "0x0000000000000000000000000000000000000000000000000000000000001e6c", diff --git a/yarn-project/stdlib/src/contract/__snapshots__/private_function.test.ts.snap b/yarn-project/stdlib/src/contract/__snapshots__/private_function.test.ts.snap index 9accada126b0..c5a4df691938 100644 --- a/yarn-project/stdlib/src/contract/__snapshots__/private_function.test.ts.snap +++ b/yarn-project/stdlib/src/contract/__snapshots__/private_function.test.ts.snap @@ -4,284 +4,308 @@ exports[`PrivateFunction computes merkle tree 1`] = ` [ "���#Ȃ@ѯ*�\`wR'+�C4Lh�x�(�", "+��9KGGۋ�x�2\\��ڂ�}���J��(�Ԩ�", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", - "'�Ѓ�[#��*�[�(��@�/p���)�����", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", + " c�7�J�*E,)!�f:���UT�e�x)V�", "*��y;�7ۢ�|w��i��+ .��", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "#=��Y3�+v����ad=�h��r��ȿ�W", - "�,4�� x�8ۨ]�����)�}���je���", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - "��MQ��j��%1_�8v�"�j�@�o�C�", - ". -��⑶���� -��&с�e�D��%�YW���", - " ���0G�&O�W -Ff�B��( { }; const contractClassId = await computeContractClassId(contractClass); expect(contractClassId.toString()).toMatchInlineSnapshot( - `"0x1f2b3a3c438e4097567cc90ecf43929930b7244f7d2fbcca61ae172d1df3c75c"`, + `"0x2731a26ac05991b7424963be532299e369dc106e86ac5231d0f8b6faab79d6c3"`, ); }); }); diff --git a/yarn-project/stdlib/src/contract/private_function.ts b/yarn-project/stdlib/src/contract/private_function.ts index 2af75f88479f..8f4c7e31212d 100644 --- a/yarn-project/stdlib/src/contract/private_function.ts +++ b/yarn-project/stdlib/src/contract/private_function.ts @@ -1,5 +1,4 @@ import { FUNCTION_TREE_HEIGHT, GeneratorIndex } from '@aztec/constants'; -import { pedersenHash } from '@aztec/foundation/crypto/pedersen'; import { poseidon2Hash, poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon'; import { Fr } from '@aztec/foundation/curves/bn254'; import { type MerkleTree, MerkleTreeCalculator } from '@aztec/foundation/trees'; @@ -38,7 +37,7 @@ export async function computePrivateFunctionLeaf(fn: PrivateFunction): Promise { if (!privateFunctionTreeCalculator) { const functionTreeZeroLeaf = ( - await pedersenHash(new Array(PRIVATE_FUNCTION_SIZE).fill(0)) + await poseidon2Hash(new Array(PRIVATE_FUNCTION_SIZE).fill(0)) ).toBuffer() as Buffer; privateFunctionTreeCalculator = await MerkleTreeCalculator.create( FUNCTION_TREE_HEIGHT,