function test_user1GetWayMoreInReturn() public {
vm.prank(owner);
briVault.setCountry(countries);
uint256 deposit = 0.00023 ether;
vm.startPrank(user1);
mockToken.approve(address(briVault), deposit);
uint256 stakedAsset1 = briVault.deposit(deposit, user1);
briVault.joinEvent(0);
mockToken.transfer(address(briVault), deposit);
uint256 briVaultBalance2 = mockToken.balanceOf(address(briVault));
vm.stopPrank();
vm.startPrank(user3);
mockToken.approve(address(briVault), deposit);
uint256 stakedAsset3 = briVault.deposit(deposit, user3);
briVault.joinEvent(1);
vm.stopPrank();
vm.startPrank(user2);
mockToken.approve(address(briVault), deposit);
uint256 stakedAsset2 = briVault.deposit(deposit, user2);
briVault.joinEvent(0);
vm.stopPrank();
vm.warp(eventEndDate +1);
vm.prank(owner);
briVault.setWinner(0);
uint256 user1WinBalance = mockToken.balanceOf(user1);
uint256 user2WinBalance = mockToken.balanceOf(user2);
console.log("user1 final balance before withdraw:", user1WinBalance);
console.log("user2 final balance before withdraw:", user2WinBalance);
vm.prank(user1);
briVault.withdraw();
vm.prank(user2);
briVault.withdraw();
uint256 user1FinalBalance = mockToken.balanceOf(user1);
uint256 user2FinalBalance = mockToken.balanceOf(user2);
console.log("user1 final balance after withdraw:", user1FinalBalance);
console.log("user2 final balance after withdraw:", user2FinalBalance);
console.log("user1 profit:", user1FinalBalance - user1WinBalance);
console.log("user2 profit:", user2FinalBalance - user2WinBalance);
uint256 user1TotalInvestment = deposit * 2;
uint256 user2TotalInvestment = deposit;
uint256 user1NetProfit = user1FinalBalance - (20 ether - user1TotalInvestment);
uint256 user2NetProfit = user2FinalBalance - (20 ether - user2TotalInvestment);
console.log("user1 net profit (after accounting for investment):", user1NetProfit);
console.log("user2 net profit (after accounting for investment):", user2NetProfit);
assert(mockToken.balanceOf(user1) - user1WinBalance > mockToken.balanceOf(user2) - user2WinBalance);
}
[PASS] test_user1GetWayMoreInReturn() (gas: 2057286)
Logs:
user1 final balance before withdraw: 19999540000000000000
user2 final balance before withdraw: 19999770000000000000
user1 final balance after withdraw: 20000147964730639732
user2 final balance after withdraw: 20000071685269360267
user1 profit: 607964730639732
user2 profit: 301685269360267
user1 net profit (after accounting for investment): 607964730639732
user2 net profit (after accounting for investment): 301685269360267
test_withoutDirectTransfer() (gas: 2052907)
Logs:
user1 final balance before withdraw: 19999540000000000000
user2 final balance before withdraw: 19999770000000000000
user1 final balance after withdraw: 20000144133333333333
user2 final balance after withdraw: 20000072066666666666
user1 profit: 604133333333333
user2 profit: 302066666666666
user1 net profit (after accounting for investment): 604133333333333
user2 net profit (after accounting for investment): 302066666666666