From e9d84f6b9850cc89f2a3f7817a7def7be02b7c54 Mon Sep 17 00:00:00 2001 From: Sean Date: Thu, 27 Jun 2024 16:04:23 +0900 Subject: [PATCH] fix: deprecate `LegacyMap` --- Scarb.lock | 8 -------- Scarb.toml | 8 ++------ src/libraries/currency_delta.cairo | 15 ++++++++++----- src/libraries/lockers.cairo | 7 ++++--- src/libraries/significant_bit.cairo | 1 - 5 files changed, 16 insertions(+), 23 deletions(-) diff --git a/Scarb.lock b/Scarb.lock index 75b5a0c..45dc199 100644 --- a/Scarb.lock +++ b/Scarb.lock @@ -4,11 +4,3 @@ version = 1 [[package]] name = "clober_cairo" version = "0.1.0" -dependencies = [ - "snforge_std", -] - -[[package]] -name = "snforge_std" -version = "0.25.0" -source = "git+https://github.com/foundry-rs/starknet-foundry.git?tag=v0.25.0#5b366e24821e530fea97f11b211d220e8493fbea" diff --git a/Scarb.toml b/Scarb.toml index 26ac1b1..4d7c4f7 100644 --- a/Scarb.toml +++ b/Scarb.toml @@ -2,7 +2,7 @@ name = "clober_cairo" version = "0.1.0" edition = "2023_11" -cairo-version = "2.6.3" +cairo-version = "2.7.0-rc.0" authors = ["Clober "] description = "Core Contracts written in Cairo for StarkNet" readme = "README.md" @@ -10,11 +10,7 @@ repository = "https://github.com/clober-dex/clober_cairo" # license-file = "LICENSE" [dependencies] -starknet = "2.6.3" - -[dev-dependencies] -snforge_std = { git = "https://github.com/foundry-rs/starknet-foundry.git", tag = "v0.25.0" } - +starknet = "2.7.0-rc.0" [tool.snforge] fuzzer_runs = 1000 # exit_first = true # Exit on first error. diff --git a/src/libraries/currency_delta.cairo b/src/libraries/currency_delta.cairo index 279f0df..a117270 100644 --- a/src/libraries/currency_delta.cairo +++ b/src/libraries/currency_delta.cairo @@ -3,10 +3,13 @@ mod CurrencyDelta { use starknet::ContractAddress; use clober_cairo::alexandria::i257::i257; use clober_cairo::alexandria::i257::I257Impl; + use starknet::storage::Map; + use core::starknet::storage::StoragePointerReadAccess; + use core::starknet::storage::StoragePathEntry; #[storage] struct Storage { - currency_delta: LegacyMap::<(ContractAddress, ContractAddress), (bool, u256)> + currency_delta: Map<(ContractAddress, ContractAddress), (u256, bool)> } #[generate_trait] @@ -18,7 +21,7 @@ mod CurrencyDelta { locker: ContractAddress, currency: ContractAddress, ) -> i257 { - let (sign, abs) = self.currency_delta.read((locker, currency)); + let (abs, sign) = self.currency_delta.read((locker, currency)); I257Impl::new(abs, sign) } @@ -27,10 +30,12 @@ mod CurrencyDelta { locker: ContractAddress, currency: ContractAddress, mut delta: i257, - ) { - let (sign, abs): (bool, u256) = self.currency_delta.read((locker, currency)); + ) -> i257 { + let entry = self.currency_delta.entry((locker, currency)); + let (abs, sign) = entry.read(); delta += I257Impl::new(abs, sign); - self.currency_delta.write((locker, currency), (delta.is_negative(), delta.abs())) + entry.write((delta.abs(), delta.is_negative())); + delta } } } diff --git a/src/libraries/lockers.cairo b/src/libraries/lockers.cairo index cad511a..40bbcd6 100644 --- a/src/libraries/lockers.cairo +++ b/src/libraries/lockers.cairo @@ -1,11 +1,12 @@ #[starknet::component] mod Lockers { use starknet::ContractAddress; + use starknet::storage::Map; #[storage] struct Storage { - lockers: LegacyMap::, // use Array, - lock_callers: LegacyMap::, + lockers: Map, // use Array, + lock_callers: Map, // optimistic storage length: u128, non_zero_delta_count: u128 @@ -33,7 +34,7 @@ mod Lockers { // let locker = self.lockers.read(length); // let lock_caller = self.lock_callers.read(length); self.length.write(length - 1); - // check if it's better to reset locker and lock_caller + // check if it's better to reset locker and lock_caller } fn lock_data(ref self: ComponentState) -> (u128, u128) { diff --git a/src/libraries/significant_bit.cairo b/src/libraries/significant_bit.cairo index 54a5895..33af4de 100644 --- a/src/libraries/significant_bit.cairo +++ b/src/libraries/significant_bit.cairo @@ -265,7 +265,6 @@ const DEBRUIJN_INDEX: [ #[generate_trait] pub impl SignificantBitImpl of SignificantBitTrait { - fn least_significant_bit(x: u256) -> u8 { assert!(x != 0, "x must be non-zero"); let (mul, _) = u256_overflow_mul(x & (~x + 1), DEBRUIJN_SEQ);