@aztec/protocol-contracts 3.0.0-nightly.20251002 → 3.0.0-nightly.20251003

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2364,7 +2364,7 @@
2364
2364
  }
2365
2365
  },
2366
2366
  "bytecode": "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",
2367
- "debug_symbols": "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",
2367
+ "debug_symbols": "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",
2368
2368
  "verification_key": "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"
2369
2369
  },
2370
2370
  {
@@ -3462,7 +3462,7 @@
3462
3462
  },
3463
3463
  "75": {
3464
3464
  "path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/hash.nr",
3465
- "source": "use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__FUNCTION_ARGS, GENERATOR_INDEX__MESSAGE_NULLIFIER,\n GENERATOR_INDEX__PUBLIC_BYTECODE, GENERATOR_INDEX__PUBLIC_CALLDATA,\n GENERATOR_INDEX__SECRET_HASH, MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS,\n },\n hash::{\n poseidon2_hash_subarray, poseidon2_hash_with_separator, poseidon2_hash_with_separator_slice,\n sha256_to_field,\n },\n point::Point,\n traits::{Hash, ToField},\n};\n\npub use dep::protocol_types::hash::{compute_siloed_nullifier, pedersen_hash};\n\npub fn pedersen_commitment<let N: u32>(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\n}\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_l1_to_l2_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field,\n leaf_index: Field,\n) -> Field {\n let mut hash_bytes = [0 as u8; 224];\n let sender_bytes: [u8; 32] = sender.to_field().to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n let recipient_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let version_bytes: [u8; 32] = version.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let secret_hash_bytes: [u8; 32] = secret_hash.to_be_bytes();\n let leaf_index_bytes: [u8; 32] = leaf_index.to_be_bytes();\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n hash_bytes[i + 192] = leaf_index_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret\npub fn compute_l1_to_l2_message_nullifier(message_hash: Field, secret: Field) -> Field {\n poseidon2_hash_with_separator([message_hash, secret], GENERATOR_INDEX__MESSAGE_NULLIFIER)\n}\n\npub struct ArgsHasher {\n pub fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<let N: u32>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\n// Computes the hash of input arguments or return values for private functions, or for authwit creation.\npub fn hash_args_array<let N: u32>(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n// Same as `hash_args_array`, but takes a slice instead of an array.\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n// Computes the hash of calldata for public functions.\npub fn hash_calldata_array<let N: u32>(calldata: [Field; N]) -> Field {\n if calldata.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(calldata, GENERATOR_INDEX__PUBLIC_CALLDATA)\n }\n}\n\n// Same as `hash_calldata_array`, but takes a slice instead of an array.\npub fn hash_calldata(calldata: [Field]) -> Field {\n if calldata.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(calldata, GENERATOR_INDEX__PUBLIC_CALLDATA)\n }\n}\n\n/**\n * Computes the public bytecode commitment for a contract class.\n * The commitment is `hash([separator, ...bytecode])` where bytecode omits the length prefix present\n * in `packed_bytecode`.\n *\n * @param packed_bytecode - The packed bytecode of the contract class. 0th word is the length in bytes.\n * packed_bytecode is mutable so that we can avoid copying the array to construct one starting with\n * separator instead of length.\n * @returns The public bytecode commitment.\n */\npub fn compute_public_bytecode_commitment(\n mut packed_public_bytecode: [Field; MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS],\n) -> Field {\n // First field element contains the length of the bytecode\n let bytecode_length_in_bytes: u32 = packed_public_bytecode[0] as u32;\n let bytecode_length_in_fields: u32 =\n (bytecode_length_in_bytes / 31) + (bytecode_length_in_bytes % 31 != 0) as u32;\n // Don't allow empty public bytecode.\n // AVM doesn't handle execution of contracts that exist with empty bytecode.\n assert(bytecode_length_in_fields != 0);\n assert(bytecode_length_in_fields < MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS);\n\n // Packed_bytecode's 0th entry is the length. Replace it with separator before hashing.\n let separator = GENERATOR_INDEX__PUBLIC_BYTECODE.to_field();\n packed_public_bytecode[0] = separator;\n // +1 to length to account for the separator\n let nonzero_length = bytecode_length_in_fields + 1;\n\n poseidon2_hash_subarray(packed_public_bytecode, nonzero_length)\n // NOTE: we use poseidon2_hash_subarray here because we want to hash the bytecode only up to\n // its nonzero length. We do NOT want to include a `1` at the end to indicate \"variable length\",\n // and we want to enforce that all trailing elements are zero.\n}\n\n#[test]\nunconstrained fn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..100 {\n input.add(i as Field);\n }\n let hash = input.hash();\n dep::std::println(hash);\n // Used in yarn-project/stdlib test snapshots:\n assert(hash == 0x19b0d74feb06ebde19edd85a28986c97063e84b3b351a8b666c7cac963ce655f);\n}\n\n#[test]\nunconstrained fn compute_calldata_hash() {\n let mut input = [0; 100];\n for i in 0..input.len() {\n input[i] = i as Field;\n }\n let hash = hash_calldata_array(input);\n dep::std::println(hash);\n let hash_check = hash_calldata(input.as_slice());\n assert(hash == hash_check);\n // Used in cpp vm2 tests:\n assert(hash == 0x191383c9f8964afd3ea8879a03b7dda65d6724773966d18dcf80e452736fc1f3);\n}\n\n#[test]\nunconstrained fn public_bytecode_commitment() {\n let mut input = [0; MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS];\n let len = 99;\n for i in 1..len + 1 {\n input[i] = i as Field;\n }\n input[0] = (len as Field) * 31;\n let hash = compute_public_bytecode_commitment(input);\n dep::std::println(hash);\n // Used in cpp vm2 tests:\n assert(hash == 0x16d621c3387156ef53754679e7b2c9be8f0bceeb44aa59a74991df3b0b42a0bf);\n}\n"
3465
+ "source": "use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__FUNCTION_ARGS, GENERATOR_INDEX__MESSAGE_NULLIFIER,\n GENERATOR_INDEX__PUBLIC_BYTECODE, GENERATOR_INDEX__PUBLIC_CALLDATA,\n GENERATOR_INDEX__SECRET_HASH, MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS,\n },\n hash::{\n poseidon2_hash_subarray, poseidon2_hash_with_separator, poseidon2_hash_with_separator_slice,\n sha256_to_field,\n },\n point::Point,\n traits::{Hash, ToField},\n};\n\npub use dep::protocol_types::hash::{compute_siloed_nullifier, pedersen_hash};\n\npub fn pedersen_commitment<let N: u32>(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\n}\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_l1_to_l2_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field,\n leaf_index: Field,\n) -> Field {\n let mut hash_bytes = [0 as u8; 224];\n let sender_bytes: [u8; 32] = sender.to_field().to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n let recipient_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let version_bytes: [u8; 32] = version.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let secret_hash_bytes: [u8; 32] = secret_hash.to_be_bytes();\n let leaf_index_bytes: [u8; 32] = leaf_index.to_be_bytes();\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n hash_bytes[i + 192] = leaf_index_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret\npub fn compute_l1_to_l2_message_nullifier(message_hash: Field, secret: Field) -> Field {\n poseidon2_hash_with_separator([message_hash, secret], GENERATOR_INDEX__MESSAGE_NULLIFIER)\n}\n\npub struct ArgsHasher {\n pub fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<let N: u32>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\n// Computes the hash of input arguments or return values for private functions, or for authwit creation.\npub fn hash_args_array<let N: u32>(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n// Same as `hash_args_array`, but takes a slice instead of an array.\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n// Computes the hash of calldata for public functions.\npub fn hash_calldata_array<let N: u32>(calldata: [Field; N]) -> Field {\n poseidon2_hash_with_separator(calldata, GENERATOR_INDEX__PUBLIC_CALLDATA)\n}\n\n// Same as `hash_calldata_array`, but takes a slice instead of an array.\npub fn hash_calldata(calldata: [Field]) -> Field {\n poseidon2_hash_with_separator_slice(calldata, GENERATOR_INDEX__PUBLIC_CALLDATA)\n}\n\n/**\n * Computes the public bytecode commitment for a contract class.\n * The commitment is `hash([separator, ...bytecode])` where bytecode omits the length prefix present\n * in `packed_bytecode`.\n *\n * @param packed_bytecode - The packed bytecode of the contract class. 0th word is the length in bytes.\n * packed_bytecode is mutable so that we can avoid copying the array to construct one starting with\n * separator instead of length.\n * @returns The public bytecode commitment.\n */\npub fn compute_public_bytecode_commitment(\n mut packed_public_bytecode: [Field; MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS],\n) -> Field {\n // First field element contains the length of the bytecode\n let bytecode_length_in_bytes: u32 = packed_public_bytecode[0] as u32;\n let bytecode_length_in_fields: u32 =\n (bytecode_length_in_bytes / 31) + (bytecode_length_in_bytes % 31 != 0) as u32;\n // Don't allow empty public bytecode.\n // AVM doesn't handle execution of contracts that exist with empty bytecode.\n assert(bytecode_length_in_fields != 0);\n assert(bytecode_length_in_fields < MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS);\n\n // Packed_bytecode's 0th entry is the length. Replace it with separator before hashing.\n let separator = GENERATOR_INDEX__PUBLIC_BYTECODE.to_field();\n packed_public_bytecode[0] = separator;\n // +1 to length to account for the separator\n let nonzero_length = bytecode_length_in_fields + 1;\n\n poseidon2_hash_subarray(packed_public_bytecode, nonzero_length)\n // NOTE: we use poseidon2_hash_subarray here because we want to hash the bytecode only up to\n // its nonzero length. We do NOT want to include a `1` at the end to indicate \"variable length\",\n // and we want to enforce that all trailing elements are zero.\n}\n\n#[test]\nunconstrained fn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..100 {\n input.add(i as Field);\n }\n let hash = input.hash();\n dep::std::println(hash);\n // Used in yarn-project/stdlib test snapshots:\n assert(hash == 0x19b0d74feb06ebde19edd85a28986c97063e84b3b351a8b666c7cac963ce655f);\n}\n\n#[test]\nunconstrained fn compute_calldata_hash() {\n let mut input = [0; 100];\n for i in 0..input.len() {\n input[i] = i as Field;\n }\n let hash = hash_calldata_array(input);\n dep::std::println(hash);\n let hash_check = hash_calldata(input.as_slice());\n assert(hash == hash_check);\n // Used in cpp vm2 tests:\n assert(hash == 0x191383c9f8964afd3ea8879a03b7dda65d6724773966d18dcf80e452736fc1f3);\n}\n\n#[test]\nunconstrained fn public_bytecode_commitment() {\n let mut input = [0; MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS];\n let len = 99;\n for i in 1..len + 1 {\n input[i] = i as Field;\n }\n input[0] = (len as Field) * 31;\n let hash = compute_public_bytecode_commitment(input);\n dep::std::println(hash);\n // Used in cpp vm2 tests:\n assert(hash == 0x16d621c3387156ef53754679e7b2c9be8f0bceeb44aa59a74991df3b0b42a0bf);\n}\n"
3466
3466
  },
3467
3467
  "96": {
3468
3468
  "path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/macros/aztec.nr",