Skip to content

Commit 34b99e4

Browse files
authored
Merge pull request #111 from GideonBature/update_tooling
Update scarb, starknet and l2 contract to latest version
2 parents a1058f2 + cf0ccef commit 34b99e4

22 files changed

Lines changed: 134 additions & 148 deletions

.github/workflows/l2.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ on:
1111
- "contracts/L2/**"
1212

1313
env:
14-
SCARB_VERSION: 2.9.2
15-
STARKNET_FOUNDRY_VERSION: 0.36.0
14+
SCARB_VERSION: 2.12.0
15+
STARKNET_FOUNDRY_VERSION: 0.48.0
1616

1717
jobs:
1818
l2-fmt:

contracts/L2/.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@ target
22
.snfoundry_cache/
33
.tool-versions
44
node_modules
5-
.env
5+
.env
6+
Scarb.lock

contracts/L2/.tool-versions

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
scarb 2.9.2
2-
starknet-foundry 0.36.0
1+
scarb 2.12.0
2+
starknet-foundry 0.48.0

contracts/L2/Scarb.lock

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ version = 1
44
[[package]]
55
name = "cairo_lib"
66
version = "0.2.0"
7-
source = "git+https://github.com/HerodotusDev/cairo-lib.git#a0c0ee4feeb4edb61e7a35d29595ad8647c3d469"
7+
source = "git+https://github.com/Explore-Beyond-Innovations/cairo-lib.git?rev=afc30b93404f6f5c595f97d1f4f795983872600a#afc30b93404f6f5c595f97d1f4f795983872600a"
88

99
[[package]]
1010
name = "integrity"
@@ -77,15 +77,15 @@ checksum = "sha256:44f32d242af1e43982decc49c563e613a9b67ade552f5c3d5cde504e92f74
7777

7878
[[package]]
7979
name = "snforge_scarb_plugin"
80-
version = "0.36.0"
80+
version = "0.48.1"
8181
source = "registry+https://scarbs.xyz/"
82-
checksum = "sha256:b9550f5c921502be3e240e83aa9e2dc6ee63ae76bfecee082b7a15bead0460c0"
82+
checksum = "sha256:2dd27e8215eea8785b3930e9f452e11b429ca262b1c1fbb071bfc173b9ebc125"
8383

8484
[[package]]
8585
name = "snforge_std"
86-
version = "0.36.0"
86+
version = "0.48.1"
8787
source = "registry+https://scarbs.xyz/"
88-
checksum = "sha256:9f38c6c376447cfe225c5869905122f6a64bc301f5872c7855d2abe6e9c0a1da"
88+
checksum = "sha256:89f759fa685d48ed0ba7152d2ac2eb168da08dfa8b84b2bee96e203dc5b2413e"
8989
dependencies = [
9090
"snforge_scarb_plugin",
9191
]

contracts/L2/Scarb.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,17 @@ edition = "2024_07"
77

88
[dependencies]
99
integrity = "2.0.0"
10-
starknet = "2.9.2"
10+
starknet = "2.12.0"
1111
openzeppelin_access = "0.20.0"
1212
openzeppelin_introspection = "0.20.0"
1313
openzeppelin_token = "0.20.0"
1414
openzeppelin_upgrades = "0.20.0"
1515
cairo_lib = { git = "https://github.com/Explore-Beyond-Innovations/cairo-lib.git", rev = "afc30b93404f6f5c595f97d1f4f795983872600a" }
1616

1717
[dev-dependencies]
18-
assert_macros = "2.9.2"
18+
assert_macros = "2.12.0"
1919
openzeppelin_utils = "0.20.0"
20-
snforge_std = "0.36.0"
20+
snforge_std = "0.48.0"
2121

2222
[[target.starknet-contract]]
2323
sierra = true

contracts/L2/src/core/L2Oracle.cairo

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
#[starknet::contract]
22
pub mod L2Oracle {
3-
use starknet::{ContractAddress, get_caller_address};
43
use core::num::traits::Zero;
4+
use l2::interfaces::IL2Oracle::IL2Oracle;
55
use openzeppelin_access::ownable::OwnableComponent;
66
use starknet::storage::{
7-
StoragePointerReadAccess, StoragePointerWriteAccess, StoragePathEntry, Map,
7+
Map, StoragePathEntry, StoragePointerReadAccess, StoragePointerWriteAccess,
88
};
9-
use l2::interfaces::IL2Oracle::IL2Oracle;
9+
use starknet::{ContractAddress, get_caller_address};
1010

1111
component!(path: OwnableComponent, storage: ownable, event: OwnableEvent);
1212

contracts/L2/src/core/ProofRegistry.cairo

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use integrity::{
2-
calculate_bootloaded_fact_hash, SHARP_BOOTLOADER_PROGRAM_HASH, VerifierConfiguration,
2+
SHARP_BOOTLOADER_PROGRAM_HASH, VerifierConfiguration, calculate_bootloaded_fact_hash,
33
};
44

55
// Calculate fact hash for cairo1 programs bootloaded in cairo0 by Atlantic.
@@ -16,11 +16,11 @@ fn calculate_cairo1_fact_hash(
1616
bootloader_output.append(output.len().into());
1717
for x in output {
1818
bootloader_output.append(*x);
19-
};
19+
}
2020
bootloader_output.append(input.len().into());
2121
for x in input {
2222
bootloader_output.append(*x);
23-
};
23+
}
2424

2525
// All programs sent to Sharp are bootloaded (second time in this case).
2626
calculate_bootloaded_fact_hash(
@@ -58,12 +58,12 @@ fn get_cairo1_fact_hash(commitment_hash: felt252, merkle_root: felt252) -> felt2
5858

5959
#[starknet::contract]
6060
mod ProofRegistry {
61-
use super::*;
62-
use starknet::storage::{
63-
Map, StoragePointerReadAccess, StoragePointerWriteAccess, StoragePathEntry,
64-
};
6561
use integrity::{Integrity, IntegrityWithConfig};
6662
use l2::interfaces::IProofRegistry::IProofRegistry;
63+
use starknet::storage::{
64+
Map, StoragePathEntry, StoragePointerReadAccess, StoragePointerWriteAccess,
65+
};
66+
use super::*;
6767

6868
#[storage]
6969
struct Storage {

contracts/L2/src/core/ZeroXBridgeL2.cairo

Lines changed: 31 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,30 @@
11
#[starknet::contract]
22
pub mod ZeroXBridgeL2 {
3-
use openzeppelin_access::ownable::OwnableComponent;
4-
use openzeppelin_introspection::src5::SRC5Component;
5-
use openzeppelin_upgrades::UpgradeableComponent;
6-
use openzeppelin_upgrades::interface::IUpgradeable;
7-
use starknet::{
8-
ContractAddress, get_caller_address, ClassHash, get_block_timestamp, get_contract_address,
9-
};
10-
use l2::interfaces::IxZBErc20::{IXZBERC20Dispatcher, IXZBERC20DispatcherTrait};
11-
use openzeppelin_token::erc20::interface::{IERC20DispatcherTrait, IERC20Dispatcher};
12-
use l2::interfaces::IL2Oracle::{IL2OracleDispatcher, IL2OracleDispatcherTrait};
13-
3+
use cairo_lib::data_structures::mmr::mmr::{MMR, MMRTrait};
4+
use core::array::ArrayTrait;
5+
use core::hash::{HashStateExTrait, HashStateTrait};
146
use core::option::Option;
157
use core::poseidon::PoseidonTrait;
16-
use core::array::ArrayTrait;
17-
use starknet::storage::{
18-
StoragePointerReadAccess, StoragePointerWriteAccess, Map, StorageMapReadAccess,
19-
StorageMapWriteAccess, Vec, VecTrait, MutableVecTrait,
20-
};
21-
use core::hash::{HashStateTrait, HashStateExTrait};
22-
8+
use l2::interfaces::IL2Oracle::{IL2OracleDispatcher, IL2OracleDispatcherTrait};
9+
use l2::interfaces::IMerkleManager::IMerkleManager;
2310
use l2::interfaces::IProofRegistry::{IProofRegistryDispatcher, IProofRegistryDispatcherTrait};
2411
use l2::interfaces::IZeroXBridgeL2::{IDynamicRate, IZeroXBridgeL2};
25-
use l2::interfaces::IMerkleManager::IMerkleManager;
26-
12+
use l2::interfaces::IxZBErc20::{IXZBERC20Dispatcher, IXZBERC20DispatcherTrait};
13+
use openzeppelin_access::ownable::OwnableComponent;
14+
use openzeppelin_introspection::src5::SRC5Component;
15+
use openzeppelin_token::erc20::interface::{IERC20Dispatcher, IERC20DispatcherTrait};
16+
use openzeppelin_upgrades::UpgradeableComponent;
17+
use openzeppelin_upgrades::interface::IUpgradeable;
2718
use starknet::eth_address::EthAddress;
2819
use starknet::eth_signature::verify_eth_signature;
2920
use starknet::secp256_trait::Signature;
30-
use cairo_lib::data_structures::mmr::mmr::MMR;
31-
use cairo_lib::data_structures::mmr::mmr::MMRTrait;
21+
use starknet::storage::{
22+
Map, MutableVecTrait, StorageMapReadAccess, StorageMapWriteAccess, StoragePointerReadAccess,
23+
StoragePointerWriteAccess, Vec, VecTrait,
24+
};
25+
use starknet::{
26+
ClassHash, ContractAddress, get_block_timestamp, get_caller_address, get_contract_address,
27+
};
3228

3329

3430
const PRECISION: u256 = 1_000_000_000_000_000_000; // 18 decimals for precision
@@ -313,7 +309,7 @@ pub mod ZeroXBridgeL2 {
313309
let max_rate = rates.max_rate;
314310

315311
let final_rate = if raw_rate == 0 {
316-
1 * PRECISION
312+
PRECISION
317313
} else if raw_rate < min_rate {
318314
min_rate
319315
} else if raw_rate > max_rate {
@@ -339,16 +335,16 @@ pub mod ZeroXBridgeL2 {
339335
self.ownable.assert_only_owner();
340336
let mut current_rates = self.rates.read();
341337

342-
match min_rate {
343-
Option::Some(new_min) => { current_rates.min_rate = new_min; },
344-
Option::None => {},
338+
if let Option::Some(new_min) = min_rate {
339+
{
340+
current_rates.min_rate = new_min;
341+
}
345342
}
346-
347-
match max_rate {
348-
Option::Some(new_max) => { current_rates.max_rate = new_max; },
349-
Option::None => {},
343+
if let Option::Some(new_max) = max_rate {
344+
{
345+
current_rates.max_rate = new_max;
346+
}
350347
}
351-
352348
assert(current_rates.min_rate < current_rates.max_rate, 'Min rate must be < max rate');
353349

354350
self.rates.write(current_rates);
@@ -405,7 +401,7 @@ pub mod ZeroXBridgeL2 {
405401
let mut peaks = array![];
406402
for i in 0..self.last_peaks.len() {
407403
peaks.append(self.last_peaks.at(i).read());
408-
};
404+
}
409405
peaks
410406
}
411407

@@ -450,7 +446,7 @@ pub mod ZeroXBridgeL2 {
450446
for i in 0..peaks_len {
451447
let mut storage_ptr = self.last_peaks.at(i.into());
452448
storage_ptr.write(*peaks.at(i));
453-
};
449+
}
454450
for i in peaks_len..last_peaks_len {
455451
let mut storage_ptr = self.last_peaks.at(i.into());
456452
storage_ptr.write(0);
@@ -460,9 +456,9 @@ pub mod ZeroXBridgeL2 {
460456
for i in 0..last_peaks_len {
461457
let mut storage_ptr = self.last_peaks.at(i.into());
462458
storage_ptr.write(*peaks.at(i));
463-
};
459+
}
464460
for i in last_peaks_len..peaks_len {
465-
self.last_peaks.append().write(*peaks.at(i));
461+
self.last_peaks.push(*peaks.at(i));
466462
};
467463
}
468464

contracts/L2/src/core/xZBERC20.cairo

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,14 @@ pub const UPGRADER_ROLE: felt252 = selector!("UPGRADER_ROLE");
66

77
#[starknet::contract]
88
pub mod xZBERC20 {
9+
use l2::interfaces::IxZBErc20::IXZBERC20;
910
use openzeppelin_access::accesscontrol::{AccessControlComponent, DEFAULT_ADMIN_ROLE};
1011
use openzeppelin_introspection::src5::SRC5Component;
1112
use openzeppelin_token::erc20::{ERC20Component, ERC20HooksEmptyImpl};
1213
use openzeppelin_upgrades::UpgradeableComponent;
1314
use openzeppelin_upgrades::interface::IUpgradeable;
14-
use starknet::{ClassHash, ContractAddress, get_caller_address};
15-
1615
use starknet::storage::{StoragePointerReadAccess, StoragePointerWriteAccess};
17-
18-
use l2::interfaces::IxZBErc20::IXZBERC20;
16+
use starknet::{ClassHash, ContractAddress, get_caller_address};
1917
use super::{BRIDGE_ROLE, UPGRADER_ROLE};
2018

2119
component!(path: ERC20Component, storage: erc20, event: ERC20Event);

contracts/L2/src/dao/DAO.cairo

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use core::starknet::ContractAddress;
1+
use starknet::ContractAddress;
22
use starknet::storage::Map;
33

44
// Define the ExecutiveAction interface
@@ -108,20 +108,19 @@ pub trait IDAO<TContractState> {
108108

109109
#[starknet::contract]
110110
pub mod DAO {
111-
use starknet::event::EventEmitter;
112-
use starknet::storage::StorageMapWriteAccess;
113-
use starknet::storage::StorageMapReadAccess;
114-
use starknet::{ContractAddress, contract_address_const};
115-
use starknet::get_caller_address;
116-
use starknet::get_block_timestamp;
117-
use core::traits::Into;
118111
use core::array::ArrayTrait;
119-
use core::starknet::storage::{
120-
StoragePointerReadAccess, StoragePointerWriteAccess, Map, StoragePathEntry,
121-
};
122-
use super::{Proposal, ProposalStatus, ProposalBindingData, BindingVote, BindingVoteTrait};
123-
use openzeppelin_token::erc20::interface::{IERC20Dispatcher, IERC20DispatcherTrait};
124112
use core::panic_with_felt252;
113+
use core::traits::Into;
114+
use openzeppelin_token::erc20::interface::{IERC20Dispatcher, IERC20DispatcherTrait};
115+
use starknet::event::EventEmitter;
116+
use starknet::storage::{
117+
Map, StorageMapReadAccess, StorageMapWriteAccess, StoragePathEntry,
118+
StoragePointerReadAccess, StoragePointerWriteAccess,
119+
};
120+
#[feature("deprecated-starknet-consts")]
121+
use starknet::{ContractAddress, contract_address_const};
122+
use starknet::{get_block_timestamp, get_caller_address};
123+
use super::{BindingVote, BindingVoteTrait, Proposal, ProposalBindingData, ProposalStatus};
125124

126125

127126
#[storage]

0 commit comments

Comments
 (0)