mirror of
https://github.com/Instadapp/smart-contract.git
synced 2024-07-29 22:08:07 +00:00
contract bug fixing
This commit is contained in:
parent
28060abb2d
commit
a392dfcfd1
|
@ -183,7 +183,12 @@ contract CompoundResolver is Helpers {
|
||||||
function redeemUnderlying(address erc20, address cErc20, uint tokenAmt) external {
|
function redeemUnderlying(address erc20, address cErc20, uint tokenAmt) external {
|
||||||
CTokenInterface cToken = CTokenInterface(cErc20);
|
CTokenInterface cToken = CTokenInterface(cErc20);
|
||||||
setApproval(cErc20, 10**50, cErc20);
|
setApproval(cErc20, 10**50, cErc20);
|
||||||
require(cToken.redeemUnderlying(tokenAmt) == 0, "something went wrong");
|
uint toBurn = cToken.balanceOf(address(this));
|
||||||
|
uint tokenToReturn = wmul(toBurn, cToken.exchangeRateCurrent());
|
||||||
|
if (tokenToReturn > tokenAmt) {
|
||||||
|
tokenToReturn = tokenAmt;
|
||||||
|
}
|
||||||
|
require(cToken.redeemUnderlying(tokenToReturn) == 0, "something went wrong");
|
||||||
transferToken(erc20);
|
transferToken(erc20);
|
||||||
emit LogRedeem(
|
emit LogRedeem(
|
||||||
erc20,
|
erc20,
|
||||||
|
@ -232,7 +237,13 @@ contract CompoundResolver is Helpers {
|
||||||
toRepay = borrows;
|
toRepay = borrows;
|
||||||
msg.sender.transfer(msg.value - toRepay);
|
msg.sender.transfer(msg.value - toRepay);
|
||||||
}
|
}
|
||||||
cToken.repayBorrow.value(msg.value)();
|
cToken.repayBorrow.value(toRepay)();
|
||||||
|
emit LogRepay(
|
||||||
|
erc20,
|
||||||
|
cErc20,
|
||||||
|
toRepay,
|
||||||
|
address(this)
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
CERC20Interface cToken = CERC20Interface(cErc20);
|
CERC20Interface cToken = CERC20Interface(cErc20);
|
||||||
ERC20Interface token = ERC20Interface(erc20);
|
ERC20Interface token = ERC20Interface(erc20);
|
||||||
|
@ -247,14 +258,14 @@ contract CompoundResolver is Helpers {
|
||||||
setApproval(erc20, toRepay, cErc20);
|
setApproval(erc20, toRepay, cErc20);
|
||||||
token.transferFrom(msg.sender, address(this), toRepay);
|
token.transferFrom(msg.sender, address(this), toRepay);
|
||||||
require(cToken.repayBorrow(toRepay) == 0, "transfer approved?");
|
require(cToken.repayBorrow(toRepay) == 0, "transfer approved?");
|
||||||
}
|
|
||||||
emit LogRepay(
|
emit LogRepay(
|
||||||
erc20,
|
erc20,
|
||||||
cErc20,
|
cErc20,
|
||||||
tokenAmt,
|
toRepay,
|
||||||
address(this)
|
address(this)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dev Pay Debt for someone else
|
* @dev Pay Debt for someone else
|
||||||
|
@ -274,7 +285,13 @@ contract CompoundResolver is Helpers {
|
||||||
toRepay = borrows;
|
toRepay = borrows;
|
||||||
msg.sender.transfer(msg.value - toRepay);
|
msg.sender.transfer(msg.value - toRepay);
|
||||||
}
|
}
|
||||||
cToken.repayBorrowBehalf.value(msg.value)(borrower);
|
cToken.repayBorrowBehalf.value(toRepay)(borrower);
|
||||||
|
emit LogRepay(
|
||||||
|
erc20,
|
||||||
|
cErc20,
|
||||||
|
toRepay,
|
||||||
|
address(this)
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
CERC20Interface cToken = CERC20Interface(cErc20);
|
CERC20Interface cToken = CERC20Interface(cErc20);
|
||||||
ERC20Interface token = ERC20Interface(erc20);
|
ERC20Interface token = ERC20Interface(erc20);
|
||||||
|
@ -289,14 +306,14 @@ contract CompoundResolver is Helpers {
|
||||||
setApproval(erc20, toRepay, cErc20);
|
setApproval(erc20, toRepay, cErc20);
|
||||||
token.transferFrom(msg.sender, address(this), toRepay);
|
token.transferFrom(msg.sender, address(this), toRepay);
|
||||||
require(cToken.repayBorrowBehalf(borrower, tokenAmt) == 0, "transfer approved?");
|
require(cToken.repayBorrowBehalf(borrower, tokenAmt) == 0, "transfer approved?");
|
||||||
}
|
|
||||||
emit LogRepay(
|
emit LogRepay(
|
||||||
erc20,
|
erc20,
|
||||||
cErc20,
|
cErc20,
|
||||||
tokenAmt,
|
toRepay,
|
||||||
address(this)
|
address(this)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user