@aztec/protocol-contracts 0.47.0 → 0.47.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.json +1 -1
- package/artifacts/ContractClassRegisterer.json +1 -1
- package/artifacts/ContractInstanceDeployer.json +1 -1
- package/artifacts/GasToken.json +1 -1
- package/artifacts/KeyRegistry.json +1 -1
- package/artifacts/MultiCallEntrypoint.json +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"transpiled":true,"noir_version":"0.32.0+92ff2fa2e944722e5c3fa43fb3363f093b8f1d12","name":"MultiCallEntrypoint","functions":[{"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"}}],"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"}}],"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"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"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":"target","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"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"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"function_data","type":{"fields":[{"name":"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_private","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_data::FunctionData"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_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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1pPA1vPh/bm2Go719NS+raeArefD+3Pt7fjvq21t/7aeBraejrWeT98fbKm2Yz09/vbf14/H75GOblb2+HD+19rDwmuPC699X3jtaeG1Z+i1v3pnuX76HqXp2uvCa28Lr72vu/Yd+1x9vXbsc/X12rHP1ddrxz5XX68d+1x9vfaFz9V94XN1X/hc3Rc+V/eFz9W08LmaFj5X08Lnalr4XP30/WLTtS98rqaFz9W08LmaFj5X08Lnal74XM0Ln6t54XM1L3yufvpeuOnaFz5X88Lnal74XM0Ln6t54XO1LHyuloXP1bLwuVoWPlc/fZ/fdO0Ln6tl4XO1LHyuloXP1bLwuVoXPlfrwudqXfhcrQufq5+ew2C69oXP1brwuVoXPlfrwudqXfhcbQufq23hc7UtfK62hc/VT8/PMF37wudqW/hcbQufq23hc7UtfK72hc/VvvC52hc+V/vC5+qn556Yrn3hc7UvfK72hc/VvvC52tc9V9u27rnatnXP1bate662bd1ztW3rnqttW/dcbdu652rb1j1X27buudq2hc/VsPC5GhY+V8PC52pY+Fz99Jwh07UvfK6Ghc/VsPC5GhY+V8PC5yr4vKXXa1/4XAWft/R67Qufq+Dzll6vfeFzdeF5S23heUtt4XlLbeF5S23heUtt4XlLbeF5S23heUtt4XlLbeF5S23heUtt4XlLbeF5S23heUtt4XlLbeF5S23heUtt4XlLbeF5S23heUtt4XlLDX3eUn3MlG7f1g5+rr5cO/i5+mrtfz9vKfTjZccYy/567TFuez8+vZXf1v4/1xPA1hPB1rODrSeBrSeDraeAraeCraeBradjraeA7c8F6x3jVrDeMW4F6535VrDemW8V6535VrHemW8V6535VrHemW+fnj9xuh6sd+ZbBdsPK9h+WMH2wwa2Hzaw/bCB/ffewP57b2B+rIHtPw1s/+lg/311ML/RwfxGB9t/Otj+08H2nw62/3S0/QfL//QNy//0DWv/6RvW/tM3rP2nb1j7T9+w9p/+82+H76vZTtayt3j/6H5rZX/78nLll9crv7xd+eX9wi//+QemVl8ervzyeOWX71d+ebryy8F2jB3LsfQdzLEkMMeSsBJlT1iJsicwR/fpX3adrgfM0SUsRxe2+uGfXITat+PT2xa+LyihLSijLaigLaiiLaihLaiDLaht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2h3FjHZHMaPdUcxodxQz2h3FjHZHMaPdUcxodxQz2h3FjHZHMaPdUcxodxQz2h3FjHZHMaPdUcxodxTzx+8o9uPToWxb+b6gHW1BCW1BGW1BBW1BFW1BDW1BHWxBn76jWELMx4Juf2H9vqCAtqAP79SlxePoKK2k7wva0RaU0BaUP72g9lhQ38P3BRW0BVW0BTW0BXWwBX36juL5ggLagj69U/e8PRbUf1jQjraghLagD+/UNWz3Nxdv/3fN3xdUPr2gvh8Lirl+X1BFW1BDW9CHd+raajgW1FP7jwsqn76jeL6gD+/Utbfjv7K2tf37giLagna0BX14p26ptmNBPf72X9mPZ/ERmur2yEz51+LzyosvKy++rrz4tvLiO/TiX74eXT59V9N28WHlxceVF7+vvHjsE/Zk8dgn7MnisU/Yk8Vjn7Ani8c+YU8Wv/IJG1c+YePKJ2xc+YSNK5+wn74TbLv4lU/YuPIJG1c+YePKJ2xc+YTdVz5h95VP2H3lE3Zf+YT99F1u28WvfMLuK5+w+8on7L7yCbuvfMKmlU/YtPIJm1Y+YdPKJ+yn7+DbLn7lEzatfMKmlU/YtPIJm1Y+YfPKJ2xe+YTNK5+weeUT9tOzE2wXv/IJm1c+YfPKJ2xe+YTNK5+wZeUTtqx8wpaVT9iy8gn76ZkXtotf+YQtK5+wZeUTtqx8wpaVT9i68glbVz5h68onbF35hP30rBLbxa98wtaVT9i68glbVz5h68onbFv5hG0rn7Bt5RO2rXzCfnrGjO3iVz5h28onbFv5hG0rn7Bt5RO2r3zC9pVP2L7yCdtXPmE/PRvIdvErn7B95RO2r3zC9pVP2L7wCVu3hU/Yui18wtZt4RO2bgufsHVb+ISt4DOdTha/8AlbwWc6nSx+4RO2rjzTqa4806muPNOprjzTqa4806muPNOprjzTqa4806muPNOprjzTqa4806muPNOprjzTqa4806muPNOprjzTqa4806muPNOprjzTqa4806muPNOprjzTqa4806muPNOprjzTqa4806muPNOprjzTqa4806muPNOprjzTqa4806muPNOprjzTqa4806muPNOprjzTqa4806muPNOprjzTqa4806muPNOprjzTqa4806muPNOprjzTqa4806muPNOprjzTqa4806muPNOprjzTqa4806muPNOprjzT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XvmELSufsGXlE7asfMKWlU/YT9/Bt138yidsWfmELSufsGXlE7asfMLWlU/YuvIJW1c+YevKJ+ynZyfYLn7lE7aufMLWlU/YuvIJW1c+YdvKJ2xb+YRtK5+wbeUT9tMzL2wXv/IJ21Y+YdvKJ2xb+YRtK5+wfeUTtq98wvaVT9i+8gn76Vkltotf+YTtK5+wfeUTtq98wvaFT9i+LXzC9m3hE7ZvC5+wfVv4hO3bwids3xY+Yfu28Anbt4VP2L4tfML2beUTNqx8woaVT9iw8gkbVj5hPz0byHbxK5+wYeUTNqx8woaVT9iw8gkbVz5h48onbFz5hI0rn7DgM51OFr/yCQs+0+lk8SufsOAznU4Wv/IJu/JMp77yTKe+8kynvvJMp77yTKe+8kynvvJMp77yTKe+8kynvvJMp77yTKe+8kynvvJMp77yTKe+8kynvvJMp77yTKe+8kynvvJMp77yTKe+8kynvvJMp77yTKe+8kynvvJMp77yTKe+8kynvvJMp77yTKe+8kynvvJMp77yTKe+8kynvvJMp77yTKe+8kynvvJMp77yTKe+8kynvvJMp77yTKe+8kynvvJMp77yTKe+8kynvvJMp77yTKe+8kynvvJMp77yTKe+8kynvvJMp77yTKe+8kynvvJMp77yTKe+8kynvvJMp77yTKe+8kynvvJMp77yTKe+8kynvvJMp77yTKe+8kynvvJMp77yTKe+8kynvvBMp31beKbTbfHrnrC3xa97wt4Wv+4Je1v8uifsbfHrnrC3xa97wt4Wv+4Je1v8uifsbfErn7ALz3S6LX7lE3bhmU63xa98wi480+m2+JVP2IVnOt0Wv/IJu/BMp9viVz5hF57pdFv8yifswjOdbotf+YRdeKbTbfF/fcKG2x8o7ouPZX+9+Bi3vR+f3spvi//XggragiraghragjrYgv5+7pH1ggLagiLagna0BSW0BaHt1J8eH5LLsfyQe9i/LyiiLWhHW1BCW1BGW1BBW1BFW1BDW1AHW9CnR1acLwhtY8xoG2NG2xgz2saY0TbGjPaffUH7z76gGbSCtg8VtH2ooP1XVtDsR0GzHwVtH6po+1BF24cq2j5U0fahT9/ePV8Qmh+qaPtQRduHGto+1ND2oQa2D4Wff4J8X852spi9xftH95bL928Pl357vPTb90u/PV367fnSby+X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qi8xXnKtUtUYfD+zXK5VqhqD72aWy/VKVcH3MsvleqWq4DuZ5XK9UlXwfcxyuV6pKvguZrlcr1QVfA+zXK5Xqgq+g1ku1ytVBd+/LJfrlaqC716Wy/VKVcH3LsvleqWq4DuX5XK9UlXwfctyuV6pKviuZblcr1QVfM+yXK5Xqpq9UtXslaqCb9CWy/VKVcUrVRWvVBV8N7pcrleqCr4XXS7XK1UF34kul+uVqoLvQ5fL9UpVwXehy+V6parge9Dlcr1SVfAd6HK5XqnKa7f66LVbffTarT567VYfvXarj1671Uev3eqj12710Wu3+ui1W3302q0+eu1WH712q49eu9VHr93qo9du9dFrt/rotVt99NqtPnrtVh+9dquPXrvVR6/d6qPXbvXRa7f66LVbffTarT567VYfvXarj1671Uev3eqj12710Wu3+ui1W3302q0+eu1WH712q49eu9VHr93qo9du9dFrt/rotVt99NqtPnrtVp+8dqtPXrvVJ6/d6pPXbvVpKF5yrVLV5LVbffLarT557VafvHarT1671Sev3eqT1271yWu3+uS1W33y2q0+ee1Wn7x2q09eu9Unr93qk9du9clrt/rktVt98tqtPnntVp+8dqtPXrvVJ6/d6pPXbvXJa7f65LVbffLarT557VafvHarT1671Sev3eqT1271yWu3+uS1W33y2q0+ee1Wn7x2q09eu9Unr93qk9du9clrt/rktVt98tqtPnntVp+8dqtPXrvVJ6/d6pPXbvXJa7f65LVbffLarT557VafvHarT1671Sev3eqT1271yWu3+uS1W33y2q0+ee1Wn7x2q09eu9Unr93qk9du9clrt/rktVt98tqtPnntVp+8dqtPXrvVJ6/d6pPXbvXJa7f65LVbffLarT557VafvHarT1671Sev3eqT1271yWu3+uS1W33y2q0+ee1Wn7x2q09eu9Unr93qk9du9clrt/rktVt98tqtPnntVp+8dqtPXrvVJ6/d6rPXbvXZa7f67LVbffbarT4PxUuuVaqavXarz1671Wev3eqz12712Wu3+uy1W3322q0+e+1Wn712q89eu9Vnr93qs9du9dlrt/qcavv2MK3Pp562E8GZ3rxVgjN9On896vOpl/FEcKbP5yrBmT6hqwRn+oyuEpyp+9YITrWtuUpwqvdwjeBU7+EawZk6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boLNktY2mCWtbTBLWttglrS2wS1pjW5Ja3RLWrluz9cIdktauW6t1wh2S1q5bovXCHZLWrluadcIdktauW5H1wh2S1q5biXXCHZLWrluA9cIdktauW7h1gh2S1q5br/WCHZLWrlundYIdktauW571gh2S1q5blnWCHZLWrluN9YIdktauW4V1gh2S1q5bvPVCHZLWrlu0dUIdktauW6v1Qh2S1q5bo3VCHZLWrlua9UIdktauW5J1Qh2S1q5bifVCHZLWrluBdUIdktauW7j1Ah2S1q5bsHUCHZLWrlun9QIdktauW591Ah2S1q5blvUCHZLWrluOdQIdktauW4X1Ah2S1q57gDUCHZLWrn29dcIdktaufbq1wh2S1q59t/XCHZLWrn21NcIdktaufbJ1wh2S1puO+I3tx3xm9uO+M1tR/zmtiN+c9sRv7ntiN/cdsRvbjviN7cd8ZvbjvjNbUf85rYjfnPbEb+57Yjf3HbEb2474je3HfG724743W1H/O62I3532xG/D8VNsFnS2t12xO9uO+J3tx3xu9uO+N1tR/zutiN+d9sRv7vtiN/ddsTvbjvid7cd8bvbjvjdbUf87rYjfnfbEb+77Yjf3XbE72474ne3HfG724743W1H/O62I3532xG/u+2I3912xO9uO+J3tx3xu9uO+N1tR/zutiN+d9sRv7vtiN/ddsTvbjvid7cd8bvbjvjdbUf87rYjfnfbEb+77Yjf3XbE72474ne3HfG724743W1H/O62I3532xG/u+2I3912xO9uO+J3tx3xu9uO+N1tR/zutiN+d9sRv7vtiN/ddsTvbjvid7cd8bvbjvjdbUf87rYjfnfbEb+77Yjf3XbE72474ne3HfG724743W1H/O62I3532xG/u+2I3912xO9uO+J3tx3xu9uO+N1tR/zutiN+d9sRv7vtiN/ddsTvbjvid7cd8bvbjvjdbUf87rYjfnfbEb+77Yjf3XbE72474ne3HfG724743W1H/O62I/5w2xF/uO2IP9x2xB9uO+KPobgJNktah9uO+MNtR/zhtiP+cNsRf7jtiD/cdsQfbjviD7cd8YfbjvjDbUf84bYj/nDbEX+47Yg/3HbEH2474g+3HfGH2474w21H/OG2I/5w2xF/uO2IP9x2xB9uO+IPtx3xh9uO+MNtR/zhtiP+cNsRf7jtiD/c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FXzPur9esXwltr99FtvfPovtb5/F9rfPYvvbZ7H97bPY/vZZbH/7LLa/fRbb3z6L7W+fxfa3z2L722ex/e2z2P72WWx/+yy2v30W298+i+1vn8X2t89i+9tnsf3ts9j+9llsf/sstr99FtvfPovtb5/F9rfPYvvbZ7H97bPY/vZZbH/7LLa/fRbb3z6L7W+fxfa3z2L722ex/e2z2P72WWx/+yy2v30W298+i+1vn8X2txex/e1FbH97EdvfXsT2t5epiunVyldFbH97EdvfXsT2txex/e1FbH97EdvfXsT2txex/e1FbH97EdvfXsT2txex/e1FbH97EdvfXsT2txex/e1FbH97EdvfXsT2txex/e1FbH97EdvfXsT2txex/e1FbH97EdvfXsT2txex/e1FbH97EdvfXsT2txex/e1FbH97EdvfXsT2txex/e1FbH97EdvfXsT2txex/e1FbH97EdvfXsT2txex/e1FbH97EdvfXsT2txex/e1FbH97EdvfXsT2txex/e1FbH97EdvfXsT2txex/e1FbH97EdvfXsT2txex/e1FbH97EdvfXsT2txex/e1FbH97EdvfXsT2txex/e1FbH97EdvfXsT2txex/e1FbH97EdvfXsT2txex/e1FbH97EdvfXsT2txex/e1FbH97EdvfXsT2txex/e1FbH97EdvfXsT2txex/e1FbH97EdvfXsT2txex/e1FbH97Edvfvojtb1/E9rcvYvvbF7H97ctUxfRq5atFbH/7Ira/fRHb376I7W9fxPa3L2L72xex/e2L2P72RWx/+yK2v30R29++iO1vX8T2ty+p9ntPZXu867JfKc70BLYpzvQZfXurj3e9zleKM31K2xRn+py2Kc70SW1TnKkLmxSn2gZtU5zqeWxSnOp5bFKcqRPbFFc5xXKZK9VmaJviYTPXi4ZhU9SLhtC56PY+yvp4I9Oxffhv7/pnPxXH3uLcRHHoXNREcehc1ERx6FzURHGVUxw6FzVRHDoXNVEcOhc1URw6RTVRLJe5Ym92bqJYLnPF3u7cRLFc5oq94bmJYrnMFXvLcxPFcpkr9qbnJorlMlfsbc9NFMtlrtgbn5solstcsbc+N1Esl7lib35uolguc8Xe/txEsVzmir0x91vF63b+evW6T1eKUz2dTIpTfXKtx/3V61mvFKf65DIpTvXJ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18R2nqvWvZmuie08V637Kl0T23muWvdEuia281y17md0TWznuWrdi+ia2M5z1bqP0DWxneeqdWuga2I7z1XrJkDXxHaeq9bu/q6J7TxXrR37XRPbea5au/C7JrbzXLV21ndNbOe57PbQb3Z76De7PfSb3R76zW4P/Wa3h36z20O/2e2h3+z20G92e+g3uz30m90e+s1uD/1mt4d+s9tDv9ntod/s9tBvdnvod7s99LvdHvrdbg/9breHfr81u4ndPNdut4d+t9tDv9vtod/t9tDvdnvod7s99LvdHvrdbg/9breHfrfbQ7/b7aHf7fbQ73Z76He7PfS73R763W4P/W63h36320O/2+2h3+320O92e+h3uz30u90e+t1uD/1ut4d+t9tDv9vtod/t9tDvdnvod7s99LvdHvrdbg/9breHfrfbQ7/b7aHf7fbQ73Z76He7PfS73R763W4P/W63h36320O/2+2h3+320O92e+h3uz30u90e+t1uD/1ut4d+t9tDv9vtod/t9tDvdnvod7s99LvdHvrdbg/9breHfrfbQ7/b7aHf7fbQ73Z76He7PfS73R763W4P/W63h36320O/2+2h3+320O92e+h3uz30u90e+t1uD/1ut4d+t9tDv9vtod/t9tDvdnvod7s99LvdHvrdbg/9breHfrfbQ7/b7aHf7fbQ73Z76He7PfS73R763W4P/W63h36320O/2+2h3+320O92e+h3uz30h90e+sNuD/1ht4f+sNtDf9ya3cRunuuw20N/2O2hP+z20B92e+gPuz30h90e+sNuD/1ht4f+sNtDf9jtoT/s9tAfdnvoD7s99IfdHvrDbg/9YbeH/rDbQ3/Y7aE/7PbQH3Z76A+7PfSH3R76w24P/WG3h/6w20N/2O2hP+z20B92e+gPuz30h90e+sNuD/1ht4f+sNtDf9jtoT/s9tAfdnvoD7s99IfdHvrDbg/9YbeH/rDbQ3/Y7aE/7PbQH3Z76A+7PfSH3R76w24P/WG3h/6w20N/2O2hP+z20B92e+gPuz30h90e+sNuD/1ht4f+sNtDf9jtoT/s9tAfdnvoD7s99IfdHvrDbg/9YbeH/rDbQ3/Y7aE/7PbQH3Z76A+7PfSH3R76w24P/WG3h/6w20N/2O2hP+z20B92e+gPuz30h90e+sNuD/1ht4f+sNtDf9jtoT/s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"},{"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/+2b0W7aMBSGHRq6tGlTSAiBQgt0baXdpazt6N1eZnvuXU/aOwwHH/HXdZDRjmcsEQnFie3zf/6PbdIqRGJzJOtPpMpddT4VHw9q812d6387nhhj1S45o0A4O4FwngTCGTNyRgZOeY5VWa47ueY+ic16/FCJnWWiT6Be7AqkqyaqkGh1bKNd1W+nIIDwQsHHqo7Okfqkqh4BUzXYph3cowF34B5pncA92slIK1HmOBj3S7LF5o29no1yLGcqFvGnUMa6KVgYOxxr181Yn53laO2jwxw1q5zy0FWxE7imnJyDPuO3yxPqU+xzbX7EUJ5AW2pHbTrAK49LsV1L5zv6xVq/DNqcQr9E60fXlHfpV1+V5bmbbNtSfEc+1jJ26ib2uxzFmocpjC0Dfb45ulxJjQvx/oi0a/xiyYDp0gnTZk26Ge8ml1cQm+8p6eVZxutpvl1ovmXQ5gq87DnyMgJtYqLrXos+nyevKxmvb+FJ38DU9+BJv0Wf0ZM3GS+38CQ3MOUePMlb9Pk8+fZVxissPCkMTIUHT4oWfT5Pls3zw8DCk4GBaeDBk0GLPuPaaeZJaeFJaWAqPXhStugzevJTxhtaeDI0MA09eDJs0Wf05IeMV1l4UhmYKg+eVC36jHts83wysvBkZGAaefBk1KLP6MlSxhtbeDI2MI09eDJu0WdcO43+tYUn1wamaw+eoOY+3INAuatAuYsD4db1GddOs8dOLDyZGJgmHjxBzX24ywPh1vUZc/ki400tPJkamKYePEHNfbjzQLmLQLmHgXKXgXJXgXIfyvzW9Rmfv5s99sbCkxsD040HT1BzH+48UO5JoNzFgXDr+oxrp/n/4K2FJ7cGplsPnqDmPtyjQLn7B8Kt6zPOwVcZb2bhyczANPPgCWruwz0OlLsKlHsSKHcRKPcwUO4yUO7juvy/3PmBcMt79L7PH+dMy7dUYyINoXEKjTOFcgacc4jRZeOsa8zVHPQWTnzZ5EqfP3S9cK6/XMnYnx2NTca+dxO7+ZvjQcWidxrvDb49gn7EnLcHLTZpPUAuqfwb2lI7akP7BfHL99nuVPlxR7+Z1i+DNnfQ717rR9eUd+nfL1V2Odds5npPbNf5F2BytFc+4/vLAjSExknHDJjmbpieHI63xncaheBdjwvNszPNswza4F7uc289ch+5bbjxOeQM7lH9HO51tPHgb0UWEOMv7Ab1lOo2AAA=","debug_symbols":"ndpRattAGIXRveg5FN/foxkpWymlOIlTDMEJsVMoJnuv3dIF9LxpJN237+kwl+lp//Dx4/vh+Px6mu6/XqaX18fd+fB6vJ4u0+ZLLX/ent52x9uL03n3fp7ut33cTfvj0/Vp1Ofd9Hx42U/3bdM/v93dRiuMthsZRUYlo62MmoxmGXUZDRlJEVspokkRTYpoUkSTIpoU0aSIJkU0KaJJEU2KmKWIWYqYpYhZipiliFmKmKWIWYqYpYhZiuhSRJciuhTRpYguRXQpoksRXYroUkSXIoYUMaSIIUUMKWJIEUOKGFLEkCKGFDGkiEWKWKSIRYpYpIhFilikiEWKWKSIRYpYpIhVililiFWKWKWIVYpYpYhVililiFWKWKWIbDa0Cq2KVltaNVrNtOq0GrRaaEVthNoItRFqI9RGqI1QG6E2Qm2E2gi1UdRGURtFbRS1UdRGURtFbRS1QaAZEs0QaYZMM4SaIdUMsWbINUOwGZLNEG2GbDOEmyHdDPFmyDdDwBkSzhBxhowzhJwh5QwxZ8g5Q9AZks4QdYasM4SdIe0McWfIO0PgGRLPEHmGzDOEniH1DLFnyD1D8BmSzxB9huwzhJ8h/QzxZ8g/QwAaEtAQgYYMNISgIQUNMWjIQUMQGpLQEIWGLDSEoSENDXFoyENDIBoS0RCJhkw0hKIhFQ2xaMhFi1y0yEWLXLTIRYtctMhFi1y0yEWLXLTIRYtctMhFi1y0yEWLXLTIRYtctMhFi1y0yEWLXLTIRYtctMhFi1y0yEWLXLTIRcsuepKLFrlokYsWuWiRixa5aJGL1n+76PX0c/d+2D287G93e28fP46P/676Xo/nX29/v1z//Q0="}],"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":{"127":{"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, let N: u32, let M: u32>(\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<let N: u32>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array<let N: u32>(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"},"141":{"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"},"146":{"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 start_side_effect_counter: reader.read_u32(),\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 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"},"175":{"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"},"177":{"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"},"178":{"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"},"180":{"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 = 0x15c9b0a92b9b541598e24c9f0b0b4b04b7f2408599751c45aa12de671fd9b363;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"181":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_call_stack_item_compressed.nr","source":"use crate::abis::{call_context::CallContext, function_data::FunctionData, gas::Gas};\nuse crate::address::AztecAddress;\nuse crate::constants::{GENERATOR_INDEX__CALL_STACK_ITEM, PUBLIC_CALL_STACK_ITEM_COMPRESSED_LENGTH};\nuse crate::traits::{Hash, Empty, Serialize, Deserialize};\nuse crate::utils::reader::Reader;\n\n/**\n * A compressed version of the PublicCallStackItem struct used to compute the \"hash\"\n * of a PublicCallStackItem.\n * \n * Historically, we have been zeroing most values in the PublicCallStackItem struct\n * to compute the hash involved when adding a PublicCallStackItem to the PublicCallStack.\n * \n * This struct is used to store the values that we did not zero out, and allow us to hash\n * only these, thereby skipping a lot of computation and saving us a lot of constraints\n * \n * Essentially this struct exists such that we don't have a `hash` function in the \n * PublicCallStackItem struct that practically throws away some values of the struct\n * without clearly indicating that it does so.\n */\nstruct PublicCallStackItemCompressed {\n contract_address: AztecAddress,\n call_context: CallContext,\n function_data: FunctionData,\n args_hash: Field,\n returns_hash: Field,\n revert_code: u8,\n start_gas_left: Gas,\n end_gas_left: Gas,\n}\n\nimpl Eq for PublicCallStackItemCompressed {\n fn eq(self, other: PublicCallStackItemCompressed) -> bool {\n (self.contract_address == other.contract_address)\n & (self.call_context == other.call_context)\n & (self.function_data == other.function_data)\n & (self.args_hash == other.args_hash)\n & (self.returns_hash == other.returns_hash)\n & (self.revert_code == other.revert_code)\n & (self.start_gas_left == other.start_gas_left)\n & (self.end_gas_left == other.end_gas_left)\n }\n}\n\nimpl Hash for PublicCallStackItemCompressed {\n fn hash(self) -> Field {\n std::hash::pedersen_hash_with_separator(self.serialize(), GENERATOR_INDEX__CALL_STACK_ITEM)\n }\n}\n\nimpl Empty for PublicCallStackItemCompressed {\n fn empty() -> Self {\n PublicCallStackItemCompressed {\n contract_address: AztecAddress::empty(),\n call_context: CallContext::empty(),\n function_data: FunctionData::empty(),\n args_hash: 0,\n returns_hash: 0,\n revert_code: 0,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty(),\n }\n }\n}\n\nimpl Serialize<PUBLIC_CALL_STACK_ITEM_COMPRESSED_LENGTH> for PublicCallStackItemCompressed {\n fn serialize(self) -> [Field; PUBLIC_CALL_STACK_ITEM_COMPRESSED_LENGTH] {\n let mut fields: BoundedVec<Field, PUBLIC_CALL_STACK_ITEM_COMPRESSED_LENGTH> = BoundedVec::new();\n\n fields.push(self.contract_address.to_field());\n fields.extend_from_array(self.call_context.serialize());\n fields.extend_from_array(self.function_data.serialize());\n fields.push(self.args_hash);\n fields.push(self.returns_hash);\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\n assert_eq(fields.len(), PUBLIC_CALL_STACK_ITEM_COMPRESSED_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize<PUBLIC_CALL_STACK_ITEM_COMPRESSED_LENGTH> for PublicCallStackItemCompressed {\n fn deserialize(fields: [Field; PUBLIC_CALL_STACK_ITEM_COMPRESSED_LENGTH]) -> PublicCallStackItemCompressed {\n let mut reader = Reader::new(fields);\n\n let item = PublicCallStackItemCompressed {\n contract_address: reader.read_struct(AztecAddress::deserialize),\n call_context: reader.read_struct(CallContext::deserialize),\n function_data: reader.read_struct(FunctionData::deserialize),\n args_hash: reader.read(),\n returns_hash: reader.read(),\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 };\n reader.finish();\n item\n }\n}\n"},"183":{"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"},"184":{"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"},"187":{"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"},"188":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use crate::{constants::KEY_VALIDATION_REQUEST_LENGTH, traits::{Empty, Serialize, Deserialize}, point::Point};\n\nstruct KeyValidationRequest {\n pk_m: Point,\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: Point::empty(),\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.pk_m.is_infinite as Field,\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: Point { x:fields[0], y: fields[1], is_infinite: fields[2] as bool},\n sk_app: fields[3],\n }\n }\n}\n\n"},"192":{"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"},"201":{"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<let N: u32>(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"},"202":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_request.nr","source":"use crate::{\n abis::{\n private_call_stack_item::PrivateCallStackItem, call_context::CallContext,\n function_data::FunctionData, caller_context::CallerContext,\n side_effect::{Ordered, RangeOrdered, Scoped}\n},\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 target: AztecAddress,\n call_context: CallContext,\n function_data: FunctionData,\n args_hash: Field,\n returns_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.target == other.target) \n & (self.call_context == other.call_context) \n & (self.function_data == other.function_data) \n & (self.args_hash == other.args_hash) \n & (self.returns_hash == other.returns_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 target: AztecAddress::empty(),\n call_context: CallContext::empty(),\n function_data: FunctionData::empty(),\n args_hash: 0,\n returns_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.target.to_field());\n fields.extend_from_array(self.call_context.serialize());\n fields.extend_from_array(self.function_data.serialize());\n fields.push(self.args_hash);\n fields.push(self.returns_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 target: reader.read_struct(AztecAddress::deserialize),\n call_context: reader.read_struct(CallContext::deserialize),\n function_data: reader.read_struct(FunctionData::deserialize),\n args_hash: reader.read(),\n returns_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 pub fn matches_stack_item(self, stack_item: PrivateCallStackItem) -> bool {\n (self.target == stack_item.contract_address)\n & (self.call_context == stack_item.public_inputs.call_context)\n & (self.function_data == stack_item.function_data)\n & (self.args_hash == stack_item.public_inputs.args_hash)\n & (self.returns_hash == stack_item.public_inputs.returns_hash)\n & (self.start_side_effect_counter\n == stack_item.public_inputs.start_side_effect_counter)\n & (self.end_side_effect_counter\n == stack_item.public_inputs.end_side_effect_counter)\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"},"207":{"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"},"216":{"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 = 0x065f2831db9ac0db5e710bd3a865b5facd8cf83f1585e1af8fd1d6ce9c47f685;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"217":{"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"},"219":{"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) -> Self {\n // Hide the counter when exposing to public.\n Self {\n log_hash: LogHash { value: self.log_hash.value, counter: 0, length: self.log_hash.length },\n contract_address: self.contract_address\n }\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"},"223":{"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"},"224":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/call_context.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{CALL_CONTEXT_LENGTH, GENERATOR_INDEX__CALL_CONTEXT}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, 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// docs:end:call-context\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 \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 }\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 }\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 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"},"225":{"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"},"228":{"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"},"235":{"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"},"24":{"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 comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\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"},"245":{"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"},"247":{"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"},"248":{"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<let N: u32>(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\nfn 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<let N: u32>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<let N: u32>(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"},"249":{"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"},"251":{"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"},"257":{"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"},"27":{"path":"std/hash/mod.nr","source":"mod poseidon;\nmod mimc;\nmod poseidon2;\nmod keccak;\n\nuse crate::default::Default;\nuse crate::uint128::U128;\nuse crate::sha256::{digest, sha256_var};\nuse crate::collections::vec::Vec;\nuse crate::embedded_curve_ops::{EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_slice};\n\n#[foreign(sha256)]\n// docs:start:sha256\npub fn sha256<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:sha256\n{}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment<let N: u32>(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\npub fn pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {\n __pedersen_hash_with_separator(input, separator)\n}\n\nfn pedersen_commitment_with_separator<let N: u32>(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let value = __pedersen_commitment_with_separator(input, separator);\n if (value[0] == 0) & (value[1] == 0) {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n } else {\n EmbeddedCurvePoint { x: value[0], y: value[1], is_infinite: false }\n }\n}\n\nfn pedersen_commitment_with_separator_noir<let N: u32>(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constraint the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\nfn pedersen_hash_with_separator_noir<let N: u32>(input: [Field; N], separator: u32) -> Field {\n let mut scalars: Vec<EmbeddedCurveScalar> = Vec::from_slice([EmbeddedCurveScalar { lo: 0, hi: 0 }; N].as_slice()); //Vec::new();\n\n for i in 0..N {\n scalars.set(i, from_field_unsafe(input[i]));\n }\n scalars.push(EmbeddedCurveScalar { lo: N as Field, hi: 0 });\n let domain_generators :[EmbeddedCurvePoint; N]= derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n let mut vec_generators = Vec::from_slice(domain_generators.as_slice());\n let length_generator : [EmbeddedCurvePoint; 1] = derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n vec_generators.push(length_generator[0]);\n multi_scalar_mul_slice(vec_generators.slice, scalars.slice)[0]\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash<let N: u32>(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n __pedersen_hash_with_separator(input, 0)\n}\n\n#[foreign(pedersen_hash)]\nfn __pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {}\n\n#[foreign(pedersen_commitment)]\nfn __pedersen_commitment_with_separator<let N: u32>(input: [Field; N], separator: u32) -> [Field; 2] {}\n\n#[field(bn254)]\nfn derive_generators<let N: u32, let M: u32>(domain_separator_bytes: [u8; M], starting_index: u32) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n crate::assert_constant(starting_index);\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators<let N: u32, let M: u32>(\n domain_separator_bytes: [u8; M],\n starting_index: u32\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n // Same as from_field but:\n // does not assert the limbs are 128 bits\n // does not assert the decomposition does not overflow the EmbeddedCurveScalar\n fn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n let (xlo, xhi) = crate::field::bn254::decompose_hint(scalar);\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes(32).as_array();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n// docs:start:keccak256\npub fn keccak256<let N: u32>(input: [u8; N], message_size: u32) -> [u8; 32]\n// docs:end:keccak256\n{\n crate::hash::keccak::keccak256(input, message_size)\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation<let N: u32>(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n#[foreign(sha256_compression)]\npub fn sha256_compression(_input: [u32; 16], _state: [u32; 8]) -> [u32; 8] {}\n\n// Generic hashing support. \n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\ntrait Hash{\n fn hash<H>(self, state: &mut H) where H: Hasher;\n}\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\ntrait Hasher{\n fn finish(self) -> Field;\n \n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\ntrait BuildHasher<H> where H: Hasher{\n fn build_hasher(self) -> H;\n}\n\nstruct BuildHasherDefault<H>;\n\nimpl<H> BuildHasher<H> for BuildHasherDefault<H>\nwhere \n H: Hasher + Default\n{\n fn build_hasher(_self: Self) -> H{\n H::default()\n }\n}\n\nimpl<H> Default for BuildHasherDefault<H>\nwhere \n H: Hasher + Default\n{\n fn default() -> Self{\n BuildHasherDefault{}\n } \n}\n\nimpl Hash for Field {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self);\n }\n}\n\nimpl Hash for u8 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash<H>(_self: Self, _state: &mut H) where H: Hasher {}\n}\n\nimpl Hash for U128 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self.lo as Field);\n H::write(state, self.hi as Field);\n }\n}\n\nimpl<T, let N: u32> Hash for [T; N] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<T> Hash for [T] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<A, B> Hash for (A, B) where A: Hash, B: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl<A, B, C> Hash for (A, B, C) where A: Hash, B: Hash, C: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl<A, B, C, D> Hash for (A, B, C, D) where A: Hash, B: Hash, C: Hash, D: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl<A, B, C, D, E> Hash for (A, B, C, D, E) where A: Hash, B: Hash, C: Hash, D: Hash, E: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1), 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1), EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false\n }\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2), 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2), EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3), 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3), EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4), 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4), EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5), 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5), EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6), 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6), EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7), 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7), EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false\n }\n );\n}\n\n"},"271":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"struct Reader<let N: u32> {\n data: [Field; N],\n offset: u32,\n}\n\nimpl<let N: u32> 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<let K: u32>(&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, let K: u32>(&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, let K: u32, let C: u32>(&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"},"283":{"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, let N: u32, let M: u32>(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"},"297":{"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"},"298":{"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,\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"},"406":{"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"},"5":{"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, \"Attempted to read past end of BoundedVec\");\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\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec<Field, 5> = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\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 mod trait_eq {\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}\n"},"61":{"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"},"99":{"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<let M: u32>(\n &mut self,\n randomness: Field,\n log: [u8; M],\n log_hash: Field\n ) {\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<let M: u32>(&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<let ARGS_COUNT: u32>(\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<let ARGS_COUNT: u32>(\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<let ARGS_COUNT: u32>(\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<let ARGS_COUNT: u32>(\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.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 {\n target: item.contract_address,\n call_context: item.public_inputs.call_context,\n function_data: item.function_data,\n args_hash: item.public_inputs.args_hash,\n returns_hash: item.public_inputs.returns_hash,\n caller_context,\n start_side_effect_counter,\n end_side_effect_counter\n }\n );\n\n PackedReturns::new(item.public_inputs.returns_hash)\n }\n\n pub fn call_public_function<let ARGS_COUNT: u32>(\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<let ARGS_COUNT: u32>(\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<let ARGS_COUNT: u32>(\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.get_compressed().hash());\n }\n\n pub fn set_public_teardown_function<let ARGS_COUNT: u32>(\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<let ARGS_COUNT: u32>(\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.get_compressed().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.start_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"}}}
|
|
1
|
+
{"transpiled":true,"noir_version":"0.32.0+92ff2fa2e944722e5c3fa43fb3363f093b8f1d12","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/+2b0W7aMBSGHRq6tGlTSAiBQgt0baXdpazt6N1eZnvuXU/aOwwHH/HXdZDRjmcsEQnFie3zf/6PbdIqRGJzJOtPpMpddT4VHw9q812d6387nhhj1S45o0A4O4FwngTCGTNyRgZOeY5VWa47ueY+ic16/FCJnWWiT6Be7AqkqyaqkGh1bKNd1W+nIIDwQsHHqo7Okfqkqh4BUzXYph3cowF34B5pncA92slIK1HmOBj3S7LF5o29no1yLGcqFvGnUMa6KVgYOxxr181Yn53laO2jwxw1q5zy0FWxE7imnJyDPuO3yxPqU+xzbX7EUJ5AW2pHbTrAK49LsV1L5zv6xVq/DNqcQr9E60fXlHfpV1+V5bmbbNtSfEc+1jJ26ib2uxzFmocpjC0Dfb45ulxJjQvx/oi0a/xiyYDp0gnTZk26Ge8ml1cQm+8p6eVZxutpvl1ovmXQ5gq87DnyMgJtYqLrXos+nyevKxmvb+FJ38DU9+BJv0Wf0ZM3GS+38CQ3MOUePMlb9Pk8+fZVxissPCkMTIUHT4oWfT5Pls3zw8DCk4GBaeDBk0GLPuPaaeZJaeFJaWAqPXhStugzevJTxhtaeDI0MA09eDJs0Wf05IeMV1l4UhmYKg+eVC36jHts83wysvBkZGAaefBk1KLP6MlSxhtbeDI2MI09eDJu0WdcO43+tYUn1wamaw+eoOY+3INAuatAuYsD4db1GddOs8dOLDyZGJgmHjxBzX24ywPh1vUZc/ki400tPJkamKYePEHNfbjzQLmLQLmHgXKXgXJXgXIfyvzW9Rmfv5s99sbCkxsD040HT1BzH+48UO5JoNzFgXDr+oxrp/n/4K2FJ7cGplsPnqDmPtyjQLn7B8Kt6zPOwVcZb2bhyczANPPgCWruwz0OlLsKlHsSKHcRKPcwUO4yUO7juvy/3PmBcMt79L7PH+dMy7dUYyINoXEKjTOFcgacc4jRZeOsa8zVHPQWTnzZ5EqfP3S9cK6/XMnYnx2NTca+dxO7+ZvjQcWidxrvDb49gn7EnLcHLTZpPUAuqfwb2lI7akP7BfHL99nuVPlxR7+Z1i+DNnfQ717rR9eUd+nfL1V2Odds5npPbNf5F2BytFc+4/vLAjSExknHDJjmbpieHI63xncaheBdjwvNszPNswza4F7uc289ch+5bbjxOeQM7lH9HO51tPHgb0UWEOMv7Ab1lOo2AAA=","debug_symbols":"ndpRattAGIXRveg5FN/fmhkpWymlOIlTDMEJsVMoJnuv3dIF9LxpJN237+kwl+lp//Dx4/vh+Px6mu6/XqaX18fd+fB6vJ4u0+ZLLX/ent52x9uL03n3fp7ut33cTfvj0/Vp1Ofd9Hx42U/386Z9fru7jVYYbTcyioxKRlsZzTJqMuoyGjKSIrZSxCxFzFLELEXMUsQsRcxSxCxFzFLELEXMUkSTIpoU0aSIJkU0KaJJEU2KaFJEkyKaFNGliC5FdCmiSxFdiuhSRJciuhTRpYguRQwpYkgRQ4oYUsSQIoYUMaSIIUUMKWJIEYsUsUgRixSxSBGLFLFIEYsUsUgRixSxSBGrFLFKEasUsUoRqxSxShGrFLFKEasUsUoR2WxoFVoVrba0mmnVaNVpNWi10IraCLURaiPURqiNUBuhNkJthNoItRFqo6iNojaK2ihqo6iNojaK2ihqg0AzJJoh0gyZZgg1Q6oZYs2Qa4ZgMySbIdoM2WYIN0O6GeLNkG+GgDMknCHiDBlnCDlDyhlizpBzhqAzJJ0h6gxZZwg7Q9oZ4s6Qd4bAMySeIfIMmWcIPUPqGWLPkHuG4DMknyH6DNlnCD9D+hniz5B/hgA0JKAhAg0ZaAhBQwoaYtCQg4YgNCShIQoNWWgIQ0MaGuLQkIeGQDQkoiESDZloCEVDKhpi0ZCLFrlokYsWuWiRixa5aJGLFrlokYsWuWiRixa5aJGLFrlokYsWuWiRixa5aJGLFrlokYsWuWiRixa5aJGLFrlokYsWuWiRi5Zd9CQXLXLRIhctctEiFy1y0SIXrf920evp5+79sHt42d/u9t4+fhwf/131vR7Pv97+frn++xs="},{"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"}}],"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"}}],"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"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"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":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"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"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"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_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"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"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","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":"end_gas_left","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"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"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"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","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":"end_gas_left","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"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"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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"}],"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":{"127":{"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, let N: u32, let M: u32>(\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<let N: u32>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array<let N: u32>(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"},"141":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader};\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; 2] {}\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) -> (u32, Field) {\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 let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n"},"146":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr","source":"use dep::protocol_types::{abis::{function_selector::FunctionSelector}, address::AztecAddress};\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) {}\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) {\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) {}\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) {\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\n"},"247":{"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<let N: u32>(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\nfn 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<let N: u32>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<let N: u32>(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"},"27":{"path":"std/hash/mod.nr","source":"mod poseidon;\nmod mimc;\nmod poseidon2;\nmod keccak;\n\nuse crate::default::Default;\nuse crate::uint128::U128;\nuse crate::sha256::{digest, sha256_var};\nuse crate::collections::vec::Vec;\nuse crate::embedded_curve_ops::{EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_slice};\n\n#[foreign(sha256)]\n// docs:start:sha256\npub fn sha256<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:sha256\n{}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment<let N: u32>(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\npub fn pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {\n __pedersen_hash_with_separator(input, separator)\n}\n\nfn pedersen_commitment_with_separator<let N: u32>(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let value = __pedersen_commitment_with_separator(input, separator);\n if (value[0] == 0) & (value[1] == 0) {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n } else {\n EmbeddedCurvePoint { x: value[0], y: value[1], is_infinite: false }\n }\n}\n\nfn pedersen_commitment_with_separator_noir<let N: u32>(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constraint the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\nfn pedersen_hash_with_separator_noir<let N: u32>(input: [Field; N], separator: u32) -> Field {\n let mut scalars: Vec<EmbeddedCurveScalar> = Vec::from_slice([EmbeddedCurveScalar { lo: 0, hi: 0 }; N].as_slice()); //Vec::new();\n\n for i in 0..N {\n scalars.set(i, from_field_unsafe(input[i]));\n }\n scalars.push(EmbeddedCurveScalar { lo: N as Field, hi: 0 });\n let domain_generators :[EmbeddedCurvePoint; N]= derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n let mut vec_generators = Vec::from_slice(domain_generators.as_slice());\n let length_generator : [EmbeddedCurvePoint; 1] = derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n vec_generators.push(length_generator[0]);\n multi_scalar_mul_slice(vec_generators.slice, scalars.slice)[0]\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash<let N: u32>(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n __pedersen_hash_with_separator(input, 0)\n}\n\n#[foreign(pedersen_hash)]\nfn __pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {}\n\n#[foreign(pedersen_commitment)]\nfn __pedersen_commitment_with_separator<let N: u32>(input: [Field; N], separator: u32) -> [Field; 2] {}\n\n#[field(bn254)]\nfn derive_generators<let N: u32, let M: u32>(domain_separator_bytes: [u8; M], starting_index: u32) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n crate::assert_constant(starting_index);\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators<let N: u32, let M: u32>(\n domain_separator_bytes: [u8; M],\n starting_index: u32\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n // Same as from_field but:\n // does not assert the limbs are 128 bits\n // does not assert the decomposition does not overflow the EmbeddedCurveScalar\n fn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n let (xlo, xhi) = crate::field::bn254::decompose_hint(scalar);\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes(32).as_array();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n// docs:start:keccak256\npub fn keccak256<let N: u32>(input: [u8; N], message_size: u32) -> [u8; 32]\n// docs:end:keccak256\n{\n crate::hash::keccak::keccak256(input, message_size)\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation<let N: u32>(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n#[foreign(sha256_compression)]\npub fn sha256_compression(_input: [u32; 16], _state: [u32; 8]) -> [u32; 8] {}\n\n// Generic hashing support. \n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\ntrait Hash{\n fn hash<H>(self, state: &mut H) where H: Hasher;\n}\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\ntrait Hasher{\n fn finish(self) -> Field;\n \n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\ntrait BuildHasher<H> where H: Hasher{\n fn build_hasher(self) -> H;\n}\n\nstruct BuildHasherDefault<H>;\n\nimpl<H> BuildHasher<H> for BuildHasherDefault<H>\nwhere \n H: Hasher + Default\n{\n fn build_hasher(_self: Self) -> H{\n H::default()\n }\n}\n\nimpl<H> Default for BuildHasherDefault<H>\nwhere \n H: Hasher + Default\n{\n fn default() -> Self{\n BuildHasherDefault{}\n } \n}\n\nimpl Hash for Field {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self);\n }\n}\n\nimpl Hash for u8 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash<H>(_self: Self, _state: &mut H) where H: Hasher {}\n}\n\nimpl Hash for U128 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self.lo as Field);\n H::write(state, self.hi as Field);\n }\n}\n\nimpl<T, let N: u32> Hash for [T; N] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<T> Hash for [T] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<A, B> Hash for (A, B) where A: Hash, B: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl<A, B, C> Hash for (A, B, C) where A: Hash, B: Hash, C: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl<A, B, C, D> Hash for (A, B, C, D) where A: Hash, B: Hash, C: Hash, D: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl<A, B, C, D, E> Hash for (A, B, C, D, E) where A: Hash, B: Hash, C: Hash, D: Hash, E: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1), 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1), EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false\n }\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2), 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2), EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3), 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3), EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4), 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4), EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5), 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5), EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6), 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6), EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7), 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7), EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false\n }\n );\n}\n\n"},"270":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"struct Reader<let N: u32> {\n data: [Field; N],\n offset: u32,\n}\n\nimpl<let N: u32> 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<let K: u32>(&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, let K: u32>(&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, let K: u32, let C: u32>(&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"},"297":{"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,\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"},"405":{"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"},"5":{"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, \"Attempted to read past end of BoundedVec\");\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\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec<Field, 5> = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\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 mod trait_eq {\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}\n"},"61":{"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"},"99":{"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::{enqueue_public_function_call_internal, set_public_teardown_function_call_internal}\n}\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext, function_selector::FunctionSelector, gas::Gas,\n max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_request::PublicCallRequest, public_call_stack_item::PublicCallStackItem,\n public_call_stack_item_compressed::PublicCallStackItemCompressed, read_request::ReadRequest,\n note_hash::NoteHash, 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_requests : BoundedVec<PublicCallRequest, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n public_teardown_call_request: PublicCallRequest,\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_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\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_requests: self.public_call_requests.storage,\n public_teardown_call_request: self.public_teardown_call_request,\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<let M: u32>(\n &mut self,\n randomness: Field,\n log: [u8; M],\n log_hash: Field\n ) {\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<let M: u32>(&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<let ARGS_COUNT: u32>(\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<let ARGS_COUNT: u32>(\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<let ARGS_COUNT: u32>(\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<let ARGS_COUNT: u32>(\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 (end_side_effect_counter, returns_hash) = 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 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 let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n self.private_call_requests.push(\n PrivateCallRequest {\n contract_address,\n call_context,\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter\n }\n );\n\n PackedReturns::new(returns_hash)\n }\n\n pub fn call_public_function<let ARGS_COUNT: u32>(\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<let ARGS_COUNT: u32>(\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<let ARGS_COUNT: u32>(\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 counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n is_delegate_call\n );\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n let item = PublicCallStackItemCompressed {\n contract_address,\n call_context,\n args_hash,\n returns_hash: 0,\n revert_code: 0,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty()\n };\n\n let call_request = PublicCallRequest { item, counter };\n self.public_call_requests.push(call_request);\n }\n\n pub fn set_public_teardown_function<let ARGS_COUNT: u32>(\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<let ARGS_COUNT: u32>(\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 counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n is_delegate_call\n );\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n let item = PublicCallStackItemCompressed {\n contract_address,\n call_context,\n args_hash,\n returns_hash: 0,\n revert_code: 0,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty()\n };\n\n self.public_teardown_call_request = PublicCallRequest {\n item,\n counter,\n };\n }\n\n fn generate_call_context(\n self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> CallContext {\n let msg_sender = if is_delegate_call {\n self.msg_sender()\n } else {\n self.this_address()\n };\n let storage_contract_address = if is_delegate_call {\n self.this_address()\n } else {\n contract_address\n };\n CallContext { msg_sender, storage_contract_address, function_selector, is_static_call, is_delegate_call }\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_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\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"}}}
|