@aztec/accounts 0.56.0 → 0.57.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"transpiled":true,"noir_version":"0.34.0+02fea6abe8637b9fb8f9535d1709b367d5e1da5c","name":"SchnorrAccount","functions":[{"name":"constructor","is_unconstrained":false,"custom_attributes":["private","initializer"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"signing_pub_key_x","type":{"kind":"field"},"visibility":"private"},{"name":"signing_pub_key_y","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"7b3RbuNalmX7L/lcDyT34uZm/crFQSOrurqRQCKzUZV9gYtC/vu1w0FaERIpi95anFp7vDTydIkyNccMm2PSlv77T//zP/7t//7v//GXv/2vv//Xn/71//nvP/317//+53/85e9/e/uv//5Tbz/+//7r//z5b+//+V//+PN//uNP/9pPg/3Ln/7jb//z/X8m++e//Ol//eWv//Gnf7U0//Nfrh49zH3++ehhTmV9dG/9jUencZ5+Pjrlqbvz6L6bpm45lW4qn+cyTOXW40vul4eX8vns7y/i+sF9t77MfkyXD/7jX/7Uj0SzFU0mmq1opu9Hk0o/LC+22EU0ffrxJcrzv8RcAXDfLV9i6NNwgWy+iaxPK7Hx4tF5fD+hoXM/oWEsy3MP0/TLCd1qUL+eyTz3n30rNx89fD56uGhnunneee1ymcaLunU3YxzmvOaYuvle89P67+rtn1L+TvOHHkTqiAYQqSNKIPoaopQ+f2Akm/x+xA8GInVEYyhE/QWi+R6ifhzS56uc7j36REhZHNJky5kMXXcXUhrXYMbhIph3BFKxT8R+Ruzl1NhLuVKqKo63folhSN2dExrGeQl/mPpy1whPY5U6otmKpoblDba+2F+K+fZi379EDUtJ43KhMqSLK5WNPMfy+U1kzr98E3k/oaR2QqZ2QjWut1JZv7nZkO6ckK3/ACyXq9PJWqczaZ1O0TqdGj+Hks2fp2O/f0ex29/PP/8F9Gnq73yJfrD+86fp57+X8uNFWP/0rzA8/Sukp38Fq/AV3n7crY+++FlWpps/acp6LTnMn9Xb0Kwyrz/4Lr7HDVO69eh5nD8VLt956tKtl2JluLim/fEz1UZiuRVLJpZbsUzNxjKso2xJ8++xFGK5FctMLDdiGbtWY5ny+uBi3e+x9HFiGT7vKA+Xd5QPfMsdB2K5FUsilluxWLOx7H7LDXSVWzOWQFe5NWMJdJX7WCz7P6BjXeWWz1jS5VO/v9JYF647rzQHuhYdurW9bzer7j317o/RHOpatF4soa5F68US6lr0oVj2foxmI5ZbsYS6Fq0XS6hr0Udi2b3oyrEW1/IZy/z7pUjQy8sbrzTQ5eXQD+P6SvO3tosp0rVoxVgiXYtWjCXStehjsez9GJ0iXYtWjMWI5VYska5FH4pl96JrinX3//NSJP++/0xRLy+vX6n75WX6/F1yS+OdV3reX31NM8HcDKZ0BHM7mJ5gbgczEMztYBLB3A7GCOZ2MCPB3A4mE8ztYCaCuR0MV74bwXDlezuYmSvfjWC48t0IhivfjWDEr3xP+2Pe2QjmdjBCV77vp1PlenOdZnvr7pzOy7yrwjyRzEYyVa441/do/D2Z96+w8Ye7/Vr7y7efuf0VSlr+jLhchHPz20Gal2XZLt5O4cdbFl09dp76Bek8XczQt1NP68J9+cw3Mx+maf13Ol28dcFtQBXfVrLbeEuKT5xTuRf2MNr6R9tj/vwB/Lbw33j0mPMCcswXbwz1/haRt+4p2Br52/+2Xx//4xX0L/8KhhqvYF46MWTr77yCaV7/efQX5/P+1i9Xj7Vx6Y+Nn8W0m2/N9dBjuzUW6y4ePcwfoaQmQ+mHpVrWT/NVKEZTrpsy0pTrpmSact2UiaZcN6W0GMrbRepy2ZemfPFG3j8vi2bvUMrnLNHZ/Esq7yfUd2ee0MWv3Kwn1Huf0Ns/39Wnunm6U5xx7JbnHse+fPsirR8ae713r79Kf8/z0nqdnKaLM0q3zsjyvDzz2/+8+Acw3Hq1/fD5tu7DUDC8bcPrzRtkXn8G53IP5DxOyyudx7m7U9u5pJVOmW6UdmzoteaGXuvU0GstcV7r27SR1t/z74aSr1/t3NKrHbpIrzanzw/DyRcz6+3Ht/1TeOjDkr+Ug6XnQ1OvNjX1ai3Sq53ysL7a0t34jh3oivILrzbQNeUXXm2gq8ovvNpQ15V3X22o68p7rzaFuq68+2pDXUvdfbWhrqXuvtpQ11J3X6019WqbupZKTV1LpaaupVJT11KpqWspa+paypq6lrKmrqWsqWspa+paypq6lrKmrqWsqWspa+paypq6lhqbupYam7qWGpu6lhqbupYam7qWGpu6lhqbupYam7qWGpu6lhqbupbKTV1L5aaupXJT11K5qWup3NS1VG7qWio3dS2Vm7qWyk1dS+WmrqWmpq6lpqaupaamrqWmpq6lpqaupaamrqWmpq6lpqaupaamrqWmpq6lSlPXUqWpa6nS1LVUaepaqjR1LVWaupYqTV1LlaaupUpT11KlqWupualrqbmpa6m5qWupualrqbmpa6m5qWupualrqbmpa6m5qWupuaVrqaFr6Vpq6Fq6lho672upeX0nsLEb+zuv9v0jidbTz92dR6fRlrcyTePF+xZvJLO+JWzfjb88849cErnczMXI5WYuo3QuQ1nf5Nfyve8xw7x+5svw9mUuHt3fePQ4rG9CPqZfkuk/ksntJjPlz2TynUfvv+P+0E3E+KUYd9+jf+hKszF+fojWmMbuXow2rm8yahfXGcOtd+zc/wiAoZvJvH7mZf2gpVSuM+87MnfPvCdz98y1/SVm5tpuFDNzI3P3zNt1uvMyb9cWz8u8XbU8L/NAHpq6aX2pv3y81u0U5zVyu0z8VoijrY+9/HzuAw7aB3JQjbz3+z0E8s+XyDuQe75E3oG88yXyDuScL5G3kbdr3oFc8yXyDuSZL5F3IMd8ibzxyy/knbvlznJO437eJS8PLeXi5c0fv0Y1oJd1457z8hmQ88W/hPe4b5zwbMtv/aQ5fz7xkG+db/r8dbtU0uWD30EmvDUISIQ4CEhMOwhIFD4ISANkDJCMDkFAsmYEAclMEgQk+0sQkCw7MUAay04QkCw7QUCy7AQBybITBKQBMgZIlp0gIFl2goBk2QkCkmUnCEiWnRggR5adICBZdoKAZNkJApJlJwhIA2QMkCw7QUCy7AQBybITBCTLThCQLDsxQGaWnSAgWXaCgGTZCQKSZScISANkDJAsO0FAsuwEAcmyEwQky04QkCw7MUBOLDtBQLLsBAHJshMEJMtOEJAGyBggWXaCgGTZCQKSZScISJadICBZduqC7C316ymP+Q7K0XJaz6LkfZRvJNeg8yX38daDU7d+MFPq7fLB79wLQ1Cb3NmN2uTOzNQmd1apoNw/zyOZTVfcDe5Ncmfzisp9/SScZBcfhXPzwcM8Lc88zGW+82CzxT0Hy9P+gz9fn10+74dMFnY6ynda+dgWKd+j5SvLMw9jN3+nfOyhlO+08rHhUr4HyzcNS3Jvd1ftzoO7tDRp6Mb0jabOrM409TWayk5OU5/a1FzWps79d5rKsk9TX6Op3IugqW9x9WlNbrjzzEOa1qamebh88I9GGY2iUY81qtrgOHOrhfKdVj5utVC+08rHrRbK92j5aq3dM7daKN9p5eNWC+V7sHzjvP7YzUP3m8KmjlsiNKpuo7h1QaPqNopbDDSqbqO4FUCjHmzUIzet+lLWOOZuuKqfUT/qd179uHNA/Z5Yv2q/BpU6bjPQ1NdoKvckaOprNJUbGDT1qU2t9At7b0RpKk19hab23EWhqe9xre+N8COBbzh6z10UGlW3UdxFoVGPNaqedPTccKF8p5XPKB/lO6t83GyhfI+Wr5qXcv+E8p1WPm6JBC3faGsY43jnL3ke+8vw3b+3TT23LmjUSW/wl3ruRlC+s8o3cIOB8p1WPu5FUL6T3l0yDdy2oHynlY/bFpTvwfLt/+XRYDSKRlVtFDcYaFTdRnHXgEbVbRS3AmjUE98k9s6vvg3cN6B+J9aPOwfU7xU+diAlbjPQ1NdoKvckaOprNJUbGDT1FT4gIyXudtDU12iq0VSaes7bz6fEDRfKd1r5uDdD+U56+/mUuI1D+U4rHzdxKN9LvMNa4n4PTX2Jphr3e2jqS7zDmnG/h6a+RlO530NTq75zm3FfhkbVbZTRKBp10jtiGfdPKN9p5eP+CeU7rXzcP6F8Z70dm3H/hPKdVj5uiVQuX+nGNbqh/6V874GPLPvOgTNQOwfOzuocODPkEwPv7TpwI3DfwFmmnANnjXEOnAXCOXCs2zlwTNP3sjBjms6BY5rOgWOazoFjms6BG4H7Bo5pOgeOaToHjmk6B45pOgeOafoGPmGafr/B8CNwTNM5cEzTOXBM0zlwI3DfwDHNLwQ+rb9CV/puP/DczQubi9+fS8PPuPFM17ixTNe4cUzXuDFMz7gLfukaN3bpGjdu6Ro3ZukatxG3Z9xYpWvcWKVr3Fila9xYpWvcWKVn3DNW6Ro3VukaN1bpGjdW6Rq3Ebdn3Fila9xYpWvcWKVr3Fila9xYpWPc1mGVrnFjla5xY5WucWOVrnEbcXvGjVW6xo1VusaNVbrGjVW6xo1VesbdY5WucWOVrnFjla5xY5WucRtxe8aNVbrGjVW6xo1VusaNVbrGjVV6xj1gla5xY5WucWOVrnFjla5xG3F7xo1VusaNVbrGjVW6xo1VusaNVXrGnbBK17ixSte4sUrXuLFK17iNuO/HXeblNOZ77wI75OVph/dPH1/ivvU53WO35DamYf+hqdhyBqn8+rw/KCKrESjiwBEootYRKGLsESgyBASgaOwLESgyW0SgyBoSgSIjSwSKBsUAFNluIlBku4lAke0mAkW2mwgU2W4CUBzZbiJQZLuJQJHtJgJFtpsIFA2KASiy3USgyHYTgSLbTQSKbDcRKLLdBKCY2W4iUGS7iUCR7SYCRbabCBQNigEost1EoMh2E4Ei200Eimw3ESiy3QSgOLHdRKDIdhOBIttNBIpsNxEoGhQDUGS7iUCR7SYCRbabCBTZbiJQZLsJQLGw3USgyHYTgSLbTQSKbDcRKBoUA1Bku4lAke0mAkW2mwgU2W4iUGS7CUBxZruJQJHtJgJFtpsIFNluIlA0KAagyHYTgSLbTQSKbDcRKLLdRKDIdvMKFK3Ly2ehWj/k/Qf387jk0M/ld+Rjx9DTHHJWoeaQMyE1h5y9qTnkBvLWkLNkNYec2as55GxkzSFnUGsOOetba8h71rfmkLO+NYec9a055KxvzSE3kLeGnPWtOeSsb80hZ31rDjnrW3PIWd9aQz6wvjWHnPWtOeSsb80hZ31rDrmBvDXkrG/NIWd9aw4561tzyFnfmkPO+tYa8sT61hxy1rfmkLO+vQLysZuXlzb2qbuiyKAWgaJBMQBFZq8IFFmyIlBknIpAkb0pAkUmpAAUjVUoAkWGnggU2W4iUGS7iUDRoBiAIttNBIpsNxEost1EoMh2E4Ei200AiiPbTQSKbDcRKLLdRKDIdhOBokExAEW2mwgU2W4iUGS7iUCR7SYCRbabABQz200Eimw3ESiy3USgyHYTgaJBMQBFtpsIFNluIlBku4lAke0mAkW2mwAUJ7abCBTZbiJQZLuJQJHtJgJFg2IAimw3ESiy3USgyHYTgSLbTQSKbDcBKBa2mwgU2W4iUGS7iUCR7SYCRYNiAIpsNxEost1EoMh2E4Ei200Eimw3ASjObDcRKLLdRKDIdhOBIttNBIoGxQAU2W4iUGS7eQmKaf3IzTHN+Yoi200Eimw3ESiy3bw+xdyx3USgyHYTgSLbTQSKbDcRKBoUA1Bku4lAke0mAkW2mwgU2W4iUGS7CUCxZ7uJQJHtJgJFtpsIFNluIlA0KAagyHYTgSLbTQSKbDcRKLLdRKDIdhOA4sB2E4Ei200Eimw3ESiy3USgaFAMQJHtJgJFtpsIFNluIlBku4lAke0mAMXEdhOBIttNBIpsNxEost1EoGhQDECR7SYCRbabCBTZbiJQZLuJQJHtJgBFY7uJQJHtJgJFtpsIFNluIlA0KAagyHYTgSLbTQSKbDcRKLLdRKDIdhOA4sh2E4Ei200Eimw3ESiy3USgaFAMQJHtJgJFtpsIFNluIlBku4lAke0mAMXMdvMKFHOXFiC5m4crimw3ESiy3USgyHYTgaJBMQBFtpsIFNluIlBku4lAke0mAkW2mwAUJ7abCBTZbiJQZLuJQJHtJgJFg2IAimw3ESiy3USgyHYTgSLbTQSKbDcBKBa2mwgU2W4iUGS7iUCR7SYCRYNiAIpsNxEost1EoMh2E4Ei200Eimw3ASjObDcRKLLdRKDIdhOBIttNBIoGxQAU2W4iUGS7iUCR7SYCRbabCBTZbl6f4tSx3USgyHbzEhRTlxeKKaUrimw3ESiy3USgaFAMQJHtJgJFtpsIFNluIlBku4lAke0mAMWe7SYCRbabCBTZbiJQZLuJQNGgGIAi200Eimw3ESiy3USgyHYTgSLbTQCKA9tNBIpsNxEost1EoMh2E4GiQTEARbabCBTZbiJQZLuJQJHtJgJFtpsAFBPbTQSKbDcRKLLdRKDIdhOBokExAEW2mwgU2W4iUGS7iUCR7SYCRbabABSN7SYCRbabCBTZbiJQZLuJQNGgGIAi200Eimw3ESiy3USgyHYTgSLbTQCKI9tNBIpsNxEost1EoMh2E4GiQTEARbabCBTZbiJQZLt5CYo520Ixz+MVRbabCBTZbgJQzGw3L0Fx6uaF4pTm/QeXYVyQl+GCyO0H5yWz8utDf7SDTYh2bLeDrYl2bLeDDYt2bLfDaAft2GwHmxvt2G4HWx7t2G4HGyHt2G4H2yPt2G4Hmybt2GzHxFZKO7bbwVZKO7bbwVZKO7bbwVZKO7bbYbSDdmy2g62Udmy3g62Udmy3g62Udmy3g62Udmy3g62Udmy2o7CV0o7tdrCV0o7tdrCV0o7tdrCV0o7tdhjtoB2b7WArpR3b7WArpR3b7WArpR3b7WArpR3b7WArpR2b7ZjZSmnHdjvYSmnHdjvYSmnHdjvYSmnHdjuMdtCOzXawldKO7XawldKO7XawldKO7XawldKO7XawldKOrXaUjq2Udmy3g62Udmy3g62Udmy3g62Udmy3w2gH7dhsB1sp7dhuB1sp7dhuB1sp7dhuB1sp7dhuB1sp7dhsR89WSju228FWSju228FWSju228FWSju222G0g3ZstoOtlHZst4OtlHZst4OtlHZst4OtlHZst4OtlHZstmNgK6Ud2+1gK6Ud2+1gK6Ud2+1gK6Ud2+0w2kE7NtvBVko7ttvBVko7ttvBVko7ttvBVko7ttvBVko7NtuR2Eppx3Y72Eppx3Y72Eppx3Y72Eppx3Y7jHbQjs12sJXSju12sJXSju12sJXSju12sJXSju12sJXSjs12GFsp7dhuB1sp7dhuB1sp7dhuB1sp7dhuh9EO2rHZDrZS2rHdDrZS2rHdDrZS2rHdDrZS2rHdDrZS2rHZjpGtlHZst4OtlHZst4OtlHZst4OtlHZst8NoB+3YbAdbKe3YbgdbKe3YbgdbKe3YbgdbKe3YbgdbKe3YbEdmK6Ud2+1gK6Ud2+1gK6Ud2+1gK6Ud2+0w2kE7NtvBVko7ttvBVko7ttvBVko7ttvBVko7ttvBVhqwHWlc21Hy78gnBtDmkLNqNoecqbI55OyPzSE3kLeGnKWwOeTMf80hZ9NrDjlDXXPIWd/iIU/T8uBive0/+C20tIZWPp95yLcy68fl1Vk/pcsHv5epsOtRpmplYjGkTNXKxBZJmaqViZWTMlUrk1EmylSrTCyzlKlamdh8KVO1MrEmU6ZqZWKnpkzVysQCTplqlWlmAadM1crEAk6ZqpWJBZwyVSsTCzhlqlYmo0yUqVaZWMApU7UysYBTpmplYgGnTNXKxAJOmaqViQWcMlUq09yxgFOmamViAadM1crEAk6ZqpWJBZwyVSuTUSbKVKtMLOCUqVqZWMApU7UysYBTpmplYgGnTNXKxAJOmWqVqWcBp0zVysQCTpmqlYkFnDJVKxMLOGWqViajTJSpVplYwClTtTKxgFOmamViAadM1crEAk6ZqpWJBZwy1SrTwAJOmaqViQWcMlUrEws4ZapWJhZwylStTEaZKFOtMrGAU6ZqZWIBp0zVysQCTpmqlYkFnDJVKxMLOGWqVabEAk6ZqpWJBZwyVSsTCzhlqlYmFnDKVK1MRpkoU60yNbuAf77EqYx3ypRmW/CkOY93Ek9rnyyV68SbnYlPS7zZLfW0xJsdHE9LvNlV7qzErdnp6rTEm913Tku82RHktMSbXQpOS9xI3DlxnNM7cZzTO3Gc0ztxnNM7cZzTOfER5/ROHOf0Thzn9E4c5/RO3EjcOXGc0ztxnNM7cZzTO3Gc0ztxnNM58YxzeieOc3onjnN6J45zeiduJO6cOM7pnTjO6Z04zumdOM7pnTjO6Zz4hHN6J45zeieOc3onjnN6J24k7pw4zumdOM7pnTjO6Z04zumdOM7pnHjBOb0Txzm9E8c5vRPHOb0Tt2YTn5ezLqn/JfEfuUQywz4vZ536X9rV3zyTr79t1GjrY8vnY2++bVSa+rKmkT/fs2nJO5IXSuRdbP3HUG7kHckKXyHvSE74CnlHMsIXyHuO5IOvkHckG3yFvCO54CvkHckEXyFvI2/XvPHLL+Sdu/zzsfne2xKXvDy0lIuXN6ePuNHLunHP2X4+dL74l/Ae93P3qhlvDQISIQ4CEtMOAbLvOhw+CknWgSgk2R2ikGTRiELSIBmEJCtMFJIMPFFIsvBEIcnEE4UkG08Qkj0bTxSSbDxRSLLxRCHJxhOFpEEyCEk2nigk2XiikGTjiUKSjScKSTaeICQHNp4oJNl4opBk44lCko0nCkmDZBCSbDxRSLLxRCHJxhOFJBtPFJJsPEFIJjaeKCTZeKKQZOOJQpKNJwpJg2QQkmw8UUiy8UQhycYThSQbTxSSbDxBSBobTxSSbDxRSLLxRCHJxhOFpEEyCEk2nigk2Xjqkuwt9espj/kOy9FyWs+i5H2WbyjXoPMl+PHWg1O3fo5T6u3ywR/gmYQaBc+C1Ch4Bqc2wY/sU0HBf55HMpuuwTNnNQqe9Ssq+PXjc5JdfH7OzQcP87Q88zCX+c6DzRYFHSxP+w/+fH12+bw/nXJksaN957XPaB/te7B9ZXnmYezmb7WPZZT2ndc+1lza92D7pmFJbpiy3XlwlxYmw9tl3reqyv5MVV+kqizmVPWpVc1lrercf6uqbPxU9TWqmrkrQVX/NXX9chqpG+4885CmtappHi4f/FEp7ndQqQcrVW94zNx0oX3ntY+bLrTvvPYZ7aN9D7av2uyduelC+85rHzddaN+D7Rvn9SdvHrprkeXmCJWqXCluYlCpypXiZgOVqlupiZsCVOrBSj1y/6ovZY1j7q7vIEzcQaB/Z/aPewj074n9q/hbURM3HKjqi1TVqCpVfY2qciuDqj61qtV+gW/ivgdVfZGqcj+Fqr71c17fNeFHAt8yde6nUKnKleJ+CpV6rFIVzaNw64X2ndc+brzQvvPax20X2vdo+6rZaeFOCu07r31G+2K2b7RhefA43vnznsf+ZPzO3+EWbmJQqdPeALBwX4L2ndc+bjXQvvPax10J2nfa208WbmDQvtPaN3MDg/Y92L47f440c1eCSlWuFLcaqFTlSnH/gEpVrpRRKSr1vPeRvfercDN3EOjfmf3jHgL9e41PJ5i54UBVX6Sq3J2gqi9SVW5lUNWX+CCNvuO+B1V9kapyP4WqnvUm9X3HrRfad177uEtD+856k/q+M9pH+05rH7dzaN9LvAFb33Hnh6q+SFW580NVX+IN2PqOOz9U9UWqyp0fqlr1jd3eOkWlqFTdSnEnhUqd9X5Zfc+dFNp3Xvu4k0L7zmuf0T7ad9K7tfU9d1Jo33nt4+ZI5faVblyjG/pf2veROBu/d+JM1d6Js7g6Jz4wSD4x8d5uJM5e5504G5V34uwy3okbiTsnjn97X6vgnN6J45zeieOc3onjnM6JJ5zTO3Gc0ztxnNM7cZzTO3EjcefEcU7vxHFOv7vsH4njnN6J45zeieOczokbzumdOM75hcSn9Xe9St/tJ567eYFz8YteaVjyxjh988Y3ffM28nbNG9f0zRvT9M0bz/TNG8v0zRvHdM17xDB988YvffPGL33zxi998zbyds0bv/TNG7/0zRu/9M0bv/TNG790zTvjl75545e+eeOXvnnjl755G3m75o1f+uaNX/rmjV/65o1f+uaNX7rmPeGXvnnjl75545dfyLvMy2nM934DfMjrp3LMn++jm269l+TYLbmNadh/aCq2fjJI+fV5PzCirSEwGhgjYESyQ2DE3UNgZBIIgZGlIQRGBowIGAu7SAiMzC0hMLLihMDIihMCo4ExAkZWnBAYWXFCYGTFCYGRFScERlacCBhnVpwQGFlxQmBkxQmBkRUnBEYDYwSMrDghMLLihMDIihMCIytOCIysOAEwDh0rTgiMrDghMLLihMDIihMCo4ExAkZWnBAYWXFCYGTFCYGRFScERlacCBh7VpwQGFlxQmBkxQmBkRUnBEYDYwSMrDghMLLihMDIihMCIytOCIysOBEwDqw4ITCy4oTAyIoTAiMrTgiMBsYIGFlxQmBkxQmBkRUnBEZWnBAYWXEiYEysOCEwsuKEwMiKEwIjK04IjAbGCBhZcUJgZMUJgZEV5xUwWpeXT1O1fsj7D+7ncfmU1n4uN5gz+bTHnH2oOebGmNQec5an9pgzU7XHnE2rPeYG8+aYs5a1x5xprT3m7HDtMWeHa485O1xzzEd2uPaYs8O1x5wdrj3m7HDtMTeYN8ecHa495uxw7TFnh2uPOTtce8zZ4Zpjntnh2mPODtcec3a49pizw7XH3GDeHHN2uPaYs8O1x5wdrj3m7HDtMWeHa475xA73CszHbl4wjn3qrjEyrYXAyFoWAiMDWAiMBsYIGJmpQmBkeQqBkTEpBEb2oRAYmXwiYCysOCEwsuKEwMiKEwIjK04IjAbGCBhZcUJgZMUJgZEVJwRGVpwQGFlxImCcWXFCYGTFCYGRFScERlacEBgNjBEwsuKEwMiKEwIjK04IjKw4ITCy4gTAmDpWnBAYWXFCYGTFCYGRFScERgNjBIysOCEwsuKEwMiKEwIjK04IjKw4ETD2rDghMLLihMDIihMCIytOCIwGxggYWXFCYGTFCYGRFScERlacEBhZcSJgHFhxQmBkxQmBkRUnBEZWnBAYDYwRMLLihMDIihMCIytOCIysOCEwsuJEwJhYcUJgZMUJgZEVJwRGVpwQGA2Mr4AxrZ/ZOaY5X2NkxQmBkRUnBEZWnBAYWXFCYGTFiYDRWHFCYGTFCYGRFScERlacEBgNjBEwsuKEwMiKEwIjK04IjKw4ITCy4kTAOLLihMDIihMCIytOCIysOCEwGhgjYGTFCYGRFScERlacEBhZcUJgZMWJgDGz4oTAyIoTAiMrTgiMrDghMBoYI2BkxQmBkRUnBEZWnBAYWXFCYGTFiYBxYsUJgZEVJwRGVpwQGFlxQmA0MEbAyIoTAiMrTgiMrDghMLLihMDIihMBY2HFCYGRFScERlacEBhZcUJgNDBGwMiKEwIjK04IjKw4ITCy4oTAyIoTAePMihMCIytOCIysOCEwsuKEwGhgjICRFScERlacEBhZcUJgZMV5BYy5S8tLy908XGNkxQmA0TpWnBAYWXFCYGTFCYGRFScERgNjBIysOCEwsuKEwMiKEwIjK04IjKw4ETD2rDghMLLihMDIihMCIytOCIwGxggYWXFCYGTFCYGRFScERlacEBhZcSJgHFhxQmBkxQmBkRUnBEZWnBAYDYwRMLLihMDIihMCIytOCIysOCEwsuJEwJhYcUJgZMUJgZEVJwRGVpwQGA2METCy4oTAyIoTAiMrTgiMrDghMLLivATG1OUFY0rpCqOx4oTAyIoTAiMrTgiMrDghMBoYI2BkxQmBkRUnBEZWnBAYWXFCYGTFiYBxZMUJgZEVJwRGVpwQGFlxQmA0MEbAyIoTAiMrTgiMrDghMLLihMDIihMBY2bFCYGRFScERlacEBhZcUJgNDBGwMiKEwIjK04IjKw4ITCy4oTAyIoTAePEihMCIytOCIysOCEwsuKEwGhgjICRFScERlacEBhZcUJgZMUJgZEVJwLGwooTAiMrTgiMrDghMLLihMBoYIyAkRUnBEZWnBAYWXFCYGTFCYGRFScCxpkVJwRGVpwQGFlxQmBkxQmB0cAYASMrzktgzNkWjHkerzGy4oTAyIoTAiMrzktgnLp5wTilef/BZRgX5mW4IHL7wXlYHvvrQz/qwTpEPTbrMXasTtRjpx6sWdRjpx6sZNRjpx6sb9Rjpx5GPajHdj1YC6nHTj1YIanHTj1YN6nHTj1YTanHTj1YTanHdj16VlPqsVMPVlPqsVMPVlPqsVMPVlPqsVMPox7UY7serKbUY6cerKbUY6cerKbUY6cerKbUY6cerKbUY7seA6sp9dipB6sp9dipB6sp9dipB6sp9diph1EP6rFdD1ZT6rFTD1ZT6rFTD1ZT6rFTD1ZT6rFTD1ZT6rFdj8RqSj126sFqSj126sFqSj126sFqSj126mHUg3ps14PVlHrs1IPVlHrs1IPVlHrs1IPVlHrs1IPVlHps18NYTanHTj1YTanHTj1YTanHTj1YTanHTj2MelCP7XqwmlKPnXqwmlKPnXqwmlKPnXqwmlKPnXqwmlKP7XqMrKbUY6cerKbUY6cerKbUY6cerKbUY6ceRj2ox3Y9WE2px049WE2px049WE2px049WE2px049WE2px3Y9Mqsp9dipB6sp9dipB6sp9dipB6sp9diph1EP6rFdD1ZT6rFTD1ZT6rFTD1ZT6rFTD1ZT6rFTD1ZT6rFdj4nVlHrs1IPVlHrs1IPVlHrs1IPVlHrs1MOoB/XYrgerKfXYqQerKfXYqQerKfXYqQerKfXYqQerKfXYrkdhNaUeO/VgNaUeO/VgNaUeO/VgNaUeO/Uw6kE9tuvBako9durBako9durBako9durBako9durBako9tusxs5pSj516sJpSj516sJpSj516sJpSj516GPWgHtv1YDWlHjv1YDWlHjv1YDWlHjv1YDWlHjv1YDWlHpv1yB2rKfXYqQerKfXYqQerKfXYqQerKfXYqYdRD+qxXQ9WU+qxUw9WU+qxUw9W04D1SONaj5KvmTOFxmOepuXBxXrbf3DqpuW1pa58PvOQb2XWj8urs35Klw/+aBPLKW2q1qaeoZU21WsTuyxtqtcmZlzaVK9NrL60qV6bjDbRpmptYlOmTfXaxARNm+q1icWaNtVrE1s4barXJrZw2lStTQNbOG2q1ya2cNpUr01s4bSpXpvYwmlTvTYZbaJN1drEFk6b6rWJLZw21WsTWzhtqtcmtnDaVK9NbOG0qVqbEls4barXJrZw2lSvTWzhtKlem9jCaVO9Nhltok3V2sQWTpvqtYktnDbVaxNbOG2q1ya2cNpUr01s4bSpWpuMLZw21WsTWzhtqtcmtnDaVK9NbOG0qV6bjDbRpmptYgunTfXaxBZOm+q1iS2cNtVrE1s4barXJrZw2lStTSNbOG2q1ya2cNpUr01s4bSpXpvYwmlTvTYZbaJN1drEFk6b6rWJLZw21WsTWzhtqtcmtnDaVK9NbOG0qVqbMls4barXJrZw2lSvTWzhtKlem9jCaVO9Nlmrbfp8idMvj71VkTTbwifNebwTeVoLZanciLzZwfi8yJtdVc+LvNnp8bzIm93nzou82RHrtMinZpee8yJvdg45L/JmN4PzIm9WrM+L3IjcO3Ls0z1y7NM9cuzTPXLs0z1y7NM78oJ9ukeOfbpHjn26R459ukduRO4dOfbpHjn26R459ukeOfbpHjn26R35jH26R459ukeOfbpHjn26R25E7h059ukeOfbpHjn26R459ukeOfbpHPnUYZ/ukWOf7pFjn+6RY5/ukRuRe0eOfbpHjn26R459ukeOfbpHjn16R95jn+6RY5/ukWOf7pG3a5/zctYl9b9E/hGMBQpmSHk5kWHu7wQz9us7Tf0SzHjrrEdb2jV+vkJ7f4eqJ/c2kk8GxBPJPQPiieSpAfFEctqAeCL5bzw8QyRXDognklcHxBPJwQPiieTrAfEYeJTxsBpI42E1kMbDaiCNh9VAGg+rgTKexGogjYfVQBoPq4E0HlYDaTwGHmU8rAbSeFgNpPGwGkjjYTWQxsNqoIzHWA2k8bAaSONhNZDGw2ogjcfAo4yH1UAaD6uBNB5WA2k8rAbSeFgNlPGMrAbSeFgNpPGwGkjjYTWQxmPgUcbDaiCNh9VAGg+rgTQeVgNpPKwGyngyq4E0HlYDaTysBtJ4WA2k8Rh4lPGwGkjjYTWQxsNqII2H1UAaD6uBMp6J1UAaD6uBNB5WA2k8rAbSeAw8ynhYDaTxsBpI42E1kMbDaiCNh9VAGU9hNZDGw2ogjYfVQBoPq4E0HgOPMh5WA2k8rAbSeFgNpPGwGkjjYTVQxjOzGkjjYTWQxsNqII2H1UAaj4FHGQ+rgTQeVgNpPKwG0nhYDaTxsBoI4ykdq4E0HlYDaTysBtJ4WA2k8Rh4lPGwGkjjYTWQxsNqII2H1UAaD6uBMp6e1UAaD6uBNB5WA2k8rAbSeAw8ynhYDaTxsBpI42E1kMbDaiCNh9VAGc/AaiCNh9VAGg+rgTQeVgNpPAYeZTysBtJ4WA2k8bAaSONhNZDGw2qgjCexGkjjYTWQxsNqII2H1UAaj4FHGQ+rgTQeVgNpPKwG0nhYDaTxsBoo4zFWA2k8rAbSeFgNpPGwGkjjMfAo42E1kMbDaiCNh9VAGg+rgTQeVgNlPCOrgTQeVgNpPKwG0nhYDaTxGHiU8bAaSONhNZDGw2ogjYfVQBoPq4EynsxqII0n6GqQ+u4OnrlfTmS+iPw2ntFWlOXzeYvdOompL2sa2T4Dt5+BB90Bzgu82LCcRLkVeFCz1w3cCNw38KD2rRt4UJ/WDTyoIesGHtR5dQMParGygU9BvVQ3cEzzC4HnbnninMb9wN8uQ34+tJSLlzenn3kjmnXznvOy0cwX/xbe837yRjNhsFFIGiSDkMS5o5BE5qOQZCWIQpL5IQpJdo0gJAuDSRSSLDFRSLLxRCHJxhOFpEEyCEk2nigk2XiikGTjiUKSjScKSTaeICRnNp4oJNl4opBk44lCko0nCkmDZBCSbDxRSLLxRCHJxhOFJBtPFJJsPDFIzh0bTxSSbDxRSLLxRCHJxhOFpEEyCEk2nigk2XiikGTjiUKSjScKSTaeICR7Np4oJNl4opBk44lCko0nCkmDZBCSbDxRSLLxRCHJxhOFJBtPFJJsPEFIDmw8UUiy8UQhycZTl2RvqV9Pecx3WI6Wlxc4Wsn7LN9QrkHnS/C3TjmlrnyGYZcP/gDPJNQoeAN8m+AZnBoFzz4VFPzneSSz6Ro8c1aj4Fm/ooJfP0In2cVn6Nx88DBPyzMPc5nvPNhsUdDB8rT/4M/XZ5fPuzglix3tO619iZWR9j3avrI88zB287faxzJK+85rH2su7XuwfdOw3CAYpmx3HtylpUlDN6ZvVZX9maq+SFWNqlLVZ1Y1l7Wqc/+tqrLxU9UXqSp3Jajqv6auX04jdcOdZx7StFY1zcPlgz8qxf0OKvVgpSoOj9x0oX3ntY+bLrTvtPYZN11o36PtqzZ7GzddaN957eOmC+17sH3jvP7kzUN3JbLGzREqVblSRqWoVN1KcbOBSlWuFDcFqNSDlXrk/lVfyhrH3F3fQTDuINC/M/vHPQT698T+VfytKOOGA1V9jaqO3J2gqi9SVW5lUNWnVrXaL/CN3Pegqi9SVe6nUNW3fs7ruyb0wzdNfTQqRaXqVor7KVTqsUrVNA9uvdC+89rHjRfad177uO1C+x5tXz075U4K7TutfZmbI0HbN9qwPHgc7/x5z2N/Mn7n73AzNzGo1GlvAJi5L0H7zmsftxpo33ntM9pH+856+8nMDQzad177uIFB+x5s350/R8rclaBSlSvFrQYqVblS3D+gUnUrNXFTgEo98X1k7/0q3MQdBPp3Zv+4h0D/XuPTCSZuOFDVF6mqUVWq+hpV5VYGVX2ND9KYuO9BVV+kqtxPoaqnvUn9xK0X2nde+7hLQ/tOe5P6wg0d2nde+7idQ/te4w3YCnd+qOqLVJU7P1T1Nd6ArRhVpaqvUVXu/FDVum/sVrhDQ6UqV4o7KVTqtPfLKtxJoX3ntY87KbTvtPbN3Emhfae9W9vMnRTad177uDlSuX2lG9fohv6X9n0kzsbvnbiRuHPiLK7eiTNIPjHx3m4kzl7nnTgblXfi7DKuiQ9dxxbhnTj+7Xqt8pY4zumdOM7pnbiRuHPiOKd34jind+I4p3fiOKd34jinc+I9zumdOM7pnTjO6XeX/SNxnNM7cSNx58RxTu/EcU7vxHHOLyQ+rb/rVS6e92biuZsXOBe/6PV2aj/zxjh988Y3XfMesE3fvHFN37wxTd+88UzfvI28XfPGMX3zxjB988YvffPGL33zxi9d8074pW/e+KVv3vilb974pW/eRt6ueeOXvnnjl75545e+eeOXvnnjl655G37pmzd+6Zs3fumbN37pm7eRt2ve+KVv3vilb974pW/e+OUX8i7zchrzvd8AH/L6qRzz5/voplvPOnZLbmMa9h+aiq2fDFJ+fd4PjGhrBIwjNhwCI5IdAiPuHgIjk0AIjAbGCBgZMEJgZBcJgZG5JQRGVpwQGFlxImDMrDghMLLihMDIihMCIytOCIwGxggYWXFCYGTFCYGRFScERlacEBhZcSJgnFhxQmBkxQmBkRUnBEZWnBAYDYwRMLLihMDIihMCIytOCIysOCEwsuJEwFhYcUJgZMUJgZEVJwRGVpwQGA2METCy4oTAyIoTAiMrTgiMrDghMLLiRMA4s+KEwMiKEwIjK04IjKw4ITAaGCNgZMUJgZEVJwRGVpwQGFlxQmBkxQmAse9YcUJgZMUJgZEVJwRGVpwQGA2METCy4oTAyIoTAiMrTgiMrDghMLLiRMDYs+KEwMiKEwIjK04IjKw4r4DRurx8mqr1Q95/cD+Py6e09nO5wdxg3hxz9qH2mDMmtcec5ak95sxU7TFn02qO+cAA1h5z1rL2mDOttcecHa495gbz5pizw7XHnB2uPebscO0xZ4drjzk7XHPMEztce8zZ4dpjzg7XHnN2uPaYG8ybY84O1x5zdrj2mLPDtcecHa495uxwzTE3drj2mLPDtcecHa495uxw7TE3mDfHnB2uPebscK/AfOzmBePYp+4aI9NaCIysZSEwMoBFwDiyaYXAyEwVAiPLUwiMjEkhMBoYI2Bk8gmBkRUnBEZWnBAYWXFCYGTFiYAxs+KEwMiKEwIjK04IjKw4ITAaGCNgZMUJgZEVJwRGVpwQGFlxQmBkxYmAcWLFCYGRFScERlacEBhZcUJgNDBGwMiKEwIjK04IjKw4ITCy4oTAyIoTAWNhxQmBkRUnBEZWnBAYWXFCYDQwRsDIihMCIytOCIysOCEwsuKEwMiKEwHjzIoTAiMrTgiMrDghMLLihMBoYIyAkRUnBEZWnBAYWXFCYGTFCYGRFScAxqFjxQmBkRUnBEZWnBAYWXFCYDQwRsDIihMCIytOCIysOCEwsuKEwMiKEwFjz4rzEhjT+pmdY5rzNUZWnBAYWXFCYGTFCYHRwBgBIytOCIysOCEwsuKEwMiKEwIjK04EjAMrTgiMrDghMLLihMDIihMCo4ExAkZWnBAYWXFCYGTFCYGRFScERlacCBgTK04IjKw4ITCy4oTAyIoTAqOBMQJGVpwQGFlxQmBkxQmBkRUnBEZWnAgYjRUnBEZWnBAYWXFCYGTFCYHRwBgBIytOCIysOCEwsuKEwMiKEwIjK04EjCMrTgiMrDghMLLihMDIihMCo4ExAkZWnBAYWXFCYGTFCYGRFScERlacCBgzK04IjKw4ITCy4oTAyIoTAqOBMQJGVpwQGFlxQmBkxQmBkRUnBEZWnAgYJ1acEBhZcUJgZMUJgZEVJwRGA+MLYMxdWoDkbh6uMbLihMDIihMCIytOCIysOCEwsuJEwFhYcUJgZMUJgZEVJwRGVpwQGA2METCy4oTAyIoTAiMrTgiMrDghMLLiRMA4s+KEwMiKEwIjK04IjKw4ITAaGCNgZMUJgZEVJwRGVpwQGFlxQmBkxQmAMXWsOCEwsuKEwMiKEwIjK04IjAbGCBhZcUJgZMUJgZEVJwRGVpwQGFlxImDsWXFCYGTFCYGRFScERlacEBgNjBEwsuK8BMa3nWbBmFK6xsiKEwIjK04IjKw4ITCy4kTAOLDihMDIihMCIytOCIysOCEwGhgjYGTFCYGRFScERlacEBhZcUJgZMWJgDGx4oTAyIoTAiMrTgiMrDghMBoYI2BkxQmBkRUnBEZWnBAYWXFCYGTFiYDRWHFCYGTFCYGRFScERlacEBgNjBEwsuKEwMiKEwIjK04IjKw4ITCy4kTAOLLihMDIihMCIytOCIysOCEwGhgjYGTFCYGRFScERlacEBhZcUJgZMWJgDGz4oTAyIoTAiMrTgiMrDghMBoYI2BkxQmBkRUnBEZWnBAYWXFCYGTFiYBxYsUJgZEV5yUw5mwLxjyP1xhZcUJgZMUJgdHA+AoYp25eME5p3n9wGcaFeRkuiNx+cB6Wx/760I96sA5Rj516sDpRj516sGZRj516sJJRj516sL5Rj+16FFY96rFTD9ZC6rFTD1ZI6rFTD9ZN6rFTD6Me1GO7Hqym1GOnHqym1GOnHqym1GOnHqym1GOnHqym1GO7HjOrKfXYqQerKfXYqQerKfXYqQerKfXYqYdRD+qxXQ9WU+qxUw9WU+qxUw9WU+qxUw9WU+qxUw9WU+qxWQ/rWE2px049WE2px049WE2px049WE2px049jHpQj+16sJpSj516sJpSj516sJpSj516sJpSj516sJpSj+169Kym1GOnHqym1GOnHqym1GOnHqym1GOnHkY9qMd2PVhNqcdOPVhNqcdOPVhNqcdOPVhNqcdOPVhNqcd2PQZWU+qxUw9WU+qxUw9WU+qxUw9WU+qxUw+jHtRjux6sptRjpx6sptRjpx6sptRjpx6sptRjpx6sptRjux6J1ZR67NSD1ZR67NSD1ZR67NSD1ZR67NTDqAf12K4Hqyn12KkHqyn12KkHqyn12KkHqyn12KkHqyn12K6HsZpSj516sJpSj516sJpSj516sJpSj516GPWgHtv1YDWlHjv1YDWlHjv1YDWlHjv1YDWlHjv1YDWlHtv1GFlNqcdOPVhNqcdOPVhNqcdOPVhNqcdOPYx6UI/terCaUo+derCaUo+derCaUo+derCaUo+derCaUo/temRWU+qxUw9WU+qxUw9WU+qxUw9WU+qxUw+jHtRjux6sptRjpx6sptRjpx6sptRjpx6sptRjpx6sptRjux4Tqyn12KkHqyn12KkHqyn12KkHqyn12KmHUQ/qsV0PVlPqsVMPVlPqsVMPVlPqsVMPVlPqsVMPVlPqsV2PwmpKPXbqwWpKPXbqwWpKPXbqwWoasB5pXOtR8jVzg3k45mlaHlyst/0Hp25aXlvqyuczD/kWvX5cXp31U7p88EebWE5pU702MbTSpnptYpelTfXaxIxLm+q1idWXNlVr08xITJvqtYlNmTbVaxMTNG2q1yYWa9pUr01Gm2hTtTaxhdOmem1iC6dN9drEFk6b6rWJLZw21WsTWzhtqtWmsWMLp0312sQWTpvqtYktnDbVaxNbOG2q1yajTbSpWpvYwmlTvTaxhdOmem1iC6dN9drEFk6b6rWJLZw2VWtTzxZOm+q1iS2cNtVrE1s4barXJrZw2lSvTUabaFO1NrGF06Z6bWILp0312sQWTpvqtYktnDbVaxNbOG2q1qaBLZw21WsTWzhtqtcmtnDaVK9NbOG0qV6bjDbRpmptYgunTfXaxBZOm+q1iS2cNtVrE1s4barXJrZw2lStTYktnDbVaxNbOG2q1ya2cNpUr01s4bSpXpuMNtGmam1iC6dN9drEFk6b6rWJLZw21WsTWzhtqtcmtnDaVK1N1uwW3ve2JNP35dc+fUQTadg1W6OxbHeisXkcltLMdx89pGn9B5Tmz38Wa46RJs1n5mhmS46Wp8scbzx1Xs7afv0W8BF5pN3vqZGX5bnf33zsW5EbkX8p8nFeW56H7vq7RaRZ6Jk5TsP6XXe6ePTN6r79fFteZD93N75FR1pPXib0SCODSuhDl5b4hm5M3/qOHknbI/KJJMI6fHJZ+cz9d/iMkdQyIp9IfpumYeVj413179fX2Kd88ehb551mW8aZNOfxzt6S1jXJUrneW8ZIMvwyoUfS4ZcJ3QjdP/RI9vwyoUey55cJPZI9v0zokZT4ZUKP5LmvEnqOJK8vEzpGekLoGOkJoWOkJ4RuhO4fOkZ6QugY6QmhY6QnhI6RnhA6Ruof+oSRnhA6RnpC6BjpCaFjpCeEboTuHzpGekLoGOkJoWOkJ4SOkZ4QOkbqH3rBSE8IHSM9IXSM9ITQMdITQjdC9w8dIz0hdIz0hNAx0hNCx0hPCB0j9Q99xkhPCB0jPSF0jPSE0DHSE0I3QvcPHSM9IXSM9ITQMdITQsdITwgdI3UPPXcNG+n63ppvDxhcQ2/YSM8LvWEjPS/0ho30vNCN0P1Db9hIzwu9YSM9L/SGjfS80Bs20vNCb9hITwu9x0hPCB0jPSF0jPSE0DHSE0I3QvcPHSM9IXSM9ITQMdITQsdITwgdI/UPfcBITwgdIz0hdIz0hNAx0hNCN0L3Dx0jPSF0jPSE0DHSE0LHSE8IHSP1Dz1hpCeEjpGeEDpGekLoGOkJoRuh+4eOkZ4QOkZ6QugY6QmhY6QnhI6R+oduGOkJoWOkJ4SOkZ4QOkZ6QuhG6P6hY6QnhI6RnhA6RnpC6BjpCaG3a6TDOK6hz66hj+0a6Ymht2ukJ4berpGeGHq7Rnpi6Ebo/qG3a6Qnht6ukZ4YertGemLo7RrpiaFjpP6hZ4z0hNAx0hNCx0hPCB0jPSF0I3T/0DHSE0LHSE8IHSM9IXSM9ITQMVL/0CeM9ITQMdITQsdITwgdIz0hdCN0/9Ax0hNCx0hPCB0jPSF0jPSE0DFS/9ALRnpC6BjpCaFjpCeEjpGeELoRun/oGOkJoWOkJ4SOkZ4QOkZ6QugYqX/oM0Z6QugY6QmhY6QnhI6RnhC6Ebp/6BjpCaFjpCeEjpGeEHq7RprS+s5GqdwLveTlwaVcnPWcfsbYrmM+FOOc7eeD59L9EuNzez517froiwBq111fBFC7nvsigNp14hcBZADSBtSua78IoHa9/EUAtevwLwII3xcHxJKgDahnSRAHxJIgDoglQRwQS4I4IAOQNiCWBHFALAnigFgSxAGxJIgDYknQBjSwJIgDYkkQB8SSIA6IJUEckAFIGxBLgjgglgRxQCwJ4oBYEsQBsSRoA0osCeKAWBLEAbEkiANiSRAHZADSBsSSIA6IJUEcEEuCOCCWBHFALAnagIwlQRwQS4I4IJYEcUAsCeKADEDagFgSxAGxJIgDYkkQB8SSIA6IJeFLgHpL/XomY76DaLS8nPdoJe8jeiO05pcveY43X2NXlgen3i4f/IPnyPAQiyc7RSyezBqxeLKCvBbPz/N4e43TNU+DZyiebCwvxnN9h/hkF28Rf/PBwzwtzzzMZb7zYLPFsQbL0/6DP1+fXT7vT2ka2YUoVfVSsWVRqp+lKsszD2M3f6tU7G+Uqnqp2Awp1ceDp2FZl4cp250Hd2kpyNCN6TsNzKycNPDcBrLL0sAjDcxlbeDcf6uBLMk08NwGsn3HbWDq+uU0UjfceeYhTWsD08Unby4rbDaaQlMqD2aZaZ9SVS8V0z6lql4qpn1KVXuFzUz7lKp6qZj2KdVHqcZ5/fGXh+5K6SYmeJrytaYwldOUrzWFSZumfK0pTM805aMpj9z86EtZ45i76516MmpFrerXiqWaWj1eq4q/rjIxa9PAcxvIBk4Dz20ggzkNPNLAar8wNbGu08BTG1hY7SM3cF7/FrofvumshdWepnytKaz2NKX2xXph4KdU1UtllIpS1S4V4z6lqu5p7PWUqnqpmOBfq1Sjra9xHO/8BcJjfzF65+/1ClM5Tfl4cL2/gims35SqdqlmBm1KVb1UbN+U6mepqv1p1cxMTqmql4qZnFJ9PPjOX0zMRlNoypeawqBNU77WFFZqmvK1pjA905SPB9f8w6qZnZpaPaFWLNXU6vFa1fulktIxa9PAcxvIBk4Dz20ggzkNPNLAWr8wVTrWdRp4bgONBoZt4ElvR1w6Bn5KVb1U3AugVD9LVevXG0rHbQNKVb1U3DSgVOcuG9xfoIGnNrDn/gINPHXZ6Lm/QAPPbSD3FyI3sN47HJWe+wA05WtNMZpCU2pfrLPXU6rqpWKvp1TVS8VeT6mqexp7PaWqXiom+K+VqnTjmsjQ/1KqH0EOLMmVgmQQrRQku16lIJm9Hg+ytxtBGkHWCZIlpFKQ2H+lIDHeSkFieZV+amM2dYJMmE2lIDGbSkFiNpWCxGwqBWkEWSdIzKZSkJhNpSAxm0pBYjaVgsRsvhbkzo3AH0EaZlMpSMymUpCYTaUgMZtKQVqzQeZhOe0+j+MvQX5E066r3I2mXfu4G027PnE3mnYN4W407V7z34tmbPcq/m407V6X342m3Svtu9G0e+18Nxojmq1ouBrejIar4c1ouBrejIar4c1ouBreiiZzNbwZDVfDm9FwNbwZDVfDm9EY0WxFw9XwZjRcDW9Gw9XwZjRcDW9Gw9XwVjQTV8Ob0XA1vBkNV8Ob0XA1vBmNEc1WNO1eDU/rO4b0czf/Es2NR3fDvP7yTpcu39/9/TVfPz7N67Nb//nbO8luPbjvlg+56PuL9zd6e/AHpHavy18IUruG8EKQ2nWVByGllD4h2XQPUllfZ19K901I7VrT60Aq7frbC0Fq1yQvIV3+qc5NSGm2eXnu+fLd42691ZylvPwVkKWSLh/8EXq7jnpi6O3a74mhG6H7h46xnxA6Bn5C6Bj1CaFjyCeEjvH6hz5jsCeEjpGeEDpGekLoGOkJoRuh+4eOkZ4QOkZ6QugY6QmhY6QnhI6Ruoc+dxjpCaFjpCeEjpGeEDpGekLoRuj+oWOkJ4SOkZ4QOkZ6QugY6QmhY6T+ofcY6QmhY6QnhI6RnhA6RnpC6Ebo/qFjpCeEjpGeEDpGekLoGOkJoWOk/qEPGOkJoWOkJ4SOkZ4QOkZ6QuhG6P6hY6QnhI6RnhA6RnpC6BjpCaFjpP6hp2aNdOj75UyGtyf/JfSPaJr1xvvRRLK7aUjridyNpuTl7f9KuTiPeQkmkoE9FMyclzfzmi/e+Os9mGd/BzMi9448kn29SOSR3OtFIo9kXi8SeSTvepHII1nXa0RukZzrRSKP5HIvEnmzjnhe5Nine+RG5N6RY5/ukWOf7pFjn+6RY5/ukWOf3pGP2Kd75Nine+TYp3vk2Kd75Ebk3pFjn+6RY5/ukWOf7pFjn+6RY5/ekWfs0z1y7NM9cuzTPXLs0z1yI3LvyLFP98ixT/fIsU/3yLFP98ixT+/IJ+zTPXLs0z1y7NM9cuzTPXIjcu/IsU/3yLFP98ixT/fIsU/3yLFP78gL9ukeOfbpHjn26R55s/bZW+rX5x7zndBHy8tzj1byfuhvma+J5EtC460Hp64sD069XT74g5BBSJxQs277MoSaVeGXIdSsOcsQ+jyPZDZdE2pWtF+GULNerkNofY/PZBdv8nnzwe9z4c8Hv7O782CzxRAGy9P+gz9fn10+789L/rnZLYGaPFKTZvePFmpSlmcexm7+Vk2a3WyoySM1YWeKW5NpWDbGYcp258FdWpAP3Zi+1SmjU3SqcqfY8ujUR6dyWTs199/qFOsjnardKfbSV+pU6vr1JXbDnWce0rR2Ks3DP3/f+WaW2LjsKw44zMHU5F5NUtcxB1OTL9SEOThwTSrtfG81YQ6mJl+oCXNw3JqM8/pDJw/db/ryxt5g3yx75tV22TODtsueuTIu+0cm8L6UNY65G66LwrZJUb5UFNZNivLjwbVu/r+dIlMonardKXZTOlW7U4ysdOqjU5V+oeT9FOkUnarcKaNTL9Wpef37wn74pp/1LL3tsmfpDcu+5mUsozA1+UJNmISpyRdqwiAcuCbVnGRg46UmX6gJs+3ZNRltWB48jnd+d/mxv9na/fuaN/bMq3HZ1/uN+IHFlJp8oSZGTajJ/ZqwlwauSbU/nBiYVqnJF2rCtBq3Jnd+13pgL22XPSNos+wTy2a77Jkr47Kv+WcTiW2TonypKKybFOXHg+vdok9Gp+hU5U6xm9Kp2p1iZKVTH52q9gsliUWWTtXuFEvvK3XqrLduTIzC1OR+TYz9OHBNqt1aNqZmavKFmjA0x63JSV5ubNJ0qnanjE7RqbpebmzSdKp2p9ikX6tTFd9Pw9iO22XPxhuWfc3LWDZeanK/JiMbLzX5Qk3YeAPXpJqTjGy81OQLNWl3ti3duL7Gof+lJh/RGNFsRdPuiHY3mna3oLvRtDuVXEbT241o2l0S7kbTrj3fiya3a4x3o2nXku5G064Z3PsJlbka3ozGiGYrGq6GN6PhangzGq6GN6PhangzGq6Gt6KZuBrejIar4c1ouBrejIZf6f3T9S2Ej2iMaLai4RcsN6Ph9wQ3o+HX6DajiXQ1XLr1nmjpp1+i+Xixka5v773YEumK9e6LjXQNevfFRrqqvPtiI10n3n2x1tKLjXQtd/fFRro6u/tiI11v3X2xLV1BlZauoOaWrqDmlq6g5pauoOaWrqBma+nFtnQFNbd0BTW3dAU1t3QFNTd0BdV3DV1B9V1DV1B919AVVN81dAXVd9bSi23oCqrvGrqC6ruGrqD6rqErqL7TvoKyeT2P8eIDm24/eh7nnw+eL//U8v2crh475PX9h+bPP/JOt/4sc+yWlzemYf+hQ54/39bo4n5y+ngbkr7XvoSLlrb2NeSLpZ26bv27524s+w/u53H5vtPPJV2j0b7ibRqN9vV502gMNKpotN2naTTaptY0Gm2vbBqNtgU3jQZnV0UzIPiyaFgDZNGwBsiiYQ2QRWOgUUXDGiCLhjVAFg1rgCwa1gBZNKwBqmgSa4AsGtYAWTSsAbJoWANk0RhoVNGwBsiiYQ2QRcMaIIuGNUAWDWuAKhpjDZBFwxogi4Y1QBYNa4AsGgONKhrWAFk0rAGyaFgDZNGwBsiiYQ1QRTOyBsiiYQ2QRcMaIIuGNUAWjYFGFQ1rgCwa1gBZNKwBsmhYA2TRsAaoosmsAbJoWANk0bAGyKJhDZBFY6BRRcMaIIuGNUAWDWuALBrWAFk0rAGqaCbWAFk0rAGyaFgDZNGwBsiiMdCoomENqInGki1RWOmv00bwHT+bacLZPdNGwz3Txqwd0y7Ismfa+K9n2iitZ9pYqmfaRtqOaeOSnmnjkp5p45KeaeOSnmnjko5pz7ikZ9q4pGfauKRn2rikZ9pG2o5p45KeaeOSnmnjkp5p45KeaeOSfmkPHS7pmTYu6Zk2LumZNi7pmbaRtmPauKRn2rikZ9q4pGfauKRn2rikY9o9LumZNi7pmTYu6Zk2LumZtpG2Y9q4pGfauKRn2rikZ9q4pGfauKRj2gMu6Zk2LumZNi7pmTYu6Zm2kbZj2rikZ9q4pGfauKRn2rikZ9q4pGPaCZf0TBuX9Ewbl/RMG5f0TNtI2zFtXNIzbVzSM21c0jNtXNIzbVzSMW3DJT3TxiVF3/Z/MMRTFg2WKovGQKOKBv+VRYMsy6LBrGXRoOGyaHB2VTQjgi+LhjVAFg1rgCwa1gBZNAYaVTSsAbJoWANk0bAGyKJhDZBFwxqgiiazBsiiYQ2QRcMaIIuGNUAWjYFGFQ1rgCwa1gBZNKwBsmhYA2TRsAaooplYA2TRsAbIomENkEXDGiCLxkCjioY1QBYNa4AsGtYAWTSsAbJoWANU0RTWAFk0rAGyaFgDZNGwBsiiMdCoomENkEXDGiCLhjVAFg1rgCwa1gBVNDNrgCwa1gBZNKwBsmhYA2TRGGhU0bAGyKJhDZBFwxogi4Y1QBYNa4AomrfnAo0qGtYAWTSsAbJoWANk0RhoVNGwBtREY2NaorBp2n9wyQuZMpVrMGwBomBYAkTBsAOIgmEF0ATTswGIgmEBEAWD/4uCwf5FwRhgNMFg/qJgMH9RMJi/KBjMXxQM5q8JZsD8RcFg/qJgMH9RMJi/KBgDjCYYzF8UDOYvCgbzFwWD+YuCwfw1wSTMXxQM5i8KBvMXBYP5i4IxwGiCwfxFwWD+omAwf1EwmL8oGMxfE4xh/qJgMH9RMJi/KBjMXxSMAUYTDOYvCgbzFwWD+YuCwfxFwWD+mmBGzF8UDOYvCgbzFwWD+YuCMcBogsH8RcFg/qJgMH9RMJi/KBjMXxNMxvxFwWD+omAwf1EwmL8oGAOMJhjMXxQM5i8KBvMXBYP5i4LB/DXBTJi/KBjMXxQM5i8KBvMXBWOA0QSD+YuCwfxFwWD+omAwf1EwmL8mmIL5i4LB/EXBYP6iYDB/UTAGGE0wmL8oGMxfFAzmLwoG8xcFg/lrgpkxf1EwmL8oGMxfFAzmLwrGAKMJBvMXBYP5i4LB/EXBYP6iYDB/STDWYf6iYDB/UTCYvygYzF8UjAFGEwzmLwoG8xcFg/mLgsH8RcFg/ppgesxfFAzmLwoG8xcFg/mLgjHAaILB/EXBYP6iYDB/UTCYvygYzF8TzID5i4LB/EXBYP6iYDB/UTAGGE0wmL8oGMxfFAzmLwoG8xcFg/lrgkmYvygYzF8UDOYvCgbzFwVjgNEEg/mLgsH8RcFg/qJgMH9RMJi/JhjD/EXBYP6iYDB/UTCYvygYA4wmGMxfFAzmLwoG8xcFg/mLgsH8NcGMmL8oGMxfFAzmLwoG8xcFY4DRBIP5i4LB/EXBYP6iYDB/UTCYvyaYjPmLgsH8RcFg/qJgMH9RMAYYTTCYvygYzF8UDOYvCgbzFwWD+WuCmTB/UTCYvygYzF8UDOYvCsYAowkG8xcFg/mLgsH8RcFg/qJgMH9NMAXzFwWD+VcFk2wFU/rrtNH5imkPeV6fdrLxOm0c3TNtI23HtLFpz7RRZM+08V7PtJFZz7QxVMe0Z7TTM21c0jNtXNIzbVzSM20jbce0cUnPtHFJz7RxSc+0cUnPtHFJv7THDpf0TBuX9Ewbl/RMG5f0TNtI2zFtXNIzbVzSM21c0jNtXNIzbVzSMe0el/RMG5f0TBuX9Ewbl/RM20jbMW1c0jNtXNIzbVzSM21c0jNtXNIx7QGX9Ewbl/RMG5f0TBuX9EzbSNsxbVzSM21c0jNtXNIzbVzSM21c0jHthEt6po1LeqaNS3qmjUt6pm2k7Zg2LumZNi7pmTYu6Zk2LumZNi7pmLbhkp5p45KeaeOSnmnjkp5pG2k7po1LeqaNS3qmjUt6po1L1nwn/65bXl3qxrL/4H4el89Y6OeSrtEgnqpoRixVFg1KK4sG/5VFgyzLojHQqKJBw2XR4OyyaBB8WTSsAbJoWANU0WTWAFk0rAGyaFgDZNGwBsiiMdCoomENkEXDGiCLhjVAFg1rgCwa1gBVNBNrgCwa1gBZNKwBsmhYA2TRGGhU0bAGyKJhDZBFwxogi4Y1QBYNa4AqmsIaIIuGNUAWDWuALBrWAFk0BhpVNKwBsmhYA2TRsAbIomENkEXDGqCKZmYNkEXDGiCLhjVAFg1rgCwaA40qGtYAWTSsAbJoWANk0bAGyKJhDRBFkzvWAFk0rAGyaFgDZNGwBsiiMdCoomENkEXDGiCLhjVAFg1rgCwa1gBVND1rgCwa1gBZNKwBNdHYmJYobJr2H1zyQqZM5RoMW4AoGAOMJhh2AFEwrACiYNgARMGwAIiCwf81wQzYvygY3F8UDOYvCgbzFwVjgNEEg/mLgsH8RcFg/qJgMH9RMJi/JpiE+YuCwfxFwWD+omAwf1EwBhhNMJi/KBjMXxQM5i8KBvMXBYP5a4IxzF8UDOYvCgbzFwWD+YuCMcBogsH8RcFg/qJgMH9RMJi/KBjMXxPMiPmLgsH8RcFg/qJgMH9RMAYYTTCYvygYzF8UDOYvCgbzFwWD+WuCyZi/KBjMXxQM5i8KBvMXBWOA0QSD+YuCwfxFwWD+omAwf1EwmL8mmAnzFwWD+YuCwfxFwWD+omAMMJpgMH9RMJi/KBjMXxQM5i8KBvPXBFMwf1EwmL8oGMxfFAzmLwrGAKMJBvMXBYP5i4LB/EXBYP6iYDB/TTAz5i8KBvMXBYP5i4LB/EXBGGA0wWD+omAwf1EwmL8oGMxfFAzmLwlm6jB/UTCYvygYzF8UDOYvCsYAowkG8xcFg/mLgsH8RcFg/qJgMH9NMD3mLwoG8xcFg/mLgsH8RcEYYDTBYP6iYDB/UTCYvygYzF8UDOavCWbA/EXBYP6iYDB/UTCYvygYA4wmGMxfFAzmLwoG8xcFg/mLgsH8NcEkzF8UDOYvCgbzFwWD+YuCMcBogsH8RcFg/qJgMH9RMJi/KBjMXxOMYf6iYDB/UTCYvygYzF8UjAFGEwzmLwoG8xcFg/mLgsH8RcFg/ppgRsxfFAzmLwoG8xcFg/mLgjHAaILB/EXBYP6iYDB/UTCYvygYzF8TTMb8RcFg/qJgMH9RMJi/KBgDjCYYzF8UDOYvCgbzFwWD+YuCwfw1wUyYvygYzF8UDOYvCgbzFwVjgNEEg/mLgsH8RcFg/qJgMH9RMJi/JpiC+YuCwfxFwWD+omAwf1EwBhhNMJi/KBjMXxQM5i8KBvOvCibZCqb012mj8xXTHvK8Pu1k41XaM47umTbi7Zk2Nu2ZNorsmbaRtmPayKxn2hiqZ9pop2fauKRn2rikX9qlwyU908YlPdPGJT3TxiU90zbSdkwbl/RMG5f0TBuX9Ewbl/RMG5d0TLvHJT3TxiU908YlPdPGJT3TNtJ2TBuX9Ewbl/RMG5f0TBuX9Ewbl3RMe8AlPdPGJT3TxiU908YlPdM20nZMG5f0TBuX9Ewbl/RMG5f0TBuXdEw74ZKeaeOSnmnjkp5p45KeaRtpO6aNS3qmjUt6po1LeqaNS3qmjUs6pm24pGfauKRn2rikZ9q4pGfaRtqOaeOSnmnjkp5p45KeaeOSnmnjko5pj7ikZ9q4pGfauKRn2rikZ9pG2o5p45I138m/65ZXl7qx7D+4n8flMxb6uaRrNIinLBosVRYNSiuLBv9VRZORZVk0mLUsGjRcFg3OLovGQKOKhjVAFg1rgCwa1gBZNKwBsmhYA1TRTKwBsmhYA2TRsAbIomENkEVjoFFFwxogi4Y1QBYNa4AsGtYAWTSsAapoCmuALBrWAFk0rAGyaFgDZNEYaFTRsAbIomENkEXDGiCLhjVAFg1rgCqamTVAFg1rgCwa1gBZNKwBsmgMNKpoWANk0bAGyKJhDZBFwxogi4Y1QBTN3LEGyKJhDZBFwxogi4Y1QBaNgUYVDWuALBrWAFk0rAGyaFgDZNGwBqii6VkDZNGwBsiiYQ2QRcMaIIvGQKOKhjVAFg1rgCwa1gBZNKwBsmhYA2qisTEtUdg07T+45IVMmcoVmIEtQBQMS4AoGHYAUTCsAKJgDDCaYFgARMHg/6JgsH9RMLi/KBjMXxNMwvxFwWD+omAwf1EwmL8oGAOMJhjMXxQM5i8KBvMXBYP5i4LB/DXBGOYvCgbzFwWD+YuCwfxFwRhgNMFg/qJgMH9RMJi/KBjMXxQM5q8JZsT8RcFg/qJgMH9RMJi/KBgDjCYYzF8UDOYvCgbzFwWD+YuCwfw1wWTMXxQM5i8KBvMXBYP5i4IxwGiCwfxFwWD+omAwf1EwmL8oGMxfE8yE+YuCwfxFwWD+omAwf1EwBhhNMJi/KBjMXxQM5i8KBvMXBYP5a4IpmL8oGMxfFAzmLwoG8xcFY4DRBIP5i4LB/EXBYP6iYDB/UTCYvyaYGfMXBYP5i4LB/EXBYP6iYAwwmmAwf1EwmL8oGMxfFAzmLwoG81cEY12H+YuCwfxFwWD+omAwf1EwBhhNMJi/KBjMXxQM5i8KBvMXBYP5a4LpMX9RMJi/KBjMXxQM5i8KxgCjCQbzFwWD+YuCwfxFwWD+omAwf00wA+YvCgbzFwWD+YuCwfxFwRhgNMFg/qJgMH9RMJi/KBjMXxQM5q8JJmH+omAwf1EwmL8oGMxfFIwBRhMM5i8KBvMXBYP5i4LB/EXBYP6aYAzzFwWD+YuCwfxFwWD+omAMMJpgMH9RMJi/KBjMXxQM5i8KBvPXBDNi/qJgMH9RMJi/KBjMXxSMAUYTDOYvCgbzFwWD+YuCwfxFwWD+mmAy5i8KBvMXBYP5i4LB/EXBGGA0wWD+omAwf1EwmL8oGMxfFAzmrwlmwvxFwWD+omAwf1EwmL8oGAOMJhjMXxQM5i8KBvMXBYP5i4LB/DXBFMxfFAzmLwoG8xcFg/mLgjHAaILB/EXBYP6iYDB/UTCYvygYzF8TzIz5i4LB/EXBYP6iYDB/UTAGGE0wmH9VMMlWMKW/Thudr5j2kOf1aScbr9PG0T3TRrw908am/dLuOxTZM2281zNtZNYzbQzVM20jbce0cUnPtHFJz7RxSc+0cUnPtHFJx7R7XNIzbVzSM21c0jNtXNIzbSNtx7RxSc+0cUnPtHFJz7RxSc+0cUnHtAdc0jNtXNIzbVzSM21c0jNtI23HtHFJz7RxSc+0cUnPtHFJz7RxSce0Ey7pmTYu6Zk2LumZNi7pmbaRtmPauKRn2rikZ9q4pGfauKRn2rikY9qGS3qmjUt6po1LeqaNS3qmbaTtmDYu6Zk2LumZNi7pmTYu6Zk2LumY9ohLeqaNS3qmjUt6po1LeqZtpO2YNi7pmTYu6Zk2LumZNi7pmTYu6Zh2xiU908YlPdPGJWu+k3/XLa8udWPZf3A/j8tnLPRzSddoEE9ZNAYaVTQorSwa/FcWDbIsiwazlkWDhquimXB2WTQIviwa1gBZNKwBsmgMNKpoWANk0bAGyKJhDZBFwxogi4Y1QBVNYQ2QRcMaIIuGNUAWDWuALBoDjSoa1gBZNKwBsmhYA2TRsAbIomENUEUzswbIomENkEXDGiCLhjVAFo2BRhUNa4AsGtYAWTSsAbJoWANk0bAGiKIZOtYAWTSsAbJoWANk0bAGyKIx0KiiYQ2QRcMaIIuGNUAWDWuALBrWAFU0PWuALBrWAFk0rAGyaFgDZNEYaFTRsAbIomENkEXDGiCLhjVAFg1rgCqagTVAFg1rgCwa1gBZNKwBsmgMNKpoWANk0bAG1ERjY1qisGnaf3DJC5kylWswbAGiYFgCRMGwA2iCSawAomDYAETBsACIgsH/RcEYYDTB4P6iYDB/UTCYvygYzF8UDOavCcYwf1EwmL8oGMxfFAzmLwrGAKMJBvMXBYP5i4LB/EXBYP6iYDB/TTAj5i8KBvMXBYP5i4LB/EXBGGA0wWD+omAwf1EwmL8oGMxfFAzmrwkmY/6iYDB/UTCYvygYzF8UjAFGEwzmLwoG8xcFg/mLgsH8RcFg/ppgJsxfFAzmLwoG8xcFg/mLgjHAaILB/EXBYP6iYDB/UTCYvygYzF8TTMH8RcFg/qJgMH9RMJi/KBgDjCYYzF8UDOYvCgbzFwWD+YuCwfw1wcyYvygYzF8UDOYvCgbzFwVjgNEEg/mLgsH8RcFg/qJgMH9RMJi/JJjUYf6iYDB/UTCYvygYzF8UjAFGEwzmLwoG8xcFg/mLgsH8RcFg/ppgesxfFAzmLwoG8xcFg/mLgjHAaILB/EXBYP6iYDB/UTCYvygYzF8TzID5i4LB/EXBYP6iYDB/UTAGGE0wmL8oGMxfFAzmLwoG8xcFg/lrgkmYvygYzF8UDOYvCgbzFwVjgNEEg/mLgsH8RcFg/qJgMH9RMJi/JhjD/EXBYP6iYDB/UTCYvygYA4wmGMxfFAzmLwoG8xcFg/mLgsH8NcGMmL8oGMxfFAzmLwoG8xcFY4DRBIP5i4LB/EXBYP6iYDB/UTCYvyaYjPmLgsH8RcFg/qJgMH9RMAYYTTCYvygYzF8UDOYvCgbzFwWD+WuCmTB/UTCYvygYzF8UDOYvCsYAowkG8xcFg/mLgsH8RcFg/qJgMH9NMAXzFwWD+YuCwfxFwWD+omAMMJpgMH9RMJi/KBjMXxQM5i8KBvPXBDNj/qJgMH9RMJi/KBjMXxSMAUYTDOYvCgbzFwWD+YuCwfxFwWD+kmCsw/xFwWD+omAw/6pgkq1gSn+dNjpfMe0hz+vTTjZep22k7Zg24u2ZNjbtmTaK7Jk23uuZNjLrmHaPoXqmjXZ6po1LeqaNS3qmbaTtmDYu6Zk2LumZNi7pmTYu6Zk2LumY9oBLeqaNS3qmjUt6po1LeqZtpO2YNi7pmTYu6Zk2LumZNi7pmTYu6Zh2wiU908YlPdPGJT3TxiU90zbSdkwbl/RMG5f0TBuX9Ewbl/RMG5d0TNtwSc+0cUnPtHFJz7RxSc+0jbQd08YlPdPGJT3TxiU908YlPdPGJR3THnFJz7RxSc+0cUnPtHFJz7SNtB3TxiU908YlPdPGJT3TxiU908YlHdPOuKRn2rikZ9q4pGfauKRn2kbajmnjkp5p45KeaeOSnmnjkp5p45I138m/65ZXl7qx7D+4n8flMxb6uaQrNBPiKYsGS5VFg9LKosF/ZdEYaFTRYNayaNBwWTQ4uywaBF8WDWuAKprCGiCLhjVAFg1rgCwa1gBZNAYaVTSsAbJoWANk0bAGyKJhDZBFwxqgimZmDZBFwxogi4Y1QBYNa4AsGgONKhrWAFk0rAGyaFgDZNGwBsiiYQ0QRTN2rAGyaFgDZNGwBsiiYQ2QRWOgUUXDGiCLhjVAFg1rgCwa1gBZNKwBqmh61gBZNKwBsmhYA2TRsAbIojHQqKJhDZBFwxogi4Y1QBYNa4AsGtYAVTQDa4AsGtYAWTSsAbJoWANk0RhoVNGwBsiiYQ2QRcMaIIuGNUAWDWuAKprEGiCLhjVAFg1rgCwa1oCaaN4CXaKwadp/cMkLmTKVazAGGE0wLAGiYNgBRMGwAoiCYQMQBcMCoAnG8H9RMNi/KBjcXxQM5i8KxgCjCQbzFwWD+YuCwfxFwWD+omAwf00wI+YvCgbzFwWD+YuCwfxFwRhgNMFg/qJgMH9RMJi/KBjMXxQM5q8JJmP+omAwf1EwmL8oGMxfFIwBRhMM5i8KBvMXBYP5i4LB/EXBYP6aYCbMXxQM5i8KBvMXBYP5i4IxwGiCwfxFwWD+omAwf1EwmL8oGMxfE0zB/EXBYP6iYDB/UTCYvygYA4wmGMxfFAzmLwoG8xcFg/mLgsH8NcHMmL8oGMxfFAzmLwoG8xcFY4DRBIP5i4LB/EXBYP6iYDB/UTCYvySY3GH+omAwf1EwmL8oGMxfFIwBRhMM5i8KBvMXBYP5i4LB/EXBYP6aYHrMXxQM5i8KBvMXBYP5i4IxwGiCwfxFwWD+omAwf1EwmL8oGMxfE8yA+YuCwfxFwWD+omAwf1EwBhhNMJi/KBjMXxQM5i8KBvMXBYP5a4JJmL8oGMxfFAzmLwoG8xcFY4DRBIP5i4LB/EXBYP6iYDB/UTCYvyYYw/xFwWD+omAwf1EwmL8oGAOMJhjMXxQM5i8KBvMXBYP5i4LB/DXBjJi/KBjMXxQM5i8KBvMXBWOA0QSD+YuCwfxFwWD+omAwf1EwmL8mmIz5i4LB/EXBYP6iYDB/UTAGGE0wmL8oGMxfFAzmLwoG8xcFg/lrgpkwf1EwmL8oGMxfFAzmLwrGAKMJBvMXBYP5i4LB/EXBYP6iYDB/TTAF8xcFg/mLgsH8RcFg/qJgDDCaYDB/UTCYvygYzF8UDOYvCgbz1wQzY/6iYDB/UTCYvygYzF8UjAFGEwzmLwoG8xcFg/mLgsH8RcFg/pJgpg7zFwWD+YuCwfxFwWD+omAMMJpgMH9RMJi/KBjMXxQM5i8KBvOvCibZCqb0V2n36HzFtIe3eyPL0042XqeNo3umjXh7po1Ne6ZtpO2YNt7rmTYy65k2huqZNtrpmTYu6Zj2gEt6po1LeqaNS3qmjUt6pm2k7Zg2LumZNi7pmTYu6Zk2LumZNi7pmHbCJT3TxiU908YlPdPGJT3TNtJ2TBuX9Ewbl/RMG5f0TBuX9Ewbl3RM23BJz7RxSc+0cUnPtHFJz7SNtB3TxiU908YlPdPGJT3TxiU908YlHdMecUnPtHFJz7RxSc+0cUnPtI20HdPGJT3TxiU908YlPdPGJT3TxiUd0864pGfauKRn2rikZ9q4pGfaRtqOaeOSnmnjkp5p45KeaeOSnmnjko5pT7ikZ9q4pGfauKRn2rikZ9pG2o5p45KeaeOSNd/Jv+uWV5e6sew/uJ/H5TMW+rmkazSIpywaLFUWDUqriqbgv7JokGVZNJi1LBo0XBaNgUYVDYIvi4Y1QBYNa4AsGtYAWTSsAapoZtYAWTSsAbJoWANk0bAGyKIx0KiiYQ2QRcMaIIuGNUAWDWuALBrWAFE0pWMNkEXDGiCLhjVAFg1rgCwaA40qGtYAWTSsAbJoWANk0bAGyKJhDVBF07MGyKJhDZBFwxogi4Y1QBaNgUYVDWuALBrWAFk0rAGyaFgDZNGwBqiiGVgDZNGwBsiiYQ2QRcMaIIvGQKOKhjVAFg1rgCwa1gBZNKwBsmhYA1TRJNYAWTSsAbJoWANk0bAGyKIx0KiiYQ2QRcMaIIuGNUAWDWuALBrWAFU0xhpQE42NaYnCpmn/wSUvZMpUrsGwBYiCYQkQBcMOIArGAKMJhg1AFAwLgCgY/F8UDPYvCgb31wQzYv6iYDB/UTCYvygYzF8UjAFGEwzmLwoG8xcFg/mLgsH8RcFg/ppgMuYvCgbzFwWD+YuCwfxFwRhgNMFg/qJgMH9RMJi/KBjMXxQM5q8JZsL8RcFg/qJgMH9RMJi/KBgDjCYYzF8UDOYvCgbzFwWD+YuCwfw1wRTMXxQM5i8KBvMXBYP5i4IxwGiCwfxFwWD+omAwf1EwmL8oGMxfE8yM+YuCwfxFwWD+omAwf1EwBhhNMJi/KBjMXxQM5i8KBvMXBYP5S4KZO8xfFAzmLwoG8xcFg/mLgjHAaILB/EXBYP6iYDB/UTCYvygYzF8TTI/5i4LB/EXBYP6iYDB/UTAGGE0wmL8oGMxfFAzmLwoG8xcFg/lrghkwf1EwmL8oGMxfFAzmLwrGAKMJBvMXBYP5i4LB/EXBYP6iYDB/TTAJ8xcFg/mLgsH8RcFg/qJgDDCaYDB/UTCYvygYzF8UDOYvCgbz1wRjmL8oGMxfFAzmLwoG8xcFY4DRBIP5i4LB/EXBYP6iYDB/UTCYvyaYEfMXBYP5i4LB/EXBYP6iYAwwmmAwf1EwmL8oGMxfFAzmLwoG89cEkzF/UTCYvygYzF8UDOYvCsYAowkG8xcFg/mLgsH8RcFg/qJgMH9NMBPmLwoG8xcFg/mLgsH8RcEYYDTBYP6iYDB/UTCYvygYzF8UDOavCaZg/qJgMH9RMJi/KBjMXxSMAUYTDOYvCgbzFwWD+YuCwfxFwWD+mmBmzF8UDOYvCgbzFwWD+YuCMcBogsH8RcFg/qJgMH9RMJi/KBjMXxHM2HWYvygYzF8UDOYvCgbzFwVjgNEEg/mLgsH8RcFg/qJgMH9RMJi/Jpge8xcFg/mLgsH8RcFg/qJgDDCaYDB/UTCYf1UwyVYwpb9OG52vmPaQ5/VpJxuv08bRPdNGvB3THrBpz7RRZM+08V7PtJFZz7SNtB3TRjs908YlPdPGJT3TxiU908YlHdNOuKRn2rikZ9q4pGfauKRn2kbajmnjkp5p45KeaeOSnmnjkp5p45KOaRsu6Zk2LumZNi7pmTYu6Zm2kbZj2rikZ9q4pGfauKRn2rikZ9q4pGPaIy7pmTYu6Zk2LumZNi7pmbaRtmPauKRn2rikZ9q4pGfauKRn2rikY9oZl/RMG5f0TBuX9Ewbl/RM20jbMW1c0jNtXNIzbVzSM21c0jNtXNIx7QmX9Ewbl/RMG5f0TBuX9EzbSNsxbVzSM21c0jNtXNIzbVzSM21c0jHtgkt6po1LeqaNS3qmjUvWfCf/rlteXerGsv/gfh6Xz1jo55Ku0RhoVNFgqbJoUFpZNPivLBpkWRYNZq2KZkbDZdHg7LJoEHxZNKwBsmgMNKpoWANk0bAGyKJhDZBFwxogi4Y1QBRN37EGyKJhDZBFwxogi4Y1QBaNgUYVDWuALBrWAFk0rAGyaFgDZNGwBqii6VkDZNGwBsiiYQ2QRcMaIIvGQKOKhjVAFg1rgCwa1gBZNKwBsmhYA1TRDKwBsmhYA2TRsAbIomENkEVjoFFFwxogi4Y1QBYNa4AsGtYAWTSsAapoEmuALBrWAFk0rAGyaFgDZNEYaFTRsAbIomENkEXDGiCLhjVAFg1rgCoaYw2QRcMaIIuGNUAWDWuALBoDjSoa1gBZNKwBsmhYA2qisTEtUdg07T+45IVMmco1GLYAUTAsAZpgRnYAUTCsAKJg2ABEwbAAiIIxwGiCwf5FweD+omAwf1EwmL8oGMxfE0zG/EXBYP6iYDB/UTCYvygYA4wmGMxfFAzmLwoG8xcFg/mLgsH8NcFMmL8oGMxfFAzmLwoG8xcFY4DRBIP5i4LB/EXBYP6iYDB/UTCYvyaYgvmLgsH8RcFg/qJgMH9RMAYYTTCYvygYzF8UDOYvCgbzFwWD+WuCmTF/UTCYvygYzF8UDOYvCsYAowkG8xcFg/mLgsH8RcFg/qJgMH9JMEOH+YuCwfxFwWD+omAwf1EwBhhNMJi/KBjMXxQM5i8KBvMXBYP5a4LpMX9RMJi/KBjMXxQM5i8KxgCjCQbzFwWD+YuCwfxFwWD+omAwf00wA+YvCgbzFwWD+YuCwfxFwRhgNMFg/qJgMH9RMJi/KBjMXxQM5q8JJmH+omAwf1EwmL8oGMxfFIwBRhMM5i8KBvMXBYP5i4LB/EXBYP6aYAzzFwWD+YuCwfxFwWD+omAMMJpgMH9RMJi/KBjMXxQM5i8KBvPXBDNi/qJgMH9RMJi/KBjMXxSMAUYTDOYvCgbzFwWD+YuCwfxFwWD+mmAy5i8KBvMXBYP5i4LB/EXBGGA0wWD+omAwf1EwmL8oGMxfFAzmrwlmwvxFwWD+omAwf1EwmL8oGAOMJhjMXxQM5i8KBvMXBYP5i4LB/DXBFMxfFAzmLwoG8xcFg/mLgjHAaILB/EXBYP6iYDB/UTCYvygYzF8TzIz5i4LB/EXBYP6iYDB/UTAGGE0wmL8oGMxfFAzmLwoG8xcFg/lLgkkd5i8KBvMXBYP5i4LB/EXBGGA0wWD+omAwf1EwmL8oGMxfFAzmrwmmx/xFwWD+omAwf1EwmL8oGAOMJhjMXxQM5i8KBvMXBYP5i4LB/DXBDJi/KBjMXxQM5i8KBvOvCibZCqb012kbaVdMu9j6z6D8+rwfaePonmkj3p5pY9OeaaPInmnjvY5pJ2TWM20M1TNttNMzbVzSM20jbce0cUnPtHFJz7RxSc+0cUnPtHFJx7QNl/RMG5f0TBuX9Ewbl/RM20jbMW1c0jNtXNIzbVzSM21c0jNtXNIx7RGX9Ewbl/RMG5f0TBuX9EzbSNsxbVzSM21c0jNtXNIzbVzSM21c0jHtjEt6po1LeqaNS3qmjUt6pm2k7Zg2LumZNi7pmTYu6Zk2LumZNi7pmPaES3qmjUt6po1LeqaNS3qmbaTtmDYu6Zk2LumZNi7pmTYu6Zk2LumYdsElPdPGJT3TxiU908YlPdM20nZMG5f0TBuX9Ewbl/RMG5f0TBuXdEx7xiUrpm1dXk7B+iHvP7ifx+UzFvq53ECDeFZEM3bzkvbYp+46bcTTM23E0zNtI23HtBFPz7QRT8+0EU/PtBFPz7QRT7+0rUM8PdPGJT3TxiU908YlPdM20nZMG5f0TBuX9Ewbl/RMG5f0TBuXdEy7xyU908YlPdPGJT3TxiU90zbSdkwbl/RMG5f0TBuX9Ewbl/RMG5d0THvAJT3TxiU908YlPdPGJT3TNtJ2TBuX9Ewbl/RMG5f0TBuX9Ewbl3RMO+GSnmnjkp5p45KeaeOSnmkbaTumjUt6po1LeqaNS3qmjUt6po1LOqZtuKRn2rikZ9q4pGfauKRn2kbajmnjkp5p45KeaeOSnmnjkp5p45KOaY+4pGfauKRn2rikZ9q4pGfaRtqOaeOSnmnjkjXTTusb0b+/Re512rikZ9q4pGfauKRj2hmX9Ewbl/RMG5f0TBuX9EzbSNsxbVzSM21c0jNtXNIzbVzSM21c0jHtCZf0TBuX9Ewbl/RMG5f0TNtI2zFtXNIzbVzSM21c0jNtXNIzbVzSMe2CS3qmjUt6po1LeqaNS3qmbaTtmDYu6Zk2LumZNi7pmTYu6Zk2LumY9oxLeqaNS3qmjUt6po1LeqZtpO2YNi7pmTYu6Zk2LumZNi7pmTYu6Zf22OGSnmnjkp5p45KeaeOSnmkbaTumjUt6po1LeqaNS3qmjUt6po1LOqbd45KeaeOSnmnjkp5p45KeaRtpO6aNS3qmjUt6po1LeqaNS3qmjUs6pj3gkhXTzl1azjd383CdNi7pmTYu6Zk2LumZtpG2Y9q4pGfauKRn2rikZ9q4pGfauKRj2gmXrJl26vKSdkrpOm1c0jNtXNIzbVzSM20jbce0cUnPtHFJz7RxSc+0cUnPtHFJx7QNl/RMG5f0TBuX9Ewbl/RM20jbMW1c0jNtXNIzbVzSM21c0jNtXNIx7RGX9Ewbl/RMG5f0TBuX9EzbSNsxbVzSM21c0jNtXNIzbVzSM21c0jHtjEt6po1LeqaNS3qmjUt6pm2k7Zg2LumZNi7pmTYu6Zk2LumZNi7pmPaES3qmjUt6po1LeqaNS3qmbaTtmDYu6Zk2LumZNi7pmTYu6Zk2LumYdsElPdPGJT3TxiU908YlPdM20nZMG5f0TBuXrJl2zraknefxOm1c0jNtXNIzbVyyZtpTt5xCnt6z2ntwGcYFTRkugrv94Dwsj/31oT8ozjhqBIq4bwSKOHUEirh6BIoGxQAU2RYiUGSziECRLSQCRTaWCBTZbl6fYu7YbiJQZLuJQJHtJgJFtpsIFA2KASiy3USgyHYTgSLbTQSKbDcRKLLdBKDYs91EoMh2E4Ei200Eimw3ESgaFANQZLuJQJHtJgJFtpsIFNluIlBkuwlAcWC7OY9iGleKJV+jYZA5DU2algcX623/wamb0hJyVz6feci3Qu7H5dVZP6XLB39AZ79pEDpzT4PQDejtQWdMahA621OD0JmqGoTOstUgdIaw9qAndrMGobPINQidRa5B6CxyDUI3oLcHnUWuQegscg1CZ5FrEDqLXIPQWeTag24scg1CZ5FrEDqLXIPQWeQahG5Abw86i1yD0FnkGoTOItcgdBa5BqGzyLUHfWSRaxA6i1yD0FnkGoTOItcgdAN6e9BZ5BqEziLXIHQWuQahs8g1CJ1Frj3omUWuQegscg1CZ5FrEDqLXIPQDejtQWeRaxA6i1yD0FnkGoTOItcgdBa59qBPLHINQmeRaxA6i1yD0FnkGoRuQG8POotcg9BZ5BqE7rzIjd0F9IvPiduAPkzD8oF/b//7Isa+v/Xsw/D2eheYg5n98viPF1xae8Gz9guex6XNfeq6+foFlI1VYVg+NvKt13bnBUzjck7TxT+Ct+8pt15AXl/t2xe37xMo/au/gMH5BYxzWl9An+68gFzWnwx57j+/LU8/Tz698snbK5/8+Monn1/05N/+97/951/++te//O//8de///uf//GXv//tv96P7N7/n/4mkrx+x87zxbf3/OOzW29/2Pz+IdPjh5THD5kfPuT2BwTvHPL2X/37I29/fK2l5UArw8WBw4+vNTx+SHr8EHv8kPHxQ/Ljh0yPH1IeP2R++JDbH3Yzjp//+q4P6R8/ZHj8kPT4ITfpj58//qd8dcj4+CH58UOmxw+5SX+c13+bXXd1yPzwIbffWHX/kP7xQ4Z7h5SrQ9Ljh9jjh9z+/j/m5ZC3b3q/H5IfP2R6/JDy+CG3v/9P6w/Gaf79kNtv4rF/SP/4IcPjh9ykn+flYmPq0tUh9vgh4+OH5McPme4ccqGbyyHl8UPmhw+5/Qcj0zoVTfnq38vtPzfYP2R4/JD0+CE36U/rMjRd/+C7/WuW+4fkxw+ZHj/kJv1pXn5YlO7qh8XtXy/ZPeT2LyfsH9I/fshw55CLdW85JD1+iD1+yE36JS/flEq++qZ0exDeP2R6/JDy+CE36Zdp+bdfytXLvz0i7R/SP37I8PghN+mXed2vu6uXf3sU2D9kfPyQ/Pgh051D+unqkPL4IfPDh8w36c8lrTcJrn6Kzf3jhwyPH5IePOTtv4YfIn/7u9l6K2O6vDEw3rwxUBZHSv3+QyvecOj71zzt4TVPO73madtrnvb4mqedX/O0p9c87fKs0/5jaxGt9ORD98wn//bPhXXDtYuZ7OeTD8988vTMJ7dnPvm3v1+t9yBsvgKan/nk0zOf/Lv/Qsf1durY59+ffH7ik6fumU/eP/PJv1vFMS2KNaarJ8/PfPLvAs02rRNn99uTW/fMJ7cnxmLfBrr+EB0vlt+fT56f+eTTM5+8PPPJ5yc++dg988n7Zz75UO/JJ/v9ydMzn/zb/0LH9V9ouXryb/8LXb+33Hjy/Mwnn5755N/9F5r79fbbxQ7188nnJz557p755P0zn/y7/0Jzl9YnL78/eXrmk9szn3x85pPnZz759MwnL8988rnekw+/93zqnvnk3/4X2i2/eJzT1ZN/+2foel/2xpOnZz65PfPJv/0vdOf6fMrPfPLpmU9envnkzxSu8kzhKv0zn3x42pO//Ud6f+DGr4FN6w/2X34/zXZ+DWz7kLf/svdH3r5zkcvy60CTXdwXG29OPJ8X1pe/CTKO23cY6j39+Nynz899+um5T1+e+/TzU59+4zeIqz19/9ynH7779GO/utNY7jy279Ky+PedXfzwfDuxP7aW87NOxpROZlQ6mex7MuP6929d7q9OZlI6maJ0MrPQyaTO92SmvJ5MGa9Oplc6mUHpZJLSydhpJ3PxS1bLyYxKJ5OVTsb3O/DbN5rlZPqLX2pdTqYoncwsdDLWyZzM23+N74+9yWrIyxkNl38VMc4/jss/XPD233+/ndXyJcep7MttKYtxltn2H/r0X3Z8hRMfXvXE06ueuL3qiY+veuL5VU98etUTL8878T+2hp9qTz90z3367/+smIflR+mcZjeqw/CqJ55e9cTtVU98fNUTz6964tOrnnh53on/sTWWVXv61D336fvnPv3w3KdPz316e+7Tj899+vzcp5+e+vT2/WL2Xb++wVI3pN+/wPDsL/B9vP0wLsPJ+7v5/f4FyrNfwfzkLzDWYFC6z4nx6rck07O/gD37C4zP/gL52V9gqvAFps9bRPPvv2g3lmd/gfnJXyB3z/4C/bO/wPDsL5Ce/QUq/Et++369Ttfj738Mlsdnf4H87C8wPfsLlGd/gfnJX2Dqnv0FKvxL7tf3hOj7+fcLr2l49hd49nXRlJ/9BaZnf4Hy5C9Qumd/gf7ZX2B49hdIz/4C9tQv8PYf0/tDN255Zlu/yeSc73wZ69fb+Db8/jo27jc99gXW9yfrrdx5sNTNqWivMjfxKqcmXmVp4lXOLbzKoWviVfZNvMpB5FX+sXnj8pxzMaFzcf5pL3UvMtqrnJp4laWJVzm38CpT18Sr7Jt4lYPIq/xj83b5OediQuei8tP+j8279ueci8pPzj+2/jzjpHNR+Sn0x9YfZ5x0Lirf0f/Y/O2Lp53Lnd+kyFJn49zf/R18HJSyGZPU2bj35sBvcpx1NkXqbGals8md1Nn03mdz4FdVzjqbJHU2JnU2o9TZZKmzmaTOxvt78ZHf8jnpbKZO6mx6qbMZpM4mSZ2NSZ2N9/fi/d8hy1JnI+VTpZM6m17qbJLU2ZjU2YxSZ5OlzmbSOZu3/yjvD934jtzl9TtVlz/va6e975v7x0wHjikHjpkfP2bje93+Mf2BY4YDx6QDx9iBYw70oBzoQTnQg3KgB+VAD+YDPZgP9GA+0IP5QA/mAz2YD/Rgvt2Dfn2H/bf/Nfx+zHTgmHLgmPnxY/rudhH69SNg367krg/qjxw0HDkoHTnIjhw0HjkoHzloOnLQRiHWD5zvh+76oPnAQRtvQDUM6z+LYbCrg25HPqyfId8POV0dNB04aOM3O9PnG+el+eo1bfyi5J2DbjdimD6vNC7eSXE5KN87KHXd1UHzgYM2funlzkEbQdjaiHTxLrTLQcORg9KRg+zIQeORg/KRg6YjB5UjB91uRFo/x+0t3/L7QRu3tu8c1B85aDhyUDpykB05aDxyUD5y0HTkoHLkoCONGI80YjzSiI2b0vvfYTfuHd85yI4cNB45KB85aDpy0HzgoHzkJ2E+8pMwH4GbH4b79h/z+0M3LuAsrZ+oYalc/V3L7Qu4ewflIwdNRw4qRw6aDxx0+w8Y7x3UHzloOHLQ7Y8c6oZl7Zm665+HGx9Lfueg8chBtz9A5+1iajmov3HQfOCgjc8A7qdxPWiavnZ9eeegjQ+nHcoaROry1y4V7x00HDkoHTnIjhxUjqS3AXdev9LQT1+7Frt3UH/kIDty0HjkoNvd+3wb6bf/OX3tCmkarPs8KH3tCuneQfOBgzY+W/XOQf2Rg4YjB6UjB9mRg8YjB+UjBx1pxHikEeORRuQjjchHvlnmI98s85FvlvnIN8uNz8C8c1A+clA5ctB84KDpyE/C6Qjc6WG4//yXH+898d+bl7L7f9e9cSl756DpyEHlyEHzgYM2LmXvHNQfOWg4clA6ctDtf4vj+ssk02j9Fy9l7xyUjxw0HTmoHDloPnDQ7fn33kH9kYOGIwfd/u48rn8eN403NuONRqy/QDiN8y+Dy40/wJtt+b6S5suPYb/5B3j7grbhJaedTtY6nUnrdIrW6cxSp7MhvqedTq91OoPW6SSt09H6rpy0viunR78r/7F5/+zeQeXAQbbxkcz9evWdh6sf3paOHHQ7iHlefuKXrr+6Dbsxitw5qBw5aD5w0HgkvY2pYkrr9dLbtdM/vzZV3DnodhBl/Q2FqVz8eev+FlDWXzKcynTtmN2RgzYa0a2nN3f2RZudP1/TPHZftNl9uBs2e+eg4chB6chBduSgI5FP05GDNv4Rps+D7Kp703zgoNIdOag/ctBw5KANuOPnQfnKdIodOWg8clA+ctB05KBy5KD5wEFzd+Sg/sA3lnk4clA6cpAdOWg8clA+ctB05KBy5KADPwCGrjtyUH/koOHIQenIQXbkoPHIQfnIQfPjVyzD7R3z3kG3OU3rT8K3/2lXB93mNOXp86Cr17RxS/7OQXbkoPHIQfnIQdORg8qRg+YDB23smHcO6o8cdKQRw5FGDEcaMRxpxMYmuGsAw8Zyd+egcuSg+cBBG1vVnYMOXJcPKR05yI4cNB456GGj/ue//Pi85//+0zge+JuOccxHDpqOHFSOHHTg73vG3B05qD9y0HDkoHTkIDty0JFG5CONyEcakY80Ih9pxHSkEdORRkxHGjEdacR0pBFH/g50nA784dc4TUcOKkcOOvC3X2M58LdfY+mPHDQcOSgdOciOHDQeOSgfOWg6ctCBv/0ay4G//RrnA3/7NW787eXun3GN84G//crdgd94z11/5KADf/uVuwN/+5W7A3/7lfvuyEEH/vYr98ORg9KRg+zIQeORg/KRg6YjB5UjBx34S588dEcO6o8cNBw5KB05yI4cNB45KB85aDpyUDly0JFGpCONSEcakQ78eVBO6chBduSg8chB+chB05GDDvztV7YjPwntyE9COwLXjvzt1/uPmjeFv31vPK3XLXZxj+P9bbferyZu3xrfOeafb//5//75P//y53/763/819sh7//X//u3f//HX/7+t5//+Y//7/98/F/eHvz/Aw==","brillig_names":["get_contract_instance_internal","get_public_keys_and_partial_address","decompose_hint","notify_created_note","get_key_validation_request","unsafe_rand","lt_32_hint","lte_16_hint","build_msg_block_iter","pad_msg_block","attach_len_to_msg_block","build_msg_block_iter","emit_encrypted_note_log","directive_invert","directive_integer_quotient"]},{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{"12265343917440897559":{"error_kind":"fmtstring","item_types":[],"length":20}},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":3,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"}},"bytecode":"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","debug_symbols":"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","brillig_names":["compute_note_hash_and_optionally_a_nullifier"]},{"name":"lookup_validity","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"parameters":[{"name":"consumer","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"kind":"boolean"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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","brillig_names":["lookup_validity"]},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["private","noinitcheck"],"abi":{"error_types":{"12265343917440897559":{"error_kind":"fmtstring","item_types":[],"length":20}},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"},"visibility":"private"},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"},"visibility":"private"},{"name":"cancellable","type":{"kind":"boolean"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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tJn6EKN45K+ORbv6QTOKi2YUF80oLppRXDSjuGhGcdGM4qIZxXWIUTy0INpM7Wd/9+NJ/zw/9f7Rz8tfHW88c1T081NHv7x935s35IvW54dHrxfd/mw2JzVbk5rtQc3GNqlZmdSsTmrWJjW7JjXrk5qFfXt2Bezbs4tmhxfNDi+aHV40O7xodnjR7PA6xA4fWhDtqiTt/qaLdn/TRbu/6aLd33TR7m+6aPc3XbT7my7a/U0XzQ4vmh1eRUvqoiV10ZK6aEndtKRuWlI3LambltS0+5su2v1NF80OL5odXjQ7vGh22Gl22Gl22Gl22Gl22DdYUvsGS2rfYEntGyypnXZ/U6fd39Rp9zd12v1NnXZ/U6fd39RpdthpdtiFltRCS2qhJbXQklppSU2zw06zw660pKbd39Rp9zd1pSW10pKaZoedZoedZoedZoedZoedZofdaElttKSm3d/Uafc3ddr9TZ12f1On3d/Uafc3ddr9TZ12f1On2WGn2WFftKRetKRetKRetKR2WlI7LamdltROS2ra/U2ddn9Td1pSOy2pnZbUTkvqoCU17f6mTru/qQctqYOW1EFLappRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRdJpRDJpRDJpRDJpRDJpRjA2W1EEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikkzikkzikkzikkzirnBkjppRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFp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pxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxlFpxnFoBnFoBnFoBnFoBnF2GBJHTSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjGDSjmDSjmDSjmDSjmDSjmBssqZNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFJNmFItmFItmFItmFItmFGuDJXXRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLRjGLR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mDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjmDSjWDSjWDSjWDSjWDSjWBssqYtmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFItmFJtmFJtmFJtmFJtmFHuDJXXTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLTjGLDjKJvMKO4F8RK6r0gVlLvBbGSei+IldR7Qayk3gtiJfVeECup94JYSb0XREtqmFHcC6IlNcwo7gXRkhpmFPeCaEkN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+5sm7f6mSbu/adLub5q0+5sm7f6mSbu/adLub5o0O5w0O5yLltSLltROS2qnJbXTktppSe20pHZaUtPub5q0+5um05LaaUkdtKQOWlIHLalp9zdN2v1NM2hJHbSkDlpS04xi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0oxi0Yxi0Yxi0Yxi0YxibbCkLppRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRLJpRbJpRbJpRbJpRbJpR7A2W1E0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zik0zig0zirnBjOJeECup94JYSb0XxErqvSBWUu8FsZJ6L4iV1HtBrKTeC2Il9V4QLalhRnEviJbUMKO4F0RLaphR3AuiJTXMKO4F0ZIaZhT3gmhJDTOKe0G0pIYZxb0gWlLDjOJeEC2pYUZxL4iW1DCjuBdES2qYUdwLoiU1zCjuBdGSGmYU94JoSQ0zintBtKSGGcW9IFpSw4ziXhAtqWFGcS+IltQwo7gXREtqmFHcC6IlNcwo7gXRkhpmFPeCaEkNM4p7QbSkhhnFvSBaUsOM4l4QLalhRnEviJbUMKO4F0RLaphR3AuiJTXMKO4F0ZIaZhT3gmhJDTOKe0G0pIYZxb0gWlLDjOJeEC2pYUZxL4iW1DCjuBdES2qYUdwLoiU1zCjuBdGSGmYU94JoSQ0zintBtKSGGcW9IFpSw4ziXhAtqWFGcS+IltQwo7gXREtqmFHcC6IlNcwo7gXRkhpmFPeCYEktNKMoNKMoNKMoNKMoGyyphWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUhWYUlWYUlWYUlWYUlWYUdYMltdKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotGMotGMotGMotGMom2wpDaaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSa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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","enqueue_public_function_call_internal","call_private_function_internal","debug_log_format","notify_set_min_revertible_side_effect_counter","directive_invert","directive_integer_quotient"]},{"name":"verify_private_authwit","is_unconstrained":false,"custom_attributes":["private","noinitcheck","view"],"abi":{"error_types":{"12265343917440897559":{"error_kind":"fmtstring","item_types":[],"length":20}},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","pack_returns","directive_invert","directive_integer_quotient"]}],"outputs":{"globals":{"notes":[{"fields":[{"kind":"integer","sign":false,"value":"00000000000000000000000000000000000000000000000000000000a74a8dc0"},{"kind":"string","value":"PublicKeyNote"}],"kind":"tuple"}],"storage":[{"fields":[{"name":"signing_public_key","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}}],"kind":"struct"}}],"kind":"struct"}]},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"}},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"}},{"name":"cancellable","type":{"kind":"boolean"}}],"kind":"struct","path":"SchnorrAccount::entrypoint_parameters"}}],"kind":"struct","path":"SchnorrAccount::entrypoint_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"inner_hash","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::verify_private_authwit_parameters"}},{"name":"return_type","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::verify_private_authwit_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"signing_pub_key_x","type":{"kind":"field"}},{"name":"signing_pub_key_y","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::constructor_parameters"}}],"kind":"struct","path":"SchnorrAccount::constructor_abi"}]}},"file_map":{"108":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/unconstrained_context.nr","source":"use dep::protocol_types::{address::AztecAddress, traits::Deserialize};\nuse crate::oracle::{execution::{get_chain_id, get_version, get_contract_address, get_block_number}, storage::storage_read};\n\npub struct UnconstrainedContext {\n block_number: u32,\n contract_address: AztecAddress,\n version: Field,\n chain_id: Field,\n}\n\nimpl UnconstrainedContext {\n unconstrained fn new() -> Self {\n // We could call these oracles on the getters instead of at creation, which makes sense given that they might\n // not even be accessed. However any performance gains are minimal, and we'd rather fail early if a user\n // incorrectly attempts to create an UnconstrainedContext in an environment in which these oracles are not\n // available.\n let block_number = get_block_number();\n let contract_address = get_contract_address();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at(contract_address: AztecAddress) -> Self {\n let block_number = get_block_number();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at_historical(contract_address: AztecAddress, block_number: u32) -> Self {\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n fn block_number(self) -> u32 {\n self.block_number\n }\n\n fn this_address(self) -> AztecAddress {\n self.contract_address\n }\n\n fn version(self) -> Field {\n self.version\n }\n\n fn chain_id(self) -> Field {\n self.chain_id\n }\n\n unconstrained fn raw_storage_read<let N: u32>(self: Self, storage_slot: Field) -> [Field; N] {\n storage_read(self.this_address(), storage_slot, self.block_number())\n }\n\n unconstrained fn storage_read<T, let N: u32>(\n self,\n storage_slot: Field\n ) -> T where T: Deserialize<N> {\n T::deserialize(self.raw_storage_read(storage_slot))\n }\n}\n"},"113":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr","source":"use crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n messaging::process_l1_to_l2_message, hash::{hash_args_array, ArgsHasher},\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX, NUM_KEY_TYPES, sk_generators},\n oracle::{\n key_validation_request::get_key_validation_request, arguments, returns::pack_returns,\n call_private_function::call_private_function_internal, header::get_header_at,\n logs::{emit_encrypted_note_log, emit_encrypted_event_log},\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, notify_set_min_revertible_side_effect_counter,\n set_public_teardown_function_call_internal\n}\n}\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext, function_selector::FunctionSelector, max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_request::PublicCallRequest, read_request::ReadRequest, note_hash::NoteHash,\n nullifier::Nullifier, log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_NOTE_HASHES_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_ENCRYPTED_LOGS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n MAX_NOTE_ENCRYPTED_LOGS_PER_CALL\n},\n header::Header, messaging::l2_to_l1_message::L2ToL1Message, traits::Empty\n};\n\n// When finished, one can call .finish() to convert back to the abi\npub struct PrivateContext {\n // docs:start:private-context\n inputs: PrivateContextInputs,\n side_effect_counter: u32,\n\n min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n args_hash: Field,\n return_hash: Field,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: BoundedVec<ReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n key_validation_requests_and_generators: BoundedVec<KeyValidationRequestAndGenerator, MAX_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n note_hashes: BoundedVec<NoteHash, MAX_NOTE_HASHES_PER_CALL>,\n nullifiers: BoundedVec<Nullifier, MAX_NULLIFIERS_PER_CALL>,\n\n private_call_requests : BoundedVec<PrivateCallRequest, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_requests : BoundedVec<PublicCallRequest, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n public_teardown_call_request: PublicCallRequest,\n l2_to_l1_msgs : BoundedVec<L2ToL1Message, MAX_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n note_encrypted_logs_hashes: BoundedVec<NoteLogHash, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL>,\n encrypted_logs_hashes: BoundedVec<EncryptedLogHash, MAX_ENCRYPTED_LOGS_PER_CALL>,\n unencrypted_logs_hashes: BoundedVec<LogHash, MAX_UNENCRYPTED_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n last_key_validation_requests: [Option<KeyValidationRequest>; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n\n fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n fn push_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n fn push_nullifier(&mut self, nullifier: Field) {\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() });\n }\n\n fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: nullified_note_hash, counter: self.next_counter() });\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage,\n nullifier_read_requests: self.nullifier_read_requests.storage,\n key_validation_requests_and_generators: self.key_validation_requests_and_generators.storage,\n note_hashes: self.note_hashes.storage,\n nullifiers: self.nullifiers.storage,\n private_call_requests: self.private_call_requests.storage,\n public_call_requests: self.public_call_requests.storage,\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: self.l2_to_l1_msgs.storage,\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n note_encrypted_logs_hashes: self.note_encrypted_logs_hashes.storage,\n encrypted_logs_hashes: self.encrypted_logs_hashes.storage,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\"Setting {0} as fee payer\", [self.this_address().to_field()]);\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n notify_set_min_revertible_side_effect_counter(self.min_revertible_side_effect_counter);\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number = MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request = self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one\n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale. We fetch new values from oracle and instruct\n // protocol circuits to validate them by storing the validation request in context.\n let request = get_key_validation_request(pk_m_hash, key_index);\n let request_and_generator = KeyValidationRequestAndGenerator { request, sk_app_generator: sk_generators[key_index] };\n // We constrain that the pk_m_hash matches the one in the request (otherwise we could get an arbitrary\n // valid key request and not the one corresponding to pk_m_hash).\n assert(request.pk_m.hash() == pk_m_hash);\n self.key_validation_requests_and_generators.push(request_and_generator);\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content, counter: self.next_counter() };\n self.l2_to_l1_msgs.push(message);\n }\n\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(&mut self, content: Field, secret: Field, sender: EthAddress) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\n\n // NB: A randomness value of 0 signals that the kernels should not mask the contract address\n // used in siloing later on e.g. 'handshaking' contract w/ known address.\n pub fn emit_raw_event_log_with_masked_address<let M: u32>(\n &mut self,\n randomness: Field,\n log: [u8; M],\n log_hash: Field\n ) {\n let counter = self.next_counter();\n let contract_address = self.this_address();\n let len = log.len() as Field + 4;\n let side_effect = EncryptedLogHash { value: log_hash, counter, length: len, randomness };\n self.encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_event_log(contract_address, randomness, log, counter);\n }\n\n pub fn emit_raw_note_log<let M: u32>(&mut self, note_hash_counter: u32, log: [u8; M], log_hash: Field) {\n let counter = self.next_counter();\n let len = log.len() as Field + 4;\n let side_effect = NoteLogHash { value: log_hash, counter, length: len, note_hash_counter };\n self.note_encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_note_log(note_hash_counter, log, counter);\n }\n\n pub fn call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_private_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n let (end_side_effect_counter, returns_hash) = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = end_side_effect_counter + 1;\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n self.private_call_requests.push(\n PrivateCallRequest {\n contract_address,\n call_context,\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter\n }\n );\n\n PackedReturns::new(returns_hash)\n }\n\n pub fn call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n is_delegate_call\n );\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n let call_request = PublicCallRequest { contract_address, call_context, args_hash, counter };\n self.public_call_requests.push(call_request);\n }\n\n pub fn set_public_teardown_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.set_public_teardown_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn set_public_teardown_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n is_delegate_call\n );\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n self.public_teardown_call_request = PublicCallRequest {\n contract_address,\n call_context,\n args_hash,\n counter,\n };\n }\n\n fn generate_call_context(\n self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> CallContext {\n let msg_sender = if is_delegate_call {\n self.msg_sender()\n } else {\n self.this_address()\n };\n let storage_contract_address = if is_delegate_call {\n self.this_address()\n } else {\n contract_address\n };\n CallContext { msg_sender, storage_contract_address, function_selector, is_static_call, is_delegate_call }\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n historical_header: Header::empty(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n}\n"},"121":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/payload.nr","source":"use dep::protocol_types::{address::AztecAddress, scalar::Scalar, point::Point};\nuse std::{\n embedded_curve_ops::fixed_base_scalar_mul as derive_public_key,\n hash::from_field_unsafe as fr_to_fq_unsafe, field::bn254::decompose\n};\n\nuse crate::{\n event::event_interface::EventInterface, oracle::unsafe_rand::unsafe_rand,\n utils::point::point_to_bytes, note::note_interface::NoteInterface,\n encrypted_logs::{\n header::EncryptedLogHeader, incoming_body::EncryptedLogIncomingBody,\n outgoing_body::EncryptedLogOutgoingBody\n},\n keys::public_keys::{OvpkM, IvpkM}\n};\n\npub fn compute_encrypted_event_log<Event, let N: u32, let OB: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n event: Event\n) -> [u8; OB] where Event: EventInterface<N> {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ivpk);\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext = EncryptedLogIncomingBody::from_event(event, randomness).compute_ciphertext(eph_sk, ivpk);\n let outgoing_body_ciphertext: [u8; 144] = EncryptedLogOutgoingBody::new(eph_sk, recipient, ivpk).compute_ciphertext(fr_to_fq(ovsk_app), eph_pk);\n\n let mut encrypted_bytes: [u8; OB] = [0; OB];\n // @todo We ignore the tags for now\n\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[64 + i] = eph_pk_bytes[i];\n }\n for i in 0..48 {\n encrypted_bytes[96 + i] = incoming_header_ciphertext[i];\n encrypted_bytes[144 + i] = outgoing_header_ciphertext[i];\n }\n for i in 0..144 {\n encrypted_bytes[192 + i] = outgoing_body_ciphertext[i];\n }\n // Then we fill in the rest as the incoming body ciphertext\n let size = OB - 336;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[336 + i] = incoming_body_ciphertext[i];\n }\n\n // Current unoptimized size of the encrypted log\n // incoming_tag (32 bytes)\n // outgoing_tag (32 bytes)\n // eph_pk (32 bytes)\n // incoming_header (48 bytes)\n // outgoing_header (48 bytes)\n // outgoing_body (144 bytes)\n // incoming_body_fixed (64 bytes)\n // incoming_body_variable (N * 32 bytes + 16 bytes padding)\n encrypted_bytes\n}\n\npub fn compute_encrypted_note_log<Note, let N: u32, let M: u32>(\n contract_address: AztecAddress,\n storage_slot: Field,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n note: Note,\n num_public_values: u8 // Number of values to be appended to the log in public (used in partial note flow).\n) -> [u8; M] where Note: NoteInterface<N> {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ivpk);\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext = EncryptedLogIncomingBody::from_note(note, storage_slot).compute_ciphertext(eph_sk, ivpk);\n let outgoing_body_ciphertext: [u8; 144] = EncryptedLogOutgoingBody::new(eph_sk, recipient, ivpk).compute_ciphertext(fr_to_fq(ovsk_app), eph_pk);\n\n let mut encrypted_bytes: [u8; M] = [0; M];\n // @todo We ignore the tags for now\n\n encrypted_bytes[64] = num_public_values; // TODO(#8558): This can be just a single bit if we store info about partial fields in ABI\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[65 + i] = eph_pk_bytes[i];\n }\n for i in 0..48 {\n encrypted_bytes[97 + i] = incoming_header_ciphertext[i];\n encrypted_bytes[145 + i] = outgoing_header_ciphertext[i];\n }\n for i in 0..144 {\n encrypted_bytes[193 + i] = outgoing_body_ciphertext[i];\n }\n // Then we fill in the rest as the incoming body ciphertext\n let size = M - 337;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[337 + i] = incoming_body_ciphertext[i];\n }\n\n // Current unoptimized size of the encrypted log\n // incoming_tag (32 bytes)\n // outgoing_tag (32 bytes)\n // num_public_values (1 byte)\n // eph_pk (32 bytes)\n // incoming_header (48 bytes)\n // outgoing_header (48 bytes)\n // outgoing_body (144 bytes)\n // incoming_body_fixed (64 bytes)\n // incoming_body_variable (N * 32 bytes + 16 bytes padding)\n encrypted_bytes\n}\n\n/// Converts a base field element to scalar field element.\n/// This is fine because modulus of the base field is smaller than the modulus of the scalar field.\nfn fr_to_fq(r: Field) -> Scalar {\n let (lo, hi) = decompose(r);\n\n Scalar { lo, hi }\n}\n\nfn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n // We use the unsafe version of `fr_to_fq` because multi_scalar_mul (called by derive_public_key) will constrain\n // the scalars.\n let eph_sk = fr_to_fq_unsafe(unsafe_rand());\n let eph_pk = derive_public_key(eph_sk);\n\n (eph_sk, eph_pk)\n}\n\nmod test {\n use crate::{\n encrypted_logs::payload::compute_encrypted_note_log, keys::public_keys::{OvpkM, IvpkM},\n test::mocks::mock_note::MockNoteBuilder\n };\n use dep::protocol_types::{address::AztecAddress, point::Point};\n use std::test::OracleMock;\n\n #[test]\n unconstrained fn test_encrypted_note_log_matches_typescript() {\n // All the values in this test were copied over from `tagged_log.test.ts`\n let contract_address = AztecAddress::from_field(0x10f48cd9eff7ae5b209c557c70de2e657ee79166868676b787e9417e19260e04);\n let storage_slot = 0x0fe46be583b71f4ab5b70c2657ff1d05cccf1d292a9369628d1a194f944e6599;\n let ovsk_app = 0x03a6513d6def49f41d20373d2cec894c23e7492794b08fc50c0e8a1bd2512612;\n let ovpk_m = OvpkM {\n inner: Point {\n x: 0x1961448682803198631f299340e4206bb12809d4bebbf012b30f59af73ba1a15,\n y: 0x133674060c3925142aceb4f1dcd9f9137d0217d37ff8729ee5ceaa6e2790353d,\n is_infinite: false\n }\n };\n let ivpk_m = IvpkM {\n inner: Point {\n x: 0x260cd3904f6df16e974c29944fdc839e40fb5cf293f03df2eb370851d3a527bc,\n y: 0x0eef2964fe6640e84c82b5d2915892409b38e9e25d39f68dd79edb725c55387f,\n is_infinite: false\n }\n };\n\n let note_value = 0x301640ceea758391b2e161c92c0513f129020f4125256afdae2646ce31099f5c;\n let note = MockNoteBuilder::new(note_value).contract_address(contract_address).storage_slot(storage_slot).build();\n\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk);\n\n let recipient = AztecAddress::from_field(0x10ee41ee4b62703b16f61e03cb0d88c4b306a9eb4a6ceeb2aff13428541689a2);\n let num_public_values: u8 = 0;\n\n let log: [u8; 449] = compute_encrypted_note_log(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n recipient,\n note,\n num_public_values\n );\n\n // The following value was generated by `tagged_log.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let encrypted_note_log_from_typescript = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 70, 12, 14, 67, 77, 132, 110, 193, 234, 40, 110, 64, 144, 235, 86, 55, 111, 242, 123, 221, 193, 170, 202, 225, 216, 86, 84, 159, 112, 31, 167, 126, 79, 51, 186, 47, 71, 253, 172, 99, 112, 241, 59, 197, 241, 107, 186, 232, 87, 187, 230, 171, 62, 228, 234, 42, 51, 145, 146, 238, 242, 42, 71, 206, 13, 244, 66, 111, 195, 20, 203, 98, 148, 204, 242, 145, 183, 156, 29, 141, 54, 44, 220, 194, 35, 229, 16, 32, 204, 211, 49, 142, 112, 82, 202, 116, 241, 254, 146, 42, 217, 20, 189, 70, 228, 182, 171, 205, 104, 27, 99, 171, 28, 91, 244, 21, 30, 130, 240, 5, 72, 174, 124, 97, 197, 157, 248, 193, 23, 193, 76, 46, 141, 144, 70, 211, 45, 67, 167, 218, 129, 140, 104, 190, 41, 110, 249, 209, 68, 106, 135, 164, 80, 235, 63, 101, 80, 32, 13, 38, 99, 145, 91, 11, 173, 151, 231, 247, 65, 153, 117, 229, 167, 64, 239, 182, 126, 235, 83, 4, 169, 8, 8, 160, 4, 235, 252, 21, 96, 84, 161, 69, 145, 145, 215, 254, 161, 117, 246, 198, 65, 89, 179, 194, 90, 19, 121, 12, 202, 114, 80, 195, 14, 60, 128, 105, 142, 100, 86, 90, 108, 157, 219, 22, 172, 20, 121, 195, 25, 159, 236, 2, 70, 75, 42, 37, 34, 2, 17, 149, 20, 176, 32, 18, 204, 56, 117, 121, 34, 15, 3, 88, 123, 64, 68, 74, 233, 63, 59, 131, 222, 194, 192, 167, 110, 217, 10, 128, 73, 129, 172, 205, 103, 212, 60, 151, 141, 10, 151, 222, 151, 180, 43, 91, 148, 201, 110, 165, 10, 238, 32, 134, 235, 99, 216, 200, 182, 31, 22, 156, 18, 209, 222, 172, 239, 193, 212, 86, 99, 62, 70, 182, 45, 175, 241, 91, 202, 179, 225, 236, 95, 71, 66, 151, 225, 203, 53, 216, 85, 102, 130, 6, 8, 25, 180, 86, 58, 140, 198, 105, 102, 177, 42, 94, 115, 247, 145, 147, 24, 231, 39, 73, 27, 10, 219, 130, 115, 188, 74, 114, 5, 177, 199, 83, 183, 106, 87, 204, 238, 231, 72, 45, 240, 39, 174, 25, 98, 53, 187, 156, 159, 244, 38\n ];\n assert_eq(encrypted_note_log_from_typescript, log);\n }\n\n #[test]\n unconstrained fn test_encrypted_note_log_of_finalized_partial_note_matches_typescript() {\n // All the values in this test were copied over from `tagged_log.test.ts`\n let contract_address = AztecAddress::from_field(0x10f48cd9eff7ae5b209c557c70de2e657ee79166868676b787e9417e19260e04);\n let storage_slot = 0x0fe46be583b71f4ab5b70c2657ff1d05cccf1d292a9369628d1a194f944e6599;\n let ovsk_app = 0x03a6513d6def49f41d20373d2cec894c23e7492794b08fc50c0e8a1bd2512612;\n let ovpk_m = OvpkM {\n inner: Point {\n x: 0x1961448682803198631f299340e4206bb12809d4bebbf012b30f59af73ba1a15,\n y: 0x133674060c3925142aceb4f1dcd9f9137d0217d37ff8729ee5ceaa6e2790353d,\n is_infinite: false\n }\n };\n let ivpk_m = IvpkM {\n inner: Point {\n x: 0x260cd3904f6df16e974c29944fdc839e40fb5cf293f03df2eb370851d3a527bc,\n y: 0x0eef2964fe6640e84c82b5d2915892409b38e9e25d39f68dd79edb725c55387f,\n is_infinite: false\n }\n };\n\n let note_value = 0x301640ceea758391b2e161c92c0513f129020f4125256afdae2646ce31099f5c;\n let note_public_value1 = 0x14172339287e8d281545c177313f02b6aa2fedfd628cfd8b7f11a136fd0d6557;\n let note_public_value2 = 0x0834d81e3f73c7e2809b08ae38600ffc76a2554473eeab6de7bff4b33a84feac;\n let note = MockNoteBuilder::new(note_value).contract_address(contract_address).storage_slot(storage_slot).build();\n\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk);\n\n let recipient = AztecAddress::from_field(0x10ee41ee4b62703b16f61e03cb0d88c4b306a9eb4a6ceeb2aff13428541689a2);\n let num_public_values: u8 = 2;\n\n // First we compute the encrypted log without the public values\n let log_without_public_values: [u8; 449] = compute_encrypted_note_log(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n recipient,\n note,\n num_public_values\n );\n\n // Then we \"append\" the public values to the log by copying both the original log and the current log into a new byte array\n let mut log: [u8; 513] = [0; 513];\n for i in 0..449 {\n log[i] = log_without_public_values[i];\n }\n let note_public_value1_bytes: [u8; 32] = note_public_value1.to_be_bytes();\n let note_public_value2_bytes: [u8; 32] = note_public_value2.to_be_bytes();\n for i in 0..32 {\n log[449 + i] = note_public_value1_bytes[i];\n log[481 + i] = note_public_value2_bytes[i];\n }\n\n // The following value was generated by `tagged_log.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let encrypted_note_log_of_finalized_partial_from_typescript = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 141, 70, 12, 14, 67, 77, 132, 110, 193, 234, 40, 110, 64, 144, 235, 86, 55, 111, 242, 123, 221, 193, 170, 202, 225, 216, 86, 84, 159, 112, 31, 167, 126, 79, 51, 186, 47, 71, 253, 172, 99, 112, 241, 59, 197, 241, 107, 186, 232, 87, 187, 230, 171, 62, 228, 234, 42, 51, 145, 146, 238, 242, 42, 71, 206, 13, 244, 66, 111, 195, 20, 203, 98, 148, 204, 242, 145, 183, 156, 29, 141, 54, 44, 220, 194, 35, 229, 16, 32, 204, 211, 49, 142, 112, 82, 202, 116, 241, 254, 146, 42, 217, 20, 189, 70, 228, 182, 171, 205, 104, 27, 99, 171, 28, 91, 244, 21, 30, 130, 240, 5, 72, 174, 124, 97, 197, 157, 248, 193, 23, 193, 76, 46, 141, 144, 70, 211, 45, 67, 167, 218, 129, 140, 104, 190, 41, 110, 249, 209, 68, 106, 135, 164, 80, 235, 63, 101, 80, 32, 13, 38, 99, 145, 91, 11, 173, 151, 231, 247, 65, 153, 117, 229, 167, 64, 239, 182, 126, 235, 83, 4, 169, 8, 8, 160, 4, 235, 252, 21, 96, 84, 161, 69, 145, 145, 215, 254, 161, 117, 246, 198, 65, 89, 179, 194, 90, 19, 121, 12, 202, 114, 80, 195, 14, 60, 128, 105, 142, 100, 86, 90, 108, 157, 219, 22, 172, 20, 121, 195, 25, 159, 236, 2, 70, 75, 42, 37, 34, 2, 17, 149, 20, 176, 32, 18, 204, 56, 117, 121, 34, 15, 3, 88, 123, 64, 68, 74, 233, 63, 59, 131, 222, 194, 192, 167, 110, 217, 10, 128, 73, 129, 172, 205, 103, 212, 60, 151, 141, 10, 151, 222, 151, 180, 43, 91, 148, 201, 110, 165, 10, 238, 32, 134, 235, 99, 216, 200, 182, 31, 22, 156, 18, 209, 222, 172, 239, 193, 212, 86, 99, 62, 70, 182, 45, 175, 241, 91, 202, 179, 225, 236, 95, 71, 66, 151, 225, 203, 53, 216, 85, 102, 130, 6, 8, 25, 180, 86, 58, 140, 198, 105, 102, 177, 42, 94, 115, 247, 145, 147, 24, 231, 39, 73, 27, 10, 219, 130, 115, 188, 74, 114, 5, 177, 199, 83, 183, 106, 87, 204, 238, 231, 72, 45, 240, 39, 174, 25, 98, 53, 187, 156, 159, 244, 38, 20, 23, 35, 57, 40, 126, 141, 40, 21, 69, 193, 119, 49, 63, 2, 182, 170, 47, 237, 253, 98, 140, 253, 139, 127, 17, 161, 54, 253, 13, 101, 87, 8, 52, 216, 30, 63, 115, 199, 226, 128, 155, 8, 174, 56, 96, 15, 252, 118, 162, 85, 68, 115, 238, 171, 109, 231, 191, 244, 179, 58, 132, 254, 172\n ];\n assert_eq(encrypted_note_log_of_finalized_partial_from_typescript, log);\n }\n}\n"},"122":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/encrypted_note_emission.nr","source":"use crate::{\n context::PrivateContext, note::{note_emission::NoteEmission, note_interface::NoteInterface},\n keys::{getters::{get_public_keys, get_ovsk_app}, public_keys::{OvpkM, IvpkM}},\n encrypted_logs::payload::compute_encrypted_note_log, oracle::logs_traits::LensForEncryptedLog\n};\nuse dep::protocol_types::{hash::sha256_to_field, address::AztecAddress, abis::note_hash::NoteHash};\n\nfn compute_raw_note_log<Note, let N: u32, let M: u32>(\n context: PrivateContext,\n note: Note,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n num_public_values: u8 // Number of values to be appended to the log in public (used in partial note flow).\n) -> (u32, [u8; M], Field) where Note: NoteInterface<N>, [Field; N]: LensForEncryptedLog<N, M> {\n let note_header = note.get_header();\n let note_hash_counter = note_header.note_hash_counter;\n let storage_slot = note_header.storage_slot;\n\n // TODO(#8589): use typesystem to skip this check when not needed\n let note_exists = context.note_hashes.storage.any(|n: NoteHash| n.counter == note_hash_counter);\n assert(note_exists, \"Can only emit a note log for an existing note.\");\n\n let contract_address: AztecAddress = context.this_address();\n\n let encrypted_log: [u8; M] = compute_encrypted_note_log(\n contract_address,\n storage_slot,\n ovsk_app,\n ovpk,\n ivpk,\n recipient,\n note,\n num_public_values\n );\n let log_hash = sha256_to_field(encrypted_log);\n\n (note_hash_counter, encrypted_log, log_hash)\n}\n\nunconstrained fn compute_raw_note_log_unconstrained<Note, let N: u32, let M: u32>(\n context: PrivateContext,\n note: Note,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n num_public_values: u8 // Number of values to be appended to the log in public (used in partial note flow).\n) -> (u32, [u8; M], Field) where Note: NoteInterface<N>, [Field; N]: LensForEncryptedLog<N, M> {\n let ovsk_app = get_ovsk_app(ovpk.hash());\n compute_raw_note_log(context, note, ovsk_app, ovpk, ivpk, recipient, num_public_values)\n}\n\npub fn encode_and_encrypt_note<Note, let N: u32, let M: u32>(\n context: &mut PrivateContext,\n ov: AztecAddress,\n iv: AztecAddress\n) -> fn[(AztecAddress, AztecAddress, &mut PrivateContext)](NoteEmission<Note>) -> () where Note: NoteInterface<N>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n let ovpk = get_public_keys(ov).ovpk_m;\n let ivpk = get_public_keys(iv).ivpk_m;\n let ovsk_app: Field = context.request_ovsk_app(ovpk.hash());\n\n // Number of public values is always 0 here because `encode_and_encrypt_note(...)` is only called\n // in the non-partial note flow.\n let num_public_values = 0;\n let (note_hash_counter, encrypted_log, log_hash) = compute_raw_note_log(*context, e.note, ovsk_app, ovpk, ivpk, iv, num_public_values);\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\npub fn encode_and_encrypt_note_unconstrained<Note, let N: u32, let M: u32>(\n context: &mut PrivateContext,\n ov: AztecAddress,\n iv: AztecAddress\n) -> fn[(AztecAddress, AztecAddress, &mut PrivateContext)](NoteEmission<Note>) -> () where Note: NoteInterface<N>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n // Note: We could save a lot of gates by obtaining the following keys in an unconstrained context but this\n // function is currently not used anywhere so we are not optimizing it.\n let ovpk = get_public_keys(ov).ovpk_m;\n let ivpk = get_public_keys(iv).ivpk_m;\n\n // Number of public values is always 0 here because `encode_and_encrypt_note_unconstrained(...)` is only called\n // in the non-partial note flow.\n let num_public_values = 0;\n\n // See the comment in `encode_and_encrypt_note_with_keys_unconstrained` for why having note hash counter\n // and log hash unconstrained here is fine.\n let (note_hash_counter, encrypted_log, log_hash) = unsafe {\n compute_raw_note_log_unconstrained(*context, e.note, ovpk, ivpk, iv, num_public_values)\n };\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\npub fn encode_and_encrypt_note_with_keys<Note, let N: u32, let M: u32>(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n let ovsk_app: Field = context.request_ovsk_app(ovpk.hash());\n\n // Number of public values is always 0 here because `encode_and_encrypt_note_unconstrained(...)` is only called\n // in the non-partial note flow.\n let num_public_values = 0;\n\n let (note_hash_counter, encrypted_log, log_hash) = compute_raw_note_log(*context, e.note, ovsk_app, ovpk, ivpk, recipient, num_public_values);\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\npub fn encode_and_encrypt_note_with_keys_unconstrained<Note, let N: u32, let M: u32>(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N>, [Field; N]: LensForEncryptedLog<N, M> {\n | e: NoteEmission<Note> | {\n // Number of public values is always 0 here because `encode_and_encrypt_note_with_keys_unconstrained(...)` is only called\n // in the non-partial note flow.\n let num_public_values = 0;\n\n // Having the log hash be unconstrained here is fine because the way this works is we send the log hash\n // to the kernel, and it gets included as part of its public inputs. Then we send the tx to the sequencer,\n // which includes the kernel proof and the log preimages. The sequencer computes the hashes of the logs\n // and checks that they are the ones in the public inputs of the kernel, and drops the tx otherwise (proposing\n // the block on L1 would later fail if it didn't because of txs effects hash mismatch).\n // So if we don't constrain the log hash, then a malicious sender can compute the correct log, submit a bad\n // log hash to the kernel, and then submit the bad log preimage to the sequencer. All checks will pass, but\n // the submitted log will not be the one that was computed by the app.\n // In the unconstrained case, we don't care about the log at all because we don't do anything with it,\n // and because it's unconstrained: it could be anything. So if a sender chooses to broadcast the tx with a log\n // that is different from the one that was used in the circuit, then they'll be able to, but they were already\n // able to change the log before anyway, so the end result is the same. It's important here that we do not\n // return the log from this function to the app, otherwise it could try to do stuff with it and then that might\n // be wrong.\n // Regarding the note hash counter, this is used for squashing. The kernel assumes that a given note can have\n // more than one log and removes all of the matching ones, so all a malicious sender could do is either: cause\n // for the log to be deleted when it shouldn't have (which is fine - they can already make the content be\n // whatever), or cause for the log to not be deleted when it should have (which is also fine - it'll be a log\n // for a note that doesn't exist).\n let (note_hash_counter, encrypted_log, log_hash) = unsafe {\n compute_raw_note_log_unconstrained(*context, e.note, ovpk, ivpk, recipient, num_public_values)\n };\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n"},"123":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/outgoing_body.nr","source":"use dep::protocol_types::{\n address::AztecAddress, scalar::Scalar, point::Point, constants::GENERATOR_INDEX__SYMMETRIC_KEY,\n hash::poseidon2_hash_with_separator\n};\nuse std::aes128::aes128_encrypt;\n\nuse crate::{keys::public_keys::IvpkM, utils::point::point_to_bytes};\n\npub struct EncryptedLogOutgoingBody {\n eph_sk: Scalar,\n recipient: AztecAddress,\n recipient_ivpk: IvpkM,\n}\n\nimpl EncryptedLogOutgoingBody {\n pub fn new(eph_sk: Scalar, recipient: AztecAddress, recipient_ivpk: IvpkM) -> Self {\n Self { eph_sk, recipient, recipient_ivpk }\n }\n\n /// Encrypts ephemeral secret key and recipient's ivpk --> with this information the recipient of outgoing will\n /// be able to derive the key with which the incoming log can be decrypted.\n pub fn compute_ciphertext(self, ovsk_app: Scalar, eph_pk: Point) -> [u8; 144] {\n // Again, we could compute `eph_pk` here, but we keep the interface more similar\n // and also make it easier to optimise it later as we just pass it along\n\n let mut buffer = [0 as u8; 128];\n\n let serialized_eph_sk_high: [u8; 32] = self.eph_sk.hi.to_be_bytes();\n let serialized_eph_sk_low: [u8; 32] = self.eph_sk.lo.to_be_bytes();\n\n let address_bytes: [u8; 32] = self.recipient.to_field().to_be_bytes();\n let serialized_recipient_ivpk = point_to_bytes(self.recipient_ivpk.to_point());\n\n for i in 0..32 {\n buffer[i] = serialized_eph_sk_high[i];\n buffer[i + 32] = serialized_eph_sk_low[i];\n buffer[i + 64] = address_bytes[i];\n }\n for i in 0..32 {\n buffer[i + 96] = serialized_recipient_ivpk[i];\n }\n\n // We compute the symmetric key using poseidon.\n let full_key: [u8; 32] = poseidon2_hash_with_separator(\n [ovsk_app.hi, ovsk_app.lo, eph_pk.x, eph_pk.y],\n GENERATOR_INDEX__SYMMETRIC_KEY as Field\n ).to_be_bytes();\n\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(buffer, iv, sym_key).as_array()\n }\n}\n\nmod test {\n use crate::{encrypted_logs::outgoing_body::EncryptedLogOutgoingBody, keys::public_keys::IvpkM};\n use dep::protocol_types::{address::AztecAddress, scalar::Scalar};\n use std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\n\n #[test]\n unconstrained fn test_encrypted_log_outgoing_body_matches_typescript() {\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000d0d302ee245dfaf2807e604eec4715fe,\n hi: 0x000000000000000000000000000000000f096b423017226a18461115fa8d34bb\n };\n let recipient_ivsk = Scalar {\n lo: 0x000000000000000000000000000000004828f8f95676ebb481df163f87fd4022,\n hi: 0x000000000000000000000000000000000f4d97c25d578f9348251a71ca17ae31\n };\n let sender_ovsk_app = Scalar {\n lo: 0x0000000000000000000000000000000074d2e28c6bc5176ac02cf7c7d36a444e,\n hi: 0x00000000000000000000000000000000089c6887cb1446d86c64e81afc78048b\n };\n\n let eph_pk = derive_public_key(eph_sk);\n let recipient_ivpk = IvpkM { inner: derive_public_key(recipient_ivsk) };\n\n let recipient = AztecAddress::from_field(0xdeadbeef);\n\n let body = EncryptedLogOutgoingBody::new(eph_sk, recipient, recipient_ivpk);\n\n let ciphertext = body.compute_ciphertext(sender_ovsk_app, eph_pk);\n\n // The following value was generated by `encrypted_log_outgoing_body.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let outgoing_body_ciphertext_from_typescript = [\n 127, 182, 227, 75, 192, 197, 54, 47, 168, 134, 233, 148, 251, 46, 86, 12, 73, 50, 238, 50, 31, 174, 27, 202, 110, 77, 161, 197, 244, 124, 17, 100, 143, 150, 232, 14, 156, 248, 43, 177, 16, 82, 244, 103, 88, 74, 84, 200, 15, 65, 187, 14, 163, 60, 91, 22, 104, 31, 211, 190, 124, 121, 79, 92, 239, 65, 185, 106, 51, 178, 168, 137, 84, 43, 79, 158, 151, 152, 83, 42, 170, 13, 106, 209, 254, 74, 39, 145, 73, 215, 17, 234, 196, 89, 30, 58, 120, 127, 88, 69, 121, 61, 18, 206, 89, 118, 243, 238, 177, 71, 73, 47, 147, 4, 155, 25, 173, 248, 206, 52, 17, 180, 122, 186, 106, 191, 252, 102, 197, 91, 16, 39, 94, 91, 224, 30, 168, 177, 26, 144, 5, 124, 128, 6\n ];\n\n assert_eq(outgoing_body_ciphertext_from_typescript, ciphertext);\n }\n}\n"},"124":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/header.nr","source":"use dep::protocol_types::{address::AztecAddress, scalar::Scalar, point::Point};\n\nuse crate::keys::{point_to_symmetric_key::point_to_symmetric_key, public_keys::ToPoint};\n\nuse std::aes128::aes128_encrypt;\n\npub struct EncryptedLogHeader {\n address: AztecAddress,\n}\n\nimpl EncryptedLogHeader {\n fn new(address: AztecAddress) -> Self {\n EncryptedLogHeader { address }\n }\n\n fn compute_ciphertext<T>(self, secret: Scalar, pk: T) -> [u8; 48] where T: ToPoint {\n let full_key = point_to_symmetric_key(secret, pk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n\n let input: [u8; 32] = self.address.to_field().to_be_bytes();\n aes128_encrypt(input, iv, sym_key).as_array()\n }\n}\n\n#[test]\nunconstrained fn test_encrypted_log_header_matches_noir() {\n let address = AztecAddress::from_field(0xdeadbeef);\n let header = EncryptedLogHeader::new(address);\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let point = crate::keys::public_keys::IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n let ciphertext = header.compute_ciphertext(secret, point);\n\n // The following value was generated by `encrypted_log_header.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_header_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 194, 44, 7, 131, 160, 83, 64, 181, 98, 38, 153, 214, 62, 171, 253, 161, 111, 191, 28, 247, 216, 26, 222, 171, 176, 218, 48, 209, 73, 89, 200, 209\n ];\n\n assert_eq(ciphertext, expected_header_ciphertext_from_typescript);\n}\n"},"125":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/incoming_body.nr","source":"use crate::note::note_interface::NoteInterface;\nuse crate::event::event_interface::EventInterface;\nuse dep::protocol_types::{scalar::Scalar};\n\nuse std::aes128::aes128_encrypt;\nuse crate::keys::{point_to_symmetric_key::point_to_symmetric_key, public_keys::IvpkM};\n\npub struct EncryptedLogIncomingBody<let N: u32> {\n plaintext: [u8; N * 32 + 64]\n}\n\nimpl<let N: u32> EncryptedLogIncomingBody<N> {\n pub fn from_note<T>(note: T, storage_slot: Field) -> Self where T: NoteInterface<N> {\n let mut plaintext = note.to_be_bytes(storage_slot);\n EncryptedLogIncomingBody { plaintext }\n }\n\n pub fn from_event<T>(event: T, randomness: Field) -> Self where T: EventInterface<N> {\n let mut plaintext = event.private_to_be_bytes(randomness);\n EncryptedLogIncomingBody { plaintext }\n }\n\n pub fn compute_ciphertext(self, eph_sk: Scalar, ivpk: IvpkM) -> [u8] {\n let full_key = point_to_symmetric_key(eph_sk, ivpk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(self.plaintext, iv, sym_key)\n }\n}\n\nmod test {\n use dep::protocol_types::{\n address::AztecAddress, scalar::Scalar, point::Point, traits::Serialize,\n abis::event_selector::EventSelector\n };\n\n use crate::{\n note::{note_header::NoteHeader, note_interface::{NoteInterface, NullifiableNote}},\n encrypted_logs::incoming_body::EncryptedLogIncomingBody, event::event_interface::EventInterface,\n context::PrivateContext, keys::public_keys::IvpkM\n };\n\n struct AddressNote {\n address: AztecAddress,\n owner: AztecAddress,\n randomness: Field,\n header: NoteHeader,\n }\n\n global ADDRESS_NOTE_LEN: u32 = 3;\n\n impl NullifiableNote for AddressNote {\n fn compute_nullifier(\n _self: Self,\n _context: &mut PrivateContext,\n _note_hash_for_nullify: Field\n ) -> Field {\n 1\n }\n\n unconstrained fn compute_nullifier_without_context(_self: Self) -> Field {\n 1\n }\n }\n\n struct AddressNoteHidingPoint {\n inner: Point\n }\n\n impl NoteInterface<ADDRESS_NOTE_LEN> for AddressNote {\n\n fn get_note_type_id() -> Field {\n 1\n }\n\n fn get_header(self) -> NoteHeader {\n self.header\n }\n\n fn set_header(&mut self, header: NoteHeader) {\n self.header = header;\n }\n\n fn serialize_content(self) -> [Field; ADDRESS_NOTE_LEN] {\n [self.address.to_field(), self.owner.to_field(), self.randomness]\n }\n\n fn deserialize_content(fields: [Field; ADDRESS_NOTE_LEN]) -> Self {\n AddressNote {\n address: AztecAddress::from_field(fields[0]),\n owner: AztecAddress::from_field(fields[1]),\n randomness: fields[2],\n header: NoteHeader::empty()\n }\n }\n\n fn to_be_bytes(self, storage_slot: Field) -> [u8; ADDRESS_NOTE_LEN * 32 + 64] {\n let serialized_note = self.serialize_content();\n\n let mut buffer: [u8; ADDRESS_NOTE_LEN * 32 + 64] = [0; ADDRESS_NOTE_LEN * 32 + 64];\n\n let storage_slot_bytes: [u8; 32] = storage_slot.to_be_bytes();\n let note_type_id_bytes: [u8; 32] = AddressNote::get_note_type_id().to_be_bytes();\n\n for i in 0..32 {\n buffer[i] = storage_slot_bytes[i];\n buffer[32 + i] = note_type_id_bytes[i];\n }\n\n for i in 0..serialized_note.len() {\n let bytes: [u8; 32] = serialized_note[i].to_be_bytes();\n for j in 0..32 {\n buffer[64 + i * 32 + j] = bytes[j];\n }\n }\n buffer\n }\n\n fn compute_note_hash(_self: Self) -> Field {\n crate::generators::Ga1.x\n }\n }\n\n impl AddressNote {\n pub fn new(address: AztecAddress, owner: AztecAddress, randomness: Field) -> Self {\n AddressNote { address, owner, randomness, header: NoteHeader::empty() }\n }\n }\n\n #[test]\n unconstrained fn test_encrypted_note_log_incoming_body_matches_typescript() {\n // All the values in this test were copied over from `encrypted_note_log_incoming_body.test.ts`\n let note = AddressNote::new(\n AztecAddress::from_field(0x1),\n AztecAddress::from_field(0x2),\n 3\n );\n\n let storage_slot = 2;\n\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let ivpk = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n // 1. `EncryptedLogIncomingBody::from_note` calls `note.to_be_bytes(storage_slot)` function which serializes\n // the note to bytes - note that in the case of `AddressNote` the `to_be_bytes` function was automatically\n // implemented by Aztec macros.\n let body = EncryptedLogIncomingBody::from_note(note, storage_slot);\n\n // 2. `body.compute_ciphertext(...)` function then derives symmetric key from `eph_sk` and `ivpk` and encrypts\n // the note plaintext using AES-128.\n let ciphertext = body.compute_ciphertext(eph_sk, ivpk);\n\n // The following value was generated by `encrypted_note_log_incoming_body.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let note_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160, 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157, 131, 149, 96, 236, 253, 96, 172, 157, 30, 27, 176, 228, 74, 242, 190, 138, 48, 33, 93, 46, 37, 223, 130, 25, 245, 188, 163, 159, 223, 187, 24, 139, 206, 131, 154, 159, 130, 37, 17, 158, 114, 242, 141, 124, 193, 232, 54, 146, 96, 145, 100, 125, 234, 57, 43, 95, 115, 183, 39, 121, 232, 134, 229, 148, 25, 46, 77, 87, 127, 95, 7, 77, 188, 37, 234, 245, 142, 232, 87, 252, 28, 67, 67, 90, 214, 254, 89, 47, 68, 66, 187, 227, 8, 59, 162, 25, 141, 97, 141, 217, 197, 115, 15, 212, 202, 157, 41, 150, 62, 219, 57, 224, 92, 185, 212, 142, 94, 146, 41, 178, 145, 68, 169, 23, 185, 206, 138, 70, 47, 176, 210, 165, 236, 23, 206, 229, 108\n ];\n\n assert_eq(note_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..note_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], note_body_ciphertext_from_typescript[i]);\n }\n }\n\n struct TestEvent {\n value0: Field,\n value1: Field,\n value2: Field,\n }\n\n impl Serialize<3> for TestEvent {\n fn serialize(self) -> [Field; 3] {\n [self.value0, self.value1, self.value2]\n }\n }\n\n global TEST_EVENT_LEN: u32 = 3;\n\n impl EventInterface<TEST_EVENT_LEN> for TestEvent {\n fn get_event_type_id() -> EventSelector {\n comptime\n {\n EventSelector::from_signature(\"TestEvent(Field,Field,Field)\")\n }\n }\n\n fn private_to_be_bytes(self, randomness: Field) -> [u8; TEST_EVENT_LEN * 32 + 64] {\n let mut buffer: [u8; TEST_EVENT_LEN * 32 + 64] = [0; TEST_EVENT_LEN * 32 + 64];\n\n let randomness_bytes: [u8; 32] = randomness.to_be_bytes();\n let event_type_id_bytes: [u8; 32] = TestEvent::get_event_type_id().to_field().to_be_bytes();\n\n for i in 0..32 {\n buffer[i] = randomness_bytes[i];\n buffer[32 + i] = event_type_id_bytes[i];\n }\n\n let serialized_event = self.serialize();\n\n for i in 0..serialized_event.len() {\n let bytes: [u8; 32] = serialized_event[i].to_be_bytes();\n for j in 0..32 {\n buffer[64 + i * 32 + j] = bytes[j];\n }\n }\n\n buffer\n }\n\n fn to_be_bytes(self) -> [u8; TEST_EVENT_LEN * 32 + 32] {\n let mut buffer: [u8; TEST_EVENT_LEN * 32 + 32] = [0; TEST_EVENT_LEN * 32 + 32];\n\n let event_type_id_bytes: [u8; 32] = TestEvent::get_event_type_id().to_field().to_be_bytes();\n\n for i in 0..32 {\n buffer[i] = event_type_id_bytes[i];\n }\n\n let serialized_event = self.serialize();\n\n for i in 0..serialized_event.len() {\n let bytes: [u8; 32] = serialized_event[i].to_be_bytes();\n for j in 0..32 {\n buffer[32 + i * 32 + j] = bytes[j];\n }\n }\n\n buffer\n }\n\n fn emit<Env>(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n }\n\n #[test]\n unconstrained fn test_encrypted_log_event_incoming_body() {\n let test_event = TestEvent { value0: 1, value1: 2, value2: 3 };\n\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n\n let ivpk = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n let randomness = 2;\n\n let body = EncryptedLogIncomingBody::from_event(test_event, randomness);\n\n let ciphertext = body.compute_ciphertext(eph_sk, ivpk);\n\n // The following value was generated by `encrypted_event_log_incoming_body.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let event_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160, 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157, 131, 149, 96, 236, 253, 96, 172, 157, 30, 201, 247, 40, 80, 60, 188, 158, 251, 242, 103, 197, 79, 165, 195, 10, 160, 255, 35, 167, 152, 25, 233, 77, 145, 214, 243, 210, 119, 0, 20, 29, 95, 15, 63, 33, 190, 184, 67, 254, 96, 128, 243, 220, 228, 201, 130, 86, 163, 52, 127, 111, 10, 212, 7, 160, 16, 87, 13, 39, 11, 5, 1, 164, 65, 8, 56, 82, 245, 13, 68, 176, 90, 100, 69, 243, 78, 117, 188, 221, 34, 178, 31, 155, 89, 143, 176, 129, 118, 36, 236, 64, 179, 52, 239, 184, 51, 51, 199, 221, 49, 81, 197, 17, 199, 192, 99, 49, 168, 157, 164, 190, 33, 240, 182, 214, 173, 7, 156, 102, 95, 65, 217, 225, 123, 42, 21, 124, 144\n ];\n\n assert_eq(event_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..event_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], event_body_ciphertext_from_typescript[i]);\n }\n }\n}\n"},"129":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/note_getter/mod.nr","source":"use dep::protocol_types::{constants::{MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, GET_NOTES_ORACLE_RETURN_LENGTH}};\nuse crate::context::PrivateContext;\nuse crate::note::{\n constants::{GET_NOTE_ORACLE_RETURN_LENGTH, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, Select, Sort, SortOrder, NoteStatus, PropertySelector},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request\n};\nuse crate::oracle;\nuse crate::utils::comparison::compare;\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\n\nmod test;\n\nfn extract_property_value_from_selector<let N: u32>(\n serialized_note: [Field; N],\n selector: PropertySelector\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the serialized note.\n // This allows easier packing and custom (de)serialization schemas. A note property is located\n // inside the serialized note using the index inside the array, a byte offset and a length.\n let value: [u8; 32] = serialized_note[selector.index].to_be_bytes();\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[31 + offset - i] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_note_header<Note, let N: u32>(\n context: PrivateContext,\n storage_slot: Field,\n note: Note\n) where Note: NoteInterface<N> {\n let header = note.get_header();\n let contract_address = context.this_address();\n assert(header.contract_address.eq(contract_address), \"Mismatch note header contract address.\");\n assert(header.storage_slot == storage_slot, \"Mismatch note header storage slot.\");\n}\n\nfn check_note_fields<let N: u32>(\n serialized_note: [Field; N],\n selects: BoundedVec<Option<Select>, N>\n) {\n for i in 0..selects.len {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field = extract_property_value_from_selector(serialized_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()), \"Mismatch return note field.\"\n );\n }\n}\n\nfn check_notes_order<let N: u32>(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec<Option<Sort>, N>\n) {\n for i in 0..sorts.len {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note<Note, let N: u32>(\n context: &mut PrivateContext,\n storage_slot: Field\n) -> (Note, Field) where Note: NoteInterface<N> + NullifiableNote {\n let note = unsafe {\n get_note_internal(storage_slot)\n };\n\n // Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do is check that\n // the metadata is correct, and that the note exists.\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (note, note_hash_for_read_request)\n}\n\npub fn get_notes<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>) where Note: NoteInterface<N> + NullifiableNote + Eq {\n let opt_notes = unsafe {\n get_notes_internal(storage_slot, options)\n };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor<Note, PREPROCESSOR_ARGS>(\n notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PREPROCESSOR_ARGS) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PREPROCESSOR_ARGS\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>) where Note: NoteInterface<N> + NullifiableNote + Eq {\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the contents of the notes (as opposed to simply removing some),\n // the private kernel will later validate that these note actually exist, so transformations would cause for that\n // check to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = crate::utils::collapse_array(filtered_notes);\n let mut note_hashes: BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL> = BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_fields = [0; N];\n for i in 0..options.limit {\n if i < notes.len() {\n let note = notes.get_unchecked(i);\n let fields = note.serialize_content();\n check_note_header(*context, storage_slot, note);\n check_note_fields(fields, options.selects);\n if i != 0 {\n check_notes_order(prev_fields, fields, options.sorts);\n }\n prev_fields = fields;\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1410): test to ensure\n // failure if malicious oracle injects 0 nonce here for a \"pre-existing\" note.\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal<Note, let N: u32>(storage_slot: Field) -> Note where Note: NoteInterface<N> {\n let placeholder_note = [Option::none()];\n let placeholder_fields = [0; GET_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n placeholder_note,\n placeholder_fields,\n placeholder_note_length\n )[0].expect(f\"Failed to get a note\") // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] where Note: NoteInterface<N> {\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\nunconstrained pub fn view_notes<Note, let N: u32>(\n storage_slot: Field,\n options: NoteViewerOptions<Note, N>\n) -> BoundedVec<Note, MAX_NOTES_PER_PAGE> where Note: NoteInterface<N> {\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTES_PER_PAGE];\n let placeholder_fields = [0; VIEW_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let notes_array = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n );\n\n let mut notes = BoundedVec::new();\n for i in 0..notes_array.len() {\n if notes_array[i].is_some() {\n notes.push(notes_array[i].unwrap_unchecked());\n }\n }\n\n notes\n}\n\nunconstrained fn flatten_options<let N: u32>(\n selects: BoundedVec<Option<Select>, N>,\n sorts: BoundedVec<Option<Sort>, N>\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects] = select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects] = select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects] = select.unwrap_unchecked().property_selector.length;\n select_values[num_selects] = select.unwrap_unchecked().value;\n select_comparators[num_selects] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order\n )\n}\n"},"131":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/utils.nr","source":"use crate::{\n context::PrivateContext,\n note::{note_header::NoteHeader, note_interface::{NullifiableNote, NoteInterface}}\n};\n\nuse dep::protocol_types::{\n hash::{\n compute_unique_note_hash, compute_siloed_note_hash as compute_siloed_note_hash,\n compute_siloed_nullifier as compute_siloed_nullifier_from_preimage\n},\n utils::arr_copy_slice\n};\n\npub fn compute_siloed_nullifier<Note, let N: u32>(\n note_with_header: Note,\n context: &mut PrivateContext\n) -> Field where Note: NoteInterface<N> + NullifiableNote {\n let header = note_with_header.get_header();\n let note_hash_for_nullify = compute_note_hash_for_nullify(note_with_header);\n let inner_nullifier = note_with_header.compute_nullifier(context, note_hash_for_nullify);\n\n compute_siloed_nullifier_from_preimage(header.contract_address, inner_nullifier)\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_read_request<Note, let N: u32>(note: Note) -> Field where Note: NoteInterface<N> + NullifiableNote {\n let note_hash = note.compute_note_hash();\n let nonce = note.get_header().nonce;\n let counter = note.get_header().note_hash_counter;\n\n if counter != 0 {\n note_hash\n } else {\n compute_unique_note_hash(nonce, note_hash)\n }\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_nullify_internal<Note, let N: u32>(\n note: Note,\n note_hash_for_read_request: Field\n) -> Field where Note: NoteInterface<N> + NullifiableNote {\n let header = note.get_header();\n\n if header.note_hash_counter != 0 {\n if header.nonce == 0 {\n // Case 1: Transient note\n note_hash_for_read_request\n } else {\n // Case 2: Non-revertible note, nullified by a revertible nullifier\n let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash_for_read_request);\n compute_siloed_note_hash(header.contract_address, unique_note_hash)\n }\n } else {\n // Case 3: Note from a previous transaction\n // note_hash_for_read_request is already the unique_note_hash in this case\n compute_siloed_note_hash(header.contract_address, note_hash_for_read_request)\n }\n}\n\n// TODO(#7775): nuke this commented out code - kept it around as it contains comments which might be helpful when tackling #7775\n// pub fn compute_note_hash_for_nullify<Note, let N: u32, let M: u32>(note: Note) -> Field where Note: NoteInterface<N> {\n// let header = note.get_header();\n// // There are 3 cases for reading a note intended for consumption:\n// // 1. The note was inserted in this transaction, is revertible, or is not nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce == 0)\n// // 2. The note was inserted in this transaction, is non-revertible, and is nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce != 0)\n// // 3. The note was inserted in a previous transaction: (note_hash_counter == 0) & (nonce != 0)\n\n// let note_hash = note.compute_note_hiding_point().x;\n\n// if header.nonce == 0 {\n// // Case 1.\n// // If a note is transient, we just read the note_hash (kernel will hash it with nonce and silo by contract address).\n// note_hash\n// } else {\n// // Case 2: If a note is non-revertible, and is nullified by a revertible nullifier, we cannot squash them in the\n// // private reset circuit. Because if the tx reverts, we will have to keep the note hash and throw away the\n// // nullifier.\n// // And if the tx does not revert, both will be emitted. In which case, the nullifier must be created in the app\n// // from the siloed note hash.\n// // The kernel circuit will check that a nullifier with non-zero note_nonce is linked to a note hash, whose\n// // siloed note hash matches the note hash specified in the nullifier.\n\n// // Case 3: If a note is not from the current transaction, that means we are reading a settled note (from\n// // tree) created in a previous TX. So we need the siloed_note_hash which has already been hashed with\n// // nonce and then contract address. This hash will match the existing leaf in the note hash\n// // tree, so the kernel can just perform a membership check directly on this hash/leaf.\n// let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash);\n// compute_siloed_note_hash(header.contract_address, unique_note_hash)\n// // IMPORTANT NOTE ON REDUNDANT SILOING BY CONTRACT ADDRESS: The note hash computed above is\n// // \"siloed\" by contract address. When a note hash is computed solely for the purpose of\n// // nullification, it is not strictly necessary to silo the note hash before computing\n// // its nullifier. In other words, it is NOT NECESSARY for protocol security that a nullifier\n// // be computed from a siloed note hash. After all, persistable note hashes and nullifiers are\n// // siloed by the kernel circuit. That being said, the siloed note hash computed above CAN be\n// // used for nullifier computation, and this achieves the (arguably unnecessary) property that\n// // nullifiers are computed from a note hash's fully-computed note hash tree leaf.\n// }\n// }\n\npub fn compute_note_hash_for_nullify<Note, let N: u32>(note: Note) -> Field where Note: NoteInterface<N> + NullifiableNote {\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request)\n}\n\npub fn compute_note_hash_and_optionally_a_nullifier<T, let N: u32, let S: u32>(\n deserialize_content: fn([Field; N]) -> T,\n note_header: NoteHeader,\n compute_nullifier: bool,\n serialized_note: [Field; S]\n) -> [Field; 4] where T: NoteInterface<N> + NullifiableNote {\n let mut note = deserialize_content(arr_copy_slice(serialized_note, [0; N], 0));\n note.set_header(note_header);\n\n let note_hash = note.compute_note_hash();\n let unique_note_hash = compute_unique_note_hash(note_header.nonce, note_hash);\n let siloed_note_hash = compute_siloed_note_hash(note_header.contract_address, unique_note_hash);\n\n let inner_nullifier = if compute_nullifier {\n note.compute_nullifier_without_context()\n } else {\n 0\n };\n // docs:start:compute_note_hash_and_optionally_a_nullifier_returns\n [note_hash, unique_note_hash, siloed_note_hash, inner_nullifier]\n // docs:end:compute_note_hash_and_optionally_a_nullifier_returns\n}\n"},"132":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr","source":"use crate::context::{PrivateContext, PublicContext};\nuse crate::note::{\n note_header::NoteHeader, note_interface::{NoteInterface, NullifiableNote},\n utils::{compute_note_hash_for_read_request, compute_note_hash_for_nullify_internal},\n note_emission::NoteEmission\n};\nuse crate::oracle::notes::{notify_created_note, notify_nullified_note};\n\npub fn create_note<Note, let N: u32>(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note\n) -> NoteEmission<Note> where Note: NoteInterface<N> + NullifiableNote {\n let contract_address = (*context).this_address();\n let note_hash_counter = context.side_effect_counter;\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n let serialized_note = Note::serialize_content(*note);\n assert(\n notify_created_note(\n storage_slot,\n Note::get_note_type_id(),\n serialized_note,\n note_hash,\n note_hash_counter\n )\n == 0\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(*note)\n}\n\npub fn create_note_hash_from_public<Note, let N: u32>(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note\n) where Note: NoteInterface<N> + NullifiableNote {\n let contract_address = (*context).this_address();\n // Public note hashes are transient, but have no side effect counters, so we just need note_hash_counter != 0\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter: 1 };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n context.push_note_hash(note_hash);\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note<Note, let N: u32>(\n context: &mut PrivateContext,\n note: Note\n) where Note: NoteInterface<N> + NullifiableNote {\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n\n destroy_note_unsafe(context, note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe<Note, let N: u32>(\n context: &mut PrivateContext,\n note: Note,\n note_hash_for_read_request: Field\n) where Note: NoteInterface<N> + NullifiableNote {\n let note_hash_for_nullify = compute_note_hash_for_nullify_internal(note, note_hash_for_read_request);\n let nullifier = note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash_counter = note.get_header().note_hash_counter;\n let notification_note_hash = if (note_hash_counter == 0) {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifyng so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n let nullifier_counter = context.side_effect_counter;\n assert(notify_nullified_note(nullifier, notification_note_hash, nullifier_counter) == 0);\n\n context.push_nullifier_for_note_hash(nullifier, notification_note_hash)\n}\n\n"},"133":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/note_emission.nr","source":"/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\npub struct NoteEmission<Note> {\n note: Note\n}\n\nimpl<Note> NoteEmission<Note> {\n pub fn new(note: Note) -> Self {\n Self { note }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option<T>`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting\n * a change note in a token's transfer function only when there is \"change\" left).\n */\npub struct OuterNoteEmission<Note> {\n emission: Option<NoteEmission<Note>>,\n}\n\nimpl<Note> OuterNoteEmission<Note> {\n pub fn new(emission: Option<NoteEmission<Note>>) -> Self {\n Self { emission }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](NoteEmission<Note>) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n"},"141":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, GENERATOR_INDEX__FUNCTION_ARGS},\n point::Point, traits::Hash,\n hash::{sha256_to_field, poseidon2_hash_with_separator, poseidon2_hash_with_separator_slice}\n};\nuse crate::oracle::logs_traits::ToBytesForUnencryptedLog;\n\npub use dep::protocol_types::hash::{compute_siloed_nullifier, pedersen_hash};\n\npub fn pedersen_commitment<let N: u32>(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\n}\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash<T, let N: u32, let M: u32>(\n contract_address: AztecAddress,\n log: T\n) -> Field where T: ToBytesForUnencryptedLog<N, M> {\n let message_bytes: [u8; N] = log.to_be_bytes_arr();\n // can't use N - not in scope error\n let n = message_bytes.len();\n let mut hash_bytes = [0; M];\n // Address is converted to 32 bytes in ts\n let address_bytes = contract_address.to_be_bytes_arr();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let len_bytes: [u8; 4] = (n as Field).to_be_bytes();\n for i in 0..4 {\n hash_bytes[32 + i] = len_bytes[i];\n }\n for i in 0..n {\n hash_bytes[36 + i] = message_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes: [u8; 32] = sender.to_field().to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n let recipient_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let version_bytes: [u8; 32] = version.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let secret_hash_bytes: [u8; 32] = secret_hash.to_be_bytes();\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n poseidon2_hash_with_separator(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER\n )\n}\n\npub struct ArgsHasher {\n fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<let N: u32>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array<let N: u32>(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nunconstrained fn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..100 {\n input.add(i as Field);\n }\n let hash = input.hash();\n dep::std::println(hash);\n assert(hash == 0x19b0d74feb06ebde19edd85a28986c97063e84b3b351a8b666c7cac963ce655f);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd\n ];\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0095b2d17ab72f4b27a341f7ac63e49ec73935ae8c9181a0ac02023eb12f3284);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0083ab647dfb26e7ddee90a0f4209d049d4660cab42000c544b986aaa84c55a3);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"dummy\";\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x00629e88ebd6374f44aa6cfe07e251ecf07213ebc7267e8f6b578ae57ffd6c20);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"Hello this is a string\";\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0098637962f7d34fa202b7ffad8a07a238c5d1fd897b82a108f7f467fa73b841);\n}\n"},"149":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/initializer.nr","source":"use dep::protocol_types::{\n address::AztecAddress, hash::poseidon2_hash_with_separator, constants::GENERATOR_INDEX__CONSTRUCTOR,\n abis::function_selector::FunctionSelector\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext}, oracle::get_contract_instance::get_contract_instance,\n oracle::get_contract_instance::get_contract_instance_avm\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n context.push_nullifier_read_request(init_nullifier);\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let instance = get_contract_instance_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn compute_initialization_hash(init_selector: FunctionSelector, init_args_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR\n )\n}\n"},"150":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_nullifier_membership_witness.nr","source":"use dep::protocol_types::{\n abis::nullifier_leaf_preimage::{NullifierLeafPreimage, NULLIFIER_LEAF_PREIMAGE_LENGTH},\n constants::NULLIFIER_TREE_HEIGHT, utils::arr_copy_slice\n};\n\n// INDEX_LENGTH + NULLIFIER_LEAF_PREIMAGE_LENGTH + NULLIFIER_TREE_HEIGHT\nglobal NULLIFIER_MEMBERSHIP_WITNESS: u32 = 24;\n\npub struct NullifierMembershipWitness {\n index: Field,\n leaf_preimage: NullifierLeafPreimage,\n path: [Field; NULLIFIER_TREE_HEIGHT],\n}\n\nimpl NullifierMembershipWitness {\n pub fn deserialize(fields: [Field; NULLIFIER_MEMBERSHIP_WITNESS]) -> Self {\n let leaf_preimage_fields = arr_copy_slice(fields, [0; NULLIFIER_LEAF_PREIMAGE_LENGTH], 1);\n Self {\n index: fields[0],\n leaf_preimage: NullifierLeafPreimage::deserialize(leaf_preimage_fields),\n path: arr_copy_slice(\n fields,\n [0; NULLIFIER_TREE_HEIGHT],\n 1 + NULLIFIER_LEAF_PREIMAGE_LENGTH\n )\n }\n }\n}\n\n#[oracle(getLowNullifierMembershipWitness)]\nunconstrained fn get_low_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\nunconstrained pub fn get_low_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_low_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n\n#[oracle(getNullifierMembershipWitness)]\nunconstrained fn get_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\nunconstrained pub fn get_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n"},"151":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/logs.nr","source":"use dep::protocol_types::{address::AztecAddress, point::Point};\n\n// = 480 + 32 * N bytes\n#[oracle(emitEncryptedNoteLog)]\nunconstrained fn emit_encrypted_note_log_oracle<let M: u32>(_note_hash_counter: u32, _encrypted_note: [u8; M], _counter: u32) {}\n\nunconstrained pub fn emit_encrypted_note_log<let M: u32>(\n note_hash_counter: u32,\n encrypted_note: [u8; M],\n counter: u32\n) {\n emit_encrypted_note_log_oracle(note_hash_counter, encrypted_note, counter)\n}\n\n#[oracle(emitEncryptedEventLog)]\nunconstrained fn emit_encrypted_event_log_oracle<let M: u32>(_contract_address: AztecAddress, _randomness: Field, _encrypted_event: [u8; M], _counter: u32) {}\n\nunconstrained pub fn emit_encrypted_event_log<let M: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n encrypted_event: [u8; M],\n counter: u32\n) {\n emit_encrypted_event_log_oracle(contract_address, randomness, encrypted_event, counter)\n}\n\n// = 480 + 32 * N bytes\n#[oracle(computeEncryptedNoteLog)]\nunconstrained fn compute_encrypted_note_log_oracle<let N: u32, let M: u32>(\n _contract_address: AztecAddress,\n _storage_slot: Field,\n _note_type_id: Field,\n _ovsk_app: Field,\n _ovpk_m: Point,\n _ivpk_m: Point,\n _recipient: AztecAddress,\n _preimage: [Field; N]\n) -> [u8; M] {}\n\nunconstrained pub fn compute_encrypted_note_log<let N: u32, let M: u32>(\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n ovsk_app: Field,\n ovpk_m: Point,\n ivpk_m: Point,\n recipient: AztecAddress,\n preimage: [Field; N]\n) -> [u8; M] {\n compute_encrypted_note_log_oracle(\n contract_address,\n storage_slot,\n note_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n recipient,\n preimage\n )\n}\n\n// = 480 + 32 * N bytes\n#[oracle(computeEncryptedEventLog)]\nunconstrained fn compute_encrypted_event_log_oracle<let N: u32, let M: u32>(\n _contract_address: AztecAddress,\n _randomness: Field,\n _event_type_id: Field,\n _ovsk_app: Field,\n _ovpk_m: Point,\n _ivpk_m: Point,\n _recipient: AztecAddress,\n _preimage: [Field; N]\n) -> [u8; M] {}\n\nunconstrained pub fn compute_encrypted_event_log<let N: u32, let M: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n event_type_id: Field,\n ovsk_app: Field,\n ovpk_m: Point,\n ivpk_m: Point,\n recipient: AztecAddress,\n preimage: [Field; N]\n) -> [u8; M] {\n compute_encrypted_event_log_oracle(\n contract_address,\n randomness,\n event_type_id,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n recipient,\n preimage\n )\n}\n\n#[oracle(emitUnencryptedLog)]\nunconstrained fn emit_unencrypted_log_oracle_private<T>(_contract_address: AztecAddress, _message: T, _counter: u32) -> Field {}\n\nunconstrained pub fn emit_unencrypted_log_private_internal<T>(\n contract_address: AztecAddress,\n message: T,\n counter: u32\n) -> Field {\n emit_unencrypted_log_oracle_private(contract_address, message, counter)\n}\n\n#[oracle(emitContractClassUnencryptedLog)]\nunconstrained fn emit_contract_class_unencrypted_log_private<let N: u32>(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32\n) -> Field {}\n\nunconstrained pub fn emit_contract_class_unencrypted_log_private_internal<let N: u32>(contract_address: AztecAddress, message: [Field; N], counter: u32) -> Field {\n emit_contract_class_unencrypted_log_private(contract_address, message, counter)\n}\n"},"153":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/returns.nr","source":"#[oracle(packReturns)]\nunconstrained fn pack_returns_oracle(_returns: [Field]) -> Field {}\n\nunconstrained pub fn pack_returns(returns: [Field]) {\n let _unused = pack_returns_oracle(returns);\n}\n\n#[oracle(unpackReturns)]\nunconstrained fn unpack_returns_oracle<let N: u32>(_return_hash: Field) -> [Field; N] {}\n\nunconstrained pub fn unpack_returns<let N: u32>(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n"},"155":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr","source":"use dep::protocol_types::abis::validation_requests::{KeyValidationRequest, key_validation_request::KEY_VALIDATION_REQUEST_LENGTH};\n\n#[oracle(getKeyValidationRequest)]\nunconstrained fn get_key_validation_request_oracle(\n _pk_m_hash: Field,\n _key_index: Field\n) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {}\n\nunconstrained fn get_key_validation_request_internal(\n npk_m_hash: Field,\n key_index: Field\n) -> KeyValidationRequest {\n let result = get_key_validation_request_oracle(npk_m_hash, key_index);\n KeyValidationRequest::deserialize(result)\n}\n\nunconstrained pub fn get_key_validation_request(\n pk_m_hash: Field,\n key_index: Field\n) -> KeyValidationRequest {\n get_key_validation_request_internal(pk_m_hash, key_index)\n}\n"},"159":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/unsafe_rand.nr","source":"#[oracle(getRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n\n// Called `unsafe_rand` because we do not constrain in circuit that we are dealing with an actual random value.\n// Instead we just trust our PXE.\nunconstrained pub fn unsafe_rand() -> Field {\n rand_oracle()\n}\n"},"161":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; 2] {}\n\nunconstrained pub fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n"},"162":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/keys.nr","source":"use crate::keys::{PublicKeys, public_keys::{NpkM, IvpkM, OvpkM, TpkM}};\nuse dep::protocol_types::{address::{AztecAddress, PartialAddress}, point::Point};\n\n#[oracle(getPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\nunconstrained pub fn get_public_keys_and_partial_address(address: AztecAddress) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle(address);\n\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x: result[3], y: result[4], is_infinite: result[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x: result[6], y: result[7], is_infinite: result[8] as bool } },\n tpk_m: TpkM { inner: Point { x: result[9], y: result[10], is_infinite: result[11] as bool } }\n };\n\n let partial_address = PartialAddress::from_field(result[12]);\n\n (keys, partial_address)\n}\n"},"164":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/notes.nr","source":"use crate::note::{note_header::NoteHeader, note_interface::NoteInterface};\n\nuse dep::protocol_types::{address::AztecAddress, utils::arr_copy_slice};\n\n#[oracle(notifyCreatedNote)]\nunconstrained fn notify_created_note_oracle<let N: u32>(\n _storage_slot: Field,\n _note_type_id: Field,\n _serialized_note: [Field; N],\n _note_hash: Field,\n _counter: u32\n) -> Field {}\n\nunconstrained pub fn notify_created_note<let N: u32>(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32\n) -> Field {\n notify_created_note_oracle(storage_slot, note_type_id, serialized_note, note_hash, counter)\n}\n\n#[oracle(notifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(_nullifier: Field, _note_hash: Field, _counter: u32) -> Field {}\n\nunconstrained pub fn notify_nullified_note(nullifier: Field, note_hash: Field, counter: u32) -> Field {\n notify_nullified_note_oracle(nullifier, note_hash, counter)\n}\n\n#[oracle(getNotes)]\nunconstrained fn get_notes_oracle<let N: u32, let S: u32>(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; N],\n _select_by_offsets: [u8; N],\n _select_by_lengths: [u8; N],\n _select_values: [Field; N],\n _select_comparators: [u8; N],\n _sort_by_indexes: [u8; N],\n _sort_by_offsets: [u8; N],\n _sort_by_lengths: [u8; N],\n _sort_order: [u8; N],\n _limit: u32,\n _offset: u32,\n _status: u8,\n _return_size: u32,\n _placeholder_fields: [Field; S]\n) -> [Field; S] {}\n\nunconstrained fn get_notes_oracle_wrapper<let N: u32, let S: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; N],\n select_by_offsets: [u8; N],\n select_by_lengths: [u8; N],\n select_values: [Field; N],\n select_comparators: [u8; N],\n sort_by_indexes: [u8; N],\n sort_by_offsets: [u8; N],\n sort_by_lengths: [u8; N],\n sort_order: [u8; N],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_fields: [Field; S]\n) -> [Field; S] {\n let return_size = placeholder_fields.len() as u32;\n get_notes_oracle(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n return_size,\n placeholder_fields\n )\n}\n\nunconstrained pub fn get_notes<Note, let N: u32, let M: u32, let S: u32, let NS: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_opt_notes: [Option<Note>; S], // TODO: Remove it and use `limit` to initialize the note array.\n placeholder_fields: [Field; NS], // TODO: Remove it and use `limit` to initialize the note array.\n _placeholder_note_length: [Field; N] // Turbofish hack? Compiler breaks calculating read_offset unless we add this parameter\n) -> [Option<Note>; S] where Note: NoteInterface<N> {\n let fields = get_notes_oracle_wrapper(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n placeholder_fields\n );\n let num_notes = fields[0] as u32;\n let contract_address = AztecAddress::from_field(fields[1]);\n for i in 0..placeholder_opt_notes.len() {\n if i < num_notes {\n // lengths named as per typescript.\n let return_header_length: u32 = 2; // num_notes & contract_address.\n let extra_preimage_length: u32 = 2; // nonce & note_hash_counter.\n let read_offset: u32 = return_header_length + i * (N + extra_preimage_length);\n let nonce = fields[read_offset];\n let note_hash_counter = fields[read_offset + 1] as u32;\n let header = NoteHeader { contract_address, nonce, storage_slot, note_hash_counter };\n let serialized_note = arr_copy_slice(fields, [0; N], read_offset + 2);\n let mut note = Note::deserialize_content(serialized_note);\n note.set_header(header);\n placeholder_opt_notes[i] = Option::some(note);\n };\n }\n placeholder_opt_notes\n}\n\n// Only ever use this in private!\n#[oracle(checkNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> Field {}\n\n// Only ever use this in private!\nunconstrained pub fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier) == 1\n}\n"},"165":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr","source":"use dep::protocol_types::{\n address::AztecAddress, contract_instance::ContractInstance, constants::CONTRACT_INSTANCE_LENGTH,\n utils::reader::Reader\n};\n\n#[oracle(getContractInstance)]\nunconstrained fn get_contract_instance_oracle(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {}\n\n// Returns a ContractInstance plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstance)]\nunconstrained fn get_contract_instance_oracle_avm(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {}\n\nunconstrained fn get_contract_instance_internal(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n get_contract_instance_oracle(address)\n}\n\nunconstrained pub fn get_contract_instance_internal_avm(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {\n get_contract_instance_oracle_avm(address)\n}\n\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n let instance = unsafe {\n ContractInstance::deserialize(get_contract_instance_internal(address))\n };\n // The to_address function combines all values in the instance object to produce an address, so by checking that we\n // get the expected address we validate the entire struct.\n assert_eq(instance.to_address(), address);\n\n instance\n}\n\npub fn get_contract_instance_avm(address: AztecAddress) -> Option<ContractInstance> {\n let mut reader = Reader::new(get_contract_instance_internal_avm(address));\n let found = reader.read();\n if found == 0 {\n Option::none()\n } else {\n Option::some(reader.read_struct(ContractInstance::deserialize))\n }\n}\n"},"166":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr","source":"use dep::protocol_types::{abis::{function_selector::FunctionSelector}, address::AztecAddress};\n\n#[oracle(enqueuePublicFunctionCall)]\nunconstrained fn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) {}\n\nunconstrained pub fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nunconstrained fn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) {}\n\nunconstrained pub fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n}\n\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n\nunconstrained pub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n"},"168":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/execution.nr","source":"use dep::protocol_types::address::AztecAddress;\n\n#[oracle(getContractAddress)]\nunconstrained fn get_contract_address_oracle() -> AztecAddress {}\n\n#[oracle(getBlockNumber)]\nunconstrained fn get_block_number_oracle() -> u32 {}\n\n#[oracle(getChainId)]\nunconstrained fn get_chain_id_oracle() -> Field {}\n\n#[oracle(getVersion)]\nunconstrained fn get_version_oracle() -> Field {}\n\nunconstrained pub fn get_contract_address() -> AztecAddress {\n get_contract_address_oracle()\n}\n\nunconstrained pub fn get_block_number() -> u32 {\n get_block_number_oracle()\n}\n\nunconstrained pub fn get_chain_id() -> Field {\n get_chain_id_oracle()\n}\n\nunconstrained pub fn get_version() -> Field {\n get_version_oracle()\n}\n"},"189":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr","source":"use dep::protocol_types::{constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER, hash::poseidon2_hash_with_separator};\n\nuse crate::context::{PrivateContext, UnconstrainedContext};\nuse crate::note::{\n lifecycle::create_note, note_getter::{get_note, view_notes},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n note_emission::NoteEmission\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\npub struct PrivateImmutable<Note, Context> {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\nimpl<T, Context> Storage<T> for PrivateImmutable<T, Context> {}\n\nimpl<Note, Context> PrivateImmutable<Note, Context> {\n // docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n // The following computation is leaky, in that it doesn't hide the storage slot that has been initialized, nor does it hide the contract address of this contract.\n // When this initialization nullifier is emitted, an observer could do a dictionary or rainbow attack to learn the preimage of this nullifier to deduce the storage slot and contract address.\n // For some applications, leaking the details that a particular state variable of a particular contract has been initialized will be unacceptable.\n // Under such circumstances, such application developers might wish to _not_ use this state variable type.\n // This is especially dangerous for initial assignment to elements of a `Map<AztecAddress, PrivateImmutable>` type (for example), because the storage slot often also identifies an actor.\n // e.g. the initial assignment to `my_map.at(msg.sender)` will leak: `msg.sender`, the fact that an element of `my_map` was assigned-to for the first time, and the contract_address.\n pub fn compute_initialization_nullifier(self) -> Field {\n poseidon2_hash_with_separator(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER\n )\n }\n}\n\nimpl<Note> PrivateImmutable<Note, &mut PrivateContext> {\n // docs:start:initialize\n pub fn initialize<let N: u32>(\n self,\n note: &mut Note\n ) -> NoteEmission<Note> where Note: NoteInterface<N> + NullifiableNote {\n // Nullify the storage slot.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_nullifier(nullifier);\n\n create_note(self.context, self.storage_slot, note)\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note<let N: u32>(self) -> Note where Note: NoteInterface<N> + NullifiableNote {\n let storage_slot = self.storage_slot;\n get_note(self.context, storage_slot).0\n }\n // docs:end:get_note\n}\n\nimpl<Note> PrivateImmutable<Note, UnconstrainedContext> {\n // docs:start:is_initialized\n unconstrained pub fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // view_note does not actually use the context, but it calls oracles that are only available in private\n // docs:start:view_note\n unconstrained pub fn view_note<let N: u32>(self) -> Note where Note: NoteInterface<N> + NullifiableNote {\n let mut options = NoteViewerOptions::new();\n view_notes(self.storage_slot, options.set_limit(1)).get(0)\n }\n // docs:end:view_note\n}\n"},"193":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/utils/point.nr","source":"use dep::protocol_types::point::Point;\n\n// I am storing the modulus divided by 2 plus 1 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field = 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a public key to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(pk: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!pk.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = pk.x.to_be_bytes();\n\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n if !BN254_FR_MODULUS_DIV_2.lt(pk.y) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\nmod test {\n use dep::protocol_types::point::Point;\n use crate::utils::point::point_to_bytes;\n\n #[test]\n unconstrained fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122, 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115\n ];\n\n assert_eq(expected_compressed_point_positive_sign, compressed_point);\n }\n\n #[test]\n unconstrained fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169, 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181\n ];\n\n assert_eq(expected_compressed_point_negative_sign, compressed_point);\n }\n}\n"},"211":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use crate::{traits::{Empty, Serialize, Deserialize}, point::Point};\npub use crate::constants::KEY_VALIDATION_REQUEST_LENGTH;\n\npub struct KeyValidationRequest {\n pk_m: Point,\n sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m)) & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest { pk_m: Point::empty(), sk_app: 0 }\n }\n}\n\nimpl Serialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [\n self.pk_m.x,\n self.pk_m.y,\n self.pk_m.is_infinite as Field,\n self.sk_app\n ]\n }\n}\n\nimpl Deserialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self { pk_m: Point { x: fields[0], y: fields[1], is_infinite: fields[2] as bool }, sk_app: fields[3] }\n }\n}\n"},"227":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier_leaf_preimage.nr","source":"global NULLIFIER_LEAF_PREIMAGE_LENGTH: u32 = 3;\n\nuse crate::{\n abis::{read_request::ScopedReadRequest, side_effect::Readable}, hash::compute_siloed_nullifier,\n merkle_tree::leaf_preimage::{LeafPreimage, IndexedTreeLeafPreimage}, traits::{Empty, Hash}\n};\n\npub struct NullifierLeafPreimage {\n nullifier : Field,\n next_nullifier :Field,\n next_index : u32,\n}\n\nimpl Empty for NullifierLeafPreimage {\n fn empty() -> Self {\n Self { nullifier: 0, next_nullifier: 0, next_index: 0 }\n }\n}\n\nimpl Hash for NullifierLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n crate::hash::poseidon2_hash(self.serialize())\n }\n }\n}\n\nimpl LeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl IndexedTreeLeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn get_next_key(self) -> Field {\n self.next_nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl Readable<ScopedReadRequest> for NullifierLeafPreimage {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n let siloed_value = compute_siloed_nullifier(read_request.contract_address, read_request.value());\n assert_eq(self.nullifier, siloed_value, \"Value of the nullifier leaf does not match read request\");\n }\n}\n\nimpl NullifierLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.nullifier == 0) & (self.next_nullifier == 0) & (self.next_index == 0)\n }\n\n pub fn serialize(self) -> [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH] {\n [self.nullifier, self.next_nullifier, self.next_index as Field]\n }\n\n pub fn deserialize(fields: [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH]) -> Self {\n Self { nullifier: fields[0], next_nullifier: fields[1], next_index: fields[2] as u32 }\n }\n}\n\nimpl Eq for NullifierLeafPreimage {\n fn eq(self, other: Self) -> bool {\n (self.nullifier == other.nullifier)\n & (self.next_nullifier == other.next_nullifier)\n & (self.next_index == other.next_index)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = NullifierLeafPreimage::empty();\n let serialized = item.serialize();\n let deserialized = NullifierLeafPreimage::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"24":{"path":"std/embedded_curve_ops.nr","source":"use crate::ops::arith::{Add, Sub, Neg};\nuse crate::cmp::Eq;\n\n/// A point on the embedded elliptic curve\n/// By definition, the base field of the embedded curve is the scalar field of the proof system curve, i.e the Noir Field.\n/// x and y denotes the Weierstrass coordinates of the point, if is_infinite is false.\npub struct EmbeddedCurvePoint {\n x: Field,\n y: Field,\n is_infinite: bool\n}\n\nimpl EmbeddedCurvePoint {\n /// Elliptic curve point doubling operation\n /// returns the doubled point of a point P, i.e P+P\n fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n /// Returns the null element of the curve; 'the point at infinity'\n fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n /// Adds two points P+Q, using the curve addition formula, and also handles point at infinity\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n /// Points subtraction operation, using addition and negation\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n /// Negates a point P, i.e returns -P, by negating the y coordinate.\n /// If the point is at infinity, then the result is also at infinity.\n fn neg(self) -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: self.x, y: -self.y, is_infinite: self.is_infinite }\n }\n}\n\nimpl Eq for EmbeddedCurvePoint {\n /// Checks whether two points are equal\n fn eq(self: Self, b: EmbeddedCurvePoint) -> bool {\n (self.is_infinite & b.is_infinite)\n | ((self.is_infinite == b.is_infinite) & (self.x == b.x) & (self.y == b.y))\n }\n}\n\n/// Scalar for the embedded curve represented as low and high limbs\n/// By definition, the scalar field of the embedded curve is base field of the proving system curve.\n/// It may not fit into a Field element, so it is represented with two Field elements; its low and high limbs.\npub struct EmbeddedCurveScalar {\n lo: Field,\n hi: Field,\n}\n\nimpl EmbeddedCurveScalar {\n pub fn new(lo: Field, hi: Field) -> Self {\n EmbeddedCurveScalar { lo, hi }\n }\n\n #[field(bn254)]\n fn from_field(scalar: Field) -> EmbeddedCurveScalar {\n let (a,b) = crate::field::bn254::decompose(scalar);\n EmbeddedCurveScalar { lo: a, hi: b }\n }\n\n //Bytes to scalar: take the first (after the specified offset) 16 bytes of the input as the lo value, and the next 16 bytes as the hi value\n #[field(bn254)]\n fn from_bytes(bytes: [u8; 64], offset: u32) -> EmbeddedCurveScalar {\n let mut v = 1;\n let mut lo = 0 as Field;\n let mut hi = 0 as Field;\n for i in 0..16 {\n lo = lo + (bytes[offset+31 - i] as Field) * v;\n hi = hi + (bytes[offset+15 - i] as Field) * v;\n v = v * 256;\n }\n let sig_s = crate::embedded_curve_ops::EmbeddedCurveScalar { lo, hi };\n sig_s\n }\n}\n\nimpl Eq for EmbeddedCurveScalar {\n fn eq(self, other: Self) -> bool {\n (other.hi == self.hi) & (other.lo == self.lo)\n }\n}\n\n// Computes a multi scalar multiplication over the embedded curve.\n// For bn254, We have Grumpkin and Baby JubJub.\n// For bls12-381, we have JubJub and Bandersnatch.\n//\n// The embedded curve being used is decided by the \n// underlying proof system.\n// docs:start:multi_scalar_mul\npub fn multi_scalar_mul<let N: u32>(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N]\n) -> EmbeddedCurvePoint\n// docs:end:multi_scalar_mul\n{\n let point_array = multi_scalar_mul_array_return(points, scalars);\n EmbeddedCurvePoint { x: point_array[0], y: point_array[1], is_infinite: point_array[2] as bool }\n}\n\n#[foreign(multi_scalar_mul)]\nfn multi_scalar_mul_array_return<let N: u32>(points: [EmbeddedCurvePoint; N], scalars: [EmbeddedCurveScalar; N]) -> [Field; 3] {}\n\n#[foreign(multi_scalar_mul)]\npub(crate) fn multi_scalar_mul_slice(points: [EmbeddedCurvePoint], scalars: [EmbeddedCurveScalar]) -> [Field; 3] {}\n\n// docs:start:fixed_base_scalar_mul\npub fn fixed_base_scalar_mul(scalar: EmbeddedCurveScalar) -> EmbeddedCurvePoint\n// docs:end:fixed_base_scalar_mul\n{\n let g1 = EmbeddedCurvePoint { x: 1, y: 17631683881184975370165255887551781615748388533673675138860, is_infinite: false };\n multi_scalar_mul([g1], [scalar])\n}\n\n/// This function only assumes that the points are on the curve\n/// It handles corner cases around the infinity point causing some overhead compared to embedded_curve_add_not_nul and embedded_curve_add_unsafe\n// This is a hack because returning an `EmbeddedCurvePoint` from a foreign function in brillig returns a [BrilligVariable::SingleAddr; 2] rather than BrilligVariable::BrilligArray\n// as is defined in the brillig bytecode format. This is a workaround which allows us to fix this without modifying the serialization format.\n// docs:start:embedded_curve_add\npub fn embedded_curve_add(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n // docs:end:embedded_curve_add\n let x_coordinates_match = point1.x == point2.x;\n let y_coordinates_match = point1.y == point2.y;\n let double_predicate = (x_coordinates_match & y_coordinates_match);\n let infinity_predicate = (x_coordinates_match & !y_coordinates_match);\n let point1_1 = EmbeddedCurvePoint { x: point1.x + (x_coordinates_match as Field), y: point1.y, is_infinite: x_coordinates_match };\n // point1_1 is guaranteed to have a different abscissa than point2\n let mut result = embedded_curve_add_unsafe(point1_1, point2);\n result.is_infinite = x_coordinates_match;\n\n // dbl if x_match, y_match\n let double = embedded_curve_add_unsafe(point1, point1);\n result = if double_predicate { double } else { result };\n\n // infinity if x_match, !y_match\n if point1.is_infinite {\n result= point2;\n }\n if point2.is_infinite {\n result = point1;\n }\n let mut result_is_infinity = infinity_predicate & (!point1.is_infinite & !point2.is_infinite);\n result.is_infinite = result_is_infinity | (point1.is_infinite & point2.is_infinite);\n result\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(_point1: EmbeddedCurvePoint, _point2: EmbeddedCurvePoint) -> [Field; 3] {}\n\n/// This function assumes that:\n/// The points are on the curve, and\n/// The points don't share an x-coordinate, and\n/// Neither point is the infinity point.\n/// If it is used with correct input, the function ensures the correct non-zero result is returned.\n/// Except for points on the curve, the other assumptions are checked by the function. It will cause assertion failure if they are not respected.\npub fn embedded_curve_add_not_nul(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n assert(point1.x != point2.x);\n assert(!point1.is_infinite);\n assert(!point2.is_infinite);\n embedded_curve_add_unsafe(point1, point2)\n}\n\n/// Unsafe ec addition\n/// If the inputs are the same, it will perform a doubling, but only if point1 and point2 are the same variable.\n/// If they have the same value but are different variables, the result will be incorrect because in this case\n/// it assumes (but does not check) that the points' x-coordinates are not equal.\n/// It also assumes neither point is the infinity point.\npub fn embedded_curve_add_unsafe(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n let point_array = embedded_curve_add_array_return(point1, point2);\n let x = point_array[0];\n let y = point_array[1];\n\n EmbeddedCurvePoint { x, y, is_infinite: false }\n}\n"},"25":{"path":"std/field/bn254.nr","source":"use crate::runtime::is_unconstrained;\n\n// The low and high decomposition of the field modulus\nglobal PLO: Field = 53438638232309528389504892708671455233;\nglobal PHI: Field = 64323764613183177041862057485226039389;\n\nglobal TWO_POW_128: Field = 0x100000000000000000000000000000000;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(x: Field) -> (Field, Field) {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n\n let mut low: Field = 0;\n let mut high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n low += (x_bytes[i] as Field) * offset;\n high += (x_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n\n (low, high)\n}\n\nunconstrained pub(crate) fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nfn compute_lt(x: Field, y: Field, num_bytes: u32) -> bool {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i];\n let y_byte = y_bytes[num_bytes - 1 - i];\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\nfn compute_lte(x: Field, y: Field, num_bytes: u32) -> bool {\n if x == y {\n true\n } else {\n compute_lt(x, y, num_bytes)\n }\n}\n\nunconstrained fn lt_32_hint(x: Field, y: Field) -> bool {\n compute_lt(x, y, 32)\n}\n\nunconstrained fn lte_16_hint(x: Field, y: Field) -> bool {\n compute_lte(x, y, 16)\n}\n\n// Assert that (alo > blo && ahi >= bhi) || (alo <= blo && ahi > bhi)\nfn assert_gt_limbs(a: (Field, Field), b: (Field, Field)) {\n let (alo, ahi) = a;\n let (blo, bhi) = b;\n unsafe {\n let borrow = lte_16_hint(alo, blo);\n\n let rlo = alo - blo - 1 + (borrow as Field) * TWO_POW_128;\n let rhi = ahi - bhi - (borrow as Field);\n\n rlo.assert_max_bit_size(128);\n rhi.assert_max_bit_size(128);\n }\n}\n\n/// Decompose a single field into two 16 byte fields.\npub fn decompose(x: Field) -> (Field, Field) {\n if is_unconstrained() {\n compute_decomposition(x)\n } else {\n unsafe {\n // Take hints of the decomposition\n let (xlo, xhi) = decompose_hint(x);\n\n // Range check the limbs\n xlo.assert_max_bit_size(128);\n xhi.assert_max_bit_size(128);\n\n // Check that the decomposition is correct\n assert_eq(x, xlo + TWO_POW_128 * xhi);\n\n // Assert that the decomposition of P is greater than the decomposition of x\n assert_gt_limbs((PLO, PHI), (xlo, xhi));\n (xlo, xhi)\n }\n }\n}\n\npub fn assert_gt(a: Field, b: Field) {\n if is_unconstrained() {\n assert(compute_lt(b, a, 32));\n } else {\n // Decompose a and b\n let a_limbs = decompose(a);\n let b_limbs = decompose(b);\n\n // Assert that a_limbs is greater than b_limbs\n assert_gt_limbs(a_limbs, b_limbs)\n }\n}\n\npub fn assert_lt(a: Field, b: Field) {\n assert_gt(b, a);\n}\n\npub fn gt(a: Field, b: Field) -> bool {\n if is_unconstrained() {\n compute_lt(b, a, 32)\n } else if a == b {\n false\n } else {\n // Take a hint of the comparison and verify it\n unsafe {\n if lt_32_hint(a, b) {\n assert_gt(b, a);\n false\n } else {\n assert_gt(a, b);\n true\n }\n }\n }\n}\n\npub fn lt(a: Field, b: Field) -> bool {\n gt(b, a)\n}\n\nmod tests {\n // TODO: Allow imports from \"super\"\n use crate::field::bn254::{decompose, compute_lt, assert_gt, gt, TWO_POW_128, compute_lte, PLO, PHI};\n\n #[test]\n fn check_decompose() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_decompose_unconstrained() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n fn check_compute_lt() {\n assert(compute_lt(0, 1, 16));\n assert(compute_lt(0, 0x100, 16));\n assert(compute_lt(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lt(0, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_compute_lte() {\n assert(compute_lte(0, 1, 16));\n assert(compute_lte(0, 0x100, 16));\n assert(compute_lte(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lte(0, TWO_POW_128, 16));\n\n assert(compute_lte(0, 0, 16));\n assert(compute_lte(0x100, 0x100, 16));\n assert(compute_lte(TWO_POW_128 - 1, TWO_POW_128 - 1, 16));\n assert(compute_lte(TWO_POW_128, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_assert_gt() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n unconstrained fn check_assert_gt_unconstrained() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n fn check_gt() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n unconstrained fn check_gt_unconstrained() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n fn check_plo_phi() {\n assert_eq(PLO + PHI * TWO_POW_128, 0);\n let p_bytes = crate::field::modulus_le_bytes();\n let mut p_low: Field = 0;\n let mut p_high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n p_low += (p_bytes[i] as Field) * offset;\n p_high += (p_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n assert_eq(p_low, PLO);\n assert_eq(p_high, PHI);\n }\n}\n"},"26":{"path":"std/field/mod.nr","source":"mod bn254;\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size(self, bit_size: u32) {\n // docs:end:assert_max_bit_size\n crate::assert_constant(bit_size);\n assert(bit_size < modulus_num_bits() as u32);\n self.__assert_max_bit_size(bit_size);\n }\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_le_bits)]\n // docs:start:to_le_bits\n pub fn to_le_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_le_bits\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_be_bits)]\n // docs:start:to_be_bits\n pub fn to_be_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_be_bits\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8]` slice of length `byte_size`.\n /// This slice will be zero padded should not all bytes be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{8*byte_size}` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `byte_size` equal to or greater than the number of bytes necessary to represent the `Field` modulus\n /// (e.g. 32 for the BN254 field) allow for multiple byte decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n // docs:start:to_le_bytes\n pub fn to_le_bytes<let N: u32>(self: Self) -> [u8; N] {\n self.to_le_radix(256)\n }\n // docs:end:to_le_bytes\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8]` slice of length `byte_size`.\n /// This slice will be zero padded should not all bytes be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{8*byte_size}` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `byte_size` equal to or greater than the number of bytes necessary to represent the `Field` modulus\n /// (e.g. 32 for the BN254 field) allow for multiple byte decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n // docs:start:to_be_bytes\n pub fn to_be_bytes<let N: u32>(self: Self) -> [u8; N] {\n self.to_be_radix(256)\n }\n // docs:end:to_be_bytes\n\n // docs:start:to_le_radix\n pub fn to_le_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n crate::assert_constant(radix);\n self.__to_le_radix(radix)\n }\n // docs:end:to_le_radix\n\n // docs:start:to_be_radix\n pub fn to_be_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n crate::assert_constant(radix);\n self.__to_be_radix(radix)\n }\n // docs:end:to_be_radix\n\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b: [u1; 32] = exponent.to_le_bits();\n\n for i in 1..33 {\n r *= r;\n r = (b[32-i] as Field) * (r * self) + (1 - b[32-i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x `elem` {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n}\n\n#[builtin(modulus_num_bits)]\npub comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\nmod tests {\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_bytes();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_bytes();\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_radix(256);\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_radix(256);\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_radix_example\n}\n"},"273":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr","source":"use crate::utils::field::field_from_bytes;\nuse crate::meta::{derive_deserialize, derive_serialize};\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic\n// if a value can actually be zero. In a future refactor, we can\n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\npub trait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field {\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for u1 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u8 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u32 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u64 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for U128 {\n fn empty() -> Self {\n U128::from_integer(0)\n }\n}\n\npub fn is_empty<T>(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array<T, let N: u32>(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\npub trait Hash {\n fn hash(self) -> Field;\n}\n\npub trait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u1 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u8 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u32 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u64 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl<let N: u32> ToField for str<N> {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\npub trait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool {\n fn from_field(value: Field) -> Self {\n value as bool\n }\n}\nimpl FromField for u1 {\n fn from_field(value: Field) -> Self {\n value as u1\n }\n}\nimpl FromField for u8 {\n fn from_field(value: Field) -> Self {\n value as u8\n }\n}\nimpl FromField for u32 {\n fn from_field(value: Field) -> Self {\n value as u32\n }\n}\nimpl FromField for u64 {\n fn from_field(value: Field) -> Self {\n value as u64\n }\n}\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\n#[derive_via(derive_serialize)]\npub trait Serialize<let N: u32> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl<let N: u32> Serialize<N> for [Field; N] {\n fn serialize(self) -> [Field; N] {\n self\n }\n}\n\nimpl<let N: u32> Serialize<N> for str<N> {\n fn serialize(self) -> [Field; N] {\n let bytes = self.as_bytes();\n let mut fields = [0; N];\n for i in 0..bytes.len() {\n fields[i] = bytes[i] as Field;\n }\n fields\n }\n}\n\n// docs:start:deserialize\n#[derive_via(derive_deserialize)]\npub trait Deserialize<let N: u32> {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl<let N: u32> Deserialize<N> for [Field; N] {\n fn deserialize(fields: [Field; N]) -> Self {\n fields\n }\n}\n"},"274":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr","source":"// Utility function to console.log data in the acir simulator\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n\n#[oracle(debugLog)]\nunconstrained fn debug_log_oracle<let M: u32>(_msg: str<M>, args: [Field]) {}\n\n/// NOTE: call this with a str<N> msg of form\n/// \"some string with {0} and {1} ... {N}\"\n/// and an array of N field which will be formatted\n/// into the string in the simulator.\n/// Example:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\nunconstrained pub fn debug_log_format<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n/// NOTE: call this with a str<N> msg of length > 1\n/// Example:\n/// `debug_log(\"blah blah this is a debug string\");`\nunconstrained pub fn debug_log<let N: u32>(msg: str<N>) {\n debug_log_format(msg, []);\n}\n"},"278":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr","source":"use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector, log_hash::{LogHash, ScopedLogHash, ScopedEncryptedLogHash},\n note_hash::ScopedNoteHash, nullifier::ScopedNullifier\n},\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n MAX_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX\n},\n merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n recursion::verification_key::VerificationKey, traits::{is_empty, ToField},\n utils::field::field_from_bytes_32_trunc\n};\nuse super::utils::field::field_from_bytes;\n\npub fn sha256_to_field<let N: u32>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = std::hash::sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\nfn compute_note_hash_nonce(tx_hash: Field, note_index_in_tx: u32) -> Field {\n // Hashing tx hash with note index in tx is guaranteed to be unique\n poseidon2_hash_with_separator(\n [\n tx_hash,\n note_index_in_tx as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n let inputs = [nonce, note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, unique_note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n app.to_field(),\n unique_note_hash\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash, tx_hash: Field, note_index_in_tx: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(tx_hash, note_index_in_tx);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n app.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn silo_encrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n // We assume contract address has already been masked\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n accumulate_sha256([log_hash.contract_address.to_field(), log_hash.log_hash.value])\n }\n}\n\npub fn mask_encrypted_log_hash(scoped_log: ScopedEncryptedLogHash) -> AztecAddress {\n if scoped_log.contract_address.is_zero() {\n AztecAddress::from_field(0)\n } else if (scoped_log.log_hash.randomness == 0) {\n scoped_log.contract_address\n } else {\n AztecAddress::from_field(\n poseidon2_hash_with_separator(\n [scoped_log.contract_address.to_field(), scoped_log.log_hash.randomness],\n 0\n )\n )\n }\n}\n\nfn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs = [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes: [u8; 32] = inputs[i].to_be_bytes();\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\npub fn silo_l2_to_l1_message(msg: ScopedL2ToL1Message, rollup_version_id: Field, chain_id: Field) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually\n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field\n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes: [u8; 32] = input[offset].to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\n// NB: this assumes MAX_ENCRYPTED_LOGS_PER_TX == MAX_UNENCRYPTED_LOGS_PER_TX\n// to avoid doubling code, since we can't define the byte len to be 32*N directly.\npub fn compute_tx_logs_hash(logs: [LogHash; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn compute_tx_note_logs_hash(logs: [LogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_NOTE_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn pedersen_hash<let N: u32>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<let N: u32>(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator<let N: u32, T>(\n inputs: [Field; N],\n separator: T\n) -> Field where T: ToField {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of N + 1\n let in_len = N + 1;\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\npub fn poseidon2_hash_with_separator_slice<T>(inputs: [Field], separator: T) -> Field where T: ToField {\n let in_len = inputs.len() + 1;\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\n#[no_predicates]\npub fn poseidon2_hash_bytes<let N: u32>(inputs: [u8; N]) -> Field {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of Math.ceil(N/31)\n let mut in_len = N / 31;\n let mut has_padding = false;\n if N % 31 != 0 {\n in_len += 1;\n has_padding = true;\n }\n\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n sponge.absorb(field_from_bytes(current_field, false));\n current_field = [0; 31];\n }\n }\n if has_padding {\n sponge.absorb(field_from_bytes(current_field, false));\n }\n\n sponge.squeeze()\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = std::hash::sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), EthAddress::from_field(3), 5, 2, 4);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n ScopedL2ToL1Message {\n message: L2ToL1Message { recipient: EthAddress::from_field(1), content: 2, counter: 0 },\n contract_address: AztecAddress::from_field(3)\n },\n version,\n chainId\n );\n\n // The following value was generated by `l2_to_l1_message.test.ts`\n let hash_from_typescript = 0x00c6155d69febb9d5039b374dd4f77bf57b7c881709aa524a18acaa0bd57476a;\n\n assert_eq(hash, hash_from_typescript);\n}\n"},"284":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/point.nr","source":"pub use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{traits::{Deserialize, Empty, Hash, Serialize}, hash::poseidon2_hash};\n\nglobal POINT_LENGTH: u32 = 3;\n\nimpl Serialize<POINT_LENGTH> for Point {\n fn serialize(self: Self) -> [Field; POINT_LENGTH] {\n [self.x, self.y, self.is_infinite as Field]\n }\n}\n\nimpl Hash for Point {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl Empty for Point {\n /// Note: Does not return a valid point on curve - instead represents an empty/\"unpopulated\" point struct (e.g.\n /// empty/unpopulated value in an array of points).\n fn empty() -> Self {\n Point { x: 0, y: 0, is_infinite: false }\n }\n}\n\nimpl Deserialize<POINT_LENGTH> for Point {\n fn deserialize(serialized: [Field; POINT_LENGTH]) -> Point {\n Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool }\n }\n}\n"},"285":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr","source":"use crate::{\n address::{aztec_address::AztecAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n contract_class_id::ContractClassId, constants::CONTRACT_INSTANCE_LENGTH,\n traits::{Deserialize, Hash, Serialize}\n};\n\npub struct ContractInstance {\n salt : Field,\n deployer: AztecAddress,\n contract_class_id : ContractClassId,\n initialization_hash : Field,\n public_keys_hash : PublicKeysHash,\n}\n\nimpl Eq for ContractInstance {\n fn eq(self, other: Self) -> bool {\n self.public_keys_hash.eq(other.public_keys_hash)\n & self.initialization_hash.eq(other.initialization_hash)\n & self.contract_class_id.eq(other.contract_class_id)\n & self.salt.eq(other.salt)\n }\n}\n\nimpl Serialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn serialize(self) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n [\n self.salt,\n self.deployer.to_field(),\n self.contract_class_id.to_field(),\n self.initialization_hash,\n self.public_keys_hash.to_field()\n ]\n }\n}\n\nimpl Deserialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn deserialize(serialized: [Field; CONTRACT_INSTANCE_LENGTH]) -> Self {\n Self {\n salt: serialized[0],\n deployer: AztecAddress::from_field(serialized[1]),\n contract_class_id: ContractClassId::from_field(serialized[2]),\n initialization_hash: serialized[3],\n public_keys_hash: PublicKeysHash::from_field(serialized[4])\n }\n }\n}\n\nimpl Hash for ContractInstance {\n fn hash(self) -> Field {\n self.to_address().to_field()\n }\n}\n\nimpl ContractInstance {\n fn to_address(self) -> AztecAddress {\n AztecAddress::compute(\n self.public_keys_hash,\n PartialAddress::compute(\n self.contract_class_id,\n self.salt,\n self.initialization_hash,\n self.deployer\n )\n )\n }\n}\n"},"29":{"path":"std/hash/mod.nr","source":"mod poseidon;\nmod mimc;\nmod poseidon2;\nmod keccak;\nmod sha256;\nmod sha512;\n\nuse crate::default::Default;\nuse crate::uint128::U128;\nuse crate::collections::vec::Vec;\nuse crate::embedded_curve_ops::{EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_slice};\nuse crate::meta::derive_via;\n\n// Kept for backwards compatibility\npub use sha256::{digest, sha256, sha256_compression, sha256_var};\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment<let N: u32>(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\npub fn pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {\n __pedersen_hash_with_separator(input, separator)\n}\n\nfn pedersen_commitment_with_separator<let N: u32>(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let value = __pedersen_commitment_with_separator(input, separator);\n if (value[0] == 0) & (value[1] == 0) {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n } else {\n EmbeddedCurvePoint { x: value[0], y: value[1], is_infinite: false }\n }\n}\n\n#[no_predicates]\nfn pedersen_commitment_with_separator_noir<let N: u32>(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n#[no_predicates]\nfn pedersen_hash_with_separator_noir<let N: u32>(input: [Field; N], separator: u32) -> Field {\n let mut scalars: Vec<EmbeddedCurveScalar> = Vec::from_slice([EmbeddedCurveScalar { lo: 0, hi: 0 }; N].as_slice()); //Vec::new();\n\n for i in 0..N {\n scalars.set(i, from_field_unsafe(input[i]));\n }\n scalars.push(EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field });\n let domain_generators :[EmbeddedCurvePoint; N]= derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n let mut vec_generators = Vec::new();\n for i in 0..N {\n vec_generators.push(domain_generators[i]);\n }\n let length_generator : [EmbeddedCurvePoint; 1] = derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n vec_generators.push(length_generator[0]);\n multi_scalar_mul_slice(vec_generators.slice, scalars.slice)[0]\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash<let N: u32>(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n __pedersen_hash_with_separator(input, 0)\n}\n\n#[foreign(pedersen_hash)]\nfn __pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {}\n\n#[foreign(pedersen_commitment)]\nfn __pedersen_commitment_with_separator<let N: u32>(input: [Field; N], separator: u32) -> [Field; 2] {}\n\n#[field(bn254)]\nfn derive_generators<let N: u32, let M: u32>(domain_separator_bytes: [u8; M], starting_index: u32) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators<let N: u32, let M: u32>(\n domain_separator_bytes: [u8; M],\n starting_index: u32\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n // Same as from_field but:\n // does not assert the limbs are 128 bits\n // does not assert the decomposition does not overflow the EmbeddedCurveScalar\n fn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n let (xlo, xhi) = unsafe {\n crate::field::bn254::decompose_hint(scalar)\n };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n// docs:start:keccak256\npub fn keccak256<let N: u32>(input: [u8; N], message_size: u32) -> [u8; 32]\n// docs:end:keccak256\n{\n crate::hash::keccak::keccak256(input, message_size)\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation<let N: u32>(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: StructDefinition) -> Quoted {\n let name = quote { Hash };\n let signature = quote { fn hash<H>(_self: Self, _state: &mut H) where H: std::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(s, name, signature, for_each_field, quote {}, |fields| fields)\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher<H> where H: Hasher {\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault<H>;\n\nimpl<H> BuildHasher<H> for BuildHasherDefault<H>\nwhere\n H: Hasher + Default {\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl<H> Default for BuildHasherDefault<H>\nwhere\n H: Hasher + Default {\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash<H>(_self: Self, _state: &mut H) where H: Hasher {}\n}\n\nimpl Hash for U128 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self.lo as Field);\n H::write(state, self.hi as Field);\n }\n}\n\nimpl<T, let N: u32> Hash for [T; N] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<T> Hash for [T] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<A, B> Hash for (A, B) where A: Hash, B: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl<A, B, C> Hash for (A, B, C) where A: Hash, B: Hash, C: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl<A, B, C, D> Hash for (A, B, C, D) where A: Hash, B: Hash, C: Hash, D: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl<A, B, C, D, E> Hash for (A, B, C, D, E) where A: Hash, B: Hash, C: Hash, D: Hash, E: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1), 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1), EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false\n }\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2), 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2), EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3), 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3), EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4), 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4), EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5), 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5), EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6), 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6), EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7), 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7), EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false\n }\n );\n}\n\n"},"3":{"path":"std/array/mod.nr","source":"use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl<T, let N: u32> [T; N] {\n /// Returns the length of this array.\n /// \n /// ```noir\n /// fn len(self) -> Field\n /// ```\n /// \n /// example\n /// \n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n /// \n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n /// \n /// Example:\n /// \n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> [U; N] {\n let first_elem = f(self[0]);\n let mut ret = [first_elem; N];\n\n for i in 1..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n /// \n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n /// \n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n /// \n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n /// \n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold<U, Env>(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce<Env>(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n}\n\nimpl<T, let N: u32> [T; N] where T: Ord + Eq {\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a: T, b: T| a <= b)\n }\n}\n\nimpl<T, let N: u32> [T; N] where T: Eq {\n /// Returns a new sorted array by sorting it with a custom comparison function. \n /// The original array remains untouched. \n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n /// \n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n /// \n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via<Env>(self, ordering: fn[Env](T, T) -> bool) -> Self {\n unsafe {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = quicksort::quicksort(self, ordering);\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]), \"Array has not been sorted correctly according to `ordering`.\"\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n }\n}\n\nimpl<let N: u32> [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str<N> {}\n}\n\nimpl<let N: u32> From<str<N>> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str<N>) -> Self {\n s.as_bytes()\n }\n}\n"},"301":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"pub struct Reader<let N: u32> {\n data: [Field; N],\n offset: u32,\n}\n\nimpl<let N: u32> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array<let K: u32>(&mut self, mut result: [Field; K]) -> [Field; K] {\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n // TODO(#4394)\n pub fn read_struct<T, let K: u32>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array<T, let K: u32, let C: u32>(&mut self, deserialise: fn([Field; K]) -> T, mut result: [T; C]) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n"},"323":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/mod.nr","source":"// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate { lhs } else { rhs }\n}\n\npub fn arr_copy_slice<T, let N: u32, let M: u32>(src: [T; N], mut dst: [T; M], offset: u32) -> [T; M] {\n let iterator_len = if N > M { M } else { N };\n for i in 0..iterator_len {\n dst[i] = src[i + offset];\n }\n dst\n}\n"},"337":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n crate::address::{partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n hash::poseidon2_hash_with_separator, traits::{Empty, FromField, ToField, Serialize, Deserialize},\n utils\n};\n\n// Aztec address\npub struct AztecAddress {\n inner : Field\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other: Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self { inner: 0 }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n poseidon2_hash_with_separator(\n [pub_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1\n )\n )\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys_hash() {\n let pub_keys_hash = PublicKeysHash::from_field(1);\n let partial_address = PartialAddress::from_field(2);\n\n let address = AztecAddress::compute(pub_keys_hash, partial_address);\n let expected_computed_address_from_partial_and_pubkey = 0x23ce9be3fa3c846b0f9245cc796902e731d04f086e8a42473bb29e405fc98075;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n"},"339":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr","source":"use crate::{\n address::{salted_initialization_hash::SaltedInitializationHash, aztec_address::AztecAddress},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator, traits::{ToField, Serialize, Deserialize}\n};\n\nglobal PARTIAL_ADDRESS_LENGTH: u32 = 1;\n\n// Partial address\npub struct PartialAddress {\n inner : Field\n}\n\nimpl ToField for PartialAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl Serialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn serialize(self: Self) -> [Field; PARTIAL_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn deserialize(fields: [Field; PARTIAL_ADDRESS_LENGTH]) -> Self {\n PartialAddress { inner: fields[0] }\n }\n}\n\nimpl PartialAddress {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(\n contract_class_id: ContractClassId,\n salt: Field,\n initialization_hash: Field,\n deployer: AztecAddress\n ) -> Self {\n PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n SaltedInitializationHash::compute(salt, initialization_hash, deployer)\n )\n }\n\n pub fn compute_from_salted_initialization_hash(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash\n ) -> Self {\n PartialAddress::from_field(\n poseidon2_hash_with_separator(\n [\n contract_class_id.to_field(),\n salted_initialization_hash.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\n )\n }\n\n pub fn to_field(self) -> Field {\n self.inner\n }\n\n pub fn is_zero(self) -> bool {\n self.to_field() == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"34":{"path":"std/hash/poseidon2.nr","source":"use crate::hash::Hasher;\nuse crate::default::Default;\n\ncomptime global RATE: u32 = 3;\n\npub struct Poseidon2 {\n cache: [Field;3],\n state: [Field;4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n #[no_predicates]\n pub fn hash<let N: u32>(input: [Field; N], message_size: u32) -> Field {\n if message_size == N {\n Poseidon2::hash_internal(input, N, false)\n } else {\n Poseidon2::hash_internal(input, message_size, true)\n }\n }\n\n fn new(iv: Field) -> Poseidon2 {\n let mut result = Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n }\n\n fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal<let N: u32>(input: [Field; N], in_len: u32, is_variable_length: bool) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\npub struct Poseidon2Hasher{\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv : Field = (self._state.len() as Field) * 18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field) {\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher { _state: &[] }\n }\n}\n"},"340":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr","source":"use crate::{\n address::{aztec_address::AztecAddress}, constants::GENERATOR_INDEX__PARTIAL_ADDRESS,\n hash::poseidon2_hash_with_separator, traits::ToField\n};\n\n// Salted initialization hash. Used in the computation of a partial address.\npub struct SaltedInitializationHash {\n inner: Field\n}\n\nimpl ToField for SaltedInitializationHash {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl SaltedInitializationHash {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(salt: Field, initialization_hash: Field, deployer: AztecAddress) -> Self {\n SaltedInitializationHash::from_field(\n poseidon2_hash_with_separator(\n [\n salt,\n initialization_hash,\n deployer.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\n )\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"35":{"path":"std/hash/sha256.nr","source":"use crate::runtime::is_unconstrained;\n\n// Implementation of SHA-256 mapping a byte array of variable length to\n// 32 bytes.\n\n// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:sha256\n{\n crate::sha256::digest(input)\n}\n\n#[foreign(sha256_compression)]\npub fn sha256_compression(_input: [u32; 16], _state: [u32; 8]) -> [u32; 8] {}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest<let N: u32>(msg: [u8; N]) -> [u8; 32] {\n sha256_var(msg, N as u64)\n}\n\n// Convert 64-byte array to array of 16 u32s\nfn msg_u8_to_u32(msg: [u8; 64]) -> [u32; 16] {\n let mut msg32: [u32; 16] = [0; 16];\n\n for i in 0..16 {\n let mut msg_field: Field = 0;\n for j in 0..4 {\n msg_field = msg_field * 256 + msg[64 - 4*(i + 1) + j] as Field;\n }\n msg32[15 - i] = msg_field as u32;\n }\n\n msg32\n}\n\nunconstrained fn build_msg_block_iter<let N: u32>(msg: [u8; N], message_size: u64, msg_start: u32) -> ([u8; 64], u64) {\n let mut msg_block: [u8; BLOCK_SIZE] = [0; BLOCK_SIZE];\n let mut msg_byte_ptr: u64 = 0; // Message byte pointer\n let mut msg_end = msg_start + BLOCK_SIZE;\n if msg_end > N {\n msg_end = N;\n }\n for k in msg_start..msg_end {\n if k as u64 < message_size {\n msg_block[msg_byte_ptr] = msg[k];\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n (msg_block, msg_byte_ptr)\n}\n\n// Verify the block we are compressing was appropriately constructed\nfn verify_msg_block<let N: u32>(\n msg: [u8; N],\n message_size: u64,\n msg_block: [u8; 64],\n msg_start: u32\n) -> u64 {\n let mut msg_byte_ptr: u64 = 0; // Message byte pointer\n let mut msg_end = msg_start + BLOCK_SIZE;\n let mut extra_bytes = 0;\n if msg_end > N {\n msg_end = N;\n extra_bytes = msg_end - N;\n }\n\n for k in msg_start..msg_end {\n if k as u64 < message_size {\n assert_eq(msg_block[msg_byte_ptr], msg[k]);\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n\n msg_byte_ptr\n}\n\nglobal BLOCK_SIZE = 64;\nglobal ZERO = 0;\n\n// Variable size SHA-256 hash\npub fn sha256_var<let N: u32>(msg: [u8; N], message_size: u64) -> [u8; 32] {\n let num_blocks = N / BLOCK_SIZE;\n let mut msg_block: [u8; BLOCK_SIZE] = [0; BLOCK_SIZE];\n let mut h: [u32; 8] = [1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225]; // Intermediate hash, starting with the canonical initial value\n let mut msg_byte_ptr = 0; // Pointer into msg_block\n\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let (new_msg_block, new_msg_byte_ptr) = unsafe {\n build_msg_block_iter(msg, message_size, msg_start)\n };\n if msg_start as u64 < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n // Verify the block we are compressing was appropriately constructed\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start as u64 < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n } else if msg_start as u64 < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n\n // If the block is filled, compress it.\n // An un-filled block is handled after this loop.\n if msg_byte_ptr == 64 {\n h = sha256_compression(msg_u8_to_u32(msg_block), h);\n }\n }\n\n let modulo = N % BLOCK_SIZE;\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n if modulo != 0 {\n let msg_start = BLOCK_SIZE * num_blocks;\n let (new_msg_block, new_msg_byte_ptr) = unsafe {\n build_msg_block_iter(msg, message_size, msg_start)\n };\n\n if msg_start as u64 < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start as u64 < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n } else if msg_start as u64 < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n if msg_byte_ptr == BLOCK_SIZE as u64 {\n msg_byte_ptr = 0;\n }\n\n // This variable is used to get around the compiler under-constrained check giving a warning.\n // We want to check against a constant zero, but if it does not come from the circuit inputs\n // or return values the compiler check will issue a warning.\n let zero = msg_block[0] - msg_block[0];\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n msg_block[msg_byte_ptr] = 1 << 7;\n let last_block = msg_block;\n msg_byte_ptr = msg_byte_ptr + 1;\n\n unsafe {\n let (new_msg_block, new_msg_byte_ptr) = pad_msg_block(msg_block, msg_byte_ptr);\n msg_block = new_msg_block;\n if crate::runtime::is_unconstrained() {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n if !crate::runtime::is_unconstrained() {\n for i in 0..64 {\n assert_eq(msg_block[i], last_block[i]);\n }\n\n // If i >= 57, there aren't enough bits in the current message block to accomplish this, so\n // the 1 and 0s fill up the current block, which we then compress accordingly.\n // Not enough bits (64) to store length. Fill up with zeros.\n for _i in 57..64 {\n if msg_byte_ptr <= 63 & msg_byte_ptr >= 57 {\n assert_eq(msg_block[msg_byte_ptr], zero);\n msg_byte_ptr += 1;\n }\n }\n }\n\n if msg_byte_ptr >= 57 {\n h = sha256_compression(msg_u8_to_u32(msg_block), h);\n\n msg_byte_ptr = 0;\n }\n\n msg_block = unsafe {\n attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size)\n };\n\n if !crate::runtime::is_unconstrained() {\n for i in 0..56 {\n let predicate = (i < msg_byte_ptr) as u8;\n let expected_byte = predicate * last_block[i];\n assert_eq(msg_block[i], expected_byte);\n }\n\n // We verify the message length was inserted correctly by reversing the byte decomposition.\n let len = 8 * message_size;\n let mut reconstructed_len: Field = 0;\n for i in 56..64 {\n reconstructed_len = 256 * reconstructed_len + msg_block[i] as Field;\n }\n assert_eq(reconstructed_len, len as Field);\n }\n\n hash_final_block(msg_block, h)\n}\n\nunconstrained fn pad_msg_block(mut msg_block: [u8; 64], mut msg_byte_ptr: u64) -> ([u8; 64], u64) {\n // If i >= 57, there aren't enough bits in the current message block to accomplish this, so\n // the 1 and 0s fill up the current block, which we then compress accordingly.\n if msg_byte_ptr >= 57 {\n // Not enough bits (64) to store length. Fill up with zeros.\n if msg_byte_ptr < 64 {\n for _ in 57..64 {\n if msg_byte_ptr <= 63 {\n msg_block[msg_byte_ptr] = 0;\n msg_byte_ptr += 1;\n }\n }\n }\n }\n (msg_block, msg_byte_ptr)\n}\n\nunconstrained fn attach_len_to_msg_block(mut msg_block: [u8; 64], mut msg_byte_ptr: u64, message_size: u64) -> [u8; 64] {\n let len = 8 * message_size;\n let len_bytes: [u8; 8] = (len as Field).to_be_bytes();\n for _i in 0..64 {\n // In any case, fill blocks up with zeros until the last 64 (i.e. until msg_byte_ptr = 56).\n if msg_byte_ptr < 56 {\n msg_block[msg_byte_ptr] = 0;\n msg_byte_ptr = msg_byte_ptr + 1;\n } else if msg_byte_ptr < 64 {\n for j in 0..8 {\n msg_block[msg_byte_ptr + j] = len_bytes[j];\n }\n msg_byte_ptr += 8;\n }\n }\n msg_block\n}\n\nfn hash_final_block(msg_block: [u8; 64], mut state: [u32; 8]) -> [u8; 32] {\n let mut out_h: [u8; 32] = [0; 32]; // Digest as sequence of bytes\n\n // Hash final padded block\n state = sha256_compression(msg_u8_to_u32(msg_block), state);\n\n // Return final hash as byte array\n for j in 0..8 {\n let h_bytes: [u8; 4] = (state[7 - j] as Field).to_le_bytes();\n for k in 0..4 {\n out_h[31 - 4*j - k] = h_bytes[k];\n }\n }\n\n out_h\n}\n"},"439":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/main.nr","source":"mod public_key_note;\n\n// Account contract that uses Schnorr signatures for authentication.\n// The signing key is stored in an immutable private note and should be different from the encryption/nullifying key.\nuse dep::aztec::macros::aztec;\n\n#[aztec]\ncontract SchnorrAccount {\n use dep::std;\n\n use dep::aztec::prelude::{AztecAddress, PrivateContext, PrivateImmutable};\n use dep::aztec::encrypted_logs::encrypted_note_emission::encode_and_encrypt_note_with_keys;\n use dep::authwit::{\n entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions,\n auth_witness::get_auth_witness, auth::{compute_authwit_nullifier, compute_authwit_message_hash}\n };\n use dep::aztec::{hash::compute_siloed_nullifier, keys::getters::get_public_keys};\n use dep::aztec::oracle::get_nullifier_membership_witness::get_low_nullifier_membership_witness;\n use dep::aztec::macros::{storage::storage, functions::{private, initializer, view, noinitcheck}};\n\n use crate::public_key_note::PublicKeyNote;\n\n #[storage]\n struct Storage<Context> {\n signing_public_key: PrivateImmutable<PublicKeyNote, Context>,\n }\n\n // Constructs the contract\n #[private]\n #[initializer]\n fn constructor(signing_pub_key_x: Field, signing_pub_key_y: Field) {\n let this = context.this_address();\n let this_keys = get_public_keys(this);\n // Not emitting outgoing for msg_sender here to not have to register keys for the contract through which we\n // deploy this (typically MultiCallEntrypoint). I think it's ok here as I feel the outgoing here is not that\n // important.\n\n let mut pub_key_note = PublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this_keys.npk_m.hash());\n storage.signing_public_key.initialize(&mut pub_key_note).emit(encode_and_encrypt_note_with_keys(&mut context, this_keys.ovpk_m, this_keys.ivpk_m, this));\n }\n\n // Note: If you globally change the entrypoint signature don't forget to update account_entrypoint.ts file\n #[private]\n #[noinitcheck]\n fn entrypoint(app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.entrypoint(app_payload, fee_payload, cancellable);\n }\n\n #[private]\n #[noinitcheck]\n #[view]\n fn verify_private_authwit(inner_hash: Field) -> Field {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.verify_private_authwit(inner_hash)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, outer_hash: Field) -> bool {\n // docs:start:is_valid_impl\n // Load public key from storage\n let storage = Storage::init(context);\n let public_key = storage.signing_public_key.get_note();\n // Load auth witness\n let witness: [Field; 64] = unsafe {\n get_auth_witness(outer_hash)\n };\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n\n // Verify signature of the payload bytes\n std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n outer_hash.to_be_bytes::<32>()\n )\n // docs:end:is_valid_impl\n }\n\n /**\n * @notice Helper function to check validity of private authwitnesses\n * @param consumer The address of the consumer of the message\n * @param message_hash The message hash of the message to check the validity\n * @return True if the message_hash can be consumed, false otherwise\n */\n unconstrained fn lookup_validity(consumer: AztecAddress, inner_hash: Field) -> pub bool {\n let public_key = storage.signing_public_key.view_note();\n\n let message_hash = compute_authwit_message_hash(consumer, context.chain_id(), context.version(), inner_hash);\n\n let witness: [Field; 64] = get_auth_witness(message_hash);\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n let valid_in_private = std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n message_hash.to_be_bytes::<32>()\n );\n\n // Compute the nullifier and check if it is spent\n // This will BLINDLY TRUST the oracle, but the oracle is us, and\n // it is not as part of execution of the contract, so we are good.\n let nullifier = compute_authwit_nullifier(context.this_address(), inner_hash);\n let siloed_nullifier = compute_siloed_nullifier(consumer, nullifier);\n let lower_wit = get_low_nullifier_membership_witness(context.block_number(), siloed_nullifier);\n let is_spent = lower_wit.leaf_preimage.nullifier == siloed_nullifier;\n\n !is_spent & valid_in_private\n }\n}\n"},"440":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/public_key_note.nr","source":"use dep::aztec::prelude::{NoteHeader, NullifiableNote, PrivateContext};\nuse dep::aztec::{\n note::utils::compute_note_hash_for_nullify, keys::getters::get_nsk_app,\n protocol_types::{constants::GENERATOR_INDEX__NOTE_NULLIFIER, hash::poseidon2_hash_with_separator},\n macros::notes::note\n};\n\n// Stores a public key composed of two fields\n// TODO: Do we need to include a nonce, in case we want to read/nullify/recreate with the same pubkey value?\n#[note]\npub struct PublicKeyNote {\n x: Field,\n y: Field,\n // We store the npk_m_hash only to get the secret key to compute the nullifier\n npk_m_hash: Field,\n}\n\nimpl NullifiableNote for PublicKeyNote {\n fn compute_nullifier(self, context: &mut PrivateContext, note_hash_for_nullify: Field) -> Field {\n let secret = context.request_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n\n unconstrained fn compute_nullifier_without_context(self) -> Field {\n let note_hash_for_nullify = compute_note_hash_for_nullify(self);\n let secret = get_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n}\n\nimpl PublicKeyNote {\n pub fn new(x: Field, y: Field, npk_m_hash: Field) -> Self {\n PublicKeyNote { x, y, npk_m_hash, header: NoteHeader::empty() }\n }\n}\n"},"58":{"path":"std/option.nr","source":"use crate::hash::{Hash, Hasher};\nuse crate::cmp::{Ordering, Ord, Eq};\nuse crate::default::Default;\n\npub struct Option<T> {\n _is_some: bool,\n _value: T,\n}\n\nimpl<T> Option<T> {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::mem::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some { self._value } else { default }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else<Env>(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n fn expect<let N: u32, MessageTypes>(self, message: fmtstr<N, MessageTypes>) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> Option<U> {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or<U, Env>(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else<U, Env1, Env2>(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then<U, Env>(self, f: fn[Env](T) -> Option<U>) -> Option<U> {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some { self } else { other }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else<Env>(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some { self } else { default() }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some { Option::none() } else { self }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter<Env>(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option<Option<T>> into a Option<T>.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option<Option<T>>) -> Option<T> {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl<T> Default for Option<T> {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl<T> Eq for Option<T> where T: Eq {\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl<T> Hash for Option<T> where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl<T> Ord for Option<T> where T: Ord {\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n"},"59":{"path":"std/panic.nr","source":"pub fn panic<T, U, let N: u32>(message: fmtstr<N, T>) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n"},"7":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\n/// A `BoundedVec<T, MaxLen>` is a growable storage similar to a `Vec<T>` except that it\n/// is bounded with a maximum possible length. Unlike `Vec`, `BoundedVec` is not implemented\n/// via slices and thus is not subject to the same restrictions slices are (notably, nested\n/// slices - and thus nested vectors as well - are disallowed).\n/// \n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n/// \n/// For these reasons `BoundedVec<T, N>` should generally be preferred over `Vec<T>` when there\n/// is a reasonable maximum bound that can be placed on the vector.\n/// \n/// Example:\n/// \n/// ```noir\n/// let mut vector: BoundedVec<Field, 10> = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\npub struct BoundedVec<T, let MaxLen: u32> {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl<T, let MaxLen: u32> BoundedVec<T, MaxLen> {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec<Field, 10> = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec<Field, 10> {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec<Field, 3> = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiler can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a \n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn sum_of_first_three<let N: u32>(v: BoundedVec<u32, N>) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n /// \n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n /// \n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n /// \n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure. \n /// vec.set_unchecked(2, 42);\n /// println(vec);\n /// \n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n /// \n /// Panics if the new length of the vector will be greater than the max length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n /// \n /// v.push(1);\n /// v.push(2);\n /// \n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\n /// ```\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n /// Returns the current length of this vector\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 4> = BoundedVec::new();\n /// assert(v.len() == 0);\n /// \n /// v.push(100);\n /// assert(v.len() == 1);\n /// \n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n /// \n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n /// \n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n /// \n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n /// \n /// Note that uninitialized elements may be zeroed out!\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n /// \n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n /// \n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_array<let Len: u32>(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the given slice to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_slice(&[2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// ```noir\n /// let mut v1: BoundedVec<Field, 5> = BoundedVec::new();\n /// let mut v2: BoundedVec<Field, 7> = BoundedVec::new();\n /// \n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n /// \n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\n /// ```\n pub fn extend_from_bounded_vec<let Len: u32>(&mut self, vec: BoundedVec<T, Len>) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n /// Creates a new vector, populating it with values derived from an array input. \n /// The maximum length of the vector is determined based on the type signature.\n /// \n /// Example:\n /// \n /// ```noir\n /// let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array([1, 2, 3])\n /// ```\n pub fn from_array<let Len: u32>(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec<T, MaxLen> = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n /// \n /// Panics if the vector is empty.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n /// \n /// let two = v.pop();\n /// let one = v.pop();\n /// \n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\n /// ```\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n /// Returns true if the given predicate returns true for any element\n /// in this vector.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<u32, 3> = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n /// \n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\n /// ```\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element in this vector. \n /// \n /// Example:\n /// \n /// ```noir\n /// let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n /// \n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> BoundedVec<U, MaxLen> {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n ret\n }\n}\n\nimpl<T, let MaxLen: u32> Eq for BoundedVec<T, MaxLen> where T: Eq {\n fn eq(self, other: BoundedVec<T, MaxLen>) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n\n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nimpl<T, let MaxLen: u32, let Len: u32> From<[T; Len]> for BoundedVec<T, MaxLen> {\n fn from(array: [T; Len]) -> BoundedVec<T, MaxLen> {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec<Field, 5> = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec<Field, 5> = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec<Field, 4> = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.storage()[2], 0);\n }\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with=\"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec<Field, 2> = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n}\n"},"73":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth_witness.nr","source":"#[oracle(getAuthWitness)]\nunconstrained fn get_auth_witness_oracle<let N: u32>(_message_hash: Field) -> [Field; N] {}\n\n/**\n * Oracle wrapper to fetch an `auth_witness` for a given `message_hash` from the PXE.\n * \n * @param message_hash The hash of the message for which the `auth_witness` is to be fetched.\n * @return The `auth_witness` for the given `message_hash` as Field array.\n */\nunconstrained pub fn get_auth_witness<let N: u32>(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n"},"74":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth.nr","source":"use dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{\n GENERATOR_INDEX__AUTHWIT_INNER, GENERATOR_INDEX__AUTHWIT_OUTER, GENERATOR_INDEX__AUTHWIT_NULLIFIER,\n CANONICAL_AUTH_REGISTRY_ADDRESS\n},\n hash::poseidon2_hash_with_separator\n};\nuse dep::aztec::{context::{PrivateContext, PublicContext, gas::GasOpts}, hash::hash_args_array};\n\n/**\n * Authenticaion witness helper library\n *\n * Authentication Witness is a scheme for authenticating actions on Aztec, so users can allow third-parties\n * (e.g. protocols or other users) to execute an action on their behalf.\n *\n * This library provides helper functions to manage such witnesses.\n * The authentication witness, is some \"witness\" (data) that authenticates a `message_hash`.\n * The simplest example of an authentication witness, is a signature. The signature is the \"evidence\",\n * that the signer has seen the message, agrees with it, and has allowed it.\n * It does not need to be a signature. It could be any kind of \"proof\" that the message is allowed.\n * Another proof could be knowing some kind of secret, or having some kind of \"token\" that allows the message.\n *\n * The `message_hash` is a hash of the following structure:\n * hash(consumer, chain_id, version, inner_hash)\n * - consumer: the address of the contract that is \"consuming\" the message,\n * - chain_id: the chain id of the chain that the message is being consumed on,\n * - version: the version of the chain that the message is being consumed on,\n * - inner_hash: the hash of the \"inner\" message that is being consumed, this is the \"actual\" message or action.\n *\n * While the `inner_hash` could be anything, such as showing you signed a specific message, it will often be\n * a hash of the \"action\" to approve, along with who made the call. As part of this library, we provide a few\n * helper functions to deal with such messages.\n *\n * For example, we provide helper function that is used for checking that the message is an encoding of the current call.\n * This can be used to let some contract \"allow\" another contract to act on its behalf, as long as it can\n * show that it is acting on behalf of the contract.\n *\n * If we take a case of allowing a contract to transfer tokens on behalf of an account, the `inner_hash` can be\n * derived as:\n * inner_hash = hash(caller, \"transfer\", hash(to, amount))\n *\n * Where the `caller` would be the address of the contract that is trying to transfer the tokens, and `to` and `amount`\n * the arguments for the transfer.\n *\n * Note that we have both a `caller` and a `consumer`, the `consumer` will be the contract that is consuming the message,\n * in the case of the transfer, it would be the `Token` contract itself, while the caller, will be the actor that is\n * allowed to transfer the tokens.\n *\n *\n * The authentication mechanism works differently in public and private contexts. In private, we recall that everything\n * is executed on the user's device, so we can use `oracles` to \"ask\" the user (not contract) for information. In public\n * we cannot do this, since it is executed by the sequencer (someone else). Therefore we can instead use a \"registry\"\n * to store the messages that we have approved.\n *\n * A simple example would be a \"token\" that is being \"pulled\" from one account into another. We will first outline\n * how this would look in private, and then in public later.\n *\n * Say that a user `Alice` wants to deposit some tokens into a DeFi protocol (say a DEX).\n * `Alice` would make a `deposit` transaction, that she is executing using her account contract.\n * The account would call the `DeFi` contract to execute `deposit`, which would try to pull funds from the `Token`\n * contract. Since the `DeFi` contract is trying to pull funds from an account that is not its own, it needs to\n * convince the `Token` contract that it is allowed to do so.\n *\n * This is where the authentication witness comes in The `Token` contract computes a `message_hash` from the\n * `transfer` call, and then asks `Alice Account` contract to verify that the `DeFi` contract is allowed to\n * execute that call.\n *\n * `Alice Account` contract can then ask `Alice` if she wants to allow the `DeFi` contract to pull funds from her\n * account. If she does, she will sign the `message_hash` and return the signature to the `Alice Account` which\n * will validate it and return success to the `Token` contract which will then allow the `DeFi` contract to pull\n * funds from `Alice`.\n *\n * To ensure that the same \"approval\" cannot be used multiple times, we also compute a `nullifier` for the\n * authentication witness, and emit it from the `Token` contract (consumer).\n *\n * Note that we can do this flow as we are in private were we can do oracle calls out from contracts.\n *\n *\n * Person Contract Contract Contract\n * Alice Alice Account Token DeFi\n * | | | |\n * | Defi.deposit(Token, 1000) | |\n * |----------------->| | |\n * | | deposit(Token, 1000) |\n * | |---------------------------------------->|\n * | | | |\n * | | | transfer(Alice, Defi, 1000)\n * | | |<---------------------|\n * | | | |\n * | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | |<-----------------| |\n * | | | |\n * | Please give me AuthWit for DeFi | |\n * | calling transfer(Alice, Defi, 1000) | |\n * |<-----------------| | |\n * | | | |\n * | | | |\n * | AuthWit for transfer(Alice, Defi, 1000) |\n * |----------------->| | |\n * | | AuthWit validity | |\n * | |----------------->| |\n * | | | |\n * | | throw if invalid AuthWit |\n * | | | |\n * | | emit AuthWit nullifier |\n * | | | |\n * | | transfer(Alice, Defi, 1000) |\n * | | | |\n * | | | |\n * | | | success |\n * | | |--------------------->|\n * | | | |\n * | | | |\n * | | | deposit(Token, 1000)\n * | | | |\n * | | | |\n *\n *\n * If we instead were in public, we cannot do the same flow. Instead we would use an authentication registry to store\n * the messages that we have approved.\n *\n * To approve a message, `Alice Account` can make a `set_authorized` call to the registry, to set a `message_hash`\n * as authorized. This is essentially a mapping from `message_hash` to `true` for `Alice Contract`. Every account\n * has its own map in the registry, so `Alice` cannot approve a message for `Bob`.\n *\n * The `Token` contract can then try to \"spend\" the approval by calling `consume` on the registry. If the message\n * was approved, the value is updated to `false`, and we return the success flag. For more information on the\n * registry, see `main.nr` in `auth_registry_contract`.\n *\n * Person Contract Contract Contract Contract\n * Alice Alice Account Registry Token DeFi\n * | | | | |\n * | Registry.set_authorized(..., true) | | |\n * |----------------->| | | |\n * | | set_authorized(..., true) | |\n * | |------------------->| | |\n * | | | | |\n * | | set authorized to true | |\n * | | | | |\n * | | | | |\n * | Defi.deposit(Token, 1000) | | |\n * |----------------->| | | |\n * | | deposit(Token, 1000) | |\n * | |-------------------------------------------------------------->|\n * | | | | |\n * | | | transfer(Alice, Defi, 1000) |\n * | | | |<---------------------|\n * | | | | |\n * | | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | | |<------------------| |\n * | | | | |\n * | | throw if invalid AuthWit | |\n * | | | | |\n * | | | | |\n * | | set authorized to false | |\n * | | | | |\n * | | | | |\n * | | | AuthWit validity | |\n * | | |------------------>| |\n * | | | | |\n * | | | | transfer(Alice, Defi, 1000)\n * | | | |<-------------------->|\n * | | | | |\n * | | | | success |\n * | | | |--------------------->|\n * | | | | |\n * | | | | deposit(Token, 1000)\n * | | | | |\n *\n *\n * --- FAQ ---\n * Q: Why are we using a success flag of `poseidon2_hash_bytes(\"IS_VALID()\")` instead of just returning a boolean?\n * A: We want to make sure that we don't accidentally return `true` if there is a collision in the function selector.\n * By returning a hash of `IS_VALID()`, it becomes very unlikely that there is both a collision and we return\n * a success flag.\n *\n * Q: Why are we using static calls?\n * A: We are using static calls to ensure that the account contract cannot re-enter. If it was a normal call, it\n * could make a new call and do a re-entry attack. Using a static ensures that it cannot update any state.\n *\n * Q: Would it not be cheaper to use a nullifier instead of updating state in public?\n * A: At a quick glance, a public state update + nullifier is 96 bytes, but two state updates are 128, so it would be\n * cheaper to use a nullifier, if this is the way it would always be done. However, if both the approval and the\n * consumption is done in the same transaction, then we will be able to squash the updates (only final tx state diff is posted to DA), and now it is cheaper.\n *\n * Q: Why is the chain id and the version part of the message hash?\n * A: The chain id and the version is part of the message hash to ensure that the message is only valid on a specific\n * chain to avoid a case where the same message could be used across multiple chains.\n */\n\nglobal IS_VALID_SELECTOR = 0x47dacd73; // 4 last bytes of poseidon2_hash_bytes(\"IS_VALID()\")\n\n/**\n * Assert that `on_behalf_of` have authorized the current call with a valid authentication witness\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash([context.msg_sender().to_field(), context.selector().to_field(), context.args_hash]);\n assert_inner_hash_valid_authwit(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit\n\n/**\n * Assert that a specific `inner_hash` is valid for the `on_behalf_of` address\n *\n * Used as an internal function for `assert_current_call_valid_authwit` and can be used as a standalone function when\n * the `inner_hash` is from a different source, e.g., say a block of text etc.\n *\n * @param on_behalf_of The address that have authorized the current call\n * @param inner_hash The hash of the message to authorize\n */\npub fn assert_inner_hash_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n // We perform a static call here and not a standard one to ensure that the account contract cannot re-enter.\n let result: Field = context.static_call_private_function(\n on_behalf_of,\n comptime {\n FunctionSelector::from_signature(\"verify_private_authwit(Field)\")\n },\n [inner_hash]\n ).unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n // Compute the nullifier, similar computation to the outer hash, but without the chain_id and version.\n // Those should already be handled in the verification, so we just need something to nullify, that allow same inner_hash for multiple actors.\n let nullifier = compute_authwit_nullifier(on_behalf_of, inner_hash);\n context.push_nullifier(nullifier);\n}\n\n/**\n * Assert that `on_behalf_of` have authorized the current call in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit_public\npub fn assert_current_call_valid_authwit_public(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress\n) {\n let inner_hash = compute_inner_authwit_hash(\n [(*context).msg_sender().to_field(), (*context).selector().to_field(), (*context).get_args_hash()]\n );\n assert_inner_hash_valid_authwit_public(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n/**\n * Assert that `on_behalf_of` have authorized a speicifc `inner_hash` in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n */\npub fn assert_inner_hash_valid_authwit_public(context: &mut PublicContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n let result: Field = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"consume((Field),Field)\")\n },\n [on_behalf_of.to_field(), inner_hash].as_slice(),\n GasOpts::default()\n ).deserialize_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n\n/**\n * Compute the `message_hash` from a function call to be used by an authentication witness\n *\n * Useful for when you need a non-account contract to approve during execution. For example if you need a contract\n * to make a call to nested contract, e.g., contract A wants to exit token T to L1 using bridge B, so it needs to allow\n * B to transfer T on its behalf.\n *\n * @param caller The address of the contract that is calling the function, in the example above, this would be B\n * @param consumer The address of the contract that is consuming the message, in the example above, this would be T\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param selector The function selector of the function that is being called\n * @param args The arguments of the function that is being called\n */\n// docs:start:compute_authwit_message_hash_from_call\npub fn compute_authwit_message_hash_from_call<let N: u32>(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N]\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash = compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_authwit_message_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_authwit_message_hash_from_call\n\n/**\n * Computes the `inner_hash` of the authentication witness\n *\n * This is used internally, but also useful in cases where you want to compute the `inner_hash` for a specific message\n * that is not necessarily a call, but just some \"bytes\" or text.\n *\n * @param args The arguments to hash\n */\npub fn compute_inner_authwit_hash<let N: u32>(args: [Field; N]) -> Field {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\n/**\n * Computs the `authwit_nullifier` for a specific `on_behalf_of` and `inner_hash`\n *\n * Using the `on_behalf_of` and the `inner_hash` to ensure that the nullifier is siloed for a specific `on_behalf_of`.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n * @param inner_hash The hash of the message to authorize\n */\npub fn compute_authwit_nullifier(on_behalf_of: AztecAddress, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [on_behalf_of.to_field(), inner_hash],\n GENERATOR_INDEX__AUTHWIT_NULLIFIER\n )\n}\n\n/**\n * Computes the `message_hash` for the authentication witness\n *\n * @param consumer The address of the contract that is consuming the message\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param inner_hash The hash of the \"inner\" message that is being consumed\n */\npub fn compute_authwit_message_hash(consumer: AztecAddress, chain_id: Field, version: Field, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n consumer.to_field(),\n chain_id,\n version,\n inner_hash\n ],\n GENERATOR_INDEX__AUTHWIT_OUTER\n )\n}\n\n/**\n * Helper function to set the authorization status of a message hash\n *\n * Wraps a public call to the authentication registry to set the authorization status of a `message_hash`\n *\n * @param message_hash The hash of the message to authorize\n * @param authorize True if the message should be authorized, false if it should be revoked\n */\npub fn set_authorized(context: &mut PublicContext, message_hash: Field, authorize: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"set_authorized(Field,bool)\")\n },\n [message_hash, authorize as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n\n/**\n * Helper function to reject all authwits\n *\n * Wraps a public call to the authentication registry to set the `reject_all` flag\n *\n * @param reject True if all authwits should be rejected, false otherwise\n */\npub fn set_reject_all(context: &mut PublicContext, reject: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"set_reject_all(bool)\")\n },\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n"},"75":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/account.nr","source":"use dep::aztec::{\n context::PrivateContext,\n protocol_types::constants::{GENERATOR_INDEX__COMBINED_PAYLOAD, GENERATOR_INDEX__TX_NULLIFIER},\n hash::poseidon2_hash_with_separator\n};\n\nuse crate::entrypoint::{app::AppPayload, fee::FeePayload};\nuse crate::auth::{IS_VALID_SELECTOR, compute_authwit_message_hash};\n\npub struct AccountActions<Context> {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n}\n\nimpl<Context> AccountActions<Context> {\n pub fn init(context: Context, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions { context, is_valid_impl }\n }\n}\n\n/**\n * An implementation of the Account Action struct for the private context.\n *\n * Implements logic to verify authorization and execute payloads.\n */\nimpl AccountActions<&mut PrivateContext> {\n\n /**\n * Verifies that the `app_hash` and `fee_hash` are authorized and then executes them.\n *\n * Executes the `fee_payload` and `app_payload` in sequence.\n * Will execute the `fee_payload` as part of the setup, and then enter the app phase.\n *\n * @param app_payload The payload that contains the calls to be executed in the app phase.\n * @param fee_payload The payload that contains the calls to be executed in the setup phase.\n */\n // docs:start:entrypoint\n pub fn entrypoint(self, app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let valid_fn = self.is_valid_impl;\n\n let combined_payload_hash = poseidon2_hash_with_separator(\n [app_payload.hash(), fee_payload.hash()],\n GENERATOR_INDEX__COMBINED_PAYLOAD\n );\n assert(valid_fn(self.context, combined_payload_hash));\n\n fee_payload.execute_calls(self.context);\n self.context.end_setup();\n app_payload.execute_calls(self.context);\n if cancellable {\n let tx_nullifier = poseidon2_hash_with_separator([app_payload.nonce], GENERATOR_INDEX__TX_NULLIFIER);\n self.context.push_nullifier(tx_nullifier);\n }\n }\n // docs:end:entrypoint\n\n /**\n * Verifies that the `msg_sender` is authorized to consume `inner_hash` by the account.\n *\n * Computes the `message_hash` using the `msg_sender`, `chain_id`, `version` and `inner_hash`.\n * Then executes the `is_valid_impl` function to verify that the message is authorized.\n *\n * Will revert if the message is not authorized.\n *\n * @param inner_hash The hash of the message that the `msg_sender` is trying to consume.\n */\n // docs:start:verify_private_authwit\n pub fn verify_private_authwit(self, inner_hash: Field) -> Field {\n // The `inner_hash` is \"siloed\" with the `msg_sender` to ensure that only it can\n // consume the message.\n // This ensures that contracts cannot consume messages that are not intended for them.\n let message_hash = compute_authwit_message_hash(\n self.context.msg_sender(),\n self.context.chain_id(),\n self.context.version(),\n inner_hash\n );\n let valid_fn = self.is_valid_impl;\n assert(valid_fn(self.context, message_hash) == true, \"Message not authorized by account\");\n IS_VALID_SELECTOR\n }\n // docs:end:verify_private_authwit\n}\n"},"76":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\n\nuse crate::entrypoint::function_call::FunctionCall;\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u32 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u32 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u32 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\npub struct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize<APP_PAYLOAD_SIZE> for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, APP_PAYLOAD_SIZE> = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__SIGNATURE_PAYLOAD)\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, APP_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n\n bytes.storage\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"},"78":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/fee.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__FEE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\nuse crate::entrypoint::function_call::FunctionCall;\n\n// 2 * 5 (FUNCTION_CALL_SIZE) + 2\nglobal FEE_PAYLOAD_SIZE: u32 = 12;\n\n// 2 * 98 (FUNCTION_CALL_SIZE_IN_BYTES) + 32\nglobal FEE_PAYLOAD_SIZE_IN_BYTES: u32 = 228;\n\nglobal MAX_FEE_FUNCTION_CALLS: u32 = 2;\n\n// docs:start:fee-payload-struct\npub struct FeePayload {\n function_calls: [FunctionCall; MAX_FEE_FUNCTION_CALLS],\n nonce: Field,\n is_fee_payer: bool,\n}\n// docs:end:fee-payload-struct\n\nimpl Serialize<FEE_PAYLOAD_SIZE> for FeePayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; FEE_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, FEE_PAYLOAD_SIZE> = BoundedVec::new();\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n fields.extend_from_array(self.function_calls[i].serialize());\n }\n fields.push(self.nonce);\n fields.push(self.is_fee_payer as Field);\n fields.storage\n }\n}\n\nimpl Hash for FeePayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__FEE_PAYLOAD)\n }\n}\n\nimpl FeePayload {\n fn to_be_bytes(self) -> [u8; FEE_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, FEE_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n bytes.push(self.is_fee_payer as u8);\n\n bytes.storage\n }\n\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n if self.is_fee_payer {\n context.set_as_fee_payer();\n }\n }\n}\n"},"84":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/point_to_symmetric_key.nr","source":"use dep::protocol_types::{constants::GENERATOR_INDEX__SYMMETRIC_KEY, scalar::Scalar, point::Point, utils::arr_copy_slice};\nuse crate::utils::point::point_to_bytes;\nuse std::{hash::sha256, embedded_curve_ops::multi_scalar_mul};\n\n// TODO(#5726): This function is called deriveAESSecret in TS. I don't like point_to_symmetric_key name much since\n// point is not the only input of the function. Unify naming with TS once we have a better name.\npub fn point_to_symmetric_key(secret: Scalar, point: Point) -> [u8; 32] {\n let shared_secret: Point = multi_scalar_mul([point], [secret]);\n let shared_secret = point_to_bytes(shared_secret);\n let mut shared_secret_bytes_with_separator = [0 as u8; 33];\n shared_secret_bytes_with_separator = arr_copy_slice(shared_secret, shared_secret_bytes_with_separator, 0);\n shared_secret_bytes_with_separator[32] = GENERATOR_INDEX__SYMMETRIC_KEY;\n sha256(shared_secret_bytes_with_separator)\n}\n\n#[test]\nunconstrained fn test_point_to_symmetric_key_matches_noir() {\n // Value taken from \"derive shared secret\" test in encrypt_buffer.test.ts\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let point = Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n };\n\n let key = point_to_symmetric_key(secret, point);\n\n // The following value was generated by `encrypt_buffer.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let key_from_typescript = [\n 251, 232, 177, 34, 2, 174, 35, 92, 165, 118, 168, 3, 153, 140, 46, 210, 203, 154, 184, 158, 236, 33, 95, 77, 93, 120, 72, 88, 190, 209, 64, 159\n ];\n assert_eq(key, key_from_typescript);\n}\n"},"85":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/public_keys.nr","source":"use dep::protocol_types::{\n address::PublicKeysHash, constants::GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n hash::poseidon2_hash_with_separator, point::{Point, POINT_LENGTH},\n traits::{Deserialize, Serialize, Empty, is_empty, Hash}\n};\n\nglobal PUBLIC_KEYS_LENGTH: u32 = 12;\n\npub struct PublicKeys {\n npk_m: NpkM,\n ivpk_m: IvpkM,\n ovpk_m: OvpkM,\n tpk_m: TpkM,\n}\n\npub trait ToPoint {\n fn to_point(self) -> Point;\n}\n\npub struct NpkM {\n inner: Point\n}\n\nimpl ToPoint for NpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for NpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\n// Note: If we store npk_m_hash directly we can remove this trait implementation. See #8091\nimpl Hash for NpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\npub struct IvpkM {\n inner: Point\n}\n\nimpl ToPoint for IvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for IvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct OvpkM {\n inner: Point\n}\n\nimpl Hash for OvpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nimpl ToPoint for OvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for OvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct TpkM {\n inner: Point\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Empty for PublicKeys {\n fn empty() -> Self {\n PublicKeys {\n npk_m: NpkM { inner: Point::empty() },\n ivpk_m: IvpkM { inner: Point::empty() },\n ovpk_m: OvpkM { inner: Point::empty() },\n tpk_m: TpkM { inner: Point::empty() }\n }\n }\n}\n\nimpl Eq for PublicKeys {\n fn eq(self, other: PublicKeys) -> bool {\n (self.npk_m.inner == other.npk_m.inner)\n & (self.ivpk_m.inner == other.ivpk_m.inner)\n & (self.ovpk_m.inner == other.ovpk_m.inner)\n & (self.tpk_m.inner == other.tpk_m.inner)\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(\n if is_empty(self) {\n 0\n } else {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field)\n }\n )\n }\n}\n\nimpl Serialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.inner.x,\n self.npk_m.inner.y,\n self.npk_m.inner.is_infinite as Field,\n self.ivpk_m.inner.x,\n self.ivpk_m.inner.y,\n self.ivpk_m.inner.is_infinite as Field,\n self.ovpk_m.inner.x,\n self.ovpk_m.inner.y,\n self.ovpk_m.inner.is_infinite as Field,\n self.tpk_m.inner.x,\n self.tpk_m.inner.y,\n self.tpk_m.inner.is_infinite as Field\n ]\n }\n}\n\nimpl Deserialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM { inner: Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x: serialized[3], y: serialized[4], is_infinite: serialized[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x: serialized[6], y: serialized[7], is_infinite: serialized[8] as bool } },\n tpk_m: TpkM { inner: Point { x: serialized[9], y: serialized[10], is_infinite: serialized[11] as bool } }\n }\n }\n}\n\n#[test]\nunconstrained fn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } }\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash = 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nunconstrained fn compute_empty_hash() {\n let keys = PublicKeys::empty();\n\n let actual = keys.hash();\n let test_data_empty_hash = 0x0000000000000000000000000000000000000000000000000000000000000000;\n\n assert(actual.to_field() == test_data_empty_hash);\n}\n\n#[test]\nunconstrained fn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } }\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.inner.x, deserialized.npk_m.inner.x);\n assert_eq(keys.npk_m.inner.y, deserialized.npk_m.inner.y);\n assert_eq(keys.ivpk_m.inner.x, deserialized.ivpk_m.inner.x);\n assert_eq(keys.ivpk_m.inner.y, deserialized.ivpk_m.inner.y);\n assert_eq(keys.ovpk_m.inner.x, deserialized.ovpk_m.inner.x);\n assert_eq(keys.ovpk_m.inner.y, deserialized.ovpk_m.inner.y);\n assert_eq(keys.tpk_m.inner.x, deserialized.tpk_m.inner.x);\n assert_eq(keys.tpk_m.inner.y, deserialized.tpk_m.inner.y);\n}\n"},"87":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr","source":"use dep::protocol_types::address::AztecAddress;\nuse crate::{\n oracle::{keys::get_public_keys_and_partial_address, key_validation_request::get_key_validation_request},\n keys::{public_keys::PublicKeys, constants::{NULLIFIER_INDEX, OUTGOING_INDEX}}\n};\n\nmod test;\n\nunconstrained pub fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// A helper function that gets app-siloed outgoing viewing key for a given `ovpk_m_hash`. This function is used\n// in unconstrained contexts only - when computing unconstrained note logs. The safe alternative is `request_ovsk_app`\n// function defined on `PrivateContext`.\nunconstrained pub fn get_ovsk_app(ovpk_m_hash: Field) -> Field {\n get_key_validation_request(ovpk_m_hash, OUTGOING_INDEX).sk_app\n}\n\n// Returns all public keys for a given account, applying proper constraints to the context. We read all\n// keys at once since the constraints for reading them all are actually fewer than if we read them one at a time - any\n// read keys that are not required by the caller can simply be discarded.\npub fn get_public_keys(account: AztecAddress) -> PublicKeys {\n let (hinted_canonical_public_keys, partial_address) = unsafe {\n get_public_keys_and_partial_address(account)\n };\n assert_eq(\n account, AztecAddress::compute(hinted_canonical_public_keys.hash(), partial_address), \"Invalid public keys hint for address\"\n );\n\n hinted_canonical_public_keys\n}\n"}}}
1
+ {"transpiled":true,"noir_version":"0.35.0+b848cc128d2dc2b461581f21a35509a1af9065a7-x8664","name":"SchnorrAccount","functions":[{"name":"constructor","is_unconstrained":false,"custom_attributes":["private","initializer"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"signing_pub_key_x","type":{"kind":"field"},"visibility":"private"},{"name":"signing_pub_key_y","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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oqyKcirKq7hUxX9UXKbichVXqLhSxVUqrlZxjYprVVynwt3JOSriVSSoqKAiUUVFFZVUJKlIVnG9ihtU3KiisooqKqq618erqK6ihoqaKmqpqK2ijoq6KuqpqK+igYqGKm5S0UjFzSoaq2iioqmKZiqaq2ihoqWKVipaq7hFxa0qblPRRkVbFe1UtFfRQcXtKlJUpKpIU5GuIkNFRxV3qOikorOKO1XcpeJuFfeo6KKiq4puKrqr6KGip4pMFb1U9FbRR0VfFf1U9FcxQMVAFYNUDFYxRMVQFcNUDFcxQsVIFaNUjFYxRsVYFeNUjFcxQcVEFZNUTFYxRcVUFdNUTFcxQ8VMFbNUzFYxR8VcFfNUzFexQMVCFYtULFaxRMVSFctULFexQsVKFatU3KtitYo1KtaqWKdivYoNKjaq2KRis4otKraq2KZiu4odKnaq2KVit4o9Kvaq2Kdiv4oDKg6quE/FIRWHVdyv4gEVR1QcVXFMhfv78u5vt7u/i+7+5rj7e97u71u7vyPi/n6F+3sO7u8buL8d4N6X373nvXs/efde7e590N17jLv373bvje3ed9q9p7N7v2T3XsTufX7de+i696d9U4V7X1X3nqXu/UDde22697F07xHp3n/Rvbehe99A95587v3u3HvJufdpc++B5t5fzL13l3tfLPeeU+79nNx7Jbn3IXLv8ePeP8e9N4173xf3niru/Urce4G499lw72Hh3h/CNQLufQ3cewa41+O717q715G712i71z+71xa71+2618S615u613K610m61yC61/e5186516W513y511O51yq51wG519i416+414a411241zS41wu438V3v+fufofc/X62e4x3v1fsfmfX/T6s+11T93uc7nck3e8fut/Hc7/r5n5fy/3+kvt9Hvf7Le73PdzvUrjfB3DPtbvni91zse75RPdcnXu+yT3/4p6PcD+fdz/7dj+/dT/PdD/fcz/v+vPzHxXu5wPue2/3vaj73sx9r+L6bdd/un4sp2uQ9OPsU4t/ehv3kZKZmXFPt8xgZtdgSnp6sE/nzE7Brr0zenS8u6t7CP7T94QeZfXf+l06Z3ZOubtz/5TMzl27BDul9OwUTO+a0TPYpWtm8J6UzDT3wP+nIwo94sIrM3q4L9cjo2fPYOeTdZmdMoJpXbtk9khJywymZ3S7u2u/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","debug_symbols":"7P3fkiNblp33vktd8wKAL/zjqxw7doxHomQ0k5Eykbqi6d2VVbsiMqpzAtjZPrZjxvLfXXebd2zEN2a6z/F5Jtb//Nv/+p/////3//7/+y//9X/7b//9b//x//M///Z//Lf/5T/9j//y3/7rj//tf/7tOP7xf/vv/+d/+q9//1//+//4T//X//jbfzxeT+M//O0//9f/9e//4zL+n//wt//tv/wf//lv/3Es1//nP/xy9el6/rj6dL1ePq8+jktx9TKW8z+vXs6H24urj4fr9fDxUQ7X28/Psvz9//fX62/X08flt/vx59Wjuvh4/Pgox+NlfL34//sf/nY8Q/MIzQWaR2iu69Est+X28cverj+vvv3xX7j95f+FeyDe4+ED6em4nH4GVl59PByXz7zOX64+L3//QKfD5h/odP4AdPwxnv/ygar5OX5+kvvX+Tkey5/98+rTl9k8XapPcvmc5Nv1/OXaU4nxdL98clwO91dzPw6fv+U4XdfM/ekoou4RnUTUPaJFRH8uomX5+cBYxnW7B/xpiKh7ROepIjp+iej+KqLj+bT8/C2vr65+Y0iX5iFdx2c/ORxehrR8Xn08H5cv2Ecz7FfY34H99lbst9svlSrS8T7/E6fTcnjxgU7n+/JZ+I+3l43wbVktB2geoUm0vNP4/GX/ZTB/XP33/0SipfxwRB//ieXLpvKA5/n68yZyu//LTeTvH2jp9oFGtw+U2LeW2+fNbZyWFx9onD4K2rgcf/k4l14f59rr49x6fZzEc2gZ958fZ/zbO8qo7+fL+FTEy5fPNR48Tcfx59P0y5+X4z9+i3H86/8Tp7/+P7H89f+JEfhP/HjkfV59O/zLf6J63Nw+F8rT/cvj5ngoH3+3++fj7375sn6Wy+r9fP9Z5C6vfvbt+KmVbqcvd9E/yJyReUDmgswDMtc9k1k+HxG3LzvwP8nckHlA5o5MTeZ82DGZ6/X6k8zt35I5zkTm9PNl8+lfXjb/O+7A5xMyD8gsyDwgM/ZM5ukdeKodOEpmqh04SmaqHfg3yTx/as+2A99+kln+5Wf//Zedba199steptpUT4fLp747Hl7+7KfP1stkm2qQzGSbapDMZJvq75F59my9DGQekJlsUw2SmWxT/S0yT/exy2y29vaTzP2XFWXa5bP6ZadaPk/H0/nzl72scx3XuTbVJJm5NtUkmbk21d8k8+zZep1rU02SGcg8IDPXpvp7ZJ7uY9fZ/l7BzxXl8osyus67fBa/7PbL58+/iH4ay/nVL/u+f2F2vUPzAM3tAM0jNEdoHqE5QfMIzQLNIzQDmkdoztA8QnOB5hGaKzSP0NiGH6KxDT9Cc7cNP0RjG36Ixjb8EE37bfht/6z4PqB5hKbVNvz3DxTZQT8t7o8/YK8+0Lf5kof7FZpHaCI76M+3hv8Wzd//Ew/+JfHhc/avX27g9X/itnz8wl9fpNQ3heX+8WQYX77g4XQ/F9fer59w7tcvvrrmvnyq8K8/uaR+ut4+34dc7/cXEQW/5vLw4EsyfgZ6vb6ifTqPz39Gfr58+VsV1+oD/bjiY3jP1+NPLrf6Jna+fb4h+DFa16+X/+PzH7/55z8lPv/9499q/7hhHF98/uv988/G8eu/sa++/Gt8frfrON++fIpq2sfh9PEndByuX/8k/fGLLtP8osfl88/18csfv49fdOwl0fNeEr3sJdHrXhK9zfKLLtfP7+lYrrd/+5dGjof71r/o7Xb8uZouL37Ty/Ujpev1y98suJz/8eGPh60//I+b98/vG//611LKT38+f/5pOp/HWLkJHI+7+m1f7j23w6sisVyuP0f/56c/VZv76XT8+UVuX/rDj3teReb083vMT6dXf+dl3w3iuGyc5PHnl+ydjq+SvJ/vHz/6fjlenk/t/Xb5+ONzvx8Ov8zs2M1vet7Nb3rZzW96neY3/dGaL+PnlnE8/fK73nb0u94n+l0v559vdS7X5fnl+37ung6z5v7ly2T/OeOn445+19OOftd5dse/n0/1+Yr5cFt+uU+f5tkeX/+u8+yPr3/XeTbI17/rTDvkq991ph3y1e860w754nddZtqbXv2uM+1Nr37XmfamV7/rjvamZUd707KjvWnZ0d607GhvWna0Ny072pvGjvamsaO9aexobxo72pvGjvamsaO9aexobxo72pvGjvamsaO96byjvem8o73pvKO96byjvem8o73pvKO96byjvem8o73pvKO96byjvemyo73psqO96bKjvemyo73psqO96bKjvemyo73psqO96bKjvemyo73puqO96bqjvem6o73puqO96bqjvem6o73puqO96bqjvem6o73puqO96bajvem2o73ptqO96bajvem2o73ptqO96bajvem2o73ptqO96bajvem+o73pvqO96b6jvem+o73pvqO96b6jvem+o73pvqO96b6jvem+n73pdNjP3nQ6bL03nT6/bve0fD1Xtvxdb6cPMLfzeHHtch4fFy/nL9/OW51ue7t8fIvY7csXg/395/6DyQmTX5gsmPzCZHRmcjx8+XbCr2fSlFf/1ld4L4cPgmM5/uRyuhQXn0+f2ZxPX774+MfF/2B4xnA1wwuGqxleMVzN8IbhaoZ3DNcyPB4wXM2wdS/4Jgxb94hvwrB17/gmDAeGqxnqKesZ6inrGeop6xnqKesZ6imrGZ70lPUM9ZT1DPWU9Qz1lPUMB4arGeop6xnqKesZ6inrGeop6xnqKasZLnrKeoZ6ynqGesp6hnrKeoYDw9UM9ZT1DPWU9Qz1lPUM9ZT1DPWU1QyHnrKeoZ6ynqGesp6hnrKe4cBwNUM9ZT1DPWU9Qz1lPUM9ZT1DPWU1w7Oesp6hnrKeoZ6ynuFee8rlfPy4+HK5/oJlwFJh2WubeIFlrwXhBZa97vzXw8fnGNfjr1j2usa/wLLXzfw5lstel+0XWPa6P7/AsteV+PmT6GLLLbEMWCosttwSy1633Be3XFtuicWWW2Kx5VZYrrbcEostt8Sy1y33BZa9brkvsAxYKix73XJfYLHlllhsuSUWW26JxZZbYbntdct9LhZue91yX2DhckssXG6JZbjlVrdcW26JxZZbYrHlllhsuSUWW26F5c7llli43BILl1ti4XJLLAOWCostt8Riyy2x2HJLLHvdcp+Lhftet9ynWJYDl1ti4XJLLLbc4pa79D6V9X1YBiwVFltuicWWW2Kx5ZZYuNwSC5dbYdntUaQvsHC5JRZbbonFlltiGbBUWGy5JRbfsVCJhd2ep/kCC5dbYuFyKyy7Pcjy+S13t2dTvsBiyy2x2HJLLAOWCostt8TC5ZZYuNwSC5dbYuFyKyy7PQbxBRZbbonFlltiseWWWAaxUIiF3Z4S+AILl1ti4XJLLLbc8pZry62w7PYQvRdYbLklFltuicWWW2IZsFRYuNwSC5dbYuFySyy23BKLLbfCstsj2F5gseWWWHyTWCUWnH1WYxmwVFi43BKLLbe85dpySyy23BKLLbfC4uyzGostt8TC5ZZYuNwSy4ClwsLlllhsuSUWW26JxZZbYrHlVlh2e/bZc7Gw27PPXmDhckssXG6JZbjlVrdcW26JxZZbYrHlllhsuSUWW26FZbdnn73AwuWWWLjcEguXW2IZsFRYbLklFltuicWWW2LxTWKVWNjt2WfPsez27LMXWLjcEostt7rlOvusxjJgqbDYckssttwSiy23xMLllli43ALL2O3ZZy+wcLklFltuicWWW2IZsFRYbLklFt8kVoiFsduzz15g4XJLLFxuhcXZZ+Ut19lnNRZbbonFlltiGbBUWGy5JRYut8TC5ZZYuNwSC5dbYXH2WY3FlltiseWWWGy5JZZBLBRiYbdnn73AwuWWWLjcEostt7zl2nIrLM4+q7HYckssttwSiy23xDJgqbBwuSUWLrfEwuWWWGy5JRZbboXF2Wc1FltuicU3iVViYbdnn73AMmCpsHC5JRZbbnnLteWWWGy5JRZbboXF2Wc1FltuiYXLLbFwuSWWAUuFhcstsdhySyy23BKLLbfEYsutsOz27LPnYmG3Z5+9wMLllli43BLLcMutbrm23BKLLbfEYsstsdhySyy23ArLbs8+e4GFyy2xcLklFi63xDJgqbDYckssttwSiy23xOKbxCqxsNuzz55j2e3ZZy+wcLklFltudct19lmNZcBSYbHlllhsuSUWW26JhcstsXC5FZbdnn32AguXW2Kx5ZZYbLkllgFLhcWWW2LxTWKVWNjt2WcvsHC5JRYut8BydvZZdcs9O/usxmLLLbHYckssA5YKiy23xMLllli43BILl1ti4XIrLM4+q7HYckssttwSiy23xDKIhUIs7PbssxdYuNwSC5dbYrHllrdcW26FxdlnNRZbbonFlltiseWWWAYsFRYut8TC5ZZYuNwSiy23xGLLrbA4+6zGYsstsfgmsUos7PbssxdYBiwVFi63xGLLLW+5ttwSiy23xGLLrbA4+6zGYsstsXC5JRYut8QyYKmwcLklFltuicWWW2Kx5ZZYbLkVlt2effZcLOz27LMXWLjcEguXW2IZbrnVLdeWW2Kx5ZZYbLklFltuicWWW2HZ7dlnL7BwuSUWLrfEwuWWWAYsFRZbbonFlltiseWWWHyTWCUWdnv22XMsuz377AUWLrfEYsutbrnOPquxDFgqLLbcEostt8Riyy2xcLklFi63wrLbs89eYOFySyy23BKLLbfEMmCpsNhySyy+SawSC7s9++wFFi63xMLlVlicfVbecp19VmOx5ZZYbLkllgFLhcWW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","brillig_names":["get_contract_instance_internal","get_public_keys_and_partial_address","decompose_hint","notify_created_note_oracle_wrapper","get_key_validation_request","random","lt_32_hint","lte_16_hint","build_msg_block_iter","pad_msg_block","attach_len_to_msg_block","build_msg_block_iter","emit_encrypted_note_log_oracle_wrapper","directive_invert","directive_integer_quotient"]},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["private","noinitcheck"],"abi":{"error_types":{"12265343917440897559":{"error_kind":"fmtstring","item_types":[],"length":20}},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"},"visibility":"private"},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"},"visibility":"private"},{"name":"cancellable","type":{"kind":"boolean"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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VJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRVJpRNJpRNJpRNJpRNJpRtA2W1EYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzik4zik4zik4zik4zir7BktppRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRjFoRjFoRjFoRjFoRjE2WFIHzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgGzSgG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otKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotKMotGMotGMotGMotGMom2wpDaaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUTSaUXSaUXSaUXSaUXSaUfQNltROM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pOM4pBM4pBM4pBM4pBM4qxwZI6aEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYxaEYx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FAfNKA6aURw0ozhoRnHQjOKgGcVBM4qDZhQHzSgOmlEcNKM4aEZx0IzioBnFQTOKg2YUB80oDppRHDSjOGhGcdCM4qAZxUEzioNmFAfNKA6aURw0ozhoRnHQjOKgGcVBM4qDZhQHzSgOmlEcNKM4aEZx0IzioBnFQTOKg2YUB80oDppRHDSjOGhGcdCM4qAZxUEzioNmFAfNKA6aURw0ozhoRnHQjOKgGcVBM4qDZhQHzSgOmlEcNKM4aEZx0Iyi0Iyi0Iyi0Iyi0IyibLCkFppRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRFJpRVJpRVJpRVJpRVJpR1A2W1EozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikozikYzikYzikYzikYzirbBktpoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtFoRtEuN4qyqd52vWU9L+i1jXNu961Ltqd92yubx5T5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o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o6g0o2g0o2g0o2g0o2g0o2gbLKmNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSNZhSdZhSdZhSdZhSdZhR9gyW104yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04yi04xi0Ixi0Ixi0Ixi0IxibLCkDppRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRDJpRTJpRTJpRTJpRTJpRzA2W1EkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikkzikUzikUzikUzikUzirXBkrpoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrFoRrEuN4qyqd52vWU9L+i1jfe7svet94x62re9snlMmb+2jmnPFvtrrdVorbPPWi9Hm1+51tFordJordpordZord5ordForei+ae/66r7rabPeX6uoV912rjHy+eY/l4tunc5fLrp7On25hm6gzl8uuoc6f7noNur85Z7RSeW4vchI04OP2Bl537iejk3Gr4KMVpDTCoqrC9q/bb2/nVVeFpS0gopW0IS9h05R5qcWNGgFCa0gWlI7LamdltQetIKSVhAtqX3CCoqNVtCgFXR1Uu/78/uuczwv6JU9u8vtRsr+3xkvWvDQxeu3xev3xeunXWWCdpWJohU02W+5mPdd+xzzxVsut8XrH4vXf8YlL+J+Jym3o5tUT29oqU0Odi37p6f71vV0j2o/Tq9srR63Y6Ox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ikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzikYzik4zik4zik4zik4zir7BktppRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtFpRtEvN4qyqd52vWU9L+i1jXNu961Ltqd92yubx5T5a+uY9myxv9YajdaajdZajdY6+6z1cmr6lWsFXctf2djTbht7zfvGEvarfNCV/yPlg/qEj5Rv5BNlX2vddz33m/fvnyiiXnXbucbI55v/XC66Zzl/uei25fzlojuX85cLb162afetdbOX9X+rhqT0fpEujz9epO1bNSQHax2N1iqN1qqN1mrfaq33rWOOFx8g7FvdyDlY67e6kXOw1m91I+dgrd/qRs7BWr9X3/TuWv179U3vr/V79U3vr/V79U3vr/V79U3vr9UarbVR3+SN+iZv1Dd5o77JG/VN0ahvikZ9UzTqm6JR33T5ZJevXGujvika9U3RqG+KRn1TNOqbslHflI36pmzUN2WjvunyOUtfudZGfVM26puyUd+UjfqmbNQ3VaO+qRr1TdWob6pGfdPlU8++cq2N+qZq1DdVo76pGvVN1ahvmo36ptmob5qN+qbZqG+6fAbhV661Ud80G/VNs1HfNBv1TbNP3xRbn74ptj59U2x9+qbY+vRNsVmjtfbpm2Lr0zfF1qdviq1P3xRbo75pNOqbRqO+aTTqm0ajvuny+bxfudZGfdNo1DeNRn3TaNQ3jUZ9kzTqm6RR3ySN+iZp1DddPi37K9faqG/6XoO4D9baqG/6XoO4D9baqG/6XoO4D9baqG/SRn2TNuqb2PPAT15ro76JPQn85LU26pvoM8BPXWujvumbzQt/f62N+qZvNi/8/bU26psazQuPRvPCo9G88Gg0LzwazQuPRvPCo9G88Gg0LzwazQuPRvPCo9G88Gg0LzwazQuPRvPCo9G88Gg0LzwazQuPRvPCo9G88Gg0LzwazQuPRvPCo9G88Gg0LzwazQuPRvPCo9G88Gg0LzwazQuPRvPCo9G88Gg0LzwazQuPRvPCo9G88Gg0LzwazQuPRvPCo9G88Gg0LzwazQuPRvPCo9G88Gg0LzwazQuPRvPCo9G88Gg0LzwazQuPRvPCo9G88Gg0LzwazQuPRvPCo9G88Gg0LzwbzQvPRvPCs9G88Gw0Lzw3a7TWPn1TNpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeHZaF54NpoXno3mhWejeeH5veaFT5n3tdrLtX6rvulgrZf3TRp+27WN8f5ah8es2659jvl8rT/qr+tngJ9c/2DXPz2f6i97Wb8sXr8uXr8tXr+j649Sue06KvToGqr3rC2PP2RtXT8n+wvXmo3WWo3Wyu4XTl3rYPcWv7vW9/r7Guw+5Ny1snuWc9fK7m/OXas1Wuv36pveX+v36pveX+v36pveX+v36pveX+v36pveXas06pukUd8kjfomadQ3XT8n+wvX2qhvkkZ9kzTqm6RR3ySN+iZt1Ddpo75JG/VN2qhvun5O9heutVHfpI36Jm3UN2mjvkkb9U3WqG+yRn2TNeqbrFHfdP2c7C9ca6O+yRr1Tdaob7JGfZM16pu8Ud/kjfomb9Q3eaO+6fo52V+41kZ9kzfqm7xR3+SN+iZv1DdFo74pGvVN0ahvikZ90/Vzsr9wrY36pmjUN0Wjvika9U3RqG/KRn1TNuqbslHflI36puvnZH/hWhv1Tdmob8pGfVM26puyUd9UjfqmatQ3VaO+qRr1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GUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWjGUWjGUWjGUWjGUXbYEltNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKPoNKPoNKPoNKPoNKPoGyypnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUnWYUg2YUg2YUg2YUg2YUY4MlddCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtCMYtKMYtKMYtKMYtKMYm6wpE6aUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUUyaUSyaUSyaUSyaUSyaUawNltRFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4pFM4qTZhQnzShOmlGcNKM4N1hST5pRnDSjOGlGcdKM4qQZxUkzipNmFCfNKE6aUZw0ozhpRnHSjOKkGcVJM4qTZhQnzShOmlGcNKM4aUZx0ozipBnFeblRlE31tust63lBr228t5D3rUu2p33bK5vHlPlr65j2bLG/1pqN1lqN1jr7rPVyD/qVax2N1iqN1qqN1mqN1uqN1orum/aur+67njbr/bWKetVt5xojn2/+c7no1un85aK7p/OXi26gTl+uoXuo85eLbqPOX+4ZnVSO24uMND34iJ2R943r6dhk/CpIaQUZrSC/uqDa7ndFSuVlQUErKGkFFe09NGEFnaLMTy1o0AqiJbXTktppSe1OKyhoBdGS2otW0IQVFButoKuTet+f33ed43lBr+zZXW43Uvb/znjRgocsXr8uXr8tXj/tKhO0q0wkraBiv+Vi3nftc8yXb7m5dv25LV7/GZe8iPudpNyOblI9vaGlNjnYtZTLfet6uke1H6dXtlaP27HR2J6+aBjy2r7nVrdFzrHpv//J+1+nzBl4HMkfR1IfR/KkI2mPI3nSkfTHkTzpSMbjSJ50JHPx3mPx3jUX711r8d614LdrDuuH3645rF9h9+9OGY9yakG0L1iL9gVr0W7bF+22fdFu20/abfs5aAUJrSBaUk9aUk9aUk9aUk9aUk9aUk9WUte2sZJ6L4iV1HtBrKTeC2Il9V4QK6n3glhJvRfESuq9IFZS7wWxknoviJbUg5bUg5bUg5bUg5bUg5bUg5bUg5bUg5bUg5bUg5bUQktqoSW10JJaaEkttKQWWlILLamFltRCS2qhJbXSklppSa20pFZaUistqZWW1EpLaqUltdKSWmlJbbSkNlpSGy2pjZbURktqGK7fC6IlNQzX7wXRktpoSe20pHZaUjstqZ2W1E5LaqcltdOSGobr9/8jLalhuL42GK7fC6IlddCSOmhJHbSkDlpSBy2pg5bUQUvqoCV10pI6aUmdtKROWlInLamTltRJS+qkJXXSkjppSV20pC5aUhctqWFGcS+IltQwo7gXREtqmFHcC6IlNcwo1gYzintBtKSGGcW9IFpSw4ziXhAtqWFGcS+IltQwo7gXBEvqQTOKg2YUB80oDppRHBssqQfNKI7LH+Eueh+MJTaejZp59Vkksdd823VUPFusvbL5u4+I2teajdZajdY6+6x1bI3WOhqtlfXo6L0g1qOj94KMVhDr0dF7QUErKGkFFa2gCStINlpBg1YQLamFltRCS2qhJbXQklpoSS20pBZaUistqZWW1EpLaqUltdKSWmlJrbSkVlpSKy2plZbURktqoyW10ZLaaElttKQ2WlIbLamNltRGS2qjJbXTktppSe20pHZaUjstqZ2W1E5LaqcltdOS2mlJHbSkDlpSBy2pg5bUQUvqoCV10JI6aEkdtKQOWlInLamTltRJS+qkJXXSkjppSZ20pE5aUictqZOW1EVL6qIlddGSumhJXbSkLlpSFy2pi5bURUvqoiX1pCX1pCX1pCX1pCX1pCX1pCX1pCX1pCX1pCX1hCW1bLCklg2W1LLBklo2WFLLBktq2WBJLRssqWWDJbVssKSWjZbUg5bUg5bUNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKMoNKOoNKOoNKOoNKOoNKOoGyyplWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUlWYUjWYUjWYUjWYUjWYUbYMltdGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGMotGM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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","enqueue_public_function_call_internal","call_private_function_internal","debug_log_oracle_wrapper","notify_set_min_revertible_side_effect_counter_oracle_wrapper","directive_invert","directive_integer_quotient"]},{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{"12265343917440897559":{"error_kind":"fmtstring","item_types":[],"length":20}},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":3,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"}},"bytecode":"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","debug_symbols":"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","brillig_names":["compute_note_hash_and_optionally_a_nullifier"]},{"name":"lookup_validity","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"parameters":[{"name":"consumer","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"kind":"boolean"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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","brillig_names":["lookup_validity"]},{"name":"verify_private_authwit","is_unconstrained":false,"custom_attributes":["private","noinitcheck","view"],"abi":{"error_types":{"12265343917440897559":{"error_kind":"fmtstring","item_types":[],"length":20}},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","pack_returns_oracle_wrapper","directive_invert","directive_integer_quotient"]}],"outputs":{"globals":{"notes":[{"fields":[{"kind":"integer","sign":false,"value":"00000000000000000000000000000000000000000000000000000000a74a8dc0"},{"kind":"string","value":"PublicKeyNote"},{"fields":[{"name":"x","value":{"fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000000"}},{"name":"nullable","value":{"kind":"boolean","value":false}}],"kind":"struct"}},{"name":"y","value":{"fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}},{"name":"nullable","value":{"kind":"boolean","value":false}}],"kind":"struct"}},{"name":"npk_m_hash","value":{"fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000002"}},{"name":"nullable","value":{"kind":"boolean","value":false}}],"kind":"struct"}}],"kind":"struct"}],"kind":"tuple"}],"storage":[{"fields":[{"name":"contract_name","value":{"kind":"string","value":"SchnorrAccount"}},{"name":"fields","value":{"fields":[{"name":"signing_public_key","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}}],"kind":"struct"}}],"kind":"struct"}}],"kind":"struct"}]},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"signing_pub_key_x","type":{"kind":"field"}},{"name":"signing_pub_key_y","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::constructor_parameters"}}],"kind":"struct","path":"SchnorrAccount::constructor_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"}},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"}},{"name":"cancellable","type":{"kind":"boolean"}}],"kind":"struct","path":"SchnorrAccount::entrypoint_parameters"}}],"kind":"struct","path":"SchnorrAccount::entrypoint_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"inner_hash","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::verify_private_authwit_parameters"}},{"name":"return_type","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::verify_private_authwit_abi"}]}},"file_map":{"104":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/payload.nr","source":"use dep::protocol_types::{\n address::AztecAddress, scalar::Scalar, point::Point, constants::GENERATOR_INDEX__SYMMETRIC_KEY,\n hash::poseidon2_hash_with_separator\n};\nuse std::{\n aes128::aes128_encrypt, embedded_curve_ops::fixed_base_scalar_mul as derive_public_key,\n hash::from_field_unsafe as fr_to_fq_unsafe, field::bn254::decompose\n};\n\nuse crate::{\n oracle::random::random, utils::point::point_to_bytes, encrypted_logs::{header::EncryptedLogHeader},\n keys::{point_to_symmetric_key::point_to_symmetric_key, public_keys::{OvpkM, IvpkM}}\n};\n\npub fn compute_encrypted_log<let P: u32, let M: u32>(\n contract_address: AztecAddress,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n plaintext: [u8; P]\n) -> [u8; M] {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ivpk);\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, ivpk);\n let outgoing_body_ciphertext: [u8; 144] = compute_outgoing_body_ciphertext(recipient, ivpk, fr_to_fq(ovsk_app), eph_sk, eph_pk);\n\n let mut encrypted_bytes: [u8; M] = [0; M];\n // @todo We ignore the tags for now\n\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[64 + i] = eph_pk_bytes[i];\n }\n for i in 0..48 {\n encrypted_bytes[96 + i] = incoming_header_ciphertext[i];\n encrypted_bytes[144 + i] = outgoing_header_ciphertext[i];\n }\n for i in 0..144 {\n encrypted_bytes[192 + i] = outgoing_body_ciphertext[i];\n }\n // Then we fill in the rest as the incoming body ciphertext\n let size = M - 336;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[336 + i] = incoming_body_ciphertext[i];\n }\n\n // Current unoptimized size of the encrypted log\n // incoming_tag (32 bytes)\n // outgoing_tag (32 bytes)\n // eph_pk (32 bytes)\n // incoming_header (48 bytes)\n // outgoing_header (48 bytes)\n // outgoing_body (144 bytes)\n // incoming_body_fixed (64 bytes)\n // incoming_body_variable (P + 16 bytes padding)\n encrypted_bytes\n}\n\n/// Converts a base field element to scalar field element.\n/// This is fine because modulus of the base field is smaller than the modulus of the scalar field.\nfn fr_to_fq(r: Field) -> Scalar {\n let (lo, hi) = decompose(r);\n\n Scalar { lo, hi }\n}\n\nfn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n\n // We use the randomness to preserve the privacy of both the sender and recipient via encryption, so a malicious\n // sender could use non-random values to reveal the plaintext. But they already know it themselves anyway, and so\n // the recipient already trusts them to not disclose this information. We can therefore assume that the sender will\n // cooperate in the random value generation.\n let randomness = unsafe {\n random()\n };\n\n // We use the unsafe version of `fr_to_fq` because multi_scalar_mul (called by derive_public_key) will constrain\n // the scalars.\n let eph_sk = fr_to_fq_unsafe(randomness);\n let eph_pk = derive_public_key(eph_sk);\n\n (eph_sk, eph_pk)\n}\n\npub fn compute_incoming_body_ciphertext<let P: u32>(plaintext: [u8; P], eph_sk: Scalar, ivpk: IvpkM) -> [u8] {\n let full_key = point_to_symmetric_key(eph_sk, ivpk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(plaintext, iv, sym_key)\n}\n\n/// Encrypts ephemeral secret key and recipient's ivpk --> with this information the recipient of outgoing will\n/// be able to derive the key with which the incoming log can be decrypted.\npub fn compute_outgoing_body_ciphertext(\n recipient: AztecAddress,\n recipient_ivpk: IvpkM,\n ovsk_app: Scalar,\n eph_sk: Scalar,\n eph_pk: Point\n) -> [u8; 144] {\n // Again, we could compute `eph_pk` here, but we keep the interface more similar\n // and also make it easier to optimise it later as we just pass it along\n\n let mut buffer = [0 as u8; 128];\n\n let serialized_eph_sk_high: [u8; 32] = eph_sk.hi.to_be_bytes();\n let serialized_eph_sk_low: [u8; 32] = eph_sk.lo.to_be_bytes();\n\n let address_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let serialized_recipient_ivpk = point_to_bytes(recipient_ivpk.to_point());\n\n for i in 0..32 {\n buffer[i] = serialized_eph_sk_high[i];\n buffer[i + 32] = serialized_eph_sk_low[i];\n buffer[i + 64] = address_bytes[i];\n }\n for i in 0..32 {\n buffer[i + 96] = serialized_recipient_ivpk[i];\n }\n\n // We compute the symmetric key using poseidon.\n let full_key: [u8; 32] = poseidon2_hash_with_separator(\n [ovsk_app.hi, ovsk_app.lo, eph_pk.x, eph_pk.y],\n GENERATOR_INDEX__SYMMETRIC_KEY as Field\n ).to_be_bytes();\n\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(buffer, iv, sym_key).as_array()\n}\n\nmod test {\n use crate::{\n encrypted_logs::payload::{compute_encrypted_log, compute_incoming_body_ciphertext, compute_outgoing_body_ciphertext},\n keys::public_keys::{OvpkM, IvpkM}\n };\n use std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\n use dep::protocol_types::{address::AztecAddress, point::Point, scalar::Scalar};\n use std::test::OracleMock;\n\n #[test]\n unconstrained fn test_encrypted_log_matches_typescript() {\n // All the values in this test were copied over from `tagged_log.test.ts`\n let contract_address = AztecAddress::from_field(0x10f48cd9eff7ae5b209c557c70de2e657ee79166868676b787e9417e19260e04);\n let ovsk_app = 0x03a6513d6def49f41d20373d2cec894c23e7492794b08fc50c0e8a1bd2512612;\n let ovpk_m = OvpkM {\n inner: Point {\n x: 0x1961448682803198631f299340e4206bb12809d4bebbf012b30f59af73ba1a15,\n y: 0x133674060c3925142aceb4f1dcd9f9137d0217d37ff8729ee5ceaa6e2790353d,\n is_infinite: false\n }\n };\n let ivpk_m = IvpkM {\n inner: Point {\n x: 0x260cd3904f6df16e974c29944fdc839e40fb5cf293f03df2eb370851d3a527bc,\n y: 0x0eef2964fe6640e84c82b5d2915892409b38e9e25d39f68dd79edb725c55387f,\n is_infinite: false\n }\n };\n\n let plaintext = [\n 0, 0, 0, 1, 48, 22, 64, 206, 234, 117, 131, 145, 178, 225, 97, 201, 44, 5, 19, 241, 41, 2, 15, 65, 37, 37, 106, 253, 174, 38, 70, 206, 49, 9, 159, 92, 16, 244, 140, 217, 239, 247, 174, 91, 32, 156, 85, 124, 112, 222, 46, 101, 126, 231, 145, 102, 134, 134, 118, 183, 135, 233, 65, 126, 25, 38, 14, 4, 15, 228, 107, 229, 131, 183, 31, 74, 181, 183, 12, 38, 87, 255, 29, 5, 204, 207, 29, 41, 42, 147, 105, 98, 141, 26, 25, 79, 148, 78, 101, 153, 0, 0, 16, 39\n ];\n\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk);\n\n let recipient = AztecAddress::from_field(0x10ee41ee4b62703b16f61e03cb0d88c4b306a9eb4a6ceeb2aff13428541689a2);\n\n let log: [u8; 448] = compute_encrypted_log(contract_address, ovsk_app, ovpk_m, ivpk_m, recipient, plaintext);\n\n // The following value was generated by `tagged_log.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let encrypted_log_from_typescript = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 70, 12, 14, 67, 77, 132, 110, 193, 234, 40, 110, 64, 144, 235, 86, 55, 111, 242, 123, 221, 193, 170, 202, 225, 216, 86, 84, 159, 112, 31, 167, 126, 79, 51, 186, 47, 71, 253, 172, 99, 112, 241, 59, 197, 241, 107, 186, 232, 87, 187, 230, 171, 62, 228, 234, 42, 51, 145, 146, 238, 242, 42, 71, 206, 13, 244, 66, 111, 195, 20, 203, 98, 148, 204, 242, 145, 183, 156, 29, 141, 54, 44, 220, 194, 35, 229, 16, 32, 204, 211, 49, 142, 112, 82, 202, 116, 241, 254, 146, 42, 217, 20, 189, 70, 228, 182, 171, 205, 104, 27, 99, 171, 28, 91, 244, 21, 30, 130, 240, 5, 72, 174, 124, 97, 197, 157, 248, 193, 23, 193, 76, 46, 141, 144, 70, 211, 45, 67, 167, 218, 129, 140, 104, 190, 41, 110, 249, 209, 68, 106, 135, 164, 80, 235, 63, 101, 80, 32, 13, 38, 99, 145, 91, 11, 173, 151, 231, 247, 65, 153, 117, 229, 167, 64, 239, 182, 126, 235, 83, 4, 169, 8, 8, 160, 4, 235, 252, 21, 96, 84, 161, 69, 145, 145, 215, 254, 161, 117, 246, 198, 65, 89, 179, 194, 90, 19, 121, 12, 202, 114, 80, 195, 14, 60, 128, 105, 142, 100, 86, 90, 108, 157, 219, 22, 172, 20, 121, 195, 25, 159, 236, 2, 70, 75, 42, 37, 34, 2, 17, 149, 20, 176, 32, 18, 204, 56, 117, 121, 34, 15, 3, 88, 123, 64, 68, 74, 233, 63, 59, 131, 222, 194, 192, 167, 110, 217, 10, 128, 73, 129, 172, 61, 43, 12, 98, 165, 203, 191, 154, 161, 150, 4, 239, 95, 48, 60, 159, 33, 222, 142, 102, 73, 193, 236, 145, 197, 160, 216, 254, 113, 243, 25, 244, 251, 192, 222, 35, 7, 114, 101, 35, 152, 151, 112, 24, 32, 94, 138, 71, 160, 91, 68, 131, 217, 117, 140, 19, 147, 37, 197, 192, 21, 43, 172, 239, 239, 205, 15, 110, 76, 26, 211, 42, 117, 4, 15, 135, 145, 247, 37, 73, 84, 164, 149, 250, 35, 0, 205, 105, 178, 143, 104, 98, 100, 250, 193, 154, 136, 175, 177, 109, 225, 207, 252, 147, 250, 250, 189, 117, 147, 101, 230, 132\n ];\n assert_eq(encrypted_log_from_typescript, log);\n }\n\n #[test]\n fn test_incoming_body_ciphertext_matches_typescript() {\n // All the values in this test were copied over from `encrypted_note_log_incoming_body.test.ts`\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let ivpk = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n let plaintext = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3\n ];\n\n // `compute_incoming_body_ciphertext(...)` function then derives symmetric key from `eph_sk` and `ivpk` and encrypts\n // the note plaintext using AES-128.\n let ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, ivpk);\n\n // The following value was generated by `encrypted_note_log_incoming_body.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let note_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160, 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157, 131, 149, 96, 236, 253, 96, 172, 157, 30, 27, 176, 228, 74, 242, 190, 138, 48, 33, 93, 46, 37, 223, 130, 25, 245, 188, 163, 159, 223, 187, 24, 139, 206, 131, 154, 159, 130, 37, 17, 158, 114, 242, 141, 124, 193, 232, 54, 146, 96, 145, 100, 125, 234, 57, 43, 95, 115, 183, 39, 121, 232, 134, 229, 148, 25, 46, 77, 87, 127, 95, 7, 77, 188, 37, 234, 245, 142, 232, 87, 252, 28, 67, 67, 90, 214, 254, 89, 47, 68, 66, 187, 227, 8, 59, 162, 25, 141, 97, 141, 217, 197, 115, 15, 212, 202, 157, 41, 150, 62, 219, 57, 224, 92, 185, 212, 142, 94, 146, 41, 178, 145, 68, 169, 23, 185, 206, 138, 70, 47, 176, 210, 165, 236, 23, 206, 229, 108\n ];\n\n assert_eq(note_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..note_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], note_body_ciphertext_from_typescript[i]);\n }\n }\n\n #[test]\n fn test_encrypted_log_outgoing_body_matches_typescript() {\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000d0d302ee245dfaf2807e604eec4715fe,\n hi: 0x000000000000000000000000000000000f096b423017226a18461115fa8d34bb\n };\n let recipient_ivsk = Scalar {\n lo: 0x000000000000000000000000000000004828f8f95676ebb481df163f87fd4022,\n hi: 0x000000000000000000000000000000000f4d97c25d578f9348251a71ca17ae31\n };\n let sender_ovsk_app = Scalar {\n lo: 0x0000000000000000000000000000000074d2e28c6bc5176ac02cf7c7d36a444e,\n hi: 0x00000000000000000000000000000000089c6887cb1446d86c64e81afc78048b\n };\n\n let eph_pk = derive_public_key(eph_sk);\n let recipient_ivpk = IvpkM { inner: derive_public_key(recipient_ivsk) };\n\n let recipient = AztecAddress::from_field(0xdeadbeef);\n\n let ciphertext = compute_outgoing_body_ciphertext(recipient, recipient_ivpk, sender_ovsk_app, eph_sk, eph_pk);\n\n // The following value was generated by `encrypted_log_outgoing_body.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let outgoing_body_ciphertext_from_typescript = [\n 127, 182, 227, 75, 192, 197, 54, 47, 168, 134, 233, 148, 251, 46, 86, 12, 73, 50, 238, 50, 31, 174, 27, 202, 110, 77, 161, 197, 244, 124, 17, 100, 143, 150, 232, 14, 156, 248, 43, 177, 16, 82, 244, 103, 88, 74, 84, 200, 15, 65, 187, 14, 163, 60, 91, 22, 104, 31, 211, 190, 124, 121, 79, 92, 239, 65, 185, 106, 51, 178, 168, 137, 84, 43, 79, 158, 151, 152, 83, 42, 170, 13, 106, 209, 254, 74, 39, 145, 73, 215, 17, 234, 196, 89, 30, 58, 120, 127, 88, 69, 121, 61, 18, 206, 89, 118, 243, 238, 177, 71, 73, 47, 147, 4, 155, 25, 173, 248, 206, 52, 17, 180, 122, 186, 106, 191, 252, 102, 197, 91, 16, 39, 94, 91, 224, 30, 168, 177, 26, 144, 5, 124, 128, 6\n ];\n\n for i in 0..outgoing_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], outgoing_body_ciphertext_from_typescript[i]);\n }\n assert_eq(outgoing_body_ciphertext_from_typescript.len(), ciphertext.len());\n }\n}\n"},"106":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/header.nr","source":"use dep::protocol_types::{address::AztecAddress, scalar::Scalar, point::Point};\n\nuse crate::keys::{point_to_symmetric_key::point_to_symmetric_key, public_keys::ToPoint};\n\nuse std::aes128::aes128_encrypt;\n\npub struct EncryptedLogHeader {\n address: AztecAddress,\n}\n\nimpl EncryptedLogHeader {\n fn new(address: AztecAddress) -> Self {\n EncryptedLogHeader { address }\n }\n\n fn compute_ciphertext<T>(self, secret: Scalar, pk: T) -> [u8; 48] where T: ToPoint {\n let full_key = point_to_symmetric_key(secret, pk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n\n let input: [u8; 32] = self.address.to_field().to_be_bytes();\n aes128_encrypt(input, iv, sym_key).as_array()\n }\n}\n\n#[test]\nunconstrained fn test_encrypted_log_header_matches_noir() {\n let address = AztecAddress::from_field(0xdeadbeef);\n let header = EncryptedLogHeader::new(address);\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let point = crate::keys::public_keys::IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n let ciphertext = header.compute_ciphertext(secret, point);\n\n // The following value was generated by `encrypted_log_header.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_header_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 194, 44, 7, 131, 160, 83, 64, 181, 98, 38, 153, 214, 62, 171, 253, 161, 111, 191, 28, 247, 216, 26, 222, 171, 176, 218, 48, 209, 73, 89, 200, 209\n ];\n\n assert_eq(ciphertext, expected_header_ciphertext_from_typescript);\n}\n"},"107":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/encrypted_note_emission.nr","source":"use crate::{\n context::PrivateContext, note::{note_emission::NoteEmission, note_interface::NoteInterface},\n keys::{getters::get_ovsk_app, public_keys::{PublicKeys, OvpkM, IvpkM}},\n encrypted_logs::payload::compute_encrypted_log\n};\nuse dep::protocol_types::{hash::sha256_to_field, address::AztecAddress, abis::note_hash::NoteHash};\n\nfn compute_raw_note_log<Note, let N: u32>(\n context: PrivateContext,\n note: Note,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> (u32, [u8; 416 + N * 32], Field) where Note: NoteInterface<N> {\n let note_header = note.get_header();\n let note_hash_counter = note_header.note_hash_counter;\n let storage_slot = note_header.storage_slot;\n\n // TODO(#8589): use typesystem to skip this check when not needed\n let note_exists = context.note_hashes.storage.any(|n: NoteHash| n.counter == note_hash_counter);\n assert(note_exists, \"Can only emit a note log for an existing note.\");\n\n let contract_address: AztecAddress = context.this_address();\n\n let plaintext = note.to_be_bytes(storage_slot);\n let encrypted_log: [u8; 416 + N * 32] = compute_encrypted_log(contract_address, ovsk_app, ovpk, ivpk, recipient, plaintext);\n let log_hash = sha256_to_field(encrypted_log);\n\n (note_hash_counter, encrypted_log, log_hash)\n}\n\nunconstrained fn compute_raw_note_log_unconstrained<Note, let N: u32>(\n context: PrivateContext,\n note: Note,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> (u32, [u8; 416 + N * 32], Field) where Note: NoteInterface<N> {\n let ovsk_app = get_ovsk_app(ovpk.hash());\n compute_raw_note_log(context, note, ovsk_app, ovpk, ivpk, recipient)\n}\n\n// This function seems to be affected by the following Noir bug:\n// https://github.com/noir-lang/noir/issues/5771\n// If you get weird behavior it might be because of it.\npub fn encode_and_encrypt_note<Note, let N: u32>(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N> {\n | e: NoteEmission<Note> | {\n let ovsk_app: Field = context.request_ovsk_app(ovpk.hash());\n\n let (note_hash_counter, encrypted_log, log_hash) = compute_raw_note_log(*context, e.note, ovsk_app, ovpk, ivpk, recipient);\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\npub fn encode_and_encrypt_note_unconstrained<Note, let N: u32>(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N> {\n | e: NoteEmission<Note> | {\n // Having the log hash be unconstrained here is fine because the way this works is we send the log hash\n // to the kernel, and it gets included as part of its public inputs. Then we send the tx to the sequencer,\n // which includes the kernel proof and the log preimages. The sequencer computes the hashes of the logs\n // and checks that they are the ones in the public inputs of the kernel, and drops the tx otherwise (proposing\n // the block on L1 would later fail if it didn't because of txs effects hash mismatch).\n // So if we don't constrain the log hash, then a malicious sender can compute the correct log, submit a bad\n // log hash to the kernel, and then submit the bad log preimage to the sequencer. All checks will pass, but\n // the submitted log will not be the one that was computed by the app.\n // In the unconstrained case, we don't care about the log at all because we don't do anything with it,\n // and because it's unconstrained: it could be anything. So if a sender chooses to broadcast the tx with a log\n // that is different from the one that was used in the circuit, then they'll be able to, but they were already\n // able to change the log before anyway, so the end result is the same. It's important here that we do not\n // return the log from this function to the app, otherwise it could try to do stuff with it and then that might\n // be wrong.\n // Regarding the note hash counter, this is used for squashing. The kernel assumes that a given note can have\n // more than one log and removes all of the matching ones, so all a malicious sender could do is either: cause\n // for the log to be deleted when it shouldn't have (which is fine - they can already make the content be\n // whatever), or cause for the log to not be deleted when it should have (which is also fine - it'll be a log\n // for a note that doesn't exist).\n let (note_hash_counter, encrypted_log, log_hash) = unsafe {\n compute_raw_note_log_unconstrained(*context, e.note, ovpk, ivpk, recipient)\n };\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\n/// Encrypts a partial log and emits it. Takes recipient keys on the input and encrypts both the outgoing and incoming\n/// logs for the recipient. This is necessary because in the partial notes flow the outgoing always has to be the same\n/// as the incoming to not leak any information (typically the `from` party finalizing the partial note in public does\n/// not know who the recipient is).\npub fn encrypt_and_emit_partial_log<let M: u32>(\n context: &mut PrivateContext,\n log_plaintext: [u8; M],\n recipient_keys: PublicKeys,\n recipient: AztecAddress\n) {\n let ovsk_app: Field = context.request_ovsk_app(recipient_keys.ovpk_m.hash());\n\n let encrypted_log: [u8; 352 + M] = compute_encrypted_log(\n context.this_address(),\n ovsk_app,\n recipient_keys.ovpk_m,\n recipient_keys.ivpk_m,\n recipient,\n log_plaintext\n );\n let log_hash = sha256_to_field(encrypted_log);\n\n // Unfortunately we need to push a dummy note hash to the context here because a note log requires having\n // a counter that corresponds to a note hash in the same call.\n let note_hash_counter = context.side_effect_counter;\n context.push_note_hash(5);\n\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n}\n"},"110":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/public_keys.nr","source":"use dep::protocol_types::{\n address::PublicKeysHash, constants::GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n hash::poseidon2_hash_with_separator, point::{Point, POINT_LENGTH},\n traits::{Deserialize, Serialize, Empty, is_empty, Hash}\n};\n\nglobal PUBLIC_KEYS_LENGTH: u32 = 12;\n\npub struct PublicKeys {\n npk_m: NpkM,\n ivpk_m: IvpkM,\n ovpk_m: OvpkM,\n tpk_m: TpkM,\n}\n\npub trait ToPoint {\n fn to_point(self) -> Point;\n}\n\npub struct NpkM {\n inner: Point\n}\n\nimpl ToPoint for NpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for NpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\n// Note: If we store npk_m_hash directly we can remove this trait implementation. See #8091\nimpl Hash for NpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\npub struct IvpkM {\n inner: Point\n}\n\nimpl ToPoint for IvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for IvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct OvpkM {\n inner: Point\n}\n\nimpl Hash for OvpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nimpl ToPoint for OvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for OvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct TpkM {\n inner: Point\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Empty for PublicKeys {\n fn empty() -> Self {\n PublicKeys {\n npk_m: NpkM { inner: Point::empty() },\n ivpk_m: IvpkM { inner: Point::empty() },\n ovpk_m: OvpkM { inner: Point::empty() },\n tpk_m: TpkM { inner: Point::empty() }\n }\n }\n}\n\nimpl Eq for PublicKeys {\n fn eq(self, other: PublicKeys) -> bool {\n (self.npk_m.inner == other.npk_m.inner)\n & (self.ivpk_m.inner == other.ivpk_m.inner)\n & (self.ovpk_m.inner == other.ovpk_m.inner)\n & (self.tpk_m.inner == other.tpk_m.inner)\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(\n if is_empty(self) {\n 0\n } else {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field)\n }\n )\n }\n}\n\nimpl Serialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.inner.x,\n self.npk_m.inner.y,\n self.npk_m.inner.is_infinite as Field,\n self.ivpk_m.inner.x,\n self.ivpk_m.inner.y,\n self.ivpk_m.inner.is_infinite as Field,\n self.ovpk_m.inner.x,\n self.ovpk_m.inner.y,\n self.ovpk_m.inner.is_infinite as Field,\n self.tpk_m.inner.x,\n self.tpk_m.inner.y,\n self.tpk_m.inner.is_infinite as Field\n ]\n }\n}\n\nimpl Deserialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM { inner: Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x: serialized[3], y: serialized[4], is_infinite: serialized[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x: serialized[6], y: serialized[7], is_infinite: serialized[8] as bool } },\n tpk_m: TpkM { inner: Point { x: serialized[9], y: serialized[10], is_infinite: serialized[11] as bool } }\n }\n }\n}\n\n#[test]\nunconstrained fn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } }\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash = 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nunconstrained fn compute_empty_hash() {\n let keys = PublicKeys::empty();\n\n let actual = keys.hash();\n let test_data_empty_hash = 0x0000000000000000000000000000000000000000000000000000000000000000;\n\n assert(actual.to_field() == test_data_empty_hash);\n}\n\n#[test]\nunconstrained fn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } }\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.inner.x, deserialized.npk_m.inner.x);\n assert_eq(keys.npk_m.inner.y, deserialized.npk_m.inner.y);\n assert_eq(keys.ivpk_m.inner.x, deserialized.ivpk_m.inner.x);\n assert_eq(keys.ivpk_m.inner.y, deserialized.ivpk_m.inner.y);\n assert_eq(keys.ovpk_m.inner.x, deserialized.ovpk_m.inner.x);\n assert_eq(keys.ovpk_m.inner.y, deserialized.ovpk_m.inner.y);\n assert_eq(keys.tpk_m.inner.x, deserialized.tpk_m.inner.x);\n assert_eq(keys.tpk_m.inner.y, deserialized.tpk_m.inner.y);\n}\n"},"113":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/point_to_symmetric_key.nr","source":"use dep::protocol_types::{constants::GENERATOR_INDEX__SYMMETRIC_KEY, scalar::Scalar, point::Point, utils::arr_copy_slice};\nuse crate::utils::point::point_to_bytes;\nuse std::{hash::sha256, embedded_curve_ops::multi_scalar_mul};\n\n// TODO(#5726): This function is called deriveAESSecret in TS. I don't like point_to_symmetric_key name much since\n// point is not the only input of the function. Unify naming with TS once we have a better name.\npub fn point_to_symmetric_key(secret: Scalar, point: Point) -> [u8; 32] {\n let shared_secret: Point = multi_scalar_mul([point], [secret]);\n let shared_secret = point_to_bytes(shared_secret);\n let mut shared_secret_bytes_with_separator = [0 as u8; 33];\n shared_secret_bytes_with_separator = arr_copy_slice(shared_secret, shared_secret_bytes_with_separator, 0);\n shared_secret_bytes_with_separator[32] = GENERATOR_INDEX__SYMMETRIC_KEY;\n sha256(shared_secret_bytes_with_separator)\n}\n\n#[test]\nunconstrained fn test_point_to_symmetric_key_matches_noir() {\n // Value taken from \"derive shared secret\" test in encrypt_buffer.test.ts\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let point = Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n };\n\n let key = point_to_symmetric_key(secret, point);\n\n // The following value was generated by `encrypt_buffer.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let key_from_typescript = [\n 251, 232, 177, 34, 2, 174, 35, 92, 165, 118, 168, 3, 153, 140, 46, 210, 203, 154, 184, 158, 236, 33, 95, 77, 93, 120, 72, 88, 190, 209, 64, 159\n ];\n assert_eq(key, key_from_typescript);\n}\n"},"114":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr","source":"use dep::protocol_types::address::AztecAddress;\nuse crate::{\n oracle::{keys::get_public_keys_and_partial_address, key_validation_request::get_key_validation_request},\n keys::{public_keys::PublicKeys, constants::{NULLIFIER_INDEX, OUTGOING_INDEX}}\n};\n\nmod test;\n\nunconstrained pub fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// A helper function that gets app-siloed outgoing viewing key for a given `ovpk_m_hash`. This function is used\n// in unconstrained contexts only - when computing unconstrained note logs. The safe alternative is `request_ovsk_app`\n// function defined on `PrivateContext`.\nunconstrained pub fn get_ovsk_app(ovpk_m_hash: Field) -> Field {\n get_key_validation_request(ovpk_m_hash, OUTGOING_INDEX).sk_app\n}\n\n// Returns all public keys for a given account, applying proper constraints to the context. We read all\n// keys at once since the constraints for reading them all are actually fewer than if we read them one at a time - any\n// read keys that are not required by the caller can simply be discarded.\npub fn get_public_keys(account: AztecAddress) -> PublicKeys {\n let (hinted_canonical_public_keys, partial_address) = unsafe {\n get_public_keys_and_partial_address(account)\n };\n assert_eq(\n account, AztecAddress::compute(hinted_canonical_public_keys.hash(), partial_address), \"Invalid public keys hint for address\"\n );\n\n hinted_canonical_public_keys\n}\n"},"125":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/note_emission.nr","source":"/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\npub struct NoteEmission<Note> {\n note: Note\n}\n\nimpl<Note> NoteEmission<Note> {\n pub fn new(note: Note) -> Self {\n Self { note }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option<T>`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting\n * a change note in a token's transfer function only when there is \"change\" left).\n */\npub struct OuterNoteEmission<Note> {\n emission: Option<NoteEmission<Note>>,\n}\n\nimpl<Note> OuterNoteEmission<Note> {\n pub fn new(emission: Option<NoteEmission<Note>>) -> Self {\n Self { emission }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](NoteEmission<Note>) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n"},"127":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/note_getter/mod.nr","source":"use dep::protocol_types::{constants::{MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, GET_NOTES_ORACLE_RETURN_LENGTH}};\nuse crate::context::PrivateContext;\nuse crate::note::{\n constants::{GET_NOTE_ORACLE_RETURN_LENGTH, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, Select, Sort, SortOrder, NoteStatus, PropertySelector},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request\n};\nuse crate::oracle;\nuse crate::utils::comparison::compare;\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\n\nmod test;\n\nfn extract_property_value_from_selector<let N: u32>(\n serialized_note: [Field; N],\n selector: PropertySelector\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the serialized note.\n // This allows easier packing and custom (de)serialization schemas. A note property is located\n // inside the serialized note using the index inside the array, a byte offset and a length.\n let value: [u8; 32] = serialized_note[selector.index].to_be_bytes();\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[31 + offset - i] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_note_header<Note, let N: u32>(\n context: PrivateContext,\n storage_slot: Field,\n note: Note\n) where Note: NoteInterface<N> {\n let header = note.get_header();\n let contract_address = context.this_address();\n assert(header.contract_address.eq(contract_address), \"Mismatch note header contract address.\");\n assert(header.storage_slot == storage_slot, \"Mismatch note header storage slot.\");\n}\n\nfn check_note_fields<let N: u32>(\n serialized_note: [Field; N],\n selects: BoundedVec<Option<Select>, N>\n) {\n for i in 0..selects.len {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field = extract_property_value_from_selector(serialized_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()), \"Mismatch return note field.\"\n );\n }\n}\n\nfn check_notes_order<let N: u32>(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec<Option<Sort>, N>\n) {\n for i in 0..sorts.len {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note<Note, let N: u32>(\n context: &mut PrivateContext,\n storage_slot: Field\n) -> (Note, Field) where Note: NoteInterface<N> + NullifiableNote {\n let note = unsafe {\n get_note_internal(storage_slot)\n };\n\n // Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do is check that\n // the metadata is correct, and that the note exists.\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (note, note_hash_for_read_request)\n}\n\npub fn get_notes<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>) where Note: NoteInterface<N> + NullifiableNote + Eq {\n let opt_notes = unsafe {\n get_notes_internal(storage_slot, options)\n };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor<Note, PREPROCESSOR_ARGS>(\n notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PREPROCESSOR_ARGS) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PREPROCESSOR_ARGS\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>) where Note: NoteInterface<N> + NullifiableNote + Eq {\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the contents of the notes (as opposed to simply removing some),\n // the private kernel will later validate that these note actually exist, so transformations would cause for that\n // check to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = crate::utils::collapse_array(filtered_notes);\n let mut note_hashes: BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL> = BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_fields = [0; N];\n for i in 0..options.limit {\n if i < notes.len() {\n let note = notes.get_unchecked(i);\n let fields = note.serialize_content();\n check_note_header(*context, storage_slot, note);\n check_note_fields(fields, options.selects);\n if i != 0 {\n check_notes_order(prev_fields, fields, options.sorts);\n }\n prev_fields = fields;\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1410): test to ensure\n // failure if malicious oracle injects 0 nonce here for a \"pre-existing\" note.\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal<Note, let N: u32>(storage_slot: Field) -> Note where Note: NoteInterface<N> {\n let placeholder_note = [Option::none()];\n let placeholder_fields = [0; GET_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n placeholder_note,\n placeholder_fields,\n placeholder_note_length\n )[0].expect(f\"Failed to get a note\") // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] where Note: NoteInterface<N> {\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\nunconstrained pub fn view_notes<Note, let N: u32>(\n storage_slot: Field,\n options: NoteViewerOptions<Note, N>\n) -> BoundedVec<Note, MAX_NOTES_PER_PAGE> where Note: NoteInterface<N> {\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTES_PER_PAGE];\n let placeholder_fields = [0; VIEW_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let notes_array = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n );\n\n let mut notes = BoundedVec::new();\n for i in 0..notes_array.len() {\n if notes_array[i].is_some() {\n notes.push(notes_array[i].unwrap_unchecked());\n }\n }\n\n notes\n}\n\nunconstrained fn flatten_options<let N: u32>(\n selects: BoundedVec<Option<Select>, N>,\n sorts: BoundedVec<Option<Sort>, N>\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects] = select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects] = select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects] = select.unwrap_unchecked().property_selector.length;\n select_values[num_selects] = select.unwrap_unchecked().value;\n select_comparators[num_selects] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order\n )\n}\n"},"132":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr","source":"use crate::context::{PrivateContext, PublicContext};\nuse crate::note::{\n note_header::NoteHeader, note_interface::{NoteInterface, NullifiableNote},\n utils::{compute_note_hash_for_read_request, compute_note_hash_for_nullify_internal},\n note_emission::NoteEmission\n};\nuse crate::oracle::notes::{notify_created_note, notify_nullified_note};\n\npub fn create_note<Note, let N: u32>(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note\n) -> NoteEmission<Note> where Note: NoteInterface<N> + NullifiableNote {\n let contract_address = (*context).this_address();\n let note_hash_counter = context.side_effect_counter;\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n let serialized_note = Note::serialize_content(*note);\n notify_created_note(\n storage_slot,\n Note::get_note_type_id(),\n serialized_note,\n note_hash,\n note_hash_counter\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(*note)\n}\n\npub fn create_note_hash_from_public<Note, let N: u32>(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note\n) where Note: NoteInterface<N> + NullifiableNote {\n let contract_address = (*context).this_address();\n // Public note hashes are transient, but have no side effect counters, so we just need note_hash_counter != 0\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter: 1 };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n context.push_note_hash(note_hash);\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note<Note, let N: u32>(\n context: &mut PrivateContext,\n note: Note\n) where Note: NoteInterface<N> + NullifiableNote {\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n\n destroy_note_unsafe(context, note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe<Note, let N: u32>(\n context: &mut PrivateContext,\n note: Note,\n note_hash_for_read_request: Field\n) where Note: NoteInterface<N> + NullifiableNote {\n let note_hash_for_nullify = compute_note_hash_for_nullify_internal(note, note_hash_for_read_request);\n let nullifier = note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash_counter = note.get_header().note_hash_counter;\n let notification_note_hash = if (note_hash_counter == 0) {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifyng so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n let nullifier_counter = context.side_effect_counter;\n notify_nullified_note(nullifier, notification_note_hash, nullifier_counter);\n\n context.push_nullifier_for_note_hash(nullifier, notification_note_hash)\n}\n"},"135":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/utils.nr","source":"use crate::{\n context::PrivateContext,\n note::{note_header::NoteHeader, note_interface::{NullifiableNote, NoteInterface}}\n};\n\nuse dep::protocol_types::{\n hash::{\n compute_unique_note_hash, compute_siloed_note_hash as compute_siloed_note_hash,\n compute_siloed_nullifier as compute_siloed_nullifier_from_preimage\n},\n utils::arr_copy_slice\n};\n\npub fn compute_siloed_nullifier<Note, let N: u32>(\n note_with_header: Note,\n context: &mut PrivateContext\n) -> Field where Note: NoteInterface<N> + NullifiableNote {\n let header = note_with_header.get_header();\n let note_hash_for_nullify = compute_note_hash_for_nullify(note_with_header);\n let inner_nullifier = note_with_header.compute_nullifier(context, note_hash_for_nullify);\n\n compute_siloed_nullifier_from_preimage(header.contract_address, inner_nullifier)\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_read_request<Note, let N: u32>(note: Note) -> Field where Note: NoteInterface<N> + NullifiableNote {\n let note_hash = note.compute_note_hash();\n let nonce = note.get_header().nonce;\n let counter = note.get_header().note_hash_counter;\n\n if counter != 0 {\n note_hash\n } else {\n compute_unique_note_hash(nonce, note_hash)\n }\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_nullify_internal<Note, let N: u32>(\n note: Note,\n note_hash_for_read_request: Field\n) -> Field where Note: NoteInterface<N> + NullifiableNote {\n let header = note.get_header();\n\n if header.note_hash_counter != 0 {\n if header.nonce == 0 {\n // Case 1: Transient note\n note_hash_for_read_request\n } else {\n // Case 2: Non-revertible note, nullified by a revertible nullifier\n let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash_for_read_request);\n compute_siloed_note_hash(header.contract_address, unique_note_hash)\n }\n } else {\n // Case 3: Note from a previous transaction\n // note_hash_for_read_request is already the unique_note_hash in this case\n compute_siloed_note_hash(header.contract_address, note_hash_for_read_request)\n }\n}\n\n// TODO(#7775): nuke this commented out code - kept it around as it contains comments which might be helpful when tackling #7775\n// pub fn compute_note_hash_for_nullify<Note, let N: u32, let M: u32>(note: Note) -> Field where Note: NoteInterface<N> {\n// let header = note.get_header();\n// // There are 3 cases for reading a note intended for consumption:\n// // 1. The note was inserted in this transaction, is revertible, or is not nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce == 0)\n// // 2. The note was inserted in this transaction, is non-revertible, and is nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce != 0)\n// // 3. The note was inserted in a previous transaction: (note_hash_counter == 0) & (nonce != 0)\n\n// let note_hash = note.compute_note_hiding_point().x;\n\n// if header.nonce == 0 {\n// // Case 1.\n// // If a note is transient, we just read the note_hash (kernel will hash it with nonce and silo by contract address).\n// note_hash\n// } else {\n// // Case 2: If a note is non-revertible, and is nullified by a revertible nullifier, we cannot squash them in the\n// // private reset circuit. Because if the tx reverts, we will have to keep the note hash and throw away the\n// // nullifier.\n// // And if the tx does not revert, both will be emitted. In which case, the nullifier must be created in the app\n// // from the siloed note hash.\n// // The kernel circuit will check that a nullifier with non-zero note_nonce is linked to a note hash, whose\n// // siloed note hash matches the note hash specified in the nullifier.\n\n// // Case 3: If a note is not from the current transaction, that means we are reading a settled note (from\n// // tree) created in a previous TX. So we need the siloed_note_hash which has already been hashed with\n// // nonce and then contract address. This hash will match the existing leaf in the note hash\n// // tree, so the kernel can just perform a membership check directly on this hash/leaf.\n// let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash);\n// compute_siloed_note_hash(header.contract_address, unique_note_hash)\n// // IMPORTANT NOTE ON REDUNDANT SILOING BY CONTRACT ADDRESS: The note hash computed above is\n// // \"siloed\" by contract address. When a note hash is computed solely for the purpose of\n// // nullification, it is not strictly necessary to silo the note hash before computing\n// // its nullifier. In other words, it is NOT NECESSARY for protocol security that a nullifier\n// // be computed from a siloed note hash. After all, persistable note hashes and nullifiers are\n// // siloed by the kernel circuit. That being said, the siloed note hash computed above CAN be\n// // used for nullifier computation, and this achieves the (arguably unnecessary) property that\n// // nullifiers are computed from a note hash's fully-computed note hash tree leaf.\n// }\n// }\n\npub fn compute_note_hash_for_nullify<Note, let N: u32>(note: Note) -> Field where Note: NoteInterface<N> + NullifiableNote {\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request)\n}\n\nunconstrained pub fn compute_note_hash_and_optionally_a_nullifier<T, let N: u32, let S: u32>(\n deserialize_content: fn([Field; N]) -> T,\n note_header: NoteHeader,\n compute_nullifier: bool,\n serialized_note: [Field; S]\n) -> [Field; 4] where T: NoteInterface<N> + NullifiableNote {\n let mut note = deserialize_content(arr_copy_slice(serialized_note, [0; N], 0));\n note.set_header(note_header);\n\n let note_hash = note.compute_note_hash();\n let unique_note_hash = compute_unique_note_hash(note_header.nonce, note_hash);\n let siloed_note_hash = compute_siloed_note_hash(note_header.contract_address, unique_note_hash);\n\n let inner_nullifier = if compute_nullifier {\n note.compute_nullifier_without_context()\n } else {\n 0\n };\n // docs:start:compute_note_hash_and_optionally_a_nullifier_returns\n [note_hash, unique_note_hash, siloed_note_hash, inner_nullifier]\n // docs:end:compute_note_hash_and_optionally_a_nullifier_returns\n}\n"},"137":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/initializer.nr","source":"use dep::protocol_types::{\n address::AztecAddress, hash::poseidon2_hash_with_separator, constants::GENERATOR_INDEX__CONSTRUCTOR,\n abis::function_selector::FunctionSelector\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext}, oracle::get_contract_instance::get_contract_instance,\n oracle::get_contract_instance::get_contract_instance_avm\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n context.push_nullifier_read_request(init_nullifier);\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let instance = get_contract_instance_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn compute_initialization_hash(init_selector: FunctionSelector, init_args_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR\n )\n}\n"},"146":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, GENERATOR_INDEX__FUNCTION_ARGS},\n point::Point, traits::Hash,\n hash::{sha256_to_field, poseidon2_hash_with_separator, poseidon2_hash_with_separator_slice}\n};\nuse crate::utils::to_bytes::{arr_to_be_bytes_arr, str_to_be_bytes_arr};\n\npub use dep::protocol_types::hash::{compute_siloed_nullifier, pedersen_hash};\n\npub fn pedersen_commitment<let N: u32>(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\n}\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash<let N: u32>(contract_address: AztecAddress, log: [u8; N]) -> Field {\n let mut hash_bytes = [0; N + 36];\n // Address is converted to 32 bytes in ts\n let address_bytes: [u8; 32] = contract_address.to_field().to_be_bytes();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let len_bytes: [u8; 4] = (N as Field).to_be_bytes();\n for i in 0..4 {\n hash_bytes[32 + i] = len_bytes[i];\n }\n for i in 0..N {\n hash_bytes[36 + i] = log[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes: [u8; 32] = sender.to_field().to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n let recipient_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let version_bytes: [u8; 32] = version.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let secret_hash_bytes: [u8; 32] = secret_hash.to_be_bytes();\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n poseidon2_hash_with_separator(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER\n )\n}\n\npub struct ArgsHasher {\n fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<let N: u32>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array<let N: u32>(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nunconstrained fn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..100 {\n input.add(i as Field);\n }\n let hash = input.hash();\n dep::std::println(hash);\n assert(hash == 0x19b0d74feb06ebde19edd85a28986c97063e84b3b351a8b666c7cac963ce655f);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd\n ];\n let serialized_log = arr_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0095b2d17ab72f4b27a341f7ac63e49ec73935ae8c9181a0ac02023eb12f3284);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\n let serialized_log: [u8; 32] = log.to_field().to_be_bytes();\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0083ab647dfb26e7ddee90a0f4209d049d4660cab42000c544b986aaa84c55a3);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"dummy\";\n let serialized_log = str_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x00629e88ebd6374f44aa6cfe07e251ecf07213ebc7267e8f6b578ae57ffd6c20);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"Hello this is a string\";\n let serialized_log = str_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0098637962f7d34fa202b7ffad8a07a238c5d1fd897b82a108f7f467fa73b841);\n}\n"},"151":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/returns.nr","source":"/// Notifies the simulator that `returns` will be later fetched once the function return is processed, referenced by\n/// their hash. This allows the simulator to know how to respond to this future request.\n///\n/// This is only used during private execution, since in public it is the VM itself that keeps track of return values.\npub fn pack_returns(returns: [Field]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call. When\n // unpacking however the caller must check that the returned value is indeed the preimage.\n unsafe {\n pack_returns_oracle_wrapper(returns)\n };\n}\n\nunconstrained pub fn pack_returns_oracle_wrapper(returns: [Field]) {\n let _ = pack_returns_oracle(returns);\n}\n\nunconstrained pub fn unpack_returns<let N: u32>(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n\n#[oracle(packReturns)]\nunconstrained fn pack_returns_oracle(_returns: [Field]) -> Field {}\n\n#[oracle(unpackReturns)]\nunconstrained fn unpack_returns_oracle<let N: u32>(_return_hash: Field) -> [Field; N] {}\n"},"153":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr","source":"use dep::protocol_types::{\n address::AztecAddress, contract_instance::ContractInstance, constants::CONTRACT_INSTANCE_LENGTH,\n utils::reader::Reader\n};\n\n#[oracle(getContractInstance)]\nunconstrained fn get_contract_instance_oracle(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {}\n\n// Returns a ContractInstance plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstance)]\nunconstrained fn get_contract_instance_oracle_avm(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {}\n\nunconstrained fn get_contract_instance_internal(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n get_contract_instance_oracle(address)\n}\n\nunconstrained pub fn get_contract_instance_internal_avm(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {\n get_contract_instance_oracle_avm(address)\n}\n\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n let instance = unsafe {\n ContractInstance::deserialize(get_contract_instance_internal(address))\n };\n // The to_address function combines all values in the instance object to produce an address, so by checking that we\n // get the expected address we validate the entire struct.\n assert_eq(instance.to_address(), address);\n\n instance\n}\n\npub fn get_contract_instance_avm(address: AztecAddress) -> Option<ContractInstance> {\n let mut reader = Reader::new(get_contract_instance_internal_avm(address));\n let found = reader.read();\n if found == 0 {\n Option::none()\n } else {\n Option::some(reader.read_struct(ContractInstance::deserialize))\n }\n}\n"},"154":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/logs.nr","source":"use dep::protocol_types::address::AztecAddress;\n\n/// Informs the simulator that an encrypted note log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_encrypted_note_log<let M: u32>(note_hash_counter: u32, encrypted_note: [u8; M], counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_encrypted_note_log_oracle_wrapper(note_hash_counter, encrypted_note, counter)\n }\n}\n\n/// Informs the simulator that an encrypted event log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_encrypted_event_log<let M: u32>(contract_address: AztecAddress, randomness: Field, encrypted_event: [u8; M], counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_encrypted_event_log_oracle_wrapper(contract_address, randomness, encrypted_event, counter)\n }\n}\n\n/// Informs the simulator that an unencrypted log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_unencrypted_log_private<T>(contract_address: AztecAddress, message: T, counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_unencrypted_log_private_oracle_wrapper(contract_address, message, counter)\n }\n}\n\nunconstrained fn emit_encrypted_note_log_oracle_wrapper<let M: u32>(note_hash_counter: u32, encrypted_note: [u8; M], counter: u32) {\n emit_encrypted_note_log_oracle(note_hash_counter, encrypted_note, counter)\n}\n\nunconstrained fn emit_encrypted_event_log_oracle_wrapper<let M: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n encrypted_event: [u8; M],\n counter: u32\n) {\n emit_encrypted_event_log_oracle(contract_address, randomness, encrypted_event, counter)\n}\n\nunconstrained fn emit_unencrypted_log_private_oracle_wrapper<T>(contract_address: AztecAddress, message: T, counter: u32) {\n let _ = emit_unencrypted_log_private_oracle(contract_address, message, counter);\n}\n\n/// Temporary substitute for `emit_unencrypted_log_private` that is used for handling contract class registration. This\n/// variant returns the log hash, which would be too large to compute inside a circuit.\nunconstrained pub fn emit_contract_class_unencrypted_log_private<let N: u32>(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32\n) -> Field {\n emit_contract_class_unencrypted_log_private_oracle(contract_address, message, counter)\n}\n\n// = 480 + 32 * N bytes\n#[oracle(emitEncryptedNoteLog)]\nunconstrained fn emit_encrypted_note_log_oracle<let M: u32>(\n _note_hash_counter: u32,\n _encrypted_note: [u8; M],\n _counter: u32\n) {}\n\n#[oracle(emitEncryptedEventLog)]\nunconstrained fn emit_encrypted_event_log_oracle<let M: u32>(\n _contract_address: AztecAddress,\n _randomness: Field,\n _encrypted_event: [u8; M],\n _counter: u32\n) {}\n\n#[oracle(emitUnencryptedLog)]\nunconstrained fn emit_unencrypted_log_private_oracle<T>(\n _contract_address: AztecAddress,\n _message: T,\n _counter: u32\n) -> Field {}\n\n#[oracle(emitContractClassUnencryptedLog)]\nunconstrained fn emit_contract_class_unencrypted_log_private_oracle<let N: u32>(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32\n) -> Field {}\n"},"155":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/keys.nr","source":"use crate::keys::{PublicKeys, public_keys::{NpkM, IvpkM, OvpkM, TpkM}};\nuse dep::protocol_types::{address::{AztecAddress, PartialAddress}, point::Point};\n\n#[oracle(getPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\nunconstrained pub fn get_public_keys_and_partial_address(address: AztecAddress) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle(address);\n\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x: result[3], y: result[4], is_infinite: result[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x: result[6], y: result[7], is_infinite: result[8] as bool } },\n tpk_m: TpkM { inner: Point { x: result[9], y: result[10], is_infinite: result[11] as bool } }\n };\n\n let partial_address = PartialAddress::from_field(result[12]);\n\n (keys, partial_address)\n}\n"},"156":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/execution.nr","source":"use dep::protocol_types::address::AztecAddress;\n\n#[oracle(getContractAddress)]\nunconstrained fn get_contract_address_oracle() -> AztecAddress {}\n\n#[oracle(getBlockNumber)]\nunconstrained fn get_block_number_oracle() -> u32 {}\n\n#[oracle(getChainId)]\nunconstrained fn get_chain_id_oracle() -> Field {}\n\n#[oracle(getVersion)]\nunconstrained fn get_version_oracle() -> Field {}\n\nunconstrained pub fn get_contract_address() -> AztecAddress {\n get_contract_address_oracle()\n}\n\nunconstrained pub fn get_block_number() -> u32 {\n get_block_number_oracle()\n}\n\nunconstrained pub fn get_chain_id() -> Field {\n get_chain_id_oracle()\n}\n\nunconstrained pub fn get_version() -> Field {\n get_version_oracle()\n}\n"},"157":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr","source":"use dep::protocol_types::{abis::{function_selector::FunctionSelector}, address::AztecAddress};\n\n#[oracle(enqueuePublicFunctionCall)]\nunconstrained fn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> Field {}\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) -> Field {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nunconstrained fn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> Field {}\n\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) -> Field {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\npub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n unsafe {\n notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter)\n };\n}\n\nunconstrained pub fn notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n"},"161":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; 2] {}\n\nunconstrained pub fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n"},"163":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/random.nr","source":"/// Returns an unconstrained random value. Note that it is not possible to constrain this value to prove that it is\n/// truly random: we assume that the oracle is cooperating and returning random values.\n/// In some applications this behavior might not be acceptable and other techniques might be more suitable, such as\n/// producing pseudo-random values by hashing values outside of user control (like block hashes) or secrets.\nunconstrained pub fn random() -> Field {\n rand_oracle()\n}\n\n#[oracle(getRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n"},"164":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr","source":"use dep::protocol_types::abis::validation_requests::{KeyValidationRequest, key_validation_request::KEY_VALIDATION_REQUEST_LENGTH};\n\n#[oracle(getKeyValidationRequest)]\nunconstrained fn get_key_validation_request_oracle(\n _pk_m_hash: Field,\n _key_index: Field\n) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {}\n\nunconstrained fn get_key_validation_request_internal(\n npk_m_hash: Field,\n key_index: Field\n) -> KeyValidationRequest {\n let result = get_key_validation_request_oracle(npk_m_hash, key_index);\n KeyValidationRequest::deserialize(result)\n}\n\nunconstrained pub fn get_key_validation_request(\n pk_m_hash: Field,\n key_index: Field\n) -> KeyValidationRequest {\n get_key_validation_request_internal(pk_m_hash, key_index)\n}\n"},"165":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/notes.nr","source":"use crate::note::{note_header::NoteHeader, note_interface::NoteInterface};\n\nuse dep::protocol_types::{address::AztecAddress, utils::arr_copy_slice};\n\n/// Notifies the simulator that a note has been created, so that it can be returned in future read requests in the same\n/// transaction. This note should only be added to the non-volatile database if found in an actual block.\npub fn notify_created_note<let N: u32>(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32\n) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n notify_created_note_oracle_wrapper(storage_slot, note_type_id, serialized_note, note_hash, counter)\n };\n}\n\n/// Notifies the simulator that a note has been nullified, so that it is no longer returned in future read requests in\n/// the same transaction. This note should only be removed to the non-volatile database if its nullifier is found in an\n/// actual block.\npub fn notify_nullified_note(nullifier: Field, note_hash: Field, counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n notify_nullified_note_oracle_wrapper(nullifier, note_hash, counter)\n };\n}\n\nunconstrained fn notify_created_note_oracle_wrapper<let N: u32>(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32\n) {\n let _ = notify_created_note_oracle(storage_slot, note_type_id, serialized_note, note_hash, counter);\n}\n\n#[oracle(notifyCreatedNote)]\nunconstrained fn notify_created_note_oracle<let N: u32>(\n _storage_slot: Field,\n _note_type_id: Field,\n _serialized_note: [Field; N],\n _note_hash: Field,\n _counter: u32\n) -> Field {}\n\nunconstrained fn notify_nullified_note_oracle_wrapper(\n nullifier: Field,\n note_hash: Field,\n counter: u32\n) {\n let _ = notify_nullified_note_oracle(nullifier, note_hash, counter);\n}\n\n#[oracle(notifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(_nullifier: Field, _note_hash: Field, _counter: u32) -> Field {}\n\n#[oracle(getNotes)]\nunconstrained fn get_notes_oracle<let N: u32, let S: u32>(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; N],\n _select_by_offsets: [u8; N],\n _select_by_lengths: [u8; N],\n _select_values: [Field; N],\n _select_comparators: [u8; N],\n _sort_by_indexes: [u8; N],\n _sort_by_offsets: [u8; N],\n _sort_by_lengths: [u8; N],\n _sort_order: [u8; N],\n _limit: u32,\n _offset: u32,\n _status: u8,\n _return_size: u32,\n _placeholder_fields: [Field; S]\n) -> [Field; S] {}\n\nunconstrained fn get_notes_oracle_wrapper<let N: u32, let S: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; N],\n select_by_offsets: [u8; N],\n select_by_lengths: [u8; N],\n select_values: [Field; N],\n select_comparators: [u8; N],\n sort_by_indexes: [u8; N],\n sort_by_offsets: [u8; N],\n sort_by_lengths: [u8; N],\n sort_order: [u8; N],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_fields: [Field; S]\n) -> [Field; S] {\n let return_size = placeholder_fields.len() as u32;\n get_notes_oracle(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n return_size,\n placeholder_fields\n )\n}\n\nunconstrained pub fn get_notes<Note, let N: u32, let M: u32, let S: u32, let NS: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_opt_notes: [Option<Note>; S], // TODO: Remove it and use `limit` to initialize the note array.\n placeholder_fields: [Field; NS], // TODO: Remove it and use `limit` to initialize the note array.\n _placeholder_note_length: [Field; N] // Turbofish hack? Compiler breaks calculating read_offset unless we add this parameter\n) -> [Option<Note>; S] where Note: NoteInterface<N> {\n let fields = get_notes_oracle_wrapper(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n placeholder_fields\n );\n let num_notes = fields[0] as u32;\n let contract_address = AztecAddress::from_field(fields[1]);\n for i in 0..placeholder_opt_notes.len() {\n if i < num_notes {\n // lengths named as per typescript.\n let return_header_length: u32 = 2; // num_notes & contract_address.\n let extra_preimage_length: u32 = 2; // nonce & note_hash_counter.\n let read_offset: u32 = return_header_length + i * (N + extra_preimage_length);\n let nonce = fields[read_offset];\n let note_hash_counter = fields[read_offset + 1] as u32;\n let header = NoteHeader { contract_address, nonce, storage_slot, note_hash_counter };\n let serialized_note = arr_copy_slice(fields, [0; N], read_offset + 2);\n let mut note = Note::deserialize_content(serialized_note);\n note.set_header(header);\n placeholder_opt_notes[i] = Option::some(note);\n };\n }\n placeholder_opt_notes\n}\n\n/// Returns true if the nullifier exists. Note that a `true` value can be constrained by proving existence of the\n/// nullifier, but a `false` value should not be relied upon since other transactions may emit this nullifier before the\n/// current transaction is included in a block. While this might seem of little use at first, certain design patterns\n/// benefit from this abstraction (see e.g. `PrivateMutable`).\nunconstrained pub fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier) == 1\n}\n\n#[oracle(checkNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> Field {}\n"},"166":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_nullifier_membership_witness.nr","source":"use dep::protocol_types::{\n abis::nullifier_leaf_preimage::{NullifierLeafPreimage, NULLIFIER_LEAF_PREIMAGE_LENGTH},\n constants::NULLIFIER_TREE_HEIGHT, utils::arr_copy_slice\n};\n\n// INDEX_LENGTH + NULLIFIER_LEAF_PREIMAGE_LENGTH + NULLIFIER_TREE_HEIGHT\nglobal NULLIFIER_MEMBERSHIP_WITNESS: u32 = 24;\n\npub struct NullifierMembershipWitness {\n index: Field,\n leaf_preimage: NullifierLeafPreimage,\n path: [Field; NULLIFIER_TREE_HEIGHT],\n}\n\nimpl NullifierMembershipWitness {\n pub fn deserialize(fields: [Field; NULLIFIER_MEMBERSHIP_WITNESS]) -> Self {\n let leaf_preimage_fields = arr_copy_slice(fields, [0; NULLIFIER_LEAF_PREIMAGE_LENGTH], 1);\n Self {\n index: fields[0],\n leaf_preimage: NullifierLeafPreimage::deserialize(leaf_preimage_fields),\n path: arr_copy_slice(\n fields,\n [0; NULLIFIER_TREE_HEIGHT],\n 1 + NULLIFIER_LEAF_PREIMAGE_LENGTH\n )\n }\n }\n}\n\n#[oracle(getLowNullifierMembershipWitness)]\nunconstrained fn get_low_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\nunconstrained pub fn get_low_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_low_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n\n#[oracle(getNullifierMembershipWitness)]\nunconstrained fn get_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\nunconstrained pub fn get_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n"},"170":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/utils/point.nr","source":"use dep::protocol_types::point::Point;\n\n// I am storing the modulus divided by 2 plus 1 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field = 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a public key to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(pk: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!pk.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = pk.x.to_be_bytes();\n\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n if !BN254_FR_MODULUS_DIV_2.lt(pk.y) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\nmod test {\n use dep::protocol_types::point::Point;\n use crate::utils::point::point_to_bytes;\n\n #[test]\n unconstrained fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122, 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115\n ];\n\n assert_eq(expected_compressed_point_positive_sign.len(), compressed_point.len());\n for i in 0..expected_compressed_point_positive_sign.len() {\n assert_eq(compressed_point[i], expected_compressed_point_positive_sign[i]);\n }\n }\n\n #[test]\n unconstrained fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169, 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181\n ];\n\n assert_eq(expected_compressed_point_negative_sign.len(), compressed_point.len());\n for i in 0..expected_compressed_point_negative_sign.len() {\n assert_eq(compressed_point[i], expected_compressed_point_negative_sign[i]);\n }\n }\n}\n"},"174":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr","source":"use dep::protocol_types::{constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER, hash::poseidon2_hash_with_separator};\n\nuse crate::context::{PrivateContext, UnconstrainedContext};\nuse crate::note::{\n lifecycle::create_note, note_getter::{get_note, view_notes},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n note_emission::NoteEmission\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\npub struct PrivateImmutable<Note, Context> {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\nimpl<T, Context> Storage<T> for PrivateImmutable<T, Context> {}\n\nimpl<Note, Context> PrivateImmutable<Note, Context> {\n // docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n // The following computation is leaky, in that it doesn't hide the storage slot that has been initialized, nor does it hide the contract address of this contract.\n // When this initialization nullifier is emitted, an observer could do a dictionary or rainbow attack to learn the preimage of this nullifier to deduce the storage slot and contract address.\n // For some applications, leaking the details that a particular state variable of a particular contract has been initialized will be unacceptable.\n // Under such circumstances, such application developers might wish to _not_ use this state variable type.\n // This is especially dangerous for initial assignment to elements of a `Map<AztecAddress, PrivateImmutable>` type (for example), because the storage slot often also identifies an actor.\n // e.g. the initial assignment to `my_map.at(msg.sender)` will leak: `msg.sender`, the fact that an element of `my_map` was assigned-to for the first time, and the contract_address.\n pub fn compute_initialization_nullifier(self) -> Field {\n poseidon2_hash_with_separator(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER\n )\n }\n}\n\nimpl<Note> PrivateImmutable<Note, &mut PrivateContext> {\n // docs:start:initialize\n pub fn initialize<let N: u32>(\n self,\n note: &mut Note\n ) -> NoteEmission<Note> where Note: NoteInterface<N> + NullifiableNote {\n // Nullify the storage slot.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_nullifier(nullifier);\n\n create_note(self.context, self.storage_slot, note)\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note<let N: u32>(self) -> Note where Note: NoteInterface<N> + NullifiableNote {\n let storage_slot = self.storage_slot;\n get_note(self.context, storage_slot).0\n }\n // docs:end:get_note\n}\n\nimpl<Note> PrivateImmutable<Note, UnconstrainedContext> {\n // docs:start:is_initialized\n unconstrained pub fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // view_note does not actually use the context, but it calls oracles that are only available in private\n // docs:start:view_note\n unconstrained pub fn view_note<let N: u32>(self) -> Note where Note: NoteInterface<N> + NullifiableNote {\n let mut options = NoteViewerOptions::new();\n view_notes(self.storage_slot, options.set_limit(1)).get(0)\n }\n // docs:end:view_note\n}\n"},"217":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use crate::{traits::{Empty, Serialize, Deserialize}, point::Point};\npub use crate::constants::KEY_VALIDATION_REQUEST_LENGTH;\n\npub struct KeyValidationRequest {\n pk_m: Point,\n sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m)) & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest { pk_m: Point::empty(), sk_app: 0 }\n }\n}\n\nimpl Serialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [\n self.pk_m.x,\n self.pk_m.y,\n self.pk_m.is_infinite as Field,\n self.sk_app\n ]\n }\n}\n\nimpl Deserialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self { pk_m: Point { x: fields[0], y: fields[1], is_infinite: fields[2] as bool }, sk_app: fields[3] }\n }\n}\n"},"224":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier_leaf_preimage.nr","source":"global NULLIFIER_LEAF_PREIMAGE_LENGTH: u32 = 3;\n\nuse crate::{\n abis::{read_request::ScopedReadRequest, side_effect::Readable}, hash::compute_siloed_nullifier,\n merkle_tree::leaf_preimage::{LeafPreimage, IndexedTreeLeafPreimage}, traits::{Empty, Hash}\n};\n\npub struct NullifierLeafPreimage {\n nullifier : Field,\n next_nullifier :Field,\n next_index : u32,\n}\n\nimpl Empty for NullifierLeafPreimage {\n fn empty() -> Self {\n Self { nullifier: 0, next_nullifier: 0, next_index: 0 }\n }\n}\n\nimpl Hash for NullifierLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n crate::hash::poseidon2_hash(self.serialize())\n }\n }\n}\n\nimpl LeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl IndexedTreeLeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn get_next_key(self) -> Field {\n self.next_nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl Readable<ScopedReadRequest> for NullifierLeafPreimage {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n let siloed_value = compute_siloed_nullifier(read_request.contract_address, read_request.value());\n assert_eq(self.nullifier, siloed_value, \"Value of the nullifier leaf does not match read request\");\n }\n}\n\nimpl NullifierLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.nullifier == 0) & (self.next_nullifier == 0) & (self.next_index == 0)\n }\n\n pub fn serialize(self) -> [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH] {\n [self.nullifier, self.next_nullifier, self.next_index as Field]\n }\n\n pub fn deserialize(fields: [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH]) -> Self {\n Self { nullifier: fields[0], next_nullifier: fields[1], next_index: fields[2] as u32 }\n }\n}\n\nimpl Eq for NullifierLeafPreimage {\n fn eq(self, other: Self) -> bool {\n (self.nullifier == other.nullifier)\n & (self.next_nullifier == other.next_nullifier)\n & (self.next_index == other.next_index)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = NullifierLeafPreimage::empty();\n let serialized = item.serialize();\n let deserialized = NullifierLeafPreimage::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"24":{"path":"std/embedded_curve_ops.nr","source":"use crate::ops::arith::{Add, Sub, Neg};\nuse crate::cmp::Eq;\n\n/// A point on the embedded elliptic curve\n/// By definition, the base field of the embedded curve is the scalar field of the proof system curve, i.e the Noir Field.\n/// x and y denotes the Weierstrass coordinates of the point, if is_infinite is false.\npub struct EmbeddedCurvePoint {\n x: Field,\n y: Field,\n is_infinite: bool\n}\n\nimpl EmbeddedCurvePoint {\n /// Elliptic curve point doubling operation\n /// returns the doubled point of a point P, i.e P+P\n pub fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n /// Returns the null element of the curve; 'the point at infinity'\n pub fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n /// Adds two points P+Q, using the curve addition formula, and also handles point at infinity\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n /// Points subtraction operation, using addition and negation\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n /// Negates a point P, i.e returns -P, by negating the y coordinate.\n /// If the point is at infinity, then the result is also at infinity.\n fn neg(self) -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: self.x, y: -self.y, is_infinite: self.is_infinite }\n }\n}\n\nimpl Eq for EmbeddedCurvePoint {\n /// Checks whether two points are equal\n fn eq(self: Self, b: EmbeddedCurvePoint) -> bool {\n (self.is_infinite & b.is_infinite)\n | ((self.is_infinite == b.is_infinite) & (self.x == b.x) & (self.y == b.y))\n }\n}\n\n/// Scalar for the embedded curve represented as low and high limbs\n/// By definition, the scalar field of the embedded curve is base field of the proving system curve.\n/// It may not fit into a Field element, so it is represented with two Field elements; its low and high limbs.\npub struct EmbeddedCurveScalar {\n lo: Field,\n hi: Field,\n}\n\nimpl EmbeddedCurveScalar {\n pub fn new(lo: Field, hi: Field) -> Self {\n EmbeddedCurveScalar { lo, hi }\n }\n\n #[field(bn254)]\n pub fn from_field(scalar: Field) -> EmbeddedCurveScalar {\n let (a,b) = crate::field::bn254::decompose(scalar);\n EmbeddedCurveScalar { lo: a, hi: b }\n }\n\n //Bytes to scalar: take the first (after the specified offset) 16 bytes of the input as the lo value, and the next 16 bytes as the hi value\n #[field(bn254)]\n pub(crate) fn from_bytes(bytes: [u8; 64], offset: u32) -> EmbeddedCurveScalar {\n let mut v = 1;\n let mut lo = 0 as Field;\n let mut hi = 0 as Field;\n for i in 0..16 {\n lo = lo + (bytes[offset+31 - i] as Field) * v;\n hi = hi + (bytes[offset+15 - i] as Field) * v;\n v = v * 256;\n }\n let sig_s = crate::embedded_curve_ops::EmbeddedCurveScalar { lo, hi };\n sig_s\n }\n}\n\nimpl Eq for EmbeddedCurveScalar {\n fn eq(self, other: Self) -> bool {\n (other.hi == self.hi) & (other.lo == self.lo)\n }\n}\n\n// Computes a multi scalar multiplication over the embedded curve.\n// For bn254, We have Grumpkin and Baby JubJub.\n// For bls12-381, we have JubJub and Bandersnatch.\n//\n// The embedded curve being used is decided by the \n// underlying proof system.\n// docs:start:multi_scalar_mul\npub fn multi_scalar_mul<let N: u32>(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N]\n) -> EmbeddedCurvePoint\n// docs:end:multi_scalar_mul\n{\n let point_array = multi_scalar_mul_array_return(points, scalars);\n EmbeddedCurvePoint { x: point_array[0], y: point_array[1], is_infinite: point_array[2] as bool }\n}\n\n#[foreign(multi_scalar_mul)]\nfn multi_scalar_mul_array_return<let N: u32>(points: [EmbeddedCurvePoint; N], scalars: [EmbeddedCurveScalar; N]) -> [Field; 3] {}\n\n#[foreign(multi_scalar_mul)]\npub(crate) fn multi_scalar_mul_slice(points: [EmbeddedCurvePoint], scalars: [EmbeddedCurveScalar]) -> [Field; 3] {}\n\n// docs:start:fixed_base_scalar_mul\npub fn fixed_base_scalar_mul(scalar: EmbeddedCurveScalar) -> EmbeddedCurvePoint\n// docs:end:fixed_base_scalar_mul\n{\n let g1 = EmbeddedCurvePoint { x: 1, y: 17631683881184975370165255887551781615748388533673675138860, is_infinite: false };\n multi_scalar_mul([g1], [scalar])\n}\n\n/// This function only assumes that the points are on the curve\n/// It handles corner cases around the infinity point causing some overhead compared to embedded_curve_add_not_nul and embedded_curve_add_unsafe\n// This is a hack because returning an `EmbeddedCurvePoint` from a foreign function in brillig returns a [BrilligVariable::SingleAddr; 2] rather than BrilligVariable::BrilligArray\n// as is defined in the brillig bytecode format. This is a workaround which allows us to fix this without modifying the serialization format.\n// docs:start:embedded_curve_add\npub fn embedded_curve_add(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n // docs:end:embedded_curve_add\n let x_coordinates_match = point1.x == point2.x;\n let y_coordinates_match = point1.y == point2.y;\n let double_predicate = (x_coordinates_match & y_coordinates_match);\n let infinity_predicate = (x_coordinates_match & !y_coordinates_match);\n let point1_1 = EmbeddedCurvePoint { x: point1.x + (x_coordinates_match as Field), y: point1.y, is_infinite: x_coordinates_match };\n // point1_1 is guaranteed to have a different abscissa than point2\n let mut result = embedded_curve_add_unsafe(point1_1, point2);\n result.is_infinite = x_coordinates_match;\n\n // dbl if x_match, y_match\n let double = embedded_curve_add_unsafe(point1, point1);\n result = if double_predicate { double } else { result };\n\n // infinity if x_match, !y_match\n if point1.is_infinite {\n result= point2;\n }\n if point2.is_infinite {\n result = point1;\n }\n let mut result_is_infinity = infinity_predicate & (!point1.is_infinite & !point2.is_infinite);\n result.is_infinite = result_is_infinity | (point1.is_infinite & point2.is_infinite);\n result\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(_point1: EmbeddedCurvePoint, _point2: EmbeddedCurvePoint) -> [Field; 3] {}\n\n/// This function assumes that:\n/// The points are on the curve, and\n/// The points don't share an x-coordinate, and\n/// Neither point is the infinity point.\n/// If it is used with correct input, the function ensures the correct non-zero result is returned.\n/// Except for points on the curve, the other assumptions are checked by the function. It will cause assertion failure if they are not respected.\npub fn embedded_curve_add_not_nul(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n assert(point1.x != point2.x);\n assert(!point1.is_infinite);\n assert(!point2.is_infinite);\n embedded_curve_add_unsafe(point1, point2)\n}\n\n/// Unsafe ec addition\n/// If the inputs are the same, it will perform a doubling, but only if point1 and point2 are the same variable.\n/// If they have the same value but are different variables, the result will be incorrect because in this case\n/// it assumes (but does not check) that the points' x-coordinates are not equal.\n/// It also assumes neither point is the infinity point.\npub fn embedded_curve_add_unsafe(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n let point_array = embedded_curve_add_array_return(point1, point2);\n let x = point_array[0];\n let y = point_array[1];\n\n EmbeddedCurvePoint { x, y, is_infinite: false }\n}\n"},"25":{"path":"std/field/bn254.nr","source":"use crate::runtime::is_unconstrained;\n\n// The low and high decomposition of the field modulus\nglobal PLO: Field = 53438638232309528389504892708671455233;\nglobal PHI: Field = 64323764613183177041862057485226039389;\n\npub(crate) global TWO_POW_128: Field = 0x100000000000000000000000000000000;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(x: Field) -> (Field, Field) {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n\n let mut low: Field = 0;\n let mut high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n low += (x_bytes[i] as Field) * offset;\n high += (x_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n\n (low, high)\n}\n\nunconstrained pub(crate) fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nfn compute_lt(x: Field, y: Field, num_bytes: u32) -> bool {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i];\n let y_byte = y_bytes[num_bytes - 1 - i];\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\nfn compute_lte(x: Field, y: Field, num_bytes: u32) -> bool {\n if x == y {\n true\n } else {\n compute_lt(x, y, num_bytes)\n }\n}\n\nunconstrained fn lt_32_hint(x: Field, y: Field) -> bool {\n compute_lt(x, y, 32)\n}\n\nunconstrained fn lte_16_hint(x: Field, y: Field) -> bool {\n compute_lte(x, y, 16)\n}\n\n// Assert that (alo > blo && ahi >= bhi) || (alo <= blo && ahi > bhi)\nfn assert_gt_limbs(a: (Field, Field), b: (Field, Field)) {\n let (alo, ahi) = a;\n let (blo, bhi) = b;\n unsafe {\n let borrow = lte_16_hint(alo, blo);\n\n let rlo = alo - blo - 1 + (borrow as Field) * TWO_POW_128;\n let rhi = ahi - bhi - (borrow as Field);\n\n rlo.assert_max_bit_size(128);\n rhi.assert_max_bit_size(128);\n }\n}\n\n/// Decompose a single field into two 16 byte fields.\npub fn decompose(x: Field) -> (Field, Field) {\n if is_unconstrained() {\n compute_decomposition(x)\n } else {\n unsafe {\n // Take hints of the decomposition\n let (xlo, xhi) = decompose_hint(x);\n\n // Range check the limbs\n xlo.assert_max_bit_size(128);\n xhi.assert_max_bit_size(128);\n\n // Check that the decomposition is correct\n assert_eq(x, xlo + TWO_POW_128 * xhi);\n\n // Assert that the decomposition of P is greater than the decomposition of x\n assert_gt_limbs((PLO, PHI), (xlo, xhi));\n (xlo, xhi)\n }\n }\n}\n\npub fn assert_gt(a: Field, b: Field) {\n if is_unconstrained() {\n assert(compute_lt(b, a, 32));\n } else {\n // Decompose a and b\n let a_limbs = decompose(a);\n let b_limbs = decompose(b);\n\n // Assert that a_limbs is greater than b_limbs\n assert_gt_limbs(a_limbs, b_limbs)\n }\n}\n\npub fn assert_lt(a: Field, b: Field) {\n assert_gt(b, a);\n}\n\npub fn gt(a: Field, b: Field) -> bool {\n if is_unconstrained() {\n compute_lt(b, a, 32)\n } else if a == b {\n false\n } else {\n // Take a hint of the comparison and verify it\n unsafe {\n if lt_32_hint(a, b) {\n assert_gt(b, a);\n false\n } else {\n assert_gt(a, b);\n true\n }\n }\n }\n}\n\npub fn lt(a: Field, b: Field) -> bool {\n gt(b, a)\n}\n\nmod tests {\n // TODO: Allow imports from \"super\"\n use crate::field::bn254::{decompose, compute_lt, assert_gt, gt, TWO_POW_128, compute_lte, PLO, PHI};\n\n #[test]\n fn check_decompose() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_decompose_unconstrained() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n fn check_compute_lt() {\n assert(compute_lt(0, 1, 16));\n assert(compute_lt(0, 0x100, 16));\n assert(compute_lt(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lt(0, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_compute_lte() {\n assert(compute_lte(0, 1, 16));\n assert(compute_lte(0, 0x100, 16));\n assert(compute_lte(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lte(0, TWO_POW_128, 16));\n\n assert(compute_lte(0, 0, 16));\n assert(compute_lte(0x100, 0x100, 16));\n assert(compute_lte(TWO_POW_128 - 1, TWO_POW_128 - 1, 16));\n assert(compute_lte(TWO_POW_128, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_assert_gt() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n unconstrained fn check_assert_gt_unconstrained() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n fn check_gt() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n unconstrained fn check_gt_unconstrained() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n fn check_plo_phi() {\n assert_eq(PLO + PHI * TWO_POW_128, 0);\n let p_bytes = crate::field::modulus_le_bytes();\n let mut p_low: Field = 0;\n let mut p_high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n p_low += (p_bytes[i] as Field) * offset;\n p_high += (p_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n assert_eq(p_low, PLO);\n assert_eq(p_high, PHI);\n }\n}\n"},"26":{"path":"std/field/mod.nr","source":"pub mod bn254;\nuse bn254::lt as bn254_lt;\nuse crate::runtime::is_unconstrained;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size(self, bit_size: u32) {\n // docs:end:assert_max_bit_size\n crate::assert_constant(bit_size);\n assert(bit_size < modulus_num_bits() as u32);\n self.__assert_max_bit_size(bit_size);\n }\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_le_bits)]\n // docs:start:to_le_bits\n pub fn to_le_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_le_bits\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n /// \n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_be_bits)]\n // docs:start:to_be_bits\n pub fn to_be_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_be_bits\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8;N]` array\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n /// \n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self', \n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_le_bytes\n pub fn to_le_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_le_bytes\n // Compute the byte decomposition\n let bytes = self.to_le_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[N - 1 - i] != p[N - 1 - i]) {\n assert(bytes[N - 1 - i] < p[N - 1 - i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8;N]` array of length required to represent the field modulus\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n /// \n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self', \n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_be_bytes\n pub fn to_be_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_be_bytes\n // Compute the byte decomposition\n let bytes = self.to_be_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_be_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[i] != p[i]) {\n assert(bytes[i] < p[i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n // docs:start:to_le_radix\n pub fn to_le_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n crate::assert_constant(radix);\n self.__to_le_radix(radix)\n }\n // docs:end:to_le_radix\n\n // docs:start:to_be_radix\n pub fn to_be_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n crate::assert_constant(radix);\n self.__to_be_radix(radix)\n }\n // docs:end:to_be_radix\n\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b: [u1; 32] = exponent.to_le_bits();\n\n for i in 1..33 {\n r *= r;\n r = (b[32-i] as Field) * (r * self) + (1 - b[32-i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x `elem` {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n\n /// Convert a little endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_le_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[i] as Field) * v;\n v = v * 256;\n }\n result\n }\n\n /// Convert a big endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_be_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[N-1-i] as Field) * v;\n v = v * 256;\n }\n result\n }\n}\n\n#[builtin(modulus_num_bits)]\npub comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\nmod tests {\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_bytes();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bits), field);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_bytes();\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bits), field);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_radix(256);\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bits), field);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_radix(256);\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bits), field);\n }\n // docs:end:to_le_radix_example\n}\n"},"262":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr","source":"use crate::{\n address::{aztec_address::AztecAddress}, constants::GENERATOR_INDEX__PARTIAL_ADDRESS,\n hash::poseidon2_hash_with_separator, traits::ToField\n};\n\n// Salted initialization hash. Used in the computation of a partial address.\npub struct SaltedInitializationHash {\n inner: Field\n}\n\nimpl ToField for SaltedInitializationHash {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl SaltedInitializationHash {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(salt: Field, initialization_hash: Field, deployer: AztecAddress) -> Self {\n SaltedInitializationHash::from_field(\n poseidon2_hash_with_separator(\n [\n salt,\n initialization_hash,\n deployer.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\n )\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"264":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n address::{partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n hash::poseidon2_hash_with_separator, traits::{Empty, FromField, ToField, Serialize, Deserialize},\n utils\n};\n\n// Aztec address\npub struct AztecAddress {\n inner : Field\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other: Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self { inner: 0 }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n poseidon2_hash_with_separator(\n [pub_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1\n )\n )\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys_hash() {\n let pub_keys_hash = PublicKeysHash::from_field(1);\n let partial_address = PartialAddress::from_field(2);\n\n let address = AztecAddress::compute(pub_keys_hash, partial_address);\n let expected_computed_address_from_partial_and_pubkey = 0x23ce9be3fa3c846b0f9245cc796902e731d04f086e8a42473bb29e405fc98075;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n"},"267":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr","source":"use crate::{\n address::{salted_initialization_hash::SaltedInitializationHash, aztec_address::AztecAddress},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator, traits::{ToField, Serialize, Deserialize}\n};\n\nglobal PARTIAL_ADDRESS_LENGTH: u32 = 1;\n\n// Partial address\npub struct PartialAddress {\n inner : Field\n}\n\nimpl ToField for PartialAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl Serialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn serialize(self: Self) -> [Field; PARTIAL_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn deserialize(fields: [Field; PARTIAL_ADDRESS_LENGTH]) -> Self {\n PartialAddress { inner: fields[0] }\n }\n}\n\nimpl PartialAddress {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(\n contract_class_id: ContractClassId,\n salt: Field,\n initialization_hash: Field,\n deployer: AztecAddress\n ) -> Self {\n PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n SaltedInitializationHash::compute(salt, initialization_hash, deployer)\n )\n }\n\n pub fn compute_from_salted_initialization_hash(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash\n ) -> Self {\n PartialAddress::from_field(\n poseidon2_hash_with_separator(\n [\n contract_class_id.to_field(),\n salted_initialization_hash.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\n )\n }\n\n pub fn to_field(self) -> Field {\n self.inner\n }\n\n pub fn is_zero(self) -> bool {\n self.to_field() == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"29":{"path":"std/hash/mod.nr","source":"pub mod poseidon;\npub mod mimc;\npub mod poseidon2;\npub mod keccak;\npub mod sha256;\npub mod sha512;\n\nuse crate::default::Default;\nuse crate::uint128::U128;\nuse crate::collections::vec::Vec;\nuse crate::embedded_curve_ops::{EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_slice};\nuse crate::meta::derive_via;\n\n// Kept for backwards compatibility\npub use sha256::{digest, sha256, sha256_compression, sha256_var};\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment<let N: u32>(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\npub fn pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {\n pedersen_hash_with_separator_noir(input, separator)\n}\n\npub fn pedersen_commitment_with_separator<let N: u32>(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let value = __pedersen_commitment_with_separator(input, separator);\n if (value[0] == 0) & (value[1] == 0) {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n } else {\n EmbeddedCurvePoint { x: value[0], y: value[1], is_infinite: false }\n }\n}\n\n#[no_predicates]\nfn pedersen_commitment_with_separator_noir<let N: u32>(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n#[no_predicates]\nfn pedersen_hash_with_separator_noir<let N: u32>(input: [Field; N], separator: u32) -> Field {\n let mut scalars: Vec<EmbeddedCurveScalar> = Vec::from_slice([EmbeddedCurveScalar { lo: 0, hi: 0 }; N].as_slice()); //Vec::new();\n\n for i in 0..N {\n scalars.set(i, from_field_unsafe(input[i]));\n }\n scalars.push(EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field });\n let domain_generators :[EmbeddedCurvePoint; N]= derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n let mut vec_generators = Vec::new();\n for i in 0..N {\n vec_generators.push(domain_generators[i]);\n }\n let length_generator : [EmbeddedCurvePoint; 1] = derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n vec_generators.push(length_generator[0]);\n multi_scalar_mul_slice(vec_generators.slice, scalars.slice)[0]\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash<let N: u32>(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator_noir(input, 0)\n}\n\n#[foreign(pedersen_hash)]\nfn __pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {}\n\n#[foreign(pedersen_commitment)]\nfn __pedersen_commitment_with_separator<let N: u32>(input: [Field; N], separator: u32) -> [Field; 2] {}\n\n#[field(bn254)]\npub fn derive_generators<let N: u32, let M: u32>(domain_separator_bytes: [u8; M], starting_index: u32) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators<let N: u32, let M: u32>(domain_separator_bytes: [u8; M], starting_index: u32) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n let (xlo, xhi) = unsafe {\n crate::field::bn254::decompose_hint(scalar)\n };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n// docs:start:keccak256\npub fn keccak256<let N: u32>(input: [u8; N], message_size: u32) -> [u8; 32]\n// docs:end:keccak256\n{\n crate::hash::keccak::keccak256(input, message_size)\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation<let N: u32>(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: StructDefinition) -> Quoted {\n let name = quote { Hash };\n let signature = quote { fn hash<H>(_self: Self, _state: &mut H) where H: std::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(s, name, signature, for_each_field, quote {}, |fields| fields)\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher<H> where H: Hasher {\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault<H>;\n\nimpl<H> BuildHasher<H> for BuildHasherDefault<H>\nwhere\n H: Hasher + Default {\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl<H> Default for BuildHasherDefault<H>\nwhere\n H: Hasher + Default {\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash<H>(_self: Self, _state: &mut H) where H: Hasher {}\n}\n\nimpl Hash for U128 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self.lo as Field);\n H::write(state, self.hi as Field);\n }\n}\n\nimpl<T, let N: u32> Hash for [T; N] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<T> Hash for [T] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<A, B> Hash for (A, B) where A: Hash, B: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl<A, B, C> Hash for (A, B, C) where A: Hash, B: Hash, C: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl<A, B, C, D> Hash for (A, B, C, D) where A: Hash, B: Hash, C: Hash, D: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl<A, B, C, D, E> Hash for (A, B, C, D, E) where A: Hash, B: Hash, C: Hash, D: Hash, E: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1), 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1), EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false\n }\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2), 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2), EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3), 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3), EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4), 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4), EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5), 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5), EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6), 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6), EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7), 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7), EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false\n }\n );\n}\n"},"295":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/point.nr","source":"pub use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{traits::{Deserialize, Empty, Hash, Serialize}, hash::poseidon2_hash};\n\nglobal POINT_LENGTH: u32 = 3;\n\nimpl Serialize<POINT_LENGTH> for Point {\n fn serialize(self: Self) -> [Field; POINT_LENGTH] {\n [self.x, self.y, self.is_infinite as Field]\n }\n}\n\nimpl Hash for Point {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl Empty for Point {\n /// Note: Does not return a valid point on curve - instead represents an empty/\"unpopulated\" point struct (e.g.\n /// empty/unpopulated value in an array of points).\n fn empty() -> Self {\n Point { x: 0, y: 0, is_infinite: false }\n }\n}\n\nimpl Deserialize<POINT_LENGTH> for Point {\n fn deserialize(serialized: [Field; POINT_LENGTH]) -> Point {\n Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool }\n }\n}\n"},"3":{"path":"std/array/mod.nr","source":"use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl<T, let N: u32> [T; N] {\n /// Returns the length of this array.\n /// \n /// ```noir\n /// fn len(self) -> Field\n /// ```\n /// \n /// example\n /// \n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n /// \n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n /// \n /// Example:\n /// \n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> [U; N] {\n let first_elem = f(self[0]);\n let mut ret = [first_elem; N];\n\n for i in 1..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n /// \n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n /// \n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n /// \n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n /// \n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold<U, Env>(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce<Env>(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n}\n\nimpl<T, let N: u32> [T; N] where T: Ord + Eq {\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a: T, b: T| a <= b)\n }\n}\n\nimpl<T, let N: u32> [T; N] where T: Eq {\n /// Returns a new sorted array by sorting it with a custom comparison function. \n /// The original array remains untouched. \n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n /// \n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n /// \n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via<Env>(self, ordering: fn[Env](T, T) -> bool) -> Self {\n unsafe {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = quicksort::quicksort(self, ordering);\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]), \"Array has not been sorted correctly according to `ordering`.\"\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n }\n}\n\nimpl<let N: u32> [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str<N> {}\n}\n\nimpl<let N: u32> From<str<N>> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str<N>) -> Self {\n s.as_bytes()\n }\n}\n"},"308":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr","source":"use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector, log_hash::{LogHash, ScopedLogHash, ScopedEncryptedLogHash},\n note_hash::ScopedNoteHash, nullifier::ScopedNullifier\n},\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n MAX_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX\n},\n merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n recursion::verification_key::VerificationKey, traits::{is_empty, ToField},\n utils::field::field_from_bytes_32_trunc\n};\nuse super::utils::field::field_from_bytes;\n\npub fn sha256_to_field<let N: u32>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = std::hash::sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\nfn compute_note_hash_nonce(tx_hash: Field, note_index_in_tx: u32) -> Field {\n // Hashing tx hash with note index in tx is guaranteed to be unique\n poseidon2_hash_with_separator(\n [\n tx_hash,\n note_index_in_tx as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n let inputs = [nonce, note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, unique_note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n app.to_field(),\n unique_note_hash\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash, tx_hash: Field, note_index_in_tx: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(tx_hash, note_index_in_tx);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n app.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn silo_encrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n // We assume contract address has already been masked\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n accumulate_sha256([log_hash.contract_address.to_field(), log_hash.log_hash.value])\n }\n}\n\npub fn mask_encrypted_log_hash(scoped_log: ScopedEncryptedLogHash) -> AztecAddress {\n if scoped_log.contract_address.is_zero() {\n AztecAddress::from_field(0)\n } else if (scoped_log.log_hash.randomness == 0) {\n scoped_log.contract_address\n } else {\n AztecAddress::from_field(\n poseidon2_hash_with_separator(\n [scoped_log.contract_address.to_field(), scoped_log.log_hash.randomness],\n 0\n )\n )\n }\n}\n\nfn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs = [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes: [u8; 32] = inputs[i].to_be_bytes();\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\npub fn silo_l2_to_l1_message(msg: ScopedL2ToL1Message, rollup_version_id: Field, chain_id: Field) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually\n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field\n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes: [u8; 32] = input[offset].to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\n// NB: this assumes MAX_ENCRYPTED_LOGS_PER_TX == MAX_UNENCRYPTED_LOGS_PER_TX\n// to avoid doubling code, since we can't define the byte len to be 32*N directly.\npub fn compute_tx_logs_hash(logs: [LogHash; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn compute_tx_note_logs_hash(logs: [LogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_NOTE_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn pedersen_hash<let N: u32>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<let N: u32>(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator<let N: u32, T>(\n inputs: [Field; N],\n separator: T\n) -> Field where T: ToField {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of N + 1\n let in_len = N + 1;\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\npub fn poseidon2_hash_with_separator_slice<T>(inputs: [Field], separator: T) -> Field where T: ToField {\n let in_len = inputs.len() + 1;\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\n#[no_predicates]\npub fn poseidon2_hash_bytes<let N: u32>(inputs: [u8; N]) -> Field {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of Math.ceil(N/31)\n let mut in_len = N / 31;\n let mut has_padding = false;\n if N % 31 != 0 {\n in_len += 1;\n has_padding = true;\n }\n\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n sponge.absorb(field_from_bytes(current_field, false));\n current_field = [0; 31];\n }\n }\n if has_padding {\n sponge.absorb(field_from_bytes(current_field, false));\n }\n\n sponge.squeeze()\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = std::hash::sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), EthAddress::from_field(3), 5, 2, 4);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n ScopedL2ToL1Message {\n message: L2ToL1Message { recipient: EthAddress::from_field(1), content: 2, counter: 0 },\n contract_address: AztecAddress::from_field(3)\n },\n version,\n chainId\n );\n\n // The following value was generated by `l2_to_l1_message.test.ts`\n let hash_from_typescript = 0x00c6155d69febb9d5039b374dd4f77bf57b7c881709aa524a18acaa0bd57476a;\n\n assert_eq(hash, hash_from_typescript);\n}\n"},"311":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr","source":"use crate::{\n address::{aztec_address::AztecAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n contract_class_id::ContractClassId, constants::CONTRACT_INSTANCE_LENGTH,\n traits::{Deserialize, Hash, Serialize}\n};\n\npub struct ContractInstance {\n salt : Field,\n deployer: AztecAddress,\n contract_class_id : ContractClassId,\n initialization_hash : Field,\n public_keys_hash : PublicKeysHash,\n}\n\nimpl Eq for ContractInstance {\n fn eq(self, other: Self) -> bool {\n self.public_keys_hash.eq(other.public_keys_hash)\n & self.initialization_hash.eq(other.initialization_hash)\n & self.contract_class_id.eq(other.contract_class_id)\n & self.salt.eq(other.salt)\n }\n}\n\nimpl Serialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn serialize(self) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n [\n self.salt,\n self.deployer.to_field(),\n self.contract_class_id.to_field(),\n self.initialization_hash,\n self.public_keys_hash.to_field()\n ]\n }\n}\n\nimpl Deserialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn deserialize(serialized: [Field; CONTRACT_INSTANCE_LENGTH]) -> Self {\n Self {\n salt: serialized[0],\n deployer: AztecAddress::from_field(serialized[1]),\n contract_class_id: ContractClassId::from_field(serialized[2]),\n initialization_hash: serialized[3],\n public_keys_hash: PublicKeysHash::from_field(serialized[4])\n }\n }\n}\n\nimpl Hash for ContractInstance {\n fn hash(self) -> Field {\n self.to_address().to_field()\n }\n}\n\nimpl ContractInstance {\n fn to_address(self) -> AztecAddress {\n AztecAddress::compute(\n self.public_keys_hash,\n PartialAddress::compute(\n self.contract_class_id,\n self.salt,\n self.initialization_hash,\n self.deployer\n )\n )\n }\n}\n"},"313":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr","source":"use crate::utils::field::field_from_bytes;\nuse crate::meta::{derive_deserialize, derive_serialize};\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic\n// if a value can actually be zero. In a future refactor, we can\n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\npub trait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field {\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for u1 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u8 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u32 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u64 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for U128 {\n fn empty() -> Self {\n U128::from_integer(0)\n }\n}\n\npub fn is_empty<T>(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array<T, let N: u32>(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\npub trait Hash {\n fn hash(self) -> Field;\n}\n\npub trait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u1 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u8 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u32 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u64 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl<let N: u32> ToField for str<N> {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\npub trait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool {\n fn from_field(value: Field) -> Self {\n value as bool\n }\n}\nimpl FromField for u1 {\n fn from_field(value: Field) -> Self {\n value as u1\n }\n}\nimpl FromField for u8 {\n fn from_field(value: Field) -> Self {\n value as u8\n }\n}\nimpl FromField for u32 {\n fn from_field(value: Field) -> Self {\n value as u32\n }\n}\nimpl FromField for u64 {\n fn from_field(value: Field) -> Self {\n value as u64\n }\n}\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\n#[derive_via(derive_serialize)]\npub trait Serialize<let N: u32> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl<let N: u32> Serialize<N> for str<N> {\n fn serialize(self) -> [Field; N] {\n let bytes = self.as_bytes();\n let mut fields = [0; N];\n for i in 0..bytes.len() {\n fields[i] = bytes[i] as Field;\n }\n fields\n }\n}\n\n// docs:start:deserialize\n#[derive_via(derive_deserialize)]\npub trait Deserialize<let N: u32> {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl <let N: u32> Deserialize<N> for str<N> {\n fn deserialize(fields: [Field; N]) -> Self {\n str<N>::from(fields.map(|value| value as u8))\n }\n}\n"},"314":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr","source":"/// Utility function to console.log data in the acir simulator.\n/// Example:\n/// debug_log(\"blah blah this is a debug string\");\npub fn debug_log<let N: u32>(msg: str<N>) {\n debug_log_format(msg, []);\n}\n\n/// Utility function to console.log data in the acir simulator. This variant receives a format string in which the\n/// `${k}` tokens will be replaced with the k-eth value in the `args` array.\n/// Examples:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\npub fn debug_log_format<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n debug_log_oracle_wrapper(msg, args)\n };\n}\n\nunconstrained pub fn debug_log_oracle_wrapper<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n#[oracle(debugLog)]\nunconstrained fn debug_log_oracle<let M: u32>(_msg: str<M>, args: [Field]) {}\n"},"317":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/mod.nr","source":"// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate { lhs } else { rhs }\n}\n\npub fn arr_copy_slice<T, let N: u32, let M: u32>(src: [T; N], mut dst: [T; M], offset: u32) -> [T; M] {\n let iterator_len = if N > M { M } else { N };\n for i in 0..iterator_len {\n dst[i] = src[i + offset];\n }\n dst\n}\n"},"319":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"pub struct Reader<let N: u32> {\n data: [Field; N],\n offset: u32,\n}\n\nimpl<let N: u32> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array<let K: u32>(&mut self, mut result: [Field; K]) -> [Field; K] {\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n // TODO(#4394)\n pub fn read_struct<T, let K: u32>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array<T, let K: u32, let C: u32>(&mut self, deserialise: fn([Field; K]) -> T, mut result: [T; C]) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n"},"34":{"path":"std/hash/poseidon2.nr","source":"use crate::hash::Hasher;\nuse crate::default::Default;\n\ncomptime global RATE: u32 = 3;\n\npub struct Poseidon2 {\n cache: [Field;3],\n state: [Field;4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n #[no_predicates]\n pub fn hash<let N: u32>(input: [Field; N], message_size: u32) -> Field {\n if message_size == N {\n Poseidon2::hash_internal(input, N, false)\n } else {\n Poseidon2::hash_internal(input, message_size, true)\n }\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2 {\n let mut result = Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n }\n\n fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal<let N: u32>(input: [Field; N], in_len: u32, is_variable_length: bool) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\npub struct Poseidon2Hasher{\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv : Field = (self._state.len() as Field) * 18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field) {\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher { _state: &[] }\n }\n}\n"},"35":{"path":"std/hash/sha256.nr","source":"use crate::runtime::is_unconstrained;\n\n// Implementation of SHA-256 mapping a byte array of variable length to\n// 32 bytes.\n\n// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:sha256\n{\n digest(input)\n}\n\n#[foreign(sha256_compression)]\npub fn sha256_compression(_input: [u32; 16], _state: [u32; 8]) -> [u32; 8] {}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest<let N: u32>(msg: [u8; N]) -> [u8; 32] {\n sha256_var(msg, N as u64)\n}\n\n// Convert 64-byte array to array of 16 u32s\nfn msg_u8_to_u32(msg: [u8; 64]) -> [u32; 16] {\n let mut msg32: [u32; 16] = [0; 16];\n\n for i in 0..16 {\n let mut msg_field: Field = 0;\n for j in 0..4 {\n msg_field = msg_field * 256 + msg[64 - 4*(i + 1) + j] as Field;\n }\n msg32[15 - i] = msg_field as u32;\n }\n\n msg32\n}\n\nunconstrained fn build_msg_block_iter<let N: u32>(msg: [u8; N], message_size: u32, msg_start: u32) -> ([u8; 64], u32) {\n let mut msg_block: [u8; BLOCK_SIZE] = [0; BLOCK_SIZE];\n // We insert `BLOCK_SIZE` bytes (or up to the end of the message)\n let block_input = if msg_start + BLOCK_SIZE > message_size {\n if message_size < msg_start {\n // This function is sometimes called with `msg_start` past the end of the message.\n // In this case we return an empty block and zero pointer to signal that the result should be ignored.\n 0\n } else {\n message_size - msg_start\n }\n } else {\n BLOCK_SIZE\n };\n for k in 0..block_input {\n msg_block[k] = msg[msg_start + k];\n }\n (msg_block, block_input)\n}\n\n// Verify the block we are compressing was appropriately constructed\nfn verify_msg_block<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n msg_block: [u8; 64],\n msg_start: u32\n) -> u32 {\n let mut msg_byte_ptr: u32 = 0; // Message byte pointer\n let mut msg_end = msg_start + BLOCK_SIZE;\n if msg_end > N {\n msg_end = N;\n }\n\n for k in msg_start..msg_end {\n if k < message_size {\n assert_eq(msg_block[msg_byte_ptr], msg[k]);\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n\n msg_byte_ptr\n}\n\nglobal BLOCK_SIZE = 64;\nglobal ZERO = 0;\n\n// Variable size SHA-256 hash\npub fn sha256_var<let N: u32>(msg: [u8; N], message_size: u64) -> [u8; 32] {\n let message_size = message_size as u32;\n let num_blocks = N / BLOCK_SIZE;\n let mut msg_block: [u8; BLOCK_SIZE] = [0; BLOCK_SIZE];\n let mut h: [u32; 8] = [1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225]; // Intermediate hash, starting with the canonical initial value\n let mut msg_byte_ptr = 0; // Pointer into msg_block\n\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let (new_msg_block, new_msg_byte_ptr) = unsafe {\n build_msg_block_iter(msg, message_size, msg_start)\n };\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n // Verify the block we are compressing was appropriately constructed\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n\n // If the block is filled, compress it.\n // An un-filled block is handled after this loop.\n if (msg_start < message_size) & (msg_byte_ptr == BLOCK_SIZE) {\n h = sha256_compression(msg_u8_to_u32(msg_block), h);\n }\n }\n\n let modulo = N % BLOCK_SIZE;\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n if modulo != 0 {\n let msg_start = BLOCK_SIZE * num_blocks;\n let (new_msg_block, new_msg_byte_ptr) = unsafe {\n build_msg_block_iter(msg, message_size, msg_start)\n };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n if msg_byte_ptr == BLOCK_SIZE {\n msg_byte_ptr = 0;\n }\n\n // This variable is used to get around the compiler under-constrained check giving a warning.\n // We want to check against a constant zero, but if it does not come from the circuit inputs\n // or return values the compiler check will issue a warning.\n let zero = msg_block[0] - msg_block[0];\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n msg_block[msg_byte_ptr] = 1 << 7;\n let last_block = msg_block;\n msg_byte_ptr = msg_byte_ptr + 1;\n\n unsafe {\n let (new_msg_block, new_msg_byte_ptr) = pad_msg_block(msg_block, msg_byte_ptr);\n msg_block = new_msg_block;\n if crate::runtime::is_unconstrained() {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n if !crate::runtime::is_unconstrained() {\n for i in 0..BLOCK_SIZE {\n assert_eq(msg_block[i], last_block[i]);\n }\n\n // If i >= 57, there aren't enough bits in the current message block to accomplish this, so\n // the 1 and 0s fill up the current block, which we then compress accordingly.\n // Not enough bits (64) to store length. Fill up with zeros.\n for _i in 57..BLOCK_SIZE {\n if msg_byte_ptr <= 63 & msg_byte_ptr >= 57 {\n assert_eq(msg_block[msg_byte_ptr], zero);\n msg_byte_ptr += 1;\n }\n }\n }\n\n if msg_byte_ptr >= 57 {\n h = sha256_compression(msg_u8_to_u32(msg_block), h);\n\n msg_byte_ptr = 0;\n }\n\n msg_block = unsafe {\n attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size)\n };\n\n if !crate::runtime::is_unconstrained() {\n for i in 0..56 {\n let predicate = (i < msg_byte_ptr) as u8;\n let expected_byte = predicate * last_block[i];\n assert_eq(msg_block[i], expected_byte);\n }\n\n // We verify the message length was inserted correctly by reversing the byte decomposition.\n let len = 8 * message_size;\n let mut reconstructed_len: Field = 0;\n for i in 56..64 {\n reconstructed_len = 256 * reconstructed_len + msg_block[i] as Field;\n }\n assert_eq(reconstructed_len, len as Field);\n }\n\n hash_final_block(msg_block, h)\n}\n\nunconstrained fn pad_msg_block(\n mut msg_block: [u8; 64],\n mut msg_byte_ptr: u32\n) -> ([u8; BLOCK_SIZE], u32) {\n // If i >= 57, there aren't enough bits in the current message block to accomplish this, so\n // the 1 and 0s fill up the current block, which we then compress accordingly.\n if msg_byte_ptr >= 57 {\n // Not enough bits (64) to store length. Fill up with zeros.\n for i in msg_byte_ptr..BLOCK_SIZE {\n msg_block[i] = 0;\n }\n (msg_block, BLOCK_SIZE)\n } else {\n (msg_block, msg_byte_ptr)\n }\n}\n\nunconstrained fn attach_len_to_msg_block(mut msg_block: [u8; BLOCK_SIZE], msg_byte_ptr: u32, message_size: u32) -> [u8; BLOCK_SIZE] {\n // We assume that `msg_byte_ptr` is less than 57 because if not then it is reset to zero before calling this function.\n // In any case, fill blocks up with zeros until the last 64 (i.e. until msg_byte_ptr = 56).\n\n for i in msg_byte_ptr..56 {\n msg_block[i] = 0;\n }\n\n let len = 8 * message_size;\n let len_bytes: [u8; 8] = (len as Field).to_be_bytes();\n for i in 0..8 {\n msg_block[56 + i] = len_bytes[i];\n }\n msg_block\n}\n\nfn hash_final_block(msg_block: [u8; BLOCK_SIZE], mut state: [u32; 8]) -> [u8; 32] {\n let mut out_h: [u8; 32] = [0; 32]; // Digest as sequence of bytes\n\n // Hash final padded block\n state = sha256_compression(msg_u8_to_u32(msg_block), state);\n\n // Return final hash as byte array\n for j in 0..8 {\n let h_bytes: [u8; 4] = (state[7 - j] as Field).to_le_bytes();\n for k in 0..4 {\n out_h[31 - 4*j - k] = h_bytes[k];\n }\n }\n\n out_h\n}\n\nmod tests {\n use super::sha256_var;\n\n #[test]\n fn smoke_test() {\n let input = [0xbd];\n let result = [\n 0x68, 0x32, 0x57, 0x20, 0xaa, 0xbd, 0x7c, 0x82, 0xf3, 0x0f, 0x55, 0x4b, 0x31, 0x3d, 0x05, 0x70, 0xc9, 0x5a, 0xcc, 0xbb, 0x7d, 0xc4, 0xb5, 0xaa, 0xe1, 0x12, 0x04, 0xc0, 0x8f, 0xfe, 0x73, 0x2b\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_just_over_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116\n ];\n let result = [\n 91, 122, 146, 93, 52, 109, 133, 148, 171, 61, 156, 70, 189, 238, 153, 7, 222, 184, 94, 24, 65, 114, 192, 244, 207, 199, 87, 232, 192, 224, 171, 207\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_multiple_over_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115, 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49, 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46, 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115, 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97, 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45, 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55, 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32, 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32, 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64, 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103, 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115, 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101, 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56, 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48, 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75, 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67, 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101, 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99\n ];\n let result = [\n 116, 90, 151, 31, 78, 22, 138, 180, 211, 189, 69, 76, 227, 200, 155, 29, 59, 123, 154, 60, 47, 153, 203, 129, 157, 251, 48, 2, 79, 11, 65, 47\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_just_under_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 59\n ];\n let result = [\n 143, 140, 76, 173, 222, 123, 102, 68, 70, 149, 207, 43, 39, 61, 34, 79, 216, 252, 213, 165, 74, 16, 110, 74, 29, 64, 138, 167, 30, 1, 9, 119\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_big_not_block_multiple() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115, 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49, 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46, 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115, 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97, 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45, 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55, 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32, 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32, 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64, 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103, 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115, 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101, 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56, 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48, 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75, 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67, 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101, 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99, 116, 58, 77, 101, 115, 115, 97, 103, 101, 45, 73, 100, 58, 68, 97, 116, 101, 58, 116, 111, 59, 32, 98, 61\n ];\n let result = [\n 112, 144, 73, 182, 208, 98, 9, 238, 54, 229, 61, 145, 222, 17, 72, 62, 148, 222, 186, 55, 192, 82, 220, 35, 66, 47, 193, 200, 22, 38, 26, 186\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_big_with_padding() {\n let input = [\n 48, 130, 1, 37, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 48, 130, 1, 17, 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12, 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48, 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6, 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2, 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89, 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2, 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75, 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1, 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189, 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4, 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45, 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4, 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188, 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0\n ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212, 181, 240, 180, 106, 195, 24, 117, 54, 129, 19, 10, 250, 53\n ];\n let message_size = 297;\n assert_eq(sha256_var(input, message_size), result);\n }\n\n #[test]\n fn msg_big_no_padding() {\n let input = [\n 48, 130, 1, 37, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 48, 130, 1, 17, 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12, 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48, 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6, 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2, 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89, 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2, 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75, 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1, 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189, 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4, 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45, 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4, 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188, 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38\n ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212, 181, 240, 180, 106, 195, 24, 117, 54, 129, 19, 10, 250, 53\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn same_msg_len_variable_padding() {\n let input = [\n 29, 81, 165, 84, 243, 114, 101, 37, 242, 146, 127, 99, 69, 145, 39, 72, 213, 39, 253, 179, 218, 37, 217, 201, 172, 93, 198, 50, 249, 70, 15, 30, 162, 112, 187, 40, 140, 9, 236, 53, 32, 44, 38, 163, 113, 254, 192, 197, 44, 89, 71, 130, 169, 242, 17, 211, 214, 72, 19, 178, 186, 168, 147, 127, 99, 101, 252, 227, 8, 147, 150, 85, 97, 158, 17, 107, 218, 244, 82, 113, 247, 91, 208, 214, 60, 244, 87, 137, 173, 201, 130, 18, 66, 56, 198, 149, 207, 189, 175, 120, 123, 224, 177, 167, 251, 159, 143, 110, 68, 183, 189, 70, 126, 32, 35, 164, 44, 30, 44, 12, 65, 18, 62, 239, 242, 2, 248, 104, 2, 178, 64, 28, 126, 36, 137, 24, 14, 116, 91, 98, 90, 159, 218, 102, 45, 11, 110, 223, 245, 184, 52, 99, 59, 245, 136, 175, 3, 72, 164, 146, 145, 116, 22, 66, 24, 49, 193, 121, 3, 60, 37, 41, 97, 3, 190, 66, 195, 225, 63, 46, 3, 118, 4, 208, 15, 1, 40, 254, 235, 151, 123, 70, 180, 170, 44, 172, 90, 4, 254, 53, 239, 116, 246, 67, 56, 129, 61, 22, 169, 213, 65, 27, 216, 116, 162, 239, 214, 207, 126, 177, 20, 100, 25, 48, 143, 84, 215, 70, 197, 53, 65, 70, 86, 172, 61, 62, 9, 212, 167, 169, 133, 41, 126, 213, 196, 33, 192, 238, 0, 63, 246, 215, 58, 128, 110, 101, 92, 3, 170, 214, 130, 149, 52, 81, 125, 118, 233, 3, 118, 193, 104, 207, 120, 115, 77, 253, 191, 122, 0, 107, 164, 207, 113, 81, 169, 36, 201, 228, 74, 134, 131, 218, 178, 35, 30, 216, 101, 2, 103, 174, 87, 95, 50, 50, 215, 157, 5, 210, 188, 54, 211, 78, 45, 199, 96, 121, 241, 241, 176, 226, 194, 134, 130, 89, 217, 210, 186, 32, 140, 39, 91, 103, 212, 26, 87, 32, 72, 144, 228, 230, 117, 99, 188, 50, 15, 69, 79, 179, 50, 12, 106, 86, 218, 101, 73, 142, 243, 29, 250, 122, 228, 233, 29, 255, 22, 121, 114, 125, 103, 41, 250, 241, 179, 126, 158, 198, 116, 209, 65, 94, 98, 228, 175, 169, 96, 3, 9, 233, 133, 214, 55, 161, 164, 103, 80, 85, 24, 186, 64, 167, 92, 131, 53, 101, 202, 47, 25, 104, 118, 155, 14, 12, 12, 25, 116, 45, 221, 249, 28, 246, 212, 200, 157, 167, 169, 56, 197, 181, 4, 245, 146, 1, 140, 234, 191, 212, 228, 125, 87, 81, 86, 119, 30, 63, 129, 143, 32, 96\n ];\n\n // Prepare inputs of different lengths\n let mut input_511 = [0; 511];\n let mut input_512 = [0; 512]; // Next block\n let mut input_575 = [0; 575];\n let mut input_576 = [0; 576]; // Next block\n for i in 0..input.len() {\n input_511[i] = input[i];\n input_512[i] = input[i];\n input_575[i] = input[i];\n input_576[i] = input[i];\n }\n\n // Compute hashes of all inputs (with same message length)\n let fixed_length_hash = super::sha256(input);\n let var_full_length_hash = sha256_var(input, input.len() as u64);\n let var_length_hash_511 = sha256_var(input_511, input.len() as u64);\n let var_length_hash_512 = sha256_var(input_512, input.len() as u64);\n let var_length_hash_575 = sha256_var(input_575, input.len() as u64);\n let var_length_hash_576 = sha256_var(input_576, input.len() as u64);\n\n // All of the above should have produced the same hash\n assert_eq(var_full_length_hash, fixed_length_hash);\n assert_eq(var_length_hash_511, fixed_length_hash);\n assert_eq(var_length_hash_512, fixed_length_hash);\n assert_eq(var_length_hash_575, fixed_length_hash);\n assert_eq(var_length_hash_576, fixed_length_hash);\n }\n}\n"},"437":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/main.nr","source":"mod public_key_note;\n\n// Account contract that uses Schnorr signatures for authentication.\n// The signing key is stored in an immutable private note and should be different from the encryption/nullifying key.\nuse dep::aztec::macros::aztec;\n\n#[aztec]\ncontract SchnorrAccount {\n use dep::std;\n\n use dep::aztec::prelude::{AztecAddress, PrivateContext, PrivateImmutable};\n use dep::aztec::encrypted_logs::encrypted_note_emission::encode_and_encrypt_note;\n use dep::authwit::{\n entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions,\n auth_witness::get_auth_witness, auth::{compute_authwit_nullifier, compute_authwit_message_hash}\n };\n use dep::aztec::{hash::compute_siloed_nullifier, keys::getters::get_public_keys};\n use dep::aztec::oracle::get_nullifier_membership_witness::get_low_nullifier_membership_witness;\n use dep::aztec::macros::{storage::storage, functions::{private, initializer, view, noinitcheck}};\n\n use crate::public_key_note::PublicKeyNote;\n\n #[storage]\n struct Storage<Context> {\n signing_public_key: PrivateImmutable<PublicKeyNote, Context>,\n }\n\n // Constructs the contract\n #[private]\n #[initializer]\n fn constructor(signing_pub_key_x: Field, signing_pub_key_y: Field) {\n let this = context.this_address();\n let this_keys = get_public_keys(this);\n // Not emitting outgoing for msg_sender here to not have to register keys for the contract through which we\n // deploy this (typically MultiCallEntrypoint). I think it's ok here as I feel the outgoing here is not that\n // important.\n\n let mut pub_key_note = PublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this_keys.npk_m.hash());\n storage.signing_public_key.initialize(&mut pub_key_note).emit(encode_and_encrypt_note(&mut context, this_keys.ovpk_m, this_keys.ivpk_m, this));\n }\n\n // Note: If you globally change the entrypoint signature don't forget to update account_entrypoint.ts file\n #[private]\n #[noinitcheck]\n fn entrypoint(app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.entrypoint(app_payload, fee_payload, cancellable);\n }\n\n #[private]\n #[noinitcheck]\n #[view]\n fn verify_private_authwit(inner_hash: Field) -> Field {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.verify_private_authwit(inner_hash)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, outer_hash: Field) -> bool {\n // docs:start:is_valid_impl\n // Load public key from storage\n let storage = Storage::init(context);\n let public_key = storage.signing_public_key.get_note();\n // Load auth witness\n let witness: [Field; 64] = unsafe {\n get_auth_witness(outer_hash)\n };\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n\n // Verify signature of the payload bytes\n std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n outer_hash.to_be_bytes::<32>()\n )\n // docs:end:is_valid_impl\n }\n\n /**\n * @notice Helper function to check validity of private authwitnesses\n * @param consumer The address of the consumer of the message\n * @param message_hash The message hash of the message to check the validity\n * @return True if the message_hash can be consumed, false otherwise\n */\n unconstrained fn lookup_validity(consumer: AztecAddress, inner_hash: Field) -> pub bool {\n let public_key = storage.signing_public_key.view_note();\n\n let message_hash = compute_authwit_message_hash(consumer, context.chain_id(), context.version(), inner_hash);\n\n let witness: [Field; 64] = get_auth_witness(message_hash);\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n let valid_in_private = std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n message_hash.to_be_bytes::<32>()\n );\n\n // Compute the nullifier and check if it is spent\n // This will BLINDLY TRUST the oracle, but the oracle is us, and\n // it is not as part of execution of the contract, so we are good.\n let nullifier = compute_authwit_nullifier(context.this_address(), inner_hash);\n let siloed_nullifier = compute_siloed_nullifier(consumer, nullifier);\n let lower_wit = get_low_nullifier_membership_witness(context.block_number(), siloed_nullifier);\n let is_spent = lower_wit.leaf_preimage.nullifier == siloed_nullifier;\n\n !is_spent & valid_in_private\n }\n}\n"},"438":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/public_key_note.nr","source":"use dep::aztec::prelude::{NoteHeader, NullifiableNote, PrivateContext};\nuse dep::aztec::{\n note::utils::compute_note_hash_for_nullify, keys::getters::get_nsk_app,\n protocol_types::{constants::GENERATOR_INDEX__NOTE_NULLIFIER, hash::poseidon2_hash_with_separator},\n macros::notes::note\n};\n\n// Stores a public key composed of two fields\n// TODO: Do we need to include a nonce, in case we want to read/nullify/recreate with the same pubkey value?\n#[note]\npub struct PublicKeyNote {\n x: Field,\n y: Field,\n // We store the npk_m_hash only to get the secret key to compute the nullifier\n npk_m_hash: Field,\n}\n\nimpl NullifiableNote for PublicKeyNote {\n fn compute_nullifier(self, context: &mut PrivateContext, note_hash_for_nullify: Field) -> Field {\n let secret = context.request_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n\n unconstrained fn compute_nullifier_without_context(self) -> Field {\n let note_hash_for_nullify = compute_note_hash_for_nullify(self);\n let secret = get_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n}\n\nimpl PublicKeyNote {\n pub fn new(x: Field, y: Field, npk_m_hash: Field) -> Self {\n PublicKeyNote { x, y, npk_m_hash, header: NoteHeader::empty() }\n }\n}\n"},"58":{"path":"std/option.nr","source":"use crate::hash::{Hash, Hasher};\nuse crate::cmp::{Ordering, Ord, Eq};\nuse crate::default::Default;\n\npub struct Option<T> {\n _is_some: bool,\n _value: T,\n}\n\nimpl<T> Option<T> {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::mem::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some { self._value } else { default }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else<Env>(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n fn expect<let N: u32, MessageTypes>(self, message: fmtstr<N, MessageTypes>) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> Option<U> {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or<U, Env>(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else<U, Env1, Env2>(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then<U, Env>(self, f: fn[Env](T) -> Option<U>) -> Option<U> {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some { self } else { other }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else<Env>(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some { self } else { default() }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some { Option::none() } else { self }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter<Env>(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option<Option<T>> into a Option<T>.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option<Option<T>>) -> Option<T> {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl<T> Default for Option<T> {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl<T> Eq for Option<T> where T: Eq {\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl<T> Hash for Option<T> where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl<T> Ord for Option<T> where T: Ord {\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n"},"59":{"path":"std/panic.nr","source":"pub fn panic<T, U, let N: u32>(message: fmtstr<N, T>) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n"},"7":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\n/// A `BoundedVec<T, MaxLen>` is a growable storage similar to a `Vec<T>` except that it\n/// is bounded with a maximum possible length. Unlike `Vec`, `BoundedVec` is not implemented\n/// via slices and thus is not subject to the same restrictions slices are (notably, nested\n/// slices - and thus nested vectors as well - are disallowed).\n/// \n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n/// \n/// For these reasons `BoundedVec<T, N>` should generally be preferred over `Vec<T>` when there\n/// is a reasonable maximum bound that can be placed on the vector.\n/// \n/// Example:\n/// \n/// ```noir\n/// let mut vector: BoundedVec<Field, 10> = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\npub struct BoundedVec<T, let MaxLen: u32> {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl<T, let MaxLen: u32> BoundedVec<T, MaxLen> {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec<Field, 10> = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec<Field, 10> {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec<Field, 3> = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiler can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a \n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn sum_of_first_three<let N: u32>(v: BoundedVec<u32, N>) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n /// \n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n /// \n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n /// \n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure. \n /// vec.set_unchecked(2, 42);\n /// println(vec);\n /// \n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n /// \n /// Panics if the new length of the vector will be greater than the max length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n /// \n /// v.push(1);\n /// v.push(2);\n /// \n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\n /// ```\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n /// Returns the current length of this vector\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 4> = BoundedVec::new();\n /// assert(v.len() == 0);\n /// \n /// v.push(100);\n /// assert(v.len() == 1);\n /// \n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n /// \n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n /// \n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n /// \n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n /// \n /// Note that uninitialized elements may be zeroed out!\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n /// \n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n /// \n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_array<let Len: u32>(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the given slice to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_slice(&[2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// ```noir\n /// let mut v1: BoundedVec<Field, 5> = BoundedVec::new();\n /// let mut v2: BoundedVec<Field, 7> = BoundedVec::new();\n /// \n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n /// \n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\n /// ```\n pub fn extend_from_bounded_vec<let Len: u32>(&mut self, vec: BoundedVec<T, Len>) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n /// Creates a new vector, populating it with values derived from an array input. \n /// The maximum length of the vector is determined based on the type signature.\n /// \n /// Example:\n /// \n /// ```noir\n /// let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array([1, 2, 3])\n /// ```\n pub fn from_array<let Len: u32>(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec<T, MaxLen> = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n /// \n /// Panics if the vector is empty.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n /// \n /// let two = v.pop();\n /// let one = v.pop();\n /// \n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\n /// ```\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n /// Returns true if the given predicate returns true for any element\n /// in this vector.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<u32, 3> = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n /// \n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\n /// ```\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element in this vector. \n /// \n /// Example:\n /// \n /// ```noir\n /// let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n /// \n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> BoundedVec<U, MaxLen> {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n ret\n }\n}\n\nimpl<T, let MaxLen: u32> Eq for BoundedVec<T, MaxLen> where T: Eq {\n fn eq(self, other: BoundedVec<T, MaxLen>) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n\n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nimpl<T, let MaxLen: u32, let Len: u32> From<[T; Len]> for BoundedVec<T, MaxLen> {\n fn from(array: [T; Len]) -> BoundedVec<T, MaxLen> {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec<Field, 5> = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec<Field, 5> = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec<Field, 4> = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.storage()[2], 0);\n }\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with=\"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec<Field, 2> = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n}\n"},"75":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\n\nuse crate::entrypoint::function_call::FunctionCall;\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u32 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u32 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u32 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\npub struct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize<APP_PAYLOAD_SIZE> for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, APP_PAYLOAD_SIZE> = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__SIGNATURE_PAYLOAD)\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, APP_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n\n bytes.storage\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"},"76":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/fee.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__FEE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\nuse crate::entrypoint::function_call::FunctionCall;\n\n// 2 * 5 (FUNCTION_CALL_SIZE) + 2\nglobal FEE_PAYLOAD_SIZE: u32 = 12;\n\n// 2 * 98 (FUNCTION_CALL_SIZE_IN_BYTES) + 32\nglobal FEE_PAYLOAD_SIZE_IN_BYTES: u32 = 228;\n\nglobal MAX_FEE_FUNCTION_CALLS: u32 = 2;\n\n// docs:start:fee-payload-struct\npub struct FeePayload {\n function_calls: [FunctionCall; MAX_FEE_FUNCTION_CALLS],\n nonce: Field,\n is_fee_payer: bool,\n}\n// docs:end:fee-payload-struct\n\nimpl Serialize<FEE_PAYLOAD_SIZE> for FeePayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; FEE_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, FEE_PAYLOAD_SIZE> = BoundedVec::new();\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n fields.extend_from_array(self.function_calls[i].serialize());\n }\n fields.push(self.nonce);\n fields.push(self.is_fee_payer as Field);\n fields.storage\n }\n}\n\nimpl Hash for FeePayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__FEE_PAYLOAD)\n }\n}\n\nimpl FeePayload {\n fn to_be_bytes(self) -> [u8; FEE_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, FEE_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n bytes.push(self.is_fee_payer as u8);\n\n bytes.storage\n }\n\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n if self.is_fee_payer {\n context.set_as_fee_payer();\n }\n }\n}\n"},"79":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth.nr","source":"use dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{\n GENERATOR_INDEX__AUTHWIT_INNER, GENERATOR_INDEX__AUTHWIT_OUTER, GENERATOR_INDEX__AUTHWIT_NULLIFIER,\n CANONICAL_AUTH_REGISTRY_ADDRESS\n},\n hash::poseidon2_hash_with_separator\n};\nuse dep::aztec::{context::{PrivateContext, PublicContext, gas::GasOpts}, hash::hash_args_array};\n\n/**\n * Authenticaion witness helper library\n *\n * Authentication Witness is a scheme for authenticating actions on Aztec, so users can allow third-parties\n * (e.g. protocols or other users) to execute an action on their behalf.\n *\n * This library provides helper functions to manage such witnesses.\n * The authentication witness, is some \"witness\" (data) that authenticates a `message_hash`.\n * The simplest example of an authentication witness, is a signature. The signature is the \"evidence\",\n * that the signer has seen the message, agrees with it, and has allowed it.\n * It does not need to be a signature. It could be any kind of \"proof\" that the message is allowed.\n * Another proof could be knowing some kind of secret, or having some kind of \"token\" that allows the message.\n *\n * The `message_hash` is a hash of the following structure:\n * hash(consumer, chain_id, version, inner_hash)\n * - consumer: the address of the contract that is \"consuming\" the message,\n * - chain_id: the chain id of the chain that the message is being consumed on,\n * - version: the version of the chain that the message is being consumed on,\n * - inner_hash: the hash of the \"inner\" message that is being consumed, this is the \"actual\" message or action.\n *\n * While the `inner_hash` could be anything, such as showing you signed a specific message, it will often be\n * a hash of the \"action\" to approve, along with who made the call. As part of this library, we provide a few\n * helper functions to deal with such messages.\n *\n * For example, we provide helper function that is used for checking that the message is an encoding of the current call.\n * This can be used to let some contract \"allow\" another contract to act on its behalf, as long as it can\n * show that it is acting on behalf of the contract.\n *\n * If we take a case of allowing a contract to transfer tokens on behalf of an account, the `inner_hash` can be\n * derived as:\n * inner_hash = hash(caller, \"transfer\", hash(to, amount))\n *\n * Where the `caller` would be the address of the contract that is trying to transfer the tokens, and `to` and `amount`\n * the arguments for the transfer.\n *\n * Note that we have both a `caller` and a `consumer`, the `consumer` will be the contract that is consuming the message,\n * in the case of the transfer, it would be the `Token` contract itself, while the caller, will be the actor that is\n * allowed to transfer the tokens.\n *\n *\n * The authentication mechanism works differently in public and private contexts. In private, we recall that everything\n * is executed on the user's device, so we can use `oracles` to \"ask\" the user (not contract) for information. In public\n * we cannot do this, since it is executed by the sequencer (someone else). Therefore we can instead use a \"registry\"\n * to store the messages that we have approved.\n *\n * A simple example would be a \"token\" that is being \"pulled\" from one account into another. We will first outline\n * how this would look in private, and then in public later.\n *\n * Say that a user `Alice` wants to deposit some tokens into a DeFi protocol (say a DEX).\n * `Alice` would make a `deposit` transaction, that she is executing using her account contract.\n * The account would call the `DeFi` contract to execute `deposit`, which would try to pull funds from the `Token`\n * contract. Since the `DeFi` contract is trying to pull funds from an account that is not its own, it needs to\n * convince the `Token` contract that it is allowed to do so.\n *\n * This is where the authentication witness comes in The `Token` contract computes a `message_hash` from the\n * `transfer` call, and then asks `Alice Account` contract to verify that the `DeFi` contract is allowed to\n * execute that call.\n *\n * `Alice Account` contract can then ask `Alice` if she wants to allow the `DeFi` contract to pull funds from her\n * account. If she does, she will sign the `message_hash` and return the signature to the `Alice Account` which\n * will validate it and return success to the `Token` contract which will then allow the `DeFi` contract to pull\n * funds from `Alice`.\n *\n * To ensure that the same \"approval\" cannot be used multiple times, we also compute a `nullifier` for the\n * authentication witness, and emit it from the `Token` contract (consumer).\n *\n * Note that we can do this flow as we are in private were we can do oracle calls out from contracts.\n *\n *\n * Person Contract Contract Contract\n * Alice Alice Account Token DeFi\n * | | | |\n * | Defi.deposit(Token, 1000) | |\n * |----------------->| | |\n * | | deposit(Token, 1000) |\n * | |---------------------------------------->|\n * | | | |\n * | | | transfer(Alice, Defi, 1000)\n * | | |<---------------------|\n * | | | |\n * | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | |<-----------------| |\n * | | | |\n * | Please give me AuthWit for DeFi | |\n * | calling transfer(Alice, Defi, 1000) | |\n * |<-----------------| | |\n * | | | |\n * | | | |\n * | AuthWit for transfer(Alice, Defi, 1000) |\n * |----------------->| | |\n * | | AuthWit validity | |\n * | |----------------->| |\n * | | | |\n * | | throw if invalid AuthWit |\n * | | | |\n * | | emit AuthWit nullifier |\n * | | | |\n * | | transfer(Alice, Defi, 1000) |\n * | | | |\n * | | | |\n * | | | success |\n * | | |--------------------->|\n * | | | |\n * | | | |\n * | | | deposit(Token, 1000)\n * | | | |\n * | | | |\n *\n *\n * If we instead were in public, we cannot do the same flow. Instead we would use an authentication registry to store\n * the messages that we have approved.\n *\n * To approve a message, `Alice Account` can make a `set_authorized` call to the registry, to set a `message_hash`\n * as authorized. This is essentially a mapping from `message_hash` to `true` for `Alice Contract`. Every account\n * has its own map in the registry, so `Alice` cannot approve a message for `Bob`.\n *\n * The `Token` contract can then try to \"spend\" the approval by calling `consume` on the registry. If the message\n * was approved, the value is updated to `false`, and we return the success flag. For more information on the\n * registry, see `main.nr` in `auth_registry_contract`.\n *\n * Person Contract Contract Contract Contract\n * Alice Alice Account Registry Token DeFi\n * | | | | |\n * | Registry.set_authorized(..., true) | | |\n * |----------------->| | | |\n * | | set_authorized(..., true) | |\n * | |------------------->| | |\n * | | | | |\n * | | set authorized to true | |\n * | | | | |\n * | | | | |\n * | Defi.deposit(Token, 1000) | | |\n * |----------------->| | | |\n * | | deposit(Token, 1000) | |\n * | |-------------------------------------------------------------->|\n * | | | | |\n * | | | transfer(Alice, Defi, 1000) |\n * | | | |<---------------------|\n * | | | | |\n * | | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | | |<------------------| |\n * | | | | |\n * | | throw if invalid AuthWit | |\n * | | | | |\n * | | | | |\n * | | set authorized to false | |\n * | | | | |\n * | | | | |\n * | | | AuthWit validity | |\n * | | |------------------>| |\n * | | | | |\n * | | | | transfer(Alice, Defi, 1000)\n * | | | |<-------------------->|\n * | | | | |\n * | | | | success |\n * | | | |--------------------->|\n * | | | | |\n * | | | | deposit(Token, 1000)\n * | | | | |\n *\n *\n * --- FAQ ---\n * Q: Why are we using a success flag of `poseidon2_hash_bytes(\"IS_VALID()\")` instead of just returning a boolean?\n * A: We want to make sure that we don't accidentally return `true` if there is a collision in the function selector.\n * By returning a hash of `IS_VALID()`, it becomes very unlikely that there is both a collision and we return\n * a success flag.\n *\n * Q: Why are we using static calls?\n * A: We are using static calls to ensure that the account contract cannot re-enter. If it was a normal call, it\n * could make a new call and do a re-entry attack. Using a static ensures that it cannot update any state.\n *\n * Q: Would it not be cheaper to use a nullifier instead of updating state in public?\n * A: At a quick glance, a public state update + nullifier is 96 bytes, but two state updates are 128, so it would be\n * cheaper to use a nullifier, if this is the way it would always be done. However, if both the approval and the\n * consumption is done in the same transaction, then we will be able to squash the updates (only final tx state diff is posted to DA), and now it is cheaper.\n *\n * Q: Why is the chain id and the version part of the message hash?\n * A: The chain id and the version is part of the message hash to ensure that the message is only valid on a specific\n * chain to avoid a case where the same message could be used across multiple chains.\n */\n\nglobal IS_VALID_SELECTOR = 0x47dacd73; // 4 last bytes of poseidon2_hash_bytes(\"IS_VALID()\")\n\n/**\n * Assert that `on_behalf_of` have authorized the current call with a valid authentication witness\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash([context.msg_sender().to_field(), context.selector().to_field(), context.args_hash]);\n assert_inner_hash_valid_authwit(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit\n\n/**\n * Assert that a specific `inner_hash` is valid for the `on_behalf_of` address\n *\n * Used as an internal function for `assert_current_call_valid_authwit` and can be used as a standalone function when\n * the `inner_hash` is from a different source, e.g., say a block of text etc.\n *\n * @param on_behalf_of The address that have authorized the current call\n * @param inner_hash The hash of the message to authorize\n */\npub fn assert_inner_hash_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n // We perform a static call here and not a standard one to ensure that the account contract cannot re-enter.\n let result: Field = context.static_call_private_function(\n on_behalf_of,\n comptime {\n FunctionSelector::from_signature(\"verify_private_authwit(Field)\")\n },\n [inner_hash]\n ).unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n // Compute the nullifier, similar computation to the outer hash, but without the chain_id and version.\n // Those should already be handled in the verification, so we just need something to nullify, that allow same inner_hash for multiple actors.\n let nullifier = compute_authwit_nullifier(on_behalf_of, inner_hash);\n context.push_nullifier(nullifier);\n}\n\n/**\n * Assert that `on_behalf_of` have authorized the current call in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit_public\npub fn assert_current_call_valid_authwit_public(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress\n) {\n let inner_hash = compute_inner_authwit_hash(\n [(*context).msg_sender().to_field(), (*context).selector().to_field(), (*context).get_args_hash()]\n );\n assert_inner_hash_valid_authwit_public(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n/**\n * Assert that `on_behalf_of` have authorized a speicifc `inner_hash` in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n */\npub fn assert_inner_hash_valid_authwit_public(context: &mut PublicContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n let result: Field = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"consume((Field),Field)\")\n },\n [on_behalf_of.to_field(), inner_hash].as_slice(),\n GasOpts::default()\n ).deserialize_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n\n/**\n * Compute the `message_hash` from a function call to be used by an authentication witness\n *\n * Useful for when you need a non-account contract to approve during execution. For example if you need a contract\n * to make a call to nested contract, e.g., contract A wants to exit token T to L1 using bridge B, so it needs to allow\n * B to transfer T on its behalf.\n *\n * @param caller The address of the contract that is calling the function, in the example above, this would be B\n * @param consumer The address of the contract that is consuming the message, in the example above, this would be T\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param selector The function selector of the function that is being called\n * @param args The arguments of the function that is being called\n */\n// docs:start:compute_authwit_message_hash_from_call\npub fn compute_authwit_message_hash_from_call<let N: u32>(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N]\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash = compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_authwit_message_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_authwit_message_hash_from_call\n\n/**\n * Computes the `inner_hash` of the authentication witness\n *\n * This is used internally, but also useful in cases where you want to compute the `inner_hash` for a specific message\n * that is not necessarily a call, but just some \"bytes\" or text.\n *\n * @param args The arguments to hash\n */\npub fn compute_inner_authwit_hash<let N: u32>(args: [Field; N]) -> Field {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\n/**\n * Computs the `authwit_nullifier` for a specific `on_behalf_of` and `inner_hash`\n *\n * Using the `on_behalf_of` and the `inner_hash` to ensure that the nullifier is siloed for a specific `on_behalf_of`.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n * @param inner_hash The hash of the message to authorize\n */\npub fn compute_authwit_nullifier(on_behalf_of: AztecAddress, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [on_behalf_of.to_field(), inner_hash],\n GENERATOR_INDEX__AUTHWIT_NULLIFIER\n )\n}\n\n/**\n * Computes the `message_hash` for the authentication witness\n *\n * @param consumer The address of the contract that is consuming the message\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param inner_hash The hash of the \"inner\" message that is being consumed\n */\npub fn compute_authwit_message_hash(consumer: AztecAddress, chain_id: Field, version: Field, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n consumer.to_field(),\n chain_id,\n version,\n inner_hash\n ],\n GENERATOR_INDEX__AUTHWIT_OUTER\n )\n}\n\n/**\n * Helper function to set the authorization status of a message hash\n *\n * Wraps a public call to the authentication registry to set the authorization status of a `message_hash`\n *\n * @param message_hash The hash of the message to authorize\n * @param authorize True if the message should be authorized, false if it should be revoked\n */\npub fn set_authorized(context: &mut PublicContext, message_hash: Field, authorize: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"set_authorized(Field,bool)\")\n },\n [message_hash, authorize as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n\n/**\n * Helper function to reject all authwits\n *\n * Wraps a public call to the authentication registry to set the `reject_all` flag\n *\n * @param reject True if all authwits should be rejected, false otherwise\n */\npub fn set_reject_all(context: &mut PublicContext, reject: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"set_reject_all(bool)\")\n },\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n"},"80":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth_witness.nr","source":"#[oracle(getAuthWitness)]\nunconstrained fn get_auth_witness_oracle<let N: u32>(_message_hash: Field) -> [Field; N] {}\n\n/**\n * Oracle wrapper to fetch an `auth_witness` for a given `message_hash` from the PXE.\n * \n * @param message_hash The hash of the message for which the `auth_witness` is to be fetched.\n * @return The `auth_witness` for the given `message_hash` as Field array.\n */\nunconstrained pub fn get_auth_witness<let N: u32>(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n"},"81":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/account.nr","source":"use dep::aztec::{\n context::PrivateContext,\n protocol_types::constants::{GENERATOR_INDEX__COMBINED_PAYLOAD, GENERATOR_INDEX__TX_NULLIFIER},\n hash::poseidon2_hash_with_separator\n};\n\nuse crate::entrypoint::{app::AppPayload, fee::FeePayload};\nuse crate::auth::{IS_VALID_SELECTOR, compute_authwit_message_hash};\n\npub struct AccountActions<Context> {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n}\n\nimpl<Context> AccountActions<Context> {\n pub fn init(context: Context, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions { context, is_valid_impl }\n }\n}\n\n/**\n * An implementation of the Account Action struct for the private context.\n *\n * Implements logic to verify authorization and execute payloads.\n */\nimpl AccountActions<&mut PrivateContext> {\n\n /**\n * Verifies that the `app_hash` and `fee_hash` are authorized and then executes them.\n *\n * Executes the `fee_payload` and `app_payload` in sequence.\n * Will execute the `fee_payload` as part of the setup, and then enter the app phase.\n *\n * @param app_payload The payload that contains the calls to be executed in the app phase.\n * @param fee_payload The payload that contains the calls to be executed in the setup phase.\n */\n // docs:start:entrypoint\n pub fn entrypoint(self, app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let valid_fn = self.is_valid_impl;\n\n let combined_payload_hash = poseidon2_hash_with_separator(\n [app_payload.hash(), fee_payload.hash()],\n GENERATOR_INDEX__COMBINED_PAYLOAD\n );\n assert(valid_fn(self.context, combined_payload_hash));\n\n fee_payload.execute_calls(self.context);\n self.context.end_setup();\n app_payload.execute_calls(self.context);\n if cancellable {\n let tx_nullifier = poseidon2_hash_with_separator([app_payload.nonce], GENERATOR_INDEX__TX_NULLIFIER);\n self.context.push_nullifier(tx_nullifier);\n }\n }\n // docs:end:entrypoint\n\n /**\n * Verifies that the `msg_sender` is authorized to consume `inner_hash` by the account.\n *\n * Computes the `message_hash` using the `msg_sender`, `chain_id`, `version` and `inner_hash`.\n * Then executes the `is_valid_impl` function to verify that the message is authorized.\n *\n * Will revert if the message is not authorized.\n *\n * @param inner_hash The hash of the message that the `msg_sender` is trying to consume.\n */\n // docs:start:verify_private_authwit\n pub fn verify_private_authwit(self, inner_hash: Field) -> Field {\n // The `inner_hash` is \"siloed\" with the `msg_sender` to ensure that only it can\n // consume the message.\n // This ensures that contracts cannot consume messages that are not intended for them.\n let message_hash = compute_authwit_message_hash(\n self.context.msg_sender(),\n self.context.chain_id(),\n self.context.version(),\n inner_hash\n );\n let valid_fn = self.is_valid_impl;\n assert(valid_fn(self.context, message_hash) == true, \"Message not authorized by account\");\n IS_VALID_SELECTOR\n }\n // docs:end:verify_private_authwit\n}\n"},"84":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr","source":"use crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n messaging::process_l1_to_l2_message, hash::{hash_args_array, ArgsHasher},\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX, NUM_KEY_TYPES, sk_generators},\n oracle::{\n key_validation_request::get_key_validation_request, arguments, returns::pack_returns,\n call_private_function::call_private_function_internal, header::get_header_at,\n logs::{emit_encrypted_note_log, emit_encrypted_event_log},\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, notify_set_min_revertible_side_effect_counter,\n set_public_teardown_function_call_internal\n}\n}\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext, function_selector::FunctionSelector, max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_request::PublicCallRequest, read_request::ReadRequest, note_hash::NoteHash,\n nullifier::Nullifier, log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_NOTE_HASHES_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_ENCRYPTED_LOGS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n MAX_NOTE_ENCRYPTED_LOGS_PER_CALL, PUBLIC_DISPATCH_SELECTOR\n},\n header::Header, messaging::l2_to_l1_message::L2ToL1Message, traits::Empty\n};\n\n// When finished, one can call .finish() to convert back to the abi\npub struct PrivateContext {\n // docs:start:private-context\n inputs: PrivateContextInputs,\n side_effect_counter: u32,\n\n min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n args_hash: Field,\n return_hash: Field,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: BoundedVec<ReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n key_validation_requests_and_generators: BoundedVec<KeyValidationRequestAndGenerator, MAX_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n note_hashes: BoundedVec<NoteHash, MAX_NOTE_HASHES_PER_CALL>,\n nullifiers: BoundedVec<Nullifier, MAX_NULLIFIERS_PER_CALL>,\n\n private_call_requests : BoundedVec<PrivateCallRequest, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_requests : BoundedVec<PublicCallRequest, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n public_teardown_call_request: PublicCallRequest,\n l2_to_l1_msgs : BoundedVec<L2ToL1Message, MAX_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n note_encrypted_logs_hashes: BoundedVec<NoteLogHash, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL>,\n encrypted_logs_hashes: BoundedVec<EncryptedLogHash, MAX_ENCRYPTED_LOGS_PER_CALL>,\n unencrypted_logs_hashes: BoundedVec<LogHash, MAX_UNENCRYPTED_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n last_key_validation_requests: [Option<KeyValidationRequest>; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n\n fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n fn push_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n fn push_nullifier(&mut self, nullifier: Field) {\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() });\n }\n\n fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: nullified_note_hash, counter: self.next_counter() });\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage,\n nullifier_read_requests: self.nullifier_read_requests.storage,\n key_validation_requests_and_generators: self.key_validation_requests_and_generators.storage,\n note_hashes: self.note_hashes.storage,\n nullifiers: self.nullifiers.storage,\n private_call_requests: self.private_call_requests.storage,\n public_call_requests: self.public_call_requests.storage,\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: self.l2_to_l1_msgs.storage,\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n note_encrypted_logs_hashes: self.note_encrypted_logs_hashes.storage,\n encrypted_logs_hashes: self.encrypted_logs_hashes.storage,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\"Setting {0} as fee payer\", [self.this_address().to_field()]);\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n notify_set_min_revertible_side_effect_counter(self.min_revertible_side_effect_counter);\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number = MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request = self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one\n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale. We fetch new values from oracle and instruct\n // protocol circuits to validate them by storing the validation request in context.\n let request = get_key_validation_request(pk_m_hash, key_index);\n let request_and_generator = KeyValidationRequestAndGenerator { request, sk_app_generator: sk_generators[key_index] };\n // We constrain that the pk_m_hash matches the one in the request (otherwise we could get an arbitrary\n // valid key request and not the one corresponding to pk_m_hash).\n assert(request.pk_m.hash() == pk_m_hash);\n self.key_validation_requests_and_generators.push(request_and_generator);\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content, counter: self.next_counter() };\n self.l2_to_l1_msgs.push(message);\n }\n\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(&mut self, content: Field, secret: Field, sender: EthAddress) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\n\n // NB: A randomness value of 0 signals that the kernels should not mask the contract address\n // used in siloing later on e.g. 'handshaking' contract w/ known address.\n pub fn emit_raw_event_log_with_masked_address<let M: u32>(\n &mut self,\n randomness: Field,\n log: [u8; M],\n log_hash: Field\n ) {\n let counter = self.next_counter();\n let contract_address = self.this_address();\n let len = log.len() as Field + 4;\n let side_effect = EncryptedLogHash { value: log_hash, counter, length: len, randomness };\n self.encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_event_log(contract_address, randomness, log, counter);\n }\n\n pub fn emit_raw_note_log<let M: u32>(&mut self, note_hash_counter: u32, log: [u8; M], log_hash: Field) {\n let counter = self.next_counter();\n let len = log.len() as Field + 4;\n let side_effect = NoteLogHash { value: log_hash, counter, length: len, note_hash_counter };\n self.note_encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_note_log(note_hash_counter, log, counter);\n }\n\n pub fn call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_private_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n let (end_side_effect_counter, returns_hash) = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = end_side_effect_counter + 1;\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n self.private_call_requests.push(\n PrivateCallRequest {\n contract_address,\n call_context,\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter\n }\n );\n\n PackedReturns::new(returns_hash)\n }\n\n pub fn call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n is_delegate_call\n );\n\n // Public calls are rerouted through the dispatch function.\n let function_selector = comptime {\n FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR)\n };\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n let call_request = PublicCallRequest { contract_address, call_context, args_hash, counter };\n self.public_call_requests.push(call_request);\n }\n\n pub fn set_public_teardown_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.set_public_teardown_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn set_public_teardown_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n is_delegate_call\n );\n\n let function_selector = comptime {\n FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR)\n };\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n self.public_teardown_call_request = PublicCallRequest {\n contract_address,\n call_context,\n args_hash,\n counter,\n };\n }\n\n fn generate_call_context(\n self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> CallContext {\n let msg_sender = if is_delegate_call {\n self.msg_sender()\n } else {\n self.this_address()\n };\n let storage_contract_address = if is_delegate_call {\n self.this_address()\n } else {\n contract_address\n };\n CallContext { msg_sender, storage_contract_address, function_selector, is_static_call, is_delegate_call }\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n historical_header: Header::empty(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n}\n"},"89":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/unconstrained_context.nr","source":"use dep::protocol_types::{address::AztecAddress, traits::Deserialize};\nuse crate::oracle::{execution::{get_chain_id, get_version, get_contract_address, get_block_number}, storage::storage_read};\n\npub struct UnconstrainedContext {\n block_number: u32,\n contract_address: AztecAddress,\n version: Field,\n chain_id: Field,\n}\n\nimpl UnconstrainedContext {\n unconstrained fn new() -> Self {\n // We could call these oracles on the getters instead of at creation, which makes sense given that they might\n // not even be accessed. However any performance gains are minimal, and we'd rather fail early if a user\n // incorrectly attempts to create an UnconstrainedContext in an environment in which these oracles are not\n // available.\n let block_number = get_block_number();\n let contract_address = get_contract_address();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at(contract_address: AztecAddress) -> Self {\n let block_number = get_block_number();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at_historical(contract_address: AztecAddress, block_number: u32) -> Self {\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n fn block_number(self) -> u32 {\n self.block_number\n }\n\n fn this_address(self) -> AztecAddress {\n self.contract_address\n }\n\n fn version(self) -> Field {\n self.version\n }\n\n fn chain_id(self) -> Field {\n self.chain_id\n }\n\n unconstrained fn raw_storage_read<let N: u32>(self: Self, storage_slot: Field) -> [Field; N] {\n storage_read(self.this_address(), storage_slot, self.block_number())\n }\n\n unconstrained fn storage_read<T, let N: u32>(\n self,\n storage_slot: Field\n ) -> T where T: Deserialize<N> {\n T::deserialize(self.raw_storage_read(storage_slot))\n }\n}\n"}}}