From 9a252f4a73c4d4f88f43013834839c1e3a61c264 Mon Sep 17 00:00:00 2001 From: benesjan Date: Mon, 16 Sep 2024 09:33:43 +0000 Subject: [PATCH] WIP --- .../smart_contracts/testing_contracts/testing.md | 2 +- .../aztec/src/test/helpers/test_environment.nr | 4 +++- .../nft_contract/src/test/transfer_to_private.nr | 2 +- .../contracts/nft_contract/src/test/utils.nr | 2 +- .../contracts/token_contract/src/test/minting.nr | 16 ++++++++-------- .../contracts/token_contract/src/test/refunds.nr | 4 ++-- .../token_contract/src/test/shielding.nr | 8 ++++---- .../contracts/token_contract/src/test/utils.nr | 8 ++++---- 8 files changed, 24 insertions(+), 22 deletions(-) diff --git a/docs/docs/guides/developer_guides/smart_contracts/testing_contracts/testing.md b/docs/docs/guides/developer_guides/smart_contracts/testing_contracts/testing.md index dc933c32927..565f3676407 100644 --- a/docs/docs/guides/developer_guides/smart_contracts/testing_contracts/testing.md +++ b/docs/docs/guides/developer_guides/smart_contracts/testing_contracts/testing.md @@ -186,7 +186,7 @@ You can add [authwits](../writing_contracts/authwit.md) to the TXE. Here is an e Sometimes we have to tell TXE about notes that are not generated by ourselves, but someone else. This allows us to check if we are able to decrypt them: -#include_code txe_test_store_note /noir-projects/noir-contracts/contracts/token_contract/src/test/utils.nr rust +#include_code txe_test_add_note /noir-projects/noir-contracts/contracts/token_contract/src/test/utils.nr rust ### Time traveling diff --git a/noir-projects/aztec-nr/aztec/src/test/helpers/test_environment.nr b/noir-projects/aztec-nr/aztec/src/test/helpers/test_environment.nr index e39ac6bec5a..070837c69e1 100644 --- a/noir-projects/aztec-nr/aztec/src/test/helpers/test_environment.nr +++ b/noir-projects/aztec-nr/aztec/src/test/helpers/test_environment.nr @@ -207,7 +207,9 @@ impl TestEnvironment { ); } - pub fn store_note_in_cache( + /// Manually adds a note to TXE. This needs to be called if you want to work with a note in your test with the note + /// not having an encrypted log emitted. TXE alternative to `PXE.addNote(...)`. + pub fn add_note( _self: Self, note: &mut Note, storage_slot: Field, diff --git a/noir-projects/noir-contracts/contracts/nft_contract/src/test/transfer_to_private.nr b/noir-projects/noir-contracts/contracts/nft_contract/src/test/transfer_to_private.nr index c64a5d247da..6b1db2c5f68 100644 --- a/noir-projects/noir-contracts/contracts/nft_contract/src/test/transfer_to_private.nr +++ b/noir-projects/noir-contracts/contracts/nft_contract/src/test/transfer_to_private.nr @@ -53,7 +53,7 @@ unconstrained fn transfer_to_private_to_a_different_account() { let recipient_npk_m_hash = get_current_public_keys(&mut context, recipient).npk_m.hash(); let private_nfts_recipient_slot = derive_storage_slot_in_map(NFT::storage().private_nfts.slot, recipient); - env.store_note_in_cache( + env.add_note( &mut NFTNote { token_id, npk_m_hash: recipient_npk_m_hash, randomness: note_randomness, header: NoteHeader::empty() }, private_nfts_recipient_slot, nft_contract_address diff --git a/noir-projects/noir-contracts/contracts/nft_contract/src/test/utils.nr b/noir-projects/noir-contracts/contracts/nft_contract/src/test/utils.nr index ad2e3e8eafd..48487f1179f 100644 --- a/noir-projects/noir-contracts/contracts/nft_contract/src/test/utils.nr +++ b/noir-projects/noir-contracts/contracts/nft_contract/src/test/utils.nr @@ -75,7 +75,7 @@ pub fn setup_mint_and_transfer_to_private(with_account_contracts: bool) -> (&mut let owner_npk_m_hash = get_current_public_keys(&mut context, owner).npk_m.hash(); let private_nfts_owner_slot = derive_storage_slot_in_map(NFT::storage().private_nfts.slot, owner); - env.store_note_in_cache( + env.add_note( &mut NFTNote { token_id: minted_token_id, npk_m_hash: owner_npk_m_hash, diff --git a/noir-projects/noir-contracts/contracts/token_contract/src/test/minting.nr b/noir-projects/noir-contracts/contracts/token_contract/src/test/minting.nr index 159c4daf0fc..7fedc4b2808 100644 --- a/noir-projects/noir-contracts/contracts/token_contract/src/test/minting.nr +++ b/noir-projects/noir-contracts/contracts/token_contract/src/test/minting.nr @@ -74,8 +74,8 @@ unconstrained fn mint_private_success() { // Time travel so we can read keys from the registry env.advance_block_by(6); - // Store a note in the cache so we can redeem it - env.store_note_in_cache( + // We need to manually add the note to TXE because `TransparentNote` does not support automatic note log delivery. + env.add_note( &mut TransparentNote::new(mint_amount, secret_hash), Token::storage().pending_shields.slot, token_contract_address @@ -105,8 +105,8 @@ unconstrained fn mint_private_failure_double_spend() { // Time travel so we can read keys from the registry env.advance_block_by(6); - // Store a note in the cache so we can redeem it - env.store_note_in_cache( + // We need to manually add the note to TXE because `TransparentNote` does not support automatic note log delivery. + env.add_note( &mut TransparentNote::new(mint_amount, secret_hash), Token::storage().pending_shields.slot, token_contract_address @@ -164,8 +164,8 @@ unconstrained fn mint_private_failure_overflow_recipient() { // Time travel so we can read keys from the registry env.advance_block_by(6); - // Store a note in the cache so we can redeem it - env.store_note_in_cache( + // We need to manually add the note to TXE because `TransparentNote` does not support automatic note log delivery. + env.add_note( &mut TransparentNote::new(mint_amount, secret_hash), Token::storage().pending_shields.slot, token_contract_address @@ -205,12 +205,12 @@ unconstrained fn mint_private_failure_overflow_total_supply() { env.advance_block_by(6); // Store 2 notes in the cache so we can redeem it for owner and recipient - env.store_note_in_cache( + env.add_note( &mut TransparentNote::new(mint_amount, secret_hash_owner), Token::storage().pending_shields.slot, token_contract_address ); - env.store_note_in_cache( + env.add_note( &mut TransparentNote::new(mint_amount, secret_hash_recipient), Token::storage().pending_shields.slot, token_contract_address diff --git a/noir-projects/noir-contracts/contracts/token_contract/src/test/refunds.nr b/noir-projects/noir-contracts/contracts/token_contract/src/test/refunds.nr index 3d286a2ff52..ff307a31cca 100644 --- a/noir-projects/noir-contracts/contracts/token_contract/src/test/refunds.nr +++ b/noir-projects/noir-contracts/contracts/token_contract/src/test/refunds.nr @@ -43,7 +43,7 @@ unconstrained fn setup_refund_success() { //`mint_amount - funded_amount`. When completing the refund, we would've constructed a hash corresponding to a note // worth `funded_amount - transaction_fee`. We "know" the transaction fee was 1 (it is hardcoded in // `executePublicFunction` TXE oracle) but we need to notify TXE of the note (preimage). - env.store_note_in_cache( + env.add_note( &mut TokenNote { amount: U128::from_integer(funded_amount - 1), npk_m_hash: user_npk_m_hash, @@ -53,7 +53,7 @@ unconstrained fn setup_refund_success() { user_balances_slot, token_contract_address ); - env.store_note_in_cache( + env.add_note( &mut TokenNote { amount: U128::from_integer(1), npk_m_hash: fee_payer_npk_m_hash, diff --git a/noir-projects/noir-contracts/contracts/token_contract/src/test/shielding.nr b/noir-projects/noir-contracts/contracts/token_contract/src/test/shielding.nr index da91b64ca6f..9e3d7937abf 100644 --- a/noir-projects/noir-contracts/contracts/token_contract/src/test/shielding.nr +++ b/noir-projects/noir-contracts/contracts/token_contract/src/test/shielding.nr @@ -14,8 +14,8 @@ unconstrained fn shielding_on_behalf_of_self() { let shield_call_interface = Token::at(token_contract_address).shield(owner, shield_amount, secret_hash, 0); env.call_public(shield_call_interface); - // Store a note in the cache so we can redeem it - env.store_note_in_cache( + // We need to manually add the note to TXE because `TransparentNote` does not support automatic note log delivery. + env.add_note( &mut TransparentNote::new(shield_amount, secret_hash), Token::storage().pending_shields.slot, token_contract_address @@ -47,8 +47,8 @@ unconstrained fn shielding_on_behalf_of_other() { // Become owner again env.impersonate(owner); - // Store a note in the cache so we can redeem it - env.store_note_in_cache( + // We need to manually add the note to TXE because `TransparentNote` does not support automatic note log delivery. + env.add_note( &mut TransparentNote::new(shield_amount, secret_hash), Token::storage().pending_shields.slot, token_contract_address diff --git a/noir-projects/noir-contracts/contracts/token_contract/src/test/utils.nr b/noir-projects/noir-contracts/contracts/token_contract/src/test/utils.nr index fde110352eb..8757380022c 100644 --- a/noir-projects/noir-contracts/contracts/token_contract/src/test/utils.nr +++ b/noir-projects/noir-contracts/contracts/token_contract/src/test/utils.nr @@ -54,14 +54,14 @@ pub fn setup_and_mint(with_account_contracts: bool) -> (&mut TestEnvironment, Az // Time travel so we can read keys from the registry env.advance_block_by(6); - // docs:start:txe_test_store_note - // Store a note in the cache so we can redeem it - env.store_note_in_cache( + // docs:start:txe_test_add_note + // We need to manually add the note to TXE because `TransparentNote` does not support automatic note log delivery. + env.add_note( &mut TransparentNote::new(mint_amount, secret_hash), Token::storage().pending_shields.slot, token_contract_address ); - // docs:end:txe_test_store_note + // docs:end:txe_test_add_note // Redeem our shielded tokens let redeem_shield_call_interface = Token::at(token_contract_address).redeem_shield(owner, mint_amount, secret);