core-v2 icon indicating copy to clipboard operation
core-v2 copied to clipboard

CreditFacade is immutable in adapters and is not correctly updated

Open Van0k opened this issue 2 years ago • 1 comments

Issue: creditFacade is currently only set once in AbstractAdapter in constructor, based on the current Credit Facade attached to the corresponding Credit Manager:

constructor(address _creditManager, address _targetContract) {
        if (_creditManager == address(0) || _targetContract == address(0))
            revert ZeroAddressException(); // F:[AA-2]

        creditManager = ICreditManagerV2(_creditManager); // F:[AA-1]
        creditFacade = ICreditManagerV2(_creditManager).creditFacade(); // F:[AA-1]
        targetContract = _targetContract; // F:[AA-1]
    }

This causes issues when the Credit Facade is updated in the CM, since the adapter no longer recognizes calls from the CF, and performs all health checks, even during a multicall.

Proposed solution: AbstractAdapter must be updated to retrieve the CreditFacade dynamically from CreditManager each time it is needed, so the current Credit Facade is always recognized. E.g., _fastCheck() would be modified as follows:

    function _fastCheck(
        address creditAccount,
        address tokenIn,
        address tokenOut,
        uint256 balanceInBefore,
        uint256 balanceOutBefore,
        bool disableTokenIn
    ) private {
        address creditFacade = creditManager.creditFacade();
        
        if (msg.sender != creditFacade) {
            creditManager.fastCollateralCheck(
                creditAccount,
                tokenIn,
                tokenOut,
                balanceInBefore,
                balanceOutBefore
            );
        } else {
            if (disableTokenIn)
                creditManager.disableToken(creditAccount, tokenIn);
            creditManager.checkAndEnableToken(creditAccount, tokenOut);
        }
    }

Van0k avatar Nov 16 '22 08:11 Van0k

Fix implemented in 60bea046ed72fce47eb9264d4476ffa8719acc0a.

Van0k avatar Jan 16 '23 06:01 Van0k