mirror of
https://github.com/Instadapp/InstaContract.git
synced 2024-07-29 22:47:45 +00:00
Added return values in borrow functions and affiliation mechanism.
This commit is contained in:
parent
8682fc9092
commit
9433a394c6
|
|
@ -106,7 +106,7 @@ contract GlobalVar is Registry {
|
||||||
contract IssueLoan is GlobalVar {
|
contract IssueLoan is GlobalVar {
|
||||||
|
|
||||||
event LockedETH(address borrower, uint lockETH, uint lockPETH, address lockedBy);
|
event LockedETH(address borrower, uint lockETH, uint lockPETH, address lockedBy);
|
||||||
event LoanedDAI(address borrower, uint loanDAI);
|
event LoanedDAI(address borrower, uint loanDAI, address partner);
|
||||||
event NewCDP(address borrower, bytes32 cdpBytes);
|
event NewCDP(address borrower, bytes32 cdpBytes);
|
||||||
|
|
||||||
function pethPEReth(uint ethNum) public view returns (uint rPETH) {
|
function pethPEReth(uint ethNum) public view returns (uint rPETH) {
|
||||||
|
|
@ -114,17 +114,18 @@ contract IssueLoan is GlobalVar {
|
||||||
rPETH = (ethNum.mul(10 ** 27)).div(loanMaster.per());
|
rPETH = (ethNum.mul(10 ** 27)).div(loanMaster.per());
|
||||||
}
|
}
|
||||||
|
|
||||||
function borrow(uint daiDraw) public payable {
|
function borrow(uint daiDraw, address partner) public payable returns (bytes32 cdpBytesID) {
|
||||||
if (msg.value > 0) {lockETH(msg.sender);}
|
if (msg.value > 0) {cdpBytesID = lockETH(msg.sender);}
|
||||||
if (daiDraw > 0) {drawDAI(daiDraw);}
|
if (daiDraw > 0) {drawDAI(daiDraw, partner);}
|
||||||
}
|
}
|
||||||
|
|
||||||
function lockETH(address borrower) public payable {
|
function lockETH(address borrower) public payable returns (bytes32 cdpBytesID) {
|
||||||
MakerCDP loanMaster = MakerCDP(cdpAddr);
|
MakerCDP loanMaster = MakerCDP(cdpAddr);
|
||||||
if (cdps[borrower] == blankCDP) {
|
if (cdps[borrower] == blankCDP) {
|
||||||
require(msg.sender == borrower, "Creating CDP for others is not permitted at the moment.");
|
require(msg.sender == borrower, "Creating CDP for others is not permitted at the moment.");
|
||||||
cdps[msg.sender] = loanMaster.open();
|
cdpBytesID = loanMaster.open();
|
||||||
emit NewCDP(msg.sender, cdps[msg.sender]);
|
cdps[msg.sender] = cdpBytesID;
|
||||||
|
emit NewCDP(msg.sender, cdpBytesID);
|
||||||
}
|
}
|
||||||
WETHFace wethTkn = WETHFace(getAddress("weth"));
|
WETHFace wethTkn = WETHFace(getAddress("weth"));
|
||||||
wethTkn.deposit.value(msg.value)(); // ETH to WETH
|
wethTkn.deposit.value(msg.value)(); // ETH to WETH
|
||||||
|
|
@ -136,13 +137,13 @@ contract IssueLoan is GlobalVar {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function drawDAI(uint daiDraw) public {
|
function drawDAI(uint daiDraw, address partner) public {
|
||||||
require(!freezed, "Operation Disabled");
|
require(!freezed, "Operation Disabled");
|
||||||
MakerCDP loanMaster = MakerCDP(cdpAddr);
|
MakerCDP loanMaster = MakerCDP(cdpAddr);
|
||||||
loanMaster.draw(cdps[msg.sender], daiDraw);
|
loanMaster.draw(cdps[msg.sender], daiDraw);
|
||||||
IERC20 daiTkn = IERC20(getAddress("dai"));
|
IERC20 daiTkn = IERC20(getAddress("dai"));
|
||||||
daiTkn.transfer(msg.sender, daiDraw);
|
daiTkn.transfer(msg.sender, daiDraw);
|
||||||
emit LoanedDAI(msg.sender, daiDraw);
|
emit LoanedDAI(msg.sender, daiDraw, partner);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -153,12 +154,12 @@ contract RepayLoan is IssueLoan {
|
||||||
event WipedDAI(address borrower, uint daiWipe, uint mkrCharged, address wipedBy);
|
event WipedDAI(address borrower, uint daiWipe, uint mkrCharged, address wipedBy);
|
||||||
event UnlockedETH(address borrower, uint ethFree);
|
event UnlockedETH(address borrower, uint ethFree);
|
||||||
|
|
||||||
function repay(uint daiWipe, uint ethFree) public payable {
|
function repay(uint daiWipe, uint ethFree) public payable returns (uint mkrCharged) {
|
||||||
if (daiWipe > 0) {wipeDAI(daiWipe, msg.sender);}
|
if (daiWipe > 0) {mkrCharged = wipeDAI(daiWipe, msg.sender);}
|
||||||
if (ethFree > 0) {unlockETH(ethFree);}
|
if (ethFree > 0) {unlockETH(ethFree);}
|
||||||
}
|
}
|
||||||
|
|
||||||
function wipeDAI(uint daiWipe, address borrower) public payable {
|
function wipeDAI(uint daiWipe, address borrower) public payable returns (uint mkrCharged) {
|
||||||
address dai = getAddress("dai");
|
address dai = getAddress("dai");
|
||||||
address mkr = getAddress("mkr");
|
address mkr = getAddress("mkr");
|
||||||
address eth = getAddress("eth");
|
address eth = getAddress("eth");
|
||||||
|
|
@ -170,7 +171,7 @@ contract RepayLoan is IssueLoan {
|
||||||
daiTkn.transferFrom(msg.sender, address(this), daiWipe); // get DAI to pay the debt
|
daiTkn.transferFrom(msg.sender, address(this), daiWipe); // get DAI to pay the debt
|
||||||
MakerCDP loanMaster = MakerCDP(cdpAddr);
|
MakerCDP loanMaster = MakerCDP(cdpAddr);
|
||||||
loanMaster.wipe(cdps[borrower], daiWipe); // wipe DAI
|
loanMaster.wipe(cdps[borrower], daiWipe); // wipe DAI
|
||||||
uint mkrCharged = contractMKR - mkrTkn.balanceOf(address(this)); // MKR fee = before wiping bal - after wiping bal
|
mkrCharged = contractMKR - mkrTkn.balanceOf(address(this)); // MKR fee = before wiping bal - after wiping bal
|
||||||
|
|
||||||
// claiming paid MKR back
|
// claiming paid MKR back
|
||||||
if (msg.value > 0) { // Interacting with Kyber to swap ETH with MKR
|
if (msg.value > 0) { // Interacting with Kyber to swap ETH with MKR
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user