@aztec/protocol-contracts 0.59.0 → 0.61.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"transpiled":true,"noir_version":"0.35.0+df29d315d6b71131ffe0180c97130395edb2e4ba-x8664","name":"ContractInstanceDeployer","functions":[{"name":"deploy","is_unconstrained":false,"custom_attributes":["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":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"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":"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":"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":"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":"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":"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":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"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":"slot_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":"aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"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":"aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"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":"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":"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":"aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"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":"salt","type":{"kind":"field"},"visibility":"private"},{"name":"contract_class_id","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::contract_class_id::ContractClassId"},"visibility":"private"},{"name":"initialization_hash","type":{"kind":"field"},"visibility":"private"},{"name":"public_keys","type":{"fields":[{"name":"npk_m","type":{"fields":[{"name":"inner","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"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::NpkM"}},{"name":"ivpk_m","type":{"fields":[{"name":"inner","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"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::IvpkM"}},{"name":"ovpk_m","type":{"fields":[{"name":"inner","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"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::OvpkM"}},{"name":"tpk_m","type":{"fields":[{"name":"inner","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"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::TpkM"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::PublicKeys"},"visibility":"private"},{"name":"universal_deploy","type":{"kind":"boolean"},"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":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"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":"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":"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":"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":"aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"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":"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":"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":"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":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"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":"aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"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":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"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":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"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":"aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"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":"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":"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":"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":"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":"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":"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":"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":"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":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"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":"slot_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":"aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"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":"aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"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":"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":"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":"aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"databus"}},"bytecode":"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","debug_symbols":"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","brillig_names":["debug_log_oracle_wrapper","build_msg_block_iter","pad_msg_block","attach_len_to_msg_block","emit_unencrypted_log_private_oracle_wrapper","directive_invert","directive_integer_quotient"]},{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{"14336010898202591232":{"error_kind":"fmtstring","item_types":[],"length":16}},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"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/9VYzXLaMBAWYDB2AiEmKemNXtuLnRCgN8/0J733CRp+Lj2knckDuDNtn7uoaO2PZctQWB3YGY9krfztt7uS11bNrKW9umqu33Rty2wLzcldmx4nmSJW6pNn7UR41k+EZ+NEeAaKPGsCT9sGrm/3nd1zoVnvxy0lPmwT3QC92QFUY0at/IR+17Wfn7/Mvg6fn56G88XiWzn9t2sj19YBTjGPWWS2Y6OFP01Hs8hsijL/u8hhhn7w7wm/7Qc/Jd7vigoffSG7Ddc+FFUsH+AZKx3XxyVHuKSrg+490zVA94HpcMl/ZDrcJsSJ4tYCXxTX1dR3Xsi3EHyr/aM1poodjlGsY+N1jWaU84jx4fyJT4fmFBWfFtMFoIuYrgk6ir9thzCP5z6EeW9gnK/Jhtlew6SnnGOsfaypwAP+SkZS3HlOgmLTNuow7gHEc+j6/dX1yc0JIGZWwsKLT2V9bTv8JvAmm8i9zubzfpONvTYV77/+wFyy04Axsnnh7lugo2d3YQUCVk+Y32JYoYCFY+S33ROvXP/MrPP3g/DN9ntC7xt4/FZ6Z+rhT8paHPnhvyD82Av+qMQ/A3zNvUL4537iMyb8jh/88luo6wX/tozPBeAbvfhnVJdoP6MNsn3pJfdZts83A9qPGVdf3wyXjA+PD9Ynq0sErj1Bx/doIthJBDuUhz57Plfxe7yUuPYP5CphdRWxIkWsQ32kfFyx53N3nx4lk5HE9UrR744iVlsR69B1Qvm4Zs/n7j49SsZiPq4V/dbMx7kiVqiIpblvNeNFeZRqnZXctemRwrni/xTapDrfZPO/u5ZqzgtTCa/XAxhXrNe3+9brAeOKfIh3LOiOOeOcjZd3j/PlaP44WUwh3gPGlY/hGaK9boT5Uu2nWL80XmKdSv/FNxBXKwHoBkzXBB1xxP/iiGFq898n/mi/J+jwn+N/cpmYzbWWMJ/x/CdX8bc6G2sDNt+XkZdYp/f77kuyHzOuynx2nr1hfPh3dCxw7Qk6XpdiwU4s2DlFLH5+jTG0+4PiFBSVXiuXk2l1lkXvITzLQglAj/N/ufvEyGJ9+ANQAijv/B0AAA==","debug_symbols":"tdnBaoNAEIDhd9lzDq66OzN5lVKCJhoWRIOaQhHfvZs2lEDO/0V2dPxv32k3d+na+/WUxn5a3PFjc8N0btY0jXna9oNr5zQM6Xp6fe2Kx6Ouf/eXWzM+xmVt5tUdq/rguvGSD5b/7tPQ5aPm89umlM9Nkf/NYPvnwdUBK0esLFhZsbJR5VBgZY+VS6xcYWXMYMAMBsxgwAwGzGDADEbMYMQMRsxgxAxGzGDEDEbMYMQMRsxgxAwKZlAwg4IZFMygYAYFMyiYQcEMCmZQMIOKGVTMoGIGFTOomEHFDCpmUDGDihlUzKBhBg0zaJhBwwwaZtAwg4YZNMygYQYNM+iLgkt7Ll1y6YpL11w6cOnIpYVLK5fmNHpOo+c0ekjjnqevZk5NO3TPm4f+Pp5fLiLW79vfl7z8Aw==","brillig_names":["compute_note_hash_and_optionally_a_nullifier"]}],"outputs":{"globals":{},"structs":{"events":[{"fields":[{"name":"DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE","type":{"kind":"field"}},{"name":"address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"version","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"salt","type":{"kind":"field"}},{"name":"contract_class_id","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::contract_class_id::ContractClassId"}},{"name":"initialization_hash","type":{"kind":"field"}},{"name":"public_keys","type":{"fields":[{"name":"npk_m","type":{"fields":[{"name":"inner","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"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::NpkM"}},{"name":"ivpk_m","type":{"fields":[{"name":"inner","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"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::IvpkM"}},{"name":"ovpk_m","type":{"fields":[{"name":"inner","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"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::OvpkM"}},{"name":"tpk_m","type":{"fields":[{"name":"inner","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"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::TpkM"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::PublicKeys"}},{"name":"deployer","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}}],"kind":"struct","path":"ContractInstanceDeployer::ContractInstanceDeployed"}],"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"salt","type":{"kind":"field"}},{"name":"contract_class_id","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::contract_class_id::ContractClassId"}},{"name":"initialization_hash","type":{"kind":"field"}},{"name":"public_keys","type":{"fields":[{"name":"npk_m","type":{"fields":[{"name":"inner","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"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::NpkM"}},{"name":"ivpk_m","type":{"fields":[{"name":"inner","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"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::IvpkM"}},{"name":"ovpk_m","type":{"fields":[{"name":"inner","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"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::OvpkM"}},{"name":"tpk_m","type":{"fields":[{"name":"inner","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"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::TpkM"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::PublicKeys"}},{"name":"universal_deploy","type":{"kind":"boolean"}}],"kind":"struct","path":"ContractInstanceDeployer::deploy_parameters"}}],"kind":"struct","path":"ContractInstanceDeployer::deploy_abi"}]}},"file_map":{"103":{"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, notify_set_min_revertible_side_effect_counter,\n set_public_teardown_function_call_internal\n}\n}\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext, function_selector::FunctionSelector, max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_request::PublicCallRequest, 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, PUBLIC_DISPATCH_SELECTOR\n},\n header::Header, messaging::l2_to_l1_message::L2ToL1Message, traits::Empty\n};\n\n// When finished, one can call .finish() to convert back to the abi\npub struct 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 fn push_nullifier(&mut self, nullifier: Field) {\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() });\n }\n\n fn push_nullifier_for_note_hash(&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 notify_set_min_revertible_side_effect_counter(self.min_revertible_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)\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 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 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 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(\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(\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(\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(\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 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 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 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 // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = 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 // Public calls are rerouted through the dispatch function.\n let function_selector = comptime {\n FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR)\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 call_request = PublicCallRequest { contract_address, call_context, args_hash, 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 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(\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 // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = 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 function_selector = comptime {\n FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR)\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.public_teardown_call_request = PublicCallRequest {\n contract_address,\n call_context,\n args_hash,\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"},"121":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/utils/to_bytes.nr","source":"pub fn arr_to_be_bytes_arr<let L: u32>(fields: [Field; L]) -> [u8; L * 32] {\n let mut bytes = [0 as u8; L * 32];\n for i in 0..L {\n // Note that bytes.append() results in bound error\n let to_add: [u8; 32] = fields[i].to_be_bytes();\n for j in 0..32 {\n bytes[i * 32 + j] = to_add[j];\n }\n }\n bytes\n}\n\n// each character of a string is converted into a byte\n// then an ACVM field via the oracle => we recreate here\npub fn str_to_be_bytes_arr<let L: u32>(string: str<L>) -> [u8; L * 32] {\n let chars_bytes: [u8; L] = string.as_bytes();\n let mut bytes = [0 as u8; L * 32];\n for i in 0..L {\n let to_add: [u8; 32] = (chars_bytes[i] as Field).to_be_bytes();\n for j in 0..32 {\n bytes[i * 32 + j] = to_add[j];\n }\n }\n bytes\n}\n"},"156":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/logs.nr","source":"use dep::protocol_types::address::AztecAddress;\n\n/// Informs the simulator that an encrypted note log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_encrypted_note_log<let M: u32>(note_hash_counter: u32, encrypted_note: [u8; M], counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_encrypted_note_log_oracle_wrapper(note_hash_counter, encrypted_note, counter)\n }\n}\n\n/// Informs the simulator that an encrypted event log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_encrypted_event_log<let M: u32>(contract_address: AztecAddress, randomness: Field, encrypted_event: [u8; M], counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_encrypted_event_log_oracle_wrapper(contract_address, randomness, encrypted_event, counter)\n }\n}\n\n/// Informs the simulator that an unencrypted log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_unencrypted_log_private<T>(contract_address: AztecAddress, message: T, counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_unencrypted_log_private_oracle_wrapper(contract_address, message, counter)\n }\n}\n\nunconstrained fn emit_encrypted_note_log_oracle_wrapper<let M: u32>(note_hash_counter: u32, encrypted_note: [u8; M], counter: u32) {\n emit_encrypted_note_log_oracle(note_hash_counter, encrypted_note, counter)\n}\n\nunconstrained fn emit_encrypted_event_log_oracle_wrapper<let M: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n encrypted_event: [u8; M],\n counter: u32\n) {\n emit_encrypted_event_log_oracle(contract_address, randomness, encrypted_event, counter)\n}\n\nunconstrained fn emit_unencrypted_log_private_oracle_wrapper<T>(contract_address: AztecAddress, message: T, counter: u32) {\n let _ = emit_unencrypted_log_private_oracle(contract_address, message, counter);\n}\n\n/// Temporary substitute for `emit_unencrypted_log_private` that is used for handling contract class registration. This\n/// variant returns the log hash, which would be too large to compute inside a circuit.\npub unconstrained fn emit_contract_class_unencrypted_log_private<let N: u32>(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32\n) -> Field {\n emit_contract_class_unencrypted_log_private_oracle(contract_address, message, counter)\n}\n\n// = 480 + 32 * N bytes\n#[oracle(emitEncryptedNoteLog)]\nunconstrained fn emit_encrypted_note_log_oracle<let M: u32>(\n _note_hash_counter: u32,\n _encrypted_note: [u8; M],\n _counter: u32\n) {}\n\n#[oracle(emitEncryptedEventLog)]\nunconstrained fn emit_encrypted_event_log_oracle<let M: u32>(\n _contract_address: AztecAddress,\n _randomness: Field,\n _encrypted_event: [u8; M],\n _counter: u32\n) {}\n\n#[oracle(emitUnencryptedLog)]\nunconstrained fn emit_unencrypted_log_private_oracle<T>(\n _contract_address: AztecAddress,\n _message: T,\n _counter: u32\n) -> Field {}\n\n#[oracle(emitContractClassUnencryptedLog)]\nunconstrained fn emit_contract_class_unencrypted_log_private_oracle<let N: u32>(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32\n) -> Field {}\n"},"184":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, GENERATOR_INDEX__FUNCTION_ARGS},\n point::Point, traits::Hash,\n hash::{sha256_to_field, poseidon2_hash_with_separator, poseidon2_hash_with_separator_slice}\n};\nuse crate::utils::to_bytes::{arr_to_be_bytes_arr, str_to_be_bytes_arr};\n\npub use dep::protocol_types::hash::{compute_siloed_nullifier, pedersen_hash};\n\npub fn pedersen_commitment<let N: u32>(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\n}\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash<let N: u32>(contract_address: AztecAddress, log: [u8; N]) -> Field {\n let mut hash_bytes = [0; N + 36];\n // Address is converted to 32 bytes in ts\n let address_bytes: [u8; 32] = contract_address.to_field().to_be_bytes();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let len_bytes: [u8; 4] = (N as Field).to_be_bytes();\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] = log[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: [u8; 32] = sender.to_field().to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n let recipient_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let version_bytes: [u8; 32] = version.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let secret_hash_bytes: [u8; 32] = secret_hash.to_be_bytes();\n\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 poseidon2_hash_with_separator(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER\n )\n}\n\npub struct 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 if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nunconstrained fn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..100 {\n input.add(i as Field);\n }\n let hash = input.hash();\n dep::std::println(hash);\n assert(hash == 0x19b0d74feb06ebde19edd85a28986c97063e84b3b351a8b666c7cac963ce655f);\n}\n\n#[test]\nunconstrained fn 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 serialized_log = arr_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0095b2d17ab72f4b27a341f7ac63e49ec73935ae8c9181a0ac02023eb12f3284);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\n let serialized_log: [u8; 32] = log.to_field().to_be_bytes();\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0083ab647dfb26e7ddee90a0f4209d049d4660cab42000c544b986aaa84c55a3);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"dummy\";\n let serialized_log = str_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x00629e88ebd6374f44aa6cfe07e251ecf07213ebc7267e8f6b578ae57ffd6c20);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"Hello this is a string\";\n let serialized_log = str_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0098637962f7d34fa202b7ffad8a07a238c5d1fd897b82a108f7f467fa73b841);\n}\n"},"193":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr","source":"use crate::utils::field::field_from_bytes;\nuse crate::meta::{derive_deserialize, derive_serialize};\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic\n// if a value can actually be zero. In a future refactor, we can\n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\npub trait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field {\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for u1 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u8 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u32 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u64 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for U128 {\n fn empty() -> Self {\n U128::from_integer(0)\n }\n}\n\npub fn is_empty<T>(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array<T, let N: u32>(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\npub trait Hash {\n fn hash(self) -> Field;\n}\n\npub trait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u1 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u8 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u32 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u64 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl<let N: u32> ToField for str<N> {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\npub trait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool {\n fn from_field(value: Field) -> Self {\n value as bool\n }\n}\nimpl FromField for u1 {\n fn from_field(value: Field) -> Self {\n value as u1\n }\n}\nimpl FromField for u8 {\n fn from_field(value: Field) -> Self {\n value as u8\n }\n}\nimpl FromField for u32 {\n fn from_field(value: Field) -> Self {\n value as u32\n }\n}\nimpl FromField for u64 {\n fn from_field(value: Field) -> Self {\n value as u64\n }\n}\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\n#[derive_via(derive_serialize)]\npub trait Serialize<let N: u32> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl<let N: u32> Serialize<N> for str<N> {\n fn serialize(self) -> [Field; N] {\n let bytes = self.as_bytes();\n let mut fields = [0; N];\n for i in 0..bytes.len() {\n fields[i] = bytes[i] as Field;\n }\n fields\n }\n}\n\n// docs:start:deserialize\n#[derive_via(derive_deserialize)]\npub trait Deserialize<let N: u32> {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl <let N: u32> Deserialize<N> for str<N> {\n fn deserialize(fields: [Field; N]) -> Self {\n str<N>::from(fields.map(|value| value as u8))\n }\n}\n"},"216":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n abis::function_selector::FunctionSelector,\n address::{\n partial_address::PartialAddress, public_keys_hash::PublicKeysHash,\n salted_initialization_hash::SaltedInitializationHash\n},\n constants::{AZTEC_ADDRESS_LENGTH, FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n contract_class_id::ContractClassId,\n hash::{poseidon2_hash_with_separator, private_functions_root_from_siblings},\n merkle_tree::membership::MembershipWitness,\n traits::{Empty, FromField, ToField, Serialize, Deserialize}, utils\n};\n\n// Aztec address\npub struct 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 { inner: 0 }\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_with_separator(\n [pub_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1\n )\n )\n }\n\n pub fn compute_from_private_function(\n function_selector: FunctionSelector,\n functino_vk_hash: Field,\n function_leaf_membership_witness: MembershipWitness<FUNCTION_TREE_HEIGHT>,\n contract_class_artifact_hash: Field,\n contract_class_public_bytecode_commitment: Field,\n salted_initialization_hash: SaltedInitializationHash,\n public_keys_hash: PublicKeysHash\n ) -> Self {\n let private_functions_root = private_functions_root_from_siblings(\n function_selector,\n functino_vk_hash,\n function_leaf_membership_witness.leaf_index,\n function_leaf_membership_witness.sibling_path\n );\n\n let contract_class_id = ContractClassId::compute(\n contract_class_artifact_hash,\n private_functions_root,\n contract_class_public_bytecode_commitment\n );\n\n // Compute contract address using the preimage which includes the class_id.\n let partial_address = PartialAddress::compute_from_salted_initialization_hash(contract_class_id, salted_initialization_hash);\n\n AztecAddress::compute(public_keys_hash, partial_address)\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 = 0x23ce9be3fa3c846b0f9245cc796902e731d04f086e8a42473bb29e405fc98075;\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"},"218":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr","source":"use crate::{\n address::{aztec_address::AztecAddress}, constants::GENERATOR_INDEX__PARTIAL_ADDRESS,\n hash::poseidon2_hash_with_separator, traits::ToField\n};\n\n// Salted initialization hash. Used in the computation of a partial address.\npub struct SaltedInitializationHash {\n inner: Field\n}\n\nimpl ToField for SaltedInitializationHash {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl SaltedInitializationHash {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(salt: Field, initialization_hash: Field, deployer: AztecAddress) -> Self {\n SaltedInitializationHash::from_field(\n poseidon2_hash_with_separator(\n [\n salt,\n initialization_hash,\n deployer.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\n )\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"221":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr","source":"use crate::{\n address::{salted_initialization_hash::SaltedInitializationHash, aztec_address::AztecAddress},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator, traits::{ToField, Serialize, Deserialize}\n};\n\nglobal PARTIAL_ADDRESS_LENGTH: u32 = 1;\n\n// Partial address\npub struct PartialAddress {\n inner : Field\n}\n\nimpl ToField for PartialAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl Serialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn serialize(self: Self) -> [Field; PARTIAL_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn deserialize(fields: [Field; PARTIAL_ADDRESS_LENGTH]) -> Self {\n PartialAddress { inner: fields[0] }\n }\n}\n\nimpl PartialAddress {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(\n contract_class_id: ContractClassId,\n salt: Field,\n initialization_hash: Field,\n deployer: AztecAddress\n ) -> Self {\n PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n SaltedInitializationHash::compute(salt, initialization_hash, deployer)\n )\n }\n\n pub fn compute_from_salted_initialization_hash(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash\n ) -> Self {\n PartialAddress::from_field(\n poseidon2_hash_with_separator(\n [\n contract_class_id.to_field(),\n salted_initialization_hash.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\n )\n }\n\n pub fn to_field(self) -> Field {\n self.inner\n }\n\n pub fn is_zero(self) -> bool {\n self.to_field() == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"24":{"path":"std/embedded_curve_ops.nr","source":"use crate::ops::arith::{Add, Sub, Neg};\nuse crate::cmp::Eq;\n\n/// A point on the embedded elliptic curve\n/// By definition, the base field of the embedded curve is the scalar field of the proof system curve, i.e the Noir Field.\n/// x and y denotes the Weierstrass coordinates of the point, if is_infinite is false.\npub struct EmbeddedCurvePoint {\n pub x: Field,\n pub y: Field,\n pub is_infinite: bool\n}\n\nimpl EmbeddedCurvePoint {\n /// Elliptic curve point doubling operation\n /// returns the doubled point of a point P, i.e P+P\n pub fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n /// Returns the null element of the curve; 'the point at infinity'\n pub fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n /// Adds two points P+Q, using the curve addition formula, and also handles point at infinity\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n /// Points subtraction operation, using addition and negation\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n /// Negates a point P, i.e returns -P, by negating the y coordinate.\n /// If the point is at infinity, then the result is also at infinity.\n fn neg(self) -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: self.x, y: -self.y, is_infinite: self.is_infinite }\n }\n}\n\nimpl Eq for EmbeddedCurvePoint {\n /// Checks whether two points are equal\n fn eq(self: Self, b: EmbeddedCurvePoint) -> bool {\n (self.is_infinite & b.is_infinite)\n | ((self.is_infinite == b.is_infinite) & (self.x == b.x) & (self.y == b.y))\n }\n}\n\n/// Scalar for the embedded curve represented as low and high limbs\n/// By definition, the scalar field of the embedded curve is base field of the proving system curve.\n/// It may not fit into a Field element, so it is represented with two Field elements; its low and high limbs.\npub struct EmbeddedCurveScalar {\n pub lo: Field,\n pub hi: Field,\n}\n\nimpl EmbeddedCurveScalar {\n pub fn new(lo: Field, hi: Field) -> Self {\n EmbeddedCurveScalar { lo, hi }\n }\n\n #[field(bn254)]\n pub fn from_field(scalar: Field) -> EmbeddedCurveScalar {\n let (a,b) = crate::field::bn254::decompose(scalar);\n EmbeddedCurveScalar { lo: a, hi: b }\n }\n\n //Bytes to scalar: take the first (after the specified offset) 16 bytes of the input as the lo value, and the next 16 bytes as the hi value\n #[field(bn254)]\n pub(crate) fn from_bytes(bytes: [u8; 64], offset: u32) -> EmbeddedCurveScalar {\n let mut v = 1;\n let mut lo = 0 as Field;\n let mut hi = 0 as Field;\n for i in 0..16 {\n lo = lo + (bytes[offset+31 - i] as Field) * v;\n hi = hi + (bytes[offset+15 - i] as Field) * v;\n v = v * 256;\n }\n let sig_s = crate::embedded_curve_ops::EmbeddedCurveScalar { lo, hi };\n sig_s\n }\n}\n\nimpl Eq for EmbeddedCurveScalar {\n fn eq(self, other: Self) -> bool {\n (other.hi == self.hi) & (other.lo == self.lo)\n }\n}\n\n// Computes a multi scalar multiplication over the embedded curve.\n// For bn254, We have Grumpkin and Baby JubJub.\n// For bls12-381, we have JubJub and Bandersnatch.\n//\n// The embedded curve being used is decided by the \n// underlying proof system.\n// docs:start:multi_scalar_mul\npub fn multi_scalar_mul<let N: u32>(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N]\n) -> EmbeddedCurvePoint\n// docs:end:multi_scalar_mul\n{\n let point_array = multi_scalar_mul_array_return(points, scalars);\n EmbeddedCurvePoint { x: point_array[0], y: point_array[1], is_infinite: point_array[2] as bool }\n}\n\n#[foreign(multi_scalar_mul)]\nfn multi_scalar_mul_array_return<let N: u32>(points: [EmbeddedCurvePoint; N], scalars: [EmbeddedCurveScalar; N]) -> [Field; 3] {}\n\n#[foreign(multi_scalar_mul)]\npub(crate) fn multi_scalar_mul_slice(points: [EmbeddedCurvePoint], scalars: [EmbeddedCurveScalar]) -> [Field; 3] {}\n\n// docs:start:fixed_base_scalar_mul\npub fn fixed_base_scalar_mul(scalar: EmbeddedCurveScalar) -> EmbeddedCurvePoint\n// docs:end:fixed_base_scalar_mul\n{\n let g1 = EmbeddedCurvePoint { x: 1, y: 17631683881184975370165255887551781615748388533673675138860, is_infinite: false };\n multi_scalar_mul([g1], [scalar])\n}\n\n/// This function only assumes that the points are on the curve\n/// It handles corner cases around the infinity point causing some overhead compared to embedded_curve_add_not_nul and embedded_curve_add_unsafe\n// This is a hack because returning an `EmbeddedCurvePoint` from a foreign function in brillig returns a [BrilligVariable::SingleAddr; 2] rather than BrilligVariable::BrilligArray\n// as is defined in the brillig bytecode format. This is a workaround which allows us to fix this without modifying the serialization format.\n// docs:start:embedded_curve_add\npub fn embedded_curve_add(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n // docs:end:embedded_curve_add\n let x_coordinates_match = point1.x == point2.x;\n let y_coordinates_match = point1.y == point2.y;\n let double_predicate = (x_coordinates_match & y_coordinates_match);\n let infinity_predicate = (x_coordinates_match & !y_coordinates_match);\n let point1_1 = EmbeddedCurvePoint { x: point1.x + (x_coordinates_match as Field), y: point1.y, is_infinite: x_coordinates_match };\n // point1_1 is guaranteed to have a different abscissa than point2\n let mut result = embedded_curve_add_unsafe(point1_1, point2);\n result.is_infinite = x_coordinates_match;\n\n // dbl if x_match, y_match\n let double = embedded_curve_add_unsafe(point1, point1);\n result = if double_predicate { double } else { result };\n\n // infinity if x_match, !y_match\n if point1.is_infinite {\n result= point2;\n }\n if point2.is_infinite {\n result = point1;\n }\n let mut result_is_infinity = infinity_predicate & (!point1.is_infinite & !point2.is_infinite);\n result.is_infinite = result_is_infinity | (point1.is_infinite & point2.is_infinite);\n result\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(_point1: EmbeddedCurvePoint, _point2: EmbeddedCurvePoint) -> [Field; 3] {}\n\n/// This function assumes that:\n/// The points are on the curve, and\n/// The points don't share an x-coordinate, and\n/// Neither point is the infinity point.\n/// If it is used with correct input, the function ensures the correct non-zero result is returned.\n/// Except for points on the curve, the other assumptions are checked by the function. It will cause assertion failure if they are not respected.\npub fn embedded_curve_add_not_nul(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n assert(point1.x != point2.x);\n assert(!point1.is_infinite);\n assert(!point2.is_infinite);\n embedded_curve_add_unsafe(point1, point2)\n}\n\n/// Unsafe ec addition\n/// If the inputs are the same, it will perform a doubling, but only if point1 and point2 are the same variable.\n/// If they have the same value but are different variables, the result will be incorrect because in this case\n/// it assumes (but does not check) that the points' x-coordinates are not equal.\n/// It also assumes neither point is the infinity point.\npub fn embedded_curve_add_unsafe(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n let point_array = embedded_curve_add_array_return(point1, point2);\n let x = point_array[0];\n let y = point_array[1];\n\n EmbeddedCurvePoint { x, y, is_infinite: false }\n}\n"},"253":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr","source":"/// Utility function to console.log data in the acir simulator.\n/// Example:\n/// debug_log(\"blah blah this is a debug string\");\npub fn debug_log<let N: u32>(msg: str<N>) {\n debug_log_format(msg, []);\n}\n\n/// Utility function to console.log data in the acir simulator. This variant receives a format string in which the\n/// `${k}` tokens will be replaced with the k-eth value in the `args` array.\n/// Examples:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\npub fn debug_log_format<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n debug_log_oracle_wrapper(msg, args)\n };\n}\n\npub unconstrained fn debug_log_oracle_wrapper<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n#[oracle(debugLog)]\nunconstrained fn debug_log_oracle<let M: u32>(_msg: str<M>, args: [Field]) {}\n"},"254":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr","source":"use crate::{\n address::public_keys_hash::PublicKeysHash, constants::GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n hash::poseidon2_hash_with_separator, point::POINT_LENGTH,\n traits::{Deserialize, Serialize, Empty, is_empty, Hash}\n};\n\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\n\npub global PUBLIC_KEYS_LENGTH: u32 = 12;\n\npub struct PublicKeys {\n npk_m: NpkM,\n ivpk_m: IvpkM,\n ovpk_m: OvpkM,\n tpk_m: TpkM,\n}\n\npub trait ToPoint {\n fn to_point(self) -> Point;\n}\n\npub struct NpkM {\n inner: Point\n}\n\nimpl ToPoint for NpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for NpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\n// Note: If we store npk_m_hash directly we can remove this trait implementation. See #8091\nimpl Hash for NpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\npub struct IvpkM {\n inner: Point\n}\n\nimpl ToPoint for IvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for IvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct OvpkM {\n inner: Point\n}\n\nimpl Hash for OvpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nimpl ToPoint for OvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for OvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct TpkM {\n inner: Point\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for TpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\nimpl Empty for PublicKeys {\n fn empty() -> Self {\n PublicKeys {\n npk_m: NpkM { inner: Point::empty() },\n ivpk_m: IvpkM { inner: Point::empty() },\n ovpk_m: OvpkM { inner: Point::empty() },\n tpk_m: TpkM { inner: Point::empty() }\n }\n }\n}\n\nimpl Eq for PublicKeys {\n fn eq(self, other: PublicKeys) -> bool {\n (self.npk_m.inner == other.npk_m.inner)\n & (self.ivpk_m.inner == other.ivpk_m.inner)\n & (self.ovpk_m.inner == other.ovpk_m.inner)\n & (self.tpk_m.inner == other.tpk_m.inner)\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(\n if is_empty(self) {\n 0\n } else {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field)\n }\n )\n }\n}\n\nimpl Serialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.inner.x,\n self.npk_m.inner.y,\n self.npk_m.inner.is_infinite as Field,\n self.ivpk_m.inner.x,\n self.ivpk_m.inner.y,\n self.ivpk_m.inner.is_infinite as Field,\n self.ovpk_m.inner.x,\n self.ovpk_m.inner.y,\n self.ovpk_m.inner.is_infinite as Field,\n self.tpk_m.inner.x,\n self.tpk_m.inner.y,\n self.tpk_m.inner.is_infinite as Field\n ]\n }\n}\n\nimpl Deserialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM { inner: Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x: serialized[3], y: serialized[4], is_infinite: serialized[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x: serialized[6], y: serialized[7], is_infinite: serialized[8] as bool } },\n tpk_m: TpkM { inner: Point { x: serialized[9], y: serialized[10], is_infinite: serialized[11] as bool } }\n }\n }\n}\n\n#[test]\nunconstrained fn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } }\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash = 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nunconstrained fn compute_empty_hash() {\n let keys = PublicKeys::empty();\n\n let actual = keys.hash();\n let test_data_empty_hash = 0x0000000000000000000000000000000000000000000000000000000000000000;\n\n assert(actual.to_field() == test_data_empty_hash);\n}\n\n#[test]\nunconstrained fn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } }\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.inner.x, deserialized.npk_m.inner.x);\n assert_eq(keys.npk_m.inner.y, deserialized.npk_m.inner.y);\n assert_eq(keys.ivpk_m.inner.x, deserialized.ivpk_m.inner.x);\n assert_eq(keys.ivpk_m.inner.y, deserialized.ivpk_m.inner.y);\n assert_eq(keys.ovpk_m.inner.x, deserialized.ovpk_m.inner.x);\n assert_eq(keys.ovpk_m.inner.y, deserialized.ovpk_m.inner.y);\n assert_eq(keys.tpk_m.inner.x, deserialized.tpk_m.inner.x);\n assert_eq(keys.tpk_m.inner.y, deserialized.tpk_m.inner.y);\n}\n"},"26":{"path":"std/field/mod.nr","source":"pub mod bn254;\nuse bn254::lt as bn254_lt;\nuse crate::runtime::is_unconstrained;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size<let BIT_SIZE: u32>(self) {\n // docs:end:assert_max_bit_size\n assert(BIT_SIZE < modulus_num_bits() as u32);\n self.__assert_max_bit_size(BIT_SIZE);\n }\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_le_bits)]\n // docs:start:to_le_bits\n pub fn to_le_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_le_bits\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_be_bits)]\n // docs:start:to_be_bits\n pub fn to_be_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_be_bits\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8;N]` array\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n /// \n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self', \n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_le_bytes\n pub fn to_le_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_le_bytes\n // Compute the byte decomposition\n let bytes = self.to_le_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[N - 1 - i] != p[N - 1 - i]) {\n assert(bytes[N - 1 - i] < p[N - 1 - i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8;N]` array of length required to represent the field modulus\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n /// \n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self', \n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_be_bytes\n pub fn to_be_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_be_bytes\n // Compute the byte decomposition\n let bytes = self.to_be_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_be_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[i] != p[i]) {\n assert(bytes[i] < p[i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n // docs:start:to_le_radix\n pub fn to_le_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n crate::assert_constant(radix);\n }\n self.__to_le_radix(radix)\n }\n // docs:end:to_le_radix\n\n // docs:start:to_be_radix\n pub fn to_be_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n crate::assert_constant(radix);\n }\n self.__to_be_radix(radix)\n }\n // docs:end:to_be_radix\n\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\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: [u1; 32] = exponent.to_le_bits();\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 `elem` {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 /// Convert a little endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_le_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[i] as Field) * v;\n v = v * 256;\n }\n result\n }\n\n /// Convert a big endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_be_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[N-1-i] as Field) * v;\n v = v * 256;\n }\n result\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 x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 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\nmod tests {\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_bytes();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bits), field);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_bytes();\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bits), field);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_radix(256);\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bits), field);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_radix(256);\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bits), field);\n }\n // docs:end:to_le_radix_example\n}\n"},"338":{"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,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n recursion::verification_key::VerificationKey, traits::{is_empty, ToField},\n utils::field::field_from_bytes_32_trunc\n};\nuse super::utils::field::field_from_bytes;\n\npub fn sha256_to_field<let N: u32>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = std::hash::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 poseidon2_hash_with_separator(\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, note_hash: Field) -> Field {\n let inputs = [nonce, note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, unique_note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n app.to_field(),\n unique_note_hash\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\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 poseidon2_hash_with_separator(\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 silo_encrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n // We assume contract address has already been masked\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n accumulate_sha256([log_hash.contract_address.to_field(), log_hash.log_hash.value])\n }\n}\n\npub fn mask_encrypted_log_hash(scoped_log: ScopedEncryptedLogHash) -> AztecAddress {\n if scoped_log.contract_address.is_zero() {\n AztecAddress::from_field(0)\n } else if (scoped_log.log_hash.randomness == 0) {\n scoped_log.contract_address\n } else {\n AztecAddress::from_field(\n poseidon2_hash_with_separator(\n [scoped_log.contract_address.to_field(), scoped_log.log_hash.randomness],\n 0\n )\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 poseidon2_hash([left, right])\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk<let N: u32>(_vk: VerificationKey<N>) -> 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: [u8; 32] = inputs[i].to_be_bytes();\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: [u8; 32] = input[offset].to_be_bytes();\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 // TODO: This is not checking that the decomposition is smaller than P\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_radix(256);\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 // TODO: This is not checking that the decomposition is smaller than P\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_radix(256);\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 verification_key_hash<let N: u32>(key: [Field; N]) -> Field {\n crate::hash::poseidon2_hash(key)\n}\n\n#[inline_always]\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#[no_predicates]\npub fn poseidon2_hash_with_separator<let N: u32, T>(\n inputs: [Field; N],\n separator: T\n) -> Field where T: ToField {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of N + 1\n let in_len = N + 1;\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\npub fn poseidon2_hash_with_separator_slice<T>(inputs: [Field], separator: T) -> Field where T: ToField {\n let in_len = inputs.len() + 1;\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\n#[no_predicates]\npub fn poseidon2_hash_bytes<let N: u32>(inputs: [u8; N]) -> Field {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of Math.ceil(N/31)\n let mut in_len = N / 31;\n let mut has_padding = false;\n if N % 31 != 0 {\n in_len += 1;\n has_padding = true;\n }\n\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n sponge.absorb(field_from_bytes(current_field, false));\n current_field = [0; 31];\n }\n }\n if has_padding {\n sponge.absorb(field_from_bytes(current_field, false));\n }\n\n sponge.squeeze()\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 = std::hash::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\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n ScopedL2ToL1Message {\n message: L2ToL1Message { recipient: EthAddress::from_field(1), content: 2, counter: 0 },\n contract_address: AztecAddress::from_field(3)\n },\n version,\n chainId\n );\n\n // The following value was generated by `l2_to_l1_message.test.ts`\n let hash_from_typescript = 0x00c6155d69febb9d5039b374dd4f77bf57b7c881709aa524a18acaa0bd57476a;\n\n assert_eq(hash, hash_from_typescript);\n}\n"},"34":{"path":"std/hash/poseidon2.nr","source":"use crate::hash::Hasher;\nuse crate::default::Default;\n\ncomptime global RATE: u32 = 3;\n\npub struct Poseidon2 {\n cache: [Field;3],\n state: [Field;4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n #[no_predicates]\n pub fn hash<let N: u32>(input: [Field; N], message_size: u32) -> Field {\n if message_size == N {\n Poseidon2::hash_internal(input, N, false)\n } else {\n Poseidon2::hash_internal(input, message_size, true)\n }\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2 {\n let mut result = Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n }\n\n fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal<let N: u32>(input: [Field; N], in_len: u32, is_variable_length: bool) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\npub struct Poseidon2Hasher{\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv : Field = (self._state.len() as Field) * 18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field) {\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher { _state: &[] }\n }\n}\n"},"35":{"path":"std/hash/sha256.nr","source":"use crate::runtime::is_unconstrained;\n\n// Implementation of SHA-256 mapping a byte array of variable length to\n// 32 bytes.\n\n// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:sha256\n{\n digest(input)\n}\n\n#[foreign(sha256_compression)]\npub fn sha256_compression(_input: [u32; 16], _state: [u32; 8]) -> [u32; 8] {}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest<let N: u32>(msg: [u8; N]) -> [u8; 32] {\n sha256_var(msg, N as u64)\n}\n\n// Convert 64-byte array to array of 16 u32s\nfn msg_u8_to_u32(msg: [u8; 64]) -> [u32; 16] {\n let mut msg32: [u32; 16] = [0; 16];\n\n for i in 0..16 {\n let mut msg_field: Field = 0;\n for j in 0..4 {\n msg_field = msg_field * 256 + msg[64 - 4*(i + 1) + j] as Field;\n }\n msg32[15 - i] = msg_field as u32;\n }\n\n msg32\n}\n\nunconstrained fn build_msg_block_iter<let N: u32>(msg: [u8; N], message_size: u32, msg_start: u32) -> ([u8; 64], u32) {\n let mut msg_block: [u8; BLOCK_SIZE] = [0; BLOCK_SIZE];\n // We insert `BLOCK_SIZE` bytes (or up to the end of the message)\n let block_input = if msg_start + BLOCK_SIZE > message_size {\n if message_size < msg_start {\n // This function is sometimes called with `msg_start` past the end of the message.\n // In this case we return an empty block and zero pointer to signal that the result should be ignored.\n 0\n } else {\n message_size - msg_start\n }\n } else {\n BLOCK_SIZE\n };\n for k in 0..block_input {\n msg_block[k] = msg[msg_start + k];\n }\n (msg_block, block_input)\n}\n\n// Verify the block we are compressing was appropriately constructed\nfn verify_msg_block<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n msg_block: [u8; 64],\n msg_start: u32\n) -> u32 {\n let mut msg_byte_ptr: u32 = 0; // Message byte pointer\n let mut msg_end = msg_start + BLOCK_SIZE;\n if msg_end > N {\n msg_end = N;\n }\n\n for k in msg_start..msg_end {\n if k < message_size {\n assert_eq(msg_block[msg_byte_ptr], msg[k]);\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n\n msg_byte_ptr\n}\n\nglobal BLOCK_SIZE = 64;\n\n// Variable size SHA-256 hash\npub fn sha256_var<let N: u32>(msg: [u8; N], message_size: u64) -> [u8; 32] {\n let message_size = message_size as u32;\n let num_blocks = N / BLOCK_SIZE;\n let mut msg_block: [u8; BLOCK_SIZE] = [0; BLOCK_SIZE];\n let mut h: [u32; 8] = [1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225]; // Intermediate hash, starting with the canonical initial value\n let mut msg_byte_ptr = 0; // Pointer into msg_block\n\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let (new_msg_block, new_msg_byte_ptr) = unsafe {\n build_msg_block_iter(msg, message_size, msg_start)\n };\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n // Verify the block we are compressing was appropriately constructed\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n\n // If the block is filled, compress it.\n // An un-filled block is handled after this loop.\n if (msg_start < message_size) & (msg_byte_ptr == BLOCK_SIZE) {\n h = sha256_compression(msg_u8_to_u32(msg_block), h);\n }\n }\n\n let modulo = N % BLOCK_SIZE;\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n if modulo != 0 {\n let msg_start = BLOCK_SIZE * num_blocks;\n let (new_msg_block, new_msg_byte_ptr) = unsafe {\n build_msg_block_iter(msg, message_size, msg_start)\n };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n if msg_byte_ptr == BLOCK_SIZE {\n msg_byte_ptr = 0;\n }\n\n // This variable is used to get around the compiler under-constrained check giving a warning.\n // We want to check against a constant zero, but if it does not come from the circuit inputs\n // or return values the compiler check will issue a warning.\n let zero = msg_block[0] - msg_block[0];\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n msg_block[msg_byte_ptr] = 1 << 7;\n let last_block = msg_block;\n msg_byte_ptr = msg_byte_ptr + 1;\n\n unsafe {\n let (new_msg_block, new_msg_byte_ptr) = pad_msg_block(msg_block, msg_byte_ptr);\n msg_block = new_msg_block;\n if crate::runtime::is_unconstrained() {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n if !crate::runtime::is_unconstrained() {\n for i in 0..BLOCK_SIZE {\n assert_eq(msg_block[i], last_block[i]);\n }\n\n // If i >= 57, there aren't enough bits in the current message block to accomplish this, so\n // the 1 and 0s fill up the current block, which we then compress accordingly.\n // Not enough bits (64) to store length. Fill up with zeros.\n for _i in 57..BLOCK_SIZE {\n if msg_byte_ptr <= 63 & msg_byte_ptr >= 57 {\n assert_eq(msg_block[msg_byte_ptr], zero);\n msg_byte_ptr += 1;\n }\n }\n }\n\n if msg_byte_ptr >= 57 {\n h = sha256_compression(msg_u8_to_u32(msg_block), h);\n\n msg_byte_ptr = 0;\n }\n\n msg_block = unsafe {\n attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size)\n };\n\n if !crate::runtime::is_unconstrained() {\n for i in 0..56 {\n let predicate = (i < msg_byte_ptr) as u8;\n let expected_byte = predicate * last_block[i];\n assert_eq(msg_block[i], expected_byte);\n }\n\n // We verify the message length was inserted correctly by reversing the byte decomposition.\n let len = 8 * message_size;\n let mut reconstructed_len: Field = 0;\n for i in 56..64 {\n reconstructed_len = 256 * reconstructed_len + msg_block[i] as Field;\n }\n assert_eq(reconstructed_len, len as Field);\n }\n\n hash_final_block(msg_block, h)\n}\n\nunconstrained fn pad_msg_block(\n mut msg_block: [u8; 64],\n mut msg_byte_ptr: u32\n) -> ([u8; BLOCK_SIZE], u32) {\n // If i >= 57, there aren't enough bits in the current message block to accomplish this, so\n // the 1 and 0s fill up the current block, which we then compress accordingly.\n if msg_byte_ptr >= 57 {\n // Not enough bits (64) to store length. Fill up with zeros.\n for i in msg_byte_ptr..BLOCK_SIZE {\n msg_block[i] = 0;\n }\n (msg_block, BLOCK_SIZE)\n } else {\n (msg_block, msg_byte_ptr)\n }\n}\n\nunconstrained fn attach_len_to_msg_block(mut msg_block: [u8; BLOCK_SIZE], msg_byte_ptr: u32, message_size: u32) -> [u8; BLOCK_SIZE] {\n // We assume that `msg_byte_ptr` is less than 57 because if not then it is reset to zero before calling this function.\n // In any case, fill blocks up with zeros until the last 64 (i.e. until msg_byte_ptr = 56).\n\n for i in msg_byte_ptr..56 {\n msg_block[i] = 0;\n }\n\n let len = 8 * message_size;\n let len_bytes: [u8; 8] = (len as Field).to_be_bytes();\n for i in 0..8 {\n msg_block[56 + i] = len_bytes[i];\n }\n msg_block\n}\n\nfn hash_final_block(msg_block: [u8; BLOCK_SIZE], mut state: [u32; 8]) -> [u8; 32] {\n let mut out_h: [u8; 32] = [0; 32]; // Digest as sequence of bytes\n\n // Hash final padded block\n state = sha256_compression(msg_u8_to_u32(msg_block), state);\n\n // Return final hash as byte array\n for j in 0..8 {\n let h_bytes: [u8; 4] = (state[7 - j] as Field).to_le_bytes();\n for k in 0..4 {\n out_h[31 - 4*j - k] = h_bytes[k];\n }\n }\n\n out_h\n}\n\nmod tests {\n use super::sha256_var;\n\n #[test]\n fn smoke_test() {\n let input = [0xbd];\n let result = [\n 0x68, 0x32, 0x57, 0x20, 0xaa, 0xbd, 0x7c, 0x82, 0xf3, 0x0f, 0x55, 0x4b, 0x31, 0x3d, 0x05, 0x70, 0xc9, 0x5a, 0xcc, 0xbb, 0x7d, 0xc4, 0xb5, 0xaa, 0xe1, 0x12, 0x04, 0xc0, 0x8f, 0xfe, 0x73, 0x2b\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_just_over_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116\n ];\n let result = [\n 91, 122, 146, 93, 52, 109, 133, 148, 171, 61, 156, 70, 189, 238, 153, 7, 222, 184, 94, 24, 65, 114, 192, 244, 207, 199, 87, 232, 192, 224, 171, 207\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_multiple_over_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115, 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49, 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46, 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115, 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97, 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45, 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55, 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32, 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32, 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64, 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103, 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115, 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101, 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56, 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48, 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75, 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67, 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101, 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99\n ];\n let result = [\n 116, 90, 151, 31, 78, 22, 138, 180, 211, 189, 69, 76, 227, 200, 155, 29, 59, 123, 154, 60, 47, 153, 203, 129, 157, 251, 48, 2, 79, 11, 65, 47\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_just_under_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 59\n ];\n let result = [\n 143, 140, 76, 173, 222, 123, 102, 68, 70, 149, 207, 43, 39, 61, 34, 79, 216, 252, 213, 165, 74, 16, 110, 74, 29, 64, 138, 167, 30, 1, 9, 119\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_big_not_block_multiple() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115, 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49, 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46, 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115, 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97, 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45, 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55, 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32, 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32, 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64, 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103, 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115, 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101, 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56, 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48, 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75, 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67, 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101, 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99, 116, 58, 77, 101, 115, 115, 97, 103, 101, 45, 73, 100, 58, 68, 97, 116, 101, 58, 116, 111, 59, 32, 98, 61\n ];\n let result = [\n 112, 144, 73, 182, 208, 98, 9, 238, 54, 229, 61, 145, 222, 17, 72, 62, 148, 222, 186, 55, 192, 82, 220, 35, 66, 47, 193, 200, 22, 38, 26, 186\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_big_with_padding() {\n let input = [\n 48, 130, 1, 37, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 48, 130, 1, 17, 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12, 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48, 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6, 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2, 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89, 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2, 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75, 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1, 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189, 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4, 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45, 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4, 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188, 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0\n ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212, 181, 240, 180, 106, 195, 24, 117, 54, 129, 19, 10, 250, 53\n ];\n let message_size = 297;\n assert_eq(sha256_var(input, message_size), result);\n }\n\n #[test]\n fn msg_big_no_padding() {\n let input = [\n 48, 130, 1, 37, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 48, 130, 1, 17, 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12, 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48, 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6, 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2, 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89, 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2, 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75, 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1, 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189, 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4, 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45, 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4, 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188, 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38\n ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212, 181, 240, 180, 106, 195, 24, 117, 54, 129, 19, 10, 250, 53\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn same_msg_len_variable_padding() {\n let input = [\n 29, 81, 165, 84, 243, 114, 101, 37, 242, 146, 127, 99, 69, 145, 39, 72, 213, 39, 253, 179, 218, 37, 217, 201, 172, 93, 198, 50, 249, 70, 15, 30, 162, 112, 187, 40, 140, 9, 236, 53, 32, 44, 38, 163, 113, 254, 192, 197, 44, 89, 71, 130, 169, 242, 17, 211, 214, 72, 19, 178, 186, 168, 147, 127, 99, 101, 252, 227, 8, 147, 150, 85, 97, 158, 17, 107, 218, 244, 82, 113, 247, 91, 208, 214, 60, 244, 87, 137, 173, 201, 130, 18, 66, 56, 198, 149, 207, 189, 175, 120, 123, 224, 177, 167, 251, 159, 143, 110, 68, 183, 189, 70, 126, 32, 35, 164, 44, 30, 44, 12, 65, 18, 62, 239, 242, 2, 248, 104, 2, 178, 64, 28, 126, 36, 137, 24, 14, 116, 91, 98, 90, 159, 218, 102, 45, 11, 110, 223, 245, 184, 52, 99, 59, 245, 136, 175, 3, 72, 164, 146, 145, 116, 22, 66, 24, 49, 193, 121, 3, 60, 37, 41, 97, 3, 190, 66, 195, 225, 63, 46, 3, 118, 4, 208, 15, 1, 40, 254, 235, 151, 123, 70, 180, 170, 44, 172, 90, 4, 254, 53, 239, 116, 246, 67, 56, 129, 61, 22, 169, 213, 65, 27, 216, 116, 162, 239, 214, 207, 126, 177, 20, 100, 25, 48, 143, 84, 215, 70, 197, 53, 65, 70, 86, 172, 61, 62, 9, 212, 167, 169, 133, 41, 126, 213, 196, 33, 192, 238, 0, 63, 246, 215, 58, 128, 110, 101, 92, 3, 170, 214, 130, 149, 52, 81, 125, 118, 233, 3, 118, 193, 104, 207, 120, 115, 77, 253, 191, 122, 0, 107, 164, 207, 113, 81, 169, 36, 201, 228, 74, 134, 131, 218, 178, 35, 30, 216, 101, 2, 103, 174, 87, 95, 50, 50, 215, 157, 5, 210, 188, 54, 211, 78, 45, 199, 96, 121, 241, 241, 176, 226, 194, 134, 130, 89, 217, 210, 186, 32, 140, 39, 91, 103, 212, 26, 87, 32, 72, 144, 228, 230, 117, 99, 188, 50, 15, 69, 79, 179, 50, 12, 106, 86, 218, 101, 73, 142, 243, 29, 250, 122, 228, 233, 29, 255, 22, 121, 114, 125, 103, 41, 250, 241, 179, 126, 158, 198, 116, 209, 65, 94, 98, 228, 175, 169, 96, 3, 9, 233, 133, 214, 55, 161, 164, 103, 80, 85, 24, 186, 64, 167, 92, 131, 53, 101, 202, 47, 25, 104, 118, 155, 14, 12, 12, 25, 116, 45, 221, 249, 28, 246, 212, 200, 157, 167, 169, 56, 197, 181, 4, 245, 146, 1, 140, 234, 191, 212, 228, 125, 87, 81, 86, 119, 30, 63, 129, 143, 32, 96\n ];\n\n // Prepare inputs of different lengths\n let mut input_511 = [0; 511];\n let mut input_512 = [0; 512]; // Next block\n let mut input_575 = [0; 575];\n let mut input_576 = [0; 576]; // Next block\n for i in 0..input.len() {\n input_511[i] = input[i];\n input_512[i] = input[i];\n input_575[i] = input[i];\n input_576[i] = input[i];\n }\n\n // Compute hashes of all inputs (with same message length)\n let fixed_length_hash = super::sha256(input);\n let var_full_length_hash = sha256_var(input, input.len() as u64);\n let var_length_hash_511 = sha256_var(input_511, input.len() as u64);\n let var_length_hash_512 = sha256_var(input_512, input.len() as u64);\n let var_length_hash_575 = sha256_var(input_575, input.len() as u64);\n let var_length_hash_576 = sha256_var(input_576, input.len() as u64);\n\n // All of the above should have produced the same hash\n assert_eq(var_full_length_hash, fixed_length_hash);\n assert_eq(var_length_hash_511, fixed_length_hash);\n assert_eq(var_length_hash_512, fixed_length_hash);\n assert_eq(var_length_hash_575, fixed_length_hash);\n assert_eq(var_length_hash_576, fixed_length_hash);\n }\n}\n"},"389":{"path":"/usr/src/noir-projects/noir-contracts/contracts/contract_instance_deployer_contract/src/main.nr","source":"use dep::aztec::macros::aztec;\n\n#[aztec]\ncontract ContractInstanceDeployer {\n use dep::aztec::protocol_types::{\n address::{AztecAddress, PublicKeysHash, PartialAddress}, public_keys::PublicKeys,\n contract_class_id::ContractClassId, constants::DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE,\n abis::log_hash::LogHash, traits::Serialize\n };\n use dep::aztec::{\n hash::compute_unencrypted_log_hash, oracle::logs::emit_unencrypted_log_private,\n macros::{events::event, functions::private}, utils::to_bytes::arr_to_be_bytes_arr\n };\n use std::meta::derive;\n\n #[event]\n struct ContractInstanceDeployed {\n DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE: Field,\n address: AztecAddress,\n version: u8,\n salt: Field,\n contract_class_id: ContractClassId,\n initialization_hash: Field,\n public_keys: PublicKeys,\n deployer: AztecAddress,\n }\n\n // We need to impl this separately because ts deserializes a point as two fields only.\n // We had issues that:\n // Notice how the 'is_infinite' field is deserialized as the next point.\n // {\n // masterNullifierPublicKey: Point {\n // x: Fr<0x0000000000000000000000000000000000000000000000000000000000000012>,\n // y: Fr<0x0000000000000000000000000000000000000000000000000000000000000034>,\n // isInfinite: false,\n // kind: 'point'\n // },\n // masterIncomingViewingPublicKey: Point {\n // x: Fr<0x0000000000000000000000000000000000000000000000000000000000000000>,\n // y: Fr<0x0000000000000000000000000000000000000000000000000000000000000056>,\n // isInfinite: false,\n // kind: 'point'\n // },\n // masterOutgoingViewingPublicKey: Point {\n // x: Fr<0x0000000000000000000000000000000000000000000000000000000000000078>,\n // y: Fr<0x0000000000000000000000000000000000000000000000000000000000000000>,\n // isInfinite: false,\n // kind: 'point'\n // },\n // masterTaggingPublicKey: Point {\n // x: Fr<0x0000000000000000000000000000000000000000000000000000000000000910>,\n // y: Fr<0x0000000000000000000000000000000000000000000000000000000000001112>,\n // isInfinite: false,\n // kind: 'point'\n // }\n impl Serialize<15> for ContractInstanceDeployed {\n fn serialize(self) -> [Field; 15] {\n [\n self.DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE,\n self.address.to_field(),\n self.version.to_field(),\n self.salt,\n self.contract_class_id.to_field(),\n self.initialization_hash,\n self.public_keys.npk_m.serialize()[0],\n self.public_keys.npk_m.serialize()[1],\n self.public_keys.ivpk_m.serialize()[0],\n self.public_keys.ivpk_m.serialize()[1],\n self.public_keys.ovpk_m.serialize()[0],\n self.public_keys.ovpk_m.serialize()[1],\n self.public_keys.tpk_m.serialize()[0],\n self.public_keys.tpk_m.serialize()[1],\n self.deployer.to_field()\n ]\n }\n }\n\n #[private]\n fn deploy(\n salt: Field,\n contract_class_id: ContractClassId,\n initialization_hash: Field,\n public_keys: PublicKeys,\n universal_deploy: bool\n ) {\n // TODO(@spalladino): assert nullifier_exists silo(contract_class_id, ContractClassRegisterer)\n\n let deployer = if universal_deploy {\n AztecAddress::zero()\n } else {\n context.msg_sender()\n };\n\n let partial_address = PartialAddress::compute(contract_class_id, salt, initialization_hash, deployer);\n\n let address = AztecAddress::compute(public_keys.hash(), partial_address);\n\n // Emit the address as a nullifier to be able to prove that this instance has been (not) deployed\n context.push_nullifier(address.to_field());\n\n // Broadcast the event\n let event = ContractInstanceDeployed {\n DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE,\n contract_class_id,\n address,\n public_keys,\n initialization_hash,\n salt,\n deployer,\n version: 1\n };\n\n let payload = event.serialize();\n dep::aztec::oracle::debug_log::debug_log_format(\"ContractInstanceDeployed: {}\", payload);\n\n let contract_address = context.this_address();\n let counter = context.next_counter();\n\n // @todo This is very inefficient, we are doing a lot of back and forth conversions.\n let serialized_log = arr_to_be_bytes_arr(payload);\n let log_hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n // 40 = addr (32) + raw log len (4) + processed log len (4)\n let len = 40 + serialized_log.len().to_field();\n let side_effect = LogHash { value: log_hash, counter, length: len };\n\n // We manually push the unencrypted log to the context and inform the execution environment about this because\n // PrivateContext does not expose an `emit_unencrypted_log` method - this mechanism is considered error-prone\n // and only some canonical contracts use it.\n context.unencrypted_logs_hashes.push(side_effect);\n emit_unencrypted_log_private(contract_address, payload, counter);\n }\n}\n"},"59":{"path":"std/panic.nr","source":"pub fn panic<T, U, let N: u32>(message: fmtstr<N, T>) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n"}}}
1
+ {"transpiled":true,"noir_version":"0.36.0+b0cbf84eaf69f77628939184c9b869cfb3e15846-x8664","name":"ContractInstanceDeployer","functions":[{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{"14336010898202591232":{"error_kind":"fmtstring","item_types":[],"length":16}},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"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/9VZzXLaMBCWsY2xEwiBpCU9MdNbe7ETAvTGTH/Se5+g4efSQzqdPADTQ9vHLhq0+GPZMhSvDuwMI1m7+vbTrmRJJjBraax+gavHrqybXSGbiSvzalIoYuU+eQYnwrN2IjzDE+EZKfIMBJ62jFzdrju75hKzXo87SuxsEx2C3uwBCphTK7+g3nLll+ev02/956en/mw+/74x/+PK1JU1gFPMY5Ga3dho4Y/zwTQ126LM/y51mIkf/HvCb/jBz4n3+2WJj2Mhv6ErH5ZlLB+gj5Wmq+OUI1zS1UD3gelC0H1kOpzyn5gOlwlxorjVYSyK82rsOy80tgTGFvyjNKaMHbZRrDPjdY4WlPOU8eH8iU+TbJYlnzrTRaBLmS4GHcXfln2w47lPwO4ttPM5GZrdOUx6yjnG2secijzgr2QgxZ3nJFpu+0Ydxj2CePZdvbv6fXY2OAYriWs3gBtCG2GTrwbaM10KOuRrJQP/oYBFPGJm/8Y9X7iyDn2of1vwX2f+t3gLbbiPcqxQaCN7O5dfu/qZWcf9J9mb3fWtd3YdvpPedXr4o80emvrhPyf8zAv+YIN/BviaewHhn/uJz5Dwm37wN2eYlhf82018LgDf6MW/oP2E1j/6IN+XXnJfFIfs9eg/Y1x97fWXjA+PD+4rVtcRuLYFHV+jHcFPR/BDeeiy/hOVcQ8XEtfukVwlrJYiVqqIdewYKR9XrP/EPeeVZDSQuF4pjrupiNVQxDp2nlA+rln/iXvOK8lQzMe14rg183GuiJUoYmmuW814UR6lvc7KxJV5ReFc8Q6BPmmfj5n9D8bzBfRR3JNvaU97aUrh54GeJ9+HngfIf1PgQ7wzQVfl2+d0uLh7nC0Gs8fRfJyX+ewxrrwN70T2dyPYS2cLivUr4yXWuXRfvoG4WolA12O6GHTEEe/LKcPU5n9I/NF/W9DhneZ/ctkx23MN1yO/rxqj9w6h+d4AbL42Uy/xzu8PXZvkP2Nclfns/S6H8eFn9Uzg2hZ0fO/LBD+Z4OcUsfi3bYyhXSMUp2hZ6rVyORqX/yPRuyg229/LDfMfM/vf7tknTyudPZxsnP4C4AOlGXweAAA=","debug_symbols":"tdnBaoNAEIDhd9mzB1fdnZm8SilBEw0LokFNoYjvXm1DCeT8X2RHx//2nXZ117Z53M5p6MbZnT5W14+XeknjsE/rlrlmSn2fbufX1y4/HlX1uz/f6+EY56WeFncqq8y1w3U/2P53l/r2OBZb9rYpxXNT5H8z2PaZuSpg5YiVBSsrVjaqHHKs7LFygZVLrIwZDJjBgBkMmMGAGQyYwYgZjJjBiBmMmMGIGYyYwYgZjJjBiBmMmEHBDApmUDCDghkUzKBgBgUzKJhBwQwKZlAxg4oZVMygYgYVM6iYQcUMKmZQMYOKGTTMoGEGDTNomEHDDBpm0DCDhhk0zKBhBn2ec2nPpQsuXXLpiksHLh25tHBp5dKcRs9p9JxGz2n0kMZtn77qKdVN3z4vNbrHcHm541i+739f9uUf","brillig_names":["compute_note_hash_and_optionally_a_nullifier"]},{"name":"deploy","is_unconstrained":false,"custom_attributes":["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":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"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":"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":"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":"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":"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":"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":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"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":"slot_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":"aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"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":"aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"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":"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":"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":"aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"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":"salt","type":{"kind":"field"},"visibility":"private"},{"name":"contract_class_id","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::contract_class_id::ContractClassId"},"visibility":"private"},{"name":"initialization_hash","type":{"kind":"field"},"visibility":"private"},{"name":"public_keys","type":{"fields":[{"name":"npk_m","type":{"fields":[{"name":"inner","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"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::NpkM"}},{"name":"ivpk_m","type":{"fields":[{"name":"inner","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"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::IvpkM"}},{"name":"ovpk_m","type":{"fields":[{"name":"inner","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"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::OvpkM"}},{"name":"tpk_m","type":{"fields":[{"name":"inner","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"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::TpkM"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::PublicKeys"},"visibility":"private"},{"name":"universal_deploy","type":{"kind":"boolean"},"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":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"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":"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":"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":"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":"aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"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":"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":"aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"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":"aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"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":"aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"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":"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":"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":"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":"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":"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":"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":"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":"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":"aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"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":"slot_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":"aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"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":"aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"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":"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":"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":"aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"databus"}},"bytecode":"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","debug_symbols":"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","brillig_names":["decompose_hint","lte_hint","debug_log_oracle_wrapper","build_msg_block","attach_len_to_msg_block","emit_unencrypted_log_private_oracle_wrapper","directive_integer_quotient","directive_invert"]}],"outputs":{"globals":{},"structs":{"events":[{"fields":[{"name":"DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE","type":{"kind":"field"}},{"name":"address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"version","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"salt","type":{"kind":"field"}},{"name":"contract_class_id","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::contract_class_id::ContractClassId"}},{"name":"initialization_hash","type":{"kind":"field"}},{"name":"public_keys","type":{"fields":[{"name":"npk_m","type":{"fields":[{"name":"inner","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"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::NpkM"}},{"name":"ivpk_m","type":{"fields":[{"name":"inner","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"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::IvpkM"}},{"name":"ovpk_m","type":{"fields":[{"name":"inner","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"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::OvpkM"}},{"name":"tpk_m","type":{"fields":[{"name":"inner","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"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::TpkM"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::PublicKeys"}},{"name":"deployer","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::address::aztec_address::AztecAddress"}}],"kind":"struct","path":"ContractInstanceDeployer::ContractInstanceDeployed"}],"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"salt","type":{"kind":"field"}},{"name":"contract_class_id","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"aztec::protocol_types::contract_class_id::ContractClassId"}},{"name":"initialization_hash","type":{"kind":"field"}},{"name":"public_keys","type":{"fields":[{"name":"npk_m","type":{"fields":[{"name":"inner","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"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::NpkM"}},{"name":"ivpk_m","type":{"fields":[{"name":"inner","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"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::IvpkM"}},{"name":"ovpk_m","type":{"fields":[{"name":"inner","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"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::OvpkM"}},{"name":"tpk_m","type":{"fields":[{"name":"inner","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"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::TpkM"}}],"kind":"struct","path":"aztec::protocol_types::public_keys::PublicKeys"}},{"name":"universal_deploy","type":{"kind":"boolean"}}],"kind":"struct","path":"ContractInstanceDeployer::deploy_parameters"}}],"kind":"struct","path":"ContractInstanceDeployer::deploy_abi"}]}},"file_map":{"148":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/utils/to_bytes.nr","source":"pub fn arr_to_be_bytes_arr<let L: u32>(fields: [Field; L]) -> [u8; L * 32] {\n let mut bytes = [0 as u8; L * 32];\n for i in 0..L {\n // Note that bytes.append() results in bound error\n let to_add: [u8; 32] = fields[i].to_be_bytes();\n for j in 0..32 {\n bytes[i * 32 + j] = to_add[j];\n }\n }\n bytes\n}\n\n// each character of a string is converted into a byte\n// then an ACVM field via the oracle => we recreate here\npub fn str_to_be_bytes_arr<let L: u32>(string: str<L>) -> [u8; L * 32] {\n let chars_bytes: [u8; L] = string.as_bytes();\n let mut bytes = [0 as u8; L * 32];\n for i in 0..L {\n let to_add: [u8; 32] = (chars_bytes[i] as Field).to_be_bytes();\n for j in 0..32 {\n bytes[i * 32 + j] = to_add[j];\n }\n }\n bytes\n}\n"},"161":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use crate::utils::to_bytes::{arr_to_be_bytes_arr, str_to_be_bytes_arr};\nuse dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__FUNCTION_ARGS, GENERATOR_INDEX__MESSAGE_NULLIFIER,\n GENERATOR_INDEX__SECRET_HASH,\n },\n hash::{poseidon2_hash_with_separator, poseidon2_hash_with_separator_slice, sha256_to_field},\n point::Point,\n traits::Hash,\n};\n\npub use dep::protocol_types::hash::{compute_siloed_nullifier, pedersen_hash};\n\npub fn pedersen_commitment<let N: u32>(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\n}\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash<let N: u32>(\n contract_address: AztecAddress,\n log: [u8; N],\n) -> Field {\n let mut hash_bytes = [0; N + 36];\n // Address is converted to 32 bytes in ts\n let address_bytes: [u8; 32] = contract_address.to_field().to_be_bytes();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let len_bytes: [u8; 4] = (N as Field).to_be_bytes();\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] = log[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: [u8; 32] = sender.to_field().to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n let recipient_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let version_bytes: [u8; 32] = version.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let secret_hash_bytes: [u8; 32] = secret_hash.to_be_bytes();\n\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 poseidon2_hash_with_separator(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER,\n )\n}\n\npub struct 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 if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nunconstrained fn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..100 {\n input.add(i as Field);\n }\n let hash = input.hash();\n dep::std::println(hash);\n assert(hash == 0x19b0d74feb06ebde19edd85a28986c97063e84b3b351a8b666c7cac963ce655f);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(\n 0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6,\n );\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd,\n ];\n let serialized_log = arr_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0095b2d17ab72f4b27a341f7ac63e49ec73935ae8c9181a0ac02023eb12f3284);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(\n 0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6,\n );\n let log = AztecAddress::from_field(\n 0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303,\n );\n let serialized_log: [u8; 32] = log.to_field().to_be_bytes();\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0083ab647dfb26e7ddee90a0f4209d049d4660cab42000c544b986aaa84c55a3);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(\n 0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8,\n );\n let log = \"dummy\";\n let serialized_log = str_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x00629e88ebd6374f44aa6cfe07e251ecf07213ebc7267e8f6b578ae57ffd6c20);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(\n 0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8,\n );\n let log = \"Hello this is a string\";\n let serialized_log = str_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0098637962f7d34fa202b7ffad8a07a238c5d1fd897b82a108f7f467fa73b841);\n}\n"},"186":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr","source":"use crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n hash::{ArgsHasher, hash_args_array},\n keys::constants::{NULLIFIER_INDEX, NUM_KEY_TYPES, OUTGOING_INDEX, sk_generators},\n messaging::process_l1_to_l2_message,\n oracle::{\n arguments,\n call_private_function::call_private_function_internal,\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, notify_set_min_revertible_side_effect_counter,\n set_public_teardown_function_call_internal,\n },\n header::get_header_at,\n key_validation_request::get_key_validation_request,\n logs::{emit_encrypted_event_log, emit_encrypted_note_log},\n returns::pack_returns,\n },\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext,\n function_selector::FunctionSelector,\n log_hash::{EncryptedLogHash, LogHash, NoteLogHash},\n max_block_number::MaxBlockNumber,\n note_hash::NoteHash,\n nullifier::Nullifier,\n private_call_request::PrivateCallRequest,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_request::PublicCallRequest,\n read_request::ReadRequest,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n },\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_ENCRYPTED_LOGS_PER_CALL, MAX_KEY_VALIDATION_REQUESTS_PER_CALL,\n MAX_L2_TO_L1_MSGS_PER_CALL, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NOTE_HASHES_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_UNENCRYPTED_LOGS_PER_CALL, PUBLIC_DISPATCH_SELECTOR,\n },\n header::Header,\n messaging::l2_to_l1_message::L2ToL1Message,\n traits::Empty,\n};\n\n// When finished, one can call .finish() to convert back to the abi\npub struct 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.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 fn push_nullifier(&mut self, nullifier: Field) {\n self.nullifiers.push(\n Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() },\n );\n }\n\n fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.nullifiers.push(\n Nullifier {\n value: nullifier,\n note_hash: nullified_note_hash,\n counter: self.next_counter(),\n },\n );\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\n .key_validation_requests_and_generators\n .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(\n \"Setting {0} as fee payer\",\n [self.this_address().to_field()],\n );\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 notify_set_min_revertible_side_effect_counter(self.min_revertible_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 =\n 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 =\n 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 {\n request,\n sk_app_generator: sk_generators[key_index],\n };\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)\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>(\n &mut self,\n note_hash_counter: u32,\n log: [u8; M],\n log_hash: Field,\n ) {\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 arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\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 arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\n }\n\n pub fn call_private_function_no_args(\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)\n }\n\n pub fn static_call_private_function_no_args(\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)\n }\n\n pub fn call_private_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 ) -> 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 );\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 // 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 let call_context = CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n };\n\n self.private_call_requests.push(\n PrivateCallRequest {\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 arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\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 arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\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)\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)\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 ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n );\n\n // Public calls are rerouted through the dispatch function.\n let function_selector = comptime { FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR) };\n let call_context = CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n };\n\n let call_request = PublicCallRequest { call_context, args_hash, 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 arguments::pack_arguments_array(args);\n self.set_public_teardown_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn set_public_teardown_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 ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n );\n\n let function_selector = comptime { FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR) };\n let call_context = CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n };\n\n self.public_teardown_call_request = PublicCallRequest { call_context, args_hash, counter };\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"},"24":{"path":"std/embedded_curve_ops.nr","source":"use crate::cmp::Eq;\nuse crate::ops::arith::{Add, Neg, Sub};\n\n/// A point on the embedded elliptic curve\n/// By definition, the base field of the embedded curve is the scalar field of the proof system curve, i.e the Noir Field.\n/// x and y denotes the Weierstrass coordinates of the point, if is_infinite is false.\npub struct EmbeddedCurvePoint {\n pub x: Field,\n pub y: Field,\n pub is_infinite: bool,\n}\n\nimpl EmbeddedCurvePoint {\n /// Elliptic curve point doubling operation\n /// returns the doubled point of a point P, i.e P+P\n pub fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n /// Returns the null element of the curve; 'the point at infinity'\n pub fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n /// Adds two points P+Q, using the curve addition formula, and also handles point at infinity\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n /// Points subtraction operation, using addition and negation\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n /// Negates a point P, i.e returns -P, by negating the y coordinate.\n /// If the point is at infinity, then the result is also at infinity.\n fn neg(self) -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: self.x, y: -self.y, is_infinite: self.is_infinite }\n }\n}\n\nimpl Eq for EmbeddedCurvePoint {\n /// Checks whether two points are equal\n fn eq(self: Self, b: EmbeddedCurvePoint) -> bool {\n (self.is_infinite & b.is_infinite)\n | ((self.is_infinite == b.is_infinite) & (self.x == b.x) & (self.y == b.y))\n }\n}\n\n/// Scalar for the embedded curve represented as low and high limbs\n/// By definition, the scalar field of the embedded curve is base field of the proving system curve.\n/// It may not fit into a Field element, so it is represented with two Field elements; its low and high limbs.\npub struct EmbeddedCurveScalar {\n pub lo: Field,\n pub hi: Field,\n}\n\nimpl EmbeddedCurveScalar {\n pub fn new(lo: Field, hi: Field) -> Self {\n EmbeddedCurveScalar { lo, hi }\n }\n\n #[field(bn254)]\n pub fn from_field(scalar: Field) -> EmbeddedCurveScalar {\n let (a, b) = crate::field::bn254::decompose(scalar);\n EmbeddedCurveScalar { lo: a, hi: b }\n }\n\n //Bytes to scalar: take the first (after the specified offset) 16 bytes of the input as the lo value, and the next 16 bytes as the hi value\n #[field(bn254)]\n pub(crate) fn from_bytes(bytes: [u8; 64], offset: u32) -> EmbeddedCurveScalar {\n let mut v = 1;\n let mut lo = 0 as Field;\n let mut hi = 0 as Field;\n for i in 0..16 {\n lo = lo + (bytes[offset + 31 - i] as Field) * v;\n hi = hi + (bytes[offset + 15 - i] as Field) * v;\n v = v * 256;\n }\n let sig_s = crate::embedded_curve_ops::EmbeddedCurveScalar { lo, hi };\n sig_s\n }\n}\n\nimpl Eq for EmbeddedCurveScalar {\n fn eq(self, other: Self) -> bool {\n (other.hi == self.hi) & (other.lo == self.lo)\n }\n}\n\n// Computes a multi scalar multiplication over the embedded curve.\n// For bn254, We have Grumpkin and Baby JubJub.\n// For bls12-381, we have JubJub and Bandersnatch.\n//\n// The embedded curve being used is decided by the\n// underlying proof system.\n// docs:start:multi_scalar_mul\npub fn multi_scalar_mul<let N: u32>(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N],\n) -> EmbeddedCurvePoint\n// docs:end:multi_scalar_mul\n{\n let point_array = multi_scalar_mul_array_return(points, scalars);\n EmbeddedCurvePoint { x: point_array[0], y: point_array[1], is_infinite: point_array[2] as bool }\n}\n\n#[foreign(multi_scalar_mul)]\npub(crate) fn multi_scalar_mul_array_return<let N: u32>(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N],\n) -> [Field; 3] {}\n\n// docs:start:fixed_base_scalar_mul\npub fn fixed_base_scalar_mul(scalar: EmbeddedCurveScalar) -> EmbeddedCurvePoint\n// docs:end:fixed_base_scalar_mul\n{\n let g1 = EmbeddedCurvePoint {\n x: 1,\n y: 17631683881184975370165255887551781615748388533673675138860,\n is_infinite: false,\n };\n multi_scalar_mul([g1], [scalar])\n}\n\n/// This function only assumes that the points are on the curve\n/// It handles corner cases around the infinity point causing some overhead compared to embedded_curve_add_not_nul and embedded_curve_add_unsafe\n// This is a hack because returning an `EmbeddedCurvePoint` from a foreign function in brillig returns a [BrilligVariable::SingleAddr; 2] rather than BrilligVariable::BrilligArray\n// as is defined in the brillig bytecode format. This is a workaround which allows us to fix this without modifying the serialization format.\n// docs:start:embedded_curve_add\npub fn embedded_curve_add(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n // docs:end:embedded_curve_add\n let x_coordinates_match = point1.x == point2.x;\n let y_coordinates_match = point1.y == point2.y;\n let double_predicate = (x_coordinates_match & y_coordinates_match);\n let infinity_predicate = (x_coordinates_match & !y_coordinates_match);\n let point1_1 = EmbeddedCurvePoint {\n x: point1.x + (x_coordinates_match as Field),\n y: point1.y,\n is_infinite: x_coordinates_match,\n };\n // point1_1 is guaranteed to have a different abscissa than point2\n let mut result = embedded_curve_add_unsafe(point1_1, point2);\n result.is_infinite = x_coordinates_match;\n\n // dbl if x_match, y_match\n let double = embedded_curve_add_unsafe(point1, point1);\n result = if double_predicate { double } else { result };\n\n // infinity if x_match, !y_match\n if point1.is_infinite {\n result = point2;\n }\n if point2.is_infinite {\n result = point1;\n }\n let mut result_is_infinity = infinity_predicate & (!point1.is_infinite & !point2.is_infinite);\n result.is_infinite = result_is_infinity | (point1.is_infinite & point2.is_infinite);\n result\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(\n _point1: EmbeddedCurvePoint,\n _point2: EmbeddedCurvePoint,\n) -> [Field; 3] {}\n\n/// This function assumes that:\n/// The points are on the curve, and\n/// The points don't share an x-coordinate, and\n/// Neither point is the infinity point.\n/// If it is used with correct input, the function ensures the correct non-zero result is returned.\n/// Except for points on the curve, the other assumptions are checked by the function. It will cause assertion failure if they are not respected.\npub fn embedded_curve_add_not_nul(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n assert(point1.x != point2.x);\n assert(!point1.is_infinite);\n assert(!point2.is_infinite);\n embedded_curve_add_unsafe(point1, point2)\n}\n\n/// Unsafe ec addition\n/// If the inputs are the same, it will perform a doubling, but only if point1 and point2 are the same variable.\n/// If they have the same value but are different variables, the result will be incorrect because in this case\n/// it assumes (but does not check) that the points' x-coordinates are not equal.\n/// It also assumes neither point is the infinity point.\npub fn embedded_curve_add_unsafe(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n let point_array = embedded_curve_add_array_return(point1, point2);\n let x = point_array[0];\n let y = point_array[1];\n\n EmbeddedCurvePoint { x, y, is_infinite: false }\n}\n"},"25":{"path":"std/field/bn254.nr","source":"use crate::field::field_less_than;\nuse crate::runtime::is_unconstrained;\n\n// The low and high decomposition of the field modulus\nglobal PLO: Field = 53438638232309528389504892708671455233;\nglobal PHI: Field = 64323764613183177041862057485226039389;\n\npub(crate) global TWO_POW_128: Field = 0x100000000000000000000000000000000;\nglobal TWO_POW_64: Field = 0x10000000000000000;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(mut x: Field) -> (Field, Field) {\n // Here's we're taking advantage of truncating 64 bit limbs from the input field\n // and then subtracting them from the input such the field division is equivalent to integer division.\n let low_lower_64 = (x as u64) as Field;\n x = (x - low_lower_64) / TWO_POW_64;\n let low_upper_64 = (x as u64) as Field;\n\n let high = (x - low_upper_64) / TWO_POW_64;\n let low = low_upper_64 * TWO_POW_64 + low_lower_64;\n\n (low, high)\n}\n\npub(crate) unconstrained fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nunconstrained fn lte_hint(x: Field, y: Field) -> bool {\n if x == y {\n true\n } else {\n field_less_than(x, y)\n }\n}\n\n// Assert that (alo > blo && ahi >= bhi) || (alo <= blo && ahi > bhi)\nfn assert_gt_limbs(a: (Field, Field), b: (Field, Field)) {\n let (alo, ahi) = a;\n let (blo, bhi) = b;\n unsafe {\n let borrow = lte_hint(alo, blo);\n\n let rlo = alo - blo - 1 + (borrow as Field) * TWO_POW_128;\n let rhi = ahi - bhi - (borrow as Field);\n\n rlo.assert_max_bit_size::<128>();\n rhi.assert_max_bit_size::<128>();\n }\n}\n\n/// Decompose a single field into two 16 byte fields.\npub fn decompose(x: Field) -> (Field, Field) {\n if is_unconstrained() {\n compute_decomposition(x)\n } else {\n unsafe {\n // Take hints of the decomposition\n let (xlo, xhi) = decompose_hint(x);\n\n // Range check the limbs\n xlo.assert_max_bit_size::<128>();\n xhi.assert_max_bit_size::<128>();\n\n // Check that the decomposition is correct\n assert_eq(x, xlo + TWO_POW_128 * xhi);\n\n // Assert that the decomposition of P is greater than the decomposition of x\n assert_gt_limbs((PLO, PHI), (xlo, xhi));\n (xlo, xhi)\n }\n }\n}\n\npub fn assert_gt(a: Field, b: Field) {\n if is_unconstrained() {\n assert(unsafe { field_less_than(b, a) });\n } else {\n // Decompose a and b\n let a_limbs = decompose(a);\n let b_limbs = decompose(b);\n\n // Assert that a_limbs is greater than b_limbs\n assert_gt_limbs(a_limbs, b_limbs)\n }\n}\n\npub fn assert_lt(a: Field, b: Field) {\n assert_gt(b, a);\n}\n\npub fn gt(a: Field, b: Field) -> bool {\n if is_unconstrained() {\n unsafe {\n field_less_than(b, a)\n }\n } else if a == b {\n false\n } else {\n // Take a hint of the comparison and verify it\n unsafe {\n if field_less_than(a, b) {\n assert_gt(b, a);\n false\n } else {\n assert_gt(a, b);\n true\n }\n }\n }\n}\n\npub fn lt(a: Field, b: Field) -> bool {\n gt(b, a)\n}\n\nmod tests {\n // TODO: Allow imports from \"super\"\n use crate::field::bn254::{assert_gt, decompose, gt, lte_hint, PHI, PLO, TWO_POW_128};\n\n #[test]\n fn check_decompose() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_decompose_unconstrained() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_lte_hint() {\n assert(lte_hint(0, 1));\n assert(lte_hint(0, 0x100));\n assert(lte_hint(0x100, TWO_POW_128 - 1));\n assert(!lte_hint(0 - 1, 0));\n\n assert(lte_hint(0, 0));\n assert(lte_hint(0x100, 0x100));\n assert(lte_hint(0 - 1, 0 - 1));\n }\n\n #[test]\n fn check_assert_gt() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n unconstrained fn check_assert_gt_unconstrained() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n fn check_gt() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n unconstrained fn check_gt_unconstrained() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n fn check_plo_phi() {\n assert_eq(PLO + PHI * TWO_POW_128, 0);\n let p_bytes = crate::field::modulus_le_bytes();\n let mut p_low: Field = 0;\n let mut p_high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n p_low += (p_bytes[i] as Field) * offset;\n p_high += (p_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n assert_eq(p_low, PLO);\n assert_eq(p_high, PHI);\n }\n}\n"},"26":{"path":"std/field/mod.nr","source":"pub mod bn254;\nuse crate::runtime::is_unconstrained;\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size<let BIT_SIZE: u32>(self) {\n // docs:end:assert_max_bit_size\n assert(BIT_SIZE < modulus_num_bits() as u32);\n self.__assert_max_bit_size(BIT_SIZE);\n }\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_le_bits)]\n // docs:start:to_le_bits\n pub fn to_le_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_le_bits\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_be_bits)]\n // docs:start:to_be_bits\n pub fn to_be_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_be_bits\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8;N]` array\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_le_bytes\n pub fn to_le_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_le_bytes\n // Compute the byte decomposition\n let bytes = self.to_le_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[N - 1 - i] != p[N - 1 - i]) {\n assert(bytes[N - 1 - i] < p[N - 1 - i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8;N]` array of length required to represent the field modulus\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_be_bytes\n pub fn to_be_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_be_bytes\n // Compute the byte decomposition\n let bytes = self.to_be_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_be_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[i] != p[i]) {\n assert(bytes[i] < p[i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n // docs:start:to_le_radix\n pub fn to_le_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n crate::assert_constant(radix);\n }\n self.__to_le_radix(radix)\n }\n // docs:end:to_le_radix\n\n // docs:start:to_be_radix\n pub fn to_be_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n crate::assert_constant(radix);\n }\n self.__to_be_radix(radix)\n }\n // docs:end:to_be_radix\n\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\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: [u1; 32] = exponent.to_le_bits();\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 `elem` {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 /// Convert a little endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_le_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[i] as Field) * v;\n v = v * 256;\n }\n result\n }\n\n /// Convert a big endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_be_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[N - 1 - i] as Field) * v;\n v = v * 256;\n }\n result\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/// An unconstrained only built in to efficiently compare fields.\n#[builtin(field_less_than)]\nunconstrained fn __field_less_than(x: Field, y: Field) -> bool {}\n\npub(crate) unconstrained fn field_less_than(x: Field, y: Field) -> bool {\n __field_less_than(x, y)\n}\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 if is_unconstrained() {\n unsafe {\n field_less_than(x, y)\n }\n } else {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 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\nmod tests {\n use super::field_less_than;\n\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_bytes();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bits), field);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_bytes();\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bits), field);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_radix(256);\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bits), field);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_radix(256);\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bits), field);\n }\n // docs:end:to_le_radix_example\n\n #[test]\n unconstrained fn test_field_less_than() {\n assert(field_less_than(0, 1));\n assert(field_less_than(0, 0x100));\n assert(field_less_than(0x100, 0 - 1));\n assert(!field_less_than(0 - 1, 0));\n }\n}\n"},"315":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr","source":"use crate::{\n address::{aztec_address::AztecAddress, salted_initialization_hash::SaltedInitializationHash},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS,\n contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator,\n traits::{Deserialize, Serialize, ToField},\n};\n\nglobal PARTIAL_ADDRESS_LENGTH: u32 = 1;\n\n// Partial address\npub struct PartialAddress {\n inner: Field,\n}\n\nimpl ToField for PartialAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl Serialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn serialize(self: Self) -> [Field; PARTIAL_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn deserialize(fields: [Field; PARTIAL_ADDRESS_LENGTH]) -> Self {\n PartialAddress { inner: fields[0] }\n }\n}\n\nimpl PartialAddress {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(\n contract_class_id: ContractClassId,\n salt: Field,\n initialization_hash: Field,\n deployer: AztecAddress,\n ) -> Self {\n PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n SaltedInitializationHash::compute(salt, initialization_hash, deployer),\n )\n }\n\n pub fn compute_from_salted_initialization_hash(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash,\n ) -> Self {\n PartialAddress::from_field(poseidon2_hash_with_separator(\n [contract_class_id.to_field(), salted_initialization_hash.to_field()],\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n ))\n }\n\n pub fn to_field(self) -> Field {\n self.inner\n }\n\n pub fn is_zero(self) -> bool {\n self.to_field() == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"316":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr","source":"use crate::{\n address::aztec_address::AztecAddress, constants::GENERATOR_INDEX__PARTIAL_ADDRESS,\n hash::poseidon2_hash_with_separator, traits::ToField,\n};\n\n// Salted initialization hash. Used in the computation of a partial address.\npub struct SaltedInitializationHash {\n inner: Field,\n}\n\nimpl ToField for SaltedInitializationHash {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl SaltedInitializationHash {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(salt: Field, initialization_hash: Field, deployer: AztecAddress) -> Self {\n SaltedInitializationHash::from_field(poseidon2_hash_with_separator(\n [salt, initialization_hash, deployer.to_field()],\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n ))\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"319":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n abis::function_selector::FunctionSelector,\n address::{\n partial_address::PartialAddress, public_keys_hash::PublicKeysHash,\n salted_initialization_hash::SaltedInitializationHash,\n },\n constants::{\n AZTEC_ADDRESS_LENGTH, FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__CONTRACT_ADDRESS_V1,\n GENERATOR_INDEX__PUBLIC_KEYS_HASH, MAX_FIELD_VALUE,\n },\n contract_class_id::ContractClassId,\n hash::{poseidon2_hash_with_separator, private_functions_root_from_siblings},\n merkle_tree::membership::MembershipWitness,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, ToPoint, TpkM},\n traits::{Deserialize, Empty, FromField, Serialize, ToField},\n utils,\n};\n\n// We do below because `use crate::point::Point;` does not work\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\n\nuse crate::public_keys::AddressPoint;\nuse std::{\n ec::{pow, sqrt},\n embedded_curve_ops::{EmbeddedCurveScalar, fixed_base_scalar_mul as derive_public_key},\n};\n\n// Aztec address\npub struct 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 { inner: 0 }\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 to_address_point(self) -> AddressPoint {\n // We compute the address point by taking our address, setting it to x, and then solving for y in the\n // equation which defines our bn curve:\n // y^2 = x^3 - 17; x = address\n let x = self.inner;\n let y_squared = pow(x, 3) - 17;\n\n // TODO (#8970): Handle cases where we cannot recover a point from an address\n let mut y = sqrt(y_squared);\n\n // If we get a negative y coordinate (any y where y > MAX_FIELD_VALUE / 2), we pin it to the\n // positive one (any value where y <= MAX_FIELD_VALUE / 2) by subtracting it from the Field modulus\n // note: The field modulus is MAX_FIELD_VALUE + 1\n if (!(y.lt(MAX_FIELD_VALUE / 2) | y.eq(MAX_FIELD_VALUE / 2))) {\n y = (MAX_FIELD_VALUE + 1) - y;\n }\n\n AddressPoint { inner: Point { x: self.inner, y, is_infinite: false } }\n }\n\n pub fn compute(public_keys: PublicKeys, partial_address: PartialAddress) -> AztecAddress {\n let public_keys_hash = public_keys.hash();\n\n let pre_address = poseidon2_hash_with_separator(\n [public_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1,\n );\n\n let address_point = derive_public_key(EmbeddedCurveScalar::from_field(pre_address)).add(\n public_keys.ivpk_m.to_point(),\n );\n\n // Note that our address is only the x-coordinate of the full address_point. This is okay because when people want to encrypt something and send it to us\n // they can recover our full point using the x-coordinate (our address itself). To do this, they recompute the y-coordinate according to the equation y^2 = x^3 - 17.\n // When they do this, they may get a positive y-coordinate (a value that is less than or equal to MAX_FIELD_VALUE / 2) or\n // a negative y-coordinate (a value that is more than MAX_FIELD_VALUE), and we cannot dictate which one they get and hence the recovered point may sometimes be different than the one\n // our secrect can decrypt. Regardless though, they should and will always encrypt using point with the positive y-coordinate by convention.\n // This ensures that everyone encrypts to the same point given an arbitrary x-coordinate (address). This is allowed because even though our original point may not have a positive y-coordinate,\n // with our original secret, we will be able to derive the secret to the point with the flipped (and now positive) y-coordinate that everyone encrypts to.\n AztecAddress::from_field(address_point.x)\n }\n\n pub fn compute_from_private_function(\n function_selector: FunctionSelector,\n functino_vk_hash: Field,\n function_leaf_membership_witness: MembershipWitness<FUNCTION_TREE_HEIGHT>,\n contract_class_artifact_hash: Field,\n contract_class_public_bytecode_commitment: Field,\n salted_initialization_hash: SaltedInitializationHash,\n public_keys: PublicKeys,\n ) -> Self {\n let private_functions_root = private_functions_root_from_siblings(\n function_selector,\n functino_vk_hash,\n function_leaf_membership_witness.leaf_index,\n function_leaf_membership_witness.sibling_path,\n );\n\n let contract_class_id = ContractClassId::compute(\n contract_class_artifact_hash,\n private_functions_root,\n contract_class_public_bytecode_commitment,\n );\n\n // Compute contract address using the preimage which includes the class_id.\n let partial_address = PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n salted_initialization_hash,\n );\n\n AztecAddress::compute(public_keys, partial_address)\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() {\n let public_keys = PublicKeys {\n npk_m: NpkM {\n inner: Point {\n x: 0x22f7fcddfa3ce3e8f0cc8e82d7b94cdd740afa3e77f8e4a63ea78a239432dcab,\n y: 0x0471657de2b6216ade6c506d28fbc22ba8b8ed95c871ad9f3e3984e90d9723a7,\n is_infinite: false,\n },\n },\n ivpk_m: IvpkM {\n inner: Point {\n x: 0x111223493147f6785514b1c195bb37a2589f22a6596d30bb2bb145fdc9ca8f1e,\n y: 0x273bbffd678edce8fe30e0deafc4f66d58357c06fd4a820285294b9746c3be95,\n is_infinite: false,\n },\n },\n ovpk_m: OvpkM {\n inner: Point {\n x: 0x09115c96e962322ffed6522f57194627136b8d03ac7469109707f5e44190c484,\n y: 0x0c49773308a13d740a7f0d4f0e6163b02c5a408b6f965856b6a491002d073d5b,\n is_infinite: false,\n },\n },\n tpk_m: TpkM {\n inner: Point {\n x: 0x00d3d81beb009873eb7116327cf47c612d5758ef083d4fda78e9b63980b2a762,\n y: 0x2f567d22d2b02fe1f4ad42db9d58a36afd1983e7e2909d1cab61cafedad6193a,\n is_infinite: false,\n },\n },\n };\n\n let partial_address = PartialAddress::from_field(\n 0x0a7c585381b10f4666044266a02405bf6e01fa564c8517d4ad5823493abd31de,\n );\n\n let address = AztecAddress::compute(public_keys, partial_address);\n\n // The following value was generated by `derivation.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_computed_address_from_partial_and_pubkeys =\n 0x24e4646f58b9fbe7d38e317db8d5636c423fbbdfbe119fc190fe9c64747e0c62;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkeys);\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"},"320":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr","source":"/// Utility function to console.log data in the acir simulator.\n/// Example:\n/// debug_log(\"blah blah this is a debug string\");\npub fn debug_log<let N: u32>(msg: str<N>) {\n debug_log_format(msg, []);\n}\n\n/// Utility function to console.log data in the acir simulator. This variant receives a format string in which the\n/// `${k}` tokens will be replaced with the k-eth value in the `args` array.\n/// Examples:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\npub fn debug_log_format<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe { debug_log_oracle_wrapper(msg, args) };\n}\n\npub unconstrained fn debug_log_oracle_wrapper<let M: u32, let N: u32>(\n msg: str<M>,\n args: [Field; N],\n) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n#[oracle(debugLog)]\nunconstrained fn debug_log_oracle<let M: u32>(_msg: str<M>, args: [Field]) {}\n"},"328":{"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,\n log_hash::{LogHash, ScopedEncryptedLogHash, ScopedLogHash},\n note_hash::ScopedNoteHash,\n nullifier::ScopedNullifier,\n },\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__UNIQUE_NOTE_HASH, GENERATOR_INDEX__VK,\n MAX_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX,\n },\n merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n proof::verification_key::VerificationKey,\n traits::{is_empty, ToField},\n utils::field::field_from_bytes_32_trunc,\n};\nuse super::utils::field::field_from_bytes;\n\npub fn sha256_to_field<let N: u32>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = std::hash::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(\n function_leaf,\n function_leaf_index,\n function_leaf_sibling_path,\n )\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 poseidon2_hash_with_separator(\n [tx_hash, note_index_in_tx as Field],\n GENERATOR_INDEX__NOTE_HASH_NONCE,\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n let inputs = [nonce, note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, unique_note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), unique_note_hash],\n GENERATOR_INDEX__SILOED_NOTE_HASH,\n )\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\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 poseidon2_hash_with_separator(\n [app.to_field(), nullifier],\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 silo_encrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n // We assume contract address has already been masked\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n accumulate_sha256(\n [log_hash.contract_address.to_field(), log_hash.log_hash.value],\n )\n }\n}\n\npub fn mask_encrypted_log_hash(scoped_log: ScopedEncryptedLogHash) -> AztecAddress {\n if scoped_log.contract_address.is_zero() {\n AztecAddress::from_field(0)\n } else if (scoped_log.log_hash.randomness == 0) {\n scoped_log.contract_address\n } else {\n AztecAddress::from_field(poseidon2_hash_with_separator(\n [scoped_log.contract_address.to_field(), scoped_log.log_hash.randomness],\n 0,\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 poseidon2_hash([left, right])\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk<let N: u32>(\n _vk: VerificationKey<N>,\n) -> 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 =\n [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: [u8; 32] = inputs[i].to_be_bytes();\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(\n msg: ScopedL2ToL1Message,\n rollup_version_id: Field,\n chain_id: Field,\n) -> 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 // 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: [u8; 32] = input[offset].to_be_bytes();\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 // TODO: This is not checking that the decomposition is smaller than P\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_radix(256);\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 // TODO: This is not checking that the decomposition is smaller than P\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_radix(256);\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 verification_key_hash<let N: u32>(key: [Field; N]) -> Field {\n crate::hash::poseidon2_hash(key)\n}\n\n#[inline_always]\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#[no_predicates]\npub fn poseidon2_hash_with_separator<let N: u32, T>(inputs: [Field; N], separator: T) -> Field\nwhere\n T: ToField,\n{\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of N + 1\n let in_len = N + 1;\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\npub fn poseidon2_hash_with_separator_slice<T>(inputs: [Field], separator: T) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\n#[no_predicates]\npub fn poseidon2_hash_bytes<let N: u32>(inputs: [u8; N]) -> Field {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of Math.ceil(N/31)\n let mut in_len = N / 31;\n let mut has_padding = false;\n if N % 31 != 0 {\n in_len += 1;\n has_padding = true;\n }\n\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n sponge.absorb(field_from_bytes(current_field, false));\n current_field = [0; 31];\n }\n }\n if has_padding {\n sponge.absorb(field_from_bytes(current_field, false));\n }\n\n sponge.squeeze()\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, 20, 21, 22, 23, 24,\n 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,\n 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,\n 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,\n 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,\n 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,\n 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 = std::hash::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 =\n 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(\n AztecAddress::from_field(1),\n EthAddress::from_field(3),\n 5,\n 2,\n 4,\n );\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n ScopedL2ToL1Message {\n message: L2ToL1Message { recipient: EthAddress::from_field(1), content: 2, counter: 0 },\n contract_address: AztecAddress::from_field(3),\n },\n version,\n chainId,\n );\n\n // The following value was generated by `l2_to_l1_message.test.ts`\n let hash_from_typescript = 0x00c6155d69febb9d5039b374dd4f77bf57b7c881709aa524a18acaa0bd57476a;\n\n assert_eq(hash, hash_from_typescript);\n}\n"},"330":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr","source":"use crate::{\n address::public_keys_hash::PublicKeysHash,\n constants::{\n DEFAULT_IVPK_M_X, DEFAULT_IVPK_M_Y, DEFAULT_NPK_M_X, DEFAULT_NPK_M_Y, DEFAULT_OVPK_M_X,\n DEFAULT_OVPK_M_Y, DEFAULT_TPK_M_X, DEFAULT_TPK_M_Y, GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n },\n hash::poseidon2_hash_with_separator,\n point::POINT_LENGTH,\n traits::{Deserialize, Hash, Serialize},\n};\n\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse dep::std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\nuse std::default::Default;\nuse std::embedded_curve_ops::EmbeddedCurveScalar;\n\npub global PUBLIC_KEYS_LENGTH: u32 = 12;\n\npub struct PublicKeys {\n npk_m: NpkM,\n ivpk_m: IvpkM,\n ovpk_m: OvpkM,\n tpk_m: TpkM,\n}\n\npub trait ToPoint {\n fn to_point(self) -> Point;\n}\n\npub struct NpkM {\n inner: Point,\n}\n\nimpl ToPoint for NpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for NpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\n// Note: If we store npk_m_hash directly we can remove this trait implementation. See #8091\nimpl Hash for NpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\npub struct IvpkM {\n inner: Point,\n}\n\nimpl ToPoint for IvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for IvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct OvpkM {\n inner: Point,\n}\n\nimpl Hash for OvpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nimpl ToPoint for OvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for OvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct TpkM {\n inner: Point,\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for TpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\nimpl Default for PublicKeys {\n fn default() -> Self {\n PublicKeys {\n npk_m: NpkM {\n inner: Point { x: DEFAULT_NPK_M_X, y: DEFAULT_NPK_M_Y, is_infinite: false },\n },\n ivpk_m: IvpkM {\n inner: Point { x: DEFAULT_IVPK_M_X, y: DEFAULT_IVPK_M_Y, is_infinite: false },\n },\n ovpk_m: OvpkM {\n inner: Point { x: DEFAULT_OVPK_M_X, y: DEFAULT_OVPK_M_Y, is_infinite: false },\n },\n tpk_m: TpkM {\n inner: Point { x: DEFAULT_TPK_M_X, y: DEFAULT_TPK_M_Y, is_infinite: false },\n },\n }\n }\n}\n\nimpl Eq for PublicKeys {\n fn eq(self, other: PublicKeys) -> bool {\n (self.npk_m.inner == other.npk_m.inner)\n & (self.ivpk_m.inner == other.ivpk_m.inner)\n & (self.ovpk_m.inner == other.ovpk_m.inner)\n & (self.tpk_m.inner == other.tpk_m.inner)\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(poseidon2_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field,\n ))\n }\n}\n\nimpl Serialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.inner.x,\n self.npk_m.inner.y,\n self.npk_m.inner.is_infinite as Field,\n self.ivpk_m.inner.x,\n self.ivpk_m.inner.y,\n self.ivpk_m.inner.is_infinite as Field,\n self.ovpk_m.inner.x,\n self.ovpk_m.inner.y,\n self.ovpk_m.inner.is_infinite as Field,\n self.tpk_m.inner.x,\n self.tpk_m.inner.y,\n self.tpk_m.inner.is_infinite as Field,\n ]\n }\n}\n\nimpl Deserialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM {\n inner: Point {\n x: serialized[0],\n y: serialized[1],\n is_infinite: serialized[2] as bool,\n },\n },\n ivpk_m: IvpkM {\n inner: Point {\n x: serialized[3],\n y: serialized[4],\n is_infinite: serialized[5] as bool,\n },\n },\n ovpk_m: OvpkM {\n inner: Point {\n x: serialized[6],\n y: serialized[7],\n is_infinite: serialized[8] as bool,\n },\n },\n tpk_m: TpkM {\n inner: Point {\n x: serialized[9],\n y: serialized[10],\n is_infinite: serialized[11] as bool,\n },\n },\n }\n }\n}\n\npub struct AddressPoint {\n inner: Point,\n}\n\nimpl ToPoint for AddressPoint {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n#[test]\nunconstrained fn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash =\n 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nunconstrained fn compute_default_hash() {\n let keys = PublicKeys::default();\n\n let actual = keys.hash();\n let test_data_default_hash = 0x1d3bf1fb93ae0e9cda83b203dd91c3bfb492a9aecf30ec90e1057eced0f0e62d;\n\n assert(actual.to_field() == test_data_default_hash);\n}\n\n#[test]\nunconstrained fn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.inner.x, deserialized.npk_m.inner.x);\n assert_eq(keys.npk_m.inner.y, deserialized.npk_m.inner.y);\n assert_eq(keys.ivpk_m.inner.x, deserialized.ivpk_m.inner.x);\n assert_eq(keys.ivpk_m.inner.y, deserialized.ivpk_m.inner.y);\n assert_eq(keys.ovpk_m.inner.x, deserialized.ovpk_m.inner.x);\n assert_eq(keys.ovpk_m.inner.y, deserialized.ovpk_m.inner.y);\n assert_eq(keys.tpk_m.inner.x, deserialized.tpk_m.inner.x);\n assert_eq(keys.tpk_m.inner.y, deserialized.tpk_m.inner.y);\n}\n"},"34":{"path":"std/hash/poseidon2.nr","source":"use crate::default::Default;\nuse crate::hash::Hasher;\n\ncomptime global RATE: u32 = 3;\n\npub struct Poseidon2 {\n cache: [Field; 3],\n state: [Field; 4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n #[no_predicates]\n pub fn hash<let N: u32>(input: [Field; N], message_size: u32) -> Field {\n if message_size == N {\n Poseidon2::hash_internal(input, N, false)\n } else {\n Poseidon2::hash_internal(input, message_size, true)\n }\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2 {\n let mut result =\n Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n }\n\n fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal<let N: u32>(\n input: [Field; N],\n in_len: u32,\n is_variable_length: bool,\n ) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\npub struct Poseidon2Hasher {\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv: Field = (self._state.len() as Field) * 18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field) {\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher { _state: &[] }\n }\n}\n"},"35":{"path":"std/hash/sha256.nr","source":"use crate::runtime::is_unconstrained;\n\n// Implementation of SHA-256 mapping a byte array of variable length to\n// 32 bytes.\n\n// A message block is up to 64 bytes taken from the input.\nglobal BLOCK_SIZE = 64;\n\n// The first index in the block where the 8 byte message size will be written.\nglobal MSG_SIZE_PTR = 56;\n\n// Size of the message block when packed as 4-byte integer array.\nglobal INT_BLOCK_SIZE = 16;\n\n// A `u32` integer consists of 4 bytes.\nglobal INT_SIZE = 4;\n\n// Index of the integer in the `INT_BLOCK` where the length is written.\nglobal INT_SIZE_PTR = MSG_SIZE_PTR / INT_SIZE;\n\n// Magic numbers for bit shifting.\n// Works with actual bit shifting as well as the compiler turns them into * and /\n// but circuit execution appears to be 10% faster this way.\nglobal TWO_POW_8 = 256;\nglobal TWO_POW_16 = TWO_POW_8 * 256;\nglobal TWO_POW_24 = TWO_POW_16 * 256;\nglobal TWO_POW_32 = TWO_POW_24 as u64 * 256;\n\n// Index of a byte in a 64 byte block; ie. 0..=63\ntype BLOCK_BYTE_PTR = u32;\n\n// The foreign function to compress blocks works on 16 pieces of 4-byte integers, instead of 64 bytes.\ntype INT_BLOCK = [u32; INT_BLOCK_SIZE];\n\n// A message block is a slice of the original message of a fixed size,\n// potentially padded with zeros, with neighbouring 4 bytes packed into integers.\ntype MSG_BLOCK = INT_BLOCK;\n\n// The hash is 32 bytes.\ntype HASH = [u8; 32];\n\n// The state accumulates the blocks.\n// Its overall size is the same as the `HASH`.\ntype STATE = [u32; 8];\n\n// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256<let N: u32>(input: [u8; N]) -> HASH\n// docs:end:sha256\n{\n digest(input)\n}\n\n#[foreign(sha256_compression)]\npub fn sha256_compression(_input: INT_BLOCK, _state: STATE) -> STATE {}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest<let N: u32>(msg: [u8; N]) -> HASH {\n sha256_var(msg, N as u64)\n}\n\n// Variable size SHA-256 hash\npub fn sha256_var<let N: u32>(msg: [u8; N], message_size: u64) -> HASH {\n let message_size = message_size as u32;\n let num_blocks = N / BLOCK_SIZE;\n let mut msg_block: MSG_BLOCK = [0; INT_BLOCK_SIZE];\n // Intermediate hash, starting with the canonical initial value\n let mut h: STATE = [\n 1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635,\n 1541459225,\n ];\n // Pointer into msg_block on a 64 byte scale\n let mut msg_byte_ptr = 0;\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let (new_msg_block, new_msg_byte_ptr) =\n unsafe { build_msg_block(msg, message_size, msg_start) };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n // Verify the block we are compressing was appropriately constructed\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n\n // If the block is filled, compress it.\n // An un-filled block is handled after this loop.\n if (msg_start < message_size) & (msg_byte_ptr == BLOCK_SIZE) {\n h = sha256_compression(msg_block, h);\n }\n }\n\n let modulo = N % BLOCK_SIZE;\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n if modulo != 0 {\n let msg_start = BLOCK_SIZE * num_blocks;\n let (new_msg_block, new_msg_byte_ptr) =\n unsafe { build_msg_block(msg, message_size, msg_start) };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n verify_msg_block_padding(msg_block, msg_byte_ptr);\n }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n // If we had modulo == 0 then it means the last block was full,\n // and we can reset the pointer to zero to overwrite it.\n if msg_byte_ptr == BLOCK_SIZE {\n msg_byte_ptr = 0;\n }\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n // Here we rely on the fact that everything beyond the available input is set to 0.\n msg_block = update_block_item(\n msg_block,\n msg_byte_ptr,\n |msg_item| set_item_byte_then_zeros(msg_item, msg_byte_ptr, 1 << 7),\n );\n msg_byte_ptr = msg_byte_ptr + 1;\n let last_block = msg_block;\n\n // If we don't have room to write the size, compress the block and reset it.\n if msg_byte_ptr > MSG_SIZE_PTR {\n h = sha256_compression(msg_block, h);\n // `attach_len_to_msg_block` will zero out everything after the `msg_byte_ptr`.\n msg_byte_ptr = 0;\n }\n\n msg_block = unsafe { attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size) };\n\n if !is_unconstrained() {\n verify_msg_len(msg_block, last_block, msg_byte_ptr, message_size);\n }\n\n hash_final_block(msg_block, h)\n}\n\n// Take `BLOCK_SIZE` number of bytes from `msg` starting at `msg_start`.\n// Returns the block and the length that has been copied rather than padded with zeros.\nunconstrained fn build_msg_block<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n msg_start: u32,\n) -> (MSG_BLOCK, BLOCK_BYTE_PTR) {\n let mut msg_block: MSG_BLOCK = [0; INT_BLOCK_SIZE];\n\n // We insert `BLOCK_SIZE` bytes (or up to the end of the message)\n let block_input = if msg_start + BLOCK_SIZE > message_size {\n if message_size < msg_start {\n // This function is sometimes called with `msg_start` past the end of the message.\n // In this case we return an empty block and zero pointer to signal that the result should be ignored.\n 0\n } else {\n message_size - msg_start\n }\n } else {\n BLOCK_SIZE\n };\n\n // Figure out the number of items in the int array that we have to pack.\n // e.g. if the input is [0,1,2,3,4,5] then we need to pack it as 2 items: [0123, 4500]\n let mut int_input = block_input / INT_SIZE;\n if block_input % INT_SIZE != 0 {\n int_input = int_input + 1;\n };\n\n for i in 0..int_input {\n let mut msg_item: u32 = 0;\n // Always construct the integer as 4 bytes, even if it means going beyond the input.\n for j in 0..INT_SIZE {\n let k = i * INT_SIZE + j;\n let msg_byte = if k < block_input {\n msg[msg_start + k]\n } else {\n 0\n };\n msg_item = lshift8(msg_item, 1) + msg_byte as u32;\n }\n msg_block[i] = msg_item;\n }\n\n // Returning the index as if it was a 64 byte array.\n // We have to project it down to 16 items and bit shifting to get a byte back if we need it.\n (msg_block, block_input)\n}\n\n// Verify the block we are compressing was appropriately constructed by `build_msg_block`\n// and matches the input data. Returns the index of the first unset item.\n// If `message_size` is less than `msg_start` then this is called with the old non-empty block;\n// in that case we can skip verification, ie. no need to check that everything is zero.\nfn verify_msg_block<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n msg_block: MSG_BLOCK,\n msg_start: u32,\n) -> BLOCK_BYTE_PTR {\n let mut msg_byte_ptr = 0;\n let mut msg_end = msg_start + BLOCK_SIZE;\n if msg_end > N {\n msg_end = N;\n }\n // We might have to go beyond the input to pad the fields.\n if msg_end % INT_SIZE != 0 {\n msg_end = msg_end + INT_SIZE - msg_end % INT_SIZE;\n }\n\n // Reconstructed packed item.\n let mut msg_item: u32 = 0;\n\n // Inclusive at the end so that we can compare the last item.\n let mut i: u32 = 0;\n for k in msg_start..=msg_end {\n if k % INT_SIZE == 0 {\n // If we consumed some input we can compare against the block.\n if (msg_start < message_size) & (k > msg_start) {\n assert_eq(msg_block[i], msg_item as u32);\n i = i + 1;\n msg_item = 0;\n }\n }\n // Shift the accumulator\n msg_item = lshift8(msg_item, 1);\n // If we have input to consume, add it at the rightmost position.\n if k < message_size & k < msg_end {\n msg_item = msg_item + msg[k] as u32;\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n\n msg_byte_ptr\n}\n\n// Verify the block we are compressing was appropriately padded with zeros by `build_msg_block`.\n// This is only relevant for the last, potentially partially filled block.\nfn verify_msg_block_padding(msg_block: MSG_BLOCK, msg_byte_ptr: BLOCK_BYTE_PTR) {\n // Check all the way to the end of the block.\n verify_msg_block_zeros(msg_block, msg_byte_ptr, INT_BLOCK_SIZE);\n}\n\n// Verify that a region of ints in the message block are (partially) zeroed,\n// up to an (exclusive) maximum which can either be the end of the block\n// or just where the size is to be written.\nfn verify_msg_block_zeros(\n msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n max_int_byte_ptr: u32,\n) {\n // This variable is used to get around the compiler under-constrained check giving a warning.\n // We want to check against a constant zero, but if it does not come from the circuit inputs\n // or return values the compiler check will issue a warning.\n let zero = msg_block[0] - msg_block[0];\n\n // First integer which is supposed to be (partially) zero.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n let zeros = INT_SIZE - modulo;\n let mask = if zeros == 3 {\n TWO_POW_24\n } else if zeros == 2 {\n TWO_POW_16\n } else {\n TWO_POW_8\n };\n assert_eq(msg_block[int_byte_ptr] % mask, zero);\n int_byte_ptr = int_byte_ptr + 1;\n }\n\n // Check the rest of the items.\n for i in 0..max_int_byte_ptr {\n if i >= int_byte_ptr {\n assert_eq(msg_block[i], zero);\n }\n }\n}\n\n// Verify that up to the byte pointer the two blocks are equal.\n// At the byte pointer the new block can be partially zeroed.\nfn verify_msg_block_equals_last(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n) {\n // msg_byte_ptr is the position at which they are no longer have to be the same.\n // First integer which is supposed to be (partially) zero contains that pointer.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Reconstruct the partially zero item from the last block.\n let last_field = last_block[int_byte_ptr];\n let mut msg_item: u32 = 0;\n // Reset to where they are still equal.\n msg_byte_ptr = msg_byte_ptr - modulo;\n for i in 0..INT_SIZE {\n msg_item = lshift8(msg_item, 1);\n if i < modulo {\n msg_item = msg_item + get_item_byte(last_field, msg_byte_ptr) as u32;\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n assert_eq(msg_block[int_byte_ptr], msg_item);\n }\n\n for i in 0..INT_SIZE_PTR {\n if i < int_byte_ptr {\n assert_eq(msg_block[i], last_block[i]);\n }\n }\n}\n\n// Apply a function on the block item which the pointer indicates.\nfn update_block_item<Env>(\n mut msg_block: MSG_BLOCK,\n msg_byte_ptr: BLOCK_BYTE_PTR,\n f: fn[Env](u32) -> u32,\n) -> MSG_BLOCK {\n let i = msg_byte_ptr / INT_SIZE;\n msg_block[i] = f(msg_block[i]);\n msg_block\n}\n\n// Set the rightmost `zeros` number of bytes to 0.\nfn set_item_zeros(item: u32, zeros: u8) -> u32 {\n lshift8(rshift8(item, zeros), zeros)\n}\n\n// Replace one byte in the item with a value, and set everything after it to zero.\nfn set_item_byte_then_zeros(msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR, msg_byte: u8) -> u32 {\n let zeros = INT_SIZE - msg_byte_ptr % INT_SIZE;\n let zeroed_item = set_item_zeros(msg_item, zeros as u8);\n let new_item = byte_into_item(msg_byte, msg_byte_ptr);\n zeroed_item + new_item\n}\n\n// Get a byte of a message item according to its overall position in the `BLOCK_SIZE` space.\nfn get_item_byte(mut msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR) -> u8 {\n // How many times do we have to shift to the right to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n msg_item = rshift8(msg_item, shifts as u8);\n // At this point the byte we want is in the rightmost position.\n msg_item as u8\n}\n\n// Project a byte into a position in a field based on the overall block pointer.\n// For example putting 1 into pointer 5 would be 100, because overall we would\n// have [____, 0100] with indexes [0123,4567].\nfn byte_into_item(msg_byte: u8, msg_byte_ptr: BLOCK_BYTE_PTR) -> u32 {\n let mut msg_item = msg_byte as u32;\n // How many times do we have to shift to the left to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n lshift8(msg_item, shifts as u8)\n}\n\n// Construct a field out of 4 bytes.\nfn make_item(b0: u8, b1: u8, b2: u8, b3: u8) -> u32 {\n let mut item = b0 as u32;\n item = lshift8(item, 1) + b1 as u32;\n item = lshift8(item, 1) + b2 as u32;\n item = lshift8(item, 1) + b3 as u32;\n item\n}\n\n// Shift by 8 bits to the left between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise multiplies by 256.\nfn lshift8(item: u32, shifts: u8) -> u32 {\n if is_unconstrained() {\n if item == 0 {\n 0\n } else {\n // Brillig wouldn't shift 0<<4 without overflow.\n item << (8 * shifts)\n }\n } else {\n // We can do a for loop up to INT_SIZE or an if-else.\n if shifts == 0 {\n item\n } else if shifts == 1 {\n item * TWO_POW_8\n } else if shifts == 2 {\n item * TWO_POW_16\n } else if shifts == 3 {\n item * TWO_POW_24\n } else {\n // Doesn't make sense, but it's most likely called on 0 anyway.\n 0\n }\n }\n}\n\n// Shift by 8 bits to the right between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise divides by 256.\nfn rshift8(item: u32, shifts: u8) -> u32 {\n if is_unconstrained() {\n item >> (8 * shifts)\n } else {\n // Division wouldn't work on `Field`.\n if shifts == 0 {\n item\n } else if shifts == 1 {\n item / TWO_POW_8\n } else if shifts == 2 {\n item / TWO_POW_16\n } else if shifts == 3 {\n item / TWO_POW_24\n } else {\n 0\n }\n }\n}\n\n// Zero out all bytes between the end of the message and where the length is appended,\n// then write the length into the last 8 bytes of the block.\nunconstrained fn attach_len_to_msg_block(\n mut msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) -> MSG_BLOCK {\n // We assume that `msg_byte_ptr` is less than 57 because if not then it is reset to zero before calling this function.\n // In any case, fill blocks up with zeros until the last 64 bits (i.e. until msg_byte_ptr = 56).\n // There can be one item which has to be partially zeroed.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Index of the block in which we find the item we need to partially zero.\n let i = msg_byte_ptr / INT_SIZE;\n let zeros = INT_SIZE - modulo;\n msg_block[i] = set_item_zeros(msg_block[i], zeros as u8);\n msg_byte_ptr = msg_byte_ptr + zeros;\n }\n\n // The rest can be zeroed without bit shifting anything.\n for i in (msg_byte_ptr / INT_SIZE)..INT_SIZE_PTR {\n msg_block[i] = 0;\n }\n\n // Set the last two 4 byte ints as the first/second half of the 8 bytes of the length.\n let len = 8 * message_size;\n let len_bytes: [u8; 8] = (len as Field).to_be_bytes();\n for i in 0..=1 {\n let shift = i * 4;\n msg_block[INT_SIZE_PTR + i] = make_item(\n len_bytes[shift],\n len_bytes[shift + 1],\n len_bytes[shift + 2],\n len_bytes[shift + 3],\n );\n }\n msg_block\n}\n\n// Verify that the message length was correctly written by `attach_len_to_msg_block`,\n// and that everything between the byte pointer and the size pointer was zeroed,\n// and that everything before the byte pointer was untouched.\nfn verify_msg_len(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) {\n // Check zeros up to the size pointer.\n verify_msg_block_zeros(msg_block, msg_byte_ptr, INT_SIZE_PTR);\n\n // Check that up to the pointer we match the last block.\n verify_msg_block_equals_last(msg_block, last_block, msg_byte_ptr);\n\n // We verify the message length was inserted correctly by reversing the byte decomposition.\n let mut reconstructed_len: u64 = 0;\n for i in INT_SIZE_PTR..INT_BLOCK_SIZE {\n reconstructed_len = reconstructed_len * TWO_POW_32;\n reconstructed_len = reconstructed_len + msg_block[i] as u64;\n }\n let len = 8 * message_size as u64;\n assert_eq(reconstructed_len, len);\n}\n\n// Perform the final compression, then transform the `STATE` into `HASH`.\nfn hash_final_block(msg_block: MSG_BLOCK, mut state: STATE) -> HASH {\n let mut out_h: HASH = [0; 32]; // Digest as sequence of bytes\n // Hash final padded block\n state = sha256_compression(msg_block, state);\n\n // Return final hash as byte array\n for j in 0..8 {\n let h_bytes: [u8; 4] = (state[j] as Field).to_be_bytes();\n for k in 0..4 {\n out_h[4 * j + k] = h_bytes[k];\n }\n }\n\n out_h\n}\n\nmod tests {\n use super::{\n attach_len_to_msg_block, build_msg_block, byte_into_item, get_item_byte, make_item,\n set_item_byte_then_zeros, set_item_zeros,\n };\n use super::INT_BLOCK;\n use super::sha256_var;\n\n #[test]\n fn smoke_test() {\n let input = [0xbd];\n let result = [\n 0x68, 0x32, 0x57, 0x20, 0xaa, 0xbd, 0x7c, 0x82, 0xf3, 0x0f, 0x55, 0x4b, 0x31, 0x3d,\n 0x05, 0x70, 0xc9, 0x5a, 0xcc, 0xbb, 0x7d, 0xc4, 0xb5, 0xaa, 0xe1, 0x12, 0x04, 0xc0,\n 0x8f, 0xfe, 0x73, 0x2b,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_just_over_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116,\n ];\n let result = [\n 91, 122, 146, 93, 52, 109, 133, 148, 171, 61, 156, 70, 189, 238, 153, 7, 222, 184, 94,\n 24, 65, 114, 192, 244, 207, 199, 87, 232, 192, 224, 171, 207,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_multiple_over_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115,\n 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49,\n 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46,\n 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115,\n 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97,\n 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45,\n 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55,\n 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32,\n 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32,\n 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64,\n 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103,\n 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115,\n 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101,\n 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109,\n 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56,\n 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48,\n 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75,\n 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67,\n 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101,\n 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99,\n ];\n let result = [\n 116, 90, 151, 31, 78, 22, 138, 180, 211, 189, 69, 76, 227, 200, 155, 29, 59, 123, 154,\n 60, 47, 153, 203, 129, 157, 251, 48, 2, 79, 11, 65, 47,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_just_under_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59,\n ];\n let result = [\n 143, 140, 76, 173, 222, 123, 102, 68, 70, 149, 207, 43, 39, 61, 34, 79, 216, 252, 213,\n 165, 74, 16, 110, 74, 29, 64, 138, 167, 30, 1, 9, 119,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_big_not_block_multiple() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115,\n 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49,\n 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46,\n 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115,\n 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97,\n 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45,\n 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55,\n 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32,\n 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32,\n 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64,\n 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103,\n 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115,\n 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101,\n 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109,\n 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56,\n 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48,\n 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75,\n 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67,\n 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101,\n 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99, 116, 58, 77, 101, 115, 115, 97,\n 103, 101, 45, 73, 100, 58, 68, 97, 116, 101, 58, 116, 111, 59, 32, 98, 61,\n ];\n let result = [\n 112, 144, 73, 182, 208, 98, 9, 238, 54, 229, 61, 145, 222, 17, 72, 62, 148, 222, 186,\n 55, 192, 82, 220, 35, 66, 47, 193, 200, 22, 38, 26, 186,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_big_with_padding() {\n let input = [\n 48, 130, 1, 37, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 48, 130, 1, 17,\n 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12,\n 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48,\n 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6,\n 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2,\n 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89,\n 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2,\n 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75,\n 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1,\n 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189,\n 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4,\n 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45,\n 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4,\n 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188,\n 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212,\n 181, 240, 180, 106, 195, 24, 117, 54, 129, 19, 10, 250, 53,\n ];\n let message_size = 297;\n assert_eq(sha256_var(input, message_size), result);\n }\n\n #[test]\n fn msg_big_no_padding() {\n let input = [\n 48, 130, 1, 37, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 48, 130, 1, 17,\n 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12,\n 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48,\n 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6,\n 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2,\n 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89,\n 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2,\n 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75,\n 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1,\n 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189,\n 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4,\n 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45,\n 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4,\n 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188,\n 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38,\n ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212,\n 181, 240, 180, 106, 195, 24, 117, 54, 129, 19, 10, 250, 53,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn same_msg_len_variable_padding() {\n let input = [\n 29, 81, 165, 84, 243, 114, 101, 37, 242, 146, 127, 99, 69, 145, 39, 72, 213, 39, 253,\n 179, 218, 37, 217, 201, 172, 93, 198, 50, 249, 70, 15, 30, 162, 112, 187, 40, 140, 9,\n 236, 53, 32, 44, 38, 163, 113, 254, 192, 197, 44, 89, 71, 130, 169, 242, 17, 211, 214,\n 72, 19, 178, 186, 168, 147, 127, 99, 101, 252, 227, 8, 147, 150, 85, 97, 158, 17, 107,\n 218, 244, 82, 113, 247, 91, 208, 214, 60, 244, 87, 137, 173, 201, 130, 18, 66, 56, 198,\n 149, 207, 189, 175, 120, 123, 224, 177, 167, 251, 159, 143, 110, 68, 183, 189, 70, 126,\n 32, 35, 164, 44, 30, 44, 12, 65, 18, 62, 239, 242, 2, 248, 104, 2, 178, 64, 28, 126, 36,\n 137, 24, 14, 116, 91, 98, 90, 159, 218, 102, 45, 11, 110, 223, 245, 184, 52, 99, 59,\n 245, 136, 175, 3, 72, 164, 146, 145, 116, 22, 66, 24, 49, 193, 121, 3, 60, 37, 41, 97,\n 3, 190, 66, 195, 225, 63, 46, 3, 118, 4, 208, 15, 1, 40, 254, 235, 151, 123, 70, 180,\n 170, 44, 172, 90, 4, 254, 53, 239, 116, 246, 67, 56, 129, 61, 22, 169, 213, 65, 27, 216,\n 116, 162, 239, 214, 207, 126, 177, 20, 100, 25, 48, 143, 84, 215, 70, 197, 53, 65, 70,\n 86, 172, 61, 62, 9, 212, 167, 169, 133, 41, 126, 213, 196, 33, 192, 238, 0, 63, 246,\n 215, 58, 128, 110, 101, 92, 3, 170, 214, 130, 149, 52, 81, 125, 118, 233, 3, 118, 193,\n 104, 207, 120, 115, 77, 253, 191, 122, 0, 107, 164, 207, 113, 81, 169, 36, 201, 228, 74,\n 134, 131, 218, 178, 35, 30, 216, 101, 2, 103, 174, 87, 95, 50, 50, 215, 157, 5, 210,\n 188, 54, 211, 78, 45, 199, 96, 121, 241, 241, 176, 226, 194, 134, 130, 89, 217, 210,\n 186, 32, 140, 39, 91, 103, 212, 26, 87, 32, 72, 144, 228, 230, 117, 99, 188, 50, 15, 69,\n 79, 179, 50, 12, 106, 86, 218, 101, 73, 142, 243, 29, 250, 122, 228, 233, 29, 255, 22,\n 121, 114, 125, 103, 41, 250, 241, 179, 126, 158, 198, 116, 209, 65, 94, 98, 228, 175,\n 169, 96, 3, 9, 233, 133, 214, 55, 161, 164, 103, 80, 85, 24, 186, 64, 167, 92, 131, 53,\n 101, 202, 47, 25, 104, 118, 155, 14, 12, 12, 25, 116, 45, 221, 249, 28, 246, 212, 200,\n 157, 167, 169, 56, 197, 181, 4, 245, 146, 1, 140, 234, 191, 212, 228, 125, 87, 81, 86,\n 119, 30, 63, 129, 143, 32, 96,\n ];\n\n // Prepare inputs of different lengths\n let mut input_511 = [0; 511];\n let mut input_512 = [0; 512]; // Next block\n let mut input_575 = [0; 575];\n let mut input_576 = [0; 576]; // Next block\n for i in 0..input.len() {\n input_511[i] = input[i];\n input_512[i] = input[i];\n input_575[i] = input[i];\n input_576[i] = input[i];\n }\n\n // Compute hashes of all inputs (with same message length)\n let fixed_length_hash = super::sha256(input);\n let var_full_length_hash = sha256_var(input, input.len() as u64);\n let var_length_hash_511 = sha256_var(input_511, input.len() as u64);\n let var_length_hash_512 = sha256_var(input_512, input.len() as u64);\n let var_length_hash_575 = sha256_var(input_575, input.len() as u64);\n let var_length_hash_576 = sha256_var(input_576, input.len() as u64);\n\n // All of the above should have produced the same hash\n assert_eq(var_full_length_hash, fixed_length_hash);\n assert_eq(var_length_hash_511, fixed_length_hash);\n assert_eq(var_length_hash_512, fixed_length_hash);\n assert_eq(var_length_hash_575, fixed_length_hash);\n assert_eq(var_length_hash_576, fixed_length_hash);\n }\n\n #[test]\n fn test_get_item_byte() {\n let fld = make_item(10, 20, 30, 40);\n assert_eq(fld, 0x0a141e28);\n assert_eq(get_item_byte(fld, 0), 10);\n assert_eq(get_item_byte(fld, 4), 10);\n assert_eq(get_item_byte(fld, 6), 30);\n }\n\n #[test]\n fn test_byte_into_item() {\n let fld = make_item(0, 20, 0, 0);\n assert_eq(byte_into_item(20, 1), fld);\n assert_eq(byte_into_item(20, 5), fld);\n }\n\n #[test]\n fn test_set_item_zeros() {\n let fld0 = make_item(10, 20, 30, 40);\n let fld1 = make_item(10, 0, 0, 0);\n assert_eq(set_item_zeros(fld0, 3), fld1);\n assert_eq(set_item_zeros(fld0, 4), 0);\n assert_eq(set_item_zeros(0, 4), 0);\n }\n\n #[test]\n fn test_set_item_byte_then_zeros() {\n let fld0 = make_item(10, 20, 30, 40);\n let fld1 = make_item(10, 50, 0, 0);\n assert_eq(set_item_byte_then_zeros(fld0, 1, 50), fld1);\n }\n\n #[test]\n fn test_build_msg_block_start_0() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48,\n ];\n assert_eq(input.len(), 22);\n let (msg_block, msg_byte_ptr) = unsafe { build_msg_block(input, input.len(), 0) };\n assert_eq(msg_byte_ptr, input.len());\n assert_eq(msg_block[0], make_item(input[0], input[1], input[2], input[3]));\n assert_eq(msg_block[1], make_item(input[4], input[5], input[6], input[7]));\n assert_eq(msg_block[5], make_item(input[20], input[21], 0, 0));\n assert_eq(msg_block[6], 0);\n }\n\n #[test]\n fn test_build_msg_block_start_1() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116,\n ];\n assert_eq(input.len(), 68);\n let (msg_block, msg_byte_ptr) = unsafe { build_msg_block(input, input.len(), 64) };\n assert_eq(msg_byte_ptr, 4);\n assert_eq(msg_block[0], make_item(input[64], input[65], input[66], input[67]));\n assert_eq(msg_block[1], 0);\n }\n\n #[test]\n fn test_attach_len_to_msg_block() {\n let input: INT_BLOCK = [\n 2152555847, 1397309779, 1936618851, 1262052426, 1936876331, 1985297723, 543702374,\n 1919905082, 1131376244, 1701737517, 1417244773, 978151789, 1697470053, 1920166255,\n 1849316213, 1651139939,\n ];\n let msg_block = unsafe { attach_len_to_msg_block(input, 1, 448) };\n assert_eq(msg_block[0], ((1 << 7) as u32) * 256 * 256 * 256);\n assert_eq(msg_block[1], 0);\n assert_eq(msg_block[15], 3584);\n }\n}\n"},"392":{"path":"/usr/src/noir-projects/noir-contracts/contracts/contract_instance_deployer_contract/src/main.nr","source":"use dep::aztec::macros::aztec;\n\n#[aztec]\ncontract ContractInstanceDeployer {\n use dep::aztec::{\n hash::compute_unencrypted_log_hash,\n macros::{events::event, functions::private},\n oracle::logs::emit_unencrypted_log_private,\n utils::to_bytes::arr_to_be_bytes_arr,\n };\n use dep::aztec::protocol_types::{\n abis::log_hash::LogHash,\n address::{AztecAddress, PartialAddress, PublicKeysHash},\n constants::DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE,\n contract_class_id::ContractClassId,\n public_keys::PublicKeys,\n traits::Serialize,\n };\n use std::meta::derive;\n\n #[event]\n #[derive(Serialize)]\n struct ContractInstanceDeployed {\n DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE: Field,\n address: AztecAddress,\n version: u8,\n salt: Field,\n contract_class_id: ContractClassId,\n initialization_hash: Field,\n public_keys: PublicKeys,\n deployer: AztecAddress,\n }\n\n // We need to impl this separately because ts deserializes a point as two fields only.\n // We had issues that:\n // Notice how the 'is_infinite' field is deserialized as the next point.\n // {\n // masterNullifierPublicKey: Point {\n // x: Fr<0x0000000000000000000000000000000000000000000000000000000000000012>,\n // y: Fr<0x0000000000000000000000000000000000000000000000000000000000000034>,\n // isInfinite: false,\n // kind: 'point'\n // },\n // masterIncomingViewingPublicKey: Point {\n // x: Fr<0x0000000000000000000000000000000000000000000000000000000000000000>,\n // y: Fr<0x0000000000000000000000000000000000000000000000000000000000000056>,\n // isInfinite: false,\n // kind: 'point'\n // },\n // masterOutgoingViewingPublicKey: Point {\n // x: Fr<0x0000000000000000000000000000000000000000000000000000000000000078>,\n // y: Fr<0x0000000000000000000000000000000000000000000000000000000000000000>,\n // isInfinite: false,\n // kind: 'point'\n // },\n // masterTaggingPublicKey: Point {\n // x: Fr<0x0000000000000000000000000000000000000000000000000000000000000910>,\n // y: Fr<0x0000000000000000000000000000000000000000000000000000000000001112>,\n // isInfinite: false,\n // kind: 'point'\n // }\n impl Serialize<15> for ContractInstanceDeployed {\n fn serialize(self) -> [Field; 15] {\n [\n self.DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE,\n self.address.to_field(),\n self.version.to_field(),\n self.salt,\n self.contract_class_id.to_field(),\n self.initialization_hash,\n self.public_keys.npk_m.serialize()[0],\n self.public_keys.npk_m.serialize()[1],\n self.public_keys.ivpk_m.serialize()[0],\n self.public_keys.ivpk_m.serialize()[1],\n self.public_keys.ovpk_m.serialize()[0],\n self.public_keys.ovpk_m.serialize()[1],\n self.public_keys.tpk_m.serialize()[0],\n self.public_keys.tpk_m.serialize()[1],\n self.deployer.to_field(),\n ]\n }\n }\n\n #[private]\n fn deploy(\n salt: Field,\n contract_class_id: ContractClassId,\n initialization_hash: Field,\n public_keys: PublicKeys,\n universal_deploy: bool,\n ) {\n // TODO(@spalladino): assert nullifier_exists silo(contract_class_id, ContractClassRegisterer)\n let deployer = if universal_deploy {\n AztecAddress::zero()\n } else {\n context.msg_sender()\n };\n\n let partial_address =\n PartialAddress::compute(contract_class_id, salt, initialization_hash, deployer);\n\n let address = AztecAddress::compute(public_keys, partial_address);\n\n // Emit the address as a nullifier to be able to prove that this instance has been (not) deployed\n context.push_nullifier(address.to_field());\n\n // Broadcast the event\n let event = ContractInstanceDeployed {\n DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_MAGIC_VALUE,\n contract_class_id,\n address,\n public_keys,\n initialization_hash,\n salt,\n deployer,\n version: 1,\n };\n\n let payload = event.serialize();\n dep::aztec::oracle::debug_log::debug_log_format(\"ContractInstanceDeployed: {}\", payload);\n\n let contract_address = context.this_address();\n let counter = context.next_counter();\n\n // @todo This is very inefficient, we are doing a lot of back and forth conversions.\n let serialized_log = arr_to_be_bytes_arr(payload);\n let log_hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n // 40 = addr (32) + raw log len (4) + processed log len (4)\n let len = 40 + serialized_log.len().to_field();\n let side_effect = LogHash { value: log_hash, counter, length: len };\n\n // We manually push the unencrypted log to the context and inform the execution environment about this because\n // PrivateContext does not expose an `emit_unencrypted_log` method - this mechanism is considered error-prone\n // and only some canonical contracts use it.\n context.unencrypted_logs_hashes.push(side_effect);\n emit_unencrypted_log_private(contract_address, payload, counter);\n }\n}\n"},"59":{"path":"std/panic.nr","source":"pub fn panic<T, U, let N: u32>(message: fmtstr<N, T>) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n"},"98":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/logs.nr","source":"use dep::protocol_types::address::AztecAddress;\n\n/// Informs the simulator that an encrypted note log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_encrypted_note_log<let M: u32>(\n note_hash_counter: u32,\n encrypted_note: [u8; M],\n counter: u32,\n) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_encrypted_note_log_oracle_wrapper(note_hash_counter, encrypted_note, counter)\n }\n}\n\n/// Informs the simulator that an encrypted event log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_encrypted_event_log<let M: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n encrypted_event: [u8; M],\n counter: u32,\n) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_encrypted_event_log_oracle_wrapper(\n contract_address,\n randomness,\n encrypted_event,\n counter,\n )\n }\n}\n\n/// Informs the simulator that an unencrypted log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_unencrypted_log_private<T>(contract_address: AztecAddress, message: T, counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_unencrypted_log_private_oracle_wrapper(contract_address, message, counter)\n }\n}\n\nunconstrained fn emit_encrypted_note_log_oracle_wrapper<let M: u32>(\n note_hash_counter: u32,\n encrypted_note: [u8; M],\n counter: u32,\n) {\n emit_encrypted_note_log_oracle(note_hash_counter, encrypted_note, counter)\n}\n\nunconstrained fn emit_encrypted_event_log_oracle_wrapper<let M: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n encrypted_event: [u8; M],\n counter: u32,\n) {\n emit_encrypted_event_log_oracle(contract_address, randomness, encrypted_event, counter)\n}\n\nunconstrained fn emit_unencrypted_log_private_oracle_wrapper<T>(\n contract_address: AztecAddress,\n message: T,\n counter: u32,\n) {\n let _ = emit_unencrypted_log_private_oracle(contract_address, message, counter);\n}\n\n/// Temporary substitute for `emit_unencrypted_log_private` that is used for handling contract class registration. This\n/// variant returns the log hash, which would be too large to compute inside a circuit.\npub unconstrained fn emit_contract_class_unencrypted_log_private<let N: u32>(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32,\n) -> Field {\n emit_contract_class_unencrypted_log_private_oracle(contract_address, message, counter)\n}\n\n// = 480 + 32 * N bytes\n#[oracle(emitEncryptedNoteLog)]\nunconstrained fn emit_encrypted_note_log_oracle<let M: u32>(\n _note_hash_counter: u32,\n _encrypted_note: [u8; M],\n _counter: u32,\n) {}\n\n#[oracle(emitEncryptedEventLog)]\nunconstrained fn emit_encrypted_event_log_oracle<let M: u32>(\n _contract_address: AztecAddress,\n _randomness: Field,\n _encrypted_event: [u8; M],\n _counter: u32,\n) {}\n\n#[oracle(emitUnencryptedLog)]\nunconstrained fn emit_unencrypted_log_private_oracle<T>(\n _contract_address: AztecAddress,\n _message: T,\n _counter: u32,\n) -> Field {}\n\n#[oracle(emitContractClassUnencryptedLog)]\nunconstrained fn emit_contract_class_unencrypted_log_private_oracle<let N: u32>(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32,\n) -> Field {}\n"}}}