@aztec/protocol-contracts 0.44.0 → 0.45.0

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.
Files changed (37) hide show
  1. package/artifacts/AuthRegistry.d.json.ts +3 -0
  2. package/artifacts/AuthRegistry.json +1 -0
  3. package/artifacts/ContractClassRegisterer.d.json.ts +3 -0
  4. package/artifacts/ContractClassRegisterer.json +1 -0
  5. package/artifacts/ContractInstanceDeployer.d.json.ts +3 -0
  6. package/artifacts/ContractInstanceDeployer.json +1 -0
  7. package/artifacts/GasToken.d.json.ts +3 -0
  8. package/artifacts/GasToken.json +1 -0
  9. package/artifacts/KeyRegistry.d.json.ts +3 -0
  10. package/artifacts/KeyRegistry.json +1 -0
  11. package/artifacts/MultiCallEntrypoint.d.json.ts +3 -0
  12. package/artifacts/MultiCallEntrypoint.json +1 -0
  13. package/dest/auth-registry/artifact.js +2 -2
  14. package/dest/class-registerer/artifact.js +2 -2
  15. package/dest/gas-token/artifact.js +2 -2
  16. package/dest/instance-deployer/artifact.js +2 -2
  17. package/dest/key-registry/artifact.js +2 -2
  18. package/dest/multi-call-entrypoint/artifact.js +2 -2
  19. package/package.json +7 -6
  20. package/src/auth-registry/artifact.ts +1 -1
  21. package/src/class-registerer/artifact.ts +1 -1
  22. package/src/gas-token/artifact.ts +1 -1
  23. package/src/instance-deployer/artifact.ts +1 -1
  24. package/src/key-registry/artifact.ts +1 -1
  25. package/src/multi-call-entrypoint/artifact.ts +1 -1
  26. package/dest/artifacts/AuthRegistry.json +0 -1
  27. package/dest/artifacts/ContractClassRegisterer.json +0 -1
  28. package/dest/artifacts/ContractInstanceDeployer.json +0 -1
  29. package/dest/artifacts/GasToken.json +0 -1
  30. package/dest/artifacts/KeyRegistry.json +0 -1
  31. package/dest/artifacts/MultiCallEntrypoint.json +0 -1
  32. package/src/artifacts/AuthRegistry.json +0 -1
  33. package/src/artifacts/ContractClassRegisterer.json +0 -1
  34. package/src/artifacts/ContractInstanceDeployer.json +0 -1
  35. package/src/artifacts/GasToken.json +0 -1
  36. package/src/artifacts/KeyRegistry.json +0 -1
  37. package/src/artifacts/MultiCallEntrypoint.json +0 -1
@@ -0,0 +1 @@
1
+ {"transpiled":true,"noir_version":"0.31.0+bb5cbab945cfd61f6a0da79f8874a0fcdc59361a","name":"MultiCallEntrypoint","functions":[{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":0,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"}},"bytecode":"H4sIAAAAAAAA/+2b3U7bQBCF18GhBoOb2HGckEAIBaTehRSScMfLtM/d60p9haqss6Mclmm0UcdLVool5LG9O+ebsz+EyERqfSSvP5GJ2+Z8rN4f1ObFnGf/dzwI5po1yRkFwtkKhPMoEM5YkDNiOPU5NrFed3rNfVLr9fjuIXbWA30Ez9W2RLZqYgJ8eC1V6Wr2fAzJEVwZ8Ng8o7PGSc0zBEtNkXUbuEeFtuAe6RzBPdrBSCcxpgjX+5RskOXyvs4+XcOJyUXcKcT4bAzWxQ3V2Jav8bGRMXn1rqExqVcx+d42uRO4pjE4NbHgb44H1I7Mz6k1F2KIR9CW2pEfLWDVx7narJfTLf1iq18GbY6hn7230DWNtfaqa2J9btOeAPkb8HCm86byed+MTWx5l0JNGXgioz1f6fxn6u0RWdfXEGfAcy7Os1578nWux+4zsMvkfXrUXnUsr84srzJogwydBvyLQJdy03WH0ZbzYrHS2l0HL7oMT9ezF11GW9CLZ62dO3iRMzy5Zy9yRlvOi+U3rV04eFEwPIVnLwpGW86Lef0ZoOfgRY/h6Xn2osdoC66Rel6UDl6UDE/p2YuS0Rb04ofW7jt40Wd4+p696DPagl5819qVgxcVw1N59qJitAX3zvrzxcDBiwHDM/DsxYDRFvRirrWHDl4MGZ6hZy+GjLbgGqm1Lxy8uGB4Ljx7QXq7MvcCZK4CZC72gDmxYhntRb1/jhy8GDE8I89e4HcuuzCXe8CcWLGM9uJJa48dvBgzPGPPXpDersx5gMxFgMz9AJnLAJmrAJn3YT4nViyjvaz30EsHLy4ZnkvPXpDersx5gMyjAJmLPWBOrFhGe1l/N3fl4MUVw3Pl2QvS25V5ECBzdw+YEyuW0V4utPbEwYsJwzPx7AXp7co8DJC5CpB5FCBzESBzP0DmMkDmwxr0w5zvATO+e/S7UZ75c2rxkGfKYlQWYwpxBozU9kXJva+SWbWT1lTcj/X42POFrqeNas9XOu+XBmrSeW/l89Z/I9yZXPQO3y3j1b2JI+FxuoO8EejQ/RjiX9CW2pEftB8Qu36X68bE91v6Tax+GbS5gX63Vj+6prHW3v00cVNzy2Ved9RmLX8Fngb2wUd8J1eBV8pipGMCPNfyPA8N1TnDd/j+KNm1N7W8OrG8yqAN7tEftW8emA/M/2LGzxMncA956F7LqgX/v2EKOf4CARQXTpY1AAA=","debug_symbols":"ndpRattAGIXRveg5FN/fmhkpWymlOIlTDMEJsVMoJnuv3dIF9LxpJN237+kwl+lp//Dx4/vh+Px6mu6/XqaX18fd+fB6vJ4u0+ZLLX/ent52x9uL03n3fp7ut33cTfvj0/Vp1Ofd9Hx42V+f1/b57e42WmG03cgoMioZbWU0y6jJqMtoyEiK2EoRsxQxSxGzFDFLEbMUMUsRsxQxSxGzFDFLEU2KaFJEkyKaFNGkiCZFNCmiSRFNimhSRJciuhTRpYguRXQpoksRXYroUkSXIroUMaSIIUUMKWJIEUOKGFLEkCKGFDGkiCFFLFLEIkUsUsQiRSxSxCJFLFLEIkUsUsQiRaxSxCpFrFLEKkWsUsQqRaxSxCpFrFLEKkVks6FVaFW02tJqplWjVafVoNVCK2oj1EaojVAboTZCbYTaCLURaiPURqiNojaK2ihqo6iNojaK2ihqo6gNAs2QaIZIM2SaIdQMqWaINUOuGYLNkGyGaDNkmyHcDOlmiDdDvhkCzpBwhogzZJwh5AwpZ4g5Q84Zgs6QdIaoM2SdIewMaWeIO0PeGQLPkHiGyDNkniH0DKlniD1D7hmCz5B8hugzZJ8h/AzpZ4g/Q/4ZAtCQgIYINGSgIQQNKWiIQUMOGoLQkISGKDRkoSEMDWloiENDHhoC0ZCIhkg0ZKIhFA2paIhFQy5a5KJFLlrkokUuWuSiRS5a5KJFLlrkokUuWuSiRS5a5KJFLlrkokUuWuSiRS5a5KJFLlrkokUuWuSiRS5a5KJFLlrkokUuWnbRk1y0yEWLXLTIRYtctMhFi1y0/ttFr6efu/fD7uFlf7vbe/v4cXz8d9X3ejz/evv75frvbw=="},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["aztec(private)"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"new_note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"new_nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"hash","type":{"kind":"field"}},{"name":"caller_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::caller_context::CallerContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_stack_hashes","type":{"kind":"array","length":16,"type":{"kind":"field"}}},{"name":"public_teardown_function_hash","type":{"kind":"field"}},{"name":"new_l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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/vCMDhn/GR1y+DM6ZOVndAI6T+g0ysrH/f748LGf6W2UflN6G+XZlN5GCTWlt1HmTOi9XRqlyJTeRrkwpbdR0kvpbZTdUnrDTK9XvrpdvPLV7eKVr24Xr3x1u5jlq8UsXy1m+Woxy1eLWb5awkyvWb5azPLVYpavFrN8tZjlq6tZvrqa5aurWb66muWra5jpNctXnS7Up/Sa5atO19hTes3yVafL4ym9Zvmq05XtlF6zfNXponRKr1m+6nQ9OaXXLF91uhSc0muWrzpdxU3pNctXnS7ApvSa5atO105Tes3yVafLnim9Zvmq0xXLlF6zfNXpYmNKr1m+6nSdMKXXLF91usSX0muWrzpdnUvpNctXnS6spfSa5atO18RSes3yVafLWSm9Zvmq05WolF6zfNXpIlJKr1m+6nT9J6XXLF91unST0muWrzpddUnpNctXnS6YpPSa5atO1zpSes3yVafLFCm9Zvmq0xWGlF6zfNXp4kBKr1m+6rS5P6XXLF912q6f0muWrzptwE/pNctXnbbUp/Sa5atOm+RTes3yVadt7ym9ZvnKbH/7zWx/+81sf/vNbH/7bra/fTfb376b7W/fzfa375cw0+uVr3az/e272f723Wx/+262v30329++m+1v3832t+9m+9t3s/3tu9n+9t1sf/tutr99N9vfvpvtb9/N9rfvZvvbd7P97bvZ/vbdbH/7bra/fTfb376b7W/fzfa372b723ez/e272f723Wx/+262v30329++m+1v3832t+9m+9t3s/3tu9n+9r3Tfu+vb335/tbX48XPfud7LHH7/snbj08v+/5XP/l+fP/k64ufvMX112e3WM88apQZ2noUeDS8R42yWVuPGuXJth41ysBtPWqU29t61KhrdPWo0/2Fth41mpm39Yg5w/geMWeo9ej++MHbsZ15FHg0vEfMGcb3iDnD+B4xZ6j1aP/t0e3MI+YM43vEnGF4jzrdIWrrEXOG8T1izjC+R8wZaj3aHn8vaLud/b2gTne12nrEnGF8j5gzjO8Rc4bxPWLOML5HzBmG96jTPb62HjFnGN8j5gzje8ScYXyPAo+G94g5w/geMWcY3yPmDON7xJxhfI+YMwzvUae7tG09Ys4wvkfMGcb3iDnD+B4FHg3vEXOG8T1izjC+R8wZxveIOcP4HjFnGN6jTvfZ23rEnGF8j5gz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"}],"outputs":{"globals":{},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"}}],"kind":"struct","path":"MultiCallEntrypoint::entrypoint_parameters"}}],"kind":"struct","path":"MultiCallEntrypoint::entrypoint_abi"}]}},"file_map":{"120":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, ARGS_HASH_CHUNK_COUNT,\n GENERATOR_INDEX__FUNCTION_ARGS, ARGS_HASH_CHUNK_LENGTH\n},\n traits::Hash, hash::{pedersen_hash, compute_siloed_nullifier, sha256_to_field}\n};\nuse crate::oracle::logs_traits::{LensForEncryptedLog, ToBytesForUnencryptedLog};\n\npub fn compute_secret_hash(secret: Field) -> Field {\n pedersen_hash([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash<T, N, M>(\n contract_address: AztecAddress,\n event_selector: Field,\n log: T\n) -> Field where T: ToBytesForUnencryptedLog<N, M> {\n let message_bytes: [u8; N] = log.to_be_bytes_arr();\n // can't use N - not in scope error\n let n = message_bytes.len();\n let mut hash_bytes = [0; M];\n // Address is converted to 32 bytes in ts\n let address_bytes = contract_address.to_be_bytes_arr();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let event_bytes = event_selector.to_be_bytes(4);\n for i in 0..4 {\n hash_bytes[32 + i] = event_bytes[i];\n }\n let len_bytes = (n as Field).to_be_bytes(4);\n for i in 0..4 {\n hash_bytes[36 + i] = len_bytes[i];\n }\n for i in 0..n {\n hash_bytes[40 + i] = message_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes = sender.to_field().to_be_bytes(32);\n let chain_id_bytes = chain_id.to_be_bytes(32);\n let recipient_bytes = recipient.to_field().to_be_bytes(32);\n let version_bytes = version.to_be_bytes(32);\n let content_bytes = content.to_be_bytes(32);\n let secret_hash_bytes = secret_hash.to_be_bytes(32);\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 }\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 and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n pedersen_hash(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER\n )\n}\n\nstruct ArgsHasher {\n 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<N>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array<N>(args: [Field; N]) -> Field {\n hash_args(args.as_slice())\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n assert(args.len() < ARGS_HASH_CHUNK_COUNT * ARGS_HASH_CHUNK_LENGTH);\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n let mut current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n\n let mut current_chunk_index = 0;\n let mut index_inside_current_chunk = 0;\n for i in 0..args.len() {\n current_chunk_values[index_inside_current_chunk] = args[i];\n index_inside_current_chunk+=1;\n if index_inside_current_chunk == ARGS_HASH_CHUNK_LENGTH {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n current_chunk_index+=1;\n index_inside_current_chunk = 0;\n }\n }\n if index_inside_current_chunk > 0 {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n pedersen_hash(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nfn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..800 {\n input.add(i as Field);\n }\n let hash = input.hash();\n assert(hash == 0x05a1023fef839ac88731f49ae983e172c1b600a3c8f3393ad0ac25d819ac0f0f);\n}\n\n#[test]\nfn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let event_selector = 5;\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd\n ];\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00846d6969c8c2f61d39cd2762efcb0abb14f88d59c2675910251ef2bcffe9a7);\n}\n\n#[test]\nfn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let event_selector = 5;\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00880a801230ea08c98a802a11b4786cba474513875f0fc69a615e81c5f9f21c);\n}\n\n#[test]\nfn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let event_selector = 5;\n let log = \"dummy\";\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00a78b5347813624ecfd26e5b8bc6146f418b0cfcc8296b5112d09b8ebba9496);\n}\n\n#[test]\nfn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let event_selector = 5;\n let log = \"Hello this is a string\";\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x001f3390ea242afee7ce46dafdbdc4bd4f1cf20cd63850d12d60ff9956712c4f);\n}\n"},"134":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{\n abis::{function_selector::FunctionSelector, private_call_stack_item::PrivateCallStackItem},\n address::AztecAddress, constants::PRIVATE_CALL_STACK_ITEM_LENGTH\n};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; PRIVATE_CALL_STACK_ITEM_LENGTH] {}\n\nunconstrained pub fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> PrivateCallStackItem {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n PrivateCallStackItem::deserialize(fields)\n}\n"},"139":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr","source":"use dep::protocol_types::{\n abis::{\n function_selector::FunctionSelector, public_call_stack_item::PublicCallStackItem,\n function_data::FunctionData, public_circuit_public_inputs::PublicCircuitPublicInputs,\n call_context::CallContext, read_request::ReadRequest, note_hash::NoteHash, nullifier::Nullifier,\n log_hash::LogHash, global_variables::GlobalVariables, gas::Gas\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n messaging::l2_to_l1_message::L2ToL1Message, header::Header, address::AztecAddress,\n utils::reader::Reader,\n constants::{\n MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,\n MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH\n}\n};\n\n#[oracle(enqueuePublicFunctionCall)]\nunconstrained fn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {}\n\nunconstrained pub fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nunconstrained fn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {}\n\nunconstrained pub fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\npub fn parse_public_call_stack_item_from_oracle(fields: [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH]) -> PublicCallStackItem {\n let mut reader = Reader::new(fields);\n\n // Note: Not using PublicCirclePublicInputs::deserialize here, because everything below args_hash is 0 and\n // there is no more data in fields because there is only ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE fields!\n // WARNING: if updating, see comment in public_call_stack_item.ts's PublicCallStackItem.hash()\n let item = PublicCallStackItem {\n contract_address: AztecAddress::from_field(reader.read()),\n function_data: FunctionData { selector: FunctionSelector::from_field(reader.read()), is_private: false },\n public_inputs: PublicCircuitPublicInputs {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: 0,\n note_hash_read_requests: [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n l1_to_l2_msg_read_requests: [ReadRequest::empty(); MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL],\n contract_storage_update_requests: [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_note_hashes: [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter: 0,\n end_side_effect_counter: 0,\n unencrypted_logs_hashes: [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n historical_header: Header::empty(),\n global_variables: GlobalVariables::empty(),\n prover_address: AztecAddress::zero(),\n revert_code: 0,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty(),\n transaction_fee: 0\n },\n is_execution_request: true\n };\n reader.finish();\n\n item\n}\n"},"166":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::{GAS_LENGTH, FIXED_DA_GAS}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered, utils::reader::Reader,\n abis::gas_fees::GasFees\n};\nuse std::ops::{Add, Sub};\n\nstruct Gas {\n da_gas: u32,\n l2_gas: u32,\n}\n\nimpl Gas {\n pub fn new(da_gas: u32, l2_gas: u32) -> Self {\n Self { da_gas, l2_gas }\n }\n\n pub fn tx_overhead() -> Self {\n Self { da_gas: FIXED_DA_GAS, l2_gas: 0 }\n }\n\n pub fn compute_fee(self, fees: GasFees) -> Field {\n (self.da_gas as Field) * fees.fee_per_da_gas + (self.l2_gas as Field) * fees.fee_per_l2_gas\n }\n\n pub fn is_empty(self) -> bool {\n (self.da_gas == 0) & (self.l2_gas == 0)\n }\n\n pub fn within(self, limits: Gas) -> bool {\n (self.da_gas <= limits.da_gas) & (self.l2_gas <= limits.l2_gas)\n }\n}\n\nimpl Add for Gas {\n fn add(self, other: Gas) -> Self {\n Gas::new(self.da_gas + other.da_gas, self.l2_gas + other.l2_gas)\n }\n}\n\nimpl Sub for Gas {\n fn sub(self, other: Gas) -> Self {\n Gas::new(self.da_gas - other.da_gas, self.l2_gas - other.l2_gas)\n }\n}\n\nimpl Serialize<GAS_LENGTH> for Gas {\n fn serialize(self) -> [Field; GAS_LENGTH] {\n [self.da_gas as Field, self.l2_gas as Field]\n }\n}\n\nimpl Deserialize<GAS_LENGTH> for Gas {\n fn deserialize(serialized: [Field; GAS_LENGTH]) -> Gas {\n Gas::new(serialized[0] as u32, serialized[1] as u32)\n }\n}\n\nimpl Eq for Gas {\n fn eq(self, other : Gas) -> bool {\n (self.da_gas == other.da_gas) & (self.l2_gas == other.l2_gas)\n }\n}\n\nimpl Empty for Gas {\n fn empty() -> Self {\n Gas::new(0, 0)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = Gas::empty();\n let serialized = item.serialize();\n let deserialized = Gas::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n"},"168":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/note_hash.nr","source":"use crate::{\n abis::read_request::ScopedReadRequest, address::AztecAddress,\n abis::side_effect::{Ordered, OrderedValue, Readable, Scoped},\n constants::{NOTE_HASH_LENGTH, SCOPED_NOTE_HASH_LENGTH}, traits::{Empty, Serialize, Deserialize},\n utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct NoteHash {\n value: Field,\n counter: u32,\n}\n\nimpl Ordered for NoteHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for NoteHash {\n fn eq(self, other: NoteHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter) \n }\n}\n\nimpl Empty for NoteHash {\n fn empty() -> Self {\n NoteHash {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Serialize<NOTE_HASH_LENGTH> for NoteHash {\n fn serialize(self) -> [Field; NOTE_HASH_LENGTH] {\n [self.value, self.counter as Field]\n }\n}\n\nimpl Deserialize<NOTE_HASH_LENGTH> for NoteHash {\n fn deserialize(values: [Field; NOTE_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n}\n\nimpl NoteHash {\n pub fn scope(self, nullifier_counter: u32, contract_address: AztecAddress) -> ScopedNoteHash {\n ScopedNoteHash { note_hash: self, nullifier_counter, contract_address }\n }\n}\n\nstruct ScopedNoteHash {\n note_hash: NoteHash,\n nullifier_counter: u32,\n contract_address: AztecAddress,\n}\n\nimpl Scoped<NoteHash> for ScopedNoteHash {\n fn inner(self) -> NoteHash {\n self.note_hash\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedNoteHash {\n fn counter(self) -> u32 {\n self.note_hash.counter\n }\n}\n\nimpl OrderedValue<Field> for ScopedNoteHash {\n fn value(self) -> Field {\n self.note_hash.value\n }\n fn counter(self) -> u32 {\n self.note_hash.counter\n }\n}\n\nimpl Eq for ScopedNoteHash {\n fn eq(self, other: ScopedNoteHash) -> bool {\n (self.note_hash == other.note_hash)\n & (self.nullifier_counter == other.nullifier_counter)\n & (self.contract_address == other.contract_address)\n }\n}\n\nimpl Empty for ScopedNoteHash {\n fn empty() -> Self {\n ScopedNoteHash {\n note_hash: NoteHash::empty(),\n nullifier_counter: 0,\n contract_address: AztecAddress::zero(),\n }\n }\n}\n\nimpl Serialize<SCOPED_NOTE_HASH_LENGTH> for ScopedNoteHash {\n fn serialize(self) -> [Field; SCOPED_NOTE_HASH_LENGTH] {\n array_concat(self.note_hash.serialize(), [self.nullifier_counter as Field, self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize<SCOPED_NOTE_HASH_LENGTH> for ScopedNoteHash {\n fn deserialize(values: [Field; SCOPED_NOTE_HASH_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n note_hash: reader.read_struct(NoteHash::deserialize),\n nullifier_counter: reader.read_u32(),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nimpl Readable for ScopedNoteHash {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n assert_eq(self.note_hash.value, read_request.value(), \"Value of the note hash does not match read request\");\n assert_eq(self.contract_address, read_request.contract_address, \"Contract address of the note hash does not match read request\");\n assert(\n read_request.counter() > self.note_hash.counter, \"Read request counter must be greater than the counter of the note hash\"\n );\n assert(\n (self.nullifier_counter == 0) | (read_request.counter() < self.nullifier_counter), \"Read request counter must be less than the nullifier counter of the note hash\"\n );\n }\n}\n\nimpl ScopedNoteHash {\n pub fn expose_to_public(self) -> NoteHash {\n // Hide the actual counter when exposing it to the public kernel.\n NoteHash { value: self.note_hash.value, counter: 0 }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = NoteHash::empty();\n let serialized = item.serialize();\n let deserialized = NoteHash::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped() {\n let item = ScopedNoteHash::empty();\n let serialized = item.serialize();\n let deserialized = ScopedNoteHash::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"169":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_fees.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::GAS_FEES_LENGTH, hash::pedersen_hash, traits::{Deserialize, Hash, Serialize, Empty},\n abis::side_effect::Ordered, utils::reader::Reader\n};\n\nstruct GasFees {\n fee_per_da_gas: Field,\n fee_per_l2_gas: Field,\n}\n\nimpl GasFees {\n pub fn new(fee_per_da_gas: Field, fee_per_l2_gas: Field) -> Self {\n Self { fee_per_da_gas, fee_per_l2_gas }\n }\n\n pub fn default() -> Self {\n GasFees::new(1, 1)\n }\n\n pub fn is_empty(self) -> bool {\n (self.fee_per_da_gas == 0) & (self.fee_per_l2_gas == 0)\n }\n}\n\nimpl Serialize<GAS_FEES_LENGTH> for GasFees {\n fn serialize(self) -> [Field; GAS_FEES_LENGTH] {\n [self.fee_per_da_gas, self.fee_per_l2_gas]\n }\n}\n\nimpl Deserialize<GAS_FEES_LENGTH> for GasFees {\n fn deserialize(serialized: [Field; GAS_FEES_LENGTH]) -> GasFees {\n GasFees::new(serialized[0], serialized[1])\n }\n}\n\nimpl Eq for GasFees {\n fn eq(self, other : GasFees) -> bool {\n (self.fee_per_da_gas == other.fee_per_da_gas) & (self.fee_per_l2_gas == other.fee_per_l2_gas)\n }\n}\n\nimpl Empty for GasFees {\n fn empty() -> Self {\n GasFees::new(0, 0)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = GasFees::empty();\n let serialized = item.serialize();\n let deserialized = GasFees::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"170":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_call_stack_item.nr","source":"use crate::abis::{function_data::FunctionData, public_circuit_public_inputs::PublicCircuitPublicInputs};\nuse crate::address::AztecAddress;\nuse crate::constants::GENERATOR_INDEX__CALL_STACK_ITEM;\nuse crate::traits::Hash;\n\nstruct PublicCallStackItem {\n contract_address: AztecAddress,\n public_inputs: PublicCircuitPublicInputs,\n function_data: FunctionData,\n // True if this call stack item represents a request to execute a function rather than a\n // fulfilled execution. Used when enqueuing calls from private to public functions.\n is_execution_request: bool,\n}\n\nimpl Hash for PublicCallStackItem {\n fn hash(self) -> Field {\n let item = if self.is_execution_request {\n self.as_execution_request()\n } else {\n self\n };\n\n std::hash::pedersen_hash_with_separator([\n item.contract_address.to_field(),\n item.function_data.hash(),\n item.public_inputs.hash(),\n ], GENERATOR_INDEX__CALL_STACK_ITEM)\n }\n}\n\nimpl PublicCallStackItem {\n fn as_execution_request(self) -> Self {\n // WARNING: if updating, see comment in public_call_stack_item.ts's `PublicCallStackItem.hash()`\n let public_inputs = self.public_inputs;\n let mut request_public_inputs = PublicCircuitPublicInputs::empty();\n request_public_inputs.call_context = public_inputs.call_context;\n request_public_inputs.args_hash = public_inputs.args_hash;\n\n let call_stack_item = PublicCallStackItem {\n contract_address: self.contract_address,\n function_data: self.function_data,\n is_execution_request: true,\n public_inputs: request_public_inputs\n };\n call_stack_item\n }\n}\n\nmod tests {\n use crate::{\n abis::{\n function_data::FunctionData, function_selector::FunctionSelector, note_hash::NoteHash,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem\n },\n address::AztecAddress, constants::GENERATOR_INDEX__CALL_STACK_ITEM, traits::Hash\n };\n\n #[test]\n fn compute_call_stack_item_request_hash() {\n let contract_address = AztecAddress::from_field(1);\n let function_data = FunctionData { selector: FunctionSelector::from_u32(2), is_private: false };\n\n let mut public_inputs = PublicCircuitPublicInputs::empty();\n public_inputs.new_note_hashes[0] = NoteHash {\n value: 1,\n counter: 0,\n };\n\n let call_stack_item = PublicCallStackItem { contract_address, public_inputs, is_execution_request: true, function_data };\n\n // Value from public_call_stack_item.test.ts \"Computes a callstack item request hash\" test\n let test_data_call_stack_item_request_hash = 0x022a2b82af83606ae5a8d4955ef6215e54025193356318aefbde3b5026952953;\n assert_eq(call_stack_item.hash(), test_data_call_stack_item_request_hash);\n }\n\n #[test]\n fn compute_call_stack_item_hash() {\n let contract_address = AztecAddress::from_field(1);\n let function_data = FunctionData { selector: FunctionSelector::from_u32(2), is_private: false };\n\n let mut public_inputs = PublicCircuitPublicInputs::empty();\n public_inputs.new_note_hashes[0] = NoteHash {\n value: 1,\n counter: 0,\n };\n\n let call_stack_item = PublicCallStackItem { contract_address, public_inputs, is_execution_request: false, function_data };\n\n // Value from public_call_stack_item.test.ts \"Computes a callstack item hash\" test\n let test_data_call_stack_item_hash = 0x23a1d22e7bf37df7d68e8fcbfb7e016c060194b7915e3771e2dcd72cea26e427;\n assert_eq(call_stack_item.hash(), test_data_call_stack_item_hash);\n }\n}\n"},"171":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr","source":"use crate::{\n abis::{\n call_context::CallContext, max_block_number::MaxBlockNumber, gas_settings::GasSettings,\n validation_requests::KeyValidationRequestAndGenerator, note_hash::NoteHash, nullifier::Nullifier,\n private_call_request::PrivateCallRequest, read_request::ReadRequest,\n log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n constants::{\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL, PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH,\n GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS, MAX_ENCRYPTED_LOGS_PER_CALL,\n MAX_UNENCRYPTED_LOGS_PER_CALL, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL\n},\n header::Header, hash::pedersen_hash, messaging::l2_to_l1_message::L2ToL1Message,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader,\n transaction::tx_context::TxContext, utils::arrays::validate_array\n};\n\nstruct PrivateCircuitPublicInputsArrayLengths {\n note_hash_read_requests: u32,\n nullifier_read_requests: u32,\n key_validation_requests_and_generators: u32,\n new_note_hashes: u32,\n new_nullifiers: u32,\n new_l2_to_l1_msgs: u32,\n private_call_requests: u32,\n public_call_stack_hashes: u32,\n note_encrypted_logs_hashes: u32,\n encrypted_logs_hashes: u32,\n unencrypted_logs_hashes: u32,\n}\n\nimpl PrivateCircuitPublicInputsArrayLengths {\n pub fn new(public_inputs: PrivateCircuitPublicInputs) -> Self {\n PrivateCircuitPublicInputsArrayLengths {\n note_hash_read_requests: validate_array(public_inputs.note_hash_read_requests),\n nullifier_read_requests: validate_array(public_inputs.nullifier_read_requests),\n key_validation_requests_and_generators: validate_array(public_inputs.key_validation_requests_and_generators),\n new_note_hashes: validate_array(public_inputs.new_note_hashes),\n new_nullifiers: validate_array(public_inputs.new_nullifiers),\n new_l2_to_l1_msgs: validate_array(public_inputs.new_l2_to_l1_msgs),\n private_call_requests: validate_array(public_inputs.private_call_requests),\n public_call_stack_hashes: validate_array(public_inputs.public_call_stack_hashes),\n note_encrypted_logs_hashes: validate_array(public_inputs.note_encrypted_logs_hashes),\n encrypted_logs_hashes: validate_array(public_inputs.encrypted_logs_hashes),\n unencrypted_logs_hashes: validate_array(public_inputs.unencrypted_logs_hashes)\n }\n }\n}\n\nstruct PrivateCircuitPublicInputs {\n call_context: CallContext,\n\n args_hash: Field,\n returns_hash: Field,\n\n min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: [ReadRequest; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest; MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n key_validation_requests_and_generators: [KeyValidationRequestAndGenerator; MAX_KEY_VALIDATION_REQUESTS_PER_CALL],\n\n new_note_hashes: [NoteHash; MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier; MAX_NEW_NULLIFIERS_PER_CALL],\n private_call_requests: [PrivateCallRequest; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL],\n public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n public_teardown_function_hash: Field,\n new_l2_to_l1_msgs: [L2ToL1Message; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n\n start_side_effect_counter : u32,\n end_side_effect_counter : u32,\n note_encrypted_logs_hashes: [NoteLogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_CALL],\n encrypted_logs_hashes: [EncryptedLogHash; MAX_ENCRYPTED_LOGS_PER_CALL],\n unencrypted_logs_hashes: [LogHash; MAX_UNENCRYPTED_LOGS_PER_CALL],\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n // Note: The chain_id and version here are not redundant to the values in self.historical_header.global_variables because\n // they can be different in case of a protocol upgrade. In such a situation we could be using header from a block\n // before the upgrade took place but be using the updated protocol to execute and prove the transaction.\n tx_context: TxContext,\n}\n\nimpl Eq for PrivateCircuitPublicInputs {\n fn eq(self, other: Self) -> bool {\n self.call_context.eq(other.call_context) &\n self.args_hash.eq(other.args_hash) &\n (self.returns_hash == other.returns_hash) &\n (self.min_revertible_side_effect_counter == other.min_revertible_side_effect_counter) &\n (self.is_fee_payer == other.is_fee_payer) &\n (self.max_block_number == other.max_block_number) &\n (self.note_hash_read_requests == other.note_hash_read_requests) &\n (self.nullifier_read_requests == other.nullifier_read_requests) &\n (self.key_validation_requests_and_generators == other.key_validation_requests_and_generators) &\n (self.new_note_hashes == other.new_note_hashes) &\n (self.new_nullifiers == other.new_nullifiers) &\n (self.private_call_requests == other.private_call_requests) &\n (self.public_call_stack_hashes == other.public_call_stack_hashes) &\n (self.new_l2_to_l1_msgs == other.new_l2_to_l1_msgs) &\n (self.start_side_effect_counter == other.start_side_effect_counter) &\n (self.end_side_effect_counter == other.end_side_effect_counter) &\n (self.note_encrypted_logs_hashes == other.note_encrypted_logs_hashes) &\n (self.encrypted_logs_hashes == other.encrypted_logs_hashes) &\n (self.unencrypted_logs_hashes == other.unencrypted_logs_hashes) &\n self.historical_header.eq(other.historical_header) &\n self.tx_context.eq(other.tx_context)\n }\n}\n\nimpl Serialize<PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH> for PrivateCircuitPublicInputs {\n fn serialize(self) -> [Field; PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec<Field, PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH> = BoundedVec::new();\n fields.extend_from_array(self.call_context.serialize());\n fields.push(self.args_hash);\n fields.push(self.returns_hash);\n\n fields.push(self.min_revertible_side_effect_counter as Field);\n fields.push(if self.is_fee_payer { 1 } else { 0 } as Field);\n\n fields.extend_from_array(self.max_block_number.serialize());\n\n for i in 0..self.note_hash_read_requests.len() {\n fields.extend_from_array(self.note_hash_read_requests[i].serialize());\n }\n for i in 0..self.nullifier_read_requests.len() {\n fields.extend_from_array(self.nullifier_read_requests[i].serialize());\n }\n for i in 0..self.key_validation_requests_and_generators.len() {\n fields.extend_from_array(self.key_validation_requests_and_generators[i].serialize());\n }\n for i in 0..self.new_note_hashes.len() {\n fields.extend_from_array(self.new_note_hashes[i].serialize());\n }\n for i in 0..self.new_nullifiers.len() {\n fields.extend_from_array(self.new_nullifiers[i].serialize());\n }\n for i in 0..self.private_call_requests.len() {\n fields.extend_from_array(self.private_call_requests[i].serialize());\n }\n fields.extend_from_array(self.public_call_stack_hashes);\n fields.push(self.public_teardown_function_hash);\n for i in 0..self.new_l2_to_l1_msgs.len() {\n fields.extend_from_array(self.new_l2_to_l1_msgs[i].serialize());\n }\n fields.push(self.start_side_effect_counter as Field);\n fields.push(self.end_side_effect_counter as Field);\n for i in 0..self.note_encrypted_logs_hashes.len() {\n fields.extend_from_array(self.note_encrypted_logs_hashes[i].serialize());\n }\n for i in 0..self.encrypted_logs_hashes.len() {\n fields.extend_from_array(self.encrypted_logs_hashes[i].serialize());\n }\n for i in 0..self.unencrypted_logs_hashes.len() {\n fields.extend_from_array(self.unencrypted_logs_hashes[i].serialize());\n }\n fields.extend_from_array(self.historical_header.serialize());\n fields.extend_from_array(self.tx_context.serialize());\n\n assert_eq(fields.len(), PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize<PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH> for PrivateCircuitPublicInputs {\n fn deserialize(serialized: [Field; PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n let inputs = Self {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: reader.read(),\n min_revertible_side_effect_counter: reader.read() as u32,\n is_fee_payer: reader.read() == 1,\n max_block_number: reader.read_struct(MaxBlockNumber::deserialize),\n note_hash_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]),\n nullifier_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL]),\n key_validation_requests_and_generators: reader.read_struct_array(KeyValidationRequestAndGenerator::deserialize, [KeyValidationRequestAndGenerator::empty(); MAX_KEY_VALIDATION_REQUESTS_PER_CALL]),\n new_note_hashes: reader.read_struct_array(NoteHash::deserialize, [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL]),\n new_nullifiers: reader.read_struct_array(Nullifier::deserialize, [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL]),\n private_call_requests: reader.read_struct_array(PrivateCallRequest::deserialize, [PrivateCallRequest::empty(); MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n public_teardown_function_hash: reader.read(),\n new_l2_to_l1_msgs: reader.read_struct_array(L2ToL1Message::deserialize, [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL]),\n start_side_effect_counter: reader.read() as u32,\n end_side_effect_counter: reader.read() as u32,\n note_encrypted_logs_hashes: reader.read_struct_array(NoteLogHash::deserialize, [NoteLogHash::empty(); MAX_NOTE_ENCRYPTED_LOGS_PER_CALL]),\n encrypted_logs_hashes: reader.read_struct_array(EncryptedLogHash::deserialize, [EncryptedLogHash::empty(); MAX_ENCRYPTED_LOGS_PER_CALL]),\n unencrypted_logs_hashes: reader.read_struct_array(LogHash::deserialize, [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL]),\n historical_header: reader.read_struct(Header::deserialize),\n tx_context: reader.read_struct(TxContext::deserialize),\n };\n\n reader.finish();\n inputs\n }\n}\n\nimpl Hash for PrivateCircuitPublicInputs {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS)\n }\n}\n\nimpl Empty for PrivateCircuitPublicInputs {\n fn empty() -> Self {\n PrivateCircuitPublicInputs {\n call_context: CallContext::empty(),\n args_hash: 0,\n returns_hash: 0,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n key_validation_requests_and_generators: [KeyValidationRequestAndGenerator::empty(); MAX_KEY_VALIDATION_REQUESTS_PER_CALL],\n new_note_hashes: [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n private_call_requests: [PrivateCallRequest::empty(); MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter : 0 as u32,\n end_side_effect_counter : 0 as u32,\n note_encrypted_logs_hashes: [NoteLogHash::empty(); MAX_NOTE_ENCRYPTED_LOGS_PER_CALL],\n encrypted_logs_hashes: [EncryptedLogHash::empty(); MAX_ENCRYPTED_LOGS_PER_CALL],\n unencrypted_logs_hashes: [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n historical_header: Header::empty(),\n tx_context: TxContext::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let pcpi = PrivateCircuitPublicInputs::empty();\n let serialized = pcpi.serialize();\n let deserialized = PrivateCircuitPublicInputs::deserialize(serialized);\n assert(pcpi.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let inputs = PrivateCircuitPublicInputs::empty();\n let hash = inputs.hash();\n // Value from private_circuit_public_inputs.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x1eb5048b5bdcea5ba66519ecd1cbdb9e18fd957d52830b2bcb309f4ce9bcfbd3;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"173":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/global_variables.nr","source":"use crate::{\n address::{AztecAddress, EthAddress}, abis::gas_fees::GasFees,\n constants::{GENERATOR_INDEX__GLOBAL_VARIABLES, GLOBAL_VARIABLES_LENGTH},\n traits::{Deserialize, Empty, Hash, Serialize}, utils::reader::Reader\n};\n\n// docs:start:global-variables\nstruct GlobalVariables {\n chain_id : Field,\n version : Field,\n block_number : Field,\n timestamp : u64,\n coinbase : EthAddress,\n fee_recipient : AztecAddress,\n gas_fees : GasFees\n}\n// docs:end:global-variables\n\nimpl GlobalVariables {\n fn is_empty(self) -> bool {\n (self.chain_id == 0)\n & (self.version == 0)\n & (self.block_number == 0)\n & (self.timestamp == 0)\n & (self.coinbase.is_zero())\n & (self.fee_recipient.is_zero())\n & (self.gas_fees.is_empty())\n }\n}\n\nimpl Serialize<GLOBAL_VARIABLES_LENGTH> for GlobalVariables {\n fn serialize(self) -> [Field; GLOBAL_VARIABLES_LENGTH] {\n let mut serialized: BoundedVec<Field, GLOBAL_VARIABLES_LENGTH> = BoundedVec::new();\n\n serialized.push(self.chain_id);\n serialized.push(self.version);\n serialized.push(self.block_number);\n serialized.push(self.timestamp as Field);\n serialized.push(self.coinbase.to_field());\n serialized.push(self.fee_recipient.to_field());\n serialized.extend_from_array(self.gas_fees.serialize());\n\n serialized.storage\n }\n}\n\nimpl Deserialize<GLOBAL_VARIABLES_LENGTH> for GlobalVariables {\n fn deserialize(serialized: [Field; GLOBAL_VARIABLES_LENGTH]) -> GlobalVariables {\n let mut reader = Reader::new(serialized);\n GlobalVariables {\n chain_id: reader.read(),\n version: reader.read(),\n block_number: reader.read(),\n timestamp: reader.read() as u64,\n coinbase: EthAddress::from_field(reader.read()),\n fee_recipient: AztecAddress::from_field(reader.read()),\n gas_fees: reader.read_struct(GasFees::deserialize)\n }\n }\n}\n\nimpl Eq for GlobalVariables {\n fn eq(self, other : GlobalVariables) -> bool {\n (self.chain_id == other.chain_id) &\n (self.version == other.version) &\n (self.block_number == other.block_number) &\n (self.timestamp == other.timestamp) &\n (self.coinbase == other.coinbase) &\n (self.fee_recipient == other.fee_recipient) &\n (self.gas_fees == other.gas_fees) \n }\n}\n\nimpl Empty for GlobalVariables {\n fn empty() -> Self {\n Self {\n chain_id: 0,\n version: 0,\n block_number: 0,\n timestamp: 0,\n coinbase: EthAddress::empty(),\n fee_recipient: AztecAddress::empty(),\n gas_fees: GasFees::empty()\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let vars = GlobalVariables::empty();\n let _serialized = vars.serialize();\n let _deserialized = GlobalVariables::deserialize(_serialized);\n}\n"},"174":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/read_request.nr","source":"use crate::{\n abis::side_effect::{Ordered, Scoped}, traits::{Empty, Serialize, Deserialize},\n address::AztecAddress, constants::{READ_REQUEST_LENGTH, SCOPED_READ_REQUEST_LEN},\n utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct ReadRequest {\n value: Field,\n counter: u32,\n}\n\nimpl Ordered for ReadRequest {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for ReadRequest {\n fn eq(self, read_request: ReadRequest) -> bool {\n (self.value == read_request.value)\n & (self.counter == read_request.counter)\n }\n}\n\nimpl Empty for ReadRequest {\n fn empty() -> Self {\n ReadRequest {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Serialize<READ_REQUEST_LENGTH> for ReadRequest {\n fn serialize(self) -> [Field; READ_REQUEST_LENGTH] {\n [self.value, self.counter as Field]\n }\n}\n\nimpl Deserialize<READ_REQUEST_LENGTH> for ReadRequest {\n fn deserialize(values: [Field; READ_REQUEST_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n}\n\nimpl ReadRequest {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedReadRequest {\n ScopedReadRequest { read_request: self, contract_address }\n }\n}\n\nstruct ScopedReadRequest {\n read_request: ReadRequest,\n contract_address: AztecAddress,\n}\n\nimpl Scoped<ReadRequest> for ScopedReadRequest {\n fn inner(self) -> ReadRequest {\n self.read_request\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Eq for ScopedReadRequest {\n fn eq(self, other: ScopedReadRequest) -> bool {\n (self.read_request == other.read_request)\n & (self.contract_address.eq(other.contract_address))\n }\n}\n\nimpl Empty for ScopedReadRequest {\n fn empty() -> Self {\n ScopedReadRequest {\n read_request: ReadRequest::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize<SCOPED_READ_REQUEST_LEN> for ScopedReadRequest {\n fn serialize(self) -> [Field; SCOPED_READ_REQUEST_LEN] {\n array_concat(self.read_request.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize<SCOPED_READ_REQUEST_LEN> for ScopedReadRequest {\n fn deserialize(values: [Field; SCOPED_READ_REQUEST_LEN]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n read_request: reader.read_struct(ReadRequest::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nimpl ScopedReadRequest {\n pub fn value(self) -> Field {\n self.read_request.value\n }\n pub fn counter(self) -> u32 {\n self.read_request.counter\n }\n}\n\n#[test]\nfn serialization_of_empty_read() {\n let item = ReadRequest::empty();\n let serialized = item.serialize();\n let deserialized = ReadRequest::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped() {\n let item = ScopedReadRequest::empty();\n let serialized = item.serialize();\n let deserialized = ScopedReadRequest::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"177":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request_and_generator.nr","source":"use crate::{\n address::AztecAddress,\n abis::validation_requests::{\n key_validation_request::KeyValidationRequest,\n scoped_key_validation_request_and_generator::ScopedKeyValidationRequestAndGenerator\n},\n constants::KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH, traits::{Empty, Serialize, Deserialize},\n utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct KeyValidationRequestAndGenerator {\n request: KeyValidationRequest,\n sk_app_generator: Field,\n}\n\nimpl Eq for KeyValidationRequestAndGenerator {\n fn eq(self, other: KeyValidationRequestAndGenerator) -> bool {\n (self.request == other.request) & (self.sk_app_generator == other.sk_app_generator)\n }\n}\n\nimpl Empty for KeyValidationRequestAndGenerator {\n fn empty() -> Self {\n KeyValidationRequestAndGenerator {\n request: KeyValidationRequest::empty(),\n sk_app_generator: 0,\n }\n }\n}\n\nimpl Serialize<KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH> for KeyValidationRequestAndGenerator {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH] {\n array_concat(self.request.serialize(), [self.sk_app_generator])\n }\n}\n\nimpl Deserialize<KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH> for KeyValidationRequestAndGenerator {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH]) -> Self {\n let mut reader = Reader::new(fields);\n let res = Self {\n request: reader.read_struct(KeyValidationRequest::deserialize),\n sk_app_generator: reader.read(),\n };\n reader.finish();\n res\n }\n}\n\nimpl KeyValidationRequestAndGenerator {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedKeyValidationRequestAndGenerator {\n ScopedKeyValidationRequestAndGenerator { request: self, contract_address }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = KeyValidationRequestAndGenerator::empty();\n let serialized = item.serialize();\n let deserialized = KeyValidationRequestAndGenerator::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"178":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use crate::{\n constants::KEY_VALIDATION_REQUEST_LENGTH, traits::{Empty, Serialize, Deserialize},\n grumpkin_point::GrumpkinPoint\n};\n\nstruct KeyValidationRequest {\n pk_m: GrumpkinPoint,\n sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m))\n & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest {\n pk_m: GrumpkinPoint::zero(),\n sk_app: 0,\n }\n }\n}\n\nimpl Serialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [\n self.pk_m.x,\n self.pk_m.y,\n self.sk_app,\n ]\n }\n}\n\nimpl Deserialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self {\n pk_m: GrumpkinPoint::new(fields[0], fields[1]),\n sk_app: fields[2],\n }\n }\n}\n\n"},"182":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier.nr","source":"use crate::{\n abis::{side_effect::{Ordered, OrderedValue, Readable, Scoped}, read_request::ScopedReadRequest},\n address::AztecAddress, constants::{NULLIFIER_LENGTH, SCOPED_NULLIFIER_LENGTH},\n hash::compute_siloed_nullifier, traits::{Empty, Hash, Serialize, Deserialize},\n utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct Nullifier {\n value: Field,\n counter: u32,\n note_hash: Field,\n}\n\nimpl Ordered for Nullifier {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue<Field> for Nullifier {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for Nullifier {\n fn eq(self, other: Nullifier) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.note_hash == other.note_hash) \n }\n}\n\nimpl Empty for Nullifier {\n fn empty() -> Self {\n Nullifier {\n value: 0,\n counter: 0,\n note_hash: 0,\n }\n }\n}\n\nimpl Serialize<NULLIFIER_LENGTH> for Nullifier {\n fn serialize(self) -> [Field; NULLIFIER_LENGTH] {\n [self.value, self.counter as Field, self.note_hash]\n }\n}\n\nimpl Deserialize<NULLIFIER_LENGTH> for Nullifier {\n fn deserialize(values: [Field; NULLIFIER_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n note_hash: values[2],\n }\n }\n}\n\nimpl Readable for Nullifier {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n // Public kernels output Nullifier instead of ScopedNullifier.\n // The nullifier value has been siloed.\n let siloed_request_value = compute_siloed_nullifier(read_request.contract_address, read_request.value());\n assert_eq(self.value, siloed_request_value, \"Value of the nullifier does not match read request\");\n assert(\n read_request.counter() > self.counter, \"Read request counter must be greater than the counter of the nullifier\"\n );\n }\n}\n\nimpl Nullifier {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedNullifier {\n ScopedNullifier { nullifier: self, contract_address }\n }\n}\n\nstruct ScopedNullifier {\n nullifier: Nullifier,\n contract_address: AztecAddress,\n}\n\nimpl Scoped<Nullifier> for ScopedNullifier {\n fn inner(self) -> Nullifier {\n self.nullifier\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedNullifier {\n fn counter(self) -> u32 {\n self.nullifier.counter\n }\n}\n\nimpl OrderedValue<Field> for ScopedNullifier {\n fn value(self) -> Field {\n self.nullifier.value\n }\n fn counter(self) -> u32 {\n self.nullifier.counter\n }\n}\n\nimpl Eq for ScopedNullifier {\n fn eq(self, other: ScopedNullifier) -> bool {\n (self.nullifier == other.nullifier)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedNullifier {\n fn empty() -> Self {\n ScopedNullifier {\n nullifier: Nullifier::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize<SCOPED_NULLIFIER_LENGTH> for ScopedNullifier {\n fn serialize(self) -> [Field; SCOPED_NULLIFIER_LENGTH] {\n array_concat(self.nullifier.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize<SCOPED_NULLIFIER_LENGTH> for ScopedNullifier {\n fn deserialize(values: [Field; SCOPED_NULLIFIER_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n nullifier: reader.read_struct(Nullifier::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nimpl Readable for ScopedNullifier {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n assert_eq(self.nullifier.value, read_request.value(), \"Value of the nullifier does not match read request\");\n assert_eq(self.contract_address, read_request.contract_address, \"Contract address of the nullifier does not match read request\");\n assert(\n read_request.counter() > self.nullifier.counter, \"Read request counter must be greater than the counter of the nullifier\"\n );\n }\n}\n\nimpl ScopedNullifier {\n pub fn nullified_note_hash(self) -> Field {\n self.nullifier.note_hash\n }\n\n pub fn expose_to_public(self) -> Nullifier {\n // Hide the actual counter and note hash when exposing it to the public kernel.\n Nullifier { value: self.nullifier.value, counter: 0, note_hash: 0 }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = Nullifier::empty();\n let serialized = item.serialize();\n let deserialized = Nullifier::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped() {\n let item = ScopedNullifier::empty();\n let serialized = item.serialize();\n let deserialized = ScopedNullifier::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"191":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_selector.nr","source":"use crate::utils::field::field_from_bytes;\nuse crate::traits::{Serialize, Deserialize, FromField, ToField, Empty};\n\nglobal SELECTOR_SIZE = 4;\n\nstruct FunctionSelector {\n // 1st 4-bytes of abi-encoding of function.\n inner: u32,\n}\n\nimpl Eq for FunctionSelector {\n fn eq(self, function_selector: FunctionSelector) -> bool {\n function_selector.inner == self.inner\n }\n}\n\nimpl Serialize<1> for FunctionSelector {\n fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n}\n\nimpl Deserialize<1> for FunctionSelector {\n fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0] as u32\n }\n }\n}\n\nimpl FromField for FunctionSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for FunctionSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl FunctionSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature<N>(signature: str<N>) -> Self {\n let bytes = signature.as_bytes();\n let hash = std::hash::keccak256(bytes, bytes.len() as u32);\n\n let mut selector_be_bytes = [0; SELECTOR_SIZE];\n for i in 0..SELECTOR_SIZE {\n selector_be_bytes[i] = hash[i];\n }\n\n FunctionSelector::from_field(field_from_bytes(selector_be_bytes, true))\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n}\n"},"192":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_request.nr","source":"use crate::{\n abis::{caller_context::CallerContext, side_effect::{Ordered, RangeOrdered, Scoped}},\n address::AztecAddress, constants::{PRIVATE_CALL_REQUEST_LENGTH, SCOPED_PRIVATE_CALL_REQUEST_LENGTH},\n traits::{Empty, Serialize, Deserialize}, utils::reader::Reader\n};\n\nstruct PrivateCallRequest {\n hash: Field,\n caller_context: CallerContext,\n start_side_effect_counter: u32,\n end_side_effect_counter: u32,\n}\n\nimpl Ordered for PrivateCallRequest {\n fn counter(self) -> u32 {\n self.start_side_effect_counter\n }\n}\n\nimpl RangeOrdered for PrivateCallRequest {\n fn counter_start(self) -> u32 {\n self.start_side_effect_counter\n }\n fn counter_end(self) -> u32 {\n self.end_side_effect_counter\n }\n}\n\nimpl Eq for PrivateCallRequest {\n fn eq(self, other: PrivateCallRequest) -> bool {\n (self.hash == other.hash)\n & (self.caller_context == other.caller_context)\n & (self.start_side_effect_counter == other.start_side_effect_counter)\n & (self.end_side_effect_counter == other.end_side_effect_counter)\n }\n}\n\nimpl Empty for PrivateCallRequest {\n fn empty() -> Self {\n PrivateCallRequest {\n hash: 0,\n caller_context: CallerContext::empty(),\n start_side_effect_counter: 0,\n end_side_effect_counter: 0,\n }\n }\n}\n\nimpl Serialize<PRIVATE_CALL_REQUEST_LENGTH> for PrivateCallRequest {\n fn serialize(self) -> [Field; PRIVATE_CALL_REQUEST_LENGTH] {\n let mut fields: BoundedVec<Field, PRIVATE_CALL_REQUEST_LENGTH> = BoundedVec::new();\n\n fields.push(self.hash);\n fields.extend_from_array(self.caller_context.serialize());\n fields.push(self.start_side_effect_counter as Field);\n fields.push(self.end_side_effect_counter as Field);\n\n assert_eq(fields.len(), PRIVATE_CALL_REQUEST_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize<PRIVATE_CALL_REQUEST_LENGTH> for PrivateCallRequest {\n fn deserialize(fields: [Field; PRIVATE_CALL_REQUEST_LENGTH]) -> PrivateCallRequest {\n let mut reader = Reader::new(fields);\n let item = PrivateCallRequest {\n hash: reader.read(),\n caller_context: reader.read_struct(CallerContext::deserialize),\n start_side_effect_counter: reader.read_u32(),\n end_side_effect_counter: reader.read_u32(),\n };\n reader.finish();\n item\n }\n}\n\nimpl PrivateCallRequest {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedPrivateCallRequest {\n ScopedPrivateCallRequest { call_request: self, contract_address }\n }\n}\n\nstruct ScopedPrivateCallRequest {\n call_request: PrivateCallRequest,\n contract_address: AztecAddress,\n}\n\nimpl Scoped<PrivateCallRequest> for ScopedPrivateCallRequest {\n fn inner(self) -> PrivateCallRequest {\n self.call_request\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedPrivateCallRequest {\n fn counter(self) -> u32 {\n self.call_request.counter_start()\n }\n}\n\nimpl RangeOrdered for ScopedPrivateCallRequest {\n fn counter_start(self) -> u32 {\n self.call_request.counter_start()\n }\n fn counter_end(self) -> u32 {\n self.call_request.counter_end()\n }\n}\n\nimpl Eq for ScopedPrivateCallRequest {\n fn eq(self, other: ScopedPrivateCallRequest) -> bool {\n (self.call_request == other.call_request)\n & (self.contract_address == other.contract_address)\n }\n}\n\nimpl Empty for ScopedPrivateCallRequest {\n fn empty() -> Self {\n ScopedPrivateCallRequest {\n call_request: PrivateCallRequest::empty(),\n contract_address: AztecAddress::zero(),\n }\n }\n}\n\nimpl Serialize<SCOPED_PRIVATE_CALL_REQUEST_LENGTH> for ScopedPrivateCallRequest {\n fn serialize(self) -> [Field; SCOPED_PRIVATE_CALL_REQUEST_LENGTH] {\n let mut fields: BoundedVec<Field, SCOPED_PRIVATE_CALL_REQUEST_LENGTH> = BoundedVec::new();\n\n fields.extend_from_array(self.call_request.serialize());\n fields.extend_from_array(self.contract_address.serialize());\n\n assert_eq(fields.len(), SCOPED_PRIVATE_CALL_REQUEST_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize<SCOPED_PRIVATE_CALL_REQUEST_LENGTH> for ScopedPrivateCallRequest {\n fn deserialize(fields: [Field; SCOPED_PRIVATE_CALL_REQUEST_LENGTH]) -> ScopedPrivateCallRequest {\n let mut reader = Reader::new(fields);\n let item = ScopedPrivateCallRequest {\n call_request: reader.read_struct(PrivateCallRequest::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n item\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = ScopedPrivateCallRequest::empty();\n let serialized = item.serialize();\n let deserialized = ScopedPrivateCallRequest::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"197":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_settings.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress}, abis::gas::Gas,\n abis::gas_fees::GasFees,\n constants::{\n GAS_SETTINGS_LENGTH, DEFAULT_GAS_LIMIT, DEFAULT_TEARDOWN_GAS_LIMIT, DEFAULT_MAX_FEE_PER_GAS,\n DEFAULT_INCLUSION_FEE\n},\n hash::pedersen_hash, traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered,\n utils::reader::Reader\n};\n\nstruct GasSettings {\n gas_limits: Gas,\n teardown_gas_limits: Gas,\n max_fees_per_gas: GasFees,\n inclusion_fee: Field,\n}\n\nimpl GasSettings {\n pub fn new(\n gas_limits: Gas,\n teardown_gas_limits: Gas,\n max_fees_per_gas: GasFees,\n inclusion_fee: Field\n ) -> Self {\n Self { gas_limits, teardown_gas_limits, max_fees_per_gas, inclusion_fee }\n }\n\n pub fn default() -> Self {\n GasSettings::new(\n Gas::new(DEFAULT_GAS_LIMIT, DEFAULT_GAS_LIMIT),\n Gas::new(DEFAULT_TEARDOWN_GAS_LIMIT, DEFAULT_TEARDOWN_GAS_LIMIT),\n GasFees::new(DEFAULT_MAX_FEE_PER_GAS, DEFAULT_MAX_FEE_PER_GAS),\n DEFAULT_INCLUSION_FEE\n )\n }\n}\n\nimpl Eq for GasSettings {\n fn eq(self, other: Self) -> bool {\n (self.gas_limits == other.gas_limits) & (self.teardown_gas_limits == other.teardown_gas_limits) & (self.max_fees_per_gas == other.max_fees_per_gas) & (self.inclusion_fee == other.inclusion_fee)\n }\n}\n\nimpl Empty for GasSettings {\n fn empty() -> Self {\n GasSettings::new(\n Gas::empty(), Gas::empty(), GasFees::empty(), 0\n )\n }\n}\n\nimpl Serialize<GAS_SETTINGS_LENGTH> for GasSettings {\n fn serialize(self) -> [Field; GAS_SETTINGS_LENGTH] {\n let mut serialized: BoundedVec<Field, GAS_SETTINGS_LENGTH> = BoundedVec::new();\n\n serialized.extend_from_array(self.gas_limits.serialize());\n serialized.extend_from_array(self.teardown_gas_limits.serialize());\n serialized.extend_from_array(self.max_fees_per_gas.serialize());\n serialized.push(self.inclusion_fee);\n \n serialized.storage\n }\n}\n\nimpl Deserialize<GAS_SETTINGS_LENGTH> for GasSettings {\n fn deserialize(serialized: [Field; GAS_SETTINGS_LENGTH]) -> GasSettings {\n let mut reader = Reader::new(serialized);\n GasSettings::new(reader.read_struct(Gas::deserialize), reader.read_struct(Gas::deserialize), reader.read_struct(GasFees::deserialize), reader.read())\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = GasSettings::empty();\n let serialized = item.serialize();\n let deserialized = GasSettings::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"206":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr","source":"use crate::{\n abis::{function_data::FunctionData, private_circuit_public_inputs::PrivateCircuitPublicInputs},\n address::AztecAddress,\n constants::{GENERATOR_INDEX__CALL_STACK_ITEM, PRIVATE_CALL_STACK_ITEM_LENGTH}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader\n};\n\nstruct PrivateCallStackItem {\n // This is the _actual_ contract address relating to where this function's code resides in the\n // contract tree. Regardless of whether this is a call or delegatecall, this\n // `contract_address` _does not change_. Amongst other things, it's used as a lookup for\n // getting the correct code from the tree. There is a separate `storage_contract_address`\n // within a CallStackItem which varies depending on whether this is a call or delegatecall.\n contract_address: AztecAddress,\n function_data: FunctionData,\n public_inputs: PrivateCircuitPublicInputs,\n}\n\nimpl Eq for PrivateCallStackItem {\n fn eq(self, other: Self) -> bool {\n self.contract_address.eq(other.contract_address) &\n self.function_data.eq(other.function_data) &\n self.public_inputs.eq(other.public_inputs)\n }\n}\n\nimpl Serialize<PRIVATE_CALL_STACK_ITEM_LENGTH> for PrivateCallStackItem {\n fn serialize(self) -> [Field; PRIVATE_CALL_STACK_ITEM_LENGTH] {\n let mut fields: BoundedVec<Field, PRIVATE_CALL_STACK_ITEM_LENGTH> = BoundedVec::new();\n\n fields.push(self.contract_address.to_field());\n fields.extend_from_array(self.function_data.serialize());\n fields.extend_from_array(self.public_inputs.serialize());\n\n assert_eq(fields.len(), PRIVATE_CALL_STACK_ITEM_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize<PRIVATE_CALL_STACK_ITEM_LENGTH> for PrivateCallStackItem {\n fn deserialize(serialized: [Field; PRIVATE_CALL_STACK_ITEM_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n\n let item = Self {\n contract_address: reader.read_struct(AztecAddress::deserialize),\n function_data: reader.read_struct(FunctionData::deserialize),\n public_inputs: reader.read_struct(PrivateCircuitPublicInputs::deserialize),\n };\n\n reader.finish();\n item\n }\n}\n\nimpl Hash for PrivateCallStackItem {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__CALL_STACK_ITEM)\n }\n}\n\nimpl Empty for PrivateCallStackItem {\n fn empty() -> Self {\n PrivateCallStackItem {\n contract_address: AztecAddress::empty(),\n function_data: FunctionData::empty(),\n public_inputs: PrivateCircuitPublicInputs::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = PrivateCallStackItem::empty();\n let serialized = item.serialize();\n let deserialized = PrivateCallStackItem::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let mut item = PrivateCallStackItem::empty();\n item.function_data.is_private = true;\n let hash = item.hash();\n\n // Value from private_call_stack_item.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x157022d579f892f06461fb895cdf5550b24329e15e7a41df14f9dad582fa1bc5;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"207":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/caller_context.nr","source":"use crate::address::AztecAddress;\nuse crate::traits::{Empty, Serialize, Deserialize};\nuse crate::constants::CALLER_CONTEXT_LENGTH;\nuse crate::utils::reader::Reader;\n\nstruct CallerContext {\n msg_sender: AztecAddress,\n storage_contract_address: AztecAddress,\n is_static_call: bool,\n}\n\nimpl Eq for CallerContext {\n fn eq(self, other: CallerContext) -> bool {\n other.msg_sender.eq(self.msg_sender)\n & other.storage_contract_address.eq(self.storage_contract_address)\n & other.is_static_call == self.is_static_call\n }\n}\n\nimpl Empty for CallerContext {\n fn empty() -> Self {\n CallerContext {\n msg_sender: AztecAddress::zero(),\n storage_contract_address: AztecAddress::zero(),\n is_static_call: false,\n }\n }\n}\n\nimpl CallerContext {\n pub fn is_empty(self) -> bool {\n self.msg_sender.is_zero() & self.storage_contract_address.is_zero() & !self.is_static_call\n }\n\n // Different to an empty context, a hidden context won't reveal the caller's msg_sender and storage_contract_address,\n // but will still propagate the is_static_call flag.\n pub fn is_hidden(self) -> bool {\n self.msg_sender.is_zero() & self.storage_contract_address.is_zero()\n }\n}\n\nimpl Serialize<CALLER_CONTEXT_LENGTH> for CallerContext {\n fn serialize(self) -> [Field; CALLER_CONTEXT_LENGTH] {\n let mut fields: BoundedVec<Field, CALLER_CONTEXT_LENGTH> = BoundedVec::new();\n\n fields.extend_from_array(self.msg_sender.serialize());\n fields.extend_from_array(self.storage_contract_address.serialize());\n fields.push(self.is_static_call as Field);\n\n assert_eq(fields.len(), CALLER_CONTEXT_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize<CALLER_CONTEXT_LENGTH> for CallerContext {\n fn deserialize(fields: [Field; CALLER_CONTEXT_LENGTH]) -> CallerContext {\n let mut reader = Reader::new(fields);\n\n let item = CallerContext {\n msg_sender: reader.read_struct(AztecAddress::deserialize),\n storage_contract_address: reader.read_struct(AztecAddress::deserialize),\n is_static_call: reader.read_bool(),\n };\n reader.finish();\n item\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = CallerContext::empty();\n let serialized = item.serialize();\n let deserialized = CallerContext::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"209":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/log_hash.nr","source":"use crate::{\n abis::side_effect::{Ordered, OrderedValue, Scoped}, address::AztecAddress,\n constants::{\n LOG_HASH_LENGTH, NOTE_LOG_HASH_LENGTH, ENCRYPTED_LOG_HASH_LENGTH, SCOPED_LOG_HASH_LENGTH,\n SCOPED_ENCRYPTED_LOG_HASH_LENGTH\n},\n traits::{Empty, Serialize, Deserialize}, utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct LogHash {\n value: Field,\n counter: u32,\n length: Field,\n}\n\nimpl Ordered for LogHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue<Field> for LogHash {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for LogHash {\n fn eq(self, other: LogHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.length == other.length) \n }\n}\n\nimpl Empty for LogHash {\n fn empty() -> Self {\n LogHash {\n value: 0,\n counter: 0,\n length: 0,\n }\n }\n}\n\nimpl Serialize<LOG_HASH_LENGTH> for LogHash {\n fn serialize(self) -> [Field; LOG_HASH_LENGTH] {\n [self.value, self.counter as Field, self.length]\n }\n}\n\nimpl Deserialize<LOG_HASH_LENGTH> for LogHash {\n fn deserialize(values: [Field; LOG_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n length: values[2],\n }\n }\n}\n\nimpl LogHash {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedLogHash {\n ScopedLogHash { log_hash: self, contract_address }\n }\n}\n\nstruct ScopedLogHash {\n log_hash: LogHash,\n contract_address: AztecAddress,\n}\n\nimpl Scoped<LogHash> for ScopedLogHash {\n fn inner(self) -> LogHash {\n self.log_hash\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedLogHash {\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl OrderedValue<Field> for ScopedLogHash {\n fn value(self) -> Field {\n self.log_hash.value\n }\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl Eq for ScopedLogHash {\n fn eq(self, other: ScopedLogHash) -> bool {\n (self.log_hash == other.log_hash)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedLogHash {\n fn empty() -> Self {\n ScopedLogHash {\n log_hash: LogHash::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize<SCOPED_LOG_HASH_LENGTH> for ScopedLogHash {\n fn serialize(self) -> [Field; SCOPED_LOG_HASH_LENGTH] {\n array_concat(self.log_hash.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize<SCOPED_LOG_HASH_LENGTH> for ScopedLogHash {\n fn deserialize(values: [Field; SCOPED_LOG_HASH_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n log_hash: reader.read_struct(LogHash::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nimpl ScopedLogHash {\n pub fn expose_to_public(self) -> LogHash {\n // Hide the counter when exposing to public.\n // The log hash must already be siloed when we call this.\n LogHash { value: self.log_hash.value, counter: 0, length: self.log_hash.length }\n }\n}\n\nstruct EncryptedLogHash {\n value: Field,\n counter: u32,\n length: Field,\n randomness: Field,\n}\n\nimpl Ordered for EncryptedLogHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue<Field> for EncryptedLogHash {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for EncryptedLogHash {\n fn eq(self, other: EncryptedLogHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.length == other.length) \n & (self.randomness == other.randomness) \n }\n}\n\nimpl Empty for EncryptedLogHash {\n fn empty() -> Self {\n EncryptedLogHash {\n value: 0,\n counter: 0,\n length: 0,\n randomness: 0,\n }\n }\n}\n\nimpl Serialize<ENCRYPTED_LOG_HASH_LENGTH> for EncryptedLogHash {\n fn serialize(self) -> [Field; ENCRYPTED_LOG_HASH_LENGTH] {\n [self.value, self.counter as Field, self.length, self.randomness]\n }\n}\n\nimpl Deserialize<ENCRYPTED_LOG_HASH_LENGTH> for EncryptedLogHash {\n fn deserialize(values: [Field; ENCRYPTED_LOG_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n length: values[2],\n randomness: values[3],\n }\n }\n}\n\nimpl EncryptedLogHash {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedEncryptedLogHash {\n ScopedEncryptedLogHash { log_hash: self, contract_address }\n }\n}\n\nstruct ScopedEncryptedLogHash {\n log_hash: EncryptedLogHash,\n contract_address: AztecAddress,\n}\n\nimpl Scoped<EncryptedLogHash> for ScopedEncryptedLogHash {\n fn inner(self) -> EncryptedLogHash {\n self.log_hash\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl ScopedEncryptedLogHash {\n pub fn expose_to_public(self) -> LogHash {\n // Hide the secret randomness and counter when exposing to public\n // Expose as a LogHash rather than EncryptedLogHash to avoid bringing an unnec. 0 value around\n // The log hash will already be silo'd when we call this\n LogHash { value: self.log_hash.value, counter: 0, length: self.log_hash.length }\n }\n}\n\nimpl Ordered for ScopedEncryptedLogHash {\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl OrderedValue<Field> for ScopedEncryptedLogHash {\n fn value(self) -> Field {\n self.log_hash.value\n }\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl Eq for ScopedEncryptedLogHash {\n fn eq(self, other: ScopedEncryptedLogHash) -> bool {\n (self.log_hash == other.log_hash)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedEncryptedLogHash {\n fn empty() -> Self {\n ScopedEncryptedLogHash {\n log_hash: EncryptedLogHash::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize<SCOPED_ENCRYPTED_LOG_HASH_LENGTH> for ScopedEncryptedLogHash {\n fn serialize(self) -> [Field; SCOPED_ENCRYPTED_LOG_HASH_LENGTH] {\n array_concat(self.log_hash.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize<SCOPED_ENCRYPTED_LOG_HASH_LENGTH> for ScopedEncryptedLogHash {\n fn deserialize(values: [Field; SCOPED_ENCRYPTED_LOG_HASH_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n log_hash: reader.read_struct(EncryptedLogHash::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nstruct NoteLogHash {\n value: Field,\n counter: u32,\n length: Field,\n note_hash_counter: u32,\n}\n\nimpl NoteLogHash {\n pub fn expose_to_public(self) -> LogHash {\n // Hide the actual counter and note hash counter when exposing it to the public kernel.\n // The counter is usually note_hash.counter + 1, so it can be revealing.\n // Expose as a LogHash rather than NoteLogHash to avoid bringing an unnec. 0 value around\n LogHash { value: self.value, counter: 0, length: self.length }\n }\n}\n\nimpl Ordered for NoteLogHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue<Field> for NoteLogHash {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for NoteLogHash {\n fn eq(self, other: NoteLogHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.length == other.length) \n & (self.note_hash_counter == other.note_hash_counter) \n }\n}\n\nimpl Empty for NoteLogHash {\n fn empty() -> Self {\n NoteLogHash {\n value: 0,\n counter: 0,\n length: 0,\n note_hash_counter: 0,\n }\n }\n}\n\nimpl Serialize<NOTE_LOG_HASH_LENGTH> for NoteLogHash {\n fn serialize(self) -> [Field; NOTE_LOG_HASH_LENGTH] {\n [self.value, self.counter as Field, self.length, self.note_hash_counter as Field]\n }\n}\n\nimpl Deserialize<NOTE_LOG_HASH_LENGTH> for NoteLogHash {\n fn deserialize(values: [Field; NOTE_LOG_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n length: values[2],\n note_hash_counter: values[3] as u32,\n }\n }\n}\n"},"213":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/append_only_tree_snapshot.nr","source":"struct AppendOnlyTreeSnapshot {\n root : Field,\n // TODO(Alvaro) change this to a u64\n next_available_leaf_index : u32\n}\n\nglobal APPEND_ONLY_TREE_SNAPSHOT_LENGTH: u32 = 2;\n\nimpl AppendOnlyTreeSnapshot {\n pub fn serialize(self) -> [Field; APPEND_ONLY_TREE_SNAPSHOT_LENGTH] {\n [self.root, self.next_available_leaf_index as Field]\n }\n\n pub fn deserialize(serialized: [Field; APPEND_ONLY_TREE_SNAPSHOT_LENGTH]) -> AppendOnlyTreeSnapshot {\n AppendOnlyTreeSnapshot { root: serialized[0], next_available_leaf_index: serialized[1] as u32 }\n }\n\n pub fn zero() -> Self {\n Self { root: 0, next_available_leaf_index: 0 }\n }\n}\n\nimpl Eq for AppendOnlyTreeSnapshot {\n fn eq(self, other : AppendOnlyTreeSnapshot) -> bool {\n (self.root == other.root) & (self.next_available_leaf_index == other.next_available_leaf_index)\n }\n}\n"},"214":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/call_context.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::{CALL_CONTEXT_LENGTH, GENERATOR_INDEX__CALL_CONTEXT}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered,\n abis::{gas_settings::GasSettings, gas::Gas}, utils::reader::Reader\n};\n\n// docs:start:call-context\nstruct CallContext {\n msg_sender : AztecAddress,\n storage_contract_address : AztecAddress,\n function_selector : FunctionSelector,\n\n is_delegate_call : bool,\n is_static_call : bool,\n\n side_effect_counter : u32,\n}\n// docs:end:call-context\n\nimpl CallContext {\n fn assert_is_zero(self) {\n let serialized: [Field; CALL_CONTEXT_LENGTH] = self.serialize();\n\n for i in 0..CALL_CONTEXT_LENGTH {\n assert(serialized[i] == 0);\n }\n }\n}\n\nimpl Eq for CallContext {\n fn eq(self, other: CallContext) -> bool {\n self.serialize() == other.serialize()\n }\n}\n\nimpl Hash for CallContext {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__CALL_CONTEXT)\n }\n}\n\nimpl Serialize<CALL_CONTEXT_LENGTH> for CallContext {\n fn serialize(self) -> [Field; CALL_CONTEXT_LENGTH] {\n let mut serialized: BoundedVec<Field, CALL_CONTEXT_LENGTH> = BoundedVec::new();\n\n serialized.push(self.msg_sender.to_field());\n serialized.push(self.storage_contract_address.to_field());\n serialized.push(self.function_selector.to_field());\n serialized.push(self.is_delegate_call as Field);\n serialized.push(self.is_static_call as Field);\n serialized.push(self.side_effect_counter as Field);\n \n serialized.storage\n }\n}\n\nimpl Deserialize<CALL_CONTEXT_LENGTH> for CallContext {\n fn deserialize(serialized: [Field; CALL_CONTEXT_LENGTH]) -> CallContext {\n let mut reader = Reader::new(serialized);\n CallContext {\n msg_sender: AztecAddress::from_field(reader.read()),\n storage_contract_address: AztecAddress::from_field(reader.read()),\n function_selector: FunctionSelector::from_field(reader.read()),\n is_delegate_call: reader.read() as bool,\n is_static_call: reader.read() as bool,\n side_effect_counter: reader.read() as u32,\n }\n }\n}\n\nimpl Empty for CallContext {\n fn empty() -> Self {\n CallContext {\n msg_sender: AztecAddress::empty(),\n storage_contract_address: AztecAddress::empty(),\n function_selector: FunctionSelector::empty(),\n is_delegate_call: false,\n is_static_call: false,\n side_effect_counter: 0,\n }\n }\n}\n\n#[test]\nfn serialize_deserialize_of_empty() {\n let context = CallContext::empty();\n let serialized = context.serialize();\n let deserialized = CallContext::deserialize(serialized);\n assert(context.eq(deserialized));\n}\n\n#[test]\nfn assert_is_zero() {\n let context = CallContext::empty();\n context.assert_is_zero();\n}\n\n#[test(should_fail)]\nfn not_zero_assert_is_zero() {\n let mut context = CallContext::empty();\n context.is_delegate_call = true;\n context.assert_is_zero();\n}\n\n#[test]\nfn test_eq() {\n let mut context1 = CallContext::empty();\n let mut context2 = CallContext::empty();\n\n context1.is_delegate_call = true;\n context2.is_delegate_call = true;\n\n let address: AztecAddress = AztecAddress::from_field(69420);\n context1.msg_sender = address;\n context2.msg_sender = address;\n\n assert(context1.eq(context2));\n}\n\n#[test(should_fail)]\nfn not_eq_test_eq() {\n let mut context1 = CallContext::empty();\n let mut context2 = CallContext::empty();\n\n context1.is_delegate_call = true;\n context2.is_delegate_call = false;\n\n let address1: AztecAddress = AztecAddress::from_field(69420);\n let address2: AztecAddress = AztecAddress::from_field(42069);\n\n context1.msg_sender = address1;\n context2.msg_sender = address2;\n\n assert(context1.eq(context2));\n}\n\n#[test]\nfn hash_smoke() {\n let context = CallContext::empty();\n let _hashed = context.hash();\n}\n"},"215":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr","source":"use crate::{constants::MAX_BLOCK_NUMBER_LENGTH, traits::{Deserialize, Serialize, Empty}};\n\nstruct MaxBlockNumber {\n _opt: Option<u32>\n}\n\nimpl Empty for MaxBlockNumber {\n fn empty() -> Self {\n Self { _opt: Option::none() }\n }\n}\n\nimpl Eq for MaxBlockNumber {\n fn eq(self, other: Self) -> bool {\n self._opt == other._opt\n }\n}\n\nimpl Serialize<MAX_BLOCK_NUMBER_LENGTH> for MaxBlockNumber {\n fn serialize(self) -> [Field; MAX_BLOCK_NUMBER_LENGTH] {\n [self._opt._is_some as Field, self._opt._value as Field]\n }\n}\n\nimpl Deserialize<MAX_BLOCK_NUMBER_LENGTH> for MaxBlockNumber {\n fn deserialize(serialized: [Field; MAX_BLOCK_NUMBER_LENGTH]) -> MaxBlockNumber {\n MaxBlockNumber {\n _opt: Option {\n _is_some: serialized[0] as bool,\n _value: serialized[1] as u32,\n }\n }\n }\n}\n\nimpl MaxBlockNumber {\n pub fn new(max_block_number: u32) -> Self {\n Self { _opt: Option::some(max_block_number) }\n }\n\n pub fn is_none(self) -> bool {\n self._opt.is_none()\n }\n\n pub fn is_some(self) -> bool {\n self._opt.is_some()\n }\n\n pub fn unwrap(self) -> u32 {\n self._opt.unwrap()\n }\n\n pub fn unwrap_unchecked(self) -> u32 {\n self._opt.unwrap_unchecked()\n }\n\n pub fn min(lhs: MaxBlockNumber, rhs: MaxBlockNumber) -> MaxBlockNumber {\n if rhs.is_none() {\n lhs // lhs might also be none, but in that case both would be\n } else {\n MaxBlockNumber::min_with_u32(lhs, rhs.unwrap_unchecked())\n }\n }\n\n pub fn min_with_u32(lhs: MaxBlockNumber, rhs: u32) -> MaxBlockNumber {\n if lhs._opt.is_none() {\n MaxBlockNumber::new(rhs)\n } else {\n let lhs_value = lhs._opt.unwrap_unchecked();\n\n MaxBlockNumber::new(if lhs_value < rhs { lhs_value } else { rhs })\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = MaxBlockNumber::empty();\n let serialized = item.serialize();\n let deserialized = MaxBlockNumber::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn zeroed_is_none() {\n // Large parts of the kernel rely on zeroed to initialize structs. This conveniently matches what `default` does,\n // and though we should eventually move everything to use `default`, it's good to check for now that both are\n // equivalent.\n let a = MaxBlockNumber::empty();\n assert(a.is_none());\n}\n\n#[test]\nfn serde_default() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::deserialize(a.serialize());\n assert(b.is_none());\n}\n\n#[test]\nfn serde_some() {\n let a = MaxBlockNumber::new(13);\n let b = MaxBlockNumber::deserialize(a.serialize());\n assert_eq(b.unwrap(), 13);\n}\n\n#[test(should_fail)]\nfn default_unwrap_panics() {\n let a = MaxBlockNumber::empty();\n let _ = a.unwrap();\n}\n\n#[test]\nfn min_default_default() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::empty();\n\n assert(MaxBlockNumber::min(a, b).is_none());\n}\n\n#[test]\nfn min_default_some() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::new(13);\n\n assert_eq(MaxBlockNumber::min(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min(b, a).unwrap(), 13);\n}\n\n#[test]\nfn min_some_some() {\n let a = MaxBlockNumber::new(13);\n let b = MaxBlockNumber::new(42);\n\n assert_eq(MaxBlockNumber::min(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min(b, a).unwrap(), 13);\n}\n\n#[test]\nfn min_with_u32_default() {\n let a = MaxBlockNumber::empty();\n let b = 42;\n\n assert_eq(MaxBlockNumber::min_with_u32(a, b).unwrap(), 42);\n}\n\n#[test]\nfn min_with_u32_some() {\n let a = MaxBlockNumber::new(13);\n let b = 42;\n let c = 8;\n\n assert_eq(MaxBlockNumber::min_with_u32(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min_with_u32(a, c).unwrap(), 8);\n}\n"},"216":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_circuit_public_inputs.nr","source":"use crate::{\n abis::{\n call_context::CallContext, note_hash::NoteHash, nullifier::Nullifier, read_request::ReadRequest,\n gas::Gas, global_variables::GlobalVariables, log_hash::LogHash\n},\n address::AztecAddress,\n constants::{\n MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL, MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS,\n PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH, MAX_UNENCRYPTED_LOGS_PER_CALL\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n hash::pedersen_hash, header::Header, messaging::l2_to_l1_message::L2ToL1Message,\n traits::{Hash, Serialize, Deserialize, Empty}, utils::reader::Reader\n};\n\nstruct PublicCircuitPublicInputs {\n call_context: CallContext,\n\n args_hash: Field,\n returns_hash: Field,\n\n note_hash_read_requests: [ReadRequest; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest; MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest; MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n l1_to_l2_msg_read_requests: [ReadRequest; MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL],\n contract_storage_update_requests: [StorageUpdateRequest; MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead; MAX_PUBLIC_DATA_READS_PER_CALL],\n\n // todo: add sideeffect ranges for the input to these hashes\n public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_note_hashes: [NoteHash; MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier; MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n\n start_side_effect_counter: u32,\n end_side_effect_counter: u32,\n\n unencrypted_logs_hashes: [LogHash; MAX_UNENCRYPTED_LOGS_PER_CALL],\n\n // Header of a block whose state is used during public execution. Set by sequencer to be a header of a block\n // previous to the one in which the tx is included.\n historical_header: Header,\n\n // Global variables injected into this circuit\n global_variables: GlobalVariables,\n\n prover_address: AztecAddress,\n\n revert_code: u8,\n \n start_gas_left: Gas,\n end_gas_left: Gas,\n transaction_fee: Field,\n}\n\nimpl Eq for PublicCircuitPublicInputs {\n fn eq(self, other: Self) -> bool {\n self.serialize() == other.serialize()\n }\n}\n\nimpl Serialize<PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH> for PublicCircuitPublicInputs {\n fn serialize(self) -> [Field; PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec<Field, PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH> = BoundedVec::new();\n fields.extend_from_array(self.call_context.serialize());\n fields.push(self.args_hash);\n fields.push(self.returns_hash);\n for i in 0..MAX_NOTE_HASH_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.note_hash_read_requests[i].serialize());\n }\n for i in 0..MAX_NULLIFIER_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.nullifier_read_requests[i].serialize());\n }\n for i in 0..MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.nullifier_non_existent_read_requests[i].serialize());\n }\n for i in 0..MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.l1_to_l2_msg_read_requests[i].serialize());\n }\n for i in 0..MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL {\n fields.extend_from_array(self.contract_storage_update_requests[i].serialize());\n }\n for i in 0..MAX_PUBLIC_DATA_READS_PER_CALL {\n fields.extend_from_array(self.contract_storage_reads[i].serialize());\n }\n fields.extend_from_array(self.public_call_stack_hashes);\n\n for i in 0..MAX_NEW_NOTE_HASHES_PER_CALL {\n fields.extend_from_array(self.new_note_hashes[i].serialize());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL {\n fields.extend_from_array(self.new_nullifiers[i].serialize());\n }\n for i in 0..MAX_NEW_L2_TO_L1_MSGS_PER_CALL {\n fields.extend_from_array(self.new_l2_to_l1_msgs[i].serialize());\n }\n\n fields.push(self.start_side_effect_counter as Field);\n fields.push(self.end_side_effect_counter as Field);\n\n for i in 0..MAX_UNENCRYPTED_LOGS_PER_CALL{\n fields.extend_from_array(self.unencrypted_logs_hashes[i].serialize());\n }\n fields.extend_from_array(self.historical_header.serialize());\n fields.extend_from_array(self.global_variables.serialize());\n fields.push(self.prover_address.to_field());\n fields.push(self.revert_code as Field);\n fields.extend_from_array(self.start_gas_left.serialize());\n fields.extend_from_array(self.end_gas_left.serialize());\n fields.push(self.transaction_fee);\n fields.storage\n }\n}\n\nimpl Deserialize<PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH> for PublicCircuitPublicInputs {\n fn deserialize(serialized: [Field; PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n let inputs = PublicCircuitPublicInputs {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: reader.read(),\n note_hash_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]),\n nullifier_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL]),\n nullifier_non_existent_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL]),\n l1_to_l2_msg_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL]),\n contract_storage_update_requests: reader.read_struct_array(StorageUpdateRequest::deserialize, [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL]),\n contract_storage_reads: reader.read_struct_array(StorageRead::deserialize, [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n new_note_hashes: reader.read_struct_array(NoteHash::deserialize, [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL]),\n new_nullifiers: reader.read_struct_array(Nullifier::deserialize, [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL]),\n new_l2_to_l1_msgs: reader.read_struct_array(L2ToL1Message::deserialize, [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL]),\n start_side_effect_counter: reader.read() as u32,\n end_side_effect_counter: reader.read() as u32,\n unencrypted_logs_hashes: reader.read_struct_array(LogHash::deserialize, [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL]),\n historical_header: reader.read_struct(Header::deserialize),\n global_variables: reader.read_struct(GlobalVariables::deserialize),\n prover_address: reader.read_struct(AztecAddress::deserialize),\n revert_code: reader.read() as u8,\n start_gas_left: reader.read_struct(Gas::deserialize),\n end_gas_left: reader.read_struct(Gas::deserialize),\n transaction_fee: reader.read(),\n };\n\n reader.finish();\n inputs\n }\n}\n\nimpl Hash for PublicCircuitPublicInputs {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS)\n }\n}\n\nimpl Empty for PublicCircuitPublicInputs {\n fn empty() -> Self {\n PublicCircuitPublicInputs {\n call_context: CallContext::empty(),\n args_hash: 0,\n returns_hash: 0,\n note_hash_read_requests: [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n l1_to_l2_msg_read_requests: [ReadRequest::empty(); MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL],\n contract_storage_update_requests: [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_note_hashes: [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter: 0 as u32,\n end_side_effect_counter: 0 as u32,\n unencrypted_logs_hashes: [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n historical_header: Header::empty(),\n global_variables: GlobalVariables::empty(),\n prover_address: AztecAddress::zero(),\n revert_code: 0 as u8,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty(),\n transaction_fee: 0,\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let pcpi = PublicCircuitPublicInputs::empty();\n let serialized = pcpi.serialize();\n let deserialized = PublicCircuitPublicInputs::deserialize(serialized);\n assert(pcpi.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let inputs = PublicCircuitPublicInputs::empty();\n let hash = inputs.hash();\n\n // Value from public_circuit_public_inputs.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x2e08158f3f0d9a94e3f17338aadc3733a15bf5d163f94cef1afd8a47b446d789;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"218":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_data.nr","source":"use crate::{\n abis::function_selector::FunctionSelector,\n constants::{GENERATOR_INDEX__FUNCTION_DATA, FUNCTION_DATA_LENGTH}, hash::pedersen_hash,\n traits::{Serialize, Hash, Deserialize, Empty}\n};\n\nstruct FunctionData {\n selector : FunctionSelector,\n is_private : bool,\n}\n\nimpl Eq for FunctionData {\n fn eq(self, other: Self) -> bool {\n self.selector.eq(other.selector) &\n (self.is_private == other.is_private)\n }\n}\n\nimpl Serialize<FUNCTION_DATA_LENGTH> for FunctionData {\n // A field is ~256 bits\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3057): Since, function data can fit into a Field,\n // This method will simply return a bit packed Field instead of hashing\n fn serialize(self) -> [Field; FUNCTION_DATA_LENGTH] {\n [\n self.selector.to_field(),\n self.is_private as Field,\n ]\n }\n}\n\nimpl Deserialize<FUNCTION_DATA_LENGTH> for FunctionData {\n fn deserialize(serialized: [Field; FUNCTION_DATA_LENGTH]) -> Self {\n Self {\n selector: FunctionSelector::from_field(serialized[0]),\n is_private: serialized[1] as bool,\n }\n }\n}\n\nimpl Hash for FunctionData {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__FUNCTION_DATA)\n }\n}\n\nimpl Empty for FunctionData {\n fn empty() -> Self {\n FunctionData {\n selector: FunctionSelector::empty(),\n is_private: false\n }\n }\n\n}\n\n#[test]\nfn serialization_of_empty() {\n let data = FunctionData::empty();\n let serialized = data.serialize();\n let deserialized = FunctionData::deserialize(serialized);\n assert(data.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let data = FunctionData::empty();\n let hash = data.hash();\n\n // Value from function_data.test.ts \"computes empty function data hash\" test\n let test_data_empty_hash = 0x27b1d0839a5b23baf12a8d195b18ac288fcf401afb2f70b8a4b529ede5fa9fed;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"22":{"path":"std/field.nr","source":"mod bn254;\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n pub fn to_le_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_le_bits(bit_size)\n }\n\n pub fn to_be_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_be_bits(bit_size)\n }\n\n #[builtin(to_le_bits)]\n fn __to_le_bits(self, _bit_size: u32) -> [u1] {}\n\n #[builtin(to_be_bits)]\n fn __to_be_bits(self, bit_size: u32) -> [u1] {}\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n pub fn assert_max_bit_size(self: Self, bit_size: u32) {\n crate::assert_constant(bit_size);\n assert(bit_size < modulus_num_bits() as u32);\n self.__assert_max_bit_size(bit_size);\n }\n\n pub fn to_le_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_le_radix(256, byte_size)\n }\n\n pub fn to_be_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_be_radix(256, byte_size)\n }\n\n pub fn to_le_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_le_radix(radix, result_len)\n }\n\n pub fn to_be_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_be_radix(radix, result_len)\n }\n\n // decompose `_self` into a `_result_len` vector over the `_radix` basis\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix(self, radix: u32, result_len: u32) -> [u8] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix(self, radix: u32, result_len: u32) -> [u8] {}\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b = exponent.to_le_bits(32);\n\n for i in 1..33 {\n r *= r;\n r = (b[32-i] as Field) * (r * self) + (1 - b[32-i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x ∈ {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n}\n\n#[builtin(modulus_num_bits)]\npub fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub fn modulus_le_bytes() -> [u8] {}\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n let num_bytes = (modulus_num_bits() as u32 + 7) / 8;\n let x_bytes = x.to_le_bytes(num_bytes);\n let y_bytes = y.to_le_bytes(num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i] as u8;\n let y_byte = y_bytes[num_bytes - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\n"},"226":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/messaging/l2_to_l1_message.nr","source":"use crate::{\n address::{AztecAddress, EthAddress},\n constants::{L2_TO_L1_MESSAGE_LENGTH, SCOPED_L2_TO_L1_MESSAGE_LENGTH},\n abis::side_effect::{Ordered, Scoped}, traits::{Deserialize, Empty, Serialize},\n utils::{arrays::array_concat, reader::Reader}\n};\n\n// Note: Not to be confused with L2ToL1Msg in Solidity\nstruct L2ToL1Message {\n recipient: EthAddress,\n content: Field,\n counter: u32,\n}\n\nimpl Ordered for L2ToL1Message {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Empty for L2ToL1Message {\n fn empty() -> Self {\n Self {\n recipient: EthAddress::empty(),\n content: 0,\n counter: 0,\n }\n }\n}\n\nimpl Eq for L2ToL1Message {\n fn eq(self, other: Self) -> bool {\n (self.recipient == other.recipient) & (self.content == other.content) & (self.counter == other.counter)\n }\n}\n\nimpl Serialize<L2_TO_L1_MESSAGE_LENGTH> for L2ToL1Message {\n fn serialize(self) -> [Field; L2_TO_L1_MESSAGE_LENGTH] {\n [self.recipient.to_field(), self.content, self.counter as Field]\n }\n}\n\nimpl Deserialize<L2_TO_L1_MESSAGE_LENGTH> for L2ToL1Message {\n fn deserialize(values: [Field; L2_TO_L1_MESSAGE_LENGTH]) -> Self {\n Self {\n recipient: EthAddress::from_field(values[0]),\n content: values[1],\n counter: values[2] as u32,\n }\n }\n}\n\nimpl L2ToL1Message {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedL2ToL1Message {\n ScopedL2ToL1Message { message: self, contract_address }\n }\n}\n\nstruct ScopedL2ToL1Message {\n message: L2ToL1Message,\n contract_address: AztecAddress,\n}\n\nimpl Scoped<L2ToL1Message> for ScopedL2ToL1Message {\n fn inner(self) -> L2ToL1Message {\n self.message\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedL2ToL1Message {\n fn counter(self) -> u32 {\n self.message.counter\n }\n}\n\nimpl Eq for ScopedL2ToL1Message {\n fn eq(self, other: ScopedL2ToL1Message) -> bool {\n (self.message == other.message)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedL2ToL1Message {\n fn empty() -> Self {\n ScopedL2ToL1Message {\n message: L2ToL1Message::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize<SCOPED_L2_TO_L1_MESSAGE_LENGTH> for ScopedL2ToL1Message {\n fn serialize(self) -> [Field; SCOPED_L2_TO_L1_MESSAGE_LENGTH] {\n array_concat(self.message.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize<SCOPED_L2_TO_L1_MESSAGE_LENGTH> for ScopedL2ToL1Message {\n fn deserialize(values: [Field; SCOPED_L2_TO_L1_MESSAGE_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n message: reader.read_struct(L2ToL1Message::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\n#[test]\nfn serialization_of_empty_l2() {\n let item = L2ToL1Message::empty();\n let serialized = item.serialize();\n let deserialized = L2ToL1Message::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped_l2() {\n let item = ScopedL2ToL1Message::empty();\n let serialized = item.serialize();\n let deserialized = ScopedL2ToL1Message::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"237":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/content_commitment.nr","source":"use crate::{\n constants::CONTENT_COMMITMENT_LENGTH, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice\n};\n\nstruct ContentCommitment {\n num_txs: Field,\n txs_effects_hash: Field,\n in_hash: Field,\n out_hash: Field,\n}\n\nimpl Serialize<CONTENT_COMMITMENT_LENGTH> for ContentCommitment {\n fn serialize(self) -> [Field; CONTENT_COMMITMENT_LENGTH] {\n let mut fields: BoundedVec<Field, CONTENT_COMMITMENT_LENGTH> = BoundedVec::new();\n\n fields.push(self.num_txs);\n fields.push(self.txs_effects_hash);\n fields.push(self.in_hash);\n fields.push(self.out_hash);\n\n fields.storage\n }\n}\n\nimpl Deserialize<CONTENT_COMMITMENT_LENGTH> for ContentCommitment {\n fn deserialize(serialized: [Field; CONTENT_COMMITMENT_LENGTH]) -> Self {\n let num_txs = serialized[0];\n\n let txs_effects_hash = serialized[1];\n\n let in_hash = serialized[2];\n\n let out_hash = serialized[3];\n\n Self {\n num_txs,\n txs_effects_hash,\n in_hash,\n out_hash,\n }\n }\n}\n\nimpl Empty for ContentCommitment {\n fn empty() -> Self {\n Self {\n num_txs: 0,\n txs_effects_hash: 0,\n in_hash: 0,\n out_hash: 0,\n }\n }\n}\n\nimpl Eq for ContentCommitment {\n fn eq(self, other: Self) -> bool {\n (self.num_txs == other.num_txs)\n & (self.txs_effects_hash == other.txs_effects_hash)\n & (self.in_hash == other.in_hash)\n & (self.out_hash == other.out_hash)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let empty = ContentCommitment::empty();\n let serialized = empty.serialize();\n let deserialized = ContentCommitment::deserialize(serialized);\n\n assert(empty.eq(deserialized));\n}\n"},"239":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/header.nr","source":"use crate::{\n abis::{\n append_only_tree_snapshot::{AppendOnlyTreeSnapshot, APPEND_ONLY_TREE_SNAPSHOT_LENGTH},\n global_variables::{GlobalVariables, GLOBAL_VARIABLES_LENGTH}\n},\n constants::{GENERATOR_INDEX__BLOCK_HASH, HEADER_LENGTH, STATE_REFERENCE_LENGTH, CONTENT_COMMITMENT_LENGTH},\n hash::pedersen_hash, state_reference::StateReference, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice, content_commitment::ContentCommitment\n};\n\n// docs:start:header\nstruct Header {\n last_archive: AppendOnlyTreeSnapshot,\n content_commitment: ContentCommitment,\n state: StateReference,\n global_variables: GlobalVariables,\n total_fees: Field\n}\n// docs:end:header\n\nimpl Eq for Header {\n fn eq(self, other: Self) -> bool {\n self.last_archive.eq(other.last_archive) &\n self.content_commitment.eq(other.content_commitment) &\n self.state.eq(other.state) &\n self.global_variables.eq(other.global_variables) &\n self.total_fees.eq(other.total_fees)\n }\n}\n\nimpl Serialize<HEADER_LENGTH> for Header {\n fn serialize(self) -> [Field; HEADER_LENGTH] {\n let mut fields: BoundedVec<Field, HEADER_LENGTH> = BoundedVec::new();\n\n fields.extend_from_array(self.last_archive.serialize());\n fields.extend_from_array(self.content_commitment.serialize());\n fields.extend_from_array(self.state.serialize());\n fields.extend_from_array(self.global_variables.serialize());\n fields.push(self.total_fees);\n\n fields.storage\n }\n}\n\nimpl Deserialize<HEADER_LENGTH> for Header {\n fn deserialize(serialized: [Field; HEADER_LENGTH]) -> Self {\n let mut offset = 0;\n\n let last_archive_fields = arr_copy_slice(serialized, [0; APPEND_ONLY_TREE_SNAPSHOT_LENGTH], offset);\n offset = offset + APPEND_ONLY_TREE_SNAPSHOT_LENGTH;\n\n let content_commitment_fields = arr_copy_slice(serialized, [0; CONTENT_COMMITMENT_LENGTH], offset);\n offset = offset + CONTENT_COMMITMENT_LENGTH;\n\n let state_fields = arr_copy_slice(serialized, [0; STATE_REFERENCE_LENGTH], offset);\n offset = offset + STATE_REFERENCE_LENGTH;\n\n let global_variables_fields = arr_copy_slice(serialized, [0; GLOBAL_VARIABLES_LENGTH], offset);\n offset = offset + GLOBAL_VARIABLES_LENGTH;\n\n let total_fees = serialized[offset];\n\n Header {\n last_archive: AppendOnlyTreeSnapshot::deserialize(last_archive_fields),\n content_commitment: ContentCommitment::deserialize(content_commitment_fields),\n state: StateReference::deserialize(state_fields),\n global_variables: GlobalVariables::deserialize(global_variables_fields),\n total_fees\n }\n }\n}\n\nimpl Empty for Header {\n fn empty() -> Self {\n Self {\n last_archive: AppendOnlyTreeSnapshot::zero(),\n content_commitment: ContentCommitment::empty(),\n state: StateReference::empty(),\n global_variables: GlobalVariables::empty(),\n total_fees: 0\n }\n }\n}\n\nimpl Hash for Header {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__BLOCK_HASH)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let header = Header::empty();\n let serialized = header.serialize();\n let deserialized = Header::deserialize(serialized);\n assert(header.eq(deserialized));\n}\n\n#[test]\nfn hash_smoke() {\n let header = Header::empty();\n let _hashed = header.hash();\n}\n\n#[test]\nfn empty_hash_is_zero() {\n let header = Header::empty();\n let hash = header.hash();\n\n // Value from new_contract_data.test.ts \"computes empty hash\" test\n let test_data_empty_hash = 0x124e8c40a6eca2e3ad10c04050b01a3fad00df3cea47b13592c7571b6914c7a7;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"240":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr","source":"use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector, log_hash::{LogHash, ScopedLogHash, ScopedEncryptedLogHash},\n note_hash::ScopedNoteHash, nullifier::ScopedNullifier\n},\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n MAX_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX\n},\n merkle_tree::root::root_from_sibling_path, messaging::l2_to_l1_message::ScopedL2ToL1Message,\n recursion::verification_key::VerificationKey, traits::is_empty,\n utils::field::field_from_bytes_32_trunc\n};\nuse std::hash::{pedersen_hash_with_separator, sha256};\n\npub fn sha256_to_field<N>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\nfn compute_note_hash_nonce(tx_hash: Field, note_index_in_tx: u32) -> Field {\n // Hashing tx hash with note index in tx is guaranteed to be unique\n pedersen_hash(\n [\n tx_hash,\n note_index_in_tx as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, inner_note_hash: Field) -> Field {\n let inputs = [nonce, inner_note_hash];\n pedersen_hash(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, unique_note_hash: Field) -> Field {\n pedersen_hash(\n [\n app.to_field(),\n unique_note_hash\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\npub fn silo_note_hash(note_hash: ScopedNoteHash, tx_hash: Field, note_index_in_tx: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(tx_hash, note_index_in_tx);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n pedersen_hash(\n [\n app.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn compute_siloed_encrypted_log_hash(address: AztecAddress, randomness: Field, log_hash: Field) -> Field {\n // TODO: Using 0 GENERATOR_INDEX here as interim before we move to posiedon\n // NB: A unique separator will be needed for masked_contract_address\n let mut masked_contract_address = pedersen_hash([address.to_field(), randomness], 0);\n if randomness == 0 {\n // In some cases, we actually want to reveal the contract address we are siloing with:\n // e.g. 'handshaking' contract w/ known address\n // An app providing randomness = 0 signals to not mask the address.\n masked_contract_address = address.to_field();\n }\n accumulate_sha256([masked_contract_address, log_hash])\n}\n\npub fn silo_encrypted_log_hash(log_hash: ScopedEncryptedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_encrypted_log_hash(\n log_hash.contract_address,\n log_hash.log_hash.randomness,\n log_hash.log_hash.value\n )\n }\n}\n\npub fn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n pedersen_hash([left, right], 0)\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs = [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes = inputs[i].to_be_bytes(32);\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\npub fn silo_l2_to_l1_message(msg: ScopedL2ToL1Message, rollup_version_id: Field, chain_id: Field) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually \n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field \n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes = input[offset].to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\n// NB: this assumes MAX_ENCRYPTED_LOGS_PER_TX == MAX_UNENCRYPTED_LOGS_PER_TX\n// to avoid doubling code, since we can't define the byte len to be 32*N directly. \npub fn compute_tx_logs_hash(logs: [LogHash; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn compute_tx_note_logs_hash(logs: [LogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_NOTE_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn pedersen_hash<N>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<N>(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), EthAddress::from_field(3), 5, 2, 4);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n"},"241":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/partial_state_reference.nr","source":"use crate::{\n abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot, constants::PARTIAL_STATE_REFERENCE_LENGTH,\n traits::{Deserialize, Empty, Serialize}\n};\n\nstruct PartialStateReference {\n note_hash_tree: AppendOnlyTreeSnapshot,\n nullifier_tree: AppendOnlyTreeSnapshot,\n public_data_tree: AppendOnlyTreeSnapshot,\n}\n\nimpl Eq for PartialStateReference {\n fn eq(self, other: PartialStateReference) -> bool {\n self.note_hash_tree.eq(other.note_hash_tree) &\n self.nullifier_tree.eq(other.nullifier_tree) &\n self.public_data_tree.eq(other.public_data_tree)\n }\n}\n\nimpl Serialize<PARTIAL_STATE_REFERENCE_LENGTH> for PartialStateReference {\n fn serialize(self) -> [Field; PARTIAL_STATE_REFERENCE_LENGTH] {\n let serialized_note_hash_tree = self.note_hash_tree.serialize();\n let serialized_nullifier_tree = self.nullifier_tree.serialize();\n let serialized_public_data_tree = self.public_data_tree.serialize();\n\n [\n serialized_note_hash_tree[0], \n serialized_note_hash_tree[1],\n serialized_nullifier_tree[0],\n serialized_nullifier_tree[1],\n serialized_public_data_tree[0],\n serialized_public_data_tree[1],\n ]\n }\n}\n\nimpl Deserialize<PARTIAL_STATE_REFERENCE_LENGTH> for PartialStateReference {\n fn deserialize(serialized: [Field; PARTIAL_STATE_REFERENCE_LENGTH]) -> PartialStateReference {\n PartialStateReference {\n note_hash_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[0], serialized[1]]\n ),\n nullifier_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[2], serialized[3]]\n ),\n public_data_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[4], serialized[5]]\n ),\n }\n }\n}\n\nimpl Empty for PartialStateReference {\n fn empty() -> Self {\n Self {\n note_hash_tree: AppendOnlyTreeSnapshot::zero(),\n nullifier_tree: AppendOnlyTreeSnapshot::zero(),\n public_data_tree: AppendOnlyTreeSnapshot::zero(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let partial = PartialStateReference::empty();\n let _serialized = partial.serialize();\n let _deserialized = PartialStateReference::deserialize(_serialized);\n}\n"},"243":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/transaction/tx_context.nr","source":"use crate::{\n constants::{GENERATOR_INDEX__TX_CONTEXT, TX_CONTEXT_LENGTH}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader,\n abis::gas_settings::GasSettings\n};\n\n// docs:start:tx-context\nstruct TxContext {\n chain_id : Field,\n version : Field,\n gas_settings: GasSettings,\n}\n// docs:end:tx-context\n\nimpl TxContext {\n pub fn new(chain_id: Field, version: Field, gas_settings: GasSettings) -> Self {\n TxContext { chain_id, version, gas_settings }\n }\n}\n\nimpl Eq for TxContext {\n fn eq(self, other: Self) -> bool {\n (self.chain_id == other.chain_id) &\n (self.version == other.version) &\n (self.gas_settings.eq(other.gas_settings))\n }\n}\n\nimpl Empty for TxContext {\n fn empty() -> Self {\n TxContext {\n chain_id: 0,\n version: 0,\n gas_settings: GasSettings::empty(),\n }\n }\n}\n\nimpl Serialize<TX_CONTEXT_LENGTH> for TxContext {\n fn serialize(self) -> [Field; TX_CONTEXT_LENGTH] {\n let mut fields: BoundedVec<Field, TX_CONTEXT_LENGTH> = BoundedVec::new();\n\n fields.push(self.chain_id);\n fields.push(self.version);\n fields.extend_from_array(self.gas_settings.serialize());\n\n assert_eq(fields.len(), TX_CONTEXT_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize<TX_CONTEXT_LENGTH> for TxContext {\n fn deserialize(serialized: [Field; TX_CONTEXT_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n\n let context = Self {\n chain_id: reader.read(),\n version: reader.read(),\n gas_settings: reader.read_struct(GasSettings::deserialize),\n };\n\n reader.finish();\n context\n }\n}\n\nimpl Hash for TxContext {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__TX_CONTEXT)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let context = TxContext::empty();\n let serialized = context.serialize();\n let deserialized = TxContext::deserialize(serialized);\n assert(context.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let context = TxContext::empty();\n let hash = context.hash();\n\n // Value from tx_context.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x17e4357684c5a4349b4587c95b0b6161dcb4a3c5b02d4eb2ecc3b02c80193261;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"247":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/state_reference.nr","source":"use crate::{\n abis::append_only_tree_snapshot::{AppendOnlyTreeSnapshot, APPEND_ONLY_TREE_SNAPSHOT_LENGTH},\n constants::{PARTIAL_STATE_REFERENCE_LENGTH, STATE_REFERENCE_LENGTH},\n partial_state_reference::PartialStateReference, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice\n};\n\nstruct StateReference {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot,\n partial: PartialStateReference,\n}\n\nimpl Eq for StateReference {\n fn eq(self, other: StateReference) -> bool {\n self.l1_to_l2_message_tree.eq(other.l1_to_l2_message_tree) &\n self.partial.eq(other.partial)\n }\n}\n\nimpl Serialize<STATE_REFERENCE_LENGTH> for StateReference {\n fn serialize(self) -> [Field; STATE_REFERENCE_LENGTH] {\n let mut fields: BoundedVec<Field, STATE_REFERENCE_LENGTH> = BoundedVec::new();\n\n fields.extend_from_array(self.l1_to_l2_message_tree.serialize());\n fields.extend_from_array(self.partial.serialize());\n\n fields.storage\n }\n}\n\nimpl Deserialize<STATE_REFERENCE_LENGTH> for StateReference {\n fn deserialize(serialized: [Field; STATE_REFERENCE_LENGTH]) -> StateReference {\n let mut offset = 0;\n\n let l1_to_l2_message_tree_fields = arr_copy_slice(serialized, [0; APPEND_ONLY_TREE_SNAPSHOT_LENGTH], offset);\n offset = offset + APPEND_ONLY_TREE_SNAPSHOT_LENGTH;\n\n let partial_fields = arr_copy_slice(serialized, [0; PARTIAL_STATE_REFERENCE_LENGTH], offset);\n\n StateReference {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot::deserialize(l1_to_l2_message_tree_fields),\n partial: PartialStateReference::deserialize(partial_fields),\n }\n }\n}\n\nimpl Empty for StateReference {\n fn empty() -> Self {\n Self {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot::zero(),\n partial: PartialStateReference::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let state = StateReference::empty();\n let _serialized = state.serialize();\n let _deserialized = StateReference::deserialize(_serialized);\n}\n"},"261":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"struct Reader<N> {\n data: [Field; N],\n offset: u32,\n}\n\nimpl<N> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array<K>(&mut self, mut result: [Field; K]) -> [Field; K] {\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n // TODO(#4394)\n pub fn read_struct<T, K>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array<T, K, C>(&mut self, deserialise: fn([Field; K]) -> T, mut result: [T; C]) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n"},"273":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/mod.nr","source":"// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate { lhs } else { rhs }\n}\n\npub fn arr_copy_slice<T, N, M>(src: [T; N], mut dst: [T; M], offset: u32) -> [T; M] {\n let iterator_len = if N > M { M } else { N };\n for i in 0..iterator_len {\n dst[i] = src[i + offset];\n }\n dst\n}\n"},"286":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/eth_address.nr","source":"use crate::{\n constants::ETH_ADDRESS_LENGTH, hash::pedersen_hash,\n traits::{Empty, ToField, Serialize, Deserialize}, utils\n};\n\nstruct EthAddress{\n inner : Field\n}\n\nimpl Eq for EthAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for EthAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for EthAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl Serialize<ETH_ADDRESS_LENGTH> for EthAddress {\n fn serialize(self: Self) -> [Field; ETH_ADDRESS_LENGTH] {\n [self.inner]\n }\n}\n\nimpl Deserialize<ETH_ADDRESS_LENGTH> for EthAddress {\n fn deserialize(fields: [Field; ETH_ADDRESS_LENGTH]) -> Self {\n EthAddress::from_field(fields[0])\n }\n}\n\nimpl EthAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn from_field(field: Field) -> Self {\n field.assert_max_bit_size(160);\n Self { inner: field }\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n"},"287":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n crate::address::{eth_address::EthAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n contract_class_id::ContractClassId, hash::poseidon2_hash, grumpkin_point::GrumpkinPoint,\n traits::{Empty, FromField, ToField, Serialize, Deserialize}, utils\n};\n\n// Aztec address\nstruct AztecAddress {\n inner : Field\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n poseidon2_hash([pub_keys_hash.to_field(), partial_address.to_field(), GENERATOR_INDEX__CONTRACT_ADDRESS_V1])\n )\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys_hash() {\n let pub_keys_hash = PublicKeysHash::from_field(1);\n let partial_address = PartialAddress::from_field(2);\n\n let address = AztecAddress::compute(pub_keys_hash, partial_address);\n let expected_computed_address_from_partial_and_pubkey = 0x1b6ead051e7b42665064ca6cf1ec77da0a36d86e00d1ff6e44077966c0c3a9fa;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n"},"395":{"path":"/usr/src/noir-projects/noir-contracts/contracts/multi_call_entrypoint_contract/src/main.nr","source":"// An entrypoint contract that allows everything to go through. Only used for testing\n// Pair this with SignerlessWallet to perform multiple actions before any account contracts are deployed (and without authentication)\ncontract MultiCallEntrypoint {\n use dep::std;\n\n use dep::aztec::prelude::AztecAddress;\n use dep::authwit::entrypoint::app::AppPayload;\n\n #[aztec(private)]\n fn entrypoint(app_payload: AppPayload) {\n app_payload.execute_calls(&mut context);\n }\n}\n"},"4":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\nstruct BoundedVec<T, let MaxLen: u32> {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl<T, let MaxLen: u32> BoundedVec<T, MaxLen> {\n pub fn new() -> Self {\n let zeroed = crate::unsafe::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Get an element from the vector at the given index.\n /// Panics if the given index points beyond the end of the vector (`self.len()`).\n pub fn get(self, index: u32) -> T {\n assert(index < self.len);\n self.get_unchecked(index)\n }\n\n /// Get an element from the vector at the given index.\n /// Responds with undefined data for `index` where `self.len < index < self.max_len()`.\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Write an element to the vector at the given index.\n /// Panics if the given index points beyond the end of the vector (`self.len()`).\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Write an element to the vector at the given index.\n /// Does not check whether the passed `index` is a valid index within the vector.\n ///\n /// Silently writes past the end of the vector for `index` where `self.len < index < self.max_len()`\n /// Panics if the given index points beyond the maximum length of the vector (`self.max_len()`).\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n pub fn len(self) -> u32 {\n self.len\n }\n\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u32 {\n MaxLen\n }\n\n // This is a intermediate method, while we don't have an\n // .extend method\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n pub fn extend_from_array<let Len: u32>(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_bounded_vec<let Len: u32>(&mut self, vec: BoundedVec<T, Len>) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n pub fn from_array<let Len: u32>(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec<T, MaxLen> = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::unsafe::zeroed();\n elem\n }\n\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> BoundedVec<U, MaxLen> {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n ret\n }\n}\n\nimpl<T, let MaxLen: u32> Eq for BoundedVec<T, MaxLen> where T: Eq {\n fn eq(self, other: BoundedVec<T, MaxLen>) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n \n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nimpl<T, let MaxLen: u32, let Len: u32> From<[T; Len]> for BoundedVec<T, MaxLen> {\n fn from(array: [T; Len]) -> BoundedVec<T, MaxLen> {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n // TODO: Allow imports from \"super\"\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec<Field, 5> = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec<Field, 4> = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.storage()[2], 0);\n }\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with=\"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec<Field, 2> = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n}\n"},"55":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::pedersen_hash, traits::{Hash, Serialize}};\n\nuse crate::entrypoint::function_call::{FunctionCall, FUNCTION_CALL_SIZE_IN_BYTES};\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u64 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u64 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u64 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\nstruct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize<APP_PAYLOAD_SIZE> for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, APP_PAYLOAD_SIZE> = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n pedersen_hash(\n self.serialize(),\n GENERATOR_INDEX__SIGNATURE_PAYLOAD\n )\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, APP_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_slice(self.nonce.to_be_bytes(32));\n\n bytes.storage\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"},"93":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr","source":"use crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n messaging::process_l1_to_l2_message, hash::{hash_args_array, ArgsHasher},\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX, NUM_KEY_TYPES, sk_generators},\n oracle::{\n key_validation_request::get_key_validation_request, arguments, returns::pack_returns,\n call_private_function::call_private_function_internal, header::get_header_at,\n logs::{emit_encrypted_note_log, emit_encrypted_event_log},\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, set_public_teardown_function_call_internal,\n parse_public_call_stack_item_from_oracle\n}\n}\n};\nuse dep::protocol_types::{\n abis::{\n caller_context::CallerContext, function_selector::FunctionSelector,\n max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem, read_request::ReadRequest, note_hash::NoteHash,\n nullifier::Nullifier, log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_ENCRYPTED_LOGS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n MAX_NOTE_ENCRYPTED_LOGS_PER_CALL\n},\n header::Header, messaging::l2_to_l1_message::L2ToL1Message, utils::reader::Reader, traits::Empty\n};\n\n// When finished, one can call .finish() to convert back to the abi\nstruct PrivateContext {\n // docs:start:private-context\n inputs: PrivateContextInputs,\n side_effect_counter: u32,\n\n min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n args_hash: Field,\n return_hash: Field,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: BoundedVec<ReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n key_validation_requests_and_generators: BoundedVec<KeyValidationRequestAndGenerator, MAX_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n new_note_hashes: BoundedVec<NoteHash, MAX_NEW_NOTE_HASHES_PER_CALL>,\n new_nullifiers: BoundedVec<Nullifier, MAX_NEW_NULLIFIERS_PER_CALL>,\n\n private_call_requests : BoundedVec<PrivateCallRequest, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_stack_hashes : BoundedVec<Field, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n public_teardown_function_hash: Field,\n new_l2_to_l1_msgs : BoundedVec<L2ToL1Message, MAX_NEW_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n note_encrypted_logs_hashes: BoundedVec<NoteLogHash, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL>,\n encrypted_logs_hashes: BoundedVec<EncryptedLogHash, MAX_ENCRYPTED_LOGS_PER_CALL>,\n unencrypted_logs_hashes: BoundedVec<LogHash, MAX_UNENCRYPTED_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n last_key_validation_requests: [Option<KeyValidationRequest>; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs: BoundedVec::new(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n\n fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n fn push_new_note_hash(&mut self, note_hash: Field) {\n self.new_note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n // TODO(#7112): This function is called with non-zero note hash only in 1 of 25 cases in aztec-packages repo\n // - consider creating a separate function with 1 arg for the zero note hash case.\n fn push_new_nullifier(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.new_nullifiers.push(Nullifier { value: nullifier, note_hash: nullified_note_hash, counter: self.next_counter() });\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage,\n nullifier_read_requests: self.nullifier_read_requests.storage,\n key_validation_requests_and_generators: self.key_validation_requests_and_generators.storage,\n new_note_hashes: self.new_note_hashes.storage,\n new_nullifiers: self.new_nullifiers.storage,\n private_call_requests: self.private_call_requests.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n public_teardown_function_hash: self.public_teardown_function_hash,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n note_encrypted_logs_hashes: self.note_encrypted_logs_hashes.storage,\n encrypted_logs_hashes: self.encrypted_logs_hashes.storage,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\"Setting {0} as fee payer\", [self.this_address().to_field()]);\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number = MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request = self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one \n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale. We fetch new values from oracle and instruct\n // protocol circuits to validate them by storing the validation request in context.\n let request = get_key_validation_request(pk_m_hash, key_index);\n let request_and_generator = KeyValidationRequestAndGenerator { request, sk_app_generator: sk_generators[key_index] };\n // We constrain that the pk_m_hash matches the one in the request (otherwise we could get an arbitrary\n // valid key request and not the one corresponding to pk_m_hash).\n assert(request.pk_m.hash() == pk_m_hash);\n self.key_validation_requests_and_generators.push(request_and_generator);\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content, counter: self.next_counter() };\n self.new_l2_to_l1_msgs.push(message);\n }\n\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(&mut self, content: Field, secret: Field, sender: EthAddress) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0)\n }\n // docs:end:consume_l1_to_l2_message\n\n // NB: A randomness value of 0 signals that the kernels should not mask the contract address\n // used in siloing later on e.g. 'handshaking' contract w/ known address.\n pub fn emit_raw_event_log_with_masked_address<M>(&mut self, randomness: Field, log: [u8; M], log_hash: Field) {\n let counter = self.next_counter();\n let contract_address = self.this_address();\n let len = log.len() as Field + 4;\n let side_effect = EncryptedLogHash { value: log_hash, counter, length: len, randomness };\n self.encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_event_log(contract_address, randomness, log, counter);\n }\n\n pub fn emit_raw_note_log<M>(&mut self, note_hash_counter: u32, log: [u8; M], log_hash: Field) {\n let counter = self.next_counter();\n let len = log.len() as Field + 4;\n let side_effect = NoteLogHash { value: log_hash, counter, length: len, note_hash_counter };\n self.note_encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_note_log(note_hash_counter, log, counter);\n }\n\n pub fn call_private_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_private_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_private_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_private_function_no_args<RETURNS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_private_function_no_args<RETURNS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_private_function_no_args<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_private_function_with_packed_args<RETURNS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n let item = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n assert_eq(item.public_inputs.call_context.side_effect_counter, start_side_effect_counter);\n assert_eq(item.public_inputs.start_side_effect_counter, start_side_effect_counter);\n let end_side_effect_counter = item.public_inputs.end_side_effect_counter;\n self.side_effect_counter = end_side_effect_counter + 1;\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n\n assert(contract_address.eq(item.contract_address));\n assert(function_selector.eq(item.function_data.selector));\n\n assert(args_hash == item.public_inputs.args_hash);\n\n // Assert that the call context of the call generated by the oracle matches our request.\n assert(item.public_inputs.call_context.is_delegate_call == is_delegate_call);\n assert(item.public_inputs.call_context.is_static_call == is_static_call);\n\n if (is_delegate_call) {\n // For delegate calls, we also constrain the execution context address for the nested call to be equal to our address.\n assert(\n item.public_inputs.call_context.storage_contract_address.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.msg_sender));\n } else {\n // For non-delegate calls, we also constrain the execution context address for the nested call to be equal to the address we called.\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n }\n\n let mut caller_context = CallerContext::empty();\n caller_context.is_static_call = self.inputs.call_context.is_static_call;\n if is_delegate_call {\n caller_context.msg_sender = self.inputs.call_context.msg_sender;\n caller_context.storage_contract_address = self.inputs.call_context.storage_contract_address;\n }\n self.private_call_requests.push(\n PrivateCallRequest { hash: item.hash(), caller_context, start_side_effect_counter, end_side_effect_counter }\n );\n\n PackedReturns::new(item.public_inputs.returns_hash)\n }\n\n pub fn call_public_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_public_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_public_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let fields = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let item = parse_public_call_stack_item_from_oracle(fields);\n self.validate_call_stack_item_from_oracle(\n item,\n contract_address,\n function_selector,\n args_hash,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = self.side_effect_counter + 1;\n self.public_call_stack_hashes.push(item.hash());\n }\n\n pub fn set_public_teardown_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.set_public_teardown_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn set_public_teardown_function_with_packed_args<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let fields = set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let item = parse_public_call_stack_item_from_oracle(fields);\n self.validate_call_stack_item_from_oracle(\n item,\n contract_address,\n function_selector,\n args_hash,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = self.side_effect_counter + 1;\n self.public_teardown_function_hash = item.hash();\n }\n\n fn validate_call_stack_item_from_oracle(\n self,\n item: PublicCallStackItem,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n assert(contract_address.eq(item.contract_address));\n assert(function_selector.eq(item.function_data.selector));\n\n assert_eq(item.public_inputs.call_context.side_effect_counter, self.side_effect_counter);\n\n assert(args_hash == item.public_inputs.args_hash);\n\n // Assert that the call context of the enqueued call generated by the oracle matches our request.\n assert(item.public_inputs.call_context.is_delegate_call == is_delegate_call);\n assert(item.public_inputs.call_context.is_static_call == is_static_call);\n\n if (is_delegate_call) {\n // For delegate calls, we also constrain the execution context address for the nested call to be equal to our address.\n assert(\n item.public_inputs.call_context.storage_contract_address.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.msg_sender));\n } else {\n // For non-delegate calls, we also constrain the execution context address for the nested call to be equal to the address we called.\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n }\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs: BoundedVec::new(),\n historical_header: Header::empty(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n}\n"}}}