diff --git a/docs/docs/migration_notes.md b/docs/docs/migration_notes.md index e3b5827a73ab..a67588cb635c 100644 --- a/docs/docs/migration_notes.md +++ b/docs/docs/migration_notes.md @@ -33,6 +33,10 @@ This led us to rename the `unkonstrained` method on `TestEnvironment` as `utilit + SharedMutable::new(env.utility(), storage_slot) ``` +### [AuthRegistry] function name change + +As part of the broader transition from "top-level unconstrained" to "utility" name (detailed in the note above), the `unconstrained_is_consumable` function in AuthRegistry has been renamed to `utility_is_consumable`. The function's signature and behavior remain unchanged - only the name has been updated to align with the new convention. If you're currently using this function, a simple rename in your code will suffice. + ## 0.83.0 ### [aztec.js] AztecNode.getPrivateEvents API change diff --git a/docs/docs/protocol-specs/contract-deployment/classes.md b/docs/docs/protocol-specs/contract-deployment/classes.md index cc15d73e44fc..55661e59f8e9 100644 --- a/docs/docs/protocol-specs/contract-deployment/classes.md +++ b/docs/docs/protocol-specs/contract-deployment/classes.md @@ -137,12 +137,12 @@ artifact_crh( sha256(f.unconstrained_bytecode) ) ); - let unconstrained_functions_artifact_tree_root: Field = merkleize(unconstrained_functions_artifact_leaves); + let utility_functions_artifact_tree_root: Field = merkleize(unconstrained_functions_artifact_leaves); let artifact_hash: Field = sha256_modulo( VERSION, // 8-bits private_functions_artifact_tree_root, // 256-bits - unconstrained_functions_artifact_tree_root, // 256-bits + utility_functions_artifact_tree_root, // 256-bits artifact_metadata_hash ); @@ -265,7 +265,7 @@ Broadcasted function artifacts that do not match with their corresponding `artif fn broadcast_private_function( contract_class_id: Field, artifact_metadata_hash: Field, - unconstrained_functions_artifact_tree_root: Field, + utility_functions_artifact_tree_root: Field, private_function_tree_sibling_path: Field[], private_function_tree_leaf_index: Field, artifact_function_tree_sibling_path: Field[], @@ -275,7 +275,7 @@ fn broadcast_private_function( emit_public_log ClassPrivateFunctionBroadcasted( contract_class_id, artifact_metadata_hash, - unconstrained_functions_artifact_tree_root, + utility_functions_artifact_tree_root, private_function_tree_sibling_path, private_function_tree_leaf_index, artifact_function_tree_sibling_path, @@ -285,7 +285,7 @@ fn broadcast_private_function( ``` ```rust -fn broadcast_unconstrained_function( +fn broadcast_utility_function( contract_class_id: Field, artifact_metadata_hash: Field, private_functions_artifact_tree_root: Field, @@ -293,7 +293,7 @@ fn broadcast_unconstrained_function( artifact_function_tree_leaf_index: Field function: { selector: Field, metadata_hash: Field, bytecode: Field[] }[], ) - emit_public_log ClassUnconstrainedFunctionBroadcasted( + emit_public_log ClassUtilityFunctionBroadcasted( contract_class_id, artifact_metadata_hash, private_functions_artifact_tree_root, @@ -321,7 +321,7 @@ assert computed_private_function_tree_root == contract_class.private_function_ro // Compute artifact leaf and assert it belongs to the artifact artifact_function_leaf = sha256(selector, metadata_hash, sha256(bytecode)) computed_artifact_private_function_tree_root = compute_root(artifact_function_leaf, artifact_function_tree_sibling_path, artifact_function_tree_leaf_index) -computed_artifact_hash = sha256(computed_artifact_private_function_tree_root, unconstrained_functions_artifact_tree_root, artifact_metadata_hash) +computed_artifact_hash = sha256(computed_artifact_private_function_tree_root, utility_functions_artifact_tree_root, artifact_metadata_hash) assert computed_artifact_hash == contract_class.artifact_hash ``` @@ -344,11 +344,11 @@ It is strongly recommended for developers registering new classes to broadcast t ### Encoding Bytecode -The `register`, `broadcast_unconstrained_function`, and `broadcast_private_function` functions all receive and emit variable-length bytecode in contract class logs. In every function, bytecode is encoded in a fixed-length array of field elements, which sets a maximum length for each: +The `register`, `broadcast_utility_function`, and `broadcast_private_function` functions all receive and emit variable-length bytecode in contract class logs. In every function, bytecode is encoded in a fixed-length array of field elements, which sets a maximum length for each: - `MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS`: 3000 field elements, used for a contract's public bytecode in the `register` function. - `MAX_PACKED_BYTECODE_SIZE_PER_PRIVATE_FUNCTION_IN_FIELDS`: 3000 field elements, used for the ACIR and Brillig bytecode of a broadcasted private function in `broadcast_private_function`. -- `MAX_PACKED_BYTECODE_SIZE_PER_UNCONSTRAINED_FUNCTION_IN_FIELDS`: 3000 field elements, used for the Brillig bytecode of a broadcasted unconstrained function in `broadcast_unconstrained_function`. +- `MAX_PACKED_BYTECODE_SIZE_PER_UTILITY_FUNCTION_IN_FIELDS`: 3000 field elements, used for the Brillig bytecode of a broadcasted utility function in `broadcast_utility_function`. To encode the bytecode into a fixed-length array of Fields, the bytecode is first split into 31-byte chunks, and each chunk interpreted big-endian as a field element. The total length in bytes is then prepended as an initial element, and then right-padded with zeroes. diff --git a/l1-contracts/src/core/libraries/ConstantsGen.sol b/l1-contracts/src/core/libraries/ConstantsGen.sol index 585afa64225e..38daff730269 100644 --- a/l1-contracts/src/core/libraries/ConstantsGen.sol +++ b/l1-contracts/src/core/libraries/ConstantsGen.sol @@ -103,14 +103,14 @@ library Constants { uint256 internal constant PUBLIC_DISPATCH_SELECTOR = 3578010381; uint256 internal constant MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS = 3000; uint256 internal constant MAX_PACKED_BYTECODE_SIZE_PER_PRIVATE_FUNCTION_IN_FIELDS = 3000; - uint256 internal constant MAX_PACKED_BYTECODE_SIZE_PER_UNCONSTRAINED_FUNCTION_IN_FIELDS = 3000; + uint256 internal constant MAX_PACKED_BYTECODE_SIZE_PER_UTILITY_FUNCTION_IN_FIELDS = 3000; uint256 internal constant REGISTERER_PRIVATE_FUNCTION_BROADCASTED_ADDITIONAL_FIELDS = 19; - uint256 internal constant REGISTERER_UNCONSTRAINED_FUNCTION_BROADCASTED_ADDITIONAL_FIELDS = 12; + uint256 internal constant REGISTERER_UTILITY_FUNCTION_BROADCASTED_ADDITIONAL_FIELDS = 12; uint256 internal constant REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE = 11121068431693264234253912047066709627593769337094408533543930778360; uint256 internal constant REGISTERER_PRIVATE_FUNCTION_BROADCASTED_MAGIC_VALUE = 2889881020989534926461066592611988634597302675057895885580456197069; - uint256 internal constant REGISTERER_UNCONSTRAINED_FUNCTION_BROADCASTED_MAGIC_VALUE = + uint256 internal constant REGISTERER_UTILITY_FUNCTION_BROADCASTED_MAGIC_VALUE = 24399338136397901754495080759185489776044879232766421623673792970137; uint256 internal constant DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE = 14061769416655647708490531650437236735160113654556896985372298487345; diff --git a/noir-projects/noir-contracts/contracts/auth_registry_contract/src/main.nr b/noir-projects/noir-contracts/contracts/auth_registry_contract/src/main.nr index e9a5f308edc5..38adff2fc3c2 100644 --- a/noir-projects/noir-contracts/contracts/auth_registry_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/auth_registry_contract/src/main.nr @@ -1,3 +1,9 @@ +/** + * @title AuthRegistry Contract + * @notice Manages authorization of public actions through authentication witnesses (authwits) + * @dev This contract allows users to approve/reject public actions that can be performed on their behalf by other + * addresses + */ use dep::aztec::macros::aztec; #[aztec] @@ -13,8 +19,10 @@ pub contract AuthRegistry { #[storage] struct Storage { + /// Map of addresses that have rejected all actions reject_all: Map, Context>, - // on_behalf_of => authwit hash => authorized + /// Nested map of approvers to their authorized message hashes + /// First key is the approver address, second key is the message hash, value is authorization status approved_actions: Map, Context>, Context>, } @@ -128,8 +136,11 @@ pub contract AuthRegistry { storage.approved_actions.at(on_behalf_of).at(message_hash).read() } + /** + * Just like `is_consumable`, but a utility function and not public. + */ #[utility] - unconstrained fn unconstrained_is_consumable( + unconstrained fn utility_is_consumable( on_behalf_of: AztecAddress, message_hash: Field, ) -> bool { diff --git a/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/events/mod.nr b/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/events/mod.nr index b453b9acda4e..7fe05b872a2b 100644 --- a/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/events/mod.nr +++ b/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/events/mod.nr @@ -1,3 +1,3 @@ mod class_registered; mod private_function_broadcasted; -mod unconstrained_function_broadcasted; +mod utility_function_broadcasted; diff --git a/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/events/private_function_broadcasted.nr b/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/events/private_function_broadcasted.nr index 2d700fefed06..b38e00a02b69 100644 --- a/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/events/private_function_broadcasted.nr +++ b/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/events/private_function_broadcasted.nr @@ -31,7 +31,7 @@ pub struct PrivateFunction { pub struct ClassPrivateFunctionBroadcasted { contract_class_id: ContractClassId, artifact_metadata_hash: Field, - unconstrained_functions_artifact_tree_root: Field, + utility_functions_artifact_tree_root: Field, private_function_tree_sibling_path: [Field; FUNCTION_TREE_HEIGHT], private_function_tree_leaf_index: Field, artifact_function_tree_sibling_path: [Field; ARTIFACT_FUNCTION_TREE_MAX_HEIGHT], @@ -51,7 +51,7 @@ impl ClassPrivateFunctionBroadcasted { packed[0] = REGISTERER_PRIVATE_FUNCTION_BROADCASTED_MAGIC_VALUE; packed[1] = self.contract_class_id.to_field(); packed[2] = self.artifact_metadata_hash; - packed[3] = self.unconstrained_functions_artifact_tree_root; + packed[3] = self.utility_functions_artifact_tree_root; for i in 0..FUNCTION_TREE_HEIGHT { packed[i + 4] = self.private_function_tree_sibling_path[i]; } diff --git a/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/events/unconstrained_function_broadcasted.nr b/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/events/utility_function_broadcasted.nr similarity index 58% rename from noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/events/unconstrained_function_broadcasted.nr rename to noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/events/utility_function_broadcasted.nr index 5079cb036b97..ac8c78c4eca7 100644 --- a/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/events/unconstrained_function_broadcasted.nr +++ b/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/events/utility_function_broadcasted.nr @@ -1,10 +1,9 @@ use dep::aztec::prelude::FunctionSelector; use dep::aztec::protocol_types::{ constants::{ - ARTIFACT_FUNCTION_TREE_MAX_HEIGHT, - MAX_PACKED_BYTECODE_SIZE_PER_UNCONSTRAINED_FUNCTION_IN_FIELDS, - REGISTERER_UNCONSTRAINED_FUNCTION_BROADCASTED_ADDITIONAL_FIELDS, - REGISTERER_UNCONSTRAINED_FUNCTION_BROADCASTED_MAGIC_VALUE, + ARTIFACT_FUNCTION_TREE_MAX_HEIGHT, MAX_PACKED_BYTECODE_SIZE_PER_UTILITY_FUNCTION_IN_FIELDS, + REGISTERER_UTILITY_FUNCTION_BROADCASTED_ADDITIONAL_FIELDS, + REGISTERER_UTILITY_FUNCTION_BROADCASTED_MAGIC_VALUE, }, contract_class_id::ContractClassId, traits::Serialize, @@ -13,38 +12,38 @@ use dep::aztec::protocol_types::traits::ToField; use std::meta::derive; #[derive(Serialize)] -pub struct InnerUnconstrainedFunction { +pub struct InnerUtilityFunction { selector: FunctionSelector, metadata_hash: Field, } #[derive(Serialize)] -pub struct UnconstrainedFunction { +pub struct UtilityFunction { selector: FunctionSelector, metadata_hash: Field, - bytecode: [Field; MAX_PACKED_BYTECODE_SIZE_PER_UNCONSTRAINED_FUNCTION_IN_FIELDS], + bytecode: [Field; MAX_PACKED_BYTECODE_SIZE_PER_UTILITY_FUNCTION_IN_FIELDS], } // #[event] -pub struct ClassUnconstrainedFunctionBroadcasted { +pub struct ClassUtilityFunctionBroadcasted { contract_class_id: ContractClassId, artifact_metadata_hash: Field, private_functions_artifact_tree_root: Field, artifact_function_tree_sibling_path: [Field; ARTIFACT_FUNCTION_TREE_MAX_HEIGHT], artifact_function_tree_leaf_index: Field, - function: UnconstrainedFunction, + function: UtilityFunction, } -impl ClassUnconstrainedFunctionBroadcasted { +impl ClassUtilityFunctionBroadcasted { fn serialize_non_standard( self: Self, - ) -> [Field; MAX_PACKED_BYTECODE_SIZE_PER_UNCONSTRAINED_FUNCTION_IN_FIELDS + REGISTERER_UNCONSTRAINED_FUNCTION_BROADCASTED_ADDITIONAL_FIELDS] { + ) -> [Field; MAX_PACKED_BYTECODE_SIZE_PER_UTILITY_FUNCTION_IN_FIELDS + REGISTERER_UTILITY_FUNCTION_BROADCASTED_ADDITIONAL_FIELDS] { let mut packed = [ - 0; MAX_PACKED_BYTECODE_SIZE_PER_UNCONSTRAINED_FUNCTION_IN_FIELDS - + REGISTERER_UNCONSTRAINED_FUNCTION_BROADCASTED_ADDITIONAL_FIELDS + 0; MAX_PACKED_BYTECODE_SIZE_PER_UTILITY_FUNCTION_IN_FIELDS + + REGISTERER_UTILITY_FUNCTION_BROADCASTED_ADDITIONAL_FIELDS ]; // Since we are not yet emitting selectors we'll use this magic value to identify events emitted by the ClassRegisterer. - packed[0] = REGISTERER_UNCONSTRAINED_FUNCTION_BROADCASTED_MAGIC_VALUE; + packed[0] = REGISTERER_UTILITY_FUNCTION_BROADCASTED_MAGIC_VALUE; packed[1] = self.contract_class_id.to_field(); packed[2] = self.artifact_metadata_hash; packed[3] = self.private_functions_artifact_tree_root; @@ -53,7 +52,7 @@ impl ClassUnconstrainedFunctionBroadcasted { } packed[4 + ARTIFACT_FUNCTION_TREE_MAX_HEIGHT] = self.artifact_function_tree_leaf_index; let packed_function = self.function.serialize(); - for i in 0..MAX_PACKED_BYTECODE_SIZE_PER_UNCONSTRAINED_FUNCTION_IN_FIELDS + 2 { + for i in 0..MAX_PACKED_BYTECODE_SIZE_PER_UTILITY_FUNCTION_IN_FIELDS + 2 { packed[i + 5 + ARTIFACT_FUNCTION_TREE_MAX_HEIGHT] = packed_function[i]; } packed diff --git a/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/main.nr b/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/main.nr index 4e93ec5a3b2b..a16fe9bd27f9 100644 --- a/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/main.nr @@ -9,7 +9,7 @@ pub contract ContractClassRegisterer { constants::{ ARTIFACT_FUNCTION_TREE_MAX_HEIGHT, CONTRACT_CLASS_LOG_DATA_SIZE_IN_FIELDS, FUNCTION_TREE_HEIGHT, MAX_PACKED_BYTECODE_SIZE_PER_PRIVATE_FUNCTION_IN_FIELDS, - MAX_PACKED_BYTECODE_SIZE_PER_UNCONSTRAINED_FUNCTION_IN_FIELDS, + MAX_PACKED_BYTECODE_SIZE_PER_UTILITY_FUNCTION_IN_FIELDS, MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS, REGISTERER_CONTRACT_BYTECODE_CAPSULE_SLOT, }, contract_class_id::ContractClassId, @@ -27,9 +27,8 @@ pub contract ContractClassRegisterer { private_function_broadcasted::{ ClassPrivateFunctionBroadcasted, InnerPrivateFunction, PrivateFunction, }, - unconstrained_function_broadcasted::{ - ClassUnconstrainedFunctionBroadcasted, InnerUnconstrainedFunction, - UnconstrainedFunction, + utility_function_broadcasted::{ + ClassUtilityFunctionBroadcasted, InnerUtilityFunction, UtilityFunction, }, }; @@ -119,7 +118,7 @@ pub contract ContractClassRegisterer { fn broadcast_private_function( contract_class_id: ContractClassId, artifact_metadata_hash: Field, - unconstrained_functions_artifact_tree_root: Field, + utility_functions_artifact_tree_root: Field, private_function_tree_sibling_path: [Field; FUNCTION_TREE_HEIGHT], private_function_tree_leaf_index: Field, artifact_function_tree_sibling_path: [Field; ARTIFACT_FUNCTION_TREE_MAX_HEIGHT], @@ -137,7 +136,7 @@ pub contract ContractClassRegisterer { let event = ClassPrivateFunctionBroadcasted { contract_class_id, artifact_metadata_hash, - unconstrained_functions_artifact_tree_root, + utility_functions_artifact_tree_root, private_function_tree_sibling_path, private_function_tree_leaf_index, artifact_function_tree_sibling_path, @@ -154,7 +153,7 @@ pub contract ContractClassRegisterer { [ contract_class_id.to_field(), artifact_metadata_hash, - unconstrained_functions_artifact_tree_root, + utility_functions_artifact_tree_root, function_data.selector.to_field(), function_data.vk_hash, function_data.metadata_hash, @@ -164,35 +163,35 @@ pub contract ContractClassRegisterer { } #[private] - fn broadcast_unconstrained_function( + fn broadcast_utility_function( contract_class_id: ContractClassId, artifact_metadata_hash: Field, private_functions_artifact_tree_root: Field, artifact_function_tree_sibling_path: [Field; ARTIFACT_FUNCTION_TREE_MAX_HEIGHT], artifact_function_tree_leaf_index: Field, - function_data: InnerUnconstrainedFunction, + function_data: InnerUtilityFunction, ) { - let unconstrained_bytecode: [Field; MAX_PACKED_BYTECODE_SIZE_PER_UNCONSTRAINED_FUNCTION_IN_FIELDS] = unsafe { + let utility_bytecode: [Field; MAX_PACKED_BYTECODE_SIZE_PER_UTILITY_FUNCTION_IN_FIELDS] = unsafe { capsules::load( context.this_address(), REGISTERER_CONTRACT_BYTECODE_CAPSULE_SLOT, ) .unwrap() }; - let event = ClassUnconstrainedFunctionBroadcasted { + let event = ClassUtilityFunctionBroadcasted { contract_class_id, artifact_metadata_hash, private_functions_artifact_tree_root, artifact_function_tree_sibling_path, artifact_function_tree_leaf_index, - function: UnconstrainedFunction { + function: UtilityFunction { selector: function_data.selector, metadata_hash: function_data.metadata_hash, - bytecode: unconstrained_bytecode, + bytecode: utility_bytecode, }, }; dep::aztec::oracle::debug_log::debug_log_format( - "ClassUnconstrainedFunctionBroadcasted: {}", + "ClassUtilityFunctionBroadcasted: {}", [ contract_class_id.to_field(), artifact_metadata_hash, diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr index 82af63f4f0be..d2411dfb61e6 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr @@ -146,12 +146,12 @@ pub global MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS: u32 = 3000; // Bytecode size for private functions is per function, not for the entire contract. // Note that private functions bytecode includes a mix of acir and brillig. pub global MAX_PACKED_BYTECODE_SIZE_PER_PRIVATE_FUNCTION_IN_FIELDS: u32 = 3000; -// Same for unconstrained functions: the size is per function. -pub global MAX_PACKED_BYTECODE_SIZE_PER_UNCONSTRAINED_FUNCTION_IN_FIELDS: u32 = 3000; +// Same for utility functions: the size is per function. +pub global MAX_PACKED_BYTECODE_SIZE_PER_UTILITY_FUNCTION_IN_FIELDS: u32 = 3000; // How many fields are on the serialized ClassPrivateFunctionBroadcasted event in addition to MAX_PACKED_BYTECODE_SIZE_PER_PRIVATE_FUNCTION_IN_FIELDS. pub global REGISTERER_PRIVATE_FUNCTION_BROADCASTED_ADDITIONAL_FIELDS: u32 = 19; -// How many fields are on the serialized ClassUnconstrainedFunctionBroadcasted event in addition to MAX_PACKED_BYTECODE_SIZE_PER_UNCONSTRAINED_FUNCTION_IN_FIELDS. -pub global REGISTERER_UNCONSTRAINED_FUNCTION_BROADCASTED_ADDITIONAL_FIELDS: u32 = 12; +// How many fields are on the serialized ClassUtilityFunctionBroadcasted event in addition to MAX_PACKED_BYTECODE_SIZE_PER_UTILITY_FUNCTION_IN_FIELDS. +pub global REGISTERER_UTILITY_FUNCTION_BROADCASTED_ADDITIONAL_FIELDS: u32 = 12; // Since we are not yet emitting selectors we'll use this magic value to identify events emitted by the ClassRegisterer. // This is just a stopgap until we implement proper selectors. // sha224sum 'struct ContractClassRegistered {contract_class_id: ContractClassId, version: Field, artifact_hash: Field, private_functions_root: Field, packed_public_bytecode: [Field; MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS] }' @@ -160,8 +160,8 @@ pub global REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE: Field = // sha224sum 'struct ClassPrivateFunctionBroadcasted' pub global REGISTERER_PRIVATE_FUNCTION_BROADCASTED_MAGIC_VALUE: Field = 0x1b70e95fde0b70adc30496b90a327af6a5e383e028e7a43211a07bcd; -// sha224sum 'struct ClassUnconstrainedFunctionBroadcasted' -pub global REGISTERER_UNCONSTRAINED_FUNCTION_BROADCASTED_MAGIC_VALUE: Field = +// sha224sum 'struct ClassUtilityFunctionBroadcasted' +pub global REGISTERER_UTILITY_FUNCTION_BROADCASTED_MAGIC_VALUE: Field = 0xe7af816635466f128568edb04c9fa024f6c87fb9010fdbffa68b3d99; // CONTRACT INSTANCE CONSTANTS diff --git a/yarn-project/aztec.js/src/deployment/broadcast_function.ts b/yarn-project/aztec.js/src/deployment/broadcast_function.ts index aa593f6fda71..db5abc601a56 100644 --- a/yarn-project/aztec.js/src/deployment/broadcast_function.ts +++ b/yarn-project/aztec.js/src/deployment/broadcast_function.ts @@ -127,7 +127,7 @@ export async function broadcastUtilityFunction( MAX_PACKED_BYTECODE_SIZE_PER_PRIVATE_FUNCTION_IN_FIELDS, ); return registerer.methods - .broadcast_unconstrained_function( + .broadcast_utility_function( contractClass.id, artifactMetadataHash, privateFunctionsArtifactTreeRoot, diff --git a/yarn-project/aztec.js/src/wallet/account_wallet.ts b/yarn-project/aztec.js/src/wallet/account_wallet.ts index a5fb2cbb185c..44a980ef8570 100644 --- a/yarn-project/aztec.js/src/wallet/account_wallet.ts +++ b/yarn-project/aztec.js/src/wallet/account_wallet.ts @@ -219,7 +219,7 @@ export class AccountWallet extends BaseWallet { private getIsConsumableAbi(): FunctionAbi { return { - name: 'unconstrained_is_consumable', + name: 'utility_is_consumable', isInitializer: false, functionType: FunctionType.UTILITY, isInternal: false, diff --git a/yarn-project/constants/src/constants.gen.ts b/yarn-project/constants/src/constants.gen.ts index c516293fc30a..c0f25bd075da 100644 --- a/yarn-project/constants/src/constants.gen.ts +++ b/yarn-project/constants/src/constants.gen.ts @@ -88,14 +88,14 @@ export const GENESIS_ARCHIVE_ROOT = 10026407782118501801895059347492572447052968 export const PUBLIC_DISPATCH_SELECTOR = 3578010381; export const MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS = 3000; export const MAX_PACKED_BYTECODE_SIZE_PER_PRIVATE_FUNCTION_IN_FIELDS = 3000; -export const MAX_PACKED_BYTECODE_SIZE_PER_UNCONSTRAINED_FUNCTION_IN_FIELDS = 3000; +export const MAX_PACKED_BYTECODE_SIZE_PER_UTILITY_FUNCTION_IN_FIELDS = 3000; export const REGISTERER_PRIVATE_FUNCTION_BROADCASTED_ADDITIONAL_FIELDS = 19; -export const REGISTERER_UNCONSTRAINED_FUNCTION_BROADCASTED_ADDITIONAL_FIELDS = 12; +export const REGISTERER_UTILITY_FUNCTION_BROADCASTED_ADDITIONAL_FIELDS = 12; export const REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE = 11121068431693264234253912047066709627593769337094408533543930778360n; export const REGISTERER_PRIVATE_FUNCTION_BROADCASTED_MAGIC_VALUE = 2889881020989534926461066592611988634597302675057895885580456197069n; -export const REGISTERER_UNCONSTRAINED_FUNCTION_BROADCASTED_MAGIC_VALUE = +export const REGISTERER_UTILITY_FUNCTION_BROADCASTED_MAGIC_VALUE = 24399338136397901754495080759185489776044879232766421623673792970137n; export const DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE = 14061769416655647708490531650437236735160113654556896985372298487345n; diff --git a/yarn-project/protocol-contracts/src/class-registerer/utility_function_broadcasted_event.ts b/yarn-project/protocol-contracts/src/class-registerer/utility_function_broadcasted_event.ts index df2a72d68a4d..4e61434e3896 100644 --- a/yarn-project/protocol-contracts/src/class-registerer/utility_function_broadcasted_event.ts +++ b/yarn-project/protocol-contracts/src/class-registerer/utility_function_broadcasted_event.ts @@ -1,6 +1,6 @@ import { ARTIFACT_FUNCTION_TREE_MAX_HEIGHT, - MAX_PACKED_BYTECODE_SIZE_PER_UNCONSTRAINED_FUNCTION_IN_FIELDS, + MAX_PACKED_BYTECODE_SIZE_PER_UTILITY_FUNCTION_IN_FIELDS, } from '@aztec/constants'; import { removeArrayPaddingEnd } from '@aztec/foundation/collection'; import { Fr } from '@aztec/foundation/fields'; @@ -10,7 +10,7 @@ import { FunctionSelector, bufferFromFields } from '@aztec/stdlib/abi'; import type { UtilityFunction, UtilityFunctionWithMembershipProof } from '@aztec/stdlib/contract'; import type { ContractClassLog } from '@aztec/stdlib/logs'; -import { REGISTERER_UNCONSTRAINED_FUNCTION_BROADCASTED_TAG } from '../protocol_contract_data.js'; +import { REGISTERER_UTILITY_FUNCTION_BROADCASTED_TAG } from '../protocol_contract_data.js'; /** Event emitted from the ContractClassRegisterer. */ export class UtilityFunctionBroadcastedEvent { @@ -24,7 +24,7 @@ export class UtilityFunctionBroadcastedEvent { ) {} static isUtilityFunctionBroadcastedEvent(log: ContractClassLog) { - return log.fields[0].equals(REGISTERER_UNCONSTRAINED_FUNCTION_BROADCASTED_TAG); + return log.fields[0].equals(REGISTERER_UTILITY_FUNCTION_BROADCASTED_TAG); } static fromLog(log: ContractClassLog) { @@ -92,7 +92,7 @@ export class BroadcastedUtilityFunction implements UtilityFunction { const selector = FunctionSelector.fromField(reader.readField()); const metadataHash = reader.readField(); // The '* 1' removes the 'Type instantiation is excessively deep and possibly infinite. ts(2589)' err - const encodedBytecode = reader.readFieldArray(MAX_PACKED_BYTECODE_SIZE_PER_UNCONSTRAINED_FUNCTION_IN_FIELDS * 1); + const encodedBytecode = reader.readFieldArray(MAX_PACKED_BYTECODE_SIZE_PER_UTILITY_FUNCTION_IN_FIELDS * 1); const bytecode = bufferFromFields(encodedBytecode); return new BroadcastedUtilityFunction(selector, metadataHash, bytecode); } diff --git a/yarn-project/protocol-contracts/src/protocol_contract_data_2.ts b/yarn-project/protocol-contracts/src/protocol_contract_data_2.ts index bfcd2a9e5da3..d11bf95ad38e 100644 --- a/yarn-project/protocol-contracts/src/protocol_contract_data_2.ts +++ b/yarn-project/protocol-contracts/src/protocol_contract_data_2.ts @@ -50,7 +50,7 @@ export const REGISTERER_CONTRACT_CLASS_REGISTERED_TAG = Fr.fromHexString( export const REGISTERER_PRIVATE_FUNCTION_BROADCASTED_TAG = Fr.fromHexString( '0x0abf338154e355442d9916d630da0491036d5a7b23c42b477c1395ba3bf9b42d', ); -export const REGISTERER_UNCONSTRAINED_FUNCTION_BROADCASTED_TAG = Fr.fromHexString( +export const REGISTERER_UTILITY_FUNCTION_BROADCASTED_TAG = Fr.fromHexString( '0x27774539896271d6dbe0c1de45ddc44709d1e8d9a9fb686ca3c105d87c417bb8', ); export const DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_TAG = Fr.fromHexString( diff --git a/yarn-project/protocol-contracts/src/scripts/generate_data.ts b/yarn-project/protocol-contracts/src/scripts/generate_data.ts index 19fa6cef7eb3..8df9e3a7124e 100644 --- a/yarn-project/protocol-contracts/src/scripts/generate_data.ts +++ b/yarn-project/protocol-contracts/src/scripts/generate_data.ts @@ -8,7 +8,7 @@ import { REGISTERER_CONTRACT_ADDRESS, REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE, REGISTERER_PRIVATE_FUNCTION_BROADCASTED_MAGIC_VALUE, - REGISTERER_UNCONSTRAINED_FUNCTION_BROADCASTED_MAGIC_VALUE, + REGISTERER_UTILITY_FUNCTION_BROADCASTED_MAGIC_VALUE, ROUTER_ADDRESS, } from '@aztec/constants'; import { poseidon2Hash } from '@aztec/foundation/crypto'; @@ -141,9 +141,9 @@ async function generateLogTags() { REGISTERER_CONTRACT_ADDRESS, REGISTERER_PRIVATE_FUNCTION_BROADCASTED_MAGIC_VALUE, ])}'); - export const REGISTERER_UNCONSTRAINED_FUNCTION_BROADCASTED_TAG = Fr.fromHexString('${await poseidon2Hash([ + export const REGISTERER_UTILITY_FUNCTION_BROADCASTED_TAG = Fr.fromHexString('${await poseidon2Hash([ REGISTERER_CONTRACT_ADDRESS, - REGISTERER_UNCONSTRAINED_FUNCTION_BROADCASTED_MAGIC_VALUE, + REGISTERER_UTILITY_FUNCTION_BROADCASTED_MAGIC_VALUE, ])}'); export const DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_TAG = Fr.fromHexString('${await poseidon2Hash([ DEPLOYER_CONTRACT_ADDRESS,