Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge Train R2 #48

Open
wants to merge 94 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
94 commits
Select commit Hold shift + click to select a range
ea44176
test and fix
ethereumdegen Apr 25, 2024
a5b8909
add events
ethereumdegen Apr 29, 2024
d5273e0
event emits
ethereumdegen Apr 29, 2024
08bbbff
add fix
ethereumdegen May 6, 2024
16cf4b0
fix burnshares fn
ethereumdegen May 6, 2024
586bfd7
add gas requirement
ethereumdegen May 6, 2024
edf4ba9
add ownable init
ethereumdegen May 6, 2024
c200666
use muldiv
ethereumdegen May 6, 2024
8a40b95
fix
ethereumdegen May 6, 2024
af2b603
update collateral mgr
ethereumdegen May 6, 2024
3e0e864
incorporate liquidity threshold in get pool util ratio
ethereumdegen May 6, 2024
84ce533
remove unnecessary expansion
ethereumdegen May 6, 2024
c798d03
adding public escrwo withdraw
ethereumdegen May 6, 2024
568cb88
add requirement to prep for withdrawl
ethereumdegen May 7, 2024
a887e74
fix
ethereumdegen May 7, 2024
f357316
add tests
ethereumdegen May 7, 2024
8b52a09
apr calc fix
ethereumdegen May 7, 2024
0186a1c
flip min max
ethereumdegen May 7, 2024
6a62895
add a way for protocol owner to extract non-loan-related tokens from …
ethereumdegen May 7, 2024
f5c153b
simple fix
ethereumdegen May 7, 2024
3c56ee2
mean tick
ethereumdegen May 7, 2024
8135d3b
adding offset
ethereumdegen May 7, 2024
b675d09
use safe xfer
ethereumdegen May 7, 2024
c7359d8
reset approval to 0 once finished
ethereumdegen May 7, 2024
d81af4b
fix SCF
ethereumdegen May 7, 2024
eb76c6d
require interest in liquidation
ethereumdegen May 8, 2024
c114789
add extensions to SCF
ethereumdegen May 8, 2024
599e32b
non dynamic name for token
ethereumdegen May 9, 2024
a4bfe5c
prevent use of tokens with fee on xfer
ethereumdegen May 9, 2024
9cf624a
add max market fee
ethereumdegen May 9, 2024
eef86ac
include interest in liq
ethereumdegen May 15, 2024
f1d2069
use 1x instead of 8x
ethereumdegen May 15, 2024
afe9c9b
add
ethereumdegen May 15, 2024
04d4afa
switch fix to retrieve original loan principal amount
rbcp18 May 15, 2024
e84f973
simplify liquidate logic by moving up amount due variable fetch
rbcp18 May 15, 2024
58a4b67
fix pr
ethereumdegen May 16, 2024
fdc7417
add getter
ethereumdegen May 28, 2024
b0fd016
add fix
ethereumdegen May 28, 2024
34e55c7
Merge branch 'feature/add-dune-event-emits' into merge-train
ethereumdegen May 28, 2024
a91740b
Merge branch 'add-uniswap-fee-getter' into merge-train
ethereumdegen May 28, 2024
232e013
Merge branch 'audit-fix-11' into merge-train
ethereumdegen May 28, 2024
cfc79ef
Merge branch 'audit-fix-19' into merge-train
ethereumdegen May 28, 2024
09c5061
Merge branch 'audit-fix-24' into merge-train
ethereumdegen May 28, 2024
f7ddda4
Merge branch 'audit-fix-35' into merge-train
ethereumdegen May 28, 2024
ebb6af1
Merge branch 'audit-fix-39' into merge-train
ethereumdegen May 28, 2024
f67755e
Merge branch 'audit-fix-43' into merge-train
ethereumdegen May 28, 2024
2af9c0d
commitmentid fix check
ethereumdegen May 28, 2024
06ccbd9
Merge branch 'audit-fix-46' into merge-train
ethereumdegen May 28, 2024
a9c1e90
Merge branch 'audit-fix-70' into merge-train
ethereumdegen May 28, 2024
83570f3
Merge branch 'audit-fix/58' into merge-train
ethereumdegen May 28, 2024
9cfd963
Merge branch 'audit-fix/126' into merge-train
ethereumdegen May 29, 2024
c5a339b
fix tests
ethereumdegen May 29, 2024
b57a8ac
Merge branch 'audit-fix/62' into merge-train
ethereumdegen May 29, 2024
63fefa3
merge
ethereumdegen May 29, 2024
021d0c3
merge 72
ethereumdegen May 29, 2024
49e3a31
Merge branch 'audit-fix/109' into merge-train
ethereumdegen May 29, 2024
3c5493a
merge 109
ethereumdegen May 29, 2024
f55314f
Merge branch 'audit-fix/111' into merge-train
ethereumdegen May 29, 2024
0314b5f
Merge branch 'audit-fix/119' into merge-train
ethereumdegen May 29, 2024
cd73d2a
Merge branch 'audit-fix/283' into merge-train
ethereumdegen May 29, 2024
683c554
Merge branch 'mitigate-flash-attacking-oracle' into merge-train
ethereumdegen May 29, 2024
b079668
Merge branch 'audit-fix/239' into merge-train
ethereumdegen May 29, 2024
aec6cf7
Merge branch 'audit-fix/140' into merge-train
ethereumdegen May 29, 2024
1bb7465
merge 32
ethereumdegen May 29, 2024
1eb3381
Merge branch 'audit-fix/47' into merge-train
ethereumdegen May 29, 2024
a14d587
merge
ethereumdegen May 29, 2024
23b3ceb
add
ethereumdegen May 29, 2024
96e28c3
merge 138
ethereumdegen May 29, 2024
e167277
Merge branch 'audit-fix/269' into merge-train
ethereumdegen May 29, 2024
dbff5b5
merge 122
ethereumdegen May 29, 2024
53cf7fa
Merge branch 'audit-fix/125' into merge-train
ethereumdegen May 29, 2024
0d1ead3
special rules for first deposit
ethereumdegen May 29, 2024
9dd7cca
merge 28c
ethereumdegen May 29, 2024
c4e85ed
merge 289
ethereumdegen May 29, 2024
d000cdb
fix tests
ethereumdegen May 29, 2024
9aa04f0
Merge branch 'audit-fix/285' into merge-train
ethereumdegen May 29, 2024
c2b61c4
Merge branch 'audit-fix/243' into merge-train
ethereumdegen May 29, 2024
14afa39
revert semver check
ethereumdegen May 29, 2024
7517c8a
fi xhardhat config
ethereumdegen May 29, 2024
8ac0e10
remove interst dbl count
ethereumdegen Jun 13, 2024
1e4b8ef
trying to add safexfer
ethereumdegen Jun 13, 2024
e090f59
use GEQ
ethereumdegen Jun 17, 2024
19f79d9
add more checks properly for bid lender
ethereumdegen Jun 17, 2024
752c5fa
add fix
ethereumdegen Jun 17, 2024
8103f66
add check for contract codesize
ethereumdegen Jun 18, 2024
dc486af
Merge branch 'audit-fix/178r2' into merge-train-r2
ethereumdegen Jun 26, 2024
4cd218c
Merge branch 'audit-fix/285' into merge-train-r2
ethereumdegen Jun 26, 2024
3de4a4c
Merge branch 'audit-fix/111' into merge-train-r2
ethereumdegen Jun 26, 2024
8cd2edc
Merge branch 'audit-fix/119' into merge-train-r2
ethereumdegen Jun 26, 2024
13e1422
merge
ethereumdegen Jun 26, 2024
784d82f
merged in new fixes
ethereumdegen Jun 26, 2024
a82a64c
use basic check for claimloannft
ethereumdegen Jun 26, 2024
852257c
Merge branch 'audit-fix-11' into merge-train-r2
ethereumdegen Jun 26, 2024
769f1a3
fix merge issue
ethereumdegen Jun 26, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions packages/contracts/contracts/CollateralManager.sol
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,14 @@ contract CollateralManager is OwnableUpgradeable, ICollateralManager {
_;
}

modifier onlyProtocolOwner() {

address protocolOwner = OwnableUpgradeable(address(tellerV2)).owner();

require(_msgSender() == protocolOwner, "Sender not authorized");
_;
}

/* External Functions */

/**
Expand Down Expand Up @@ -264,6 +272,20 @@ contract CollateralManager is OwnableUpgradeable, ICollateralManager {
emit CollateralClaimed(_bidId);
}

function withdrawDustTokens(
uint256 _bidId,
address _tokenAddress,
uint256 _amount,
address _recipientAddress
) external onlyProtocolOwner {

ICollateralEscrowV1(_escrows[_bidId]).withdrawDustTokens(
_tokenAddress,
_amount,
_recipientAddress
);
}

/**
* @notice Withdraws deposited collateral from the created escrow of a bid that has been CLOSED after being defaulted.
* @param _bidId The id of the bid to withdraw collateral for.
Expand All @@ -282,6 +304,24 @@ contract CollateralManager is OwnableUpgradeable, ICollateralManager {
}
}

/**
* @notice Withdraws deposited collateral from the created escrow of a bid that has been CLOSED after being defaulted.
* @param _bidId The id of the bid to withdraw collateral for.
*/
function lenderClaimCollateralWithRecipient(uint256 _bidId, address _collateralRecipient) external onlyTellerV2 {
if (isBidCollateralBacked(_bidId)) {
BidState bidState = tellerV2.getBidState(_bidId);

require(
bidState == BidState.CLOSED,
"Loan has not been liquidated"
);

_withdraw(_bidId, _collateralRecipient);
emit CollateralClaimed(_bidId);
}
}

/**
* @notice Sends the deposited collateral to a liquidator of a bid.
* @notice Can only be called by the protocol.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -477,7 +477,7 @@ contract LenderCommitmentForwarder_G2 is
);

require(
commitmentPrincipalAccepted[bidId] <= commitment.maxPrincipal,
commitmentPrincipalAccepted[_commitmentId] <= commitment.maxPrincipal,
"Invalid loan max principal"
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -521,7 +521,7 @@ contract LenderCommitmentForwarder_U1 is
);

require(
commitmentPrincipalAccepted[bidId] <= commitment.maxPrincipal,
commitmentPrincipalAccepted[_commitmentId] <= commitment.maxPrincipal,
"Invalid loan max principal"
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,19 @@
pragma solidity ^0.8.0;

import "../TellerV2MarketForwarder_G3.sol";

import "./extensions/ExtensionsContextUpgradeable.sol";
import "../interfaces/ILenderCommitmentForwarder.sol";
import "../interfaces/ISmartCommitmentForwarder.sol";
import "./LenderCommitmentForwarder_G1.sol";

import { CommitmentCollateralType, ISmartCommitment } from "../interfaces/ISmartCommitment.sol";

contract SmartCommitmentForwarder is TellerV2MarketForwarder_G3 {

contract SmartCommitmentForwarder is
ExtensionsContextUpgradeable, //this should always be first for upgradeability
TellerV2MarketForwarder_G3,
ISmartCommitmentForwarder
{
event ExercisedSmartCommitment(
address indexed smartCommitmentAddress,
address borrower,
Expand All @@ -35,7 +41,7 @@ contract SmartCommitmentForwarder is TellerV2MarketForwarder_G3 {
* @param _loanDuration The overall duration for the loan. Must be longer than market payment cycle duration.
* @return bidId The ID of the loan that was created on TellerV2
*/
function acceptCommitmentWithRecipient(
function acceptSmartCommitmentWithRecipient(
address _smartCommitmentAddress,
uint256 _principalAmount,
uint256 _collateralAmount,
Expand Down Expand Up @@ -153,4 +159,18 @@ contract SmartCommitmentForwarder is TellerV2MarketForwarder_G3 {

revert("Unknown Collateral Type");
}



//Overrides
function _msgSender()
internal
view
virtual
override(ContextUpgradeable, ExtensionsContextUpgradeable)
returns (address sender)
{
return ExtensionsContextUpgradeable._msgSender();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ contract FlashRolloverLoan_G5 is IFlashLoanSimpleReceiver, IFlashRolloverLoan_G4
);
}


// Call 'Flash' on the vault to borrow funds and call tellerV2FlashCallback
// This ultimately calls executeOperation
IPool(POOL()).flashLoanSimple(
Expand All @@ -132,6 +133,14 @@ contract FlashRolloverLoan_G5 is IFlashLoanSimpleReceiver, IFlashRolloverLoan_G4
),
0 //referral code
);


///have to set approval to zero AFTER we repay the flash loan to aave
IERC20Upgradeable(lendingToken).approve(
address(POOL()),
0
);

}

/**
Expand Down Expand Up @@ -246,6 +255,11 @@ contract FlashRolloverLoan_G5 is IFlashLoanSimpleReceiver, IFlashRolloverLoan_G4
);
TELLER_V2.repayLoanFull(_bidId);

IERC20Upgradeable(_principalToken).approve(
address(TELLER_V2),
0
);

uint256 fundsAfterRepayment = IERC20Upgradeable(_principalToken)
.balanceOf(address(this));

Expand Down
Loading
Loading