Skip to content

Commit

Permalink
fix: addCollateral fix
Browse files Browse the repository at this point in the history
  • Loading branch information
0xmikko committed Sep 14, 2023
1 parent c05b7b0 commit c15d7f3
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 18 deletions.
17 changes: 5 additions & 12 deletions contracts/credit/CreditFacade.sol
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ contract CreditFacade is ICreditFacade, ReentrancyGuard {
uint256 internal totalBorrowedInBlock;

/// @dev Contract version
uint256 public constant override version = 2_10;
uint256 public constant override version = 2_20;

/// @dev Restricts actions for users with opened credit accounts only
modifier creditConfiguratorOnly() {
Expand Down Expand Up @@ -996,23 +996,16 @@ contract CreditFacade is ICreditFacade, ReentrancyGuard {
//
// ADD COLLATERAL
//
else if (method == ICreditFacade.addCollateral.selector) {
else if (method == ICreditFacadeExtended.addCollateral.selector) {
// Parses parameters from calldata
(address onBehalfOf, address token, uint256 amount) = abi.decode(
(address token, uint256 amount) = abi.decode(
callData[4:],
(address, address, uint256)
(address, uint256)
); // F:[FA-26, 27]

// In case onBehalfOf isn't the owner of the currently processed account,
// retrieves onBehalfOf's account
addCollateral(
onBehalfOf,
onBehalfOf == borrower
? creditAccount
: creditManager.getCreditAccountOrRevert(onBehalfOf),
token,
amount
); // F:[FA-26, 27]
addCollateral(msg.sender, creditAccount, token, amount); // F:[FA-26, 27]
}
//
// INCREASE DEBT
Expand Down
7 changes: 1 addition & 6 deletions contracts/interfaces/ICreditFacade.sol
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,9 @@ interface ICreditFacadeExtended {
function disableToken(address token) external;

/// @dev Adds collateral to borrower's credit account
/// @param onBehalfOf Address of the borrower whose account is funded
/// @param token Address of a collateral token
/// @param amount Amount to add
function addCollateral(
address onBehalfOf,
address token,
uint256 amount
) external payable;
function addCollateral(address token, uint256 amount) external payable;

/// @dev Increases debt for msg.sender's Credit Account
/// - Borrows the requested amount from the pool
Expand Down
71 changes: 71 additions & 0 deletions contracts/test/credit/CreditFacadeGas.t.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
// SPDX-License-Identifier: UNLICENSED
// Gearbox Protocol. Generalized leverage for DeFi protocols
// (c) Gearbox Holdings, 2022
pragma solidity ^0.8.10;

import { IDataCompressor } from "../../interfaces/IDataCompressor.sol";

import { ICreditFacade, ICreditFacadeExtended } from "../../interfaces/ICreditFacade.sol";
import { ICreditManagerV2, ICreditManagerV2Events, ClosureAction } from "../../interfaces/ICreditManagerV2.sol";
import { ICreditFacadeEvents, ICreditFacadeExceptions } from "../../interfaces/ICreditFacade.sol";
import { IDegenNFT, IDegenNFTExceptions } from "../../interfaces/IDegenNFT.sol";
import { IBlacklistHelper } from "../../interfaces/IBlacklistHelper.sol";

// DATA
import { MultiCall, MultiCallOps } from "../../libraries/MultiCall.sol";
import { Balance } from "../../libraries/Balances.sol";

import { CreditFacadeMulticaller, CreditFacadeCalls } from "../../multicall/CreditFacadeCalls.sol";

// CONSTANTS

import { LEVERAGE_DECIMALS } from "../../libraries/Constants.sol";
import { PERCENTAGE_FACTOR } from "../../libraries/PercentageMath.sol";

// TESTS

import "../lib/constants.sol";
import { BalanceHelper } from "../helpers/BalanceHelper.sol";
import { CreditFacadeTestHelper } from "../helpers/CreditFacadeTestHelper.sol";

// EXCEPTIONS
import { ZeroAddressException } from "../../interfaces/IErrors.sol";
import { ICreditManagerV2Exceptions } from "../../interfaces/ICreditManagerV2.sol";

// MOCKS
import { AdapterMock } from "../mocks/adapters/AdapterMock.sol";
import { TargetContractMock } from "../mocks/adapters/TargetContractMock.sol";
import { ERC20BlacklistableMock } from "../mocks/token/ERC20Blacklistable.sol";

// SUITES
import { TokensTestSuite } from "../suites/TokensTestSuite.sol";
import { Tokens } from "../config/Tokens.sol";
import { CreditFacadeTestSuite } from "../suites/CreditFacadeTestSuite.sol";
import { CreditConfig } from "../config/CreditConfig.sol";
import { Test } from "forge-std/Test.sol";

uint256 constant WETH_TEST_AMOUNT = 5 * WAD;
uint16 constant REFERRAL_CODE = 23;

/// @title CreditFacadeTest
/// @notice Designed for unit test purposes only
contract CreditFacadeGasTest is Test {
address ap = 0xcF64698AFF7E5f27A11dff868AF228653ba53be0;
IContractRegister cr;

ICreditFacade cf;
ICreditManagerV2 cm;
ICreditConfigurator cc;

constructor() Test() {
cr = IContractRegister(IAddressProvider(ap).getContractsRegister());
}

modifier allCMs() {
address[] memory cms = cr.getCreditManagers();
}

function setUp() public {}

function test_gas_all_tokens() public allCMs {}
}

0 comments on commit c15d7f3

Please sign in to comment.