mirror of
https://github.com/Instadapp/smart-contract.git
synced 2024-07-29 22:08:07 +00:00
repayBorrowBehalf
This commit is contained in:
parent
f7432174a0
commit
43738c572f
|
@ -144,6 +144,7 @@ contract CompoundResolver is Helpers {
|
||||||
event LogRedeem(address erc20, address cErc20, uint tokenAmt, address owner);
|
event LogRedeem(address erc20, address cErc20, uint tokenAmt, address owner);
|
||||||
event LogBorrow(address erc20, address cErc20, uint tokenAmt, address owner);
|
event LogBorrow(address erc20, address cErc20, uint tokenAmt, address owner);
|
||||||
event LogRepay(address erc20, address cErc20, uint tokenAmt, address owner);
|
event LogRepay(address erc20, address cErc20, uint tokenAmt, address owner);
|
||||||
|
event LogRepayBehalf(address borrower, address erc20, address cErc20, uint tokenAmt, address owner);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dev Deposit ETH/ERC20 and mint Compound Tokens
|
* @dev Deposit ETH/ERC20 and mint Compound Tokens
|
||||||
|
@ -286,13 +287,14 @@ contract CompoundResolver is Helpers {
|
||||||
if (erc20 == getAddressETH()) {
|
if (erc20 == getAddressETH()) {
|
||||||
CETHInterface cToken = CETHInterface(cErc20);
|
CETHInterface cToken = CETHInterface(cErc20);
|
||||||
uint toRepay = msg.value;
|
uint toRepay = msg.value;
|
||||||
uint borrows = cToken.borrowBalanceCurrent(address(this));
|
uint borrows = cToken.borrowBalanceCurrent(borrower);
|
||||||
if (toRepay > borrows) {
|
if (toRepay > borrows) {
|
||||||
toRepay = borrows;
|
toRepay = borrows;
|
||||||
msg.sender.transfer(msg.value - toRepay);
|
msg.sender.transfer(msg.value - toRepay);
|
||||||
}
|
}
|
||||||
cToken.repayBorrowBehalf.value(toRepay)(borrower);
|
cToken.repayBorrowBehalf.value(toRepay)(borrower);
|
||||||
emit LogRepay(
|
emit LogRepayBehalf(
|
||||||
|
borrower,
|
||||||
erc20,
|
erc20,
|
||||||
cErc20,
|
cErc20,
|
||||||
toRepay,
|
toRepay,
|
||||||
|
@ -302,7 +304,7 @@ contract CompoundResolver is Helpers {
|
||||||
CERC20Interface cToken = CERC20Interface(cErc20);
|
CERC20Interface cToken = CERC20Interface(cErc20);
|
||||||
ERC20Interface token = ERC20Interface(erc20);
|
ERC20Interface token = ERC20Interface(erc20);
|
||||||
uint toRepay = token.balanceOf(msg.sender);
|
uint toRepay = token.balanceOf(msg.sender);
|
||||||
uint borrows = cToken.borrowBalanceCurrent(address(this));
|
uint borrows = cToken.borrowBalanceCurrent(borrower);
|
||||||
if (toRepay > tokenAmt) {
|
if (toRepay > tokenAmt) {
|
||||||
toRepay = tokenAmt;
|
toRepay = tokenAmt;
|
||||||
}
|
}
|
||||||
|
@ -312,7 +314,8 @@ 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 LogRepayBehalf(
|
||||||
|
borrower,
|
||||||
erc20,
|
erc20,
|
||||||
cErc20,
|
cErc20,
|
||||||
toRepay,
|
toRepay,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user