Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion contracts/L2/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@ target
.snfoundry_cache/
.tool-versions
node_modules
.env
.env
Scarb.lock
4 changes: 2 additions & 2 deletions contracts/L2/.tool-versions
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
scarb 2.9.2
starknet-foundry 0.36.0
scarb 2.12.0
starknet-foundry 0.48.1
10 changes: 5 additions & 5 deletions contracts/L2/Scarb.lock
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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",
]
6 changes: 3 additions & 3 deletions contracts/L2/Scarb.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,17 @@ 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"
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
Expand Down
66 changes: 31 additions & 35 deletions contracts/L2/src/core/ZeroXBridgeL2.cairo
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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 {
Expand All @@ -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);
Expand Down Expand Up @@ -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
}

Expand Down Expand Up @@ -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);
Expand All @@ -460,9 +456,9 @@ 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.append().write(*peaks.at(i));
self.last_peaks.push(*peaks.at(i));
};
}

Expand Down
6 changes: 3 additions & 3 deletions contracts/L2/src/dao/DAO.cairo
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
use core::starknet::ContractAddress;
use starknet::storage::Map;
use starknet::{ContractAddress, storage::Map};

// Define the ExecutiveAction interface
#[starknet::interface]
Expand Down Expand Up @@ -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};
Expand Down
35 changes: 16 additions & 19 deletions contracts/L2/src/dao/Timelock.cairo
Original file line number Diff line number Diff line change
@@ -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<TContractState> {
Expand All @@ -29,9 +26,9 @@ trait ITimelock<TContractState> {

#[starknet::contract]
mod Timelock {
use super::*;
use core::traits::Into;
use starknet::storage::{MutableVecTrait};
use starknet::storage::MutableVecTrait;
use super::*;

#[storage]
struct Storage {
Expand Down Expand Up @@ -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]
Expand Down Expand Up @@ -132,9 +129,9 @@ 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;
};
}

self.action_count.write(self.action_count.read() + 1);

Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -221,7 +218,7 @@ mod Timelock {
if action_entry.status.read() == ActionStatus::Pending {
pending.append(action_id);
}
};
}
pending
}
}
Expand All @@ -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()
Expand Down
2 changes: 1 addition & 1 deletion contracts/L2/src/mocks/MockMerkleManager.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -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));
};
}

Expand Down