mirror of
https://github.com/Instadapp/smart-contract.git
synced 2024-07-29 22:08:07 +00:00
fees implemented
This commit is contained in:
parent
e016eefce0
commit
34ba587b8b
|
@ -107,6 +107,11 @@ contract DSMath {
|
||||||
z = add(mul(x, WAD), y / 2) / y;
|
z = add(mul(x, WAD), y / 2) / y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function sub(uint a, uint b) internal pure returns (uint c) {
|
||||||
|
require(b <= a, "SafeMath: subtraction overflow");
|
||||||
|
c = a - b;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -121,6 +126,9 @@ contract Helper is DSMath {
|
||||||
address public cEth = 0x4Ddc2D193948926D02f9B1fE9e1daa0718270ED5;
|
address public cEth = 0x4Ddc2D193948926D02f9B1fE9e1daa0718270ED5;
|
||||||
address public cDai = 0xF5DCe57282A584D2746FaF1593d3121Fcac444dC;
|
address public cDai = 0xF5DCe57282A584D2746FaF1593d3121Fcac444dC;
|
||||||
|
|
||||||
|
address public feeOne = 0xd8db02A498E9AFbf4A32BC006DC1940495b4e592;
|
||||||
|
address public feeTwo = 0xa7615CD307F323172331865181DC8b80a2834324;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dev setting allowance to compound for the "user proxy" if required
|
* @dev setting allowance to compound for the "user proxy" if required
|
||||||
*/
|
*/
|
||||||
|
@ -403,6 +411,7 @@ contract BridgeResolver is MakerResolver {
|
||||||
contract LiquidityProvider is BridgeResolver {
|
contract LiquidityProvider is BridgeResolver {
|
||||||
|
|
||||||
mapping (address => uint) public deposits; // amount of CDAI deposits
|
mapping (address => uint) public deposits; // amount of CDAI deposits
|
||||||
|
uint public totalDeposits;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dev Deposit DAI for liquidity
|
* @dev Deposit DAI for liquidity
|
||||||
|
@ -415,6 +424,7 @@ contract LiquidityProvider is BridgeResolver {
|
||||||
uint cDaiAmt = wdiv(amt, exchangeRate);
|
uint cDaiAmt = wdiv(amt, exchangeRate);
|
||||||
cDaiAmt = wmul(cDaiAmt, exchangeRate) <= amt ? cDaiAmt : cDaiAmt - 1;
|
cDaiAmt = wmul(cDaiAmt, exchangeRate) <= amt ? cDaiAmt : cDaiAmt - 1;
|
||||||
deposits[msg.sender] += cDaiAmt;
|
deposits[msg.sender] += cDaiAmt;
|
||||||
|
totalDeposits += cDaiAmt;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -433,6 +443,7 @@ contract LiquidityProvider is BridgeResolver {
|
||||||
require(cToken.redeem(withdrawAmt) == 0, "something went wrong");
|
require(cToken.redeem(withdrawAmt) == 0, "something went wrong");
|
||||||
require(ERC20Interface(daiAddr).transfer(msg.sender, daiAmt), "Dai Transfer failed");
|
require(ERC20Interface(daiAddr).transfer(msg.sender, daiAmt), "Dai Transfer failed");
|
||||||
deposits[msg.sender] -= withdrawAmt;
|
deposits[msg.sender] -= withdrawAmt;
|
||||||
|
totalDeposits -= withdrawAmt;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -442,6 +453,7 @@ contract LiquidityProvider is BridgeResolver {
|
||||||
CTokenInterface cToken = CTokenInterface(cDai);
|
CTokenInterface cToken = CTokenInterface(cDai);
|
||||||
require(cToken.transferFrom(msg.sender, address(this), amt) == true, "Nothing to deposit");
|
require(cToken.transferFrom(msg.sender, address(this), amt) == true, "Nothing to deposit");
|
||||||
deposits[msg.sender] += amt;
|
deposits[msg.sender] += amt;
|
||||||
|
totalDeposits += amt;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -455,6 +467,21 @@ contract LiquidityProvider is BridgeResolver {
|
||||||
}
|
}
|
||||||
require(CTokenInterface(cDai).transfer(msg.sender, withdrawAmt), "Dai Transfer failed");
|
require(CTokenInterface(cDai).transfer(msg.sender, withdrawAmt), "Dai Transfer failed");
|
||||||
deposits[msg.sender] -= withdrawAmt;
|
deposits[msg.sender] -= withdrawAmt;
|
||||||
|
totalDeposits -= withdrawAmt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* collecting fees generated overtime
|
||||||
|
*/
|
||||||
|
function withdrawFeesInCDai(uint num) public {
|
||||||
|
CTokenInterface cToken = CTokenInterface(cDai);
|
||||||
|
uint cDaiBal = cToken.balanceOf(address(this));
|
||||||
|
uint withdrawAmt = sub(cDaiBal, totalDeposits);
|
||||||
|
if (num == 0) {
|
||||||
|
require(cToken.transfer(feeOne, withdrawAmt), "Dai Transfer failed");
|
||||||
|
} else {
|
||||||
|
require(cToken.transfer(feeTwo, withdrawAmt), "Dai Transfer failed");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user