From 6ff5124eb1aad06de3697aada59438446435f514 Mon Sep 17 00:00:00 2001 From: GideonBature Date: Tue, 19 Aug 2025 19:55:06 +0100 Subject: [PATCH 1/4] Update scarb, starknet and l2 contract to latest version --- contracts/L2/.gitignore | 3 ++- contracts/L2/.tool-versions | 4 ++-- contracts/L2/Scarb.lock | 10 +++++----- contracts/L2/Scarb.toml | 6 +++--- contracts/L2/src/core/ZeroXBridgeL2.cairo | 2 +- contracts/L2/src/dao/DAO.cairo | 6 +++--- contracts/L2/src/dao/Timelock.cairo | 2 +- contracts/L2/src/mocks/MockMerkleManager.cairo | 2 +- 8 files changed, 18 insertions(+), 17 deletions(-) diff --git a/contracts/L2/.gitignore b/contracts/L2/.gitignore index 91bde14..83d31ce 100644 --- a/contracts/L2/.gitignore +++ b/contracts/L2/.gitignore @@ -2,4 +2,5 @@ target .snfoundry_cache/ .tool-versions node_modules -.env \ No newline at end of file +.env +Scarb.lock diff --git a/contracts/L2/.tool-versions b/contracts/L2/.tool-versions index 43e594e..53eab6b 100644 --- a/contracts/L2/.tool-versions +++ b/contracts/L2/.tool-versions @@ -1,2 +1,2 @@ -scarb 2.9.2 -starknet-foundry 0.36.0 \ No newline at end of file +scarb 2.12.0 +starknet-foundry 0.48.1 diff --git a/contracts/L2/Scarb.lock b/contracts/L2/Scarb.lock index b40c18b..3496a0e 100644 --- a/contracts/L2/Scarb.lock +++ b/contracts/L2/Scarb.lock @@ -4,7 +4,7 @@ version = 1 [[package]] name = "cairo_lib" version = "0.2.0" -source = "git+https://github.com/HerodotusDev/cairo-lib.git#a0c0ee4feeb4edb61e7a35d29595ad8647c3d469" +source = "git+https://github.com/Explore-Beyond-Innovations/cairo-lib.git?rev=afc30b93404f6f5c595f97d1f4f795983872600a#afc30b93404f6f5c595f97d1f4f795983872600a" [[package]] name = "integrity" @@ -77,15 +77,15 @@ checksum = "sha256:44f32d242af1e43982decc49c563e613a9b67ade552f5c3d5cde504e92f74 [[package]] name = "snforge_scarb_plugin" -version = "0.36.0" +version = "0.48.1" source = "registry+https://scarbs.xyz/" -checksum = "sha256:b9550f5c921502be3e240e83aa9e2dc6ee63ae76bfecee082b7a15bead0460c0" +checksum = "sha256:2dd27e8215eea8785b3930e9f452e11b429ca262b1c1fbb071bfc173b9ebc125" [[package]] name = "snforge_std" -version = "0.36.0" +version = "0.48.1" source = "registry+https://scarbs.xyz/" -checksum = "sha256:9f38c6c376447cfe225c5869905122f6a64bc301f5872c7855d2abe6e9c0a1da" +checksum = "sha256:89f759fa685d48ed0ba7152d2ac2eb168da08dfa8b84b2bee96e203dc5b2413e" dependencies = [ "snforge_scarb_plugin", ] diff --git a/contracts/L2/Scarb.toml b/contracts/L2/Scarb.toml index 3b520fe..949ccdb 100644 --- a/contracts/L2/Scarb.toml +++ b/contracts/L2/Scarb.toml @@ -7,7 +7,7 @@ edition = "2024_07" [dependencies] integrity = "2.0.0" -starknet = "2.9.2" +starknet = "2.12.0" openzeppelin_access = "0.20.0" openzeppelin_introspection = "0.20.0" openzeppelin_token = "0.20.0" @@ -15,9 +15,9 @@ openzeppelin_upgrades = "0.20.0" cairo_lib = { git = "https://github.com/Explore-Beyond-Innovations/cairo-lib.git", rev = "afc30b93404f6f5c595f97d1f4f795983872600a" } [dev-dependencies] -assert_macros = "2.9.2" +assert_macros = "2.12.0" openzeppelin_utils = "0.20.0" -snforge_std = "0.36.0" +snforge_std = "0.48.0" [[target.starknet-contract]] sierra = true diff --git a/contracts/L2/src/core/ZeroXBridgeL2.cairo b/contracts/L2/src/core/ZeroXBridgeL2.cairo index b7918a0..174ca28 100644 --- a/contracts/L2/src/core/ZeroXBridgeL2.cairo +++ b/contracts/L2/src/core/ZeroXBridgeL2.cairo @@ -462,7 +462,7 @@ pub mod ZeroXBridgeL2 { storage_ptr.write(*peaks.at(i)); }; for i in last_peaks_len..peaks_len { - self.last_peaks.append().write(*peaks.at(i)); + self.last_peaks.push(*peaks.at(i)); }; } diff --git a/contracts/L2/src/dao/DAO.cairo b/contracts/L2/src/dao/DAO.cairo index 0afef02..ef5c495 100644 --- a/contracts/L2/src/dao/DAO.cairo +++ b/contracts/L2/src/dao/DAO.cairo @@ -1,5 +1,4 @@ -use core::starknet::ContractAddress; -use starknet::storage::Map; +use starknet::{ContractAddress, storage::Map}; // Define the ExecutiveAction interface #[starknet::interface] @@ -111,12 +110,13 @@ pub mod DAO { use starknet::event::EventEmitter; use starknet::storage::StorageMapWriteAccess; use starknet::storage::StorageMapReadAccess; + #[feature("deprecated-starknet-consts")] use starknet::{ContractAddress, contract_address_const}; use starknet::get_caller_address; use starknet::get_block_timestamp; use core::traits::Into; use core::array::ArrayTrait; - use core::starknet::storage::{ + use starknet::storage::{ StoragePointerReadAccess, StoragePointerWriteAccess, Map, StoragePathEntry, }; use super::{Proposal, ProposalStatus, ProposalBindingData, BindingVote, BindingVoteTrait}; diff --git a/contracts/L2/src/dao/Timelock.cairo b/contracts/L2/src/dao/Timelock.cairo index c0e8ff3..64008a8 100644 --- a/contracts/L2/src/dao/Timelock.cairo +++ b/contracts/L2/src/dao/Timelock.cairo @@ -132,7 +132,7 @@ mod Timelock { while i < calldata_length { // If indexing returns a pointer (@u256), use .read() to obtain the value. let element: u256 = *calldata.at(i); - action_entry.calldata.append().write(element); + action_entry.calldata.push(element); i = i + 1; }; diff --git a/contracts/L2/src/mocks/MockMerkleManager.cairo b/contracts/L2/src/mocks/MockMerkleManager.cairo index db8947f..17c8fab 100644 --- a/contracts/L2/src/mocks/MockMerkleManager.cairo +++ b/contracts/L2/src/mocks/MockMerkleManager.cairo @@ -95,7 +95,7 @@ pub mod MockMerkleManager { storage_ptr.write(*peaks.at(i)); }; for i in prev_peaks_len..peaks_len { - self.last_peaks.append().write(*peaks.at(i)); + self.last_peaks.push(*peaks.at(i)); }; } From 56cc79f474f70e78b159da34a8cf08244c39212a Mon Sep 17 00:00:00 2001 From: JoE11-y Date: Wed, 20 Aug 2025 12:44:02 +0100 Subject: [PATCH 2/4] chore: cleanups --- contracts/L2/src/core/ZeroXBridgeL2.cairo | 64 +++++++++++------------ contracts/L2/src/dao/Timelock.cairo | 33 ++++++------ 2 files changed, 45 insertions(+), 52 deletions(-) diff --git a/contracts/L2/src/core/ZeroXBridgeL2.cairo b/contracts/L2/src/core/ZeroXBridgeL2.cairo index 174ca28..5bd9664 100644 --- a/contracts/L2/src/core/ZeroXBridgeL2.cairo +++ b/contracts/L2/src/core/ZeroXBridgeL2.cairo @@ -1,34 +1,30 @@ #[starknet::contract] pub mod ZeroXBridgeL2 { - use openzeppelin_access::ownable::OwnableComponent; - use openzeppelin_introspection::src5::SRC5Component; - use openzeppelin_upgrades::UpgradeableComponent; - use openzeppelin_upgrades::interface::IUpgradeable; - use starknet::{ - ContractAddress, get_caller_address, ClassHash, get_block_timestamp, get_contract_address, - }; - use l2::interfaces::IxZBErc20::{IXZBERC20Dispatcher, IXZBERC20DispatcherTrait}; - use openzeppelin_token::erc20::interface::{IERC20DispatcherTrait, IERC20Dispatcher}; - use l2::interfaces::IL2Oracle::{IL2OracleDispatcher, IL2OracleDispatcherTrait}; - + use cairo_lib::data_structures::mmr::mmr::{MMR, MMRTrait}; + use core::array::ArrayTrait; + use core::hash::{HashStateExTrait, HashStateTrait}; use core::option::Option; use core::poseidon::PoseidonTrait; - use core::array::ArrayTrait; - use starknet::storage::{ - StoragePointerReadAccess, StoragePointerWriteAccess, Map, StorageMapReadAccess, - StorageMapWriteAccess, Vec, VecTrait, MutableVecTrait, - }; - use core::hash::{HashStateTrait, HashStateExTrait}; - + use l2::interfaces::IL2Oracle::{IL2OracleDispatcher, IL2OracleDispatcherTrait}; + use l2::interfaces::IMerkleManager::IMerkleManager; use l2::interfaces::IProofRegistry::{IProofRegistryDispatcher, IProofRegistryDispatcherTrait}; use l2::interfaces::IZeroXBridgeL2::{IDynamicRate, IZeroXBridgeL2}; - use l2::interfaces::IMerkleManager::IMerkleManager; - + use l2::interfaces::IxZBErc20::{IXZBERC20Dispatcher, IXZBERC20DispatcherTrait}; + use openzeppelin_access::ownable::OwnableComponent; + use openzeppelin_introspection::src5::SRC5Component; + use openzeppelin_token::erc20::interface::{IERC20Dispatcher, IERC20DispatcherTrait}; + use openzeppelin_upgrades::UpgradeableComponent; + use openzeppelin_upgrades::interface::IUpgradeable; use starknet::eth_address::EthAddress; use starknet::eth_signature::verify_eth_signature; use starknet::secp256_trait::Signature; - use cairo_lib::data_structures::mmr::mmr::MMR; - use cairo_lib::data_structures::mmr::mmr::MMRTrait; + use starknet::storage::{ + Map, MutableVecTrait, StorageMapReadAccess, StorageMapWriteAccess, StoragePointerReadAccess, + StoragePointerWriteAccess, Vec, VecTrait, + }; + use starknet::{ + ClassHash, ContractAddress, get_block_timestamp, get_caller_address, get_contract_address, + }; const PRECISION: u256 = 1_000_000_000_000_000_000; // 18 decimals for precision @@ -313,7 +309,7 @@ pub mod ZeroXBridgeL2 { let max_rate = rates.max_rate; let final_rate = if raw_rate == 0 { - 1 * PRECISION + PRECISION } else if raw_rate < min_rate { min_rate } else if raw_rate > max_rate { @@ -339,16 +335,16 @@ pub mod ZeroXBridgeL2 { self.ownable.assert_only_owner(); let mut current_rates = self.rates.read(); - match min_rate { - Option::Some(new_min) => { current_rates.min_rate = new_min; }, - Option::None => {}, + if let Option::Some(new_min) = min_rate { + { + current_rates.min_rate = new_min; + } } - - match max_rate { - Option::Some(new_max) => { current_rates.max_rate = new_max; }, - Option::None => {}, + if let Option::Some(new_max) = max_rate { + { + current_rates.max_rate = new_max; + } } - assert(current_rates.min_rate < current_rates.max_rate, 'Min rate must be < max rate'); self.rates.write(current_rates); @@ -405,7 +401,7 @@ pub mod ZeroXBridgeL2 { let mut peaks = array![]; for i in 0..self.last_peaks.len() { peaks.append(self.last_peaks.at(i).read()); - }; + } peaks } @@ -450,7 +446,7 @@ pub mod ZeroXBridgeL2 { for i in 0..peaks_len { let mut storage_ptr = self.last_peaks.at(i.into()); storage_ptr.write(*peaks.at(i)); - }; + } for i in peaks_len..last_peaks_len { let mut storage_ptr = self.last_peaks.at(i.into()); storage_ptr.write(0); @@ -460,7 +456,7 @@ pub mod ZeroXBridgeL2 { for i in 0..last_peaks_len { let mut storage_ptr = self.last_peaks.at(i.into()); storage_ptr.write(*peaks.at(i)); - }; + } for i in last_peaks_len..peaks_len { self.last_peaks.push(*peaks.at(i)); }; diff --git a/contracts/L2/src/dao/Timelock.cairo b/contracts/L2/src/dao/Timelock.cairo index 64008a8..312d7e0 100644 --- a/contracts/L2/src/dao/Timelock.cairo +++ b/contracts/L2/src/dao/Timelock.cairo @@ -1,14 +1,11 @@ -use starknet::ContractAddress; -use starknet::get_block_timestamp; -use starknet::get_caller_address; +use core::array::ArrayTrait; +use core::hash::HashStateTrait; +use core::integer::u256; +use core::poseidon::{PoseidonTrait, poseidon_hash_span}; use starknet::storage::{ - StoragePointerReadAccess, StoragePointerWriteAccess, StoragePathEntry, Vec, Map, + Map, StoragePathEntry, StoragePointerReadAccess, StoragePointerWriteAccess, Vec, }; -use core::array::{ArrayTrait}; -use core::poseidon::PoseidonTrait; -use core::poseidon::poseidon_hash_span; -use core::hash::{HashStateTrait}; -use core::integer::u256; +use starknet::{ContractAddress, get_block_timestamp, get_caller_address}; #[starknet::interface] trait IExecutor { @@ -29,9 +26,9 @@ trait ITimelock { #[starknet::contract] mod Timelock { - use super::*; use core::traits::Into; - use starknet::storage::{MutableVecTrait}; + use starknet::storage::MutableVecTrait; + use super::*; #[storage] struct Storage { @@ -90,9 +87,9 @@ mod Timelock { #[derive(Drop, Serde, Copy, PartialEq, starknet::Store)] #[allow(starknet::store_no_default_variant)] enum ActionStatus { - Pending: (), - Executed: (), - Canceled: (), + Pending, + Executed, + Canceled, } #[constructor] @@ -134,7 +131,7 @@ mod Timelock { let element: u256 = *calldata.at(i); action_entry.calldata.push(element); i = i + 1; - }; + } self.action_count.write(self.action_count.read() + 1); @@ -175,7 +172,7 @@ mod Timelock { let element = action_entry.calldata.at(j).read(); calldata_array.append(element); j = j + 1; - }; + } let executor_contract = IExecutorDispatcher { contract_address: executor }; executor_contract.execute(calldata_array); @@ -221,7 +218,7 @@ mod Timelock { if action_entry.status.read() == ActionStatus::Pending { pending.append(action_id); } - }; + } pending } } @@ -243,7 +240,7 @@ mod Timelock { .u256_to_felt252(element); // Convert u256 to felt252. calldata_felt.append(element_felt); i = i + 1; - }; + } // Generate the action ID using Poseidon hash. PoseidonTrait::new() From 452a1a0c93e4935630876bc5d6fd355ad3466a91 Mon Sep 17 00:00:00 2001 From: JoE11-y Date: Wed, 20 Aug 2025 12:49:52 +0100 Subject: [PATCH 3/4] chore: updates --- .github/workflows/l2.yml | 4 ++-- contracts/L2/.tool-versions | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/l2.yml b/.github/workflows/l2.yml index 7527bed..db9efe8 100644 --- a/.github/workflows/l2.yml +++ b/.github/workflows/l2.yml @@ -11,8 +11,8 @@ on: - "contracts/L2/**" env: - SCARB_VERSION: 2.9.2 - STARKNET_FOUNDRY_VERSION: 0.36.0 + SCARB_VERSION: 2.12.0 + STARKNET_FOUNDRY_VERSION: 0.48.0 jobs: l2-fmt: diff --git a/contracts/L2/.tool-versions b/contracts/L2/.tool-versions index 53eab6b..683576a 100644 --- a/contracts/L2/.tool-versions +++ b/contracts/L2/.tool-versions @@ -1,2 +1,2 @@ scarb 2.12.0 -starknet-foundry 0.48.1 +starknet-foundry 0.48.0 From cf0ccef76d4222601ae57e62e9e031fb9c1f4d1a Mon Sep 17 00:00:00 2001 From: JoE11-y Date: Wed, 20 Aug 2025 12:51:34 +0100 Subject: [PATCH 4/4] chore: add formats --- contracts/L2/src/core/L2Oracle.cairo | 6 ++--- contracts/L2/src/core/ProofRegistry.cairo | 14 +++++----- contracts/L2/src/core/xZBERC20.cairo | 6 ++--- contracts/L2/src/dao/DAO.cairo | 25 +++++++++-------- .../L2/src/interfaces/IZeroXBridgeL2.cairo | 2 +- contracts/L2/src/lib.cairo | 14 +++++----- .../L2/src/mocks/MockMerkleManager.cairo | 15 +++++------ contracts/L2/src/mocks/MockOracle.cairo | 6 ++--- contracts/L2/src/mocks/MockRegistry.cairo | 8 +++--- contracts/L2/tests/test_DAO.cairo | 10 +++---- contracts/L2/tests/test_Dynamicrate.cairo | 2 +- contracts/L2/tests/test_L2Oracle.cairo | 10 +++---- contracts/L2/tests/test_MerkleManager.cairo | 6 ++--- contracts/L2/tests/test_ZeroXBridgeL2.cairo | 27 +++++++++---------- contracts/L2/tests/test_xZBERC20.cairo | 1 - 15 files changed, 72 insertions(+), 80 deletions(-) diff --git a/contracts/L2/src/core/L2Oracle.cairo b/contracts/L2/src/core/L2Oracle.cairo index 28a0990..08f4c33 100644 --- a/contracts/L2/src/core/L2Oracle.cairo +++ b/contracts/L2/src/core/L2Oracle.cairo @@ -1,12 +1,12 @@ #[starknet::contract] pub mod L2Oracle { - use starknet::{ContractAddress, get_caller_address}; use core::num::traits::Zero; + use l2::interfaces::IL2Oracle::IL2Oracle; use openzeppelin_access::ownable::OwnableComponent; use starknet::storage::{ - StoragePointerReadAccess, StoragePointerWriteAccess, StoragePathEntry, Map, + Map, StoragePathEntry, StoragePointerReadAccess, StoragePointerWriteAccess, }; - use l2::interfaces::IL2Oracle::IL2Oracle; + use starknet::{ContractAddress, get_caller_address}; component!(path: OwnableComponent, storage: ownable, event: OwnableEvent); diff --git a/contracts/L2/src/core/ProofRegistry.cairo b/contracts/L2/src/core/ProofRegistry.cairo index 0304745..0ce106b 100644 --- a/contracts/L2/src/core/ProofRegistry.cairo +++ b/contracts/L2/src/core/ProofRegistry.cairo @@ -1,5 +1,5 @@ use integrity::{ - calculate_bootloaded_fact_hash, SHARP_BOOTLOADER_PROGRAM_HASH, VerifierConfiguration, + SHARP_BOOTLOADER_PROGRAM_HASH, VerifierConfiguration, calculate_bootloaded_fact_hash, }; // Calculate fact hash for cairo1 programs bootloaded in cairo0 by Atlantic. @@ -16,11 +16,11 @@ fn calculate_cairo1_fact_hash( bootloader_output.append(output.len().into()); for x in output { bootloader_output.append(*x); - }; + } bootloader_output.append(input.len().into()); for x in input { bootloader_output.append(*x); - }; + } // All programs sent to Sharp are bootloaded (second time in this case). calculate_bootloaded_fact_hash( @@ -58,12 +58,12 @@ fn get_cairo1_fact_hash(commitment_hash: felt252, merkle_root: felt252) -> felt2 #[starknet::contract] mod ProofRegistry { - use super::*; - use starknet::storage::{ - Map, StoragePointerReadAccess, StoragePointerWriteAccess, StoragePathEntry, - }; use integrity::{Integrity, IntegrityWithConfig}; use l2::interfaces::IProofRegistry::IProofRegistry; + use starknet::storage::{ + Map, StoragePathEntry, StoragePointerReadAccess, StoragePointerWriteAccess, + }; + use super::*; #[storage] struct Storage { diff --git a/contracts/L2/src/core/xZBERC20.cairo b/contracts/L2/src/core/xZBERC20.cairo index 9f775dc..e79de6e 100644 --- a/contracts/L2/src/core/xZBERC20.cairo +++ b/contracts/L2/src/core/xZBERC20.cairo @@ -6,16 +6,14 @@ pub const UPGRADER_ROLE: felt252 = selector!("UPGRADER_ROLE"); #[starknet::contract] pub mod xZBERC20 { + use l2::interfaces::IxZBErc20::IXZBERC20; use openzeppelin_access::accesscontrol::{AccessControlComponent, DEFAULT_ADMIN_ROLE}; use openzeppelin_introspection::src5::SRC5Component; use openzeppelin_token::erc20::{ERC20Component, ERC20HooksEmptyImpl}; use openzeppelin_upgrades::UpgradeableComponent; use openzeppelin_upgrades::interface::IUpgradeable; - use starknet::{ClassHash, ContractAddress, get_caller_address}; - use starknet::storage::{StoragePointerReadAccess, StoragePointerWriteAccess}; - - use l2::interfaces::IxZBErc20::IXZBERC20; + use starknet::{ClassHash, ContractAddress, get_caller_address}; use super::{BRIDGE_ROLE, UPGRADER_ROLE}; component!(path: ERC20Component, storage: erc20, event: ERC20Event); diff --git a/contracts/L2/src/dao/DAO.cairo b/contracts/L2/src/dao/DAO.cairo index ef5c495..8f6c976 100644 --- a/contracts/L2/src/dao/DAO.cairo +++ b/contracts/L2/src/dao/DAO.cairo @@ -1,4 +1,5 @@ -use starknet::{ContractAddress, storage::Map}; +use starknet::ContractAddress; +use starknet::storage::Map; // Define the ExecutiveAction interface #[starknet::interface] @@ -107,21 +108,19 @@ pub trait IDAO { #[starknet::contract] pub mod DAO { - use starknet::event::EventEmitter; - use starknet::storage::StorageMapWriteAccess; - use starknet::storage::StorageMapReadAccess; - #[feature("deprecated-starknet-consts")] - use starknet::{ContractAddress, contract_address_const}; - use starknet::get_caller_address; - use starknet::get_block_timestamp; - use core::traits::Into; use core::array::ArrayTrait; + use core::panic_with_felt252; + use core::traits::Into; + use openzeppelin_token::erc20::interface::{IERC20Dispatcher, IERC20DispatcherTrait}; + use starknet::event::EventEmitter; use starknet::storage::{ - StoragePointerReadAccess, StoragePointerWriteAccess, Map, StoragePathEntry, + Map, StorageMapReadAccess, StorageMapWriteAccess, StoragePathEntry, + StoragePointerReadAccess, StoragePointerWriteAccess, }; - use super::{Proposal, ProposalStatus, ProposalBindingData, BindingVote, BindingVoteTrait}; - use openzeppelin_token::erc20::interface::{IERC20Dispatcher, IERC20DispatcherTrait}; - use core::panic_with_felt252; + #[feature("deprecated-starknet-consts")] + use starknet::{ContractAddress, contract_address_const}; + use starknet::{get_block_timestamp, get_caller_address}; + use super::{BindingVote, BindingVoteTrait, Proposal, ProposalBindingData, ProposalStatus}; #[storage] diff --git a/contracts/L2/src/interfaces/IZeroXBridgeL2.cairo b/contracts/L2/src/interfaces/IZeroXBridgeL2.cairo index 689df22..e7b37d8 100644 --- a/contracts/L2/src/interfaces/IZeroXBridgeL2.cairo +++ b/contracts/L2/src/interfaces/IZeroXBridgeL2.cairo @@ -1,5 +1,5 @@ -use starknet::ContractAddress; use core::option::Option; +use starknet::ContractAddress; #[starknet::interface] pub trait IZeroXBridgeL2 { diff --git a/contracts/L2/src/lib.cairo b/contracts/L2/src/lib.cairo index e6e7d5a..0e81c05 100644 --- a/contracts/L2/src/lib.cairo +++ b/contracts/L2/src/lib.cairo @@ -1,27 +1,27 @@ pub mod core { - pub mod xZBERC20; - pub mod ZeroXBridgeL2; pub mod L2Oracle; pub mod ProofRegistry; + pub mod ZeroXBridgeL2; + pub mod xZBERC20; } pub mod interfaces { + pub mod IL2Oracle; pub mod IMerkleManager; pub mod IProofRegistry; - pub mod IxZBErc20; - pub mod IL2Oracle; pub mod IZeroXBridgeL2; + pub mod IxZBErc20; } pub mod dao { - pub mod Timelock; pub mod DAO; + pub mod Timelock; } pub mod mocks { - pub mod MockRegistry; - pub mod MockOracle; pub mod MockMerkleManager; + pub mod MockOracle; + pub mod MockRegistry; } pub mod utils; diff --git a/contracts/L2/src/mocks/MockMerkleManager.cairo b/contracts/L2/src/mocks/MockMerkleManager.cairo index 17c8fab..944fa53 100644 --- a/contracts/L2/src/mocks/MockMerkleManager.cairo +++ b/contracts/L2/src/mocks/MockMerkleManager.cairo @@ -17,17 +17,14 @@ pub trait IMockMerkleManager { #[starknet::contract] pub mod MockMerkleManager { + use cairo_lib::data_structures::mmr::mmr::{MMR, MMRTrait}; use core::array::ArrayTrait; use starknet::storage::{ - StoragePointerReadAccess, StoragePointerWriteAccess, Map, StorageMapReadAccess, - StorageMapWriteAccess, Vec, VecTrait, MutableVecTrait, + Map, MutableVecTrait, StorageMapReadAccess, StorageMapWriteAccess, StoragePointerReadAccess, + StoragePointerWriteAccess, Vec, VecTrait, }; - use super::IMockMerkleManager; - use cairo_lib::data_structures::mmr::mmr::MMR; - use cairo_lib::data_structures::mmr::mmr::MMRTrait; - #[storage] struct Storage { mmr: MMR, @@ -83,7 +80,7 @@ pub mod MockMerkleManager { for i in 0..peaks_len { let mut storage_ptr = self.last_peaks.at(i.into()); storage_ptr.write(*peaks.at(i)); - }; + } for i in peaks_len..prev_peaks_len { let mut storage_ptr = self.last_peaks.at(i.into()); storage_ptr.write(0); @@ -93,7 +90,7 @@ pub mod MockMerkleManager { for i in 0..prev_peaks_len { let mut storage_ptr = self.last_peaks.at(i.into()); storage_ptr.write(*peaks.at(i)); - }; + } for i in prev_peaks_len..peaks_len { self.last_peaks.push(*peaks.at(i)); }; @@ -127,7 +124,7 @@ pub mod MockMerkleManager { if (peak != 0) { peaks.append(peak) } - }; + } peaks } diff --git a/contracts/L2/src/mocks/MockOracle.cairo b/contracts/L2/src/mocks/MockOracle.cairo index 89d3292..9c6b8a9 100644 --- a/contracts/L2/src/mocks/MockOracle.cairo +++ b/contracts/L2/src/mocks/MockOracle.cairo @@ -1,12 +1,12 @@ #[starknet::contract] pub mod MockL2Oracle { - use starknet::{ContractAddress, get_caller_address}; use core::num::traits::Zero; + use l2::interfaces::IL2Oracle::IL2Oracle; use openzeppelin_access::ownable::OwnableComponent; use starknet::storage::{ - StoragePointerReadAccess, StoragePointerWriteAccess, StoragePathEntry, Map, + Map, StoragePathEntry, StoragePointerReadAccess, StoragePointerWriteAccess, }; - use l2::interfaces::IL2Oracle::IL2Oracle; + use starknet::{ContractAddress, get_caller_address}; component!(path: OwnableComponent, storage: ownable, event: OwnableEvent); diff --git a/contracts/L2/src/mocks/MockRegistry.cairo b/contracts/L2/src/mocks/MockRegistry.cairo index 4c9112a..3983c61 100644 --- a/contracts/L2/src/mocks/MockRegistry.cairo +++ b/contracts/L2/src/mocks/MockRegistry.cairo @@ -5,12 +5,12 @@ pub trait IMockRegistry { #[starknet::contract] mod MockProofRegistry { - use super::*; + use integrity::{Integrity, IntegrityWithConfig}; + use l2::interfaces::IProofRegistry::IProofRegistry; use starknet::storage::{ - Map, StoragePointerReadAccess, StoragePointerWriteAccess, StoragePathEntry, + Map, StoragePathEntry, StoragePointerReadAccess, StoragePointerWriteAccess, }; - use l2::interfaces::IProofRegistry::IProofRegistry; - use integrity::{Integrity, IntegrityWithConfig}; + use super::*; #[storage] struct Storage { diff --git a/contracts/L2/tests/test_DAO.cairo b/contracts/L2/tests/test_DAO.cairo index a84d45f..25326c7 100644 --- a/contracts/L2/tests/test_DAO.cairo +++ b/contracts/L2/tests/test_DAO.cairo @@ -1,12 +1,12 @@ -use openzeppelin_utils::serde::SerializedAppend; +use l2::dao::DAO::{DAO, IDAODispatcher, IDAODispatcherTrait, ProposalStatus}; +use l2::interfaces::IxZBErc20::{IXZBERC20Dispatcher, IXZBERC20DispatcherTrait}; use openzeppelin_token::erc20::interface::{IERC20Dispatcher, IERC20DispatcherTrait}; +use openzeppelin_utils::serde::SerializedAppend; use snforge_std::{ - DeclareResultTrait, cheat_caller_address, cheat_block_timestamp, declare, CheatSpan, - ContractClassTrait, EventSpyAssertionsTrait, spy_events, + CheatSpan, ContractClassTrait, DeclareResultTrait, EventSpyAssertionsTrait, + cheat_block_timestamp, cheat_caller_address, declare, spy_events, }; use starknet::{ContractAddress, contract_address_const, get_block_timestamp}; -use l2::dao::DAO::{IDAODispatcher, IDAODispatcherTrait, ProposalStatus, DAO}; -use l2::interfaces::IxZBErc20::{IXZBERC20Dispatcher, IXZBERC20DispatcherTrait}; const DEFAULT_BINDING_THRESHOLD: u256 = 1_000_000; diff --git a/contracts/L2/tests/test_Dynamicrate.cairo b/contracts/L2/tests/test_Dynamicrate.cairo index ac3f815..0c06803 100644 --- a/contracts/L2/tests/test_Dynamicrate.cairo +++ b/contracts/L2/tests/test_Dynamicrate.cairo @@ -1,5 +1,5 @@ -use openzeppelin_utils::serde::SerializedAppend; use l2::interfaces::IZeroXBridgeL2::{IDynamicRateDispatcher, IDynamicRateDispatcherTrait}; +use openzeppelin_utils::serde::SerializedAppend; use snforge_std::{CheatSpan, ContractClassTrait, DeclareResultTrait, cheat_caller_address, declare}; use starknet::{ContractAddress, contract_address_const}; diff --git a/contracts/L2/tests/test_L2Oracle.cairo b/contracts/L2/tests/test_L2Oracle.cairo index 247633b..f6c5eae 100644 --- a/contracts/L2/tests/test_L2Oracle.cairo +++ b/contracts/L2/tests/test_L2Oracle.cairo @@ -1,13 +1,13 @@ #[cfg(test)] mod tests { use core::traits::Into; - use starknet::{ContractAddress, contract_address_const}; + use l2::core::L2Oracle::L2Oracle; + use l2::interfaces::IL2Oracle::{IL2OracleDispatcher, IL2OracleDispatcherTrait}; use snforge_std::{ - declare, ContractClassTrait, DeclareResultTrait, start_cheat_caller_address, - stop_cheat_caller_address, EventSpyAssertionsTrait, spy_events, + ContractClassTrait, DeclareResultTrait, EventSpyAssertionsTrait, declare, spy_events, + start_cheat_caller_address, stop_cheat_caller_address, }; - use l2::interfaces::IL2Oracle::{IL2OracleDispatcher, IL2OracleDispatcherTrait}; - use l2::core::L2Oracle::L2Oracle; + use starknet::{ContractAddress, contract_address_const}; // Helper function to deploy the contract fn deploy_contract() -> (ContractAddress, ContractAddress) { diff --git a/contracts/L2/tests/test_MerkleManager.cairo b/contracts/L2/tests/test_MerkleManager.cairo index 926dc8f..13392cf 100644 --- a/contracts/L2/tests/test_MerkleManager.cairo +++ b/contracts/L2/tests/test_MerkleManager.cairo @@ -1,7 +1,7 @@ -use snforge_std::{ContractClassTrait, DeclareResultTrait, declare}; -use starknet::{ContractAddress}; -use l2::mocks::MockMerkleManager::{IMockMerkleManagerDispatcher, IMockMerkleManagerDispatcherTrait}; use cairo_lib::hashing::poseidon::PoseidonHasher; +use l2::mocks::MockMerkleManager::{IMockMerkleManagerDispatcher, IMockMerkleManagerDispatcherTrait}; +use snforge_std::{ContractClassTrait, DeclareResultTrait, declare}; +use starknet::ContractAddress; // Helper functions fn deploy_merkle_manager() -> ContractAddress { diff --git a/contracts/L2/tests/test_ZeroXBridgeL2.cairo b/contracts/L2/tests/test_ZeroXBridgeL2.cairo index 86a5078..9cd0aa0 100644 --- a/contracts/L2/tests/test_ZeroXBridgeL2.cairo +++ b/contracts/L2/tests/test_ZeroXBridgeL2.cairo @@ -1,23 +1,22 @@ -use snforge_std::{ - declare, spy_events, ContractClassTrait, DeclareResultTrait, EventSpyAssertionsTrait, CheatSpan, - cheat_caller_address, -}; - +use core::hash::{HashStateExTrait, HashStateTrait}; +use core::integer::u256; +use core::poseidon::PoseidonTrait; +use l2::core::ZeroXBridgeL2::ZeroXBridgeL2::{BurnData, BurnEvent, Event, MintData, MintEvent}; +use l2::interfaces::IL2Oracle::{IL2OracleDispatcher, IL2OracleDispatcherTrait}; +use l2::interfaces::IProofRegistry::{IProofRegistryDispatcher, IProofRegistryDispatcherTrait}; use l2::interfaces::IZeroXBridgeL2::{ - IZeroXBridgeL2Dispatcher, IZeroXBridgeL2DispatcherTrait, IDynamicRateDispatcher, - IDynamicRateDispatcherTrait, + IDynamicRateDispatcher, IDynamicRateDispatcherTrait, IZeroXBridgeL2Dispatcher, + IZeroXBridgeL2DispatcherTrait, }; -use l2::core::ZeroXBridgeL2::ZeroXBridgeL2::{Event, BurnEvent, BurnData, MintEvent, MintData}; use l2::interfaces::IxZBErc20::{IXZBERC20Dispatcher, IXZBERC20DispatcherTrait}; -use l2::interfaces::IProofRegistry::{IProofRegistryDispatcher, IProofRegistryDispatcherTrait}; -use l2::interfaces::IL2Oracle::{IL2OracleDispatcher, IL2OracleDispatcherTrait}; use l2::mocks::MockRegistry::{IMockRegistryDispatcher, IMockRegistryDispatcherTrait}; use openzeppelin_token::erc20::interface::{IERC20Dispatcher, IERC20DispatcherTrait}; -use starknet::{ContractAddress, contract_address_const, get_block_timestamp}; -use core::integer::u256; -use core::poseidon::PoseidonTrait; -use core::hash::{HashStateTrait, HashStateExTrait}; use openzeppelin_utils::serde::SerializedAppend; +use snforge_std::{ + CheatSpan, ContractClassTrait, DeclareResultTrait, EventSpyAssertionsTrait, + cheat_caller_address, declare, spy_events, +}; +use starknet::{ContractAddress, contract_address_const, get_block_timestamp}; const MIN_RATE: u256 = 100_000_000_000_000_000; // 0.1 (with PRECISION) const MAX_RATE: u256 = 5_000_000_000_000_000_000; // 5.0 (with PRECISION) diff --git a/contracts/L2/tests/test_xZBERC20.cairo b/contracts/L2/tests/test_xZBERC20.cairo index e5ac566..92c209b 100644 --- a/contracts/L2/tests/test_xZBERC20.cairo +++ b/contracts/L2/tests/test_xZBERC20.cairo @@ -1,6 +1,5 @@ use l2::core::xZBERC20::BRIDGE_ROLE; use l2::interfaces::IxZBErc20::{IXZBERC20Dispatcher, IXZBERC20DispatcherTrait}; - use openzeppelin_access::accesscontrol::interface::{ IAccessControlDispatcher, IAccessControlDispatcherTrait, };