@aztec/accounts 0.59.0 → 0.61.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"transpiled":true,"noir_version":"0.35.0+df29d315d6b71131ffe0180c97130395edb2e4ba-x8664","name":"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":"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","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+qkJTXtOopKu46i0q6jqLTrKCrtOopKu46i0q6jqLTrKCrNKCrNKGrRkrpoSV20pC5aUhctqYuW1EVL6qIlNe06ikq7jqLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLRjKLRjKLRjKLRjKItsKQ2mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlF0mlF0mlF0mlF0mlH0BZbUTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKQTOKQTOKQTOKQTOKscCSOmhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWlGMWlGMWlGMWlGMRdYUifNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKCbNKBbNKBbNKBbNKBbNKNYCS+qiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcWiGcVJM4qTZhQnzShOmlGcCyypJ80oTppRnDSjOGlGcdKM4qQZxUkzipNmFCfNKE6aUZw0ozhpRnHSjOKkGcVJM4qTZhQnzShOmlGcNKM4aUZx0ozipBnFSTOKk2YUJ80oTppRnDSjOGlGcdKM4qQZxUkzipNmFCfNKE6aUZw0ozhpRnHSjOKkGcVJM4qTZhQnzShOmlGcNKM4aUZx0ozipBnFSTOKk2YUJ80oTppRnDSjOGlGcdKM4qQZxUkzipNmFCfNKE6aUZw0ozhpRnHSjOKkGcVJM4qTZhQnzShOmlGcNKM4aUZx0ozipBnFSTOKk2YUJ80oTppRnDSjOGlGcdKM4qQZxUkzipNmFCfNKE6aUZw0ozhpRnHSjOKkGcVJM4qTZhQnzShOmlGcNKM4aUZx0ozipBnFCTOKY1lgSPFHRays/lERK6x/VMRK6x8VseL6R0WsvP5RESuwf1TESuwfFbEi+0dFuMyGccUfFR2d2bKoXu56yXpd0c3y63rX0+bLzceit+5cvepy7xoj/3D73x1Lu461XcfWrmNv13G063iP9/wcl4cZabrx7pGR1xvXq8MzLxUVrqJJq2gX+Pqhimq5vueXyo2KBq4iwVWkuOeR4SpyXEWBqwiX2YLLbMFlti64igauIlxmq+IqMlxFjqvo6Mxe78+vd53jdUU37tldlstdu2fcmMs1T99Bnb6DefYODPeeY7j3HBNcRcp+3sW83rXPMW897+z0HfjpO9jjPTDiesIpl61zWS/Pa6lFNu5ayuV663o5lVW3zmSpx+XgaCzLS7caN249l7r0OH+eGfvTZ8l20dHPY/nrWNbzWO52LOfzWO51LHfh9M9j+etYjuex3O1YytknET/9PLvLmoSv7eD086zDz+n8HR3Az+n8HR0U7UyfT1pFgftuNnDfzQbuPH/gzvPvsvBh34pw5/kjcBUlriJcZgcusxOX2YnL7MRlduIyO3GZnbjMTlxmJy6zE5fZicvswmV24TK7cJlduMwuXGYXLrMLl9mFy+zCZXbhMnviMnviMnviMnviMnviMnviMnviMnviMnviMnvSMnsstMweCy2zx0LL7LHQMnsstMweCy2zx0LL7LHQMnsstMweCy6zBy6zBy6zBy6zBy6zBy6zBy6zBy6zBy6zBy6zBy6zcaZ/4Ez/wJn+IbjMFlxmCy6zBZfZgstswWW24DJbcZmtuMzGmf6BM/0DZ/oHzvQPxWW24jJbcZmtuMw2XGYbLrMNl9mGy2zDZbbhMttwmW24zDZcZhsusx2X2Y7LbMdltuMy23GZ7bjMdlxmOy6zcQ5y4BzkwDnIgXOQA+cgB85BDpyDHDgHOXAOcuAc5MA5yIFzkAPnIAfOQQ6cgxw4BzlwDnLgHOTAOciBc5AD5yAHzkEOnIMcsCth/6iIds2+AbsW9o+KDFcR7Zp9A3Y57B8V0a7ZN2AXxP5REe2afQN2SewfFeEyG3ZR7B8V4TIbdlnsHxXhMht2YewfFeEyG3Zp7B8V0TJbcNfGFty1sQV3bWzBXRtbFlpmC+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+wzzwj7zDPCPvOMsM88I27/0jhtzssflfzxj/7h/q317UP44x8iHv8Q+fiHqMc/xHz4Q9z+Pe3HHsLW2fP3rW3ay4A0fNy4tepymXk0Xp28+HHrHwUNWkFCK0hpBRmtIKcVFLSCklZQ0QqasIKCltRBS+qgJXXQkjpoSR20pA5aUgctqYOW1EFL6qQlddKSOmlJnbSkTlpSJy2pk5bUSUvqpCV10pK6aEldtKQuWlIXLamLltRFS+qiJXXRkrpoSV20pJ60pJ60pJ57JPWMuBaU/uYh9PEPYY9/CN/5IUrePEQ8/iHy8Q+xQyr5opeH8MXe/lvMhz/EWJbHP8bYpY+w62O8fX0P2eEF7qWXXw57ebx9DD3gMeyAx/ADHuPveJHXHx7j51/lp/6qPvVX8zN/pcun/mp86q/kU3+ln/or+9Rf+af+6lPPDf3Uc0M/9dzQTz037FPPDfvUc8M+9dywTz037FPPDfvUc8M+9dywTz037FPPDfvUc8M/9dzwTz03/FPPDf/Uc8M/9dzwTz03/FPPDf/Uc8M/9dzwTz034lPPjfjUcyM+9dyITz034lPPjfjUcyM+9dyITz034lPPjfjUcyM/9dzITz038lPPjfzUcyM/9dzITz038lPPjfzUcyM/9dzITz036lPPjb/jLLpuTf9rwZdPY2sVL4/h9esh5PEPoY9/CHv8Q/jjHyIe/xD5+Ieoxz/EfPhD/B3naf/0Qzz+1T0f/+qej391z8e/uufjX93z8a/u+fhX93z8q3s+/NUty/L4hxiPfwh5/EPo4x/CHv8Q/viHiMc/RD7+IerxD/H4V/d4/Kt7PP7VPR7/6h6Pf3WPx7+6x+Nf3ePxr+7x+Ff3ePyrezz+1S2Pf3XL41/d8vhXtzz+1S2Pf3XL41/d8vhXtzz+1S2Pf3XL41/d+vhXtz7+1a2Pf3Xr41/d+vhXtz7+1a2Pf3Xr41/d+vhXtz7+1W2Pf3Xb41/d9vhXtz3+1W2Pf3Xb41/d9vhXtz3+1W2Pf3Xb41/d/vhXtz/+1e2Pf3X741/d/vhX9x4q3MdyWerqY7z6BvTXbxNlD8bsWtfHsBFvHyMPeIw64DHm4x9jDxK8+RjjgMeQAx5DD3gM2+MxQu4+hh/wGHHAY+QBj7HH69zs5TFivH2M+fjH2AOUbj7GOOAx5IDH0AMeww54jD1e537dMesuNx4jDniMPOAx6oDH2OV1fr31+hhvZJTM5YDHGAc8hhzwGHrAY9gBj+EHPEbs/Rjz7WPkAY9RBzzGHq/zuH5U81zePIbuYge3HmMc8BhywGPs8TqPuL3F/qaIHmZ5+aBt9vIpeP3e+VdFhqvIcRUFrqLEVVS0isY4uiLPS0FeL6/99QvaX/Uc/kqLZfl941jibT0Oqydg9SSsnj1eYanXeSFrbNRjfnkzM395fZnWr3omqx5ZYPUMWD0Cq0dh9RisHofVE7B69sjnnNdz4PU3+fzzMfbI3Ps7MlTm4x9DlwMeYxzwGHLAY+gBj2EHPIYf8BhxwGPkAY9xwOtcD3id2wGvczvgdW4HvM7tgNe5HfA6twNe53bA69wOeJ3bAa9zO+B17ge8zv2A17kf8Dr3A17nfsDr3A94nfsBr3M/4HXuB7zO/YDXeRzwOo8DXudxwOs8DnidxwGv8zjgdR4HvM7jgNd5HPA6jwNe53nA6zwPeJ3nAa/zPOB1nge8zvOA13ke8DrPA17necDrPA94ndcBr/M64HVeB7zO64DXeR3wOq8DXud1wOu8Dnid1wGv8zrgdT4PeJ3PA17n84DX+TzgdT4PeJ3PA17n84DX+TzgdT4PeJ3Px7/ObVkOeIxxwGPIAY+hBzyGHfAYfsBjxAGPkQc8Rh3wGAe8zscBr/NxwOt8HPA6Hwe8zscBr/NxwOt8HPA6Hwe8zscBr/NxwOtcDnidywGv8wOug2QHXAfJDrgOkh1wHSSTA17ncsDr/IDfw9kBv4ezA34PZwf8Hs4O+K2aHfBbNTvgt2p2wG/VbJffeO1nTmyX34N9zDCMy41D9G09A1aPwOpRWD12eD3LvNZjb+txWD0Bqydh9RSsnsmqxxdYPcfn8z3zZi6wehRWj8HqYZlSc5YpNWeZUvOC1TNZ9cQCqweWzwHL54Dlc8DyOWD5HKR8Xv9r/Ljl7S9JZl42ao1leXmUH+W9fZC4DlmZr2/6n39cVfqh925/+t5nXY79sL+9d//z9345XZGvLkr5+97jofeef/be88qRM+Rv770eeu/zT9/7HL9vW8vfPmduf+nxsXu/vKjq1bK53/c+/uy9l17+VevNkRHZ8d7/5tW0/of8zIObzxy7PoaPlxMnNd5/Ntz9i/nRv7j9r3b3L8aH/0I+9hfrf+iPG96uLeySW2Wv6L/Fzz+0n394s8Sol3+i13uc7zwD7v+JfvxP7ON/4h//k/j4n9yOteVymnr+Yfvjrz+pj//J/PCf3P6K5f6fjI//iXz8T/Tjf2If/xP/+J/Ex//k9r++X54wM+UPf/I2/uT6/YHMV+d/7dcOrXrs3c+H3v3tLz8+cvcal+0gmvbm7sdj714ee/f62Lu3x969P/bu47F3n4+9+9rx7uvty2o+9O59eezd337VXj9wjuUPHyF/puzts9Abf6Of+Bv7xN/4J/4mPvE3+Ym/qY//TXzmb+bH/+a2uBS7PHUk8m+fOrcB5f0/kY//iX78T+zjf+If/5P4+J/kx//k5r//3ff523Dv7p/cdnj3/2R8/E/k43+iH/yT9b/8xy3fed3kdXisl/No4nrnZXPvT3L5+J+Mj/+JfPxP9ON/Yh//E//4n8TH/yQ//icf/9fPj//r18f/9evj//r18X/9+vi/fr0zoC7XP6k3f+If/5P4+J/kx/+kPv4n84N/sv5X/DwZdvMfdNT1WkJj2qvfxf2MqPU//99//N9//cf/+s//9G/rH/34v/6ff/lv//7Xf/2X3//57//f//r1f1lv/P8D","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":"7P3fjiPbtp37vcu61gUZHPynVzEMQ/bRMQQcSIYlXwl6d9dac2dWTWUnOWtHm8GeI37rau4NIov8Wi9Gb19kxfif//g//vP/8//3//5//Jf/+n/+t//+j//4f/uf//i//tv/6z/9j//y3/7rj//rf/7jOP71//vv/5//9F//+X/+9//xn/6//+Mf//F4XcZ/+Md//q//xz//8zT+13/4x//5X/6v//yP/zhO9//1H768ermeP169XK+Xz1cfb6N49Wmczv/26tP5cHvx6uPxcP14+Y//vt0/X3863arX367Lx8tv9+PPV9c//PjzZ1/Gry/+v/+HfxzP0DxCc4HmEZrrejSn2+n28WFv15+vPh5O//ojbn//H3EPBHw8fEBdjqfl5x+xlFQPx9PHzz6cf3n1+V9vaDls/Ybut1/ez+lP76d49/f7x6uXMQ6/jFsJ/3w4fg7z8vONLOd/jdBy3NFnXXb0WU87+qxjR5/1vKPPetnRZ73u6LPedvRZ7/v5rKep9qbLcvj4rJdx/PJZp9qbXnzWqfamF591qr3pxWcdO/qsU+1NLz7rVHvTi8861d704rNOtTe9+KxT7U3PP+uYam+6nu4fn/V6OXz5rFPtTS8+61R704vPOtXe9OKzjh191qn2phefdaq96cVnnWpvevFZp9qbXnzWqfam55/1PNXedDtfPz7r7Xr/8lmn2ptefNap9qYXn3WqvenFZx07+qxT7U0vPutUe9OLzzrV3vTis061N734rFPtTc8/62Xzvem4nD9+A+y4XK8vPuxyuX68/eVyv734sMv4+epx/7NcK97J8faxUh6P919+E/BevpPj+eenvN1f/ezb8vkpb79qvj+oH1F/A/UF9TdQP6H+91Afl0/q5/v/Tn2g/gbqZ9TfQP2C+t9C/frzZ99+VW5/UL+i/hepL4eP6V2WcV53Nb2h/gbqd9S3p37VTf8m6s+uplfd9B3UddN3UNdN/x7qTzfH60D9L+/rx5/UL//rf5O3V3UzBFKD/MvfA5fPT3k6vPzZz/c7DfId1DXId1DXIP8m6s/2u5sG+Q7qGuQ7qGuQfw/1p13mpkH+O1bw0+HLPxi/DSAzIJXCvwrydLx9gjyvc9U3DfId1DXId1DXIP8m6k/3Ow3yDdTvGuQ7qGuQfw/1p13mrkH+e1bw85fbCXelMARyTAXyfPr56uX2CuTh8vmEtR//fRy//PTyWcLj8PnOx/Lznf87niV8n6tCfhvsc3XIb4N9rhL5bbDP1SK/Dfa5auR3wX48zFUkvw/3uark9+E+V5n8Ptzn6p7fh/vA/S3cddX3cFdW38NdW30Pd3X1Pdz33Vc/T0v78d+/nE729x8nd9x3X30f99301X992u4t8Xr8PCzyT8mW7+S4fL76uNx+vu9lORavvlw/HgR/u/5y4/Z4a/YNfOzeKGV0jBynK6O/N6PuTbVPRu+7+nZvtTI6Hrs34N/L6PhLRvdXGR3Py+nnp7y+evU7U2rfl8fnz74fXqZ0OXx+2Osvx1Yvx0s37u378pzcl/Z9eVLu7+3Lt9ufuP/rHUU67eefsSynw4t3tJx/PhH6ery9ev/vTOuEzUM2I8BmGZ+f9k+zufzbn5HoIKfzx6K4nH7ZFGuip8Px4xf9T4fT8U/fJP96R5d27+ja7h0ldqnT7fM7biynF+/ocvvQdtdfz3b+eD/3Xu8ncth08v0cm72fxBXpNO4/38/48s3y4LDk0/j4e3A8XY4v/ozjz2+vHzP/y0bz49X/+jPGBn/GeYM/47LBn3EN/Bk/Mz/+GMc//RnFhHyTB9IfH5ydC80PNHdoHqB5cDLvTtA8+9eaxwcH+ULzA80CzSM0px2jefoPcY9jTIUm+Ezw4zhD8wjNBZpHaObahoOPwD6OubbhKJq5tuEkmvNc23Dw6ebH82zb8LMnZx/Psy24zz/tXDtr8AHHx/NkO2sSzWQ7axLNZDtr7nm+x/NkO2sSzWQ7axLNZDtr7lHNx8tsBvfZY4CPl2nX0PLTzrWGBp/WerzMtbNG0QxoHqGZa2cNPpz0eJlrZ42imWtnjaKZa2cNPnf2eJnttw6ePdP0eJ13Da0+7fZr6Ld5tsF1weYhmxM2D9kMbB6yOWPzkM0Fm4dsrtg8ZHPD5iGbOzaP2NwO2DxkYy9+zMZe/JiNvfgxm9Gezdv+demt/178Pjat9uJ/vaPINrpcP/9mHV69o+/zL/5vN2wesolso8fbIzb//DMeHYl3+CR6/eV7vP4zbvePT3E/Hl58M5zuH29n/PKv/Zd/auSC/WH5/KiHw+X2gv3pU3X++rNL8sv19vGel+v9/iKmYKaPDsP7men1+or3D7Kfv0dxvvx887dK6f54wcc/LT1ff4nneKjvBJxvP28FXI7XP73+Xx9g+e4f4JT4APdPT3755XZr+QGu948Pe/tlgTou5+K14/zxr7jH+fbLmyjHffl8fNRpufwi6//tb/aY5XOeTh9/o378vb9++ZznneR52Ume153kedtJnvdZPuf18vEmTrfDL5/zX1f25dGZUH/b57zdflbz0+nFB71cP3aj6/XXp1wd/3jvx43f+/Hw80cfLsuLN38+fy745/MYa1eA5bDs6+O+3Hhuh1c94nT5eEunX+dnqTrT8uN/H29o+eUJSMdLyWa5fv6mzfLy9xl23h+Ww9g4yx/X488sl1dZ3s+fr75fjpcXk3u/fX6h3u+Hw9e5Pe/os1529FmvO/qst3k+6/Hw40r3c+U4Ll8/7X1Pn/Z4mOnTXs6XnyvK9fTi9Xu/Dh+P02b/65NGPyZ92dWnPe3q046t28H98rOuXF982ttnFbr9UtDr157On09RPJ1/eXX5c68fL70fTn/6uf9icsbkC5MLJl+YXDsz+eff98+/+r+cGFK/+ndU2Pj5L3nH8su7Lt/0eRw/Xnz+87LwB8MbhqsZ3jFcy3A5YLia4RHD1QwXDFczPGG4muHAcDXD1j3imzBs3Tu+CUM9ZT1DPWU9Qz1lNcOTnrKeoZ6ynqGesp6hnrKe4cBwNUM9ZT1DPWU9Qz1lPUM9ZT1DPWU1w6GnrGeop6xnqKesZ6inrGc4MFzNUE9Zz1BPWc9QT1nPUE9Zz1BPWc3wrKesZ6inrGeop6xnqKesZzgwXM1QT1nPUE9Zz1BPWc9QT1nPUE9ZzfCip6xnqKesZ6inrGeop6xnODBczVBPWc9wrz3lcvz4hOOyXL5g2Wv1eIFlr23iBZa9FoTnWK573fkvn09VG5frVyx7XeNfYNnrZv4Cy16X7RdYBiwVlr2uxC+uRLbcEostt8Riyy2x7HbLffqVe7PlllhsuSUWW26JxZZbYhmwVFh2u+U+x7LbLfc5lt1uuc+x7HbLfY7FllthudtySyy23BKLLbfEstst96lYeH3W5z6xcLklFi63xGLLLb9ybbklFltugeV0sOWWWGy5JRZbbomFyy2xDFgqLFxuiYXLLbHYckssttwSiy23wnK05ZZYdrvlPhMLp+Nut9znWLjcEsuApcJiyy2/cm25JRZbbonFlltiseVWWHZ7IuoLLFxuiYXLLbFwuSWWAUuFxZZbYrHlllhsuSUWW26JxTMWKrGw2/M0X2DhckssXG6JxZZbfeXu9mzKF1hsuSUWW26JxZZbYrHllli43ArLbk9jfIGFyy2xcLklFltuiWXAUmGx5ZZYbLklFk8Sq8TCbk8JfIGFy62w7PYsvxdYbLnVV+5uT9x7gcWWW2IZsFRYbLklFltuiYXLLbFwuSUWLrfCstuT4F5gseWWWGy5JRZbbollwFJh8SSxSiw4+6zGwuWWWLjcEostt/rKdfZZjcWWW2Kx5ZZYbLkllgFLhYXLLbFwuSUWLrfEwuWWWGy5FRZnn9VYbLklFltuicWTxCqxsN+zz55j4XJLLFxuicWWW37l2nJLLLbcCouzz2osttwSiy23xMLlllgGLBUWLrfEwuWWWGy5JRZbbonFlltgGc4+q7F4klghFsZ+zz57joXLLbEMWCosttzyK9eWW2Kx5ZZYbLklFltuhcXZZzUWLrfEwuWWWLjcEsuApcJiyy2x2HJLLLbcEostt8TiSWKVWNjv2WfPsXC5JRYut8Riy62+cp19VmOx5ZZYbLklFltuicWWW2Lhciss+z377DkWLrfEwuWWWGy5JZYBS4XFlltiseWWWDxJrBIL+z377DkWLrfCst+zz55jseVWX7nOPqux2HJLLAOWCostt8Riyy2xcLklFi63xMLlVlj2e/bZcyy23BKLLbfEYsstsQxYKiyeJFaJhf2effYcC5dbYuFySyy23Oor19lnNRZbbonFlltiseWWWAYsFRYut8TC5ZZYuNwSC5dbYrHlVlicfVZjseWWWGy5JRZPEqvEwn7PPnuOhcstsXC5JRZbbvmVa8stsdhyKyzOPqux2HJLLLbcEguXW2IZsFRYuNwSC5dbYrHlllhsuSUWW26FxdlnNRZPEqvEwn7PPnuOhcstsQxYKiy23PIr15ZbYrHlllhsuSUWW26B5ezssxoLl1ti4XJLLFxuiWXAUmGx5ZZYbLklFltuicWWW2LxJLFCLJz3e/bZcyxcbomFyy2x2HKrr1xnn9VYbLklFltuicWWW2Kx5ZZYuNwKy37PPnuOhcstsXC5JRZbbollwFJhseWWWGy5JRZPEqvEwn7PPnuOhcutsOz37LPnWGy51Veus89qLLbcEsuApcJiyy2x2HJLLFxuiYXLLbFwuRWW/Z599hyLLbfEYsstsdhySywDlgqLJ4lVYmG/Z589x8Lllli43BKLLbf6ynX2WY3FlltiseWWWGy5JZYBS4WFyy2xcLklFi63xMLlllhsuRUWZ5/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"}}}
1
+ {"transpiled":true,"noir_version":"0.36.0+b0cbf84eaf69f77628939184c9b869cfb3e15846-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":"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","debug_symbols":"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","brillig_names":["lookup_validity"]},{"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":"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_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":"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_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":"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":"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_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":"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":"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_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":"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":"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_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":"H4sIAAAAAAAA/+19B5gUxfP23gbgyDmHQ6KCuunudlUUFBRQFFBQlODe3R5BMgcKJgxgAkXMCXPOOeecc84555zwq8JuaJq+89irmp36/r95nrqbnZ3peau6pt5+Z2ZnCgL/TrdGAoEv6v07XwAWUv+DYEXWsohjWSPHsiaOZc0cy1o4lrUFG2gt6+pYr5tjWZFjWXfHsl5qmTkVqP8D1f9EtCSZzJbGs7FELBONp8tSxdFkcVlJKpaKFaeKK+KpRCKbSqZK02Xp0mg6lkxkY5XF6URl9N+pc3BdW9E6TfFyTpxdyHBGo5w4u+aOM24vQGytwMIGVuyv1Wq+d2DdfBdjeVc1r7frBp+LwLqDbRJct1xPQSsG0bpNsV6E8exB1+8x89jCdousOBQQxyFEGIcAY872pKsBWU6cvXLHWWwvcB1bPY1jCCc939mY72UdW73hcx+wvmCbOo6tEHFOdSFsq3eQrm82Y6rP1PHrTdhWH8L49SOMnyu3NzNyu58x39eY39TK7f7weXOwLcC2VLkdMdqsbhpIFN/6RptRRVIx9T+u/ifU/6T6X6z+lwQD6w+mShwF3ya+unZiAaHzCY8GPNG6TbFiwoMgovC5kosad5QwvkEDZ6n6kApaDlBXsihh4Etr31b5f7QVSxEG1suEiDElRFp92Io7IWKECZEmTIithCZEnCkhtlYftuFOiDhhQmxNmBDbEI91CsEaG3HUbcdT8eLy0nR5eUmmuLysLJutLK0oyaQqY2UlmVi8LBGLZzKJRCqZjGayldmyZCJdEkumylOAuLQ8mkyvttqLgauVFbGKTHGyrDRaEq8oKSvGQGQTJWXpaGmiJFEcrSypLMtA6OOp8mSsvDQeTaeLo+nK4tJoLLuatn+jGyR8tqIslo2nE+WJ8mw6VlYJTmRhNpMpjlbEy4uTscpMugI6BHCBu9FEtrIsVl6ZiZeXJRLFpZUb+JtIxipKSosrM9FENFueTcRiiUxFcaI8k0hCHBJlsXRZSTZdWhKPJktKYVkSwhdPlichyhXZRDG7v0mIcwI6C1IvCjlYUZ6KZ1OZ4uJMujhekayojEfjxSWV2SjkXkU6mYbF0CeZaLQymimrjG2IL5PCyJREK6Lwp7K4IgVpnUxXJFOViWgyWRGF9IiWpVPZitJYaSZdVpyIZypLEtHyWHEiWpqO/c/fuvvbQLWF86WGNkkZ82ljfitjfmtjfhs1T4iP3F9sbwDg3BZsu+C/2ioc8IbcSoL0eboGX5ATcJC+3UGEJMnl9yBjpEDULusJxe3pkivBiXOH3HEm7AWuky7bGwUpacwPMOZ3sE66DIbPQ8B2BNspyH+yvgdh/g+l6/f1TtYPVeduIsp/Lwpkf4YCaZ4fGgbtDwfbGWwXsBFgu4LtBjYSbBTYaLDdwfYAGwM2FmxPsL3AxoHtDbYP2HiwCWATwSaB7QuWASsDKwerAMuCVYJNBpsCNhVsGth+YNPBZoDNBJsFNhtsDthcsHlgVWDzwRaA7Q92ANhCsEVgB4IdBHYw2CFgh4ItBjsM7HCwI8COBFsCthTsKLCjg6ozI0ZCc3bmsCBP4QxQ4oytLxOPUR+O1Rmvjwb84hdrGa7UwAJFLSeHEVSKbCVO0dgxhFXnWKbOpa60lD4ft15bsG4mnizJFkdLsikYr6dLUXCWZyorK0qjyfKyaFlZsiSaiCUqy0CRlsXTsNt0trg8tgaXl8PO4xiqKk7LgoyAlzEMO5cTJgOX38uNckTUrhMrRQFYHqRv93jiZNXFGtvFc1ZeMuBwgQx4gvqwwmbAExwMuMIDBhxOyIAnEBaAFUIYkNLnE4Uy4IlMDLgyyAh4JQMDnuRzBkS/TxLCgCsUVup2T2ZiwJPzwIA7C2TAU9SHU20GPMXBgKd6wIA7EzLgKYQF4FQhDEjp82lCGfA0JgY8PcgI+HQGBjzD5wyIfp8hhAFPVVip2z2TiQHPzAMD7iKQAc9SH862GfAsBwOe7QED7kLIgGcRFoCzhTAgpc/nCGXAc5gYcFWQEfAqBgY81+cMiH6fK4QBz1ZYqds9j4kBz8sDA44QyIDnqw8X2Ax4voMBL/CAAUcQMuD5hAXgAiEMSOnzhUIZ8EImBrwoyAj4IgYGvNjnDIh+XyyEAS9QWKnbvYSJAS/JAwPuKpABL1UfLrMZ8FIHA17mAQPuSsiAlxIWgMuEMCClz5cLZcDLmRjwiiAj4CsYGPBKnzMg+n2lEAa8TGGlbvcqJga8Kg8MuJtABrxafbjGZsCrHQx4jQcMuBshA15NWACuEcKAlD5fK5QBr2ViwOuCjICvY2DA633OgOj39UIY8BqFlbrdG5gY8IY8MOBIgQx4o/pwk82ANzoY8CYPGHAkIQPeSFgAbhLCgJQ+3yyUAW9mYsBbgoyAb2FgwFt9zoDo961CGPAmhZW63duYGPC2PDDgKIEMeLv6cIfNgLc7GPAODxhwFCED3k5YAO4QwoCUPt8plAHvZGLAu4KMgO9iYMC7fc6A6PfdQhjwDoWVut17mBjwnjww4GiBDHiv+nCfzYD3OhjwPg8YcDQhA95LWADuE8KAlD7fL5QB72diwAeCjIAfYGDAB33OgOj3g0IY8D6Flbrdh5gY8KE8MODuAhnwYfXhEZsBH3Yw4CMeMODuhAz4MGEBeEQIA1L6/KhQBnyUiQEfCzICfoyBAR/3OQOi348LYcBHFFbqdp9gYsAn8sCAewhkwCfVh6dsBnzSwYBPecCAexAy4JOEBeApIQxI6fPTQhnwaSYGfCbICPgZBgZ81ucMiH4/K4QBn1JYqdt9jokBn8sDA44RyIDPqw8v2Az4vIMBX/CAAccQMuDzhAXgBSEMSOnzi0IZ8EUmBnwpyAj4JQYGfNnnDIh+vyyEAV9QWKnbfYWJAV/JAwOOFciAr6oPr9kM+KqDAV/zgAHHEjLgq4QF4DUhDEjp8+tCGfB1JgZ8I8gI+A0GBnzT5wyIfr8phAFfU1ip232LiQHfygMD7imQAd9WH96xGfBtBwO+4wED7knIgG8TFoB3hDAgpc/vCmXAd5kY8L0gI+D3GBjwfZ8zIPr9vhAGfEdhpW73AyYG/CAPDLiXQAb8UH34yGbADx0M+JEHDLgXIQN+SFgAPhLCgJQ+fyyUAT9mYsBPgoyAP2FgwE99zoDo96dCGPAjhZW63c+YGPCzPDDgOIEM+Ln68IXNgJ87GPALDxhwHCEDfk5YAL4QwoCUPn8plAG/ZGLAr4KMgL9iYMCvfc6A6PfXQhjwC4WVut1vmBjwmzww4N4CGfBb9eE7mwG/dTDgdx4w4N6EDPgtYQH4TggDUvr8vVAG/J6JAX8IMgL+gYEBf/Q5A6LfPwphwO8UVup2f2JiwJ/ywID7CGTAn9WHX2wG/NnBgL94wID7EDLgz4QF4BchDEjp869CGfBXJgb8LcgI+DcGBvzd5wyIfv8uhAF/UVip2/2DiQH/yAMDjhfIgH+qD3/ZDPingwH/8oABxxMy4J+EBeAvIQxI6fPfQhnwbyYGXB1kBLyagQH/8TkDot//CGHAvxRW6naxglImqy7WOOM1A04QyIAFisGCOnD6P35hMyCuxM2AEwgZsCBEl6jBkAwGpPQ5FJLJgKEQDwOGQ4yAsXHqdiMhfzMg+h0JrQswUbssDBhUWKnbrcfEgPXywIATBTJgfZV/DWwGrO9gwAYeMOBEQgasT1gAGghhQEqfC4UyYCETAzYMMQJuyMCAjXzOgOh3IyEM2EBhpW63MRMDNs4DA04SyIBNVP41tRmwiYMBm3rAgJMIGbAJYQFoKoQBKX1uJpQBmzExYPMQI+DmDAzYwucMiH63EMKATRVW6nZbMjFgyzww4L4CGbCVyr/WNgO2cjBgaw8YcF9CBmxFWABaC2FASp/bCGXANkwM2DbECLgtAwO28zkDot/thDBga4WVut32TAzYPg8MmBHIgB1U/nW0GbCDgwE7esCAGUIG7EBYADoKYUBKnzsJZcBOTAzYOcQIuDMDA3bxOQOi312EMGBHhZW63a5MDNg1DwxYJpABu6n8K7IZsJuDAYs8YMAyQgbsRlgAioQwIKXP3YUyYHcmBtwkxAh4EwYG7OFzBkS/ewhhwCKFlbrdnkwM2DMPDFgukAF7qfzrbTNgLwcD9vaAAcsJGbAXYQHoLYQBKX3uI5QB+zAxYN8QI+C+DAy4qc8ZEP3eVAgD9lZYqdvdjIkBN8sDA1YIZMB+Kv/62wzYz8GA/T1gwApCBuxHWAD6C2FASp83F8qAmzMx4BYhRsBbMDDglj5nQPR7SyEM2F9hpW43ysSA0TwwYFYgA8ZU/sVtBow5GDDuAQNmCRkwRlgA4kIYkNLnhFAGTDAxYDLECDjJwIDFPmdA9LtYCAPGFVbqdkuYGLAkDwxYKZABS1X+pWwGLHUwYMoDBqwkZMBSwgKQEsKAlD6nhTJgmokBtwoxAt6KgQG39jkDot9bC2HAlMJK3e42TAy4TR4YcLJABhyg8m9bmwEHOBhwWw8YcDIhAw4gLADbCmFASp+3E8qA2zEx4MAQJ2AGBhzkcwZEvwcJYcBtFVbqdrdnYsDt88CAUwQy4A4q/wbbDLiDgwEHe8CAUwgZcAfCAjBYCANS+jxEKAMOYWLAHUOMgHdkYMCdfM6A6PdOQhhwsMJK3e5QJgYcmgcGnCqQAYep/BtuM+AwBwMO94ABpxIy4DDCAjBcCANS+ryzUAbcmYkBdwkxAt6FgQFH+JwB0e8RQhhwuMJK3e6uTAy4ax4YcJpABtxN5d9ImwF3czDgSA8YcBohA+5GWABGCmFASp9HCWXAUUwMODrECHg0AwPu7nMGRL93F8KAIxVW6nb3YGLAPfLAgPsJZMAxKv/G2gw4xsGAYz1gwP0IGXAMYQEYK4QBKX3eUygD7snEgHuFGAHvxcCA43zOgOj3OCEMOFZhpW53byYG3DsPDDhdIAPuo/JvvM2A+zgYcLwHDDidkAH3ISwA44UwIKXPE4Qy4AQmBpwYYgQ8kYEBJ/mcAdHvSUIYcLzCSt3uvkwMuG8eGHCGQAbMqPwrsxkw42DAMg8YcAYhA2YIC0CZEAak9LlcKAOWMzFgRYgRcAUDA2Z9zoDod1YIA5YprNTtVjIxYGUeGHCmQAacrPJvis2Akx0MOMUDBpxJyICTCQvAFCEMSOnzVKEMOJWJAaeFGAFPY2DA/XzOgOj3fkIYcIrCSt3udCYGnJ4HBpwlkAFnqPybaTPgDAcDzvSAAWcRMuAMwgIwUwgDUvo8SygDzmJiwNkhRsCzGRhwjs8ZEP2eI4QBZyqs1O3OZWLAuXlgwNkCGXCeyr8qmwHnORiwygMGnE3IgPMIC0CVEAak9Hm+UAacz8SAC0KMgBcwMOD+PmdA9Ht/IQxYpbBSt3sAEwMekAcGnCOQAReq/FtkM+BCBwMu8oAB5xAy4ELCArBICANS+nygUAY8kIkBDwoxAj6IgQEP9jkDot8HC2HARQordbuHMDHgIXlgwLkCGfBQlX+LbQY81MGAiz1gwLmEDHgoYQFYLIQBKX0+TCgDHsbEgIeHGAEfzsCAR/icAdHvI4Qw4GKFlbrdI5kY8Mg8MOA8gQy4ROXfUpsBlzgYcKkHDDiPkAGXEBaApUIYkNLno4Qy4FFMDHh0iBHw0QwMeIzPGRD9PkYIAy5VWKnbPZaJAY/NAwNWCWTA41T+LbMZ8DgHAy7zgAGrCBnwOMICsEwIA1L6vFwoAy5nYsDjQ4yAj2dgwBN8zoDo9wlCGHCZwkrd7gomBlyRBwacL5ABT1T5t9JmwBMdDLjSAwacT8iAJxIWgJVCGJDS55OEMuBJTAx4cogR8MkMDHiKzxkQ/T5FCAOuVFip2z2ViQFPzQMDLhDIgKep/DvdZsDTHAx4ugcMuICQAU8jLACnC2FASp/PEMqAZzAx4JkhRsBnMjDgWT5nQPT7LCEMeLrCSt3u2UwMeHYeGHB/gQx4jsq/VTYDnuNgwFUeMOD+hAx4DmEBWCWEASl9PlcoA57LxIDnhRgBn8fAgOf7nAHR7/OFMOAqhZW63QuYGPCCPDDgAQIZ8EKVfxfZDHihgwEv8oABDyBkwAsJC8BFQhiQ0ueLhTLgxUwMeEmIEfAlDAx4qc8ZEP2+VAgDXqSwUrd7GRMDXpYHBlwokAEvV/l3hc2AlzsY8AoPGHAhIQNeTlgArhDCgJQ+XymUAa9kYsCrQoyAr2JgwKt9zoDo99VCGPAKhZW63WuYGPCaPDDgIoEMeK3Kv+tsBrzWwYDXecCAiwgZ8FrCAnCdEAak9Pl6oQx4PRMD3hBiBHwDAwPe6HMGRL9vFMKA1yms1O3exMSAN+WBAQ8UyIA3q/y7xWbAmx0MeIsHDHggIQPeTFgAbhHCgJQ+3yqUAW9lYsDbQoyAb2NgwNt9zoDo9+1CGPAWhZW63TuYGPCOPDDgQQIZ8E6Vf3fZDHingwHv8oABDyJkwDsJC8BdQhiQ0ue7hTLg3UwMeE+IEfA9DAx4r88ZEP2+VwgD3qWwUrd7HxMD3pcHBjxYIAPer/LvAZsB73cw4AMeMODBhAx4P2EBeEAIA1L6/KBQBnyQiQEfCjECfoiBAR/2OQOi3w8LYcAHFFbqdh9hYsBH8sCAhwhkwEdV/j1mM+CjDgZ8zAMGPISQAR8lLACPCWFASp8fF8qAjzMx4BMhRsBPMDDgkz5nQPT7SSEM+JjCSt3uU0wM+FQeGPBQgQz4tMq/Z2wGfNrBgM94wICHEjLg04QF4BkhDEjp87NCGfBZJgZ8LsQI+DkGBnze5wyIfj8vhAGfUVip232BiQFfyAMDLhbIgC+q/HvJZsAXHQz4kgcMuJiQAV8kLAAvCWFASp9fFsqALzMx4CshRsCvMDDgqz5nQPT7VSEM+JLCSt3ua0wM+FoeGPAwgQz4usq/N2wGfN3BgG94wICHETLg64QF4A0hDEjp85tCGfBNJgZ8K8QI+C0GBnzb5wyIfr8thAHfUFip232HiQHfyQMDHi6QAd9V+feezYDvOhjwPQ8Y8HBCBnyXsAC8J4QBKX1+XygDvs/EgB+EGAF/wMCAH/qcAdHvD4Uw4HsKK3W7HzEx4Ed5YMAjBDLgxyr/PrEZ8GMHA37iAQMeQciAHxMWgE+EMCClz58KZcBPmRjwsxAj4M8YGPBznzMg+v25EAb8RGGlbvcLJgb8Ig8MeKRABvxS5d9XNgN+6WDArzxgwCMJGfBLwgLwlRAGpPT5a6EM+DUTA34TYgT8DQMDfutzBkS/vxXCgF8prNTtfsfEgN/lgQGXCGTA71X+/WAz4PcOBvzBAwZcQsiA3xMWgB+EMCClzz8KZcAfmRjwpxAj4J8YGPBnnzMg+v2zEAb8QWGlbvcXJgb8JQ8MuFQgA/6q8u83mwF/dTDgbx4w4FJCBvyVsAD8JoQBKX3+XSgD/s7EgH+EGAH/wcCAf/qcAdHvP4Uw4G8KK3W7fzEx4F95YMCjBDLg3yr/VtsM+LeDAVd7wIBHETLg34QFYLUQBqT0+R+hDPgPEwOucYALMDZO3W5B2N8MiH4XhNfFl6hdFgZcrbBStxsM8zAgtus1Ax4tkAFDKv/CujqtZcLwhgyIK3Ez4NGEDBgiLADhsAwGpPQ5EpbJgJEwDwPWCzMCrsfAgPV9zoDod30hDBhWWKnbbcDEgA0UA9rMR92H/QlZr0i1UwjYG4I1AmsM1gSsKVgzsOZgLcBagrUCaw3WBqwtWDuw9mAdwDqCdQLrDNYFrCtYN7AisO5gm4D1AOsJ1gusN1gfsL6qSpmxLFTEZy5r6FjWyLGssWNZE8eypo5lzRzLmjuWtXAsa+lY1sqxrLVjWRvHsraOZe0cy9o7lnVwLOvoWNbJsayzY1kXx7KujmXdHMuKHMu6O5Zt4ljWw7Gsp2NZL8ey3o5lfRzL+joGWd3V/4Hqf7Ru03rHbF3rV2GYbsDWkKgt9LERSVv/xqtx3duKq3jFmtS1reTa2Mea1q2tqNGPsWZ1aSu+Xk7EmufeVtTKr1iLHNsqqdwgV2Mtc2sr5cj7WKtc2ko5j6FY641vq7Sa4zHWZmPbKq322I613bi24jXUiVi7jWmrtMaaE2tf+7bK/6N+xTrUtq3S/6yFsY61aytai7oa61SbtqK1qtGxzv/dVnEt632sy3+1law1d8S61thWsnIjeCjWraa2SjeK02JF1beV2kh+jHWvpq105UZzbWwTd1vRHHg71sPVVjSnMUCs54ZtxXIcT8R62W1V5Dw2ifVev61EHcY5sT5GW/HKOo2ZYn09OplU17Fd3zBdW5uS+ZyIenkyaVPCvjLxbhZmBLwZw8mkfj4/mYR+9wuvCzBRu1EvLyHQFYYKzy4h9Fcx39y+hNBfJaG5bPMw/yUEiqqlFWl/wqTfnLhzOQ7w/mH6M5z9hbBdH8K+3oLM55Kkl2y3BRPbbRlmBLwlA9tFfc526HdUONv1IUu2dLkDLgvbxVTM4zbbxRxsF/eA7foQsl2MMOnjTJ1LXfUpfU7QVc9YIEDPxP1U0aC+6YBSGiSJRwvURQv7OMkwSvK73zp3qP0uFjI6pMzxEuY6Ea3bFMM+KWGoE0nCGJYKOF5KGY6XFPEIXY9VUgZWrlhQ51MJYT6lmeKaDm+o3KhrU2/COGxFFodk1kvluhVx/+lp6zAj4K0ZlOs2Pleu6Pc2wpVrb7JkK4s74LIo1wEq5tvaynWAQ7lu64FypahaWrkOIEz6bZk6l7rqU/q8nc9HpGlVNELEMUwTxpCy8A70eX+syReG0S2h3yx3ges8pB7JUubOIJ8rI4zhIIYYDiSM4fZCzkpQ1q8dfF5zsE92YKg5g5mU32BGRa1jQX0MUebTEKa4DvFAUfcijMOOZHEojXupqHck7j897RRmBLwTg6Ie6nNFjX4PFa6oe5ElWyrrgMuiqIepmA+3FfUwh6Ie7oGipqhaWlEPI0z64UydS131KX3e2eejqSGqaFAr6iGEMaQsvLv4vD8wX3ZhGN0S+s2iqHUeUo9kKXNnhM8VNcZwBEMMdyGM4a5CFDVl/drN5zUH+2Q3hpozkkn5jWRU1DoW1McQZT6NYorrKA8UdU/COIwmi0PW0wfTjCbuPz3tHmYEvDuDot7D54oa/d5DuKLuSZZssUoHXBZFPUbFfKytqMc4FPVYDxQ1RdXSinoMYdKPZepc6qpP6fOePh9NjVJFg1pRjyKMIWXh3cvn/YH5shfD6JbQbxZFrfOQeiRLmTvjfK6oMYbjGGK4F2EM9xaiqCnr1z4+rznYJ/sw1JzxTMpvPKOi1rGgPoYo82kCU1wneKCoexDGYSJZHBKeKuqJxP2np0lhRsCTGBT1vj5X1Oj3vsIVdQ+yZCv3TFFnVMzLbEWdcSjqMg8UNUXV0oo6Q5j0ZUydS131KX0u9/loaoIqGtSKegJhDCkLb4XP+wPzpYJhdEvoN4ui1nlIPZKlzJ2szxU1xjDLEMMKwhhWClHUlPVrss9rDvbJZIaaM4VJ+U1hVNQ6FtTHEGU+TWWK61QPFPUmhHGYRhaHjKfPu5xG3H962i/MCHg/BkU93eeKGv2eLlxRb0KWbCWePe9yhor5TFtRz3Ao6pkeKGqKqqUV9QzCpJ/J1LnUVZ/S51k+H01NVUWDWlFPJYwhZeGd7fP+wHyZzTC6JfSbRVHrPKQeyVLmzhyfK2qM4RyGGM4mjOFcIYqasn7N83nNwT6Zx1BzqpiUXxWjotaxoD6GKPNpPlNc53ugqLsTxmEBWRziaS8V9QLi/tPT/mFGwPszKOoDfK6o0e8DhCvq7mTJVlHqgMuiqBeqmC+yFfVCh6Je5IGipqhaWlEvJEz6RUydS131KX0+0OejqfmqaFAr6vmEMaQsvAf5vD8wXw5iGN0S+s2iqHUeUo9kKXPnYJ8raozhwQwxPIgwhocIUdSU9etQn9cc7JNDGWrOYiblt5hRUetYUB9DlPl0GFNcD/NAURcRxuFwsjiUpbxU1IcT95+ejggzAj6CQVEf6XNFjX4fKVxRF5ElWzLlgMuiqJeomC+1FfUSh6Je6oGipqhaWlEvIUz6pUydS131KX0+yuejqcNU0aBW1IcRxpCy8B7t8/7AfDmaYXRL6DeLotZ5SD2SpcydY3yuqDGGxzDE8GjCGB4rRFFT1q/jfF5zsE+OY6g5y5iU3zJGRa1jQX0MUebTcqa4LvdAUXcjjMPxZHEo9vSu7+OJ+09PJ4QZAZ/AoKhX+FxRo98rhCvqbnSnnTy76/tEFfOVtqI+0aGoV3qgqCmqllbUJxIm/UqmzqWu+pQ+n+Tz0dRyVTSoFfVywhhSFt6Tfd4fmC8nM4xuCf1mUdQ6D6lHspS5c4rPFTXG8BSGGJ5MGMNThShqyvp1ms9rDvbJaQw153Qm5Xc6o6LWsaA+hijz6QymuJ7hgaLuShiHM+mu0BR7qajPJO4/PZ0VZgR8FoOiPtvnihr9Plu4ou5KJ7rKHHBZFPU5KuarbEV9jkNRr/JAUVNULa2ozyFM+lVMnUtd9Sl9Ptfno6kzVNGgVtRnEMaQsvCe5/P+wHw5j2F0S+g3i6LWeUg9kqXMnfN9rqgxhuczxPA8whheIERRU9avC31ec7BPLmSoORcxKb+LGBW1jgX1MUSZTxczxfViDxR1F8I4XEI3nizxUlFfQtx/ero0zAj4UgZFfZnPFTX6fZlwRd2F7rRTxgGXRVFfrmJ+ha2oL3co6is8UNQUVUsr6ssJk/4Kps6lrvqUPl/p89HUxapoUCvqiwljSFl4r/J5f2C+XMUwuiX0m0VR6zykHslS5s7VPlfUGMOrGWJ4FWEMrxGiqCnr17U+rznYJ9cy1JzrmJTfdYyKWseC+hiizKfrmeJ6vQeKujNhHG4gi0PK07dn3UDcf3q6McwI+EYGRX2TzxU1+n2TcEXdmSzZSj17e9bNKua32Ir6ZoeivsUDRU1RtbSivpkw6W9h6lzqqk/p860+H01dr4oGtaK+njCGlIX3Np/3B+bLbQyjW0K/WRS1zkPqkSxl7tzuc0WNMbydIYa3EcbwDiGKmrJ+3enzmoN9cidDzbmLSfndxaiodSyojyHKfLqbKa53e6CoOxHG4R6hivoe4v7T071hRsD3Mijq+3yuqNHv+4Qr6k4CFfX9KuYP2Ir6foeifsADRU1RtbSivp8w6R8QoqgpfX7Q56Opu1XRoFbUdxPGkLLwPuTz/sB8eYhhdEvoN4ui1nlIPZKlzJ2Hfa6oMYYPM8TwIcIYPiJEUVPWr0d9XnOwTx5lqDmPMSm/xxgVtY4F9TFEmU+PM8X1cQ8UdUfCODxBFodiT5/1/QRx/+npyTAj4CcZFPVTPlfU6PdTwhV1R7Jky3j2rO+nVcyfsRX10w5F/YwHipqiamlF/TRh0j/D1LnUVZ/S52d9Ppp6XBUNakX9OGEMKQvvcz7vD8yX5xhGt4R+syhqnYfUI1nK3Hne54oaY/g8QwyfI4zhC0IUNWX9etHnNQf75EWGmvMSk/J7iVFR61hQH0OU+fQyU1xf9kBRdyCMwyt0irrCS0X9CnH/6enVMCPgVxkU9Ws+V9To92vCFXUHOtGVcMBlUdSvq5i/YSvq1x2K+g0PFDVF1dKK+nXCpH+DqXOpqz6lz2/6fDT1sioa1Ir6ZcIYUhbet3zeH5gvbzGMbgn9ZlHUOg+pR7KUufO2zxU1xvBthhi+RRjDd4Qoasr69a7Paw72ybsMNec9JuX3HqOi1rGgPoYo8+l9pri+74Gibk8Yhw/I4hD39Br1B8T9p6cPw4yAP2RQ1B/5XFGj3x8JV9TtyZKtwrNr1B+rmH9iK+qPHYr6Ew8UNUXV0or6Y8Kk/4Spc6mrPqXPn/p8NPW+KhrUivp9whhSFt7PfN4fmC+fMYxuCf1mUdQ6D6lHspS587nPFTXG8HOGGH5GGMMvhChqyvr1pc9rDvbJlww15ysm5fcVo6LWsaA+hijz6WumuH7tgaJuRxiHb8jikEh4qai/Ie4/PX0bZgT8LYOi/s7nihr9/k64om5HlmzlFQ64LIr6exXzH2xF/b1DUf/ggaKmqFpaUX9PmPQ/MHUuddWn9PlHn4+mvlZFg1pRf00YQ8rC+5PP+wPz5SeG0S2h3yyKWuch9UiWMnd+9rmixhj+zBDDnwhj+IsQRU1Zv371ec3BPvmVoeb8xqT8fmNU1DoW1McQZT79zhTX3z1Q1G0J4/AHWRyynl6j/oO4//T0Z5gR8J8Mivovnytq9Psv4Yq6LVmyxTy7Rv23ivlqW1H/7VDUqz1Q1BRVSyvqvwmTfjVT51JXfUqf//H5aOp3VTSoFfXvhDEkLbwRf/cH5gtipB7dEvrNoqh1HlKPZClzp4A5htG6TWuOZcRIHUMzd+oawyBxDPVEzQGU9Svk85qDfRJiqDlhwr42x1DhCJ+i1rGgPoYo8ynCFNdIhF9RtyGMQz2yOCQ9VdT1iPtPT/UjjIDrR+jbbUBILFx+N4isCzBRu54q6jZkAqTMM0VdqGLeMBJYXz0XRjZU1LgSt6JuQ6ioCwmTvmGEp3Opqz6lz418PpqKqKJBragjhDGkLLyNfd4fmC+NGUa3hH6zKGqdh9QjWcrcaeJzRY0xbMIQw8aEMWwqRFFT1q9mPq852CfNGGpOcybl15xRUetYUB9DlPnUgimuLTxQ1K0JFXVLsjiUpr1U1C2J+09PrSKMgFsxKOrWPlfU6Hdr4Yq6NZmiTpU64LIo6jYq5m1tRd3GoajbeqCoWxMq6jaESd82wtO55OdRCX1u5/PRVAtVNKgVdQvCGFIW3vY+7w/Ml/YMo1tCv1kUtc5D6pEsZe508Lmixhh2YIhhe8IYdhSiqCnrVyef1xzsk04MNaczk/LrzKiodSyojyHKfOrCFNcuHijqVoSKuivdFRpPFXVX4v7TU7cII+BuDIq6yOeKGv0uEq6oW5Ep6qRnirq7ivkmtqLu7lDUm3igqFsRKuruhEm/SYSnc6mrPqXPPXw+muqiiga1ou5CGEPKwtvT5/2B+dKTYXRL6DeLotZ5SD2SpcydXj5X1BjDXgwx7EkYw95CFDVl/erj85qDfdKHoeb0ZVJ+fRkVtY4F9TFEmU+bMsV1Uw8UdUtCRb0Z3TXqqJeKejPi/tNTvwgj4H4Mirq/zxU1+t1fuKJuSaao01EHXBZFvbmK+Ra2ot7coai38EBRtyRU1JsTJv0WEZ7Opa76lD5v6fPR1KaqaFAr6k0JY0hZeKM+7w/MlyjD6JbQbxZFrfOQeiRLmTsxnytqjGGMIYZRwhjGhShqyvqV8HnNwT5JMNScJJPySzIqah0L6mOIMp+KmeJa7IGibkGoqEvoxpMxLxV1CXH/6ak0wgi4lEFRp3yuqNHvlHBF3YJMUZdUOuCyKOq0ivlWtqJOOxT1Vh4o6haEijpNmPRbRXg6l7rqU/q8tc9HU8WqaFAr6mLCGFIW3m183h+YL9swjG4J/WZR1DoPqUeylLkzwOeKGmM4gCGG2xDGcFshipqyfm3n85qDfbIdQ80ZyKT8BjIqah0L6mOIMp8GMcV1kAeKujmhot6e7p5HT9+etT1x/+lphwgj4B0YFPVgnytq9HuwcEXdnO7JZBUOuCyKeoiK+Y62oh7iUNQ7eqComxMq6iGESb9jhKdzqas+pc87+Xw0NUgVDWpFPYgwhpSFd6jP+wPzZSjD6JbQbxZFrfOQeiRLmTvDfK6oMYbDGGI4lDCGw4Uoasr6tbPPaw72yc4MNWcXJuW3C6Oi1rGgPoYo82kEU1xHeKComxEq6l3J4pD19Br1rsT9p6fdIoyAd2NQ1CN9rqjR75HCFXUzuhcseXaNepSK+WhbUY9yKOrRHijqZoSKehRh0o+O8HQuddWn9Hl3n4+mRqiiQa2oRxDGkLLw7uHz/sB82YNhdEvoN4ui1nlIPZKlzJ0xPlfUGMMxDDHcgzCGY4Uoasr6tafPaw72yZ4MNWcvJuW3F6Oi1rGgPoYo82kcU1zHeaComxIq6r3J4lBZ7KWi3pu4//S0T4QR8D4Minq8zxU1+j1euKJuSvf63jIHXBZFPUHFfKKtqCc4FPVEDxR1U0JFPYEw6SdGeDqXuupT+jzJ56OpcapoUCvqcYQxpCy8+/q8PzBf9mUY3RL6zaKodR5Sj2Qpcyfjc0WNMcwwxHBfwhiWCVHUlPWr3Oc1B/uknKHmVDApvwpGRa1jQX0MUeZTlimuWQ8UdRNCRV1JFoe0p3d9VxL3n54mRxgBT2ZQ1FN8rqjR7ynCFXUTut9Re3bX91QV82m2op7qUNTTPFDUTQgV9VTCpJ8W4elc6qpP6fN+Ph9NZVXRoFbUWcIYUhbe6T7vD8yX6QyjW0K/WRS1zkPqkSxl7szwuaLGGM5giOF0whjOFKKoKevXLJ/XHOyTWQw1ZzaT8pvNqKh1LKiPIcp8msMU1zkeKOrGhIp6Lt01ak+f9T2XuP/0NC/CCHgeg6Ku8rmiRr+rhCvqxnR3fXv2rO/5KuYLbEU936GoF3igqBsTKur5hEm/IMLTudRVn9Ln/X0+mpqjiga1op5DGEPKwnuAz/sD8+UAhtEtod8silrnIfVIljJ3FvpcUWMMFzLE8ADCGC4Soqgp69eBPq852CcHMtScg5iU30GMilrHgvoYosyng5nierCKq5fqslGY1hc9HRJhBHwIg7o81OfqEv0+lEFdurBSHCCHMhzEhAcee3/7NYaUfi8WMpg4mNDnw3w+mEBfFzMMJg73+eAb++Vw5ppT1xgewTRwOCIPA4eGTAOHIyOMgI9kGDgs8fnAAf1eImTggIm8hOEgJjzw2PvbrzGk9HupkIHDEYQ+H+XzgQP6upRh4HC0zwcO2C9HM9ecusbwGKaBwzEeXMMvJLyGfyzhMeTlYOnYCM9g6bgII+DjGAZLy3w+WEK/l3k0WIrWbYodo7BSXzo8hrCPKPt7uc8JFAvdcgYCPd7nBIo+H8/g9wlMpHeC4xYQ6phw9xnFMb6MYdBDebyv8HneYwxXMMRwOWEMTxQitCg5Z6XPeQL7ZCVDvTyJqV6exHi5t7pYROs2xSjzCbHVU77jjYer1XzMmD82+C+n4PwKY/5UY/5sY/4CY/4yY/4aY/4mY/4OY/4+Y/4RY/4pY/4FY/41Y/4dY/4jY/4LY/47Y/4XY/4vYz4YWjffwJhvasy3NuY7GvNFxnxvY76/MR835lPG/LbG/GBjfrgxP9KYH2vMjzfmy4z5Kcb8TGO+yphfZMwvNuaXGvPLjPmVxvzpxvwqY/4iY/4KY/46Y/4WY/4uY/4BY/4xY/4ZY/4lY/4NY/49Y/4TY/4rY/4HY/43Y361MR8O/ztfFPh3wmV9w+u+72PM9zbmexnzPY35Hsb8JsZ8d2O+yJjvZsx3Nea7GPOdjflOxnxHY76DMd/emG9nzLc15tsY862N+VbGfEtjvoUx39yYb2bMNzXmmxjzjY35RsZ8Q2O+UM2fYuhW3R84DVT/o3WbYqcQ1lSEivwSDFQ/UeEuCLhP8lDsI1lakSmvKE04G6ceJFEGpU9AxsCwgNDnvkJ8DhL6vCmTz9TFZTPi46S6vonWbYr1I8TZLSijb/obbcWLM8Xl2eLS8tJEqjyTTaTKEqUVJclMqiRblqiIRiuKyyqz0UQmWxIrScQTmURFOhFNJ4uzmZJsNB3PcOLcPCAjnlsIwbmlEJxRYpzUNWMANDgoSFc3sK3BQXqcsQAdxgFBb7g2WrcpFif0uYeQep4IyMCZFIKzWAjOEiE4S4XgTAnBmRaCcyshOLcWgnMbITgHCMG5rRCc2wnBOVAIzkFCcG4vBOcOQnAOFoJziBCcOwrBuZMQnEOF4BwmBOdwITh3FoJzFyE4RwjBuasQnLsJwTlSCM5RQnCOFoJzdyE49xCCc4wQnGOF4NxTCM69hOAcJwTn3kJw7iME53ghOCcIwTlRCM5JQnDuKwRnRgjOMiE4y4XgrBCCMysEZ6UQnJOF4JwiBOdUITinCcG5nxCc04XgnCEE50whOGcJwTlbCM45QnDOFYJznhCcVUJwzheCc4EQnPsLwXmAEJwLheBcJATngUJwHiQE58FCcB4iBOehQnAuFoLzMCE4DxeC8wghOI8UgnOJEJxLheA8SgjOo4XgPEYIzmOF4DxOCM5lQnAuF4LzeCE4TxCCc4UQnCcKwblSCM6ThOA8WQjOU4TgPFUIztOE4DxdCM4zhOA8UwjOs4TgPFsIznOE4FwlBOe5QnCeJwTn+UJwXiAE54VCcF4kBOfFQnBeIgTnpUJwXiYE5+VCcF4hBOeVQnBeJQTn1UJwXiME57VCcF4nBOf1QnDeIATnjUJw3iQE581CcN4iBOetQnDeJgTn7UJw3iEE551CcN4lBOfdQnDeIwTnvUJw3icE5/1CcD4gBOeDQnA+JATnw0JwPiIE56NCcD4mBOfjQnA+IQTnk0JwPiUE59NCcD4jBOezQnA+JwTn80JwviAE54tCcL4kBOfLQnC+IgTnq0JwviYE5+tCcL4hBOebQnC+JQTn20JwviME57tCcL4nBOf7QnB+IATnh0JwfiQE58dCcH4iBOenQnB+JgTn50JwfiEE55dCcH4lBOfXQnB+IwTnt0JwficE5/dCcP4gBOePQnD+JATnz0Jw/iIE569CcP4mBOfvQnD+IQTnn0Jw/iUE599CcK4WgvMfITixQQk4C4TgDArBGRKCMywEZ0QIznpCcNYXgrOBEJyFQnA2FIKzkRCcjYXgbCIEZ1MhOJsJwdlcCM4WQnC2FIKzlRCcrYXgbCMEZ1shONsJwdleCM4OQnB2FIKzkxCcnYXg7CIEZ1chOLsJwVkkBGd3ITg3EYKzhxCcPYXg7CUEZ28hOPsIwdlXCM5NheDcTAjOfkJw9heCc3MhOLcQgnNLITijQnDGhOCMC8GZEIIzKQRnsRCcJUJwlgrBmRKCMy0E51ZCcG4tBOc2QnAOEIJzWyE4txOCc6AQnIOE4NxeCM4dhOAcLATnECE4dxSCcychOIcKwTlMCM7hQnDuLATnLkJwjhCCc1chOHcTgnOkEJyjhOAcLQTn7kJw7iEE5xghOMcKwbmnEJx7CcE5TgjOvYXg3EcIzvFCcE4QgnOiEJyThODcVwjOjBCcZUJwlgvBWSEEZ1YIzkohOCcLwTlFCM6pQnBOE4JzPyE4pwvBOUMIzplCcM4SgnO2EJxzhOCcKwTnPCE4q4TgnC8E5wIhOPcXgvMAITgXCsG5SAjOA4XgPEgIzoOF4DxECM5DheBcLATnYUJwHi4E5xFCcB4pBOcSITiXCsF5lBCcRwvBeYwQnMcKwXmcEJzLhOBcLgTn8UJwniAE5wohOE8UgnOlEJwnCcF5shCcpwjBeaoQnKcJwXm6EJxnCMF5phCcZwnBeTYTzqCFMxEtSSazpfFsLBHLROPpslRxNFlcVpKKpWLFqeKKeCqRyKaSqdJ0Wbo0mo4lE9lYZXE6Uana7kXo8zke+Ryt2xRbVUAXv6FBGfl4rpDj5jwhOM8XgvMCITgvFILzIiE4LxaC8xIhOC8VgvMyITgvF4LzCiE4rxSC8yohOK8WgvMaITivFYLzOiE4rxeC8wYhOG8UgvMmIThvFoLzFiE4bxWC8zYhOG8XgvMOITjvFILzLiE47xaC8x4hOO8VgvM+ITjvF4LzASE4HxSC8yEhOB8WgvMRITgfFYLzMSE4HxeC8wkhOJ8UgvMpITifFoLzGSE4nxWC8zkhOJ8XgvMFIThfFILzJSE4XxaC8xUhOF8VgvM1IThfF4LzDSE43xSC8y0hON8WgvMdITjfFYLzPSE43xeC8wMhOD8UgvMjITg/FoLzEyE4PxWC8zMhOD8XgvMLITi/FILzKyE4vxaC8xshOL8VgvM7ITi/F4LzByE4fxSC8ychOH8WgvMXITh/FYLzNyE4fxeC8w8mnEELZ11/Bx0m9PlPIT5HCH3+S4jP9Qh9/luIz/UJfV4txOcGhD7/I8TnQkKfEZwEnxsS+lwgxOdGhD4HhfjcmNDnkBCfmxD6HBbic1NCnyNCfG5G6HM9IT43J/S5vhCfWxD63ECIzy0JfS4U4nMrQp8bCvG5NaHPjYT43IbQ58ZCfG5L6HMTIT63I/S5qRCf2xP63EyIzx0IfW4uxOeOhD63EOJzJ0KfWwrxuTOhz62E+NyF0OfWQnzuSuhzGyE+dyP0ua0Qn4sIfW4nxOfuhD63F+LzJoQ+dxDicw9CnzsK8bknoc+dCH3G6+J4T8DP6saAPmB9wTYF2wysH1h/sM3BtgDbEvcJFgOLY1zAkmDFYCVgpWApsDTYVmBbg20DNgBsW7DtVBwGgW0PtgPYYLAhYDuC7QQ2FGwY2HCwncF2ARsBtivYbmAjwUaBjQbbHWwPsDFgY8H2BNsLbBzY3mD7gI0HmwA2EWwS2L5gGbAysHKwCrAsWCXYZLApYFPBpoHtBzYdbAbYTLBZYLPB5oDNBZsHVgU2H2wB2P5gB4AtBFsEdiDYQWAHgx0CdijYYrDDwA4HOwLsSLAlYEvBjgI7GuwYsGPBjgNbBrYc7HiwE8BWgJ0IthLsJLCTwU4BOxXsNLDTwc4AOxPsLLCzwc4BWwV2Lth5YOeDXQB2IdhFYBeDXQJ2KdhlYJeDXQF2JdhVYFeDXQN2Ldh1YNeD3QB2I9hNYDeD3QJ2K9htYLeD3QF2J9hdYHeD3QN2L9h9YPeDPQD2INhDYA+DPQL2KNhjYI+DPQH2JNhTYE+DPQP2LNhzYM+DvQD2IthLYC+DvQL2KthrYK+DvQH2JthbYG+DvQP2Lth7YO+DfQD2IdhHYB+DfQL2KdhnYJ+DfQH2JdhXYF+DfQP2Ldh3YN+D/QD2I9hPYD+D/QL2K9hvYL+D/QH2J9hfYH+DrQb7BwwPuAKwIFgILAwWAasHVh+sAVghWEOwRmCNwZqANQVrBtYcrAVYS7BWYK3B2oC1BWsH1h6sA1hHsE5gncG6gHUF6wZWBNYdbBOwHmA9wXqB9QbrA9YXbFOwzcD6gfUH2xxsC7AtwaJgMbA4WAIsCVYMVgJWCpYCS4NtBbY12DZgA8C2BdsOr7WDDQLbHmwHsMFgQ8B2BNsJbCjYMLDhYDuD7QI2AmxXsN3ARoKNAhsNtjvYHmBjwMaC7Qm2F9g4sL3B9gEbDzYBbCLYJLB9wTJgZWDlYBVgWbBKsMlgU8Cmgk0D2w9sOtgMsJlgs8Bmg80Bw3fa4/vi8V3s+J5zfIc4vp8b332N75XGdzbj+5DxXcP4Hl98Ry6+f3YxGL43Fd9Jiu/7xHdp4nsq8R2Q+H5FfHchvhcQ37mH77PDd8Xhe9jwHWf4/jB8Nxe+9wrfKYXva8J3IeF7hvAdPvh+HHz3DL7XBd+Zgu8jwXd94Lsv8L0S+J6F88Dw/QD47H18rj0+Mx6fx47POsfniOMzuvH51/hsaXxuMz4TGZ83jM/yxefk4jNo8fmu+OxUfC4pPvMTn6eJz6rE50DiMxbx+YX4bEB87h4+0w6fF4fPYsPnnN0Hhs/nwmdf4XOl8JlN+DwkfNYQPscHn5GDz5/BZ7vgc1PwmST4vA98lgY+pwKfAYHPV8BnF+BzAfA39/h7dvytOP4OG3/jjL8fxt/m4u9e8Tel+HtN/C0k/s4Qf8OHv4/D357h77rwN1P4eyT8rQ/+jgZ/o4K//8DfVuDvFvA3AXi/Pd7LjveJ4z3YeH8z3juM9+XiPa/In3ivJt4HifcY4v17eG8c3iuG907hvUR4bw3ea4KDC7wXAa/N47VqvHaL1zLx2h5e68JrP3gtBK8N4LlyPHeM51Lx3CKea8NzT3guBs9NoFZH7YpaDrUNjvVx7ItjQRwb4Vgh+G/JCSDX49QnsG5ScAIh9T3eM4b3UOE9RXiPDd5zgvdg4D0JeI0er1njNVy8ponX+PCaF14DwmsieI0Az5njOWQ8p4rnGPGcG56DwnMyeI4CNTtqWNR0RWDdwXAMjGNCHCPh+156BzacphnzLYz5zup/pqoqO2N2VVHVrKJMRUXR/lOrphTNWpCdWzl9FlLyGox6GqD+7zh/ZnnV1Fkzi2C9qZULJ82eO3VBpio7KTO/ago0UFSemVk0a+b0hUVlWZifPj1bUTSvKlM1FeeR39c4pScNesTUeTMyVeVTimbOqsoWTclmKrJzi8pnzayamymvQmxzs/PmbWFCD6gQVLv1vKpZczOTs0Xzps+qWrNlvxwC8Glw47f5PIdtfs9hmz9z2KZRaOO3aZLDNl1y2KZbDttsmcM2sRy2GZTDNjvksM3uOWwzJodtsjlsMzmHbfbPYZuFOWxzTA7bHJfDNmflsM05OWxzdQ7bXJvDNvfmsM39OWzzfA7bvJjDNh/msM3HOWzzcw7b/JrDNvXDG79NYQ7bdMhhm045bNMvh202z2GbATlss10O2+yWwzajctgmk8M25TlsMy+HbebnsM2SHLY5KodtTsthmzNy2ObyHLa5Modt7sxhm7tz2ObpHLZ5NodtXsthm/dz2OZzY5vuG24zY/70qqmzQbNssOG3OezsB8fORoB+QTUCCqUIldKsuVMXgTIqW1iUKS+fNX8mng1ZI/twWrJu+7XLBs2dm1lYNHVmRfaAolnzq4pmVRaVwXYV88wNl+e64Sm5brgq1w0vyXXDa3Pd8LZcN8QzgnqqdfKYDXQzGqhNEpnb9izIEXX/Ouw0lutOt6nDTifWNczluaKeVQfUVbnu9OA67PTwXHd6XB12uiLXnZ5Rh52uynWnl9Zhp1flutOb67DTO3Ld6YN12Oljue70xTrs9M06bPteroA/y3XDn+qA9i9j26bq/+5VmfL9YMtZRRXZLF4UWXN2N2D8r3ntbhu1dveNWru/+qZvrdb+UY1z4v+59pqT4zh1VecsC9VnfQoTm0N5PFB9jtZtihUa7VK3n4omywoD60/E+BOFgXUXGbjio9tkaH/Nj6tx2mHxuvZtX3Bqoj4bx8nabfBCSnNjPZwGG+0VWN8NcexLf7fjYve+cdrJ+C5sfTfU+C5ifTfM+K6e9d1w4zsdi1YGfr0MffytYN22Jj69PU6FFj7i/koXWPsLBNbPjYC1/4YB1vyJFVj703js+Jj9bPaRua2OXT3Ln4E0WNf8aM/et7kv8zvTj4jDD421vvHdQEac9XPE+b+28teWzpEGxvaUtduFVe+rWcBdh0w/XMdsuIaYmNub9dferqCa/4HAhrXKtR8X5mYOX21/NraPze31eoXV7Geg+hyt27SWzwst7ETtR3X7DXnaj+n+bmTENdf+bmi1xcVNjS08Nn6bmxo7fNNxbcKCNZaqLa83sWLXmAXPutg1CWwYu8aO2On4NOWJT2mB1b6Jp6kjProvmzm+023pMWvEaMtcv6nho7m+Oa+3N5ftpP43d7Rpc0mzwIb+mMt0fHGcMkjNM+diaZPAhrGu6zHOkxfr8tQVx6YOPDWt36iG9Ztv5PotNnL9lhuJv9VGtt96I9dvs5Hrt93I9dtt5PrtHeu76pDO3Q7Gd3YN72gsz0cN1/tvaGHlOjY6BjaMXQdH7DCeevw4OVu166yq7DwTt9lWO4dfpt/mOuaxY6/nGgs1s9pxHYPm8hbVLG9ZzfJW1SxvXc3yNtUsb1vN8naBDSdcHrE+N7A+N7Q+23yljwFXXG0Mrjhzfg54uC8KrPpYc80XWMtrym39ndl3NR1jev1GjvXNMbut48xjpJG1nTl+LrSwu9p27dvcrqHVRk2Ya/KxpnG3eTw0c+xXb1vo2I7j/C3TODrlGqsFAvR6kml8Vazbb8bTflzztc0RZt+34Nl3ssDaXyDg5mu9/4YWVi6+do0dzfjYY52WDqzNHd/Z2sM15mzp2I9XbWl/zDqi6yDqn/2tfWpfw8Y+XdtGrPWbFaxrc5FeZrSrtw9b37muixRU8525zOW/ub1dN83z5i7+sdev6dy7i0uCDh+Zr1ukNFZ9vt3U3K5rARFr/aUWzvo8OKOuMWP9WsS7pv6p51jfjLPNg2bf1bP8ZjovWWP/NHNgtfvneAtnPvvHdR54Y/vHjLP233VO3e6fejx+r+0f7avZP40ceCLW+qdaOAt5cDr7p7AW8a6pf+o71jfjrP13XSOob/nN1D9J5riu7X89Ro5UE4tC43tz/XOtODCNp539b+7LxBgI1K7/XdrKjLP2X/e/WQ8aWn7no3/MsXl1/XOphfP/p/7R/uv+MfPVo/4pYY7r2v7XOjJSTSwaGd+b619nxYFJzzn739yXiTEQqF3//5fO1/7XRucz9X8pt84vsGJZXf+b+WGuf7sVBya97ex/c1/V9WdN/e+6JmfG2e5/MzeaWn4XWG0PJPG7pJT3uns86sovQvzlrrpA136yxJV3hPizuv3mLO2XJl3nigjxrz0P1pKn/bX3VZjXJvSxoPfd2lhOeN2quMDaXyDgPg+m99/Qwkpco9aeB3NdszTjY58Ha+PA2tzxnX0Mua51tnHsx9VWyxzb0n3a1tp+oPocrdNUknZhbUvod2PCtlrk2JaOoX0tZqD6HK3TVJJ0YW1H6HchYVvNc2xLx7C9tf1A9Tlap6mk0oW1PaHflDEsIGwr15ym7FvueOVa+7hxNSNsizJXKftR55fWEXrd+iqJmccMJU0ceNWu1+67A9O+C6z96fiZy8z9N3Hg0bhd9+DU5WWaiWi8NBuNRdPZ4nhFNFZZYLWvsdrLbE3lumfHNfbRse4UYIl1Ul+3Di1e135HI644hY3vOljfRYzvNEa8HrXaylOme7KStYm/uf/mju/M+/c3pi9bBjY8blsb8dHtmX6b35k5HbG+c/2GpYn1GecbWt+5rv3Z9/DjvH1N1jynqvV7I8MHsx65rsXa5z31+i1VABDzswXr1jf5JVhNm/a5A55aF41qPPr4M683t3bgiVjrd7L80uNw8/6clo52bJ4w92uO5YPWfttY+3WNk7nPKdnjZNf9qiZP22MJHdd61azfyvJZr19k+dzGQ5/1vpi5t9TOC/OYMzV5aytGev1eVozaehgjW4O6NH5NvOgaM5lx1v7rc41mXrWpxb7N+EWq2Xe9wMbFe3MfxJt33+tysp0RA1f/tLVipNePWzFq72GM7DG+6172mnLSdS+7GWftv85J1/kE13Z27aopnmYbrvFGQWD9c/n/lfu2htL7qW3u6/UH+ICDajq3av/X8bCX2VrM9F3rumaBDfvQ1nyu/mpbw37M7dta/pjnGMz75IZUM94wj0lzW/uapF7/lYJ1bQ4tWN9Hc3u75rpiU+D4riZd4/K/ldWWK4dbONqqKfbm8dGgBj/a1qKtmvb9XzXCvgfMxNWuFm3VtG/Xb2fMNu37m0xc7a3vzH4PV4OruvG6fa2XR/OtG69r7Oa4uaMDT8Raf5J1/HQ2YueKn30uvJNjv52Ndezxeidrvzo+XZji46qVel/MfZOyYxSpJqYdq4lRhRWjzh7GSO/LdU6khRE/nMKLWXCl1zy0PrgOh318R4z9mnEMBNbF2VzfrhWdHOubuWD+9shcvyCw4e+VXPexm31sj6/1fupVs759zlOvP9vKCZ5zYe6c0PvK53Fj1uTqjpv5PjhuuHLS/s2D2f+aw/WxYuaTPe53naMwY2vnq96+XjXr2+co9PqHWH3BxYOuvtD7YtZZKbuvqztH0d6KkV7/CB8c03Y/BwIb1iWcanPu3oyz9r95YMP+t88Pm/lkjwM39vyF3r62Gk6vv8zqi3xoc2b9mLL7urrzF+2sGOn1T/TBMW33cyBAow/se2nM/rc1qZlP9jVw13jAjK2dr65zDq0d7du69UyrL/JxzoH5XF/K7uvqxgPVnW871wfHtN3PgUDN5wRqym8zzvZ4wOx/+3qY69xxruMBV77WNB7Q61/2fzxfXedZ7Hy92uf5anLxxuarPR4w+1/jcY0HWlv7cf0Gt6bxgOsaWyvHvu1rbLdYfZHP6xlM13xTdl+b+drS0Qf2MX2nD45pu58DAZrzpHqfzQMb9r9yO+fxgBnb2uSr67fvdr4+9H88X101w87Xx32erzWNB/4rX+3xgOsam+tZCnZdNs936/Vc96248trEbOe12ZZrfTuv9fovWX3GdD++s8/s8youvOYzG1zXFuzxVk26xcV3/3X+pTqt9pYVt3yef2G6723t9fhcz7O/b8XIb+cLa7oeX9tz2DonzfGdR+dzEzX1T23O537ug/5xXQcx+Q6n8GIWXEnXdRCzfkSM/VaXQzWdw6vLOefa6IW6nFe2NZJe/2cf1DXX/RH2fRguX8z7FjhzpzT17/VhnHTe6mPPnsLG9+b6f3uA0xVnc1/63luc6i9e933IwroGv5rXx2sDc33ru8LFG+5L76eh+qyva9ttaRwRa/0G6uDS9xnUM7bR2zd37L+etf/1cDuWmcew3VbIsUyvj7lXoD40qganWeNw0r6asajnaDtird8kuG6fzYz6tWZdx/5wvS41rFdQzf81bTiWhRevv8wVIzN39Pprnzu9eEOM+rtGxndm/cWpsfpsxstsS+OIWOt3snLH7G+9fXPH/htY+18Pt2OZnTuNHOs3cqyP/dNafVj77A9j34T1IGbmAuapfsGQ8Hf0lJjPG2HA/7939AT+vbetkbEeToON9gqs74Y49mW+F0cvw3b1WDzkiIOZM9U9p8/mXlcbZjv2b59Mfweq/9GNm2L2AhPzf/mmv3M9x87229zefE5ZIOAeC7rehVEdNntbV7vBGvz4r23N2Nf0eyLMM7+P4bqqz/kew21m4ZBZw1PJ/9Xwmifq96wVWG0EAuvqgLmtXSs5/AMOT/I+PzQZdZ1rMGsRTuHF6+/b/M4ck2mMJneZ3DbQ+L6n0Y4d77Vj6ABn7iRjBdb+AoENx/bm/hsGeI+VgsCGfGTzeiCw/nsF9G8aJ2erBs2vmrLn1KqZ2XkbvF1AtzjQWG5+b072OvZ69vquX9xqhJLUdA/12c9qWp8hlDAS2FT7wogTp/8aCSQtHELVXLFXIwEmpo7zMpl7JGD6Yo7qzfVc29Q0WuAcMfEz/roRGdMTe9degXE9Ldr1hOea3vpaW4ZeW8sDrDkcq8k3E7/ODdebJO1fd9XlDZo1veHVqz41Y22/Bbi2o8qI9V11o0rzCpnrGNTr9VHzOPocotoKGOvi5PfxSG/12c/jEX2mFHkW476F0VZ1+eIaybqeAG+/OZQpt+M1jbpdT4NpHFh3xm92pny/0dmq+XNnzjNLlL1pwOGy/q7AWF4dZdnbhIz1zUnCsDChPud7WFho4WC6gWztsJDrgSn1HX6aN3q1sfw0c2kgEQbdns6DiAOTfeHOLNcmvgJ6fLGANYUc+9KT62EGNkb7RV4DaXDGdftcD6l35Yr5kPlG1ne6z8KO7Qqq+Ry0/te0bkEN7TZxfGdeMLGX/T9mDXlnarsFAA==","debug_symbols":"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m0pqe1MJ3ptqR37tWRfvTbUjv/asW9ubSmp7U0ltbyqp7U0leG+q7QMz3ptqRz696+7Irz3r1vamktreVFLbm0pqe1NJbW8qqe1NJXhvqh35tWddvDfVjvzas25tbyqp7U0ltb2ppLY3leC9qbYPzHhvqh35tWddvDfVjvzaXbe2N5XU9qaS2t5UUtubSmp7Uwnem2pHfu1ZF+9NtSO/9qxb25tKantTSW1vKqntTSV4b6rtAzPem2pbPt6bakd+7Vm3tjeV1PamktreVFLbm0pqe1NJbW8qwXtT7civPevival25NeedWt7U0ltbyqp7U0ltb2pBO9NtX1gxntT7civPevivak25Wttbyqt7U2ltb2ptLY3lS6lu67W9qZSvDfVjvzSs67ival25JeedbW2N5XW9qbS2t5UWtubSvHeVNsHZrw31Y780rOu4r2pduTX7rq1vam0tjeV1vam0treVFrbm0rx3lQ78mvPunhvqh35tWfd2t5UWtubSmt7U2ltbyrFe1NtH5jx3lQ78uldd0d+7a5b25tKa3tTaW1vKq3tTaW1vakU7021XThre1NpbW8qxXtT7ez92l23tjeV1vam0treVFrbm0rx3lTbhRPvTbUjv3bXxXtT7civ3XVre1NpbW8qre1NpbW9qbS2N5Xival25Nf+hhnvTbUjv/a/16V7U7UuF/mt23P507uuxHK52GR579HvFN24keoiTxW9i/Fit5McF2nSlmUnRrZ2UZR96derpb/0sWP0y8Xmj9cu7fe/rz999/PrH398/e9//PjT99/++vqnN7883Lk8/NfL71s1l/zjcc3tUamIv/2A/chN48BNL7/Rs3eTHLlJj9xkR27yIzfFkZvyyE1HdoQe2RF6ZEfYkR1hR3aEHdkRdmRH2JEdYUd2hB3ZEXZkR9iRHWFHdoQf2RF+ZEf4kR3hR3bEy99wt/DLhN56k/du+mb76vE8RJwfIs8P0c4P0c8PMU4P8fI3l58Wwtu4HHtCmj05ZthLh6TQy7NtyPtXPwgSmiClCTKaIKcJCpqgpAlqNEGdJmjABCWtUietUietUietUietUietUietUietUietUietUjdapW60St1olbrRKnWjVepGq9SNVqkbrVI3WqVutErdaZW60yp1p1XqTqvUnVapO61Sd1ql7rRK3WmVutMq9aBV6kGr1OMG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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","pack_returns_oracle_wrapper","directive_invert","directive_integer_quotient"]},{"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":"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_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":"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_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":"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":"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_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":"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":"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_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":"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":"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_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","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":"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":"7Z3druS2sYXfZa59wZ/in1/l4CCwEycYwBgHtnOAA8Pvnp6ZLXV7RIl7c5eoKva6CexYpa76tshVi90i//jwj59+/M+//vbx0z9/+e3D9//zx4eff/n7D79//OXT7d/++PO7Dz/++vHnnz/+62+P//cH8/l/KHy5/rd///Dp87/+9vsPv/7+4XtH/rsPP336x+d/yrf4f378+acP35Mvf/7vdx8ovjkkuLeFfLe5NrmXS1Narwxf7+1PvDedeO9w4r3jifdOJ947n3jvct69oznx3vbEe584LuOJ4zKeOC7jieMynjgu44njMp44LuOJ4zKdOC7TieMynTgu04njMp04LtOJ4zKdOC7TieMynTgu04njMp84LvOJ4zKfOC7zieMynzgu84njMp84LvOJ4zKfOC7zieOynDguy4njspw4LsuJ47KcOC7LieOynDguy4njspw4LsuJ49Iac+bN7Zk3d2fe3J95czrz5uHMm8czb57OvHk+8+ZnjlB75gi1Z45Qe+YItWeOUHvmCLVnjlB75gi1Z45Qe+YItWeOUHfmCHVnjlB35gh1Z45Qd+YIdWeOUHfmCHVnjlB35gh1Z45QevcfNN6a2ZeLoyW/Xn3T/srVPpflal/s/WpHX9OJstJJstLJstIpotIJRlY6VlY6TlY6XlY6JCsdWbNykDUrB1mzcpA1KwdZs3KUNStHWbNyHDyyoo3Lxe5+Z1fs12wGPzrRl+ViCptskhGVjRWVjROVjReVDYnKJojK5v3zjckP2VAjm+Do5eLwMN8Qma/ZJFHZZFHZFEnZvP/XI6zZWFHZOFHZeFHZkKhsgqhs3j8Xu7syOOffl00SlU0WlU2RlM37fzHEmo0VlY0TlY0XlQ2JyiaIykbUXFxEzcVF1FxcJM3Fzkiai52RNBc7I2kudkbSXOyMpLnYGUlzsTOS5mJnJM3Fzkiai50RNRdbUXOxFTUXW1FzsRU1F1tRc7EVNRdbUXOxFTUXWzFzceVrxxTTy8U+b752dFbMxP3m1J2YWf7tqYuRhLenLkY/3p66GLF5e+pilOntqYuRsbenLkbz3p66GIF8e+p61dTpVVOvV029XjX1etXU61VTr1dNvV419XrV1OtVU69XTb1eNSW9akp61ZT0qinpVVPSq6akV01Jr5qSXjUlvWpKetU06FXToFdNg141DXrVlOH908tS16umQa+aBr1qGvSqadCrplGvmka9ahr1qmnUq6bv36v+utT1qmnUq6ZRr5pGvWoa9app0qumSa+aJr1qmvSqKcN+CpelrldNk141TXrVNOlV06RXTbNeNc161TTrVdOsV00ZdsQ4L/W8puFzSJvUJatpI3XJatpInUFNw5JN9CY3UnfG5OXWJpv1av+5kM3V1gS7ZHL75+D/cv2X/LPy/Ivu/Dm2C7k0f6s8f6c8f688f1Kef1Cef1Sev3L9Lcr1t+jWX2906683uvXXG936641u/fVGt/56o1t/vdGtv97o1l9vdOuvN8r11yrXX6tcf61y/bXK9Zdje6NL81euv1a6/oZyzz+5bf7S9beVv3T9beUvXX8b+Tvp+tvKX7r+tvKXrr+t/KXrbyt/6frbyl+6/rbyV66/Tvj8Hx/6n9snbfL3wuefmB7yz2mbv/D5p5m/8Pmnmb/w+aeZv/D5p5m/8P6/mb/w/r+Zv/T5v5E/Ce//m/kL7/+b+b9ff29zwJI/fc75OH+bwnLr25fP714/Ydgj59r8SXn+QXn+UXn+SXn+WXn+RXf+DNvoXJu/VZ6/cv0NyvWXYWuda/NXrr9Buf4G5foblOtvUK6/Ubn+RuX6G5Xrb1Suvwyb8Vybv3L9jcr1NyrX36hcf6Ny/U3S9bfx/W+Srr+t/KXrbyt/6frbyl+6/rbyl66/rfyl628rf+n628pfuv628peuv438s3L9zcLn/9bvr7Lw+af1/XUWPv808xc+/zTzFz7/tPIvwuefZv7C+/9m/sL7/2b+0uf/Vv6kPH/h/X8jf2LY/4Hi0qLEYFIjf2vL8mszeyvgfu/q5mMhknu5OsTsWvc2ebnaWkONq/c3QfvCxYJLlYsDlyoXDy5VLgQuVS4BXKpcIrhUuSRwqXLJ4FLlUsClxsWi361zQb9b54J+t84F/W6dC4FLlQv63ToX9Lt1Luh361zQ79a5oN+tcnHod+tc0O/WuaDfrXNBv1vnQuBS5YJ+t84F/W6dC/rdOhf0u3Uu6HerXDz63ToX9Lt1Luh3331qJHk0xwwQCRDfDxFtNwNE9OgMENHQM0BE988AEVbh/RAJvoIBIkwIA0Q4FgaIcCwMEAkQ3w8RjoUBIhwLA0Q4FgaIcCwMEOFY3g8xwLEwQIRjYYAIx8IAEY6FASIB4vshwrEwQIRjYYAIx8IAEY6FASIcy/shRjgWBohwLAwQ4VgYIMKxvAZiXoH4HNIGIgHi+yHCsTBAnMmxuBiXe59wZvrxnv8UZ7It15KcybtcS3ImA3MpyTSTi7mW5ExW5lqSM/mZa0nOZGquJUkgyURyJntzLUl4HC6S8DhcJOFxuEjC4zCRzPA4XCThcbhIwuNwkYTH4SJJIMlEEh6HiyQ8DhdJeBwukvA4XCThcZhIFngcLpLwOFwk4XG4SMLjcJEkkHwlyeOzvKnA43CRhMfhIgmPw0USHoeLJDwOD8kw1enP15KEx+EiCY/DRRIeh4sk+slXkowPbjG6sCUJ7X4tyfRAMqcNyalOsr2WJLSbiyS0m4sktJuLJIEkE0msT3KRRD/JRRLrk1wksT7JRVK4x8lLtSFF02LjzHJv57JtXW1TWK8uue27j79bDNJPL1ZEUrjHUURSuMdRRFK4x1FEkkCSiaRwj6OIpHCPo4ikcI+jiKRwj6OIJDwOE0npJ1YrIgmPw0USHoeLJDwOF0kCSSaS8DhcJOFxuEjC43CRhMfhIgmPw0RS+unZikjC43CRhMfhIgmPw0WSQJKJJDwOF0l4HC6S8DivJdl4H0f6KduKSMLjMJGUft62IpLwOFwk4XG4SMLjcJEkkGQiCY/DRRIeh4sk+slXkmy9KS/9DFpBJBvv40g/iFYRSWg3F0loNxdJaDcXSaxPcpHE+iQXSfSTTCSln0uriCTWJ7lIjvY4br3auhIbJG9XL9Vab+7cbapVS34BSfnu5m4f8qVQ/yyF0rMUGp6l0PgshaZnKTTPU+ht6XYRu7gttDxJocPP47ysUDtRocmsfVrZFDpRZ3Rc6ESd0XGhNFGhqyGJxm8KnagzOi50os7ouNCJOqOHQq3dFDpTZ3RY6ESdUUx2SeRh876XQstEndFxoRN1RseFTtQZxbxcHAttCp2oMzoulJ6l0Ik6o+NCJ+qMkllunWzeFDpRZ3Rc6ESd0XGhE3VGR4VGM1Fn9FCoi5tCJ+qMjgudqDM6LnSiziiV5eJsaFMoPUuhE3VGx4XO1BkdFjpRZ5TXyShXdHSizui40Ik6o8NC7USd0XGhE3VG2S9ZZ3KbQifqjI4LnagzOi6UnqXQiTqjh0KD2RQ6UWd0XOhEnVGx6eXisrVpdqLO6LjQiTqjw0LdRJ3RcaETdUbFL9+mFbKbQifqjI4LnagzOi6UnqXQiTqjsv7oscTtZDRRZ3Rc6Eyd0WGhM3VGh4XO1BndC02b5U4/U2d0WOhEnZE1YfnBrjVxY9T8RL1Rq9SJuqNWqfQ8pcrukHxY3w4lZxuluhIWv+ZKethc1dYy8dYuL8F6R/dJzHtTx3i8dWv0slswTSRl93iaSMpuIjWRlN2lKiJJsttgTSRl99maSMpu4zWRlO0SNJEkkGQiCY/DRRIeh4skPA4XSXgcLpLwOEwkAzwOF0l4HC6S8DhcJOFxuEgSSDKRhMfhIgmPw0USHoeLJDwOF0l4HCaSER6HiyQ8DhdJeBwukvA4XCQJJF9J8vjguBjhcbhIwuNwkYTH4SIJj8NFEh6HiWSCx+EiCY/DRRIeh4skPA4XSQJJJpLoJ19JsnE4dhR+4I0kksdH8EXhJ+poIgnt5iIJ7eYiCe3mIon1SS6SWJ/kIol+kosk1ie5SGJ9komk8KOr3kTSm/WYcW8fjvWsk2x/7yr8tKtr2UzkQ9jZTOQs2NkQ2Oyymaj7Z2czUT/PzmaiDp2dzUQ9NzubibpoZjZJ+MFl17JBX7zPBn3xPhv0xftsCGx22aAv3meDvnifDfrifTboi/fZoC/eZSP82Lpr2aAv3meDvnifDfrifTYENrts0Bfvs0FfvM8GffE+m2fui49/WZ6En0B4KRvhhxZey+aZ++IWm2fui1tsnrkvbrEhsNll88x9cYvNM/fFLTbP3Be32KAv3mUj/LTCU9k03qFMwg/CO5fN8W+v00wn57GzeWKdarJ5Yp1qsnlinWqyeeL1mxabmc6UY2fzzP1Ni80Tr9802Tzx+k2TDU3ExtmVjQu5wcYRlXuR97wd1RJJYT2pOqVyvzh8pThTB30dxZl67esoztSVX0dxpv79OoozdfqXUZzpDLYLKc7kHq6jOJPPsCXeKZYGRSLrXq4metjxokrRp7hspuGz9Y8Xf6E4kyO5jiKBIgPFmbzLdRRn8i7XUZzJu1xHcSbvch3FmbzLZRRnOlvtQoozeZfrKMK7cFCEd+GgSKDIQBHehYMivAsHRXgXDorwLhwU4V0YKM50ZtqFFOFdOCjCu3BQhHfhoEigyEAR3oWDIrwLB0V4Fw6K8C4cFOFdGCjOdGbkhRThXTgowrtwUIR34aBIoPgainkl4nNIG4rwLhwU4V04KMK7vI5idCvFFDcU4V04KMK7MFCc6izIMykWu9y6mLChCO/CQRHehYMivMubKW69y1RnVl5HEd6Fg+Ks3iW2Tr62hsxyb5PsMcVgy/KiZnCWNhRn9S7MFB3FlWLc9ouzehduiuutg/cbHz3VKZxXUcxTndd5IkWflovDTZU2FGf1LswUKeWFYjBxQ3FW78JNMcY7xe2IntW7MFOMaekXQ7KN5jJFv+SRYvYb5ATko5HP6ooEI4eFGo4cfms4cpiz4cjh5E5AXpaflaRk7bfIpzqOVglyeMThyGEo+ZEnF1bkvmyQw30OR05APho53Oc7kX+hCEPJQREekYMibB8HRTg5BopTnYl8HUX4LQ6KsFAcFOGKOCgSKL6G4m2paaGYg2utoBwuzU51JLQS5HBFw5HDQg1HDr81HDnM2WjkHk7uBOSH3/lMdai8EuTwiMORw1DyIz/+zscTkI9GDvc5GvlUZ9pegvwLRRhKDorwiAwUpzpH9DqK6HE5KKJt5aAIdeGgCHXhoIhFRQaK056XN5YiNJqDIjT6NRTjLe+lSBs3b2FPe14eN0VDd4p5QxELQBwUsabDQRFd96soOrt8cRFd2OzxMe15edzPYgl3ilt1QdfNQHHa8/LGUoR34aAo3LusP3PZUPySvXDP0MieVGcvvEduZH9hb+ofrt7J3pm81uoe5gNfu9qX5WL6/N+Xa6vTgTUm2nXy+JLren11Zlp3NyV/t+y+dmvn1z7WefeXi78QTyA+mHgG8cHEC4iPJX7l+W1PStyC+GDiDsQHE/cgPpg4gfhg4gHEBxOH5xxNHJ5zNHF4ztHE4TkHEy/wnKOJw3OOJg7POZo4POdo4gTig4nDc44mDs85mjg852ji8JyjicNzjiVeDDznaOLwnKOJw3OOJg7POZo4+nF+4nQnHsKGOHoVduLZLSW6TP7Pb4hb9CqjiaNXGU0cvcpo4uhVRhMnEB9MHOvjo4mjHx9NHOvjo4ljfXw08dGe03u3Eo+2QdyHlaG9p15/MzmuLyancL+2+MqlFBcbHpx5vPQzkeFni8knYkHkGyIORL4h4kHkGyIEIt8QCU9IJKyboIWHPdCql37eImNtAvId322t+Cu/CH7v4pfA7138Rnfn/p5PsKbVnZtg141sTHjg8rmH/pJ/0Z3/8LOSuPO3yvN3yvP3yvMn5fkH5flH5fkn5fkr11+vXH9Juf6Scv0l5fpLyvWXlOsvKddfUq6/pFx/Sbn+knL9Dcr1NyjX36Bcf4Ny/Q3K9Tco198gXX9Dueef3DZ/6frbyl+6/rbyl66/jfyjdP1t5S9df1v5S9ffVv7S9beVv3T9beUvXX9b+SvX3yh8/o8P/U90YZN/Ej7/xPSQf07b/IXPP838hc8/zfyFzz/N/IXPP838hff/zfyF9//N/KXP/438s/D+v5m/8P6/kb81RnoB4X7aVwylUoD0DqJZgPQWolkAaS9AehPRLEB6F9EsQHob0SxAeh/RLEB6I9EqwErvJJoFaFdiq12JrXYlHr5nAXsB2pXYaldiq12JrXQlvh/NaiLVCpCuxK0CnHQlbhYgXYmbBUhX4mYB0pW4WYB0JW4WIF2JmwVIV+JmAdKVuFmAdiWW/nJnswDpb3e2C9CuxNLf72wXgE3Zvmffsnf9Usb5/O32STfk2LGKHTnZuNL7/OHfIsc2yaORE/ZJHo4cGyUPR46dkocjx1bJw5ETkI9Gjr58OHLsljwcObZLHo4c7nM4crjP0cgD3Odw5HCfw5HDfQ5HDvc5HDkB+WjkcJ/DkcN9DkcO98mP3LiVng1b5HCfw5HDfY5GHuE+hyOH+xyOHO5zOHK4z+HICchHI4f7HI4c7nM4clih4chhhUYjT7BCw5HDCg1HDis0HPmFTaIrsYXch3VjLnL3cxzrZzN6Y5YzUL2ND7Xaaibtl+RTBJx9OAlw9uFkwNmHUwBnF042gLMPxwLOPhwHOPtwPODswyHA2YeDDvkADjrkAzjokA/goEM+gIMOeR9OQYd8AAcd8gGcZ+6QW1vYlGfukJtwCHD24Txzh9yE88wdchPOM3fITTjP3CE34Txzh9yAc/s6EXD24Txzh9yEgw75AA465AM4BDj7cNAhH8BBh3wAZ6I+x5WQlrRL8g043trlF1Te0cNrp9WfW7VXf6ydqCu6GuVEPdTVKCfquK5GOVF/djVKAkoulBP1flejnKhTvBrlRCuvV6OcaJ32apRwO1woHdwOG0q4HTaUcDtsKOF22FASUHKhhNthQwm3w4YSbocNJdwOG0q4HS6UHm6HDSXcDhtKuB02lHA7bCgJKLlQwu2woYTbYUMJt8OGEm6HDSXcDhdKgtthQwm3w4YSbocNJdwOG0oCSi6UcDtsKOF2Xouy9YYEwe2woYTbYUMJt8OFMsDtsKGE22FDCbfDhhJuhw0lASUXSrgdNpRwO2wo4XbYUMLtsKGE2+FCGeF22FCO7ittoRWlKw2UIeal3JCiadzbuXVjEeeybV1tU1ivLvkvaLrWK4cf3zkxygCUXCgjUHKhTEDJhTIDJRfKApRMKIefIDoxSguUXCgdUHKhhNthQ0lAyYUSbocNJdwOG0q4HTaUcDtsKOF2uFBmuJ3Xomytome4HTaUcDtsKOF22FASUHKhhNthQwm3w4YSbocNJdwOG0q4HS6UBW6HDSXcDhtKuB02lHA7bCgJKLlQCu8ryS0oY3ate7u4VutNbqE0ZvkzOZNNG2VrvbII7ys1oRTeV+pB6YzwvlITSuF9pSaUwvtKTSiF95WaUBJQcqEUvoquCaXwVXRNKOF22FDC7bChhNvhQmnhdthQwu2woYTbYUMJt8OGkoDylSgbq+jOwu2woYTbYUMJt8OGEm6HDSXcDhdKB7fDhhJuhw0l3A4bSrgdNpQElFwo4XbYUMLtsKGE22FDCbfDhZLhJGbvlw04I5nSKoD5LWzHcP7xxQV47QWQ9gKC9gKi9gKS9gKy9gKK8gIYziu9uADtSkzalZi0KzHDOZQXF6BdiUm7EpN2JSbpStxyZCRdiVsFBOlK3CxAuhI3C5CuxM0CpCtxswDpStwsQLoSNwuQrsTNAqQrcbMA7UoctCtx1K7EUbsSR+1KzHCS0E0MlwIu+BUxw/k9FxeQtBeQtRdQlBfAcC7LxQVY7QU47QV47QWQ9gK0K3HSrsRJuxIn7UqctCtx1q7EWbsSZ+lK3HJkWboSNwuQrsTNAqQrcbMA6UrcLEC6EjcLkK7EzQKkK3GrgCJdiZsFSFfiZgHalbhoV2KGfYovLkC7EhftSsywE641dinAkm8UEO2SUHT3O98mwy/peIbdZN+WDi04Y/SVdKysdJysdLysdEhWOkFWOlFWOklWOnlwOn59fY1CJZ0iKh1rZKVjZaXjZKXjZaVDstIJstKJstJJstKRNStbWbOykzUrO1mzspM1KztZs7KTNSs7WbNy/YXiW5bLd1P+tnb0EFa13tauzts/fEZ4+Yh4/kek8z8in/8R5fSPqL96yvsR9vyPcOd/RHUSuz1oy34ZtzrN40d8jaKuqPoY9OtuG/Wo+rDyIR9Gpa6o3BVVeqLqX1na2/rd8vey6eHXwvQSVaVh7/Pq519ob6NSV1Tuiio9UfXvfppRtivK1aPW32nbv/xOe4nyXVF18sGuv4kItpJh7ooqHVFUX59tRtmuqDr56Ne/V3w4/XCN8l1R1BUVuqJiV1TqispdUaUnqr5K1IyyXVFdz4btejZs17Nhu54N2/Vs2K5nw3Y9G7br2XBdz4brejbczrORl37DJuO2Ub4rirqiQldU7IpKXVG5K6r0RHnTFVX/K9/++ksU0VZT6pt1NaOoKyp0RcWuqNQVlbuiSk9U3WQ1o2xXVNezQV3PBnU9G7TzbIS0RqXtzEaxKyp1ReWuqNITFUxXlO2Kcl1RviuKuqK6no3Q9WyErmcjdD0boevZiF2OI3Y5jvrbvs0o3xVVJ29iWpsbE/N9Z9PlFztUfx3TpntcKpWPKz1R9RcPm1G2K8p1RdXh57z+7qmYsI2irqjQFRW7olJXVO6KKj1R9VdhmlG2K8p1RXU9G7nr2chdz0buejZy17ORu56N3PVslK5nY+cX0WZtpdzjovQa5bqifFcUdUVVySez/O4z2bu9eVlqp/ry3GFMqC/OpdUtp4cfgK4xth6zFJQefy21xLiOmCrvlJf161TSNoY6YqrjMLvlwctU4RbrMctabQ5xG1Mdg3n9TiPXcsvHMaXyN61btExlzc1/+7yFHdNkgrt3FmEb5bqifFcUdUX1fAkSdkxTKyp1ReWuqNITtWOaWlG2K8p1RfmuKOqK6no2QtezEbqejdD1bISuZyN2PRt1+3M81+yYH2PXAxeMr0TFrqjUFZW7okpP1I5fakV1zdepa75OXfN16pqvd/xSKyp2RaWuqNwVVXqidvySWQ8ysSa7bZTtinJdUb4rirqiQldU7IpKXVHtZ6MW1fVs7PilVlTXvFG65o3SNW+UrnmjdM0bpWveKF3zRumaN0rPsxGN6YqyXVGuK8p3RVFXVOyKSl1RuSuq669s3/xX/vP2b//3w68ff/jx559+u8V8/o//+fT33z/+8unlX3///39//S+3i/8L","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":"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_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":"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_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":"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":"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_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":"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":"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_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":"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":"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_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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2HJLLO4kVhULx3322edYdLklFl1uicWWWx1yPfusxmLLLbHYckssttwSiy23xKLLrbAc99lnn2PR5ZZYdLklFltuiWXAUmGx5ZZYbLklFncSq4qF4z777HMsutwKy3GfffY5Fltudcj17LMaiy23xDJgqbDYckssttwSiy63xKLLLbHocissx3322edYbLklFltuicWWW2IZsFRY3EmsKhaO++yzz7HockssutwSiy23OuR69lmNxZZbYrHlllhsuSWWAUuFRZdbYtHlllh0uSUWXW6JxZZbYfHssxqLLbfEYsstsbiTWFUsHPfZZ59j0eWWWHS5JRZbbnnIteWWWGy5FRbPPqux2HJLLLbcEosut8QyYKmw6HJLLLrcEostt8Riyy2x2HIrLJ59VmNxJ7GqWDjus88+x6LLLbEMWCosttzykGvLLbHYckssttwSiy23wHLx7LMaiy63xKLLLbHockssA5YKiy23xGLLLbHYckssttwSizuJFcXC5bjPPvsciy63xKLLLbHYcqtDrmef1VhsuSUWW26JxZZbYrHlllh0uRWW4z777HMsutwSiy63xGLLLbEMWCosttwSiy23xOJOYlWxcNxnn32ORZdbYTnus88+x2LLrQ65nn1WY7HlllgGLBUWW26JxZZbYtHlllh0uSUWXW6F5bjPPvsciy23xGLLLbHYckssA5YKizuJVcXCcZ999jkWXW6JRZdbYrHlVodczz6rsdhySyy23BKLLbfEMmCpsOhySyy63BKLLrfEosstsdhyKyyefVZjseWWWGy5JRZ3EquKheM+++xzLLrcEosut8Riyy0PubbcEostt8Li2Wc1FltuicWWW2LR5ZZYBiwVFl1uiUWXW2Kx5ZZYbLklFltuhcWzz2os7iRWFQvHffbZ51h0uSWWAUuFxZZbHnJtuSUWW26JxZZbYrHlVlg8+6zGosstsehySyy63BLLgKXCYsstsdhySyy23BKLLbfE4k5iRbFwPe6zzz7HosstsehySyy23OKQez0NWCosttwSiy23xGLLLbHYckssutwKy3GfffY5Fl1uiUWXW2Kx5ZZYBiwVFltuicWWW2JxJ7GqWDjus88+x6LLrbAc99lnn2Ox5VaHXM8+q7HYckssA5YKiy23xGLLLbHockssutwSiy63wnLcZ599jsWWW2Kx5ZZYbLkllgFLhcWdxKpi4bjPPvsciy63xKLLLbHYcqtDrmef1VhsuSUWW26JxZZbYhmwVFh0uSUWXW6JRZdbYtHlllhsuRUWzz6rsdhySyy23BKLO4lVxcJxn332ORZdbolFl1tiseWWh1xbbonFllth8eyzGostt8Riyy2x6HJLLAOWCosut8Siyy2x2HJLLLbcEostt8Li2Wc1FncSq4qF4z777HMsutwSy4ClwmLLLQ+5ttwSiy23xGLLLbHYcissnn1WY9Hlllh0uSUWXW6JZcBSYbHlllhsuSUWW26JxZZbYnEnsapYOO6zzz7HosstsehySyy23OqQ69lnNRZbbonFlltiseWWWGy5JRZdboHldtxnn32ORZdbYtHlllhsuSWWAUuFxZZbYrHllljcSawoFm7HffbZ51h0uRWW4z777HMsttzqkOvZZzUWW26JZcBSYbHlllhsuSUWXW6JRZdbYtHlVliO++yzz7HYckssttwSiy23xDJgqbC4k1hVLBz32WefY9Hlllh0uSUWW251yPXssxqLLbfEYsstsdhySywDlgqLLrfEosstsehySyy63BKLLbfC4tlnNRZbbonFllticSexqlg47rPPPseiyy2x2HLLY4stt8Riyy2x2HIrLJ59VmOx5ZZY3GOhOkF79lmNZcBSYdHllscWW26JxZZbYrHlllhsuRUWzz6rsbiTWHWCPu6zzz7HYsstsQxYKiy23PKQa8stsdhySyy23BKLLbfC4tlnNRZdbonFNxZKLL6XW2IZsFRYjrrlXm/TK5br7fwBy1G33Hm5vmKZr//AUvzgcbq8/uQxjw8Mj7oSJxkedX9OMjzqsh1keNjntSUZHnWNTzI86s6fZHhUQUgyHBh+meFR1SPJkKd8nSFP+TpDnvJ1hjzlywwP+8S9JEOe8nWGPOXrDHnK1xkODL/MkKd8nSFP+TpDnvJ1hjzl6wx5ylcZ3g/7zMQkQ57ydYY85esMecrXGQ4Mv8yQp3ydIU/5OkOe8nWGPOXrDHnKlxl66mX1t4H34z718nMs/u64xOLvjkssw19kfPyLjLunXtZY/N1xicXfHZdY/N1xicWz3asz0XGfevk5FltuicWWW2Lxd8fVIddTL2ssttwSiy23xGLLLbHYckss7q5TYfHUyxqLu+uUWNxdp8Riyy2xDFgqLLbcEostt8Ti2e5VsXDcp15+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","brillig_names":["get_contract_instance_internal","decompose_hint","lte_hint","get_public_keys_and_partial_address","notify_created_note_oracle_wrapper","get_key_validation_request","random","field_less_than","build_msg_block","attach_len_to_msg_block","build_msg_block","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":"owner","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":"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"},{"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"}]}},"file_map":{"100":{"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::{NULLIFIER_LEAF_PREIMAGE_LENGTH, NullifierLeafPreimage},\n constants::NULLIFIER_TREE_HEIGHT,\n 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(\n block_number: u32,\n nullifier: Field,\n) -> 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(\n block_number: u32,\n nullifier: Field,\n) -> NullifierMembershipWitness {\n let fields = get_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n"},"101":{"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"},"103":{"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::{\n address::AztecAddress,\n indexed_tagging_secret::{INDEXED_TAGGING_SECRET_LENGTH, IndexedTaggingSecret},\n utils::arr_copy_slice,\n};\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(\n storage_slot,\n note_type_id,\n serialized_note,\n note_hash,\n counter,\n )\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 { notify_nullified_note_oracle_wrapper(nullifier, note_hash, counter) };\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(\n storage_slot,\n note_type_id,\n serialized_note,\n note_hash,\n counter,\n );\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(\n _nullifier: Field,\n _note_hash: Field,\n _counter: u32,\n) -> 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]\nwhere\n Note: NoteInterface<N>,\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\n/// Returns the tagging secret for a given sender and recipient pair, siloed for the current contract address.\n/// Includes the last known index used for tagging with this secret.\n/// For this to work, PXE must know the ivpsk_m of the sender.\n/// For the recipient's side, only the address is needed.\npub unconstrained fn get_app_tagging_secret(\n sender: AztecAddress,\n recipient: AztecAddress,\n) -> IndexedTaggingSecret {\n let result = get_app_tagging_secret_oracle(sender, recipient);\n IndexedTaggingSecret::deserialize(result)\n}\n\n#[oracle(getAppTaggingSecret)]\nunconstrained fn get_app_tagging_secret_oracle(\n _sender: AztecAddress,\n _recipient: AztecAddress,\n) -> [Field; INDEXED_TAGGING_SECRET_LENGTH] {}\n\n/// Returns the tagging secrets for a given recipient and all the senders in PXE's address book,\n// siloed for the current contract address.\n/// Includes the last known index used for tagging with this secret.\n/// For this to work, PXE must know the ivsk_m of the recipient.\npub unconstrained fn get_app_tagging_secrets_for_senders(\n recipient: AztecAddress,\n) -> [IndexedTaggingSecret] {\n let results = get_app_tagging_secrets_for_senders_oracle(recipient);\n let mut indexed_tagging_secrets = &[];\n for i in 0..results.len() {\n if i % 2 != 0 {\n continue;\n }\n indexed_tagging_secrets = indexed_tagging_secrets.push_back(\n IndexedTaggingSecret::deserialize([results[i], results[i + 1]]),\n );\n }\n indexed_tagging_secrets\n}\n\n#[oracle(getAppTaggingSecretsForSenders)]\nunconstrained fn get_app_tagging_secrets_for_senders_oracle(_recipient: AztecAddress) -> [Field] {}\n"},"105":{"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) -> 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) -> 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 )\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) -> 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) -> 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 )\n}\n\npub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n unsafe { notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter) };\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"},"106":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader,\n};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n) -> [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) -> (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 );\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"},"107":{"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 { pack_returns_oracle_wrapper(returns) };\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"},"108":{"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"},"109":{"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::{NoteInterface, NullifiableNote}},\n};\n\nuse dep::protocol_types::{\n hash::{\n compute_siloed_note_hash as compute_siloed_note_hash,\n compute_siloed_nullifier as compute_siloed_nullifier_from_preimage,\n compute_unique_note_hash,\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\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\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\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\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\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\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 =\n 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\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\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]\nwhere\n T: NoteInterface<N> + NullifiableNote,\n{\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"},"114":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/note_getter/mod.nr","source":"use crate::context::PrivateContext;\nuse crate::note::{\n constants::{GET_NOTE_ORACLE_RETURN_LENGTH, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, NoteStatus, PropertySelector, Select, Sort, SortOrder},\n note_interface::{NoteInterface, NullifiableNote},\n note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request,\n};\nuse crate::oracle;\nuse crate::utils::comparison::compare;\nuse dep::protocol_types::constants::{\n GET_NOTES_ORACLE_RETURN_LENGTH, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,\n};\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>(context: PrivateContext, storage_slot: Field, note: Note)\nwhere\n Note: NoteInterface<N>,\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 =\n extract_property_value_from_selector(serialized_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()),\n \"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)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note = unsafe { get_note_internal(storage_slot) };\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>)\nwhere\n Note: NoteInterface<N> + NullifiableNote + Eq,\n{\n let opt_notes = unsafe { get_notes_internal(storage_slot, options) };\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>)\nwhere\n Note: NoteInterface<N> + NullifiableNote + Eq,\n{\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> =\n 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\nwhere\n Note: NoteInterface<N>,\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]\n .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]\nwhere\n Note: NoteInterface<N>,\n{\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\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) =\n 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>\nwhere\n Note: NoteInterface<N>,\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) =\n 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,\n select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order,\n )\n}\n"},"116":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr","source":"use crate::context::{PrivateContext, PublicContext};\nuse crate::note::{\n note_emission::NoteEmission,\n note_header::NoteHeader,\n note_interface::{NoteInterface, NullifiableNote},\n utils::{compute_note_hash_for_nullify_internal, compute_note_hash_for_read_request},\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>\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\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)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\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>(context: &mut PrivateContext, note: Note)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\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)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note_hash_for_nullify =\n 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"},"120":{"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"},"132":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr","source":"use dep::protocol_types::{\n constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n hash::poseidon2_hash_with_separator,\n traits::{Deserialize, Serialize},\n};\n\nuse crate::context::{PrivateContext, UnconstrainedContext};\nuse crate::note::{\n lifecycle::create_note,\n note_emission::NoteEmission,\n note_getter::{get_note, view_notes},\n note_interface::{NoteInterface, NullifiableNote},\n note_viewer_options::NoteViewerOptions,\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, let N: u32> Storage<T, N> for PrivateImmutable<T, Context>\nwhere\n T: Serialize<N> + Deserialize<N>,\n{}\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>(self, note: &mut Note) -> NoteEmission<Note>\n where\n Note: NoteInterface<N> + NullifiableNote,\n {\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\n where\n Note: NoteInterface<N> + NullifiableNote,\n {\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\n where\n Note: NoteInterface<N> + NullifiableNote,\n {\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"},"147":{"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 minus 1 divided by 2 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field =\n 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 crate::utils::point::point_to_bytes;\n use dep::protocol_types::point::Point;\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,\n 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115,\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,\n 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"},"161":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use crate::utils::to_bytes::{arr_to_be_bytes_arr, str_to_be_bytes_arr};\nuse dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__FUNCTION_ARGS, GENERATOR_INDEX__MESSAGE_NULLIFIER,\n GENERATOR_INDEX__SECRET_HASH,\n },\n hash::{poseidon2_hash_with_separator, poseidon2_hash_with_separator_slice, sha256_to_field},\n point::Point,\n traits::Hash,\n};\n\npub use dep::protocol_types::hash::{compute_siloed_nullifier, pedersen_hash};\n\npub fn pedersen_commitment<let N: u32>(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\n}\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash<let N: u32>(\n contract_address: AztecAddress,\n log: [u8; N],\n) -> Field {\n let mut hash_bytes = [0; N + 36];\n // Address is converted to 32 bytes in ts\n let address_bytes: [u8; 32] = contract_address.to_field().to_be_bytes();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let len_bytes: [u8; 4] = (N as Field).to_be_bytes();\n for i in 0..4 {\n hash_bytes[32 + i] = len_bytes[i];\n }\n for i in 0..N {\n hash_bytes[36 + i] = log[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field,\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes: [u8; 32] = sender.to_field().to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n let recipient_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let version_bytes: [u8; 32] = version.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let secret_hash_bytes: [u8; 32] = secret_hash.to_be_bytes();\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n poseidon2_hash_with_separator(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER,\n )\n}\n\npub struct ArgsHasher {\n fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<let N: u32>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array<let N: u32>(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nunconstrained fn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..100 {\n input.add(i as Field);\n }\n let hash = input.hash();\n dep::std::println(hash);\n assert(hash == 0x19b0d74feb06ebde19edd85a28986c97063e84b3b351a8b666c7cac963ce655f);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(\n 0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6,\n );\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd,\n ];\n let serialized_log = arr_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0095b2d17ab72f4b27a341f7ac63e49ec73935ae8c9181a0ac02023eb12f3284);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(\n 0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6,\n );\n let log = AztecAddress::from_field(\n 0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303,\n );\n let serialized_log: [u8; 32] = log.to_field().to_be_bytes();\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0083ab647dfb26e7ddee90a0f4209d049d4660cab42000c544b986aaa84c55a3);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(\n 0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8,\n );\n let log = \"dummy\";\n let serialized_log = str_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x00629e88ebd6374f44aa6cfe07e251ecf07213ebc7267e8f6b578ae57ffd6c20);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(\n 0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8,\n );\n let log = \"Hello this is a string\";\n let serialized_log = str_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0098637962f7d34fa202b7ffad8a07a238c5d1fd897b82a108f7f467fa73b841);\n}\n"},"164":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/header.nr","source":"use dep::protocol_types::{\n address::AztecAddress,\n point::Point,\n public_keys::{IvpkM, PublicKeys, ToPoint},\n scalar::Scalar,\n};\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]\n where\n T: ToPoint,\n {\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,\n 160, 83, 64, 181, 98, 38, 153, 214, 62, 171, 253, 161, 111, 191, 28, 247, 216, 26, 222, 171,\n 176, 218, 48, 209, 73, 89, 200, 209,\n ];\n\n assert_eq(ciphertext, expected_header_ciphertext_from_typescript);\n}\n"},"165":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/encrypted_note_emission.nr","source":"use crate::{\n context::PrivateContext,\n encrypted_logs::payload::compute_private_log_payload,\n keys::getters::get_ovsk_app,\n note::{note_emission::NoteEmission, note_interface::NoteInterface},\n};\nuse dep::protocol_types::{\n abis::note_hash::NoteHash, address::AztecAddress, hash::sha256_to_field, public_keys::OvpkM,\n};\n\n/// Computes private note log payload and a log hash\nfn compute_payload_and_hash<Note, let N: u32>(\n context: PrivateContext,\n note: Note,\n ovsk_app: Field,\n ovpk: OvpkM,\n recipient: AztecAddress,\n) -> (u32, [u8; 417 + N * 32], Field)\nwhere\n Note: NoteInterface<N>,\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\n // For note logs we always include public values prefix\n let encrypted_log: [u8; 417 + N * 32] =\n compute_private_log_payload(contract_address, ovsk_app, ovpk, recipient, plaintext, true);\n let log_hash = sha256_to_field(encrypted_log);\n\n (note_hash_counter, encrypted_log, log_hash)\n}\n\nunconstrained fn compute_payload_and_hash_unconstrained<Note, let N: u32>(\n context: PrivateContext,\n note: Note,\n ovpk: OvpkM,\n recipient: AztecAddress,\n) -> (u32, [u8; 417 + N * 32], Field)\nwhere\n Note: NoteInterface<N>,\n{\n let ovsk_app = get_ovsk_app(ovpk.hash());\n compute_payload_and_hash(context, note, ovsk_app, ovpk, 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 recipient: AztecAddress,\n) -> fn[(&mut PrivateContext, OvpkM, AztecAddress)](NoteEmission<Note>) -> ()\nwhere\n Note: NoteInterface<N>,\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) =\n compute_payload_and_hash(*context, e.note, ovsk_app, ovpk, 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 recipient: AztecAddress,\n) -> fn[(&mut PrivateContext, OvpkM, AztecAddress)](NoteEmission<Note>) -> ()\nwhere\n Note: NoteInterface<N>,\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) =\n unsafe { compute_payload_and_hash_unconstrained(*context, e.note, ovpk, recipient) };\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n"},"166":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/payload.nr","source":"use dep::protocol_types::{\n address::AztecAddress, constants::GENERATOR_INDEX__SYMMETRIC_KEY,\n hash::poseidon2_hash_with_separator, point::Point, public_keys::OvpkM, scalar::Scalar,\n};\nuse std::{\n aes128::aes128_encrypt, embedded_curve_ops::fixed_base_scalar_mul as derive_public_key,\n field::bn254::decompose, hash::from_field_unsafe as fr_to_fq_unsafe,\n};\n\nuse crate::{\n encrypted_logs::header::EncryptedLogHeader,\n keys::point_to_symmetric_key::point_to_symmetric_key, oracle::random::random,\n utils::point::point_to_bytes,\n};\nuse protocol_types::public_keys::AddressPoint;\n\nfn compute_private_log_payload<let P: u32, let M: u32>(\n contract_address: AztecAddress,\n ovsk_app: Field,\n ovpk: OvpkM,\n recipient: AztecAddress,\n plaintext: [u8; P],\n include_public_values_prefix: bool,\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] =\n header.compute_ciphertext(eph_sk, recipient.to_address_point());\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext =\n compute_incoming_body_ciphertext(plaintext, eph_sk, recipient.to_address_point());\n let outgoing_body_ciphertext: [u8; 144] =\n compute_outgoing_body_ciphertext(recipient, fr_to_fq(ovsk_app), eph_sk, eph_pk);\n\n // If we include the prefix for number of public values, we need to add 1 byte to the offset\n let mut offset = if include_public_values_prefix { 1 } else { 0 };\n\n let mut encrypted_bytes: [u8; M] = [0; M];\n // @todo We ignore the tags for now\n offset += 64;\n\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[offset + i] = eph_pk_bytes[i];\n }\n\n offset += 32;\n for i in 0..48 {\n encrypted_bytes[offset + i] = incoming_header_ciphertext[i];\n encrypted_bytes[offset + 48 + i] = outgoing_header_ciphertext[i];\n }\n\n offset += 48 * 2;\n for i in 0..144 {\n encrypted_bytes[offset + i] = outgoing_body_ciphertext[i];\n }\n\n offset += 144;\n // Then we fill in the rest as the incoming body ciphertext\n let size = M - offset;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[offset + i] = incoming_body_ciphertext[i];\n }\n\n // Current unoptimized size of the encrypted log\n // empty_prefix (1 byte)\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 // 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 { random() };\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>(\n plaintext: [u8; P],\n eph_sk: Scalar,\n address_point: AddressPoint,\n) -> [u8] {\n let full_key = point_to_symmetric_key(eph_sk, address_point.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 address point --> 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 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 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_address_point =\n point_to_bytes(recipient.to_address_point().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_address_point[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 )\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::{\n compute_incoming_body_ciphertext, compute_outgoing_body_ciphertext,\n compute_private_log_payload,\n };\n use dep::protocol_types::{\n address::AztecAddress, point::Point, public_keys::OvpkM, scalar::Scalar,\n };\n use protocol_types::public_keys::AddressPoint;\n use std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\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(\n 0x10f48cd9eff7ae5b209c557c70de2e657ee79166868676b787e9417e19260e04,\n );\n let ovsk_app = 0x191ac5e29bbc8f80f29ed06b75eaf30c036ed7952d844833860c527077c8c3b4;\n let ovpk_m = OvpkM {\n inner: Point {\n x: 0x07f696b8b233de2c1935e43c793399586f532da5ff7c0356636a75acb862e964,\n y: 0x156e8a3e42bfca3663936ba98c7fd26386a14657c23b5f5146f1a94b6c465154,\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,\n 2, 15, 65, 37, 37, 106, 253, 174, 38, 70, 206, 49, 9, 159, 92, 16, 244, 140, 217, 239,\n 247, 174, 91, 32, 156, 85, 124, 112, 222, 46, 101, 126, 231, 145, 102, 134, 134, 118,\n 183, 135, 233, 65, 126, 25, 38, 14, 4, 15, 228, 107, 229, 131, 183, 31, 74, 181, 183,\n 12, 38, 87, 255, 29, 5, 204, 207, 29, 41, 42, 147, 105, 98, 141, 26, 25, 79, 148, 78,\n 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(\n 0x25afb798ea6d0b8c1618e50fdeafa463059415013d3b7c75d46abf5e242be70c,\n );\n\n let log: [u8; 448] = compute_private_log_payload(\n contract_address,\n ovsk_app,\n ovpk_m,\n recipient,\n plaintext,\n false,\n );\n\n // The following value was generated by `encrypted_log_payload.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,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 141, 70, 12, 14, 67, 77, 132, 110, 193, 234, 40, 110, 64, 144, 235,\n 86, 55, 111, 242, 123, 221, 193, 170, 202, 225, 216, 86, 84, 159, 112, 31, 167, 5, 119,\n 121, 10, 234, 188, 194, 216, 30, 200, 208, 201, 158, 127, 93, 43, 242, 241, 69, 32, 37,\n 220, 119, 122, 23, 132, 4, 248, 81, 217, 61, 232, 24, 146, 63, 133, 24, 120, 113, 217,\n 155, 223, 149, 214, 149, 239, 240, 169, 224, 155, 161, 81, 83, 252, 155, 77, 34, 75,\n 110, 30, 113, 223, 189, 202, 171, 6, 192, 157, 91, 60, 116, 155, 254, 190, 28, 4, 7,\n 236, 205, 4, 245, 27, 187, 89, 20, 38, 128, 200, 160, 145, 185, 127, 198, 203, 207, 97,\n 246, 194, 175, 155, 142, 188, 143, 120, 83, 122, 178, 63, 208, 197, 232, 24, 228, 212,\n 45, 69, 157, 38, 90, 219, 119, 194, 239, 130, 155, 246, 143, 135, 242, 196, 123, 71,\n 139, 181, 122, 231, 228, 26, 7, 100, 63, 101, 195, 83, 8, 61, 85, 123, 148, 227, 29,\n 164, 162, 161, 49, 39, 73, 141, 46, 179, 240, 52, 109, 165, 238, 210, 233, 188, 36, 90,\n 175, 2, 42, 149, 78, 208, 176, 145, 50, 180, 152, 245, 55, 112, 40, 153, 180, 78, 54,\n 102, 119, 98, 56, 235, 246, 51, 179, 86, 45, 127, 18, 77, 187, 168, 41, 24, 232, 113,\n 149, 138, 148, 33, 143, 215, 150, 188, 105, 131, 254, 236, 199, 206, 56, 44, 130, 134,\n 29, 99, 254, 69, 153, 146, 68, 234, 148, 148, 178, 38, 221, 182, 148, 178, 100, 13, 206,\n 0, 91, 71, 58, 207, 26, 227, 190, 21, 143, 85, 138, 209, 202, 34, 142, 159, 121, 61, 9,\n 57, 2, 48, 162, 89, 126, 14, 83, 173, 40, 247, 170, 154, 112, 12, 204, 48, 38, 7, 173,\n 108, 38, 234, 20, 16, 115, 91, 106, 140, 121, 63, 99, 23, 247, 0, 148, 9, 163, 145, 43,\n 21, 238, 47, 40, 204, 241, 124, 246, 201, 75, 114, 3, 1, 229, 197, 130, 109, 227, 158,\n 133, 188, 125, 179, 220, 51, 170, 121, 175, 202, 243, 37, 103, 13, 27, 53, 157, 8, 177,\n 11, 208, 120, 64, 211, 148, 201, 240, 56,\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 address_point = AddressPoint {\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,\n 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,\n 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,\n 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,\n 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,\n 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 `address_point` and encrypts\n // the note plaintext using AES-128.\n let ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, address_point);\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,\n 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157,\n 131, 149, 96, 236, 253, 96, 172, 157, 30, 27, 176, 228, 74, 242, 190, 138, 48, 33, 93,\n 46, 37, 223, 130, 25, 245, 188, 163, 159, 223, 187, 24, 139, 206, 131, 154, 159, 130,\n 37, 17, 158, 114, 242, 141, 124, 193, 232, 54, 146, 96, 145, 100, 125, 234, 57, 43, 95,\n 115, 183, 39, 121, 232, 134, 229, 148, 25, 46, 77, 87, 127, 95, 7, 77, 188, 37, 234,\n 245, 142, 232, 87, 252, 28, 67, 67, 90, 214, 254, 89, 47, 68, 66, 187, 227, 8, 59, 162,\n 25, 141, 97, 141, 217, 197, 115, 15, 212, 202, 157, 41, 150, 62, 219, 57, 224, 92, 185,\n 212, 142, 94, 146, 41, 178, 145, 68, 169, 23, 185, 206, 138, 70, 47, 176, 210, 165, 236,\n 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\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 = AztecAddress::from_field(\n 0x25afb798ea6d0b8c1618e50fdeafa463059415013d3b7c75d46abf5e242be70c,\n );\n\n let ciphertext =\n compute_outgoing_body_ciphertext(recipient, sender_ovsk_app, eph_sk, eph_pk);\n\n // The following value was generated by `encrypted_log_payload.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,\n 50, 31, 174, 27, 202, 110, 77, 161, 197, 244, 124, 17, 100, 143, 150, 232, 14, 156, 248,\n 43, 177, 16, 82, 244, 103, 88, 74, 84, 200, 15, 65, 187, 14, 163, 60, 91, 22, 104, 31,\n 211, 190, 124, 121, 79, 92, 238, 182, 194, 225, 34, 71, 67, 116, 27, 231, 68, 161, 147,\n 94, 53, 195, 83, 237, 172, 52, 173, 229, 26, 234, 107, 43, 82, 68, 16, 105, 37, 125,\n 117, 86, 133, 50, 21, 92, 74, 229, 105, 141, 83, 229, 255, 251, 21, 61, 234, 61, 168,\n 221, 106, 231, 8, 73, 208, 60, 251, 46, 251, 228, 148, 144, 187, 195, 38, 18, 223, 153,\n 8, 121, 178, 84, 237, 148, 254, 219, 59, 62,\n ];\n\n assert_eq(outgoing_body_ciphertext_from_typescript, ciphertext);\n }\n}\n"},"17":{"path":"std/ec/mod.nr","source":"// Elliptic curve implementation\n// Overview\n// ========\n// The following three elliptic curve representations are admissible:\npub mod tecurve; // Twisted Edwards curves\npub mod swcurve; // Elliptic curves in Short Weierstrass form\npub mod montcurve; // Montgomery curves\npub mod consts; // Commonly used curve presets\n//\n// Note that Twisted Edwards and Montgomery curves are (birationally) equivalent, so that\n// they may be freely converted between one another, whereas Short Weierstrass curves are\n// more general. Diagramatically:\n//\n// tecurve == montcurve `subset` swcurve\n//\n// Each module is further divided into two submodules, 'affine' and 'curvegroup', depending\n// on the preferred coordinate representation. Affine coordinates are none other than the usual\n// two-dimensional Cartesian coordinates used in the definitions of these curves, whereas\n// 'CurveGroup' coordinates (terminology borrowed from Arkworks, whose conventions we try\n// to follow) are special coordinate systems with respect to which the group operations may be\n// implemented more efficiently, usually by means of an appropriate choice of projective coordinates.\n//\n// In each of these submodules, there is a Point struct and a Curve struct, the former\n// representing a point in the coordinate system and the latter a curve configuration.\n//\n// Points\n// ======\n// Points may be instantiated using the associated function `new`, which takes coordinates\n// as its arguments. For instance,\n//\n// `let p = swcurve::Point::new(1,1);`\n//\n// The additive identity may be constructed by a call to the associated function `zero` of no\n// arguments:\n//\n// `let zero = swcurve::Point::zero();`\n//\n// Points may be tested for equality by calling the method `eq`:\n//\n// `let pred = p.eq(zero);`\n//\n// There is also the method `is_zero` to explicitly check whether a point is the additive identity:\n//\n// `constrain pred == p.is_zero();`\n//\n// Points may be negated by calling the `negate` method and converted to CurveGroup (or affine)\n// coordinates by calling the `into_group` (resp. `into_affine`) method on them. Finally,\n// Points may be freely mapped between their respective Twisted Edwards and Montgomery\n// representations by calling the `into_montcurve` or `into_tecurve` methods. For mappings\n// between Twisted Edwards/Montgomery curves and Short Weierstrass curves, see the Curve section\n// below, as the underlying mappings are those of curves rather than ambient spaces.\n// As a rule, Points in affine (or CurveGroup) coordinates are mapped to Points in affine\n// (resp. CurveGroup) coordinates.\n//\n// Curves\n// ======\n// A curve configuration (Curve) is completely determined by the Field coefficients of its defining\n// equation (a and b in the case of swcurve, a and d in the case of tecurve, and j and k in\n// the case of montcurve) together with a generator (`gen`) in the corresponding coordinate system.\n// For example, the Baby Jubjub curve configuration as defined in ERC-2494 may be instantiated as a Twisted\n// Edwards curve in affine coordinates as follows:\n//\n// `let bjj_affine = tecurve::Curve::new(168700, 168696, tecurve::Point::new(995203441582195749578291179787384436505546430278305826713579947235728471134,5472060717959818805561601436314318772137091100104008585924551046643952123905));`\n//\n// The `contains` method may be used to check whether a Point lies on a given curve:\n//\n// `constrain bjj_affine.contains(tecurve::Point::zero());`\n//\n// The elliptic curve group's addition operation is exposed as the `add` method, e.g.\n//\n// `let p = bjj_affine.add(bjj_affine.gen, bjj_affine.gen);`\n//\n// subtraction as the `subtract` method, e.g.\n//\n// `constrain tecurve::Point::zero().eq(bjj_affine.subtract(bjj_affine.gen, bjj_affine.gen));`\n//\n// scalar multiplication as the `mul` method, where the scalar is assumed to be a Field* element, e.g.\n//\n// `constrain tecurve::Point::zero().eq(bjj_affine.mul(2, tecurve::Point::zero());`\n//\n// There is a scalar multiplication method (`bit_mul`) provided where the scalar input is expected to be\n// an array of bits (little-endian convention), as well as a multi-scalar multiplication method** (`msm`)\n// which takes an array of Field elements and an array of elliptic curve points as arguments, both assumed\n// to be of the same length.\n//\n// Curve configurations may be converted between different coordinate representations by calling the `into_group`\n// and `into_affine` methods on them, e.g.\n//\n// `let bjj_curvegroup = bjj_affine.into_group();`\n//\n// Curve configurations may also be converted between different curve representations by calling the `into_swcurve`,\n// `into_montcurve` and `into_tecurve` methods subject to the relation between the curve representations mentioned\n// above. Note that it is possible to map Points from a Twisted Edwards/Montgomery curve to the corresponding\n// Short Weierstrass representation and back, and the methods to do so are exposed as `map_into_swcurve` and\n// `map_from_swcurve`, which each take one argument, the point to be mapped.\n//\n// Curve maps\n// ==========\n// There are a few different ways of mapping Field elements to elliptic curves. Here we provide the simplified\n// Shallue-van de Woestijne-Ulas and Elligator 2 methods, the former being applicable to all curve types\n// provided above subject to the constraint that the coefficients of the corresponding Short Weierstrass curve satisfies\n// a*b != 0 and the latter being applicable to Montgomery and Twisted Edwards curves subject to the constraint that\n// the coefficients of the corresponding Montgomery curve satisfy j*k != 0 and (j^2 - 4)/k^2 is non-square.\n//\n// The simplified Shallue-van de Woestijne-Ulas method is exposed as the method `swu_map` on the Curve configuration and\n// depends on two parameters, a Field element z != -1 for which g(x) - z is irreducible over Field and g(b/(z*a)) is\n// square, where g(x) = x^3 + a*x + b is the right-hand side of the defining equation of the corresponding Short\n// Weierstrass curve, and a Field element u to be mapped onto the curve. For example, in the case of bjj_affine above,\n// it may be determined using the scripts provided at <https://github.com/cfrg/draft-irtf-cfrg-hash-to-curve> that z = 5.\n//\n// The Elligator 2 method is exposed as the method `elligator2_map` on the Curve configurations of Montgomery and\n// Twisted Edwards curves. Like the simplified SWU method above, it depends on a certain non-square element of Field,\n// but this element need not satisfy any further conditions, so it is included as the (Field-dependent) constant\n//`ZETA` below. Thus, the `elligator2_map` method depends only on one parameter, the Field element to be mapped onto\n// the curve.\n//\n// For details on all of the above in the context of hashing to elliptic curves, see <https://datatracker.ietf.org/doc/id/draft-irtf-cfrg-hash-to-curve-06.html>.\n//\n//\n// *TODO: Replace Field with Bigint.\n// **TODO: Support arrays of structs to make this work.\n// Field-dependent constant ZETA = a non-square element of Field\n// Required for Elligator 2 map\n// TODO: Replace with built-in constant.\nglobal ZETA = 5;\n// Field-dependent constants for Tonelli-Shanks algorithm (see sqrt function below)\n// TODO: Possibly make this built-in.\nglobal C1 = 28;\nglobal C3 = 40770029410420498293352137776570907027550720424234931066070132305055;\nglobal C5 = 19103219067921713944291392827692070036145651957329286315305642004821462161904;\n// Higher-order version of scalar multiplication\n// TODO: Make this work so that the submodules' bit_mul may be defined in terms of it.\n//fn bit_mul<T,N>(add: fn(T,T) -> T, e: T, bits: [u1; N], p: T) -> T {\n// let mut out = e;\n// let n = bits.len();\n//\n// for i in 0..n {\n// out = add(\n// add(out, out),\n// if(bits[n - i - 1] == 0) {e} else {p});\n// }\n//\n// out\n//}\n// TODO: Make this built-in.\npub fn safe_inverse(x: Field) -> Field {\n if x == 0 {\n 0\n } else {\n 1 / x\n }\n}\n// Boolean indicating whether Field element is a square, i.e. whether there exists a y in Field s.t. x = y*y.\npub fn is_square(x: Field) -> bool {\n let v = pow(x, 0 - 1 / 2);\n\n v * (v - 1) == 0\n}\n// Power function of two Field arguments of arbitrary size.\n// Adapted from std::field::pow_32.\npub fn pow(x: Field, y: Field) -> Field {\n let mut r = 1 as Field;\n let b: [u1; 254] = y.to_le_bits();\n\n for i in 0..254 {\n r *= r;\n r *= (b[254 - 1 - i] as Field) * x + (1 - b[254 - 1 - i] as Field);\n }\n\n r\n}\n// Tonelli-Shanks algorithm for computing the square root of a Field element.\n// Requires C1 = max{c: 2^c divides (p-1)}, where p is the order of Field\n// as well as C3 = (C2 - 1)/2, where C2 = (p-1)/(2^c1),\n// and C5 = ZETA^C2, where ZETA is a non-square element of Field.\n// These are pre-computed above as globals.\npub fn sqrt(x: Field) -> Field {\n let mut z = pow(x, C3);\n let mut t = z * z * x;\n z *= x;\n let mut b = t;\n let mut c = C5;\n\n for i in 0..(C1 - 1) {\n for _j in 1..(C1 - i - 1) {\n b *= b;\n }\n\n z *= if b == 1 { 1 } else { c };\n\n c *= c;\n\n t *= if b == 1 { 1 } else { c };\n\n b = t;\n }\n\n z\n}\n"},"177":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/point_to_symmetric_key.nr","source":"use crate::utils::point::point_to_bytes;\nuse dep::protocol_types::{\n constants::GENERATOR_INDEX__SYMMETRIC_KEY, point::Point, scalar::Scalar, utils::arr_copy_slice,\n};\nuse std::{embedded_curve_ops::multi_scalar_mul, hash::sha256};\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 =\n 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,\n 236, 33, 95, 77, 93, 120, 72, 88, 190, 209, 64, 159,\n ];\n assert_eq(key, key_from_typescript);\n}\n"},"178":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr","source":"use crate::{\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX},\n oracle::{\n key_validation_request::get_key_validation_request,\n keys::get_public_keys_and_partial_address,\n },\n};\nuse dep::protocol_types::{address::AztecAddress, public_keys::PublicKeys};\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) =\n unsafe { get_public_keys_and_partial_address(account) };\n assert_eq(\n account,\n AztecAddress::compute(hinted_canonical_public_keys, partial_address),\n \"Invalid public keys hint for address\",\n );\n\n hinted_canonical_public_keys\n}\n"},"181":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/initializer.nr","source":"use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::GENERATOR_INDEX__CONSTRUCTOR, hash::poseidon2_hash_with_separator,\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext},\n oracle::get_contract_instance::{\n get_contract_instance, get_contract_instance_deployer_avm,\n get_contract_instance_initialization_hash_avm,\n },\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier =\n 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 =\n 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 deployer = get_contract_instance_deployer_avm(address).unwrap();\n let initialization_hash = get_contract_instance_initialization_hash_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (deployer.is_zero()) | (deployer == context.msg_sender()),\n \"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()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\npub fn compute_initialization_hash(\n init_selector: FunctionSelector,\n init_args_hash: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR,\n )\n}\n"},"184":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/unconstrained_context.nr","source":"use crate::oracle::{\n execution::{get_block_number, get_chain_id, get_contract_address, get_version},\n storage::storage_read,\n};\nuse dep::protocol_types::{address::AztecAddress, traits::Deserialize};\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>(self, storage_slot: Field) -> T\n where\n T: Deserialize<N>,\n {\n T::deserialize(self.raw_storage_read(storage_slot))\n }\n}\n"},"186":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr","source":"use crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n hash::{ArgsHasher, hash_args_array},\n keys::constants::{NULLIFIER_INDEX, NUM_KEY_TYPES, OUTGOING_INDEX, sk_generators},\n messaging::process_l1_to_l2_message,\n oracle::{\n arguments,\n call_private_function::call_private_function_internal,\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, notify_set_min_revertible_side_effect_counter,\n set_public_teardown_function_call_internal,\n },\n header::get_header_at,\n key_validation_request::get_key_validation_request,\n logs::{emit_encrypted_event_log, emit_encrypted_note_log},\n returns::pack_returns,\n },\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext,\n function_selector::FunctionSelector,\n log_hash::{EncryptedLogHash, LogHash, NoteLogHash},\n max_block_number::MaxBlockNumber,\n note_hash::NoteHash,\n nullifier::Nullifier,\n private_call_request::PrivateCallRequest,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_request::PublicCallRequest,\n read_request::ReadRequest,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n },\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_ENCRYPTED_LOGS_PER_CALL, MAX_KEY_VALIDATION_REQUESTS_PER_CALL,\n MAX_L2_TO_L1_MSGS_PER_CALL, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NOTE_HASHES_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_UNENCRYPTED_LOGS_PER_CALL, PUBLIC_DISPATCH_SELECTOR,\n },\n header::Header,\n messaging::l2_to_l1_message::L2ToL1Message,\n traits::Empty,\n};\n\n// When finished, one can call .finish() to convert back to the abi\npub struct PrivateContext {\n // docs:start:private-context\n inputs: PrivateContextInputs,\n side_effect_counter: u32,\n\n min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n args_hash: Field,\n return_hash: Field,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: BoundedVec<ReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n key_validation_requests_and_generators: BoundedVec<KeyValidationRequestAndGenerator, MAX_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n note_hashes: BoundedVec<NoteHash, MAX_NOTE_HASHES_PER_CALL>,\n nullifiers: BoundedVec<Nullifier, MAX_NULLIFIERS_PER_CALL>,\n\n private_call_requests: BoundedVec<PrivateCallRequest, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_requests: BoundedVec<PublicCallRequest, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n public_teardown_call_request: PublicCallRequest,\n l2_to_l1_msgs: BoundedVec<L2ToL1Message, MAX_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n note_encrypted_logs_hashes: BoundedVec<NoteLogHash, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL>,\n encrypted_logs_hashes: BoundedVec<EncryptedLogHash, MAX_ENCRYPTED_LOGS_PER_CALL>,\n unencrypted_logs_hashes: BoundedVec<LogHash, MAX_UNENCRYPTED_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n last_key_validation_requests: [Option<KeyValidationRequest>; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n\n fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n fn this_address(self) -> AztecAddress {\n self.inputs.call_context.contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n fn push_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n fn push_nullifier(&mut self, nullifier: Field) {\n self.nullifiers.push(\n Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() },\n );\n }\n\n fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.nullifiers.push(\n Nullifier {\n value: nullifier,\n note_hash: nullified_note_hash,\n counter: self.next_counter(),\n },\n );\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage,\n nullifier_read_requests: self.nullifier_read_requests.storage,\n key_validation_requests_and_generators: self\n .key_validation_requests_and_generators\n .storage,\n note_hashes: self.note_hashes.storage,\n nullifiers: self.nullifiers.storage,\n private_call_requests: self.private_call_requests.storage,\n public_call_requests: self.public_call_requests.storage,\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: self.l2_to_l1_msgs.storage,\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n note_encrypted_logs_hashes: self.note_encrypted_logs_hashes.storage,\n encrypted_logs_hashes: self.encrypted_logs_hashes.storage,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context,\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\n \"Setting {0} as fee payer\",\n [self.this_address().to_field()],\n );\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n notify_set_min_revertible_side_effect_counter(self.min_revertible_side_effect_counter);\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number =\n MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request =\n self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one\n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale. We fetch new values from oracle and instruct\n // protocol circuits to validate them by storing the validation request in context.\n let request = get_key_validation_request(pk_m_hash, key_index);\n let request_and_generator = KeyValidationRequestAndGenerator {\n request,\n sk_app_generator: sk_generators[key_index],\n };\n // We constrain that the pk_m_hash matches the one in the request (otherwise we could get an arbitrary\n // valid key request and not the one corresponding to pk_m_hash).\n assert(request.pk_m.hash() == pk_m_hash);\n self.key_validation_requests_and_generators.push(request_and_generator);\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content, counter: self.next_counter() };\n self.l2_to_l1_msgs.push(message);\n }\n\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(&mut self, content: Field, secret: Field, sender: EthAddress) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret,\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\n\n // NB: A randomness value of 0 signals that the kernels should not mask the contract address\n // used in siloing later on e.g. 'handshaking' contract w/ known address.\n pub fn emit_raw_event_log_with_masked_address<let M: u32>(\n &mut self,\n randomness: Field,\n log: [u8; M],\n log_hash: Field,\n ) {\n let counter = self.next_counter();\n let contract_address = self.this_address();\n let len = log.len() as Field + 4;\n let side_effect = EncryptedLogHash { value: log_hash, counter, length: len, randomness };\n self.encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_event_log(contract_address, randomness, log, counter);\n }\n\n pub fn emit_raw_note_log<let M: u32>(\n &mut self,\n note_hash_counter: u32,\n log: [u8; M],\n log_hash: Field,\n ) {\n let counter = self.next_counter();\n let len = log.len() as Field + 4;\n let side_effect = NoteLogHash { value: log_hash, counter, length: len, note_hash_counter };\n self.note_encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_note_log(note_hash_counter, log, counter);\n }\n\n pub fn call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn static_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true)\n }\n\n pub fn call_private_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n let (end_side_effect_counter, returns_hash) = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n );\n\n self.side_effect_counter = end_side_effect_counter + 1;\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n let call_context = CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n };\n\n self.private_call_requests.push(\n PrivateCallRequest {\n call_context,\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter,\n },\n );\n\n PackedReturns::new(returns_hash)\n }\n\n pub fn call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn static_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false)\n }\n\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, true)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n );\n\n // Public calls are rerouted through the dispatch function.\n let function_selector = comptime { FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR) };\n let call_context = CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n };\n\n let call_request = PublicCallRequest { call_context, args_hash, counter };\n self.public_call_requests.push(call_request);\n }\n\n pub fn set_public_teardown_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.set_public_teardown_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn set_public_teardown_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n );\n\n let function_selector = comptime { FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR) };\n let call_context = CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n };\n\n self.public_teardown_call_request = PublicCallRequest { call_context, args_hash, counter };\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n historical_header: Header::empty(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n}\n"},"205":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr","source":"use crate::meta::{derive_deserialize, derive_serialize};\nuse crate::utils::field::field_from_bytes;\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\nwhere\n T: Empty + Eq,\n{\n item.eq(T::empty())\n}\n\npub fn is_empty_array<T, let N: u32>(array: [T; N]) -> bool\nwhere\n T: Empty + Eq,\n{\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"},"235":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use crate::{point::Point, traits::{Deserialize, Empty, Serialize}};\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 [self.pk_m.x, self.pk_m.y, self.pk_m.is_infinite as Field, self.sk_app]\n }\n}\n\nimpl Deserialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self {\n pk_m: Point { x: fields[0], y: fields[1], is_infinite: fields[2] as bool },\n sk_app: fields[3],\n }\n }\n}\n"},"24":{"path":"std/embedded_curve_ops.nr","source":"use crate::cmp::Eq;\nuse crate::ops::arith::{Add, Neg, Sub};\n\n/// A point on the embedded elliptic curve\n/// By definition, the base field of the embedded curve is the scalar field of the proof system curve, i.e the Noir Field.\n/// x and y denotes the Weierstrass coordinates of the point, if is_infinite is false.\npub struct EmbeddedCurvePoint {\n pub x: Field,\n pub y: Field,\n pub is_infinite: bool,\n}\n\nimpl EmbeddedCurvePoint {\n /// Elliptic curve point doubling operation\n /// returns the doubled point of a point P, i.e P+P\n pub fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n /// Returns the null element of the curve; 'the point at infinity'\n pub fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n /// Adds two points P+Q, using the curve addition formula, and also handles point at infinity\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n /// Points subtraction operation, using addition and negation\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n /// Negates a point P, i.e returns -P, by negating the y coordinate.\n /// If the point is at infinity, then the result is also at infinity.\n fn neg(self) -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: self.x, y: -self.y, is_infinite: self.is_infinite }\n }\n}\n\nimpl Eq for EmbeddedCurvePoint {\n /// Checks whether two points are equal\n fn eq(self: Self, b: EmbeddedCurvePoint) -> bool {\n (self.is_infinite & b.is_infinite)\n | ((self.is_infinite == b.is_infinite) & (self.x == b.x) & (self.y == b.y))\n }\n}\n\n/// Scalar for the embedded curve represented as low and high limbs\n/// By definition, the scalar field of the embedded curve is base field of the proving system curve.\n/// It may not fit into a Field element, so it is represented with two Field elements; its low and high limbs.\npub struct EmbeddedCurveScalar {\n pub lo: Field,\n pub hi: Field,\n}\n\nimpl EmbeddedCurveScalar {\n pub fn new(lo: Field, hi: Field) -> Self {\n EmbeddedCurveScalar { lo, hi }\n }\n\n #[field(bn254)]\n pub fn from_field(scalar: Field) -> EmbeddedCurveScalar {\n let (a, b) = crate::field::bn254::decompose(scalar);\n EmbeddedCurveScalar { lo: a, hi: b }\n }\n\n //Bytes to scalar: take the first (after the specified offset) 16 bytes of the input as the lo value, and the next 16 bytes as the hi value\n #[field(bn254)]\n pub(crate) fn from_bytes(bytes: [u8; 64], offset: u32) -> EmbeddedCurveScalar {\n let mut v = 1;\n let mut lo = 0 as Field;\n let mut hi = 0 as Field;\n for i in 0..16 {\n lo = lo + (bytes[offset + 31 - i] as Field) * v;\n hi = hi + (bytes[offset + 15 - i] as Field) * v;\n v = v * 256;\n }\n let sig_s = crate::embedded_curve_ops::EmbeddedCurveScalar { lo, hi };\n sig_s\n }\n}\n\nimpl Eq for EmbeddedCurveScalar {\n fn eq(self, other: Self) -> bool {\n (other.hi == self.hi) & (other.lo == self.lo)\n }\n}\n\n// Computes a multi scalar multiplication over the embedded curve.\n// For bn254, We have Grumpkin and Baby JubJub.\n// For bls12-381, we have JubJub and Bandersnatch.\n//\n// The embedded curve being used is decided by the\n// underlying proof system.\n// docs:start:multi_scalar_mul\npub fn multi_scalar_mul<let N: u32>(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N],\n) -> EmbeddedCurvePoint\n// docs:end:multi_scalar_mul\n{\n let point_array = multi_scalar_mul_array_return(points, scalars);\n EmbeddedCurvePoint { x: point_array[0], y: point_array[1], is_infinite: point_array[2] as bool }\n}\n\n#[foreign(multi_scalar_mul)]\npub(crate) fn multi_scalar_mul_array_return<let N: u32>(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N],\n) -> [Field; 3] {}\n\n// docs:start:fixed_base_scalar_mul\npub fn fixed_base_scalar_mul(scalar: EmbeddedCurveScalar) -> EmbeddedCurvePoint\n// docs:end:fixed_base_scalar_mul\n{\n let g1 = EmbeddedCurvePoint {\n x: 1,\n y: 17631683881184975370165255887551781615748388533673675138860,\n is_infinite: false,\n };\n multi_scalar_mul([g1], [scalar])\n}\n\n/// This function only assumes that the points are on the curve\n/// It handles corner cases around the infinity point causing some overhead compared to embedded_curve_add_not_nul and embedded_curve_add_unsafe\n// This is a hack because returning an `EmbeddedCurvePoint` from a foreign function in brillig returns a [BrilligVariable::SingleAddr; 2] rather than BrilligVariable::BrilligArray\n// as is defined in the brillig bytecode format. This is a workaround which allows us to fix this without modifying the serialization format.\n// docs:start:embedded_curve_add\npub fn embedded_curve_add(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n // docs:end:embedded_curve_add\n let x_coordinates_match = point1.x == point2.x;\n let y_coordinates_match = point1.y == point2.y;\n let double_predicate = (x_coordinates_match & y_coordinates_match);\n let infinity_predicate = (x_coordinates_match & !y_coordinates_match);\n let point1_1 = EmbeddedCurvePoint {\n x: point1.x + (x_coordinates_match as Field),\n y: point1.y,\n is_infinite: x_coordinates_match,\n };\n // point1_1 is guaranteed to have a different abscissa than point2\n let mut result = embedded_curve_add_unsafe(point1_1, point2);\n result.is_infinite = x_coordinates_match;\n\n // dbl if x_match, y_match\n let double = embedded_curve_add_unsafe(point1, point1);\n result = if double_predicate { double } else { result };\n\n // infinity if x_match, !y_match\n if point1.is_infinite {\n result = point2;\n }\n if point2.is_infinite {\n result = point1;\n }\n let mut result_is_infinity = infinity_predicate & (!point1.is_infinite & !point2.is_infinite);\n result.is_infinite = result_is_infinity | (point1.is_infinite & point2.is_infinite);\n result\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(\n _point1: EmbeddedCurvePoint,\n _point2: EmbeddedCurvePoint,\n) -> [Field; 3] {}\n\n/// This function assumes that:\n/// The points are on the curve, and\n/// The points don't share an x-coordinate, and\n/// Neither point is the infinity point.\n/// If it is used with correct input, the function ensures the correct non-zero result is returned.\n/// Except for points on the curve, the other assumptions are checked by the function. It will cause assertion failure if they are not respected.\npub fn embedded_curve_add_not_nul(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n assert(point1.x != point2.x);\n assert(!point1.is_infinite);\n assert(!point2.is_infinite);\n embedded_curve_add_unsafe(point1, point2)\n}\n\n/// Unsafe ec addition\n/// If the inputs are the same, it will perform a doubling, but only if point1 and point2 are the same variable.\n/// If they have the same value but are different variables, the result will be incorrect because in this case\n/// it assumes (but does not check) that the points' x-coordinates are not equal.\n/// It also assumes neither point is the infinity point.\npub fn embedded_curve_add_unsafe(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n let point_array = embedded_curve_add_array_return(point1, point2);\n let x = point_array[0];\n let y = point_array[1];\n\n EmbeddedCurvePoint { x, y, is_infinite: false }\n}\n"},"25":{"path":"std/field/bn254.nr","source":"use crate::field::field_less_than;\nuse crate::runtime::is_unconstrained;\n\n// The low and high decomposition of the field modulus\nglobal PLO: Field = 53438638232309528389504892708671455233;\nglobal PHI: Field = 64323764613183177041862057485226039389;\n\npub(crate) global TWO_POW_128: Field = 0x100000000000000000000000000000000;\nglobal TWO_POW_64: Field = 0x10000000000000000;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(mut x: Field) -> (Field, Field) {\n // Here's we're taking advantage of truncating 64 bit limbs from the input field\n // and then subtracting them from the input such the field division is equivalent to integer division.\n let low_lower_64 = (x as u64) as Field;\n x = (x - low_lower_64) / TWO_POW_64;\n let low_upper_64 = (x as u64) as Field;\n\n let high = (x - low_upper_64) / TWO_POW_64;\n let low = low_upper_64 * TWO_POW_64 + low_lower_64;\n\n (low, high)\n}\n\npub(crate) unconstrained fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nunconstrained fn lte_hint(x: Field, y: Field) -> bool {\n if x == y {\n true\n } else {\n field_less_than(x, y)\n }\n}\n\n// Assert that (alo > blo && ahi >= bhi) || (alo <= blo && ahi > bhi)\nfn assert_gt_limbs(a: (Field, Field), b: (Field, Field)) {\n let (alo, ahi) = a;\n let (blo, bhi) = b;\n unsafe {\n let borrow = lte_hint(alo, blo);\n\n let rlo = alo - blo - 1 + (borrow as Field) * TWO_POW_128;\n let rhi = ahi - bhi - (borrow as Field);\n\n rlo.assert_max_bit_size::<128>();\n rhi.assert_max_bit_size::<128>();\n }\n}\n\n/// Decompose a single field into two 16 byte fields.\npub fn decompose(x: Field) -> (Field, Field) {\n if is_unconstrained() {\n compute_decomposition(x)\n } else {\n unsafe {\n // Take hints of the decomposition\n let (xlo, xhi) = decompose_hint(x);\n\n // Range check the limbs\n xlo.assert_max_bit_size::<128>();\n xhi.assert_max_bit_size::<128>();\n\n // Check that the decomposition is correct\n assert_eq(x, xlo + TWO_POW_128 * xhi);\n\n // Assert that the decomposition of P is greater than the decomposition of x\n assert_gt_limbs((PLO, PHI), (xlo, xhi));\n (xlo, xhi)\n }\n }\n}\n\npub fn assert_gt(a: Field, b: Field) {\n if is_unconstrained() {\n assert(unsafe { field_less_than(b, a) });\n } else {\n // Decompose a and b\n let a_limbs = decompose(a);\n let b_limbs = decompose(b);\n\n // Assert that a_limbs is greater than b_limbs\n assert_gt_limbs(a_limbs, b_limbs)\n }\n}\n\npub fn assert_lt(a: Field, b: Field) {\n assert_gt(b, a);\n}\n\npub fn gt(a: Field, b: Field) -> bool {\n if is_unconstrained() {\n unsafe {\n field_less_than(b, a)\n }\n } else if a == b {\n false\n } else {\n // Take a hint of the comparison and verify it\n unsafe {\n if field_less_than(a, b) {\n assert_gt(b, a);\n false\n } else {\n assert_gt(a, b);\n true\n }\n }\n }\n}\n\npub fn lt(a: Field, b: Field) -> bool {\n gt(b, a)\n}\n\nmod tests {\n // TODO: Allow imports from \"super\"\n use crate::field::bn254::{assert_gt, decompose, gt, lte_hint, PHI, PLO, TWO_POW_128};\n\n #[test]\n fn check_decompose() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_decompose_unconstrained() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_lte_hint() {\n assert(lte_hint(0, 1));\n assert(lte_hint(0, 0x100));\n assert(lte_hint(0x100, TWO_POW_128 - 1));\n assert(!lte_hint(0 - 1, 0));\n\n assert(lte_hint(0, 0));\n assert(lte_hint(0x100, 0x100));\n assert(lte_hint(0 - 1, 0 - 1));\n }\n\n #[test]\n fn check_assert_gt() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n unconstrained fn check_assert_gt_unconstrained() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n fn check_gt() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n unconstrained fn check_gt_unconstrained() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n fn check_plo_phi() {\n assert_eq(PLO + PHI * TWO_POW_128, 0);\n let p_bytes = crate::field::modulus_le_bytes();\n let mut p_low: Field = 0;\n let mut p_high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n p_low += (p_bytes[i] as Field) * offset;\n p_high += (p_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n assert_eq(p_low, PLO);\n assert_eq(p_high, PHI);\n }\n}\n"},"259":{"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},\n hash::compute_siloed_nullifier,\n merkle_tree::leaf_preimage::{IndexedTreeLeafPreimage, LeafPreimage},\n 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 =\n compute_siloed_nullifier(read_request.contract_address, read_request.value());\n assert_eq(\n self.nullifier,\n siloed_value,\n \"Value of the nullifier leaf does not match read request\",\n );\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"},"26":{"path":"std/field/mod.nr","source":"pub mod bn254;\nuse crate::runtime::is_unconstrained;\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size<let BIT_SIZE: u32>(self) {\n // docs:end:assert_max_bit_size\n assert(BIT_SIZE < modulus_num_bits() as u32);\n self.__assert_max_bit_size(BIT_SIZE);\n }\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_le_bits)]\n // docs:start:to_le_bits\n pub fn to_le_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_le_bits\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_be_bits)]\n // docs:start:to_be_bits\n pub fn to_be_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_be_bits\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8;N]` array\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_le_bytes\n pub fn to_le_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_le_bytes\n // Compute the byte decomposition\n let bytes = self.to_le_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[N - 1 - i] != p[N - 1 - i]) {\n assert(bytes[N - 1 - i] < p[N - 1 - i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8;N]` array of length required to represent the field modulus\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_be_bytes\n pub fn to_be_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_be_bytes\n // Compute the byte decomposition\n let bytes = self.to_be_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_be_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[i] != p[i]) {\n assert(bytes[i] < p[i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n // docs:start:to_le_radix\n pub fn to_le_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n crate::assert_constant(radix);\n }\n self.__to_le_radix(radix)\n }\n // docs:end:to_le_radix\n\n // docs:start:to_be_radix\n pub fn to_be_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n crate::assert_constant(radix);\n }\n self.__to_be_radix(radix)\n }\n // docs:end:to_be_radix\n\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b: [u1; 32] = exponent.to_le_bits();\n\n for i in 1..33 {\n r *= r;\n r = (b[32 - i] as Field) * (r * self) + (1 - b[32 - i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x `elem` {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n\n /// Convert a little endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_le_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[i] as Field) * v;\n v = v * 256;\n }\n result\n }\n\n /// Convert a big endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_be_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[N - 1 - i] as Field) * v;\n v = v * 256;\n }\n result\n }\n}\n\n#[builtin(modulus_num_bits)]\npub comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\n/// An unconstrained only built in to efficiently compare fields.\n#[builtin(field_less_than)]\nunconstrained fn __field_less_than(x: Field, y: Field) -> bool {}\n\npub(crate) unconstrained fn field_less_than(x: Field, y: Field) -> bool {\n __field_less_than(x, y)\n}\n\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n if is_unconstrained() {\n unsafe {\n field_less_than(x, y)\n }\n } else {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n }\n}\n\nmod tests {\n use super::field_less_than;\n\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_bytes();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bits), field);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_bytes();\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bits), field);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_radix(256);\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bits), field);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_radix(256);\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bits), field);\n }\n // docs:end:to_le_radix_example\n\n #[test]\n unconstrained fn test_field_less_than() {\n assert(field_less_than(0, 1));\n assert(field_less_than(0, 0x100));\n assert(field_less_than(0x100, 0 - 1));\n assert(!field_less_than(0 - 1, 0));\n }\n}\n"},"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::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\nuse crate::uint128::U128;\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>(\n input: [Field; N],\n separator: u32,\n) -> 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: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0]\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators<let N: u32, let M: u32>(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [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\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\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)\n where\n 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(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\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>\nwhere\n H: Hasher,\n{\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{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl<H> Default for BuildHasherDefault<H>\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash<H>(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for U128 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\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]\nwhere\n T: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<T> Hash for [T]\nwhere\n T: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\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)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl<A, B, C> Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\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)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\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)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\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),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n 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),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n 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),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n 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),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n 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),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n 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),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n 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),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 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),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 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),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 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),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n"},"291":{"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 {\n lhs\n } else {\n rhs\n }\n}\n\npub fn arr_copy_slice<T, let N: u32, let M: u32>(\n src: [T; N],\n mut dst: [T; M],\n offset: u32,\n) -> [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"},"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 uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..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 /// Requires the input array to be non-empty.\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]\nwhere\n T: Ord + Eq,\n{\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]\nwhere\n T: Eq,\n{\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]),\n \"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\nmod test {\n #[test]\n fn map_empty() {\n assert_eq([].map(|x| x + 1), []);\n }\n}\n"},"312":{"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>(\n &mut self,\n deserialise: fn([Field; K]) -> T,\n mut result: [T; C],\n ) -> [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"},"315":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr","source":"use crate::{\n address::{aztec_address::AztecAddress, salted_initialization_hash::SaltedInitializationHash},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS,\n contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator,\n traits::{Deserialize, Serialize, ToField},\n};\n\nglobal PARTIAL_ADDRESS_LENGTH: u32 = 1;\n\n// Partial address\npub struct PartialAddress {\n inner: Field,\n}\n\nimpl ToField for PartialAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl Serialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn serialize(self: Self) -> [Field; PARTIAL_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn deserialize(fields: [Field; PARTIAL_ADDRESS_LENGTH]) -> Self {\n PartialAddress { inner: fields[0] }\n }\n}\n\nimpl PartialAddress {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(\n contract_class_id: ContractClassId,\n salt: Field,\n initialization_hash: Field,\n deployer: AztecAddress,\n ) -> Self {\n PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n SaltedInitializationHash::compute(salt, initialization_hash, deployer),\n )\n }\n\n pub fn compute_from_salted_initialization_hash(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash,\n ) -> Self {\n PartialAddress::from_field(poseidon2_hash_with_separator(\n [contract_class_id.to_field(), salted_initialization_hash.to_field()],\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n ))\n }\n\n pub fn to_field(self) -> Field {\n self.inner\n }\n\n pub fn is_zero(self) -> bool {\n self.to_field() == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"316":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr","source":"use crate::{\n address::aztec_address::AztecAddress, constants::GENERATOR_INDEX__PARTIAL_ADDRESS,\n hash::poseidon2_hash_with_separator, traits::ToField,\n};\n\n// Salted initialization hash. Used in the computation of a partial address.\npub struct SaltedInitializationHash {\n inner: Field,\n}\n\nimpl ToField for SaltedInitializationHash {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl SaltedInitializationHash {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(salt: Field, initialization_hash: Field, deployer: AztecAddress) -> Self {\n SaltedInitializationHash::from_field(poseidon2_hash_with_separator(\n [salt, initialization_hash, deployer.to_field()],\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n ))\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"319":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n abis::function_selector::FunctionSelector,\n address::{\n partial_address::PartialAddress, public_keys_hash::PublicKeysHash,\n salted_initialization_hash::SaltedInitializationHash,\n },\n constants::{\n AZTEC_ADDRESS_LENGTH, FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__CONTRACT_ADDRESS_V1,\n GENERATOR_INDEX__PUBLIC_KEYS_HASH, MAX_FIELD_VALUE,\n },\n contract_class_id::ContractClassId,\n hash::{poseidon2_hash_with_separator, private_functions_root_from_siblings},\n merkle_tree::membership::MembershipWitness,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, ToPoint, TpkM},\n traits::{Deserialize, Empty, FromField, Serialize, ToField},\n utils,\n};\n\n// We do below because `use crate::point::Point;` does not work\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\n\nuse crate::public_keys::AddressPoint;\nuse std::{\n ec::{pow, sqrt},\n embedded_curve_ops::{EmbeddedCurveScalar, fixed_base_scalar_mul as derive_public_key},\n};\n\n// Aztec address\npub struct AztecAddress {\n inner: Field,\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other: Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self { inner: 0 }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn to_address_point(self) -> AddressPoint {\n // We compute the address point by taking our address, setting it to x, and then solving for y in the\n // equation which defines our bn curve:\n // y^2 = x^3 - 17; x = address\n let x = self.inner;\n let y_squared = pow(x, 3) - 17;\n\n // TODO (#8970): Handle cases where we cannot recover a point from an address\n let mut y = sqrt(y_squared);\n\n // If we get a negative y coordinate (any y where y > MAX_FIELD_VALUE / 2), we pin it to the\n // positive one (any value where y <= MAX_FIELD_VALUE / 2) by subtracting it from the Field modulus\n // note: The field modulus is MAX_FIELD_VALUE + 1\n if (!(y.lt(MAX_FIELD_VALUE / 2) | y.eq(MAX_FIELD_VALUE / 2))) {\n y = (MAX_FIELD_VALUE + 1) - y;\n }\n\n AddressPoint { inner: Point { x: self.inner, y, is_infinite: false } }\n }\n\n pub fn compute(public_keys: PublicKeys, partial_address: PartialAddress) -> AztecAddress {\n let public_keys_hash = public_keys.hash();\n\n let pre_address = poseidon2_hash_with_separator(\n [public_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1,\n );\n\n let address_point = derive_public_key(EmbeddedCurveScalar::from_field(pre_address)).add(\n public_keys.ivpk_m.to_point(),\n );\n\n // Note that our address is only the x-coordinate of the full address_point. This is okay because when people want to encrypt something and send it to us\n // they can recover our full point using the x-coordinate (our address itself). To do this, they recompute the y-coordinate according to the equation y^2 = x^3 - 17.\n // When they do this, they may get a positive y-coordinate (a value that is less than or equal to MAX_FIELD_VALUE / 2) or\n // a negative y-coordinate (a value that is more than MAX_FIELD_VALUE), and we cannot dictate which one they get and hence the recovered point may sometimes be different than the one\n // our secrect can decrypt. Regardless though, they should and will always encrypt using point with the positive y-coordinate by convention.\n // This ensures that everyone encrypts to the same point given an arbitrary x-coordinate (address). This is allowed because even though our original point may not have a positive y-coordinate,\n // with our original secret, we will be able to derive the secret to the point with the flipped (and now positive) y-coordinate that everyone encrypts to.\n AztecAddress::from_field(address_point.x)\n }\n\n pub fn compute_from_private_function(\n function_selector: FunctionSelector,\n functino_vk_hash: Field,\n function_leaf_membership_witness: MembershipWitness<FUNCTION_TREE_HEIGHT>,\n contract_class_artifact_hash: Field,\n contract_class_public_bytecode_commitment: Field,\n salted_initialization_hash: SaltedInitializationHash,\n public_keys: PublicKeys,\n ) -> Self {\n let private_functions_root = private_functions_root_from_siblings(\n function_selector,\n functino_vk_hash,\n function_leaf_membership_witness.leaf_index,\n function_leaf_membership_witness.sibling_path,\n );\n\n let contract_class_id = ContractClassId::compute(\n contract_class_artifact_hash,\n private_functions_root,\n contract_class_public_bytecode_commitment,\n );\n\n // Compute contract address using the preimage which includes the class_id.\n let partial_address = PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n salted_initialization_hash,\n );\n\n AztecAddress::compute(public_keys, partial_address)\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys() {\n let public_keys = PublicKeys {\n npk_m: NpkM {\n inner: Point {\n x: 0x22f7fcddfa3ce3e8f0cc8e82d7b94cdd740afa3e77f8e4a63ea78a239432dcab,\n y: 0x0471657de2b6216ade6c506d28fbc22ba8b8ed95c871ad9f3e3984e90d9723a7,\n is_infinite: false,\n },\n },\n ivpk_m: IvpkM {\n inner: Point {\n x: 0x111223493147f6785514b1c195bb37a2589f22a6596d30bb2bb145fdc9ca8f1e,\n y: 0x273bbffd678edce8fe30e0deafc4f66d58357c06fd4a820285294b9746c3be95,\n is_infinite: false,\n },\n },\n ovpk_m: OvpkM {\n inner: Point {\n x: 0x09115c96e962322ffed6522f57194627136b8d03ac7469109707f5e44190c484,\n y: 0x0c49773308a13d740a7f0d4f0e6163b02c5a408b6f965856b6a491002d073d5b,\n is_infinite: false,\n },\n },\n tpk_m: TpkM {\n inner: Point {\n x: 0x00d3d81beb009873eb7116327cf47c612d5758ef083d4fda78e9b63980b2a762,\n y: 0x2f567d22d2b02fe1f4ad42db9d58a36afd1983e7e2909d1cab61cafedad6193a,\n is_infinite: false,\n },\n },\n };\n\n let partial_address = PartialAddress::from_field(\n 0x0a7c585381b10f4666044266a02405bf6e01fa564c8517d4ad5823493abd31de,\n );\n\n let address = AztecAddress::compute(public_keys, partial_address);\n\n // The following value was generated by `derivation.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_computed_address_from_partial_and_pubkeys =\n 0x24e4646f58b9fbe7d38e317db8d5636c423fbbdfbe119fc190fe9c64747e0c62;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkeys);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n"},"320":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr","source":"/// Utility function to console.log data in the acir simulator.\n/// Example:\n/// debug_log(\"blah blah this is a debug string\");\npub fn debug_log<let N: u32>(msg: str<N>) {\n debug_log_format(msg, []);\n}\n\n/// Utility function to console.log data in the acir simulator. This variant receives a format string in which the\n/// `${k}` tokens will be replaced with the k-eth value in the `args` array.\n/// Examples:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\npub fn debug_log_format<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe { debug_log_oracle_wrapper(msg, args) };\n}\n\npub unconstrained fn debug_log_oracle_wrapper<let M: u32, let N: u32>(\n msg: str<M>,\n args: [Field; N],\n) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n#[oracle(debugLog)]\nunconstrained fn debug_log_oracle<let M: u32>(_msg: str<M>, args: [Field]) {}\n"},"324":{"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::{hash::poseidon2_hash, traits::{Deserialize, Empty, Hash, Serialize}};\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"},"328":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr","source":"use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector,\n log_hash::{LogHash, ScopedEncryptedLogHash, ScopedLogHash},\n note_hash::ScopedNoteHash,\n nullifier::ScopedNullifier,\n },\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__UNIQUE_NOTE_HASH, GENERATOR_INDEX__VK,\n MAX_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX,\n },\n merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n proof::verification_key::VerificationKey,\n traits::{is_empty, ToField},\n utils::field::field_from_bytes_32_trunc,\n};\nuse super::utils::field::field_from_bytes;\n\npub fn sha256_to_field<let N: u32>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = std::hash::sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT],\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(\n function_leaf,\n function_leaf_index,\n function_leaf_sibling_path,\n )\n}\n\nfn compute_note_hash_nonce(tx_hash: Field, note_index_in_tx: u32) -> Field {\n // Hashing tx hash with note index in tx is guaranteed to be unique\n poseidon2_hash_with_separator(\n [tx_hash, note_index_in_tx as Field],\n GENERATOR_INDEX__NOTE_HASH_NONCE,\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n let inputs = [nonce, note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, unique_note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), unique_note_hash],\n GENERATOR_INDEX__SILOED_NOTE_HASH,\n )\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash, tx_hash: Field, note_index_in_tx: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(tx_hash, note_index_in_tx);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), nullifier],\n GENERATOR_INDEX__OUTER_NULLIFIER,\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn silo_encrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n // We assume contract address has already been masked\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n accumulate_sha256(\n [log_hash.contract_address.to_field(), log_hash.log_hash.value],\n )\n }\n}\n\npub fn mask_encrypted_log_hash(scoped_log: ScopedEncryptedLogHash) -> AztecAddress {\n if scoped_log.contract_address.is_zero() {\n AztecAddress::from_field(0)\n } else if (scoped_log.log_hash.randomness == 0) {\n scoped_log.contract_address\n } else {\n AztecAddress::from_field(poseidon2_hash_with_separator(\n [scoped_log.contract_address.to_field(), scoped_log.log_hash.randomness],\n 0,\n ))\n }\n}\n\nfn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk<let N: u32>(\n _vk: VerificationKey<N>,\n) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs =\n [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes: [u8; 32] = inputs[i].to_be_bytes();\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\npub fn silo_l2_to_l1_message(\n msg: ScopedL2ToL1Message,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id,\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually\n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field\n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes: [u8; 32] = input[offset].to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\n// NB: this assumes MAX_ENCRYPTED_LOGS_PER_TX == MAX_UNENCRYPTED_LOGS_PER_TX\n// to avoid doubling code, since we can't define the byte len to be 32*N directly.\npub fn compute_tx_logs_hash(logs: [LogHash; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n // TODO: This is not checking that the decomposition is smaller than P\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_radix(256);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn compute_tx_note_logs_hash(logs: [LogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_NOTE_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX {\n // TODO: This is not checking that the decomposition is smaller than P\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_radix(256);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn verification_key_hash<let N: u32>(key: [Field; N]) -> Field {\n crate::hash::poseidon2_hash(key)\n}\n\n#[inline_always]\npub fn pedersen_hash<let N: u32>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<let N: u32>(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator<let N: u32, T>(inputs: [Field; N], separator: T) -> Field\nwhere\n T: ToField,\n{\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of N + 1\n let in_len = N + 1;\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\npub fn poseidon2_hash_with_separator_slice<T>(inputs: [Field], separator: T) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\n#[no_predicates]\npub fn poseidon2_hash_bytes<let N: u32>(inputs: [u8; N]) -> Field {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of Math.ceil(N/31)\n let mut in_len = N / 31;\n let mut has_padding = false;\n if N % 31 != 0 {\n in_len += 1;\n has_padding = true;\n }\n\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n sponge.absorb(field_from_bytes(current_field, false));\n current_field = [0; 31];\n }\n }\n if has_padding {\n sponge.absorb(field_from_bytes(current_field, false));\n }\n\n sponge.squeeze()\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,\n 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,\n 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,\n 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,\n 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,\n 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,\n 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = std::hash::sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result =\n compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(\n AztecAddress::from_field(1),\n EthAddress::from_field(3),\n 5,\n 2,\n 4,\n );\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n ScopedL2ToL1Message {\n message: L2ToL1Message { recipient: EthAddress::from_field(1), content: 2, counter: 0 },\n contract_address: AztecAddress::from_field(3),\n },\n version,\n chainId,\n );\n\n // The following value was generated by `l2_to_l1_message.test.ts`\n let hash_from_typescript = 0x00c6155d69febb9d5039b374dd4f77bf57b7c881709aa524a18acaa0bd57476a;\n\n assert_eq(hash, hash_from_typescript);\n}\n"},"329":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr","source":"use crate::{\n address::{\n aztec_address::AztecAddress, partial_address::PartialAddress,\n public_keys_hash::PublicKeysHash,\n },\n constants::CONTRACT_INSTANCE_LENGTH,\n contract_class_id::ContractClassId,\n public_keys::PublicKeys,\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 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\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,\n PartialAddress::compute(\n self.contract_class_id,\n self.salt,\n self.initialization_hash,\n self.deployer,\n ),\n )\n }\n}\n"},"330":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr","source":"use crate::{\n address::public_keys_hash::PublicKeysHash,\n constants::{\n DEFAULT_IVPK_M_X, DEFAULT_IVPK_M_Y, DEFAULT_NPK_M_X, DEFAULT_NPK_M_Y, DEFAULT_OVPK_M_X,\n DEFAULT_OVPK_M_Y, DEFAULT_TPK_M_X, DEFAULT_TPK_M_Y, GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n },\n hash::poseidon2_hash_with_separator,\n point::POINT_LENGTH,\n traits::{Deserialize, Hash, Serialize},\n};\n\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse dep::std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\nuse std::default::Default;\nuse std::embedded_curve_ops::EmbeddedCurveScalar;\n\npub global PUBLIC_KEYS_LENGTH: u32 = 12;\n\npub struct PublicKeys {\n npk_m: NpkM,\n ivpk_m: IvpkM,\n ovpk_m: OvpkM,\n tpk_m: TpkM,\n}\n\npub trait ToPoint {\n fn to_point(self) -> Point;\n}\n\npub struct NpkM {\n inner: Point,\n}\n\nimpl ToPoint for NpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for NpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\n// Note: If we store npk_m_hash directly we can remove this trait implementation. See #8091\nimpl Hash for NpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\npub struct IvpkM {\n inner: Point,\n}\n\nimpl ToPoint for IvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for IvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct OvpkM {\n inner: Point,\n}\n\nimpl Hash for OvpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nimpl ToPoint for OvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for OvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct TpkM {\n inner: Point,\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for TpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\nimpl Default for PublicKeys {\n fn default() -> Self {\n PublicKeys {\n npk_m: NpkM {\n inner: Point { x: DEFAULT_NPK_M_X, y: DEFAULT_NPK_M_Y, is_infinite: false },\n },\n ivpk_m: IvpkM {\n inner: Point { x: DEFAULT_IVPK_M_X, y: DEFAULT_IVPK_M_Y, is_infinite: false },\n },\n ovpk_m: OvpkM {\n inner: Point { x: DEFAULT_OVPK_M_X, y: DEFAULT_OVPK_M_Y, is_infinite: false },\n },\n tpk_m: TpkM {\n inner: Point { x: DEFAULT_TPK_M_X, y: DEFAULT_TPK_M_Y, is_infinite: false },\n },\n }\n }\n}\n\nimpl Eq for PublicKeys {\n fn eq(self, other: PublicKeys) -> bool {\n (self.npk_m.inner == other.npk_m.inner)\n & (self.ivpk_m.inner == other.ivpk_m.inner)\n & (self.ovpk_m.inner == other.ovpk_m.inner)\n & (self.tpk_m.inner == other.tpk_m.inner)\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(poseidon2_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field,\n ))\n }\n}\n\nimpl Serialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.inner.x,\n self.npk_m.inner.y,\n self.npk_m.inner.is_infinite as Field,\n self.ivpk_m.inner.x,\n self.ivpk_m.inner.y,\n self.ivpk_m.inner.is_infinite as Field,\n self.ovpk_m.inner.x,\n self.ovpk_m.inner.y,\n self.ovpk_m.inner.is_infinite as Field,\n self.tpk_m.inner.x,\n self.tpk_m.inner.y,\n self.tpk_m.inner.is_infinite as Field,\n ]\n }\n}\n\nimpl Deserialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM {\n inner: Point {\n x: serialized[0],\n y: serialized[1],\n is_infinite: serialized[2] as bool,\n },\n },\n ivpk_m: IvpkM {\n inner: Point {\n x: serialized[3],\n y: serialized[4],\n is_infinite: serialized[5] as bool,\n },\n },\n ovpk_m: OvpkM {\n inner: Point {\n x: serialized[6],\n y: serialized[7],\n is_infinite: serialized[8] as bool,\n },\n },\n tpk_m: TpkM {\n inner: Point {\n x: serialized[9],\n y: serialized[10],\n is_infinite: serialized[11] as bool,\n },\n },\n }\n }\n}\n\npub struct AddressPoint {\n inner: Point,\n}\n\nimpl ToPoint for AddressPoint {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n#[test]\nunconstrained fn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash =\n 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nunconstrained fn compute_default_hash() {\n let keys = PublicKeys::default();\n\n let actual = keys.hash();\n let test_data_default_hash = 0x1d3bf1fb93ae0e9cda83b203dd91c3bfb492a9aecf30ec90e1057eced0f0e62d;\n\n assert(actual.to_field() == test_data_default_hash);\n}\n\n#[test]\nunconstrained fn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.inner.x, deserialized.npk_m.inner.x);\n assert_eq(keys.npk_m.inner.y, deserialized.npk_m.inner.y);\n assert_eq(keys.ivpk_m.inner.x, deserialized.ivpk_m.inner.x);\n assert_eq(keys.ivpk_m.inner.y, deserialized.ivpk_m.inner.y);\n assert_eq(keys.ovpk_m.inner.x, deserialized.ovpk_m.inner.x);\n assert_eq(keys.ovpk_m.inner.y, deserialized.ovpk_m.inner.y);\n assert_eq(keys.tpk_m.inner.x, deserialized.tpk_m.inner.x);\n assert_eq(keys.tpk_m.inner.y, deserialized.tpk_m.inner.y);\n}\n"},"34":{"path":"std/hash/poseidon2.nr","source":"use crate::default::Default;\nuse crate::hash::Hasher;\n\ncomptime global RATE: u32 = 3;\n\npub struct Poseidon2 {\n cache: [Field; 3],\n state: [Field; 4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n #[no_predicates]\n pub fn hash<let N: u32>(input: [Field; N], message_size: u32) -> Field {\n if message_size == N {\n Poseidon2::hash_internal(input, N, false)\n } else {\n Poseidon2::hash_internal(input, message_size, true)\n }\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2 {\n let mut result =\n Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n }\n\n fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal<let N: u32>(\n input: [Field; N],\n in_len: u32,\n is_variable_length: bool,\n ) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\npub struct Poseidon2Hasher {\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv: Field = (self._state.len() as Field) * 18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field) {\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher { _state: &[] }\n }\n}\n"},"35":{"path":"std/hash/sha256.nr","source":"use crate::runtime::is_unconstrained;\n\n// Implementation of SHA-256 mapping a byte array of variable length to\n// 32 bytes.\n\n// A message block is up to 64 bytes taken from the input.\nglobal BLOCK_SIZE = 64;\n\n// The first index in the block where the 8 byte message size will be written.\nglobal MSG_SIZE_PTR = 56;\n\n// Size of the message block when packed as 4-byte integer array.\nglobal INT_BLOCK_SIZE = 16;\n\n// A `u32` integer consists of 4 bytes.\nglobal INT_SIZE = 4;\n\n// Index of the integer in the `INT_BLOCK` where the length is written.\nglobal INT_SIZE_PTR = MSG_SIZE_PTR / INT_SIZE;\n\n// Magic numbers for bit shifting.\n// Works with actual bit shifting as well as the compiler turns them into * and /\n// but circuit execution appears to be 10% faster this way.\nglobal TWO_POW_8 = 256;\nglobal TWO_POW_16 = TWO_POW_8 * 256;\nglobal TWO_POW_24 = TWO_POW_16 * 256;\nglobal TWO_POW_32 = TWO_POW_24 as u64 * 256;\n\n// Index of a byte in a 64 byte block; ie. 0..=63\ntype BLOCK_BYTE_PTR = u32;\n\n// The foreign function to compress blocks works on 16 pieces of 4-byte integers, instead of 64 bytes.\ntype INT_BLOCK = [u32; INT_BLOCK_SIZE];\n\n// A message block is a slice of the original message of a fixed size,\n// potentially padded with zeros, with neighbouring 4 bytes packed into integers.\ntype MSG_BLOCK = INT_BLOCK;\n\n// The hash is 32 bytes.\ntype HASH = [u8; 32];\n\n// The state accumulates the blocks.\n// Its overall size is the same as the `HASH`.\ntype STATE = [u32; 8];\n\n// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256<let N: u32>(input: [u8; N]) -> HASH\n// docs:end:sha256\n{\n digest(input)\n}\n\n#[foreign(sha256_compression)]\npub fn sha256_compression(_input: INT_BLOCK, _state: STATE) -> STATE {}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest<let N: u32>(msg: [u8; N]) -> HASH {\n sha256_var(msg, N as u64)\n}\n\n// Variable size SHA-256 hash\npub fn sha256_var<let N: u32>(msg: [u8; N], message_size: u64) -> HASH {\n let message_size = message_size as u32;\n let num_blocks = N / BLOCK_SIZE;\n let mut msg_block: MSG_BLOCK = [0; INT_BLOCK_SIZE];\n // Intermediate hash, starting with the canonical initial value\n let mut h: STATE = [\n 1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635,\n 1541459225,\n ];\n // Pointer into msg_block on a 64 byte scale\n let mut msg_byte_ptr = 0;\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let (new_msg_block, new_msg_byte_ptr) =\n unsafe { build_msg_block(msg, message_size, msg_start) };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n // Verify the block we are compressing was appropriately constructed\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n\n // If the block is filled, compress it.\n // An un-filled block is handled after this loop.\n if (msg_start < message_size) & (msg_byte_ptr == BLOCK_SIZE) {\n h = sha256_compression(msg_block, h);\n }\n }\n\n let modulo = N % BLOCK_SIZE;\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n if modulo != 0 {\n let msg_start = BLOCK_SIZE * num_blocks;\n let (new_msg_block, new_msg_byte_ptr) =\n unsafe { build_msg_block(msg, message_size, msg_start) };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n verify_msg_block_padding(msg_block, msg_byte_ptr);\n }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n // If we had modulo == 0 then it means the last block was full,\n // and we can reset the pointer to zero to overwrite it.\n if msg_byte_ptr == BLOCK_SIZE {\n msg_byte_ptr = 0;\n }\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n // Here we rely on the fact that everything beyond the available input is set to 0.\n msg_block = update_block_item(\n msg_block,\n msg_byte_ptr,\n |msg_item| set_item_byte_then_zeros(msg_item, msg_byte_ptr, 1 << 7),\n );\n msg_byte_ptr = msg_byte_ptr + 1;\n let last_block = msg_block;\n\n // If we don't have room to write the size, compress the block and reset it.\n if msg_byte_ptr > MSG_SIZE_PTR {\n h = sha256_compression(msg_block, h);\n // `attach_len_to_msg_block` will zero out everything after the `msg_byte_ptr`.\n msg_byte_ptr = 0;\n }\n\n msg_block = unsafe { attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size) };\n\n if !is_unconstrained() {\n verify_msg_len(msg_block, last_block, msg_byte_ptr, message_size);\n }\n\n hash_final_block(msg_block, h)\n}\n\n// Take `BLOCK_SIZE` number of bytes from `msg` starting at `msg_start`.\n// Returns the block and the length that has been copied rather than padded with zeros.\nunconstrained fn build_msg_block<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n msg_start: u32,\n) -> (MSG_BLOCK, BLOCK_BYTE_PTR) {\n let mut msg_block: MSG_BLOCK = [0; INT_BLOCK_SIZE];\n\n // We insert `BLOCK_SIZE` bytes (or up to the end of the message)\n let block_input = if msg_start + BLOCK_SIZE > message_size {\n if message_size < msg_start {\n // This function is sometimes called with `msg_start` past the end of the message.\n // In this case we return an empty block and zero pointer to signal that the result should be ignored.\n 0\n } else {\n message_size - msg_start\n }\n } else {\n BLOCK_SIZE\n };\n\n // Figure out the number of items in the int array that we have to pack.\n // e.g. if the input is [0,1,2,3,4,5] then we need to pack it as 2 items: [0123, 4500]\n let mut int_input = block_input / INT_SIZE;\n if block_input % INT_SIZE != 0 {\n int_input = int_input + 1;\n };\n\n for i in 0..int_input {\n let mut msg_item: u32 = 0;\n // Always construct the integer as 4 bytes, even if it means going beyond the input.\n for j in 0..INT_SIZE {\n let k = i * INT_SIZE + j;\n let msg_byte = if k < block_input {\n msg[msg_start + k]\n } else {\n 0\n };\n msg_item = lshift8(msg_item, 1) + msg_byte as u32;\n }\n msg_block[i] = msg_item;\n }\n\n // Returning the index as if it was a 64 byte array.\n // We have to project it down to 16 items and bit shifting to get a byte back if we need it.\n (msg_block, block_input)\n}\n\n// Verify the block we are compressing was appropriately constructed by `build_msg_block`\n// and matches the input data. Returns the index of the first unset item.\n// If `message_size` is less than `msg_start` then this is called with the old non-empty block;\n// in that case we can skip verification, ie. no need to check that everything is zero.\nfn verify_msg_block<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n msg_block: MSG_BLOCK,\n msg_start: u32,\n) -> BLOCK_BYTE_PTR {\n let mut msg_byte_ptr = 0;\n let mut msg_end = msg_start + BLOCK_SIZE;\n if msg_end > N {\n msg_end = N;\n }\n // We might have to go beyond the input to pad the fields.\n if msg_end % INT_SIZE != 0 {\n msg_end = msg_end + INT_SIZE - msg_end % INT_SIZE;\n }\n\n // Reconstructed packed item.\n let mut msg_item: u32 = 0;\n\n // Inclusive at the end so that we can compare the last item.\n let mut i: u32 = 0;\n for k in msg_start..=msg_end {\n if k % INT_SIZE == 0 {\n // If we consumed some input we can compare against the block.\n if (msg_start < message_size) & (k > msg_start) {\n assert_eq(msg_block[i], msg_item as u32);\n i = i + 1;\n msg_item = 0;\n }\n }\n // Shift the accumulator\n msg_item = lshift8(msg_item, 1);\n // If we have input to consume, add it at the rightmost position.\n if k < message_size & k < msg_end {\n msg_item = msg_item + msg[k] as u32;\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n\n msg_byte_ptr\n}\n\n// Verify the block we are compressing was appropriately padded with zeros by `build_msg_block`.\n// This is only relevant for the last, potentially partially filled block.\nfn verify_msg_block_padding(msg_block: MSG_BLOCK, msg_byte_ptr: BLOCK_BYTE_PTR) {\n // Check all the way to the end of the block.\n verify_msg_block_zeros(msg_block, msg_byte_ptr, INT_BLOCK_SIZE);\n}\n\n// Verify that a region of ints in the message block are (partially) zeroed,\n// up to an (exclusive) maximum which can either be the end of the block\n// or just where the size is to be written.\nfn verify_msg_block_zeros(\n msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n max_int_byte_ptr: u32,\n) {\n // This variable is used to get around the compiler under-constrained check giving a warning.\n // We want to check against a constant zero, but if it does not come from the circuit inputs\n // or return values the compiler check will issue a warning.\n let zero = msg_block[0] - msg_block[0];\n\n // First integer which is supposed to be (partially) zero.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n let zeros = INT_SIZE - modulo;\n let mask = if zeros == 3 {\n TWO_POW_24\n } else if zeros == 2 {\n TWO_POW_16\n } else {\n TWO_POW_8\n };\n assert_eq(msg_block[int_byte_ptr] % mask, zero);\n int_byte_ptr = int_byte_ptr + 1;\n }\n\n // Check the rest of the items.\n for i in 0..max_int_byte_ptr {\n if i >= int_byte_ptr {\n assert_eq(msg_block[i], zero);\n }\n }\n}\n\n// Verify that up to the byte pointer the two blocks are equal.\n// At the byte pointer the new block can be partially zeroed.\nfn verify_msg_block_equals_last(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n) {\n // msg_byte_ptr is the position at which they are no longer have to be the same.\n // First integer which is supposed to be (partially) zero contains that pointer.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Reconstruct the partially zero item from the last block.\n let last_field = last_block[int_byte_ptr];\n let mut msg_item: u32 = 0;\n // Reset to where they are still equal.\n msg_byte_ptr = msg_byte_ptr - modulo;\n for i in 0..INT_SIZE {\n msg_item = lshift8(msg_item, 1);\n if i < modulo {\n msg_item = msg_item + get_item_byte(last_field, msg_byte_ptr) as u32;\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n assert_eq(msg_block[int_byte_ptr], msg_item);\n }\n\n for i in 0..INT_SIZE_PTR {\n if i < int_byte_ptr {\n assert_eq(msg_block[i], last_block[i]);\n }\n }\n}\n\n// Apply a function on the block item which the pointer indicates.\nfn update_block_item<Env>(\n mut msg_block: MSG_BLOCK,\n msg_byte_ptr: BLOCK_BYTE_PTR,\n f: fn[Env](u32) -> u32,\n) -> MSG_BLOCK {\n let i = msg_byte_ptr / INT_SIZE;\n msg_block[i] = f(msg_block[i]);\n msg_block\n}\n\n// Set the rightmost `zeros` number of bytes to 0.\nfn set_item_zeros(item: u32, zeros: u8) -> u32 {\n lshift8(rshift8(item, zeros), zeros)\n}\n\n// Replace one byte in the item with a value, and set everything after it to zero.\nfn set_item_byte_then_zeros(msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR, msg_byte: u8) -> u32 {\n let zeros = INT_SIZE - msg_byte_ptr % INT_SIZE;\n let zeroed_item = set_item_zeros(msg_item, zeros as u8);\n let new_item = byte_into_item(msg_byte, msg_byte_ptr);\n zeroed_item + new_item\n}\n\n// Get a byte of a message item according to its overall position in the `BLOCK_SIZE` space.\nfn get_item_byte(mut msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR) -> u8 {\n // How many times do we have to shift to the right to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n msg_item = rshift8(msg_item, shifts as u8);\n // At this point the byte we want is in the rightmost position.\n msg_item as u8\n}\n\n// Project a byte into a position in a field based on the overall block pointer.\n// For example putting 1 into pointer 5 would be 100, because overall we would\n// have [____, 0100] with indexes [0123,4567].\nfn byte_into_item(msg_byte: u8, msg_byte_ptr: BLOCK_BYTE_PTR) -> u32 {\n let mut msg_item = msg_byte as u32;\n // How many times do we have to shift to the left to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n lshift8(msg_item, shifts as u8)\n}\n\n// Construct a field out of 4 bytes.\nfn make_item(b0: u8, b1: u8, b2: u8, b3: u8) -> u32 {\n let mut item = b0 as u32;\n item = lshift8(item, 1) + b1 as u32;\n item = lshift8(item, 1) + b2 as u32;\n item = lshift8(item, 1) + b3 as u32;\n item\n}\n\n// Shift by 8 bits to the left between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise multiplies by 256.\nfn lshift8(item: u32, shifts: u8) -> u32 {\n if is_unconstrained() {\n if item == 0 {\n 0\n } else {\n // Brillig wouldn't shift 0<<4 without overflow.\n item << (8 * shifts)\n }\n } else {\n // We can do a for loop up to INT_SIZE or an if-else.\n if shifts == 0 {\n item\n } else if shifts == 1 {\n item * TWO_POW_8\n } else if shifts == 2 {\n item * TWO_POW_16\n } else if shifts == 3 {\n item * TWO_POW_24\n } else {\n // Doesn't make sense, but it's most likely called on 0 anyway.\n 0\n }\n }\n}\n\n// Shift by 8 bits to the right between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise divides by 256.\nfn rshift8(item: u32, shifts: u8) -> u32 {\n if is_unconstrained() {\n item >> (8 * shifts)\n } else {\n // Division wouldn't work on `Field`.\n if shifts == 0 {\n item\n } else if shifts == 1 {\n item / TWO_POW_8\n } else if shifts == 2 {\n item / TWO_POW_16\n } else if shifts == 3 {\n item / TWO_POW_24\n } else {\n 0\n }\n }\n}\n\n// Zero out all bytes between the end of the message and where the length is appended,\n// then write the length into the last 8 bytes of the block.\nunconstrained fn attach_len_to_msg_block(\n mut msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) -> MSG_BLOCK {\n // We assume that `msg_byte_ptr` is less than 57 because if not then it is reset to zero before calling this function.\n // In any case, fill blocks up with zeros until the last 64 bits (i.e. until msg_byte_ptr = 56).\n // There can be one item which has to be partially zeroed.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Index of the block in which we find the item we need to partially zero.\n let i = msg_byte_ptr / INT_SIZE;\n let zeros = INT_SIZE - modulo;\n msg_block[i] = set_item_zeros(msg_block[i], zeros as u8);\n msg_byte_ptr = msg_byte_ptr + zeros;\n }\n\n // The rest can be zeroed without bit shifting anything.\n for i in (msg_byte_ptr / INT_SIZE)..INT_SIZE_PTR {\n msg_block[i] = 0;\n }\n\n // Set the last two 4 byte ints as the first/second half of the 8 bytes of the length.\n let len = 8 * message_size;\n let len_bytes: [u8; 8] = (len as Field).to_be_bytes();\n for i in 0..=1 {\n let shift = i * 4;\n msg_block[INT_SIZE_PTR + i] = make_item(\n len_bytes[shift],\n len_bytes[shift + 1],\n len_bytes[shift + 2],\n len_bytes[shift + 3],\n );\n }\n msg_block\n}\n\n// Verify that the message length was correctly written by `attach_len_to_msg_block`,\n// and that everything between the byte pointer and the size pointer was zeroed,\n// and that everything before the byte pointer was untouched.\nfn verify_msg_len(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) {\n // Check zeros up to the size pointer.\n verify_msg_block_zeros(msg_block, msg_byte_ptr, INT_SIZE_PTR);\n\n // Check that up to the pointer we match the last block.\n verify_msg_block_equals_last(msg_block, last_block, msg_byte_ptr);\n\n // We verify the message length was inserted correctly by reversing the byte decomposition.\n let mut reconstructed_len: u64 = 0;\n for i in INT_SIZE_PTR..INT_BLOCK_SIZE {\n reconstructed_len = reconstructed_len * TWO_POW_32;\n reconstructed_len = reconstructed_len + msg_block[i] as u64;\n }\n let len = 8 * message_size as u64;\n assert_eq(reconstructed_len, len);\n}\n\n// Perform the final compression, then transform the `STATE` into `HASH`.\nfn hash_final_block(msg_block: MSG_BLOCK, mut state: STATE) -> HASH {\n let mut out_h: HASH = [0; 32]; // Digest as sequence of bytes\n // Hash final padded block\n state = sha256_compression(msg_block, state);\n\n // Return final hash as byte array\n for j in 0..8 {\n let h_bytes: [u8; 4] = (state[j] as Field).to_be_bytes();\n for k in 0..4 {\n out_h[4 * j + k] = h_bytes[k];\n }\n }\n\n out_h\n}\n\nmod tests {\n use super::{\n attach_len_to_msg_block, build_msg_block, byte_into_item, get_item_byte, make_item,\n set_item_byte_then_zeros, set_item_zeros,\n };\n use super::INT_BLOCK;\n use super::sha256_var;\n\n #[test]\n fn smoke_test() {\n let input = [0xbd];\n let result = [\n 0x68, 0x32, 0x57, 0x20, 0xaa, 0xbd, 0x7c, 0x82, 0xf3, 0x0f, 0x55, 0x4b, 0x31, 0x3d,\n 0x05, 0x70, 0xc9, 0x5a, 0xcc, 0xbb, 0x7d, 0xc4, 0xb5, 0xaa, 0xe1, 0x12, 0x04, 0xc0,\n 0x8f, 0xfe, 0x73, 0x2b,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_just_over_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116,\n ];\n let result = [\n 91, 122, 146, 93, 52, 109, 133, 148, 171, 61, 156, 70, 189, 238, 153, 7, 222, 184, 94,\n 24, 65, 114, 192, 244, 207, 199, 87, 232, 192, 224, 171, 207,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_multiple_over_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115,\n 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49,\n 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46,\n 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115,\n 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97,\n 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45,\n 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55,\n 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32,\n 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32,\n 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64,\n 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103,\n 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115,\n 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101,\n 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109,\n 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56,\n 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48,\n 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75,\n 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67,\n 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101,\n 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99,\n ];\n let result = [\n 116, 90, 151, 31, 78, 22, 138, 180, 211, 189, 69, 76, 227, 200, 155, 29, 59, 123, 154,\n 60, 47, 153, 203, 129, 157, 251, 48, 2, 79, 11, 65, 47,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_just_under_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59,\n ];\n let result = [\n 143, 140, 76, 173, 222, 123, 102, 68, 70, 149, 207, 43, 39, 61, 34, 79, 216, 252, 213,\n 165, 74, 16, 110, 74, 29, 64, 138, 167, 30, 1, 9, 119,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_big_not_block_multiple() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115,\n 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49,\n 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46,\n 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115,\n 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97,\n 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45,\n 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55,\n 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32,\n 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32,\n 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64,\n 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103,\n 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115,\n 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101,\n 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109,\n 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56,\n 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48,\n 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75,\n 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67,\n 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101,\n 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99, 116, 58, 77, 101, 115, 115, 97,\n 103, 101, 45, 73, 100, 58, 68, 97, 116, 101, 58, 116, 111, 59, 32, 98, 61,\n ];\n let result = [\n 112, 144, 73, 182, 208, 98, 9, 238, 54, 229, 61, 145, 222, 17, 72, 62, 148, 222, 186,\n 55, 192, 82, 220, 35, 66, 47, 193, 200, 22, 38, 26, 186,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_big_with_padding() {\n let input = [\n 48, 130, 1, 37, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 48, 130, 1, 17,\n 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12,\n 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48,\n 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6,\n 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2,\n 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89,\n 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2,\n 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75,\n 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1,\n 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189,\n 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4,\n 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45,\n 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4,\n 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188,\n 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212,\n 181, 240, 180, 106, 195, 24, 117, 54, 129, 19, 10, 250, 53,\n ];\n let message_size = 297;\n assert_eq(sha256_var(input, message_size), result);\n }\n\n #[test]\n fn msg_big_no_padding() {\n let input = [\n 48, 130, 1, 37, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 48, 130, 1, 17,\n 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12,\n 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48,\n 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6,\n 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2,\n 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89,\n 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2,\n 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75,\n 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1,\n 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189,\n 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4,\n 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45,\n 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4,\n 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188,\n 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38,\n ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212,\n 181, 240, 180, 106, 195, 24, 117, 54, 129, 19, 10, 250, 53,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn same_msg_len_variable_padding() {\n let input = [\n 29, 81, 165, 84, 243, 114, 101, 37, 242, 146, 127, 99, 69, 145, 39, 72, 213, 39, 253,\n 179, 218, 37, 217, 201, 172, 93, 198, 50, 249, 70, 15, 30, 162, 112, 187, 40, 140, 9,\n 236, 53, 32, 44, 38, 163, 113, 254, 192, 197, 44, 89, 71, 130, 169, 242, 17, 211, 214,\n 72, 19, 178, 186, 168, 147, 127, 99, 101, 252, 227, 8, 147, 150, 85, 97, 158, 17, 107,\n 218, 244, 82, 113, 247, 91, 208, 214, 60, 244, 87, 137, 173, 201, 130, 18, 66, 56, 198,\n 149, 207, 189, 175, 120, 123, 224, 177, 167, 251, 159, 143, 110, 68, 183, 189, 70, 126,\n 32, 35, 164, 44, 30, 44, 12, 65, 18, 62, 239, 242, 2, 248, 104, 2, 178, 64, 28, 126, 36,\n 137, 24, 14, 116, 91, 98, 90, 159, 218, 102, 45, 11, 110, 223, 245, 184, 52, 99, 59,\n 245, 136, 175, 3, 72, 164, 146, 145, 116, 22, 66, 24, 49, 193, 121, 3, 60, 37, 41, 97,\n 3, 190, 66, 195, 225, 63, 46, 3, 118, 4, 208, 15, 1, 40, 254, 235, 151, 123, 70, 180,\n 170, 44, 172, 90, 4, 254, 53, 239, 116, 246, 67, 56, 129, 61, 22, 169, 213, 65, 27, 216,\n 116, 162, 239, 214, 207, 126, 177, 20, 100, 25, 48, 143, 84, 215, 70, 197, 53, 65, 70,\n 86, 172, 61, 62, 9, 212, 167, 169, 133, 41, 126, 213, 196, 33, 192, 238, 0, 63, 246,\n 215, 58, 128, 110, 101, 92, 3, 170, 214, 130, 149, 52, 81, 125, 118, 233, 3, 118, 193,\n 104, 207, 120, 115, 77, 253, 191, 122, 0, 107, 164, 207, 113, 81, 169, 36, 201, 228, 74,\n 134, 131, 218, 178, 35, 30, 216, 101, 2, 103, 174, 87, 95, 50, 50, 215, 157, 5, 210,\n 188, 54, 211, 78, 45, 199, 96, 121, 241, 241, 176, 226, 194, 134, 130, 89, 217, 210,\n 186, 32, 140, 39, 91, 103, 212, 26, 87, 32, 72, 144, 228, 230, 117, 99, 188, 50, 15, 69,\n 79, 179, 50, 12, 106, 86, 218, 101, 73, 142, 243, 29, 250, 122, 228, 233, 29, 255, 22,\n 121, 114, 125, 103, 41, 250, 241, 179, 126, 158, 198, 116, 209, 65, 94, 98, 228, 175,\n 169, 96, 3, 9, 233, 133, 214, 55, 161, 164, 103, 80, 85, 24, 186, 64, 167, 92, 131, 53,\n 101, 202, 47, 25, 104, 118, 155, 14, 12, 12, 25, 116, 45, 221, 249, 28, 246, 212, 200,\n 157, 167, 169, 56, 197, 181, 4, 245, 146, 1, 140, 234, 191, 212, 228, 125, 87, 81, 86,\n 119, 30, 63, 129, 143, 32, 96,\n ];\n\n // Prepare inputs of different lengths\n let mut input_511 = [0; 511];\n let mut input_512 = [0; 512]; // Next block\n let mut input_575 = [0; 575];\n let mut input_576 = [0; 576]; // Next block\n for i in 0..input.len() {\n input_511[i] = input[i];\n input_512[i] = input[i];\n input_575[i] = input[i];\n input_576[i] = input[i];\n }\n\n // Compute hashes of all inputs (with same message length)\n let fixed_length_hash = super::sha256(input);\n let var_full_length_hash = sha256_var(input, input.len() as u64);\n let var_length_hash_511 = sha256_var(input_511, input.len() as u64);\n let var_length_hash_512 = sha256_var(input_512, input.len() as u64);\n let var_length_hash_575 = sha256_var(input_575, input.len() as u64);\n let var_length_hash_576 = sha256_var(input_576, input.len() as u64);\n\n // All of the above should have produced the same hash\n assert_eq(var_full_length_hash, fixed_length_hash);\n assert_eq(var_length_hash_511, fixed_length_hash);\n assert_eq(var_length_hash_512, fixed_length_hash);\n assert_eq(var_length_hash_575, fixed_length_hash);\n assert_eq(var_length_hash_576, fixed_length_hash);\n }\n\n #[test]\n fn test_get_item_byte() {\n let fld = make_item(10, 20, 30, 40);\n assert_eq(fld, 0x0a141e28);\n assert_eq(get_item_byte(fld, 0), 10);\n assert_eq(get_item_byte(fld, 4), 10);\n assert_eq(get_item_byte(fld, 6), 30);\n }\n\n #[test]\n fn test_byte_into_item() {\n let fld = make_item(0, 20, 0, 0);\n assert_eq(byte_into_item(20, 1), fld);\n assert_eq(byte_into_item(20, 5), fld);\n }\n\n #[test]\n fn test_set_item_zeros() {\n let fld0 = make_item(10, 20, 30, 40);\n let fld1 = make_item(10, 0, 0, 0);\n assert_eq(set_item_zeros(fld0, 3), fld1);\n assert_eq(set_item_zeros(fld0, 4), 0);\n assert_eq(set_item_zeros(0, 4), 0);\n }\n\n #[test]\n fn test_set_item_byte_then_zeros() {\n let fld0 = make_item(10, 20, 30, 40);\n let fld1 = make_item(10, 50, 0, 0);\n assert_eq(set_item_byte_then_zeros(fld0, 1, 50), fld1);\n }\n\n #[test]\n fn test_build_msg_block_start_0() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48,\n ];\n assert_eq(input.len(), 22);\n let (msg_block, msg_byte_ptr) = unsafe { build_msg_block(input, input.len(), 0) };\n assert_eq(msg_byte_ptr, input.len());\n assert_eq(msg_block[0], make_item(input[0], input[1], input[2], input[3]));\n assert_eq(msg_block[1], make_item(input[4], input[5], input[6], input[7]));\n assert_eq(msg_block[5], make_item(input[20], input[21], 0, 0));\n assert_eq(msg_block[6], 0);\n }\n\n #[test]\n fn test_build_msg_block_start_1() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116,\n ];\n assert_eq(input.len(), 68);\n let (msg_block, msg_byte_ptr) = unsafe { build_msg_block(input, input.len(), 64) };\n assert_eq(msg_byte_ptr, 4);\n assert_eq(msg_block[0], make_item(input[64], input[65], input[66], input[67]));\n assert_eq(msg_block[1], 0);\n }\n\n #[test]\n fn test_attach_len_to_msg_block() {\n let input: INT_BLOCK = [\n 2152555847, 1397309779, 1936618851, 1262052426, 1936876331, 1985297723, 543702374,\n 1919905082, 1131376244, 1701737517, 1417244773, 978151789, 1697470053, 1920166255,\n 1849316213, 1651139939,\n ];\n let msg_block = unsafe { attach_len_to_msg_block(input, 1, 448) };\n assert_eq(msg_block[0], ((1 << 7) as u32) * 256 * 256 * 256);\n assert_eq(msg_block[1], 0);\n assert_eq(msg_block[15], 3584);\n }\n}\n"},"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::authwit::{\n account::AccountActions,\n auth::{compute_authwit_message_hash, compute_authwit_nullifier},\n auth_witness::get_auth_witness,\n entrypoint::{app::AppPayload, fee::FeePayload},\n };\n use dep::aztec::encrypted_logs::encrypted_note_emission::encode_and_encrypt_note;\n use dep::aztec::{hash::compute_siloed_nullifier, keys::getters::get_public_keys};\n use dep::aztec::macros::{\n functions::{initializer, noinitcheck, private, view},\n storage::storage,\n };\n use dep::aztec::oracle::get_nullifier_membership_witness::get_low_nullifier_membership_witness;\n use dep::aztec::prelude::{AztecAddress, PrivateContext, PrivateImmutable};\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 // 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 let mut pub_key_note = PublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this);\n let this_ovpk_m = get_public_keys(this).ovpk_m;\n storage.signing_public_key.initialize(&mut pub_key_note).emit(encode_and_encrypt_note(\n &mut context,\n this_ovpk_m,\n this,\n ));\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 { get_auth_witness(outer_hash) };\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(\n consumer,\n context.chain_id(),\n context.version(),\n inner_hash,\n );\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 =\n 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::{\n keys::getters::{get_nsk_app, get_public_keys},\n macros::notes::note,\n note::utils::compute_note_hash_for_nullify,\n protocol_types::{\n address::AztecAddress, constants::GENERATOR_INDEX__NOTE_NULLIFIER,\n hash::poseidon2_hash_with_separator,\n },\n};\nuse dep::aztec::prelude::{NoteHeader, NullifiableNote, PrivateContext};\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 owner: AztecAddress,\n}\n\nimpl NullifiableNote for PublicKeyNote {\n fn compute_nullifier(\n self,\n context: &mut PrivateContext,\n note_hash_for_nullify: Field,\n ) -> Field {\n let owner_npk_m_hash: Field = get_public_keys(self.owner).npk_m.hash();\n let secret = context.request_nsk_app(owner_npk_m_hash);\n poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\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 owner_npk_m_hash: Field = get_public_keys(self.owner).npk_m.hash();\n let secret = get_nsk_app(owner_npk_m_hash);\n poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n )\n }\n}\n\nimpl PublicKeyNote {\n pub fn new(x: Field, y: Field, owner: AztecAddress) -> Self {\n PublicKeyNote { x, y, owner, header: NoteHeader::empty() }\n }\n}\n"},"58":{"path":"std/option.nr","source":"use crate::cmp::{Eq, Ord, Ordering};\nuse crate::default::Default;\nuse crate::hash::{Hash, Hasher};\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 {\n self._value\n } else {\n default\n }\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 {\n self\n } else {\n other\n }\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 {\n self\n } else {\n default()\n }\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 {\n Option::none()\n } else {\n self\n }\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>\nwhere\n T: Eq,\n{\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>\nwhere\n T: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\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>\nwhere\n T: Ord,\n{\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"},"6":{"path":"std/cmp.nr","source":"use crate::meta::derive_via;\n\n#[derive_via(derive_eq)]\n// docs:start:eq-trait\npub trait Eq {\n fn eq(self, other: Self) -> bool;\n}\n// docs:end:eq-trait\n\n// docs:start:derive_eq\ncomptime fn derive_eq(s: StructDefinition) -> Quoted {\n let signature = quote { fn eq(_self: Self, _other: Self) -> bool };\n let for_each_field = |name| quote { (_self.$name == _other.$name) };\n let body = |fields| {\n if s.fields().len() == 0 {\n quote { true }\n } else {\n fields\n }\n };\n crate::meta::make_trait_impl(\n s,\n quote { Eq },\n signature,\n for_each_field,\n quote { & },\n body,\n )\n}\n// docs:end:derive_eq\n\nimpl Eq for Field {\n fn eq(self, other: Field) -> bool {\n self == other\n }\n}\n\nimpl Eq for u64 {\n fn eq(self, other: u64) -> bool {\n self == other\n }\n}\nimpl Eq for u32 {\n fn eq(self, other: u32) -> bool {\n self == other\n }\n}\nimpl Eq for u16 {\n fn eq(self, other: u16) -> bool {\n self == other\n }\n}\nimpl Eq for u8 {\n fn eq(self, other: u8) -> bool {\n self == other\n }\n}\nimpl Eq for u1 {\n fn eq(self, other: u1) -> bool {\n self == other\n }\n}\n\nimpl Eq for i8 {\n fn eq(self, other: i8) -> bool {\n self == other\n }\n}\nimpl Eq for i16 {\n fn eq(self, other: i16) -> bool {\n self == other\n }\n}\nimpl Eq for i32 {\n fn eq(self, other: i32) -> bool {\n self == other\n }\n}\nimpl Eq for i64 {\n fn eq(self, other: i64) -> bool {\n self == other\n }\n}\n\nimpl Eq for () {\n fn eq(_self: Self, _other: ()) -> bool {\n true\n }\n}\nimpl Eq for bool {\n fn eq(self, other: bool) -> bool {\n self == other\n }\n}\n\nimpl<T, let N: u32> Eq for [T; N]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T; N]) -> bool {\n let mut result = true;\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl<T> Eq for [T]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T]) -> bool {\n let mut result = self.len() == other.len();\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl<let N: u32> Eq for str<N> {\n fn eq(self, other: str<N>) -> bool {\n let self_bytes = self.as_bytes();\n let other_bytes = other.as_bytes();\n self_bytes == other_bytes\n }\n}\n\nimpl<A, B> Eq for (A, B)\nwhere\n A: Eq,\n B: Eq,\n{\n fn eq(self, other: (A, B)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1)\n }\n}\n\nimpl<A, B, C> Eq for (A, B, C)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n{\n fn eq(self, other: (A, B, C)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2)\n }\n}\n\nimpl<A, B, C, D> Eq for (A, B, C, D)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n{\n fn eq(self, other: (A, B, C, D)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2) & self.3.eq(other.3)\n }\n}\n\nimpl<A, B, C, D, E> Eq for (A, B, C, D, E)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n E: Eq,\n{\n fn eq(self, other: (A, B, C, D, E)) -> bool {\n self.0.eq(other.0)\n & self.1.eq(other.1)\n & self.2.eq(other.2)\n & self.3.eq(other.3)\n & self.4.eq(other.4)\n }\n}\n\nimpl Eq for Ordering {\n fn eq(self, other: Ordering) -> bool {\n self.result == other.result\n }\n}\n\n// Noir doesn't have enums yet so we emulate (Lt | Eq | Gt) with a struct\n// that has 3 public functions for constructing the struct.\npub struct Ordering {\n result: Field,\n}\n\nimpl Ordering {\n // Implementation note: 0, 1, and 2 for Lt, Eq, and Gt are built\n // into the compiler, do not change these without also updating\n // the compiler itself!\n pub fn less() -> Ordering {\n Ordering { result: 0 }\n }\n\n pub fn equal() -> Ordering {\n Ordering { result: 1 }\n }\n\n pub fn greater() -> Ordering {\n Ordering { result: 2 }\n }\n}\n\n#[derive_via(derive_ord)]\n// docs:start:ord-trait\npub trait Ord {\n fn cmp(self, other: Self) -> Ordering;\n}\n// docs:end:ord-trait\n\n// docs:start:derive_ord\ncomptime fn derive_ord(s: StructDefinition) -> Quoted {\n let signature = quote { fn cmp(_self: Self, _other: Self) -> std::cmp::Ordering };\n let for_each_field = |name| quote {\n if result == std::cmp::Ordering::equal() {\n result = _self.$name.cmp(_other.$name);\n }\n };\n let body = |fields| quote {\n let mut result = std::cmp::Ordering::equal();\n $fields\n result\n };\n crate::meta::make_trait_impl(s, quote { Ord }, signature, for_each_field, quote {}, body)\n}\n// docs:end:derive_ord\n\n// Note: Field deliberately does not implement Ord\n\nimpl Ord for u64 {\n fn cmp(self, other: u64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u32 {\n fn cmp(self, other: u32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u16 {\n fn cmp(self, other: u16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u8 {\n fn cmp(self, other: u8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i8 {\n fn cmp(self, other: i8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i16 {\n fn cmp(self, other: i16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i32 {\n fn cmp(self, other: i32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i64 {\n fn cmp(self, other: i64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for () {\n fn cmp(_self: Self, _other: ()) -> Ordering {\n Ordering::equal()\n }\n}\n\nimpl Ord for bool {\n fn cmp(self, other: bool) -> Ordering {\n if self {\n if other {\n Ordering::equal()\n } else {\n Ordering::greater()\n }\n } else if other {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl<T, let N: u32> Ord for [T; N]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T; N]) -> Ordering {\n let mut result = Ordering::equal();\n for i in 0..self.len() {\n if result == Ordering::equal() {\n let result_i = self[i].cmp(other[i]);\n\n if result_i == Ordering::less() {\n result = result_i;\n } else if result_i == Ordering::greater() {\n result = result_i;\n }\n }\n }\n result\n }\n}\n\nimpl<T> Ord for [T]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T]) -> Ordering {\n let mut result = self.len().cmp(other.len());\n for i in 0..self.len() {\n if result == Ordering::equal() {\n let result_i = self[i].cmp(other[i]);\n\n if result_i == Ordering::less() {\n result = result_i;\n } else if result_i == Ordering::greater() {\n result = result_i;\n }\n }\n }\n result\n }\n}\n\nimpl<A, B> Ord for (A, B)\nwhere\n A: Ord,\n B: Ord,\n{\n fn cmp(self, other: (A, B)) -> Ordering {\n let result = self.0.cmp(other.0);\n\n if result != Ordering::equal() {\n result\n } else {\n self.1.cmp(other.1)\n }\n }\n}\n\nimpl<A, B, C> Ord for (A, B, C)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n{\n fn cmp(self, other: (A, B, C)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n result\n }\n}\n\nimpl<A, B, C, D> Ord for (A, B, C, D)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n{\n fn cmp(self, other: (A, B, C, D)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n result\n }\n}\n\nimpl<A, B, C, D, E> Ord for (A, B, C, D, E)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n E: Ord,\n{\n fn cmp(self, other: (A, B, C, D, E)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n if result == Ordering::equal() {\n result = self.4.cmp(other.4);\n }\n\n result\n }\n}\n\n// Compares and returns the maximum of two values.\n//\n// Returns the second argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::max(1, 2), 2);\n// assert_eq(cmp::max(2, 2), 2);\n// ```\npub fn max<T>(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v1\n } else {\n v2\n }\n}\n\n// Compares and returns the minimum of two values.\n//\n// Returns the first argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::min(1, 2), 1);\n// assert_eq(cmp::min(2, 2), 2);\n// ```\npub fn min<T>(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v2\n } else {\n v1\n }\n}\n\nmod cmp_tests {\n use crate::cmp::{max, min};\n\n #[test]\n fn sanity_check_min() {\n assert_eq(min(0 as u64, 1 as u64), 0);\n assert_eq(min(0 as u64, 0 as u64), 0);\n assert_eq(min(1 as u64, 1 as u64), 1);\n assert_eq(min(255 as u8, 0 as u8), 0);\n }\n\n #[test]\n fn sanity_check_max() {\n assert_eq(max(0 as u64, 1 as u64), 1);\n assert_eq(max(0 as u64, 0 as u64), 0);\n assert_eq(max(1 as u64, 1 as u64), 1);\n assert_eq(max(255 as u8, 0 as u8), 255);\n }\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>\nwhere\n T: Eq,\n{\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 (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.nr","source":"use dep::aztec::{context::{gas::GasOpts, PrivateContext, PublicContext}, hash::hash_args_array};\nuse dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector,\n address::AztecAddress,\n constants::{\n CANONICAL_AUTH_REGISTRY_ADDRESS, GENERATOR_INDEX__AUTHWIT_INNER,\n GENERATOR_INDEX__AUTHWIT_NULLIFIER, GENERATOR_INDEX__AUTHWIT_OUTER,\n },\n hash::poseidon2_hash_with_separator,\n};\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([\n context.msg_sender().to_field(),\n context.selector().to_field(),\n context.args_hash,\n ]);\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(\n context: &mut PrivateContext,\n on_behalf_of: AztecAddress,\n inner_hash: Field,\n) {\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\n .static_call_private_function(\n on_behalf_of,\n comptime { FunctionSelector::from_signature(\"verify_private_authwit(Field)\") },\n [inner_hash],\n )\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 unconstrained 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(),\n (*context).selector().to_field(),\n (*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 unconstrained fn assert_inner_hash_valid_authwit_public(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress,\n inner_hash: Field,\n) {\n let results: [Field] = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime { FunctionSelector::from_signature(\"consume((Field),Field)\") },\n [on_behalf_of.to_field(), inner_hash].as_slice(),\n GasOpts::default(),\n );\n assert(results.len() == 1, \"Invalid response from registry\");\n assert(results[0] == 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 =\n 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(\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n inner_hash: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [consumer.to_field(), chain_id, version, inner_hash],\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 unconstrained fn set_authorized(\n context: &mut PublicContext,\n message_hash: Field,\n authorize: bool,\n) {\n let res = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime { FunctionSelector::from_signature(\"set_authorized(Field,bool)\") },\n [message_hash, authorize as Field].as_slice(),\n GasOpts::default(),\n );\n assert(res.len() == 0);\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 unconstrained fn set_reject_all(context: &mut PublicContext, reject: bool) {\n let res = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime { FunctionSelector::from_signature(\"set_reject_all(bool)\") },\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default(),\n );\n assert(res.len() == 0);\n}\n"},"75":{"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"},"76":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/account.nr","source":"use dep::aztec::{\n context::PrivateContext,\n hash::poseidon2_hash_with_separator,\n protocol_types::constants::{GENERATOR_INDEX__COMBINED_PAYLOAD, GENERATOR_INDEX__TX_NULLIFIER},\n};\n\nuse crate::auth::{compute_authwit_message_hash, IS_VALID_SELECTOR};\nuse crate::entrypoint::{app::AppPayload, fee::FeePayload};\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 =\n 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"},"79":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/fee.nr","source":"use crate::entrypoint::function_call::FunctionCall;\nuse dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__FEE_PAYLOAD,\n hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize},\n};\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 );\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 );\n }\n }\n }\n if self.is_fee_payer {\n context.set_as_fee_payer();\n }\n }\n}\n"},"80":{"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,\n 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 );\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 );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"},"93":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr","source":"use dep::protocol_types::abis::validation_requests::{\n key_validation_request::KEY_VALIDATION_REQUEST_LENGTH, KeyValidationRequest,\n};\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"},"96":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/keys.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, PartialAddress},\n point::Point,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, TpkM},\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(\n address: AztecAddress,\n) -> (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 {\n inner: Point { x: result[3], y: result[4], is_infinite: result[5] as bool },\n },\n ovpk_m: OvpkM {\n inner: Point { x: result[6], y: result[7], is_infinite: result[8] as bool },\n },\n tpk_m: TpkM {\n inner: Point { x: result[9], y: result[10], is_infinite: result[11] as bool },\n },\n };\n\n let partial_address = PartialAddress::from_field(result[12]);\n\n (keys, partial_address)\n}\n"},"98":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/logs.nr","source":"use dep::protocol_types::address::AztecAddress;\n\n/// Informs the simulator that an encrypted note log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_encrypted_note_log<let M: u32>(\n note_hash_counter: u32,\n encrypted_note: [u8; M],\n counter: u32,\n) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_encrypted_note_log_oracle_wrapper(note_hash_counter, encrypted_note, counter)\n }\n}\n\n/// Informs the simulator that an encrypted event log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_encrypted_event_log<let M: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n encrypted_event: [u8; M],\n counter: u32,\n) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_encrypted_event_log_oracle_wrapper(\n contract_address,\n randomness,\n encrypted_event,\n counter,\n )\n }\n}\n\n/// Informs the simulator that an unencrypted log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_unencrypted_log_private<T>(contract_address: AztecAddress, message: T, counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_unencrypted_log_private_oracle_wrapper(contract_address, message, counter)\n }\n}\n\nunconstrained fn emit_encrypted_note_log_oracle_wrapper<let M: u32>(\n note_hash_counter: u32,\n encrypted_note: [u8; M],\n counter: u32,\n) {\n emit_encrypted_note_log_oracle(note_hash_counter, encrypted_note, counter)\n}\n\nunconstrained fn emit_encrypted_event_log_oracle_wrapper<let M: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n encrypted_event: [u8; M],\n counter: u32,\n) {\n emit_encrypted_event_log_oracle(contract_address, randomness, encrypted_event, counter)\n}\n\nunconstrained fn emit_unencrypted_log_private_oracle_wrapper<T>(\n contract_address: AztecAddress,\n message: T,\n counter: u32,\n) {\n let _ = emit_unencrypted_log_private_oracle(contract_address, message, counter);\n}\n\n/// Temporary substitute for `emit_unencrypted_log_private` that is used for handling contract class registration. This\n/// variant returns the log hash, which would be too large to compute inside a circuit.\npub unconstrained fn emit_contract_class_unencrypted_log_private<let N: u32>(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32,\n) -> Field {\n emit_contract_class_unencrypted_log_private_oracle(contract_address, message, counter)\n}\n\n// = 480 + 32 * N bytes\n#[oracle(emitEncryptedNoteLog)]\nunconstrained fn emit_encrypted_note_log_oracle<let M: u32>(\n _note_hash_counter: u32,\n _encrypted_note: [u8; M],\n _counter: u32,\n) {}\n\n#[oracle(emitEncryptedEventLog)]\nunconstrained fn emit_encrypted_event_log_oracle<let M: u32>(\n _contract_address: AztecAddress,\n _randomness: Field,\n _encrypted_event: [u8; M],\n _counter: u32,\n) {}\n\n#[oracle(emitUnencryptedLog)]\nunconstrained fn emit_unencrypted_log_private_oracle<T>(\n _contract_address: AztecAddress,\n _message: T,\n _counter: u32,\n) -> Field {}\n\n#[oracle(emitContractClassUnencryptedLog)]\nunconstrained fn emit_contract_class_unencrypted_log_private_oracle<let N: u32>(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32,\n) -> Field {}\n"},"99":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr","source":"use dep::protocol_types::{\n address::AztecAddress, constants::CONTRACT_INSTANCE_LENGTH, contract_class_id::ContractClassId,\n contract_instance::ContractInstance,\n};\n\n// NOTE: this is for use in private only\n#[oracle(getContractInstance)]\nunconstrained fn get_contract_instance_oracle(\n _address: AztecAddress,\n) -> [Field; CONTRACT_INSTANCE_LENGTH] {}\n\n// NOTE: this is for use in private only\nunconstrained fn get_contract_instance_internal(\n address: AztecAddress,\n) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n get_contract_instance_oracle(address)\n}\n\n// NOTE: this is for use in private only\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n let instance =\n unsafe { ContractInstance::deserialize(get_contract_instance_internal(address)) };\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\n// These oracles each return a ContractInstance member\n// plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstanceDeployer)]\nunconstrained fn get_contract_instance_deployer_oracle_avm(\n _address: AztecAddress,\n) -> (Field, bool) {}\n#[oracle(avmOpcodeGetContractInstanceClassId)]\nunconstrained fn get_contract_instance_class_id_oracle_avm(\n _address: AztecAddress,\n) -> (Field, bool) {}\n#[oracle(avmOpcodeGetContractInstanceInitializationHash)]\nunconstrained fn get_contract_instance_initialization_hash_oracle_avm(\n _address: AztecAddress,\n) -> (Field, bool) {}\n\npub unconstrained fn get_contract_instance_deployer_internal_avm(\n address: AztecAddress,\n) -> (Field, bool) {\n get_contract_instance_deployer_oracle_avm(address)\n}\npub unconstrained fn get_contract_instance_class_id_internal_avm(\n address: AztecAddress,\n) -> (Field, bool) {\n get_contract_instance_class_id_oracle_avm(address)\n}\npub unconstrained fn get_contract_instance_initialization_hash_internal_avm(\n address: AztecAddress,\n) -> (Field, bool) {\n get_contract_instance_initialization_hash_oracle_avm(address)\n}\n\npub fn get_contract_instance_deployer_avm(address: AztecAddress) -> Option<AztecAddress> {\n let (member, exists) = get_contract_instance_deployer_internal_avm(address);\n if exists {\n Option::some(AztecAddress::from_field(member))\n } else {\n Option::none()\n }\n}\npub fn get_contract_instance_class_id_avm(address: AztecAddress) -> Option<ContractClassId> {\n let (member, exists) = get_contract_instance_class_id_internal_avm(address);\n if exists {\n Option::some(ContractClassId::from_field(member))\n } else {\n Option::none()\n }\n}\npub fn get_contract_instance_initialization_hash_avm(address: AztecAddress) -> Option<Field> {\n let (member, exists) = get_contract_instance_initialization_hash_internal_avm(address);\n if exists {\n Option::some(member)\n } else {\n Option::none()\n }\n}\n"}}}