@aztec/protocol-contracts 0.44.0 → 0.45.1
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.
- package/artifacts/AuthRegistry.d.json.ts +3 -0
- package/artifacts/AuthRegistry.json +1 -0
- package/artifacts/ContractClassRegisterer.d.json.ts +3 -0
- package/artifacts/ContractClassRegisterer.json +1 -0
- package/artifacts/ContractInstanceDeployer.d.json.ts +3 -0
- package/artifacts/ContractInstanceDeployer.json +1 -0
- package/artifacts/GasToken.d.json.ts +3 -0
- package/artifacts/GasToken.json +1 -0
- package/artifacts/KeyRegistry.d.json.ts +3 -0
- package/artifacts/KeyRegistry.json +1 -0
- package/artifacts/MultiCallEntrypoint.d.json.ts +3 -0
- package/artifacts/MultiCallEntrypoint.json +1 -0
- package/dest/auth-registry/artifact.js +2 -2
- package/dest/class-registerer/artifact.js +2 -2
- package/dest/gas-token/artifact.js +2 -2
- package/dest/instance-deployer/artifact.js +2 -2
- package/dest/key-registry/artifact.js +2 -2
- package/dest/multi-call-entrypoint/artifact.js +2 -2
- package/package.json +7 -6
- package/src/auth-registry/artifact.ts +1 -1
- package/src/class-registerer/artifact.ts +1 -1
- package/src/gas-token/artifact.ts +1 -1
- package/src/instance-deployer/artifact.ts +1 -1
- package/src/key-registry/artifact.ts +1 -1
- package/src/multi-call-entrypoint/artifact.ts +1 -1
- package/dest/artifacts/AuthRegistry.json +0 -1
- package/dest/artifacts/ContractClassRegisterer.json +0 -1
- package/dest/artifacts/ContractInstanceDeployer.json +0 -1
- package/dest/artifacts/GasToken.json +0 -1
- package/dest/artifacts/KeyRegistry.json +0 -1
- package/dest/artifacts/MultiCallEntrypoint.json +0 -1
- package/src/artifacts/AuthRegistry.json +0 -1
- package/src/artifacts/ContractClassRegisterer.json +0 -1
- package/src/artifacts/ContractInstanceDeployer.json +0 -1
- package/src/artifacts/GasToken.json +0 -1
- package/src/artifacts/KeyRegistry.json +0 -1
- package/src/artifacts/MultiCallEntrypoint.json +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"transpiled":true,"noir_version":"0.31.0+10076d9663dcf40ac712df69e3a71a1bb54866e2","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":"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":"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":"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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uk5o0lssX2W6xGfSWyxfZbo6Z9JbLF9lurBm0lssX2W6JmbSWyxfZbqcZdJbLF9luhJl0lssX2W6iGTSWyxfZbr+Y9JbLF9lunRj0lssX2W66mLSWyxfZbpgYtJbLF9lutZh0lssX2W6TGHSWyxfZbrCYNJbLF9lujhg0lssX2Xa3G/SWyxfZdqub9JbLF9l2oBv0lssX2XaUm/SWyxfZdokb9JbLF9l2vZu0lssXxXb374U29++FNvfvhTb374U29++FNvfvhTb374U29++FNvfvhTb374U29++FNvfvhTb374U29++FNvfvhTb374U29++FNvfvhTb374U29++FNvfvhTb374U29++FNvfvhTb374U29++FNvfvhTb374U29++FNvfvhTb374U29++FNvfvhTb374U29++FNvfvhTb374U29++FNvfvhTb396K7W9vxfa3t2L721ux/e3t1orprZWvWrH97a3Y/vZWbH97K7a/vRXb396K7W9vxfa3t2L721ux/e2t2P72Vmx/eyu2v70V29/eiu1vb8X2t7di+9tbsf3trdj+9lZsf3srtr+9Fdvf3ortb2/F9re3YvvbW7H97a3Y/vZWbH97K7a/vRXb396K7W9vxfa3t2L721ux/e2t2P72Vmx/eyu2v70V29/eiu1vb8X2t7di+9tbsf3trdj+9lZsf3srtr+9Fdvf3ortb2/F9re3YvvbW7H97a3Y/vZWbH97K7a/vRXb396K7W9vxfa3t2L721ux/e2t2P72Vmx/eyu2v70V29/eiu1vb8X2t7di+9tbpv3eX5/69vjU8/nme3/yOeZ5Wh8K//mK++c45//6nW/z/Yvn2/7Mbv/bdz7Ox3ee33zntc2/v3Zty5X7idII7n/sfsP9wu4nSqq4/7H7iXI77n/sfqIWg/sfu5+o0+H+x+4nari4/6n7me6J4P7H7if66RLuf+w+s77K7jPry+r+cYexnuuV+w33C7vPrK+y+8z6KrvPrC+r+/u3+9uV+8z6KrvPrK+w+5lu2+H+x+4z66vsPrO+yu4z68vq/nr/nd51u/qd3kw3MXH/Y/eZ9VV2n1lfZfeZ9VV2n1lfZfeZ9dV1f810Zxn3P3afWV9l95n1VXafWV9l9xvuF3afWV9l95n1VXafWV9l95n1VXafWV9h9ydmfZXdZ9ZX2X1mfZXdZ9ZX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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, MAX_ARGS_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 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 len_bytes = (n as Field).to_be_bytes(4);\n for i in 0..4 {\n hash_bytes[32 + i] = len_bytes[i];\n }\n for i in 0..n {\n hash_bytes[36 + 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() <= MAX_ARGS_LENGTH, \"Args length exceeds maximum\");\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..MAX_ARGS_LENGTH {\n input.add(i as Field);\n }\n let hash = input.hash();\n assert(hash == 0x11e40f2a780822f7971803048c9a2100579de352e7dadd99981760964da65b57);\n}\n\n#[test]\nfn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd\n ];\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0095b2d17ab72f4b27a341f7ac63e49ec73935ae8c9181a0ac02023eb12f3284);\n}\n\n#[test]\nfn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0083ab647dfb26e7ddee90a0f4209d049d4660cab42000c544b986aaa84c55a3);\n}\n\n#[test]\nfn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"dummy\";\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x00629e88ebd6374f44aa6cfe07e251ecf07213ebc7267e8f6b578ae57ffd6c20);\n}\n\n#[test]\nfn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"Hello this is a string\";\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0098637962f7d34fa202b7ffad8a07a238c5d1fd897b82a108f7f467fa73b841);\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_NOTE_HASHES_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, MAX_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 note_hashes: [NoteHash::empty(); MAX_NOTE_HASHES_PER_CALL],\n nullifiers: [Nullifier::empty(); MAX_NULLIFIERS_PER_CALL],\n l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_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, FIXED_L2_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: FIXED_L2_GAS }\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, contract_address: AztecAddress) -> ScopedNoteHash {\n ScopedNoteHash { note_hash: self, contract_address }\n }\n}\n\nstruct ScopedNoteHash {\n note_hash: NoteHash,\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.contract_address == other.contract_address)\n }\n}\n\nimpl Empty for ScopedNoteHash {\n fn empty() -> Self {\n ScopedNoteHash {\n note_hash: NoteHash::empty(),\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.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 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 }\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.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.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_NOTE_HASHES_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_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 note_hashes: u32,\n nullifiers: u32,\n 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 note_hashes: validate_array(public_inputs.note_hashes),\n nullifiers: validate_array(public_inputs.nullifiers),\n l2_to_l1_msgs: validate_array(public_inputs.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 note_hashes: [NoteHash; MAX_NOTE_HASHES_PER_CALL],\n nullifiers: [Nullifier; MAX_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 l2_to_l1_msgs: [L2ToL1Message; MAX_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.note_hashes == other.note_hashes) &\n (self.nullifiers == other.nullifiers) &\n (self.private_call_requests == other.private_call_requests) &\n (self.public_call_stack_hashes == other.public_call_stack_hashes) &\n (self.l2_to_l1_msgs == other.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.note_hashes.len() {\n fields.extend_from_array(self.note_hashes[i].serialize());\n }\n for i in 0..self.nullifiers.len() {\n fields.extend_from_array(self.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.l2_to_l1_msgs.len() {\n fields.extend_from_array(self.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 note_hashes: reader.read_struct_array(NoteHash::deserialize, [NoteHash::empty(); MAX_NOTE_HASHES_PER_CALL]),\n nullifiers: reader.read_struct_array(Nullifier::deserialize, [Nullifier::empty(); MAX_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 l2_to_l1_msgs: reader.read_struct_array(L2ToL1Message::deserialize, [L2ToL1Message::empty(); MAX_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 note_hashes: [NoteHash::empty(); MAX_NOTE_HASHES_PER_CALL],\n nullifiers: [Nullifier::empty(); MAX_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 l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_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_L2_TO_L1_MSGS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_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 note_hashes: [NoteHash; MAX_NOTE_HASHES_PER_CALL],\n nullifiers: [Nullifier; MAX_NULLIFIERS_PER_CALL],\n l2_to_l1_msgs: [L2ToL1Message; MAX_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_NOTE_HASHES_PER_CALL {\n fields.extend_from_array(self.note_hashes[i].serialize());\n }\n for i in 0..MAX_NULLIFIERS_PER_CALL {\n fields.extend_from_array(self.nullifiers[i].serialize());\n }\n for i in 0..MAX_L2_TO_L1_MSGS_PER_CALL {\n fields.extend_from_array(self.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 note_hashes: reader.read_struct_array(NoteHash::deserialize, [NoteHash::empty(); MAX_NOTE_HASHES_PER_CALL]),\n nullifiers: reader.read_struct_array(Nullifier::deserialize, [Nullifier::empty(); MAX_NULLIFIERS_PER_CALL]),\n l2_to_l1_msgs: reader.read_struct_array(L2ToL1Message::deserialize, [L2ToL1Message::empty(); MAX_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 note_hashes: [NoteHash::empty(); MAX_NOTE_HASHES_PER_CALL],\n nullifiers: [Nullifier::empty(); MAX_NULLIFIERS_PER_CALL],\n l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_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/mod.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_NOTE_HASHES_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, MAX_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 note_hashes: BoundedVec<NoteHash, MAX_NOTE_HASHES_PER_CALL>,\n nullifiers: BoundedVec<Nullifier, MAX_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 l2_to_l1_msgs : BoundedVec<L2ToL1Message, MAX_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 note_hashes: BoundedVec::new(),\n 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 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_note_hash(&mut self, note_hash: Field) {\n self.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_nullifier(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.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 note_hashes: self.note_hashes.storage,\n nullifiers: self.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 l2_to_l1_msgs: self.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.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_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 note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n public_teardown_function_hash: 0,\n 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"}}}
|