diff --git a/noir-projects/aztec-nr/aztec/src/oracle/capsules.nr b/noir-projects/aztec-nr/aztec/src/oracle/capsules.nr index 26c3b82b629e..1e439af23023 100644 --- a/noir-projects/aztec-nr/aztec/src/oracle/capsules.nr +++ b/noir-projects/aztec-nr/aztec/src/oracle/capsules.nr @@ -1,4 +1,4 @@ -use protocol_types::{address::AztecAddress, traits::{Deserialize, Serialize}}; +use protocol_types::{address::AztecAddress, traits::{Deserialize, Serialize, ToField}}; /// Stores arbitrary information in a per-contract non-volatile database, which can later be retrieved with `load`. If /// data was already stored at this slot, it is overwritten. diff --git a/noir-projects/aztec-nr/aztec/src/utils/with_hash.nr b/noir-projects/aztec-nr/aztec/src/utils/with_hash.nr index 28d03af2938f..04a9d077f575 100644 --- a/noir-projects/aztec-nr/aztec/src/utils/with_hash.nr +++ b/noir-projects/aztec-nr/aztec/src/utils/with_hash.nr @@ -4,7 +4,10 @@ use crate::{ oracle, }; use dep::protocol_types::{ - address::AztecAddress, block_header::BlockHeader, hash::poseidon2_hash, traits::Packable, + address::AztecAddress, + block_header::BlockHeader, + hash::poseidon2_hash, + traits::{Packable, ToField}, }; /// A struct that allows for efficient reading of value `T` from public storage in private. diff --git a/noir-projects/noir-contracts/contracts/avm_test_contract/src/main.nr b/noir-projects/noir-contracts/contracts/avm_test_contract/src/main.nr index bac8c853324c..5768b056fb54 100644 --- a/noir-projects/noir-contracts/contracts/avm_test_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/avm_test_contract/src/main.nr @@ -33,6 +33,7 @@ pub contract AvmTest { }; use dep::aztec::state_vars::PublicMutable; use dep::compressed_string::CompressedString; + use aztec::protocol_types::traits::Serialize; use std::embedded_curve_ops::{EmbeddedCurvePoint, multi_scalar_mul}; use std::ops::Add; diff --git a/noir-projects/noir-contracts/contracts/nft_contract/src/main.nr b/noir-projects/noir-contracts/contracts/nft_contract/src/main.nr index 15cdb727687e..d0b22557f762 100644 --- a/noir-projects/noir-contracts/contracts/nft_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/nft_contract/src/main.nr @@ -20,7 +20,7 @@ pub contract NFT { functions::{initializer, internal, private, public, view}, storage::storage, }, - note::constants::MAX_NOTES_PER_PAGE, + note::{constants::MAX_NOTES_PER_PAGE, note_interface::{NoteProperties, PartialNote}}, oracle::random::random, prelude::{ AztecAddress, Map, NoteGetterOptions, NoteViewerOptions, PrivateContext, PrivateSet, @@ -30,6 +30,7 @@ pub contract NFT { utils::comparison::Comparator, }; use dep::compressed_string::FieldCompressedString; + use aztec::protocol_types::traits::ToField; use std::meta::derive; // docs:end:imports diff --git a/noir-projects/noir-contracts/contracts/nft_contract/src/test/access_control.nr b/noir-projects/noir-contracts/contracts/nft_contract/src/test/access_control.nr index e5f6a8e6dcf5..f3a5e14adc4b 100644 --- a/noir-projects/noir-contracts/contracts/nft_contract/src/test/access_control.nr +++ b/noir-projects/noir-contracts/contracts/nft_contract/src/test/access_control.nr @@ -1,5 +1,6 @@ use crate::NFT; use crate::test::utils; +use aztec::protocol_types::traits::ToField; #[test] unconstrained fn access_control() { diff --git a/noir-projects/noir-contracts/contracts/parent_contract/src/main.nr b/noir-projects/noir-contracts/contracts/parent_contract/src/main.nr index c3deef4b3321..155df0ebcf57 100644 --- a/noir-projects/noir-contracts/contracts/parent_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/parent_contract/src/main.nr @@ -6,6 +6,7 @@ pub contract Parent { use dep::aztec::{context::gas::GasOpts, macros::functions::{private, public}}; use dep::aztec::prelude::{AztecAddress, FunctionSelector}; use dep::aztec::protocol_types::constants::MAX_FR_ARGS_TO_ALL_ENQUEUED_CALLS; + use aztec::protocol_types::traits::ToField; // Private function to call another private function in the target_contract using the provided selector #[private] fn entry_point(target_contract: AztecAddress, target_selector: FunctionSelector) -> Field { diff --git a/noir-projects/noir-contracts/contracts/pending_note_hashes_contract/src/main.nr b/noir-projects/noir-contracts/contracts/pending_note_hashes_contract/src/main.nr index 712e467e784b..e5d64608f149 100644 --- a/noir-projects/noir-contracts/contracts/pending_note_hashes_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/pending_note_hashes_contract/src/main.nr @@ -17,6 +17,7 @@ pub contract PendingNoteHashes { MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NOTE_HASHES_PER_CALL, }; use dep::value_note::{filter::filter_notes_min_sum, value_note::ValueNote}; + use aztec::protocol_types::traits::ToField; #[storage] struct Storage { diff --git a/noir-projects/noir-contracts/contracts/schnorr_single_key_account_contract/src/auth_oracle.nr b/noir-projects/noir-contracts/contracts/schnorr_single_key_account_contract/src/auth_oracle.nr index 53e883aca577..8779b5c5776c 100644 --- a/noir-projects/noir-contracts/contracts/schnorr_single_key_account_contract/src/auth_oracle.nr +++ b/noir-projects/noir-contracts/contracts/schnorr_single_key_account_contract/src/auth_oracle.nr @@ -3,6 +3,7 @@ use dep::aztec::{ protocol_types::{address::PartialAddress, public_keys::{PUBLIC_KEYS_LENGTH, PublicKeys}}, utils::array, }; +use aztec::protocol_types::traits::Deserialize; pub struct AuthWitness { keys: PublicKeys, diff --git a/noir-projects/noir-contracts/contracts/spam_contract/src/types/balance_set.nr b/noir-projects/noir-contracts/contracts/spam_contract/src/types/balance_set.nr index a83c92df7d3c..b21d48459c90 100644 --- a/noir-projects/noir-contracts/contracts/spam_contract/src/types/balance_set.nr +++ b/noir-projects/noir-contracts/contracts/spam_contract/src/types/balance_set.nr @@ -10,6 +10,7 @@ use dep::aztec::{ use dep::aztec::prelude::{ NoteGetterOptions, NoteHash, NoteType, NoteViewerOptions, PrivateSet, RetrievedNote, }; +use std::ops::Add; pub struct BalanceSet { set: PrivateSet, diff --git a/noir-projects/noir-contracts/contracts/static_child_contract/src/main.nr b/noir-projects/noir-contracts/contracts/static_child_contract/src/main.nr index 2b718cf60070..fb1a55df22d7 100644 --- a/noir-projects/noir-contracts/contracts/static_child_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/static_child_contract/src/main.nr @@ -12,6 +12,7 @@ pub contract StaticChild { utils::comparison::Comparator, }; use dep::value_note::value_note::ValueNote; + use aztec::note::note_interface::NoteProperties; #[storage] struct Storage { diff --git a/noir-projects/noir-contracts/contracts/test_contract/src/main.nr b/noir-projects/noir-contracts/contracts/test_contract/src/main.nr index 515b93819464..2d108366d0ff 100644 --- a/noir-projects/noir-contracts/contracts/test_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/test_contract/src/main.nr @@ -34,7 +34,7 @@ pub contract Test { deploy::deploy_contract as aztec_deploy_contract, discovery::private_logs::do_process_log, event::event_interface::EventInterface, - hash::{ArgsHasher, compute_secret_hash, pedersen_hash}, + hash::{ArgsHasher, pedersen_hash}, history::note_inclusion::ProveNoteInclusion, macros::{ events::event, @@ -48,7 +48,6 @@ pub contract Test { note_interface::NoteType, retrieved_note::RetrievedNote, }, - state_vars::storage::Storage as _, test::mocks::mock_struct::MockStruct, }; use dep::token_portal_content_hash_lib::{ @@ -140,7 +139,8 @@ pub contract Test { storage_slot: Field, ) { assert( - storage_slot != storage.example_constant.get_storage_slot(), + storage_slot + != aztec::state_vars::storage::Storage::get_storage_slot(storage.example_constant), "this storage slot is reserved for example_constant", ); @@ -156,7 +156,8 @@ pub contract Test { #[private] fn call_get_notes(storage_slot: Field, active_or_nullified: bool) -> Field { assert( - storage_slot != storage.example_constant.get_storage_slot(), + storage_slot + != aztec::state_vars::storage::Storage::get_storage_slot(storage.example_constant), "this storage slot is reserved for example_constant", ); @@ -176,7 +177,8 @@ pub contract Test { #[private] fn call_get_notes_many(storage_slot: Field, active_or_nullified: bool) -> [Field; 2] { assert( - storage_slot != storage.example_constant.get_storage_slot(), + storage_slot + != aztec::state_vars::storage::Storage::get_storage_slot(storage.example_constant), "this storage slot is reserved for example_constant", ); @@ -193,7 +195,8 @@ pub contract Test { unconstrained fn call_view_notes(storage_slot: Field, active_or_nullified: bool) -> pub Field { assert( - storage_slot != storage.example_constant.get_storage_slot(), + storage_slot + != aztec::state_vars::storage::Storage::get_storage_slot(storage.example_constant), "this storage slot is reserved for example_constant", ); @@ -212,7 +215,8 @@ pub contract Test { active_or_nullified: bool, ) -> pub [Field; 2] { assert( - storage_slot != storage.example_constant.get_storage_slot(), + storage_slot + != aztec::state_vars::storage::Storage::get_storage_slot(storage.example_constant), "this storage slot is reserved for example_constant", ); @@ -229,7 +233,8 @@ pub contract Test { #[private] fn call_destroy_note(storage_slot: Field) { assert( - storage_slot != storage.example_constant.get_storage_slot(), + storage_slot + != aztec::state_vars::storage::Storage::get_storage_slot(storage.example_constant), "this storage slot is reserved for example_constant", ); @@ -371,7 +376,8 @@ pub contract Test { #[private] fn emit_encrypted_logs_nested(value: Field, owner: AztecAddress, sender: AztecAddress) { - let mut storage_slot = storage.example_constant.get_storage_slot() + 1; + let mut storage_slot = + aztec::state_vars::storage::Storage::get_storage_slot(storage.example_constant) + 1; Test::at(context.this_address()).call_create_note(value, owner, sender, storage_slot).call( &mut context, ); diff --git a/noir-projects/noir-contracts/contracts/test_log_contract/src/main.nr b/noir-projects/noir-contracts/contracts/test_log_contract/src/main.nr index 480227f57f98..91079f6f59a9 100644 --- a/noir-projects/noir-contracts/contracts/test_log_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/test_log_contract/src/main.nr @@ -8,6 +8,8 @@ pub contract TestLog { use dep::aztec::protocol_types::{address::AztecAddress, traits::Serialize}; use dep::aztec::unencrypted_logs::unencrypted_event_emission::encode_event; use dep::value_note::value_note::ValueNote; + use aztec::event::event_interface::EventInterface; + use aztec::protocol_types::traits::FromField; use std::meta::derive; #[derive(Serialize)] diff --git a/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/main.nr b/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/main.nr index df6c4e714fac..b2ee256a44cf 100644 --- a/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/main.nr @@ -28,6 +28,12 @@ pub contract TokenBlacklist { utils::comparison::Comparator, }; + use aztec::note::note_interface::NoteHash; + use aztec::note::note_interface::NoteProperties; + use aztec::note::note_interface::NoteType; + use aztec::protocol_types::traits::ToField; + use std::ops::{Add, Sub}; + use dep::authwit::auth::{ assert_current_call_valid_authwit, assert_current_call_valid_authwit_public, }; diff --git a/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/types/balances_map.nr b/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/types/balances_map.nr index c9e43a93a28e..0f3dd13738da 100644 --- a/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/types/balances_map.nr +++ b/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/types/balances_map.nr @@ -9,6 +9,8 @@ use dep::aztec::prelude::{ RetrievedNote, }; +use std::ops::Add; + pub struct BalancesMap { map: Map, Context>, } diff --git a/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/types/roles.nr b/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/types/roles.nr index 0a075b07292a..170dfaadff44 100644 --- a/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/types/roles.nr +++ b/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/types/roles.nr @@ -1,4 +1,5 @@ use dep::aztec::protocol_types::traits::{Deserialize, Packable, Serialize}; +use aztec::protocol_types::traits::ToField; global ADMIN_FLAG: u64 = 1; global MINTER_FLAG: u64 = 2; @@ -72,6 +73,7 @@ impl Deserialize<3> for UserFlags { mod test { use crate::types::roles::UserFlags; + use aztec::protocol_types::traits::Packable; fn assert_packable(is_minter: bool, is_admin: bool, is_blacklisted: bool) { let flags = UserFlags { is_minter, is_admin, is_blacklisted }; diff --git a/noir-projects/noir-contracts/contracts/token_contract/src/main.nr b/noir-projects/noir-contracts/contracts/token_contract/src/main.nr index 15bac208b354..180f6e960053 100644 --- a/noir-projects/noir-contracts/contracts/token_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/token_contract/src/main.nr @@ -36,6 +36,8 @@ pub contract Token { protocol_types::{point::Point, traits::Serialize}, }; + use aztec::protocol_types::traits::ToField; + use dep::uint_note::uint_note::UintNote; // docs:start:import_authwit diff --git a/noir-projects/noir-contracts/contracts/token_portal_content_hash_lib/src/lib.nr b/noir-projects/noir-contracts/contracts/token_portal_content_hash_lib/src/lib.nr index cc2b8e9b0821..0ce55d887054 100644 --- a/noir-projects/noir-contracts/contracts/token_portal_content_hash_lib/src/lib.nr +++ b/noir-projects/noir-contracts/contracts/token_portal_content_hash_lib/src/lib.nr @@ -6,12 +6,13 @@ use dep::aztec::protocol_types::{hash::sha256_to_field, traits::ToField}; // Refer TokenPortal.sol for reference on L1. pub fn get_mint_to_public_content_hash(owner: AztecAddress, amount: u128) -> Field { let mut hash_bytes = [0; 68]; - let recipient_bytes:[u8; 32] = owner.to_field().to_be_bytes(); - let amount_bytes:[u8; 32] = (amount as Field).to_be_bytes(); + let recipient_bytes: [u8; 32] = owner.to_field().to_be_bytes(); + let amount_bytes: [u8; 32] = (amount as Field).to_be_bytes(); // The purpose of including the following selector is to make the message unique to that specific call. Note that // it has nothing to do with calling the function. - let selector = comptime { keccak256::keccak256("mint_to_public(bytes32,uint256)".as_bytes(), 31) }; + let selector = + comptime { keccak256::keccak256("mint_to_public(bytes32,uint256)".as_bytes(), 31) }; for i in 0..4 { hash_bytes[i] = selector[i]; @@ -32,7 +33,7 @@ pub fn get_mint_to_public_content_hash(owner: AztecAddress, amount: u128) -> Fie // Refer TokenPortal.sol for reference on L1. pub fn get_mint_to_private_content_hash(amount: u128) -> Field { let mut hash_bytes = [0; 36]; - let amount_bytes:[u8; 32] = (amount as Field).to_be_bytes(); + let amount_bytes: [u8; 32] = (amount as Field).to_be_bytes(); // The purpose of including the following selector is to make the message unique to that specific call. Note that // it has nothing to do with calling the function. @@ -53,7 +54,11 @@ pub fn get_mint_to_private_content_hash(amount: u128) -> Field { // docs:start:get_withdraw_content_hash // Computes a content hash of a withdraw message. -pub fn get_withdraw_content_hash(recipient: EthAddress, amount: u128, caller_on_l1: EthAddress) -> Field { +pub fn get_withdraw_content_hash( + recipient: EthAddress, + amount: u128, + caller_on_l1: EthAddress, +) -> Field { // Compute the content hash // Compute sha256(selector || amount || recipient) // then convert to a single field element @@ -65,7 +70,8 @@ pub fn get_withdraw_content_hash(recipient: EthAddress, amount: u128, caller_on_ // The purpose of including the following selector is to make the message unique to that specific call. Note that // it has nothing to do with calling the function. - let selector = comptime { keccak256::keccak256("withdraw(address,uint256,address)".as_bytes(), 33) }; + let selector = + comptime { keccak256::keccak256("withdraw(address,uint256,address)".as_bytes(), 33) }; for i in 0..4 { hash_bytes[i] = selector[i]; diff --git a/noir-projects/noir-contracts/contracts/uniswap_contract/src/main.nr b/noir-projects/noir-contracts/contracts/uniswap_contract/src/main.nr index 83129a6ac48c..0a60d341c821 100644 --- a/noir-projects/noir-contracts/contracts/uniswap_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/uniswap_contract/src/main.nr @@ -20,6 +20,8 @@ pub contract Uniswap { use dep::token::Token; use dep::token_bridge::TokenBridge; + use dep::aztec::protocol_types::traits::ToField; + #[storage] struct Storage { portal_address: PublicImmutable, diff --git a/noir-projects/noir-contracts/contracts/uniswap_contract/src/util.nr b/noir-projects/noir-contracts/contracts/uniswap_contract/src/util.nr index 85709b150652..2a924b2973a6 100644 --- a/noir-projects/noir-contracts/contracts/uniswap_contract/src/util.nr +++ b/noir-projects/noir-contracts/contracts/uniswap_contract/src/util.nr @@ -1,6 +1,6 @@ // docs:start:uniswap_public_content_hash use dep::aztec::prelude::{AztecAddress, EthAddress}; -use dep::aztec::protocol_types::hash::sha256_to_field; +use dep::aztec::protocol_types::{hash::sha256_to_field, traits::ToField}; // This method computes the L2 to L1 message content hash for the public // refer `l1-contracts/test/portals/UniswapPortal.sol` on how L2 to L1 message is expected diff --git a/noir-projects/noir-contracts/contracts/updatable_contract/src/main.nr b/noir-projects/noir-contracts/contracts/updatable_contract/src/main.nr index c6d47def9e80..6ce789211275 100644 --- a/noir-projects/noir-contracts/contracts/updatable_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/updatable_contract/src/main.nr @@ -7,9 +7,7 @@ contract Updatable { use aztec::prelude::{PrivateMutable, PublicMutable}; use aztec::protocol_types::{ - constants::DEPLOYER_CONTRACT_ADDRESS, - contract_class_id::ContractClassId, - traits::{Hash, Serialize}, + constants::DEPLOYER_CONTRACT_ADDRESS, contract_class_id::ContractClassId, }; use contract_instance_deployer::ContractInstanceDeployer; use value_note::value_note::ValueNote; diff --git a/noir-projects/noir-contracts/contracts/updated_contract/src/main.nr b/noir-projects/noir-contracts/contracts/updated_contract/src/main.nr index e676a53c040a..f765b0c1d4bf 100644 --- a/noir-projects/noir-contracts/contracts/updated_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/updated_contract/src/main.nr @@ -6,7 +6,7 @@ contract Updated { use aztec::macros::{functions::{private, public}, storage::storage}; use aztec::prelude::{PrivateMutable, PublicMutable}; - use aztec::protocol_types::{constants::DEPLOYER_CONTRACT_ADDRESS, traits::Hash}; + use aztec::protocol_types::constants::DEPLOYER_CONTRACT_ADDRESS; use contract_instance_deployer::ContractInstanceDeployer; use value_note::value_note::ValueNote; diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/meta/mod.nr b/noir-projects/noir-protocol-circuits/crates/types/src/meta/mod.nr index 84e2018101b7..368520da9a29 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/meta/mod.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/meta/mod.nr @@ -333,7 +333,12 @@ pub comptime fn generate_serialize_to_fields( let packed_struct_name = f"{name_at_one_token}_aux_var".quoted_contents(); // We add the individual fields to the fields array - let packed_struct = quote { let $packed_struct_name = $name.pack() }; + let pack_method = get_trait_impl_method( + typ, + quote { crate::traits::Packable<$packed_len> }, + quote { pack }, + ); + let packed_struct = quote { let $packed_struct_name = $pack_method($name) }; for i in 0..packed_len { fields = fields.push_back(quote { $packed_struct_name[$i] }); } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr b/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr index ef369eaf2b5f..b62fba8356b0 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr @@ -6,7 +6,7 @@ use crate::{ }, hash::poseidon2_hash_with_separator, point::POINT_LENGTH, - traits::{Deserialize, Hash, Serialize}, + traits::{Deserialize, Hash, Serialize, ToField}, }; use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;