Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Use poseidon for merkle tree hashing #7356

Merged
merged 26 commits into from
Aug 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
b1da301
add no predicates back to poseidon2_hash
sirasistant Jul 5, 2024
f82b644
wip poseidon trees
sirasistant Jul 5, 2024
3b9cefa
fix inclusion
sirasistant Jul 5, 2024
fec35f4
fix test
sirasistant Jul 5, 2024
86c2aa9
increase test timeout
sirasistant Jul 5, 2024
0e23785
Merge branch 'master' into arv/pedersen_to_poseidon
sirasistant Jul 8, 2024
4fb41fe
Merge branch 'master' into arv/pedersen_to_poseidon
sirasistant Jul 8, 2024
643066b
fix vks
sirasistant Jul 8, 2024
108e67f
Merge branch 'master' into arv/pedersen_to_poseidon
sirasistant Jul 8, 2024
736839c
Merge branch 'master' into arv/pedersen_to_poseidon
sirasistant Jul 10, 2024
ce44c9d
Merge branch 'master' into arv/pedersen_to_poseidon
sirasistant Jul 11, 2024
6f73f7d
Merge branch 'master' into arv/pedersen_to_poseidon
sirasistant Jul 11, 2024
3134d76
Merge branch 'master' into arv/pedersen_to_poseidon
sirasistant Jul 12, 2024
d3f7d0b
Merge branch 'master' into arv/pedersen_to_poseidon
sirasistant Aug 1, 2024
32865b8
chore: add no predicates to poseidon2 with separator
sirasistant Aug 2, 2024
23a9eb6
Merge branch 'master' into arv/pedersen_to_poseidon
sirasistant Aug 2, 2024
526a572
Merge branch 'master' into arv/pedersen_to_poseidon
sirasistant Aug 2, 2024
fdc38c2
Merge branch 'master' into arv/pedersen_to_poseidon
sirasistant Aug 2, 2024
2beb7e4
chore: double poseidon gate capacity
sirasistant Aug 2, 2024
820c256
Merge branch 'arv/pedersen_to_poseidon' of github.com:AztecProtocol/a…
sirasistant Aug 2, 2024
ec8a098
Merge branch 'master' into arv/pedersen_to_poseidon
sirasistant Aug 2, 2024
11f9138
Merge branch 'master' into arv/pedersen_to_poseidon
sirasistant Aug 2, 2024
1619bff
Merge branch 'master' into arv/pedersen_to_poseidon
sirasistant Aug 5, 2024
bde480b
chore: fix constants after master merge
sirasistant Aug 5, 2024
c4b0a8c
update fixtures
sirasistant Aug 5, 2024
8e73e09
rename
sirasistant Aug 5, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/ensure-tester-with-images/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ inputs:
tester_ttl:
required: false
description: "Time to live for the tester instance in minutes"
default: 30
default: 45
runs:
# define an action, runs in OS of caller
using: composite
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,8 @@ template <typename FF_> class MegaArith {
this->aux = 1400000;
this->lookup = 460000;
this->busread = 1 << 7;
this->poseidon_external = 15000;
this->poseidon_internal = 85000;
this->poseidon_external = 30000;
this->poseidon_internal = 170000;
}
};

Expand Down
10 changes: 5 additions & 5 deletions l1-contracts/src/core/libraries/ConstantsGen.sol
Original file line number Diff line number Diff line change
Expand Up @@ -124,15 +124,15 @@ library Constants {
uint256 internal constant L2_GAS_PER_NOTE_HASH = 32;
uint256 internal constant L2_GAS_PER_NULLIFIER = 64;
uint256 internal constant CANONICAL_KEY_REGISTRY_ADDRESS =
1846248480517165521743643626257274710444505994181338106189373716137867887031;
13457222047904330765774796260088567201269649167356521005501223652902339211182;
uint256 internal constant CANONICAL_AUTH_REGISTRY_ADDRESS =
291851909807592677788453151491906806151300647123080163180507453297558628774;
16522644890256297179255458951626875692461008240031142745359776058397274208468;
uint256 internal constant DEPLOYER_CONTRACT_ADDRESS =
9256947041321027089533495832830405543710101516429552788062967841445602134030;
19310994760783330368337163480198602393920956587162708699802190083077641908361;
uint256 internal constant REGISTERER_CONTRACT_ADDRESS =
867409746588255642605883457564767101821478729272763062990600291025697803994;
2631409926445785927331173506476539962589925110142857699603561302478860342858;
uint256 internal constant GAS_TOKEN_ADDRESS =
8777298866013239306861859762114222884687709421566494727011568767822269644915;
5232557136129983235483007223848855544006161252993804924983404332852577870185;
uint256 internal constant AZTEC_ADDRESS_LENGTH = 1;
uint256 internal constant GAS_FEES_LENGTH = 2;
uint256 internal constant GAS_LENGTH = 2;
Expand Down
4 changes: 2 additions & 2 deletions noir-projects/aztec-nr/aztec/src/history/note_inclusion.nr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use std::merkle::compute_merkle_root;
use dep::protocol_types::merkle_tree::root::root_from_sibling_path;
use dep::protocol_types::header::Header;

use crate::{
Expand All @@ -20,7 +20,7 @@ impl ProveNoteInclusion for Header {

// 3) Prove that the commitment is in the note hash tree
assert_eq(
self.state.partial.note_hash_tree.root, compute_merkle_root(note_hash, witness.index, witness.path), "Proving note inclusion failed"
self.state.partial.note_hash_tree.root, root_from_sibling_path(note_hash, witness.index, witness.path), "Proving note inclusion failed"
);
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use std::merkle::compute_merkle_root;
use dep::protocol_types::merkle_tree::root::root_from_sibling_path;
use dep::protocol_types::header::Header;

use crate::{
Expand All @@ -24,7 +24,7 @@ impl ProveNullifierInclusion for Header {
// 4) Prove that the nullifier is in the nullifier tree
assert(
self.state.partial.nullifier_tree.root
== compute_merkle_root(nullifier_leaf, witness.index, witness.path), "Proving nullifier inclusion failed"
== root_from_sibling_path(nullifier_leaf, witness.index, witness.path), "Proving nullifier inclusion failed"
);
// --> Now we have traversed the trees all the way up to archive root and verified that the nullifier
// was included in the nullifier tree.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use std::merkle::compute_merkle_root;
use dep::protocol_types::merkle_tree::root::root_from_sibling_path;
use dep::protocol_types::{header::Header, utils::field::{full_field_less_than, full_field_greater_than}};
use crate::{
context::PrivateContext, note::{utils::compute_siloed_nullifier, note_interface::NoteInterface},
Expand All @@ -20,7 +20,7 @@ impl ProveNullifierNonInclusion for Header {
let low_nullifier_leaf = witness.leaf_preimage.hash();
assert(
self.state.partial.nullifier_tree.root
== compute_merkle_root(low_nullifier_leaf, witness.index, witness.path), "Proving nullifier non-inclusion failed: Could not prove low nullifier inclusion"
== root_from_sibling_path(low_nullifier_leaf, witness.index, witness.path), "Proving nullifier non-inclusion failed: Could not prove low nullifier inclusion"
);

// 2.b) Prove that the low nullifier is smaller than the nullifier
Expand Down
4 changes: 2 additions & 2 deletions noir-projects/aztec-nr/aztec/src/history/public_storage.nr
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use dep::protocol_types::{
constants::GENERATOR_INDEX__PUBLIC_LEAF_INDEX, hash::poseidon2_hash_with_separator,
address::AztecAddress, header::Header, utils::field::full_field_less_than
};
use std::merkle::compute_merkle_root;
use dep::protocol_types::merkle_tree::root::root_from_sibling_path;

use crate::{context::PrivateContext, oracle::get_public_data_witness::get_public_data_witness};

Expand Down Expand Up @@ -46,7 +46,7 @@ impl PublicStorageHistoricalRead for Header {
// but also the metadata (slot, next index and next slot).
assert(
self.state.partial.public_data_tree.root
== compute_merkle_root(preimage.hash(), witness.index, witness.path), "Proving public value inclusion failed"
== root_from_sibling_path(preimage.hash(), witness.index, witness.path), "Proving public value inclusion failed"
);

value
Expand Down
4 changes: 2 additions & 2 deletions noir-projects/aztec-nr/aztec/src/messaging.nr
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use crate::{
oracle::get_l1_to_l2_membership_witness::get_l1_to_l2_membership_witness
};

use std::merkle::compute_merkle_root;
use dep::protocol_types::merkle_tree::root::root_from_sibling_path;
use dep::protocol_types::{constants::L1_TO_L2_MSG_TREE_HEIGHT, address::{AztecAddress, EthAddress}, utils::arr_copy_slice};

pub fn process_l1_to_l2_message(
Expand Down Expand Up @@ -31,7 +31,7 @@ pub fn process_l1_to_l2_message(

// Check that the message is in the tree
// This is implicitly checking that the values of the message are correct
let root = compute_merkle_root(message_hash, leaf_index, sibling_path);
let root = root_from_sibling_path(message_hash, leaf_index, sibling_path);
assert(root == l1_to_l2_root, "Message not in state");

compute_message_nullifier(message_hash, secret, leaf_index)
Expand Down
4 changes: 2 additions & 2 deletions noir-projects/aztec-nr/aztec/src/oracle/header.nr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use std::merkle::compute_merkle_root;
use dep::protocol_types::merkle_tree::root::root_from_sibling_path;
use dep::protocol_types::{constants::HEADER_LENGTH, header::Header};

use crate::{context::PrivateContext, oracle::get_membership_witness::get_archive_membership_witness};
Expand Down Expand Up @@ -42,7 +42,7 @@ pub fn get_header_at(block_number: u32, context: PrivateContext) -> Header {
// 6) Check that the block is in the archive (i.e. the witness is valid)
assert(
context.historical_header.last_archive.root
== compute_merkle_root(block_hash, witness.index, witness.path), "Proving membership of a block in archive failed"
== root_from_sibling_path(block_hash, witness.index, witness.path), "Proving membership of a block in archive failed"
);

// 7) Return the block header
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ struct BaseParityInputs {
impl BaseParityInputs {
pub fn base_parity_circuit(self) -> ParityPublicInputs {
let sha_tree = Sha256MerkleTree::new(self.msgs);
let pedersen_tree = MerkleTree::new(self.msgs);
let poseidon_tree = MerkleTree::new(self.msgs);

ParityPublicInputs {
sha_root: sha_tree.get_root(),
converted_root: pedersen_tree.get_root(),
converted_root: poseidon_tree.get_root(),
vk_tree_root: self.vk_tree_root
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ impl RootParityInputs {
}

let sha_tree = Sha256MerkleTree::new(sha_roots);
let pedersen_tree = MerkleTree::new(converted_roots);
let poseidon_tree = MerkleTree::new(converted_roots);

ParityPublicInputs { sha_root: sha_tree.get_root(), converted_root: pedersen_tree.get_root(), vk_tree_root }
ParityPublicInputs { sha_root: sha_tree.get_root(), converted_root: poseidon_tree.get_root(), vk_tree_root }
}

fn verify_child_proofs(self) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ impl Hash for NullifierLeafPreimage {
if self.is_empty() {
0
} else {
std::hash::pedersen_hash(self.serialize())
crate::hash::poseidon2_hash(self.serialize())
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -175,11 +175,11 @@ global L2_GAS_PER_NOTE_HASH: u32 = 32;
global L2_GAS_PER_NULLIFIER: u32 = 64;

// CANONICAL CONTRACT ADDRESSES
global CANONICAL_KEY_REGISTRY_ADDRESS = 0x0414f08a3241bff274504c14522869898d5ed3aa6c3d6e20f216953ec98641b7;
global CANONICAL_AUTH_REGISTRY_ADDRESS = 0x00a52eacfd4eb01f233f5f01fce672d8f91295fded9d62ad9f708519df4529a6;
global DEPLOYER_CONTRACT_ADDRESS = 0x14773f1105c64880735d3971d29ae33fda04f8969500501d6eacecad7abc080e;
global REGISTERER_CONTRACT_ADDRESS = 0x01eaefbfac0fa59ec9f018f85809e0bfb0cd391122788c12fb31aab0bf0a8eda;
global GAS_TOKEN_ADDRESS = 0x1367c66d6702663df6aa283bbd675463593376cd09eb310a1a8fe6086dba0073;
global CANONICAL_KEY_REGISTRY_ADDRESS = 0x1dc0848be99ba522c157b46ab5ed64d86703a74e7df8fe1b3a82f45e2dbdefae;
global CANONICAL_AUTH_REGISTRY_ADDRESS = 0x24877c50868f86712240eb535d90d1c97403d074805dd3758c3aecb02958f8d4;
global DEPLOYER_CONTRACT_ADDRESS = 0x2ab1a2bd6d07d8d61ea56d85861446349e52c6b7c0612b702cb1e6db6ad0b089;
global REGISTERER_CONTRACT_ADDRESS = 0x05d15342d76e46e5be07d3cda0d753158431cdc5e39d29ce4e8fe1f5c070564a;
global GAS_TOKEN_ADDRESS = 0x0b9185bb21ae5ec07011d459dca15a226712e49d9f6238ba0799bd6c2768a169;

// LENGTH OF STRUCTS SERIALIZED TO FIELDS
global AZTEC_ADDRESS_LENGTH = 1;
Expand Down
7 changes: 5 additions & 2 deletions noir-projects/noir-protocol-circuits/crates/types/src/hash.nr
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ pub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {
}

pub fn merkle_hash(left: Field, right: Field) -> Field {
pedersen_hash([left, right], 0)
poseidon2_hash([left, right])
}

pub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {
Expand Down Expand Up @@ -256,7 +256,10 @@ pub fn poseidon2_hash<let N: u32>(inputs: [Field; N]) -> Field {
}

#[no_predicates]
pub fn poseidon2_hash_with_separator<N, T>(inputs: [Field; N], separator: T) -> Field where T: ToField {
pub fn poseidon2_hash_with_separator<let N: u32, T>(
inputs: [Field; N],
separator: T
) -> Field where T: ToField {
// We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of N + 1
let in_len = N + 1;
let two_pow_64 = 18446744073709551616;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
use crate::traits::Empty;
use crate::merkle_tree::membership::assert_check_membership;
use crate::{traits::Empty, hash::merkle_hash};

struct MerkleTree<let N: u32> {
leaves: [Field; N],
Expand All @@ -25,12 +24,12 @@ impl<let N: u32> MerkleTree<N> {

// hash base layer
for i in 0..half_size {
nodes[i] = std::hash::pedersen_hash([leaves[2*i], leaves[2*i+1]]);
nodes[i] = merkle_hash(leaves[2*i], leaves[2*i+1]);
}

// hash the other layers
for i in 0..(total_nodes - half_size) {
nodes[half_size+i] = std::hash::pedersen_hash([nodes[2*i], nodes[2*i+1]]);
nodes[half_size+i] = merkle_hash(nodes[2*i], nodes[2*i+1]);
}

MerkleTree { leaves, nodes }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,25 +42,25 @@ pub fn calculate_empty_tree_root(depth: u32) -> Field {
if depth == 0 {
0
} else if depth == 1 {
0x27b1d0839a5b23baf12a8d195b18ac288fcf401afb2f70b8a4b529ede5fa9fed
0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1
} else if depth == 2 {
0x21dbfd1d029bf447152fcf89e355c334610d1632436ba170f738107266a71550
0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290
} else if depth == 3 {
0x0bcd1f91cf7bdd471d0a30c58c4706f3fdab3807a954b8f5b5e3bfec87d001bb
0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20
} else if depth == 4 {
0x06e62084ee7b602fe9abc15632dda3269f56fb0c6e12519a2eb2ec897091919d
0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e
} else if depth == 5 {
0x03c9e2e67178ac638746f068907e6677b4cc7a9592ef234ab6ab518f17efffa0
0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf
} else if depth == 6 {
0x15d28cad4c0736decea8997cb324cf0a0e0602f4d74472cd977bce2c8dd9923f
0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76
} else if depth == 7 {
0x268ed1e1c94c3a45a14db4108bc306613a1c23fab68e0466a002dfb0a3f8d2ab
0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b
} else if depth == 8 {
0x0cd8d5695bc2dde99dd531671f76f1482f14ddba8eeca7cb9686d4a62359c257
0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1
} else if depth == 9 {
0x047fbb7eb974155702149e58ea6ad91f4c6e953e693db35e953e250d8ceac9a9
0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972
} else if depth == 10 {
0x00c5ae2526e665e2c7c698c11a06098b7159f720606d50e7660deb55758b0b02
0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686
} else {
assert(false, "depth should be between 0 and 10");
0
Expand All @@ -73,10 +73,10 @@ fn test_merkle_root_interop_test() {
// You can grep for `TEST_F(root_rollup_tests, noir_interop_test)`
// to find the test that matches this.
let root = calculate_subtree_root([1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]);
assert(0x17e8bb70a11d0c946345950879484d2f4f9fef397ff6adbfdec3baab2d41faab == root);
assert(0x1a09d935ae110b4c861fcec8f9099ec30b4485022aeb3d3cf9d7168e38fdc231 == root);

let empty_root = calculate_subtree_root([0; 16]);
assert(0x06e62084ee7b602fe9abc15632dda3269f56fb0c6e12519a2eb2ec897091919d == empty_root);
assert(0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e == empty_root);
}

#[test]
Expand All @@ -103,4 +103,13 @@ fn test_empty_subroot() {

let expected_empty_root_128 = calculate_subtree_root([0; 128]);
assert(calculate_empty_tree_root(7) == expected_empty_root_128);

let expected_empty_root_256 = calculate_subtree_root([0; 256]);
assert(calculate_empty_tree_root(8) == expected_empty_root_256);

let expected_empty_root_512 = calculate_subtree_root([0; 512]);
assert(calculate_empty_tree_root(9) == expected_empty_root_512);

let expected_empty_root_1024 = calculate_subtree_root([0; 1024]);
assert(calculate_empty_tree_root(10) == expected_empty_root_1024);
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ impl Hash for PublicDataTreeLeafPreimage {
if self.is_empty() {
0
} else {
std::hash::pedersen_hash([self.slot, self.value, (self.next_index as Field), self.next_slot])
crate::hash::poseidon2_hash([self.slot, self.value, (self.next_index as Field), self.next_slot])
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ global default_private_function = ContractFunction {
leaf_index: 0,
sibling_path: [
0x1eca11cd2abe68905eab86bc4f207cde29eb7c2b4c2c9b27e3d8c2f8b8234c87,
0x21dbfd1d029bf447152fcf89e355c334610d1632436ba170f738107266a71550,
0x0bcd1f91cf7bdd471d0a30c58c4706f3fdab3807a954b8f5b5e3bfec87d001bb,
0x06e62084ee7b602fe9abc15632dda3269f56fb0c6e12519a2eb2ec897091919d,
0x03c9e2e67178ac638746f068907e6677b4cc7a9592ef234ab6ab518f17efffa0,
0x233d10e0c959338e062b1c76fb81e17fcf61643da568eac372bb7feac8bfa357,
0x0e1ce4f11f4d51a7d3136abbd625315fff3876d322e46ad8401da96f8e43a614,
0x1a0ca5eecb1430479902264f04e557160a4666fb42bb8b283c6397e3d17ac937,
0x2a6595890719fef7967c209488728aa5342438ba52058a3c770202f55acf6854,
],
},
};
Expand All @@ -39,11 +39,11 @@ global default_public_function = ContractFunction {
membership_witness: MembershipWitness {
leaf_index: 2,
sibling_path: [
0x2d72ef5ebb7c974e1f5a8bed092f1cf1bf0a0cb1eda28516221ca7e5811ecf15,
0x0d18bf69ba03cceb5b3ad320c0439559ae10eabd18dea07ea239c8eb2a96c3f8,
0x0837a67313f4dbbd8d6971c0672f961f0a3b9e218c1395d327915209292acbbf,
0x2e0ef36ddc5db29acb6ef904999046f835ce7c78a40c3f7a0edb03b2f917a765,
0x1a9fdb505152f9c2baaffe4a30ee80775b58ebf8c2dde76435835b085c6f70ca,
0x27b1d0839a5b23baf12a8d195b18ac288fcf401afb2f70b8a4b529ede5fa9fed,
0x1204fec45a58f11be9981f153319860aea2ece9152efab01885006e53dd70a79,
0x0e1ce4f11f4d51a7d3136abbd625315fff3876d322e46ad8401da96f8e43a614,
0x1a0ca5eecb1430479902264f04e557160a4666fb42bb8b283c6397e3d17ac937,
0x2a6595890719fef7967c209488728aa5342438ba52058a3c770202f55acf6854,
],
},
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ global default_contract = ContractData {
contract_address_salt: 0x000000000000000000000000000000000000000000000000000000000000ddd5,
artifact_hash: 0x0000000000000000000000000000000000000000000000000000000000003039,
public_bytecode_commitment: 0x0000000000000000000000000000000000000000000000000000000000000005,
private_functions_root: 0x04c207a8a83f20ee6c6dbeb40636e8132bc18e971927f7d81f18cb92705ee817,
address: AztecAddress { inner: 0x10f0c308adf33bceef3ed638bf8a5b403691eefc4ee7a0c20f0438c8a7096226 },
partial_address: PartialAddress { inner: 0x08e858be915646809621b06c4fcea0bfcf2817b07c1885e9a0497554638be93f },
contract_class_id: ContractClassId { inner: 0x227e7a3a22b2a95ce3b91fbb47a80669d7d68ee34db7bf998cb9457ee59f3179 },
private_functions_root: 0x25d76df45434ec75a83321daf941cfc667ff3a9027942e17105da4f50d1d13f9,
address: AztecAddress { inner: 0x0e66d7cd9692428c550b93c9ef5f49ca9f02c03e98cb3c922d8c773f78f79fed },
partial_address: PartialAddress { inner: 0x0cf203c94c91bed28440b00ecd888d88cce1f86ddf2aa8d33acbb9b6fc06d382 },
contract_class_id: ContractClassId { inner: 0x28e91aaf764bc6083e2796ff884079ad895d4b948d6ce8f37f01b29d0bc95a21 },
public_keys_hash: PublicKeysHash { inner: 0x000000000000000000000000000000000000000000000000000000000000b26e },
salted_initialization_hash: SaltedInitializationHash { inner: 0x13a939daa511233e5446905ed2cadbee14948fa75df183b53b5c14b612bffe88 },
deployer: AztecAddress { inner: 0x0000000000000000000000000000000000000000000000000000000000000000 }
Expand All @@ -34,10 +34,10 @@ global parent_contract = ContractData {
contract_address_salt: 0x0000000000000000000000000000000000000000000000000000000000001618,
artifact_hash: 0x00000000000000000000000000000000000000000000000000000000000004bc,
public_bytecode_commitment: 0x0000000000000000000000000000000000000000000000000000000000000005,
private_functions_root: 0x13911dea3b1d55fe459c95739f42df2cd7c2c610ab16a5632ab649760f3d0522,
address: AztecAddress { inner: 0x0df89b4b442718bc22a06f5ac353e83562adb5c48465dd2663e90648067ab87b },
partial_address: PartialAddress { inner: 0x2e150667b5cd21814d880d7c853a637d3818fc545209a8a90521079351e836c7 },
contract_class_id: ContractClassId { inner: 0x198333ba87796984608fe55a13c975fd3fa8ce721ee4d4b97b6886818a1d8fdb },
private_functions_root: 0x1228b39ba6702af03e595300e8484c6373f00790d0148cc3d4ff0fd1c778a83a,
address: AztecAddress { inner: 0x24415b2e716d6c7099580ab8e383fd5b16dc9fb441aa308571d8e24a2257da24 },
partial_address: PartialAddress { inner: 0x245df9f519d616473880260dd64b19a838081bb44dc17cd6ea5d870a63d2bf57 },
contract_class_id: ContractClassId { inner: 0x00236b0dc6c537d5106543053c5b85c4cbe95b0474f8238b094bae63f1cbcfee },
public_keys_hash: PublicKeysHash { inner: 0x00000000000000000000000000000000000000000000000000000000000011c1 },
salted_initialization_hash: SaltedInitializationHash { inner: 0x24bd6ac7a182e2cf25e437c72f53544ef81dfd97d9afee23abb07a638e7be749 },
deployer: AztecAddress { inner: 0x0000000000000000000000000000000000000000000000000000000000000000 }
Expand Down
Loading
Loading