From 3c524d349eafbae15022de8173f34e6e4d8e1f5b Mon Sep 17 00:00:00 2001 From: julio4 <30329843+julio4@users.noreply.github.com> Date: Wed, 19 Mar 2025 16:45:15 +0900 Subject: [PATCH 01/17] feat: migrate merkle tree to snforge --- Scarb.lock | 11 ++- listings/applications/merkle_tree/Scarb.toml | 3 +- .../applications/merkle_tree/src/tests.cairo | 74 ++++++------------- 3 files changed, 31 insertions(+), 57 deletions(-) diff --git a/Scarb.lock b/Scarb.lock index 875f54fc..2db7917a 100644 --- a/Scarb.lock +++ b/Scarb.lock @@ -154,6 +154,9 @@ dependencies = [ [[package]] name = "merkle_tree" version = "0.1.0" +dependencies = [ + "snforge_std", +] [[package]] name = "nft_dutch_auction" @@ -269,15 +272,15 @@ dependencies = [ [[package]] name = "snforge_scarb_plugin" -version = "0.38.0" +version = "0.38.3" source = "registry+https://scarbs.xyz/" -checksum = "sha256:c4d128eedb5fca4362be38a84e5f5a85bd94ec1557bab7c045d48de0163e406c" +checksum = "sha256:0cd914b547acd96b4cad99a78e95c0eda001d0c280da4969b2161e286079cf46" [[package]] name = "snforge_std" -version = "0.38.0" +version = "0.38.3" source = "registry+https://scarbs.xyz/" -checksum = "sha256:8b3eaff778105c313b78708974c253cd927ecf5c896f4557a0ea4f10f427b554" +checksum = "sha256:d376526fbbe22535ad89ed630b11d6e209f22c50168de6c6430c0591c81c3174" dependencies = [ "snforge_scarb_plugin", ] diff --git a/listings/applications/merkle_tree/Scarb.toml b/listings/applications/merkle_tree/Scarb.toml index d05dd121..3c38b15c 100644 --- a/listings/applications/merkle_tree/Scarb.toml +++ b/listings/applications/merkle_tree/Scarb.toml @@ -7,7 +7,8 @@ edition.workspace = true starknet.workspace = true [dev-dependencies] -cairo_test.workspace = true +assert_macros.workspace = true +snforge_std.workspace = true [scripts] test.workspace = true diff --git a/listings/applications/merkle_tree/src/tests.cairo b/listings/applications/merkle_tree/src/tests.cairo index 65904224..a335c5fc 100644 --- a/listings/applications/merkle_tree/src/tests.cairo +++ b/listings/applications/merkle_tree/src/tests.cairo @@ -1,40 +1,24 @@ -use merkle_tree::contract::IMerkleTreeDispatcherTrait; -use merkle_tree::contract::{IMerkleTreeDispatcher, MerkleTree, ByteArrayHashTrait}; -use starknet::ContractAddress; -use starknet::syscalls::deploy_syscall; -use starknet::testing::set_contract_address; use core::poseidon::PoseidonTrait; use core::hash::{HashStateTrait, HashStateExTrait}; -use starknet::storage::{VecTrait, StoragePointerReadAccess}; - -fn deploy_util(class_hash: felt252, calldata: Array) -> ContractAddress { - let (address, _) = deploy_syscall(class_hash.try_into().unwrap(), 0, calldata.span(), false) - .unwrap(); - address -} +use snforge_std::{ContractClassTrait, DeclareResultTrait, declare}; +use merkle_tree::contract::IMerkleTreeDispatcherTrait; +use merkle_tree::contract::{IMerkleTreeDispatcher, ByteArrayHashTrait}; fn setup() -> IMerkleTreeDispatcher { - let contract_address = deploy_util(MerkleTree::TEST_CLASS_HASH, array![]); - + let contract = declare("MerkleTree").unwrap().contract_class(); + let (contract_address, _) = contract.deploy(@array![]).unwrap(); IMerkleTreeDispatcher { contract_address } } #[test] fn should_deploy() { - let deploy = setup(); - - let state = @MerkleTree::contract_state_for_testing(); - // "link" a new MerkleTree struct to the deployed MerkleTree contract - // in order to access its internal state fields for assertions - set_contract_address(deploy.contract_address); - - assert_eq!(state.hashes.len(), 0); + setup(); } #[test] fn build_tree_succeeds() { /// Set up - let deploy = setup(); + let contract = setup(); let data_1 = "alice -> bob: 2"; let data_2 = "bob -> john: 5"; @@ -43,7 +27,7 @@ fn build_tree_succeeds() { let arguments = array![data_1.clone(), data_2.clone(), data_3.clone(), data_4.clone()]; /// When - let actual_hashes = deploy.build_tree(arguments); + let actual_hashes = contract.build_tree(arguments); /// Then let mut expected_hashes: Array = array![]; @@ -72,27 +56,14 @@ fn build_tree_succeeds() { assert_eq!(actual_hashes, expected_hashes); // verify get_root - assert_eq!(deploy.get_root(), root_hash); - - // verify contract storage state - - let state = @MerkleTree::contract_state_for_testing(); - // "link" a new MerkleTree struct to the deployed MerkleTree contract - // in order to access its internal state fields for assertions - set_contract_address(deploy.contract_address); - - assert_eq!(state.hashes.len(), expected_hashes.len().into()); - - for i in 0..expected_hashes.len() { - assert_eq!(state.hashes.at(i.into()).read(), *expected_hashes.at(i)); - } + assert_eq!(contract.get_root(), root_hash); } #[test] -#[should_panic(expected: ('Data length is not a power of 2', 'ENTRYPOINT_FAILED'))] +#[should_panic(expected: 'Data length is not a power of 2')] fn build_tree_fails() { /// Set up - let deploy = setup(); + let contract = setup(); let data_1 = "alice -> bob: 2"; let data_2 = "bob -> john: 5"; @@ -101,13 +72,13 @@ fn build_tree_fails() { let arguments = array![data_1, data_2, data_3]; /// When - deploy.build_tree(arguments); + contract.build_tree(arguments); } #[test] fn verify_leaf_succeeds() { /// Set up - let deploy = setup(); + let contract = setup(); let data_1 = "bob -> alice: 1"; let data_2 = "alex -> john: 3"; @@ -115,7 +86,7 @@ fn verify_leaf_succeeds() { let data_4 = "alex -> bob: 8"; let arguments = array![data_1.clone(), data_2.clone(), data_3.clone(), data_4.clone()]; - let hashes = deploy.build_tree(arguments); + let hashes = contract.build_tree(arguments); // ----> hashes tree : // @@ -125,7 +96,7 @@ fn verify_leaf_succeeds() { // / \ / \ // hashes[0] hashes[1] hashes[2] hashes[3] - let res = deploy + let res = contract .verify( array![*hashes.at(3), *hashes.at(4)], // proof *hashes.at(6), // root @@ -133,14 +104,13 @@ fn verify_leaf_succeeds() { 2 // leaf index ); - assert(res, 'Leaf should be in merkle tree'); + assert!(res, "Leaf should be in merkle tree"); } #[test] -#[available_gas(20000000)] fn verify_leaf_fails() { /// Set up - let deploy = setup(); + let contract = setup(); let data_1 = "bob -> alice: 1"; let data_2 = "alex -> john: 3"; @@ -148,7 +118,7 @@ fn verify_leaf_fails() { let data_4 = "alex -> bob: 8"; let arguments = array![data_1.clone(), data_2.clone(), data_3.clone(), data_4.clone()]; - let hashes = deploy.build_tree(arguments); + let hashes = contract.build_tree(arguments); // ----- hashes tree ----- // hashes[6] @@ -158,23 +128,23 @@ fn verify_leaf_fails() { // hashes[0] hashes[1] hashes[2] hashes[3] let wrong_leaf: ByteArray = "alice -> alex: 9"; - let res = deploy + let res = contract .verify( array![*hashes.at(3), *hashes.at(4)], // proof *hashes.at(6), // root wrong_leaf.hash(), // leaf 2 // leaf index ); - assert(!res, '1- Leaf should NOT be in tree'); + assert!(!res, "1- Leaf should NOT be in tree"); let wrong_proof = array![*hashes.at(4), *hashes.at(3)]; - let res = deploy + let res = contract .verify( wrong_proof, // proof *hashes.at(6), // root data_3.hash(), // leaf 2 // leaf index ); - assert(!res, '2- Leaf should NOT be in tree'); + assert!(!res, "2- Leaf should NOT be in tree"); } From 45069436fafc8c50c2d73b013723657ee71d8f20 Mon Sep 17 00:00:00 2001 From: julio4 <30329843+julio4@users.noreply.github.com> Date: Wed, 19 Mar 2025 16:54:43 +0900 Subject: [PATCH 02/17] fix: remove print --- .../applications/nft_dutch_auction/src/nft_dutch_auction.cairo | 2 -- 1 file changed, 2 deletions(-) diff --git a/listings/applications/nft_dutch_auction/src/nft_dutch_auction.cairo b/listings/applications/nft_dutch_auction/src/nft_dutch_auction.cairo index 48085039..cf590143 100644 --- a/listings/applications/nft_dutch_auction/src/nft_dutch_auction.cairo +++ b/listings/applications/nft_dutch_auction/src/nft_dutch_auction.cairo @@ -348,8 +348,6 @@ mod tests { let nft_price_after_time_travel = nft_auction_dispatcher.get_price(); - println!("price: {:?}", nft_price_after_time_travel); - assert_gt!(nft_price_before_time_travel, nft_price_after_time_travel); } } From 7d82e2140a57ed13107673fad3448a8b23c3bec6 Mon Sep 17 00:00:00 2001 From: julio4 <30329843+julio4@users.noreply.github.com> Date: Thu, 27 Mar 2025 14:34:55 +0900 Subject: [PATCH 03/17] feat: migrate write any slot snforge --- Scarb.lock | 3 ++ .../write_to_any_slot/Scarb.toml | 3 +- .../write_to_any_slot/src/tests.cairo | 43 ++++++------------- 3 files changed, 19 insertions(+), 30 deletions(-) diff --git a/Scarb.lock b/Scarb.lock index 2db7917a..6682767a 100644 --- a/Scarb.lock +++ b/Scarb.lock @@ -356,3 +356,6 @@ dependencies = [ [[package]] name = "write_to_any_slot" version = "0.1.0" +dependencies = [ + "snforge_std", +] diff --git a/listings/advanced-concepts/write_to_any_slot/Scarb.toml b/listings/advanced-concepts/write_to_any_slot/Scarb.toml index 2465289e..a58384d5 100644 --- a/listings/advanced-concepts/write_to_any_slot/Scarb.toml +++ b/listings/advanced-concepts/write_to_any_slot/Scarb.toml @@ -7,7 +7,8 @@ edition.workspace = true starknet.workspace = true [dev-dependencies] -cairo_test.workspace = true +assert_macros.workspace = true +snforge_std.workspace = true [scripts] test.workspace = true diff --git a/listings/advanced-concepts/write_to_any_slot/src/tests.cairo b/listings/advanced-concepts/write_to_any_slot/src/tests.cairo index 42c6528d..553ead34 100644 --- a/listings/advanced-concepts/write_to_any_slot/src/tests.cairo +++ b/listings/advanced-concepts/write_to_any_slot/src/tests.cairo @@ -1,33 +1,18 @@ -use write_to_any_slot::contract::WriteToAnySlot; +use write_to_any_slot::contract::{IWriteToAnySlotsDispatcher, IWriteToAnySlotsDispatcherTrait}; +use snforge_std::{ContractClassTrait, DeclareResultTrait, declare}; -#[starknet::interface] -trait IWriteToAnySlot { - fn write_slot(ref self: TContractState, value: u32); - fn read_slot(self: @TContractState) -> u32; -} - -mod tests { - use super::WriteToAnySlot; - use super::{IWriteToAnySlotDispatcher, IWriteToAnySlotDispatcherTrait}; - use starknet::syscalls::deploy_syscall; +#[test] +fn test_read_write() { + // Set up. + let contract = declare("WriteToAnySlot").unwrap().contract_class(); + let (contract_address, _) = contract.deploy(@array![]).unwrap(); + let mut contract = IWriteToAnySlotsDispatcher { contract_address }; - #[test] - fn test_read_write() { - // Set up. - let mut calldata: Array = array![]; - let (address0, _) = deploy_syscall( - WriteToAnySlot::TEST_CLASS_HASH.try_into().unwrap(), 0, calldata.span(), false, - ) - .unwrap(); - let mut contract = IWriteToAnySlotDispatcher { contract_address: address0 }; + // Write to slot. + let value = 42; + contract.write_slot(value); - // Write to slot. - let value: u32 = 42; - contract.write_slot(value); - - // Read from slot. - let read_value = contract.read_slot(); - assert_eq!(read_value, value); - } + // Read from slot. + let read_value = contract.read_slot(); + assert_eq!(read_value, value); } - From 37cf658e3a94e5a82c216e2455e4659dbc4d7f34 Mon Sep 17 00:00:00 2001 From: julio4 <30329843+julio4@users.noreply.github.com> Date: Fri, 28 Mar 2025 14:12:23 +0900 Subject: [PATCH 04/17] feat: migrate struct mapping key snforge --- Scarb.lock | 3 ++ .../struct_as_mapping_key/Scarb.toml | 3 +- .../struct_as_mapping_key/src/test.cairo | 39 +++++++------------ 3 files changed, 19 insertions(+), 26 deletions(-) diff --git a/Scarb.lock b/Scarb.lock index 6682767a..cef43116 100644 --- a/Scarb.lock +++ b/Scarb.lock @@ -313,6 +313,9 @@ dependencies = [ [[package]] name = "struct_as_mapping_key" version = "0.1.0" +dependencies = [ + "snforge_std", +] [[package]] name = "testing_how_to" diff --git a/listings/advanced-concepts/struct_as_mapping_key/Scarb.toml b/listings/advanced-concepts/struct_as_mapping_key/Scarb.toml index 65c00ffa..ee5e29fb 100644 --- a/listings/advanced-concepts/struct_as_mapping_key/Scarb.toml +++ b/listings/advanced-concepts/struct_as_mapping_key/Scarb.toml @@ -7,7 +7,8 @@ edition.workspace = true starknet.workspace = true [dev-dependencies] -cairo_test.workspace = true +assert_macros.workspace = true +snforge_std.workspace = true [scripts] test.workspace = true diff --git a/listings/advanced-concepts/struct_as_mapping_key/src/test.cairo b/listings/advanced-concepts/struct_as_mapping_key/src/test.cairo index 7fef6c87..1b7871e0 100644 --- a/listings/advanced-concepts/struct_as_mapping_key/src/test.cairo +++ b/listings/advanced-concepts/struct_as_mapping_key/src/test.cairo @@ -1,30 +1,19 @@ -mod tests { - use struct_as_mapping_key::contract::{PetRegistry, Pet}; - use starknet::syscalls::deploy_syscall; +use snforge_std::{ContractClassTrait, DeclareResultTrait, declare}; +use struct_as_mapping_key::contract::{Pet, IPetRegistryDispatcher, IPetRegistryDispatcherTrait}; - #[starknet::interface] - trait IPetRegistry { - fn register_pet(ref self: TContractState, key: Pet, timestamp: u64); - fn get_registration_date(self: @TContractState, key: Pet) -> u64; - } +#[test] +fn test_e2e() { + // Set up. + let contract = declare("PetRegistry").unwrap().contract_class(); + let (contract_address, _) = contract.deploy(@array![]).unwrap(); + let contract = IPetRegistryDispatcher { contract_address }; - #[test] - fn test_e2e() { - // Set up. - let mut calldata: Array = array![]; - let (address0, _) = deploy_syscall( - PetRegistry::TEST_CLASS_HASH.try_into().unwrap(), 0, calldata.span(), false, - ) - .unwrap(); - let mut contract = IPetRegistryDispatcher { contract_address: address0 }; + let pet = Pet { name: 'Cute Labrador', age: 5, owner: 'Louis' }; - let pet = Pet { name: 'Cute Labrador', age: 5, owner: 'Louis' }; + // Store a pet. + contract.register_pet(pet, 1234); - // Store a pet. - contract.register_pet(pet, 1234); - - // Read the array. - let registration_date = contract.get_registration_date(pet); - assert_eq!(registration_date, 1234); - } + // Read the array. + let registration_date = contract.get_registration_date(pet); + assert_eq!(registration_date, 1234); } From d1b9a6b5603e9bc9980b9c7466ab9fe8d57e41e9 Mon Sep 17 00:00:00 2001 From: julio4 <30329843+julio4@users.noreply.github.com> Date: Mon, 31 Mar 2025 09:25:53 +0900 Subject: [PATCH 05/17] feat: migrate store packing snforge --- Scarb.lock | 3 ++ .../store_using_packing/Scarb.toml | 3 +- .../store_using_packing/src/contract.cairo | 2 +- .../store_using_packing/src/tests.cairo | 36 ++++++++----------- 4 files changed, 21 insertions(+), 23 deletions(-) diff --git a/Scarb.lock b/Scarb.lock index cef43116..7ba80a2a 100644 --- a/Scarb.lock +++ b/Scarb.lock @@ -302,6 +302,9 @@ dependencies = [ [[package]] name = "store_using_packing" version = "0.1.0" +dependencies = [ + "snforge_std", +] [[package]] name = "storing_custom_types" diff --git a/listings/advanced-concepts/store_using_packing/Scarb.toml b/listings/advanced-concepts/store_using_packing/Scarb.toml index 66797103..0d889d82 100644 --- a/listings/advanced-concepts/store_using_packing/Scarb.toml +++ b/listings/advanced-concepts/store_using_packing/Scarb.toml @@ -7,7 +7,8 @@ edition.workspace = true starknet.workspace = true [dev-dependencies] -cairo_test.workspace = true +assert_macros.workspace = true +snforge_std.workspace = true [scripts] test.workspace = true diff --git a/listings/advanced-concepts/store_using_packing/src/contract.cairo b/listings/advanced-concepts/store_using_packing/src/contract.cairo index e1611a22..1dbcc9af 100644 --- a/listings/advanced-concepts/store_using_packing/src/contract.cairo +++ b/listings/advanced-concepts/store_using_packing/src/contract.cairo @@ -11,7 +11,7 @@ pub trait ITime { } #[starknet::contract] -pub mod TimeContract { +mod TimeContract { use starknet::storage::{StoragePointerWriteAccess, StoragePointerReadAccess}; use super::Time; use starknet::storage_access::StorePacking; diff --git a/listings/advanced-concepts/store_using_packing/src/tests.cairo b/listings/advanced-concepts/store_using_packing/src/tests.cairo index 3bb290d4..edd1c8ed 100644 --- a/listings/advanced-concepts/store_using_packing/src/tests.cairo +++ b/listings/advanced-concepts/store_using_packing/src/tests.cairo @@ -1,25 +1,19 @@ -mod tests { - use store_using_packing::contract::{TimeContract, Time, ITimeDispatcher, ITimeDispatcherTrait}; +use store_using_packing::contract::{Time, ITimeDispatcher, ITimeDispatcherTrait}; +use snforge_std::{ContractClassTrait, DeclareResultTrait, declare}; - use starknet::syscalls::deploy_syscall; +#[test] +fn test_packing() { + // Set up. + let contract = declare("TimeContract").unwrap().contract_class(); + let (contract_address, _) = contract.deploy(@array![]).unwrap(); + let contract = ITimeDispatcher { contract_address }; - #[test] - fn test_packing() { - // Set up. - let mut calldata: Array = array![]; - let (address0, _) = deploy_syscall( - TimeContract::TEST_CLASS_HASH.try_into().unwrap(), 0, calldata.span(), false, - ) - .unwrap(); - let mut contract = ITimeDispatcher { contract_address: address0 }; + // Store a Time struct. + let time = Time { hour: 1, minute: 2 }; + contract.set(time); - // Store a Time struct. - let time = Time { hour: 1, minute: 2 }; - contract.set(time); - - // Read the stored struct. - let read_time: Time = contract.get(); - assert_eq!(read_time.hour, time.hour); - assert_eq!(read_time.minute, time.minute); - } + // Read the stored struct. + let read_time: Time = contract.get(); + assert_eq!(read_time.hour, time.hour); + assert_eq!(read_time.minute, time.minute); } From 3b247d565e3f6f5235c43757d9b945ab35cb0291 Mon Sep 17 00:00:00 2001 From: julio4 <30329843+julio4@users.noreply.github.com> Date: Tue, 1 Apr 2025 08:43:04 +0900 Subject: [PATCH 06/17] feat: migrate lib calls snforge --- Scarb.lock | 3 ++ .../library_calls/Scarb.toml | 3 +- .../library_calls/src/tests.cairo | 33 ++++++++----------- 3 files changed, 18 insertions(+), 21 deletions(-) diff --git a/Scarb.lock b/Scarb.lock index 7ba80a2a..13127303 100644 --- a/Scarb.lock +++ b/Scarb.lock @@ -143,6 +143,9 @@ dependencies = [ [[package]] name = "library_calls" version = "0.1.0" +dependencies = [ + "snforge_std", +] [[package]] name = "mappings" diff --git a/listings/advanced-concepts/library_calls/Scarb.toml b/listings/advanced-concepts/library_calls/Scarb.toml index 62897c98..ef5ebd80 100644 --- a/listings/advanced-concepts/library_calls/Scarb.toml +++ b/listings/advanced-concepts/library_calls/Scarb.toml @@ -7,7 +7,8 @@ edition.workspace = true starknet.workspace = true [dev-dependencies] -cairo_test.workspace = true +assert_macros.workspace = true +snforge_std.workspace = true [scripts] test.workspace = true diff --git a/listings/advanced-concepts/library_calls/src/tests.cairo b/listings/advanced-concepts/library_calls/src/tests.cairo index 90c2707e..3c3131c4 100644 --- a/listings/advanced-concepts/library_calls/src/tests.cairo +++ b/listings/advanced-concepts/library_calls/src/tests.cairo @@ -1,23 +1,16 @@ -mod tests { - use starknet::syscalls::deploy_syscall; - use library_calls::library_call::{ - MathUtils, MathUtilsLibraryCall, IMathUtilsDispatcher, IMathUtilsDispatcherTrait, - }; +use library_calls::library_call::{IMathUtilsDispatcher, IMathUtilsDispatcherTrait}; +use snforge_std::{ContractClassTrait, DeclareResultTrait, declare}; - #[test] - fn test_library_dispatcher() { - let math_utils_class_hash: starknet::ClassHash = MathUtils::TEST_CLASS_HASH - .try_into() - .unwrap(); - let mut calldata: Array = array![]; - let (address, _) = deploy_syscall( - MathUtilsLibraryCall::TEST_CLASS_HASH.try_into().unwrap(), 0, calldata.span(), false, - ) - .unwrap(); - let mut contract = IMathUtilsDispatcher { contract_address: address }; +#[test] +fn test_library_dispatcher() { + let math_utils = declare("MathUtils").unwrap().contract_class(); - contract.set_class_hash(math_utils_class_hash); - let mut result = contract.add(30, 5); - assert_eq!(result, 35, "Wrong result"); - } + let contract = declare("MathUtilsLibraryCall").unwrap().contract_class(); + let (contract_address, _) = contract.deploy(@array![]).unwrap(); + let contract = IMathUtilsDispatcher { contract_address }; + + contract.set_class_hash(*math_utils.class_hash); + + let mut result = contract.add(30, 5); + assert_eq!(result, 35, "Wrong result"); } From 10c2139beb4e900626c27c06b969b151cf2c6626 Mon Sep 17 00:00:00 2001 From: julio4 <30329843+julio4@users.noreply.github.com> Date: Thu, 3 Apr 2025 09:06:32 +0900 Subject: [PATCH 07/17] feat: migrate hash trait snforge --- Scarb.lock | 3 +++ .../advanced-concepts/hash_trait/Scarb.toml | 3 ++- .../hash_trait/src/hash_trait.cairo | 19 ++++++++----------- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/Scarb.lock b/Scarb.lock index 13127303..01914088 100644 --- a/Scarb.lock +++ b/Scarb.lock @@ -132,6 +132,9 @@ version = "0.1.0" [[package]] name = "hash_trait" version = "0.1.0" +dependencies = [ + "snforge_std", +] [[package]] name = "l1_l2_token_bridge" diff --git a/listings/advanced-concepts/hash_trait/Scarb.toml b/listings/advanced-concepts/hash_trait/Scarb.toml index e308acce..8603090f 100644 --- a/listings/advanced-concepts/hash_trait/Scarb.toml +++ b/listings/advanced-concepts/hash_trait/Scarb.toml @@ -7,7 +7,8 @@ edition.workspace = true starknet.workspace = true [dev-dependencies] -cairo_test.workspace = true +assert_macros.workspace = true +snforge_std.workspace = true [scripts] test.workspace = true diff --git a/listings/advanced-concepts/hash_trait/src/hash_trait.cairo b/listings/advanced-concepts/hash_trait/src/hash_trait.cairo index ee8b9fb6..efe82166 100644 --- a/listings/advanced-concepts/hash_trait/src/hash_trait.cairo +++ b/listings/advanced-concepts/hash_trait/src/hash_trait.cairo @@ -10,7 +10,7 @@ pub trait IHashTrait { // [!region hash] #[starknet::contract] -pub mod HashTraits { +mod HashTraits { use starknet::storage::StoragePointerWriteAccess; use core::hash::{HashStateTrait, HashStateExTrait}; use core::{pedersen::PedersenTrait, poseidon::PoseidonTrait}; @@ -64,22 +64,19 @@ pub mod HashTraits { #[cfg(test)] mod tests { - use super::{HashTraits, IHashTraitDispatcher, IHashTraitDispatcherTrait}; - use starknet::syscalls::deploy_syscall; + use super::{IHashTraitDispatcher, IHashTraitDispatcherTrait}; + use snforge_std::{ContractClassTrait, DeclareResultTrait, declare}; fn deploy() -> IHashTraitDispatcher { - let mut calldata = array![]; - let (address, _) = deploy_syscall( - HashTraits::TEST_CLASS_HASH.try_into().unwrap(), 0, calldata.span(), false, - ) - .unwrap(); - IHashTraitDispatcher { contract_address: address } + let contract = declare("HashTraits").unwrap().contract_class(); + let (contract_address, _) = contract.deploy(@array![]).unwrap(); + IHashTraitDispatcher { contract_address } } #[test] fn test_pedersen_hash() { - let mut contract = deploy(); + let contract = deploy(); let id = 0x1; let username = 'A.stark'; @@ -91,7 +88,7 @@ mod tests { #[test] fn test_poseidon_hash() { - let mut contract = deploy(); + let contract = deploy(); let id = 0x1; let username = 'A.stark'; From 62dc20abd3a8ac9281fe88d3ae8d8505b7b1d7f7 Mon Sep 17 00:00:00 2001 From: julio4 <30329843+julio4@users.noreply.github.com> Date: Mon, 7 Apr 2025 07:56:23 +0900 Subject: [PATCH 08/17] feat: migrate hash compatible snforge --- .../hash_solidity_compatible/Scarb.toml | 3 +- .../src/contract.cairo | 2 +- .../hash_solidity_compatible/src/tests.cairo | 35 ++++++++----------- 3 files changed, 17 insertions(+), 23 deletions(-) diff --git a/listings/advanced-concepts/hash_solidity_compatible/Scarb.toml b/listings/advanced-concepts/hash_solidity_compatible/Scarb.toml index 601d3988..d4d2a70d 100644 --- a/listings/advanced-concepts/hash_solidity_compatible/Scarb.toml +++ b/listings/advanced-concepts/hash_solidity_compatible/Scarb.toml @@ -7,7 +7,8 @@ edition.workspace = true starknet.workspace = true [dev-dependencies] -cairo_test.workspace = true +assert_macros.workspace = true +snforge_std.workspace = true [scripts] test.workspace = true diff --git a/listings/advanced-concepts/hash_solidity_compatible/src/contract.cairo b/listings/advanced-concepts/hash_solidity_compatible/src/contract.cairo index d46b5dcc..5a814e9f 100644 --- a/listings/advanced-concepts/hash_solidity_compatible/src/contract.cairo +++ b/listings/advanced-concepts/hash_solidity_compatible/src/contract.cairo @@ -4,7 +4,7 @@ pub trait ISolidityHashExample { } #[starknet::contract] -pub mod SolidityHashExample { +mod SolidityHashExample { use core::keccak::keccak_u256s_be_inputs; use core::integer; diff --git a/listings/advanced-concepts/hash_solidity_compatible/src/tests.cairo b/listings/advanced-concepts/hash_solidity_compatible/src/tests.cairo index 1f344672..0f0f0cb8 100644 --- a/listings/advanced-concepts/hash_solidity_compatible/src/tests.cairo +++ b/listings/advanced-concepts/hash_solidity_compatible/src/tests.cairo @@ -1,24 +1,17 @@ -mod tests { - use hash_solidity_compatible::contract::{SolidityHashExample, ISolidityHashExample}; - use starknet::{contract_address_const, testing::set_contract_address}; +use hash_solidity_compatible::contract::{ + ISolidityHashExampleDispatcher, ISolidityHashExampleDispatcherTrait, +}; +use snforge_std::{ContractClassTrait, DeclareResultTrait, declare}; - fn setup() -> SolidityHashExample::ContractState { - let mut state = SolidityHashExample::contract_state_for_testing(); - let contract_address = contract_address_const::<0x1>(); - set_contract_address(contract_address); - state - } - - #[test] - fn get_same_hash_solidity() { - let mut state = setup(); - let mut array: Array = array![]; - array.append(1); - - let hash_expected: u256 = - 0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6; - let hash_received: u256 = state.hash_data(array.span()); +fn setup() -> ISolidityHashExampleDispatcher { + let contract = declare("SolidityHashExample").unwrap().contract_class(); + let (contract_address, _) = contract.deploy(@array![]).unwrap(); + ISolidityHashExampleDispatcher { contract_address } +} - assert_eq!(hash_received, hash_expected); - } +#[test] +fn get_same_hash_solidity() { + let contract = setup(); + let hash_expected: u256 = 0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6; + assert_eq!(contract.hash_data(array![1].span()), hash_expected); } From 77bb20b26a5b10f398df43a532bd4c1f55942000 Mon Sep 17 00:00:00 2001 From: julio4 <30329843+julio4@users.noreply.github.com> Date: Mon, 7 Apr 2025 08:13:43 +0900 Subject: [PATCH 09/17] feat: migrate commit reveal snforge --- Scarb.lock | 6 ++++++ .../advanced-concepts/commit_reveal/Scarb.toml | 3 ++- .../commit_reveal/src/commit_reveal.cairo | 18 ++++++------------ 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/Scarb.lock b/Scarb.lock index 01914088..6e06b2f1 100644 --- a/Scarb.lock +++ b/Scarb.lock @@ -34,6 +34,9 @@ dependencies = [ [[package]] name = "commit_reveal" version = "0.1.0" +dependencies = [ + "snforge_std", +] [[package]] name = "components" @@ -128,6 +131,9 @@ version = "0.1.0" [[package]] name = "hash_solidity_compatible" version = "0.1.0" +dependencies = [ + "snforge_std", +] [[package]] name = "hash_trait" diff --git a/listings/advanced-concepts/commit_reveal/Scarb.toml b/listings/advanced-concepts/commit_reveal/Scarb.toml index 8a6c3454..c8ecfeec 100644 --- a/listings/advanced-concepts/commit_reveal/Scarb.toml +++ b/listings/advanced-concepts/commit_reveal/Scarb.toml @@ -7,7 +7,8 @@ edition.workspace = true starknet.workspace = true [dev-dependencies] -cairo_test.workspace = true +assert_macros.workspace = true +snforge_std.workspace = true [scripts] test.workspace = true diff --git a/listings/advanced-concepts/commit_reveal/src/commit_reveal.cairo b/listings/advanced-concepts/commit_reveal/src/commit_reveal.cairo index dc8b9964..a288316e 100644 --- a/listings/advanced-concepts/commit_reveal/src/commit_reveal.cairo +++ b/listings/advanced-concepts/commit_reveal/src/commit_reveal.cairo @@ -6,7 +6,7 @@ pub trait ICommitmentRevealTrait { // [!region contract] #[starknet::contract] -pub mod CommitmentRevealTraits { +mod CommitmentRevealTraits { use starknet::storage::{StoragePointerWriteAccess, StoragePointerReadAccess}; use core::hash::HashStateTrait; use core::pedersen::PedersenTrait; @@ -32,26 +32,20 @@ pub mod CommitmentRevealTraits { #[cfg(test)] mod tests { - use super::{ - CommitmentRevealTraits, ICommitmentRevealTraitDispatcher, - ICommitmentRevealTraitDispatcherTrait, - }; - + use super::{ICommitmentRevealTraitDispatcher, ICommitmentRevealTraitDispatcherTrait}; use core::hash::HashStateTrait; use core::pedersen::PedersenTrait; - use starknet::syscalls::deploy_syscall; + use snforge_std::{ContractClassTrait, DeclareResultTrait, declare}; fn deploy() -> ICommitmentRevealTraitDispatcher { - let (contract_address, _) = deploy_syscall( - CommitmentRevealTraits::TEST_CLASS_HASH.try_into().unwrap(), 0, array![].span(), false, - ) - .unwrap(); + let contract = declare("CommitmentRevealTraits").unwrap().contract_class(); + let (contract_address, _) = contract.deploy(@array![]).unwrap(); ICommitmentRevealTraitDispatcher { contract_address } } #[test] fn commit_and_reveal() { - let mut contract = deploy(); + let contract = deploy(); // [!region offchain] // Off-chain, compute the commitment hash for secret From 74b768ef1ae0c82e213000625c2d131b38d9edad Mon Sep 17 00:00:00 2001 From: Marvelousmicheal <112209435+Marvelousmicheal@users.noreply.github.com> Date: Wed, 9 Apr 2025 05:40:16 +0100 Subject: [PATCH 10/17] fix: added the colored onlydust logo (#294) * fix: added the colored onlydust logo * fix: added the colored onlydust logo * fix: rename onlydust logo --------- Co-authored-by: julio4 <30329843+julio4@users.noreply.github.com> --- public/collaborators/Onlydust.svg | 349 ++++++++++++++++++++++++++++-- 1 file changed, 326 insertions(+), 23 deletions(-) diff --git a/public/collaborators/Onlydust.svg b/public/collaborators/Onlydust.svg index f200f457..067eec81 100644 --- a/public/collaborators/Onlydust.svg +++ b/public/collaborators/Onlydust.svg @@ -1,24 +1,327 @@ -