mirror of
https://github.com/Instadapp/InstaContract.git
synced 2024-07-29 22:47:45 +00:00
Refactored and simplified protocol codes.
This commit is contained in:
parent
20404b567b
commit
3ac321bace
|
@ -1,142 +1,147 @@
|
||||||
// pragma solidity ^0.4.24;
|
pragma solidity ^0.4.24;
|
||||||
|
|
||||||
// import "openzeppelin-solidity/contracts/math/SafeMath.sol";
|
import "openzeppelin-solidity/contracts/math/SafeMath.sol";
|
||||||
// import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol";
|
import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol";
|
||||||
|
|
||||||
|
|
||||||
// interface AddressRegistry {
|
interface AddressRegistry {
|
||||||
// function getAddr(string name) external view returns(address);
|
function getAddr(string name) external view returns(address);
|
||||||
// function isApprovedResolver(address user) external view returns(bool);
|
}
|
||||||
// }
|
|
||||||
|
|
||||||
// interface Kyber {
|
interface Kyber {
|
||||||
// function trade(
|
function trade(
|
||||||
// address src,
|
address src,
|
||||||
// uint srcAmount,
|
uint srcAmount,
|
||||||
// address dest,
|
address dest,
|
||||||
// address destAddress,
|
address destAddress,
|
||||||
// uint maxDestAmount,
|
uint maxDestAmount,
|
||||||
// uint minConversionRate,
|
uint minConversionRate,
|
||||||
// address walletId
|
address walletId
|
||||||
// ) external payable returns (uint);
|
) external payable returns (uint);
|
||||||
// }
|
}
|
||||||
|
|
||||||
|
|
||||||
// contract Registry {
|
contract Registry {
|
||||||
// address public addressRegistry;
|
|
||||||
// modifier onlyAdmin() {
|
address public addressRegistry;
|
||||||
// require(
|
modifier onlyAdmin() {
|
||||||
// msg.sender == getAddress("admin"),
|
require(
|
||||||
// "Permission Denied"
|
msg.sender == getAddress("admin"),
|
||||||
// );
|
"Permission Denied"
|
||||||
// _;
|
);
|
||||||
// }
|
_;
|
||||||
// function getAddress(string name) internal view returns(address addr) {
|
}
|
||||||
// AddressRegistry addrReg = AddressRegistry(addressRegistry);
|
|
||||||
// return addrReg.getAddr(name);
|
function getAddress(string name) internal view returns(address addr) {
|
||||||
// }
|
AddressRegistry addrReg = AddressRegistry(addressRegistry);
|
||||||
// }
|
return addrReg.getAddr(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// contract Trade is Registry {
|
contract Trade is Registry {
|
||||||
|
|
||||||
// event KyberTrade(
|
uint public fees;
|
||||||
// address src,
|
|
||||||
// uint srcAmt,
|
|
||||||
// address dest,
|
|
||||||
// uint destAmt,
|
|
||||||
// address beneficiary,
|
|
||||||
// uint fees,
|
|
||||||
// uint slipRate,
|
|
||||||
// address affiliate
|
|
||||||
// );
|
|
||||||
|
|
||||||
// // ropsten network
|
event KyberTrade(
|
||||||
// address public kyberAddr = 0x818E6FECD516Ecc3849DAf6845e3EC868087B755;
|
address src,
|
||||||
// address public eth = 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee;
|
uint srcAmt,
|
||||||
|
address dest,
|
||||||
|
uint destAmt,
|
||||||
|
address beneficiary,
|
||||||
|
uint fees,
|
||||||
|
uint slipRate,
|
||||||
|
address affiliate
|
||||||
|
);
|
||||||
|
|
||||||
// function executeTrade(
|
// ropsten network
|
||||||
// address trader,
|
address public kyberAddr = 0x818E6FECD516Ecc3849DAf6845e3EC868087B755;
|
||||||
// address src,
|
address public eth = 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee;
|
||||||
// address dest,
|
|
||||||
// uint srcAmt,
|
|
||||||
// uint slipRate
|
|
||||||
// ) public payable onlyUserOrResolver(trader) returns (uint destAmt)
|
|
||||||
// {
|
|
||||||
|
|
||||||
// fetchToken(trader, src, srcAmt);
|
function executeTrade(
|
||||||
// uint fees = deductFees(src, srcAmt);
|
address src,
|
||||||
|
address dest,
|
||||||
|
uint srcAmt,
|
||||||
|
uint slipRate
|
||||||
|
) public payable returns (uint destAmt)
|
||||||
|
{
|
||||||
|
|
||||||
// Kyber kyberFunctions = Kyber(kyberAddr);
|
fetchToken(src, srcAmt);
|
||||||
// destAmt = kyberFunctions.trade.value(msg.value)(
|
uint feecut = deductFees(src, srcAmt);
|
||||||
// src,
|
|
||||||
// srcAmt - fees,
|
|
||||||
// dest,
|
|
||||||
// trader,
|
|
||||||
// 2**256 - 1,
|
|
||||||
// slipRate,
|
|
||||||
// getAddress("admin")
|
|
||||||
// );
|
|
||||||
|
|
||||||
// emit KyberTrade(
|
Kyber kyberFunctions = Kyber(kyberAddr);
|
||||||
// src,
|
destAmt = kyberFunctions.trade.value(msg.value)(
|
||||||
// srcAmt,
|
src,
|
||||||
// dest,
|
srcAmt - feecut,
|
||||||
// destAmt,
|
dest,
|
||||||
// trader,
|
msg.sender,
|
||||||
// fees,
|
2**256 - 1,
|
||||||
// slipRate,
|
slipRate,
|
||||||
// getAddress("admin")
|
getAddress("admin")
|
||||||
// );
|
);
|
||||||
|
|
||||||
// }
|
emit KyberTrade(
|
||||||
|
src,
|
||||||
|
srcAmt,
|
||||||
|
dest,
|
||||||
|
destAmt,
|
||||||
|
msg.sender,
|
||||||
|
feecut,
|
||||||
|
slipRate,
|
||||||
|
getAddress("admin")
|
||||||
|
);
|
||||||
|
|
||||||
// function fetchToken(address trader, address src, uint srcAmt) internal {
|
}
|
||||||
// if (src != eth) {
|
|
||||||
// IERC20 tokenFunctions = IERC20(src);
|
|
||||||
// tokenFunctions.transferFrom(trader, address(this), srcAmt);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// function deductFees(address src, uint volume) internal returns(uint fees) {
|
function fetchToken(address src, uint srcAmt) internal {
|
||||||
// Resolver moatRes = Resolver(getAddress("resolver"));
|
if (src != eth) {
|
||||||
// fees = moatRes.fees();
|
IERC20 tokenFunctions = IERC20(src);
|
||||||
// if (fees > 0) {
|
tokenFunctions.transferFrom(msg.sender, address(this), srcAmt);
|
||||||
// fees = volume / fees;
|
}
|
||||||
// if (src == eth) {
|
}
|
||||||
// getAddress("admin").transfer(fees);
|
|
||||||
// } else {
|
|
||||||
// IERC20 tokenFunctions = IERC20(src);
|
|
||||||
// tokenFunctions.transfer(getAddress("admin"), fees);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// function allowKyber(address[] tokenArr) public {
|
function deductFees(address src, uint volume) internal returns(uint brokerage) {
|
||||||
// for (uint i = 0; i < tokenArr.length; i++) {
|
if (fees > 0) {
|
||||||
// IERC20 tokenFunctions = IERC20(tokenArr[i]);
|
brokerage = volume / fees;
|
||||||
// tokenFunctions.approve(getAddress("kyber"), 2**256 - 1);
|
if (src == eth) {
|
||||||
// }
|
getAddress("admin").transfer(brokerage);
|
||||||
// }
|
} else {
|
||||||
|
IERC20 tokenFunctions = IERC20(src);
|
||||||
|
tokenFunctions.transfer(getAddress("admin"), brokerage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// }
|
function allowKyber(address[] tokenArr) public {
|
||||||
|
for (uint i = 0; i < tokenArr.length; i++) {
|
||||||
|
IERC20 tokenFunctions = IERC20(tokenArr[i]);
|
||||||
|
tokenFunctions.approve(getAddress("kyber"), 2**256 - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// contract MoatKyber is Trade {
|
contract MoatKyber is Trade {
|
||||||
|
|
||||||
// constructor(address rAddr) public {
|
constructor(address rAddr) public {
|
||||||
// addressRegistry = rAddr;
|
addressRegistry = rAddr;
|
||||||
// }
|
}
|
||||||
|
|
||||||
// function () public payable {}
|
function () public payable {}
|
||||||
|
|
||||||
// function collectAsset(address tokenAddress, uint amount) public onlyAdmin {
|
function collectAsset(address tokenAddress, uint amount) public onlyAdmin {
|
||||||
// if (tokenAddress == eth) {
|
if (tokenAddress == eth) {
|
||||||
// msg.sender.transfer(amount);
|
msg.sender.transfer(amount);
|
||||||
// } else {
|
} else {
|
||||||
// IERC20 tokenFunctions = IERC20(tokenAddress);
|
IERC20 tokenFunctions = IERC20(tokenAddress);
|
||||||
// tokenFunctions.transfer(msg.sender, amount);
|
tokenFunctions.transfer(msg.sender, amount);
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
|
|
||||||
// }
|
function setFees(uint cut) public onlyAdmin { // 200 means 0.5%
|
||||||
|
fees = cut;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -94,10 +94,10 @@ contract IssueLoan is GlobalVar {
|
||||||
function drawDAI(uint daiDraw) public {
|
function drawDAI(uint daiDraw) public {
|
||||||
require(!freezed, "Operation Disabled");
|
require(!freezed, "Operation Disabled");
|
||||||
loanMaster.draw(cdps[msg.sender], daiDraw);
|
loanMaster.draw(cdps[msg.sender], daiDraw);
|
||||||
uint fees = deductFees(daiDraw);
|
uint feecut = deductFees(daiDraw);
|
||||||
IERC20 tokenFunctions = IERC20(dai);
|
IERC20 tokenFunctions = IERC20(dai);
|
||||||
tokenFunctions.transfer(msg.sender, daiDraw - fees);
|
tokenFunctions.transfer(msg.sender, daiDraw - feecut);
|
||||||
emit LoanedDAI(msg.sender, daiDraw, fees);
|
emit LoanedDAI(msg.sender, daiDraw, feecut);
|
||||||
}
|
}
|
||||||
|
|
||||||
function deductFees(uint volume) internal returns(uint brokerage) {
|
function deductFees(uint volume) internal returns(uint brokerage) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user