@aztec/accounts 0.51.0 → 0.52.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.33.0+61d6f251ea67204af2d17175f120e17f2e9e9156","name":"SchnorrAccount","functions":[{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["aztec(private)","aztec(noinitcheck)"],"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":"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"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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RtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFpRtFpRtFpRtFpRvH8D1pBsKR2mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlEMmlEMmlEMmlEMmlGMC5bUQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKSTOKSTOKSTOKSTOKecGSOmlG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rbSkNlpSGy2pjZbURktqoyW10ZLaaElttKQ2WlIbLamdltROS2qnJbXTktppSe20pHZaUjstqZ2W1E5L6qAlddCSOmhJHbSkDlpSBy2pg5bUQUvqoCV10JI6aUlN22ChtA0WSttgobQNFkrbYKG0DRaatKROWlInLamLltRFS+qiJXXRkrpoSV20pC5aUtM2WChtg4XSNlgobYOFNi2pm5bUTUvqpiV105KattFBaRsdlLbRQWkbHZS20UFpGx10aEk9tKQeWlIPLamHltRDS+qhJfXAktouWFLb9aWeaZH25nhbf3ht5O/NfqnnWdxr9ks9y+Jes76p2S/1DIt7zX6p51fca/ZLPbviXrNf6rkV95r9Us+suNOsfKnnVdxrdtMEJbDfo01gv0cbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSUbzSU7zSX7BUtqpz0b12nPxj3fgVYQLKn9giW1X7Ck9guW1H7RklpoSS20pKYZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZRacZxaAZxaAZxaAZxaAZxbhgSR00oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0oxg0o5g0o5g0o5g0o5g0o5gXLKmTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSTZhSLZhSLZhSLZhSLZhTrgiV10Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi0Yxi04xi04xi04xi04xiX7CkbppRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRbJpRHJpRHJpRHJpRHJpRnAuW1EMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzikMzigMzinrBjOIpiJXUpyBWUp+CWEl9CmIl9SmIldSnIFZSn4JYSX0KYiX1KYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqCJbXQjKLQjKLQjKLQjKJcsKQWmlEUmlEUmlEUmlEUmlGU5xvF/v7iuezHgn5+8bfPYuqtkHPJ/73+U/j73eqt247bq+P3ZmVTs7qpWdvUrG9qNjY1m5uarU3N9qZmZ1GzummCUvQE9W0Dat5e3WJ3mlU7g8OtcHH9w+t/axg9Rf0dDaMnqb+jYd/WMHqi+jsaRk9Vf0fDz7+Hse/vGiE/3TJ8gGu/U9DACqK5dqG5dqG5dvkA137n35DTCgpaQUkriJbURktqoyX1B7j2OwXRkvrprl3PlPX2pdXyzrwVP/yKG6398/z0dAf/8Ab8szcQn70B2juN095pnPZO83SX/0/+m5u4pW5Kyc//5p7u+B/egHz2Bh7yznfJ7bt43mmg+3YXMNJ3vrS23O6CO364aKj3vrZf8/a1XX7MOM13Xj16vZ37qMa//rsvMR6z4uB1lv84S3+d5cPOMl5n+bCzzNdZPuws63WWDzvL/uyDyGefZfOzz7L52WfZhN/i3G8AfotzvwGHXezRNrUIbVOL0Da1CG1Ti9A2tQhtU4vQNrUIbVOL0Da1CG1Ti9A2tQhtU4vQNrUIbVOL0Da1CG1Ti9A2tQhtU4vQNrUIbVOL0Da1CG1Ti9A2tQhtU4vQNrUIbVOL0Da1CG1Ti9A2tQhtU4vQNrUIbVOL0Da1CG1Ti9A2tShtU4vSNrUobVOLXl9KaKW9feLY+sNrI39v1jc1+6Vk1r1mv5TKutcs2ro/ulm0dX90s7R3dKG9owvtHV1o7+gC+91Ln79h5l5BsN+9VGC/e6nAfvdSgf3upUJLaqUltdKSWmlJrbSkVlpSKy2plZbUSktqpSW10pKatp1BadsZlLadQY2W1EZLaqMltdGS2mhJbbSkNlpSOy2padsZ1GlJ7bSkdlpSOy2pnZbUTktqpyW105I6aEkdtKQOWlIHLamDltRBS+qgJXXQkjpoSR20pE5aUictqZOW1ElLapplVZplVZplVZplVZplVZplVZplVZplVZplVZplVZplVZplVZplVZplVZplVZplVZplVZplVZplVZplVZplVZplVZplVZplVZplVZplVZplVZplVZplVZplVZplVZplVZplVZplVZplVZplNZplNZplNZpltQuW1Oe70QqCJbVdsKS2C5bUdsGS2mhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WlG0WlG0WlG0WlG8XwHWkGwpHaaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUXSaUQyaUQyaUQyaUQyaUYwLltRBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4pBM4rxfKPY3188l/1Y0M8v1iuz3gq58of6Ra73u9Vbtx23V8fvzfqmZmNTs7mp2drUbG9q9tnv6N9+3Xv70lF3mm3tt/eStrn+0Oo/yn+6fH1w+fK5y9fPXb597vL9c5cfn7v8/Nzl1+cuvz93+Z/7Xbc/97tuf+533f7c77r9ud91n66vH1z+537X7c/9rtuf+133IWq8rrr9Pqrz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TXuiotKeqKg0rag0rag0rag0rag0rag0rag0rag0rahOS2qnJbXTktppSU17oqLSnqiotCcqKu2Jikp7oqLSnqioNK2oNK2oQUvqoCV10JI6aEkdtKSmaUWlaUVNWlLTnqiotCcqatKSOmlJTdOKStOKStOKStOKStOKStOKWrSkLlpS056oqLQnKirtiYpKe6Ki0p6oqLQnKirtiYpKe6Ki0rSi0rSiNi2pm5bUTUvqpiV105K6aUk9tKQeWlLTnqiotCcq6tCSemhJPbSkHlpSDy2paU9UNNoTFe2CJbVdsKS2C5bU57vRCoIltdGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotOMotOMotOMotOM4vkOtIJgSe00o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0o+g0oxg0oxg0oxg0oxg0oxgXLKmDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSDZhSTZhSTZhSTZhSTZhTzgiV10oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0Yxi0Yxi0Yxi0YxiXbCkLppRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRbJpRbJpRbJpRbJpR7AuW1E0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zikMzikMzikMzikMzinPBknpoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFoRnFgRtEvmFE8BbGS+hTESupTECupT0GspD4FsZL6FMRK6lMQK6lPQaykPgXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPAXRkhpmFE9BtKSGGcVTEC2pYUbxFERLaphRPN+AltQwo3i+AS2pYUbxfANaUsOM4vkGtKSGGcXzDWhJDTOKpyBaUsOM4imIltQwo3gKoiU1zCiegmhJDTOKpyBaUsOM4imIltQwo3gKoiU1zCiegmhJDTOKpyBaUsOM4imIltQwo3gKoiU1zCiegmhJDTOKpyBaUsOM4imIltQwo3gKoiU1zCiegmhJDTOKpyBaUsOM4imIltQwo3gKoiU1zCiegmhJDTOKpyBaUsOM4imIltQwo3gKoiU1zCiegmhJDTOKpyBYUgvNKArNKArNKArNKMoFS2qhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWhGUWlGUWlGUWlGUWlGUW9YEmtNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKNoNKNoNKNoNKNoNKN4vhutIFhSG80oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oGs0oOs0oOs0oOs0oOs0onu9AKwiW1E4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zik4zikEzikEzikEzikEzinHBkjpoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFoRjFpRjFpRjFpRjFpRjEvWFInzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgmzSgWzSgWzSgWzSgWzSjWBUvqohnFohnFohnF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0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0oyi0Yyi0Yyi0Yyi0Yzi+W60gmBJbTSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSjaDSj6DSj6DSj6DSj6DSjeL4DrSBYUjvNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKAbNKAbNKAbNKAbNKMYFS+qgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWkGcWkGcWkGcWkGcW8YEmdNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKNYNKNYNKNYNKNYNKNYFyypi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUm2YUm2YUm2YUm2YU+4IlddOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOMYtOM4tCM4tCM4tCM4tCM4lywpB6aURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyaURyYUcwLZhRPQaykPgWxkvoUxErqUxArqU9BrKQ+BbGS+hTESupTECupT0G0pIYZxVMQLalhRvEUREtqmFE8BdGSGmYUT0G0pIYZxVMQLalhRvEUREtqmFE8BdGSGmYUT0G0pIYZxVMQLalhRvEUREtqmFE8BdGSGmYUT0G0pIYZxVMQLalhRvEUREtqmFE8BdGSGmYUT0G0pIYZxVMQLalhRvEUREtqmFE8BdGSGmYUT0G0pIYZxVMQLalhRvEUREtqmFE8BdGSGmYUT0G0pIYZxVMQLalhRvEUREtqmFE8BdGSGmYUT0G0pIYZxVMQLalhRvEUREtqmFE8BdGSGmYUT0G0pIYZxVMQLalhRvEUREtqmFE8BdGSGmYUT0G0pIYZxVMQLalhRvEUREtqmFE8BdGSGmYUT0G0pIYZxVMQLalhRvEUREtqmFE8BdGSGmYUT0G0pIYZxVMQLKmFZhSFZhSFZhSFZhTlgiW10Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0Iyi0IyiPN0o6mX+9qWvmh8Leu/FmXV7dU7dXn4utt6tpPRWScft1fF7s7apWd/UbGxqNjc1W5uaBb2jv/PizOvtxVnfizfp38sHvf//G8onOdl/S/lC/i/lNDjfm22xO/+lqJ0PQm6FnznlD6//rWH07PJ3NIyeX/6Ohn1bw+g5Rmbk+7vdubp8p4GvNZtk396uc+Z/fbuOrzWb3Gm2NzU7i5p9ujr/0GbRU9I///uE2a2S+On3ifxitzu/bvaL3e78ulnf1OwXu935dbNf7Hbn181+sdudXzf7tSaoO81+rQnq183W15qg7jS7aYKqTRNUbZqgnr5940Ob3TRB1aYJqjZNULVpgqpNE1RvmqB60wTVmyao3jRBPX0rzoc2u2mC6k0TVG+aoHrTBNWbJqjZNEHNpglqNk1Qs2mCevq2qg9tdtMENZsmqNk0Qc2mCWoWTVB6LZqg9Fo0Qem1aILSa9EEpZdvanbRBKXXoglKr0UTlF6LJii9Nk1QsmmCkk0TlGyaoGTTBPX07Y4f2uymCUo2TVCyaYKSTROUbJqgdNMEpZsmKN00QemmCerpW1c/tNlNE5RumqB00wSlmyYo3TRB2aYJyjZNULZpgrJNE9TTtyF/aLObJijbNEHZpgnKNk1QtmmC8k0TlG+aoL7atu9fN7tpgvpq275/3eymCeqrbfv+dbObJijfNEH5pgkqNk1Q7L3jj2520wTF3jf+6GZ9U7ObJqgvtpP8TrObJqgvtpP8TrObJqgvtpP8TrObJqhNO8l1005y3bSTXDftJNdNO8l1005y3bSTXDftJNdNO8l1005y3bSTXDftJNdNO8l1005y3bSTXDftJNdNO8l1005y3bSTXDftJNdNO8l1005y3bSTXDftJNdNO8l1005y3bSTXDftJNdNO8l1005y3bSTXDftJNdNO8l1005y3bSTXDftJNdNO8l1005y27ST3DbtJLdNO8lt007y08mmZhdNULZpJ7lt2klum3aS26ad5LZpJ7lt2klum3aS26ad5LZpJ7lt2klum3aS26ad5LZpJ7lt2klum3aS26ad5LZpJ7lt2klum3aS26ad5LZpJ7lt2klum3aS26ad5LZpJ7lt2klum3aS26ad5LZpJ7lt2klum3aS26ad5LZpJ7lt2klum3aS26ad5LZpJ7lt2klum3aS26ad5LZpJ7lt2klum3aS26ad5LZpJ7lt2klum3aS26ad5LZpJ7lt2klum3aS26ad5LZpJ7lt2klum3aS26ad5LZpJ7lt2klum3aS26ad5LZpJ7lt2klum3aS26ad5LZpJ7lt2klum3aS26ad5LZpJ7lt2klum3aS26ad5LZpJ7lt2klum3aS26ad5LZpJ7lt2klum3aS26ad5LZpJ7lt2klum3aS26ad5LZpJ7lt2klum3aS26ad5LZpJ7lt2klum3aS26ad5LZpJ7lt2knum3aS+6ad5L5pJ7lv2kl+qt/U7KIJyjftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8l9005y37ST3DftJPdNO8njq+0kL71V0j83+8UmqF83+/QJyvL2pV30181KTFxvXzql5A/N/taAffYGHN1A6jW3Bs7/6TsNxGdvID97A/XZG2h0A3W13760SNyL3Oxb5ObMT5E7i5p9/i7uj2xWNjXLnhwe3Cx7yvhnm/31tP/8Xdwf2Sx7enlws+xJ58HNsqeiBzf7tSaoO81+rQnq183q15qg7jT7tSaoO81+rQnqTrObJqjn7+L+yGY3TVC6aYLSTROUbpqgdNMEZZsmKNs0QdmmCco2TVDP38X9kc1umqBs0wRl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RaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaUZRaMZRaMZRaMZRaMZxfPdaAXBktpoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFpRtFpRtFpRtFpRvF8B1pBsKR2mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlF0mlEMmlEMmlEMmlEMmlGMC5bUQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKQTOKSTOKSTOKSTOKSTOKecGSOmlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGMWlGsWhGsWhGsWhGsWhGsS5YUhfNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKBbNKDbNKDbNKDbNKDbNKPYFS+qmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWmGcWhGcWhGcWhGcWhGcW5YEk9NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4NKM4MKPYF8wonoJYSX0KYiX1KYiV1KcgVlKfglhJfQpiJfUpiJXUpyBWUp+CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFpSw4ziKYiW1DCjeAqiJTXMKJ6CaEkNM4qnIFhSC80oCs0oCs0oCs0oygVLaqEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaEZRaUZRaUZRaUZRaUZRb1gSa00o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o2g0o2g0o2g0o2g0o3i+G60gWFIbzSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSgazSg6zSg6zSg6zSg6zSie70ArCJbUTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOK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FJVmFJVmFJVmFJVmFJVmFJVmFJVmFJVmFJVmFJVmFJVmFJVmFJVmFJVmFJVmFJVmFJVmFJVmFJVmFJVmFJVmFJVmFJVmFJVmFJVmFJVmFJVmFJVmFJVmFJVmFJVmFJVmFJVmFJVmFI1mFI1mFI1mFI1mFM93oxUES2qjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWjGUWnGUWnGUWnGUWnGcXzHWgFwZLaaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUYxaEYxaEYxaEYxaEYxLlhSB80oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oJs0oJs0oJs0oJs0o5gVL6qQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaQZxaIZxaIZxaIZxaIZxbpgSV00o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o1g0o9g0o9g0o9g0o9g0o9gXLKmbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhSbZhT76UZRL/O3L33V/FjQey/OrNurc+r2cpHr3UpKb5V03F4dvzfbm5qdRc0+3W1+aLOyqVnd1CzoHf2dF2deby/O+l68Sf9evn/u8kHTwr+l/CT/lyLf/pzq1uz55O7OfylqInYrXFz/8PrfGkbPLn9Hw+j55e9oGD3D/A0NJ3qOkRn5/m4nWu808LVmk+zb23XO/K9v1/m1ZpM7zdqmZn1Ts7GpWfSU9M//PmF2qyR++n0iv9jtzq+b/WK3O79u9ovd7vyy2fpitzu/bvaL3e78utkvdrvz62a/1gR1p1nf1OzXmqDuNLtpgqpNE1RtmqBq0wTVmyao3jRB9aYJqjdNUE/fpPKhzW6aoHrTBNWbJqjeNEH1pglqNk1Qs2mCmk0T1GyaoJ6+4ehDm900Qc2mCWo2TVCzaYKaRRPUXIsmqLkWTVBzLZqg5lo0Qc3lm5pdNEHNtWiCmmvRBDXXoglqrk0TlGyaoGTTBCWbJijZNEE9fSPghza7aYKSTROUbJqgZNMEJZsmKN00QemmCUo3TVC6aYJ6+qbOD2120wSlmyYo3TRB6aYJSjdNULZpgrJNE5RtmqBs0wT19A26H9rspgnKNk1QtmmCsk0TlG2aoHzTBOWbJijfNEH5pgnq6ZutP7TZTROUb5qgvtq27183u2mC+mrbvn/Z7Ffb9v3rZjdNUF9t2/evm900QT19N/iHNrtpgmLvHX90s5smKPa+8Uc3u2mCYu8Zf3SzmyaoL7aT/E6zmyaoL7aT/E6zmyaoTTvJZ9NO8tm0k3w27SSfTTvJZ9NO8tm0k3w27SSfTTvJZ9NO8tm0k3w27SSfTTvJZ9NO8tm0k3w27SSfTTvJZ9NO8tm0k3w27SSfTTvJZ9NO8tm0k3w27SSfTTvJZ9NO8tm0k3w27SSfTTvJZ9NO8tm0k3w27SSfTTvJZ9FOcrmuRUvJv3W7Z4b61u2eIepbt3umqG/d+qpu98xR37rdM0h963bPJPWt2z2j1LduV81Si9aTf+t21Sy1aEH5t25XzVKLVpR/63bVLLVoSfm3blfNUovWlH/rdtUstWhR+bduV81Si1aVf+t21Sy1aFn5t25XzVKL1pV/63bVLLVoYfm3blfNUotWln/rdtUstWhp+bduV81Si9aWf+t21Sy1aHH5t25XzVKLVpd/63bVLLVoefm3blfNUovWl3/rdtUstWiB+bduV81Si1aYf+t21Sy1aIn5t25XzVKL1ph/63bVLLVokfm3blfNUotWmX/rdtUstWiZ+bduV81Si9aZf+t21Sy1aKH5t25XzVKLVpp/63bVLLVoqfm3blfNUovWmn/rdtUstWix+bduV81Si1abf+t21Sy1aLn5t25XzVKL1pt/63bVLLVowfm3blfNUotWnH/rdtUstWjJ+bduV81Si9acf+t21Sy1aNH5t25XzVKLVp1/63bVLLVo2fm3blfNUovWnX/rdtUstWjh+bduV81Si1aef+t21Sy1aOn5t25XzVKL1p5/63bTLCWr9p7Lqr3nsmrvuazaey6Xr+p20ywlq/aey6q957Jq77ms2nsuq/aey6q957Jq77ms2nsuq/aey6q957Jq77ms2nsuq/aey6q957Jq77ms2nsuq/aey6q957Jq77ms2nsuq/aey6q957Jq77ms2nsuq/aey6q957Jq77ms2nsuq/aey6q957Jq77ms2nsuq/aey6q957Jq77ms2nsuq/aey6q957Jq77ms2nsuq/aey6q957Jq77ms2nsuq/aey6q957Jq77ms2nsuq/aey6q957Jq77ms2nsuq/aey6q957Jq77ms2nsuq/aey6q957Jq77ms2nsuq/aey6q957Jq77ms2nsuq/aey6q957Jq77ms2nsuq/aey6q957Jq77ms2nsuq/aey6q957Jq77ms2nsuq/aey6q957Jq77ms2nsuq/aey6q957Jq77ms2nsuq/aey6q957Jq77ms2nsuq/aey6q957Jq77ms2nsuq/aey6q957pq77mu2nuuq/ae66q953r5qm6/2CxVequk3+n2i81Sd7p9+ixlefvSLvrrbiUmrrcvnVLyh25/76A/fQeD7iBPgbcOzv/pOx08f+f4wzuQT9+BfvoODN1BXe23Ly0S95I3+5a8OfNT8j5/3/eHdhurus1V3bJniEd3y543/tlu78z+wp5NHtytsueYR3fLnnke3S17Pnp0t19rlrrXra/q9mvNUve6/Vqz1L1uv9Ysda/bVbOUrpqlbNUsZatmKVs1S9mqWer5+74/tNtVs5StmqVs1Sxlq2YpWzVL+apZylfNUr5qlvJVs9Tz931/aLerZilfNUv5qlnKV81SvmqWilWzVKyapWLVLBWrZqnn7/v+0G5XzVKxapaKVbNUrJqlYtUslatmqVw1S+WqWSpXzVLP3/f9od2umqVy1SyVq2apXDVL5apZqlbNUrVqlqpVs1St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cA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScA7ScQ7ScQ7ScQ7ScQ7yfAtcRbTMdpyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDdJyDDJyDDJyDDJyDDJyDjIuW2YFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIFzkIlzkIlzkIlzkIlzkHnRMjtxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDjJxDrJwDrJwDrJwDrJwDrIuWmYXzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkEWzkE2zkE2zkE2zkE2zkH2RcvsxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIxjnIwTnIwTnIwTnIwTnIuWiZPTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTgHOTQHqRfNQZ6KYJl9KoJl9qkIltmnIlhmn4pgmX0qgmX2qQiW2aciWGafinCZTXOQpyJcZtMc5KkIl9k0B3kqwmU2zUGeinCZTXOQpyJcZtMc5KkIl9k0B3kqwmU2zUGeinCZTXOQpyJcZtMc5KkIl9k0B3kqwmU2zUGeinCZTXOQpyJcZtMc5KkIl9k0B3kqwmU2zUGeinCZTXOQpyJcZtMc5KkIl9k0B3kqwmU2zUGeinCZTXOQpyJcZtMc5KkIl9k0B3kqwmU2zUGeinCZTXOQpyJcZtMc5KkIl9k0B3kqwmU2zUGeinCZTXOQpyJcZtMc5KkIl9k0B3kqwmU2zUGeinCZTXOQpyJcZtMc5KkIl9k0B3kqwmU2zUGeinCZTXOQpyJcZtMc5KkIl9k0B3kqwmU2zUGeinCZTXOQpyJcZtMc5KkIl9k0B3kqwmU2zUGeinCZTXOQpyJaZgvOQQrOQQrOQQrOQcpFy2zBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjBOUjFOUjFOUjFOUjFOUi9aJmtOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAepOAdpOAdpOAdpOAdpOAd5vh2uIlpmG85BGs5BGs5BGs5BGs5BGs5BGs5BGs5BGs5BGs5BGs5BGs5BGs5BGs5BGs5BGs5BGs5BGs5BGs5BGs5B2tMdpF7mb1/6qvmxovdenFm3V+fU7eUi17uVlN4q6bi9Ot66rVXd9qpuZ1O3T3enH9utrOpWV3Vrq7r1Vd3Gqm7Rs9SZ/+b7LNhid7r9dlNlt8LF9Q+v/71j9Dz1t3SMnqn+lo7Rc9Xf0bGjZ6u/pWP0fPW3dPyIGSuj38rKtju/iZd9f/MI+d6xvlVkuIocV1E8vaK6bhX9MCB8ryhxFRWuosb9OxpaRQ/x7Y+tSHAV4TI7cJkduMyOwFWUuIpwmR2Nq2hoFeWFq+jZmf3tgT5vX/p8+x8reucrxw8XKNHa78zlqZ++A/v0Hfin7wD3npO495wsXEXN/nc3cUvflJL3/t3NZ++grk/fwUPeA6/bXVb6vbus7ttt00jf+dLacvvMoeOHq6x672v7NW9f2+XHqNN859Wj19vBj2r867//muwhqw5eh/n7YdrrMB93mP46zMcdZrwO83GHma/DfNxh1qefRz79VFuffqrtTz/VNvxm5y90AL/Z+QsdGO2+7yEbWx5bEe4T2sZ9Qtu42/7G3fY37rZ/cLf9I7iKFFcRLrMHl9mDy+zBZfbgMntwmT20zPaLltl+0TLbL1pm+0XL7PMtcBXRMtsvWmb7Rctsv2iZ7RcuswWX2YLLbMFltuAyW3CZLbjMFlxmCy6zBZfZgstsxWW24jJbcZmtuMxWXGYrLrMVl9mKy2zFZbbiMttwmW24zDZcZhsusw2X2YbLbMNltuEy23CZbbjMdlxmOy6zHZfZjstsx2U2TvY7TvY7Tva74zLbcZkduMwOXGYHLrMDl9mBy+zAZXbgMhsn+x0n+x0n+x0n+z1xmZ24zE5cZicusxOX2YnL7MRlduIyO3GZXbjMLlxmFy6zC5fZhcvswmV24TK7cJlduMwuXGY3LrMbl9mNy2ycg3Scg3Scg3Scg3Scg3Scg3Scg3Scg3Scg3Scg3Scg3Scg3Scg3Scg3Scg3Scg3Scgwycgwycgwycgwycg4yLltmBc5BxfamnQKW9FdL6w2sj37r9Uk+Autvtl3r6091uv9STn+51K1/qqU93u/1ST3y62y3tadkhtKdlx0O87GMroj0tOyRxFRWuosZVNLSK9MJVJLiKcJmtuMxWXGYrLrMVl9mKy2zFZbbiMttwmW24zDZcZhsusw2X2YbLbMNltuEy23CZbbjMdlxmOy6zHZfZjstsx2W24zLbcZntuMx2XGY7LrMDl9mBy+zAZXbgMjtwmR24zA5cZgcuswOX2YHL7MRlduIyO3GZnbjMTlxmJy6zE5fZicvsxGV24jK7cJlduMwuXGYXLrMLl9mFy+zCZXbhMrtwmV24zG5cZjcusxuX2Y3L7MZlduMyu3GZ3bjMblxmNy6zB5fZg8vswWX24DJ7cJk9uMweXGYPLrMHl9lDy+y8aJmdFy2z86Jldl60zM6Lltl50TI7L1pm50XL7LxomZ0XLrMFl9mCy2ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycg0ycgyycgyycgyycgyycg6yLltmFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CFc5CNc5CNc5CNc5CNc5B90TK7cQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ6ycQ5ycA5ycA5ycA5ycA5yLlpmD85BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs5BDs1B2kVzkKciWGafimCZfSqCZfapCJbZpyJYZp+KYJl9KoJl9qkIltmnIlxm0xzkqQiX2TQHeSrC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tld1O5u6fbps/9hu0fPSP//bhdmtkvj5t4v6Yjc+d7r9Yjc+d7r1Vd1+sRufO91+sRufO91+sRufO91+rVnqXrdfa5a6021/rVnqXrerZqleNUv1qlnq6Rs+PrbbVbNUr5qletUs1atmqV41S82qWWpWzVKzapaaVbPU0zfvfGy3q2apWTVLzapZalbNUrNplspr0yyV16ZZKq9Ns1Rem2apvHxVt5tmqbw2zVJ5bZql8to0S+W1apaSVbOUrJqlZNUsJatmqadvqvvYblfNUrJqlpJVs5SsmqVk1Sylq2YpXTVL6apZSlfNUk/fIPmx3a6apXTVLKWrZildNUvpqlnKVs1StmqWslWzlK2apZ6+2fVju101S9mqWcpWzVK2apayVbOUr5qlfNUs5atmKV81Sz194/LHdrtqlvJVs5SvmqV81Szlq2apWDVLxapZ6qttFL/T7apZ6qttFL/T7apZ6qttFL/T7apZKlbNUrFqlspVsxR7t/nDu101S7F3mj+8W1/V7apZ6ovtPb/X7apZ6ovtPb/X7apZ6ovtPb/X7apZatXe81y19zxX7T3PVXvPc9Xe81y19zxX7T3PVXvPc9Xe81y19zxX7T3PVXvPc9Xe81y19zxX7T3PVXvPc9Xe81y19zxX7T3PVXvPc9Xe81y19zxX7T3PVXvPc9Xe81y19zxX7T3PVXvPa9Xe81q197xW7T2vVXvP6/JV3W6apWrV3vNatfe8Vu09r1V7z2vV3vNatfe8Vu09r1V7z2vV3vNatfe8Vu09r1V7z2vV3vNatfe8Vu09r1V7z2vV3vNatfe8Vu09r1V7z2vV3vNatfe8Vu09r1V7z2vV3vNatfe8Vu09r1V7z2vV3vNatfe8Vu09r1V7z2vV3vNatfe8Vu09r1V7z2vV3vNatfe8Vu09r1V7z2vV3vNatfe8Vu09r1V7z2vV3vNatfe8Vu09r1V7z2vV3vNatfe8Vu09r1V7z2vV3vNatfe8Vu09r1V7z2vV3vNatfe8Vu09r1V7z2vV3vNatfe8Vu09r1V7z2vV3vNatfe8Vu09r1V7z2vV3vNatfe8Vu09r1V7z2vV3vNatfe8Vu09r1V7z2vV3vNatfe8Vu09r1V7z2vV3vNatfe8Vu09r1V7z2vV3vNatfe8Vu09r1V7z2vV3vNatfe8Vu09r1V7z2vV3vNatfe8V+0971V7z3vV3vNetfe8L1/V7aZZqlftPe9Ve8971d7zXrX3vFftPe9Ve8971d7zXrX3vFftPe9Ve8971d7zXrX3vFftPe9Ve8971d7zXrX3vFftPe9Ve8971d7zXrX3vFftPe9Ve8971d7zXrX3vFftPe9Ve8971d7zXrX3vFftPe9Ve8971d7zXrX3vFftPe9Ve8971d7zXrX3vFftPe9Ve8971d7zXrX3vFftPe9Ve8971d7zXrX3vFftPe9Ve8971d7zXrX3vFftPe9Ve8971d7zXrX3vFftPe9Ve8971d7zXrX3vFftPe9Ve8971d7zXrX3vFftPe9Ve8971d7zXrX3vFftPe9Ve8971d7zXrX3vFftPe9Ve8971d7zXrX3vFftPe9Ve8971d7zXrX3vFftPe9Ve8971d7zXrX3vFftPe9Ve8971d7zXrX3vFftPe9Ve8971d7zXrX3vFftPe9Ve8971d7zXrX3vFftPe9Ve89n1d7zWbX3fFbtPZ9Ve8/n8lXdbpqlZtXe81m193xW7T2fVXvP5/l7zy1vX9pFf92txMT19qVTSv7Q7e8dyKfvQNEdpF5z6+D8n77XgX36DvzTdxCfvoNEd1BX++1Li8S95M3WW8MzPydvreq2V3U7m7pV9gzx6G7Z88Y/2+2d+VDZs8mju2XPMY/u1ld1y56PHt3t15ql7nX7tWape91+rVnqXrdfa5a60619rVnqXrerZilbNUvZqlnq+fu+P7TbVbOUrZqlbNUsZatmKVs1S/mqWcpXzVK+apbyVbPU8/d9f2i3q2YpXzVL+apZylfNUr5qlopVs1SsmqVi1SwVq2ap5+/7/tBuV81SsWqWilWzVKyapWLVLJWrZqlcNUvlqlkqV81Sz9/3/aHdrpqlctUslatmqVw1S+WqWapWzVK1apaqVbPU/9Pe3e1IkqPnAb6lJPn9kFdjyIJhLCBIhiQb8IHv3TG7U92z6trpnVJWzNPKOVlsYzKTH6OCb7GY8ZD9UnOp+/f7/l17+1JzqX6puVS/1FyqX2ou1S81l9ovNZfaLzWX2i81l9ovNZe6f7/v37W3LzWX2i81l9ovNZfaLzWX2i81lzovNZc6LzWXOi81lzovNZe6f7/v37W3LzWXOi81lzovNZc6LzWXOi80l4rH44XmUldvX2gudfX2heZSV29faC519TZe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"},{"name":"verify_private_authwit","is_unconstrained":false,"custom_attributes":["aztec(private)","aztec(noinitcheck)","aztec(view)"],"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":"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":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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"},{"name":"constructor","is_unconstrained":false,"custom_attributes":["aztec(private)","aztec(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":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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"},{"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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"},{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":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":"7f3RjuTIkmWJ/st57gdSKSSV/SsXF4PqmZ5BAYXqQXfNBS4a/e/jmR5G80iaUtJx1FxEVNbLIGqaYaGy9knq3ptmyv/5j//jv/6X/+f/+t/+9d//z//2P/7xn/8///Mf//bf/vd/+Y9//W///vF//c//9Z/+8V/++7/+27/96//1v339//2P6Y//T6l/Xv8//u9/+fc//s//8R//8t//4x//eZ32//SP//rv/8fHn+r08ff/z3/9t//6j/8sk/yv/+9/+kc5vv1XlvLqr9Rl+vVX6rJe/sry/b8i3/8r6/f/yvb9v7J//6/U7/+V49t/Rabv/5X5+3/l++rL99WX76sv31dfvq++fF99+b768n311++rv35f/fX76q/fV3/9vvrr99Vfv6/++n311++rv35f/e376m/fV3/7vvrb99Xfvq/+9n31t++rv31f/e376m/fV3//vvr799Xfv6/+/n319++rv39f/f376u/fV3//vvr799Wv31e/fl/9+n316/fVr99Xv35f/fp99ev31a/fV79+X/3j++of31f/+L76x/fVn6eX82/T4+/s+/Lb3/lP12vndf518TYfz6vnUl9cPc91+3X1XP74vF9Xl8/lzJOv5cy+llN8LWfxtRzxtZzV13I2X8vZfS2n+lqOr7ty8XVXLr7uysXXXbn4uisXX3fl4uuuXHzdlZcf/g993Z+t93Feu0zb52pmV6v54f8hPz95+1jBZTWrq9Vsrlazu1pNdbWaDs5i+bIa0W44y3m/WeXLJ69/rkYmV6uZXa2muFrN4mo14mo1q6vVbD+8mq0+VlO362p2V6uprlZzeFrNOrlazexqNcXVan74Xlym49fFpezX1Yir1ayuVrO5Ws3uajXV1WoOT6vZ3nov/vNfmN/+L5S3/wvL2/8Fefu/sL79X9je/i/sb/8X6tv/hePd/8L+9v+m97f/N72//b/p/e3/Te9v/296f/t/0/vb/5ve3/7f9P72/6b3t/83Xd/+33T95/+bLs9CsMyrljzuHxDU4ms5i6/liK/lrL6Ws/lazu5rOf/87XApj9ZgW9aqLucRQD5asUsAqYen1RyTq9XMrlZTXK1mcbUacbWa1dVqNler2V2txtW9+PB0L/7Y8lytxtO9uEye7sVl8nQv/nA8rlbj6V5cJk/34jJ5uheXydO9uEyu7sWzq3vx7Ope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"}],"outputs":{"globals":{"notes":[{"fields":[{"kind":"integer","sign":false,"value":"00000000000000000000000000000000000000000000000000000000aad5fd6b"},{"kind":"string","value":"PublicKeyNote"}],"kind":"tuple"}],"storage":[{"fields":[{"name":"signing_public_key","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}}],"kind":"struct"}}],"kind":"struct"}]},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"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":"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"}}],"kind":"struct","path":"SchnorrAccount::entrypoint_parameters"}}],"kind":"struct","path":"SchnorrAccount::entrypoint_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":{"104":{"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::{\n execution::{get_chain_id, get_version, get_contract_address, get_block_number},\n storage::{raw_storage_read, storage_read}\n};\n\nstruct 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"},"110":{"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, gas::Gas,\n max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_request::PublicCallRequest, public_call_stack_item::PublicCallStackItem,\n public_call_stack_item_compressed::PublicCallStackItemCompressed, read_request::ReadRequest,\n note_hash::NoteHash, nullifier::Nullifier, log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_NOTE_HASHES_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_ENCRYPTED_LOGS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n MAX_NOTE_ENCRYPTED_LOGS_PER_CALL\n},\n header::Header, messaging::l2_to_l1_message::L2ToL1Message, utils::reader::Reader, traits::Empty\n};\n\n// When finished, one can call .finish() to convert back to the abi\nstruct PrivateContext {\n // docs:start:private-context\n inputs: PrivateContextInputs,\n side_effect_counter: u32,\n\n min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n args_hash: Field,\n return_hash: Field,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: BoundedVec<ReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n key_validation_requests_and_generators: BoundedVec<KeyValidationRequestAndGenerator, MAX_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n note_hashes: BoundedVec<NoteHash, MAX_NOTE_HASHES_PER_CALL>,\n nullifiers: BoundedVec<Nullifier, MAX_NULLIFIERS_PER_CALL>,\n\n private_call_requests : BoundedVec<PrivateCallRequest, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_requests : BoundedVec<PublicCallRequest, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n public_teardown_call_request: PublicCallRequest,\n l2_to_l1_msgs : BoundedVec<L2ToL1Message, MAX_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n note_encrypted_logs_hashes: BoundedVec<NoteLogHash, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL>,\n encrypted_logs_hashes: BoundedVec<EncryptedLogHash, MAX_ENCRYPTED_LOGS_PER_CALL>,\n unencrypted_logs_hashes: BoundedVec<LogHash, MAX_UNENCRYPTED_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n last_key_validation_requests: [Option<KeyValidationRequest>; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n\n fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n fn push_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n fn push_nullifier(&mut self, nullifier: Field) {\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() });\n }\n\n fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: nullified_note_hash, counter: self.next_counter() });\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage,\n nullifier_read_requests: self.nullifier_read_requests.storage,\n key_validation_requests_and_generators: self.key_validation_requests_and_generators.storage,\n note_hashes: self.note_hashes.storage,\n nullifiers: self.nullifiers.storage,\n private_call_requests: self.private_call_requests.storage,\n public_call_requests: self.public_call_requests.storage,\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: self.l2_to_l1_msgs.storage,\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n note_encrypted_logs_hashes: self.note_encrypted_logs_hashes.storage,\n encrypted_logs_hashes: self.encrypted_logs_hashes.storage,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\"Setting {0} as fee payer\", [self.this_address().to_field()]);\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n notify_set_min_revertible_side_effect_counter(self.min_revertible_side_effect_counter);\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number = MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request = self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one \n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale. We fetch new values from oracle and instruct\n // protocol circuits to validate them by storing the validation request in context.\n let request = get_key_validation_request(pk_m_hash, key_index);\n let request_and_generator = KeyValidationRequestAndGenerator { request, sk_app_generator: sk_generators[key_index] };\n // We constrain that the pk_m_hash matches the one in the request (otherwise we could get an arbitrary\n // valid key request and not the one corresponding to pk_m_hash).\n assert(request.pk_m.hash() == pk_m_hash);\n self.key_validation_requests_and_generators.push(request_and_generator);\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content, counter: self.next_counter() };\n self.l2_to_l1_msgs.push(message);\n }\n\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(&mut self, content: Field, secret: Field, sender: EthAddress) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\n\n // NB: A randomness value of 0 signals that the kernels should not mask the contract address\n // used in siloing later on e.g. 'handshaking' contract w/ known address.\n pub fn emit_raw_event_log_with_masked_address<let M: u32>(\n &mut self,\n randomness: Field,\n log: [u8; M],\n log_hash: Field\n ) {\n let counter = self.next_counter();\n let contract_address = self.this_address();\n let len = log.len() as Field + 4;\n let side_effect = EncryptedLogHash { value: log_hash, counter, length: len, randomness };\n self.encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_event_log(contract_address, randomness, log, counter);\n }\n\n pub fn emit_raw_note_log<let M: u32>(&mut self, note_hash_counter: u32, log: [u8; M], log_hash: Field) {\n let counter = self.next_counter();\n let len = log.len() as Field + 4;\n let side_effect = NoteLogHash { value: log_hash, counter, length: len, note_hash_counter };\n self.note_encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_note_log(note_hash_counter, log, counter);\n }\n\n pub fn call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_private_function_no_args<RETURNS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_private_function_no_args<RETURNS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_private_function_no_args<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_private_function_with_packed_args<RETURNS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n let (end_side_effect_counter, returns_hash) = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = end_side_effect_counter + 1;\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n self.private_call_requests.push(\n PrivateCallRequest {\n contract_address,\n call_context,\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter\n }\n );\n\n PackedReturns::new(returns_hash)\n }\n\n pub fn call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n is_delegate_call\n );\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n let item = PublicCallStackItemCompressed {\n contract_address,\n call_context,\n args_hash,\n returns_hash: 0,\n revert_code: 0,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty()\n };\n\n let call_request = PublicCallRequest { item, counter };\n self.public_call_requests.push(call_request);\n }\n\n pub fn set_public_teardown_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.set_public_teardown_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn set_public_teardown_function_with_packed_args<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n is_delegate_call\n );\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n let item = PublicCallStackItemCompressed {\n contract_address,\n call_context,\n args_hash,\n returns_hash: 0,\n revert_code: 0,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty()\n };\n\n self.public_teardown_call_request = PublicCallRequest {\n item,\n counter,\n };\n }\n\n fn generate_call_context(\n self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> CallContext {\n let msg_sender = if is_delegate_call {\n self.msg_sender()\n } else {\n self.this_address()\n };\n let storage_contract_address = if is_delegate_call {\n self.this_address()\n } else {\n contract_address\n };\n CallContext { msg_sender, storage_contract_address, function_selector, is_static_call, is_delegate_call }\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n historical_header: Header::empty(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n}\n"},"118":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/payload.nr","source":"use dep::protocol_types::{address::AztecAddress, scalar::Scalar, point::Point};\nuse std::{\n embedded_curve_ops::fixed_base_scalar_mul as derive_public_key,\n hash::from_field_unsafe as fr_to_fq_unsafe, field::bn254::decompose\n};\n\nuse crate::{\n event::event_interface::EventInterface, oracle::unsafe_rand::unsafe_rand,\n utils::point::point_to_bytes, note::note_interface::NoteInterface,\n encrypted_logs::{\n header::EncryptedLogHeader, incoming_body::EncryptedLogIncomingBody,\n outgoing_body::EncryptedLogOutgoingBody\n},\n keys::public_keys::{OvpkM, IvpkM}\n};\n\npub fn compute_encrypted_event_log<Event, let NB: u32, let MB: u32, let OB: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n event: Event\n) -> [u8; OB] where Event: EventInterface<NB, MB> {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ivpk);\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext = EncryptedLogIncomingBody::from_event(event, randomness).compute_ciphertext(eph_sk, ivpk);\n let outgoing_body_ciphertext: [u8; 144] = EncryptedLogOutgoingBody::new(eph_sk, recipient, ivpk).compute_ciphertext(fr_to_fq(ovsk_app), eph_pk);\n\n let mut encrypted_bytes: [u8; OB] = [0; OB];\n // @todo We ignore the tags for now\n\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[64 + i] = eph_pk_bytes[i];\n }\n for i in 0..48 {\n encrypted_bytes[96 + i] = incoming_header_ciphertext[i];\n encrypted_bytes[144 + i] = outgoing_header_ciphertext[i];\n }\n for i in 0..144 {\n encrypted_bytes[192 + i] = outgoing_body_ciphertext[i];\n }\n // Then we fill in the rest as the incoming body ciphertext\n let size = OB - 336;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[336 + i] = incoming_body_ciphertext[i];\n }\n\n // Current unoptimized size of the encrypted log\n // incoming_tag (32 bytes)\n // outgoing_tag (32 bytes)\n // eph_pk (32 bytes)\n // incoming_header (48 bytes)\n // outgoing_header (48 bytes)\n // outgoing_body (144 bytes)\n // incoming_body_fixed (64 bytes)\n // incoming_body_variable (N * 32 bytes + 16 bytes padding)\n encrypted_bytes\n}\n\npub fn compute_encrypted_note_log<Note, let N: u32, let NB: u32, let M: u32>(\n contract_address: AztecAddress,\n storage_slot: Field,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n note: Note\n) -> [u8; M] where Note: NoteInterface<N, NB> {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ivpk);\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext = EncryptedLogIncomingBody::from_note(note, storage_slot).compute_ciphertext(eph_sk, ivpk);\n let outgoing_body_ciphertext: [u8; 144] = EncryptedLogOutgoingBody::new(eph_sk, recipient, ivpk).compute_ciphertext(fr_to_fq(ovsk_app), eph_pk);\n\n let mut encrypted_bytes: [u8; M] = [0; M];\n // @todo We ignore the tags for now\n\n 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 (N * 32 bytes + 16 bytes padding)\n encrypted_bytes\n}\n\n/// Converts a base field element to scalar field element.\n/// This is fine because modulus of the base field is smaller than the modulus of the scalar field.\nfn fr_to_fq(r: Field) -> Scalar {\n let (lo, hi) = decompose(r);\n\n Scalar { lo, hi }\n}\n\nfn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n // We use the unsafe version of `fr_to_fq` because multi_scalar_mul (called by derive_public_key) will constrain\n // the scalars.\n let eph_sk = fr_to_fq_unsafe(unsafe_rand());\n let eph_pk = derive_public_key(eph_sk);\n\n (eph_sk, eph_pk)\n}\n\nmod test {\n use crate::{\n encrypted_logs::payload::compute_encrypted_note_log, keys::public_keys::{OvpkM, IvpkM},\n test::mocks::mock_note::MockNoteBuilder\n };\n use dep::protocol_types::{address::AztecAddress, point::Point};\n use std::test::OracleMock;\n\n #[test]\n fn test_encrypted_note_log_matches_typescript() {\n // All the values in this test were copied over from `tagged_log.test.ts`\n let contract_address = AztecAddress::from_field(0x10f48cd9eff7ae5b209c557c70de2e657ee79166868676b787e9417e19260e04);\n let storage_slot = 0x0fe46be583b71f4ab5b70c2657ff1d05cccf1d292a9369628d1a194f944e6599;\n let ovsk_app = 0x03a6513d6def49f41d20373d2cec894c23e7492794b08fc50c0e8a1bd2512612;\n let ovpk_m = OvpkM {\n inner: Point {\n x: 0x1961448682803198631f299340e4206bb12809d4bebbf012b30f59af73ba1a15,\n y: 0x133674060c3925142aceb4f1dcd9f9137d0217d37ff8729ee5ceaa6e2790353d,\n is_infinite: false\n }\n };\n let ivpk_m = IvpkM {\n inner: Point {\n x: 0x260cd3904f6df16e974c29944fdc839e40fb5cf293f03df2eb370851d3a527bc,\n y: 0x0eef2964fe6640e84c82b5d2915892409b38e9e25d39f68dd79edb725c55387f,\n is_infinite: false\n }\n };\n\n let note_value = 0x301640ceea758391b2e161c92c0513f129020f4125256afdae2646ce31099f5c;\n let note = MockNoteBuilder::new(note_value).contract_address(contract_address).storage_slot(storage_slot).build();\n\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk);\n\n let recipient = AztecAddress::from_field(0x10ee41ee4b62703b16f61e03cb0d88c4b306a9eb4a6ceeb2aff13428541689a2);\n\n let log: [u8; 448] = compute_encrypted_note_log(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n recipient,\n note\n );\n\n // The following value was generated by `tagged_log.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let encrypted_note_log_from_typescript = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 70, 12, 14, 67, 77, 132, 110, 193, 234, 40, 110, 64, 144, 235, 86, 55, 111, 242, 123, 221, 193, 170, 202, 225, 216, 86, 84, 159, 112, 31, 167, 126, 79, 51, 186, 47, 71, 253, 172, 99, 112, 241, 59, 197, 241, 107, 186, 232, 87, 187, 230, 171, 62, 228, 234, 42, 51, 145, 146, 238, 242, 42, 71, 206, 13, 244, 66, 111, 195, 20, 203, 98, 148, 204, 242, 145, 183, 156, 29, 141, 54, 44, 220, 194, 35, 229, 16, 32, 204, 211, 49, 142, 112, 82, 202, 116, 241, 254, 146, 42, 217, 20, 189, 70, 228, 182, 171, 205, 104, 27, 99, 171, 28, 91, 244, 21, 30, 130, 240, 5, 72, 174, 124, 97, 197, 157, 248, 193, 23, 193, 76, 46, 141, 144, 70, 211, 45, 67, 167, 218, 129, 140, 104, 190, 41, 110, 249, 209, 68, 106, 135, 164, 80, 235, 63, 101, 80, 32, 13, 38, 99, 145, 91, 11, 173, 151, 231, 247, 65, 153, 117, 229, 167, 64, 239, 182, 126, 235, 83, 4, 169, 8, 8, 160, 4, 235, 252, 21, 96, 84, 161, 69, 145, 145, 215, 254, 161, 117, 246, 198, 65, 89, 179, 194, 90, 19, 121, 12, 202, 114, 80, 195, 14, 60, 128, 105, 142, 100, 86, 90, 108, 157, 219, 22, 172, 20, 121, 195, 25, 159, 236, 2, 70, 75, 42, 37, 34, 2, 17, 149, 20, 176, 32, 18, 204, 56, 117, 121, 34, 15, 3, 88, 123, 64, 68, 74, 233, 63, 59, 131, 222, 194, 192, 167, 110, 217, 10, 128, 73, 129, 172, 205, 103, 212, 60, 151, 141, 10, 151, 222, 151, 180, 43, 91, 148, 201, 110, 165, 10, 238, 32, 134, 235, 99, 216, 200, 182, 31, 22, 156, 18, 209, 222, 172, 239, 193, 212, 86, 99, 62, 70, 182, 45, 175, 241, 91, 202, 179, 225, 236, 95, 71, 66, 151, 225, 203, 53, 216, 85, 102, 130, 6, 8, 25, 180, 86, 58, 140, 198, 105, 102, 177, 42, 94, 115, 247, 145, 147, 24, 231, 39, 73, 27, 10, 219, 130, 115, 188, 74, 114, 5, 177, 199, 83, 183, 106, 87, 204, 238, 231, 72, 45, 240, 39, 174, 25, 98, 53, 187, 156, 159, 244, 38\n ];\n for i in 0..encrypted_note_log_from_typescript.len() {\n assert_eq(log[i], encrypted_note_log_from_typescript[i]);\n }\n assert_eq(encrypted_note_log_from_typescript.len(), log.len());\n }\n}\n"},"119":{"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_current_public_keys, public_keys::{OvpkM, IvpkM}},\n encrypted_logs::payload::compute_encrypted_note_log, oracle::logs_traits::LensForEncryptedLog\n};\nuse dep::protocol_types::{\n hash::sha256_to_field, address::AztecAddress, point::Point, abis::note_hash::NoteHash,\n constants::MAX_NOTE_HASHES_PER_CALL\n};\n\nunconstrained fn compute_unconstrained<Note, let N: u32, let NB: u32, let M: u32>(\n contract_address: AztecAddress,\n storage_slot: Field,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n note: Note\n) -> ([u8; M], Field) where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n compute(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk,\n ivpk,\n recipient,\n note\n )\n}\n\nfn compute<Note, let N: u32, let NB: u32, let M: u32>(\n contract_address: AztecAddress,\n storage_slot: Field,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n note: Note\n) -> ([u8; M], Field) where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n let encrypted_log: [u8; M] = compute_encrypted_note_log(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk,\n ivpk,\n recipient,\n note\n );\n let log_hash = sha256_to_field(encrypted_log);\n (encrypted_log, log_hash)\n}\n\nfn emit_with_keys<Note, let N: u32, let NB: u32, let M: u32>(\n context: &mut PrivateContext,\n note: Note,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n inner_compute: fn(AztecAddress, Field, Field, OvpkM, IvpkM, AztecAddress, Note) -> ([u8; M], Field)\n) where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n let note_header = note.get_header();\n let note_hash_counter = note_header.note_hash_counter;\n let storage_slot = note_header.storage_slot;\n\n 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 let ovsk_app: Field = context.request_ovsk_app(ovpk.hash());\n\n let (encrypted_log, log_hash) = inner_compute(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk,\n ivpk,\n recipient,\n note\n );\n\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n}\n\npub fn encode_and_encrypt_note<Note, let N: u32, let NB: u32, let M: u32>(\n context: &mut PrivateContext,\n ov: AztecAddress,\n iv: AztecAddress\n) -> fn[(&mut PrivateContext, AztecAddress, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n let ovpk = get_current_public_keys(context, ov).ovpk_m;\n let ivpk = get_current_public_keys(context, iv).ivpk_m;\n emit_with_keys(context, e.note, ovpk, ivpk, iv, compute);\n }\n}\n\npub fn encode_and_encrypt_note_unconstrained<Note, let N: u32, let NB: u32, let M: u32>(\n context: &mut PrivateContext,\n ov: AztecAddress,\n iv: AztecAddress\n) -> fn[(&mut PrivateContext, AztecAddress, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n let ovpk = get_current_public_keys(context, ov).ovpk_m;\n let ivpk = get_current_public_keys(context, iv).ivpk_m;\n emit_with_keys(context, e.note, ovpk, ivpk, iv, compute_unconstrained);\n }\n}\n\npub fn encode_and_encrypt_note_with_keys<Note, let N: u32, let NB: u32, let M: u32>(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n emit_with_keys(context, e.note, ovpk, ivpk, recipient, compute);\n }\n}\n\npub fn encode_and_encrypt_note_with_keys_unconstrained<Note, let N: u32, let NB: u32, let M: u32>(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n emit_with_keys(context, e.note, ovpk, ivpk, recipient, compute_unconstrained);\n }\n}\n"},"120":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/outgoing_body.nr","source":"use dep::protocol_types::{\n address::AztecAddress, scalar::Scalar, point::Point, constants::GENERATOR_INDEX__SYMMETRIC_KEY,\n hash::poseidon2_hash_with_separator\n};\nuse std::aes128::aes128_encrypt;\n\nuse crate::{keys::public_keys::IvpkM, utils::point::point_to_bytes};\n\nstruct EncryptedLogOutgoingBody {\n eph_sk: Scalar,\n recipient: AztecAddress,\n recipient_ivpk: IvpkM,\n}\n\nimpl EncryptedLogOutgoingBody {\n pub fn new(eph_sk: Scalar, recipient: AztecAddress, recipient_ivpk: IvpkM) -> Self {\n Self { eph_sk, recipient, recipient_ivpk }\n }\n\n /// Encrypts ephemeral secret key and recipient's ivpk --> with this information the recipient of outgoing will\n /// be able to derive the key with which the incoming log can be decrypted.\n pub fn compute_ciphertext(self, ovsk_app: Scalar, eph_pk: Point) -> [u8; 144] {\n // Again, we could compute `eph_pk` here, but we keep the interface more similar\n // and also make it easier to optimise it later as we just pass it along\n\n let mut buffer = [0 as u8; 128];\n\n let serialized_eph_sk_high = self.eph_sk.hi.to_be_bytes(32);\n let serialized_eph_sk_low = self.eph_sk.lo.to_be_bytes(32);\n\n let address_bytes = self.recipient.to_field().to_be_bytes(32);\n let serialized_recipient_ivpk = point_to_bytes(self.recipient_ivpk.to_point());\n\n for i in 0..32 {\n buffer[i] = serialized_eph_sk_high[i];\n buffer[i + 32] = serialized_eph_sk_low[i];\n buffer[i + 64] = address_bytes[i];\n }\n for i in 0..32 {\n buffer[i + 96] = serialized_recipient_ivpk[i];\n }\n\n // We compute the symmetric key using poseidon.\n let full_key: [u8; 32] = poseidon2_hash_with_separator(\n [ovsk_app.hi, ovsk_app.lo, eph_pk.x, eph_pk.y],\n GENERATOR_INDEX__SYMMETRIC_KEY as Field\n ).to_be_bytes(32).as_array();\n\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(buffer, iv, sym_key).as_array()\n }\n}\n\nmod test {\n use crate::{encrypted_logs::outgoing_body::EncryptedLogOutgoingBody, keys::public_keys::IvpkM};\n use dep::protocol_types::{\n address::AztecAddress, traits::Empty, constants::GENERATOR_INDEX__NOTE_NULLIFIER,\n scalar::Scalar, point::Point, hash::poseidon2_hash_with_separator\n };\n use std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\n\n use crate::context::PrivateContext;\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 body = EncryptedLogOutgoingBody::new(eph_sk, recipient, recipient_ivpk);\n\n let ciphertext = body.compute_ciphertext(sender_ovsk_app, eph_pk);\n\n // The following value was generated by `encrypted_log_outgoing_body.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let outgoing_body_ciphertext_from_typescript = [\n 127, 182, 227, 75, 192, 197, 54, 47, 168, 134, 233, 148, 251, 46, 86, 12, 73, 50, 238, 50, 31, 174, 27, 202, 110, 77, 161, 197, 244, 124, 17, 100, 143, 150, 232, 14, 156, 248, 43, 177, 16, 82, 244, 103, 88, 74, 84, 200, 15, 65, 187, 14, 163, 60, 91, 22, 104, 31, 211, 190, 124, 121, 79, 92, 239, 65, 185, 106, 51, 178, 168, 137, 84, 43, 79, 158, 151, 152, 83, 42, 170, 13, 106, 209, 254, 74, 39, 145, 73, 215, 17, 234, 196, 89, 30, 58, 120, 127, 88, 69, 121, 61, 18, 206, 89, 118, 243, 238, 177, 71, 73, 47, 147, 4, 155, 25, 173, 248, 206, 52, 17, 180, 122, 186, 106, 191, 252, 102, 197, 91, 16, 39, 94, 91, 224, 30, 168, 177, 26, 144, 5, 124, 128, 6\n ];\n\n 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"},"121":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/header.nr","source":"use dep::protocol_types::{address::AztecAddress, scalar::Scalar, point::Point};\n\nuse crate::keys::{point_to_symmetric_key::point_to_symmetric_key, public_keys::ToPoint};\n\nuse std::aes128::aes128_encrypt;\n\nstruct 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(32).as_array();\n aes128_encrypt(input, iv, sym_key).as_array()\n }\n}\n\n#[test]\nfn test_encrypted_log_header_matches_noir() {\n let address = AztecAddress::from_field(0xdeadbeef);\n let header = EncryptedLogHeader::new(address);\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let point = crate::keys::public_keys::IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n let ciphertext = header.compute_ciphertext(secret, point);\n\n // The following value was generated by `encrypted_log_header.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_header_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 194, 44, 7, 131, 160, 83, 64, 181, 98, 38, 153, 214, 62, 171, 253, 161, 111, 191, 28, 247, 216, 26, 222, 171, 176, 218, 48, 209, 73, 89, 200, 209\n ];\n\n assert_eq(ciphertext, expected_header_ciphertext_from_typescript);\n}\n"},"122":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/incoming_body.nr","source":"use crate::note::note_interface::NoteInterface;\nuse crate::event::event_interface::EventInterface;\nuse dep::protocol_types::{scalar::Scalar, point::Point};\n\nuse std::aes128::aes128_encrypt;\nuse crate::keys::{point_to_symmetric_key::point_to_symmetric_key, public_keys::IvpkM};\n\nstruct EncryptedLogIncomingBody<let M: u32> {\n plaintext: [u8; M]\n}\n\nimpl<let M: u32> EncryptedLogIncomingBody<M> {\n pub fn from_note<T, let N: u32>(note: T, storage_slot: Field) -> Self where T: NoteInterface<N, M> {\n let mut plaintext = note.to_be_bytes(storage_slot);\n EncryptedLogIncomingBody { plaintext }\n }\n\n pub fn from_event<T, let MR: u32>(\n event: T,\n randomness: Field\n ) -> Self where T: EventInterface<M, MR> {\n let mut plaintext = event.private_to_be_bytes(randomness);\n EncryptedLogIncomingBody { plaintext }\n }\n\n pub fn compute_ciphertext(self, eph_sk: Scalar, ivpk: IvpkM) -> [u8] {\n let full_key = point_to_symmetric_key(eph_sk, ivpk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(self.plaintext, iv, sym_key)\n }\n}\n\nmod test {\n use dep::protocol_types::{\n address::AztecAddress, scalar::Scalar, point::Point, traits::Serialize,\n abis::event_selector::EventSelector\n };\n\n use crate::{\n note::{note_header::NoteHeader, note_interface::NoteInterface},\n encrypted_logs::incoming_body::EncryptedLogIncomingBody, event::event_interface::EventInterface,\n context::PrivateContext, keys::public_keys::IvpkM\n };\n\n struct AddressNote {\n address: AztecAddress,\n owner: AztecAddress,\n randomness: Field,\n header: NoteHeader,\n }\n\n global ADDRESS_NOTE_LEN: Field = 3;\n global ADDRESS_NOTE_BYTES_LEN = 32 * 3 + 64;\n\n impl NoteInterface<ADDRESS_NOTE_LEN, ADDRESS_NOTE_BYTES_LEN> for AddressNote {\n fn compute_note_hiding_point(self) -> Point {\n crate::generators::Ga1\n }\n\n fn get_note_type_id() -> Field {\n 1\n }\n\n fn get_header(self) -> NoteHeader { self.header}\n\n fn set_header(&mut self, header: NoteHeader) {self.header = header; }\n\n fn compute_nullifier(_self: Self, _context: &mut PrivateContext, _note_hash_for_nullify: Field) -> Field {\n 1\n }\n\n fn compute_nullifier_without_context(_self: Self) -> Field {\n 1\n }\n\n fn serialize_content(self) -> [Field; ADDRESS_NOTE_LEN] { [self.address.to_field(), self.owner.to_field(), self.randomness]}\n\n fn deserialize_content(fields: [Field; ADDRESS_NOTE_LEN]) -> Self {\n AddressNote { address: AztecAddress::from_field(fields[0]), owner: AztecAddress::from_field(fields[1]), randomness: fields[2], header: NoteHeader::empty() }\n }\n\n fn to_be_bytes(self, storage_slot: Field) -> [u8; ADDRESS_NOTE_BYTES_LEN] {\n let serialized_note = self.serialize_content();\n\n let mut buffer: [u8; ADDRESS_NOTE_BYTES_LEN] = [0; ADDRESS_NOTE_BYTES_LEN];\n\n let storage_slot_bytes = storage_slot.to_be_bytes(32);\n let note_type_id_bytes = AddressNote::get_note_type_id().to_be_bytes(32);\n\n for i in 0..32 {\n buffer[i] = storage_slot_bytes[i];\n buffer[32 + i] = note_type_id_bytes[i];\n }\n\n for i in 0..serialized_note.len() {\n let bytes = serialized_note[i].to_be_bytes(32);\n for j in 0..32 {\n buffer[64 + i * 32 + j] = bytes[j];\n }\n }\n buffer\n }\n }\n\n impl AddressNote {\n pub fn new(address: AztecAddress, owner: AztecAddress, randomness: Field) -> Self {\n AddressNote { address, owner, randomness, header: NoteHeader::empty() }\n }\n }\n\n #[test]\n fn test_encrypted_note_log_incoming_body_matches_typescript() {\n // All the values in this test were copied over from `encrypted_note_log_incoming_body.test.ts`\n let note = AddressNote::new(\n AztecAddress::from_field(0x1),\n AztecAddress::from_field(0x2),\n 3\n );\n\n let storage_slot = 2;\n\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let ivpk = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n /// 1. `EncryptedLogIncomingBody::from_note` calls `note.to_be_bytes(storage_slot)` function which serializes\n /// the note to bytes - note that in the case of `AddressNote` the `to_be_bytes` function was automatically\n /// implemented by Aztec macros.\n let body = EncryptedLogIncomingBody::from_note(note, storage_slot);\n\n /// 2. `body.compute_ciphertext(...)` function then derives symmetric key from `eph_sk` and `ivpk` and encrypts\n // the note plaintext using AES-128.\n let ciphertext = body.compute_ciphertext(eph_sk, ivpk);\n\n // The following value was generated by `encrypted_note_log_incoming_body.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let note_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160, 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157, 131, 149, 96, 236, 253, 96, 172, 157, 30, 27, 176, 228, 74, 242, 190, 138, 48, 33, 93, 46, 37, 223, 130, 25, 245, 188, 163, 159, 223, 187, 24, 139, 206, 131, 154, 159, 130, 37, 17, 158, 114, 242, 141, 124, 193, 232, 54, 146, 96, 145, 100, 125, 234, 57, 43, 95, 115, 183, 39, 121, 232, 134, 229, 148, 25, 46, 77, 87, 127, 95, 7, 77, 188, 37, 234, 245, 142, 232, 87, 252, 28, 67, 67, 90, 214, 254, 89, 47, 68, 66, 187, 227, 8, 59, 162, 25, 141, 97, 141, 217, 197, 115, 15, 212, 202, 157, 41, 150, 62, 219, 57, 224, 92, 185, 212, 142, 94, 146, 41, 178, 145, 68, 169, 23, 185, 206, 138, 70, 47, 176, 210, 165, 236, 23, 206, 229, 108\n ];\n\n assert_eq(note_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..note_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], note_body_ciphertext_from_typescript[i]);\n }\n }\n\n struct TestEvent {\n value0: Field,\n value1: Field,\n value2: Field,\n }\n\n impl Serialize<3> for TestEvent {\n fn serialize(self) -> [Field; 3] {\n [self.value0, self.value1, self.value2]\n }\n }\n\n global TEST_EVENT_LEN: Field = 3;\n global TEST_EVENT_BYTES_LEN = 32 * 3 + 64;\n global TEST_EVENT_BYTES_LEN_WITHOUT_RANDOMNESS = 32 * 3 + 32;\n\n impl EventInterface<TEST_EVENT_BYTES_LEN, TEST_EVENT_BYTES_LEN_WITHOUT_RANDOMNESS> for TestEvent {\n fn get_event_type_id() -> EventSelector {\n EventSelector::from_signature(\"TestEvent(Field,Field,Field)\")\n }\n\n fn private_to_be_bytes(self, randomness: Field) -> [u8; TEST_EVENT_BYTES_LEN] {\n let mut buffer: [u8; TEST_EVENT_BYTES_LEN] = [0; TEST_EVENT_BYTES_LEN];\n\n let randomness_bytes = randomness.to_be_bytes(32);\n let event_type_id_bytes = TestEvent::get_event_type_id().to_field().to_be_bytes(32);\n\n for i in 0..32 {\n buffer[i] = randomness_bytes[i];\n buffer[32 + i] = event_type_id_bytes[i];\n }\n\n let serialized_event = self.serialize();\n\n for i in 0..serialized_event.len() {\n let bytes = serialized_event[i].to_be_bytes(32);\n for j in 0..32 {\n buffer[64 + i * 32 + j] = bytes[j];\n }\n }\n\n buffer\n }\n\n fn to_be_bytes(self) -> [u8; TEST_EVENT_BYTES_LEN_WITHOUT_RANDOMNESS] {\n let mut buffer: [u8; TEST_EVENT_BYTES_LEN_WITHOUT_RANDOMNESS] = [0; TEST_EVENT_BYTES_LEN_WITHOUT_RANDOMNESS];\n\n let event_type_id_bytes = TestEvent::get_event_type_id().to_field().to_be_bytes(32);\n\n for i in 0..32 {\n buffer[i] = event_type_id_bytes[i];\n }\n\n let serialized_event = self.serialize();\n\n for i in 0..serialized_event.len() {\n let bytes = serialized_event[i].to_be_bytes(32);\n for j in 0..32 {\n buffer[32 + i * 32 + j] = bytes[j];\n }\n }\n\n buffer\n }\n\n fn emit<Env>(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n }\n\n #[test]\n fn test_encrypted_log_event_incoming_body() {\n let test_event = TestEvent { value0: 1, value1: 2, value2: 3 };\n\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n\n let ivpk = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n let randomness = 2;\n\n let body = EncryptedLogIncomingBody::from_event(test_event, randomness);\n\n let ciphertext = body.compute_ciphertext(eph_sk, ivpk);\n\n // The following value was generated by `encrypted_event_log_incoming_body.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let event_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160, 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157, 131, 149, 96, 236, 253, 96, 172, 157, 30, 185, 29, 14, 152, 216, 130, 219, 151, 80, 185, 43, 223, 167, 8, 89, 189, 88, 188, 101, 137, 255, 136, 84, 252, 79, 18, 52, 3, 110, 54, 54, 206, 244, 209, 246, 226, 207, 247, 143, 253, 211, 75, 160, 224, 172, 41, 45, 7, 208, 137, 90, 56, 59, 4, 234, 48, 53, 23, 130, 230, 49, 249, 142, 243, 170, 72, 183, 242, 49, 124, 46, 52, 198, 75, 55, 102, 56, 89, 254, 67, 59, 157, 249, 120, 184, 67, 154, 16, 148, 227, 93, 37, 120, 199, 93, 166, 80, 127, 173, 52, 80, 135, 87, 1, 168, 164, 51, 48, 126, 120, 47, 102, 211, 227, 234, 170, 208, 99, 111, 198, 170, 226, 156, 244, 241, 174, 206, 30\n ];\n\n assert_eq(event_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..event_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], event_body_ciphertext_from_typescript[i]);\n }\n }\n}\n"},"126":{"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, MAX_NOTES_PER_PAGE, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, Select, Sort, SortOrder, Comparator, NoteStatus, PropertySelector},\n note_interface::NoteInterface, note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request\n};\nuse crate::oracle;\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 = serialized_note[selector.index].to_be_bytes(32);\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, let M: u32>(\n context: PrivateContext,\n storage_slot: Field,\n note: Note\n) where Note: NoteInterface<N, M> {\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 // Values are computed ahead of time because circuits evaluate all branches\n let is_equal = value_field == select.value.to_field();\n let is_lt = value_field.lt(select.value.to_field());\n\n if (select.comparator == Comparator.EQ) {\n assert(is_equal, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.NEQ) {\n assert(!is_equal, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.LT) {\n assert(is_lt, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.LTE) {\n assert(is_lt | is_equal, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.GT) {\n assert(!is_lt & !is_equal, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.GTE) {\n assert(!is_lt, \"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, let M: u32>(\n context: &mut PrivateContext,\n storage_slot: Field\n) -> (Note, Field) where Note: NoteInterface<N, M> {\n let note = get_note_internal(storage_slot);\n\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n\n context.push_note_hash_read_request(note_hash_for_read_request);\n (note, note_hash_for_read_request)\n}\n\npub fn get_notes<Note, let N: u32, let M: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, M, 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, M> + Eq {\n let opt_notes = get_notes_internal(storage_slot, options);\n\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor<Note, let N: u32, let M: u32, 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, let M: 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, M, 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, M> + 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(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, let M: u32>(storage_slot: Field) -> Note where Note: NoteInterface<N, M> {\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].unwrap() // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal<Note, let N: u32, let M: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, M, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] where Note: NoteInterface<N, M> {\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\nunconstrained pub fn view_notes<Note, let N: u32, let M: u32>(\n storage_slot: Field,\n options: NoteViewerOptions<Note, N, M>\n) -> BoundedVec<Note, MAX_NOTES_PER_PAGE> where Note: NoteInterface<N, M> {\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<Note, 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"},"128":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/utils.nr","source":"use crate::{context::PrivateContext, note::{note_header::NoteHeader, note_interface::NoteInterface}};\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, let M: u32>(\n note_with_header: Note,\n context: &mut PrivateContext\n) -> Field where Note: NoteInterface<N, M> {\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, let M: u32>(note: Note) -> Field where Note: NoteInterface<N, M> {\n // TODO(#7771): inject compute_note_hash(...) func to notes with macros.\n let note_hash = note.compute_note_hiding_point().x;\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, let M: u32>(\n note: Note,\n note_hash_for_read_request: Field\n) -> Field where Note: NoteInterface<N, M> {\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, M> {\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// // TODO(#7771): inject compute_note_hash(...) func to notes with macros.\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, let M: u32>(note: Note) -> Field where Note: NoteInterface<N, M> {\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request)\n}\n\npub fn compute_note_hash_and_optionally_a_nullifier<T, let N: u32, let M: 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, M> {\n let mut note = deserialize_content(arr_copy_slice(serialized_note, [0; N], 0));\n note.set_header(note_header);\n\n // TODO(#7771): inject compute_note_hash(...) func to notes with macros.\n let note_hash = note.compute_note_hiding_point().x;\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"},"129":{"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,\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, N, M>(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note\n) -> NoteEmission<Note> where Note: NoteInterface<N, M> {\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 // TODO(#7771): inject compute_note_hash(...) func to notes with macros.\n let note_hash = note.compute_note_hiding_point().x;\n\n let serialized_note = Note::serialize_content(*note);\n assert(\n notify_created_note(\n storage_slot,\n Note::get_note_type_id(),\n serialized_note,\n note_hash,\n note_hash_counter\n )\n == 0\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(*note)\n}\n\npub fn create_note_hash_from_public<Note, N, M>(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note\n) where Note: NoteInterface<N, M> {\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 // TODO(#7771): inject compute_note_hash(...) func to notes with macros.\n let note_hash = note.compute_note_hiding_point().x;\n\n context.push_note_hash(note_hash);\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note<Note, N, M>(\n context: &mut PrivateContext,\n note: Note\n) where Note: NoteInterface<N, M> {\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, N, M>(\n context: &mut PrivateContext,\n note: Note,\n note_hash_for_read_request: Field\n) where Note: NoteInterface<N, M> {\n let note_hash_for_nullify = compute_note_hash_for_nullify_internal(note, note_hash_for_read_request);\n let nullifier = note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash_counter = note.get_header().note_hash_counter;\n let notification_note_hash = if (note_hash_counter == 0) {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifyng so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n let nullifier_counter = context.side_effect_counter;\n assert(notify_nullified_note(nullifier, notification_note_hash, nullifier_counter) == 0);\n\n context.push_nullifier_for_note_hash(nullifier, notification_note_hash)\n}\n\n"},"130":{"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 */\nstruct 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 */\nstruct 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"},"138":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, ARGS_HASH_CHUNK_COUNT,\n GENERATOR_INDEX__FUNCTION_ARGS, ARGS_HASH_CHUNK_LENGTH, MAX_ARGS_LENGTH\n},\n traits::Hash,\n hash::{\n pedersen_hash, compute_siloed_nullifier, sha256_to_field, pedersen_commitment,\n poseidon2_hash_with_separator\n}\n};\n// Note: pedersen_commitment is used only as a re-export here\nuse crate::oracle::logs_traits::{LensForEncryptedLog, ToBytesForUnencryptedLog};\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash<T, let N: u32, let M: u32>(\n contract_address: AztecAddress,\n log: T\n) -> Field where T: ToBytesForUnencryptedLog<N, M> {\n let message_bytes: [u8; N] = log.to_be_bytes_arr();\n // can't use N - not in scope error\n let n = message_bytes.len();\n let mut hash_bytes = [0; M];\n // Address is converted to 32 bytes in ts\n let address_bytes = contract_address.to_be_bytes_arr();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let len_bytes = (n as Field).to_be_bytes(4);\n for i in 0..4 {\n hash_bytes[32 + i] = len_bytes[i];\n }\n for i in 0..n {\n hash_bytes[36 + i] = message_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes = sender.to_field().to_be_bytes(32);\n let chain_id_bytes = chain_id.to_be_bytes(32);\n let recipient_bytes = recipient.to_field().to_be_bytes(32);\n let version_bytes = version.to_be_bytes(32);\n let content_bytes = content.to_be_bytes(32);\n let secret_hash_bytes = secret_hash.to_be_bytes(32);\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n poseidon2_hash_with_separator(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER\n )\n}\n\nstruct ArgsHasher {\n fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<let N: u32>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array<let N: u32>(args: [Field; N]) -> Field {\n hash_args(args.as_slice())\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n assert(args.len() <= MAX_ARGS_LENGTH, \"Args length exceeds maximum\");\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n let mut current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n\n let mut current_chunk_index = 0;\n let mut index_inside_current_chunk = 0;\n for i in 0..args.len() {\n current_chunk_values[index_inside_current_chunk] = args[i];\n index_inside_current_chunk+=1;\n if index_inside_current_chunk == ARGS_HASH_CHUNK_LENGTH {\n chunks_hashes[current_chunk_index] = poseidon2_hash_with_separator(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n current_chunk_index+=1;\n index_inside_current_chunk = 0;\n }\n }\n if index_inside_current_chunk > 0 {\n chunks_hashes[current_chunk_index] = poseidon2_hash_with_separator(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n poseidon2_hash_with_separator(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nfn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..MAX_ARGS_LENGTH {\n input.add(i as Field);\n }\n let hash = input.hash();\n assert(hash == 0x1cce4dbf69f14c44865919991ee1057922e34d7310ba237d71759aa422621ca9);\n}\n\n#[test]\nfn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd\n ];\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0095b2d17ab72f4b27a341f7ac63e49ec73935ae8c9181a0ac02023eb12f3284);\n}\n\n#[test]\nfn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0083ab647dfb26e7ddee90a0f4209d049d4660cab42000c544b986aaa84c55a3);\n}\n\n#[test]\nfn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"dummy\";\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x00629e88ebd6374f44aa6cfe07e251ecf07213ebc7267e8f6b578ae57ffd6c20);\n}\n\n#[test]\nfn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"Hello this is a string\";\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0098637962f7d34fa202b7ffad8a07a238c5d1fd897b82a108f7f467fa73b841);\n}\n"},"139":{"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"},"140":{"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: Field = 24;\n\nstruct NullifierMembershipWitness {\n index: Field,\n leaf_preimage: NullifierLeafPreimage,\n path: [Field; NULLIFIER_TREE_HEIGHT],\n}\n\nimpl NullifierMembershipWitness {\n pub fn deserialize(fields: [Field; NULLIFIER_MEMBERSHIP_WITNESS]) -> Self {\n let leaf_preimage_fields = arr_copy_slice(fields, [0; NULLIFIER_LEAF_PREIMAGE_LENGTH], 1);\n Self {\n index: fields[0],\n leaf_preimage: NullifierLeafPreimage::deserialize(leaf_preimage_fields),\n path: arr_copy_slice(\n fields,\n [0; NULLIFIER_TREE_HEIGHT],\n 1 + NULLIFIER_LEAF_PREIMAGE_LENGTH\n )\n }\n }\n}\n\n#[oracle(getLowNullifierMembershipWitness)]\nunconstrained fn get_low_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\nunconstrained pub fn get_low_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_low_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n\n#[oracle(getNullifierMembershipWitness)]\nunconstrained fn get_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\nunconstrained pub fn get_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n"},"141":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/logs.nr","source":"use dep::protocol_types::{address::AztecAddress, point::Point};\n\n// = 480 + 32 * N bytes\n#[oracle(emitEncryptedNoteLog)]\nunconstrained fn emit_encrypted_note_log_oracle<let M: u32>(_note_hash_counter: u32, _encrypted_note: [u8; M], _counter: u32) {}\n\nunconstrained pub fn emit_encrypted_note_log<let M: u32>(\n note_hash_counter: u32,\n encrypted_note: [u8; M],\n counter: u32\n) {\n emit_encrypted_note_log_oracle(note_hash_counter, encrypted_note, counter)\n}\n\n#[oracle(emitEncryptedEventLog)]\nunconstrained fn emit_encrypted_event_log_oracle<let M: u32>(_contract_address: AztecAddress, _randomness: Field, _encrypted_event: [u8; M], _counter: u32) {}\n\nunconstrained pub fn emit_encrypted_event_log<let M: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n encrypted_event: [u8; M],\n counter: u32\n) {\n emit_encrypted_event_log_oracle(contract_address, randomness, encrypted_event, counter)\n}\n\n// = 480 + 32 * N bytes\n#[oracle(computeEncryptedNoteLog)]\nunconstrained fn compute_encrypted_note_log_oracle<let N: u32, let M: u32>(\n _contract_address: AztecAddress,\n _storage_slot: Field,\n _note_type_id: Field,\n _ovsk_app: Field,\n _ovpk_m: Point,\n _ivpk_m: Point,\n _recipient: AztecAddress,\n _preimage: [Field; N]\n) -> [u8; M] {}\n\nunconstrained pub fn compute_encrypted_note_log<let N: u32, let M: u32>(\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n ovsk_app: Field,\n ovpk_m: Point,\n ivpk_m: Point,\n recipient: AztecAddress,\n preimage: [Field; N]\n) -> [u8; M] {\n compute_encrypted_note_log_oracle(\n contract_address,\n storage_slot,\n note_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n recipient,\n preimage\n )\n}\n\n// = 480 + 32 * N bytes\n#[oracle(computeEncryptedEventLog)]\nunconstrained fn compute_encrypted_event_log_oracle<let N: u32, let M: u32>(\n _contract_address: AztecAddress,\n _randomness: Field,\n _event_type_id: Field,\n _ovsk_app: Field,\n _ovpk_m: Point,\n _ivpk_m: Point,\n _recipient: AztecAddress,\n _preimage: [Field; N]\n) -> [u8; M] {}\n\nunconstrained pub fn compute_encrypted_event_log<let N: u32, let M: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n event_type_id: Field,\n ovsk_app: Field,\n ovpk_m: Point,\n ivpk_m: Point,\n recipient: AztecAddress,\n preimage: [Field; N]\n) -> [u8; M] {\n compute_encrypted_event_log_oracle(\n contract_address,\n randomness,\n event_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n recipient,\n preimage\n )\n}\n\n#[oracle(emitUnencryptedLog)]\nunconstrained fn emit_unencrypted_log_oracle_private<T>(_contract_address: AztecAddress, _message: T, _counter: u32) -> Field {}\n\nunconstrained pub fn emit_unencrypted_log_private_internal<T>(\n contract_address: AztecAddress,\n message: T,\n counter: u32\n) -> Field {\n emit_unencrypted_log_oracle_private(contract_address, message, counter)\n}\n\n#[oracle(emitContractClassUnencryptedLog)]\nunconstrained fn emit_contract_class_unencrypted_log_private<let N: u32>(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32\n) -> Field {}\n\nunconstrained pub fn emit_contract_class_unencrypted_log_private_internal<let N: u32>(contract_address: AztecAddress, message: [Field; N], counter: u32) -> Field {\n emit_contract_class_unencrypted_log_private(contract_address, message, counter)\n}\n"},"143":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/returns.nr","source":"#[oracle(packReturns)]\nunconstrained fn pack_returns_oracle<let N: u32>(_returns: [Field]) -> Field {}\n\nunconstrained pub fn pack_returns(returns: [Field]) {\n let _unused = pack_returns_oracle(returns);\n}\n\n#[oracle(unpackReturns)]\nunconstrained fn unpack_returns_oracle<let N: u32>(_return_hash: Field) -> [Field; N] {}\n\nunconstrained pub fn unpack_returns<let N: u32>(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n"},"144":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_public_data_witness.nr","source":"use dep::protocol_types::{\n constants::PUBLIC_DATA_TREE_HEIGHT, public_data_tree_leaf_preimage::PublicDataTreeLeafPreimage,\n utils::arr_copy_slice\n};\n\nglobal LEAF_PREIMAGE_LENGTH: u32 = 4;\nglobal PUBLIC_DATA_WITNESS: Field = 45;\n\nstruct PublicDataWitness {\n index: Field,\n leaf_preimage: PublicDataTreeLeafPreimage,\n path: [Field; PUBLIC_DATA_TREE_HEIGHT],\n}\n\n#[oracle(getPublicDataTreeWitness)]\nunconstrained fn get_public_data_witness_oracle(\n _block_number: u32,\n _public_data_tree_index: Field\n) -> [Field; PUBLIC_DATA_WITNESS] {}\n\nunconstrained pub fn get_public_data_witness(block_number: u32, public_data_tree_index: Field) -> PublicDataWitness {\n let fields = get_public_data_witness_oracle(block_number, public_data_tree_index);\n PublicDataWitness {\n index: fields[0],\n leaf_preimage: PublicDataTreeLeafPreimage { slot: fields[1], value: fields[2], next_index: fields[3] as u32, next_slot: fields[4] },\n path: arr_copy_slice(fields, [0; PUBLIC_DATA_TREE_HEIGHT], 1 + LEAF_PREIMAGE_LENGTH)\n }\n}\n"},"145":{"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 fn get_key_validation_request(pk_m_hash: Field, key_index: Field) -> KeyValidationRequest {\n get_key_validation_request_internal(pk_m_hash, key_index)\n}\n\n"},"148":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/storage.nr","source":"use dep::protocol_types::{address::AztecAddress, traits::Deserialize};\n\n#[oracle(storageRead)]\nunconstrained fn storage_read_oracle<let N: u32>(address: Field, storage_slot: Field, block_number: Field, length: Field) -> [Field; N] {}\n\nunconstrained pub fn raw_storage_read<let N: u32>(\n address: AztecAddress,\n storage_slot: Field,\n block_number: u32\n) -> [Field; N] {\n storage_read_oracle(\n address.to_field(),\n storage_slot,\n block_number as Field,\n N as Field\n )\n}\n\nunconstrained pub fn storage_read<T, let N: u32>(\n address: AztecAddress,\n storage_slot: Field,\n block_number: u32\n) -> T where T: Deserialize<N> {\n T::deserialize(raw_storage_read(address, storage_slot, block_number))\n}\n\nmod tests {\n use crate::oracle::storage::{raw_storage_read, storage_read};\n use dep::protocol_types::address::AztecAddress;\n\n use std::test::OracleMock;\n use crate::test::mocks::mock_struct::MockStruct;\n\n global address = AztecAddress::from_field(29);\n global slot = 7;\n global block_number = 17;\n\n #[test]\n fn test_raw_storage_read() {\n let written = MockStruct { a: 13, b: 42 };\n\n let _ = OracleMock::mock(\"storageRead\").returns(written.serialize());\n\n let read: [Field; 2] = raw_storage_read(address, slot, block_number);\n assert_eq(read[0], 13);\n assert_eq(read[1], 42);\n }\n\n #[test]\n fn test_storage_read() {\n let written = MockStruct { a: 13, b: 42 };\n\n let _ = OracleMock::mock(\"storageRead\").returns(written.serialize());\n\n let read: MockStruct = storage_read(address, slot, block_number);\n assert_eq(read.a, 13);\n assert_eq(read.b, 42);\n }\n}\n"},"149":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/unsafe_rand.nr","source":"#[oracle(getRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n\n// Called `unsafe_rand` because we do not constrain in circuit that we are dealing with an actual random value.\n// Instead we just trust our PXE.\nunconstrained pub fn unsafe_rand() -> Field {\n rand_oracle()\n}\n"},"151":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; 2] {}\n\nunconstrained pub fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n"},"152":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/keys.nr","source":"use crate::keys::{PublicKeys, public_keys::{NpkM, IvpkM, OvpkM, TpkM}};\nuse dep::protocol_types::{address::{AztecAddress, PartialAddress}, point::Point};\n\n#[oracle(getPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\nunconstrained fn get_public_keys_and_partial_address_oracle_wrapper(address: AztecAddress) -> [Field; 13] {\n get_public_keys_and_partial_address_oracle(address)\n}\n\npub fn get_public_keys_and_partial_address(address: AztecAddress) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle_wrapper(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"},"154":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/notes.nr","source":"use crate::note::{note_header::NoteHeader, note_interface::NoteInterface};\n\nuse dep::protocol_types::{address::AztecAddress, utils::arr_copy_slice};\n\n#[oracle(notifyCreatedNote)]\nunconstrained fn notify_created_note_oracle<let N: u32>(\n _storage_slot: Field,\n _note_type_id: Field,\n _serialized_note: [Field; N],\n _note_hash: Field,\n _counter: u32\n) -> Field {}\n\nunconstrained pub fn notify_created_note<let N: u32>(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32\n) -> Field {\n notify_created_note_oracle(storage_slot, note_type_id, serialized_note, note_hash, counter)\n}\n\n#[oracle(notifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle<let N: u32>(_nullifier: Field, _note_hash: Field, _counter: u32) -> Field {}\n\nunconstrained pub fn notify_nullified_note<let N: u32>(\n nullifier: Field,\n note_hash: Field,\n counter: u32\n) -> Field {\n notify_nullified_note_oracle(nullifier, note_hash, counter)\n}\n\n#[oracle(getNotes)]\nunconstrained fn get_notes_oracle<let N: u32, let S: u32>(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; N],\n _select_by_offsets: [u8; N],\n _select_by_lengths: [u8; N],\n _select_values: [Field; N],\n _select_comparators: [u8; N],\n _sort_by_indexes: [u8; N],\n _sort_by_offsets: [u8; N],\n _sort_by_lengths: [u8; N],\n _sort_order: [u8; N],\n _limit: u32,\n _offset: u32,\n _status: u8,\n _return_size: u32,\n _placeholder_fields: [Field; S]\n) -> [Field; S] {}\n\nunconstrained fn get_notes_oracle_wrapper<let N: u32, let S: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; N],\n select_by_offsets: [u8; N],\n select_by_lengths: [u8; N],\n select_values: [Field; N],\n select_comparators: [u8; N],\n sort_by_indexes: [u8; N],\n sort_by_offsets: [u8; N],\n sort_by_lengths: [u8; N],\n sort_order: [u8; N],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_fields: [Field; S]\n) -> [Field; S] {\n let return_size = placeholder_fields.len() as u32;\n get_notes_oracle(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n return_size,\n placeholder_fields\n )\n}\n\nunconstrained pub fn get_notes<Note, let N: u32, let NB: 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, NB> {\n let fields = get_notes_oracle_wrapper(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n placeholder_fields\n );\n let num_notes = fields[0] as u32;\n let contract_address = AztecAddress::from_field(fields[1]);\n for i in 0..placeholder_opt_notes.len() {\n if i < num_notes {\n // lengths named as per typescript.\n let return_header_length: u32 = 2; // num_notes & contract_address.\n let extra_preimage_length: u32 = 2; // nonce & note_hash_counter.\n let read_offset: u32 = return_header_length + i * (N + extra_preimage_length);\n let nonce = fields[read_offset];\n let note_hash_counter = fields[read_offset + 1] as u32;\n let header = NoteHeader { contract_address, nonce, storage_slot, note_hash_counter };\n let serialized_note = arr_copy_slice(fields, [0; N], read_offset + 2);\n let mut note = Note::deserialize_content(serialized_note);\n note.set_header(header);\n placeholder_opt_notes[i] = Option::some(note);\n };\n }\n placeholder_opt_notes\n}\n\n// Only ever use this in private!\n#[oracle(checkNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> Field {}\n\n// Only ever use this in private!\nunconstrained pub fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier) == 1\n}\n"},"155":{"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, utils::arr_copy_slice,\n constants::CONTRACT_INSTANCE_LENGTH, utils::reader::Reader\n};\n\n#[oracle(getContractInstance)]\nunconstrained fn get_contract_instance_oracle(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {}\n\n// Returns a ContractInstance plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstance)]\nunconstrained fn get_contract_instance_oracle_avm(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {}\n\nunconstrained fn get_contract_instance_internal(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n get_contract_instance_oracle(address)\n}\n\nunconstrained pub fn get_contract_instance_internal_avm(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {\n get_contract_instance_oracle_avm(address)\n}\n\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n let instance = ContractInstance::deserialize(get_contract_instance_internal(address));\n assert(instance.to_address().eq(address));\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"},"156":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr","source":"use dep::protocol_types::{abis::{function_selector::FunctionSelector}, address::AztecAddress};\n\n#[oracle(enqueuePublicFunctionCall)]\nunconstrained fn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) {}\n\nunconstrained pub fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nunconstrained fn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) {}\n\nunconstrained pub fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n}\n\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n\nunconstrained pub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n"},"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\nunconstrained pub fn get_contract_address() -> AztecAddress {\n get_contract_address_oracle()\n}\n\nunconstrained pub fn get_block_number() -> u32 {\n get_block_number_oracle()\n}\n\nunconstrained pub fn get_chain_id() -> Field {\n get_chain_id_oracle()\n}\n\nunconstrained pub fn get_version() -> Field {\n get_version_oracle()\n}\n"},"161":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/map.nr","source":"use dep::protocol_types::{storage::map::derive_storage_slot_in_map, traits::ToField};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:map\nstruct Map<K, V, Context> {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\nimpl<K, T, Context> Storage<T> for Map<K, T, Context> {}\n\nimpl<K, V, Context> Map<K, V, Context> {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Map { context, storage_slot, state_var_constructor }\n }\n // docs:end:new\n\n // docs:start:at\n pub fn at(self, key: K) -> V where K: ToField {\n // TODO(#1204): use a generator index for the storage slot\n let derived_storage_slot = derive_storage_slot_in_map(self.storage_slot, key);\n\n let state_var_constructor = self.state_var_constructor;\n state_var_constructor(self.context, derived_storage_slot)\n }\n // docs:end:at\n}\n"},"163":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/public_mutable.nr","source":"use crate::context::{PublicContext, UnconstrainedContext};\nuse crate::oracle::storage::storage_read;\nuse dep::protocol_types::traits::{Deserialize, Serialize};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:public_mutable_struct\nstruct PublicMutable<T, Context> {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:public_mutable_struct\n\nimpl<T, Context> Storage<T> for PublicMutable<T, Context> {}\n\nimpl<T, Context> PublicMutable<T, Context> {\n // docs:start:public_mutable_struct_new\n pub fn new(\n // Note: Passing the contexts to new(...) just to have an interface compatible with a Map.\n context: Context,\n storage_slot: Field\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n PublicMutable { context, storage_slot }\n }\n // docs:end:public_mutable_struct_new\n}\n\nimpl<T, T_SERIALIZED_LEN> PublicMutable<T, &mut PublicContext> where T: Serialize<T_SERIALIZED_LEN> + Deserialize<T_SERIALIZED_LEN> {\n // docs:start:public_mutable_struct_read\n pub fn read(self) -> T {\n self.context.storage_read(self.storage_slot)\n }\n // docs:end:public_mutable_struct_read\n\n // docs:start:public_mutable_struct_write\n pub fn write(self, value: T) {\n self.context.storage_write(self.storage_slot, value);\n }\n // docs:end:public_mutable_struct_write\n}\n\nimpl<T, T_SERIALIZED_LEN> PublicMutable<T, UnconstrainedContext> where T: Deserialize<T_SERIALIZED_LEN> {\n unconstrained pub fn read(self) -> T {\n self.context.storage_read(self.storage_slot)\n }\n}\n"},"179":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr","source":"use dep::protocol_types::{\n address::AztecAddress, constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n hash::poseidon2_hash_with_separator\n};\n\nuse crate::context::{PrivateContext, UnconstrainedContext};\nuse crate::note::{\n lifecycle::create_note, note_getter::{get_note, view_notes}, note_interface::NoteInterface,\n note_viewer_options::NoteViewerOptions, note_emission::NoteEmission\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\nstruct 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<N, M>(\n self,\n note: &mut Note\n ) -> NoteEmission<Note> where Note: NoteInterface<N, M> {\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<N, M>(self) -> Note where Note: NoteInterface<N, M> {\n let storage_slot = self.storage_slot;\n get_note(self.context, storage_slot).0\n }\n // docs:end:get_note\n}\n\nimpl<Note> PrivateImmutable<Note, UnconstrainedContext> {\n // docs:start:is_initialized\n unconstrained pub fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // view_note does not actually use the context, but it calls oracles that are only available in private\n // docs:start:view_note\n unconstrained pub fn view_note<N, M>(self) -> Note where Note: NoteInterface<N, M> {\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"},"181":{"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 = pk.x.to_be_bytes(32);\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.as_array()\n}\n\nmod test {\n use dep::protocol_types::point::Point;\n use crate::utils::point::point_to_bytes;\n\n #[test]\n 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 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"},"198":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use crate::{constants::KEY_VALIDATION_REQUEST_LENGTH, traits::{Empty, Serialize, Deserialize}, point::Point};\n\nstruct KeyValidationRequest {\n pk_m: Point,\n sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m))\n & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest {\n pk_m: Point::empty(),\n sk_app: 0,\n }\n }\n}\n\nimpl Serialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [\n self.pk_m.x,\n self.pk_m.y,\n self.pk_m.is_infinite as Field,\n self.sk_app,\n ]\n }\n}\n\nimpl Deserialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self {\n pk_m: Point { x:fields[0], y: fields[1], is_infinite: fields[2] as bool},\n sk_app: fields[3],\n }\n }\n}\n\n"},"2":{"path":"std/array.nr","source":"use crate::cmp::Ord;\nuse crate::option::Option;\nuse crate::convert::From;\n\nimpl<T, let N: u32> [T; N] {\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n pub fn sort(self) -> Self where T: Ord {\n self.sort_via(|a: T, b: T| a <= b)\n }\n\n pub fn sort_via<Env>(self, ordering: fn[Env](T, T) -> bool) -> Self {\n let sorted_index = unsafe {\n // Safety: These indices are asserted to be the sorted element indices via `find_index`\n let sorted_index: [u32; N] = self.get_sorting_index(ordering);\n\n for i in 0..N {\n let pos = find_index(sorted_index, i);\n assert(sorted_index[pos] == i);\n }\n\n sorted_index\n };\n\n // Sort the array using the indexes\n let mut result = self;\n for i in 0..N {\n result[i] = self[sorted_index[i]];\n }\n // Ensure the array is sorted\n for i in 0..N - 1 {\n assert(ordering(result[i], result[i + 1]));\n }\n\n result\n }\n\n /// Returns the index of the elements in the array that would sort it, using the provided custom sorting function.\n unconstrained fn get_sorting_index<Env>(self, ordering: fn[Env](T, T) -> bool) -> [u32; N] {\n let mut result = [0; N];\n let mut a = self;\n for i in 0..N {\n result[i] = i;\n }\n for i in 1..N {\n for j in 0..i {\n if ordering(a[i], a[j]) {\n let old_a_j = a[j];\n a[j] = a[i];\n a[i] = old_a_j;\n let old_j = result[j];\n result[j] = result[i];\n result[i] = old_j;\n }\n }\n }\n result\n }\n\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n // Apply a function to each element of an array, returning a new array\n // containing the mapped elements.\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 // Apply a function to each element of the array and an accumulator value,\n // returning the final accumulated value. This function is also sometimes\n // called `foldl`, `fold_left`, `reduce`, or `inject`.\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 // Apply a function to each element of the array and an accumulator value,\n // returning the final accumulated value. Unlike fold, reduce uses the first\n // element of the given array as its starting accumulator value.\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 elements in the array satisfy the predicate\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 element in the array satisfies the predicate\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<let N: u32> [u8; N] {\n /// Convert a sequence of bytes as-is into a string.\n /// This function performs no UTF-8 validation or similar.\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str<N> {}\n}\n\n// helper function used to look up the position of a value in an array of Field\n// Note that function returns 0 if the value is not found\nunconstrained fn find_index<let N: u32>(a: [u32; N], find: u32) -> u32 {\n let mut result = 0;\n for i in 0..a.len() {\n if a[i] == find {\n result = i;\n }\n }\n result\n}\n\nimpl<let N: u32> From<str<N>> for [u8; N] {\n fn from(s: str<N>) -> Self {\n s.as_bytes()\n }\n}\n"},"213":{"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\nstruct NullifierLeafPreimage {\n nullifier : Field,\n next_nullifier :Field,\n next_index : u32,\n}\n\nimpl Empty for NullifierLeafPreimage {\n fn empty() -> Self {\n Self {\n nullifier : 0,\n next_nullifier : 0,\n next_index : 0,\n }\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 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"},"22":{"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.\nstruct EmbeddedCurvePoint {\n x: Field,\n y: Field,\n is_infinite: bool\n}\n\nimpl EmbeddedCurvePoint {\n /// Elliptic curve point doubling operation\n /// returns the doubled point of a point P, i.e P+P\n fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n /// Returns the null element of the curve; 'the point at infinity'\n fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n /// Adds two points P+Q, using the curve addition formula, and also handles point at infinity\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint { \n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n /// Points subtraction operation, using addition and negation\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint { \n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n /// Negates a point P, i.e returns -P, by negating the y coordinate.\n /// If the point is at infinity, then the result is also at infinity.\n fn neg(self) -> EmbeddedCurvePoint { \n EmbeddedCurvePoint {\n x: self.x,\n y: -self.y,\n is_infinite: self.is_infinite\n }\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) | ((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.\nstruct EmbeddedCurveScalar {\n lo: Field,\n hi: Field,\n}\n\nimpl EmbeddedCurveScalar {\n pub fn new(lo: Field, hi: Field) -> Self {\n EmbeddedCurveScalar { lo, hi }\n }\n\n #[field(bn254)]\n fn from_field(scalar: Field) -> EmbeddedCurveScalar {\n let (a,b) = crate::field::bn254::decompose(scalar);\n EmbeddedCurveScalar { lo: a, hi: b }\n }\n}\n\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 is a hack as 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\nfn embedded_curve_add(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint\n) -> EmbeddedCurvePoint\n// docs:end:embedded_curve_add\n{\n let point_array = embedded_curve_add_array_return(point1, point2);\n let x = point_array[0];\n let y = point_array[1];\n EmbeddedCurvePoint { x, y, is_infinite: point_array[2] == 1 }\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(_point1: EmbeddedCurvePoint, _point2: EmbeddedCurvePoint) -> [Field; 3] {}\n"},"23":{"path":"std/field/bn254.nr","source":"use crate::runtime::is_unconstrained;\n\n// The low and high decomposition of the field modulus\nglobal PLO: Field = 53438638232309528389504892708671455233;\nglobal PHI: Field = 64323764613183177041862057485226039389;\n\nglobal TWO_POW_128: Field = 0x100000000000000000000000000000000;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(x: Field) -> (Field, Field) {\n let x_bytes = x.to_le_bytes(32);\n\n let mut low: Field = 0;\n let mut high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n low += (x_bytes[i] as Field) * offset;\n high += (x_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n\n (low, high)\n}\n\nunconstrained pub(crate) fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nfn compute_lt(x: Field, y: Field, num_bytes: u32) -> bool {\n let x_bytes = x.to_le_radix(256, num_bytes);\n let y_bytes = y.to_le_radix(256, num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i];\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_hint, decompose, compute_lt, assert_gt, gt, lt, 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"},"24":{"path":"std/field/mod.nr","source":"mod bn254;\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n pub fn to_le_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_le_bits(bit_size)\n }\n\n pub fn to_be_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_be_bits(bit_size)\n }\n\n #[builtin(to_le_bits)]\n fn __to_le_bits(self, _bit_size: u32) -> [u1] {}\n\n #[builtin(to_be_bits)]\n fn __to_be_bits(self, bit_size: u32) -> [u1] {}\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n pub fn assert_max_bit_size(self: Self, bit_size: u32) {\n crate::assert_constant(bit_size);\n assert(bit_size < modulus_num_bits() as u32);\n self.__assert_max_bit_size(bit_size);\n }\n\n pub fn to_le_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_le_radix(256, byte_size)\n }\n\n pub fn to_be_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_be_radix(256, byte_size)\n }\n\n pub fn to_le_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_le_radix(radix, result_len)\n }\n\n pub fn to_be_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_be_radix(radix, result_len)\n }\n\n // decompose `_self` into a `_result_len` vector over the `_radix` basis\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix(self, radix: u32, result_len: u32) -> [u8] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix(self, radix: u32, result_len: u32) -> [u8] {}\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b = exponent.to_le_bits(32);\n\n for i in 1..33 {\n r *= r;\n r = (b[32-i] as Field) * (r * self) + (1 - b[32-i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x ∈ {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n}\n\n#[builtin(modulus_num_bits)]\npub comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n let num_bytes = (modulus_num_bits() as u32 + 7) / 8;\n let x_bytes = x.to_le_bytes(num_bytes);\n let y_bytes = y.to_le_bytes(num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i] as u8;\n let y_byte = y_bytes[num_bytes - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\n"},"248":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/storage/map.nr","source":"use crate::{hash::pedersen_hash, traits::ToField};\n\npub fn derive_storage_slot_in_map<K>(storage_slot: Field, key: K) -> Field where K: ToField {\n pedersen_hash([storage_slot, key.to_field()], 0)\n}\n\nmod test {\n use crate::{address::AztecAddress, storage::map::derive_storage_slot_in_map};\n\n #[test]\n fn test_derive_storage_slot_in_map_matches_typescript() {\n let map_slot = 0x132258fb6962c4387ba659d9556521102d227549a386d39f0b22d1890d59c2b5;\n let key = AztecAddress::from_field(0x302dbc2f9b50a73283d5fb2f35bc01eae8935615817a0b4219a057b2ba8a5a3f);\n\n let slot = derive_storage_slot_in_map(map_slot, key);\n\n // The following value was generated by `map_slot.test.ts`\n let slot_from_typescript = 0x2499880e2b1b831785c17286f99a0d5122fee784ce7b1c04e380c4a991da819a;\n\n assert_eq(slot, slot_from_typescript);\n }\n}\n"},"254":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr","source":"use 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.\ntrait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field { fn empty() -> Self {0} }\n\nimpl Empty for u1 { fn empty() -> Self {0} }\nimpl Empty for u8 { fn empty() -> Self {0} }\nimpl Empty for u32 { fn empty() -> Self {0} }\nimpl Empty for u64 { fn empty() -> Self {0} }\nimpl Empty for U128 { fn empty() -> Self {U128::from_integer(0)} }\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\ntrait Hash {\n fn hash(self) -> Field;\n}\n\ntrait 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 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u1 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u8 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u32 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u64 { fn to_field(self) -> Field { self as Field } }\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\ntrait 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 { fn from_field(value: Field) -> Self { value as bool } }\nimpl FromField for u1 { fn from_field(value: Field) -> Self { value as u1 } }\nimpl FromField for u8 { fn from_field(value: Field) -> Self { value as u8 } }\nimpl FromField for u32 { fn from_field(value: Field) -> Self { value as u32 } }\nimpl FromField for u64 { fn from_field(value: Field) -> Self { value as u64 } }\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\ntrait Serialize<let N: u32> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl<let N: u32> Serialize<N> for [Field; N] {\n fn serialize(self) -> [Field; N] {\n self\n }\n}\nimpl<let N: u32> Serialize<N> for str<N> {\n fn serialize(self) -> [Field; N] {\n let mut result = [0; N];\n let bytes: [u8; N] = self.as_bytes();\n for i in 0..N {\n result[i] = field_from_bytes([bytes[i];1], true);\n }\n result\n }\n}\n\n// docs:start:deserialize\ntrait Deserialize<let N: u32> {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl<let N: u32> Deserialize<N> for [Field; N] {\n fn deserialize(fields: [Field; N]) -> Self {\n fields\n }\n}\n"},"255":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr","source":"// Utility function to console.log data in the acir simulator\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n\n#[oracle(debugLog)]\nunconstrained fn debug_log_oracle<let M: u32>(_msg: str<M>, args: [Field]) {}\n\n/// NOTE: call this with a str<N> msg of form\n/// \"some string with {0} and {1} ... {N}\"\n/// and an array of N field which will be formatted\n/// into the string in the simulator.\n/// Example:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\nunconstrained pub fn debug_log_format<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n/// NOTE: call this with a str<N> msg of length > 1\n/// Example:\n/// `debug_log(\"blah blah this is a debug string\");`\nunconstrained pub fn debug_log<let N: u32>(msg: str<N>) {\n debug_log_format(msg, []);\n}\n"},"258":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/public_data_tree_leaf_preimage.nr","source":"use crate::{merkle_tree::leaf_preimage::IndexedTreeLeafPreimage, traits::{Empty, Hash}};\n\nstruct PublicDataTreeLeafPreimage {\n slot : Field,\n value: Field,\n next_slot :Field,\n next_index : u32,\n}\n\nimpl Empty for PublicDataTreeLeafPreimage {\n fn empty() -> Self {\n Self {\n slot: 0,\n value: 0,\n next_slot: 0,\n next_index: 0,\n }\n }\n}\n\nimpl Hash for PublicDataTreeLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n crate::hash::poseidon2_hash([self.slot, self.value, (self.next_index as Field), self.next_slot])\n }\n }\n}\n\nimpl IndexedTreeLeafPreimage for PublicDataTreeLeafPreimage {\n fn get_key(self) -> Field {\n self.slot\n }\n\n fn get_next_key(self) -> Field {\n self.next_slot\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl PublicDataTreeLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.slot == 0) & (self.value == 0) & (self.next_slot == 0) & (self.next_index == 0)\n }\n}\n"},"260":{"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, point::Point\n};\n\npub fn sha256_to_field<let N: u32>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = std::hash::sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\nfn compute_note_hash_nonce(tx_hash: Field, note_index_in_tx: u32) -> Field {\n // Hashing tx hash with note index in tx is guaranteed to be unique\n poseidon2_hash_with_separator(\n [\n tx_hash,\n note_index_in_tx as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n let inputs = [nonce, note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, unique_note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n app.to_field(),\n unique_note_hash\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash, tx_hash: Field, note_index_in_tx: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(tx_hash, note_index_in_tx);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n app.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn silo_encrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n // We assume contract address has already been masked\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n accumulate_sha256([log_hash.contract_address.to_field(), log_hash.log_hash.value])\n }\n}\n\npub fn mask_encrypted_log_hash(scoped_log: ScopedEncryptedLogHash) -> AztecAddress {\n if scoped_log.contract_address.is_zero() {\n AztecAddress::from_field(0)\n } else if (scoped_log.log_hash.randomness == 0) {\n scoped_log.contract_address\n } else {\n AztecAddress::from_field(\n poseidon2_hash_with_separator(\n [scoped_log.contract_address.to_field(), scoped_log.log_hash.randomness],\n 0\n )\n )\n }\n}\n\nfn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs = [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes = inputs[i].to_be_bytes(32);\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\npub fn silo_l2_to_l1_message(msg: ScopedL2ToL1Message, rollup_version_id: Field, chain_id: Field) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually\n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field\n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes = input[offset].to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\n// NB: this assumes MAX_ENCRYPTED_LOGS_PER_TX == MAX_UNENCRYPTED_LOGS_PER_TX\n// to avoid doubling code, since we can't define the byte len to be 32*N directly.\npub fn compute_tx_logs_hash(logs: [LogHash; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn compute_tx_note_logs_hash(logs: [LogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_NOTE_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn pedersen_hash<let N: u32>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<let N: u32>(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[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 pedersen_commitment<let N: u32>(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\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"},"266":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/point.nr","source":"use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{traits::{Empty, Hash, Serialize}, hash::poseidon2_hash};\n\nglobal POINT_LENGTH: Field = 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 {\n x: 0,\n y: 0,\n is_infinite: false\n }\n }\n}\n"},"267":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr","source":"use crate::{\n address::{\n aztec_address::AztecAddress, eth_address::EthAddress, partial_address::PartialAddress,\n public_keys_hash::PublicKeysHash\n},\n contract_class_id::ContractClassId,\n constants::{GENERATOR_INDEX__CONTRACT_DEPLOYMENT_DATA, CONTRACT_INSTANCE_LENGTH},\n traits::{Deserialize, Hash, Serialize}\n};\n\nstruct ContractInstance {\n salt : Field,\n deployer: AztecAddress,\n contract_class_id : ContractClassId,\n initialization_hash : Field,\n public_keys_hash : PublicKeysHash,\n}\n\nimpl Eq for ContractInstance {\n fn eq(self, other: Self) -> bool {\n self.public_keys_hash.eq(other.public_keys_hash) &\n self.initialization_hash.eq(other.initialization_hash) &\n self.contract_class_id.eq(other.contract_class_id) &\n self.salt.eq(other.salt)\n }\n}\n\nimpl Serialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn serialize(self) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n [\n self.salt,\n self.deployer.to_field(),\n self.contract_class_id.to_field(),\n self.initialization_hash,\n self.public_keys_hash.to_field()\n ]\n }\n}\n\nimpl Deserialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn deserialize(serialized: [Field; CONTRACT_INSTANCE_LENGTH]) -> Self {\n Self {\n salt: serialized[0],\n deployer: AztecAddress::from_field(serialized[1]),\n contract_class_id: ContractClassId::from_field(serialized[2]),\n initialization_hash: serialized[3],\n public_keys_hash: PublicKeysHash::from_field(serialized[4]),\n }\n }\n}\n\nimpl Hash for ContractInstance {\n fn hash(self) -> Field {\n self.to_address().to_field()\n }\n}\n\nimpl ContractInstance {\n fn to_address(self) -> AztecAddress {\n AztecAddress::compute(\n self.public_keys_hash,\n PartialAddress::compute(\n self.contract_class_id,\n self.salt,\n self.initialization_hash,\n self.deployer\n )\n )\n }\n}\n"},"27":{"path":"std/hash/mod.nr","source":"mod poseidon;\nmod mimc;\nmod poseidon2;\nmod keccak;\nmod sha256;\nmod sha512;\n\nuse crate::default::Default;\nuse crate::uint128::U128;\nuse crate::collections::vec::Vec;\nuse crate::embedded_curve_ops::{EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_slice};\nuse crate::meta::derive_via;\n\n// Kept for backwards compatibility\nuse sha256::{digest, sha256, sha256_compression, sha256_var};\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment<let N: u32>(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\npub fn pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {\n __pedersen_hash_with_separator(input, separator)\n}\n\nfn pedersen_commitment_with_separator<let N: u32>(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let value = __pedersen_commitment_with_separator(input, separator);\n if (value[0] == 0) & (value[1] == 0) {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n } else {\n EmbeddedCurvePoint { x: value[0], y: value[1], is_infinite: false }\n }\n}\n\n#[no_predicates]\nfn pedersen_commitment_with_separator_noir<let N: u32>(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n#[no_predicates]\nfn pedersen_hash_with_separator_noir<let N: u32>(input: [Field; N], separator: u32) -> Field {\n let mut scalars: Vec<EmbeddedCurveScalar> = Vec::from_slice([EmbeddedCurveScalar { lo: 0, hi: 0 }; N].as_slice()); //Vec::new();\n\n for i in 0..N {\n scalars.set(i, from_field_unsafe(input[i]));\n }\n scalars.push(EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field });\n let domain_generators :[EmbeddedCurvePoint; N]= derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n let mut vec_generators = Vec::new();\n for i in 0..N {\n vec_generators.push(domain_generators[i]);\n }\n let length_generator : [EmbeddedCurvePoint; 1] = derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n vec_generators.push(length_generator[0]);\n multi_scalar_mul_slice(vec_generators.slice, scalars.slice)[0]\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash<let N: u32>(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n __pedersen_hash_with_separator(input, 0)\n}\n\n#[foreign(pedersen_hash)]\nfn __pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {}\n\n#[foreign(pedersen_commitment)]\nfn __pedersen_commitment_with_separator<let N: u32>(input: [Field; N], separator: u32) -> [Field; 2] {}\n\n#[field(bn254)]\nfn derive_generators<let N: u32, let M: u32>(domain_separator_bytes: [u8; M], starting_index: u32) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators<let N: u32, let M: u32>(\n domain_separator_bytes: [u8; M],\n starting_index: u32\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n // Same as from_field but:\n // does not assert the limbs are 128 bits\n // does not assert the decomposition does not overflow the EmbeddedCurveScalar\n fn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n let (xlo, xhi) = unsafe {\n crate::field::bn254::decompose_hint(scalar)\n };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes(32).as_array();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n// docs:start:keccak256\npub fn keccak256<let N: u32>(input: [u8; N], message_size: u32) -> [u8; 32]\n// docs:end:keccak256\n{\n crate::hash::keccak::keccak256(input, message_size)\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation<let N: u32>(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support. \n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\ntrait 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.)\ntrait Hasher{\n fn finish(self) -> Field;\n \n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\ntrait BuildHasher<H> where H: Hasher{\n fn build_hasher(self) -> H;\n}\n\nstruct BuildHasherDefault<H>;\n\nimpl<H> BuildHasher<H> for BuildHasherDefault<H>\nwhere \n H: Hasher + Default\n{\n fn build_hasher(_self: Self) -> H{\n H::default()\n }\n}\n\nimpl<H> Default for BuildHasherDefault<H>\nwhere \n H: Hasher + Default\n{\n fn default() -> Self{\n BuildHasherDefault{}\n } \n}\n\nimpl Hash for Field {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash<H>(_self: Self, _state: &mut H) where H: Hasher {}\n}\n\nimpl Hash for U128 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self.lo as Field);\n H::write(state, self.hi as Field);\n }\n}\n\nimpl<T, let N: u32> Hash for [T; N] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<T> Hash for [T] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<A, B> Hash for (A, B) where A: Hash, B: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl<A, B, C> Hash for (A, B, C) where A: Hash, B: Hash, C: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl<A, B, C, D> Hash for (A, B, C, D) where A: Hash, B: Hash, C: Hash, D: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl<A, B, C, D, E> Hash for (A, B, C, D, E) where A: Hash, B: Hash, C: Hash, D: Hash, E: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1), 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1), EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false\n }\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2), 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2), EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3), 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3), EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4), 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4), EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5), 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5), EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6), 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6), EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7), 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7), EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false\n }\n );\n}\n\n"},"279":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/merkle_tree/root.nr","source":"use crate::{hash::merkle_hash, merkle_tree::merkle_tree::MerkleTree};\n\n// Calculate the Merkle tree root from the sibling path and leaf.\n//\n// The leaf is hashed with its sibling, and then the result is hashed\n// with the next sibling etc in the path. The last hash is the root.\n//\n// TODO(David/Someone): The cpp code is using a uint256, whereas its\n// TODO a bit simpler in Noir to just have a bit array.\n// TODO: I'd generally like to avoid u256 for algorithms like \n// this because it means we never even need to consider cases where \n// the index is greater than p.\npub fn root_from_sibling_path<let N: u32>(\n leaf: Field,\n leaf_index: Field,\n sibling_path: [Field; N]\n) -> Field {\n let mut node = leaf;\n let indices = leaf_index.to_le_bits(N);\n\n for i in 0..N {\n let (hash_left, hash_right) = if indices[i] == 1 {\n (sibling_path[i], node)\n } else {\n (node, sibling_path[i])\n };\n node = merkle_hash(hash_left, hash_right);\n }\n node\n}\n\npub fn calculate_subtree_root<let N: u32>(leaves: [Field; N]) -> Field {\n MerkleTree::new(leaves).get_root()\n}\n\n// These values are precomputed and we run tests to ensure that they\n// are correct. The values themselves were computed from the cpp code.\n//\n// Would be good if we could use width since the compute_subtree\n// algorithm uses depth.\npub fn calculate_empty_tree_root(depth: u32) -> Field {\n if depth == 0 {\n 0\n } else if depth == 1 {\n 0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1\n } else if depth == 2 {\n 0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290\n } else if depth == 3 {\n 0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20\n } else if depth == 4 {\n 0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e\n } else if depth == 5 {\n 0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf\n } else if depth == 6 {\n 0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76\n } else if depth == 7 {\n 0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b\n } else if depth == 8 {\n 0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1\n } else if depth == 9 {\n 0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972\n } else if depth == 10 {\n 0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686\n } else {\n assert(false, \"depth should be between 0 and 10\");\n 0\n }\n}\n\n#[test]\nfn test_merkle_root_interop_test() {\n // This is a test to ensure that we match the cpp implementation.\n // You can grep for `TEST_F(root_rollup_tests, noir_interop_test)`\n // to find the test that matches this.\n let root = calculate_subtree_root([1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]);\n assert(0x1a09d935ae110b4c861fcec8f9099ec30b4485022aeb3d3cf9d7168e38fdc231 == root);\n\n let empty_root = calculate_subtree_root([0; 16]);\n assert(0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e == empty_root);\n}\n\n#[test]\nfn test_empty_subroot() {\n assert(calculate_empty_tree_root(0) == 0);\n\n let expected_empty_root_2 = calculate_subtree_root([0; 2]);\n assert(calculate_empty_tree_root(1) == expected_empty_root_2);\n\n let expected_empty_root_4 = calculate_subtree_root([0; 4]);\n assert(calculate_empty_tree_root(2) == expected_empty_root_4);\n\n let expected_empty_root_8 = calculate_subtree_root([0; 8]);\n assert(calculate_empty_tree_root(3) == expected_empty_root_8);\n\n let expected_empty_root_16 = calculate_subtree_root([0; 16]);\n assert(calculate_empty_tree_root(4) == expected_empty_root_16);\n\n let expected_empty_root_32 = calculate_subtree_root([0; 32]);\n assert(calculate_empty_tree_root(5) == expected_empty_root_32);\n\n let expected_empty_root_64 = calculate_subtree_root([0; 64]);\n assert(calculate_empty_tree_root(6) == expected_empty_root_64);\n\n let expected_empty_root_128 = calculate_subtree_root([0; 128]);\n assert(calculate_empty_tree_root(7) == expected_empty_root_128);\n\n let expected_empty_root_256 = calculate_subtree_root([0; 256]);\n assert(calculate_empty_tree_root(8) == expected_empty_root_256);\n\n let expected_empty_root_512 = calculate_subtree_root([0; 512]);\n assert(calculate_empty_tree_root(9) == expected_empty_root_512);\n\n let expected_empty_root_1024 = calculate_subtree_root([0; 1024]);\n assert(calculate_empty_tree_root(10) == expected_empty_root_1024);\n}\n"},"283":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"struct Reader<let N: u32> {\n data: [Field; N],\n offset: u32,\n}\n\nimpl<let N: u32> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array<let K: u32>(&mut self, mut result: [Field; K]) -> [Field; K] {\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n // TODO(#4394)\n pub fn read_struct<T, let K: u32>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array<T, let K: u32, let C: u32>(&mut self, deserialise: fn([Field; K]) -> T, mut result: [T; C]) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n"},"304":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr","source":"pub fn field_from_bytes<let N: u32>(bytes: [u8; N], big_endian: bool) -> Field {\n assert(bytes.len() < 32, \"field_from_bytes: N must be less than 32\");\n let mut as_field = 0;\n let mut offset = 1;\n for i in 0..N {\n let mut index = i;\n if big_endian {\n index = N - i - 1;\n }\n as_field += (bytes[index] as Field) * offset;\n offset *= 256;\n }\n\n as_field\n}\n\n// Convert a 32 byte array to a field element by truncating the final byte\npub fn field_from_bytes_32_trunc(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..15 {\n // covers bytes 16..30 (31 is truncated and ignored)\n low = low + (bytes32[15 + 15 - i] as Field) * v;\n v = v * 256;\n // covers bytes 0..14\n high = high + (bytes32[14 - i] as Field) * v;\n }\n // covers byte 15\n low = low + (bytes32[15] as Field) * v;\n\n low + high * v\n}\n\n// TODO to radix returns u8, so we cannot use bigger radixes. It'd be ideal to use a radix of the maximum range-constrained integer noir supports\npub fn full_field_less_than(lhs: Field, rhs: Field) -> bool {\n lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\n#[test]\nunconstrained fn bytes_field_test() {\n // Tests correctness of field_from_bytes_32_trunc against existing methods\n // Bytes representing 0x543e0a6642ffeb8039296861765a53407bba62bd1c97ca43374de950bbe0a7\n let inputs = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167\n ];\n let field = field_from_bytes(inputs, true);\n let return_bytes = field.to_be_bytes(31);\n for i in 0..31 {\n assert_eq(inputs[i], return_bytes[i]);\n }\n // 32 bytes - we remove the final byte, and check it matches the field\n let inputs2 = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167, 158\n ];\n let field2 = field_from_bytes_32_trunc(inputs2);\n let return_bytes2 = field.to_be_bytes(31);\n\n for i in 0..31 {\n assert_eq(return_bytes2[i], return_bytes[i]);\n }\n assert_eq(field2, field);\n}\n\n#[test]\nunconstrained fn max_field_test() {\n // Tests the hardcoded value in constants.nr vs underlying modulus\n // NB: We can't use 0-1 in constants.nr as it will be transpiled incorrectly to ts and sol constants files\n let max_value = crate::constants::MAX_FIELD_VALUE;\n assert_eq(max_value, 0 - 1);\n // modulus == 0 is tested elsewhere, so below is more of a sanity check\n let max_bytes = max_value.to_be_bytes(32);\n let mod_bytes = std::field::modulus_be_bytes();\n for i in 0..31 {\n assert_eq(max_bytes[i], mod_bytes[i]);\n }\n assert_eq(max_bytes[31], mod_bytes[31] - 1);\n}\n"},"306":{"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"},"318":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n crate::address::{eth_address::EthAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n contract_class_id::ContractClassId, hash::poseidon2_hash_with_separator,\n traits::{Empty, FromField, ToField, Serialize, Deserialize}, utils\n};\n\n// Aztec address\nstruct AztecAddress {\n inner : Field\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n poseidon2_hash_with_separator(\n [pub_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1\n )\n )\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys_hash() {\n let pub_keys_hash = PublicKeysHash::from_field(1);\n let partial_address = PartialAddress::from_field(2);\n\n let address = AztecAddress::compute(pub_keys_hash, partial_address);\n let expected_computed_address_from_partial_and_pubkey = 0x23ce9be3fa3c846b0f9245cc796902e731d04f086e8a42473bb29e405fc98075;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n"},"32":{"path":"std/hash/poseidon2.nr","source":"use crate::hash::Hasher;\nuse crate::default::Default;\n\ncomptime global RATE: u32 = 3;\n\nstruct Poseidon2 {\n cache: [Field;3],\n state: [Field;4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n #[no_predicates]\n pub fn hash<let N: u32>(input: [Field; N], message_size: u32) -> Field {\n if message_size == N {\n Poseidon2::hash_internal(input, N, false)\n } else {\n Poseidon2::hash_internal(input, message_size, true)\n }\n }\n\n fn new(iv: Field) -> Poseidon2 {\n let mut result = Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) -> [Field; RATE] {\n // zero-pad the cache\n for i in 0..RATE {\n if i >= self.cache_size {\n self.cache[i] = 0;\n }\n }\n // add the cache into sponge state\n for i in 0..RATE {\n self.state[i] += self.cache[i];\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n // return `RATE` number of field elements from the sponge state.\n let mut result = [0; RATE];\n for i in 0..RATE {\n result[i] = self.state[i];\n }\n result\n }\n\n fn absorb(&mut self, input: Field) {\n if (!self.squeeze_mode) & (self.cache_size == RATE) {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n let _ = self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else if (!self.squeeze_mode) & (self.cache_size != RATE) {\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 } else if self.squeeze_mode {\n // If we're in squeeze mode, switch to absorb mode and add the input into the cache.\n // N.B. I don't think this code path can be reached?!\n self.cache[0] = input;\n self.cache_size = 1;\n self.squeeze_mode = false;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n if self.squeeze_mode & (self.cache_size == 0) {\n // If we're in squeze mode and the cache is empty, there is nothing left to squeeze out of the sponge!\n // Switch to absorb mode.\n self.squeeze_mode = false;\n self.cache_size = 0;\n }\n if !self.squeeze_mode {\n // If we're in absorb mode, apply sponge permutation to compress the cache, populate cache with compressed\n // state and switch to squeeze mode. Note: this code block will execute if the previous `if` condition was\n // matched\n let new_output_elements = self.perform_duplex();\n self.squeeze_mode = true;\n for i in 0..RATE {\n self.cache[i] = new_output_elements[i];\n }\n self.cache_size = RATE;\n }\n // By this point, we should have a non-empty cache. Pop one item off the top of the cache and return it.\n let result = self.cache[0];\n for i in 1..RATE {\n if i < self.cache_size {\n self.cache[i - 1] = self.cache[i];\n }\n }\n self.cache_size -= 1;\n self.cache[self.cache_size] = 0;\n result\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\nstruct 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 {\n _state: &[],\n }\n }\n}\n"},"320":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr","source":"use crate::{\n address::{\n eth_address::EthAddress, salted_initialization_hash::SaltedInitializationHash,\n aztec_address::AztecAddress\n},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator, traits::{ToField, FromField, Serialize, Deserialize}\n};\n\nglobal PARTIAL_ADDRESS_LENGTH = 1;\n\n// Partial address\nstruct 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"},"321":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr","source":"use crate::{\n address::{eth_address::EthAddress, aztec_address::AztecAddress},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, hash::poseidon2_hash_with_separator, traits::ToField\n};\n\n// Salted initialization hash. Used in the computation of a partial address.\nstruct 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"},"404":{"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.\ncontract SchnorrAccount {\n use dep::std;\n\n use dep::aztec::prelude::{AztecAddress, FunctionSelector, NoteHeader, PrivateContext, PrivateImmutable};\n use dep::aztec::encrypted_logs::encrypted_note_emission::encode_and_encrypt_note_with_keys;\n use dep::authwit::{\n entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions,\n auth_witness::get_auth_witness, auth::{compute_authwit_nullifier, compute_authwit_message_hash}\n };\n use dep::aztec::{hash::compute_siloed_nullifier, keys::getters::get_current_public_keys};\n use dep::aztec::oracle::get_nullifier_membership_witness::get_low_nullifier_membership_witness;\n\n use crate::public_key_note::{PublicKeyNote, PUBLIC_KEY_NOTE_LEN};\n\n #[aztec(storage)]\n struct Storage {\n // docs:start:storage\n signing_public_key: PrivateImmutable<PublicKeyNote>,\n // docs:end:storage\n }\n\n // Constructs the contract\n #[aztec(private)]\n #[aztec(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_current_public_keys(&mut context, 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 // docs:start:initialize\n let mut pub_key_note = PublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this_keys.npk_m.hash());\n storage.signing_public_key.initialize(&mut pub_key_note).emit(encode_and_encrypt_note_with_keys(&mut context, this_keys.ovpk_m, this_keys.ivpk_m, this));\n // docs:end:initialize\n }\n\n // Note: If you globally change the entrypoint signature don't forget to update default_entrypoint.ts file\n #[aztec(private)]\n #[aztec(noinitcheck)]\n fn entrypoint(app_payload: AppPayload, fee_payload: FeePayload) {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.entrypoint(app_payload, fee_payload);\n }\n\n #[aztec(private)]\n #[aztec(noinitcheck)]\n #[aztec(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:entrypoint\n // Load public key from storage\n let storage = Storage::init(context);\n // docs:start:get_note\n let public_key = storage.signing_public_key.get_note();\n // docs:end:get_note\n // Load auth witness\n let witness: [Field; 64] = 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 let verification = std::schnorr::verify_signature_slice(\n public_key.x,\n public_key.y,\n signature,\n outer_hash.to_be_bytes(32)\n );\n assert(verification == true);\n // docs:end:entrypoint\n true\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_slice(\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"},"405":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/public_key_note.nr","source":"use dep::aztec::prelude::{AztecAddress, NoteHeader, NoteInterface, 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};\n\nglobal PUBLIC_KEY_NOTE_LEN: Field = 3;\n// PUBLIC_KEY_NOTE_LEN * 32 + 32(storage_slot as bytes) + 32(note_type_id as bytes)\nglobal PUBLIC_KEY_NOTE_BYTES_LEN: Field = 3 * 32 + 64;\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#[aztec(note)]\nstruct 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 NoteInterface<PUBLIC_KEY_NOTE_LEN, PUBLIC_KEY_NOTE_BYTES_LEN> 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 note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n )\n }\n\n 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 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"},"5":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\nstruct BoundedVec<T, let MaxLen: u32> {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl<T, let MaxLen: u32> BoundedVec<T, MaxLen> {\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Get an element from the vector at the given index.\n /// Panics if the given index points beyond the end of the vector (`self.len()`).\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Get an element from the vector at the given index.\n /// Responds with undefined data for `index` where `self.len < index < self.max_len()`.\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Write an element to the vector at the given index.\n /// Panics if the given index points beyond the end of the vector (`self.len()`).\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Write an element to the vector at the given index.\n /// Does not check whether the passed `index` is a valid index within the vector.\n ///\n /// Silently writes past the end of the vector for `index` where `self.len < index < self.max_len()`\n /// Panics if the given index points beyond the maximum length of the vector (`self.max_len()`).\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n pub fn len(self) -> u32 {\n self.len\n }\n\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u32 {\n MaxLen\n }\n\n // This is a intermediate method, while we don't have an\n // .extend method\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n pub fn extend_from_array<let Len: u32>(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_bounded_vec<let Len: u32>(&mut self, vec: BoundedVec<T, Len>) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n pub fn from_array<let Len: u32>(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec<T, MaxLen> = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> BoundedVec<U, MaxLen> {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n ret\n }\n}\n\nimpl<T, let MaxLen: u32> Eq for BoundedVec<T, MaxLen> where T: Eq {\n fn eq(self, other: BoundedVec<T, MaxLen>) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n \n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nimpl<T, let MaxLen: u32, let Len: u32> From<[T; Len]> for BoundedVec<T, MaxLen> {\n fn from(array: [T; Len]) -> BoundedVec<T, MaxLen> {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec<Field, 5> = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec<Field, 5> = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec<Field, 4> = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.storage()[2], 0);\n }\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with=\"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec<Field, 2> = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n}\n"},"53":{"path":"std/option.nr","source":"use crate::hash::{Hash, Hasher};\nuse crate::cmp::{Ordering, Ord, Eq};\nuse crate::default::Default;\n\nstruct Option<T> {\n _is_some: bool,\n _value: T,\n}\n\nimpl<T> Option<T> {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::mem::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some { self._value } else { default }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else<Env>(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n fn expect<let N: u32, MessageTypes>(self, message: fmtstr<N, MessageTypes>) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> Option<U> {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or<U, Env>(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else<U, Env1, Env2>(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then<U, Env>(self, f: fn[Env](T) -> Option<U>) -> Option<U> {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some { self } else { other }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else<U, 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 {\n if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n }\n}\n"},"67":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth_witness.nr","source":"#[oracle(getAuthWitness)]\nunconstrained fn get_auth_witness_oracle<let N: u32>(_message_hash: Field) -> [Field; N] {}\n\n/**\n * Oracle wrapper to fetch an `auth_witness` for a given `message_hash` from the PXE.\n * \n * @param message_hash The hash of the message for which the `auth_witness` is to be fetched.\n * @return The `auth_witness` for the given `message_hash` as Field array.\n */\nunconstrained pub fn get_auth_witness<let N: u32>(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n"},"68":{"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::{prelude::Deserialize, 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 `keccak256(\"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 colission 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 = 0xabf64ad4; // 4 first bytes of keccak256(\"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 FunctionSelector::from_signature(\"verify_private_authwit(Field)\"),\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(context: &mut PublicContext, on_behalf_of: AztecAddress) {\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 FunctionSelector::from_signature(\"consume((Field),Field)\"),\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 FunctionSelector::from_signature(\"set_authorized(Field,bool)\"),\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 FunctionSelector::from_signature(\"set_reject_all(bool)\"),\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n"},"69":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/account.nr","source":"use dep::aztec::{\n context::PrivateContext, protocol_types::constants::GENERATOR_INDEX__COMBINED_PAYLOAD,\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\nstruct 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) {\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 }\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"},"70":{"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, FUNCTION_CALL_SIZE_IN_BYTES};\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u64 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u64 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u64 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\nstruct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize<APP_PAYLOAD_SIZE> for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, APP_PAYLOAD_SIZE> = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__SIGNATURE_PAYLOAD\n )\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, APP_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_slice(self.nonce.to_be_bytes(32));\n\n bytes.storage\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"},"72":{"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: Field = 12;\n\n// 2 * 98 (FUNCTION_CALL_SIZE_IN_BYTES) + 32\nglobal FEE_PAYLOAD_SIZE_IN_BYTES: Field = 228;\n\nglobal MAX_FEE_FUNCTION_CALLS = 2;\n\n// docs:start:fee-payload-struct\nstruct 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(\n self.serialize(),\n GENERATOR_INDEX__FEE_PAYLOAD\n )\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_slice(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"},"78":{"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]\nfn 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"},"79":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/stored_keys.nr","source":"use crate::keys::public_keys::{PublicKeys, PUBLIC_KEYS_LENGTH};\nuse dep::protocol_types::traits::{Serialize, Deserialize};\n\n// This struct represents how public keys are stored in the key registry. We store not just the keys themselves but also\n// their hash, so that when reading in private we can perform a historical read for the hash and then show that it\n// corresponds to a preimage obtained from an unconstrained hint. We do store the keys keys regardless as they might be\n// needed during public execution, and since we need to broadcast and produce hints in some standardized way.\n// While it might seem odd to create a struct for what is effectively some data and a pure function called on it, state\n// variables rely on serializable structs in order to persist data to storage, so we must use this abstraction.\nstruct StoredKeys {\n public_keys: PublicKeys,\n hash: Field,\n}\n\nimpl StoredKeys {\n // Instances of StoredKeys are expected to only be created by calling this function so that we guarantee that the\n // hash field does indeed correspond to the hash of the keys. Ideally we'd forbid direct access to the struct, but \n // Noir doesn't yet support private members.\n fn new(public_keys: PublicKeys) -> Self {\n Self { public_keys, hash: public_keys.hash().inner }\n }\n}\n\n// Our serialization is the concatenation of the public keys serialization plush the hash, so we need one extra field.\nglobal STORED_KEYS_LENGTH: u32 = PUBLIC_KEYS_LENGTH + 1;\n\nimpl Serialize<STORED_KEYS_LENGTH> for StoredKeys {\n fn serialize(self) -> [Field; STORED_KEYS_LENGTH] {\n // The code below is equivalent to:\n // [ ...self.public_keys.serialize(), self.hash ]\n\n let mut array = [0; STORED_KEYS_LENGTH];\n\n let serialized_keys = self.public_keys.serialize();\n for i in 0..serialized_keys.len() {\n array[i] = serialized_keys[i];\n }\n\n array[PUBLIC_KEYS_LENGTH] = self.hash;\n\n array\n }\n}\n\nimpl Deserialize<STORED_KEYS_LENGTH> for StoredKeys {\n fn deserialize(array: [Field; STORED_KEYS_LENGTH]) -> Self {\n // The code below is equivalent to:\n // Self { public_keys: PublicKeys::deserialize(array[0 : PUBLIC_KEYS_LENGTH]), hash: array[PUBLIC_KEYS_LENGTH] }\n\n let mut serialized_keys = [0; PUBLIC_KEYS_LENGTH];\n for i in 0..serialized_keys.len() {\n serialized_keys[i] = array[i];\n }\n\n let hash = array[PUBLIC_KEYS_LENGTH];\n\n Self { public_keys: PublicKeys::deserialize(serialized_keys), hash }\n }\n}\n"},"80":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/public_keys.nr","source":"use dep::protocol_types::{\n address::PublicKeysHash, constants::GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n hash::poseidon2_hash_with_separator, point::{Point, POINT_LENGTH},\n traits::{Deserialize, Serialize, Empty, is_empty, Hash}\n};\nuse crate::keys::constants::{NULLIFIER_INDEX, INCOMING_INDEX, OUTGOING_INDEX};\n\nglobal PUBLIC_KEYS_LENGTH: u32 = 12;\n\nstruct PublicKeys {\n npk_m: NpkM,\n ivpk_m: IvpkM,\n ovpk_m: OvpkM,\n tpk_m: TpkM,\n}\n\ntrait ToPoint {\n fn to_point(self) -> Point;\n}\n\nstruct 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\nstruct 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\nstruct 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\nstruct TpkM {\n inner: Point\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Empty for PublicKeys {\n fn empty() -> Self {\n PublicKeys {\n npk_m : NpkM { inner: Point::empty() },\n ivpk_m : IvpkM { inner: Point::empty() },\n ovpk_m : OvpkM { inner: Point::empty() },\n tpk_m : TpkM { inner: Point::empty() }\n }\n }\n}\n\nimpl Eq for PublicKeys {\n fn eq(self, other: PublicKeys) -> bool {\n ( self.npk_m.inner == other.npk_m.inner ) &\n ( self.ivpk_m.inner == other.ivpk_m.inner ) &\n ( self.ovpk_m.inner == other.ovpk_m.inner ) &\n ( self.tpk_m.inner == other.tpk_m.inner )\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(\n if is_empty(self) {\n 0\n } else {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field)\n }\n )\n }\n}\n\nimpl Serialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.inner.x,\n self.npk_m.inner.y,\n self.npk_m.inner.is_infinite as Field,\n self.ivpk_m.inner.x,\n self.ivpk_m.inner.y,\n self.ivpk_m.inner.is_infinite as Field,\n self.ovpk_m.inner.x,\n self.ovpk_m.inner.y,\n self.ovpk_m.inner.is_infinite as Field,\n self.tpk_m.inner.x,\n self.tpk_m.inner.y,\n self.tpk_m.inner.is_infinite as Field\n ]\n }\n}\n\nimpl Deserialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM { inner: Point { x:serialized[0], y:serialized[1], is_infinite: serialized[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x:serialized[3], y: serialized[4], is_infinite: serialized[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x:serialized[6], y: serialized[7], is_infinite: serialized[8] as bool } },\n tpk_m: TpkM { inner: Point { x:serialized[9], y: serialized[10], is_infinite: serialized[11] as bool } }\n }\n }\n}\n\n#[test]\nfn 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]\nfn 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]\nfn 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"},"82":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr","source":"use dep::protocol_types::{\n header::Header, abis::validation_requests::KeyValidationRequest, address::AztecAddress,\n constants::CANONICAL_KEY_REGISTRY_ADDRESS, point::Point, storage::map::derive_storage_slot_in_map,\n traits::is_empty\n};\nuse crate::{\n context::{PrivateContext, UnconstrainedContext},\n oracle::{keys::get_public_keys_and_partial_address, key_validation_request::get_key_validation_request},\n keys::{\n public_keys::{PublicKeys, PUBLIC_KEYS_LENGTH}, stored_keys::StoredKeys,\n constants::{NULLIFIER_INDEX, INCOMING_INDEX, OUTGOING_INDEX, TAGGING_INDEX}\n},\n state_vars::{\n shared_mutable::shared_mutable_private_getter::SharedMutablePrivateGetter,\n public_mutable::PublicMutable, map::Map\n}\n};\n\nmod test;\n\n// This is the number of blocks that must pass after a key rotation event until the old keys are fully phased out and\n// become invalid.\nglobal KEY_REGISTRY_UPDATE_BLOCKS = 5;\n\nglobal KEY_REGISTRY_STORAGE_SLOT = 1;\n\n// A helper function since requesting nsk_app is very common\n// TODO(#6543)\npub fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// Returns all current 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_current_public_keys(context: &mut PrivateContext, account: AztecAddress) -> PublicKeys {\n // We're going to perform historical reads from public storage, and so need to constrain the caller so that they\n // cannot use very old blocks when constructing proofs, and hence e.g. read very old keys. We are lax and allow\n // _any_ recent block number to be used, regardless of whether there may have been a recent key rotation. This means\n // that multiple sets of keys are valid for a while immediately after rotation, until the old keys become phased\n // out. We *must* be lax to prevent denial of service and transaction fingerprinting attacks by accounts that rotate\n // their keys frequently.\n // Note that we constrain the max block number even if the registry ends up being empty: this ensures that proof of\n // an empty registry is also fresh.\n let current_header = context.get_header();\n context.set_tx_max_block_number(current_header.global_variables.block_number as u32 + KEY_REGISTRY_UPDATE_BLOCKS);\n\n get_historical_public_keys(current_header, account)\n}\n\n// Returns historical public keys for a given account at some block determined by a block header. We read all keys at\n// once since the constraints for reading them all are actually fewer than if we read them one at a time - any read keys\n// that are not required by the caller can simply be discarded.\n// WARNING: if called with a historical header created from a fixed block this function will explicitly ignore key\n// rotation! This means that callers of this may force a user to use old keys, potentially leaking privacy (e.g. if the\n// old keys were leaked). Only call this function with a header from a fixed block if you understand the implications of\n// breaking key rotation very well.\npub fn get_historical_public_keys(historical_header: Header, account: AztecAddress) -> PublicKeys {\n // TODO: improve this so that we always hint the correct set of keys (either registry or canonical) and hash them\n // once instead of having two different hints and twice as many constraints due to the double hashing.\n\n // The key registry is the primary source of information for keys, as that's where accounts store their new keys\n // when they perform rotation. The key registry conveniently stores a hash of each user's keys, so we can read that\n // single field and then prove that we know its preimage (i.e. the current set of keys).\n let key_registry_hash = key_registry_hash_public_historical_read(historical_header, account);\n if key_registry_hash != 0 {\n let hinted_registry_public_keys = key_registry_get_stored_keys_hint(\n account,\n historical_header.global_variables.block_number as u32\n );\n assert_eq(hinted_registry_public_keys.hash().to_field(), key_registry_hash);\n\n hinted_registry_public_keys\n } else {\n // If nothing was written to the registry, we may still be able to produce the correct keys if we happen to know\n // the canonical set (i.e. the ones that are part of the account's preimage).\n let (hinted_canonical_public_keys, partial_address) = get_public_keys_and_partial_address(account);\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}\n\nfn key_registry_hash_public_historical_read(historical_header: Header, account: AztecAddress) -> Field {\n // The keys are stored in a Map that is keyed with the address of each account, so we first derive the corresponding\n // slot for this account.\n let keys_storage_slot = derive_storage_slot_in_map(KEY_REGISTRY_STORAGE_SLOT, account);\n\n // The keys are stored as [ ...serialized_keys, hash ], and since arrays get allocated sequential storage slots\n // (prior to siloing!), we simply add the length to the base slot to get the last element.\n let hash_storage_slot = keys_storage_slot + PUBLIC_KEYS_LENGTH as Field;\n\n historical_header.public_storage_historical_read(hash_storage_slot, CANONICAL_KEY_REGISTRY_ADDRESS)\n}\n\nunconstrained fn key_registry_get_stored_keys_hint(account: AztecAddress, block_number: u32) -> PublicKeys {\n // This is equivalent to the key registry contract having an unconstrained getter that we call from an oracle, but\n // PXE does not yet support that functionality so we do this manually instad. Note that this would be a *historical*\n // call!\n\n // TODO (#7524): call the unconstrained KeyRegistry.get_current_keys() function instead\n\n let context = UnconstrainedContext::at_historical(CANONICAL_KEY_REGISTRY_ADDRESS, block_number);\n let keys_storage = Map::new(\n context,\n KEY_REGISTRY_STORAGE_SLOT,\n |context, slot| { PublicMutable::new(context, slot) }\n );\n\n let stored_keys: StoredKeys = keys_storage.at(account).read();\n stored_keys.public_keys\n}\n"},"96":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/history/public_storage.nr","source":"use dep::protocol_types::{\n constants::GENERATOR_INDEX__PUBLIC_LEAF_INDEX, hash::poseidon2_hash_with_separator,\n address::AztecAddress, header::Header, utils::field::full_field_less_than\n};\nuse dep::protocol_types::merkle_tree::root::root_from_sibling_path;\n\nuse crate::{context::PrivateContext, oracle::get_public_data_witness::get_public_data_witness};\n\ntrait PublicStorageHistoricalRead {\n fn public_storage_historical_read(header: Header, storage_slot: Field, contract_address: AztecAddress) -> Field;\n}\n\nimpl PublicStorageHistoricalRead for Header {\n fn public_storage_historical_read(self, storage_slot: Field, contract_address: AztecAddress) -> Field {\n // 1) Compute the leaf slot by siloing the storage slot with the contract address\n let public_data_tree_index = poseidon2_hash_with_separator(\n [contract_address.to_field(), storage_slot],\n GENERATOR_INDEX__PUBLIC_LEAF_INDEX\n );\n\n // 2) Get the membership witness of the slot\n let witness = get_public_data_witness(\n self.global_variables.block_number as u32,\n public_data_tree_index\n );\n\n // 3) Extract the value from the witness leaf and check that the storage slot is correct\n let preimage = witness.leaf_preimage;\n\n // Here we have two cases. Code based on same checks in `validate_public_data_reads` in `base_rollup_inputs`\n // 1. The value is the same as the one in the witness\n // 2. The value was never initialized and is zero\n let is_less_than_slot = full_field_less_than(preimage.slot, public_data_tree_index);\n let is_next_greater_than = full_field_less_than(public_data_tree_index, preimage.next_slot);\n let is_max = ((preimage.next_index == 0) & (preimage.next_slot == 0));\n let is_in_range = is_less_than_slot & (is_next_greater_than | is_max);\n\n let value = if is_in_range {\n 0\n } else {\n assert_eq(preimage.slot, public_data_tree_index, \"Public data tree index doesn't match witness\");\n preimage.value\n };\n\n // 4) Prove that the leaf exists in the public data tree. Note that `hash` returns not just the hash of the value\n // but also the metadata (slot, next index and next slot).\n assert(\n self.state.partial.public_data_tree.root\n == root_from_sibling_path(preimage.hash(), witness.index, witness.path), \"Proving public value inclusion failed\"\n );\n\n value\n }\n}\n"}}}
|
|
1
|
+
{"transpiled":true,"noir_version":"0.33.0+cf5b667c9566019853a5dc2a7f16ed024ab9182b","name":"SchnorrAccount","functions":[{"name":"constructor","is_unconstrained":false,"custom_attributes":["aztec(private)","aztec(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":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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"},{"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":"5Z3djmPHka3fpa99kZEZ+edXOTgYyDOegQBBHtiaAxwYfvdhF4tkdZO1F5pOi2tF3tiSvVkVn8SKb+3dlYt///Iff/7T//zXv/3863/+5W9f/vh//v7ll7/8+0+//fyXX09/9/d//OHLn/768y+//Pxf//bxf/6Svv7HeLv8b//9069f/+5vv/3019++/DH94cuff/2P03+fXvqfP//y5y9/9FT/8Ye764bN9ytH6ddr7eG1Ndf3a2u9fV2r8x//9w9f5j81Rb9cOWYGU3i5TOxtfD+FpX9mjGn9/cpZDIzR0uUfRsvtbgz7p8aoly89PxI+HmNcvmpPd/9O7OFbo8x6wSxzFjBMOf1Tvlxdbd6+xUgPrrZU0uVfj6XeP/zLzP3B9XmW96vz9Ou19W34KTx8TsrDm/LwWXn4ojy8Kw9flYdvysN35eGVDZuVDVuUDVuUDVuUDVuUDVuUDVuUDVuUDVuUDVuUDVuUDevKhnVlw7qyYV3ZsK5sWFc2rCsb1pUN68qGdWXDVmXDVmXDVmXDVmXDVmXDVmXDVmXDVmXDVmXDVmXDNmXDNmXDNmXDNmXDNmXDNmXDNmXDNmXDNmXDNmXDdmXDdmXDdmXDdmXDdmXDdmXDdmXDdmXDdmXDdmXDDmXDDmXDDmXDDmXDDmXDDmXDDmXDDmXDDmXDDmXDTmXDTmXDTmXDTmXDTmXDTmXDTmXDTmXDTmXDTmXDWlJWrCVlx1pSluzpS0lPr6xZS8qetaQs2tPLpaeXrp5I0q41adeatGtN2rUm7VqTdq1Ju9akXWvSrtWueZLueTLpoieTbnoy6aonk+56MumyJ5NuezLpuieT7nsy6cInk258MunKJ5PufDLp0ieTbn0y6donk+59MuniJ5NufjLp6ieT7n4y6fInk25/Mun6J5PufzLpAiiTboAy6Qook+6AMukSKJNugTLpGiiT7oEy6SIok26CMukqKJPugjLpMiiTboMy6Took+6DMulCKJNuhDLpSiiT7oQy6VIok26FMulaKJPuhTLpYiiTboYy6Wook+6GMulyKJNuhzLpeiiT7ocy6YIok26IMumKKJPuiDLpkiiTboky6Zook+6JMumiKJNuijLpqiiT7ooy6bIo42+LKqVev3ovt1lOf+zziDX1eoH19u3VX3n5C6YW89L7fDEvfQJYzEufGRbz+ma89LlkMS99klnMS599FvPSp6XFvHvlq8zfLraYd698lfkbzBbz7pWvcvLNePfKV5m/iW0x7175KvO3vS3m3Sxf8TfKLebdLF/xt9Yt5t0sX/E34y3m3Sxf8bfvLebdLF/xN/wt5t0sX/G3CC7m3Sxf8TcVLubdLF/xtyEu5t0sX/E3Li7m3Sxf8bc6LubdLF/xN0cu5t0sX/G3Uy7m3Sxf8TdgLubdLF/xt2wu5t0sX/E3eS7m3Sxf8beFLubdLF/xN5Iu5t0sX/G3ni7m3Sxf8TerLubdLF/xt7cu5t0sX/E3xC7m3Sxf8bfQLubdLF/xN90u5t0sX/G36S7m3Sxf8Tf2LubdLF/xtwIv5t0sX/E3Dy/m3Sxf8bcbL+bdLF/xNygv5t0sX/G3NC/m3Sxf8TdBL+bdLF/xt00v5t0sX/E3Wi/m3Sxf8bdmL+bdLF/xN3Mv5t0sX/G3fy/m3Sxf8TeML+bdLF/xt5gv5t0sX/E3pS/m3Sxf8bexL+bdLF9t1t+eN+tvz5v1t+fN+tvzZv3tebP+9rxZf3verL89b9bfnjfrby+b9beXzfrby2b97WWz/vaSfDNe6Xz1RsCfmHqtV4Lm9wT8GQgR8KcaRMCfUwCBQLM5IuDPEoiAPx18JOh2T8Dve0TAb3BEwO/kka8Eozz4OeB3MiLgdzIi4HcyIuB3MiAQaMNGBPw+GLVcCb5+xe8J+H2ACOh3kbds75d783pPQL+LIAH9LkIE/M2xkIDs/uBtphck/j7rdaZhD2YqhDM54UyVcKZGOFMnnGkQzjT5ZnpFnyWcyQhnItzjTrjHnXCPO+Eed8I97oR73An3uBPu8Uq4xyvhHq+Ee7wS7vFKuMcr4R6vhHu8Eu7xSrjHK+Eeb4R7vBHu8Ua4xxvhHm+Ee7wR7vFGuMcb4R5vhHu8Ee7xTrjHO+Ee74R7vBPu8U64xzvhHu+Ee7wT7vFOuMc74R4fhHt8EO7xQbjHB+EeH4R7fBDu8UG4xwfhHh+Ee3wQ7vFJuMcn4R6fhHt8Eu7xSbjHJ+Een4R7fBLu8Um4xyffHvfEt8c98e1xT3x73BPfHvfEt8c98e1xT3x73BPfHvfEt8c9Ee5xI9zjRrjHjXCPG+EeN8I9boR73Aj3uBHucSPc40a4xzPhHs+EezwT7vFMuMcz4R7PhHs8E+7xTLjHM+Eez4R7vBDu8UK4xwnPczrheU4nPM/phOc5nfA8pxOe53TC85xOeJ7TCc9zOuF5Tic8z+mE5zmd8DynE57ndMLznE54ntMJz3M64XlOJzzP6YTnOZ3wPKcTnud0wvOcTnie0wnPczrheU4nPM/phOc5nfA8pxOe53TC85xOeJ7TCc9zOuF5Tic8z+mE5zmd8DynE57ndMLznE54ntMJz3M64XlOJzzP6YTnOZ3wPKcTnud0wvOcTnie0wnPczrheU4nPM/phOc5nfA8pxOe53TC85xOeJ7TX3FOcZR0m8n7/UxGONMLfu5mus00Ld3PVAlnaoQzdcKZBuFMq/NTLmCmmvz94ppv87y169flJ+/+uWmMappMNU2hmsappqlU0zSqaTrVNINqGqpdbFS72Kh2sVHtYqPaxUa1i41qFxvVLjaqXWxUu9iodnGm2sWZahdnql2cqXZxptrFmWoXZ6pdnKl2cabaxZlqFxeqXVyodnGh2sWFahcXql1cqHZxodrFhWoXF6pdXKh2sVPtYqfaxU61i51qFzvVLnaqXexUu9ipdrFT7WKn2sWVahdXql1cqXZxpdrFlWoXV6pdXKl2caXaxZVqF1eqXdyodnGj2sWNahc3ql3cqHZxo9rFjWoXN6pd3Kh2caPaxZ1qF3eqXdypdnGn2sWdahd3ql3cqXZxp9rFnWoXd6pdPKh28aDaxYNqFw+qXTyodvGg2sWDahcPql08qHbxoNrFk2oXT6pdPKl28aTaxZNqF0+qXTypdvGk2sWTahdTnbtrVOfuGtW5u/aCc3f9cn67fvjKj77usMsQo7Tv5y6ic7vo3FV07iY6dxede4jOPTXnfsE5xjVzm+jcor40UV++4Lzlmrkf+tJTvnxxN3Mwd05e2/vlObVi1+vbfHC5JbP8fvnpr+utGic3Ow/VGIfqjEMNxqEm4VCPD2++eihjHCozDlUYh3LGoRg3embc6PklG72O21DdvhnqwfWtlsvlrd80X/KZYMgTTHWCkuQJTJ4gyxMUeQKXJ6jyBE2eQN7JRd7JRd7JLu9kl3eyyzvZ5Z3s8k52eSe7vJNd3sku72SXd3KVd3KVd3KVd3KVd3KVd3KVd3KVd3KVd3KVd3KVd3KTN1qTN1qTN1qTN1qTN1qTN1qTN1qTN1qTN1qXv8vs8k7u8k7u8k7u8k7u8k7u8k7u8k7u8k7u8k4e8k4e8k4e8k4e8k4e8k4e8k4e8k4e8k4e8k4e8k6e8k6er9im+cORgpz9G4K3oSrjUK/4ecv9w1CjoX/Xh9e/QUx9iJ5SBAiLAJEjQJQIEB4BokaAaBEgegSIAMbuScDY3S+VU9Zb/i5idhPQNSAQcDUgEBA1IBCw9Lj2lNjo7SPBg4vnLNdRUrvDFfD5SlwB86/EFcgIK3EF0sRKXIHcsRJXIKEsxM0CcWYlrkD2WYkrEJRW4gYT0cjp/drx4RHuBTaYhg5hS7Q1lfL1zzFSuXsjl2hrCuBGW1MAN9rNH8D1vXCj3fwB3Gg3fwA32s0fwI128wdwo938WbqEqtPg83tcj5aqAG60VAVwo6UqgBstVQFc3ws3WqoCuNFSFcCNlqoAbrRUBXClU9VXgiodlN4IpLPPG4FAnDl+PF0FEgogcHkCgRwBCASiASAQsD0gEBA4IBBw8jFBE3AyIBBwMiCQd3KTd/JLmpbWEsg7uck7uck7uck7+ZOmJav5SjAyIPB+uYeqH2jbePsGnxQhLfwG9q/+Bvlf/Q3Kv/ob+I9+g7dXPV6R+fqnWf7xkOf1Ve2pV/WnXjWeetV85lWflIegV9lTr8pPvao89Sp/6lVPvTfGU++N8dR7Yzz13hhPvTfmU++N+dR7Yz713phPvTfmU++N+dR7Yz713vjkNHaudn1VLd+/anxy/Bm96pN/htcPy/X89QNyv3+VP/Wq+tSr2lOvevzz5e1iFPdpSD9ptKtL0oePOPRHF9d0/QddbX68+G2eQTbP5Jrnk9OAr5vHyObJZPMUsnmcbJ5KNs/jLVr8mpbr1xm+26KfnNBCr3q863q5buyT4gC7zdOKutwRnu72KrqBBJ9HOz45jvTaoT45NPTioYxxqMw4VGEcyhmHqoxDNcahOuNQjBs9M2708pKNvrD6bRSTJ8jyBEWewOUJqjxBkyfo8gRDnmCqE7i8k13eyS7vZJd3sss72eWd7PJOdnknu7yTXd7JVd7JVd7JVd7JVd7JVd7JVd7JVd7JVd7JVd7JVd7JTd7JTd7JTd7JTd7JTd5oTd5oTd5oTd5oTd5oXd5oXd5oXd5oXd5oXf4us8s7ucs7ucs7ucs7ucs7ecg7ecg7ecg7ecg7ecg7ecg7ecg7ecg7ecg7ecg7eco7eco7eco7eco7eco7eb5im4LPSB9z8g010yt+3hZ/DOxMJQKER4CoESBaBIgeAWJEgJgBICxFgLAIEBGMbQLGPvzI7WkCugYEAq4GBAKiBgQCll73iarTBHy+ElfA/Atxs0BGWIkrkCZW4grkjpW4AgllJa7vhSuQfVbiCgSlhbglmIiOPst8lmAaOoaNtqYOP0B2lmhrCuBGW1MAN9rNH8CNdvMHcKPd/B3jerSbP4Ab7eYP4Ea7+QO40W7+Dj9Rdb6kEueFuNFSFcCNlqoAbrRUBXCjpSqAGy1VHePWaKkK4EZLVQA3WqoCuNKp6o3A5Qmks88bgUCcOX48XQUSCiAQCB2AQCBHHBM0gWgACARsDwgEBA4IBJwMCAScDAgEnAwI5J3c5J3c5J3c5J3c5Z3c5Z3c5Z38SdPSKNfPGxy9A4J8SlfvV5c0OxoIfaLT/KQ76bUzVcKZGuFMnXCmQTjT5Jvpk56g185khDNlwpkI9/gg3OPjFXt8Yd3AHE0doKsDDHWAKQ4wkzqAqQNkdYCiDuDqAOomnuomnuomnuomnuImtpTEVXwiEHfxiUBcxicCcRufCMR1fCIQ9/GJQFzIJwJxI58IxJV8IpB3ssk72eSdbPJONnknm7yTTd7JJu9kk3eyyTs5yxstyxstyxstyxstyxstyxstyxstyxst6xtN/i6zyDu5yDu5yDu5yDu5yDu5yDu5yDu5yDu5yDu5yDvZ5Z3s8k52eSe7vJNd3sku72SXd7LLO9nlnezyTq4v2Kbgk/hOQznjUC/4eVv8YUMniBEBYgaAaCkChEWAyBEgSgQIjwBRI0C0CBARjN34jX34wW4nAn5dA4LO72pEwC9qRMBv6XWf23PC5ff5Ulx+8y/F5c8IS3H508RSXP7csRSXP6EsxeWPMytxB3/2WYrLH5SW4sYS0dEn5p1gY2kIwAZbU4cfU2RpBltTCDfYmkK4wW7+EG6wmz+E63vhBrv5Q7jBbv4QbrCbP4Qb7Obv8HN7TrjBUtUxrqVgqQrhBktVCDdYqkK4wVIVwvW9cIOlKoQbLFUh3GCpCuEqp6ozgXJQeiMw5exzJuCPM8ePp834Ewoi4A8diMDlCfijASLgtz0i4Bc4IuB3MiLgdzIgyPxORgTyTs7yTs7yTn5F09JiAnknZ3knZ3knf9K0NNPlVT6HAQLzcT1QWevte5jb+zeZv8M3+aSvaPE3sd/jm+Tf45uU3+Ob+IJvUtv1Dd/S/Oab3F9dZ3u/uNUBrrXTN7985fnxJ8/8ffyqPX7THr9rjz+0x5/S43vSHt+0x8/a4xft8bWt69rWdW3rurZ1Xdu6rm3dqm3dSr33a7/8WWUdH/7AO/X34am3Phqeeuu06+8atI+PUK7DU+8cNDz1xgHDN+p9g4YnyvjngX731N6vD0r7wNu73La3p/vt3Yr2+K49ftUev2mP37XHH9rj/+4OHeny4H1+99z9R659G74n5eFNefisPHxRHt6Vh6/Kwzfl4bvy8EN5eGXDDmXDDmXDDmXDDmXDDmXDDmXDDmXDDmXDDmXDDmXDTmXDTuo9D/7gZlLveTT8w21TU7o8Jq+pzm+GP79sPPey+czL8uMGiZp6ur5sjgcvE/4XkxO1gNHw1AJGw1MLGA1PLeBmlzFaLg+GpxYwGN6oBYyGp77FRcNT3+Ki4amjz+mrXYf3B8NTGxYNT21YNDy1YdHw1IZFw3MbFgzPbdjD3xbKmduwYHhuw4LhuQ0Lhic37PHw5IY9Hp7csMfDkxv2eHhywx4PT27Y4+GVDVuUDVuUDVuUDVuUDfv7H9BfObyyYYuyYYuyYYuyYYuyYbmPhYM/XOA+FI6Gd+XhqQ+Eo+Gpj4OD5/Pch8HR8NzHMsHw3Mcyj4fnPgaOhqeuXgGPuCu1YdHw1IZFw1MbFg1PbVg0PLdhwfDCxQdZufggKxcfZOXig8xUfPDjw5Mb9nh4csMeD09u2OPhyQ17PDy5YY+HVzZsUzZsUzZsVzZsVzZsVzZsj/UheiNfaMfHu5f8DhvrI/TmqNcvnR7QxvrkWkA7Yn1wLaKN9bm1iDbWx9Yi2lifWotofSvaWLpFtFv5dsT6xFpEq/yBtT9Ou1WWmltlqblVlppbZakZK0udvmC5fu3S7nF9L9xYaQrixopTEDdWnoK4sQIVxI2VqABuSbEiFcSNlakgbqxQBXGjpSpP169dyz2u74UbLVUB3GipCuBGS1UAN1qqAriBU9UDXNsrVdleqcr2SlW21bOqYls9qyq21bOqYls9qyq21bOqYls9qyq217OqvFeqynulqrxXqsp7paq8V6rKe6WqvFeqynulqrxXqsp7paqyV6oqe6WqslfMKHvFjLJXzCh7xYyyV8zwV4jI5w33w5nFr9efhzLGoTLjUIVxKGccqjIO1RiH6oxDDcahJuFQlXGjV8aNXhk3emXc6PUVG73cDnNkH+j6dm1YsGYfIlSt7whVH6HpI3R9hKGPMOURWtJHMH2ErI9Q9BH07dz07dz07dz07dz07dz07dz17dz17dz17dz57ZzNL5fnr4/gv3vA3vnljAj43YwI+NWMCPjNjAj4xZy9XQnavCfg9zIgGPxC8HH56qe/vH8XDX4fIAJ+HyAChXu16y5qxe4JFG7VjgkU7tSOCRRu1I4JFO7TDgmmwm3aMYHCXdoxgcJN2jGBwhPUYwJ+JyMCeSdPeSdPASfX2+OWft+gMAWcDAgEnHxI4EnAyYBAwMmAQMDJgEDAyYBAwMmAQMDJgEDAyYBA3cme1J3sSd7JJu9kk3ey8RvtdCd8fW5q3zw3fXDxvF6cU2r3uPz6W4rL78qluPxiXYrLb+GluPzKXorL7/eVuJk/DCzF5U8OS3H5b/2X4sYS0eEnfnqOpaFj2BJsTR2fY/cSbE0h3GBrCuEGu/lDuL4XbrCbP4Qb7OYP4Qa7+UO4wW7+EG6wmz9L149UML/7DVr3YKkK4QZLVQg3WKpCuMFSFcL1vXCDpSqEGyxVIdxgqQrhBktVCJc/VXkeV1y/+2VIr/xBCRHwZx9EIHDcCxAIHPcCBC5PwJ8jEAF/NEAE/LZHBPwCRwTyThbozEIE8k4WaMw6Pv7rAoVZiEDAyYBAwMmAQMDJgEDAyYBAwMmAQMDJxwQCTVmIQMDJgEDeyQIlU+DX+wVKphCB/GEpgZIpRCB/WEqgZAoQDPnDUkP+sJRA0RcikD/ALFD0hQjknaxQ9AUI5J2sUPQFCOSdrFD0VY8J5J3MVvR1HopMs+ehyMx5HopMhuehyPx2HirWrwQfHrOqAnVNPwI7x+1Lpwe0sX5jFNHyJ/iVtLF+XxTRxvp1UUQb67dFEW2sXxZFtLF0C2gFqphW0sY6f4NoYx2/QbRbZalgfVaIdqssFazNCtFudZ65RiuzQrjBzjMD3GhlVgh3q5aYGq3MCuFu1RJTs++Fu1VLTA3WzAZxo6Uqvx7wTbXc40ZLVQA3Wqo6xg3XvQdwo6UqgBstVQHcwKnqEa5v5d29uvfqXt17da/uvbpX916N1r0HcKN17yHcvZ5VReveQ7h7PauK1r2HcPdKVdG69xDuXqkqWvcewt0rVQkU9S3F3StVCVQALsXdK1UJlAsuxd0rVQmU/i3F3StmCNQJrsQV6B5cirtXzPikUa+XSxei9zkBrs2R5uWbzFnq9fo2H4/U8413NMQ7ar9cPno75j0+8/dJ+54sLfiF109q4sLizq1wPymgC4tre+HmvXDLXrjBtItw9/LuJ4WCYXH7Xrh7paq+V6oae6WqsVeqGsFSFbq9H8FiFeT1zXiDBSvIGyxZQd5g0QryBstWkDdYuEK8M1i6grzB4hXkDZevjo/YzHD5CvD6Zrzh8hXgDZevAG+4fAV4I+erR7x75auW9spXLe2Vr1ra6/lVS3s9v2rJN+Pd6/lVS3s9v2ppr+dXLe31/KqlzfKVbZavbLN8ZZvlK9ssX9lm+co2y1e2Wb6yzfKVbZavbLN8lTfLV3mzvJE3yxt5s7yRN8sbebO8kV/iI5833nr/uYWtJMqpjHKqTDlVoZzKKaeqlFM1yqk65VSDcirK3e6Uu90pd7tT7nZ/yW7/wU8AT9fYc3qGdLu61ncGD8BQAzC0AAw9AMMIwDD1GWoKwGABGHIAhgCergE8XQN4ugbwdA3g6RrA0zWAp1sAT7cAnm4Cns7ml8tz+abe74wgoGmEIGBphCAgaYQg4GiEIKDo7O2K0OY9goChAUIXEIOPSyPr6S/v30hdwAsIQcALCEHACy1dN9LpT3jvESRu3o4RJO7djhEkbt2OESTu3I4RJG7cDhGGxH3bMYLEbdsxgsTT1WMEiYerxwj6dh76dh4Kdq63pzC93CMo2BkgKNgZICjY+RhhKtgZICjYGSAo2BkgKNgZICjYGSAo2Bkg6Nt56tt56tt5ytu5J3k79ySgth/6NLB5vTin1O55BTy4lFdAmkt5BQy7lFdAx0t5Bdy9lFdA9Et5BVLBSl4TiBBLeQWeBizlDeajw08f7RbMRoA22q46Phrfc7RdhXij7SrEG+1eEPFGuxdEvL4Zb7R7QcQb7V4Q8Ua7F0S80e4FLV0/ysF83vNGy1eAt0TLV4g3Wr5CvNHyFeKNlq8Qr2/GGy1fId5o+QrxRstXiFcgX3keV163ewSByAQQXCAFIQSF42IAQeG4GEBQOC4GEFwfQSAkIAQB7yMEAZUjBH07K/RxAQSFOi6EIH+YuyuUcSEE+cPcXaGKCyEo2BkgKNgZICjYGSAo2BkgKNj5GEGhhAsh6NtZob8KHAtQ6K9CCPJnrbpCfxVCkD9r1RX6qxCC/lmrrn/WSqFFDCHIn4TuCi1iCEHfzhItYgBB384SLWIAQd/OEi1ixwgSLWIAgc3O56nYhHueis2h56nYtHieis1056mC/S7x8UkthSaoH6Gd4/al0z2uQl/RStxgv2eKcAXS/0rcYL9linCD/ZIpwg32O6YIN5h2Ee5W3h0KfVArcYOd30G4W6WqEa0pC+H6XrhbpaoRribr+KjwCFeThXijHY1GvHtVz4xwNVmId6/qmWF7Vc8M26t6ZphvxrtX9cyIVvxmya9HhVMt97zh8hXgDZevAG+4fHXMG6/aD/CGy1eAN3K+esS7Wb7arNpvbFbtNzar9hubVfuNcNV+iHez51fhqv0Q72bPr8JV+yHezfJVuGo/xLtZvgpX7Yd4N8tXCtV+S3k3y1cKpYFLeTfLVwp1hEt5N8tXCkWHS3k3yxsK/YNLeTfLGwrNhit5FWoQl/I+9lGulyKk01+Wb3jPL/PnXlafe1l77mWPd1Me5fqy+ehl47mXzade9kmzF3yZPfey/NzLCn7ZfPAyf+5l9bmXffIuadcf3TzSg5f15142nnvZfOpln5TkwJfZcy/Lz72sPPcyf+5l9bmXPfcu6c+9S/pz75L+3LtkPPcuGc+9S8Zz75Lx3LtkPPcuGc+9S8Zz75JPjqOnfPG7mzlIDzl5be+X59SKwfTQ8y09jIbSw0mLl8tPPwzH6eHw8P2YKRYtOGryyWn0sLi+F27dC7fthdv3wh174QbT7jHuTFt5d35yGj0sbt4Ld6tUNZPvhbtVqpppq1Q1U7BUBR6WzxQsVkHeYLkK8VqwYAV5gyUryBssWkHeYNkK8vpmvMHSFeQNFq8gb7h8dXiYdVq4fAV4w+WrY94cLl8B3nD5CvCGy1eAN3K+esTre/k3b5av8mb5Km/2/Cpv9vwqb/b8qmz2/Kps9vyqbPb8qmz2/Kpslq/KZvmqbJavymb5qmyWr8pm+co3y1e+Wb7yzfKVb5avfLN85ZvlK98sb/hmecM3yxt1s7xRN8sb9SU+8nnjrfefIDxrpZyqUU7VKacalFNNxqlaopzKKKfKlFMVyqkod3uj3O2Ncrc3yt3eKHd7o9ztnXK3d8rd3l+y23+s+Kqla5xu9iGp1/rOUAIweACGGoChBWDoARhGAIapzzBSAAYLwBDA0yOAp0cAT48Anh4BPD0CeHoE8PQI4OkZwNNTwNPZ/HJ5Lt+UMJ8RBDSNEAQsjRAEJI0QBByNEAQUnb1dEdq8RxAw9CFCTklADD4uje6nv8z3CAJeQAgCXkAIEndv14308YtfEQS8gBAk7t2OESRu3Y4RJO7cjhEkbtyOESTu2w4RTOK27RhB4unqMYLEw9VjBH07v6bGay2Cgp3r7SlML/cICnYGCAp2BggKdgYICnY+RsgKdgYICnYGCAp2BggKdgYICnYGCPp2zvp2zvp2zvp2zvp2LgJq+6HPbJ3Xi78+JLvnFfDgUl4BaS7lFTDsUl4BHS/lFXD3Ul4B0S/lFUgFS3kFIsRKXhd4GrCUN5iPjj7V9uucW9FG21WHlQunSaPtKsBbo+0qxBvtXhDxRrsXRLzR7gURbzD3Qt5o94KIN9q9IOKNdi9o6foRIeb3v3Vbo+UrxBstXwHeFi1fId5o+QrxRstXiDdavkK8vhlvtHyFeKPlK8QrkK88jyuv3//uZBOITAhBIAUBhK5wXAwgKBwXAwgKx8UAgkCiQAiujyDgfYQgoHKEoG9nhT4uhKBvZ4U2LnCMWKGMCyHoH+ZWqOJCCAp2BggKdgYICnYGCAp2BggKdgYICnY+RlDo4EII+metFPqrEIKA2hCC/lkrhf4qhKB/1mrqn7Wa8metTKFFDCHIn4Q2hRYxhCBvZ0vydjaJFjGAIG9nk2gRAwjydjaJFrFjBLoWsfNUbMI9T8Xm0PNUbFo8T8VmuvNUwX6X+PCklik0Qf0I7Ry3L53ucRX6ilbiBvs9U4Qb7NdMEa7AncJK3GC/ZIpwg/2OKcINpl2Eu5l3gx3gAbgl2PkdhLtXqorWlIVw90pV0XqyEO5eR6MtXE0W4o12NBrx7lU9Y+FqsgBvuJosxLtX9Yz5XtUz5ntVz1i02jfIGy5f+fWocKr3f1jo4fIV4A2XrwBvuHwFeMPlq2PeeNV+gDdyvnrEu1m+2qzazzar9rPNqv1ss2o/C1fth3g3e34VrtoP8Iar9kO8mz2/Clfth3g3y1fhqv0Q72b5Kly1H+LdLF8p9AAu5d0sXyk0DC7l3SxfKXQXLuXdLF8pVAou5d0sbyiUFS7l3SxvKNQgruR93NZXZu3vrypzFsBbvF16GUu1W/22jfRwotGuLUtp9Hq7Pvf3oQrjUM44VGUcqjEO1RmHGoxDTcKhHrfHvXooYxyKcaNPxo0+GTf6ZNzok3GjzxfsqWm3oWa+HyqnxDiUMQ6VGYcqjEM541CVcajGOFRnHGowDsW40Y1xoxvjRjfGjW6MG90YN7oxbnRj3OjGuNGNcaMb40bPjBs9M270zLjRM+NGz4wbPTNu9My40TPjRs+MGz0zbvTCuNEL40YvjBu9MG70wrjRC+NGL4wbvTBu9MK40QvjRnfGje6MG90ZN7ozbnRn3OjOuNGdcaM740Z3xo3ujBu9Mm70yrjRK+NGr4wbvTJu9Mq40SvjRq+MG70ybvTKuNEb40ZvjBu9MW70xrjRG+NGb4wbvTFu9Ma40RvjRm+MG70zbvTOuNE740bvjBu9M270zrjRO+NG74wbvTNu9M640QfjRh+MG30wbvTBuNEH40Z/xUnImW7drNPSN0P96PVniBYBokeAGBEgZgCIV5z8XA9h9BBt5Mvlbd6+en0HyOoARR3A1QH4DQ0A+O0MAPjNDAD4rQwA+I18CFASv40BgLiJSxI3cUniJi5J3MQliZu4JHETlyRu4pLETVySuolN3cSmbmJTN7Gpm/gl5+iXAqib2NRNbOomNnUTm7qJs7qJs7qJs7qJs7qJX9J/sBRA3cRZ3cRZ3cRZ3cRZ3cRF3cRF3cRF3cRF3cQv6a1YCqBu4qJu4qJu4qJu4qJuYlc3saub2NVN7OomfknfyFIAdRO7uold3cSubmJXN3FVN3FVN3HlN3Ev10+J67XeAfCbGADwmxgA8JsYAPCbGADwmxgA8JsYAPCb+Big8ZsYAPCbGACom7ipm/gl/T5LAdRN3NRN3NRN3NRN3NRN3NVN3NVN3NVN3NVN/JJepqUA6ibu6ibu6ibu6ibu6iYe6iYe6iYe6iYe6iZ+SZ/WUgB1Ewv0bgEAdRML9G0BAHUTC/RsAQB1Ewt0bAEAdRMLdGwBAHUTC3RsAQB1Ewt0bAEAcRO7QMcWABA3sQt0bAEAcRN7EjexC3RsAQBxE7tAxxYAEDexC3RsHQMIdGwBAHUTC3RsAQB1Ewt0bAEAdRMLdGwBAHUTC3RsAQB1Ewt0bAEAdRMLdGwBAHUTC3RsAQB1Ewt0bAEAdRMLdGwBAHUTC3RsAQB1Ewt0bAEAdRMLdGwBAHUTC3RsAQB1Ewt0bAEAdRMLdGwBAHUTC3RsAQB1Ewt0bAEAdRMLdGwBAHUTC3RsAQB1Ewt0bAEAdROrd2y5eseWq3dsuXrHlqt3bLl6x5ard2y5eseWq3dsuXrHlqt3bLl6x5ard2y5eseWq3dsuXrHlit0bPVraXAf9wACJj4EUOjYOgYQMPExgICJjwEETHwMIGDiYwABEx8DCJj4GEDAxMcAZCJ7G4qtduo8FJlwzkORSeQ8FJkYzkO9YNWUNK9DnX4MwU9qGdOvs6R+u7q+/6y+osTmxxDc+gXBc6r3CK+osVmNYPoIWR+h6CO4PkLVR6D3Akbo+giDH6HaMYKAnY8RahKwM0IQsDNCELAzQuC3cy43hJoeIPDbGSLw2xki8NsZIvDbGSLw2xki8Ns5z3pBKPYAwfjtDBH47QwR+O0MEQTsjBAE7DzGDcEeIAjYGSEI2BkhCNgZIQjYGSEI2BkgZAE7f0QYDxAE7IwQBOyMEPjtfPoTvgvC6cndAwR+O0MEfjtDBH47QwR+O3vNN4T5DcKDr55vv4yR+23ycprrDMzv8sXA/OZfC1z4c8JiYP5UsRiYP4MsBhZILGuBfTdggTS0FlggO60F3i1pld2SVtktafluSct3S1q+W9Ly3ZKWB9NS7ZfB67hdW1J/xw0mJYBbgy2sdj2E0FJ7gBtsXSHcYMsK4fpeuNK3hGcE/pu80wPhC0LtCdm0tMvXrv5h7vaOy+/Spbj8Ll2Ky397txK38d/cLcXlT0pLcfmT0lJc/qT0Y7jXUWy0B7i+Fy5/UlqKGy1VAdxoqQrgRktVADdaqjrG7cFSVb5+7Zz7A9xgqQrhBktVCDdYqkK4vhdusFSFcIOlKoQrkKrGtdKgPnq62AWSEkIQSD8AYQgkGoTAn1Javp6+bf6gD2DwJw+IwJ8mIILrI/BbHyLwmxwi8NsZIvDbGSLw2xkhCNQBQgR9OwvUAUIEfTsL1AFCBH07C9QBQgR9OwvUAUIEeTs3gTpAiCBv5yZQBwgR5O3ckrydm0AdIESQt3MTqAOECPJ2bgJ1gAhBoA4QIujbWaAOECLo21mgDhAi6NtZoA4QIujbWaAOECLo21mgDhAi6NtZoA4QIujbWaAOECLo21mgDhAi6NtZoOAPIujbWaCEDyLo21mgKA8i6NtZoMwOIujbWaBwDiLo21mgFA4i6NtZoLgNIujbWaBcDSLo29n17ez6dnZ9Ows06UEEfTu7vp2rvp0Fegchgr6dBfoBIYK+nQV6/CCCvp0Fuvkggr6dBTr0EIJALx5E0LezQH8dRNC3s0DPHETQt7NAHxxE0LezQG8bRNC3s0C/GkTQt7NADxpE0LezQF8ZRNC3s0CvGETQt7NAVxhE0LezQFcYRNC3s35XWNPvCmv6XWFNvyus6XeFNf2usKbfFdb0u8KafldY0+8Ka/pdYU2/K6zpd4U1/a6wpt8V1vS7wpp+V1jT7wrr+l1hXb8rrOt3hXX9rrCe5O3c9bvCun5XWNfvCuv6XWFdvyus63eFdf2usK7fFdb1u8K6fldY1+8K6/pdYV2/K6zrd4V1/a6wrl+01fWLtrp+0VbXL9rq+kVbXaDiyWu+IPh3Hzl3f3Xtl8HruF1bUn/H5V/AK3EFqqOW4vK7aSkuv8d+CLdZeb+45fIAl995S3H5/bgUl9+lS3H5byl/DPf6tVv2B7j8t59LcYOlKoQbLFUBXIHKr6W4wVIVwo2WqlK64Kb2ADdaqgK4vhdutFQFcMOlqmPccKnqGDdcqjrGDZeqDnEFqtqW4oZLVce4e6Uqgbq4pbi+F+5eqUqgsm4p7l6pSqAKbynuXqlKoGJvKe5eqUqgum8V7j9Of/v/fvrrzz/96Zc//+30kq//7//8+u+//fyXX9//9rf//9/n/+d08f8C"},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["aztec(private)","aztec(noinitcheck)"],"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":"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":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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S+qpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWpGcWlGcWlGcWlGcWlGcV1YUm9NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NKO4NaO4NaO4NaO4NaO4Lyypt2YUt2YUt2YUt2YUt2YUt2YUt2YUt2YUt2YUt2YU9/sbxbxeCsq+H7x0Xvv71dn+8NI937p4XO37xaOdP178t1ZnnVZXnVZ3nVZPmVbfX5n+ulZbnVZ7nVajTqtZp9U601KvMy31OtNSrzMt9TrTUtSZlqLOtBR1pqWoMy29v6j/da3WmZaizrQUdaalqDMtRZ1pKetMS1lnWso601LWmZbef6vFr2u1zrSUdaalrDMtZZ1pKetMS6POtDTqTEujzrQ06kxL779Z5te1WmdaGnWmpVFnWhp1pqVRZ1qadaalWWdamnWmpVlnWnr/7U59t5dW88ffxX7/7U45zktB6/xY0DMmj9XypaA4Py+orXW9XHzW68XxZqvz5eK5xsvFcf+o/1b9+tDV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mlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlEcmlGcmlGcmlGcmlGcmlGcF5bUUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKUzOKSzOKSzOKSzOKSzOK68KSemlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWlGcWtGcWtGcWtGcWtGcV9YUm/NKG7NKG7NKG7N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0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi0Izi1Izi1Izi1Izi1IzivLCknppRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRnJpRXJpRXJpRXJpRXJpRXBeW1EszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszikszilszilszilszilszivvCknprRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRnFrRvFoRvFoRvFoRvFoRvFcWFIfzSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezSgezCjmhRnFuyArqe+CrKS+C7KS+i7ISuq7ICup74KspL4LspL6LshK6rsgLakxo3gXpCU1ZhTvgrSkxoziXZCW1JhRvAvSkhozindBWlJjRvEuSEtqzCjeBWlJjRnFuyAtqTGjeBekJTVmFO+CtKTGjOJdkJbUmFG8C9KSGjOKd0FaUmNG8S5IS2rMKN4FaUmNGcW7IC2pMaN4F6QlNWYU74K0pMaM4l2QltSYUbwL0pIaM4r3f0BLaswo3v8BLakxo3j/B7Skxozi/R/Qkhozivd/QEtqzCjeBWlJjRnFuyAtqTGjeBekJTVmFO+CtKTGjOJdkJbUmFG8C9KSGjOKd0FaUmNG8S5IS2rMKN4FaUmNGcW7IC2pMaN4F6QlNWYU74K0pMaM4l2QltSYUbwL0pIaM4p3QVpSY0bxLkhLaswo3gVpSY0ZxbsgLakxo3gXpCU1ZhTv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HJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRHJpRnJpRnJpRnJpRnJpRnBeW1FMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMzilMziksziksziksziksziuvCknppRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFpRnFrRnFrRnFrRnFrRnFfWFJvzShuzShuzShuzShuzShuzShuzShuzShuzShuzShuzShuzShuzShuzShuzShuzShuzShu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ZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSnZhSnZhSnZhSnZhTnhSX11Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi0ozi0ozi0ozi0oziurCkXppRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpR3JpR3JpR3JpR3JpR3BeW1Fszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilsz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S+qjJfXRkvpoSX20pD5aUh8tqQ+W1OvCknpdWFKvC0vqdWFJvS4sqdeFJfW6sKReF5bU68KSel1aUjctqZuW1E1L6qYlddOSumlJ3bSkblpSNy2pm5bUXUvqriV115K6a0ndtaTuWlJ3Lam7ltRdS+quJXVoSR1aUoeW1KEldWhJHVpSh5bUoSV1aEkdWlKnltSaul+aul+aul+pJXVqSZ1aUqeW1KkldWpJPbSkHlpSDy2pNXW/NHW/NHW/NHW/hpbUQ0vqoSX11JJ6akk9taSeWlJPLamnltRTS+qpJfXUknpqSb20pF5aUi8tqZeW1EtL6qUl9dKSemlJvbSk1ozi0ozi0ozi0ozi0ozi0ozi0ozi0ozi0ozi0ozi0ozi0ozi0ozi0ozi0ozi0ozi0ozi0ozi0ozi0ozi0ozi1ozi1ozivj7Vs5XGyvb75W9ut93Xp3qy0uN2s1a7n+qpSo/b/VTPVHrc7qd6otLjdrFnT+8Le/b0btizp3fDnj29W9cKCq2g1AoaWkFTK2hpBWlJ3bSk7lpSdy2pu5bUXUvqriV115K6a0ndtaTuWlJ3LalDS+rQkjq0pA4tqUNL6tCSOrSkDi2pQ0vq0JI6taROLalTS+rUkjq1pE4tqVNL6tSSOrWkTi2ph5bUQ0vqoSX10JJ6aEk9tKQeWlIPLamHltRDS+qpJfXUknpqST21pJ5aUk8tqaeW1FNL6qkl9dSSemlJvbSkXlpSLy2pl5bUS0vqpSX10pJ6aUm9tKTeWlJvLam3ltRbS+qtJfXWknprSb21pN5aUm8tqY+W1EdL6qMl9dGS+mhJfbSkPlpSHy2pj5bUB0vqc2FJfS4sqc+FJfW5sKQ+F5bU58KS+lxYUp8LS+qjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWjGcWj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ZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSHZhSnZhSnZhSnZhSnZhTnhSX11Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi1Izi0ozi0ozi0ozi0oziurCkXppRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpRXJpR3JpR3JpR3JpR3JpR3BeW1FszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszilszivvdjWK/Ir+/9LXOHwt66+J5XS9Xz7heLm+tvVnJ6t8rWXu8XD1+b/YUavbdbeUvbbZVarZXajYqNQu9o79x8Zzfe21zvRYf7fxePvT+/x8pH5oW/iPlL/lfSvu20uu12ZwP/qXcdffXwq+Rf3f9bw3Ts8tf0TA9v/wFDU96hvkrGqbnmPZtqny5+n7re6OBzzWbzP3ydj3P+d/frufnmk0eNJuVmh2Vmp2VmqWnpH//54mIl88T44fPE/OT3d35ebOf7O7OT5tdn+zuzs+b/WR3d37e7Ce7u/PzZj/Z3Z2fN5uVmv1cE9SDZj/XBPWg2UoT1Ko0Qa1KE9SuNEHtShPUrjRB7UoT1LtvO/mlzVaaoHalCWpXmqB2pQlqV5qgTqUJ6lSaoE6lCepUmqDefQvRL2220gR1Kk1Qp9IEdSpNUKfQBHWuQhPUuQpNUOcqNEGdq9AEda6s1GyhCepchSaocxWaoM5VaII6V6UJqlWaoFqlCapVmqBapQnq3bf2/dJmK01QrdIE1SpNUK3SBNUqTVC90gTVK01QvdIE1StNUO++TfOXNltpguqVJqheaYLqlSaoXmmCikoTVFSaoKLSBBWVJqh333L7S5utNEFFpQkqKk1QUWmCikoTVFaaoLLSBJWVJqisNEG9+/bpX9pspQkqK01QWWmC+mzbvn/ebKUJ6rNt+/55s5UmqM+27fvnzVaaoN592/cvbbbSBDUqTVD23vFnN1tpgrL3jT+5WXvX+LObrTRBfbKd5A+arTRBfbKd5A+arTRBfbKd5A+arTRBVdpJfirtJD+VdpKfSjvJT6Wd5KfSTvJTaSf5qbST/FTaSX4q7SQ/lXaSn0o7yU+lneSn0k7yU2kn+am0k/xU2kl+Ku0kP5V2kp9KO8lPpZ3kp9JO8lNpJ/mptJP8VNpJfirtJD+VdpKfSjvJT6Wd5KfSTvJTaSf5KbSTvF1XoaXk37qtM0N967bOEPWt2zpT1Ldus1S3deaob93WGaS+dVtnkvrWbZ1R6lu3pWapQuvJv3VbapYqtKD8W7elZqlCK8q/dVtqliq0pPxbt6VmqUJryr91W2qWKrSo/Fu3pWapQqvKv3VbapYqtKz8W7elZqlC68q/dVtqliq0sPxbt6VmqUIry791W2qWKrS0/Fu3pWapQmvLv3VbapYqtLj8W7elZqlCq8u/dVtqliq0vPxbt6VmqULry791W2qWKrTA/Fu3pWapQivMv3VbapYqtMT8W7elZqlCa8y/dVtqliq0yPxbt6VmqUKrzL91W2qWKrTM/Fu3pWapQuvMv3VbapYqtND8W7elZqlCK82/dVtqliq01Pxbt6VmqUJrzb91W2qWKrTY/Fu3pWapQqvNv3VbapYqtNz8W7elZqlC682/dVtqliq04Pxbt6VmqUIrzr91W2qWKrTk/Fu3pWapQmvOv3VbapYqtOj8W7elZqlCq86/dVtqliq07Pxbt6VmqULrzr91W2qWKrTw/Fu3pWapQivPv3VbapYqtPT8W7elZqlCa8+/dVtplmql9p63UnvPW6m9563U3vN2ZaluK81SrdTe81Zq73krtfe8ldp73krtPW+l9p63UnvPW6m9563U3vNWau95K7X3vJXae95K7T1vpfaet1J7z1upveet1N7zVmrveSu197yV2nveSu09b6X2nrdSe89bqb3nrdTe81Zq73krtfe8ldp73krtPW+l9p63UnvPW6m9563U3vNWau95K7X3vJXae95K7T1vpfaet1J7z1upveet1N7zVmrveSu197yV2nveSu09b6X2nrdSe89bqb3nrdTe81Zq73krtfe8ldp73krtPW+l9p63UnvPW6m9563U3vNWau95K7X3vJXae95K7T1vpfaet1J7z1upveet1N7zVmrveSu197yV2nveSu09b6X2nrdSe89bqb3nrdTe81Zq73krtfe8ldp73krtPW+l9p63UnvPW6m9563U3vNWau95K7X3vJXae95K7T1vpfaet1J7z1upveet1N7zVmrveSu197yV2nveSu09b6X2nvdSe897qb3nvdTe815q73m/slS3lWap/tn2nq/+0u1+o9tPNks96PbdZ6mY8/tLZ+s/77aNvV/+as525d91+3sH56N38P77yf9dHcyW/bWDed7qoH34DvqH7yA+fAdJd7Cu9vLS68r9KHnnfm34nB+S9/33ff/Sbmepblepbu0Z4tnd2vPGv7fbB7N/t2eTZ3drzzHP7taeeZ7drT0fPbvbLNXt55qlHnX7uWapR91+rlnqUbefa5Z61G2pWSpKzVJRapaKUrNUlJql3n/f9y/tttQsFaVmqSg1S0WpWSpKzVJZapbKUrNUlpqlstQs9f77vn9pt6VmqSw1S2WpWSpLzVJZapYapWapUWqWGqVmqVFqlnr/fd+/tNtSs9QoNUuNUrPUKDVLjVKz1Cw1S81Ss9QsNUvNUrPU++/7/qXdlpqlZqlZapaapWapWWqWmqVWqVlqlZqlVqlZapWapd5/3/cv7bbU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c5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5CLc5Cbc5Cbc5Cbc5Cbc5D70jJ7cw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw5ycw7ycA7ycA7ycA7ycA7yXFpmH85BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs5BHs1BtktzkHdFWGbfFWGZfVeEZfZdEZbZd0VYZt8VYZl9V4Rl9l0Rltl3RVxmaw7yrojLbM1B3hVxma05yLsiLrM1B3lXxGW25iDvirjM1hzkXRGX2ZqD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OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQc5OQe5OAe5OAe5OAe5OAe5Li2zF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgF+cgN+cgN+cgN+cgN+cg96Vl9uYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OYc5OEc5OEc5OEc5OEc5Lm0zD6cgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzycgzyag+yX5iDvirDMvivCMvuuCMvsuyIss++KsMy+K8Iy+64Iy+y7Iiyz74q4zNYc5F0Rl9mag7wr4jJbc5B3RVxmaw7yrojLbM1B3hVxma05yLsiLrM1B3lXxGW25iDvirjM1hzkXRGX2ZqDvCviMltzkHdFXGZrDvKuiMtszUHeFXGZrTnIuyIuszUHeVfEZbbmIO+KuMzWHORdEZfZmoO8K+IyW3OQd0VcZmsO8q6Iy2zNQd4VcZmtOci7Ii6zNQd5V8RltuYg74q4zNYc5F0Rl9mag7wr4jJbc5B3RVxmaw7yrojLbM1B3hVxma05yLsiLrM1B3lXxGW25iDvirjM1hzkXRGX2ZqDvCviMltzkHdFXGZrDvKuiMtszUHeFXGZrTnIuyIuszUHeVfEZbbmIO+KuMzWHORdEZfZmoO8K+IyW3OQd0VcZmsO8q6Iy2zNQd4VaZndOAfZOAfZOAfZOAfZLi2zG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgG+cgO+cgO+cgO+cgO+cg+6VlduccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZOccZHAOMjgHGZyDDM5BxqVldnAOMjgHGZyDDM5BBucgg3OQwTnI4BxkcA4yOAcZnIMMzkEG5yCDc5DBOcjgHGRwDjI4BxmcgwzOQQbnIINzkPHuDrJfkd9f+lrnjxW9dfG8rperZ1wvl7fW3qxk9e+VrD1erh7fu92luj2Vun13G/pru22luu2luo1S3WapbkepbmepbulZ6p7/+nmdBXM+6PbbtwuvhV8j/+763zum56m/pGN6pvorOk56rvpLOqZnq7+kY3q++ks6fsqM1fLl/SDOg0/iK17fPEZ7vTi+V5RcRYOraL57Ret6ufisNypaXEWbq+hof4+e49ufWlHjKupcRVxmDy6zB5fZY3IVLa4iLrPH0SqaF1dR4yp678z+9oih7y99/+f/WNEbrzzWSyH3n2d7Yy6f8eE7yA/fwfjwHXDvOZN7z5mbq+jYf+/2ju8vPdv11l2FdX34DtqH7+AZ74FzvNzLWteje1mnvbz0GdeDl+67fX/pvsdrIW2/9dp5ne//ZrL113f8v/35h6tPv/bvV5/ex7/987fJnrLq4Oswfz/M/DrM5x3m+DrM5x3m/DrM5x3m+jrM5x3m/vDzyIefaveHn2r3h59qN35n5x/oAL+z8w90kNr9vj24irhvaDf3De3m7vZv7m7/4e72H+5u/+lcRcFVxGX24TL7cJl9uMw+XGYfLbPz0jI7Ly2z89IyOy8ts/PSMjsvLbPz0jI7Ly2z89IyOy8usxuX2Y3L7MZlduMyu3GZ3bjMblxmNy6zG5fZjcvszmV25zK7c5nduczuXGZ3LrM7l9mdy+zOZXbnMju4zA4us4PL7OAyO7jMDi6zg8vs4DI7uMwOLrOTy+zkMju5zE4us5PL7OQym5P9ycn+5GR/JpfZg8vswWX24DJ7cJk9uMweXGYPLrMHl9mc7E9O9icn+5OT/Tm5zJ5cZk8usyeX2ZPL7Mll9uQye3KZvbjMXlxmLy6zF5fZi8vsxWX24jJ7cZm9uMxeXGZvLrM3l9mby+zNZTbnIJNzkMk5yOQcZHIOMjkHmZyDTM5BJucgk3OQyTnI5Bxkcg4yOQeZnINMzkEOzkEOzkEOzkEOzkGOS8vswTnIwTnIcX2qp0CNle33y9/etTuuT/UMqH+g30/1BKjH/bZP9fynf6DfT/X0p3+g30/17Kd/oF/tydnjOXb2qRVpT84eTXty9miLq2hzFR2ton5xFTWuos5VxGV25zK7c5nduczuXGZ3LrM7l9nBZXZwmR1cZgeX2cFldnCZHVxmB5fZwWV2cJmdXGYnl9nJZXZymZ1cZieX2clldnKZnVxmJ5fZg8vswWX24DJ7cJk9uMweXGYPLrMHl9mDy+zBZfbkMntymT25zJ5cZk8usyeX2ZPL7Mll9uQye3KZvbjMXlxmLy6zF5fZi8vsxWX24jJ7cZm9uMxeXGZvLrM3l9mby+zNZfbmMntzmb25zN5cZm8uszeX2YfL7MNl9uEy+3CZfbjMPlxmHy6zD5fZh8vso2X2vLTMnpeW2fPSMnteWmbPS8vseWmZPS8ts+elZfa8tMyeF5fZjcvsxmV24zKbc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CTc5CLc5CLc5CLc5CLc5Dr0jJ7cQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycQ5ycw5ycw5ycw5ycw5yX1pmb85Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5Bbs5BHs5BHs5BHs5BHs5BnkvL7MM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yMM5yKM5yLg0B3lXhGX2XRGW2XdFWGbfFWGZfVeEZfZdEZbZd0VYZt8VYZl9V8RltuYg74q4zNYc5F0Rl9mag7wr4jJbc5B3RVxmaw7yrojL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86DbT3bH50G3n+yOz4NuP9kdnwfdfq5Z6kG3+3PNUo+6/Vyz1KNuS81Su9Qs9e5bOH5tt6VmqV1qltqlZqldapbapWapU2qWOqVmqVNqljqlZql3347za7stNUudUrPUKTVLnVKz1Kk0S82r0iw1r0qz1LwqzVLzqjRLzStLdVtplppXpVlqXpVmqXlVmqXmVWqWaqVmqVZqlmqlZqlWapZ6921yv7bbUrNUKzVLtVKzVCs1S7VSs1QvNUv1UrNULzVL9VKz1Ltvefy13ZaapXqpWaqXmqV6qVmql5qlotQsFaVmqSg1S0WpWerdt6/+2m5LzVJRapaKUrNUlJqlotQslaVmqSw1S2WpWSpLzVLvvhX513ZbapbKUrNUlpqlstQslaVmqVFqlhqlZqlRapb6bBvFH3SbpbotNUt9to3iD7otNUt9to3iD7otNUvNUrPULDVL2bvNn95tqVnK3mn+9G5LzVL2LvOnd1tqlvpke88fdVtqlvpke88fdVtqliq193yW2ns+S+09n6X2ns9Se89nqb3ns9Te81lq7/kstfd8ltp7PkvtPZ+l9p7PUnvPZ6m957PU3vNZau/5LLX3fJbaez5L7T2fpfaez1J7z2epveez1N7zWWrv+Sy193yW2ns+S+09n6X2nq9Se89Xqb3nq9Te81Vq7/m6slS3lWapVWrv+Sq193yV2nu+Su09X6X2nq9Se89Xqb3nq9Te81Vq7/kqtfd8ldp7vkrtPV+l9p6vUnvPV6m956vU3vNVau/5KrX3fJXae75K7T1fpfaer1J7z1epveer1N7zVWrv+Sq193yV2nu+Su09X6X2nq9Se89Xqb3nq9Te81Vq7/kqtfd8ldp7vkrtPV+l9p6vUnvPV6m956vU3vNVau/5KrX3fJXae75K7T1fpfaer1J7z1epveer1N7zVWrv+Sq193yV2nu+Su09X6X2nq9Se89Xqb3nq9Te81Vq7/kqtfd8ldp7vkrtPV+l9p6vUnvPV6m956vU3vNVau/5KrX3fJXae75K7T1fpfaer1J7z1epveer1N7zVWrv+Sq193yV2nu+Su09X6X2nq9Se89Xqb3nq9Te81Vq7/kqtfd8ldp7vkrtPV+l9p6vUnvPV6m956vU3vNVau/5KrX3fJXae75K7T1fpfaer1J7z3epvee71N7zXWrv+S6193xfWarbSrPULrX3fJfae75L7T3fpfae71J7z3epvee71N7zXWrv+S6193yX2nu+S+0936X2nu9Se893qb3nu9Te811q7/kutfd8l9p7vkvtPd+l9p7vUnvPd6m957vU3vNdau/5LrX3fJfae75L7T3fpfae71J7z3epvee71N7zXWrv+S6193yX2nu+S+0936X2nu9Se893qb3nu9Te811q7/kutfd8l9p7vkvtPd+l9p7vUnvPd6m957vU3vNdau/5LrX3fJfae75L7T3fpfae71J7z3epvee71N7zXWrv+S6193yX2nu+S+0936X2nu9Se893qb3nu9Te811q7/kutfd8l9p7vkvtPd+l9p7vUnvPd6m957vU3vNdau/5LrX3fJfae75L7T3fpfae71J7z3epvee71N7zXWrv+S6193yX2nu+S+0936X2nu9Se893qb3nu9Te811q7/kutfd8l9p7vkvtPd+l9p7vUnvPd6m956fU3vNTau/5KbX3/JTae36uLNVtpVnqlNp7fkrtPT+l9p6fUnvPT6m95+f9957HnN9fOlv/ebdt3F9UfX/p2a78u25/76B/+A6C7mC27K8dzPNWB/nhOxgfvoP54TtYdAfrai8vva7cj5J37teGz/kxeXepbk+lbt9/3/cv7daeIZ7drT1v/Hu7fTAfdns2eXa3Wapbe+Z5drf2fPTsbj/XLPWo2881Sz3q9nPNUg+6jc81Sz3q9nPNUo+6LTVLRalZ6v33ff/SbkvNUlFqlopSs1SUmqWi1CyVpWapLDVLZalZKkvNUu+/7/uXdltqlspSs1SWmqWy1CyVpWapUWqWGqVmqVFqlhqlZqn33/f9S7stNUuNUrPUKDVLjVKz1Cg1S81Ss9QsNUvNUrPULDVLvf++71/abalZapaapWapWWqWmqVmqVlqlZqlVqlZapWapVapWer9933/0m5LzVKr1Cy1Ss1Sq9Qs9f9v7952Jcmx8wC/UpJcB/JpDEkwjAEGkiHJBnyhd3d0T9ehVVtd03tyx3yl7JtBFyYyuRg7+CczMj6yX2outV9qLrVfai61X2outV9qLnX/et9/196+1Fxqv9Rcar/UXGq/1Fxqv9Rc6rzUXOq81FzqvNRc6rzUXOr+9b7/rr19qbnUeam51HmpudR5qbnUeaG5VDweLzSXunr7QnOpq7cvNJe6evtCc6mrt/FSvX2hudTV2xeaS129faG51NXbF5pLXb19qbnUeKm5FL7e97N7+1JzKXwd8Wf3Nl6qty81l8LXMn92b19qLvXfbN3z7/X2peZS/83WPf9eb19qLvVK655fvX2pudQrrXt+9fal5lKvtO751duXmku90rrnV29fai71SuueX719qbnUK617fvX2peZSr7Tu+dXbl5pLvdK651dvX2ou9Urrnl+9fam51Cute3719qXmUq+07vnV25eaS73SuudXb19qLvVK655fvX2pudQrrXt+9fal5lKvtO75Vf1LzaVead3zq/qXmku90rrnV/UvNZd6pXXPr+pfai71SuueX9W/1Fzq/nXPr58nPr31o893ent6nk9vfTrqO7296p5fCr8+cH51/C89Hi/X4/lyPV4v1+N4uR7ny/W4Xq7H/XI93i/X4/NqPe6Xm3Pdvkb6OFFf+rC+7vEvFU2uosVVFFxFT/nMH/H5G9E636mo1/zy9Wl8OXh9qqi4ipqraHMVHa2i56zz/NSKBlfR5CpaXEXBVZTap8i+P7P78fng02+co+Yq2lxFR6voPLiKuHn24ebZ5+7MnuN8+qvN617/13+1N945+3Mh13/XeOPb1Ikfvgf5w/egfvge9A/fg81ly8EqGrev0/n9irTPqPHQPqPGQ7sXNB7P+Myp/Oqn6+/dszzj81uffHznref+/Kv43PmlkLHfeu+fpiW/HH394P5lHvXzf39z9JmP/cvRZ878j7/5duh4yrKUf5zMX05m/XEyn3cy+4+T+byTuf84mc87meePk/m0k/mUFUf/OJm/nMzxx8l83smcf5zM553M9cfJfN7JDO072dB+WRkDvyu29+eHoev6SvvWXxm/K/ZX9GD/8D04P3oP5uOH78H44Xswf/ge4L9U/RU9iB++B/gvVX9FD0qbJdy+Qub3K9J+SRqT+yVpcb8kLe6XpMX9krS4X5LW3Z8J33tqZqzkKtKeUBtLe0JtLO0JtbG0J9RGaE+ojRhcRZOraHEVhfYpEty9r+AyO7jMDi6zg8vs5DI7uXl2cvPs5DL7OastPbUibp6dXGYnl9nJ3RtJ7t5IcfdGisvs4jK7uHsjxWV2cZldXGYXl9nFzbOLm2c3N89u7t5Ic/dGmptnc6tkjObujTSX2c1ldnOZ3Vxmby6zN5fZm8vszWX232GVjO9VxM2zN/fc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"},{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":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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cIOMQKZCJrAHbpAJ7IEbZKJ44G/FRrG134qN4lTfit2sj+bt+Wbmzfpo3r7FjmURG8WO5foaxUqkYsfyZo1ix7JbjWLHclCNYsdyUI1ix3JQj4u1Poe4b7GRHJT1OcR9i43koKzPIe5bbCQHZX0OcddiXzvm89tPKC//CfLynzC//CcsL/8J68t/wvbyn/DrrnCZlttPWEQav5qppPn2u1bm6e6zl4ur5/W4el7nufXZ0/7RHM5T6+q03y6W7dM6fufSYYjgmFwSXC65ZLhccilwueQicLnkMsPlkssCl0suK1wuuWxwueSC373kIvjday743Wsu+N1rLvjday4Cl0su+N1rLvjday743Wsu+N1rLvjdSy4zfveaC373mgt+95oLfveai8Dlkgt+95oLfveaC373mgt+95oLfveSy4LfveaC373mgt+95oLfveYicLnkgt+95oLfveaC373mgt+95oLfveSy4nevueB3r7ngd6+54HevuQhcLrngd6+54HevueB3r7ngd6+54HcvuWz43Wsu+N1rLvjday743WsuApdLLvjday743Wsu+N1rLvjday743UsuO373mgt+95oLfveaC373movA5ZILfveaC373mgt+95oLfveaC373iss+4XevueB3r7ngd6+54HevuQhcLrngd6+54HevueB3r7ngd6+54HcvuST87jUX/O41F/zuNRf87jUXgcslF/zuNRf87jUX/O41F/zuNRf87iWXjN+95oLfveaC373mgt+95iJwueSC373mgt+95oLfveaC373mgt+95ML71Spc8LvXXPC711zwu9dcBC6XXPC711zwu9dc8LvXXPC711zwu5dceL9ahQt+95oLfveaC373movA5ZILfveaC373mgt+95oLfveaC373kgvvV6twwe9ec8HvXnPB715zEbhccsHvXnPB715zwe9ec8HvXnPB715y4f1qFS743Wsu+N1rLvjday4Cl0su+N1rLvjday743Wsu+N1rLvjdSy5x36+WRb5fXKbSWIdMKX2/+A3CR415vbh4ndcbvC19XFouP3e7fWxuXFryfMNc8po/Lparz837sd4y7fcXfxM9rJmPLHrYpBJZ9LAxLLLogujxRA8boCOLHrY7YFr0b9KEbVCYkGYut4+9/9Tv0oTtkdiXJmybxrw0cd9Mal8a+jma0mz5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"},{"name":"verify_private_authwit","is_unconstrained":false,"custom_attributes":["aztec(private)","aztec(noinitcheck)","aztec(view)"],"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":"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":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"item","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"revert_code","type":{"kind":"integer","sign":"unsigned","width":8}},{"name":"start_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"end_gas_left","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_stack_item_compressed::PublicCallStackItemCompressed"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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"}],"outputs":{"globals":{"notes":[{"fields":[{"kind":"integer","sign":false,"value":"00000000000000000000000000000000000000000000000000000000aad5fd6b"},{"kind":"string","value":"PublicKeyNote"}],"kind":"tuple"}],"storage":[{"fields":[{"name":"signing_public_key","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}}],"kind":"struct"}}],"kind":"struct"}]},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"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":"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":"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":{"105":{"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::{\n execution::{get_chain_id, get_version, get_contract_address, get_block_number},\n storage::{raw_storage_read, storage_read}\n};\n\nstruct 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"},"111":{"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, gas::Gas,\n max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_request::PublicCallRequest, public_call_stack_item::PublicCallStackItem,\n public_call_stack_item_compressed::PublicCallStackItemCompressed, read_request::ReadRequest,\n note_hash::NoteHash, nullifier::Nullifier, log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_NOTE_HASHES_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_ENCRYPTED_LOGS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n MAX_NOTE_ENCRYPTED_LOGS_PER_CALL\n},\n header::Header, messaging::l2_to_l1_message::L2ToL1Message, utils::reader::Reader, traits::Empty\n};\n\n// When finished, one can call .finish() to convert back to the abi\nstruct PrivateContext {\n // docs:start:private-context\n inputs: PrivateContextInputs,\n side_effect_counter: u32,\n\n min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n args_hash: Field,\n return_hash: Field,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: BoundedVec<ReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n key_validation_requests_and_generators: BoundedVec<KeyValidationRequestAndGenerator, MAX_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n note_hashes: BoundedVec<NoteHash, MAX_NOTE_HASHES_PER_CALL>,\n nullifiers: BoundedVec<Nullifier, MAX_NULLIFIERS_PER_CALL>,\n\n private_call_requests : BoundedVec<PrivateCallRequest, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_requests : BoundedVec<PublicCallRequest, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n public_teardown_call_request: PublicCallRequest,\n l2_to_l1_msgs : BoundedVec<L2ToL1Message, MAX_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n note_encrypted_logs_hashes: BoundedVec<NoteLogHash, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL>,\n encrypted_logs_hashes: BoundedVec<EncryptedLogHash, MAX_ENCRYPTED_LOGS_PER_CALL>,\n unencrypted_logs_hashes: BoundedVec<LogHash, MAX_UNENCRYPTED_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n last_key_validation_requests: [Option<KeyValidationRequest>; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n\n fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n fn push_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n fn push_nullifier(&mut self, nullifier: Field) {\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() });\n }\n\n fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: nullified_note_hash, counter: self.next_counter() });\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage,\n nullifier_read_requests: self.nullifier_read_requests.storage,\n key_validation_requests_and_generators: self.key_validation_requests_and_generators.storage,\n note_hashes: self.note_hashes.storage,\n nullifiers: self.nullifiers.storage,\n private_call_requests: self.private_call_requests.storage,\n public_call_requests: self.public_call_requests.storage,\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: self.l2_to_l1_msgs.storage,\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n note_encrypted_logs_hashes: self.note_encrypted_logs_hashes.storage,\n encrypted_logs_hashes: self.encrypted_logs_hashes.storage,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\"Setting {0} as fee payer\", [self.this_address().to_field()]);\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n notify_set_min_revertible_side_effect_counter(self.min_revertible_side_effect_counter);\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number = MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request = self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one\n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale. We fetch new values from oracle and instruct\n // protocol circuits to validate them by storing the validation request in context.\n let request = get_key_validation_request(pk_m_hash, key_index);\n let request_and_generator = KeyValidationRequestAndGenerator { request, sk_app_generator: sk_generators[key_index] };\n // We constrain that the pk_m_hash matches the one in the request (otherwise we could get an arbitrary\n // valid key request and not the one corresponding to pk_m_hash).\n assert(request.pk_m.hash() == pk_m_hash);\n self.key_validation_requests_and_generators.push(request_and_generator);\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content, counter: self.next_counter() };\n self.l2_to_l1_msgs.push(message);\n }\n\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(&mut self, content: Field, secret: Field, sender: EthAddress) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\n\n // NB: A randomness value of 0 signals that the kernels should not mask the contract address\n // used in siloing later on e.g. 'handshaking' contract w/ known address.\n pub fn emit_raw_event_log_with_masked_address<let M: u32>(\n &mut self,\n randomness: Field,\n log: [u8; M],\n log_hash: Field\n ) {\n let counter = self.next_counter();\n let contract_address = self.this_address();\n let len = log.len() as Field + 4;\n let side_effect = EncryptedLogHash { value: log_hash, counter, length: len, randomness };\n self.encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_event_log(contract_address, randomness, log, counter);\n }\n\n pub fn emit_raw_note_log<let M: u32>(&mut self, note_hash_counter: u32, log: [u8; M], log_hash: Field) {\n let counter = self.next_counter();\n let len = log.len() as Field + 4;\n let side_effect = NoteLogHash { value: log_hash, counter, length: len, note_hash_counter };\n self.note_encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_note_log(note_hash_counter, log, counter);\n }\n\n pub fn call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_private_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n let (end_side_effect_counter, returns_hash) = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = end_side_effect_counter + 1;\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n self.private_call_requests.push(\n PrivateCallRequest {\n contract_address,\n call_context,\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter\n }\n );\n\n PackedReturns::new(returns_hash)\n }\n\n pub fn call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n is_delegate_call\n );\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n let item = PublicCallStackItemCompressed {\n contract_address,\n call_context,\n args_hash,\n returns_hash: 0,\n revert_code: 0,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty()\n };\n\n let call_request = PublicCallRequest { item, counter };\n self.public_call_requests.push(call_request);\n }\n\n pub fn set_public_teardown_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.set_public_teardown_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn set_public_teardown_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n is_delegate_call\n );\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n let item = PublicCallStackItemCompressed {\n contract_address,\n call_context,\n args_hash,\n returns_hash: 0,\n revert_code: 0,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty()\n };\n\n self.public_teardown_call_request = PublicCallRequest {\n item,\n counter,\n };\n }\n\n fn generate_call_context(\n self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> CallContext {\n let msg_sender = if is_delegate_call {\n self.msg_sender()\n } else {\n self.this_address()\n };\n let storage_contract_address = if is_delegate_call {\n self.this_address()\n } else {\n contract_address\n };\n CallContext { msg_sender, storage_contract_address, function_selector, is_static_call, is_delegate_call }\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n historical_header: Header::empty(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n}\n"},"119":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/payload.nr","source":"use dep::protocol_types::{address::AztecAddress, scalar::Scalar, point::Point};\nuse std::{\n embedded_curve_ops::fixed_base_scalar_mul as derive_public_key,\n hash::from_field_unsafe as fr_to_fq_unsafe, field::bn254::decompose\n};\n\nuse crate::{\n event::event_interface::EventInterface, oracle::unsafe_rand::unsafe_rand,\n utils::point::point_to_bytes, note::note_interface::NoteInterface,\n encrypted_logs::{\n header::EncryptedLogHeader, incoming_body::EncryptedLogIncomingBody,\n outgoing_body::EncryptedLogOutgoingBody\n},\n keys::public_keys::{OvpkM, IvpkM}\n};\n\npub fn compute_encrypted_event_log<Event, let NB: u32, let MB: u32, let OB: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n event: Event\n) -> [u8; OB] where Event: EventInterface<NB, MB> {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ivpk);\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext = EncryptedLogIncomingBody::from_event(event, randomness).compute_ciphertext(eph_sk, ivpk);\n let outgoing_body_ciphertext: [u8; 144] = EncryptedLogOutgoingBody::new(eph_sk, recipient, ivpk).compute_ciphertext(fr_to_fq(ovsk_app), eph_pk);\n\n let mut encrypted_bytes: [u8; OB] = [0; OB];\n // @todo We ignore the tags for now\n\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[64 + i] = eph_pk_bytes[i];\n }\n for i in 0..48 {\n encrypted_bytes[96 + i] = incoming_header_ciphertext[i];\n encrypted_bytes[144 + i] = outgoing_header_ciphertext[i];\n }\n for i in 0..144 {\n encrypted_bytes[192 + i] = outgoing_body_ciphertext[i];\n }\n // Then we fill in the rest as the incoming body ciphertext\n let size = OB - 336;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[336 + i] = incoming_body_ciphertext[i];\n }\n\n // Current unoptimized size of the encrypted log\n // incoming_tag (32 bytes)\n // outgoing_tag (32 bytes)\n // eph_pk (32 bytes)\n // incoming_header (48 bytes)\n // outgoing_header (48 bytes)\n // outgoing_body (144 bytes)\n // incoming_body_fixed (64 bytes)\n // incoming_body_variable (N * 32 bytes + 16 bytes padding)\n encrypted_bytes\n}\n\npub fn compute_encrypted_note_log<Note, let N: u32, let NB: u32, let M: u32>(\n contract_address: AztecAddress,\n storage_slot: Field,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n note: Note\n) -> [u8; M] where Note: NoteInterface<N, NB> {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ivpk);\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext = EncryptedLogIncomingBody::from_note(note, storage_slot).compute_ciphertext(eph_sk, ivpk);\n let outgoing_body_ciphertext: [u8; 144] = EncryptedLogOutgoingBody::new(eph_sk, recipient, ivpk).compute_ciphertext(fr_to_fq(ovsk_app), eph_pk);\n\n let mut encrypted_bytes: [u8; M] = [0; M];\n // @todo We ignore the tags for now\n\n 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 (N * 32 bytes + 16 bytes padding)\n encrypted_bytes\n}\n\n/// Converts a base field element to scalar field element.\n/// This is fine because modulus of the base field is smaller than the modulus of the scalar field.\nfn fr_to_fq(r: Field) -> Scalar {\n let (lo, hi) = decompose(r);\n\n Scalar { lo, hi }\n}\n\nfn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n // We use the unsafe version of `fr_to_fq` because multi_scalar_mul (called by derive_public_key) will constrain\n // the scalars.\n let eph_sk = fr_to_fq_unsafe(unsafe_rand());\n let eph_pk = derive_public_key(eph_sk);\n\n (eph_sk, eph_pk)\n}\n\nmod test {\n use crate::{\n encrypted_logs::payload::compute_encrypted_note_log, keys::public_keys::{OvpkM, IvpkM},\n test::mocks::mock_note::MockNoteBuilder\n };\n use dep::protocol_types::{address::AztecAddress, point::Point};\n use std::test::OracleMock;\n\n #[test]\n fn test_encrypted_note_log_matches_typescript() {\n // All the values in this test were copied over from `tagged_log.test.ts`\n let contract_address = AztecAddress::from_field(0x10f48cd9eff7ae5b209c557c70de2e657ee79166868676b787e9417e19260e04);\n let storage_slot = 0x0fe46be583b71f4ab5b70c2657ff1d05cccf1d292a9369628d1a194f944e6599;\n let ovsk_app = 0x03a6513d6def49f41d20373d2cec894c23e7492794b08fc50c0e8a1bd2512612;\n let ovpk_m = OvpkM {\n inner: Point {\n x: 0x1961448682803198631f299340e4206bb12809d4bebbf012b30f59af73ba1a15,\n y: 0x133674060c3925142aceb4f1dcd9f9137d0217d37ff8729ee5ceaa6e2790353d,\n is_infinite: false\n }\n };\n let ivpk_m = IvpkM {\n inner: Point {\n x: 0x260cd3904f6df16e974c29944fdc839e40fb5cf293f03df2eb370851d3a527bc,\n y: 0x0eef2964fe6640e84c82b5d2915892409b38e9e25d39f68dd79edb725c55387f,\n is_infinite: false\n }\n };\n\n let note_value = 0x301640ceea758391b2e161c92c0513f129020f4125256afdae2646ce31099f5c;\n let note = MockNoteBuilder::new(note_value).contract_address(contract_address).storage_slot(storage_slot).build();\n\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk);\n\n let recipient = AztecAddress::from_field(0x10ee41ee4b62703b16f61e03cb0d88c4b306a9eb4a6ceeb2aff13428541689a2);\n\n let log: [u8; 448] = compute_encrypted_note_log(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n recipient,\n note\n );\n\n // The following value was generated by `tagged_log.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let encrypted_note_log_from_typescript = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 70, 12, 14, 67, 77, 132, 110, 193, 234, 40, 110, 64, 144, 235, 86, 55, 111, 242, 123, 221, 193, 170, 202, 225, 216, 86, 84, 159, 112, 31, 167, 126, 79, 51, 186, 47, 71, 253, 172, 99, 112, 241, 59, 197, 241, 107, 186, 232, 87, 187, 230, 171, 62, 228, 234, 42, 51, 145, 146, 238, 242, 42, 71, 206, 13, 244, 66, 111, 195, 20, 203, 98, 148, 204, 242, 145, 183, 156, 29, 141, 54, 44, 220, 194, 35, 229, 16, 32, 204, 211, 49, 142, 112, 82, 202, 116, 241, 254, 146, 42, 217, 20, 189, 70, 228, 182, 171, 205, 104, 27, 99, 171, 28, 91, 244, 21, 30, 130, 240, 5, 72, 174, 124, 97, 197, 157, 248, 193, 23, 193, 76, 46, 141, 144, 70, 211, 45, 67, 167, 218, 129, 140, 104, 190, 41, 110, 249, 209, 68, 106, 135, 164, 80, 235, 63, 101, 80, 32, 13, 38, 99, 145, 91, 11, 173, 151, 231, 247, 65, 153, 117, 229, 167, 64, 239, 182, 126, 235, 83, 4, 169, 8, 8, 160, 4, 235, 252, 21, 96, 84, 161, 69, 145, 145, 215, 254, 161, 117, 246, 198, 65, 89, 179, 194, 90, 19, 121, 12, 202, 114, 80, 195, 14, 60, 128, 105, 142, 100, 86, 90, 108, 157, 219, 22, 172, 20, 121, 195, 25, 159, 236, 2, 70, 75, 42, 37, 34, 2, 17, 149, 20, 176, 32, 18, 204, 56, 117, 121, 34, 15, 3, 88, 123, 64, 68, 74, 233, 63, 59, 131, 222, 194, 192, 167, 110, 217, 10, 128, 73, 129, 172, 205, 103, 212, 60, 151, 141, 10, 151, 222, 151, 180, 43, 91, 148, 201, 110, 165, 10, 238, 32, 134, 235, 99, 216, 200, 182, 31, 22, 156, 18, 209, 222, 172, 239, 193, 212, 86, 99, 62, 70, 182, 45, 175, 241, 91, 202, 179, 225, 236, 95, 71, 66, 151, 225, 203, 53, 216, 85, 102, 130, 6, 8, 25, 180, 86, 58, 140, 198, 105, 102, 177, 42, 94, 115, 247, 145, 147, 24, 231, 39, 73, 27, 10, 219, 130, 115, 188, 74, 114, 5, 177, 199, 83, 183, 106, 87, 204, 238, 231, 72, 45, 240, 39, 174, 25, 98, 53, 187, 156, 159, 244, 38\n ];\n for i in 0..encrypted_note_log_from_typescript.len() {\n assert_eq(log[i], encrypted_note_log_from_typescript[i]);\n }\n assert_eq(encrypted_note_log_from_typescript.len(), log.len());\n }\n}\n"},"120":{"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_current_public_keys, public_keys::{OvpkM, IvpkM}},\n encrypted_logs::payload::compute_encrypted_note_log, oracle::logs_traits::LensForEncryptedLog\n};\nuse dep::protocol_types::{\n hash::sha256_to_field, address::AztecAddress, point::Point, abis::note_hash::NoteHash,\n constants::MAX_NOTE_HASHES_PER_CALL\n};\n\nunconstrained fn compute_unconstrained<Note, let N: u32, let NB: u32, let M: u32>(\n contract_address: AztecAddress,\n storage_slot: Field,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n note: Note\n) -> ([u8; M], Field) where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n compute(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk,\n ivpk,\n recipient,\n note\n )\n}\n\nfn compute<Note, let N: u32, let NB: u32, let M: u32>(\n contract_address: AztecAddress,\n storage_slot: Field,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n note: Note\n) -> ([u8; M], Field) where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n let encrypted_log: [u8; M] = compute_encrypted_note_log(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk,\n ivpk,\n recipient,\n note\n );\n let log_hash = sha256_to_field(encrypted_log);\n (encrypted_log, log_hash)\n}\n\nfn emit_with_keys<Note, let N: u32, let NB: u32, let M: u32>(\n context: &mut PrivateContext,\n note: Note,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n inner_compute: fn(AztecAddress, Field, Field, OvpkM, IvpkM, AztecAddress, Note) -> ([u8; M], Field)\n) where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n let note_header = note.get_header();\n let note_hash_counter = note_header.note_hash_counter;\n let storage_slot = note_header.storage_slot;\n\n 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 let ovsk_app: Field = context.request_ovsk_app(ovpk.hash());\n\n let (encrypted_log, log_hash) = inner_compute(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk,\n ivpk,\n recipient,\n note\n );\n\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n}\n\npub fn encode_and_encrypt_note<Note, let N: u32, let NB: u32, let M: u32>(\n context: &mut PrivateContext,\n ov: AztecAddress,\n iv: AztecAddress\n) -> fn[(&mut PrivateContext, AztecAddress, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n let ovpk = get_current_public_keys(context, ov).ovpk_m;\n let ivpk = get_current_public_keys(context, iv).ivpk_m;\n emit_with_keys(context, e.note, ovpk, ivpk, iv, compute);\n }\n}\n\npub fn encode_and_encrypt_note_unconstrained<Note, let N: u32, let NB: u32, let M: u32>(\n context: &mut PrivateContext,\n ov: AztecAddress,\n iv: AztecAddress\n) -> fn[(&mut PrivateContext, AztecAddress, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n let ovpk = get_current_public_keys(context, ov).ovpk_m;\n let ivpk = get_current_public_keys(context, iv).ivpk_m;\n emit_with_keys(context, e.note, ovpk, ivpk, iv, compute_unconstrained);\n }\n}\n\npub fn encode_and_encrypt_note_with_keys<Note, let N: u32, let NB: u32, let M: u32>(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n emit_with_keys(context, e.note, ovpk, ivpk, recipient, compute);\n }\n}\n\npub fn encode_and_encrypt_note_with_keys_unconstrained<Note, let N: u32, let NB: u32, let M: u32>(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N, NB>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n emit_with_keys(context, e.note, ovpk, ivpk, recipient, compute_unconstrained);\n }\n}\n"},"121":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/outgoing_body.nr","source":"use dep::protocol_types::{\n address::AztecAddress, scalar::Scalar, point::Point, constants::GENERATOR_INDEX__SYMMETRIC_KEY,\n hash::poseidon2_hash_with_separator\n};\nuse std::aes128::aes128_encrypt;\n\nuse crate::{keys::public_keys::IvpkM, utils::point::point_to_bytes};\n\nstruct EncryptedLogOutgoingBody {\n eph_sk: Scalar,\n recipient: AztecAddress,\n recipient_ivpk: IvpkM,\n}\n\nimpl EncryptedLogOutgoingBody {\n pub fn new(eph_sk: Scalar, recipient: AztecAddress, recipient_ivpk: IvpkM) -> Self {\n Self { eph_sk, recipient, recipient_ivpk }\n }\n\n /// Encrypts ephemeral secret key and recipient's ivpk --> with this information the recipient of outgoing will\n /// be able to derive the key with which the incoming log can be decrypted.\n pub fn compute_ciphertext(self, ovsk_app: Scalar, eph_pk: Point) -> [u8; 144] {\n // Again, we could compute `eph_pk` here, but we keep the interface more similar\n // and also make it easier to optimise it later as we just pass it along\n\n let mut buffer = [0 as u8; 128];\n\n let serialized_eph_sk_high = self.eph_sk.hi.to_be_bytes(32);\n let serialized_eph_sk_low = self.eph_sk.lo.to_be_bytes(32);\n\n let address_bytes = self.recipient.to_field().to_be_bytes(32);\n let serialized_recipient_ivpk = point_to_bytes(self.recipient_ivpk.to_point());\n\n for i in 0..32 {\n buffer[i] = serialized_eph_sk_high[i];\n buffer[i + 32] = serialized_eph_sk_low[i];\n buffer[i + 64] = address_bytes[i];\n }\n for i in 0..32 {\n buffer[i + 96] = serialized_recipient_ivpk[i];\n }\n\n // We compute the symmetric key using poseidon.\n let full_key: [u8; 32] = poseidon2_hash_with_separator(\n [ovsk_app.hi, ovsk_app.lo, eph_pk.x, eph_pk.y],\n GENERATOR_INDEX__SYMMETRIC_KEY as Field\n ).to_be_bytes(32).as_array();\n\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(buffer, iv, sym_key).as_array()\n }\n}\n\nmod test {\n use crate::{encrypted_logs::outgoing_body::EncryptedLogOutgoingBody, keys::public_keys::IvpkM};\n use dep::protocol_types::{\n address::AztecAddress, traits::Empty, constants::GENERATOR_INDEX__NOTE_NULLIFIER,\n scalar::Scalar, point::Point, hash::poseidon2_hash_with_separator\n };\n use std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\n\n use crate::context::PrivateContext;\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 body = EncryptedLogOutgoingBody::new(eph_sk, recipient, recipient_ivpk);\n\n let ciphertext = body.compute_ciphertext(sender_ovsk_app, eph_pk);\n\n // The following value was generated by `encrypted_log_outgoing_body.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let outgoing_body_ciphertext_from_typescript = [\n 127, 182, 227, 75, 192, 197, 54, 47, 168, 134, 233, 148, 251, 46, 86, 12, 73, 50, 238, 50, 31, 174, 27, 202, 110, 77, 161, 197, 244, 124, 17, 100, 143, 150, 232, 14, 156, 248, 43, 177, 16, 82, 244, 103, 88, 74, 84, 200, 15, 65, 187, 14, 163, 60, 91, 22, 104, 31, 211, 190, 124, 121, 79, 92, 239, 65, 185, 106, 51, 178, 168, 137, 84, 43, 79, 158, 151, 152, 83, 42, 170, 13, 106, 209, 254, 74, 39, 145, 73, 215, 17, 234, 196, 89, 30, 58, 120, 127, 88, 69, 121, 61, 18, 206, 89, 118, 243, 238, 177, 71, 73, 47, 147, 4, 155, 25, 173, 248, 206, 52, 17, 180, 122, 186, 106, 191, 252, 102, 197, 91, 16, 39, 94, 91, 224, 30, 168, 177, 26, 144, 5, 124, 128, 6\n ];\n\n 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"},"122":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/header.nr","source":"use dep::protocol_types::{address::AztecAddress, scalar::Scalar, point::Point};\n\nuse crate::keys::{point_to_symmetric_key::point_to_symmetric_key, public_keys::ToPoint};\n\nuse std::aes128::aes128_encrypt;\n\nstruct 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(32).as_array();\n aes128_encrypt(input, iv, sym_key).as_array()\n }\n}\n\n#[test]\nfn test_encrypted_log_header_matches_noir() {\n let address = AztecAddress::from_field(0xdeadbeef);\n let header = EncryptedLogHeader::new(address);\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let point = crate::keys::public_keys::IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n let ciphertext = header.compute_ciphertext(secret, point);\n\n // The following value was generated by `encrypted_log_header.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_header_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 194, 44, 7, 131, 160, 83, 64, 181, 98, 38, 153, 214, 62, 171, 253, 161, 111, 191, 28, 247, 216, 26, 222, 171, 176, 218, 48, 209, 73, 89, 200, 209\n ];\n\n assert_eq(ciphertext, expected_header_ciphertext_from_typescript);\n}\n"},"123":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/incoming_body.nr","source":"use crate::note::note_interface::NoteInterface;\nuse crate::event::event_interface::EventInterface;\nuse dep::protocol_types::{scalar::Scalar, point::Point};\n\nuse std::aes128::aes128_encrypt;\nuse crate::keys::{point_to_symmetric_key::point_to_symmetric_key, public_keys::IvpkM};\n\nstruct EncryptedLogIncomingBody<let M: u32> {\n plaintext: [u8; M]\n}\n\nimpl<let M: u32> EncryptedLogIncomingBody<M> {\n pub fn from_note<T, let N: u32>(note: T, storage_slot: Field) -> Self where T: NoteInterface<N, M> {\n let mut plaintext = note.to_be_bytes(storage_slot);\n EncryptedLogIncomingBody { plaintext }\n }\n\n pub fn from_event<T, let MR: u32>(\n event: T,\n randomness: Field\n ) -> Self where T: EventInterface<M, MR> {\n let mut plaintext = event.private_to_be_bytes(randomness);\n EncryptedLogIncomingBody { plaintext }\n }\n\n pub fn compute_ciphertext(self, eph_sk: Scalar, ivpk: IvpkM) -> [u8] {\n let full_key = point_to_symmetric_key(eph_sk, ivpk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(self.plaintext, iv, sym_key)\n }\n}\n\nmod test {\n use dep::protocol_types::{\n address::AztecAddress, scalar::Scalar, point::Point, traits::Serialize,\n abis::event_selector::EventSelector\n };\n\n use crate::{\n note::{note_header::NoteHeader, note_interface::NoteInterface},\n encrypted_logs::incoming_body::EncryptedLogIncomingBody, event::event_interface::EventInterface,\n context::PrivateContext, keys::public_keys::IvpkM\n };\n\n struct AddressNote {\n address: AztecAddress,\n owner: AztecAddress,\n randomness: Field,\n header: NoteHeader,\n }\n\n global ADDRESS_NOTE_LEN: Field = 3;\n global ADDRESS_NOTE_BYTES_LEN = 32 * 3 + 64;\n\n impl NoteInterface<ADDRESS_NOTE_LEN, ADDRESS_NOTE_BYTES_LEN> for AddressNote {\n fn compute_note_hiding_point(_self: Self) -> Point {\n crate::generators::Ga1\n }\n\n fn get_note_type_id() -> Field {\n 1\n }\n\n fn get_header(self) -> NoteHeader { self.header}\n\n fn set_header(&mut self, header: NoteHeader) {self.header = header; }\n\n fn compute_nullifier(_self: Self, _context: &mut PrivateContext, _note_hash_for_nullify: Field) -> Field {\n 1\n }\n\n fn compute_nullifier_without_context(_self: Self) -> Field {\n 1\n }\n\n fn serialize_content(self) -> [Field; ADDRESS_NOTE_LEN] { [self.address.to_field(), self.owner.to_field(), self.randomness]}\n\n fn deserialize_content(fields: [Field; ADDRESS_NOTE_LEN]) -> Self {\n AddressNote { address: AztecAddress::from_field(fields[0]), owner: AztecAddress::from_field(fields[1]), randomness: fields[2], header: NoteHeader::empty() }\n }\n\n fn to_be_bytes(self, storage_slot: Field) -> [u8; ADDRESS_NOTE_BYTES_LEN] {\n let serialized_note = self.serialize_content();\n\n let mut buffer: [u8; ADDRESS_NOTE_BYTES_LEN] = [0; ADDRESS_NOTE_BYTES_LEN];\n\n let storage_slot_bytes = storage_slot.to_be_bytes(32);\n let note_type_id_bytes = AddressNote::get_note_type_id().to_be_bytes(32);\n\n for i in 0..32 {\n buffer[i] = storage_slot_bytes[i];\n buffer[32 + i] = note_type_id_bytes[i];\n }\n\n for i in 0..serialized_note.len() {\n let bytes = serialized_note[i].to_be_bytes(32);\n for j in 0..32 {\n buffer[64 + i * 32 + j] = bytes[j];\n }\n }\n buffer\n }\n }\n\n impl AddressNote {\n pub fn new(address: AztecAddress, owner: AztecAddress, randomness: Field) -> Self {\n AddressNote { address, owner, randomness, header: NoteHeader::empty() }\n }\n }\n\n #[test]\n fn test_encrypted_note_log_incoming_body_matches_typescript() {\n // All the values in this test were copied over from `encrypted_note_log_incoming_body.test.ts`\n let note = AddressNote::new(\n AztecAddress::from_field(0x1),\n AztecAddress::from_field(0x2),\n 3\n );\n\n let storage_slot = 2;\n\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let ivpk = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n /// 1. `EncryptedLogIncomingBody::from_note` calls `note.to_be_bytes(storage_slot)` function which serializes\n /// the note to bytes - note that in the case of `AddressNote` the `to_be_bytes` function was automatically\n /// implemented by Aztec macros.\n let body = EncryptedLogIncomingBody::from_note(note, storage_slot);\n\n /// 2. `body.compute_ciphertext(...)` function then derives symmetric key from `eph_sk` and `ivpk` and encrypts\n // the note plaintext using AES-128.\n let ciphertext = body.compute_ciphertext(eph_sk, ivpk);\n\n // The following value was generated by `encrypted_note_log_incoming_body.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let note_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160, 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157, 131, 149, 96, 236, 253, 96, 172, 157, 30, 27, 176, 228, 74, 242, 190, 138, 48, 33, 93, 46, 37, 223, 130, 25, 245, 188, 163, 159, 223, 187, 24, 139, 206, 131, 154, 159, 130, 37, 17, 158, 114, 242, 141, 124, 193, 232, 54, 146, 96, 145, 100, 125, 234, 57, 43, 95, 115, 183, 39, 121, 232, 134, 229, 148, 25, 46, 77, 87, 127, 95, 7, 77, 188, 37, 234, 245, 142, 232, 87, 252, 28, 67, 67, 90, 214, 254, 89, 47, 68, 66, 187, 227, 8, 59, 162, 25, 141, 97, 141, 217, 197, 115, 15, 212, 202, 157, 41, 150, 62, 219, 57, 224, 92, 185, 212, 142, 94, 146, 41, 178, 145, 68, 169, 23, 185, 206, 138, 70, 47, 176, 210, 165, 236, 23, 206, 229, 108\n ];\n\n assert_eq(note_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..note_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], note_body_ciphertext_from_typescript[i]);\n }\n }\n\n struct TestEvent {\n value0: Field,\n value1: Field,\n value2: Field,\n }\n\n impl Serialize<3> for TestEvent {\n fn serialize(self) -> [Field; 3] {\n [self.value0, self.value1, self.value2]\n }\n }\n\n global TEST_EVENT_LEN: Field = 3;\n global TEST_EVENT_BYTES_LEN = 32 * 3 + 64;\n global TEST_EVENT_BYTES_LEN_WITHOUT_RANDOMNESS = 32 * 3 + 32;\n\n impl EventInterface<TEST_EVENT_BYTES_LEN, TEST_EVENT_BYTES_LEN_WITHOUT_RANDOMNESS> for TestEvent {\n fn get_event_type_id() -> EventSelector {\n EventSelector::from_signature(\"TestEvent(Field,Field,Field)\")\n }\n\n fn private_to_be_bytes(self, randomness: Field) -> [u8; TEST_EVENT_BYTES_LEN] {\n let mut buffer: [u8; TEST_EVENT_BYTES_LEN] = [0; TEST_EVENT_BYTES_LEN];\n\n let randomness_bytes = randomness.to_be_bytes(32);\n let event_type_id_bytes = TestEvent::get_event_type_id().to_field().to_be_bytes(32);\n\n for i in 0..32 {\n buffer[i] = randomness_bytes[i];\n buffer[32 + i] = event_type_id_bytes[i];\n }\n\n let serialized_event = self.serialize();\n\n for i in 0..serialized_event.len() {\n let bytes = serialized_event[i].to_be_bytes(32);\n for j in 0..32 {\n buffer[64 + i * 32 + j] = bytes[j];\n }\n }\n\n buffer\n }\n\n fn to_be_bytes(self) -> [u8; TEST_EVENT_BYTES_LEN_WITHOUT_RANDOMNESS] {\n let mut buffer: [u8; TEST_EVENT_BYTES_LEN_WITHOUT_RANDOMNESS] = [0; TEST_EVENT_BYTES_LEN_WITHOUT_RANDOMNESS];\n\n let event_type_id_bytes = TestEvent::get_event_type_id().to_field().to_be_bytes(32);\n\n for i in 0..32 {\n buffer[i] = event_type_id_bytes[i];\n }\n\n let serialized_event = self.serialize();\n\n for i in 0..serialized_event.len() {\n let bytes = serialized_event[i].to_be_bytes(32);\n for j in 0..32 {\n buffer[32 + i * 32 + j] = bytes[j];\n }\n }\n\n buffer\n }\n\n fn emit<Env>(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n }\n\n #[test]\n fn test_encrypted_log_event_incoming_body() {\n let test_event = TestEvent { value0: 1, value1: 2, value2: 3 };\n\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n\n let ivpk = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n let randomness = 2;\n\n let body = EncryptedLogIncomingBody::from_event(test_event, randomness);\n\n let ciphertext = body.compute_ciphertext(eph_sk, ivpk);\n\n // The following value was generated by `encrypted_event_log_incoming_body.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let event_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160, 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157, 131, 149, 96, 236, 253, 96, 172, 157, 30, 185, 29, 14, 152, 216, 130, 219, 151, 80, 185, 43, 223, 167, 8, 89, 189, 88, 188, 101, 137, 255, 136, 84, 252, 79, 18, 52, 3, 110, 54, 54, 206, 244, 209, 246, 226, 207, 247, 143, 253, 211, 75, 160, 224, 172, 41, 45, 7, 208, 137, 90, 56, 59, 4, 234, 48, 53, 23, 130, 230, 49, 249, 142, 243, 170, 72, 183, 242, 49, 124, 46, 52, 198, 75, 55, 102, 56, 89, 254, 67, 59, 157, 249, 120, 184, 67, 154, 16, 148, 227, 93, 37, 120, 199, 93, 166, 80, 127, 173, 52, 80, 135, 87, 1, 168, 164, 51, 48, 126, 120, 47, 102, 211, 227, 234, 170, 208, 99, 111, 198, 170, 226, 156, 244, 241, 174, 206, 30\n ];\n\n assert_eq(event_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..event_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], event_body_ciphertext_from_typescript[i]);\n }\n }\n}\n"},"127":{"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, MAX_NOTES_PER_PAGE, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, Select, Sort, SortOrder, Comparator, NoteStatus, PropertySelector},\n note_interface::NoteInterface, note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request\n};\nuse crate::oracle;\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 = serialized_note[selector.index].to_be_bytes(32);\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, let M: u32>(\n context: PrivateContext,\n storage_slot: Field,\n note: Note\n) where Note: NoteInterface<N, M> {\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 // Values are computed ahead of time because circuits evaluate all branches\n let is_equal = value_field == select.value.to_field();\n let is_lt = value_field.lt(select.value.to_field());\n\n if (select.comparator == Comparator.EQ) {\n assert(is_equal, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.NEQ) {\n assert(!is_equal, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.LT) {\n assert(is_lt, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.LTE) {\n assert(is_lt | is_equal, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.GT) {\n assert(!is_lt & !is_equal, \"Mismatch return note field.\");\n } else if (select.comparator == Comparator.GTE) {\n assert(!is_lt, \"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, let M: u32>(\n context: &mut PrivateContext,\n storage_slot: Field\n) -> (Note, Field) where Note: NoteInterface<N, M> {\n let note = get_note_internal(storage_slot);\n\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n\n context.push_note_hash_read_request(note_hash_for_read_request);\n (note, note_hash_for_read_request)\n}\n\npub fn get_notes<Note, let N: u32, let M: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, M, 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, M> + Eq {\n let opt_notes = get_notes_internal(storage_slot, options);\n\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, let M: 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, M, 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, M> + 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(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, let M: u32>(storage_slot: Field) -> Note where Note: NoteInterface<N, M> {\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].unwrap() // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal<Note, let N: u32, let M: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, M, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] where Note: NoteInterface<N, M> {\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\nunconstrained pub fn view_notes<Note, let N: u32, let M: u32>(\n storage_slot: Field,\n options: NoteViewerOptions<Note, N, M>\n) -> BoundedVec<Note, MAX_NOTES_PER_PAGE> where Note: NoteInterface<N, M> {\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"},"129":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/utils.nr","source":"use crate::{context::PrivateContext, note::{note_header::NoteHeader, note_interface::NoteInterface}};\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, let M: u32>(\n note_with_header: Note,\n context: &mut PrivateContext\n) -> Field where Note: NoteInterface<N, M> {\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, let M: u32>(note: Note) -> Field where Note: NoteInterface<N, M> {\n // TODO(#7771): inject compute_note_hash(...) func to notes with macros.\n let note_hash = note.compute_note_hiding_point().x;\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, let M: u32>(\n note: Note,\n note_hash_for_read_request: Field\n) -> Field where Note: NoteInterface<N, M> {\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, M> {\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// // TODO(#7771): inject compute_note_hash(...) func to notes with macros.\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, let M: u32>(note: Note) -> Field where Note: NoteInterface<N, M> {\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request)\n}\n\npub fn compute_note_hash_and_optionally_a_nullifier<T, let N: u32, let M: 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, M> {\n let mut note = deserialize_content(arr_copy_slice(serialized_note, [0; N], 0));\n note.set_header(note_header);\n\n // TODO(#7771): inject compute_note_hash(...) func to notes with macros.\n let note_hash = note.compute_note_hiding_point().x;\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"},"130":{"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,\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, N, M>(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note\n) -> NoteEmission<Note> where Note: NoteInterface<N, M> {\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 // TODO(#7771): inject compute_note_hash(...) func to notes with macros.\n let note_hash = note.compute_note_hiding_point().x;\n\n let serialized_note = Note::serialize_content(*note);\n assert(\n notify_created_note(\n storage_slot,\n Note::get_note_type_id(),\n serialized_note,\n note_hash,\n note_hash_counter\n )\n == 0\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(*note)\n}\n\npub fn create_note_hash_from_public<Note, N, M>(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note\n) where Note: NoteInterface<N, M> {\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 // TODO(#7771): inject compute_note_hash(...) func to notes with macros.\n let note_hash = note.compute_note_hiding_point().x;\n\n context.push_note_hash(note_hash);\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note<Note, N, M>(\n context: &mut PrivateContext,\n note: Note\n) where Note: NoteInterface<N, M> {\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, N, M>(\n context: &mut PrivateContext,\n note: Note,\n note_hash_for_read_request: Field\n) where Note: NoteInterface<N, M> {\n let note_hash_for_nullify = compute_note_hash_for_nullify_internal(note, note_hash_for_read_request);\n let nullifier = note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash_counter = note.get_header().note_hash_counter;\n let notification_note_hash = if (note_hash_counter == 0) {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifyng so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n let nullifier_counter = context.side_effect_counter;\n assert(notify_nullified_note(nullifier, notification_note_hash, nullifier_counter) == 0);\n\n context.push_nullifier_for_note_hash(nullifier, notification_note_hash)\n}\n\n"},"131":{"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 */\nstruct 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 */\nstruct 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"},"139":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, ARGS_HASH_CHUNK_COUNT,\n GENERATOR_INDEX__FUNCTION_ARGS, ARGS_HASH_CHUNK_LENGTH, MAX_ARGS_LENGTH\n},\n traits::Hash,\n hash::{\n pedersen_hash, compute_siloed_nullifier, sha256_to_field, pedersen_commitment,\n poseidon2_hash_with_separator\n}\n};\n// Note: pedersen_commitment is used only as a re-export here\nuse crate::oracle::logs_traits::{LensForEncryptedLog, ToBytesForUnencryptedLog};\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash<T, let N: u32, let M: u32>(\n contract_address: AztecAddress,\n log: T\n) -> Field where T: ToBytesForUnencryptedLog<N, M> {\n let message_bytes: [u8; N] = log.to_be_bytes_arr();\n // can't use N - not in scope error\n let n = message_bytes.len();\n let mut hash_bytes = [0; M];\n // Address is converted to 32 bytes in ts\n let address_bytes = contract_address.to_be_bytes_arr();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let len_bytes = (n as Field).to_be_bytes(4);\n for i in 0..4 {\n hash_bytes[32 + i] = len_bytes[i];\n }\n for i in 0..n {\n hash_bytes[36 + i] = message_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes = sender.to_field().to_be_bytes(32);\n let chain_id_bytes = chain_id.to_be_bytes(32);\n let recipient_bytes = recipient.to_field().to_be_bytes(32);\n let version_bytes = version.to_be_bytes(32);\n let content_bytes = content.to_be_bytes(32);\n let secret_hash_bytes = secret_hash.to_be_bytes(32);\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n poseidon2_hash_with_separator(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER\n )\n}\n\nstruct ArgsHasher {\n fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<let N: u32>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array<let N: u32>(args: [Field; N]) -> Field {\n hash_args(args.as_slice())\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n assert(args.len() <= MAX_ARGS_LENGTH, \"Args length exceeds maximum\");\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n let mut current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n\n let mut current_chunk_index = 0;\n let mut index_inside_current_chunk = 0;\n for i in 0..args.len() {\n current_chunk_values[index_inside_current_chunk] = args[i];\n index_inside_current_chunk+=1;\n if index_inside_current_chunk == ARGS_HASH_CHUNK_LENGTH {\n chunks_hashes[current_chunk_index] = poseidon2_hash_with_separator(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n current_chunk_index+=1;\n index_inside_current_chunk = 0;\n }\n }\n if index_inside_current_chunk > 0 {\n chunks_hashes[current_chunk_index] = poseidon2_hash_with_separator(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n poseidon2_hash_with_separator(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nfn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..MAX_ARGS_LENGTH {\n input.add(i as Field);\n }\n let hash = input.hash();\n assert(hash == 0x1cce4dbf69f14c44865919991ee1057922e34d7310ba237d71759aa422621ca9);\n}\n\n#[test]\nfn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd\n ];\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0095b2d17ab72f4b27a341f7ac63e49ec73935ae8c9181a0ac02023eb12f3284);\n}\n\n#[test]\nfn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0083ab647dfb26e7ddee90a0f4209d049d4660cab42000c544b986aaa84c55a3);\n}\n\n#[test]\nfn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"dummy\";\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x00629e88ebd6374f44aa6cfe07e251ecf07213ebc7267e8f6b578ae57ffd6c20);\n}\n\n#[test]\nfn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"Hello this is a string\";\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0098637962f7d34fa202b7ffad8a07a238c5d1fd897b82a108f7f467fa73b841);\n}\n"},"140":{"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"},"141":{"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: Field = 24;\n\nstruct NullifierMembershipWitness {\n index: Field,\n leaf_preimage: NullifierLeafPreimage,\n path: [Field; NULLIFIER_TREE_HEIGHT],\n}\n\nimpl NullifierMembershipWitness {\n pub fn deserialize(fields: [Field; NULLIFIER_MEMBERSHIP_WITNESS]) -> Self {\n let leaf_preimage_fields = arr_copy_slice(fields, [0; NULLIFIER_LEAF_PREIMAGE_LENGTH], 1);\n Self {\n index: fields[0],\n leaf_preimage: NullifierLeafPreimage::deserialize(leaf_preimage_fields),\n path: arr_copy_slice(\n fields,\n [0; NULLIFIER_TREE_HEIGHT],\n 1 + NULLIFIER_LEAF_PREIMAGE_LENGTH\n )\n }\n }\n}\n\n#[oracle(getLowNullifierMembershipWitness)]\nunconstrained fn get_low_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\nunconstrained pub fn get_low_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_low_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n\n#[oracle(getNullifierMembershipWitness)]\nunconstrained fn get_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\nunconstrained pub fn get_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n"},"142":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/logs.nr","source":"use dep::protocol_types::{address::AztecAddress, point::Point};\n\n// = 480 + 32 * N bytes\n#[oracle(emitEncryptedNoteLog)]\nunconstrained fn emit_encrypted_note_log_oracle<let M: u32>(_note_hash_counter: u32, _encrypted_note: [u8; M], _counter: u32) {}\n\nunconstrained pub fn emit_encrypted_note_log<let M: u32>(\n note_hash_counter: u32,\n encrypted_note: [u8; M],\n counter: u32\n) {\n emit_encrypted_note_log_oracle(note_hash_counter, encrypted_note, counter)\n}\n\n#[oracle(emitEncryptedEventLog)]\nunconstrained fn emit_encrypted_event_log_oracle<let M: u32>(_contract_address: AztecAddress, _randomness: Field, _encrypted_event: [u8; M], _counter: u32) {}\n\nunconstrained pub fn emit_encrypted_event_log<let M: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n encrypted_event: [u8; M],\n counter: u32\n) {\n emit_encrypted_event_log_oracle(contract_address, randomness, encrypted_event, counter)\n}\n\n// = 480 + 32 * N bytes\n#[oracle(computeEncryptedNoteLog)]\nunconstrained fn compute_encrypted_note_log_oracle<let N: u32, let M: u32>(\n _contract_address: AztecAddress,\n _storage_slot: Field,\n _note_type_id: Field,\n _ovsk_app: Field,\n _ovpk_m: Point,\n _ivpk_m: Point,\n _recipient: AztecAddress,\n _preimage: [Field; N]\n) -> [u8; M] {}\n\nunconstrained pub fn compute_encrypted_note_log<let N: u32, let M: u32>(\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n ovsk_app: Field,\n ovpk_m: Point,\n ivpk_m: Point,\n recipient: AztecAddress,\n preimage: [Field; N]\n) -> [u8; M] {\n compute_encrypted_note_log_oracle(\n contract_address,\n storage_slot,\n note_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n recipient,\n preimage\n )\n}\n\n// = 480 + 32 * N bytes\n#[oracle(computeEncryptedEventLog)]\nunconstrained fn compute_encrypted_event_log_oracle<let N: u32, let M: u32>(\n _contract_address: AztecAddress,\n _randomness: Field,\n _event_type_id: Field,\n _ovsk_app: Field,\n _ovpk_m: Point,\n _ivpk_m: Point,\n _recipient: AztecAddress,\n _preimage: [Field; N]\n) -> [u8; M] {}\n\nunconstrained pub fn compute_encrypted_event_log<let N: u32, let M: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n event_type_id: Field,\n ovsk_app: Field,\n ovpk_m: Point,\n ivpk_m: Point,\n recipient: AztecAddress,\n preimage: [Field; N]\n) -> [u8; M] {\n compute_encrypted_event_log_oracle(\n contract_address,\n randomness,\n event_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n recipient,\n preimage\n )\n}\n\n#[oracle(emitUnencryptedLog)]\nunconstrained fn emit_unencrypted_log_oracle_private<T>(_contract_address: AztecAddress, _message: T, _counter: u32) -> Field {}\n\nunconstrained pub fn emit_unencrypted_log_private_internal<T>(\n contract_address: AztecAddress,\n message: T,\n counter: u32\n) -> Field {\n emit_unencrypted_log_oracle_private(contract_address, message, counter)\n}\n\n#[oracle(emitContractClassUnencryptedLog)]\nunconstrained fn emit_contract_class_unencrypted_log_private<let N: u32>(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32\n) -> Field {}\n\nunconstrained pub fn emit_contract_class_unencrypted_log_private_internal<let N: u32>(contract_address: AztecAddress, message: [Field; N], counter: u32) -> Field {\n emit_contract_class_unencrypted_log_private(contract_address, message, counter)\n}\n"},"144":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/returns.nr","source":"#[oracle(packReturns)]\nunconstrained fn pack_returns_oracle(_returns: [Field]) -> Field {}\n\nunconstrained pub fn pack_returns(returns: [Field]) {\n let _unused = pack_returns_oracle(returns);\n}\n\n#[oracle(unpackReturns)]\nunconstrained fn unpack_returns_oracle<let N: u32>(_return_hash: Field) -> [Field; N] {}\n\nunconstrained pub fn unpack_returns<let N: u32>(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n"},"145":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_public_data_witness.nr","source":"use dep::protocol_types::{\n constants::PUBLIC_DATA_TREE_HEIGHT, public_data_tree_leaf_preimage::PublicDataTreeLeafPreimage,\n utils::arr_copy_slice\n};\n\nglobal LEAF_PREIMAGE_LENGTH: u32 = 4;\nglobal PUBLIC_DATA_WITNESS: Field = 45;\n\nstruct PublicDataWitness {\n index: Field,\n leaf_preimage: PublicDataTreeLeafPreimage,\n path: [Field; PUBLIC_DATA_TREE_HEIGHT],\n}\n\n#[oracle(getPublicDataTreeWitness)]\nunconstrained fn get_public_data_witness_oracle(\n _block_number: u32,\n _public_data_tree_index: Field\n) -> [Field; PUBLIC_DATA_WITNESS] {}\n\nunconstrained pub fn get_public_data_witness(block_number: u32, public_data_tree_index: Field) -> PublicDataWitness {\n let fields = get_public_data_witness_oracle(block_number, public_data_tree_index);\n PublicDataWitness {\n index: fields[0],\n leaf_preimage: PublicDataTreeLeafPreimage { slot: fields[1], value: fields[2], next_index: fields[3] as u32, next_slot: fields[4] },\n path: arr_copy_slice(fields, [0; PUBLIC_DATA_TREE_HEIGHT], 1 + LEAF_PREIMAGE_LENGTH)\n }\n}\n"},"146":{"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 fn get_key_validation_request(pk_m_hash: Field, key_index: Field) -> KeyValidationRequest {\n get_key_validation_request_internal(pk_m_hash, key_index)\n}\n\n"},"149":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/storage.nr","source":"use dep::protocol_types::{address::AztecAddress, traits::Deserialize};\n\n#[oracle(storageRead)]\nunconstrained fn storage_read_oracle<let N: u32>(address: Field, storage_slot: Field, block_number: Field, length: Field) -> [Field; N] {}\n\nunconstrained pub fn raw_storage_read<let N: u32>(\n address: AztecAddress,\n storage_slot: Field,\n block_number: u32\n) -> [Field; N] {\n storage_read_oracle(\n address.to_field(),\n storage_slot,\n block_number as Field,\n N as Field\n )\n}\n\nunconstrained pub fn storage_read<T, let N: u32>(\n address: AztecAddress,\n storage_slot: Field,\n block_number: u32\n) -> T where T: Deserialize<N> {\n T::deserialize(raw_storage_read(address, storage_slot, block_number))\n}\n\nmod tests {\n use crate::oracle::storage::{raw_storage_read, storage_read};\n use dep::protocol_types::address::AztecAddress;\n\n use std::test::OracleMock;\n use crate::test::mocks::mock_struct::MockStruct;\n\n global address = AztecAddress::from_field(29);\n global slot = 7;\n global block_number = 17;\n\n #[test]\n fn test_raw_storage_read() {\n let written = MockStruct { a: 13, b: 42 };\n\n let _ = OracleMock::mock(\"storageRead\").returns(written.serialize());\n\n let read: [Field; 2] = raw_storage_read(address, slot, block_number);\n assert_eq(read[0], 13);\n assert_eq(read[1], 42);\n }\n\n #[test]\n fn test_storage_read() {\n let written = MockStruct { a: 13, b: 42 };\n\n let _ = OracleMock::mock(\"storageRead\").returns(written.serialize());\n\n let read: MockStruct = storage_read(address, slot, block_number);\n assert_eq(read.a, 13);\n assert_eq(read.b, 42);\n }\n}\n"},"150":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/unsafe_rand.nr","source":"#[oracle(getRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n\n// Called `unsafe_rand` because we do not constrain in circuit that we are dealing with an actual random value.\n// Instead we just trust our PXE.\nunconstrained pub fn unsafe_rand() -> Field {\n rand_oracle()\n}\n"},"152":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; 2] {}\n\nunconstrained pub fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n"},"153":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/keys.nr","source":"use crate::keys::{PublicKeys, public_keys::{NpkM, IvpkM, OvpkM, TpkM}};\nuse dep::protocol_types::{address::{AztecAddress, PartialAddress}, point::Point};\n\n#[oracle(getPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\nunconstrained fn get_public_keys_and_partial_address_oracle_wrapper(address: AztecAddress) -> [Field; 13] {\n get_public_keys_and_partial_address_oracle(address)\n}\n\npub fn get_public_keys_and_partial_address(address: AztecAddress) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle_wrapper(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"},"155":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/notes.nr","source":"use crate::note::{note_header::NoteHeader, note_interface::NoteInterface};\n\nuse dep::protocol_types::{address::AztecAddress, utils::arr_copy_slice};\n\n#[oracle(notifyCreatedNote)]\nunconstrained fn notify_created_note_oracle<let N: u32>(\n _storage_slot: Field,\n _note_type_id: Field,\n _serialized_note: [Field; N],\n _note_hash: Field,\n _counter: u32\n) -> Field {}\n\nunconstrained pub fn notify_created_note<let N: u32>(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32\n) -> Field {\n notify_created_note_oracle(storage_slot, note_type_id, serialized_note, note_hash, counter)\n}\n\n#[oracle(notifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(_nullifier: Field, _note_hash: Field, _counter: u32) -> Field {}\n\nunconstrained pub fn notify_nullified_note(nullifier: Field, note_hash: Field, counter: u32) -> Field {\n notify_nullified_note_oracle(nullifier, note_hash, counter)\n}\n\n#[oracle(getNotes)]\nunconstrained fn get_notes_oracle<let N: u32, let S: u32>(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; N],\n _select_by_offsets: [u8; N],\n _select_by_lengths: [u8; N],\n _select_values: [Field; N],\n _select_comparators: [u8; N],\n _sort_by_indexes: [u8; N],\n _sort_by_offsets: [u8; N],\n _sort_by_lengths: [u8; N],\n _sort_order: [u8; N],\n _limit: u32,\n _offset: u32,\n _status: u8,\n _return_size: u32,\n _placeholder_fields: [Field; S]\n) -> [Field; S] {}\n\nunconstrained fn get_notes_oracle_wrapper<let N: u32, let S: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; N],\n select_by_offsets: [u8; N],\n select_by_lengths: [u8; N],\n select_values: [Field; N],\n select_comparators: [u8; N],\n sort_by_indexes: [u8; N],\n sort_by_offsets: [u8; N],\n sort_by_lengths: [u8; N],\n sort_order: [u8; N],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_fields: [Field; S]\n) -> [Field; S] {\n let return_size = placeholder_fields.len() as u32;\n get_notes_oracle(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n return_size,\n placeholder_fields\n )\n}\n\nunconstrained pub fn get_notes<Note, let N: u32, let NB: 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, NB> {\n let fields = get_notes_oracle_wrapper(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n placeholder_fields\n );\n let num_notes = fields[0] as u32;\n let contract_address = AztecAddress::from_field(fields[1]);\n for i in 0..placeholder_opt_notes.len() {\n if i < num_notes {\n // lengths named as per typescript.\n let return_header_length: u32 = 2; // num_notes & contract_address.\n let extra_preimage_length: u32 = 2; // nonce & note_hash_counter.\n let read_offset: u32 = return_header_length + i * (N + extra_preimage_length);\n let nonce = fields[read_offset];\n let note_hash_counter = fields[read_offset + 1] as u32;\n let header = NoteHeader { contract_address, nonce, storage_slot, note_hash_counter };\n let serialized_note = arr_copy_slice(fields, [0; N], read_offset + 2);\n let mut note = Note::deserialize_content(serialized_note);\n note.set_header(header);\n placeholder_opt_notes[i] = Option::some(note);\n };\n }\n placeholder_opt_notes\n}\n\n// Only ever use this in private!\n#[oracle(checkNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> Field {}\n\n// Only ever use this in private!\nunconstrained pub fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier) == 1\n}\n"},"156":{"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, utils::arr_copy_slice,\n constants::CONTRACT_INSTANCE_LENGTH, utils::reader::Reader\n};\n\n#[oracle(getContractInstance)]\nunconstrained fn get_contract_instance_oracle(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {}\n\n// Returns a ContractInstance plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstance)]\nunconstrained fn get_contract_instance_oracle_avm(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {}\n\nunconstrained fn get_contract_instance_internal(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n get_contract_instance_oracle(address)\n}\n\nunconstrained pub fn get_contract_instance_internal_avm(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {\n get_contract_instance_oracle_avm(address)\n}\n\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n let instance = ContractInstance::deserialize(get_contract_instance_internal(address));\n assert(instance.to_address().eq(address));\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"},"157":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr","source":"use dep::protocol_types::{abis::{function_selector::FunctionSelector}, address::AztecAddress};\n\n#[oracle(enqueuePublicFunctionCall)]\nunconstrained fn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) {}\n\nunconstrained pub fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nunconstrained fn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) {}\n\nunconstrained pub fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n}\n\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n\nunconstrained pub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n"},"159":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/execution.nr","source":"use dep::protocol_types::address::AztecAddress;\n\n#[oracle(getContractAddress)]\nunconstrained fn get_contract_address_oracle() -> AztecAddress {}\n\n#[oracle(getBlockNumber)]\nunconstrained fn get_block_number_oracle() -> u32 {}\n\n#[oracle(getChainId)]\nunconstrained fn get_chain_id_oracle() -> Field {}\n\n#[oracle(getVersion)]\nunconstrained fn get_version_oracle() -> Field {}\n\nunconstrained pub fn get_contract_address() -> AztecAddress {\n get_contract_address_oracle()\n}\n\nunconstrained pub fn get_block_number() -> u32 {\n get_block_number_oracle()\n}\n\nunconstrained pub fn get_chain_id() -> Field {\n get_chain_id_oracle()\n}\n\nunconstrained pub fn get_version() -> Field {\n get_version_oracle()\n}\n"},"162":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/map.nr","source":"use dep::protocol_types::{storage::map::derive_storage_slot_in_map, traits::ToField};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:map\nstruct Map<K, V, Context> {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\nimpl<K, T, Context> Storage<T> for Map<K, T, Context> {}\n\nimpl<K, V, Context> Map<K, V, Context> {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Map { context, storage_slot, state_var_constructor }\n }\n // docs:end:new\n\n // docs:start:at\n pub fn at(self, key: K) -> V where K: ToField {\n // TODO(#1204): use a generator index for the storage slot\n let derived_storage_slot = derive_storage_slot_in_map(self.storage_slot, key);\n\n let state_var_constructor = self.state_var_constructor;\n state_var_constructor(self.context, derived_storage_slot)\n }\n // docs:end:at\n}\n\n"},"164":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/public_mutable.nr","source":"use crate::context::{PublicContext, UnconstrainedContext};\nuse crate::oracle::storage::storage_read;\nuse dep::protocol_types::traits::{Deserialize, Serialize};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:public_mutable_struct\nstruct PublicMutable<T, Context> {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:public_mutable_struct\n\nimpl<T, Context> Storage<T> for PublicMutable<T, Context> {}\n\nimpl<T, Context> PublicMutable<T, Context> {\n // docs:start:public_mutable_struct_new\n pub fn new(\n // Note: Passing the contexts to new(...) just to have an interface compatible with a Map.\n context: Context,\n storage_slot: Field\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n PublicMutable { context, storage_slot }\n }\n // docs:end:public_mutable_struct_new\n}\n\nimpl<T, T_SERIALIZED_LEN> PublicMutable<T, &mut PublicContext> where T: Serialize<T_SERIALIZED_LEN> + Deserialize<T_SERIALIZED_LEN> {\n // docs:start:public_mutable_struct_read\n pub fn read(self) -> T {\n self.context.storage_read(self.storage_slot)\n }\n // docs:end:public_mutable_struct_read\n\n // docs:start:public_mutable_struct_write\n pub fn write(self, value: T) {\n self.context.storage_write(self.storage_slot, value);\n }\n // docs:end:public_mutable_struct_write\n}\n\nimpl<T, T_SERIALIZED_LEN> PublicMutable<T, UnconstrainedContext> where T: Deserialize<T_SERIALIZED_LEN> {\n unconstrained pub fn read(self) -> T {\n self.context.storage_read(self.storage_slot)\n }\n}\n"},"180":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr","source":"use dep::protocol_types::{\n address::AztecAddress, constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n hash::poseidon2_hash_with_separator\n};\n\nuse crate::context::{PrivateContext, UnconstrainedContext};\nuse crate::note::{\n lifecycle::create_note, note_getter::{get_note, view_notes}, note_interface::NoteInterface,\n note_viewer_options::NoteViewerOptions, note_emission::NoteEmission\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\nstruct 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<N, M>(\n self,\n note: &mut Note\n ) -> NoteEmission<Note> where Note: NoteInterface<N, M> {\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<N, M>(self) -> Note where Note: NoteInterface<N, M> {\n let storage_slot = self.storage_slot;\n get_note(self.context, storage_slot).0\n }\n // docs:end:get_note\n}\n\nimpl<Note> PrivateImmutable<Note, UnconstrainedContext> {\n // docs:start:is_initialized\n unconstrained pub fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // view_note does not actually use the context, but it calls oracles that are only available in private\n // docs:start:view_note\n unconstrained pub fn view_note<N, M>(self) -> Note where Note: NoteInterface<N, M> {\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"},"182":{"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 = pk.x.to_be_bytes(32);\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.as_array()\n}\n\nmod test {\n use dep::protocol_types::point::Point;\n use crate::utils::point::point_to_bytes;\n\n #[test]\n 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 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"},"199":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use crate::{constants::KEY_VALIDATION_REQUEST_LENGTH, traits::{Empty, Serialize, Deserialize}, point::Point};\n\nstruct KeyValidationRequest {\n pk_m: Point,\n sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m))\n & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest {\n pk_m: Point::empty(),\n sk_app: 0,\n }\n }\n}\n\nimpl Serialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [\n self.pk_m.x,\n self.pk_m.y,\n self.pk_m.is_infinite as Field,\n self.sk_app,\n ]\n }\n}\n\nimpl Deserialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self {\n pk_m: Point { x:fields[0], y: fields[1], is_infinite: fields[2] as bool},\n sk_app: fields[3],\n }\n }\n}\n\n"},"2":{"path":"std/array.nr","source":"use crate::cmp::Ord;\nuse crate::option::Option;\nuse crate::convert::From;\n\nimpl<T, let N: u32> [T; N] {\n /// Returns the length of the slice.\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n pub fn sort(self) -> Self where T: Ord {\n self.sort_via(|a: T, b: T| a <= b)\n }\n\n pub fn sort_via<Env>(self, ordering: fn[Env](T, T) -> bool) -> Self {\n let sorted_index = unsafe {\n // Safety: These indices are asserted to be the sorted element indices via `find_index`\n let sorted_index: [u32; N] = self.get_sorting_index(ordering);\n\n for i in 0..N {\n let pos = find_index(sorted_index, i);\n assert(sorted_index[pos] == i);\n }\n\n sorted_index\n };\n\n // Sort the array using the indexes\n let mut result = self;\n for i in 0..N {\n result[i] = self[sorted_index[i]];\n }\n // Ensure the array is sorted\n for i in 0..N - 1 {\n assert(ordering(result[i], result[i + 1]));\n }\n\n result\n }\n\n /// Returns the index of the elements in the array that would sort it, using the provided custom sorting function.\n unconstrained fn get_sorting_index<Env>(self, ordering: fn[Env](T, T) -> bool) -> [u32; N] {\n let mut result = [0; N];\n let mut a = self;\n for i in 0..N {\n result[i] = i;\n }\n for i in 1..N {\n for j in 0..i {\n if ordering(a[i], a[j]) {\n let old_a_j = a[j];\n a[j] = a[i];\n a[i] = old_a_j;\n let old_j = result[j];\n result[j] = result[i];\n result[i] = old_j;\n }\n }\n }\n result\n }\n\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n // Apply a function to each element of an array, returning a new array\n // containing the mapped elements.\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 // Apply a function to each element of the array and an accumulator value,\n // returning the final accumulated value. This function is also sometimes\n // called `foldl`, `fold_left`, `reduce`, or `inject`.\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 // Apply a function to each element of the array and an accumulator value,\n // returning the final accumulated value. Unlike fold, reduce uses the first\n // element of the given array as its starting accumulator value.\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 elements in the array satisfy the predicate\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 element in the array satisfies the predicate\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<let N: u32> [u8; N] {\n /// Convert a sequence of bytes as-is into a string.\n /// This function performs no UTF-8 validation or similar.\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str<N> {}\n}\n\n// helper function used to look up the position of a value in an array of Field\n// Note that function returns 0 if the value is not found\nunconstrained fn find_index<let N: u32>(a: [u32; N], find: u32) -> u32 {\n let mut result = 0;\n for i in 0..a.len() {\n if a[i] == find {\n result = i;\n }\n }\n result\n}\n\nimpl<let N: u32> From<str<N>> for [u8; N] {\n fn from(s: str<N>) -> Self {\n s.as_bytes()\n }\n}\n"},"214":{"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\nstruct NullifierLeafPreimage {\n nullifier : Field,\n next_nullifier :Field,\n next_index : u32,\n}\n\nimpl Empty for NullifierLeafPreimage {\n fn empty() -> Self {\n Self {\n nullifier : 0,\n next_nullifier : 0,\n next_index : 0,\n }\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 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"},"22":{"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.\nstruct EmbeddedCurvePoint {\n x: Field,\n y: Field,\n is_infinite: bool\n}\n\nimpl EmbeddedCurvePoint {\n /// Elliptic curve point doubling operation\n /// returns the doubled point of a point P, i.e P+P\n fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n /// Returns the null element of the curve; 'the point at infinity'\n fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n /// Adds two points P+Q, using the curve addition formula, and also handles point at infinity\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint { \n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n /// Points subtraction operation, using addition and negation\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint { \n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n /// Negates a point P, i.e returns -P, by negating the y coordinate.\n /// If the point is at infinity, then the result is also at infinity.\n fn neg(self) -> EmbeddedCurvePoint { \n EmbeddedCurvePoint {\n x: self.x,\n y: -self.y,\n is_infinite: self.is_infinite\n }\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) | ((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.\nstruct EmbeddedCurveScalar {\n lo: Field,\n hi: Field,\n}\n\nimpl EmbeddedCurveScalar {\n pub fn new(lo: Field, hi: Field) -> Self {\n EmbeddedCurveScalar { lo, hi }\n }\n\n #[field(bn254)]\n fn from_field(scalar: Field) -> EmbeddedCurveScalar {\n let (a,b) = crate::field::bn254::decompose(scalar);\n EmbeddedCurveScalar { lo: a, hi: b }\n }\n}\n\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 is a hack as 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\nfn embedded_curve_add(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint\n) -> EmbeddedCurvePoint\n// docs:end:embedded_curve_add\n{\n let point_array = embedded_curve_add_array_return(point1, point2);\n let x = point_array[0];\n let y = point_array[1];\n EmbeddedCurvePoint { x, y, is_infinite: point_array[2] == 1 }\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(_point1: EmbeddedCurvePoint, _point2: EmbeddedCurvePoint) -> [Field; 3] {}\n"},"23":{"path":"std/field/bn254.nr","source":"use crate::runtime::is_unconstrained;\n\n// The low and high decomposition of the field modulus\nglobal PLO: Field = 53438638232309528389504892708671455233;\nglobal PHI: Field = 64323764613183177041862057485226039389;\n\nglobal TWO_POW_128: Field = 0x100000000000000000000000000000000;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(x: Field) -> (Field, Field) {\n let x_bytes = x.to_le_bytes(32);\n\n let mut low: Field = 0;\n let mut high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n low += (x_bytes[i] as Field) * offset;\n high += (x_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n\n (low, high)\n}\n\nunconstrained pub(crate) fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nfn compute_lt(x: Field, y: Field, num_bytes: u32) -> bool {\n let x_bytes = x.to_le_radix(256, num_bytes);\n let y_bytes = y.to_le_radix(256, num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i];\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_hint, decompose, compute_lt, assert_gt, gt, lt, 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"},"24":{"path":"std/field/mod.nr","source":"mod bn254;\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n pub fn assert_max_bit_size(self, bit_size: u32) {\n crate::assert_constant(bit_size);\n assert(bit_size < modulus_num_bits() as u32);\n self.__assert_max_bit_size(bit_size);\n }\n\n #[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]` slice of length `bit_size`.\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^{bit_size}` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `bit_size` 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 pub fn to_le_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_le_bits(bit_size)\n }\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1]` slice of length `bit_size`.\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^{bit_size}` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `bit_size` 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 pub fn to_be_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_be_bits(bit_size)\n }\n\n /// See `Field.to_be_bits`\n #[builtin(to_le_bits)]\n fn __to_le_bits(self, _bit_size: u32) -> [u1] {}\n\n /// See `Field.to_le_bits`\n #[builtin(to_be_bits)]\n fn __to_be_bits(self, bit_size: u32) -> [u1] {}\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8]` slice of length `byte_size`.\n /// This slice will be zero padded should not all bytes be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{8*byte_size}` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `byte_size` equal to or greater than the number of bytes necessary to represent the `Field` modulus\n /// (e.g. 32 for the BN254 field) allow for multiple byte decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n pub fn to_le_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_le_radix(256, byte_size)\n }\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8]` slice of length `byte_size`.\n /// This slice will be zero padded should not all bytes be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{8*byte_size}` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `byte_size` equal to or greater than the number of bytes necessary to represent the `Field` modulus\n /// (e.g. 32 for the BN254 field) allow for multiple byte decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n pub fn to_be_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_be_radix(256, byte_size)\n }\n\n pub fn to_le_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_le_radix(radix, result_len)\n }\n\n pub fn to_be_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_be_radix(radix, result_len)\n }\n\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix(self, radix: u32, result_len: u32) -> [u8] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix(self, radix: u32, result_len: u32) -> [u8] {}\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b = exponent.to_le_bits(32);\n\n for i in 1..33 {\n r *= r;\n r = (b[32-i] as Field) * (r * self) + (1 - b[32-i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x ∈ {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n}\n\n#[builtin(modulus_num_bits)]\npub comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n let num_bytes = (modulus_num_bits() as u32 + 7) / 8;\n let x_bytes = x.to_le_bytes(num_bytes);\n let y_bytes = y.to_le_bytes(num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i] as u8;\n let y_byte = y_bytes[num_bytes - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\n"},"249":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/storage/map.nr","source":"use crate::{hash::pedersen_hash, traits::ToField};\n\npub fn derive_storage_slot_in_map<K>(storage_slot: Field, key: K) -> Field where K: ToField {\n pedersen_hash([storage_slot, key.to_field()], 0)\n}\n\nmod test {\n use crate::{address::AztecAddress, storage::map::derive_storage_slot_in_map};\n\n #[test]\n fn test_derive_storage_slot_in_map_matches_typescript() {\n let map_slot = 0x132258fb6962c4387ba659d9556521102d227549a386d39f0b22d1890d59c2b5;\n let key = AztecAddress::from_field(0x302dbc2f9b50a73283d5fb2f35bc01eae8935615817a0b4219a057b2ba8a5a3f);\n\n let slot = derive_storage_slot_in_map(map_slot, key);\n\n // The following value was generated by `map_slot.test.ts`\n let slot_from_typescript = 0x2499880e2b1b831785c17286f99a0d5122fee784ce7b1c04e380c4a991da819a;\n\n assert_eq(slot, slot_from_typescript);\n }\n}\n"},"255":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr","source":"use 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.\ntrait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field { fn empty() -> Self {0} }\n\nimpl Empty for u1 { fn empty() -> Self {0} }\nimpl Empty for u8 { fn empty() -> Self {0} }\nimpl Empty for u32 { fn empty() -> Self {0} }\nimpl Empty for u64 { fn empty() -> Self {0} }\nimpl Empty for U128 { fn empty() -> Self {U128::from_integer(0)} }\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\ntrait Hash {\n fn hash(self) -> Field;\n}\n\ntrait 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 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u1 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u8 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u32 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u64 { fn to_field(self) -> Field { self as Field } }\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\ntrait 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 { fn from_field(value: Field) -> Self { value as bool } }\nimpl FromField for u1 { fn from_field(value: Field) -> Self { value as u1 } }\nimpl FromField for u8 { fn from_field(value: Field) -> Self { value as u8 } }\nimpl FromField for u32 { fn from_field(value: Field) -> Self { value as u32 } }\nimpl FromField for u64 { fn from_field(value: Field) -> Self { value as u64 } }\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\ntrait Serialize<let N: u32> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl<let N: u32> Serialize<N> for [Field; N] {\n fn serialize(self) -> [Field; N] {\n self\n }\n}\nimpl<let N: u32> Serialize<N> for str<N> {\n fn serialize(self) -> [Field; N] {\n let mut result = [0; N];\n let bytes: [u8; N] = self.as_bytes();\n for i in 0..N {\n result[i] = field_from_bytes([bytes[i];1], true);\n }\n result\n }\n}\n\n// docs:start:deserialize\ntrait Deserialize<let N: u32> {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl<let N: u32> Deserialize<N> for [Field; N] {\n fn deserialize(fields: [Field; N]) -> Self {\n fields\n }\n}\n"},"256":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr","source":"// Utility function to console.log data in the acir simulator\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n\n#[oracle(debugLog)]\nunconstrained fn debug_log_oracle<let M: u32>(_msg: str<M>, args: [Field]) {}\n\n/// NOTE: call this with a str<N> msg of form\n/// \"some string with {0} and {1} ... {N}\"\n/// and an array of N field which will be formatted\n/// into the string in the simulator.\n/// Example:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\nunconstrained pub fn debug_log_format<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n/// NOTE: call this with a str<N> msg of length > 1\n/// Example:\n/// `debug_log(\"blah blah this is a debug string\");`\nunconstrained pub fn debug_log<let N: u32>(msg: str<N>) {\n debug_log_format(msg, []);\n}\n"},"259":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/public_data_tree_leaf_preimage.nr","source":"use crate::{merkle_tree::leaf_preimage::IndexedTreeLeafPreimage, traits::{Empty, Hash}};\n\nstruct PublicDataTreeLeafPreimage {\n slot : Field,\n value: Field,\n next_slot :Field,\n next_index : u32,\n}\n\nimpl Empty for PublicDataTreeLeafPreimage {\n fn empty() -> Self {\n Self {\n slot: 0,\n value: 0,\n next_slot: 0,\n next_index: 0,\n }\n }\n}\n\nimpl Hash for PublicDataTreeLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n crate::hash::poseidon2_hash([self.slot, self.value, (self.next_index as Field), self.next_slot])\n }\n }\n}\n\nimpl IndexedTreeLeafPreimage for PublicDataTreeLeafPreimage {\n fn get_key(self) -> Field {\n self.slot\n }\n\n fn get_next_key(self) -> Field {\n self.next_slot\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl PublicDataTreeLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.slot == 0) & (self.value == 0) & (self.next_slot == 0) & (self.next_index == 0)\n }\n}\n"},"261":{"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, point::Point\n};\n\npub fn sha256_to_field<let N: u32>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = std::hash::sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\nfn compute_note_hash_nonce(tx_hash: Field, note_index_in_tx: u32) -> Field {\n // Hashing tx hash with note index in tx is guaranteed to be unique\n poseidon2_hash_with_separator(\n [\n tx_hash,\n note_index_in_tx as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n let inputs = [nonce, note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, unique_note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n app.to_field(),\n unique_note_hash\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash, tx_hash: Field, note_index_in_tx: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(tx_hash, note_index_in_tx);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n app.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn silo_encrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n // We assume contract address has already been masked\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n accumulate_sha256([log_hash.contract_address.to_field(), log_hash.log_hash.value])\n }\n}\n\npub fn mask_encrypted_log_hash(scoped_log: ScopedEncryptedLogHash) -> AztecAddress {\n if scoped_log.contract_address.is_zero() {\n AztecAddress::from_field(0)\n } else if (scoped_log.log_hash.randomness == 0) {\n scoped_log.contract_address\n } else {\n AztecAddress::from_field(\n poseidon2_hash_with_separator(\n [scoped_log.contract_address.to_field(), scoped_log.log_hash.randomness],\n 0\n )\n )\n }\n}\n\nfn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs = [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes = inputs[i].to_be_bytes(32);\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\npub fn silo_l2_to_l1_message(msg: ScopedL2ToL1Message, rollup_version_id: Field, chain_id: Field) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually\n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field\n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes = input[offset].to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\n// NB: this assumes MAX_ENCRYPTED_LOGS_PER_TX == MAX_UNENCRYPTED_LOGS_PER_TX\n// to avoid doubling code, since we can't define the byte len to be 32*N directly.\npub fn compute_tx_logs_hash(logs: [LogHash; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn compute_tx_note_logs_hash(logs: [LogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_NOTE_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn pedersen_hash<let N: u32>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<let N: u32>(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[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 pedersen_commitment<let N: u32>(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\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"},"267":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/point.nr","source":"use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{traits::{Empty, Hash, Serialize}, hash::poseidon2_hash};\n\nglobal POINT_LENGTH: Field = 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 {\n x: 0,\n y: 0,\n is_infinite: false\n }\n }\n}\n"},"268":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr","source":"use crate::{\n address::{\n aztec_address::AztecAddress, eth_address::EthAddress, partial_address::PartialAddress,\n public_keys_hash::PublicKeysHash\n},\n contract_class_id::ContractClassId,\n constants::{GENERATOR_INDEX__CONTRACT_DEPLOYMENT_DATA, CONTRACT_INSTANCE_LENGTH},\n traits::{Deserialize, Hash, Serialize}\n};\n\nstruct ContractInstance {\n salt : Field,\n deployer: AztecAddress,\n contract_class_id : ContractClassId,\n initialization_hash : Field,\n public_keys_hash : PublicKeysHash,\n}\n\nimpl Eq for ContractInstance {\n fn eq(self, other: Self) -> bool {\n self.public_keys_hash.eq(other.public_keys_hash) &\n self.initialization_hash.eq(other.initialization_hash) &\n self.contract_class_id.eq(other.contract_class_id) &\n self.salt.eq(other.salt)\n }\n}\n\nimpl Serialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn serialize(self) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n [\n self.salt,\n self.deployer.to_field(),\n self.contract_class_id.to_field(),\n self.initialization_hash,\n self.public_keys_hash.to_field()\n ]\n }\n}\n\nimpl Deserialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn deserialize(serialized: [Field; CONTRACT_INSTANCE_LENGTH]) -> Self {\n Self {\n salt: serialized[0],\n deployer: AztecAddress::from_field(serialized[1]),\n contract_class_id: ContractClassId::from_field(serialized[2]),\n initialization_hash: serialized[3],\n public_keys_hash: PublicKeysHash::from_field(serialized[4]),\n }\n }\n}\n\nimpl Hash for ContractInstance {\n fn hash(self) -> Field {\n self.to_address().to_field()\n }\n}\n\nimpl ContractInstance {\n fn to_address(self) -> AztecAddress {\n AztecAddress::compute(\n self.public_keys_hash,\n PartialAddress::compute(\n self.contract_class_id,\n self.salt,\n self.initialization_hash,\n self.deployer\n )\n )\n }\n}\n"},"27":{"path":"std/hash/mod.nr","source":"mod poseidon;\nmod mimc;\nmod poseidon2;\nmod keccak;\nmod sha256;\nmod sha512;\n\nuse crate::default::Default;\nuse crate::uint128::U128;\nuse crate::collections::vec::Vec;\nuse crate::embedded_curve_ops::{EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_slice};\nuse crate::meta::derive_via;\n\n// Kept for backwards compatibility\nuse sha256::{digest, sha256, sha256_compression, sha256_var};\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment<let N: u32>(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\npub fn pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {\n __pedersen_hash_with_separator(input, separator)\n}\n\nfn pedersen_commitment_with_separator<let N: u32>(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let value = __pedersen_commitment_with_separator(input, separator);\n if (value[0] == 0) & (value[1] == 0) {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n } else {\n EmbeddedCurvePoint { x: value[0], y: value[1], is_infinite: false }\n }\n}\n\n#[no_predicates]\nfn pedersen_commitment_with_separator_noir<let N: u32>(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n#[no_predicates]\nfn pedersen_hash_with_separator_noir<let N: u32>(input: [Field; N], separator: u32) -> Field {\n let mut scalars: Vec<EmbeddedCurveScalar> = Vec::from_slice([EmbeddedCurveScalar { lo: 0, hi: 0 }; N].as_slice()); //Vec::new();\n\n for i in 0..N {\n scalars.set(i, from_field_unsafe(input[i]));\n }\n scalars.push(EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field });\n let domain_generators :[EmbeddedCurvePoint; N]= derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n let mut vec_generators = Vec::new();\n for i in 0..N {\n vec_generators.push(domain_generators[i]);\n }\n let length_generator : [EmbeddedCurvePoint; 1] = derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n vec_generators.push(length_generator[0]);\n multi_scalar_mul_slice(vec_generators.slice, scalars.slice)[0]\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash<let N: u32>(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n __pedersen_hash_with_separator(input, 0)\n}\n\n#[foreign(pedersen_hash)]\nfn __pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {}\n\n#[foreign(pedersen_commitment)]\nfn __pedersen_commitment_with_separator<let N: u32>(input: [Field; N], separator: u32) -> [Field; 2] {}\n\n#[field(bn254)]\nfn derive_generators<let N: u32, let M: u32>(domain_separator_bytes: [u8; M], starting_index: u32) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators<let N: u32, let M: u32>(\n domain_separator_bytes: [u8; M],\n starting_index: u32\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n // Same as from_field but:\n // does not assert the limbs are 128 bits\n // does not assert the decomposition does not overflow the EmbeddedCurveScalar\n fn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n let (xlo, xhi) = unsafe {\n crate::field::bn254::decompose_hint(scalar)\n };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes(32).as_array();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n// docs:start:keccak256\npub fn keccak256<let N: u32>(input: [u8; N], message_size: u32) -> [u8; 32]\n// docs:end:keccak256\n{\n crate::hash::keccak::keccak256(input, message_size)\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation<let N: u32>(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support. \n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\ntrait 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.)\ntrait Hasher{\n fn finish(self) -> Field;\n \n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\ntrait BuildHasher<H> where H: Hasher{\n fn build_hasher(self) -> H;\n}\n\nstruct BuildHasherDefault<H>;\n\nimpl<H> BuildHasher<H> for BuildHasherDefault<H>\nwhere \n H: Hasher + Default\n{\n fn build_hasher(_self: Self) -> H{\n H::default()\n }\n}\n\nimpl<H> Default for BuildHasherDefault<H>\nwhere \n H: Hasher + Default\n{\n fn default() -> Self{\n BuildHasherDefault{}\n } \n}\n\nimpl Hash for Field {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash<H>(_self: Self, _state: &mut H) where H: Hasher {}\n}\n\nimpl Hash for U128 {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n H::write(state, self.lo as Field);\n H::write(state, self.hi as Field);\n }\n}\n\nimpl<T, let N: u32> Hash for [T; N] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<T> Hash for [T] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<A, B> Hash for (A, B) where A: Hash, B: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl<A, B, C> Hash for (A, B, C) where A: Hash, B: Hash, C: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl<A, B, C, D> Hash for (A, B, C, D) where A: Hash, B: Hash, C: Hash, D: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl<A, B, C, D, E> Hash for (A, B, C, D, E) where A: Hash, B: Hash, C: Hash, D: Hash, E: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher{\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1), 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1), EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false\n }\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2), 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2), EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3), 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3), EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4), 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4), EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5), 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5), EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6), 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6), EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7), 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7), EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false\n }\n );\n}\n\n"},"280":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/merkle_tree/root.nr","source":"use crate::{hash::merkle_hash, merkle_tree::merkle_tree::MerkleTree};\n\n// Calculate the Merkle tree root from the sibling path and leaf.\n//\n// The leaf is hashed with its sibling, and then the result is hashed\n// with the next sibling etc in the path. The last hash is the root.\n//\n// TODO(David/Someone): The cpp code is using a uint256, whereas its\n// TODO a bit simpler in Noir to just have a bit array.\n// TODO: I'd generally like to avoid u256 for algorithms like \n// this because it means we never even need to consider cases where \n// the index is greater than p.\npub fn root_from_sibling_path<let N: u32>(\n leaf: Field,\n leaf_index: Field,\n sibling_path: [Field; N]\n) -> Field {\n let mut node = leaf;\n let indices = leaf_index.to_le_bits(N);\n\n for i in 0..N {\n let (hash_left, hash_right) = if indices[i] == 1 {\n (sibling_path[i], node)\n } else {\n (node, sibling_path[i])\n };\n node = merkle_hash(hash_left, hash_right);\n }\n node\n}\n\npub fn calculate_subtree_root<let N: u32>(leaves: [Field; N]) -> Field {\n MerkleTree::new(leaves).get_root()\n}\n\n// These values are precomputed and we run tests to ensure that they\n// are correct. The values themselves were computed from the cpp code.\n//\n// Would be good if we could use width since the compute_subtree\n// algorithm uses depth.\npub fn calculate_empty_tree_root(depth: u32) -> Field {\n if depth == 0 {\n 0\n } else if depth == 1 {\n 0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1\n } else if depth == 2 {\n 0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290\n } else if depth == 3 {\n 0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20\n } else if depth == 4 {\n 0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e\n } else if depth == 5 {\n 0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf\n } else if depth == 6 {\n 0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76\n } else if depth == 7 {\n 0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b\n } else if depth == 8 {\n 0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1\n } else if depth == 9 {\n 0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972\n } else if depth == 10 {\n 0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686\n } else {\n assert(false, \"depth should be between 0 and 10\");\n 0\n }\n}\n\n#[test]\nfn test_merkle_root_interop_test() {\n // This is a test to ensure that we match the cpp implementation.\n // You can grep for `TEST_F(root_rollup_tests, noir_interop_test)`\n // to find the test that matches this.\n let root = calculate_subtree_root([1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]);\n assert(0x1a09d935ae110b4c861fcec8f9099ec30b4485022aeb3d3cf9d7168e38fdc231 == root);\n\n let empty_root = calculate_subtree_root([0; 16]);\n assert(0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e == empty_root);\n}\n\n#[test]\nfn test_empty_subroot() {\n assert(calculate_empty_tree_root(0) == 0);\n\n let expected_empty_root_2 = calculate_subtree_root([0; 2]);\n assert(calculate_empty_tree_root(1) == expected_empty_root_2);\n\n let expected_empty_root_4 = calculate_subtree_root([0; 4]);\n assert(calculate_empty_tree_root(2) == expected_empty_root_4);\n\n let expected_empty_root_8 = calculate_subtree_root([0; 8]);\n assert(calculate_empty_tree_root(3) == expected_empty_root_8);\n\n let expected_empty_root_16 = calculate_subtree_root([0; 16]);\n assert(calculate_empty_tree_root(4) == expected_empty_root_16);\n\n let expected_empty_root_32 = calculate_subtree_root([0; 32]);\n assert(calculate_empty_tree_root(5) == expected_empty_root_32);\n\n let expected_empty_root_64 = calculate_subtree_root([0; 64]);\n assert(calculate_empty_tree_root(6) == expected_empty_root_64);\n\n let expected_empty_root_128 = calculate_subtree_root([0; 128]);\n assert(calculate_empty_tree_root(7) == expected_empty_root_128);\n\n let expected_empty_root_256 = calculate_subtree_root([0; 256]);\n assert(calculate_empty_tree_root(8) == expected_empty_root_256);\n\n let expected_empty_root_512 = calculate_subtree_root([0; 512]);\n assert(calculate_empty_tree_root(9) == expected_empty_root_512);\n\n let expected_empty_root_1024 = calculate_subtree_root([0; 1024]);\n assert(calculate_empty_tree_root(10) == expected_empty_root_1024);\n}\n"},"284":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"struct Reader<let N: u32> {\n data: [Field; N],\n offset: u32,\n}\n\nimpl<let N: u32> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array<let K: u32>(&mut self, mut result: [Field; K]) -> [Field; K] {\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n // TODO(#4394)\n pub fn read_struct<T, let K: u32>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array<T, let K: u32, let C: u32>(&mut self, deserialise: fn([Field; K]) -> T, mut result: [T; C]) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n"},"305":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr","source":"pub fn field_from_bytes<let N: u32>(bytes: [u8; N], big_endian: bool) -> Field {\n assert(bytes.len() < 32, \"field_from_bytes: N must be less than 32\");\n let mut as_field = 0;\n let mut offset = 1;\n for i in 0..N {\n let mut index = i;\n if big_endian {\n index = N - i - 1;\n }\n as_field += (bytes[index] as Field) * offset;\n offset *= 256;\n }\n\n as_field\n}\n\n// Convert a 32 byte array to a field element by truncating the final byte\npub fn field_from_bytes_32_trunc(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..15 {\n // covers bytes 16..30 (31 is truncated and ignored)\n low = low + (bytes32[15 + 15 - i] as Field) * v;\n v = v * 256;\n // covers bytes 0..14\n high = high + (bytes32[14 - i] as Field) * v;\n }\n // covers byte 15\n low = low + (bytes32[15] as Field) * v;\n\n low + high * v\n}\n\n// TODO to radix returns u8, so we cannot use bigger radixes. It'd be ideal to use a radix of the maximum range-constrained integer noir supports\npub fn full_field_less_than(lhs: Field, rhs: Field) -> bool {\n lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\n#[test]\nunconstrained fn bytes_field_test() {\n // Tests correctness of field_from_bytes_32_trunc against existing methods\n // Bytes representing 0x543e0a6642ffeb8039296861765a53407bba62bd1c97ca43374de950bbe0a7\n let inputs = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167\n ];\n let field = field_from_bytes(inputs, true);\n let return_bytes = field.to_be_bytes(31);\n for i in 0..31 {\n assert_eq(inputs[i], return_bytes[i]);\n }\n // 32 bytes - we remove the final byte, and check it matches the field\n let inputs2 = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167, 158\n ];\n let field2 = field_from_bytes_32_trunc(inputs2);\n let return_bytes2 = field.to_be_bytes(31);\n\n for i in 0..31 {\n assert_eq(return_bytes2[i], return_bytes[i]);\n }\n assert_eq(field2, field);\n}\n\n#[test]\nunconstrained fn max_field_test() {\n // Tests the hardcoded value in constants.nr vs underlying modulus\n // NB: We can't use 0-1 in constants.nr as it will be transpiled incorrectly to ts and sol constants files\n let max_value = crate::constants::MAX_FIELD_VALUE;\n assert_eq(max_value, 0 - 1);\n // modulus == 0 is tested elsewhere, so below is more of a sanity check\n let max_bytes = max_value.to_be_bytes(32);\n let mod_bytes = std::field::modulus_be_bytes();\n for i in 0..31 {\n assert_eq(max_bytes[i], mod_bytes[i]);\n }\n assert_eq(max_bytes[31], mod_bytes[31] - 1);\n}\n"},"307":{"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"},"319":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n crate::address::{eth_address::EthAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n contract_class_id::ContractClassId, hash::poseidon2_hash_with_separator,\n traits::{Empty, FromField, ToField, Serialize, Deserialize}, utils\n};\n\n// Aztec address\nstruct AztecAddress {\n inner : Field\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n poseidon2_hash_with_separator(\n [pub_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1\n )\n )\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys_hash() {\n let pub_keys_hash = PublicKeysHash::from_field(1);\n let partial_address = PartialAddress::from_field(2);\n\n let address = AztecAddress::compute(pub_keys_hash, partial_address);\n let expected_computed_address_from_partial_and_pubkey = 0x23ce9be3fa3c846b0f9245cc796902e731d04f086e8a42473bb29e405fc98075;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n"},"32":{"path":"std/hash/poseidon2.nr","source":"use crate::hash::Hasher;\nuse crate::default::Default;\n\ncomptime global RATE: u32 = 3;\n\nstruct Poseidon2 {\n cache: [Field;3],\n state: [Field;4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n #[no_predicates]\n pub fn hash<let N: u32>(input: [Field; N], message_size: u32) -> Field {\n if message_size == N {\n Poseidon2::hash_internal(input, N, false)\n } else {\n Poseidon2::hash_internal(input, message_size, true)\n }\n }\n\n fn new(iv: Field) -> Poseidon2 {\n let mut result = Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n }\n\n fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal<let N: u32>(input: [Field; N], in_len: u32, is_variable_length: bool) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\nstruct 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 {\n _state: &[],\n }\n }\n}\n"},"321":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr","source":"use crate::{\n address::{\n eth_address::EthAddress, salted_initialization_hash::SaltedInitializationHash,\n aztec_address::AztecAddress\n},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator, traits::{ToField, FromField, Serialize, Deserialize}\n};\n\nglobal PARTIAL_ADDRESS_LENGTH = 1;\n\n// Partial address\nstruct 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"},"322":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr","source":"use crate::{\n address::{eth_address::EthAddress, aztec_address::AztecAddress},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, hash::poseidon2_hash_with_separator, traits::ToField\n};\n\n// Salted initialization hash. Used in the computation of a partial address.\nstruct 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"},"405":{"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.\ncontract SchnorrAccount {\n use dep::std;\n\n use dep::aztec::prelude::{AztecAddress, FunctionSelector, NoteHeader, PrivateContext, PrivateImmutable};\n use dep::aztec::encrypted_logs::encrypted_note_emission::encode_and_encrypt_note_with_keys;\n use dep::authwit::{\n entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions,\n auth_witness::get_auth_witness, auth::{compute_authwit_nullifier, compute_authwit_message_hash}\n };\n use dep::aztec::{hash::compute_siloed_nullifier, keys::getters::get_current_public_keys};\n use dep::aztec::oracle::get_nullifier_membership_witness::get_low_nullifier_membership_witness;\n\n use crate::public_key_note::{PublicKeyNote, PUBLIC_KEY_NOTE_LEN};\n\n #[aztec(storage)]\n struct Storage {\n // docs:start:storage\n signing_public_key: PrivateImmutable<PublicKeyNote>,\n // docs:end:storage\n }\n\n // Constructs the contract\n #[aztec(private)]\n #[aztec(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_current_public_keys(&mut context, 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 // docs:start:initialize\n let mut pub_key_note = PublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this_keys.npk_m.hash());\n storage.signing_public_key.initialize(&mut pub_key_note).emit(encode_and_encrypt_note_with_keys(&mut context, this_keys.ovpk_m, this_keys.ivpk_m, this));\n // docs:end:initialize\n }\n\n // Note: If you globally change the entrypoint signature don't forget to update account_entrypoint.ts file\n #[aztec(private)]\n #[aztec(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 #[aztec(private)]\n #[aztec(noinitcheck)]\n #[aztec(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:entrypoint\n // Load public key from storage\n let storage = Storage::init(context);\n // docs:start:get_note\n let public_key = storage.signing_public_key.get_note();\n // docs:end:get_note\n // Load auth witness\n let witness: [Field; 64] = 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 let verification = std::schnorr::verify_signature_slice(\n public_key.x,\n public_key.y,\n signature,\n outer_hash.to_be_bytes(32)\n );\n assert(verification == true);\n // docs:end:entrypoint\n true\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_slice(\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"},"406":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/public_key_note.nr","source":"use dep::aztec::prelude::{AztecAddress, NoteHeader, NoteInterface, 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};\n\nglobal PUBLIC_KEY_NOTE_LEN: Field = 3;\n// PUBLIC_KEY_NOTE_LEN * 32 + 32(storage_slot as bytes) + 32(note_type_id as bytes)\nglobal PUBLIC_KEY_NOTE_BYTES_LEN: Field = 3 * 32 + 64;\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#[aztec(note)]\nstruct 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 NoteInterface<PUBLIC_KEY_NOTE_LEN, PUBLIC_KEY_NOTE_BYTES_LEN> 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 note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n )\n }\n\n 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 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"},"5":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\nstruct BoundedVec<T, let MaxLen: u32> {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl<T, let MaxLen: u32> BoundedVec<T, MaxLen> {\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Get an element from the vector at the given index.\n /// Panics if the given index points beyond the end of the vector (`self.len()`).\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Get an element from the vector at the given index.\n /// Responds with undefined data for `index` where `self.len < index < self.max_len()`.\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Write an element to the vector at the given index.\n /// Panics if the given index points beyond the end of the vector (`self.len()`).\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Write an element to the vector at the given index.\n /// Does not check whether the passed `index` is a valid index within the vector.\n ///\n /// Silently writes past the end of the vector for `index` where `self.len < index < self.max_len()`\n /// Panics if the given index points beyond the maximum length of the vector (`self.max_len()`).\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n pub fn len(self) -> u32 {\n self.len\n }\n\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u32 {\n MaxLen\n }\n\n // This is a intermediate method, while we don't have an\n // .extend method\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n pub fn extend_from_array<let Len: u32>(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_bounded_vec<let Len: u32>(&mut self, vec: BoundedVec<T, Len>) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n pub fn from_array<let Len: u32>(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec<T, MaxLen> = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> BoundedVec<U, MaxLen> {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n ret\n }\n}\n\nimpl<T, let MaxLen: u32> Eq for BoundedVec<T, MaxLen> where T: Eq {\n fn eq(self, other: BoundedVec<T, MaxLen>) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n \n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nimpl<T, let MaxLen: u32, let Len: u32> From<[T; Len]> for BoundedVec<T, MaxLen> {\n fn from(array: [T; Len]) -> BoundedVec<T, MaxLen> {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec<Field, 5> = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec<Field, 5> = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec<Field, 4> = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.storage()[2], 0);\n }\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with=\"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec<Field, 2> = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n}\n"},"54":{"path":"std/option.nr","source":"use crate::hash::{Hash, Hasher};\nuse crate::cmp::{Ordering, Ord, Eq};\nuse crate::default::Default;\n\nstruct Option<T> {\n _is_some: bool,\n _value: T,\n}\n\nimpl<T> Option<T> {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::mem::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some { self._value } else { default }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else<Env>(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n fn expect<let N: u32, MessageTypes>(self, message: fmtstr<N, MessageTypes>) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> Option<U> {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or<U, Env>(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else<U, Env1, Env2>(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then<U, Env>(self, f: fn[Env](T) -> Option<U>) -> Option<U> {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some { self } else { other }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else<Env>(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some { self } else { default() }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some { Option::none() } else { self }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter<Env>(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option<Option<T>> into a Option<T>.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option<Option<T>>) -> Option<T> {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl<T> Default for Option<T> {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl<T> Eq for Option<T> where T: Eq {\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl<T> Hash for Option<T> where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl<T> Ord for Option<T> where T: Ord {\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else {\n if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n }\n}\n"},"68":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth_witness.nr","source":"#[oracle(getAuthWitness)]\nunconstrained fn get_auth_witness_oracle<let N: u32>(_message_hash: Field) -> [Field; N] {}\n\n/**\n * Oracle wrapper to fetch an `auth_witness` for a given `message_hash` from the PXE.\n * \n * @param message_hash The hash of the message for which the `auth_witness` is to be fetched.\n * @return The `auth_witness` for the given `message_hash` as Field array.\n */\nunconstrained pub fn get_auth_witness<let N: u32>(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n"},"69":{"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::{prelude::Deserialize, 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 `keccak256(\"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 = 0xabf64ad4; // 4 first bytes of keccak256(\"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 FunctionSelector::from_signature(\"verify_private_authwit(Field)\"),\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(context: &mut PublicContext, on_behalf_of: AztecAddress) {\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 FunctionSelector::from_signature(\"consume((Field),Field)\"),\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 FunctionSelector::from_signature(\"set_authorized(Field,bool)\"),\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 FunctionSelector::from_signature(\"set_reject_all(bool)\"),\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n"},"70":{"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\nstruct 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"},"71":{"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, FUNCTION_CALL_SIZE_IN_BYTES};\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u64 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u64 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u64 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\nstruct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize<APP_PAYLOAD_SIZE> for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, APP_PAYLOAD_SIZE> = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__SIGNATURE_PAYLOAD\n )\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, APP_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_slice(self.nonce.to_be_bytes(32));\n\n bytes.storage\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"},"73":{"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: Field = 12;\n\n// 2 * 98 (FUNCTION_CALL_SIZE_IN_BYTES) + 32\nglobal FEE_PAYLOAD_SIZE_IN_BYTES: Field = 228;\n\nglobal MAX_FEE_FUNCTION_CALLS = 2;\n\n// docs:start:fee-payload-struct\nstruct 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(\n self.serialize(),\n GENERATOR_INDEX__FEE_PAYLOAD\n )\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_slice(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"},"79":{"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]\nfn 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"},"80":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/stored_keys.nr","source":"use crate::keys::public_keys::{PublicKeys, PUBLIC_KEYS_LENGTH};\nuse dep::protocol_types::traits::{Serialize, Deserialize};\n\n// This struct represents how public keys are stored in the key registry. We store not just the keys themselves but also\n// their hash, so that when reading in private we can perform a historical read for the hash and then show that it\n// corresponds to a preimage obtained from an unconstrained hint. We do store the keys keys regardless as they might be\n// needed during public execution, and since we need to broadcast and produce hints in some standardized way.\n// While it might seem odd to create a struct for what is effectively some data and a pure function called on it, state\n// variables rely on serializable structs in order to persist data to storage, so we must use this abstraction.\nstruct StoredKeys {\n public_keys: PublicKeys,\n hash: Field,\n}\n\nimpl StoredKeys {\n // Instances of StoredKeys are expected to only be created by calling this function so that we guarantee that the\n // hash field does indeed correspond to the hash of the keys. Ideally we'd forbid direct access to the struct, but \n // Noir doesn't yet support private members.\n fn new(public_keys: PublicKeys) -> Self {\n Self { public_keys, hash: public_keys.hash().inner }\n }\n}\n\n// Our serialization is the concatenation of the public keys serialization plush the hash, so we need one extra field.\nglobal STORED_KEYS_LENGTH: u32 = PUBLIC_KEYS_LENGTH + 1;\n\nimpl Serialize<STORED_KEYS_LENGTH> for StoredKeys {\n fn serialize(self) -> [Field; STORED_KEYS_LENGTH] {\n // The code below is equivalent to:\n // [ ...self.public_keys.serialize(), self.hash ]\n\n let mut array = [0; STORED_KEYS_LENGTH];\n\n let serialized_keys = self.public_keys.serialize();\n for i in 0..serialized_keys.len() {\n array[i] = serialized_keys[i];\n }\n\n array[PUBLIC_KEYS_LENGTH] = self.hash;\n\n array\n }\n}\n\nimpl Deserialize<STORED_KEYS_LENGTH> for StoredKeys {\n fn deserialize(array: [Field; STORED_KEYS_LENGTH]) -> Self {\n // The code below is equivalent to:\n // Self { public_keys: PublicKeys::deserialize(array[0 : PUBLIC_KEYS_LENGTH]), hash: array[PUBLIC_KEYS_LENGTH] }\n\n let mut serialized_keys = [0; PUBLIC_KEYS_LENGTH];\n for i in 0..serialized_keys.len() {\n serialized_keys[i] = array[i];\n }\n\n let hash = array[PUBLIC_KEYS_LENGTH];\n\n Self { public_keys: PublicKeys::deserialize(serialized_keys), hash }\n }\n}\n"},"81":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/public_keys.nr","source":"use dep::protocol_types::{\n address::PublicKeysHash, constants::GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n hash::poseidon2_hash_with_separator, point::{Point, POINT_LENGTH},\n traits::{Deserialize, Serialize, Empty, is_empty, Hash}\n};\nuse crate::keys::constants::{NULLIFIER_INDEX, INCOMING_INDEX, OUTGOING_INDEX};\n\nglobal PUBLIC_KEYS_LENGTH: u32 = 12;\n\nstruct PublicKeys {\n npk_m: NpkM,\n ivpk_m: IvpkM,\n ovpk_m: OvpkM,\n tpk_m: TpkM,\n}\n\ntrait ToPoint {\n fn to_point(self) -> Point;\n}\n\nstruct 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\nstruct 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\nstruct 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\nstruct TpkM {\n inner: Point\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Empty for PublicKeys {\n fn empty() -> Self {\n PublicKeys {\n npk_m : NpkM { inner: Point::empty() },\n ivpk_m : IvpkM { inner: Point::empty() },\n ovpk_m : OvpkM { inner: Point::empty() },\n tpk_m : TpkM { inner: Point::empty() }\n }\n }\n}\n\nimpl Eq for PublicKeys {\n fn eq(self, other: PublicKeys) -> bool {\n ( self.npk_m.inner == other.npk_m.inner ) &\n ( self.ivpk_m.inner == other.ivpk_m.inner ) &\n ( self.ovpk_m.inner == other.ovpk_m.inner ) &\n ( self.tpk_m.inner == other.tpk_m.inner )\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(\n if is_empty(self) {\n 0\n } else {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field)\n }\n )\n }\n}\n\nimpl Serialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.inner.x,\n self.npk_m.inner.y,\n self.npk_m.inner.is_infinite as Field,\n self.ivpk_m.inner.x,\n self.ivpk_m.inner.y,\n self.ivpk_m.inner.is_infinite as Field,\n self.ovpk_m.inner.x,\n self.ovpk_m.inner.y,\n self.ovpk_m.inner.is_infinite as Field,\n self.tpk_m.inner.x,\n self.tpk_m.inner.y,\n self.tpk_m.inner.is_infinite as Field\n ]\n }\n}\n\nimpl Deserialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM { inner: Point { x:serialized[0], y:serialized[1], is_infinite: serialized[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x:serialized[3], y: serialized[4], is_infinite: serialized[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x:serialized[6], y: serialized[7], is_infinite: serialized[8] as bool } },\n tpk_m: TpkM { inner: Point { x:serialized[9], y: serialized[10], is_infinite: serialized[11] as bool } }\n }\n }\n}\n\n#[test]\nfn 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]\nfn 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]\nfn 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"},"83":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr","source":"use dep::protocol_types::{\n header::Header, abis::validation_requests::KeyValidationRequest, address::AztecAddress,\n constants::CANONICAL_KEY_REGISTRY_ADDRESS, point::Point, storage::map::derive_storage_slot_in_map,\n traits::is_empty\n};\nuse crate::{\n context::{PrivateContext, UnconstrainedContext},\n oracle::{keys::get_public_keys_and_partial_address, key_validation_request::get_key_validation_request},\n keys::{\n public_keys::{PublicKeys, PUBLIC_KEYS_LENGTH}, stored_keys::StoredKeys,\n constants::{NULLIFIER_INDEX, INCOMING_INDEX, OUTGOING_INDEX, TAGGING_INDEX}\n},\n state_vars::{\n shared_mutable::shared_mutable_private_getter::SharedMutablePrivateGetter,\n public_mutable::PublicMutable, map::Map\n}\n};\n\nmod test;\n\n// This is the number of blocks that must pass after a key rotation event until the old keys are fully phased out and\n// become invalid.\nglobal KEY_REGISTRY_UPDATE_BLOCKS = 5;\n\nglobal KEY_REGISTRY_STORAGE_SLOT = 1;\n\n// A helper function since requesting nsk_app is very common\n// TODO(#6543)\npub fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// Returns all current 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_current_public_keys(context: &mut PrivateContext, account: AztecAddress) -> PublicKeys {\n // We're going to perform historical reads from public storage, and so need to constrain the caller so that they\n // cannot use very old blocks when constructing proofs, and hence e.g. read very old keys. We are lax and allow\n // _any_ recent block number to be used, regardless of whether there may have been a recent key rotation. This means\n // that multiple sets of keys are valid for a while immediately after rotation, until the old keys become phased\n // out. We *must* be lax to prevent denial of service and transaction fingerprinting attacks by accounts that rotate\n // their keys frequently.\n // Note that we constrain the max block number even if the registry ends up being empty: this ensures that proof of\n // an empty registry is also fresh.\n let current_header = context.get_header();\n context.set_tx_max_block_number(current_header.global_variables.block_number as u32 + KEY_REGISTRY_UPDATE_BLOCKS);\n\n get_historical_public_keys(current_header, account)\n}\n\n// Returns historical public keys for a given account at some block determined by a block header. We read all keys at\n// once since the constraints for reading them all are actually fewer than if we read them one at a time - any read keys\n// that are not required by the caller can simply be discarded.\n// WARNING: if called with a historical header created from a fixed block this function will explicitly ignore key\n// rotation! This means that callers of this may force a user to use old keys, potentially leaking privacy (e.g. if the\n// old keys were leaked). Only call this function with a header from a fixed block if you understand the implications of\n// breaking key rotation very well.\npub fn get_historical_public_keys(historical_header: Header, account: AztecAddress) -> PublicKeys {\n // TODO: improve this so that we always hint the correct set of keys (either registry or canonical) and hash them\n // once instead of having two different hints and twice as many constraints due to the double hashing.\n\n // The key registry is the primary source of information for keys, as that's where accounts store their new keys\n // when they perform rotation. The key registry conveniently stores a hash of each user's keys, so we can read that\n // single field and then prove that we know its preimage (i.e. the current set of keys).\n let key_registry_hash = key_registry_hash_public_historical_read(historical_header, account);\n if key_registry_hash != 0 {\n let hinted_registry_public_keys = key_registry_get_stored_keys_hint(\n account,\n historical_header.global_variables.block_number as u32\n );\n assert_eq(hinted_registry_public_keys.hash().to_field(), key_registry_hash);\n\n hinted_registry_public_keys\n } else {\n // If nothing was written to the registry, we may still be able to produce the correct keys if we happen to know\n // the canonical set (i.e. the ones that are part of the account's preimage).\n let (hinted_canonical_public_keys, partial_address) = get_public_keys_and_partial_address(account);\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}\n\nfn key_registry_hash_public_historical_read(historical_header: Header, account: AztecAddress) -> Field {\n // The keys are stored in a Map that is keyed with the address of each account, so we first derive the corresponding\n // slot for this account.\n let keys_storage_slot = derive_storage_slot_in_map(KEY_REGISTRY_STORAGE_SLOT, account);\n\n // The keys are stored as [ ...serialized_keys, hash ], and since arrays get allocated sequential storage slots\n // (prior to siloing!), we simply add the length to the base slot to get the last element.\n let hash_storage_slot = keys_storage_slot + PUBLIC_KEYS_LENGTH as Field;\n\n historical_header.public_storage_historical_read(hash_storage_slot, CANONICAL_KEY_REGISTRY_ADDRESS)\n}\n\nunconstrained fn key_registry_get_stored_keys_hint(account: AztecAddress, block_number: u32) -> PublicKeys {\n // This is equivalent to the key registry contract having an unconstrained getter that we call from an oracle, but\n // PXE does not yet support that functionality so we do this manually instad. Note that this would be a *historical*\n // call!\n\n // TODO (#7524): call the unconstrained KeyRegistry.get_current_keys() function instead\n\n let context = UnconstrainedContext::at_historical(CANONICAL_KEY_REGISTRY_ADDRESS, block_number);\n let keys_storage = Map::new(\n context,\n KEY_REGISTRY_STORAGE_SLOT,\n |context, slot| { PublicMutable::new(context, slot) }\n );\n\n let stored_keys: StoredKeys = keys_storage.at(account).read();\n stored_keys.public_keys\n}\n"},"97":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/history/public_storage.nr","source":"use dep::protocol_types::{\n constants::GENERATOR_INDEX__PUBLIC_LEAF_INDEX, hash::poseidon2_hash_with_separator,\n address::AztecAddress, header::Header, utils::field::full_field_less_than\n};\nuse dep::protocol_types::merkle_tree::root::root_from_sibling_path;\n\nuse crate::{context::PrivateContext, oracle::get_public_data_witness::get_public_data_witness};\n\ntrait PublicStorageHistoricalRead {\n fn public_storage_historical_read(header: Header, storage_slot: Field, contract_address: AztecAddress) -> Field;\n}\n\nimpl PublicStorageHistoricalRead for Header {\n fn public_storage_historical_read(self, storage_slot: Field, contract_address: AztecAddress) -> Field {\n // 1) Compute the leaf slot by siloing the storage slot with the contract address\n let public_data_tree_index = poseidon2_hash_with_separator(\n [contract_address.to_field(), storage_slot],\n GENERATOR_INDEX__PUBLIC_LEAF_INDEX\n );\n\n // 2) Get the membership witness of the slot\n let witness = get_public_data_witness(\n self.global_variables.block_number as u32,\n public_data_tree_index\n );\n\n // 3) Extract the value from the witness leaf and check that the storage slot is correct\n let preimage = witness.leaf_preimage;\n\n // Here we have two cases. Code based on same checks in `validate_public_data_reads` in `base_rollup_inputs`\n // 1. The value is the same as the one in the witness\n // 2. The value was never initialized and is zero\n let is_less_than_slot = full_field_less_than(preimage.slot, public_data_tree_index);\n let is_next_greater_than = full_field_less_than(public_data_tree_index, preimage.next_slot);\n let is_max = ((preimage.next_index == 0) & (preimage.next_slot == 0));\n let is_in_range = is_less_than_slot & (is_next_greater_than | is_max);\n\n let value = if is_in_range {\n 0\n } else {\n assert_eq(preimage.slot, public_data_tree_index, \"Public data tree index doesn't match witness\");\n preimage.value\n };\n\n // 4) Prove that the leaf exists in the public data tree. Note that `hash` returns not just the hash of the value\n // but also the metadata (slot, next index and next slot).\n assert(\n self.state.partial.public_data_tree.root\n == root_from_sibling_path(preimage.hash(), witness.index, witness.path), \"Proving public value inclusion failed\"\n );\n\n value\n }\n}\n"}}}
|