@aztec/accounts 0.56.0 → 0.58.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.
- package/artifacts/EcdsaKAccount.json +1 -1
- package/artifacts/EcdsaRAccount.json +1 -1
- package/artifacts/SchnorrAccount.json +1 -1
- package/artifacts/SchnorrSingleKeyAccount.json +1 -1
- package/dest/defaults/account_contract.d.ts +1 -1
- package/dest/defaults/account_contract.d.ts.map +1 -1
- package/dest/defaults/account_interface.d.ts +1 -2
- package/dest/defaults/account_interface.d.ts.map +1 -1
- package/dest/defaults/account_interface.js +1 -1
- package/dest/testing/configuration.d.ts.map +1 -1
- package/dest/testing/configuration.js +16 -13
- package/dest/testing/create_account.d.ts.map +1 -1
- package/dest/testing/create_account.js +9 -13
- package/package.json +11 -8
- package/src/defaults/account_contract.ts +1 -1
- package/src/defaults/account_interface.ts +1 -2
- package/src/testing/configuration.ts +15 -13
- package/src/testing/create_account.ts +12 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"transpiled":true,"noir_version":"0.34.0+02fea6abe8637b9fb8f9535d1709b367d5e1da5c","name":"SchnorrAccount","functions":[{"name":"constructor","is_unconstrained":false,"custom_attributes":["private","initializer"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"signing_pub_key_x","type":{"kind":"field"},"visibility":"private"},{"name":"signing_pub_key_y","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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QXbkoPHIQfnIQfPjVyzD7R3z3kG3OU3rT8K3/2lXB93mNOXp86Cr17RxS/7OQXbkoPHIQfnIQdORg8qRg+YDB23smHcO6o8cdKQRw5FGDEcaMRxpxMYmuGsAw8Zyd+egcuSg+cBBG1vVnYMOXJcPKR05yI4cNB456GGj/ue//Pi85//+0zge+JuOccxHDpqOHFSOHHTg73vG3B05qD9y0HDkoHTkIDty0JFG5CONyEcakY80Ih9pxHSkEdORRkxHGjEdacR0pBFH/g50nA784dc4TUcOKkcOOvC3X2M58LdfY+mPHDQcOSgdOciOHDQeOSgfOWg6ctCBv/0ay4G//RrnA3/7NW787eXun3GN84G//crdgd94z11/5KADf/uVuwN/+5W7A3/7lfvuyEEH/vYr98ORg9KRg+zIQeORg/KRg6YjB5UjBx34S588dEcO6o8cNBw5KB05yI4cNB45KB85aDpyUDly0JFGpCONSEcakQ78eVBO6chBduSg8chB+chB05GDDvztV7YjPwntyE9COwLXjvzt1/uPmjeFv31vPK3XLXZxj+P9bbferyZu3xrfOeafb//5//75P//y53/763/819sh7//X//u3f//HX/7+t5//+Y//7/98/F/eHvz/Aw==","brillig_names":["get_contract_instance_internal","get_public_keys_and_partial_address","decompose_hint","notify_created_note","get_key_validation_request","unsafe_rand","lt_32_hint","lte_16_hint","build_msg_block_iter","pad_msg_block","attach_len_to_msg_block","build_msg_block_iter","emit_encrypted_note_log","directive_invert","directive_integer_quotient"]},{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{"12265343917440897559":{"error_kind":"fmtstring","item_types":[],"length":20}},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":3,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"}},"bytecode":"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","debug_symbols":"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","brillig_names":["compute_note_hash_and_optionally_a_nullifier"]},{"name":"lookup_validity","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"parameters":[{"name":"consumer","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"kind":"boolean"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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","brillig_names":["lookup_validity"]},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["private","noinitcheck"],"abi":{"error_types":{"12265343917440897559":{"error_kind":"fmtstring","item_types":[],"length":20}},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"},"visibility":"private"},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"},"visibility":"private"},{"name":"cancellable","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":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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tJn6EKN45K+ORbv6QTOKi2YUF80oLppRXDSjuGhGcdGM4qIZxXWIUTy0INpM7Wd/9+NJ/zw/9f7Rz8tfHW88c1T081NHv7x935s35IvW54dHrxfd/mw2JzVbk5rtQc3GNqlZmdSsTmrWJjW7JjXrk5qFfXt2Bezbs4tmhxfNDi+aHV40O7xodnjR7PA6xA4fWhDtqiTt/qaLdn/TRbu/6aLd33TR7m+6aPc3XbT7my7a/U0XzQ4vmh1eRUvqoiV10ZK6aEndtKRuWlI3LambltS0+5su2v1NF80OL5odXjQ7vGh22Gl22Gl22Gl22Gl22DdYUvsGS2rfYEntGyypnXZ/U6fd39Rp9zd12v1NnXZ/U6fd39RpdthpdtiFltRCS2qhJbXQklppSU2zw06zw660pKbd39Rp9zd1pSW10pKaZoedZoedZoedZoedZoedZofdaElttKSm3d/Uafc3ddr9TZ12f1On3d/Uafc3ddr9TZ12f1On2WGn2WFftKRetKRetKRetKR2WlI7LamdltROS2ra/U2ddn9Td1pSOy2pnZbUTkvqoCU17f6mTru/qQctqYOW1EFLappRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRDJpRDJpRDJpRDJpRjA2W1EEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikkzikkzikkzikkzirnBkjppRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFp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pxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxnFoBnFoBnFoBnFoBnF2GBJHTSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjmDSjmDSjmDSjmDSjmBssqZNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFItmFItmFItmFItmFGuDJXXRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGKdbhR1M3t+6i3rZUFvPVi3vjxan17958NF7I3HR+vzw6PXi25/NuuTmo1JzeakZmtSsz2oWZJlfePBXpdn9v71zGbP5YN+/3+mfNC08JnyjXymSL+ov73rypmyFyv+ovD1h8f/aHhNaxg9v9yiYfQMc4uG0XPMHlKbXhpu0Tca+F6zSdnl1/X+MeirX9ffazb5sNk+XW9/abMyqVmd1Cx6Svr9Znu7/D0h+qrZNanZ73V150qz3+vqzpVmv9fVnSvNfrMJ6uNmv9kE9WGz8s0mqI+b/WYT1MfNfrMJ6uNmJ01Qp2+x+NJmJ01QMmmCkkkTlEyaoGTSBKWTJiidNEHppAlKJ01Qp2+X+dJmJ01QOmmC0kkTlE6aoHTSBGWTJiibNEHZpAnKJk1Qp299+tJmJ01QNmmCskkTlE2aoGzSBLUmTVBr0gS1Jk1Qa9IEdfo2ti9tdtIEtSZNUGvSBLUmTVBr0gTlkyYonzRB+aQJyidNUKdvSfzSZidNUD5pgvJJE5RPmqB80gQVkyaomDRBxaQJKiZNUKdvL/3SZidNUDFpgopJE1RMmqBi0gSVkyaonDRB5aQJKidNUKdvFf7SZidNUDlpgspJE1ROmqBy0gRVkyaomjRB1aQJqiZNUN9s2/eVZidNUN9s2/eVZidNUN9s2/eVZidNUD1pgupJE1RPmqDYe8ePbnZNanbSBMXeNX50s5MmqO+2k/zjZudMUGv7bjvJP252zgS1NztngtqbnTNB7c2uSc3OmaD2ZudMUHuzcyaovdk5E9Te7KQJatBO8r3ZSRPUoJ3ke7OTJqhBO8n3ZidNUIN2ku/NTpqgBu0k35udNEEN2km+Nztpghq0k3xvdtIENWgn+d7spAlq0E7yvdlJE9SgneR7s5MmqEE7yfdmJ01Qg3aS781OmqAG7STfm500QQ3aSb43O2mCGrSTfG920gQ1aCf53uykCWrQTvK92UkT1KCd5HuzkyaoQTvJ92YnTVCDdpLvzU6aoAbtJN+bnTRBDdpJvjc7aYIatJN8b3bSBDVoJ/ne7KQJatBO8r3ZSRPUoJ3ke7OTJqhBO8n3ZidNUIN2ku/NTpqgBu0k35udNEEN2km+Nztpghq0k3xvdtIENWgn+d7spAlq0E7yvdlJE9SgneR7s5MmqEE7yfdmJ01Qg3aS781OmqAG7STfm500QQ3aSb43O2mCGrSTfG920gQ1aCf53uykCWrQTvK92UkT1KCd5HuzkyaoQTvJ92YnTVCDdpLvzU6aoAbtJN+bHTRByaSd5DJpJ7lM2kkuk3aSy7YmNTtogpJJO8ll0k5ymbSTXCbtJJdJO8ll0k5ymbSTXCbtJJdJO8ll0k5ymbSTXCbtJJdJO8ll0k5ymbSTXCbtJJdJO8ll0k5ymbSTXCbtJJdJO8ll0k5ymbSTXCbtJJdJO8ll0k5ymbSTXCbtJJdJO8ll0k5ymbSTXCbtJJdJO8ll0k5ymbSTXCbtJJdJO8ll0k5ymbSTXCbtJJdJO8ll0k5ymbSTXCbtJJdJO8ll0k5ymbSTXCbtJJdJO8ll0k5ymbSTXCbtJJdvtpO8tS/NrtfNfq8J6uNmz99JbuHPT71EPm52P8vs+dH7v4vHH5r90YDcewPKbqB7PT91bCpvNGD33sC69wb83hsIdANR0ZcGetuu/jK1S+TWi1P+OXJzUrM1qdke1GyyJ4eDm2VPGb/d7IfTfrInkoObZU8vBze7JjXLnooObvabTVAfN/vNJqiPm/1mE9THzX6zCerDZuubTVAfNztpgqpJE1RNmqDO38X9lc1OmqBq0gRVkyaomjRB1aQJqidNUD1pgupJE1RPmqDO38X9lc1OmqB60gTVkyaonjRB9aAJSrdBE5RugyYo3QZNULoNmqB0W5OaHTRB6TZogtJt0ASl26AJSrdJE5RMmqBk0gQlkyYomTRBnb+L+yubnTRByaQJSiZNUDJpgpJJE5ROmqB00gSlkyYonTRBnb+L+yubnTRB6aQJSidNUDppgtJJE5RNmqBs0gRlkyYomzRBnb+L+yubnTRB2aQJyiZNUDZpgrJJE9SaNEGtSRPUmjRBrUkT1Pm7uL+y2UkT1Jo0Qa1JE9SaNEGtSROUT5qgfNIE5ZMmKJ80QZ2/i/srm500QfmkCconTVA+aYLySRMUfBf3wc1OmqDgO74PbnbSBAXfHX5ws5MmqO+2k/zjZidNUN9tJ/nHzU6aoL7bTvKPm500QU3aSa6TdpLrpJ3kOmknuU7aSa6TdpLrpJ3kOmknuU7aSa6TdpLrpJ3kOmknuU7aSa6TdpLrpJ3kOmknuU7aSa6TdpLrpJ3kOmknuU7aSa6TdpLrpJ3kOmknuU7aSa6TdpLrpJ3kOmknuU3aSW6TdpLbpJ3kNmknuW1rUrODJiibtJPcJu0kt0k7ye2b7SRv7Uuz61Wz32wn+ZVmT5+gNrPnp96yrjTbXpenbu+60uxerPiLwtcfHv+jYZ3WsE1reE1r2Kc1HNMazmkN17SGe1jD5+8t/+qGp01ap+8vl15+aSH1ZcM/CjJaQYtWkNMKOuI3fUo9v0Yuu1JQRl4eXC+qr58FJa2gohXUsIIO2e98aEFCK0hpBRmtoEUryGkFBexXh52e1LVdCirT10eoaAU1rKC10QoSWkG0mXrRZup1dlLvT/3rD6GUl/9kbzyzu19i1EPs9Z9Ny++9gbj3BvLeG6h7b6BhqXL6fs6rBQmtINpvJqf9Zjp9X+TVgo74TRNxKSi3a1cks55PfC3VK0+t5Xp5dL24IFlvPdr88iG6xctPxfWtR/cWz9936C3zr3/6YuchKyMfx/LHsczHsTzsWNbjWB52LPtxLI86loes63wcyx/HUh7H8rBjqY9jedixtMexPOxYrsexPOxY0j7lDtpnJwG/ApZ2Kd/b441/YvgVsOsN9J03kNu9NyD33oDeewN27w2se28A/lnU9Qbgn0VdbyBho8Hp2yuvFkT7rKhonxUV7bOion1WVLTPik7fSni1oNO/b3blmzAVtIJo3zcr2vfNivZ9s6Z936xp3zdrpRVktIIWrSDa1a2mXd1qWlI3LakbltRrgyX12mBJvTbYTL022Ey9NlhSrw02U68NNlOvDZbUa4Ml9dpgVz+WwK5+LIFd/VhCS2qhJfXpG1yuFkRLaqEltdCSWmhJLbSZWmkztdJmaoVd/VgKu/qxDtlgcWhBsKsfS2FXP5bSklppSa20pDZaUhstqY2W1EZLaqMltdFmaqPN1Ab77scy2Hc/ltGufiza1Y9Fu/pB22CxaBss1iEbLA4tiJbUi5bUizZTL9pMvWgztdNmaqfN1E6bqZ02Ux+y0eHQgmhXP5x29cNpSe20pHZaUgctqYOW1EGbqYM2UwctqYM2Uwdtpg5aUgctqYN29SNpVz+SdvUjaUmdtKQ+xEweWhAtqZOW1ElL6qQlddJm6qLN1EWbqYt29aNoVz8OMYqHFkS7+lG0qx80o7hoRnHRjOKiGcVFM4qLZhQXzSgumlFcTZupmzZTN+27H0377kfDrn74Brv64Rvs6ofTjKLTjKJvi1YQLKmdZhSdZhSdZhR9g83ULrCZ2gU2U7vAZmoX2EzthxjFQwuCXf1wgV39cJpRdJpRdJpRdJpRdJpRdNpdtp12l22nGUVX2kyttJmaZhSdZhRdaVc/jHb1w2hXP4yW1EZL6kOM4qEF0ZKaZhSddpdtp91l22l32XbaXbaddpdtX7SrH4t29eP0u2xfLYh29WPRrn7QjKLTjKLTjKLTjKLTjKLTjKLTjKLTjKI7baZ22kztZ3/3Q+1yPz5dIi9/dbzxzFHRz08d/fL2fW/ekC9anx8evV50+7PZmtRsD2o2tknNyqRmdVKzNqnZNalZn9RsTGoW9u1ZD9i3Z51mh51mh51mh51mh51mh51mhz1pVyWTdlWSdn9Tp93f1Gn3N3Xa/U2ddn9Tp93f1Gn3N3Xa/U2dZoedZoe9aEldtKQuWlI3LambltRNS+qmJXXTkpp2f1On3d/UaXbYaXbYaXY4aHY4aHY4aHY4aHY4NlhSxwZL6thgSR0bLKljgyV10O5vGrT7mwbt/qZBu79p0O5vGrT7mwbNDgfNDofQklpoSS20pFZaUistqWl2OGh2OJSW1LT7mwbt/qahtKRWWlLT7HDQ7HDQ7HDQ7HDQ7HDQ7HAYLamNltS0+5sG7f6mQbu/adDubxq0+5sG7f6mQbu/adDubxo0Oxw0OxyLltSLltSLltROS2qnJbXTktppSe20pKbd3zRo9zcNpyW105LaaUkdtKQOWlLT7m8atPubRtCSOmhJHbSkphnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFoBnFpBnFpBnFpBnFpBnF3GBJnTSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjWDSjWDSjWDSjWDSjWBssqYtmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFJtmFJtmFJtmFJtmFHuDJXXTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLDjKJvMKO4F8RK6r0gVlLvBbGSei+IldR7Qayk3gtiJfVeECup94JYSb0XREtqmFHcC6IlNcwo7gXRkhpmFPeCaEkN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+5sm7f6mSbu/adLub5q0+5sm7f6mSbu/adLub5o0O5w0O5yLltSLltROS2qnJbXTktppSe20pHZaUtPub5q0+5um05LaaUkdtKQOWlIHLalp9zdN2v1NM2hJHbSkDlpS04xi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0Yxi0Yxi0Yxi0YxibbCkLppRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRbJpRbJpRbJpRbJpR7A2W1E0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zig0zirnBjOJeECup94JYSb0XxErqvSBWUu8FsZJ6L4iV1HtBrKTeC2Il9V4QLalhRnEviJbUMKO4F0RLaphR3AuiJTXMKO4F0ZIaZhT3gmhJDTOKe0G0pIYZxb0gWlLDjOJeEC2pYUZxL4iW1DCjuBdES2qYUdwLoiU1zCjuBdGSGmYU94JoSQ0zintBtKSGGcW9IFpSw4ziXhAtqWFGcS+IltQwo7gXREtqmFHcC6IlNcwo7gXRkhpmFPeCaEkNM4p7QbSkhhnFvSBaUsOM4l4QLalhRnEviJbUMKO4F0RLaphR3AuiJTXMKO4F0ZIaZhT3gmhJDTOKe0G0pIYZxb0gWlLDjOJeEC2pYUZxL4iW1DCjuBdES2qYUdwLoiU1zCjuBdGSGmYU94JoSQ0zintBtKSGGcW9IFpSw4ziXhAtqWFGcS+IltQwo7gXREtqmFHcC6IlNcwo7gXRkhpmFPeCYEktNKMoNKMoNKMoNKMoGyyphWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUlWYUlWYUlWYUlWYUdYMltdKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotGMotGMotGMotGMom2wpDaaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSa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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","enqueue_public_function_call_internal","call_private_function_internal","debug_log_format","notify_set_min_revertible_side_effect_counter","directive_invert","directive_integer_quotient"]},{"name":"verify_private_authwit","is_unconstrained":false,"custom_attributes":["private","noinitcheck","view"],"abi":{"error_types":{"12265343917440897559":{"error_kind":"fmtstring","item_types":[],"length":20}},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","pack_returns","directive_invert","directive_integer_quotient"]}],"outputs":{"globals":{"notes":[{"fields":[{"kind":"integer","sign":false,"value":"00000000000000000000000000000000000000000000000000000000a74a8dc0"},{"kind":"string","value":"PublicKeyNote"}],"kind":"tuple"}],"storage":[{"fields":[{"name":"signing_public_key","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}}],"kind":"struct"}}],"kind":"struct"}]},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"}},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"}},{"name":"cancellable","type":{"kind":"boolean"}}],"kind":"struct","path":"SchnorrAccount::entrypoint_parameters"}}],"kind":"struct","path":"SchnorrAccount::entrypoint_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"inner_hash","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::verify_private_authwit_parameters"}},{"name":"return_type","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::verify_private_authwit_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"signing_pub_key_x","type":{"kind":"field"}},{"name":"signing_pub_key_y","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::constructor_parameters"}}],"kind":"struct","path":"SchnorrAccount::constructor_abi"}]}},"file_map":{"108":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/unconstrained_context.nr","source":"use dep::protocol_types::{address::AztecAddress, traits::Deserialize};\nuse crate::oracle::{execution::{get_chain_id, get_version, get_contract_address, get_block_number}, storage::storage_read};\n\npub struct UnconstrainedContext {\n block_number: u32,\n contract_address: AztecAddress,\n version: Field,\n chain_id: Field,\n}\n\nimpl UnconstrainedContext {\n unconstrained fn new() -> Self {\n // We could call these oracles on the getters instead of at creation, which makes sense given that they might\n // not even be accessed. However any performance gains are minimal, and we'd rather fail early if a user\n // incorrectly attempts to create an UnconstrainedContext in an environment in which these oracles are not\n // available.\n let block_number = get_block_number();\n let contract_address = get_contract_address();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at(contract_address: AztecAddress) -> Self {\n let block_number = get_block_number();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at_historical(contract_address: AztecAddress, block_number: u32) -> Self {\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n fn block_number(self) -> u32 {\n self.block_number\n }\n\n fn this_address(self) -> AztecAddress {\n self.contract_address\n }\n\n fn version(self) -> Field {\n self.version\n }\n\n fn chain_id(self) -> Field {\n self.chain_id\n }\n\n unconstrained fn raw_storage_read<let N: u32>(self: Self, storage_slot: Field) -> [Field; N] {\n storage_read(self.this_address(), storage_slot, self.block_number())\n }\n\n unconstrained fn storage_read<T, let N: u32>(\n self,\n storage_slot: Field\n ) -> T where T: Deserialize<N> {\n T::deserialize(self.raw_storage_read(storage_slot))\n }\n}\n"},"113":{"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\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 assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_private_function_no_args(\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 assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n is_delegate_call\n );\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n let 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 assert(args_hash == arguments::pack_arguments_array(args));\n self.set_public_teardown_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn set_public_teardown_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n is_delegate_call\n );\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n 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/encrypted_logs/payload.nr","source":"use dep::protocol_types::{address::AztecAddress, scalar::Scalar, point::Point};\nuse std::{\n embedded_curve_ops::fixed_base_scalar_mul as derive_public_key,\n hash::from_field_unsafe as fr_to_fq_unsafe, field::bn254::decompose\n};\n\nuse crate::{\n event::event_interface::EventInterface, oracle::unsafe_rand::unsafe_rand,\n utils::point::point_to_bytes, note::note_interface::NoteInterface,\n encrypted_logs::{\n header::EncryptedLogHeader, incoming_body::EncryptedLogIncomingBody,\n outgoing_body::EncryptedLogOutgoingBody\n},\n keys::public_keys::{OvpkM, IvpkM}\n};\n\npub fn compute_encrypted_event_log<Event, let N: u32, let OB: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n event: Event\n) -> [u8; OB] where Event: EventInterface<N> {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ivpk);\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext = EncryptedLogIncomingBody::from_event(event, randomness).compute_ciphertext(eph_sk, ivpk);\n let outgoing_body_ciphertext: [u8; 144] = EncryptedLogOutgoingBody::new(eph_sk, recipient, ivpk).compute_ciphertext(fr_to_fq(ovsk_app), eph_pk);\n\n let mut encrypted_bytes: [u8; OB] = [0; OB];\n // @todo We ignore the tags for now\n\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[64 + i] = eph_pk_bytes[i];\n }\n for i in 0..48 {\n encrypted_bytes[96 + i] = incoming_header_ciphertext[i];\n encrypted_bytes[144 + i] = outgoing_header_ciphertext[i];\n }\n for i in 0..144 {\n encrypted_bytes[192 + i] = outgoing_body_ciphertext[i];\n }\n // Then we fill in the rest as the incoming body ciphertext\n let size = OB - 336;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[336 + i] = incoming_body_ciphertext[i];\n }\n\n // Current unoptimized size of the encrypted log\n // incoming_tag (32 bytes)\n // outgoing_tag (32 bytes)\n // eph_pk (32 bytes)\n // incoming_header (48 bytes)\n // outgoing_header (48 bytes)\n // outgoing_body (144 bytes)\n // incoming_body_fixed (64 bytes)\n // incoming_body_variable (N * 32 bytes + 16 bytes padding)\n encrypted_bytes\n}\n\npub fn compute_encrypted_note_log<Note, let N: u32, let M: u32>(\n contract_address: AztecAddress,\n storage_slot: Field,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n note: Note,\n num_public_values: u8 // Number of values to be appended to the log in public (used in partial note flow).\n) -> [u8; M] where Note: NoteInterface<N> {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ivpk);\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext = EncryptedLogIncomingBody::from_note(note, storage_slot).compute_ciphertext(eph_sk, ivpk);\n let outgoing_body_ciphertext: [u8; 144] = EncryptedLogOutgoingBody::new(eph_sk, recipient, ivpk).compute_ciphertext(fr_to_fq(ovsk_app), eph_pk);\n\n let mut encrypted_bytes: [u8; M] = [0; M];\n // @todo We ignore the tags for now\n\n encrypted_bytes[64] = num_public_values; // TODO(#8558): This can be just a single bit if we store info about partial fields in ABI\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[65 + i] = eph_pk_bytes[i];\n }\n for i in 0..48 {\n encrypted_bytes[97 + i] = incoming_header_ciphertext[i];\n encrypted_bytes[145 + i] = outgoing_header_ciphertext[i];\n }\n for i in 0..144 {\n encrypted_bytes[193 + i] = outgoing_body_ciphertext[i];\n }\n // Then we fill in the rest as the incoming body ciphertext\n let size = M - 337;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[337 + i] = incoming_body_ciphertext[i];\n }\n\n // Current unoptimized size of the encrypted log\n // incoming_tag (32 bytes)\n // outgoing_tag (32 bytes)\n // num_public_values (1 byte)\n // eph_pk (32 bytes)\n // incoming_header (48 bytes)\n // outgoing_header (48 bytes)\n // outgoing_body (144 bytes)\n // incoming_body_fixed (64 bytes)\n // incoming_body_variable (N * 32 bytes + 16 bytes padding)\n encrypted_bytes\n}\n\n/// Converts a base field element to scalar field element.\n/// This is fine because modulus of the base field is smaller than the modulus of the scalar field.\nfn fr_to_fq(r: Field) -> Scalar {\n let (lo, hi) = decompose(r);\n\n Scalar { lo, hi }\n}\n\nfn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n // We use the unsafe version of `fr_to_fq` because multi_scalar_mul (called by derive_public_key) will constrain\n // the scalars.\n let eph_sk = fr_to_fq_unsafe(unsafe_rand());\n let eph_pk = derive_public_key(eph_sk);\n\n (eph_sk, eph_pk)\n}\n\nmod test {\n use crate::{\n encrypted_logs::payload::compute_encrypted_note_log, keys::public_keys::{OvpkM, IvpkM},\n test::mocks::mock_note::MockNoteBuilder\n };\n use dep::protocol_types::{address::AztecAddress, point::Point};\n use std::test::OracleMock;\n\n #[test]\n unconstrained fn test_encrypted_note_log_matches_typescript() {\n // All the values in this test were copied over from `tagged_log.test.ts`\n let contract_address = AztecAddress::from_field(0x10f48cd9eff7ae5b209c557c70de2e657ee79166868676b787e9417e19260e04);\n let storage_slot = 0x0fe46be583b71f4ab5b70c2657ff1d05cccf1d292a9369628d1a194f944e6599;\n let ovsk_app = 0x03a6513d6def49f41d20373d2cec894c23e7492794b08fc50c0e8a1bd2512612;\n let ovpk_m = OvpkM {\n inner: Point {\n x: 0x1961448682803198631f299340e4206bb12809d4bebbf012b30f59af73ba1a15,\n y: 0x133674060c3925142aceb4f1dcd9f9137d0217d37ff8729ee5ceaa6e2790353d,\n is_infinite: false\n }\n };\n let ivpk_m = IvpkM {\n inner: Point {\n x: 0x260cd3904f6df16e974c29944fdc839e40fb5cf293f03df2eb370851d3a527bc,\n y: 0x0eef2964fe6640e84c82b5d2915892409b38e9e25d39f68dd79edb725c55387f,\n is_infinite: false\n }\n };\n\n let note_value = 0x301640ceea758391b2e161c92c0513f129020f4125256afdae2646ce31099f5c;\n let note = MockNoteBuilder::new(note_value).contract_address(contract_address).storage_slot(storage_slot).build();\n\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk);\n\n let recipient = AztecAddress::from_field(0x10ee41ee4b62703b16f61e03cb0d88c4b306a9eb4a6ceeb2aff13428541689a2);\n let num_public_values: u8 = 0;\n\n let log: [u8; 449] = compute_encrypted_note_log(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n recipient,\n note,\n num_public_values\n );\n\n // The following value was generated by `tagged_log.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let encrypted_note_log_from_typescript = [\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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 70, 12, 14, 67, 77, 132, 110, 193, 234, 40, 110, 64, 144, 235, 86, 55, 111, 242, 123, 221, 193, 170, 202, 225, 216, 86, 84, 159, 112, 31, 167, 126, 79, 51, 186, 47, 71, 253, 172, 99, 112, 241, 59, 197, 241, 107, 186, 232, 87, 187, 230, 171, 62, 228, 234, 42, 51, 145, 146, 238, 242, 42, 71, 206, 13, 244, 66, 111, 195, 20, 203, 98, 148, 204, 242, 145, 183, 156, 29, 141, 54, 44, 220, 194, 35, 229, 16, 32, 204, 211, 49, 142, 112, 82, 202, 116, 241, 254, 146, 42, 217, 20, 189, 70, 228, 182, 171, 205, 104, 27, 99, 171, 28, 91, 244, 21, 30, 130, 240, 5, 72, 174, 124, 97, 197, 157, 248, 193, 23, 193, 76, 46, 141, 144, 70, 211, 45, 67, 167, 218, 129, 140, 104, 190, 41, 110, 249, 209, 68, 106, 135, 164, 80, 235, 63, 101, 80, 32, 13, 38, 99, 145, 91, 11, 173, 151, 231, 247, 65, 153, 117, 229, 167, 64, 239, 182, 126, 235, 83, 4, 169, 8, 8, 160, 4, 235, 252, 21, 96, 84, 161, 69, 145, 145, 215, 254, 161, 117, 246, 198, 65, 89, 179, 194, 90, 19, 121, 12, 202, 114, 80, 195, 14, 60, 128, 105, 142, 100, 86, 90, 108, 157, 219, 22, 172, 20, 121, 195, 25, 159, 236, 2, 70, 75, 42, 37, 34, 2, 17, 149, 20, 176, 32, 18, 204, 56, 117, 121, 34, 15, 3, 88, 123, 64, 68, 74, 233, 63, 59, 131, 222, 194, 192, 167, 110, 217, 10, 128, 73, 129, 172, 205, 103, 212, 60, 151, 141, 10, 151, 222, 151, 180, 43, 91, 148, 201, 110, 165, 10, 238, 32, 134, 235, 99, 216, 200, 182, 31, 22, 156, 18, 209, 222, 172, 239, 193, 212, 86, 99, 62, 70, 182, 45, 175, 241, 91, 202, 179, 225, 236, 95, 71, 66, 151, 225, 203, 53, 216, 85, 102, 130, 6, 8, 25, 180, 86, 58, 140, 198, 105, 102, 177, 42, 94, 115, 247, 145, 147, 24, 231, 39, 73, 27, 10, 219, 130, 115, 188, 74, 114, 5, 177, 199, 83, 183, 106, 87, 204, 238, 231, 72, 45, 240, 39, 174, 25, 98, 53, 187, 156, 159, 244, 38\n ];\n assert_eq(encrypted_note_log_from_typescript, log);\n }\n\n #[test]\n unconstrained fn test_encrypted_note_log_of_finalized_partial_note_matches_typescript() {\n // All the values in this test were copied over from `tagged_log.test.ts`\n let contract_address = AztecAddress::from_field(0x10f48cd9eff7ae5b209c557c70de2e657ee79166868676b787e9417e19260e04);\n let storage_slot = 0x0fe46be583b71f4ab5b70c2657ff1d05cccf1d292a9369628d1a194f944e6599;\n let ovsk_app = 0x03a6513d6def49f41d20373d2cec894c23e7492794b08fc50c0e8a1bd2512612;\n let ovpk_m = OvpkM {\n inner: Point {\n x: 0x1961448682803198631f299340e4206bb12809d4bebbf012b30f59af73ba1a15,\n y: 0x133674060c3925142aceb4f1dcd9f9137d0217d37ff8729ee5ceaa6e2790353d,\n is_infinite: false\n }\n };\n let ivpk_m = IvpkM {\n inner: Point {\n x: 0x260cd3904f6df16e974c29944fdc839e40fb5cf293f03df2eb370851d3a527bc,\n y: 0x0eef2964fe6640e84c82b5d2915892409b38e9e25d39f68dd79edb725c55387f,\n is_infinite: false\n }\n };\n\n let note_value = 0x301640ceea758391b2e161c92c0513f129020f4125256afdae2646ce31099f5c;\n let note_public_value1 = 0x14172339287e8d281545c177313f02b6aa2fedfd628cfd8b7f11a136fd0d6557;\n let note_public_value2 = 0x0834d81e3f73c7e2809b08ae38600ffc76a2554473eeab6de7bff4b33a84feac;\n let note = MockNoteBuilder::new(note_value).contract_address(contract_address).storage_slot(storage_slot).build();\n\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk);\n\n let recipient = AztecAddress::from_field(0x10ee41ee4b62703b16f61e03cb0d88c4b306a9eb4a6ceeb2aff13428541689a2);\n let num_public_values: u8 = 2;\n\n // First we compute the encrypted log without the public values\n let log_without_public_values: [u8; 449] = compute_encrypted_note_log(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n recipient,\n note,\n num_public_values\n );\n\n // Then we \"append\" the public values to the log by copying both the original log and the current log into a new byte array\n let mut log: [u8; 513] = [0; 513];\n for i in 0..449 {\n log[i] = log_without_public_values[i];\n }\n let note_public_value1_bytes: [u8; 32] = note_public_value1.to_be_bytes();\n let note_public_value2_bytes: [u8; 32] = note_public_value2.to_be_bytes();\n for i in 0..32 {\n log[449 + i] = note_public_value1_bytes[i];\n log[481 + i] = note_public_value2_bytes[i];\n }\n\n // The following value was generated by `tagged_log.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let encrypted_note_log_of_finalized_partial_from_typescript = [\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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 141, 70, 12, 14, 67, 77, 132, 110, 193, 234, 40, 110, 64, 144, 235, 86, 55, 111, 242, 123, 221, 193, 170, 202, 225, 216, 86, 84, 159, 112, 31, 167, 126, 79, 51, 186, 47, 71, 253, 172, 99, 112, 241, 59, 197, 241, 107, 186, 232, 87, 187, 230, 171, 62, 228, 234, 42, 51, 145, 146, 238, 242, 42, 71, 206, 13, 244, 66, 111, 195, 20, 203, 98, 148, 204, 242, 145, 183, 156, 29, 141, 54, 44, 220, 194, 35, 229, 16, 32, 204, 211, 49, 142, 112, 82, 202, 116, 241, 254, 146, 42, 217, 20, 189, 70, 228, 182, 171, 205, 104, 27, 99, 171, 28, 91, 244, 21, 30, 130, 240, 5, 72, 174, 124, 97, 197, 157, 248, 193, 23, 193, 76, 46, 141, 144, 70, 211, 45, 67, 167, 218, 129, 140, 104, 190, 41, 110, 249, 209, 68, 106, 135, 164, 80, 235, 63, 101, 80, 32, 13, 38, 99, 145, 91, 11, 173, 151, 231, 247, 65, 153, 117, 229, 167, 64, 239, 182, 126, 235, 83, 4, 169, 8, 8, 160, 4, 235, 252, 21, 96, 84, 161, 69, 145, 145, 215, 254, 161, 117, 246, 198, 65, 89, 179, 194, 90, 19, 121, 12, 202, 114, 80, 195, 14, 60, 128, 105, 142, 100, 86, 90, 108, 157, 219, 22, 172, 20, 121, 195, 25, 159, 236, 2, 70, 75, 42, 37, 34, 2, 17, 149, 20, 176, 32, 18, 204, 56, 117, 121, 34, 15, 3, 88, 123, 64, 68, 74, 233, 63, 59, 131, 222, 194, 192, 167, 110, 217, 10, 128, 73, 129, 172, 205, 103, 212, 60, 151, 141, 10, 151, 222, 151, 180, 43, 91, 148, 201, 110, 165, 10, 238, 32, 134, 235, 99, 216, 200, 182, 31, 22, 156, 18, 209, 222, 172, 239, 193, 212, 86, 99, 62, 70, 182, 45, 175, 241, 91, 202, 179, 225, 236, 95, 71, 66, 151, 225, 203, 53, 216, 85, 102, 130, 6, 8, 25, 180, 86, 58, 140, 198, 105, 102, 177, 42, 94, 115, 247, 145, 147, 24, 231, 39, 73, 27, 10, 219, 130, 115, 188, 74, 114, 5, 177, 199, 83, 183, 106, 87, 204, 238, 231, 72, 45, 240, 39, 174, 25, 98, 53, 187, 156, 159, 244, 38, 20, 23, 35, 57, 40, 126, 141, 40, 21, 69, 193, 119, 49, 63, 2, 182, 170, 47, 237, 253, 98, 140, 253, 139, 127, 17, 161, 54, 253, 13, 101, 87, 8, 52, 216, 30, 63, 115, 199, 226, 128, 155, 8, 174, 56, 96, 15, 252, 118, 162, 85, 68, 115, 238, 171, 109, 231, 191, 244, 179, 58, 132, 254, 172\n ];\n assert_eq(encrypted_note_log_of_finalized_partial_from_typescript, log);\n }\n}\n"},"122":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/encrypted_note_emission.nr","source":"use crate::{\n context::PrivateContext, note::{note_emission::NoteEmission, note_interface::NoteInterface},\n keys::{getters::{get_public_keys, get_ovsk_app}, public_keys::{OvpkM, IvpkM}},\n encrypted_logs::payload::compute_encrypted_note_log, oracle::logs_traits::LensForEncryptedLog\n};\nuse dep::protocol_types::{hash::sha256_to_field, address::AztecAddress, abis::note_hash::NoteHash};\n\nfn compute_raw_note_log<Note, let N: u32, let M: u32>(\n context: PrivateContext,\n note: Note,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n num_public_values: u8 // Number of values to be appended to the log in public (used in partial note flow).\n) -> (u32, [u8; M], Field) where Note: NoteInterface<N>, [Field; N]: LensForEncryptedLog<N, M> {\n let note_header = note.get_header();\n let note_hash_counter = note_header.note_hash_counter;\n let storage_slot = note_header.storage_slot;\n\n // TODO(#8589): use typesystem to skip this check when not needed\n let note_exists = context.note_hashes.storage.any(|n: NoteHash| n.counter == note_hash_counter);\n assert(note_exists, \"Can only emit a note log for an existing note.\");\n\n let contract_address: AztecAddress = context.this_address();\n\n let encrypted_log: [u8; M] = compute_encrypted_note_log(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk,\n ivpk,\n recipient,\n note,\n num_public_values\n );\n let log_hash = sha256_to_field(encrypted_log);\n\n (note_hash_counter, encrypted_log, log_hash)\n}\n\nunconstrained fn compute_raw_note_log_unconstrained<Note, let N: u32, let M: u32>(\n context: PrivateContext,\n note: Note,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n num_public_values: u8 // Number of values to be appended to the log in public (used in partial note flow).\n) -> (u32, [u8; M], Field) where Note: NoteInterface<N>, [Field; N]: LensForEncryptedLog<N, M> {\n let ovsk_app = get_ovsk_app(ovpk.hash());\n compute_raw_note_log(context, note, ovsk_app, ovpk, ivpk, recipient, num_public_values)\n}\n\npub fn encode_and_encrypt_note<Note, let N: u32, let M: u32>(\n context: &mut PrivateContext,\n ov: AztecAddress,\n iv: AztecAddress\n) -> fn[(AztecAddress, AztecAddress, &mut PrivateContext)](NoteEmission<Note>) -> () where Note: NoteInterface<N>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n let ovpk = get_public_keys(ov).ovpk_m;\n let ivpk = get_public_keys(iv).ivpk_m;\n let ovsk_app: Field = context.request_ovsk_app(ovpk.hash());\n\n // Number of public values is always 0 here because `encode_and_encrypt_note(...)` is only called\n // in the non-partial note flow.\n let num_public_values = 0;\n let (note_hash_counter, encrypted_log, log_hash) = compute_raw_note_log(*context, e.note, ovsk_app, ovpk, ivpk, iv, num_public_values);\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\npub fn encode_and_encrypt_note_unconstrained<Note, let N: u32, let M: u32>(\n context: &mut PrivateContext,\n ov: AztecAddress,\n iv: AztecAddress\n) -> fn[(AztecAddress, AztecAddress, &mut PrivateContext)](NoteEmission<Note>) -> () where Note: NoteInterface<N>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n // Note: We could save a lot of gates by obtaining the following keys in an unconstrained context but this\n // function is currently not used anywhere so we are not optimizing it.\n let ovpk = get_public_keys(ov).ovpk_m;\n let ivpk = get_public_keys(iv).ivpk_m;\n\n // Number of public values is always 0 here because `encode_and_encrypt_note_unconstrained(...)` is only called\n // in the non-partial note flow.\n let num_public_values = 0;\n\n // See the comment in `encode_and_encrypt_note_with_keys_unconstrained` for why having note hash counter\n // and log hash unconstrained here is fine.\n let (note_hash_counter, encrypted_log, log_hash) = unsafe {\n compute_raw_note_log_unconstrained(*context, e.note, ovpk, ivpk, iv, num_public_values)\n };\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\npub fn encode_and_encrypt_note_with_keys<Note, let N: u32, let M: u32>(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n let ovsk_app: Field = context.request_ovsk_app(ovpk.hash());\n\n // Number of public values is always 0 here because `encode_and_encrypt_note_unconstrained(...)` is only called\n // in the non-partial note flow.\n let num_public_values = 0;\n\n let (note_hash_counter, encrypted_log, log_hash) = compute_raw_note_log(*context, e.note, ovsk_app, ovpk, ivpk, recipient, num_public_values);\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\npub fn encode_and_encrypt_note_with_keys_unconstrained<Note, let N: u32, let M: u32>(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n // Number of public values is always 0 here because `encode_and_encrypt_note_with_keys_unconstrained(...)` is only called\n // in the non-partial note flow.\n let num_public_values = 0;\n\n // Having the log hash be unconstrained here is fine because the way this works is we send the log hash\n // to the kernel, and it gets included as part of its public inputs. Then we send the tx to the sequencer,\n // which includes the kernel proof and the log preimages. The sequencer computes the hashes of the logs\n // and checks that they are the ones in the public inputs of the kernel, and drops the tx otherwise (proposing\n // the block on L1 would later fail if it didn't because of txs effects hash mismatch).\n // So if we don't constrain the log hash, then a malicious sender can compute the correct log, submit a bad\n // log hash to the kernel, and then submit the bad log preimage to the sequencer. All checks will pass, but\n // the submitted log will not be the one that was computed by the app.\n // In the unconstrained case, we don't care about the log at all because we don't do anything with it,\n // and because it's unconstrained: it could be anything. So if a sender chooses to broadcast the tx with a log\n // that is different from the one that was used in the circuit, then they'll be able to, but they were already\n // able to change the log before anyway, so the end result is the same. It's important here that we do not\n // return the log from this function to the app, otherwise it could try to do stuff with it and then that might\n // be wrong.\n // Regarding the note hash counter, this is used for squashing. The kernel assumes that a given note can have\n // more than one log and removes all of the matching ones, so all a malicious sender could do is either: cause\n // for the log to be deleted when it shouldn't have (which is fine - they can already make the content be\n // whatever), or cause for the log to not be deleted when it should have (which is also fine - it'll be a log\n // for a note that doesn't exist).\n let (note_hash_counter, encrypted_log, log_hash) = unsafe {\n compute_raw_note_log_unconstrained(*context, e.note, ovpk, ivpk, recipient, num_public_values)\n };\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n"},"123":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/outgoing_body.nr","source":"use dep::protocol_types::{\n address::AztecAddress, scalar::Scalar, point::Point, constants::GENERATOR_INDEX__SYMMETRIC_KEY,\n hash::poseidon2_hash_with_separator\n};\nuse std::aes128::aes128_encrypt;\n\nuse crate::{keys::public_keys::IvpkM, utils::point::point_to_bytes};\n\npub struct EncryptedLogOutgoingBody {\n eph_sk: Scalar,\n recipient: AztecAddress,\n recipient_ivpk: IvpkM,\n}\n\nimpl EncryptedLogOutgoingBody {\n pub fn new(eph_sk: Scalar, recipient: AztecAddress, recipient_ivpk: IvpkM) -> Self {\n Self { eph_sk, recipient, recipient_ivpk }\n }\n\n /// Encrypts ephemeral secret key and recipient's ivpk --> with this information the recipient of outgoing will\n /// be able to derive the key with which the incoming log can be decrypted.\n pub fn compute_ciphertext(self, ovsk_app: Scalar, eph_pk: Point) -> [u8; 144] {\n // Again, we could compute `eph_pk` here, but we keep the interface more similar\n // and also make it easier to optimise it later as we just pass it along\n\n let mut buffer = [0 as u8; 128];\n\n let serialized_eph_sk_high: [u8; 32] = self.eph_sk.hi.to_be_bytes();\n let serialized_eph_sk_low: [u8; 32] = self.eph_sk.lo.to_be_bytes();\n\n let address_bytes: [u8; 32] = self.recipient.to_field().to_be_bytes();\n let serialized_recipient_ivpk = point_to_bytes(self.recipient_ivpk.to_point());\n\n for i in 0..32 {\n buffer[i] = serialized_eph_sk_high[i];\n buffer[i + 32] = serialized_eph_sk_low[i];\n buffer[i + 64] = address_bytes[i];\n }\n for i in 0..32 {\n buffer[i + 96] = serialized_recipient_ivpk[i];\n }\n\n // We compute the symmetric key using poseidon.\n let full_key: [u8; 32] = poseidon2_hash_with_separator(\n [ovsk_app.hi, ovsk_app.lo, eph_pk.x, eph_pk.y],\n GENERATOR_INDEX__SYMMETRIC_KEY as Field\n ).to_be_bytes();\n\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(buffer, iv, sym_key).as_array()\n }\n}\n\nmod test {\n use crate::{encrypted_logs::outgoing_body::EncryptedLogOutgoingBody, keys::public_keys::IvpkM};\n use dep::protocol_types::{address::AztecAddress, scalar::Scalar};\n use std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\n\n #[test]\n unconstrained fn test_encrypted_log_outgoing_body_matches_typescript() {\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000d0d302ee245dfaf2807e604eec4715fe,\n hi: 0x000000000000000000000000000000000f096b423017226a18461115fa8d34bb\n };\n let recipient_ivsk = Scalar {\n lo: 0x000000000000000000000000000000004828f8f95676ebb481df163f87fd4022,\n hi: 0x000000000000000000000000000000000f4d97c25d578f9348251a71ca17ae31\n };\n let sender_ovsk_app = Scalar {\n lo: 0x0000000000000000000000000000000074d2e28c6bc5176ac02cf7c7d36a444e,\n hi: 0x00000000000000000000000000000000089c6887cb1446d86c64e81afc78048b\n };\n\n let eph_pk = derive_public_key(eph_sk);\n let recipient_ivpk = IvpkM { inner: derive_public_key(recipient_ivsk) };\n\n let recipient = AztecAddress::from_field(0xdeadbeef);\n\n let body = EncryptedLogOutgoingBody::new(eph_sk, recipient, recipient_ivpk);\n\n let ciphertext = body.compute_ciphertext(sender_ovsk_app, eph_pk);\n\n // The following value was generated by `encrypted_log_outgoing_body.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let outgoing_body_ciphertext_from_typescript = [\n 127, 182, 227, 75, 192, 197, 54, 47, 168, 134, 233, 148, 251, 46, 86, 12, 73, 50, 238, 50, 31, 174, 27, 202, 110, 77, 161, 197, 244, 124, 17, 100, 143, 150, 232, 14, 156, 248, 43, 177, 16, 82, 244, 103, 88, 74, 84, 200, 15, 65, 187, 14, 163, 60, 91, 22, 104, 31, 211, 190, 124, 121, 79, 92, 239, 65, 185, 106, 51, 178, 168, 137, 84, 43, 79, 158, 151, 152, 83, 42, 170, 13, 106, 209, 254, 74, 39, 145, 73, 215, 17, 234, 196, 89, 30, 58, 120, 127, 88, 69, 121, 61, 18, 206, 89, 118, 243, 238, 177, 71, 73, 47, 147, 4, 155, 25, 173, 248, 206, 52, 17, 180, 122, 186, 106, 191, 252, 102, 197, 91, 16, 39, 94, 91, 224, 30, 168, 177, 26, 144, 5, 124, 128, 6\n ];\n\n assert_eq(outgoing_body_ciphertext_from_typescript, ciphertext);\n }\n}\n"},"124":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/header.nr","source":"use dep::protocol_types::{address::AztecAddress, scalar::Scalar, point::Point};\n\nuse crate::keys::{point_to_symmetric_key::point_to_symmetric_key, public_keys::ToPoint};\n\nuse std::aes128::aes128_encrypt;\n\npub struct EncryptedLogHeader {\n address: AztecAddress,\n}\n\nimpl EncryptedLogHeader {\n fn new(address: AztecAddress) -> Self {\n EncryptedLogHeader { address }\n }\n\n fn compute_ciphertext<T>(self, secret: Scalar, pk: T) -> [u8; 48] where T: ToPoint {\n let full_key = point_to_symmetric_key(secret, pk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n\n let input: [u8; 32] = self.address.to_field().to_be_bytes();\n aes128_encrypt(input, iv, sym_key).as_array()\n }\n}\n\n#[test]\nunconstrained fn test_encrypted_log_header_matches_noir() {\n let address = AztecAddress::from_field(0xdeadbeef);\n let header = EncryptedLogHeader::new(address);\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let point = crate::keys::public_keys::IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n let ciphertext = header.compute_ciphertext(secret, point);\n\n // The following value was generated by `encrypted_log_header.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_header_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 194, 44, 7, 131, 160, 83, 64, 181, 98, 38, 153, 214, 62, 171, 253, 161, 111, 191, 28, 247, 216, 26, 222, 171, 176, 218, 48, 209, 73, 89, 200, 209\n ];\n\n assert_eq(ciphertext, expected_header_ciphertext_from_typescript);\n}\n"},"125":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/incoming_body.nr","source":"use crate::note::note_interface::NoteInterface;\nuse crate::event::event_interface::EventInterface;\nuse dep::protocol_types::{scalar::Scalar};\n\nuse std::aes128::aes128_encrypt;\nuse crate::keys::{point_to_symmetric_key::point_to_symmetric_key, public_keys::IvpkM};\n\npub struct EncryptedLogIncomingBody<let N: u32> {\n plaintext: [u8; N * 32 + 64]\n}\n\nimpl<let N: u32> EncryptedLogIncomingBody<N> {\n pub fn from_note<T>(note: T, storage_slot: Field) -> Self where T: NoteInterface<N> {\n let mut plaintext = note.to_be_bytes(storage_slot);\n EncryptedLogIncomingBody { plaintext }\n }\n\n pub fn from_event<T>(event: T, randomness: Field) -> Self where T: EventInterface<N> {\n let mut plaintext = event.private_to_be_bytes(randomness);\n EncryptedLogIncomingBody { plaintext }\n }\n\n pub fn compute_ciphertext(self, eph_sk: Scalar, ivpk: IvpkM) -> [u8] {\n let full_key = point_to_symmetric_key(eph_sk, ivpk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(self.plaintext, iv, sym_key)\n }\n}\n\nmod test {\n use dep::protocol_types::{\n address::AztecAddress, scalar::Scalar, point::Point, traits::Serialize,\n abis::event_selector::EventSelector\n };\n\n use crate::{\n note::{note_header::NoteHeader, note_interface::{NoteInterface, NullifiableNote}},\n encrypted_logs::incoming_body::EncryptedLogIncomingBody, event::event_interface::EventInterface,\n context::PrivateContext, keys::public_keys::IvpkM\n };\n\n struct AddressNote {\n address: AztecAddress,\n owner: AztecAddress,\n randomness: Field,\n header: NoteHeader,\n }\n\n global ADDRESS_NOTE_LEN: u32 = 3;\n\n impl NullifiableNote for AddressNote {\n fn compute_nullifier(\n _self: Self,\n _context: &mut PrivateContext,\n _note_hash_for_nullify: Field\n ) -> Field {\n 1\n }\n\n unconstrained fn compute_nullifier_without_context(_self: Self) -> Field {\n 1\n }\n }\n\n struct AddressNoteHidingPoint {\n inner: Point\n }\n\n impl NoteInterface<ADDRESS_NOTE_LEN> for AddressNote {\n\n fn get_note_type_id() -> Field {\n 1\n }\n\n fn get_header(self) -> NoteHeader {\n self.header\n }\n\n fn set_header(&mut self, header: NoteHeader) {\n self.header = header;\n }\n\n fn serialize_content(self) -> [Field; ADDRESS_NOTE_LEN] {\n [self.address.to_field(), self.owner.to_field(), self.randomness]\n }\n\n fn deserialize_content(fields: [Field; ADDRESS_NOTE_LEN]) -> Self {\n AddressNote {\n address: AztecAddress::from_field(fields[0]),\n owner: AztecAddress::from_field(fields[1]),\n randomness: fields[2],\n header: NoteHeader::empty()\n }\n }\n\n fn to_be_bytes(self, storage_slot: Field) -> [u8; ADDRESS_NOTE_LEN * 32 + 64] {\n let serialized_note = self.serialize_content();\n\n let mut buffer: [u8; ADDRESS_NOTE_LEN * 32 + 64] = [0; ADDRESS_NOTE_LEN * 32 + 64];\n\n let storage_slot_bytes: [u8; 32] = storage_slot.to_be_bytes();\n let note_type_id_bytes: [u8; 32] = AddressNote::get_note_type_id().to_be_bytes();\n\n for i in 0..32 {\n buffer[i] = storage_slot_bytes[i];\n buffer[32 + i] = note_type_id_bytes[i];\n }\n\n for i in 0..serialized_note.len() {\n let bytes: [u8; 32] = serialized_note[i].to_be_bytes();\n for j in 0..32 {\n buffer[64 + i * 32 + j] = bytes[j];\n }\n }\n buffer\n }\n\n fn compute_note_hash(_self: Self) -> Field {\n crate::generators::Ga1.x\n }\n }\n\n impl AddressNote {\n pub fn new(address: AztecAddress, owner: AztecAddress, randomness: Field) -> Self {\n AddressNote { address, owner, randomness, header: NoteHeader::empty() }\n }\n }\n\n #[test]\n unconstrained fn test_encrypted_note_log_incoming_body_matches_typescript() {\n // All the values in this test were copied over from `encrypted_note_log_incoming_body.test.ts`\n let note = AddressNote::new(\n AztecAddress::from_field(0x1),\n AztecAddress::from_field(0x2),\n 3\n );\n\n let storage_slot = 2;\n\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let ivpk = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n // 1. `EncryptedLogIncomingBody::from_note` calls `note.to_be_bytes(storage_slot)` function which serializes\n // the note to bytes - note that in the case of `AddressNote` the `to_be_bytes` function was automatically\n // implemented by Aztec macros.\n let body = EncryptedLogIncomingBody::from_note(note, storage_slot);\n\n // 2. `body.compute_ciphertext(...)` function then derives symmetric key from `eph_sk` and `ivpk` and encrypts\n // the note plaintext using AES-128.\n let ciphertext = body.compute_ciphertext(eph_sk, ivpk);\n\n // The following value was generated by `encrypted_note_log_incoming_body.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let note_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160, 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157, 131, 149, 96, 236, 253, 96, 172, 157, 30, 27, 176, 228, 74, 242, 190, 138, 48, 33, 93, 46, 37, 223, 130, 25, 245, 188, 163, 159, 223, 187, 24, 139, 206, 131, 154, 159, 130, 37, 17, 158, 114, 242, 141, 124, 193, 232, 54, 146, 96, 145, 100, 125, 234, 57, 43, 95, 115, 183, 39, 121, 232, 134, 229, 148, 25, 46, 77, 87, 127, 95, 7, 77, 188, 37, 234, 245, 142, 232, 87, 252, 28, 67, 67, 90, 214, 254, 89, 47, 68, 66, 187, 227, 8, 59, 162, 25, 141, 97, 141, 217, 197, 115, 15, 212, 202, 157, 41, 150, 62, 219, 57, 224, 92, 185, 212, 142, 94, 146, 41, 178, 145, 68, 169, 23, 185, 206, 138, 70, 47, 176, 210, 165, 236, 23, 206, 229, 108\n ];\n\n assert_eq(note_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..note_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], note_body_ciphertext_from_typescript[i]);\n }\n }\n\n struct TestEvent {\n value0: Field,\n value1: Field,\n value2: Field,\n }\n\n impl Serialize<3> for TestEvent {\n fn serialize(self) -> [Field; 3] {\n [self.value0, self.value1, self.value2]\n }\n }\n\n global TEST_EVENT_LEN: u32 = 3;\n\n impl EventInterface<TEST_EVENT_LEN> for TestEvent {\n fn get_event_type_id() -> EventSelector {\n comptime\n {\n EventSelector::from_signature(\"TestEvent(Field,Field,Field)\")\n }\n }\n\n fn private_to_be_bytes(self, randomness: Field) -> [u8; TEST_EVENT_LEN * 32 + 64] {\n let mut buffer: [u8; TEST_EVENT_LEN * 32 + 64] = [0; TEST_EVENT_LEN * 32 + 64];\n\n let randomness_bytes: [u8; 32] = randomness.to_be_bytes();\n let event_type_id_bytes: [u8; 32] = TestEvent::get_event_type_id().to_field().to_be_bytes();\n\n for i in 0..32 {\n buffer[i] = randomness_bytes[i];\n buffer[32 + i] = event_type_id_bytes[i];\n }\n\n let serialized_event = self.serialize();\n\n for i in 0..serialized_event.len() {\n let bytes: [u8; 32] = serialized_event[i].to_be_bytes();\n for j in 0..32 {\n buffer[64 + i * 32 + j] = bytes[j];\n }\n }\n\n buffer\n }\n\n fn to_be_bytes(self) -> [u8; TEST_EVENT_LEN * 32 + 32] {\n let mut buffer: [u8; TEST_EVENT_LEN * 32 + 32] = [0; TEST_EVENT_LEN * 32 + 32];\n\n let event_type_id_bytes: [u8; 32] = TestEvent::get_event_type_id().to_field().to_be_bytes();\n\n for i in 0..32 {\n buffer[i] = event_type_id_bytes[i];\n }\n\n let serialized_event = self.serialize();\n\n for i in 0..serialized_event.len() {\n let bytes: [u8; 32] = serialized_event[i].to_be_bytes();\n for j in 0..32 {\n buffer[32 + i * 32 + j] = bytes[j];\n }\n }\n\n buffer\n }\n\n fn emit<Env>(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n }\n\n #[test]\n unconstrained fn test_encrypted_log_event_incoming_body() {\n let test_event = TestEvent { value0: 1, value1: 2, value2: 3 };\n\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n\n let ivpk = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n let randomness = 2;\n\n let body = EncryptedLogIncomingBody::from_event(test_event, randomness);\n\n let ciphertext = body.compute_ciphertext(eph_sk, ivpk);\n\n // The following value was generated by `encrypted_event_log_incoming_body.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let event_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160, 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157, 131, 149, 96, 236, 253, 96, 172, 157, 30, 201, 247, 40, 80, 60, 188, 158, 251, 242, 103, 197, 79, 165, 195, 10, 160, 255, 35, 167, 152, 25, 233, 77, 145, 214, 243, 210, 119, 0, 20, 29, 95, 15, 63, 33, 190, 184, 67, 254, 96, 128, 243, 220, 228, 201, 130, 86, 163, 52, 127, 111, 10, 212, 7, 160, 16, 87, 13, 39, 11, 5, 1, 164, 65, 8, 56, 82, 245, 13, 68, 176, 90, 100, 69, 243, 78, 117, 188, 221, 34, 178, 31, 155, 89, 143, 176, 129, 118, 36, 236, 64, 179, 52, 239, 184, 51, 51, 199, 221, 49, 81, 197, 17, 199, 192, 99, 49, 168, 157, 164, 190, 33, 240, 182, 214, 173, 7, 156, 102, 95, 65, 217, 225, 123, 42, 21, 124, 144\n ];\n\n assert_eq(event_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..event_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], event_body_ciphertext_from_typescript[i]);\n }\n }\n}\n"},"129":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/note_getter/mod.nr","source":"use dep::protocol_types::{constants::{MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, GET_NOTES_ORACLE_RETURN_LENGTH}};\nuse crate::context::PrivateContext;\nuse crate::note::{\n constants::{GET_NOTE_ORACLE_RETURN_LENGTH, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, Select, Sort, SortOrder, NoteStatus, PropertySelector},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request\n};\nuse crate::oracle;\nuse crate::utils::comparison::compare;\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\n\nmod test;\n\nfn extract_property_value_from_selector<let N: u32>(\n serialized_note: [Field; N],\n selector: PropertySelector\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the serialized note.\n // This allows easier packing and custom (de)serialization schemas. A note property is located\n // inside the serialized note using the index inside the array, a byte offset and a length.\n let value: [u8; 32] = serialized_note[selector.index].to_be_bytes();\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[31 + offset - i] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_note_header<Note, let N: u32>(\n context: PrivateContext,\n storage_slot: Field,\n note: Note\n) where Note: NoteInterface<N> {\n let header = note.get_header();\n let contract_address = context.this_address();\n assert(header.contract_address.eq(contract_address), \"Mismatch note header contract address.\");\n assert(header.storage_slot == storage_slot, \"Mismatch note header storage slot.\");\n}\n\nfn check_note_fields<let N: u32>(\n serialized_note: [Field; N],\n selects: BoundedVec<Option<Select>, N>\n) {\n for i in 0..selects.len {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field = extract_property_value_from_selector(serialized_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()), \"Mismatch return note field.\"\n );\n }\n}\n\nfn check_notes_order<let N: u32>(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec<Option<Sort>, N>\n) {\n for i in 0..sorts.len {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note<Note, let N: u32>(\n context: &mut PrivateContext,\n storage_slot: Field\n) -> (Note, Field) where Note: NoteInterface<N> + NullifiableNote {\n let note = unsafe {\n get_note_internal(storage_slot)\n };\n\n // Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do is check that\n // the metadata is correct, and that the note exists.\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (note, note_hash_for_read_request)\n}\n\npub fn get_notes<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>) where Note: NoteInterface<N> + NullifiableNote + Eq {\n let opt_notes = unsafe {\n get_notes_internal(storage_slot, options)\n };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor<Note, PREPROCESSOR_ARGS>(\n notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PREPROCESSOR_ARGS) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PREPROCESSOR_ARGS\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>) where Note: NoteInterface<N> + NullifiableNote + Eq {\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the contents of the notes (as opposed to simply removing some),\n // the private kernel will later validate that these note actually exist, so transformations would cause for that\n // check to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = crate::utils::collapse_array(filtered_notes);\n let mut note_hashes: BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL> = BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_fields = [0; N];\n for i in 0..options.limit {\n if i < notes.len() {\n let note = notes.get_unchecked(i);\n let fields = note.serialize_content();\n check_note_header(*context, storage_slot, note);\n check_note_fields(fields, options.selects);\n if i != 0 {\n check_notes_order(prev_fields, fields, options.sorts);\n }\n prev_fields = fields;\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1410): test to ensure\n // failure if malicious oracle injects 0 nonce here for a \"pre-existing\" note.\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal<Note, let N: u32>(storage_slot: Field) -> Note where Note: NoteInterface<N> {\n let placeholder_note = [Option::none()];\n let placeholder_fields = [0; GET_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n placeholder_note,\n placeholder_fields,\n placeholder_note_length\n )[0].expect(f\"Failed to get a note\") // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] where Note: NoteInterface<N> {\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\nunconstrained pub fn view_notes<Note, let N: u32>(\n storage_slot: Field,\n options: NoteViewerOptions<Note, N>\n) -> BoundedVec<Note, MAX_NOTES_PER_PAGE> where Note: NoteInterface<N> {\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTES_PER_PAGE];\n let placeholder_fields = [0; VIEW_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let notes_array = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n );\n\n let mut notes = BoundedVec::new();\n for i in 0..notes_array.len() {\n if notes_array[i].is_some() {\n notes.push(notes_array[i].unwrap_unchecked());\n }\n }\n\n notes\n}\n\nunconstrained fn flatten_options<let N: u32>(\n selects: BoundedVec<Option<Select>, N>,\n sorts: BoundedVec<Option<Sort>, N>\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects] = select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects] = select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects] = select.unwrap_unchecked().property_selector.length;\n select_values[num_selects] = select.unwrap_unchecked().value;\n select_comparators[num_selects] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order\n )\n}\n"},"131":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/utils.nr","source":"use crate::{\n context::PrivateContext,\n note::{note_header::NoteHeader, note_interface::{NullifiableNote, NoteInterface}}\n};\n\nuse dep::protocol_types::{\n hash::{\n compute_unique_note_hash, compute_siloed_note_hash as compute_siloed_note_hash,\n compute_siloed_nullifier as compute_siloed_nullifier_from_preimage\n},\n utils::arr_copy_slice\n};\n\npub fn compute_siloed_nullifier<Note, let N: u32>(\n note_with_header: Note,\n context: &mut PrivateContext\n) -> Field where Note: NoteInterface<N> + NullifiableNote {\n let header = note_with_header.get_header();\n let note_hash_for_nullify = compute_note_hash_for_nullify(note_with_header);\n let inner_nullifier = note_with_header.compute_nullifier(context, note_hash_for_nullify);\n\n compute_siloed_nullifier_from_preimage(header.contract_address, inner_nullifier)\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_read_request<Note, let N: u32>(note: Note) -> Field where Note: NoteInterface<N> + NullifiableNote {\n let note_hash = note.compute_note_hash();\n let nonce = note.get_header().nonce;\n let counter = note.get_header().note_hash_counter;\n\n if counter != 0 {\n note_hash\n } else {\n compute_unique_note_hash(nonce, note_hash)\n }\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_nullify_internal<Note, let N: u32>(\n note: Note,\n note_hash_for_read_request: Field\n) -> Field where Note: NoteInterface<N> + NullifiableNote {\n let header = note.get_header();\n\n if header.note_hash_counter != 0 {\n if header.nonce == 0 {\n // Case 1: Transient note\n note_hash_for_read_request\n } else {\n // Case 2: Non-revertible note, nullified by a revertible nullifier\n let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash_for_read_request);\n compute_siloed_note_hash(header.contract_address, unique_note_hash)\n }\n } else {\n // Case 3: Note from a previous transaction\n // note_hash_for_read_request is already the unique_note_hash in this case\n compute_siloed_note_hash(header.contract_address, note_hash_for_read_request)\n }\n}\n\n// TODO(#7775): nuke this commented out code - kept it around as it contains comments which might be helpful when tackling #7775\n// pub fn compute_note_hash_for_nullify<Note, let N: u32, let M: u32>(note: Note) -> Field where Note: NoteInterface<N> {\n// let header = note.get_header();\n// // There are 3 cases for reading a note intended for consumption:\n// // 1. The note was inserted in this transaction, is revertible, or is not nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce == 0)\n// // 2. The note was inserted in this transaction, is non-revertible, and is nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce != 0)\n// // 3. The note was inserted in a previous transaction: (note_hash_counter == 0) & (nonce != 0)\n\n// let note_hash = note.compute_note_hiding_point().x;\n\n// if header.nonce == 0 {\n// // Case 1.\n// // If a note is transient, we just read the note_hash (kernel will hash it with nonce and silo by contract address).\n// note_hash\n// } else {\n// // Case 2: If a note is non-revertible, and is nullified by a revertible nullifier, we cannot squash them in the\n// // private reset circuit. Because if the tx reverts, we will have to keep the note hash and throw away the\n// // nullifier.\n// // And if the tx does not revert, both will be emitted. In which case, the nullifier must be created in the app\n// // from the siloed note hash.\n// // The kernel circuit will check that a nullifier with non-zero note_nonce is linked to a note hash, whose\n// // siloed note hash matches the note hash specified in the nullifier.\n\n// // Case 3: If a note is not from the current transaction, that means we are reading a settled note (from\n// // tree) created in a previous TX. So we need the siloed_note_hash which has already been hashed with\n// // nonce and then contract address. This hash will match the existing leaf in the note hash\n// // tree, so the kernel can just perform a membership check directly on this hash/leaf.\n// let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash);\n// compute_siloed_note_hash(header.contract_address, unique_note_hash)\n// // IMPORTANT NOTE ON REDUNDANT SILOING BY CONTRACT ADDRESS: The note hash computed above is\n// // \"siloed\" by contract address. When a note hash is computed solely for the purpose of\n// // nullification, it is not strictly necessary to silo the note hash before computing\n// // its nullifier. In other words, it is NOT NECESSARY for protocol security that a nullifier\n// // be computed from a siloed note hash. After all, persistable note hashes and nullifiers are\n// // siloed by the kernel circuit. That being said, the siloed note hash computed above CAN be\n// // used for nullifier computation, and this achieves the (arguably unnecessary) property that\n// // nullifiers are computed from a note hash's fully-computed note hash tree leaf.\n// }\n// }\n\npub fn compute_note_hash_for_nullify<Note, let N: u32>(note: Note) -> Field where Note: NoteInterface<N> + NullifiableNote {\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request)\n}\n\npub fn compute_note_hash_and_optionally_a_nullifier<T, let N: u32, let S: u32>(\n deserialize_content: fn([Field; N]) -> T,\n note_header: NoteHeader,\n compute_nullifier: bool,\n serialized_note: [Field; S]\n) -> [Field; 4] where T: NoteInterface<N> + NullifiableNote {\n let mut note = deserialize_content(arr_copy_slice(serialized_note, [0; N], 0));\n note.set_header(note_header);\n\n let note_hash = note.compute_note_hash();\n let unique_note_hash = compute_unique_note_hash(note_header.nonce, note_hash);\n let siloed_note_hash = compute_siloed_note_hash(note_header.contract_address, unique_note_hash);\n\n let inner_nullifier = if compute_nullifier {\n note.compute_nullifier_without_context()\n } else {\n 0\n };\n // docs:start:compute_note_hash_and_optionally_a_nullifier_returns\n [note_hash, unique_note_hash, siloed_note_hash, inner_nullifier]\n // docs:end:compute_note_hash_and_optionally_a_nullifier_returns\n}\n"},"132":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr","source":"use crate::context::{PrivateContext, PublicContext};\nuse crate::note::{\n note_header::NoteHeader, note_interface::{NoteInterface, NullifiableNote},\n utils::{compute_note_hash_for_read_request, compute_note_hash_for_nullify_internal},\n note_emission::NoteEmission\n};\nuse crate::oracle::notes::{notify_created_note, notify_nullified_note};\n\npub fn create_note<Note, let N: u32>(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note\n) -> NoteEmission<Note> where Note: NoteInterface<N> + NullifiableNote {\n let contract_address = (*context).this_address();\n let note_hash_counter = context.side_effect_counter;\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n let serialized_note = Note::serialize_content(*note);\n assert(\n notify_created_note(\n storage_slot,\n Note::get_note_type_id(),\n serialized_note,\n note_hash,\n note_hash_counter\n )\n == 0\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(*note)\n}\n\npub fn create_note_hash_from_public<Note, let N: u32>(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note\n) where Note: NoteInterface<N> + NullifiableNote {\n let contract_address = (*context).this_address();\n // Public note hashes are transient, but have no side effect counters, so we just need note_hash_counter != 0\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter: 1 };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n context.push_note_hash(note_hash);\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note<Note, let N: u32>(\n context: &mut PrivateContext,\n note: Note\n) where Note: NoteInterface<N> + NullifiableNote {\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n\n destroy_note_unsafe(context, note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe<Note, let N: u32>(\n context: &mut PrivateContext,\n note: Note,\n note_hash_for_read_request: Field\n) where Note: NoteInterface<N> + NullifiableNote {\n let note_hash_for_nullify = compute_note_hash_for_nullify_internal(note, note_hash_for_read_request);\n let nullifier = note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash_counter = note.get_header().note_hash_counter;\n let notification_note_hash = if (note_hash_counter == 0) {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifyng so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n let nullifier_counter = context.side_effect_counter;\n assert(notify_nullified_note(nullifier, notification_note_hash, nullifier_counter) == 0);\n\n context.push_nullifier_for_note_hash(nullifier, notification_note_hash)\n}\n\n"},"133":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/note_emission.nr","source":"/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\npub struct NoteEmission<Note> {\n note: Note\n}\n\nimpl<Note> NoteEmission<Note> {\n pub fn new(note: Note) -> Self {\n Self { note }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option<T>`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting\n * a change note in a token's transfer function only when there is \"change\" left).\n */\npub struct OuterNoteEmission<Note> {\n emission: Option<NoteEmission<Note>>,\n}\n\nimpl<Note> OuterNoteEmission<Note> {\n pub fn new(emission: Option<NoteEmission<Note>>) -> Self {\n Self { emission }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](NoteEmission<Note>) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n"},"141":{"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::oracle::logs_traits::ToBytesForUnencryptedLog;\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<T, let N: u32, let M: u32>(\n contract_address: AztecAddress,\n log: T\n) -> Field where T: ToBytesForUnencryptedLog<N, M> {\n let message_bytes: [u8; N] = log.to_be_bytes_arr();\n // can't use N - not in scope error\n let n = message_bytes.len();\n let mut hash_bytes = [0; M];\n // Address is converted to 32 bytes in ts\n let address_bytes = contract_address.to_be_bytes_arr();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let len_bytes: [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] = message_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes: [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 hash = compute_unencrypted_log_hash(contract_address, 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 hash = compute_unencrypted_log_hash(contract_address, 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 hash = compute_unencrypted_log_hash(contract_address, 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 hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0098637962f7d34fa202b7ffad8a07a238c5d1fd897b82a108f7f467fa73b841);\n}\n"},"149":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/initializer.nr","source":"use dep::protocol_types::{\n address::AztecAddress, hash::poseidon2_hash_with_separator, constants::GENERATOR_INDEX__CONSTRUCTOR,\n abis::function_selector::FunctionSelector\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext}, oracle::get_contract_instance::get_contract_instance,\n oracle::get_contract_instance::get_contract_instance_avm\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n context.push_nullifier_read_request(init_nullifier);\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let instance = get_contract_instance_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn compute_initialization_hash(init_selector: FunctionSelector, init_args_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR\n )\n}\n"},"150":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_nullifier_membership_witness.nr","source":"use dep::protocol_types::{\n abis::nullifier_leaf_preimage::{NullifierLeafPreimage, NULLIFIER_LEAF_PREIMAGE_LENGTH},\n constants::NULLIFIER_TREE_HEIGHT, utils::arr_copy_slice\n};\n\n// INDEX_LENGTH + NULLIFIER_LEAF_PREIMAGE_LENGTH + NULLIFIER_TREE_HEIGHT\nglobal NULLIFIER_MEMBERSHIP_WITNESS: u32 = 24;\n\npub struct NullifierMembershipWitness {\n index: Field,\n leaf_preimage: NullifierLeafPreimage,\n path: [Field; NULLIFIER_TREE_HEIGHT],\n}\n\nimpl NullifierMembershipWitness {\n pub fn deserialize(fields: [Field; NULLIFIER_MEMBERSHIP_WITNESS]) -> Self {\n let leaf_preimage_fields = arr_copy_slice(fields, [0; NULLIFIER_LEAF_PREIMAGE_LENGTH], 1);\n Self {\n index: fields[0],\n leaf_preimage: NullifierLeafPreimage::deserialize(leaf_preimage_fields),\n path: arr_copy_slice(\n fields,\n [0; NULLIFIER_TREE_HEIGHT],\n 1 + NULLIFIER_LEAF_PREIMAGE_LENGTH\n )\n }\n }\n}\n\n#[oracle(getLowNullifierMembershipWitness)]\nunconstrained fn get_low_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\nunconstrained pub fn get_low_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_low_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n\n#[oracle(getNullifierMembershipWitness)]\nunconstrained fn get_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\nunconstrained pub fn get_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n"},"151":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/logs.nr","source":"use dep::protocol_types::{address::AztecAddress, point::Point};\n\n// = 480 + 32 * N bytes\n#[oracle(emitEncryptedNoteLog)]\nunconstrained fn emit_encrypted_note_log_oracle<let M: u32>(_note_hash_counter: u32, _encrypted_note: [u8; M], _counter: u32) {}\n\nunconstrained pub fn emit_encrypted_note_log<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\n#[oracle(emitEncryptedEventLog)]\nunconstrained fn emit_encrypted_event_log_oracle<let M: u32>(_contract_address: AztecAddress, _randomness: Field, _encrypted_event: [u8; M], _counter: u32) {}\n\nunconstrained pub 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 emit_encrypted_event_log_oracle(contract_address, randomness, encrypted_event, counter)\n}\n\n// = 480 + 32 * N bytes\n#[oracle(computeEncryptedNoteLog)]\nunconstrained fn compute_encrypted_note_log_oracle<let N: u32, let M: u32>(\n _contract_address: AztecAddress,\n _storage_slot: Field,\n _note_type_id: Field,\n _ovsk_app: Field,\n _ovpk_m: Point,\n _ivpk_m: Point,\n _recipient: AztecAddress,\n _preimage: [Field; N]\n) -> [u8; M] {}\n\nunconstrained pub fn compute_encrypted_note_log<let N: u32, let M: u32>(\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n ovsk_app: Field,\n ovpk_m: Point,\n ivpk_m: Point,\n recipient: AztecAddress,\n preimage: [Field; N]\n) -> [u8; M] {\n compute_encrypted_note_log_oracle(\n contract_address,\n storage_slot,\n note_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n recipient,\n preimage\n )\n}\n\n// = 480 + 32 * N bytes\n#[oracle(computeEncryptedEventLog)]\nunconstrained fn compute_encrypted_event_log_oracle<let N: u32, let M: u32>(\n _contract_address: AztecAddress,\n _randomness: Field,\n _event_type_id: Field,\n _ovsk_app: Field,\n _ovpk_m: Point,\n _ivpk_m: Point,\n _recipient: AztecAddress,\n _preimage: [Field; N]\n) -> [u8; M] {}\n\nunconstrained pub fn compute_encrypted_event_log<let N: u32, let M: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n event_type_id: Field,\n ovsk_app: Field,\n ovpk_m: Point,\n ivpk_m: Point,\n recipient: AztecAddress,\n preimage: [Field; N]\n) -> [u8; M] {\n compute_encrypted_event_log_oracle(\n contract_address,\n randomness,\n event_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n recipient,\n preimage\n )\n}\n\n#[oracle(emitUnencryptedLog)]\nunconstrained fn emit_unencrypted_log_oracle_private<T>(_contract_address: AztecAddress, _message: T, _counter: u32) -> Field {}\n\nunconstrained pub fn emit_unencrypted_log_private_internal<T>(\n contract_address: AztecAddress,\n message: T,\n counter: u32\n) -> Field {\n emit_unencrypted_log_oracle_private(contract_address, message, counter)\n}\n\n#[oracle(emitContractClassUnencryptedLog)]\nunconstrained fn emit_contract_class_unencrypted_log_private<let N: u32>(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32\n) -> Field {}\n\nunconstrained pub fn emit_contract_class_unencrypted_log_private_internal<let N: u32>(contract_address: AztecAddress, message: [Field; N], counter: u32) -> Field {\n emit_contract_class_unencrypted_log_private(contract_address, message, counter)\n}\n"},"153":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/returns.nr","source":"#[oracle(packReturns)]\nunconstrained fn pack_returns_oracle(_returns: [Field]) -> Field {}\n\nunconstrained pub fn pack_returns(returns: [Field]) {\n let _unused = pack_returns_oracle(returns);\n}\n\n#[oracle(unpackReturns)]\nunconstrained fn unpack_returns_oracle<let N: u32>(_return_hash: Field) -> [Field; N] {}\n\nunconstrained pub fn unpack_returns<let N: u32>(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n"},"155":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr","source":"use dep::protocol_types::abis::validation_requests::{KeyValidationRequest, key_validation_request::KEY_VALIDATION_REQUEST_LENGTH};\n\n#[oracle(getKeyValidationRequest)]\nunconstrained fn get_key_validation_request_oracle(\n _pk_m_hash: Field,\n _key_index: Field\n) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {}\n\nunconstrained fn get_key_validation_request_internal(\n npk_m_hash: Field,\n key_index: Field\n) -> KeyValidationRequest {\n let result = get_key_validation_request_oracle(npk_m_hash, key_index);\n KeyValidationRequest::deserialize(result)\n}\n\nunconstrained pub fn get_key_validation_request(\n pk_m_hash: Field,\n key_index: Field\n) -> KeyValidationRequest {\n get_key_validation_request_internal(pk_m_hash, key_index)\n}\n"},"159":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/unsafe_rand.nr","source":"#[oracle(getRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n\n// Called `unsafe_rand` because we do not constrain in circuit that we are dealing with an actual random value.\n// Instead we just trust our PXE.\nunconstrained pub fn unsafe_rand() -> Field {\n rand_oracle()\n}\n"},"161":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; 2] {}\n\nunconstrained pub fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n"},"162":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/keys.nr","source":"use crate::keys::{PublicKeys, public_keys::{NpkM, IvpkM, OvpkM, TpkM}};\nuse dep::protocol_types::{address::{AztecAddress, PartialAddress}, point::Point};\n\n#[oracle(getPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\nunconstrained pub fn get_public_keys_and_partial_address(address: AztecAddress) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle(address);\n\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x: result[3], y: result[4], is_infinite: result[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x: result[6], y: result[7], is_infinite: result[8] as bool } },\n tpk_m: TpkM { inner: Point { x: result[9], y: result[10], is_infinite: result[11] as bool } }\n };\n\n let partial_address = PartialAddress::from_field(result[12]);\n\n (keys, partial_address)\n}\n"},"164":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/notes.nr","source":"use crate::note::{note_header::NoteHeader, note_interface::NoteInterface};\n\nuse dep::protocol_types::{address::AztecAddress, utils::arr_copy_slice};\n\n#[oracle(notifyCreatedNote)]\nunconstrained fn notify_created_note_oracle<let N: u32>(\n _storage_slot: Field,\n _note_type_id: Field,\n _serialized_note: [Field; N],\n _note_hash: Field,\n _counter: u32\n) -> Field {}\n\nunconstrained pub fn notify_created_note<let N: u32>(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32\n) -> Field {\n notify_created_note_oracle(storage_slot, note_type_id, serialized_note, note_hash, counter)\n}\n\n#[oracle(notifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(_nullifier: Field, _note_hash: Field, _counter: u32) -> Field {}\n\nunconstrained pub fn notify_nullified_note(nullifier: Field, note_hash: Field, counter: u32) -> Field {\n notify_nullified_note_oracle(nullifier, note_hash, counter)\n}\n\n#[oracle(getNotes)]\nunconstrained fn get_notes_oracle<let N: u32, let S: u32>(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; N],\n _select_by_offsets: [u8; N],\n _select_by_lengths: [u8; N],\n _select_values: [Field; N],\n _select_comparators: [u8; N],\n _sort_by_indexes: [u8; N],\n _sort_by_offsets: [u8; N],\n _sort_by_lengths: [u8; N],\n _sort_order: [u8; N],\n _limit: u32,\n _offset: u32,\n _status: u8,\n _return_size: u32,\n _placeholder_fields: [Field; S]\n) -> [Field; S] {}\n\nunconstrained fn get_notes_oracle_wrapper<let N: u32, let S: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; N],\n select_by_offsets: [u8; N],\n select_by_lengths: [u8; N],\n select_values: [Field; N],\n select_comparators: [u8; N],\n sort_by_indexes: [u8; N],\n sort_by_offsets: [u8; N],\n sort_by_lengths: [u8; N],\n sort_order: [u8; N],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_fields: [Field; S]\n) -> [Field; S] {\n let return_size = placeholder_fields.len() as u32;\n get_notes_oracle(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n return_size,\n placeholder_fields\n )\n}\n\nunconstrained pub fn get_notes<Note, let N: u32, let M: u32, let S: u32, let NS: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_opt_notes: [Option<Note>; S], // TODO: Remove it and use `limit` to initialize the note array.\n placeholder_fields: [Field; NS], // TODO: Remove it and use `limit` to initialize the note array.\n _placeholder_note_length: [Field; N] // Turbofish hack? Compiler breaks calculating read_offset unless we add this parameter\n) -> [Option<Note>; S] where Note: NoteInterface<N> {\n let fields = get_notes_oracle_wrapper(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n placeholder_fields\n );\n let num_notes = fields[0] as u32;\n let contract_address = AztecAddress::from_field(fields[1]);\n for i in 0..placeholder_opt_notes.len() {\n if i < num_notes {\n // lengths named as per typescript.\n let return_header_length: u32 = 2; // num_notes & contract_address.\n let extra_preimage_length: u32 = 2; // nonce & note_hash_counter.\n let read_offset: u32 = return_header_length + i * (N + extra_preimage_length);\n let nonce = fields[read_offset];\n let note_hash_counter = fields[read_offset + 1] as u32;\n let header = NoteHeader { contract_address, nonce, storage_slot, note_hash_counter };\n let serialized_note = arr_copy_slice(fields, [0; N], read_offset + 2);\n let mut note = Note::deserialize_content(serialized_note);\n note.set_header(header);\n placeholder_opt_notes[i] = Option::some(note);\n };\n }\n placeholder_opt_notes\n}\n\n// Only ever use this in private!\n#[oracle(checkNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> Field {}\n\n// Only ever use this in private!\nunconstrained pub fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier) == 1\n}\n"},"165":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr","source":"use dep::protocol_types::{\n address::AztecAddress, contract_instance::ContractInstance, constants::CONTRACT_INSTANCE_LENGTH,\n utils::reader::Reader\n};\n\n#[oracle(getContractInstance)]\nunconstrained fn get_contract_instance_oracle(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {}\n\n// Returns a ContractInstance plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstance)]\nunconstrained fn get_contract_instance_oracle_avm(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {}\n\nunconstrained fn get_contract_instance_internal(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n get_contract_instance_oracle(address)\n}\n\nunconstrained pub fn get_contract_instance_internal_avm(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {\n get_contract_instance_oracle_avm(address)\n}\n\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n let instance = unsafe {\n ContractInstance::deserialize(get_contract_instance_internal(address))\n };\n // The to_address function combines all values in the instance object to produce an address, so by checking that we\n // get the expected address we validate the entire struct.\n assert_eq(instance.to_address(), address);\n\n instance\n}\n\npub fn get_contract_instance_avm(address: AztecAddress) -> Option<ContractInstance> {\n let mut reader = Reader::new(get_contract_instance_internal_avm(address));\n let found = reader.read();\n if found == 0 {\n Option::none()\n } else {\n Option::some(reader.read_struct(ContractInstance::deserialize))\n }\n}\n"},"166":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr","source":"use dep::protocol_types::{abis::{function_selector::FunctionSelector}, address::AztecAddress};\n\n#[oracle(enqueuePublicFunctionCall)]\nunconstrained fn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) {}\n\nunconstrained pub fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nunconstrained fn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) {}\n\nunconstrained pub fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n}\n\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n\nunconstrained pub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n"},"168":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/execution.nr","source":"use dep::protocol_types::address::AztecAddress;\n\n#[oracle(getContractAddress)]\nunconstrained fn get_contract_address_oracle() -> AztecAddress {}\n\n#[oracle(getBlockNumber)]\nunconstrained fn get_block_number_oracle() -> u32 {}\n\n#[oracle(getChainId)]\nunconstrained fn get_chain_id_oracle() -> Field {}\n\n#[oracle(getVersion)]\nunconstrained fn get_version_oracle() -> Field {}\n\nunconstrained pub fn get_contract_address() -> AztecAddress {\n get_contract_address_oracle()\n}\n\nunconstrained pub fn get_block_number() -> u32 {\n get_block_number_oracle()\n}\n\nunconstrained pub fn get_chain_id() -> Field {\n get_chain_id_oracle()\n}\n\nunconstrained pub fn get_version() -> Field {\n get_version_oracle()\n}\n"},"189":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr","source":"use dep::protocol_types::{constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER, hash::poseidon2_hash_with_separator};\n\nuse crate::context::{PrivateContext, UnconstrainedContext};\nuse crate::note::{\n lifecycle::create_note, note_getter::{get_note, view_notes},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n note_emission::NoteEmission\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\npub struct PrivateImmutable<Note, Context> {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\nimpl<T, Context> Storage<T> for PrivateImmutable<T, Context> {}\n\nimpl<Note, Context> PrivateImmutable<Note, Context> {\n // docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n // The following computation is leaky, in that it doesn't hide the storage slot that has been initialized, nor does it hide the contract address of this contract.\n // When this initialization nullifier is emitted, an observer could do a dictionary or rainbow attack to learn the preimage of this nullifier to deduce the storage slot and contract address.\n // For some applications, leaking the details that a particular state variable of a particular contract has been initialized will be unacceptable.\n // Under such circumstances, such application developers might wish to _not_ use this state variable type.\n // This is especially dangerous for initial assignment to elements of a `Map<AztecAddress, PrivateImmutable>` type (for example), because the storage slot often also identifies an actor.\n // e.g. the initial assignment to `my_map.at(msg.sender)` will leak: `msg.sender`, the fact that an element of `my_map` was assigned-to for the first time, and the contract_address.\n pub fn compute_initialization_nullifier(self) -> Field {\n poseidon2_hash_with_separator(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER\n )\n }\n}\n\nimpl<Note> PrivateImmutable<Note, &mut PrivateContext> {\n // docs:start:initialize\n pub fn initialize<let N: u32>(\n self,\n note: &mut Note\n ) -> NoteEmission<Note> where Note: NoteInterface<N> + NullifiableNote {\n // Nullify the storage slot.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_nullifier(nullifier);\n\n create_note(self.context, self.storage_slot, note)\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note<let N: u32>(self) -> Note where Note: NoteInterface<N> + NullifiableNote {\n let storage_slot = self.storage_slot;\n get_note(self.context, storage_slot).0\n }\n // docs:end:get_note\n}\n\nimpl<Note> PrivateImmutable<Note, UnconstrainedContext> {\n // docs:start:is_initialized\n unconstrained pub fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // view_note does not actually use the context, but it calls oracles that are only available in private\n // docs:start:view_note\n unconstrained pub fn view_note<let N: u32>(self) -> Note where Note: NoteInterface<N> + NullifiableNote {\n let mut options = NoteViewerOptions::new();\n view_notes(self.storage_slot, options.set_limit(1)).get(0)\n }\n // docs:end:view_note\n}\n"},"193":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/utils/point.nr","source":"use dep::protocol_types::point::Point;\n\n// I am storing the modulus divided by 2 plus 1 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field = 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a public key to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(pk: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!pk.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = pk.x.to_be_bytes();\n\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n if !BN254_FR_MODULUS_DIV_2.lt(pk.y) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\nmod test {\n use dep::protocol_types::point::Point;\n use crate::utils::point::point_to_bytes;\n\n #[test]\n unconstrained fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122, 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115\n ];\n\n assert_eq(expected_compressed_point_positive_sign, compressed_point);\n }\n\n #[test]\n unconstrained fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169, 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181\n ];\n\n assert_eq(expected_compressed_point_negative_sign, compressed_point);\n }\n}\n"},"211":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use crate::{traits::{Empty, Serialize, Deserialize}, point::Point};\npub use crate::constants::KEY_VALIDATION_REQUEST_LENGTH;\n\npub struct KeyValidationRequest {\n pk_m: Point,\n sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m)) & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest { pk_m: Point::empty(), sk_app: 0 }\n }\n}\n\nimpl Serialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [\n self.pk_m.x,\n self.pk_m.y,\n self.pk_m.is_infinite as Field,\n self.sk_app\n ]\n }\n}\n\nimpl Deserialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self { pk_m: Point { x: fields[0], y: fields[1], is_infinite: fields[2] as bool }, sk_app: fields[3] }\n }\n}\n"},"227":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier_leaf_preimage.nr","source":"global NULLIFIER_LEAF_PREIMAGE_LENGTH: u32 = 3;\n\nuse crate::{\n abis::{read_request::ScopedReadRequest, side_effect::Readable}, hash::compute_siloed_nullifier,\n merkle_tree::leaf_preimage::{LeafPreimage, IndexedTreeLeafPreimage}, traits::{Empty, Hash}\n};\n\npub struct NullifierLeafPreimage {\n nullifier : Field,\n next_nullifier :Field,\n next_index : u32,\n}\n\nimpl Empty for NullifierLeafPreimage {\n fn empty() -> Self {\n Self { nullifier: 0, next_nullifier: 0, next_index: 0 }\n }\n}\n\nimpl Hash for NullifierLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n crate::hash::poseidon2_hash(self.serialize())\n }\n }\n}\n\nimpl LeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl IndexedTreeLeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn get_next_key(self) -> Field {\n self.next_nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl Readable<ScopedReadRequest> for NullifierLeafPreimage {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n let siloed_value = compute_siloed_nullifier(read_request.contract_address, read_request.value());\n assert_eq(self.nullifier, siloed_value, \"Value of the nullifier leaf does not match read request\");\n }\n}\n\nimpl NullifierLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.nullifier == 0) & (self.next_nullifier == 0) & (self.next_index == 0)\n }\n\n pub fn serialize(self) -> [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH] {\n [self.nullifier, self.next_nullifier, self.next_index as Field]\n }\n\n pub fn deserialize(fields: [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH]) -> Self {\n Self { nullifier: fields[0], next_nullifier: fields[1], next_index: fields[2] as u32 }\n }\n}\n\nimpl Eq for NullifierLeafPreimage {\n fn eq(self, other: Self) -> bool {\n (self.nullifier == other.nullifier)\n & (self.next_nullifier == other.next_nullifier)\n & (self.next_index == other.next_index)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = NullifierLeafPreimage::empty();\n let serialized = item.serialize();\n let deserialized = NullifierLeafPreimage::deserialize(serialized);\n assert(item.eq(deserialized));\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 x: Field,\n y: Field,\n 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 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 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 lo: Field,\n 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 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 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"},"25":{"path":"std/field/bn254.nr","source":"use crate::runtime::is_unconstrained;\n\n// The low and high decomposition of the field modulus\nglobal PLO: Field = 53438638232309528389504892708671455233;\nglobal PHI: Field = 64323764613183177041862057485226039389;\n\nglobal TWO_POW_128: Field = 0x100000000000000000000000000000000;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(x: Field) -> (Field, Field) {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n\n let mut low: Field = 0;\n let mut high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n low += (x_bytes[i] as Field) * offset;\n high += (x_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n\n (low, high)\n}\n\nunconstrained pub(crate) fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nfn compute_lt(x: Field, y: Field, num_bytes: u32) -> 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..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i];\n let y_byte = y_bytes[num_bytes - 1 - i];\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\nfn compute_lte(x: Field, y: Field, num_bytes: u32) -> bool {\n if x == y {\n true\n } else {\n compute_lt(x, y, num_bytes)\n }\n}\n\nunconstrained fn lt_32_hint(x: Field, y: Field) -> bool {\n compute_lt(x, y, 32)\n}\n\nunconstrained fn lte_16_hint(x: Field, y: Field) -> bool {\n compute_lte(x, y, 16)\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_16_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(compute_lt(b, a, 32));\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 compute_lt(b, a, 32)\n } else if a == b {\n false\n } else {\n // Take a hint of the comparison and verify it\n unsafe {\n if lt_32_hint(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::{decompose, compute_lt, assert_gt, gt, TWO_POW_128, compute_lte, PLO, PHI};\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 fn check_compute_lt() {\n assert(compute_lt(0, 1, 16));\n assert(compute_lt(0, 0x100, 16));\n assert(compute_lt(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lt(0, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_compute_lte() {\n assert(compute_lte(0, 1, 16));\n assert(compute_lte(0, 0x100, 16));\n assert(compute_lte(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lte(0, TWO_POW_128, 16));\n\n assert(compute_lte(0, 0, 16));\n assert(compute_lte(0x100, 0x100, 16));\n assert(compute_lte(TWO_POW_128 - 1, TWO_POW_128 - 1, 16));\n assert(compute_lte(TWO_POW_128, TWO_POW_128, 16));\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":"mod bn254;\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(self, bit_size: u32) {\n // docs:end:assert_max_bit_size\n crate::assert_constant(bit_size);\n assert(bit_size < modulus_num_bits() as u32);\n self.__assert_max_bit_size(bit_size);\n }\n\n #[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]` slice of length `byte_size`.\n /// This slice will be zero padded should not all bytes be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{8*byte_size}` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `byte_size` equal to or greater than the number of bytes necessary to represent the `Field` modulus\n /// (e.g. 32 for the BN254 field) allow for multiple byte decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n // docs:start:to_le_bytes\n pub fn to_le_bytes<let N: u32>(self: Self) -> [u8; N] {\n self.to_le_radix(256)\n }\n // docs:end:to_le_bytes\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8]` slice of length `byte_size`.\n /// This slice will be zero padded should not all bytes be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{8*byte_size}` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `byte_size` equal to or greater than the number of bytes necessary to represent the `Field` modulus\n /// (e.g. 32 for the BN254 field) allow for multiple byte decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n // docs:start:to_be_bytes\n pub fn to_be_bytes<let N: u32>(self: Self) -> [u8; N] {\n self.to_be_radix(256)\n }\n // docs:end:to_be_bytes\n\n // docs:start:to_le_radix\n pub fn to_le_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n crate::assert_constant(radix);\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 crate::assert_constant(radix);\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\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 }\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 }\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 }\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 }\n // docs:end:to_le_radix_example\n}\n"},"273":{"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 [Field; N] {\n fn serialize(self) -> [Field; N] {\n self\n }\n}\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 [Field; N] {\n fn deserialize(fields: [Field; N]) -> Self {\n fields\n }\n}\n"},"274":{"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// 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\n#[oracle(debugLog)]\nunconstrained fn debug_log_oracle<let M: u32>(_msg: str<M>, args: [Field]) {}\n\n/// NOTE: call this with a str<N> msg of form\n/// \"some string with {0} and {1} ... {N}\"\n/// and an array of N field which will be formatted\n/// into the string in the simulator.\n/// Example:\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]);\nunconstrained pub fn debug_log_format<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n/// NOTE: call this with a str<N> msg of length > 1\n/// Example:\n/// `debug_log(\"blah blah this is a debug string\");`\nunconstrained pub fn debug_log<let N: u32>(msg: str<N>) {\n debug_log_format(msg, []);\n}\n"},"278":{"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(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs = [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes: [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 let input_as_bytes: [u8; 32] = logs[offset].value.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 // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn compute_tx_note_logs_hash(logs: [LogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_NOTE_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes: [u8; 32] = logs[offset].value.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 // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn pedersen_hash<let N: u32>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<let N: u32>(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[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"},"284":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/point.nr","source":"pub use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{traits::{Deserialize, Empty, Hash, Serialize}, hash::poseidon2_hash};\n\nglobal POINT_LENGTH: u32 = 3;\n\nimpl Serialize<POINT_LENGTH> for Point {\n fn serialize(self: Self) -> [Field; POINT_LENGTH] {\n [self.x, self.y, self.is_infinite as Field]\n }\n}\n\nimpl Hash for Point {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl Empty for Point {\n /// Note: Does not return a valid point on curve - instead represents an empty/\"unpopulated\" point struct (e.g.\n /// empty/unpopulated value in an array of points).\n fn empty() -> Self {\n Point { x: 0, y: 0, is_infinite: false }\n }\n}\n\nimpl Deserialize<POINT_LENGTH> for Point {\n fn deserialize(serialized: [Field; POINT_LENGTH]) -> Point {\n Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool }\n }\n}\n"},"285":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr","source":"use crate::{\n address::{aztec_address::AztecAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n contract_class_id::ContractClassId, constants::CONTRACT_INSTANCE_LENGTH,\n traits::{Deserialize, Hash, Serialize}\n};\n\npub struct ContractInstance {\n salt : Field,\n deployer: AztecAddress,\n contract_class_id : ContractClassId,\n initialization_hash : Field,\n public_keys_hash : PublicKeysHash,\n}\n\nimpl Eq for ContractInstance {\n fn eq(self, other: Self) -> bool {\n self.public_keys_hash.eq(other.public_keys_hash)\n & self.initialization_hash.eq(other.initialization_hash)\n & self.contract_class_id.eq(other.contract_class_id)\n & self.salt.eq(other.salt)\n }\n}\n\nimpl Serialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn serialize(self) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n [\n self.salt,\n self.deployer.to_field(),\n self.contract_class_id.to_field(),\n self.initialization_hash,\n self.public_keys_hash.to_field()\n ]\n }\n}\n\nimpl Deserialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn deserialize(serialized: [Field; CONTRACT_INSTANCE_LENGTH]) -> Self {\n Self {\n salt: serialized[0],\n deployer: AztecAddress::from_field(serialized[1]),\n contract_class_id: ContractClassId::from_field(serialized[2]),\n initialization_hash: serialized[3],\n public_keys_hash: PublicKeysHash::from_field(serialized[4])\n }\n }\n}\n\nimpl Hash for ContractInstance {\n fn hash(self) -> Field {\n self.to_address().to_field()\n }\n}\n\nimpl ContractInstance {\n fn to_address(self) -> AztecAddress {\n AztecAddress::compute(\n self.public_keys_hash,\n PartialAddress::compute(\n self.contract_class_id,\n self.salt,\n self.initialization_hash,\n self.deployer\n )\n )\n }\n}\n"},"29":{"path":"std/hash/mod.nr","source":"mod poseidon;\nmod mimc;\nmod poseidon2;\nmod keccak;\nmod sha256;\nmod sha512;\n\nuse crate::default::Default;\nuse crate::uint128::U128;\nuse crate::collections::vec::Vec;\nuse crate::embedded_curve_ops::{EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_slice};\nuse crate::meta::derive_via;\n\n// Kept for backwards compatibility\npub use sha256::{digest, sha256, sha256_compression, sha256_var};\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment<let N: u32>(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\npub fn pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {\n __pedersen_hash_with_separator(input, separator)\n}\n\nfn pedersen_commitment_with_separator<let N: u32>(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let value = __pedersen_commitment_with_separator(input, separator);\n if (value[0] == 0) & (value[1] == 0) {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n } else {\n EmbeddedCurvePoint { x: value[0], y: value[1], is_infinite: false }\n }\n}\n\n#[no_predicates]\nfn pedersen_commitment_with_separator_noir<let N: u32>(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n#[no_predicates]\nfn pedersen_hash_with_separator_noir<let N: u32>(input: [Field; N], separator: u32) -> Field {\n let mut scalars: Vec<EmbeddedCurveScalar> = Vec::from_slice([EmbeddedCurveScalar { lo: 0, hi: 0 }; N].as_slice()); //Vec::new();\n\n for i in 0..N {\n scalars.set(i, from_field_unsafe(input[i]));\n }\n scalars.push(EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field });\n let domain_generators :[EmbeddedCurvePoint; N]= derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n let mut vec_generators = Vec::new();\n for i in 0..N {\n vec_generators.push(domain_generators[i]);\n }\n let length_generator : [EmbeddedCurvePoint; 1] = derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n vec_generators.push(length_generator[0]);\n multi_scalar_mul_slice(vec_generators.slice, scalars.slice)[0]\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash<let N: u32>(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n __pedersen_hash_with_separator(input, 0)\n}\n\n#[foreign(pedersen_hash)]\nfn __pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {}\n\n#[foreign(pedersen_commitment)]\nfn __pedersen_commitment_with_separator<let N: u32>(input: [Field; N], separator: u32) -> [Field; 2] {}\n\n#[field(bn254)]\nfn derive_generators<let N: u32, let M: u32>(domain_separator_bytes: [u8; M], starting_index: u32) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators<let N: u32, let M: u32>(\n domain_separator_bytes: [u8; M],\n starting_index: u32\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n // Same as from_field but:\n // does not assert the limbs are 128 bits\n // does not assert the decomposition does not overflow the EmbeddedCurveScalar\n fn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n let (xlo, xhi) = unsafe {\n crate::field::bn254::decompose_hint(scalar)\n };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n// docs:start:keccak256\npub fn keccak256<let N: u32>(input: [u8; N], message_size: u32) -> [u8; 32]\n// docs:end:keccak256\n{\n crate::hash::keccak::keccak256(input, message_size)\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation<let N: u32>(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: StructDefinition) -> Quoted {\n let name = quote { Hash };\n let signature = quote { fn hash<H>(_self: Self, _state: &mut H) where H: std::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(s, name, signature, for_each_field, quote {}, |fields| fields)\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher<H> where H: Hasher {\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault<H>;\n\nimpl<H> BuildHasher<H> for BuildHasherDefault<H>\nwhere\n H: Hasher + Default {\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl<H> Default for BuildHasherDefault<H>\nwhere\n H: Hasher + Default {\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash<H>(_self: Self, _state: &mut H) where H: Hasher {}\n}\n\nimpl Hash for U128 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self.lo as Field);\n H::write(state, self.hi as Field);\n }\n}\n\nimpl<T, let N: u32> Hash for [T; N] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<T> Hash for [T] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<A, B> Hash for (A, B) where A: Hash, B: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl<A, B, C> Hash for (A, B, C) where A: Hash, B: Hash, C: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl<A, B, C, D> Hash for (A, B, C, D) where A: Hash, B: Hash, C: Hash, D: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl<A, B, C, D, E> Hash for (A, B, C, D, E) where A: Hash, B: Hash, C: Hash, D: Hash, E: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1), 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1), EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false\n }\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2), 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2), EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3), 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3), EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4), 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4), EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5), 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5), EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6), 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6), EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7), 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7), EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false\n }\n );\n}\n\n"},"3":{"path":"std/array/mod.nr","source":"use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl<T, let N: u32> [T; N] {\n /// Returns the length of this array.\n /// \n /// ```noir\n /// fn len(self) -> Field\n /// ```\n /// \n /// example\n /// \n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n /// \n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n /// \n /// Example:\n /// \n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> [U; N] {\n let first_elem = f(self[0]);\n let mut ret = [first_elem; N];\n\n for i in 1..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n /// \n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n /// \n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n /// \n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n /// \n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold<U, Env>(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce<Env>(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n}\n\nimpl<T, let N: u32> [T; N] where T: Ord + Eq {\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a: T, b: T| a <= b)\n }\n}\n\nimpl<T, let N: u32> [T; N] where T: Eq {\n /// Returns a new sorted array by sorting it with a custom comparison function. \n /// The original array remains untouched. \n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n /// \n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n /// \n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via<Env>(self, ordering: fn[Env](T, T) -> bool) -> Self {\n unsafe {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = quicksort::quicksort(self, ordering);\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]), \"Array has not been sorted correctly according to `ordering`.\"\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n }\n}\n\nimpl<let N: u32> [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str<N> {}\n}\n\nimpl<let N: u32> From<str<N>> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str<N>) -> Self {\n s.as_bytes()\n }\n}\n"},"301":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"pub struct Reader<let N: u32> {\n data: [Field; N],\n offset: u32,\n}\n\nimpl<let N: u32> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array<let K: u32>(&mut self, mut result: [Field; K]) -> [Field; K] {\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n // TODO(#4394)\n pub fn read_struct<T, let K: u32>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array<T, let K: u32, let C: u32>(&mut self, deserialise: fn([Field; K]) -> T, mut result: [T; C]) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n"},"323":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/mod.nr","source":"// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate { lhs } else { rhs }\n}\n\npub fn arr_copy_slice<T, let N: u32, let M: u32>(src: [T; N], mut dst: [T; M], offset: u32) -> [T; M] {\n let iterator_len = if N > M { M } else { N };\n for i in 0..iterator_len {\n dst[i] = src[i + offset];\n }\n dst\n}\n"},"337":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n crate::address::{partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n hash::poseidon2_hash_with_separator, traits::{Empty, FromField, ToField, Serialize, Deserialize},\n 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 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"},"339":{"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"},"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 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"},"340":{"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"},"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 crate::sha256::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: u64, msg_start: u32) -> ([u8; 64], u64) {\n let mut msg_block: [u8; BLOCK_SIZE] = [0; BLOCK_SIZE];\n let mut msg_byte_ptr: u64 = 0; // Message byte pointer\n let mut msg_end = msg_start + BLOCK_SIZE;\n if msg_end > N {\n msg_end = N;\n }\n for k in msg_start..msg_end {\n if k as u64 < message_size {\n msg_block[msg_byte_ptr] = msg[k];\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n (msg_block, msg_byte_ptr)\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: u64,\n msg_block: [u8; 64],\n msg_start: u32\n) -> u64 {\n let mut msg_byte_ptr: u64 = 0; // Message byte pointer\n let mut msg_end = msg_start + BLOCK_SIZE;\n let mut extra_bytes = 0;\n if msg_end > N {\n msg_end = N;\n extra_bytes = msg_end - N;\n }\n\n for k in msg_start..msg_end {\n if k as u64 < 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;\nglobal ZERO = 0;\n\n// Variable size SHA-256 hash\npub fn sha256_var<let N: u32>(msg: [u8; N], message_size: u64) -> [u8; 32] {\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 as u64 < 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 as u64 < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n } else if msg_start as u64 < 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_byte_ptr == 64 {\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 as u64 < 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 as u64 < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n } else if msg_start as u64 < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n if msg_byte_ptr == BLOCK_SIZE as u64 {\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..64 {\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..64 {\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(mut msg_block: [u8; 64], mut msg_byte_ptr: u64) -> ([u8; 64], u64) {\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 if msg_byte_ptr < 64 {\n for _ in 57..64 {\n if msg_byte_ptr <= 63 {\n msg_block[msg_byte_ptr] = 0;\n msg_byte_ptr += 1;\n }\n }\n }\n }\n (msg_block, msg_byte_ptr)\n}\n\nunconstrained fn attach_len_to_msg_block(mut msg_block: [u8; 64], mut msg_byte_ptr: u64, message_size: u64) -> [u8; 64] {\n let len = 8 * message_size;\n let len_bytes: [u8; 8] = (len as Field).to_be_bytes();\n for _i in 0..64 {\n // In any case, fill blocks up with zeros until the last 64 (i.e. until msg_byte_ptr = 56).\n if msg_byte_ptr < 56 {\n msg_block[msg_byte_ptr] = 0;\n msg_byte_ptr = msg_byte_ptr + 1;\n } else if msg_byte_ptr < 64 {\n for j in 0..8 {\n msg_block[msg_byte_ptr + j] = len_bytes[j];\n }\n msg_byte_ptr += 8;\n }\n }\n msg_block\n}\n\nfn hash_final_block(msg_block: [u8; 64], 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"},"439":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/main.nr","source":"mod public_key_note;\n\n// Account contract that uses Schnorr signatures for authentication.\n// The signing key is stored in an immutable private note and should be different from the encryption/nullifying key.\nuse dep::aztec::macros::aztec;\n\n#[aztec]\ncontract SchnorrAccount {\n use dep::std;\n\n use dep::aztec::prelude::{AztecAddress, PrivateContext, PrivateImmutable};\n use dep::aztec::encrypted_logs::encrypted_note_emission::encode_and_encrypt_note_with_keys;\n use dep::authwit::{\n entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions,\n auth_witness::get_auth_witness, auth::{compute_authwit_nullifier, compute_authwit_message_hash}\n };\n use dep::aztec::{hash::compute_siloed_nullifier, keys::getters::get_public_keys};\n use dep::aztec::oracle::get_nullifier_membership_witness::get_low_nullifier_membership_witness;\n use dep::aztec::macros::{storage::storage, functions::{private, initializer, view, noinitcheck}};\n\n use crate::public_key_note::PublicKeyNote;\n\n #[storage]\n struct Storage<Context> {\n signing_public_key: PrivateImmutable<PublicKeyNote, Context>,\n }\n\n // Constructs the contract\n #[private]\n #[initializer]\n fn constructor(signing_pub_key_x: Field, signing_pub_key_y: Field) {\n let this = context.this_address();\n let this_keys = get_public_keys(this);\n // Not emitting outgoing for msg_sender here to not have to register keys for the contract through which we\n // deploy this (typically MultiCallEntrypoint). I think it's ok here as I feel the outgoing here is not that\n // important.\n\n let mut pub_key_note = PublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this_keys.npk_m.hash());\n storage.signing_public_key.initialize(&mut pub_key_note).emit(encode_and_encrypt_note_with_keys(&mut context, this_keys.ovpk_m, this_keys.ivpk_m, this));\n }\n\n // Note: If you globally change the entrypoint signature don't forget to update account_entrypoint.ts file\n #[private]\n #[noinitcheck]\n fn entrypoint(app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.entrypoint(app_payload, fee_payload, cancellable);\n }\n\n #[private]\n #[noinitcheck]\n #[view]\n fn verify_private_authwit(inner_hash: Field) -> Field {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.verify_private_authwit(inner_hash)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, outer_hash: Field) -> bool {\n // docs:start:is_valid_impl\n // Load public key from storage\n let storage = Storage::init(context);\n let public_key = storage.signing_public_key.get_note();\n // Load auth witness\n let witness: [Field; 64] = unsafe {\n get_auth_witness(outer_hash)\n };\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n\n // Verify signature of the payload bytes\n std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n outer_hash.to_be_bytes::<32>()\n )\n // docs:end:is_valid_impl\n }\n\n /**\n * @notice Helper function to check validity of private authwitnesses\n * @param consumer The address of the consumer of the message\n * @param message_hash The message hash of the message to check the validity\n * @return True if the message_hash can be consumed, false otherwise\n */\n unconstrained fn lookup_validity(consumer: AztecAddress, inner_hash: Field) -> pub bool {\n let public_key = storage.signing_public_key.view_note();\n\n let message_hash = compute_authwit_message_hash(consumer, context.chain_id(), context.version(), inner_hash);\n\n let witness: [Field; 64] = get_auth_witness(message_hash);\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n let valid_in_private = std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n message_hash.to_be_bytes::<32>()\n );\n\n // Compute the nullifier and check if it is spent\n // This will BLINDLY TRUST the oracle, but the oracle is us, and\n // it is not as part of execution of the contract, so we are good.\n let nullifier = compute_authwit_nullifier(context.this_address(), inner_hash);\n let siloed_nullifier = compute_siloed_nullifier(consumer, nullifier);\n let lower_wit = get_low_nullifier_membership_witness(context.block_number(), siloed_nullifier);\n let is_spent = lower_wit.leaf_preimage.nullifier == siloed_nullifier;\n\n !is_spent & valid_in_private\n }\n}\n"},"440":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/public_key_note.nr","source":"use dep::aztec::prelude::{NoteHeader, NullifiableNote, PrivateContext};\nuse dep::aztec::{\n note::utils::compute_note_hash_for_nullify, keys::getters::get_nsk_app,\n protocol_types::{constants::GENERATOR_INDEX__NOTE_NULLIFIER, hash::poseidon2_hash_with_separator},\n macros::notes::note\n};\n\n// Stores a public key composed of two fields\n// TODO: Do we need to include a nonce, in case we want to read/nullify/recreate with the same pubkey value?\n#[note]\npub struct PublicKeyNote {\n x: Field,\n y: Field,\n // We store the npk_m_hash only to get the secret key to compute the nullifier\n npk_m_hash: Field,\n}\n\nimpl NullifiableNote for PublicKeyNote {\n fn compute_nullifier(self, context: &mut PrivateContext, note_hash_for_nullify: Field) -> Field {\n let secret = context.request_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n\n unconstrained fn compute_nullifier_without_context(self) -> Field {\n let note_hash_for_nullify = compute_note_hash_for_nullify(self);\n let secret = get_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n}\n\nimpl PublicKeyNote {\n pub fn new(x: Field, y: Field, npk_m_hash: Field) -> Self {\n PublicKeyNote { x, y, npk_m_hash, header: NoteHeader::empty() }\n }\n}\n"},"58":{"path":"std/option.nr","source":"use crate::hash::{Hash, Hasher};\nuse crate::cmp::{Ordering, Ord, Eq};\nuse crate::default::Default;\n\npub struct Option<T> {\n _is_some: bool,\n _value: T,\n}\n\nimpl<T> Option<T> {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::mem::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some { self._value } else { default }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else<Env>(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n fn expect<let N: u32, MessageTypes>(self, message: fmtstr<N, MessageTypes>) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> Option<U> {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or<U, Env>(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else<U, Env1, Env2>(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then<U, Env>(self, f: fn[Env](T) -> Option<U>) -> Option<U> {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some { self } else { other }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else<Env>(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some { self } else { default() }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some { Option::none() } else { self }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter<Env>(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option<Option<T>> into a Option<T>.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option<Option<T>>) -> Option<T> {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl<T> Default for Option<T> {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl<T> Eq for Option<T> where T: Eq {\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl<T> Hash for Option<T> where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl<T> Ord for Option<T> where T: Ord {\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\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"},"7":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\n/// A `BoundedVec<T, MaxLen>` is a growable storage similar to a `Vec<T>` except that it\n/// is bounded with a maximum possible length. Unlike `Vec`, `BoundedVec` is not implemented\n/// via slices and thus is not subject to the same restrictions slices are (notably, nested\n/// slices - and thus nested vectors as well - are disallowed).\n/// \n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n/// \n/// For these reasons `BoundedVec<T, N>` should generally be preferred over `Vec<T>` when there\n/// is a reasonable maximum bound that can be placed on the vector.\n/// \n/// Example:\n/// \n/// ```noir\n/// let mut vector: BoundedVec<Field, 10> = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\npub struct BoundedVec<T, let MaxLen: u32> {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl<T, let MaxLen: u32> BoundedVec<T, MaxLen> {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec<Field, 10> = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec<Field, 10> {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec<Field, 3> = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiler can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a \n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn sum_of_first_three<let N: u32>(v: BoundedVec<u32, N>) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n /// \n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n /// \n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n /// \n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure. \n /// vec.set_unchecked(2, 42);\n /// println(vec);\n /// \n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n /// \n /// Panics if the new length of the vector will be greater than the max length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n /// \n /// v.push(1);\n /// v.push(2);\n /// \n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\n /// ```\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n /// Returns the current length of this vector\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 4> = BoundedVec::new();\n /// assert(v.len() == 0);\n /// \n /// v.push(100);\n /// assert(v.len() == 1);\n /// \n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n /// \n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n /// \n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n /// \n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n /// \n /// Note that uninitialized elements may be zeroed out!\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n /// \n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n /// \n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_array<let Len: u32>(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the given slice to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_slice(&[2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// ```noir\n /// let mut v1: BoundedVec<Field, 5> = BoundedVec::new();\n /// let mut v2: BoundedVec<Field, 7> = BoundedVec::new();\n /// \n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n /// \n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\n /// ```\n pub fn extend_from_bounded_vec<let Len: u32>(&mut self, vec: BoundedVec<T, Len>) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n /// Creates a new vector, populating it with values derived from an array input. \n /// The maximum length of the vector is determined based on the type signature.\n /// \n /// Example:\n /// \n /// ```noir\n /// let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array([1, 2, 3])\n /// ```\n pub fn from_array<let Len: u32>(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec<T, MaxLen> = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n /// \n /// Panics if the vector is empty.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n /// \n /// let two = v.pop();\n /// let one = v.pop();\n /// \n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\n /// ```\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n /// Returns true if the given predicate returns true for any element\n /// in this vector.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<u32, 3> = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n /// \n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\n /// ```\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element in this vector. \n /// \n /// Example:\n /// \n /// ```noir\n /// let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n /// \n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> BoundedVec<U, MaxLen> {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n ret\n }\n}\n\nimpl<T, let MaxLen: u32> Eq for BoundedVec<T, MaxLen> where T: Eq {\n fn eq(self, other: BoundedVec<T, MaxLen>) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n\n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nimpl<T, let MaxLen: u32, let Len: u32> From<[T; Len]> for BoundedVec<T, MaxLen> {\n fn from(array: [T; Len]) -> BoundedVec<T, MaxLen> {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec<Field, 5> = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec<Field, 5> = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec<Field, 4> = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.storage()[2], 0);\n }\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with=\"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec<Field, 2> = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n}\n"},"73":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth_witness.nr","source":"#[oracle(getAuthWitness)]\nunconstrained fn get_auth_witness_oracle<let N: u32>(_message_hash: Field) -> [Field; N] {}\n\n/**\n * Oracle wrapper to fetch an `auth_witness` for a given `message_hash` from the PXE.\n * \n * @param message_hash The hash of the message for which the `auth_witness` is to be fetched.\n * @return The `auth_witness` for the given `message_hash` as Field array.\n */\nunconstrained pub fn get_auth_witness<let N: u32>(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n"},"74":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth.nr","source":"use dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{\n GENERATOR_INDEX__AUTHWIT_INNER, GENERATOR_INDEX__AUTHWIT_OUTER, GENERATOR_INDEX__AUTHWIT_NULLIFIER,\n CANONICAL_AUTH_REGISTRY_ADDRESS\n},\n hash::poseidon2_hash_with_separator\n};\nuse dep::aztec::{context::{PrivateContext, PublicContext, gas::GasOpts}, hash::hash_args_array};\n\n/**\n * Authenticaion witness helper library\n *\n * Authentication Witness is a scheme for authenticating actions on Aztec, so users can allow third-parties\n * (e.g. protocols or other users) to execute an action on their behalf.\n *\n * This library provides helper functions to manage such witnesses.\n * The authentication witness, is some \"witness\" (data) that authenticates a `message_hash`.\n * The simplest example of an authentication witness, is a signature. The signature is the \"evidence\",\n * that the signer has seen the message, agrees with it, and has allowed it.\n * It does not need to be a signature. It could be any kind of \"proof\" that the message is allowed.\n * Another proof could be knowing some kind of secret, or having some kind of \"token\" that allows the message.\n *\n * The `message_hash` is a hash of the following structure:\n * hash(consumer, chain_id, version, inner_hash)\n * - consumer: the address of the contract that is \"consuming\" the message,\n * - chain_id: the chain id of the chain that the message is being consumed on,\n * - version: the version of the chain that the message is being consumed on,\n * - inner_hash: the hash of the \"inner\" message that is being consumed, this is the \"actual\" message or action.\n *\n * While the `inner_hash` could be anything, such as showing you signed a specific message, it will often be\n * a hash of the \"action\" to approve, along with who made the call. As part of this library, we provide a few\n * helper functions to deal with such messages.\n *\n * For example, we provide helper function that is used for checking that the message is an encoding of the current call.\n * This can be used to let some contract \"allow\" another contract to act on its behalf, as long as it can\n * show that it is acting on behalf of the contract.\n *\n * If we take a case of allowing a contract to transfer tokens on behalf of an account, the `inner_hash` can be\n * derived as:\n * inner_hash = hash(caller, \"transfer\", hash(to, amount))\n *\n * Where the `caller` would be the address of the contract that is trying to transfer the tokens, and `to` and `amount`\n * the arguments for the transfer.\n *\n * Note that we have both a `caller` and a `consumer`, the `consumer` will be the contract that is consuming the message,\n * in the case of the transfer, it would be the `Token` contract itself, while the caller, will be the actor that is\n * allowed to transfer the tokens.\n *\n *\n * The authentication mechanism works differently in public and private contexts. In private, we recall that everything\n * is executed on the user's device, so we can use `oracles` to \"ask\" the user (not contract) for information. In public\n * we cannot do this, since it is executed by the sequencer (someone else). Therefore we can instead use a \"registry\"\n * to store the messages that we have approved.\n *\n * A simple example would be a \"token\" that is being \"pulled\" from one account into another. We will first outline\n * how this would look in private, and then in public later.\n *\n * Say that a user `Alice` wants to deposit some tokens into a DeFi protocol (say a DEX).\n * `Alice` would make a `deposit` transaction, that she is executing using her account contract.\n * The account would call the `DeFi` contract to execute `deposit`, which would try to pull funds from the `Token`\n * contract. Since the `DeFi` contract is trying to pull funds from an account that is not its own, it needs to\n * convince the `Token` contract that it is allowed to do so.\n *\n * This is where the authentication witness comes in The `Token` contract computes a `message_hash` from the\n * `transfer` call, and then asks `Alice Account` contract to verify that the `DeFi` contract is allowed to\n * execute that call.\n *\n * `Alice Account` contract can then ask `Alice` if she wants to allow the `DeFi` contract to pull funds from her\n * account. If she does, she will sign the `message_hash` and return the signature to the `Alice Account` which\n * will validate it and return success to the `Token` contract which will then allow the `DeFi` contract to pull\n * funds from `Alice`.\n *\n * To ensure that the same \"approval\" cannot be used multiple times, we also compute a `nullifier` for the\n * authentication witness, and emit it from the `Token` contract (consumer).\n *\n * Note that we can do this flow as we are in private were we can do oracle calls out from contracts.\n *\n *\n * Person Contract Contract Contract\n * Alice Alice Account Token DeFi\n * | | | |\n * | Defi.deposit(Token, 1000) | |\n * |----------------->| | |\n * | | deposit(Token, 1000) |\n * | |---------------------------------------->|\n * | | | |\n * | | | transfer(Alice, Defi, 1000)\n * | | |<---------------------|\n * | | | |\n * | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | |<-----------------| |\n * | | | |\n * | Please give me AuthWit for DeFi | |\n * | calling transfer(Alice, Defi, 1000) | |\n * |<-----------------| | |\n * | | | |\n * | | | |\n * | AuthWit for transfer(Alice, Defi, 1000) |\n * |----------------->| | |\n * | | AuthWit validity | |\n * | |----------------->| |\n * | | | |\n * | | throw if invalid AuthWit |\n * | | | |\n * | | emit AuthWit nullifier |\n * | | | |\n * | | transfer(Alice, Defi, 1000) |\n * | | | |\n * | | | |\n * | | | success |\n * | | |--------------------->|\n * | | | |\n * | | | |\n * | | | deposit(Token, 1000)\n * | | | |\n * | | | |\n *\n *\n * If we instead were in public, we cannot do the same flow. Instead we would use an authentication registry to store\n * the messages that we have approved.\n *\n * To approve a message, `Alice Account` can make a `set_authorized` call to the registry, to set a `message_hash`\n * as authorized. This is essentially a mapping from `message_hash` to `true` for `Alice Contract`. Every account\n * has its own map in the registry, so `Alice` cannot approve a message for `Bob`.\n *\n * The `Token` contract can then try to \"spend\" the approval by calling `consume` on the registry. If the message\n * was approved, the value is updated to `false`, and we return the success flag. For more information on the\n * registry, see `main.nr` in `auth_registry_contract`.\n *\n * Person Contract Contract Contract Contract\n * Alice Alice Account Registry Token DeFi\n * | | | | |\n * | Registry.set_authorized(..., true) | | |\n * |----------------->| | | |\n * | | set_authorized(..., true) | |\n * | |------------------->| | |\n * | | | | |\n * | | set authorized to true | |\n * | | | | |\n * | | | | |\n * | Defi.deposit(Token, 1000) | | |\n * |----------------->| | | |\n * | | deposit(Token, 1000) | |\n * | |-------------------------------------------------------------->|\n * | | | | |\n * | | | transfer(Alice, Defi, 1000) |\n * | | | |<---------------------|\n * | | | | |\n * | | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | | |<------------------| |\n * | | | | |\n * | | throw if invalid AuthWit | |\n * | | | | |\n * | | | | |\n * | | set authorized to false | |\n * | | | | |\n * | | | | |\n * | | | AuthWit validity | |\n * | | |------------------>| |\n * | | | | |\n * | | | | transfer(Alice, Defi, 1000)\n * | | | |<-------------------->|\n * | | | | |\n * | | | | success |\n * | | | |--------------------->|\n * | | | | |\n * | | | | deposit(Token, 1000)\n * | | | | |\n *\n *\n * --- FAQ ---\n * Q: Why are we using a success flag of `poseidon2_hash_bytes(\"IS_VALID()\")` instead of just returning a boolean?\n * A: We want to make sure that we don't accidentally return `true` if there is a collision in the function selector.\n * By returning a hash of `IS_VALID()`, it becomes very unlikely that there is both a collision and we return\n * a success flag.\n *\n * Q: Why are we using static calls?\n * A: We are using static calls to ensure that the account contract cannot re-enter. If it was a normal call, it\n * could make a new call and do a re-entry attack. Using a static ensures that it cannot update any state.\n *\n * Q: Would it not be cheaper to use a nullifier instead of updating state in public?\n * A: At a quick glance, a public state update + nullifier is 96 bytes, but two state updates are 128, so it would be\n * cheaper to use a nullifier, if this is the way it would always be done. However, if both the approval and the\n * consumption is done in the same transaction, then we will be able to squash the updates (only final tx state diff is posted to DA), and now it is cheaper.\n *\n * Q: Why is the chain id and the version part of the message hash?\n * A: The chain id and the version is part of the message hash to ensure that the message is only valid on a specific\n * chain to avoid a case where the same message could be used across multiple chains.\n */\n\nglobal IS_VALID_SELECTOR = 0x47dacd73; // 4 last bytes of poseidon2_hash_bytes(\"IS_VALID()\")\n\n/**\n * Assert that `on_behalf_of` have authorized the current call with a valid authentication witness\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash([context.msg_sender().to_field(), context.selector().to_field(), context.args_hash]);\n assert_inner_hash_valid_authwit(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit\n\n/**\n * Assert that a specific `inner_hash` is valid for the `on_behalf_of` address\n *\n * Used as an internal function for `assert_current_call_valid_authwit` and can be used as a standalone function when\n * the `inner_hash` is from a different source, e.g., say a block of text etc.\n *\n * @param on_behalf_of The address that have authorized the current call\n * @param inner_hash The hash of the message to authorize\n */\npub fn assert_inner_hash_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n // We perform a static call here and not a standard one to ensure that the account contract cannot re-enter.\n let result: Field = context.static_call_private_function(\n on_behalf_of,\n comptime {\n FunctionSelector::from_signature(\"verify_private_authwit(Field)\")\n },\n [inner_hash]\n ).unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n // Compute the nullifier, similar computation to the outer hash, but without the chain_id and version.\n // Those should already be handled in the verification, so we just need something to nullify, that allow same inner_hash for multiple actors.\n let nullifier = compute_authwit_nullifier(on_behalf_of, inner_hash);\n context.push_nullifier(nullifier);\n}\n\n/**\n * Assert that `on_behalf_of` have authorized the current call in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit_public\npub fn assert_current_call_valid_authwit_public(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress\n) {\n let inner_hash = compute_inner_authwit_hash(\n [(*context).msg_sender().to_field(), (*context).selector().to_field(), (*context).get_args_hash()]\n );\n assert_inner_hash_valid_authwit_public(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n/**\n * Assert that `on_behalf_of` have authorized a speicifc `inner_hash` in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n */\npub fn assert_inner_hash_valid_authwit_public(context: &mut PublicContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n let result: Field = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"consume((Field),Field)\")\n },\n [on_behalf_of.to_field(), inner_hash].as_slice(),\n GasOpts::default()\n ).deserialize_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n\n/**\n * Compute the `message_hash` from a function call to be used by an authentication witness\n *\n * Useful for when you need a non-account contract to approve during execution. For example if you need a contract\n * to make a call to nested contract, e.g., contract A wants to exit token T to L1 using bridge B, so it needs to allow\n * B to transfer T on its behalf.\n *\n * @param caller The address of the contract that is calling the function, in the example above, this would be B\n * @param consumer The address of the contract that is consuming the message, in the example above, this would be T\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param selector The function selector of the function that is being called\n * @param args The arguments of the function that is being called\n */\n// docs:start:compute_authwit_message_hash_from_call\npub fn compute_authwit_message_hash_from_call<let N: u32>(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N]\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash = compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_authwit_message_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_authwit_message_hash_from_call\n\n/**\n * Computes the `inner_hash` of the authentication witness\n *\n * This is used internally, but also useful in cases where you want to compute the `inner_hash` for a specific message\n * that is not necessarily a call, but just some \"bytes\" or text.\n *\n * @param args The arguments to hash\n */\npub fn compute_inner_authwit_hash<let N: u32>(args: [Field; N]) -> Field {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\n/**\n * Computs the `authwit_nullifier` for a specific `on_behalf_of` and `inner_hash`\n *\n * Using the `on_behalf_of` and the `inner_hash` to ensure that the nullifier is siloed for a specific `on_behalf_of`.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n * @param inner_hash The hash of the message to authorize\n */\npub fn compute_authwit_nullifier(on_behalf_of: AztecAddress, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [on_behalf_of.to_field(), inner_hash],\n GENERATOR_INDEX__AUTHWIT_NULLIFIER\n )\n}\n\n/**\n * Computes the `message_hash` for the authentication witness\n *\n * @param consumer The address of the contract that is consuming the message\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param inner_hash The hash of the \"inner\" message that is being consumed\n */\npub fn compute_authwit_message_hash(consumer: AztecAddress, chain_id: Field, version: Field, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n consumer.to_field(),\n chain_id,\n version,\n inner_hash\n ],\n GENERATOR_INDEX__AUTHWIT_OUTER\n )\n}\n\n/**\n * Helper function to set the authorization status of a message hash\n *\n * Wraps a public call to the authentication registry to set the authorization status of a `message_hash`\n *\n * @param message_hash The hash of the message to authorize\n * @param authorize True if the message should be authorized, false if it should be revoked\n */\npub fn set_authorized(context: &mut PublicContext, message_hash: Field, authorize: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"set_authorized(Field,bool)\")\n },\n [message_hash, authorize as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n\n/**\n * Helper function to reject all authwits\n *\n * Wraps a public call to the authentication registry to set the `reject_all` flag\n *\n * @param reject True if all authwits should be rejected, false otherwise\n */\npub fn set_reject_all(context: &mut PublicContext, reject: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"set_reject_all(bool)\")\n },\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n"},"75":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/account.nr","source":"use dep::aztec::{\n context::PrivateContext,\n protocol_types::constants::{GENERATOR_INDEX__COMBINED_PAYLOAD, GENERATOR_INDEX__TX_NULLIFIER},\n hash::poseidon2_hash_with_separator\n};\n\nuse crate::entrypoint::{app::AppPayload, fee::FeePayload};\nuse crate::auth::{IS_VALID_SELECTOR, compute_authwit_message_hash};\n\npub struct AccountActions<Context> {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n}\n\nimpl<Context> AccountActions<Context> {\n pub fn init(context: Context, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions { context, is_valid_impl }\n }\n}\n\n/**\n * An implementation of the Account Action struct for the private context.\n *\n * Implements logic to verify authorization and execute payloads.\n */\nimpl AccountActions<&mut PrivateContext> {\n\n /**\n * Verifies that the `app_hash` and `fee_hash` are authorized and then executes them.\n *\n * Executes the `fee_payload` and `app_payload` in sequence.\n * Will execute the `fee_payload` as part of the setup, and then enter the app phase.\n *\n * @param app_payload The payload that contains the calls to be executed in the app phase.\n * @param fee_payload The payload that contains the calls to be executed in the setup phase.\n */\n // docs:start:entrypoint\n pub fn entrypoint(self, app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let valid_fn = self.is_valid_impl;\n\n let combined_payload_hash = poseidon2_hash_with_separator(\n [app_payload.hash(), fee_payload.hash()],\n GENERATOR_INDEX__COMBINED_PAYLOAD\n );\n assert(valid_fn(self.context, combined_payload_hash));\n\n fee_payload.execute_calls(self.context);\n self.context.end_setup();\n app_payload.execute_calls(self.context);\n if cancellable {\n let tx_nullifier = poseidon2_hash_with_separator([app_payload.nonce], GENERATOR_INDEX__TX_NULLIFIER);\n self.context.push_nullifier(tx_nullifier);\n }\n }\n // docs:end:entrypoint\n\n /**\n * Verifies that the `msg_sender` is authorized to consume `inner_hash` by the account.\n *\n * Computes the `message_hash` using the `msg_sender`, `chain_id`, `version` and `inner_hash`.\n * Then executes the `is_valid_impl` function to verify that the message is authorized.\n *\n * Will revert if the message is not authorized.\n *\n * @param inner_hash The hash of the message that the `msg_sender` is trying to consume.\n */\n // docs:start:verify_private_authwit\n pub fn verify_private_authwit(self, inner_hash: Field) -> Field {\n // The `inner_hash` is \"siloed\" with the `msg_sender` to ensure that only it can\n // consume the message.\n // This ensures that contracts cannot consume messages that are not intended for them.\n let message_hash = compute_authwit_message_hash(\n self.context.msg_sender(),\n self.context.chain_id(),\n self.context.version(),\n inner_hash\n );\n let valid_fn = self.is_valid_impl;\n assert(valid_fn(self.context, message_hash) == true, \"Message not authorized by account\");\n IS_VALID_SELECTOR\n }\n // docs:end:verify_private_authwit\n}\n"},"76":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\n\nuse crate::entrypoint::function_call::FunctionCall;\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u32 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u32 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u32 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\npub struct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize<APP_PAYLOAD_SIZE> for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, APP_PAYLOAD_SIZE> = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__SIGNATURE_PAYLOAD)\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, APP_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n\n bytes.storage\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"},"78":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/fee.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__FEE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\nuse crate::entrypoint::function_call::FunctionCall;\n\n// 2 * 5 (FUNCTION_CALL_SIZE) + 2\nglobal FEE_PAYLOAD_SIZE: u32 = 12;\n\n// 2 * 98 (FUNCTION_CALL_SIZE_IN_BYTES) + 32\nglobal FEE_PAYLOAD_SIZE_IN_BYTES: u32 = 228;\n\nglobal MAX_FEE_FUNCTION_CALLS: u32 = 2;\n\n// docs:start:fee-payload-struct\npub struct FeePayload {\n function_calls: [FunctionCall; MAX_FEE_FUNCTION_CALLS],\n nonce: Field,\n is_fee_payer: bool,\n}\n// docs:end:fee-payload-struct\n\nimpl Serialize<FEE_PAYLOAD_SIZE> for FeePayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; FEE_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, FEE_PAYLOAD_SIZE> = BoundedVec::new();\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n fields.extend_from_array(self.function_calls[i].serialize());\n }\n fields.push(self.nonce);\n fields.push(self.is_fee_payer as Field);\n fields.storage\n }\n}\n\nimpl Hash for FeePayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__FEE_PAYLOAD)\n }\n}\n\nimpl FeePayload {\n fn to_be_bytes(self) -> [u8; FEE_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, FEE_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n bytes.push(self.is_fee_payer as u8);\n\n bytes.storage\n }\n\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n if self.is_fee_payer {\n context.set_as_fee_payer();\n }\n }\n}\n"},"84":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/point_to_symmetric_key.nr","source":"use dep::protocol_types::{constants::GENERATOR_INDEX__SYMMETRIC_KEY, scalar::Scalar, point::Point, utils::arr_copy_slice};\nuse crate::utils::point::point_to_bytes;\nuse std::{hash::sha256, embedded_curve_ops::multi_scalar_mul};\n\n// TODO(#5726): This function is called deriveAESSecret in TS. I don't like point_to_symmetric_key name much since\n// point is not the only input of the function. Unify naming with TS once we have a better name.\npub fn point_to_symmetric_key(secret: Scalar, point: Point) -> [u8; 32] {\n let shared_secret: Point = multi_scalar_mul([point], [secret]);\n let shared_secret = point_to_bytes(shared_secret);\n let mut shared_secret_bytes_with_separator = [0 as u8; 33];\n shared_secret_bytes_with_separator = arr_copy_slice(shared_secret, shared_secret_bytes_with_separator, 0);\n shared_secret_bytes_with_separator[32] = GENERATOR_INDEX__SYMMETRIC_KEY;\n sha256(shared_secret_bytes_with_separator)\n}\n\n#[test]\nunconstrained fn test_point_to_symmetric_key_matches_noir() {\n // Value taken from \"derive shared secret\" test in encrypt_buffer.test.ts\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let point = Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n };\n\n let key = point_to_symmetric_key(secret, point);\n\n // The following value was generated by `encrypt_buffer.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let key_from_typescript = [\n 251, 232, 177, 34, 2, 174, 35, 92, 165, 118, 168, 3, 153, 140, 46, 210, 203, 154, 184, 158, 236, 33, 95, 77, 93, 120, 72, 88, 190, 209, 64, 159\n ];\n assert_eq(key, key_from_typescript);\n}\n"},"85":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/public_keys.nr","source":"use dep::protocol_types::{\n address::PublicKeysHash, constants::GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n hash::poseidon2_hash_with_separator, point::{Point, POINT_LENGTH},\n traits::{Deserialize, Serialize, Empty, is_empty, Hash}\n};\n\nglobal 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 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"},"87":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr","source":"use dep::protocol_types::address::AztecAddress;\nuse crate::{\n oracle::{keys::get_public_keys_and_partial_address, key_validation_request::get_key_validation_request},\n keys::{public_keys::PublicKeys, constants::{NULLIFIER_INDEX, OUTGOING_INDEX}}\n};\n\nmod test;\n\nunconstrained pub fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// A helper function that gets app-siloed outgoing viewing key for a given `ovpk_m_hash`. This function is used\n// in unconstrained contexts only - when computing unconstrained note logs. The safe alternative is `request_ovsk_app`\n// function defined on `PrivateContext`.\nunconstrained pub fn get_ovsk_app(ovpk_m_hash: Field) -> Field {\n get_key_validation_request(ovpk_m_hash, OUTGOING_INDEX).sk_app\n}\n\n// Returns all public keys for a given account, applying proper constraints to the context. We read all\n// keys at once since the constraints for reading them all are actually fewer than if we read them one at a time - any\n// read keys that are not required by the caller can simply be discarded.\npub fn get_public_keys(account: AztecAddress) -> PublicKeys {\n let (hinted_canonical_public_keys, partial_address) = unsafe {\n get_public_keys_and_partial_address(account)\n };\n assert_eq(\n account, AztecAddress::compute(hinted_canonical_public_keys.hash(), partial_address), \"Invalid public keys hint for address\"\n );\n\n hinted_canonical_public_keys\n}\n"}}}
|
|
1
|
+
{"transpiled":true,"noir_version":"0.35.0+df29d315d6b71131ffe0180c97130395edb2e4ba-x8664","name":"SchnorrAccount","functions":[{"name":"lookup_validity","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"parameters":[{"name":"consumer","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"kind":"boolean"},"visibility":"public"}},"bytecode":"H4sIAAAAAAAA/+1da2xd2VU+1/eR+DrXdtLJy7GT4yQzpQXEdWInGYlWzhR+FNH5QTWDWgkJT+xprMnEwXE6DBLIagHBX4oqIUQlHhISP6jUAuVPKxiggFSeAxQV0YpWM4g+QOI1BSSGnOQs3y/f/c4++zy27YS7Jev6nL32Wmuvtfbae6+9z96N6H4au/vXSP9vwztOBrOc/varpYUacfVD8tmokc8G8DlmzLbwBVUC/0/ynxH5vw8P35L+Xt3aWnvx1tbaary1EW+urazGt1Zub8VrN1fjjefjpzbu3FxdW3127Rri+QdgYDb9XbmPJ8Gysroav7S+dT3e+ODa5vM3Nl7Csq9B2ZPGw+bmysvx+l1KPxxv3NlKCD+XEL6NBb9etuAbFbh9s0LZZrMkw92yBefLFrzQLF/Nq2WJfl8Fou8rS/Ra2YI3K3D7obJEP1KB6C9A2fnhsi/eubG1fuvGy9kIfrEs179elfInKlT7t8py/ekKRH+3LNE/qkD0c2WJvlqB6OfLEv1iBaJfLkv0nyoQ/UZZov9egeg3yxJ9EwoeSX9v3bl93dHLtAb/l2qlk62SvJ5slRfQXFmij1cg+rayRBcqEF0qS/QdFYheLUv03RWIvqcs0WcqEH1fWaIrFYher1D2TtX2+nIF4j9aVlo/XoHoT5Ul+jMViH6yqpg/VZbrVypw/dmyRP+0AtG/LEv0CxWIfrEs0dcrEP1qWaL/WoHof5Yl+r8ViI61SxLttssTnSxL9EQFomcqlD1XluG3ly24VIHb74Syk+nve7dWrr1wt+RGvLq2dguhf6gsix+qwGKvU5Lo0bIF58oW/LZOsWruROC+Iy04nj5baCnJT0bvy+lzv1paGAe8deO/0l+8NB49mGrm/+I44AyA/4Lhb4XB3z+Q4nnX9oP4I6LbS5/RuKyM5WGk97vSvIN3/yYAR5K+G2gZvrfQeyv7ZNpOD0UDd/CBta2nbmxce+HpOy8+t7bJMWWUFL6HOedOSrAeGWB918bNrc2Va1tXV1c3127fZgxtgTnKwNoFrNdX1m++e5Wxdcphe3Zt8/b6xk3GdsATm+nqIJVXv0lqinem52nCpeylVSMd1Gyb6LRrpIN6PkB0DtRIB3Vm1jAeDVtHne3d8KNfrAu3yagrZGR0J4LUa2nBRwdIv0u81t2vNYie8cPyMZsw2R0SvJrselSf5Xp47U8L2kgL87Aeh0Q9FK7xEa5HAlenRlwj+xrhGtnXCNdu4hrZ1wjXyL5GuB5WXCP7GuEa2dcI18OKa2RfI1wj+xrhelhxjexrhGs37Gsqfca1ki7RUesKEw46WB7XY7lcI+PX6PA7pqN4nhJ15foUlRuWN7hxQae+NZ3VRcM/CXzVg/v+PohGKqv6ee8vmK6ngfcGye1wGNqLPraE9LvEa92yaBA944flw2tzRwSvJru3QF6jPl531uaQNtM6IupxRNRjt3Ape6pRJgs9wRfb8mPwvkYfsORry0a/K+QUwpYfI36y9GbyORpGPosNwo/8HBXyMV0eE3mG63j63AZcCH8U6ojw+L+Vx3dfS3+nBU7u149Fw/XBdybfpA9/jeqGumE7DaMHf59r9LtRyHYzsFNlF48JOSq7sLJ16mu3can6qz7HRdsFf7wg/AkB/5gD/mRB/DMF4U8VhJ8tCD9XEP60gFd+1ez1DORxW4/h/V70SUa/S7yGautxNCy7M0J2yXjd9hB+YG3r6Y2ttdvIN+L6K3iP+ZgMhse6k/TMY5+jwCu+P5bx/njG+xMZ709mvJ/JeH8q4/1sxvs5em95U/TcoefD9HyI8FobUHKNCJb1Yc/Ma135UUDcdedHAl6Vtfcu27Y81IWrjRm8a86DtqHm7IepHI7vec6tcCvaWI7ney6eXXVUcxjkdYrqiHStbOA58dI40asZ/5XA48sVw38sDP6d7yqOh8G/813FCcAfRfXPUbF9W9tKfo83Bu+xb8A5DpY9CvkI/0JrgHMmxanarsXlisQWsR2WjS3u/l7wxcsNohdFejy03/eC9wSv0yKP5xg9Qacn6Ixw7S9cnf8HdRzhGtnECNfIJka4RjYxwjWyiRGu3cU1sokRrpFNjHDl4RrZxAjXyCZGuPJwPap7Vnv0XAcdrA+f94IyrTH2PLRntWb8lwx/oL2al3uAk2WX/H66MXif/JVdR/loc4Dzd1KcVddRuoKXjsDVJvg/SOnjOiYmV3tSe6YNflLAI//clrE+kx64XLTVOjXi5DVZ5Gua8lAfBygPz1Syc5zG6TlJy+lvv1ha4hdh11kXrpj94z4tS5Z3UtS5IeCb9Ix8J/tv3tke4GU4pom6O0l56AtmKA/X009RHq6F2x6XKVEvtsU21ZHfsR/G8rt1jtgk1Qd5mKb6qLY16aAzLej0RLmq9VE8s87roKP2jLD91EEHbZH3faDvXU5/+5XShbX96issbwby2I5OQR7rfhbyWF9zQsZlfNMPFPBNWWOFN2isYPxkjRV6kI/wmzBW+O8UZ9hvj/aXbn31Z7JI9PcrBfSHfTj3Lco/h5X9ovfZgka/Gw37/xD7SdQ3c6rfS+Dg7NSrd7auf//61k044ZQxLsN7zMfEMPZ/1kmkvWiYa9ZgmFmKvwaNfjcKaVEDDfqOosPOshb7jWi4F29G+aOLwyLP5V0RfhrqyL0D9r7sfU+kQlG9OO/oVjtH8Z3JN/HkR9IHNULjHdFFR2hYfrdGaLvzVexiP6/XnR8bvEe9Z/W6hyAf4Z+BXvc86UqNtIPWe2Fw2q3SX9j2esHbnxn9bhTSvw78mWuWnySz18PpH/cXajd4HJFQw2zJvtC3oUlze5gJy2tBnvGRDG8+0x68ZyfuEkRgQ+m7HGHbwU+YbemL/YSPTopXhXezjID1jvxxCAidQYvqhceRL5er00V+EVaHxYf+6gB8S2qYbnwXDQGh/niYjvrkEBDql0NA6KA4BITy5VCra+CSJFcofrdCGXwcRpb9Yx7Wp+ugsxdLGLu1JHOI6ByqkY4amIU75uPC82H7sOK+gm0fwwRsRxgmYN1jmID1NSdk7OubsI+tIwT0gzQYNX6yBqN49ADCL8Fg9FqKk5cZHmXd+urPZFE0BIQ6sDqFDRKE72cnQRZF+tm2kIXqg7mfRR/K/SzqkftZdc1Kg/KsjvzOtQSy21fDqPEgjxuKLh11BZ3QS0ePan/OE/QkLae//Wrp8n71FcoXsx2hL2bdoy9mfc0JGZfxTUX6WVzmx372o9TPYlCnKcpyP2vwR6Gf/TnqZ9HuatTtzpYTPEqF642fDbNufZdhfPpgX/3Zu6L9LOrA6jQVDcv3IJVTvjvw+OdJH9+D9LvRcN8QIuil+hDVJyY2Haf/312G+d6Nl56+c+PG+vPra5vvWUtusrt9ff1WxsKM0Tgh6ss2coLoYt3xecwDrpdRVv1GkV9fgDB21JDqq/kYsKJ9NZbndoi8o9/6xJimiX4Lyx6DfIT/n7EBzt90BKubVH8lm0ak/R3rxVX/JuHC6/9csjR4FY/Aa/86jnqwn6tjnNSLhuvBfijM5/wL3sctGf1uNCyvEH7IpSOUXdjjFxZ2jgB0bfdVduE6HlbN09W2zDGCx/+tPL77HC0m1nG0b9IWPkt4sc2bTlQc8CDRLBoHxPIGF7g9LOb51FfJp1pelk/FbbMI//fgU/+GfGrDIcMG1Rvf5ckQ4fC5DfgsD/tTfM7C0yD6XMbWNSagnrh9mOfmqr1h3XsEb7bbyYDn7ckG/+WUyaztyaHnXsanWkhG/zJJ/Bv86zn8s8+JIve4jvlBeJQBbx1X61yBZbfokh3qPkt238iRnVpDxU8dktTaDlK3paTd/gXMfbhNtIFuln7V5yi++jX5qbUf3kDSEbhQ/lMEn9dW0aci/Ddz9KX6J44r5Pl117jWyqvxpqu+3Zz6HqT6dhF5lO+bAo19rrC+sH1hv5LlW1s5/Lt8vcs3qbELysA1JtmdjUT9i9wus3wTbxAy+Ikc2SnfhJ+IJKm1HaRui0V9k0tfSfL5tId9TpLURrEu5WHbdfkCsxmcN+/dJs/79oP0TBZRpPu2/bbJk/cfYFnVpzTo/6J7IHi/SpICf853wXi1dd2seDCOTxD+rKd/VLJwfZ6WdyyqwavNoXwVxH75BGC31xyKru3j5wE+aw4u34j65LGE8dXJgM/qTy569CdZuHANxGejaKBjZr19Il+9EnqjqGpvan+k+jTQyk6LPJ4TV7nOZHf2RA58om1ez9qLghvqEf4pT5+oZKFkzvwgPMsgSeYT1Ub8/bYOu9v7nYp+MlV0HdY1xkDbYZ9ofHUy4Hn+b/Dv9fSJChfuv1J7Onn/Xag9yFXb2/srtDfXGksd7a1JzwzXyMCtaGftt07+1LVXIXSExzUoHaEOEX61xFwQY3BJam0HqduCmgs+8MET0M2ziySxHakrZlhPUTTo8/BzZLYVNY6u4leyxvUbOfpS81aD7Tno4AdIStbmSwMfl++9ZsjXMYW+NkzZiut6mxOC12mR16D/1TVDJwQdhetQjbgO1IiLx4eYV2fsyHjNO9rmBOQj/Ic9+yslC5efUVdBsQySZP0Vti3e0xvGzvf/kQgoE05qfGhyKjo+VGMRlx83vrL8OI+NDP5nS4wPjwAtPqLBdDOWw4fZEeqkxja4Mx4xe2gBP6cccjH4jzUfrBde1dSMhu2Qx1uzgu4c1RXpzhLdvPWQMHJb6jP/7Yz6nsrg/5c8fZe6Ns4V71PXxqEMjDfzXegHZolXy/vVlNfEjtdaD9J7VOz443tkxx/3tAN13SDyw37O6tzJgJ8hfgz+k57tapbqtpw+9yulQbuaA/6aUb6tGvynPOWp2omrXanrFVEGxpu1K7S5OcKVp8vjGbz66tLgP+OpS7bT5fS5XykNdHka+FO6nCP+Df4VT10q3bh0qa6+RBmwLlHPpwlXni6PZfDqq0uD/2NPXSJ/IXR5BvhTujxN/Bv8n3jqUunGpcszAh5lwLpEPZ8hXHm67GXw6qvLnesmPXUZ5hrTgS5j4E/p8gzxb/B/66lLpRuXLmMBjzJgXaKeY8KVp8vDGbz66tLgv+SpyxhwhdDlPPCndBkT/wb/FU9dxvDOR5fzAj4GGNYl6nmecOXpcjKDV19dGvxXPXWJ/IXQ5VngT+lynvg3+H/21KXSjUuXZwU8yoB1GUPeWcKVp8vpDF59dWnw//GQ6/K/9okuUdZnKU+tMfr6Iz6ueqce6fwyq96KNu8/nhd8TUXD9sg8n0ufcS6L8LyX+XHICzGXPQ8iaQqavOZg8BM0R39r+h7nsucEHoN/QtB9K8CcJbpPEN28Nnc+iNwWLzVIRu2M+p4n/g1+Kod/tbY2A3VLUms7SN0uq7U1bMttoIt1jKJhW04S+4XHBTzqyeQ3HQ3b4SnCpXw8yt8nVoHwWbGKGU97Q1wh7A3tSfm6c8S/wZ/O4Z/9UhT56VLpXslzOhrWs8111VoA9+UqhoL1Zj1b+U7kF9Mx+Cc89Yz8hdAz6lHFgNgvGvzbPfWs+maM/7KeXXaBvE1HwzZg82C1HsTtWcWgsd6sZxXjmBX4OcZxwVPPYeJVAz2rMZuK57GdXvLUs4pXoc/0GbOhDIy36WjYBmyOrNbvZoiO8ttYbx89nxL4Wc/v3Cd6LhuXfKqCntFnlo1LThN88r/Nn5XfniU6Rf220rNPLP579rGeUSZZen66gp5dfjtPz+y3VZxrP/ntZ/exnl1+2+DfH8hv5+mZ/Tbqmc9Dc/lttV9lHmBYz1a+kwGP+3EQ/rkcOakzsdiW1dmqrnVlrFOzYJ2aHnVa95jzZeEqc00Xf5Nh8DdbA5xH27puWWvs/J1OmLXZQVzC7BbjA2pfEM/XPkg6NnvHuMSMwMPtD+nyehfSnSO6ZfZa4Fostzu1LovwWXs/fsTTX4bR4+oiyzPLX2b16z/mKU81zsA1oaJr7MabigHOedCuMpbNksVPeOoyzLrsQJcx8Kdkx+uyBv/TnrpUfZlLl7GARxnw2Zyov9hRjscQrroiDjW+akC+j83wvgy1/uuyGYP/iGefg/6okfFrvPI73t+LfPHZZKdFnkvvpx10sDzPPXEtAc9b+PmMfiFrTx2fTWbwp9oDnB9rPVhHtSdP7dXh+vN+NdaLq/48Hlf2dVLgcskebbfjqMdpD1wu2rGAR5x8rSXyFXvgctGeF/CI8zjRRr7mKQ/1PpHBl+/exTDxxf7QGj6Ob84KfnjN7Deo/ZwH2Sn58d7Fc4Iur9Eg3XNEd2/isoM1VhWXjYFmVlz2t0us9+D+/iS1toPUTX5Lhe2iDXSxjlE0PKdLUtHYcZz+r2LH/D2MmqvFAOOzDoDwPFcz+N/bx/am1snZ3v6wwjpAFV0ab0qXfH56DHnzREfNj1x7kK181t4Nnh8Z/J956hn5C6HnvHWAeeLf4F/11DPqlNtBkoru3XCtA/C6HuohJjpF505W3nccbPB/56nnGHCF0DPqUY2zYuLf4L/kqecY3tUx/uGYGtoAj7nVtx8uv+2KD6v5zqzAz+Pyf9zTObJ7v+tJITu2069VmCO71gFiAa9iwNPRsA24vsvzWQdw+e28fc3stw3+3/axntXciPX8RgU9u9b1YgGPMmC/HUMe332CeuB1vaLrtyp+6Vq/Nfg39zR+6f9dSVb8pdl288/yuVcmyvfbefN11/qt6xtcH7/tWr9Vep4R+FnPEzly2ks9q3bAep6qoOei67eqH1R69tl3o9bRcH2L14d2a63sZI4889bKjjfu/6/iNtxnxdFwnVy+b17USY1xeQwXe9p4mDnlIH5/DvgrEsM472njau7git/7xgfUnmsrGzhudtElO5/5+Ld62PO9+m8PcJ2GuiWptR2kbvJc1Rh4awPdLP0ifJ0xg3nC5YotK/+T11Z5fGbwl3L0pdY64vT/noMOrkGE1OvlK/djvffktD2oYzMaTi3IR/h35Mgg6TMS23mSbGcMYIyHsPdN+Z8NZO+6xGvN/OycDdQkflg+9j/fCYVl+U6oqD4++667/xqUh3Vw3Vf4MOAym3DdzTQeaZ0sp8/9amnR12aNfjcK2oYWXHJtCrma7DqC12mRx/pT5/d3BJ3dwqX0naTl9LdfMY0L2jXqr6/OFze9ue70ZT+u7knhO+APBJKR8W/norcEv0i/TfDXcvosVbemo24hxpBYt6ajboHtZYFl95Owp2GdbIHPfMM8vJNhjPLGiXfMw/2ZLcqbEOVMHr0w8nDenYD89CAf4TdLjPFR10lqbQepmxzj47e7baCLdYyigQxc3/qqs3NRTyY/dQZlm/LQfx2iPKR7kPLQt41THvoR/k5X9bVTgh7iR76xzgjfIXjTddYZ6oavTfAf9pyLNAUu19gn4eOXU8DAvu+KumvQkuWNCx7VHd08/lC+gm1c9euYeF6Eskh4fh3aDsNZ2m1fGfYenvvjiXuy2R6Wychf7S9/pXB2HDiVD8gaB7YFPTU2SdJy+tuvmNhnZs0D+c4ug/81z1gr4qrRfi/x3AhTL8r2E+wnlb9TfkL5yaL+zmRR1N81BD/KHg1uXJRL0nL626+WFlz2rngeI74CxYR2bFrNr1Gu7KvUOKMl+Ff3BltZ19xwIhrYVGc7SN0vGF3z202g39reqd4OfbO7g5BncMbreBhed+Km3RQ/xk3HgR+ryxjB8/9tevfnsKaGdUSdYL3RHpI0AXkG34R3xqPFwjuQN7FdDNdBwnWgAi7ja1rAHyjJl8LVIVzjAhe+M/kmvvoV6AuV/JqE2/huAe6OwN0m+L+Gufbnyde2Bb0E7jUHXCPj9x4O8a6Vlt0vbcn4KdqWvkJtqWjbwHbmY89tgUvZ4EHCVcQGv5DWqUs0a9bNAtoUj/0Cx54uBp5v7sRaQ90Xb/0pjh9xfv912jeB8cpm5D+OHesMcP4LjctVX+4as6vYJ499AuljUc3/eTw4Hoa299qg0e9GYW2nQfSMH9RNJHQT5u75wd0Y6j7cg4Kf5FtpFbNA/gwXjlPNtpQd8n3xRddzsDzPe33n4A3KU3NOvEee2wriMblktXdev9gZf0N7f1v6v6IXIs7O9hYozr5jb5M5MsqKs0+mcsnbh6RiQkXv/0UZGG/q7vlJyuPv/5K0G3f3NqLB2CZLrnwvncEf85Rr0TvfpwS8iqeZ7FDmU0R/gp5RB1Zuv9vv6Rw572HcdWmv464cW0U74Zgs4ua4a9HYKvpb4/VANMwr6pf7rHHAVcTnf7uHPWThwrHm/wH2xi85thMBAA==","debug_symbols":"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3C495Xdu147VLn0HsXO79P3Gzu3is/Fb2i3t3G3plxjK+eXmq/6mvFzTcqNrqivNvikrz5p9U06eNfumjDxrlu7jttyiV1qXSbNWziBW+hV1f2mW/lpx12bpryt3bZaes3s2O+ivV3dtlv7adtdm6TuoXZul76B2bdaO1Cx9B9XGcrdk/9MO6rkB+q6o63KPxvWneF8aoO90pg3Qdy/TBug7kkkDOdF3GdMG6DuHaQP03cC0AXrCTxugp/a0AXoSTxsInsQ5BU/inIIncU7Rk1iiJ7FET2KJnsQSPYlf/WCd3RuInsQSPYklehJL9CSW6Emcoydxjp7EOXoS5+hJnKMncY6exDl6EufoSZyjJ3GOnsQaPYnxJ0tNG4iexBo9ifFne00biJ7E+LO9pg1ET2L82V7TBqInMf5sr2kD0ZMYf7bXtIHoSYw/22vaQPQkxp/tNW0gehLjz/aaNhA9ifFne00biJ7E+LO9pg1ET2L82V7TBqInMf5sr2kD0ZMYf7bXtIHoSYw/22vaQPQkxp/tNW0gehLjz/aaNhA9ifFne00biJ7E+LO9pg1ET2L82V7TBqInMf60rmkD0ZMYf6LWtIHoSYw/9WraQPQkbtGTGH+S2KyBHj2Je/Qkxp/PNm0gehLjz1GbNhA9ifHnnU0biJ7E+HPJpg1ET2L8+WHTBqInMf6cr2kD0ZMYfx7XtIHoSRz9jK0c/YytHP2MrRz9jC2NfkSVRj+iSqMfUaUpeJAp/oCkHY/IV/xhSt92tricL65ZV5p9Ux9+MGkWf0jTrs2+qQ8cmjX7xj7WYizN2kqzb+xjLbabpWfnrs2+sY+12G72TX3M0KzZN7WDmjX7tnZQk2bf1g5q86NoFH+41q7Nvq0d1KTZA30wmOIP+Nq1WTtSswf6YDDFHzK2a7NvbAe13ewb20FtN3ukHRT+ULRdmz3SDgp/2NquzR5pB4U/xG3PZtcnEaTrQtTLFdDQl7LVjdfTKZbnsmyXn5HaS1V1VTVXVXdVDU/V+o3UTzO7S1W32ypxVa3/5G3Uc5WNFcLqqmququ6qGp6q9RvnpMry+6pWb6vEVZVdVeqqMldVcVVVV1VzVXVX1XBUWUquKnFVZVeVuqrMVVVcVdVVdWdt1CVUau+3Vd1VNTxVklxV4qrKrqr13/Lpp7T4MLfbquKqqq6q5qrqrqrhqVp//3paJa6q7KpSV5VrbWTX2siutZHvrA3TparceiN3V9XwVGlyVYmrKruq1FVlrqriqqquKtfaUNfaUNfasOTYi5qJq2r9J5/q5RVYqiVf6l4+0tnWz9eUVpZovn6Zujxcc1V1V9XwVK2fmSi95eUV6ZDbKnFVZVeVuqrMVVVcVdVV1VxV3VU1PFXVtTaqa21U19qorrWxfjJTTkvI5pRXqoqrqrqqmqOqrG8su54/673ruK1ZXxnpyofl9pHubPVmVeKqWl8ZIue25PSq6LZKXVXmqiququqqaq6q7qoanqo7W71ZlbiqXGtDXWtDXWtDXWtDXWtjfdO2/fy/s2VLy/vYkuS2av3E/WmVuqrMVVVcVdVjqDu7vFlVd1W5fF1cvi4uX9/Z5c2q1FV1Z22UctnN99uq4qqqrqrmquququGpurPLm1XN18ZalWttVNfaqOaqKq4qlzeqyxvV5Y3q8kZzeaO5vNFca6O51kZzrY3mWhvN9Vturt9yc/2W+zf/lv84/ev/3v/64f1PH3/+7VTz9B//9emvnz/88unln5///5/P/+V08b8B","brillig_names":["lookup_validity"]},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["private","noinitcheck"],"abi":{"error_types":{"3469988399892582431":{"error_kind":"fmtstring","item_types":[],"length":20}},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"},"visibility":"private"},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"},"visibility":"private"},{"name":"cancellable","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":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"databus"}},"bytecode":"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","debug_symbols":"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UWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlG0WhG0WhG0WhG0WhG0RZYUhvNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKDrNKDrNKDrNKDrNKPoCS2qnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGcWgGcWgGcWgGcWgGcVYYEkdNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKOYNKOYNKOYNKOYNKOYCyypk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YU83ijKOqXgsRz465NQn7f2iTremuJGzd2G5cbu+ny+sY/Wx19WpU+rWqfVq1Pq96n1ejTavZptfq0Oru0WkubaamWNtNSLW2mpVraTEu1WJ9W20xLtbSZlmppMy3V0mZaqqXPtDT6TEujz7Q0+kxLo8+0dPxOhK9rtc+0NPpMS6PPtDT6TEujz7QkfaYl6TMtSZ9pSfpMS8fvJfm6VvtMS9JnWpI+05L0mZakz7SkfaYl7TMtaZ9pSftMS8fvBvq6VvtMS9pnWtI+05L2mZYUPi3FuPxy20Lib6s3+AC0UT18ptmoHj6mbFQPnzxe7toi31Zvp64ePh9sVA9/y9+oHv4uvlE9/I15I3NO/V7rp36v9VO/1zr9vfbuq9ZP/V57/AKyXas/9Xutn/q91k/9Xuv099r71dPfa+9WH/T32vvV099r71d/6vfaOPV77fEr5Hat/tTvtUF/r707IQf9vfZ+9af+XBun/lybp36vzVO/1+ap32vz1O+1xy8B3LX6U7/X5qk/1+apP9fmqT/X5qk/19ap32vr1O+1der32jr1e+3xaxz3nJCL/l57v/pTf66tU3+urVO/19ap32vpSy03qj/1ey199eRG9ad+r6UviNyo/tSfa+lrHDeqP/XnWvqyxY3qz/xeO+krETeqP/N77aQvLrw7IU/6LsKN6unvtferP/Pn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62ybelx61VheXaRX48at51KXHufPs3d/9kzeLpsun4fy56Gs56Hc61DO56Hc6VDusgP0eSh/HsrxPJR7HUp5Hsq9DqU+D+Veh9Keh3KvQ+nPQ7nXoaR9t12077bh+1c95vWufY55458Yft5rswH4ntS/owH2b/7/jgbYv+P/Oxpg/zb/72jAzt4A/Buo7Qbg30BtNwD/Bmq7AdqvzCbsV2a5wL4hygX2DVEusG+IcoF9Q5SL0QqCfUOUC+wzUy6wz0y5wJI6F1pSD1pSD1pSD1pSD1pSD1pSD1pSD1pSD1pSD1pSD1pSCy2phZbUQktqoSW10JJaaEkttKQWWlILLamFltRKS2qlJbXSklppSa20pFZaUistqZWW1EpLaqUltdGS2mhJbbSkNlpSGy2paXsrkra3Iml7K5K2tyJpeyuStrcinZbUTktqpyW105LaaUnttKR2WlI7LamdltRBS2ra3oqk7a1I2t6KpO2tyKAlddCSOmhJHbSkDlpS0/Y4JG2PQ9L2OCRtj0PS9jgkbY9DJi2pk5bUSUvqpCV10ZK6aEldtKQuWlIXLanre10P7O51SrK+1/XANpr9XtcD22j2e10PbKPZ73U9sPvNwr3vzs02uh5Ywh3xzs02uh5Ywn3yzs12mqAm7XP0pH2OprnkpLnkornkornkornkornkWoxWEOyMZ9FcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcchUtqWnXxi3atXGraEldtKSetKSetKSetKSetKSetKSetKSmGcWiGcWiGcWiGcVJM4qTZhQnzShOmlGcCyypJ80oTppRnDSjOGlGcdKM4qQZxUkzipNmFCfNKE6aUZw0ozhpRnHSjOKkGcVJM4qTZhQnzShOmlGcNKM4aUZx0ozipBnFSTOKk2YUJ80oTppR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zSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgazSgazSgazSgazSjaAktqoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFpxlFpxlFpxlFpxlFX2BJ7TSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSjGDSjGDSjGDSjGDSjGAssqYNmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFKNoSU0zikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikkzikkzikkzikkzirnAkjppRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjEPN4qyqF7uesl6XdCtG+dcrrcuWa43H4veuP16ynT+vvl6bvBVt7+bnY2aPdxWfmmzo1Oz0qlZ7dSsdWrWOzUbnZrNTs2iJ6h1/qvrXU+btdGs/FivfLn3H9uP/nD7Xw2jp6gHNGzoSeoRDaOnqUc0jJ6oHtEweqp6RMO2Q8Prec1LVesR3PjgnZHXG9erozN/F+S0goJWUB5dUC3XcyWl8ragohU0YQXtYs/3fA7tYs93LUhoBSmtIFpSOy2pnZbUnrSCilYQLaljoRU0aAUJraCjk3q9P7/edY7XBd24Z3e5nFVZ/3fG2xk87OwN+NkbiLM3QHunCdo7TUxYQbmwn3Mxr3ftc8y3z7kcZ29Azt7AHu98EddTSrlsna16eU5LLbJx11Iu11vXy8mqunWu6sdV3H/f+MfVn16a1bhx67nUpcf589zXnz0PtssWgueh/Hko/Xko9zqU8TyUex3KfB7KvQ5lPQ/lXodynnwEqbNPsXX2KbbOPsUW/PzNdgN29gYcdkqvglYQ7TvXon3nWrQz+ZN2Jn/SzuRP2pn8qbSCjFYQLaknLaknLaknLaknLKlrgSV1LbCkrgWW1LXAkroWWFLXAkvqWmBJXQssqWuBJXUttKQetKQetKQetKQetKQetKQetKQetKQetKQetKQetKQWWlILLamFltRCS2qhJbXQklpoSS20pBZaUgstqZWW1EpLaqUltdKSWmlJrbSkVlpSKy2plZbUSktqoyW10ZLaaElttKQ2WlIbLamNltQ0b180b180b19OS2qnJbXTktppSe20pHZa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NKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKNoNKNoNKNoNKNoNKNoCyypjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUnWYUnWYUnWYUnWYUfYEltdOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMYtCMYtCMYtCMYtCMYiywpA6aUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUUyaUUyaUUyaUUyaUcwFltRJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pFM4pFM4pFM4pFM4q1wJK6aEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxDjeKsqhe7nrJel3QrRuvZ2Wvt14z6nrzseiN28eU+fvmMe1Vt7+brU7NzkbNHu42v7TZ0alZ6dSsdmrWOjXrnZqNTs2iJ6h1/qvrXU+btdGsqFdd7l1j5B9u/6th9BT1iIbRk9QDGjb0NPWIhtET1SMaRk9Vj2h4j8kqx+VRRppufPDOyOuN69XRmb8LMlpBTisoji5o/Q72+oRWeVtQ0goqWkET9hzaxZ7vWtCgFSS0gmhJ7bSkdlpSe9AKSlpBtKT2CSsoFlpBg1bQ0Um93p9f7zrH64Ju3LO7XM6qrP874+0MHnr2BuzsDfjZG6C90wTtnSaKVtBkP+diXu/a55hvn3O5nL2BcfYG9njni7ieUspl62zVy3NaapGNu5b1Q9T11vVysqpunatSj8ux0VheffegcePWc6lLj/Pnua8/ex5sly0Ez0P581Da81DudSj9eSj3OpTxPJR7Hcp8Hsq9DmWdfQQ5+xRbZ59i6+xTbMHP32w3AD9/s92AwU7pldMKon3nWrTvXIt2Jr9oZ/In7Uz+pJ3Jn0IrSGkF0ZJ60pJ60pJ60pJ60pJ6wpJ6LrCkngssqecCS+q5wJJ6LrCkngssqecCS+q5wJJ6LrCkngstqQctqQctqQctqQctqQctqQctqQctqQctqQctqQctqYWW1EJLaqEltdCSWmhJLbSkFlpSCy2phZbUQktqpSW10pJaaUmttKRWWlIrLamVltRKS2qlJbXSktpoSW20pDZaUhstqY2W1EZLapq3nzRvP2nefhotqZ2W1E5LaqcltdOS2mlJ7bSkdlpSOy2pad5+0rz9pHn7SfP2M2hJHbSkDlpSBy2pg5bUQUvqoCV10JI6aUmdtKROWlInLamTltRJS+qkJXXSkjppSZ20pC5aUhctqYuW1EVLappRnDSjOGlGcdKM4qQZxUkzipNmFCfNKE6aUZw0ozhpRnHSjOKkGcVJM4qTZhQnzCjGAjOKa0GspF4LYiX1WhArqdeCWEm9FsRK6rUgVlKvBR1+VSW9LsgSG692zdy8QEmsNV/uOipemv3EJaTWZqtTs7NRs2Pp1Ozo1Kx0apZ1pem1IKMVxLrS9FoQ60rTa0FJK6hoBU1YQbLQChq0goRWEC2phZbUQktqoSW10JJaaEkttKRWWlIrLamVltRKS2qlJbXSklppSa20pFZaUistqY2W1EZLaqMltdGS2mhJbbSkNlpSGy2pjZbURktqpyW105LaaUnttKR2WlI7LamdltROS2qnJbXTkjpoSR20pA5aUgctqYOW1EFL6qAlddCSOmhJHbSkTlpSJy2pk5bUSUvqpCV10pI6aUmdtKROWlInLamLltRFS+qiJXXRkrpoSV20pC5aUhctqYuW1EVL6klL6klL6klL6klL6klL6klL6klL6klL6klL6glL6rHAknossKQeCyypxwJL6rHAknossKQeCyypxwJL6rHAknostKQetKQetKQetKSmGcVBM4qDZhQHzSgOmlEcNKM4aEZx0IzioBnFQTOKg2YUB80oDppRHDSjOGhGcdCM4qAZxUEzioNmFAfNKA6aURw0ozhoRnHQjOKgGcVBM4qDZhQHzSgOmlEcNKM4aEZx0IzioBnFQTOKg2YUB80oDppRHDSjOGhGcdCM4qAZxUEzioNmFAfNKA6aURw0ozhoRnHQjOKgGcVBM4qDZhQHzSgOmlEcNKM4aEZx0IzioBnFQTOKg2YUB80oDppRHDSjOGhGcdCM4qAZxUEzioNmFAfNKA6aURw0ozhoRnHQjOKgGcVBM4qDZhQHzSgOmlEcNKM4aEZx0IzioBnFQTOKg2YUB80oDppRHDSjOGhGUWhGUWhGUWhGUWhGURZYUgvNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKCrNKCrNKCrNKCrNKOoCS2qlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWjGUWjGUWjGUWjGUVbYEltNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNo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SjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKRjOKRjOKRjOKRjOKtsCS2mhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WlG0WlG0WlG0WlG0RdYUjvNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKAbNKAbNKAbNKAbNKMYCS+qgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWg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Sa20pFZaUhstqY2W1EZLaqMltdGS2mhJbbSkNlpSGy2pjZbUTktqpyW105LaaUnttKR2WlI7LamdltROS2qnJXXQkjpoSR20pA5aUgctqYOW1EFL6qAlddCSOmhJnbSkTlpSJy2pk5bUSUvqpCV10pI6aUmdtKROWlIXLamLltRFS+qiJXXRkrpoSV20pC5aUhctqYuW1JOW1JOW1JOW1JOW1JOW1JOW1JOW1JOW1JOW1BOW1LLAkloWWFLLAktqWWBJLQssqWWBJbUssKSWBZbUssCSWhZaUg9aUg9aUtOMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotKMotKMotKMotKMoi6wpFaaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUTSaUTSaUTSaUTSaUbQFltRGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pOM4pOM4pOM4pOM4q+wJLaaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUYxaEYxaEYxaEYxaEYxFlhSB80oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oxuFGURbVy10vWa8LunXjnMv11iXL9eZj0Ru3jynz981j2qtufzfrnZqNTs1mp2arU7OzUbMky/r2xrqMSx266LjeWEb8Lh/0/v+Z8kHTwmfKV/IrZe21rnc9bdbGK0V0/f7zcu+6fjz5w+1/NWzdGkbPL49oGD3DPKJh+ByzTLveWhe70cD3mk1Kr2/X5fHm7fp7zSb3mz1cb39ps6NTs9KpWfSU9PFmrzePOd58njhcy39ps9/r7M5Gs9/r7M5Gs9/r7M5Gs99sgrrf7DeboO42699sgrrf7DeboO43+80mqPvNdpqgDt9i8aXNdpqgvNME5Z0mKO80QXmnCSo6TVDRaYKKThNUdJqgDt8u86XNdpqgotMEFZ0mqOg0QUWnCSo7TVDZaYLKThNUdpqgDt/69KXNdpqgstMElZ0mqOw0QWWnCao6TVDVaYKqThNUdZqgDt/G9qXNdpqgqtMEVZ0mqOo0QVWnCWp2mqBmpwlqdpqgZqcJ6vAtiV/abKcJanaaoGanCWp2mqBmowkql0YTVC6NJqhcGk1QuTSaoHKxTs02mqByaTRB5dJogsql0QSVS6cJanSaoEanCWp0mqBGpwnq8K3CX9pspwlqdJqgRqcJanSaoEanCUo6TVDSaYKSThOUdJqgvtm2741mO01Q32zb90aznSaob7bte6PZThOUdpqgtNMEpZ0mKPbe8b2btU7Ndpqg2LvG92620wT13XaS32+20wT13XaS32+20wT13XaS32+20wTVaSd5dtpJnp12kmenneTZaSd5dtpJnp12kmenneTZaSd5dtpJnp12kmenneTZaSd5dtpJnp12kmenneTZaSd5dtpJnp12kmenneTZaSd5dtpJnp12kmenneTZaSd5dtpJnp12kmenneTZaSd5dtpJnp12kmenneTZaSd5dtpJnp12kmenneTZaSd5dtpJnp12kmenneTZaSd5dtpJnp12kmenneTZaSd5dtpJnp12kmenneTZaSd5dtpJnp12kmenneTZaSd5dtpJnp12kmenneTVaSd5ddpJXp12klenneS1WKdmG01Q1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV7H7yTX8Mtd2xj3mx0esy537XPMPzT7q4E8ewPFbmB6vjRQdqOBee4G5vE7vvduYJy9AUE3EKVyueuo0M3I1XmJ3PL4m8idx+/i/spmrVOz3qlZ9uSwc7PsKePDzd6bCefC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o6g0o6g0o6g0o6hBS+qkJTXtOopKu46i0q6jqLTrKCrtOopKu46i0q6jqLTrKCrNKCrNKGrRkrpoSV20pC5aUhctqYuW1EVL6qIlNe06ikq7jqLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLRjKLRjKLRjKLRjKItsKQ2mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlF0mlF0mlF0mlF0mlH0BZbUTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKQTOKQTOKQTOKQTOKscCSOmhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhG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N2AXxP5REe2afQN2SewfFeEyG3ZR7B8V4TIbdlnsHxXhMht2YewfFeEyG3Zp7B8V0TJbcNfGFty1sQV3bWzBXRtbFlpmC+7a2IK7Nrbgro0tuGtjC+7a2IK7NrYMXGYPXGYPXGYPXGYPXGYPXGYPXGYPXGYPXGYLLrMFl9mCy2zBZbbgMltwmS24zBZcZgsuswWX2YrLbMVltuIyW3GZrbjMVlxmKy6zFZfZistsxWW24TLbcJltuMw2XGYbLrMNl9mGy2zDZbbhMttwme24zHZcZjsusx2X2Y7LbMdltuMy23GZ7bjMdlxmBy6zA5fZgcvswGV24DI7cJkduMwOXGYHLrMDl9mJy+zEZXbiMjtxmZ24zE5cZicusxOX2YnL7MRlduEyG+cgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgFecgFecgFecgFecgdaFltuIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOEcpOEcpOEcpOEcpC20zDacgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScg3Scg3Scg3Scg3Scg/SFltmOc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5CBc5CBc5CBc5CBc5Cx0DI7cA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4y9nGQs14eZG5U9OMb/cutf5zhv95ctW7eecq13Tlebm23bjzGtd0R9vrGv9u1Xu16r3b3eCubUy+3XmS5367H9cae4+XGY9Ebtxb1uhwc0Rj5h9v/biHP30Kdv4V59hZyF+L6xS2M87cg529Bz9+CHTx2yaIv/Wa9Hrtuzmh1vetps/bo2Bt1vP7Xf/3ff/3nf/7r//wv//yv/+0f//2v//ov//bjr5cf/89tOJaalwJSy1/uT+PnEazP/NH8xB/dFlJbfzQ+80fymT/Sz/yRfeaP/DN/FJ/5o888I+Qzzwj5zDNCP/OM0M88I/Qzzwj9zDNCP/OM0M88I/Qzzwj9zDNCP/OM0M88I+wz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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","enqueue_public_function_call_internal","call_private_function_internal","debug_log_oracle_wrapper","notify_set_min_revertible_side_effect_counter_oracle_wrapper","directive_invert","directive_integer_quotient"]},{"name":"verify_private_authwit","is_unconstrained":false,"custom_attributes":["private","noinitcheck","view"],"abi":{"error_types":{"3469988399892582431":{"error_kind":"fmtstring","item_types":[],"length":20}},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"databus"}},"bytecode":"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","debug_symbols":"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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","pack_returns_oracle_wrapper","directive_invert","directive_integer_quotient"]},{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{"3469988399892582431":{"error_kind":"fmtstring","item_types":[],"length":20}},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":3,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"}},"bytecode":"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","debug_symbols":"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","brillig_names":["compute_note_hash_and_optionally_a_nullifier"]},{"name":"constructor","is_unconstrained":false,"custom_attributes":["private","initializer"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"signing_pub_key_x","type":{"kind":"field"},"visibility":"private"},{"name":"signing_pub_key_y","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"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":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"databus"}},"bytecode":"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","debug_symbols":"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Lbf6ynX2WY3FlltiseWWWGy5JZYBS4WFyy2xcLklFi63xMLlllhsuRUWZ5/VWGy5JRZbbonFk8QqsbDfs8+eY+FySyxcbonFllt+5dpySyy23AqLs89qLLbcEostt8TC5ZZYBiwVFi63xMLlllhsuSUWW26JxZZbYXH2WY3Fk8QqsbDfs8+eY+FySywDlgqLLbf8yrXlllhsuSUWW26JxZZbYXH2WY2Fyy2xcLklFi63xDJgqbDYckssttwSiy23xGLLLbF4klghFi77PfvsORYut8TC5ZZYbLnFV+7lMGCpsNhySyy23BKLLbfEYsstsXC5FZb9nn32HAuXW2LhckssttwSy4ClwmLLLbHYckssniRWiYX9nn32HAuXW2HZ79lnz7HYcquvXGef1VhsuSWWAUuFxZZbYrHllli43BILl1ti4XIrLPs9++w5FltuicWWW2Kx5ZZYBiwVFk8Sq8TCfs8+e46Fyy2xcLklFltu9ZXr7LMaiy23xGLLLbHYckssA5YKC5dbYuFySyxcbomFyy2x2HIrLM4+q7HYckssttwSiyeJVWJhv2efPcfC5ZZYuNwSiy23/Mq15ZZYbLkVFmef1VhsuSUWW26JhcstsQxYKixcbomFyy2x2HJLLLbcEostt8Li7LMaiyeJVWJhv2efPcfC5ZZYBiwVFltu+ZVryy2x2HJLLLbcEostt8Li7LMaC5dbYuFySyxcbollwFJhseWWWGy5JRZbbonFllti8SSxSizs9+yz51i43BILl1tiseVWX7nOPqux2HJLLLbcEostt8Riyy2xcLkFlut+zz57joXLLbFwuSUWW26JZcBSYbHlllhsuSUWTxIrxMJ1v2efPcfC5VZY9nv22XMsttzqK9fZZzUWW26JZcBSYbHlllhsuSUWLrfEwuWWWLjcCst+zz57jsWWW2Kx5ZZYbLkllgFLhcWTxCqxsN+zz55j4XJLLFxuicWWW33lOvusxmLLLbHYckssttwSy4ClwsLllli43BILl1ti4XJLLLbcCouzz2osttwSiy23xOJJYpVY2O/ZZ8+xcLklFi63xGLLLb9ybbklFltuhcXZZzUWW26JxZZbYuFySywDlgoLl1ti4XJLLLbcEostt8Riy62wOPusxuJJYpVY2O/ZZ8+xcLkllgFLhcWWW37l2nJLLLbcEostt8Riy62wOPus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","brillig_names":["get_contract_instance_internal","get_public_keys_and_partial_address","decompose_hint","notify_created_note_oracle_wrapper","get_key_validation_request","random","lt_32_hint","lte_16_hint","build_msg_block_iter","pad_msg_block","attach_len_to_msg_block","build_msg_block_iter","emit_encrypted_note_log_oracle_wrapper","directive_integer_quotient","directive_invert"]}],"outputs":{"globals":{"notes":[{"fields":[{"kind":"integer","sign":false,"value":"00000000000000000000000000000000000000000000000000000000a74a8dc0"},{"kind":"string","value":"PublicKeyNote"},{"fields":[{"name":"x","value":{"fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000000"}},{"name":"nullable","value":{"kind":"boolean","value":false}}],"kind":"struct"}},{"name":"y","value":{"fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}},{"name":"nullable","value":{"kind":"boolean","value":false}}],"kind":"struct"}},{"name":"npk_m_hash","value":{"fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000002"}},{"name":"nullable","value":{"kind":"boolean","value":false}}],"kind":"struct"}}],"kind":"struct"}],"kind":"tuple"}],"storage":[{"fields":[{"name":"contract_name","value":{"kind":"string","value":"SchnorrAccount"}},{"name":"fields","value":{"fields":[{"name":"signing_public_key","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}}],"kind":"struct"}}],"kind":"struct"}}],"kind":"struct"}]},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"}},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"}},{"name":"cancellable","type":{"kind":"boolean"}}],"kind":"struct","path":"SchnorrAccount::entrypoint_parameters"}}],"kind":"struct","path":"SchnorrAccount::entrypoint_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"inner_hash","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::verify_private_authwit_parameters"}},{"name":"return_type","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::verify_private_authwit_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"signing_pub_key_x","type":{"kind":"field"}},{"name":"signing_pub_key_y","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::constructor_parameters"}}],"kind":"struct","path":"SchnorrAccount::constructor_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"},"109":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/unconstrained_context.nr","source":"use dep::protocol_types::{address::AztecAddress, traits::Deserialize};\nuse crate::oracle::{execution::{get_chain_id, get_version, get_contract_address, get_block_number}, storage::storage_read};\n\npub struct UnconstrainedContext {\n block_number: u32,\n contract_address: AztecAddress,\n version: Field,\n chain_id: Field,\n}\n\nimpl UnconstrainedContext {\n unconstrained fn new() -> Self {\n // We could call these oracles on the getters instead of at creation, which makes sense given that they might\n // not even be accessed. However any performance gains are minimal, and we'd rather fail early if a user\n // incorrectly attempts to create an UnconstrainedContext in an environment in which these oracles are not\n // available.\n let block_number = get_block_number();\n let contract_address = get_contract_address();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at(contract_address: AztecAddress) -> Self {\n let block_number = get_block_number();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at_historical(contract_address: AztecAddress, block_number: u32) -> Self {\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n fn block_number(self) -> u32 {\n self.block_number\n }\n\n fn this_address(self) -> AztecAddress {\n self.contract_address\n }\n\n fn version(self) -> Field {\n self.version\n }\n\n fn chain_id(self) -> Field {\n self.chain_id\n }\n\n unconstrained fn raw_storage_read<let N: u32>(self: Self, storage_slot: Field) -> [Field; N] {\n storage_read(self.this_address(), storage_slot, self.block_number())\n }\n\n unconstrained fn storage_read<T, let N: u32>(\n self,\n storage_slot: Field\n ) -> T where T: Deserialize<N> {\n T::deserialize(self.raw_storage_read(storage_slot))\n }\n}\n"},"122":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/utils/point.nr","source":"use dep::protocol_types::point::Point;\n\n// I am storing the modulus divided by 2 plus 1 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field = 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a public key to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(pk: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!pk.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = pk.x.to_be_bytes();\n\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n if !BN254_FR_MODULUS_DIV_2.lt(pk.y) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\nmod test {\n use dep::protocol_types::point::Point;\n use crate::utils::point::point_to_bytes;\n\n #[test]\n unconstrained fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122, 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115\n ];\n\n assert_eq(expected_compressed_point_positive_sign.len(), compressed_point.len());\n for i in 0..expected_compressed_point_positive_sign.len() {\n assert_eq(compressed_point[i], expected_compressed_point_positive_sign[i]);\n }\n }\n\n #[test]\n unconstrained fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169, 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181\n ];\n\n assert_eq(expected_compressed_point_negative_sign.len(), compressed_point.len());\n for i in 0..expected_compressed_point_negative_sign.len() {\n assert_eq(compressed_point[i], expected_compressed_point_negative_sign[i]);\n }\n }\n}\n"},"124":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/initializer.nr","source":"use dep::protocol_types::{\n address::AztecAddress, hash::poseidon2_hash_with_separator, constants::GENERATOR_INDEX__CONSTRUCTOR,\n abis::function_selector::FunctionSelector\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext}, oracle::get_contract_instance::get_contract_instance,\n oracle::get_contract_instance::get_contract_instance_avm\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n context.push_nullifier_read_request(init_nullifier);\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let instance = get_contract_instance_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn compute_initialization_hash(init_selector: FunctionSelector, init_args_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR\n )\n}\n"},"125":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr","source":"use crate::context::{PrivateContext, PublicContext};\nuse crate::note::{\n note_header::NoteHeader, note_interface::{NoteInterface, NullifiableNote},\n utils::{compute_note_hash_for_read_request, compute_note_hash_for_nullify_internal},\n note_emission::NoteEmission\n};\nuse crate::oracle::notes::{notify_created_note, notify_nullified_note};\n\npub fn create_note<Note, let N: u32>(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note\n) -> NoteEmission<Note> where Note: NoteInterface<N> + NullifiableNote {\n let contract_address = (*context).this_address();\n let note_hash_counter = context.side_effect_counter;\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n let serialized_note = Note::serialize_content(*note);\n notify_created_note(\n storage_slot,\n Note::get_note_type_id(),\n serialized_note,\n note_hash,\n note_hash_counter\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(*note)\n}\n\npub fn create_note_hash_from_public<Note, let N: u32>(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note\n) where Note: NoteInterface<N> + NullifiableNote {\n let contract_address = (*context).this_address();\n // Public note hashes are transient, but have no side effect counters, so we just need note_hash_counter != 0\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter: 1 };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n context.push_note_hash(note_hash);\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note<Note, let N: u32>(\n context: &mut PrivateContext,\n note: Note\n) where Note: NoteInterface<N> + NullifiableNote {\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n\n destroy_note_unsafe(context, note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe<Note, let N: u32>(\n context: &mut PrivateContext,\n note: Note,\n note_hash_for_read_request: Field\n) where Note: NoteInterface<N> + NullifiableNote {\n let note_hash_for_nullify = compute_note_hash_for_nullify_internal(note, note_hash_for_read_request);\n let nullifier = note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash_counter = note.get_header().note_hash_counter;\n let notification_note_hash = if (note_hash_counter == 0) {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifyng so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n let nullifier_counter = context.side_effect_counter;\n notify_nullified_note(nullifier, notification_note_hash, nullifier_counter);\n\n context.push_nullifier_for_note_hash(nullifier, notification_note_hash)\n}\n"},"126":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/note_emission.nr","source":"/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\npub struct NoteEmission<Note> {\n note: Note\n}\n\nimpl<Note> NoteEmission<Note> {\n pub fn new(note: Note) -> Self {\n Self { note }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option<T>`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting\n * a change note in a token's transfer function only when there is \"change\" left).\n */\npub struct OuterNoteEmission<Note> {\n emission: Option<NoteEmission<Note>>,\n}\n\nimpl<Note> OuterNoteEmission<Note> {\n pub fn new(emission: Option<NoteEmission<Note>>) -> Self {\n Self { emission }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](NoteEmission<Note>) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n"},"135":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/utils.nr","source":"use crate::{\n context::PrivateContext,\n note::{note_header::NoteHeader, note_interface::{NullifiableNote, NoteInterface}}\n};\n\nuse dep::protocol_types::{\n hash::{\n compute_unique_note_hash, compute_siloed_note_hash as compute_siloed_note_hash,\n compute_siloed_nullifier as compute_siloed_nullifier_from_preimage\n},\n utils::arr_copy_slice\n};\n\npub fn compute_siloed_nullifier<Note, let N: u32>(\n note_with_header: Note,\n context: &mut PrivateContext\n) -> Field where Note: NoteInterface<N> + NullifiableNote {\n let header = note_with_header.get_header();\n let note_hash_for_nullify = compute_note_hash_for_nullify(note_with_header);\n let inner_nullifier = note_with_header.compute_nullifier(context, note_hash_for_nullify);\n\n compute_siloed_nullifier_from_preimage(header.contract_address, inner_nullifier)\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_read_request<Note, let N: u32>(note: Note) -> Field where Note: NoteInterface<N> + NullifiableNote {\n let note_hash = note.compute_note_hash();\n let nonce = note.get_header().nonce;\n let counter = note.get_header().note_hash_counter;\n\n if counter != 0 {\n note_hash\n } else {\n compute_unique_note_hash(nonce, note_hash)\n }\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_nullify_internal<Note, let N: u32>(\n note: Note,\n note_hash_for_read_request: Field\n) -> Field where Note: NoteInterface<N> + NullifiableNote {\n let header = note.get_header();\n\n if header.note_hash_counter != 0 {\n if header.nonce == 0 {\n // Case 1: Transient note\n note_hash_for_read_request\n } else {\n // Case 2: Non-revertible note, nullified by a revertible nullifier\n let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash_for_read_request);\n compute_siloed_note_hash(header.contract_address, unique_note_hash)\n }\n } else {\n // Case 3: Note from a previous transaction\n // note_hash_for_read_request is already the unique_note_hash in this case\n compute_siloed_note_hash(header.contract_address, note_hash_for_read_request)\n }\n}\n\n// TODO(#7775): nuke this commented out code - kept it around as it contains comments which might be helpful when tackling #7775\n// pub fn compute_note_hash_for_nullify<Note, let N: u32, let M: u32>(note: Note) -> Field where Note: NoteInterface<N> {\n// let header = note.get_header();\n// // There are 3 cases for reading a note intended for consumption:\n// // 1. The note was inserted in this transaction, is revertible, or is not nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce == 0)\n// // 2. The note was inserted in this transaction, is non-revertible, and is nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce != 0)\n// // 3. The note was inserted in a previous transaction: (note_hash_counter == 0) & (nonce != 0)\n\n// let note_hash = note.compute_note_hiding_point().x;\n\n// if header.nonce == 0 {\n// // Case 1.\n// // If a note is transient, we just read the note_hash (kernel will hash it with nonce and silo by contract address).\n// note_hash\n// } else {\n// // Case 2: If a note is non-revertible, and is nullified by a revertible nullifier, we cannot squash them in the\n// // private reset circuit. Because if the tx reverts, we will have to keep the note hash and throw away the\n// // nullifier.\n// // And if the tx does not revert, both will be emitted. In which case, the nullifier must be created in the app\n// // from the siloed note hash.\n// // The kernel circuit will check that a nullifier with non-zero note_nonce is linked to a note hash, whose\n// // siloed note hash matches the note hash specified in the nullifier.\n\n// // Case 3: If a note is not from the current transaction, that means we are reading a settled note (from\n// // tree) created in a previous TX. So we need the siloed_note_hash which has already been hashed with\n// // nonce and then contract address. This hash will match the existing leaf in the note hash\n// // tree, so the kernel can just perform a membership check directly on this hash/leaf.\n// let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash);\n// compute_siloed_note_hash(header.contract_address, unique_note_hash)\n// // IMPORTANT NOTE ON REDUNDANT SILOING BY CONTRACT ADDRESS: The note hash computed above is\n// // \"siloed\" by contract address. When a note hash is computed solely for the purpose of\n// // nullification, it is not strictly necessary to silo the note hash before computing\n// // its nullifier. In other words, it is NOT NECESSARY for protocol security that a nullifier\n// // be computed from a siloed note hash. After all, persistable note hashes and nullifiers are\n// // siloed by the kernel circuit. That being said, the siloed note hash computed above CAN be\n// // used for nullifier computation, and this achieves the (arguably unnecessary) property that\n// // nullifiers are computed from a note hash's fully-computed note hash tree leaf.\n// }\n// }\n\npub fn compute_note_hash_for_nullify<Note, let N: u32>(note: Note) -> Field where Note: NoteInterface<N> + NullifiableNote {\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request)\n}\n\npub unconstrained fn compute_note_hash_and_optionally_a_nullifier<T, let N: u32, let S: u32>(\n deserialize_content: fn([Field; N]) -> T,\n note_header: NoteHeader,\n compute_nullifier: bool,\n serialized_note: [Field; S]\n) -> [Field; 4] where T: NoteInterface<N> + NullifiableNote {\n let mut note = deserialize_content(arr_copy_slice(serialized_note, [0; N], 0));\n note.set_header(note_header);\n\n let note_hash = note.compute_note_hash();\n let unique_note_hash = compute_unique_note_hash(note_header.nonce, note_hash);\n let siloed_note_hash = compute_siloed_note_hash(note_header.contract_address, unique_note_hash);\n\n let inner_nullifier = if compute_nullifier {\n note.compute_nullifier_without_context()\n } else {\n 0\n };\n // docs:start:compute_note_hash_and_optionally_a_nullifier_returns\n [note_hash, unique_note_hash, siloed_note_hash, inner_nullifier]\n // docs:end:compute_note_hash_and_optionally_a_nullifier_returns\n}\n"},"136":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/note_getter/mod.nr","source":"use dep::protocol_types::{constants::{MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, GET_NOTES_ORACLE_RETURN_LENGTH}};\nuse crate::context::PrivateContext;\nuse crate::note::{\n constants::{GET_NOTE_ORACLE_RETURN_LENGTH, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, Select, Sort, SortOrder, NoteStatus, PropertySelector},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request\n};\nuse crate::oracle;\nuse crate::utils::comparison::compare;\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\n\nmod test;\n\nfn extract_property_value_from_selector<let N: u32>(\n serialized_note: [Field; N],\n selector: PropertySelector\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the serialized note.\n // This allows easier packing and custom (de)serialization schemas. A note property is located\n // inside the serialized note using the index inside the array, a byte offset and a length.\n let value: [u8; 32] = serialized_note[selector.index].to_be_bytes();\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[31 + offset - i] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_note_header<Note, let N: u32>(\n context: PrivateContext,\n storage_slot: Field,\n note: Note\n) where Note: NoteInterface<N> {\n let header = note.get_header();\n let contract_address = context.this_address();\n assert(header.contract_address.eq(contract_address), \"Mismatch note header contract address.\");\n assert(header.storage_slot == storage_slot, \"Mismatch note header storage slot.\");\n}\n\nfn check_note_fields<let N: u32>(\n serialized_note: [Field; N],\n selects: BoundedVec<Option<Select>, N>\n) {\n for i in 0..selects.len {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field = extract_property_value_from_selector(serialized_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()), \"Mismatch return note field.\"\n );\n }\n}\n\nfn check_notes_order<let N: u32>(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec<Option<Sort>, N>\n) {\n for i in 0..sorts.len {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note<Note, let N: u32>(\n context: &mut PrivateContext,\n storage_slot: Field\n) -> (Note, Field) where Note: NoteInterface<N> + NullifiableNote {\n let note = unsafe {\n get_note_internal(storage_slot)\n };\n\n // Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do is check that\n // the metadata is correct, and that the note exists.\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (note, note_hash_for_read_request)\n}\n\npub fn get_notes<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>) where Note: NoteInterface<N> + NullifiableNote + Eq {\n let opt_notes = unsafe {\n get_notes_internal(storage_slot, options)\n };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor<Note, PREPROCESSOR_ARGS>(\n notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PREPROCESSOR_ARGS) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PREPROCESSOR_ARGS\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>) where Note: NoteInterface<N> + NullifiableNote + Eq {\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the contents of the notes (as opposed to simply removing some),\n // the private kernel will later validate that these note actually exist, so transformations would cause for that\n // check to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = crate::utils::collapse_array(filtered_notes);\n let mut note_hashes: BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL> = BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_fields = [0; N];\n for i in 0..options.limit {\n if i < notes.len() {\n let note = notes.get_unchecked(i);\n let fields = note.serialize_content();\n check_note_header(*context, storage_slot, note);\n check_note_fields(fields, options.selects);\n if i != 0 {\n check_notes_order(prev_fields, fields, options.sorts);\n }\n prev_fields = fields;\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1410): test to ensure\n // failure if malicious oracle injects 0 nonce here for a \"pre-existing\" note.\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal<Note, let N: u32>(storage_slot: Field) -> Note where Note: NoteInterface<N> {\n let placeholder_note = [Option::none()];\n let placeholder_fields = [0; GET_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n placeholder_note,\n placeholder_fields,\n placeholder_note_length\n )[0].expect(f\"Failed to get a note\") // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] where Note: NoteInterface<N> {\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\npub unconstrained fn view_notes<Note, let N: u32>(\n storage_slot: Field,\n options: NoteViewerOptions<Note, N>\n) -> BoundedVec<Note, MAX_NOTES_PER_PAGE> where Note: NoteInterface<N> {\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTES_PER_PAGE];\n let placeholder_fields = [0; VIEW_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let notes_array = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n );\n\n let mut notes = BoundedVec::new();\n for i in 0..notes_array.len() {\n if notes_array[i].is_some() {\n notes.push(notes_array[i].unwrap_unchecked());\n }\n }\n\n notes\n}\n\nunconstrained fn flatten_options<let N: u32>(\n selects: BoundedVec<Option<Select>, N>,\n sorts: BoundedVec<Option<Sort>, N>\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects] = select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects] = select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects] = select.unwrap_unchecked().property_selector.length;\n select_values[num_selects] = select.unwrap_unchecked().value;\n select_comparators[num_selects] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order\n )\n}\n"},"138":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/point_to_symmetric_key.nr","source":"use dep::protocol_types::{constants::GENERATOR_INDEX__SYMMETRIC_KEY, scalar::Scalar, point::Point, utils::arr_copy_slice};\nuse crate::utils::point::point_to_bytes;\nuse std::{hash::sha256, embedded_curve_ops::multi_scalar_mul};\n\n// TODO(#5726): This function is called deriveAESSecret in TS. I don't like point_to_symmetric_key name much since\n// point is not the only input of the function. Unify naming with TS once we have a better name.\npub fn point_to_symmetric_key(secret: Scalar, point: Point) -> [u8; 32] {\n let shared_secret: Point = multi_scalar_mul([point], [secret]);\n let shared_secret = point_to_bytes(shared_secret);\n let mut shared_secret_bytes_with_separator = [0 as u8; 33];\n shared_secret_bytes_with_separator = arr_copy_slice(shared_secret, shared_secret_bytes_with_separator, 0);\n shared_secret_bytes_with_separator[32] = GENERATOR_INDEX__SYMMETRIC_KEY;\n sha256(shared_secret_bytes_with_separator)\n}\n\n#[test]\nunconstrained fn test_point_to_symmetric_key_matches_noir() {\n // Value taken from \"derive shared secret\" test in encrypt_buffer.test.ts\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let point = Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n };\n\n let key = point_to_symmetric_key(secret, point);\n\n // The following value was generated by `encrypt_buffer.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let key_from_typescript = [\n 251, 232, 177, 34, 2, 174, 35, 92, 165, 118, 168, 3, 153, 140, 46, 210, 203, 154, 184, 158, 236, 33, 95, 77, 93, 120, 72, 88, 190, 209, 64, 159\n ];\n assert_eq(key, key_from_typescript);\n}\n"},"139":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr","source":"use dep::protocol_types::{address::AztecAddress, public_keys::PublicKeys};\nuse crate::{\n oracle::{keys::get_public_keys_and_partial_address, key_validation_request::get_key_validation_request},\n keys::{constants::{NULLIFIER_INDEX, OUTGOING_INDEX}}\n};\n\nmod test;\n\npub unconstrained fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// A helper function that gets app-siloed outgoing viewing key for a given `ovpk_m_hash`. This function is used\n// in unconstrained contexts only - when computing unconstrained note logs. The safe alternative is `request_ovsk_app`\n// function defined on `PrivateContext`.\npub unconstrained fn get_ovsk_app(ovpk_m_hash: Field) -> Field {\n get_key_validation_request(ovpk_m_hash, OUTGOING_INDEX).sk_app\n}\n\n// Returns all public keys for a given account, applying proper constraints to the context. We read all\n// keys at once since the constraints for reading them all are actually fewer than if we read them one at a time - any\n// read keys that are not required by the caller can simply be discarded.\npub fn get_public_keys(account: AztecAddress) -> PublicKeys {\n let (hinted_canonical_public_keys, partial_address) = unsafe {\n get_public_keys_and_partial_address(account)\n };\n assert_eq(\n account, AztecAddress::compute(hinted_canonical_public_keys.hash(), partial_address), \"Invalid public keys hint for address\"\n );\n\n hinted_canonical_public_keys\n}\n"},"143":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_nullifier_membership_witness.nr","source":"use dep::protocol_types::{\n abis::nullifier_leaf_preimage::{NullifierLeafPreimage, NULLIFIER_LEAF_PREIMAGE_LENGTH},\n constants::NULLIFIER_TREE_HEIGHT, utils::arr_copy_slice\n};\n\n// INDEX_LENGTH + NULLIFIER_LEAF_PREIMAGE_LENGTH + NULLIFIER_TREE_HEIGHT\nglobal NULLIFIER_MEMBERSHIP_WITNESS: u32 = 24;\n\npub struct NullifierMembershipWitness {\n index: Field,\n leaf_preimage: NullifierLeafPreimage,\n path: [Field; NULLIFIER_TREE_HEIGHT],\n}\n\nimpl NullifierMembershipWitness {\n pub fn deserialize(fields: [Field; NULLIFIER_MEMBERSHIP_WITNESS]) -> Self {\n let leaf_preimage_fields = arr_copy_slice(fields, [0; NULLIFIER_LEAF_PREIMAGE_LENGTH], 1);\n Self {\n index: fields[0],\n leaf_preimage: NullifierLeafPreimage::deserialize(leaf_preimage_fields),\n path: arr_copy_slice(\n fields,\n [0; NULLIFIER_TREE_HEIGHT],\n 1 + NULLIFIER_LEAF_PREIMAGE_LENGTH\n )\n }\n }\n}\n\n#[oracle(getLowNullifierMembershipWitness)]\nunconstrained fn get_low_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\npub unconstrained fn get_low_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_low_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n\n#[oracle(getNullifierMembershipWitness)]\nunconstrained fn get_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\npub unconstrained fn get_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n"},"144":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/keys.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, PartialAddress}, public_keys::{PublicKeys, NpkM, IvpkM, OvpkM, TpkM},\n point::Point\n};\n\n#[oracle(getPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\npub unconstrained fn get_public_keys_and_partial_address(address: AztecAddress) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle(address);\n\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x: result[3], y: result[4], is_infinite: result[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x: result[6], y: result[7], is_infinite: result[8] as bool } },\n tpk_m: TpkM { inner: Point { x: result[9], y: result[10], is_infinite: result[11] as bool } }\n };\n\n let partial_address = PartialAddress::from_field(result[12]);\n\n (keys, partial_address)\n}\n"},"146":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr","source":"use dep::protocol_types::{abis::{function_selector::FunctionSelector}, address::AztecAddress};\n\n#[oracle(enqueuePublicFunctionCall)]\nunconstrained fn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> Field {}\n\npub unconstrained fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> Field {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nunconstrained fn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> Field {}\n\npub unconstrained fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> Field {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\npub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n unsafe {\n notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter)\n };\n}\n\npub unconstrained fn notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n"},"148":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr","source":"use dep::protocol_types::abis::validation_requests::{KeyValidationRequest, key_validation_request::KEY_VALIDATION_REQUEST_LENGTH};\n\n#[oracle(getKeyValidationRequest)]\nunconstrained fn get_key_validation_request_oracle(\n _pk_m_hash: Field,\n _key_index: Field\n) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {}\n\nunconstrained fn get_key_validation_request_internal(\n npk_m_hash: Field,\n key_index: Field\n) -> KeyValidationRequest {\n let result = get_key_validation_request_oracle(npk_m_hash, key_index);\n KeyValidationRequest::deserialize(result)\n}\n\npub unconstrained fn get_key_validation_request(\n pk_m_hash: Field,\n key_index: Field\n) -> KeyValidationRequest {\n get_key_validation_request_internal(pk_m_hash, key_index)\n}\n"},"149":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/random.nr","source":"/// Returns an unconstrained random value. Note that it is not possible to constrain this value to prove that it is\n/// truly random: we assume that the oracle is cooperating and returning random values.\n/// In some applications this behavior might not be acceptable and other techniques might be more suitable, such as\n/// producing pseudo-random values by hashing values outside of user control (like block hashes) or secrets.\npub unconstrained fn random() -> Field {\n rand_oracle()\n}\n\n#[oracle(getRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n"},"151":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/notes.nr","source":"use crate::note::{note_header::NoteHeader, note_interface::NoteInterface};\n\nuse dep::protocol_types::{address::AztecAddress, utils::arr_copy_slice};\n\n/// Notifies the simulator that a note has been created, so that it can be returned in future read requests in the same\n/// transaction. This note should only be added to the non-volatile database if found in an actual block.\npub fn notify_created_note<let N: u32>(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\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 notify_created_note_oracle_wrapper(storage_slot, note_type_id, serialized_note, note_hash, counter)\n };\n}\n\n/// Notifies the simulator that a note has been nullified, so that it is no longer returned in future read requests in\n/// the same transaction. This note should only be removed to the non-volatile database if its nullifier is found in an\n/// actual block.\npub fn notify_nullified_note(nullifier: Field, note_hash: Field, 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 notify_nullified_note_oracle_wrapper(nullifier, note_hash, counter)\n };\n}\n\nunconstrained fn notify_created_note_oracle_wrapper<let N: u32>(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32\n) {\n let _ = notify_created_note_oracle(storage_slot, note_type_id, serialized_note, note_hash, counter);\n}\n\n#[oracle(notifyCreatedNote)]\nunconstrained fn notify_created_note_oracle<let N: u32>(\n _storage_slot: Field,\n _note_type_id: Field,\n _serialized_note: [Field; N],\n _note_hash: Field,\n _counter: u32\n) -> Field {}\n\nunconstrained fn notify_nullified_note_oracle_wrapper(\n nullifier: Field,\n note_hash: Field,\n counter: u32\n) {\n let _ = notify_nullified_note_oracle(nullifier, note_hash, counter);\n}\n\n#[oracle(notifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(_nullifier: Field, _note_hash: Field, _counter: u32) -> Field {}\n\n#[oracle(getNotes)]\nunconstrained fn get_notes_oracle<let N: u32, let S: u32>(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; N],\n _select_by_offsets: [u8; N],\n _select_by_lengths: [u8; N],\n _select_values: [Field; N],\n _select_comparators: [u8; N],\n _sort_by_indexes: [u8; N],\n _sort_by_offsets: [u8; N],\n _sort_by_lengths: [u8; N],\n _sort_order: [u8; N],\n _limit: u32,\n _offset: u32,\n _status: u8,\n _return_size: u32,\n _placeholder_fields: [Field; S]\n) -> [Field; S] {}\n\nunconstrained fn get_notes_oracle_wrapper<let N: u32, let S: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; N],\n select_by_offsets: [u8; N],\n select_by_lengths: [u8; N],\n select_values: [Field; N],\n select_comparators: [u8; N],\n sort_by_indexes: [u8; N],\n sort_by_offsets: [u8; N],\n sort_by_lengths: [u8; N],\n sort_order: [u8; N],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_fields: [Field; S]\n) -> [Field; S] {\n let return_size = placeholder_fields.len() as u32;\n get_notes_oracle(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n return_size,\n placeholder_fields\n )\n}\n\npub unconstrained fn get_notes<Note, let N: u32, let M: u32, let S: u32, let NS: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_opt_notes: [Option<Note>; S], // TODO: Remove it and use `limit` to initialize the note array.\n placeholder_fields: [Field; NS], // TODO: Remove it and use `limit` to initialize the note array.\n _placeholder_note_length: [Field; N] // Turbofish hack? Compiler breaks calculating read_offset unless we add this parameter\n) -> [Option<Note>; S] where Note: NoteInterface<N> {\n let fields = get_notes_oracle_wrapper(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n placeholder_fields\n );\n let num_notes = fields[0] as u32;\n let contract_address = AztecAddress::from_field(fields[1]);\n for i in 0..placeholder_opt_notes.len() {\n if i < num_notes {\n // lengths named as per typescript.\n let return_header_length: u32 = 2; // num_notes & contract_address.\n let extra_preimage_length: u32 = 2; // nonce & note_hash_counter.\n let read_offset: u32 = return_header_length + i * (N + extra_preimage_length);\n let nonce = fields[read_offset];\n let note_hash_counter = fields[read_offset + 1] as u32;\n let header = NoteHeader { contract_address, nonce, storage_slot, note_hash_counter };\n let serialized_note = arr_copy_slice(fields, [0; N], read_offset + 2);\n let mut note = Note::deserialize_content(serialized_note);\n note.set_header(header);\n placeholder_opt_notes[i] = Option::some(note);\n };\n }\n placeholder_opt_notes\n}\n\n/// Returns true if the nullifier exists. Note that a `true` value can be constrained by proving existence of the\n/// nullifier, but a `false` value should not be relied upon since other transactions may emit this nullifier before the\n/// current transaction is included in a block. While this might seem of little use at first, certain design patterns\n/// benefit from this abstraction (see e.g. `PrivateMutable`).\npub unconstrained fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier) == 1\n}\n\n#[oracle(checkNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> Field {}\n"},"153":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr","source":"use dep::protocol_types::{\n address::AztecAddress, contract_instance::ContractInstance, constants::CONTRACT_INSTANCE_LENGTH,\n utils::reader::Reader\n};\n\n#[oracle(getContractInstance)]\nunconstrained fn get_contract_instance_oracle(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {}\n\n// Returns a ContractInstance plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstance)]\nunconstrained fn get_contract_instance_oracle_avm(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {}\n\nunconstrained fn get_contract_instance_internal(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n get_contract_instance_oracle(address)\n}\n\npub unconstrained fn get_contract_instance_internal_avm(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {\n get_contract_instance_oracle_avm(address)\n}\n\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n let instance = unsafe {\n ContractInstance::deserialize(get_contract_instance_internal(address))\n };\n // The to_address function combines all values in the instance object to produce an address, so by checking that we\n // get the expected address we validate the entire struct.\n assert_eq(instance.to_address(), address);\n\n instance\n}\n\npub fn get_contract_instance_avm(address: AztecAddress) -> Option<ContractInstance> {\n let mut reader = Reader::new(get_contract_instance_internal_avm(address));\n let found = reader.read();\n if found == 0 {\n Option::none()\n } else {\n Option::some(reader.read_struct(ContractInstance::deserialize))\n }\n}\n"},"155":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; 2] {}\n\npub unconstrained fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n"},"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"},"158":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/execution.nr","source":"use dep::protocol_types::address::AztecAddress;\n\n#[oracle(getContractAddress)]\nunconstrained fn get_contract_address_oracle() -> AztecAddress {}\n\n#[oracle(getBlockNumber)]\nunconstrained fn get_block_number_oracle() -> u32 {}\n\n#[oracle(getChainId)]\nunconstrained fn get_chain_id_oracle() -> Field {}\n\n#[oracle(getVersion)]\nunconstrained fn get_version_oracle() -> Field {}\n\npub unconstrained fn get_contract_address() -> AztecAddress {\n get_contract_address_oracle()\n}\n\npub unconstrained fn get_block_number() -> u32 {\n get_block_number_oracle()\n}\n\npub unconstrained fn get_chain_id() -> Field {\n get_chain_id_oracle()\n}\n\npub unconstrained fn get_version() -> Field {\n get_version_oracle()\n}\n"},"159":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/returns.nr","source":"/// Notifies the simulator that `returns` will be later fetched once the function return is processed, referenced by\n/// their hash. This allows the simulator to know how to respond to this future request.\n///\n/// This is only used during private execution, since in public it is the VM itself that keeps track of return values.\npub fn pack_returns(returns: [Field]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call. When\n // unpacking however the caller must check that the returned value is indeed the preimage.\n unsafe {\n pack_returns_oracle_wrapper(returns)\n };\n}\n\npub unconstrained fn pack_returns_oracle_wrapper(returns: [Field]) {\n let _ = pack_returns_oracle(returns);\n}\n\npub unconstrained fn unpack_returns<let N: u32>(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n\n#[oracle(packReturns)]\nunconstrained fn pack_returns_oracle(_returns: [Field]) -> Field {}\n\n#[oracle(unpackReturns)]\nunconstrained fn unpack_returns_oracle<let N: u32>(_return_hash: Field) -> [Field; N] {}\n"},"162":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/payload.nr","source":"use dep::protocol_types::{\n address::AztecAddress, scalar::Scalar, point::Point, public_keys::{OvpkM, IvpkM},\n constants::GENERATOR_INDEX__SYMMETRIC_KEY, hash::poseidon2_hash_with_separator\n};\nuse std::{\n aes128::aes128_encrypt, embedded_curve_ops::fixed_base_scalar_mul as derive_public_key,\n hash::from_field_unsafe as fr_to_fq_unsafe, field::bn254::decompose\n};\n\nuse crate::{\n oracle::random::random, utils::point::point_to_bytes, encrypted_logs::{header::EncryptedLogHeader},\n keys::{point_to_symmetric_key::point_to_symmetric_key}\n};\n\npub fn compute_encrypted_log<let P: u32, let M: u32>(\n contract_address: AztecAddress,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n plaintext: [u8; P]\n) -> [u8; M] {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ivpk);\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, ivpk);\n let outgoing_body_ciphertext: [u8; 144] = compute_outgoing_body_ciphertext(recipient, ivpk, fr_to_fq(ovsk_app), eph_sk, eph_pk);\n\n let mut encrypted_bytes: [u8; M] = [0; M];\n // @todo We ignore the tags for now\n\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[64 + i] = eph_pk_bytes[i];\n }\n for i in 0..48 {\n encrypted_bytes[96 + i] = incoming_header_ciphertext[i];\n encrypted_bytes[144 + i] = outgoing_header_ciphertext[i];\n }\n for i in 0..144 {\n encrypted_bytes[192 + i] = outgoing_body_ciphertext[i];\n }\n // Then we fill in the rest as the incoming body ciphertext\n let size = M - 336;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[336 + i] = incoming_body_ciphertext[i];\n }\n\n // Current unoptimized size of the encrypted log\n // incoming_tag (32 bytes)\n // outgoing_tag (32 bytes)\n // eph_pk (32 bytes)\n // incoming_header (48 bytes)\n // outgoing_header (48 bytes)\n // outgoing_body (144 bytes)\n // incoming_body_fixed (64 bytes)\n // incoming_body_variable (P + 16 bytes padding)\n encrypted_bytes\n}\n\n/// Converts a base field element to scalar field element.\n/// This is fine because modulus of the base field is smaller than the modulus of the scalar field.\nfn fr_to_fq(r: Field) -> Scalar {\n let (lo, hi) = decompose(r);\n\n Scalar { lo, hi }\n}\n\nfn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n\n // We use the randomness to preserve the privacy of both the sender and recipient via encryption, so a malicious\n // sender could use non-random values to reveal the plaintext. But they already know it themselves anyway, and so\n // the recipient already trusts them to not disclose this information. We can therefore assume that the sender will\n // cooperate in the random value generation.\n let randomness = unsafe {\n random()\n };\n\n // We use the unsafe version of `fr_to_fq` because multi_scalar_mul (called by derive_public_key) will constrain\n // the scalars.\n let eph_sk = fr_to_fq_unsafe(randomness);\n let eph_pk = derive_public_key(eph_sk);\n\n (eph_sk, eph_pk)\n}\n\npub fn compute_incoming_body_ciphertext<let P: u32>(plaintext: [u8; P], eph_sk: Scalar, ivpk: IvpkM) -> [u8] {\n let full_key = point_to_symmetric_key(eph_sk, ivpk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(plaintext, iv, sym_key)\n}\n\n/// Encrypts ephemeral secret key and recipient's ivpk --> with this information the recipient of outgoing will\n/// be able to derive the key with which the incoming log can be decrypted.\npub fn compute_outgoing_body_ciphertext(\n recipient: AztecAddress,\n recipient_ivpk: IvpkM,\n ovsk_app: Scalar,\n eph_sk: Scalar,\n eph_pk: Point\n) -> [u8; 144] {\n // Again, we could compute `eph_pk` here, but we keep the interface more similar\n // and also make it easier to optimise it later as we just pass it along\n\n let mut buffer = [0 as u8; 128];\n\n let serialized_eph_sk_high: [u8; 32] = eph_sk.hi.to_be_bytes();\n let serialized_eph_sk_low: [u8; 32] = eph_sk.lo.to_be_bytes();\n\n let address_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let serialized_recipient_ivpk = point_to_bytes(recipient_ivpk.to_point());\n\n for i in 0..32 {\n buffer[i] = serialized_eph_sk_high[i];\n buffer[i + 32] = serialized_eph_sk_low[i];\n buffer[i + 64] = address_bytes[i];\n }\n for i in 0..32 {\n buffer[i + 96] = serialized_recipient_ivpk[i];\n }\n\n // We compute the symmetric key using poseidon.\n let full_key: [u8; 32] = poseidon2_hash_with_separator(\n [ovsk_app.hi, ovsk_app.lo, eph_pk.x, eph_pk.y],\n GENERATOR_INDEX__SYMMETRIC_KEY as Field\n ).to_be_bytes();\n\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(buffer, iv, sym_key).as_array()\n}\n\nmod test {\n use crate::{encrypted_logs::payload::{compute_encrypted_log, compute_incoming_body_ciphertext, compute_outgoing_body_ciphertext}};\n use std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\n use dep::protocol_types::{address::AztecAddress, public_keys::{OvpkM, IvpkM}, point::Point, scalar::Scalar};\n use std::test::OracleMock;\n\n #[test]\n unconstrained fn test_encrypted_log_matches_typescript() {\n // All the values in this test were copied over from `tagged_log.test.ts`\n let contract_address = AztecAddress::from_field(0x10f48cd9eff7ae5b209c557c70de2e657ee79166868676b787e9417e19260e04);\n let ovsk_app = 0x03a6513d6def49f41d20373d2cec894c23e7492794b08fc50c0e8a1bd2512612;\n let ovpk_m = OvpkM {\n inner: Point {\n x: 0x1961448682803198631f299340e4206bb12809d4bebbf012b30f59af73ba1a15,\n y: 0x133674060c3925142aceb4f1dcd9f9137d0217d37ff8729ee5ceaa6e2790353d,\n is_infinite: false\n }\n };\n let ivpk_m = IvpkM {\n inner: Point {\n x: 0x260cd3904f6df16e974c29944fdc839e40fb5cf293f03df2eb370851d3a527bc,\n y: 0x0eef2964fe6640e84c82b5d2915892409b38e9e25d39f68dd79edb725c55387f,\n is_infinite: false\n }\n };\n\n let plaintext = [\n 0, 0, 0, 1, 48, 22, 64, 206, 234, 117, 131, 145, 178, 225, 97, 201, 44, 5, 19, 241, 41, 2, 15, 65, 37, 37, 106, 253, 174, 38, 70, 206, 49, 9, 159, 92, 16, 244, 140, 217, 239, 247, 174, 91, 32, 156, 85, 124, 112, 222, 46, 101, 126, 231, 145, 102, 134, 134, 118, 183, 135, 233, 65, 126, 25, 38, 14, 4, 15, 228, 107, 229, 131, 183, 31, 74, 181, 183, 12, 38, 87, 255, 29, 5, 204, 207, 29, 41, 42, 147, 105, 98, 141, 26, 25, 79, 148, 78, 101, 153, 0, 0, 16, 39\n ];\n\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk);\n\n let recipient = AztecAddress::from_field(0x10ee41ee4b62703b16f61e03cb0d88c4b306a9eb4a6ceeb2aff13428541689a2);\n\n let log: [u8; 448] = compute_encrypted_log(contract_address, ovsk_app, ovpk_m, ivpk_m, recipient, plaintext);\n\n // The following value was generated by `tagged_log.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let encrypted_log_from_typescript = [\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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 70, 12, 14, 67, 77, 132, 110, 193, 234, 40, 110, 64, 144, 235, 86, 55, 111, 242, 123, 221, 193, 170, 202, 225, 216, 86, 84, 159, 112, 31, 167, 126, 79, 51, 186, 47, 71, 253, 172, 99, 112, 241, 59, 197, 241, 107, 186, 232, 87, 187, 230, 171, 62, 228, 234, 42, 51, 145, 146, 238, 242, 42, 71, 206, 13, 244, 66, 111, 195, 20, 203, 98, 148, 204, 242, 145, 183, 156, 29, 141, 54, 44, 220, 194, 35, 229, 16, 32, 204, 211, 49, 142, 112, 82, 202, 116, 241, 254, 146, 42, 217, 20, 189, 70, 228, 182, 171, 205, 104, 27, 99, 171, 28, 91, 244, 21, 30, 130, 240, 5, 72, 174, 124, 97, 197, 157, 248, 193, 23, 193, 76, 46, 141, 144, 70, 211, 45, 67, 167, 218, 129, 140, 104, 190, 41, 110, 249, 209, 68, 106, 135, 164, 80, 235, 63, 101, 80, 32, 13, 38, 99, 145, 91, 11, 173, 151, 231, 247, 65, 153, 117, 229, 167, 64, 239, 182, 126, 235, 83, 4, 169, 8, 8, 160, 4, 235, 252, 21, 96, 84, 161, 69, 145, 145, 215, 254, 161, 117, 246, 198, 65, 89, 179, 194, 90, 19, 121, 12, 202, 114, 80, 195, 14, 60, 128, 105, 142, 100, 86, 90, 108, 157, 219, 22, 172, 20, 121, 195, 25, 159, 236, 2, 70, 75, 42, 37, 34, 2, 17, 149, 20, 176, 32, 18, 204, 56, 117, 121, 34, 15, 3, 88, 123, 64, 68, 74, 233, 63, 59, 131, 222, 194, 192, 167, 110, 217, 10, 128, 73, 129, 172, 61, 43, 12, 98, 165, 203, 191, 154, 161, 150, 4, 239, 95, 48, 60, 159, 33, 222, 142, 102, 73, 193, 236, 145, 197, 160, 216, 254, 113, 243, 25, 244, 251, 192, 222, 35, 7, 114, 101, 35, 152, 151, 112, 24, 32, 94, 138, 71, 160, 91, 68, 131, 217, 117, 140, 19, 147, 37, 197, 192, 21, 43, 172, 239, 239, 205, 15, 110, 76, 26, 211, 42, 117, 4, 15, 135, 145, 247, 37, 73, 84, 164, 149, 250, 35, 0, 205, 105, 178, 143, 104, 98, 100, 250, 193, 154, 136, 175, 177, 109, 225, 207, 252, 147, 250, 250, 189, 117, 147, 101, 230, 132\n ];\n assert_eq(encrypted_log_from_typescript, log);\n }\n\n #[test]\n fn test_incoming_body_ciphertext_matches_typescript() {\n // All the values in this test were copied over from `encrypted_note_log_incoming_body.test.ts`\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let ivpk = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n let plaintext = [\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, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3\n ];\n\n // `compute_incoming_body_ciphertext(...)` function then derives symmetric key from `eph_sk` and `ivpk` and encrypts\n // the note plaintext using AES-128.\n let ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, ivpk);\n\n // The following value was generated by `encrypted_note_log_incoming_body.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let note_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160, 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157, 131, 149, 96, 236, 253, 96, 172, 157, 30, 27, 176, 228, 74, 242, 190, 138, 48, 33, 93, 46, 37, 223, 130, 25, 245, 188, 163, 159, 223, 187, 24, 139, 206, 131, 154, 159, 130, 37, 17, 158, 114, 242, 141, 124, 193, 232, 54, 146, 96, 145, 100, 125, 234, 57, 43, 95, 115, 183, 39, 121, 232, 134, 229, 148, 25, 46, 77, 87, 127, 95, 7, 77, 188, 37, 234, 245, 142, 232, 87, 252, 28, 67, 67, 90, 214, 254, 89, 47, 68, 66, 187, 227, 8, 59, 162, 25, 141, 97, 141, 217, 197, 115, 15, 212, 202, 157, 41, 150, 62, 219, 57, 224, 92, 185, 212, 142, 94, 146, 41, 178, 145, 68, 169, 23, 185, 206, 138, 70, 47, 176, 210, 165, 236, 23, 206, 229, 108\n ];\n\n assert_eq(note_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..note_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], note_body_ciphertext_from_typescript[i]);\n }\n }\n\n #[test]\n fn test_encrypted_log_outgoing_body_matches_typescript() {\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000d0d302ee245dfaf2807e604eec4715fe,\n hi: 0x000000000000000000000000000000000f096b423017226a18461115fa8d34bb\n };\n let recipient_ivsk = Scalar {\n lo: 0x000000000000000000000000000000004828f8f95676ebb481df163f87fd4022,\n hi: 0x000000000000000000000000000000000f4d97c25d578f9348251a71ca17ae31\n };\n let sender_ovsk_app = Scalar {\n lo: 0x0000000000000000000000000000000074d2e28c6bc5176ac02cf7c7d36a444e,\n hi: 0x00000000000000000000000000000000089c6887cb1446d86c64e81afc78048b\n };\n\n let eph_pk = derive_public_key(eph_sk);\n let recipient_ivpk = IvpkM { inner: derive_public_key(recipient_ivsk) };\n\n let recipient = AztecAddress::from_field(0xdeadbeef);\n\n let ciphertext = compute_outgoing_body_ciphertext(recipient, recipient_ivpk, sender_ovsk_app, eph_sk, eph_pk);\n\n // The following value was generated by `encrypted_log_outgoing_body.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let outgoing_body_ciphertext_from_typescript = [\n 127, 182, 227, 75, 192, 197, 54, 47, 168, 134, 233, 148, 251, 46, 86, 12, 73, 50, 238, 50, 31, 174, 27, 202, 110, 77, 161, 197, 244, 124, 17, 100, 143, 150, 232, 14, 156, 248, 43, 177, 16, 82, 244, 103, 88, 74, 84, 200, 15, 65, 187, 14, 163, 60, 91, 22, 104, 31, 211, 190, 124, 121, 79, 92, 239, 65, 185, 106, 51, 178, 168, 137, 84, 43, 79, 158, 151, 152, 83, 42, 170, 13, 106, 209, 254, 74, 39, 145, 73, 215, 17, 234, 196, 89, 30, 58, 120, 127, 88, 69, 121, 61, 18, 206, 89, 118, 243, 238, 177, 71, 73, 47, 147, 4, 155, 25, 173, 248, 206, 52, 17, 180, 122, 186, 106, 191, 252, 102, 197, 91, 16, 39, 94, 91, 224, 30, 168, 177, 26, 144, 5, 124, 128, 6\n ];\n\n for i in 0..outgoing_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], outgoing_body_ciphertext_from_typescript[i]);\n }\n assert_eq(outgoing_body_ciphertext_from_typescript.len(), ciphertext.len());\n }\n}\n"},"163":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/encrypted_note_emission.nr","source":"use crate::{\n context::PrivateContext, note::{note_emission::NoteEmission, note_interface::NoteInterface},\n keys::getters::get_ovsk_app, encrypted_logs::payload::compute_encrypted_log\n};\nuse dep::protocol_types::{\n address::AztecAddress, public_keys::{PublicKeys, OvpkM, IvpkM}, hash::sha256_to_field,\n abis::note_hash::NoteHash\n};\n\nfn compute_raw_note_log<Note, let N: u32>(\n context: PrivateContext,\n note: Note,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> (u32, [u8; 416 + N * 32], Field) where Note: NoteInterface<N> {\n let note_header = note.get_header();\n let note_hash_counter = note_header.note_hash_counter;\n let storage_slot = note_header.storage_slot;\n\n // TODO(#8589): use typesystem to skip this check when not needed\n let note_exists = context.note_hashes.storage.any(|n: NoteHash| n.counter == note_hash_counter);\n assert(note_exists, \"Can only emit a note log for an existing note.\");\n\n let contract_address: AztecAddress = context.this_address();\n\n let plaintext = note.to_be_bytes(storage_slot);\n let encrypted_log: [u8; 416 + N * 32] = compute_encrypted_log(contract_address, ovsk_app, ovpk, ivpk, recipient, plaintext);\n let log_hash = sha256_to_field(encrypted_log);\n\n (note_hash_counter, encrypted_log, log_hash)\n}\n\nunconstrained fn compute_raw_note_log_unconstrained<Note, let N: u32>(\n context: PrivateContext,\n note: Note,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> (u32, [u8; 416 + N * 32], Field) where Note: NoteInterface<N> {\n let ovsk_app = get_ovsk_app(ovpk.hash());\n compute_raw_note_log(context, note, ovsk_app, ovpk, ivpk, recipient)\n}\n\n// This function seems to be affected by the following Noir bug:\n// https://github.com/noir-lang/noir/issues/5771\n// If you get weird behavior it might be because of it.\npub fn encode_and_encrypt_note<Note, let N: u32>(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N> {\n | e: NoteEmission<Note> | {\n let ovsk_app: Field = context.request_ovsk_app(ovpk.hash());\n\n let (note_hash_counter, encrypted_log, log_hash) = compute_raw_note_log(*context, e.note, ovsk_app, ovpk, ivpk, recipient);\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\npub fn encode_and_encrypt_note_unconstrained<Note, let N: u32>(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N> {\n | e: NoteEmission<Note> | {\n // Having the log hash be unconstrained here is fine because the way this works is we send the log hash\n // to the kernel, and it gets included as part of its public inputs. Then we send the tx to the sequencer,\n // which includes the kernel proof and the log preimages. The sequencer computes the hashes of the logs\n // and checks that they are the ones in the public inputs of the kernel, and drops the tx otherwise (proposing\n // the block on L1 would later fail if it didn't because of txs effects hash mismatch).\n // So if we don't constrain the log hash, then a malicious sender can compute the correct log, submit a bad\n // log hash to the kernel, and then submit the bad log preimage to the sequencer. All checks will pass, but\n // the submitted log will not be the one that was computed by the app.\n // In the unconstrained case, we don't care about the log at all because we don't do anything with it,\n // and because it's unconstrained: it could be anything. So if a sender chooses to broadcast the tx with a log\n // that is different from the one that was used in the circuit, then they'll be able to, but they were already\n // able to change the log before anyway, so the end result is the same. It's important here that we do not\n // return the log from this function to the app, otherwise it could try to do stuff with it and then that might\n // be wrong.\n // Regarding the note hash counter, this is used for squashing. The kernel assumes that a given note can have\n // more than one log and removes all of the matching ones, so all a malicious sender could do is either: cause\n // for the log to be deleted when it shouldn't have (which is fine - they can already make the content be\n // whatever), or cause for the log to not be deleted when it should have (which is also fine - it'll be a log\n // for a note that doesn't exist).\n let (note_hash_counter, encrypted_log, log_hash) = unsafe {\n compute_raw_note_log_unconstrained(*context, e.note, ovpk, ivpk, recipient)\n };\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\n/// Encrypts a partial log and emits it. Takes recipient keys on the input and encrypts both the outgoing and incoming\n/// logs for the recipient. This is necessary because in the partial notes flow the outgoing always has to be the same\n/// as the incoming to not leak any information (typically the `from` party finalizing the partial note in public does\n/// not know who the recipient is).\npub fn encrypt_and_emit_partial_log<let M: u32>(\n context: &mut PrivateContext,\n log_plaintext: [u8; M],\n recipient_keys: PublicKeys,\n recipient: AztecAddress\n) {\n let ovsk_app: Field = context.request_ovsk_app(recipient_keys.ovpk_m.hash());\n\n let encrypted_log: [u8; 352 + M] = compute_encrypted_log(\n context.this_address(),\n ovsk_app,\n recipient_keys.ovpk_m,\n recipient_keys.ivpk_m,\n recipient,\n log_plaintext\n );\n let log_hash = sha256_to_field(encrypted_log);\n\n // Unfortunately we need to push a dummy note hash to the context here because a note log requires having\n // a counter that corresponds to a note hash in the same call.\n let note_hash_counter = context.side_effect_counter;\n context.push_note_hash(5);\n\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n}\n"},"166":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/header.nr","source":"use dep::protocol_types::{address::AztecAddress, public_keys::{PublicKeys, IvpkM, ToPoint}, scalar::Scalar, point::Point};\n\nuse crate::keys::point_to_symmetric_key::point_to_symmetric_key;\n\nuse std::aes128::aes128_encrypt;\n\npub struct EncryptedLogHeader {\n address: AztecAddress,\n}\n\nimpl EncryptedLogHeader {\n fn new(address: AztecAddress) -> Self {\n EncryptedLogHeader { address }\n }\n\n fn compute_ciphertext<T>(self, secret: Scalar, pk: T) -> [u8; 48] where T: ToPoint {\n let full_key = point_to_symmetric_key(secret, pk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n\n let input: [u8; 32] = self.address.to_field().to_be_bytes();\n aes128_encrypt(input, iv, sym_key).as_array()\n }\n}\n\n#[test]\nunconstrained fn test_encrypted_log_header_matches_noir() {\n let address = AztecAddress::from_field(0xdeadbeef);\n let header = EncryptedLogHeader::new(address);\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let point = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n let ciphertext = header.compute_ciphertext(secret, point);\n\n // The following value was generated by `encrypted_log_header.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_header_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 194, 44, 7, 131, 160, 83, 64, 181, 98, 38, 153, 214, 62, 171, 253, 161, 111, 191, 28, 247, 216, 26, 222, 171, 176, 218, 48, 209, 73, 89, 200, 209\n ];\n\n assert_eq(ciphertext, expected_header_ciphertext_from_typescript);\n}\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"},"227":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/mod.nr","source":"// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate { lhs } else { rhs }\n}\n\npub fn arr_copy_slice<T, let N: u32, let M: u32>(src: [T; N], mut dst: [T; M], offset: u32) -> [T; M] {\n let iterator_len = if N > M { M } else { N };\n for i in 0..iterator_len {\n dst[i] = src[i + offset];\n }\n dst\n}\n"},"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"},"246":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"pub struct Reader<let N: u32> {\n data: [Field; N],\n offset: u32,\n}\n\nimpl<let N: u32> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array<let K: u32>(&mut self, mut result: [Field; K]) -> [Field; K] {\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n // TODO(#4394)\n pub fn read_struct<T, let K: u32>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array<T, let K: u32, let C: u32>(&mut self, deserialise: fn([Field; K]) -> T, mut result: [T; C]) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n"},"25":{"path":"std/field/bn254.nr","source":"use 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\nfn compute_lt(x: Field, y: Field, num_bytes: u32) -> 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..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i];\n let y_byte = y_bytes[num_bytes - 1 - i];\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\nfn compute_lte(x: Field, y: Field, num_bytes: u32) -> bool {\n if x == y {\n true\n } else {\n compute_lt(x, y, num_bytes)\n }\n}\n\nunconstrained fn lt_32_hint(x: Field, y: Field) -> bool {\n compute_lt(x, y, 32)\n}\n\nunconstrained fn lte_16_hint(x: Field, y: Field) -> bool {\n compute_lte(x, y, 16)\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_16_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(compute_lt(b, a, 32));\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 compute_lt(b, a, 32)\n } else if a == b {\n false\n } else {\n // Take a hint of the comparison and verify it\n unsafe {\n if lt_32_hint(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::{decompose, compute_lt, assert_gt, gt, TWO_POW_128, compute_lte, PLO, PHI};\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 fn check_compute_lt() {\n assert(compute_lt(0, 1, 16));\n assert(compute_lt(0, 0x100, 16));\n assert(compute_lt(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lt(0, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_compute_lte() {\n assert(compute_lte(0, 1, 16));\n assert(compute_lte(0, 0x100, 16));\n assert(compute_lte(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lte(0, TWO_POW_128, 16));\n\n assert(compute_lte(0, 0, 16));\n assert(compute_lte(0x100, 0x100, 16));\n assert(compute_lte(TWO_POW_128 - 1, TWO_POW_128 - 1, 16));\n assert(compute_lte(TWO_POW_128, TWO_POW_128, 16));\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"},"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"},"260":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/point.nr","source":"pub use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{traits::{Deserialize, Empty, Hash, Serialize}, hash::poseidon2_hash};\n\nglobal POINT_LENGTH: u32 = 3;\n\nimpl Serialize<POINT_LENGTH> for Point {\n fn serialize(self: Self) -> [Field; POINT_LENGTH] {\n [self.x, self.y, self.is_infinite as Field]\n }\n}\n\nimpl Hash for Point {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl Empty for Point {\n /// Note: Does not return a valid point on curve - instead represents an empty/\"unpopulated\" point struct (e.g.\n /// empty/unpopulated value in an array of points).\n fn empty() -> Self {\n Point { x: 0, y: 0, is_infinite: false }\n }\n}\n\nimpl Deserialize<POINT_LENGTH> for Point {\n fn deserialize(serialized: [Field; POINT_LENGTH]) -> Point {\n Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool }\n }\n}\n"},"288":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier_leaf_preimage.nr","source":"global NULLIFIER_LEAF_PREIMAGE_LENGTH: u32 = 3;\n\nuse crate::{\n abis::{read_request::ScopedReadRequest, side_effect::Readable}, hash::compute_siloed_nullifier,\n merkle_tree::leaf_preimage::{LeafPreimage, IndexedTreeLeafPreimage}, traits::{Empty, Hash}\n};\n\npub struct NullifierLeafPreimage {\n nullifier : Field,\n next_nullifier :Field,\n next_index : u32,\n}\n\nimpl Empty for NullifierLeafPreimage {\n fn empty() -> Self {\n Self { nullifier: 0, next_nullifier: 0, next_index: 0 }\n }\n}\n\nimpl Hash for NullifierLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n crate::hash::poseidon2_hash(self.serialize())\n }\n }\n}\n\nimpl LeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl IndexedTreeLeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn get_next_key(self) -> Field {\n self.next_nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl Readable<ScopedReadRequest> for NullifierLeafPreimage {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n let siloed_value = compute_siloed_nullifier(read_request.contract_address, read_request.value());\n assert_eq(self.nullifier, siloed_value, \"Value of the nullifier leaf does not match read request\");\n }\n}\n\nimpl NullifierLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.nullifier == 0) & (self.next_nullifier == 0) & (self.next_index == 0)\n }\n\n pub fn serialize(self) -> [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH] {\n [self.nullifier, self.next_nullifier, self.next_index as Field]\n }\n\n pub fn deserialize(fields: [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH]) -> Self {\n Self { nullifier: fields[0], next_nullifier: fields[1], next_index: fields[2] as u32 }\n }\n}\n\nimpl Eq for NullifierLeafPreimage {\n fn eq(self, other: Self) -> bool {\n (self.nullifier == other.nullifier)\n & (self.next_nullifier == other.next_nullifier)\n & (self.next_index == other.next_index)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = NullifierLeafPreimage::empty();\n let serialized = item.serialize();\n let deserialized = NullifierLeafPreimage::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"29":{"path":"std/hash/mod.nr","source":"pub mod poseidon;\npub mod mimc;\npub mod poseidon2;\npub mod keccak;\npub mod sha256;\npub mod sha512;\n\nuse crate::default::Default;\nuse crate::uint128::U128;\nuse crate::collections::vec::Vec;\nuse crate::embedded_curve_ops::{EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_slice};\nuse crate::meta::derive_via;\n\n// Kept for backwards compatibility\npub use sha256::{digest, sha256, sha256_compression, sha256_var};\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment<let N: u32>(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator<let N: u32>(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash<let N: u32>(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {\n let mut scalars: Vec<EmbeddedCurveScalar> = Vec::from_slice([EmbeddedCurveScalar { lo: 0, hi: 0 }; N].as_slice()); //Vec::new();\n\n for i in 0..N {\n scalars.set(i, from_field_unsafe(input[i]));\n }\n scalars.push(EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field });\n let domain_generators :[EmbeddedCurvePoint; N]= derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n let mut vec_generators = Vec::new();\n for i in 0..N {\n vec_generators.push(domain_generators[i]);\n }\n let length_generator : [EmbeddedCurvePoint; 1] = derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n vec_generators.push(length_generator[0]);\n multi_scalar_mul_slice(vec_generators.slice, scalars.slice)[0]\n}\n\n#[field(bn254)]\npub fn derive_generators<let N: u32, let M: u32>(domain_separator_bytes: [u8; M], starting_index: u32) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators<let N: u32, let M: u32>(domain_separator_bytes: [u8; M], starting_index: u32) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n let (xlo, xhi) = unsafe {\n crate::field::bn254::decompose_hint(scalar)\n };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n// docs:start:keccak256\npub fn keccak256<let N: u32>(input: [u8; N], message_size: u32) -> [u8; 32]\n// docs:end:keccak256\n{\n crate::hash::keccak::keccak256(input, message_size)\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation<let N: u32>(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: StructDefinition) -> Quoted {\n let name = quote { Hash };\n let signature = quote { fn hash<H>(_self: Self, _state: &mut H) where H: std::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(s, name, signature, for_each_field, quote {}, |fields| fields)\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher<H> where H: Hasher {\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault<H>;\n\nimpl<H> BuildHasher<H> for BuildHasherDefault<H>\nwhere\n H: Hasher + Default {\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl<H> Default for BuildHasherDefault<H>\nwhere\n H: Hasher + Default {\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash<H>(_self: Self, _state: &mut H) where H: Hasher {}\n}\n\nimpl Hash for U128 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self.lo as Field);\n H::write(state, self.hi as Field);\n }\n}\n\nimpl<T, let N: u32> Hash for [T; N] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<T> Hash for [T] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<A, B> Hash for (A, B) where A: Hash, B: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl<A, B, C> Hash for (A, B, C) where A: Hash, B: Hash, C: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl<A, B, C, D> Hash for (A, B, C, D) where A: Hash, B: Hash, C: Hash, D: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl<A, B, C, D, E> Hash for (A, B, C, D, E) where A: Hash, B: Hash, C: Hash, D: Hash, E: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1), 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1), EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false\n }\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2), 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2), EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3), 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3), EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4), 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4), EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5), 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5), EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6), 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6), EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7), 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7), EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false\n }\n );\n}\n"},"3":{"path":"std/array/mod.nr","source":"use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl<T, let N: u32> [T; N] {\n /// Returns the length of this array.\n /// \n /// ```noir\n /// fn len(self) -> Field\n /// ```\n /// \n /// example\n /// \n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n /// \n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n /// \n /// Example:\n /// \n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> [U; N] {\n let first_elem = f(self[0]);\n let mut ret = [first_elem; N];\n\n for i in 1..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n /// \n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n /// \n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n /// \n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n /// \n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold<U, Env>(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce<Env>(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n}\n\nimpl<T, let N: u32> [T; N] where T: Ord + Eq {\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a: T, b: T| a <= b)\n }\n}\n\nimpl<T, let N: u32> [T; N] where T: Eq {\n /// Returns a new sorted array by sorting it with a custom comparison function. \n /// The original array remains untouched. \n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n /// \n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n /// \n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via<Env>(self, ordering: fn[Env](T, T) -> bool) -> Self {\n unsafe {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = quicksort::quicksort(self, ordering);\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]), \"Array has not been sorted correctly according to `ordering`.\"\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n }\n}\n\nimpl<let N: u32> [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str<N> {}\n}\n\nimpl<let N: u32> From<str<N>> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str<N>) -> Self {\n s.as_bytes()\n }\n}\n"},"318":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use crate::{traits::{Empty, Serialize, Deserialize}, point::Point};\npub use crate::constants::KEY_VALIDATION_REQUEST_LENGTH;\n\npub struct KeyValidationRequest {\n pk_m: Point,\n sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m)) & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest { pk_m: Point::empty(), sk_app: 0 }\n }\n}\n\nimpl Serialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [\n self.pk_m.x,\n self.pk_m.y,\n self.pk_m.is_infinite as Field,\n self.sk_app\n ]\n }\n}\n\nimpl Deserialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self { pk_m: Point { x: fields[0], y: fields[1], is_infinite: fields[2] as bool }, sk_app: fields[3] }\n }\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"},"339":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr","source":"use crate::{\n address::{aztec_address::AztecAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n public_keys::PublicKeys, contract_class_id::ContractClassId, constants::CONTRACT_INSTANCE_LENGTH,\n traits::{Deserialize, Hash, Serialize}\n};\n\npub struct ContractInstance {\n salt : Field,\n deployer: AztecAddress,\n contract_class_id : ContractClassId,\n initialization_hash : Field,\n public_keys : PublicKeys,\n}\n\nimpl Eq for ContractInstance {\n fn eq(self, other: Self) -> bool {\n self.public_keys.eq(other.public_keys)\n & self.initialization_hash.eq(other.initialization_hash)\n & self.contract_class_id.eq(other.contract_class_id)\n & self.salt.eq(other.salt)\n }\n}\n\nimpl Serialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn serialize(self) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n let public_keys_serialized = self.public_keys.serialize();\n [\n self.salt,\n self.deployer.to_field(),\n self.contract_class_id.to_field(),\n self.initialization_hash,\n public_keys_serialized[0],\n public_keys_serialized[1],\n public_keys_serialized[2],\n public_keys_serialized[3],\n public_keys_serialized[4],\n public_keys_serialized[5],\n public_keys_serialized[6],\n public_keys_serialized[7],\n public_keys_serialized[8],\n public_keys_serialized[9],\n public_keys_serialized[10],\n public_keys_serialized[11]\n ]\n }\n}\n\nimpl Deserialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn deserialize(serialized: [Field; CONTRACT_INSTANCE_LENGTH]) -> Self {\n Self {\n salt: serialized[0],\n deployer: AztecAddress::from_field(serialized[1]),\n contract_class_id: ContractClassId::from_field(serialized[2]),\n initialization_hash: serialized[3],\n public_keys: PublicKeys::deserialize(\n [\n serialized[4],\n serialized[5],\n serialized[6],\n serialized[7],\n serialized[8],\n serialized[9],\n serialized[10],\n serialized[11],\n serialized[12],\n serialized[13],\n serialized[14],\n serialized[15]\n ]\n )\n }\n }\n}\n\nimpl Hash for ContractInstance {\n fn hash(self) -> Field {\n self.to_address().to_field()\n }\n}\n\nimpl ContractInstance {\n fn to_address(self) -> AztecAddress {\n AztecAddress::compute(\n self.public_keys.hash(),\n PartialAddress::compute(\n self.contract_class_id,\n self.salt,\n self.initialization_hash,\n self.deployer\n )\n )\n }\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"},"438":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/public_key_note.nr","source":"use dep::aztec::prelude::{NoteHeader, NullifiableNote, PrivateContext};\nuse dep::aztec::{\n note::utils::compute_note_hash_for_nullify, keys::getters::get_nsk_app,\n protocol_types::{constants::GENERATOR_INDEX__NOTE_NULLIFIER, hash::poseidon2_hash_with_separator},\n macros::notes::note\n};\n\n// Stores a public key composed of two fields\n// TODO: Do we need to include a nonce, in case we want to read/nullify/recreate with the same pubkey value?\n#[note]\npub struct PublicKeyNote {\n x: Field,\n y: Field,\n // We store the npk_m_hash only to get the secret key to compute the nullifier\n npk_m_hash: Field,\n}\n\nimpl NullifiableNote for PublicKeyNote {\n fn compute_nullifier(self, context: &mut PrivateContext, note_hash_for_nullify: Field) -> Field {\n let secret = context.request_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n\n unconstrained fn compute_nullifier_without_context(self) -> Field {\n let note_hash_for_nullify = compute_note_hash_for_nullify(self);\n let secret = get_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n}\n\nimpl PublicKeyNote {\n pub fn new(x: Field, y: Field, npk_m_hash: Field) -> Self {\n PublicKeyNote { x, y, npk_m_hash, header: NoteHeader::empty() }\n }\n}\n"},"439":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/main.nr","source":"mod public_key_note;\n\n// Account contract that uses Schnorr signatures for authentication.\n// The signing key is stored in an immutable private note and should be different from the encryption/nullifying key.\nuse dep::aztec::macros::aztec;\n\n#[aztec]\ncontract SchnorrAccount {\n use dep::std;\n\n use dep::aztec::prelude::{AztecAddress, PrivateContext, PrivateImmutable};\n use dep::aztec::encrypted_logs::encrypted_note_emission::encode_and_encrypt_note;\n use dep::authwit::{\n entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions,\n auth_witness::get_auth_witness, auth::{compute_authwit_nullifier, compute_authwit_message_hash}\n };\n use dep::aztec::{hash::compute_siloed_nullifier, keys::getters::get_public_keys};\n use dep::aztec::oracle::get_nullifier_membership_witness::get_low_nullifier_membership_witness;\n use dep::aztec::macros::{storage::storage, functions::{private, initializer, view, noinitcheck}};\n\n use crate::public_key_note::PublicKeyNote;\n\n #[storage]\n struct Storage<Context> {\n signing_public_key: PrivateImmutable<PublicKeyNote, Context>,\n }\n\n // Constructs the contract\n #[private]\n #[initializer]\n fn constructor(signing_pub_key_x: Field, signing_pub_key_y: Field) {\n let this = context.this_address();\n let this_keys = get_public_keys(this);\n // Not emitting outgoing for msg_sender here to not have to register keys for the contract through which we\n // deploy this (typically MultiCallEntrypoint). I think it's ok here as I feel the outgoing here is not that\n // important.\n\n let mut pub_key_note = PublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this_keys.npk_m.hash());\n storage.signing_public_key.initialize(&mut pub_key_note).emit(encode_and_encrypt_note(&mut context, this_keys.ovpk_m, this_keys.ivpk_m, this));\n }\n\n // Note: If you globally change the entrypoint signature don't forget to update account_entrypoint.ts file\n #[private]\n #[noinitcheck]\n fn entrypoint(app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.entrypoint(app_payload, fee_payload, cancellable);\n }\n\n #[private]\n #[noinitcheck]\n #[view]\n fn verify_private_authwit(inner_hash: Field) -> Field {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.verify_private_authwit(inner_hash)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, outer_hash: Field) -> bool {\n // docs:start:is_valid_impl\n // Load public key from storage\n let storage = Storage::init(context);\n let public_key = storage.signing_public_key.get_note();\n // Load auth witness\n let witness: [Field; 64] = unsafe {\n get_auth_witness(outer_hash)\n };\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n\n // Verify signature of the payload bytes\n std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n outer_hash.to_be_bytes::<32>()\n )\n // docs:end:is_valid_impl\n }\n\n /**\n * @notice Helper function to check validity of private authwitnesses\n * @param consumer The address of the consumer of the message\n * @param message_hash The message hash of the message to check the validity\n * @return True if the message_hash can be consumed, false otherwise\n */\n unconstrained fn lookup_validity(consumer: AztecAddress, inner_hash: Field) -> pub bool {\n let public_key = storage.signing_public_key.view_note();\n\n let message_hash = compute_authwit_message_hash(consumer, context.chain_id(), context.version(), inner_hash);\n\n let witness: [Field; 64] = get_auth_witness(message_hash);\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n let valid_in_private = std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n message_hash.to_be_bytes::<32>()\n );\n\n // Compute the nullifier and check if it is spent\n // This will BLINDLY TRUST the oracle, but the oracle is us, and\n // it is not as part of execution of the contract, so we are good.\n let nullifier = compute_authwit_nullifier(context.this_address(), inner_hash);\n let siloed_nullifier = compute_siloed_nullifier(consumer, nullifier);\n let lower_wit = get_low_nullifier_membership_witness(context.block_number(), siloed_nullifier);\n let is_spent = lower_wit.leaf_preimage.nullifier == siloed_nullifier;\n\n !is_spent & valid_in_private\n }\n}\n"},"58":{"path":"std/option.nr","source":"use crate::hash::{Hash, Hasher};\nuse crate::cmp::{Ordering, Ord, Eq};\nuse crate::default::Default;\n\npub struct Option<T> {\n _is_some: bool,\n _value: T,\n}\n\nimpl<T> Option<T> {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::mem::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some { self._value } else { default }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else<Env>(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n pub fn expect<let N: u32, MessageTypes>(self, message: fmtstr<N, MessageTypes>) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> Option<U> {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or<U, Env>(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else<U, Env1, Env2>(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then<U, Env>(self, f: fn[Env](T) -> Option<U>) -> Option<U> {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some { self } else { other }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else<Env>(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some { self } else { default() }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some { Option::none() } else { self }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter<Env>(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option<Option<T>> into a Option<T>.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option<Option<T>>) -> Option<T> {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl<T> Default for Option<T> {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl<T> Eq for Option<T> where T: Eq {\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl<T> Hash for Option<T> where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl<T> Ord for Option<T> where T: Ord {\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\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"},"7":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\n/// A `BoundedVec<T, MaxLen>` is a growable storage similar to a `Vec<T>` except that it\n/// is bounded with a maximum possible length. Unlike `Vec`, `BoundedVec` is not implemented\n/// via slices and thus is not subject to the same restrictions slices are (notably, nested\n/// slices - and thus nested vectors as well - are disallowed).\n/// \n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n/// \n/// For these reasons `BoundedVec<T, N>` should generally be preferred over `Vec<T>` when there\n/// is a reasonable maximum bound that can be placed on the vector.\n/// \n/// Example:\n/// \n/// ```noir\n/// let mut vector: BoundedVec<Field, 10> = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\npub struct BoundedVec<T, let MaxLen: u32> {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl<T, let MaxLen: u32> BoundedVec<T, MaxLen> {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec<Field, 10> = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec<Field, 10> {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec<Field, 3> = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiler can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a \n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn sum_of_first_three<let N: u32>(v: BoundedVec<u32, N>) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n /// \n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n /// \n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n /// \n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure. \n /// vec.set_unchecked(2, 42);\n /// println(vec);\n /// \n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n /// \n /// Panics if the new length of the vector will be greater than the max length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n /// \n /// v.push(1);\n /// v.push(2);\n /// \n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\n /// ```\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n /// Returns the current length of this vector\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 4> = BoundedVec::new();\n /// assert(v.len() == 0);\n /// \n /// v.push(100);\n /// assert(v.len() == 1);\n /// \n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n /// \n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n /// \n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n /// \n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n /// \n /// Note that uninitialized elements may be zeroed out!\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n /// \n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n /// \n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_array<let Len: u32>(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the given slice to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_slice(&[2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// ```noir\n /// let mut v1: BoundedVec<Field, 5> = BoundedVec::new();\n /// let mut v2: BoundedVec<Field, 7> = BoundedVec::new();\n /// \n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n /// \n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\n /// ```\n pub fn extend_from_bounded_vec<let Len: u32>(&mut self, vec: BoundedVec<T, Len>) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n /// Creates a new vector, populating it with values derived from an array input. \n /// The maximum length of the vector is determined based on the type signature.\n /// \n /// Example:\n /// \n /// ```noir\n /// let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array([1, 2, 3])\n /// ```\n pub fn from_array<let Len: u32>(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec<T, MaxLen> = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n /// \n /// Panics if the vector is empty.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n /// \n /// let two = v.pop();\n /// let one = v.pop();\n /// \n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\n /// ```\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n /// Returns true if the given predicate returns true for any element\n /// in this vector.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<u32, 3> = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n /// \n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\n /// ```\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element in this vector. \n /// \n /// Example:\n /// \n /// ```noir\n /// let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n /// \n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> BoundedVec<U, MaxLen> {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n ret\n }\n}\n\nimpl<T, let MaxLen: u32> Eq for BoundedVec<T, MaxLen> where T: Eq {\n fn eq(self, other: BoundedVec<T, MaxLen>) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n\n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nimpl<T, let MaxLen: u32, let Len: u32> From<[T; Len]> for BoundedVec<T, MaxLen> {\n fn from(array: [T; Len]) -> BoundedVec<T, MaxLen> {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec<Field, 5> = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec<Field, 5> = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec<Field, 4> = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.storage()[2], 0);\n }\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with = \"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec<Field, 2> = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n}\n"},"75":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/account.nr","source":"use dep::aztec::{\n context::PrivateContext,\n protocol_types::constants::{GENERATOR_INDEX__COMBINED_PAYLOAD, GENERATOR_INDEX__TX_NULLIFIER},\n hash::poseidon2_hash_with_separator\n};\n\nuse crate::entrypoint::{app::AppPayload, fee::FeePayload};\nuse crate::auth::{IS_VALID_SELECTOR, compute_authwit_message_hash};\n\npub struct AccountActions<Context> {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n}\n\nimpl<Context> AccountActions<Context> {\n pub fn init(context: Context, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions { context, is_valid_impl }\n }\n}\n\n/**\n * An implementation of the Account Action struct for the private context.\n *\n * Implements logic to verify authorization and execute payloads.\n */\nimpl AccountActions<&mut PrivateContext> {\n\n /**\n * Verifies that the `app_hash` and `fee_hash` are authorized and then executes them.\n *\n * Executes the `fee_payload` and `app_payload` in sequence.\n * Will execute the `fee_payload` as part of the setup, and then enter the app phase.\n *\n * @param app_payload The payload that contains the calls to be executed in the app phase.\n * @param fee_payload The payload that contains the calls to be executed in the setup phase.\n */\n // docs:start:entrypoint\n pub fn entrypoint(self, app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let valid_fn = self.is_valid_impl;\n\n let combined_payload_hash = poseidon2_hash_with_separator(\n [app_payload.hash(), fee_payload.hash()],\n GENERATOR_INDEX__COMBINED_PAYLOAD\n );\n assert(valid_fn(self.context, combined_payload_hash));\n\n fee_payload.execute_calls(self.context);\n self.context.end_setup();\n app_payload.execute_calls(self.context);\n if cancellable {\n let tx_nullifier = poseidon2_hash_with_separator([app_payload.nonce], GENERATOR_INDEX__TX_NULLIFIER);\n self.context.push_nullifier(tx_nullifier);\n }\n }\n // docs:end:entrypoint\n\n /**\n * Verifies that the `msg_sender` is authorized to consume `inner_hash` by the account.\n *\n * Computes the `message_hash` using the `msg_sender`, `chain_id`, `version` and `inner_hash`.\n * Then executes the `is_valid_impl` function to verify that the message is authorized.\n *\n * Will revert if the message is not authorized.\n *\n * @param inner_hash The hash of the message that the `msg_sender` is trying to consume.\n */\n // docs:start:verify_private_authwit\n pub fn verify_private_authwit(self, inner_hash: Field) -> Field {\n // The `inner_hash` is \"siloed\" with the `msg_sender` to ensure that only it can\n // consume the message.\n // This ensures that contracts cannot consume messages that are not intended for them.\n let message_hash = compute_authwit_message_hash(\n self.context.msg_sender(),\n self.context.chain_id(),\n self.context.version(),\n inner_hash\n );\n let valid_fn = self.is_valid_impl;\n assert(valid_fn(self.context, message_hash) == true, \"Message not authorized by account\");\n IS_VALID_SELECTOR\n }\n // docs:end:verify_private_authwit\n}\n"},"76":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth.nr","source":"use dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{\n GENERATOR_INDEX__AUTHWIT_INNER, GENERATOR_INDEX__AUTHWIT_OUTER, GENERATOR_INDEX__AUTHWIT_NULLIFIER,\n CANONICAL_AUTH_REGISTRY_ADDRESS\n},\n hash::poseidon2_hash_with_separator\n};\nuse dep::aztec::{context::{PrivateContext, PublicContext, gas::GasOpts}, hash::hash_args_array};\n\n/**\n * Authenticaion witness helper library\n *\n * Authentication Witness is a scheme for authenticating actions on Aztec, so users can allow third-parties\n * (e.g. protocols or other users) to execute an action on their behalf.\n *\n * This library provides helper functions to manage such witnesses.\n * The authentication witness, is some \"witness\" (data) that authenticates a `message_hash`.\n * The simplest example of an authentication witness, is a signature. The signature is the \"evidence\",\n * that the signer has seen the message, agrees with it, and has allowed it.\n * It does not need to be a signature. It could be any kind of \"proof\" that the message is allowed.\n * Another proof could be knowing some kind of secret, or having some kind of \"token\" that allows the message.\n *\n * The `message_hash` is a hash of the following structure:\n * hash(consumer, chain_id, version, inner_hash)\n * - consumer: the address of the contract that is \"consuming\" the message,\n * - chain_id: the chain id of the chain that the message is being consumed on,\n * - version: the version of the chain that the message is being consumed on,\n * - inner_hash: the hash of the \"inner\" message that is being consumed, this is the \"actual\" message or action.\n *\n * While the `inner_hash` could be anything, such as showing you signed a specific message, it will often be\n * a hash of the \"action\" to approve, along with who made the call. As part of this library, we provide a few\n * helper functions to deal with such messages.\n *\n * For example, we provide helper function that is used for checking that the message is an encoding of the current call.\n * This can be used to let some contract \"allow\" another contract to act on its behalf, as long as it can\n * show that it is acting on behalf of the contract.\n *\n * If we take a case of allowing a contract to transfer tokens on behalf of an account, the `inner_hash` can be\n * derived as:\n * inner_hash = hash(caller, \"transfer\", hash(to, amount))\n *\n * Where the `caller` would be the address of the contract that is trying to transfer the tokens, and `to` and `amount`\n * the arguments for the transfer.\n *\n * Note that we have both a `caller` and a `consumer`, the `consumer` will be the contract that is consuming the message,\n * in the case of the transfer, it would be the `Token` contract itself, while the caller, will be the actor that is\n * allowed to transfer the tokens.\n *\n *\n * The authentication mechanism works differently in public and private contexts. In private, we recall that everything\n * is executed on the user's device, so we can use `oracles` to \"ask\" the user (not contract) for information. In public\n * we cannot do this, since it is executed by the sequencer (someone else). Therefore we can instead use a \"registry\"\n * to store the messages that we have approved.\n *\n * A simple example would be a \"token\" that is being \"pulled\" from one account into another. We will first outline\n * how this would look in private, and then in public later.\n *\n * Say that a user `Alice` wants to deposit some tokens into a DeFi protocol (say a DEX).\n * `Alice` would make a `deposit` transaction, that she is executing using her account contract.\n * The account would call the `DeFi` contract to execute `deposit`, which would try to pull funds from the `Token`\n * contract. Since the `DeFi` contract is trying to pull funds from an account that is not its own, it needs to\n * convince the `Token` contract that it is allowed to do so.\n *\n * This is where the authentication witness comes in The `Token` contract computes a `message_hash` from the\n * `transfer` call, and then asks `Alice Account` contract to verify that the `DeFi` contract is allowed to\n * execute that call.\n *\n * `Alice Account` contract can then ask `Alice` if she wants to allow the `DeFi` contract to pull funds from her\n * account. If she does, she will sign the `message_hash` and return the signature to the `Alice Account` which\n * will validate it and return success to the `Token` contract which will then allow the `DeFi` contract to pull\n * funds from `Alice`.\n *\n * To ensure that the same \"approval\" cannot be used multiple times, we also compute a `nullifier` for the\n * authentication witness, and emit it from the `Token` contract (consumer).\n *\n * Note that we can do this flow as we are in private were we can do oracle calls out from contracts.\n *\n *\n * Person Contract Contract Contract\n * Alice Alice Account Token DeFi\n * | | | |\n * | Defi.deposit(Token, 1000) | |\n * |----------------->| | |\n * | | deposit(Token, 1000) |\n * | |---------------------------------------->|\n * | | | |\n * | | | transfer(Alice, Defi, 1000)\n * | | |<---------------------|\n * | | | |\n * | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | |<-----------------| |\n * | | | |\n * | Please give me AuthWit for DeFi | |\n * | calling transfer(Alice, Defi, 1000) | |\n * |<-----------------| | |\n * | | | |\n * | | | |\n * | AuthWit for transfer(Alice, Defi, 1000) |\n * |----------------->| | |\n * | | AuthWit validity | |\n * | |----------------->| |\n * | | | |\n * | | throw if invalid AuthWit |\n * | | | |\n * | | emit AuthWit nullifier |\n * | | | |\n * | | transfer(Alice, Defi, 1000) |\n * | | | |\n * | | | |\n * | | | success |\n * | | |--------------------->|\n * | | | |\n * | | | |\n * | | | deposit(Token, 1000)\n * | | | |\n * | | | |\n *\n *\n * If we instead were in public, we cannot do the same flow. Instead we would use an authentication registry to store\n * the messages that we have approved.\n *\n * To approve a message, `Alice Account` can make a `set_authorized` call to the registry, to set a `message_hash`\n * as authorized. This is essentially a mapping from `message_hash` to `true` for `Alice Contract`. Every account\n * has its own map in the registry, so `Alice` cannot approve a message for `Bob`.\n *\n * The `Token` contract can then try to \"spend\" the approval by calling `consume` on the registry. If the message\n * was approved, the value is updated to `false`, and we return the success flag. For more information on the\n * registry, see `main.nr` in `auth_registry_contract`.\n *\n * Person Contract Contract Contract Contract\n * Alice Alice Account Registry Token DeFi\n * | | | | |\n * | Registry.set_authorized(..., true) | | |\n * |----------------->| | | |\n * | | set_authorized(..., true) | |\n * | |------------------->| | |\n * | | | | |\n * | | set authorized to true | |\n * | | | | |\n * | | | | |\n * | Defi.deposit(Token, 1000) | | |\n * |----------------->| | | |\n * | | deposit(Token, 1000) | |\n * | |-------------------------------------------------------------->|\n * | | | | |\n * | | | transfer(Alice, Defi, 1000) |\n * | | | |<---------------------|\n * | | | | |\n * | | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | | |<------------------| |\n * | | | | |\n * | | throw if invalid AuthWit | |\n * | | | | |\n * | | | | |\n * | | set authorized to false | |\n * | | | | |\n * | | | | |\n * | | | AuthWit validity | |\n * | | |------------------>| |\n * | | | | |\n * | | | | transfer(Alice, Defi, 1000)\n * | | | |<-------------------->|\n * | | | | |\n * | | | | success |\n * | | | |--------------------->|\n * | | | | |\n * | | | | deposit(Token, 1000)\n * | | | | |\n *\n *\n * --- FAQ ---\n * Q: Why are we using a success flag of `poseidon2_hash_bytes(\"IS_VALID()\")` instead of just returning a boolean?\n * A: We want to make sure that we don't accidentally return `true` if there is a collision in the function selector.\n * By returning a hash of `IS_VALID()`, it becomes very unlikely that there is both a collision and we return\n * a success flag.\n *\n * Q: Why are we using static calls?\n * A: We are using static calls to ensure that the account contract cannot re-enter. If it was a normal call, it\n * could make a new call and do a re-entry attack. Using a static ensures that it cannot update any state.\n *\n * Q: Would it not be cheaper to use a nullifier instead of updating state in public?\n * A: At a quick glance, a public state update + nullifier is 96 bytes, but two state updates are 128, so it would be\n * cheaper to use a nullifier, if this is the way it would always be done. However, if both the approval and the\n * consumption is done in the same transaction, then we will be able to squash the updates (only final tx state diff is posted to DA), and now it is cheaper.\n *\n * Q: Why is the chain id and the version part of the message hash?\n * A: The chain id and the version is part of the message hash to ensure that the message is only valid on a specific\n * chain to avoid a case where the same message could be used across multiple chains.\n */\n\nglobal IS_VALID_SELECTOR = 0x47dacd73; // 4 last bytes of poseidon2_hash_bytes(\"IS_VALID()\")\n\n/**\n * Assert that `on_behalf_of` have authorized the current call with a valid authentication witness\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash([context.msg_sender().to_field(), context.selector().to_field(), context.args_hash]);\n assert_inner_hash_valid_authwit(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit\n\n/**\n * Assert that a specific `inner_hash` is valid for the `on_behalf_of` address\n *\n * Used as an internal function for `assert_current_call_valid_authwit` and can be used as a standalone function when\n * the `inner_hash` is from a different source, e.g., say a block of text etc.\n *\n * @param on_behalf_of The address that have authorized the current call\n * @param inner_hash The hash of the message to authorize\n */\npub fn assert_inner_hash_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n // We perform a static call here and not a standard one to ensure that the account contract cannot re-enter.\n let result: Field = context.static_call_private_function(\n on_behalf_of,\n comptime {\n FunctionSelector::from_signature(\"verify_private_authwit(Field)\")\n },\n [inner_hash]\n ).unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n // Compute the nullifier, similar computation to the outer hash, but without the chain_id and version.\n // Those should already be handled in the verification, so we just need something to nullify, that allow same inner_hash for multiple actors.\n let nullifier = compute_authwit_nullifier(on_behalf_of, inner_hash);\n context.push_nullifier(nullifier);\n}\n\n/**\n * Assert that `on_behalf_of` have authorized the current call in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit_public\npub fn assert_current_call_valid_authwit_public(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress\n) {\n let inner_hash = compute_inner_authwit_hash(\n [(*context).msg_sender().to_field(), (*context).selector().to_field(), (*context).get_args_hash()]\n );\n assert_inner_hash_valid_authwit_public(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n/**\n * Assert that `on_behalf_of` have authorized a speicifc `inner_hash` in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n */\npub fn assert_inner_hash_valid_authwit_public(context: &mut PublicContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n let result: Field = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"consume((Field),Field)\")\n },\n [on_behalf_of.to_field(), inner_hash].as_slice(),\n GasOpts::default()\n ).deserialize_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n\n/**\n * Compute the `message_hash` from a function call to be used by an authentication witness\n *\n * Useful for when you need a non-account contract to approve during execution. For example if you need a contract\n * to make a call to nested contract, e.g., contract A wants to exit token T to L1 using bridge B, so it needs to allow\n * B to transfer T on its behalf.\n *\n * @param caller The address of the contract that is calling the function, in the example above, this would be B\n * @param consumer The address of the contract that is consuming the message, in the example above, this would be T\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param selector The function selector of the function that is being called\n * @param args The arguments of the function that is being called\n */\n// docs:start:compute_authwit_message_hash_from_call\npub fn compute_authwit_message_hash_from_call<let N: u32>(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N]\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash = compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_authwit_message_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_authwit_message_hash_from_call\n\n/**\n * Computes the `inner_hash` of the authentication witness\n *\n * This is used internally, but also useful in cases where you want to compute the `inner_hash` for a specific message\n * that is not necessarily a call, but just some \"bytes\" or text.\n *\n * @param args The arguments to hash\n */\npub fn compute_inner_authwit_hash<let N: u32>(args: [Field; N]) -> Field {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\n/**\n * Computs the `authwit_nullifier` for a specific `on_behalf_of` and `inner_hash`\n *\n * Using the `on_behalf_of` and the `inner_hash` to ensure that the nullifier is siloed for a specific `on_behalf_of`.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n * @param inner_hash The hash of the message to authorize\n */\npub fn compute_authwit_nullifier(on_behalf_of: AztecAddress, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [on_behalf_of.to_field(), inner_hash],\n GENERATOR_INDEX__AUTHWIT_NULLIFIER\n )\n}\n\n/**\n * Computes the `message_hash` for the authentication witness\n *\n * @param consumer The address of the contract that is consuming the message\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param inner_hash The hash of the \"inner\" message that is being consumed\n */\npub fn compute_authwit_message_hash(consumer: AztecAddress, chain_id: Field, version: Field, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n consumer.to_field(),\n chain_id,\n version,\n inner_hash\n ],\n GENERATOR_INDEX__AUTHWIT_OUTER\n )\n}\n\n/**\n * Helper function to set the authorization status of a message hash\n *\n * Wraps a public call to the authentication registry to set the authorization status of a `message_hash`\n *\n * @param message_hash The hash of the message to authorize\n * @param authorize True if the message should be authorized, false if it should be revoked\n */\npub fn set_authorized(context: &mut PublicContext, message_hash: Field, authorize: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"set_authorized(Field,bool)\")\n },\n [message_hash, authorize as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n\n/**\n * Helper function to reject all authwits\n *\n * Wraps a public call to the authentication registry to set the `reject_all` flag\n *\n * @param reject True if all authwits should be rejected, false otherwise\n */\npub fn set_reject_all(context: &mut PublicContext, reject: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"set_reject_all(bool)\")\n },\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n"},"77":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\n\nuse crate::entrypoint::function_call::FunctionCall;\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u32 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u32 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u32 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\npub struct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize<APP_PAYLOAD_SIZE> for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, APP_PAYLOAD_SIZE> = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__SIGNATURE_PAYLOAD)\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, APP_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n\n bytes.storage\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"},"79":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/fee.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__FEE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\nuse crate::entrypoint::function_call::FunctionCall;\n\n// 2 * 5 (FUNCTION_CALL_SIZE) + 2\nglobal FEE_PAYLOAD_SIZE: u32 = 12;\n\n// 2 * 98 (FUNCTION_CALL_SIZE_IN_BYTES) + 32\nglobal FEE_PAYLOAD_SIZE_IN_BYTES: u32 = 228;\n\nglobal MAX_FEE_FUNCTION_CALLS: u32 = 2;\n\n// docs:start:fee-payload-struct\npub struct FeePayload {\n function_calls: [FunctionCall; MAX_FEE_FUNCTION_CALLS],\n nonce: Field,\n is_fee_payer: bool,\n}\n// docs:end:fee-payload-struct\n\nimpl Serialize<FEE_PAYLOAD_SIZE> for FeePayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; FEE_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, FEE_PAYLOAD_SIZE> = BoundedVec::new();\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n fields.extend_from_array(self.function_calls[i].serialize());\n }\n fields.push(self.nonce);\n fields.push(self.is_fee_payer as Field);\n fields.storage\n }\n}\n\nimpl Hash for FeePayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__FEE_PAYLOAD)\n }\n}\n\nimpl FeePayload {\n fn to_be_bytes(self) -> [u8; FEE_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, FEE_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n bytes.push(self.is_fee_payer as u8);\n\n bytes.storage\n }\n\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n if self.is_fee_payer {\n context.set_as_fee_payer();\n }\n }\n}\n"},"81":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth_witness.nr","source":"#[oracle(getAuthWitness)]\nunconstrained fn get_auth_witness_oracle<let N: u32>(_message_hash: Field) -> [Field; N] {}\n\n/**\n * Oracle wrapper to fetch an `auth_witness` for a given `message_hash` from the PXE.\n *\n * @param message_hash The hash of the message for which the `auth_witness` is to be fetched.\n * @return The `auth_witness` for the given `message_hash` as Field array.\n */\npub unconstrained fn get_auth_witness<let N: u32>(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n"},"83":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr","source":"use dep::protocol_types::{constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER, hash::poseidon2_hash_with_separator};\n\nuse crate::context::{PrivateContext, UnconstrainedContext};\nuse crate::note::{\n lifecycle::create_note, note_getter::{get_note, view_notes},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n note_emission::NoteEmission\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\npub struct PrivateImmutable<Note, Context> {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\nimpl<T, Context> Storage<T> for PrivateImmutable<T, Context> {}\n\nimpl<Note, Context> PrivateImmutable<Note, Context> {\n // docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n // The following computation is leaky, in that it doesn't hide the storage slot that has been initialized, nor does it hide the contract address of this contract.\n // When this initialization nullifier is emitted, an observer could do a dictionary or rainbow attack to learn the preimage of this nullifier to deduce the storage slot and contract address.\n // For some applications, leaking the details that a particular state variable of a particular contract has been initialized will be unacceptable.\n // Under such circumstances, such application developers might wish to _not_ use this state variable type.\n // This is especially dangerous for initial assignment to elements of a `Map<AztecAddress, PrivateImmutable>` type (for example), because the storage slot often also identifies an actor.\n // e.g. the initial assignment to `my_map.at(msg.sender)` will leak: `msg.sender`, the fact that an element of `my_map` was assigned-to for the first time, and the contract_address.\n pub fn compute_initialization_nullifier(self) -> Field {\n poseidon2_hash_with_separator(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER\n )\n }\n}\n\nimpl<Note> PrivateImmutable<Note, &mut PrivateContext> {\n // docs:start:initialize\n pub fn initialize<let N: u32>(\n self,\n note: &mut Note\n ) -> NoteEmission<Note> where Note: NoteInterface<N> + NullifiableNote {\n // Nullify the storage slot.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_nullifier(nullifier);\n\n create_note(self.context, self.storage_slot, note)\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note<let N: u32>(self) -> Note where Note: NoteInterface<N> + NullifiableNote {\n let storage_slot = self.storage_slot;\n get_note(self.context, storage_slot).0\n }\n // docs:end:get_note\n}\n\nimpl<Note> PrivateImmutable<Note, UnconstrainedContext> {\n // docs:start:is_initialized\n pub unconstrained fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // view_note does not actually use the context, but it calls oracles that are only available in private\n // docs:start:view_note\n pub unconstrained fn view_note<let N: u32>(self) -> Note where Note: NoteInterface<N> + NullifiableNote {\n let mut options = NoteViewerOptions::new();\n view_notes(self.storage_slot, options.set_limit(1)).get(0)\n }\n // docs:end:view_note\n}\n"}}}
|