From f6f5075b04a7d637ac902ee6d2277d29ea15366b Mon Sep 17 00:00:00 2001 From: benesjan Date: Wed, 7 Aug 2024 10:42:33 +0000 Subject: [PATCH] get_notes cleanup --- .../aztec-nr/aztec/src/note/note_getter/mod.nr | 8 -------- .../aztec-nr/aztec/src/state_vars/private_set.nr | 11 ++--------- .../easy-private-state/src/easy_private_uint.nr | 2 +- noir-projects/aztec-nr/value-note/src/utils.nr | 16 +++------------- .../contracts/benchmarking_contract/src/main.nr | 2 +- .../contracts/card_game_contract/src/cards.nr | 2 +- .../contracts/child_contract/src/main.nr | 2 +- .../contracts/delegated_on_contract/src/main.nr | 2 +- .../contracts/delegator_contract/src/main.nr | 2 +- .../inclusion_proofs_contract/src/main.nr | 8 ++++---- .../pending_note_hashes_contract/src/main.nr | 6 +++--- .../contracts/static_child_contract/src/main.nr | 2 +- .../contracts/test_contract/src/main.nr | 16 ++++++++-------- .../token_blacklist_contract/src/main.nr | 2 +- .../src/types/balances_map.nr | 2 +- .../contracts/token_contract/src/main.nr | 2 +- .../token_contract/src/types/balances_map.nr | 2 +- .../token_with_refunds_contract/src/main.nr | 2 +- .../src/types/balances_map.nr | 2 +- 19 files changed, 33 insertions(+), 58 deletions(-) diff --git a/noir-projects/aztec-nr/aztec/src/note/note_getter/mod.nr b/noir-projects/aztec-nr/aztec/src/note/note_getter/mod.nr index 8a54da1f8b6..a63cf650b13 100644 --- a/noir-projects/aztec-nr/aztec/src/note/note_getter/mod.nr +++ b/noir-projects/aztec-nr/aztec/src/note/note_getter/mod.nr @@ -107,14 +107,6 @@ pub fn get_notes( context: &mut PrivateContext, storage_slot: Field, options: NoteGetterOptions -) -> BoundedVec where Note: NoteInterface + Eq { - get_notes_and_hashes(context, storage_slot, options).map(|note_and_hash: NoteAndHash| note_and_hash.note) -} - -pub fn get_notes_and_hashes( - context: &mut PrivateContext, - storage_slot: Field, - options: NoteGetterOptions ) -> BoundedVec, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL> where Note: NoteInterface + Eq { let opt_notes = get_notes_internal(storage_slot, options); diff --git a/noir-projects/aztec-nr/aztec/src/state_vars/private_set.nr b/noir-projects/aztec-nr/aztec/src/state_vars/private_set.nr index b03df7e4443..df6bf027b84 100644 --- a/noir-projects/aztec-nr/aztec/src/state_vars/private_set.nr +++ b/noir-projects/aztec-nr/aztec/src/state_vars/private_set.nr @@ -2,7 +2,7 @@ use dep::protocol_types::{constants::MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, abis: use crate::context::{PrivateContext, PublicContext, UnconstrainedContext}; use crate::note::{ constants::MAX_NOTES_PER_PAGE, lifecycle::{create_note, create_note_hash_from_public, destroy_note}, - note_getter::{get_notes_and_hashes, get_notes, view_notes}, note_getter_options::NoteGetterOptions, + note_getter::{get_notes, view_notes}, note_getter_options::NoteGetterOptions, note_header::NoteHeader, note_interface::NoteInterface, note_viewer_options::NoteViewerOptions, utils::compute_note_hash_for_read_request, note_emission::NoteEmission, note_and_hash::NoteAndHash }; @@ -54,17 +54,10 @@ impl PrivateSet where N pub fn get_notes( self, options: NoteGetterOptions - ) -> BoundedVec { + ) -> BoundedVec, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL> { get_notes(self.context, self.storage_slot, options) } // docs:end:get_notes - - pub fn get_notes_and_hashes( - self, - options: NoteGetterOptions - ) -> BoundedVec, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL> { - get_notes_and_hashes(self.context, self.storage_slot, options) - } } impl PrivateSet where Note: NoteInterface { diff --git a/noir-projects/aztec-nr/easy-private-state/src/easy_private_uint.nr b/noir-projects/aztec-nr/easy-private-state/src/easy_private_uint.nr index ef379ca2d95..3ce88cf8e76 100644 --- a/noir-projects/aztec-nr/easy-private-state/src/easy_private_uint.nr +++ b/noir-projects/aztec-nr/easy-private-state/src/easy_private_uint.nr @@ -41,7 +41,7 @@ impl EasyPrivateUint<&mut PrivateContext> { // docs:start:get_notes let options = NoteGetterOptions::with_filter(filter_notes_min_sum, subtrahend as Field); - let notes_and_hashes = self.set.get_notes_and_hashes(options); + let notes_and_hashes = self.set.get_notes(options); // docs:end:get_notes let mut minuend: u64 = 0; diff --git a/noir-projects/aztec-nr/value-note/src/utils.nr b/noir-projects/aztec-nr/value-note/src/utils.nr index b06f742e62e..003d94b0072 100644 --- a/noir-projects/aztec-nr/value-note/src/utils.nr +++ b/noir-projects/aztec-nr/value-note/src/utils.nr @@ -55,14 +55,15 @@ pub fn decrement_by_at_most( outgoing_viewer: AztecAddress ) -> Field { let options = create_note_getter_options_for_decreasing_balance(max_amount); - let notes_and_hashes = balance.get_notes_and_hashes(options); + let notes_and_hashes = balance.get_notes(options); let mut decremented = 0; for i in 0..options.limit { if i < notes_and_hashes.len() { let note_and_hash = notes_and_hashes.get_unchecked(i); - decremented += destroy_note(balance, note_and_hash); + balance.remove(note_and_hash); + decremented += note_and_hash.note.value; } } @@ -76,14 +77,3 @@ pub fn decrement_by_at_most( decremented } - -// Removes the note from the owner's set of notes. -// Returns the value of the destroyed note. -pub fn destroy_note( - balance: PrivateSet, - note_and_hash: NoteAndHash -) -> Field { - balance.remove(note_and_hash); - - note_and_hash.note.value -} diff --git a/noir-projects/noir-contracts/contracts/benchmarking_contract/src/main.nr b/noir-projects/noir-contracts/contracts/benchmarking_contract/src/main.nr index 394a03d2b3a..b25296348bc 100644 --- a/noir-projects/noir-contracts/contracts/benchmarking_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/benchmarking_contract/src/main.nr @@ -31,7 +31,7 @@ contract Benchmarking { fn recreate_note(owner: AztecAddress, outgoing_viewer: AztecAddress, index: u32) { let owner_notes = storage.notes.at(owner); let mut getter_options = NoteGetterOptions::new(); - let notes_and_hashes = owner_notes.get_notes_and_hashes(getter_options.set_limit(1).set_offset(index)); + let notes_and_hashes = owner_notes.get_notes(getter_options.set_limit(1).set_offset(index)); let note_and_hash = notes_and_hashes.get(0); owner_notes.remove(note_and_hash); increment(owner_notes, note_and_hash.note.value, owner, outgoing_viewer); diff --git a/noir-projects/noir-contracts/contracts/card_game_contract/src/cards.nr b/noir-projects/noir-contracts/contracts/card_game_contract/src/cards.nr index 2735c33f883..f44be9adf99 100644 --- a/noir-projects/noir-contracts/contracts/card_game_contract/src/cards.nr +++ b/noir-projects/noir-contracts/contracts/card_game_contract/src/cards.nr @@ -123,7 +123,7 @@ impl Deck<&mut PrivateContext> { pub fn get_cards_and_note_hashes(&mut self, cards: [Card; N]) -> ([CardNote; N], [Field; N]) { let options = NoteGetterOptions::with_filter(filter_cards, cards); - let notes_and_hashes = self.set.get_notes_and_hashes(options); + let notes_and_hashes = self.set.get_notes(options); // This array will hold the notes that correspond to each of the requested cards. It begins empty (with all the // options being none) and we gradually fill it up as we find the matching notes. diff --git a/noir-projects/noir-contracts/contracts/child_contract/src/main.nr b/noir-projects/noir-contracts/contracts/child_contract/src/main.nr index 8599903cfd8..f8245624a5c 100644 --- a/noir-projects/noir-contracts/contracts/child_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/child_contract/src/main.nr @@ -64,7 +64,7 @@ contract Child { let mut options = NoteGetterOptions::new(); options = options.select(ValueNote::properties().value, amount, Option::none()).set_limit(1); let notes = storage.a_map_with_private_values.at(owner).get_notes(options); - notes.get(0).value + notes.get(0).note.value } // Increments `current_value` by `new_value` diff --git a/noir-projects/noir-contracts/contracts/delegated_on_contract/src/main.nr b/noir-projects/noir-contracts/contracts/delegated_on_contract/src/main.nr index ca0dd94005c..cd5417b32a6 100644 --- a/noir-projects/noir-contracts/contracts/delegated_on_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/delegated_on_contract/src/main.nr @@ -34,7 +34,7 @@ contract DelegatedOn { let mut options = NoteGetterOptions::new(); options = options.select(ValueNote::properties().value, amount, Option::none()).set_limit(1); let notes = storage.a_map_with_private_values.at(owner).get_notes(options); - notes.get(0).value + notes.get(0).note.value } unconstrained fn view_public_value() -> pub Field { diff --git a/noir-projects/noir-contracts/contracts/delegator_contract/src/main.nr b/noir-projects/noir-contracts/contracts/delegator_contract/src/main.nr index 8cb753c23e9..5fdc3f67d6c 100644 --- a/noir-projects/noir-contracts/contracts/delegator_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/delegator_contract/src/main.nr @@ -35,7 +35,7 @@ contract Delegator { let mut options = NoteGetterOptions::new(); options = options.select(ValueNote::properties().value, amount, Option::none()).set_limit(1); let notes = storage.a_map_with_private_values.at(owner).get_notes(options); - notes.get_unchecked(0).value + notes.get_unchecked(0).note.value } unconstrained fn view_public_value() -> pub Field { diff --git a/noir-projects/noir-contracts/contracts/inclusion_proofs_contract/src/main.nr b/noir-projects/noir-contracts/contracts/inclusion_proofs_contract/src/main.nr index 962473d7ed0..379ea09dcab 100644 --- a/noir-projects/noir-contracts/contracts/inclusion_proofs_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/inclusion_proofs_contract/src/main.nr @@ -52,7 +52,7 @@ contract InclusionProofs { if (nullified) { options = options.set_status(NoteStatus.ACTIVE_OR_NULLIFIED); } - let note = private_values.get_notes(options).get(0); + let note = private_values.get_notes(options).get(0).note; // docs:end:get_note_from_pxe // docs:start:prove_note_inclusion @@ -104,7 +104,7 @@ contract InclusionProofs { if (fail_case) { options = options.set_status(NoteStatus.ACTIVE_OR_NULLIFIED); } - let note = private_values.get_notes(options).get(0); + let note = private_values.get_notes(options).get(0).note; let header = if (use_block_number) { context.get_header_at(block_number) @@ -130,7 +130,7 @@ contract InclusionProofs { if (nullified) { options = options.set_status(NoteStatus.ACTIVE_OR_NULLIFIED); } - let note = private_values.get_notes(options).get(0); + let note = private_values.get_notes(options).get(0).note; // 2) Prove the note validity let header = if (use_block_number) { @@ -149,7 +149,7 @@ contract InclusionProofs { let private_values = storage.private_values.at(owner); let mut options = NoteGetterOptions::new(); options = options.set_limit(1); - let notes_and_hashes = private_values.get_notes_and_hashes(options); + let notes_and_hashes = private_values.get_notes(options); let note_and_hash = notes_and_hashes.get(0); private_values.remove(note_and_hash); diff --git a/noir-projects/noir-contracts/contracts/pending_note_hashes_contract/src/main.nr b/noir-projects/noir-contracts/contracts/pending_note_hashes_contract/src/main.nr index 391d3f50eff..955979d246a 100644 --- a/noir-projects/noir-contracts/contracts/pending_note_hashes_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/pending_note_hashes_contract/src/main.nr @@ -39,7 +39,7 @@ contract PendingNoteHashes { let options = NoteGetterOptions::with_filter(filter_notes_min_sum, amount); // get note inserted above - let notes_and_hashes = owner_balance.get_notes_and_hashes(options); + let notes_and_hashes = owner_balance.get_notes(options); let note_and_hash0 = notes_and_hashes.get(0); assert(note.value == note_and_hash0.note.value); @@ -137,7 +137,7 @@ contract PendingNoteHashes { let mut options = NoteGetterOptions::new(); options = options.set_limit(1); - let note_and_hash = owner_balance.get_notes_and_hashes(options).get(0); + let note_and_hash = owner_balance.get_notes(options).get(0); assert(expected_value == note_and_hash.note.value); @@ -378,7 +378,7 @@ contract PendingNoteHashes { #[contract_library_method] fn destroy_max_notes(owner: AztecAddress, storage: Storage<&mut PrivateContext>) { let owner_balance = storage.balances.at(owner); - let notes_and_hashes = owner_balance.get_notes_and_hashes(NoteGetterOptions::new()); + let notes_and_hashes = owner_balance.get_notes(NoteGetterOptions::new()); for i in 0..max_notes_per_call() { let note_and_hash = notes_and_hashes.get(i); diff --git a/noir-projects/noir-contracts/contracts/static_child_contract/src/main.nr b/noir-projects/noir-contracts/contracts/static_child_contract/src/main.nr index 1a53f4b6be1..44dbe8dbfd5 100644 --- a/noir-projects/noir-contracts/contracts/static_child_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/static_child_contract/src/main.nr @@ -73,7 +73,7 @@ contract StaticChild { Option::none() ).set_limit(1); let notes = storage.a_private_value.get_notes(options); - notes.get(0).value + notes.get(0).note.value } // Increments `current_value` by `new_value` diff --git a/noir-projects/noir-contracts/contracts/test_contract/src/main.nr b/noir-projects/noir-contracts/contracts/test_contract/src/main.nr index bfd02697e15..58dbdd2087e 100644 --- a/noir-projects/noir-contracts/contracts/test_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/test_contract/src/main.nr @@ -30,7 +30,7 @@ contract Test { hash::{pedersen_hash, compute_secret_hash, ArgsHasher}, note::{ lifecycle::{create_note, destroy_note}, note_getter::{get_notes, view_notes}, - note_getter_options::NoteStatus + note_getter_options::NoteStatus, note_and_hash::NoteAndHash }, deploy::deploy_contract as aztec_deploy_contract, oracle::{encryption::aes128_encrypt, unsafe_rand::unsafe_rand} @@ -117,9 +117,9 @@ contract Test { options = options.set_status(NoteStatus.ACTIVE_OR_NULLIFIED); } - let notes: BoundedVec = get_notes(&mut context, storage_slot, options); + let notes: BoundedVec, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL> = get_notes(&mut context, storage_slot, options); - notes.get(0).value + notes.get(0).note.value } #[aztec(private)] @@ -133,9 +133,9 @@ contract Test { options = options.set_status(NoteStatus.ACTIVE_OR_NULLIFIED); } - let notes: BoundedVec = get_notes(&mut context, storage_slot, options); + let notes: BoundedVec, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL> = get_notes(&mut context, storage_slot, options); - [notes.get(0).value, notes.get(1).value] + [notes.get(0).note.value, notes.get(1).note.value] } unconstrained fn call_view_notes(storage_slot: Field, active_or_nullified: bool) -> pub Field { @@ -175,9 +175,9 @@ contract Test { ); let options = NoteGetterOptions::new(); - let notes: BoundedVec = get_notes(&mut context, storage_slot, options); + let notes: BoundedVec, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL> = get_notes(&mut context, storage_slot, options); - let note = notes.get(0); + let note = notes.get(0).note; destroy_note(&mut context, note); } @@ -474,7 +474,7 @@ contract Test { let secret_hash = compute_secret_hash(secret); let mut options = NoteGetterOptions::new(); options = options.select(TestNote::properties().value, secret_hash, Option::none()).set_limit(1); - let notes_and_hashes = notes_set.get_notes_and_hashes(options); + let notes_and_hashes = notes_set.get_notes(options); let note_and_hash = notes_and_hashes.get(0); notes_set.remove(note_and_hash); } diff --git a/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/main.nr b/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/main.nr index f4b143d422c..abef1b7bee2 100644 --- a/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/main.nr @@ -172,7 +172,7 @@ contract TokenBlacklist { secret_hash, Option::none() ).set_limit(1); - let notes_and_hashes = pending_shields.get_notes_and_hashes(options); + let notes_and_hashes = pending_shields.get_notes(options); let note_and_hash = notes_and_hashes.get(0); // Remove the note from the pending shields set pending_shields.remove(note_and_hash); diff --git a/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/types/balances_map.nr b/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/types/balances_map.nr index 03da5bb861d..22d51aaa612 100644 --- a/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/types/balances_map.nr +++ b/noir-projects/noir-contracts/contracts/token_blacklist_contract/src/types/balances_map.nr @@ -83,7 +83,7 @@ impl BalancesMap { ) -> OuterNoteEmission where T: NoteInterface + OwnedNote + Eq { // docs:start:get_notes let options = NoteGetterOptions::with_filter(filter_notes_min_sum, subtrahend); - let notes_and_hashes = self.map.at(owner).get_notes_and_hashes(options); + let notes_and_hashes = self.map.at(owner).get_notes(options); // docs:end:get_notes let mut minuend: U128 = U128::from_integer(0); diff --git a/noir-projects/noir-contracts/contracts/token_contract/src/main.nr b/noir-projects/noir-contracts/contracts/token_contract/src/main.nr index 8029e7e9c2b..7eb62bc539d 100644 --- a/noir-projects/noir-contracts/contracts/token_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/token_contract/src/main.nr @@ -303,7 +303,7 @@ contract Token { secret_hash, Option::none() ).set_limit(1); - let notes_and_hashes = pending_shields.get_notes_and_hashes(options); + let notes_and_hashes = pending_shields.get_notes(options); let note_and_hash = notes_and_hashes.get(0); // Remove the note from the pending shields set pending_shields.remove(note_and_hash); diff --git a/noir-projects/noir-contracts/contracts/token_contract/src/types/balances_map.nr b/noir-projects/noir-contracts/contracts/token_contract/src/types/balances_map.nr index 490f9f1cb66..21360bfcc14 100644 --- a/noir-projects/noir-contracts/contracts/token_contract/src/types/balances_map.nr +++ b/noir-projects/noir-contracts/contracts/token_contract/src/types/balances_map.nr @@ -109,7 +109,7 @@ impl BalancesMap { ) -> U128 where T: NoteInterface + OwnedNote + Eq { // docs:start:get_notes let options = NoteGetterOptions::with_filter(filter_notes_min_sum, target_amount).set_limit(max_notes); - let notes_and_hashes = self.map.at(owner).get_notes_and_hashes(options); + let notes_and_hashes = self.map.at(owner).get_notes(options); // docs:end:get_notes let mut subtracted = U128::from_integer(0); diff --git a/noir-projects/noir-contracts/contracts/token_with_refunds_contract/src/main.nr b/noir-projects/noir-contracts/contracts/token_with_refunds_contract/src/main.nr index ba24863482a..933bd9f2072 100644 --- a/noir-projects/noir-contracts/contracts/token_with_refunds_contract/src/main.nr +++ b/noir-projects/noir-contracts/contracts/token_with_refunds_contract/src/main.nr @@ -290,7 +290,7 @@ contract TokenWithRefunds { secret_hash, Option::none() ).set_limit(1); - let notes_and_hashes = pending_shields.get_notes_and_hashes(options); + let notes_and_hashes = pending_shields.get_notes(options); let note_and_hash = notes_and_hashes.get_unchecked(0); // Remove the note from the pending shields set pending_shields.remove(note_and_hash); diff --git a/noir-projects/noir-contracts/contracts/token_with_refunds_contract/src/types/balances_map.nr b/noir-projects/noir-contracts/contracts/token_with_refunds_contract/src/types/balances_map.nr index f1b1dcb5aad..512c4d441cd 100644 --- a/noir-projects/noir-contracts/contracts/token_with_refunds_contract/src/types/balances_map.nr +++ b/noir-projects/noir-contracts/contracts/token_with_refunds_contract/src/types/balances_map.nr @@ -86,7 +86,7 @@ impl BalancesMap { ) -> OuterNoteEmission where T: NoteInterface + OwnedNote + Eq { // docs:start:get_notes let options = NoteGetterOptions::with_filter(filter_notes_min_sum, subtrahend); - let notes_and_hashes = self.map.at(owner).get_notes_and_hashes(options); + let notes_and_hashes = self.map.at(owner).get_notes(options); // docs:end:get_notes let mut minuend: U128 = U128::from_integer(0);