@aztec/protocol-contracts 0.48.0 → 0.49.2

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.32.0+32b4c6ed75387759b3d84df723a52679894feb2d","name":"MultiCallEntrypoint","functions":[{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["aztec(private)"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"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"}],"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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p39x5nNnfvNYc85/zvnA0YdTL07+nHfBp7SWylpqa2mspbWWzlp6axmsZXRyYs1Yy+yMm7Ws1rJZy24th7Wc1nJZy20tj1fMA4P9Ow/5rOW3VuDTuBWyVthaEWtFrRWzVtzaN9ZKWCtprZS1b62VtlbGWllr31krZ628tQrWvrdW0Vola5Wt/WCtirWq1qpZq26thrWa1mpZq22tjrW61upZq2+tgbWG1hpZa2ytibWm1ppZa26thbWW1lpZa22tjbW21tpZa2+tgzV/ax2tdbLW2VoXa12tdbPW3VoPaz2t9bLW21ofa32t9bPW39oAJ1/WBlkbbG2ItaHWhlkbbm2EtZHWRlkbbW2MtbHWxlkbb22CtYnWJln70dpka1OsTbU2zdp0azOszbQ2y9psa3OszbU2z9p8awusLbS2yNpia0usLbW2zNpyayusrbS2ytpqa2usrbW2ztp6axusbbS2ydpma1usbbW2zdp2azus/WRtp7Vd1nZb+9naHmt7re2z9ou1/dYOWDto7Vdrh6wdtnbE2m/Wjlo7Zu24tRPWTlo7Ze20tTPWzlo7Z+28td+tXbB20dola5etXbF21do1a9et3bB209ota39Yu23tjrW71u5Zu2/tgbWH1h5Ze2ztibWn1p5Ze27thbWX1v609sraa2tvrL219s7ae2sfrH205pwMgloLZi24tRDWQloLZS20tTDWwloLZy28tQjWIlqLZC2ytSjWolqLZi26tRjW/KzFtBbLWmxrcazFtRbPWnxrCawltJbImsdaYmtJrCW1lsxacmsprKW0lspaamtprKW1ls5aemsZrGW05pzkjLXM1rJYy2otm7Xs1nJYy2ktl7Xc1vJYy2stn7X81gpYK2itkLXC1opYK2qtmLXi1r6xVsJaSWulrH1rrbS1MtbKWvvOWjlr5a1VsPa9tYrWKlmrbO0Ha1WsVbVWzVp1azWs1bRWy1pta3Ws1bVWz1p9aw2sNbTWyFpja02sNbXWzFpzay2stbTWylpra22stbXWzlp7ax2s+VvraK2Ttc7Wuljraq2bte7Weljraa2Xtd7W+ljra62ftf7WBlgbaG2QtcHWhlgbam2YteHWRlgbaW2UtdHWxlgba22ctfHWJlibaG2StR+tTbY2xdpUa9OsTbc2w9pMa7OszbY2x9pca/Oszbe2wNpCa4usLba2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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":0,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"}},"bytecode":"H4sIAAAAAAAA/9WZ204yMRDHW9mFhdXlw/MBFeTTxLsFAeHOl9Hn8drEd/ARpTAT/q1IbOloaGLa3U5nfjPTw1q0WpRs9qepnVJdVV8LyzxRXW5W+hF1lZKceks4d7aEs7IlnElETr2C09QJtc26M2uuphbr8UsnDjaJrkC/WqfItfpBdeb0RfN2Uk6rYADhFcEn1Me1pr+c+hEwJ2fncvCOHd6Bd2yrAu94J2NbGQVHwO9RtsSOq3s2G40vddLF/Dm0sa8NIUwEfU1lfB2K5WhWJHOkIQ8p6a7BM+ekAfa1kH3W3XDmRwLtC5BlOZbhdcj8e2q5lhprxiXOuAJkqjCu5oyrQXxMMfFqUdvUabaUZTmhOM7nSC6j28pR4sQwB98KsB9vjg4mxsausot2nvFgKYBpT4Sp7BvdTSHdOfiwC778A3vxvpxGwwLsoY1C2fHl5yYwtUSYxhNkanky7cswTZFp35PpQITp8QGZDjyZDkWYBiUyHXoyHYkwja04HXkyHcswvSDTsSfTiQzTMzKdeDKdijA9WvvTqSfTmQzTAJnOPJnORZjGfWQ692AKXRuhedlkf8Dvv4ixs+bYRaAvvmu4LePLCJnagb74nCWh+Qzda0Jj/hfz9RLkI+4/Vo4vA30JzXHonPKN3RXIR4yd9X1yFeiLz56/yXfjtUwMxsh0HehL6BkTuvZ+Y95t45606R6P9yvvVAv+Pz/NgUeBDeWwK2A2JVer10gHdKTROEtrn+iAva5IXBb3LN/lrytufzAxunsyvs3vp/4Lxu2WdPEdZm9F3O7Avhayz7rZ1i3kkttvIMtyLMP3Pcxv7q9uqH23ZlzhjCtA5gbG9Zxx/My5MfF7pbbkXPvJXDd3UbzO74FJZl8qh/h7hQIbyuHkUgBTR4bp1+4Z6+BLF3yMZMvaS3FO+ZxXfzUOz6s6vHPPBvwtsAnvKqCbdXwC3tPG3MogAAA=","debug_symbols":"ndlBboMwFEXRvXgcVTxj/29nK1VVkYRUSBGJAqlUoey90KoL6J1h4M3O6HoJp/7w+HgfxvN1CvvXJVyux24eruN6WkLzEsvP2+nWjduLae7uc9i35rvQj6f1yeNzF87DpQ/7pOb5tttGFYzahoxERpGMWjJKZJTJyMjIyYiIaImIREQkIiIREYmISEREIiISEZGIiEREJCIiExGZiMhERCYiMhGRiYhMRGQiIhMRmYgwIsKICCMijIgwIsKICCMijIgwIsKICCcinIhwIsKJCCcinIhwIsKJCCcinIgoREQhIgoRUYiIQkQUIqIQEYWIKEREISIqEVGJiEpEVCKiEhGViKhERCUiKhFRiQg1DVoJrSJatWiV0CqjlaGVo1VBK2RDyIaQDSEbQjaEbAjZELIhZEPIhpCNiGxEZCMiGxHZiMhGRDYishGRDRQ0hYqmUNIUappCUVOoagplTaGuKRQ2hcqmUNoUaptCcVOobgrlTaG+KRQ4hQqnUOIUapxCkVOocgplTqHOKRQ6hUqnUOoUap36d+xcT5/dfegOl367+9o+Psbj31XYepy/br9f1n+/AQ=="}],"outputs":{"globals":{},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"}}],"kind":"struct","path":"MultiCallEntrypoint::entrypoint_parameters"}}],"kind":"struct","path":"MultiCallEntrypoint::entrypoint_abi"}]}},"file_map":{"100":{"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"},"128":{"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"},"141":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; 2] {}\n\nunconstrained pub fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n"},"146":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr","source":"use dep::protocol_types::{abis::{function_selector::FunctionSelector}, address::AztecAddress};\n\n#[oracle(enqueuePublicFunctionCall)]\nunconstrained fn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) {}\n\nunconstrained pub fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nunconstrained fn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) {}\n\nunconstrained pub fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n}\n\n#[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"},"250":{"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"},"273":{"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"},"300":{"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\nglobal 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"},"410":{"path":"/usr/src/noir-projects/noir-contracts/contracts/multi_call_entrypoint_contract/src/main.nr","source":"// An entrypoint contract that allows everything to go through. Only used for testing\n// Pair this with SignerlessWallet to perform multiple actions before any account contracts are deployed (and without authentication)\ncontract MultiCallEntrypoint {\n use dep::std;\n\n use dep::aztec::prelude::AztecAddress;\n use dep::authwit::entrypoint::app::AppPayload;\n\n #[aztec(private)]\n fn entrypoint(app_payload: AppPayload) {\n app_payload.execute_calls(&mut context);\n }\n}\n"},"5":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\nstruct BoundedVec<T, let MaxLen: u32> {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl<T, let MaxLen: u32> BoundedVec<T, MaxLen> {\n pub fn new() -> Self {\n let zeroed = crate::unsafe::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Get an element from the vector at the given index.\n /// Panics if the given index points beyond the end of the vector (`self.len()`).\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Get an element from the vector at the given index.\n /// Responds with undefined data for `index` where `self.len < index < self.max_len()`.\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Write an element to the vector at the given index.\n /// Panics if the given index points beyond the end of the vector (`self.len()`).\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Write an element to the vector at the given index.\n /// Does not check whether the passed `index` is a valid index within the vector.\n ///\n /// Silently writes past the end of the vector for `index` where `self.len < index < self.max_len()`\n /// Panics if the given index points beyond the maximum length of the vector (`self.max_len()`).\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n pub fn len(self) -> u32 {\n self.len\n }\n\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u32 {\n MaxLen\n }\n\n // This is a intermediate method, while we don't have an\n // .extend method\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n pub fn extend_from_array<let Len: u32>(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_bounded_vec<let Len: u32>(&mut self, vec: BoundedVec<T, Len>) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n pub fn from_array<let Len: u32>(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec<T, MaxLen> = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::unsafe::zeroed();\n elem\n }\n\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> BoundedVec<U, MaxLen> {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n ret\n }\n}\n\nimpl<T, let MaxLen: u32> Eq for BoundedVec<T, MaxLen> where T: Eq {\n fn eq(self, other: BoundedVec<T, MaxLen>) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n \n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nimpl<T, let MaxLen: u32, let Len: u32> From<[T; Len]> for BoundedVec<T, MaxLen> {\n fn from(array: [T; Len]) -> BoundedVec<T, MaxLen> {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec<Field, 5> = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec<Field, 5> = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec<Field, 4> = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.storage()[2], 0);\n }\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with=\"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec<Field, 2> = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n}\n"},"62":{"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"}}}
1
+ {"transpiled":true,"noir_version":"0.33.0+ccbef55cf6af6e8bab3e52daf967175465eb69a2","name":"MultiCallEntrypoint","functions":[{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":0,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"}},"bytecode":"H4sIAAAAAAAA/9WZ204yMRDHW9mFhdXlw/MBFeTTxLsFAeHOl9Hn8drEd/ARpTAT/q1IbOloaGLa3U5nfjPTw1q0WpRs9qepnVJdVV8LyzxRXW5W+hF1lZKceks4d7aEs7IlnElETr2C09QJtc26M2uuphbr8UsnDjaJrkC/WqfItfpBdeb0RfN2Uk6rYADhFcEn1Me1pr+c+hEwJ2fncvCOHd6Bd2yrAu94J2NbGQVHwO9RtsSOq3s2G40vddLF/Dm0sa8NIUwEfU1lfB2K5WhWJHOkIQ8p6a7BM+ekAfa1kH3W3XDmRwLtC5BlOZbhdcj8e2q5lhprxiXOuAJkqjCu5oyrQXxMMfFqUdvUabaUZTmhOM7nSC6j28pR4sQwB98KsB9vjg4mxsausot2nvFgKYBpT4Sp7BvdTSHdOfiwC778A3vxvpxGwwLsoY1C2fHl5yYwtUSYxhNkanky7cswTZFp35PpQITp8QGZDjyZDkWYBiUyHXoyHYkwja04HXkyHcswvSDTsSfTiQzTMzKdeDKdijA9WvvTqSfTmQzTAJnOPJnORZjGfWQ692AKXRuhedlkf8Dvv4ixs+bYRaAvvmu4LePLCJnagb74nCWh+Qzda0Jj/hfz9RLkI+4/Vo4vA30JzXHonPKN3RXIR4yd9X1yFeiLz56/yXfjtUwMxsh0HehL6BkTuvZ+Y95t45606R6P9yvvVAv+Pz/NgUeBDeWwK2A2JVer10gHdKTROEtrn+iAva5IXBb3LN/lrytufzAxunsyvs3vp/4Lxu2WdPEdZm9F3O7Avhayz7rZ1i3kkttvIMtyLMP3Pcxv7q9uqH23ZlzhjCtA5gbG9Zxx/My5MfF7pbbkXPvJXDd3UbzO74FJZl8qh/h7hQIbyuHkUgBTR4bp1+4Z6+BLF3yMZMvaS3FO+ZxXfzUOz6s6vHPPBvwtsAnvKqCbdXwC3tPG3MogAAA=","debug_symbols":"ndnNasJAFIbhe5m1lHyTmTlnvJVSStQogRBFY6GI995ou3DbdxPy92X1rN7cwq7fXA+fw7Q/XsL6/RbG47abh+O0XN3uq7A5D+M4HD5fb4fmeXiL/lxcTt30uHGZu/Mc1m2xVein3XJmcfnCfhj7sE7y+8fqMapg1DZkJDKKZNSSUSKjTEaFjIyMiIiWiEhERCIiEhGRiIhERCQiIhERiYhIREQiIjIRkYmITERkIiITEZmIyEREJiIyEZGJiEJEFCKiEBGFiChERCEiChFRiIhCRBQiwogIIyKMiDAiwogIIyKMiDAiwogIIyKciHAiwokIJyKciHAiwokIJyKciHAiohIRlYioREQlIioRUYmISkRUIqISEZWIUNOgldAqolWLVgmtMloVtDK0crRCNoRsCNkQsiFkQ8iGkA0hG0I2hGwI2YjIRkQ2IrIRkY2IbERkIyIbEdlAQVOoaAolTaGmKRQ1haqmUNYU6ppCYVOobAqlTaG2KRQ3heqmUN4U6ptCgVOocAolTqHGKRQ5hSqnUOYU6pxCoVOodAqlTqHWqX/Hzvty+dWdh24z9n8/xvbXafvyn2z+Pv0+WV7+AQ=="},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["aztec(private)"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"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"}],"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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p39x5nNnfvNYc85/zvnA0YdTL07+nHfBp7SWylpqa2mspbWWzlp6axmsZXRyYs1Yy+yMm7Ws1rJZy24th7Wc1nJZy20tj1fMA4P9Ow/5rOW3VuDTuBWyVthaEWtFrRWzVtzaN9ZKWCtprZS1b62VtlbGWllr31krZ628tQrWvrdW0Vola5Wt/WCtirWq1qpZq26thrWa1mpZq22tjrW61upZq2+tgbWG1hpZa2ytibWm1ppZa26thbWW1lpZa22tjbW21tpZa2+tgzV/ax2tdbLW2VoXa12tdbPW3VoPaz2t9bLW21ofa32t9bPW39oAJ1/WBlkbbG2ItaHWhlkbbm2EtZHWRlkbbW2MtbHWxlkbb22CtYnWJln70dpka1OsTbU2zdp0azOszbQ2y9psa3OszbU2z9p8awusLbS2yNpia0usLbW2zNpyayusrbS2ytpqa2usrbW2ztp6axusbbS2ydpma1usbbW2zdp2azus/WRtp7Vd1nZb+9naHmt7re2z9ou1/dYOWDto7Vdrh6wdtnbE2m/Wjlo7Zu24tRPWTlo7Ze20tTPWzlo7Z+28td+tXbB20dola5etXbF21do1a9et3bB209ota39Yu23tjrW71u5Zu2/tgbWH1h5Ze2ztibWn1p5Ze27thbWX1v609sraa2tvrL219s7ae2sfrH205pwMgloLZi24tRDWQloLZS20tTDWwloLZy28tQjWIlqLZC2ytSjWolqLZi26tRjW/KzFtBbLWmxrcazFtRbPWnxrCawltJbImsdaYmtJrCW1lsxacmsprKW0lspaamtprKW1ls5aemsZrGW05pzkjLXM1rJYy2otm7Xs1nJYy2ktl7Xc1vJYy2stn7X81gpYK2itkLXC1opYK2qtmLXi1r6xVsJaSWulrH1rrbS1MtbKWvvOWjlr5a1VsPa9tYrWKlmrbO0Ha1WsVbVWzVp1azWs1bRWy1pta3Ws1bVWz1p9aw2sNbTWyFpja02sNbXWzFpzay2stbTWylpra22stbXWzlp7ax2s+VvraK2Ttc7Wuljraq2bte7Weljraa2Xtd7W+ljra62ftf7WBlgbaG2QtcHWhlgbam2YteHWRlgbaW2UtdHWxlgba22ctfHWJlibaG2StR+tTbY2xdpUa9OsTbc2w9pMa7OszbY2x9pca/Oszbe2wNpCa4usLba2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","debug_symbols":"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Shuv0sartPEqbbxKG6/Sxqu08SptvEobr9LGq7TxKm28Shuv0sartPEqbbxKG6/Sxqu08SptvEobr9LGq7TxKm28Shuv0sartPEqbbxKG6/Sxqu08SptvEobr9LGq7TxKm28Shuv0sartPEqbbxKG6/Sxqu08SptvEobr9LGq7TxKm28Shuv0sartPEqbbxKG6/Sxqu08SptvEobr9LGq7TxKm28Shuv0sartPEqbbxKG6/Sxqu08SptvEobr9LGq7TxKm28Shuv0sartPEqbbxKG6/Sxqu08SptvEobr9LGq7Xxam28Whuv1sarH6EHpB5QekDrAVsP0EnWxqu18WptvFobr9bGq7Xxam28Whuv1sartfFqbbxaG6/Wxqu18WptvFobr9bGq7Xxam28Whuv1sartfFqbbxaG6/Wxqu18WptvFobr9bGq7Xxam28Whuv1sartfFqbbxaG6/Wxqu18WptvFobr9bGq7Xxam28Whuv1sartfFqbbxaG6/Wxqu18WptvFobr9bGq7Xxam28Whuv1sartfFqbbxaG6/Wxqu18WptvFobr9bGq7Xxam28Whuv1sartfFqbbxaG6/Wxqu18WptvFobr9bGq7Xxam28Whuv1sartfFqbbxaG6/Wxqu18WptvFobr9bGq7Xx2tp4bW28tjZeWxuv/Qg9IPWA0gNaD9h6gE6yNl5bG6+tjdfWxmtr47W18draeG1tvLY2Xlsbr62N19bGa2vjtbXx2tp4bW28tjZeWxuvrY3X1sZra+O1tfHa2nhtbby2Nl5bG6+tjdfWxmtr47W18draeG1tvLY2Xlsbr62N19bGa2vjtbXx2tp4bW28tjZeWxuvrY3X1sZra+O1tfHa2nhtbby2Nl5bG6+tjdfWxmtr47W18draeG1tvLY2Xlsbr62N19bGa2vjtbXx2tp4bW28tjZeWxuvrY3X1sZra+O1tfHa2nhtbby2Nl5bG6+tjdfWxmtr47W18draeG1tvLY2Xlsbr62N19bGa2vjtbXx2tp4bW28tjZeWxuvo43X0cbraON1tPE6j9ADUg8oPaD1gK0H6CRr43W08TraeB1tvI42Xkcbr6ON19HG62jjdbTxOtp4HW28jjZeRxuvo43X0cbraON1tPE62ngdbbyONl5HG6+jjdfRxuto43W08TraeB1tvI42Xkcbr6ON19HG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LLkjS+7Ikjuy5I4suSNL7siSO7Lkjiy5I0vuyJI7suSOLLkjS+7Ikjuy5I4suSNL7siSO7Lkjiy5I0vuyJI7suSOLLkjS+7Ikjuy5I4suSNL7siSO7Lkjiy5I0vuyJI7suSOLLkjS+7Ikjuy5I4suSNL7siSO7Lkjiy5I0vuyJI7suSOLLkjS+7Ikjuy5I4suSNL7siSO7Lkjiy5I0vuyJI7suSOLLkjS+7Ikjuy5I4suSNL7siSO7Lkjiy5I0vuyJI7suSOLLkjS+7Ikjuy5I4suSNL7siSO7Lkjiy5IyvuyIo7suKOrLgjq0fwCcknFJ/QfMLmE3imuSMr7siKO7Lijqy4IyvuyIo7suKOrLgjK+7Iijuy4o6suCMr7siKO7Lijqy4IyvuyIo7suKOrLgjK+7Iijuy4o6suCMr7siKO7Lijqy4IyvuyIo7suKOrLgjK+7Iijuy4o6suCMr7siKO7Lijqy4IyvuyIo7suKOrLgjK+7Iijuy4o6suCMr7siKO7Lijqy4IyvuyIo7suKOrLgjK+7Iijuy4o6suCMr7siKO7Lijqy4IyvuyIo7suKOrLgjK+7Iijuy4o6suCMr7siKO7Lijqy4IyvuyIo7suKOrLgjK+7Iijuy4o6suCMr7siKO7Lijqy4IyvuyJo7suaOrLkja+7I+hF8QvIJxSc0n7D5BJ5p7siaO7Lmjqy5I2vuyJo7suaOrLkja+7Imjuy5o6suSNr7siaO7Lmjqy5I2vuyJo7suaOrLkja+7Imjuy5o6suSNr7siaO7Lmjqy5I2vuyJo7suaOrLkja+7Imjuy5o6suSNr7siaO7Lmjqy5I2vuyJo7suaOrLkja+7Imjuy5o6suSNr7siaO7Lmjqy5I2vuyJo7sv64I5uPFb8+eK7H7ya89eCqfnn048vfY359+Hi89fjRnS/r995fH/2yfV69fV29fV+9/b56+3Pz9tQbvvHgqpdn/pOA+/rg9ehf9xlPts98sn3Wd/3T9mXj89v2e+Q7f9rmGmN9ffYR83eP/+UVxPWvIK9/BXX9K+jv/ArO+O1Td8x+Y6Mnv2K1f7sDj/nqDjz5Ffv29h8Xtj90+3H19vPq7deTf/W2vn5wfvm7hlfbx9XbP/t3jN/e/tm/Y/z29s/+HeO3t3/27xi/vf2zf8f4ze3Pk9/ad7Z/8lv7zvZPfmvf2f7q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"}],"outputs":{"globals":{},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"}}],"kind":"struct","path":"MultiCallEntrypoint::entrypoint_parameters"}}],"kind":"struct","path":"MultiCallEntrypoint::entrypoint_abi"}]}},"file_map":{"105":{"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"},"133":{"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"},"146":{"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"},"151":{"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"},"255":{"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"},"278":{"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"},"307":{"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"},"418":{"path":"/usr/src/noir-projects/noir-contracts/contracts/multi_call_entrypoint_contract/src/main.nr","source":"// An entrypoint contract that allows everything to go through. Only used for testing\n// Pair this with SignerlessWallet to perform multiple actions before any account contracts are deployed (and without authentication)\ncontract MultiCallEntrypoint {\n use dep::std;\n\n use dep::aztec::prelude::AztecAddress;\n use dep::authwit::entrypoint::app::AppPayload;\n\n #[aztec(private)]\n fn entrypoint(app_payload: AppPayload) {\n app_payload.execute_calls(&mut context);\n }\n}\n"},"5":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\nstruct BoundedVec<T, let MaxLen: u32> {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl<T, let MaxLen: u32> BoundedVec<T, MaxLen> {\n pub fn new() -> Self {\n let zeroed = crate::unsafe::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Get an element from the vector at the given index.\n /// Panics if the given index points beyond the end of the vector (`self.len()`).\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Get an element from the vector at the given index.\n /// Responds with undefined data for `index` where `self.len < index < self.max_len()`.\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Write an element to the vector at the given index.\n /// Panics if the given index points beyond the end of the vector (`self.len()`).\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Write an element to the vector at the given index.\n /// Does not check whether the passed `index` is a valid index within the vector.\n ///\n /// Silently writes past the end of the vector for `index` where `self.len < index < self.max_len()`\n /// Panics if the given index points beyond the maximum length of the vector (`self.max_len()`).\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n pub fn len(self) -> u32 {\n self.len\n }\n\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u32 {\n MaxLen\n }\n\n // This is a intermediate method, while we don't have an\n // .extend method\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n pub fn extend_from_array<let Len: u32>(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_bounded_vec<let Len: u32>(&mut self, vec: BoundedVec<T, Len>) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n pub fn from_array<let Len: u32>(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec<T, MaxLen> = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::unsafe::zeroed();\n elem\n }\n\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> BoundedVec<U, MaxLen> {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n ret\n }\n}\n\nimpl<T, let MaxLen: u32> Eq for BoundedVec<T, MaxLen> where T: Eq {\n fn eq(self, other: BoundedVec<T, MaxLen>) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n \n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nimpl<T, let MaxLen: u32, let Len: u32> From<[T; Len]> for BoundedVec<T, MaxLen> {\n fn from(array: [T; Len]) -> BoundedVec<T, MaxLen> {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec<Field, 5> = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec<Field, 5> = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec<Field, 4> = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.storage()[2], 0);\n }\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with=\"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec<Field, 2> = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n}\n"},"65":{"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"}}}