Skip to content

Commit

Permalink
refactor: use u256
Browse files Browse the repository at this point in the history
  • Loading branch information
detectivekim committed Jun 10, 2024
1 parent bf405a1 commit 67abd63
Showing 1 changed file with 14 additions and 5 deletions.
19 changes: 14 additions & 5 deletions src/libraries/currency_delta.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ mod CurrencyDelta {

#[storage]
struct Storage {
currency_delta: LegacyMap::<(ContractAddress, ContractAddress), i128>
currency_delta: LegacyMap::<(ContractAddress, ContractAddress), (bool, u256)>
}

#[generate_trait]
Expand All @@ -15,18 +15,27 @@ mod CurrencyDelta {
ref self: ComponentState<TContractState>,
locker: ContractAddress,
currency: ContractAddress,
) -> i128 {
) -> (bool, u256) {
self.currency_delta.read((locker, currency))
}

fn add(
ref self: ComponentState<TContractState>,
locker: ContractAddress,
currency: ContractAddress,
delta: i128,
sign: bool,
delta: u256,
) {
let mut currency_delta = self.currency_delta.read((locker, currency));
self.currency_delta.write((locker, currency), currency_delta + delta)
let (sign_delta, currency_delta): (bool, u256) = self.currency_delta.read((locker, currency));
if sign_delta == sign {
self.currency_delta.write((locker, currency), (sign, currency_delta + delta))
} else if currency_delta == delta {
self.currency_delta.write((locker, currency), (false, 0))
} else if currency_delta < delta {
self.currency_delta.write((locker, currency), (sign, delta - currency_delta))
} else {
self.currency_delta.write((locker, currency), (sign_delta, currency_delta - delta))
}
}
}
}

0 comments on commit 67abd63

Please sign in to comment.