diff --git a/contracts/src/escrow/escrow.cairo b/contracts/src/escrow/escrow.cairo index 5316c69..b05e228 100644 --- a/contracts/src/escrow/escrow.cairo +++ b/contracts/src/escrow/escrow.cairo @@ -4,7 +4,7 @@ pub mod Escrow { use starknet::storage::{ StoragePointerReadAccess, StoragePointerWriteAccess, StoragePathEntry, Map }; - use starknet::{ContractAddress, get_contract_address, get_caller_address}; + use starknet::{ContractAddress, get_contract_address}; use openzeppelin::introspection::src5::SRC5Component; use openzeppelin_access::accesscontrol::{AccessControlComponent}; use openzeppelin_access::ownable::OwnableComponent; @@ -32,7 +32,7 @@ pub mod Escrow { #[storage] struct Storage { - strk_dispatcher: IERC20Dispatcher, + strk_address: ContractAddress, user_balance: Map::, wager_stake: Map::, // wager_id -> total stake #[substorage(v0)] @@ -89,9 +89,9 @@ pub mod Escrow { #[constructor] fn constructor( - ref self: ContractState, strk_dispatcher: IERC20Dispatcher, wager_contract: ContractAddress + ref self: ContractState, strk_address: ContractAddress, wager_contract: ContractAddress ) { - self.strk_dispatcher.write(strk_dispatcher); + self.strk_address.write(strk_address); self.accesscontrol.initializer(); self.accesscontrol._grant_role(WAGER_ROLE, wager_contract); } @@ -101,12 +101,12 @@ pub mod Escrow { fn deposit_to_wallet(ref self: ContractState, from: ContractAddress, amount: u256) { self.accesscontrol.assert_only_role(WAGER_ROLE); + let strk_dispatcher = IERC20Dispatcher { contract_address: self.strk_address.read() }; + // Validate input assert(!from.is_zero(), 'Invalid address'); assert(amount > 0, 'Amount must be positive'); - let strk_dispatcher = self.strk_dispatcher.read(); - // transfers funds to escrow assert(strk_dispatcher.balance_of(from) >= amount, 'Insufficient balance'); self.user_balance.entry(from).write(amount + self.get_balance(from)); @@ -116,7 +116,7 @@ pub mod Escrow { fn withdraw_from_wallet(ref self: ContractState, to: ContractAddress, amount: u256) { self.accesscontrol.assert_only_role(WAGER_ROLE); - let strk_dispatcher = self.strk_dispatcher.read(); + let strk_dispatcher = IERC20Dispatcher { contract_address: self.strk_address.read() }; // Validate recipient address assert(!to.is_zero(), 'Invalid address'); diff --git a/contracts/src/tests/test_escrow.cairo b/contracts/src/tests/test_escrow.cairo index 8b67328..fd5b111 100644 --- a/contracts/src/tests/test_escrow.cairo +++ b/contracts/src/tests/test_escrow.cairo @@ -1,12 +1,8 @@ -use starknet::ContractAddress; -use starknet::{testing, contract_address_const}; - -use openzeppelin::token::erc20::interface::{IERC20Dispatcher, IERC20DispatcherTrait}; - -use contracts::escrow::interface::{IEscrowDispatcher, IEscrowDispatcherTrait}; -use contracts::tests::utils::{OWNER, BOB, deploy_escrow, setup, create_head_to_head_wager, ADMIN}; - +use openzeppelin::token::erc20::interface::{IERC20DispatcherTrait}; +use contracts::tests::utils::{OWNER, BOB, setup}; use snforge_std::{start_cheat_caller_address, stop_cheat_caller_address,}; +use contracts::escrow::interface::{IEscrowDispatcherTrait}; + #[test] #[should_panic(expected: ('Caller is missing role',))] diff --git a/contracts/src/tests/test_integration.cairo b/contracts/src/tests/test_integration.cairo index b0e4405..3934144 100644 --- a/contracts/src/tests/test_integration.cairo +++ b/contracts/src/tests/test_integration.cairo @@ -1,20 +1,15 @@ use starknet::{ContractAddress, get_block_timestamp}; - -use contracts::wager::wager::StrkWager; -use contracts::wager::types::{Category, Mode, Claim, WagerState}; -use contracts::wager::interface::{IStrkWagerDispatcher, IStrkWagerDispatcherTrait}; use contracts::escrow::interface::IEscrowDispatcherTrait; -use contracts::tests::utils::{OWNER, ADMIN, ALICE, BOB, setup, create_head_to_head_wager}; -use openzeppelin::token::erc20::interface::IERC20DispatcherTrait; +use contracts::tests::utils::{ADMIN, setup, create_head_to_head_wager}; +use contracts::wager::interface::{IStrkWagerDispatcherTrait}; + -use snforge_std::{ - EventSpyAssertionsTrait, start_cheat_caller_address, stop_cheat_caller_address, spy_events, -}; +use snforge_std::{start_cheat_caller_address, stop_cheat_caller_address,}; #[test] #[should_panic(expected: ('Invalid winner address',))] fn test_distribute_funds_invalid_winner_address() { - let (wager, escrow, strk_dispatcher) = setup(); + let (wager, escrow, _) = setup(); start_cheat_caller_address(escrow.contract_address, wager.contract_address); escrow.distribute_funds(1, 0.try_into().unwrap()); @@ -23,7 +18,7 @@ fn test_distribute_funds_invalid_winner_address() { #[test] #[should_panic(expected: ('No funds in wager',))] fn test_distribute_funds_no_funds() { - let (wager, escrow, strk_dispatcher) = setup(); + let (wager, escrow, _) = setup(); start_cheat_caller_address(escrow.contract_address, wager.contract_address); escrow.distribute_funds(1, 1.try_into().unwrap()); @@ -57,7 +52,7 @@ fn test_distribute_funds_ok() { #[test] #[should_panic(expected: ('No funds in wager',))] fn test_refund_wager_no_funds_in_wager() { - let (wager, escrow, strk_dispatcher) = setup(); + let (wager, escrow, _) = setup(); let john: ContractAddress = 'john'.try_into().unwrap(); start_cheat_caller_address(escrow.contract_address, wager.contract_address); diff --git a/contracts/src/tests/test_wager.cairo b/contracts/src/tests/test_wager.cairo index ee0345b..2a2820f 100644 --- a/contracts/src/tests/test_wager.cairo +++ b/contracts/src/tests/test_wager.cairo @@ -1097,8 +1097,6 @@ fn test_cancel_wager() { "Wager should be in Pending state after creation" ); - let participants = wager.get_wager_participants(wager_id); - // cancel a wager wager.cancel_wager(wager_id); let created_wager = wager.get_wager(wager_id); @@ -1322,7 +1320,6 @@ fn test_submit_outcome_before_resolution_time() { wager, escrow, strk_dispatcher, deposit, stake, resolution_time ); - let owner = OWNER(); let bob = BOB(); // Mint tokens for BOB diff --git a/contracts/src/tests/utils.cairo b/contracts/src/tests/utils.cairo index 08c4231..5d47271 100644 --- a/contracts/src/tests/utils.cairo +++ b/contracts/src/tests/utils.cairo @@ -10,7 +10,7 @@ use snforge_std::{ use contracts::wager::wager::StrkWager; use contracts::wager::types::{Mode, Category, Claim, WagerState}; -use contracts::escrow::interface::{IEscrowDispatcher, IEscrowDispatcherTrait}; +use contracts::escrow::interface::{IEscrowDispatcher}; use contracts::wager::interface::{IStrkWagerDispatcher, IStrkWagerDispatcherTrait}; pub fn OWNER() -> ContractAddress { @@ -49,7 +49,7 @@ pub fn deploy_escrow( let contract = declare("Escrow").unwrap().contract_class(); let mut calldata = array![]; - strk_dispatcher.serialize(ref calldata); + strk_dispatcher.contract_address.serialize(ref calldata); wager_address.serialize(ref calldata); let (contract_address, _) = contract.deploy(@calldata).unwrap();