ETH Price: $2,347.92 (+7.77%)

Contract Diff Checker

Contract Name:
LFWUtils_ETH_LB

Contract Source Code:

<i class='far fa-question-circle text-muted ms-2' data-bs-trigger='hover' data-bs-toggle='tooltip' data-bs-html='true' data-bs-title='Click on the check box to select individual contract to compare. Only 1 contract can be selected from each side.'></i>

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.7;

interface IPair {
    function token0() external view returns (address);
    function token1() external view returns (address);
    function totalSupply() external view returns (uint256);
    function getReserves() external view returns (uint112, uint112, uint32);
}

interface IAaveTokenInterface {
    function balanceOf(address _user) external view returns (uint256);
}

interface IAaveLendingBorrowingV2Interface {
    function getReservesList() external view returns(address[] memory);
    function getReserveData(address _token) external view returns(uint256, uint128, uint128, uint128, uint128, uint128, uint40, address, address, address, address, uint8);
}

interface IAaveLendingBorrowingV3Interface {
    function getReservesList() external view returns(address[] memory);
    function getReserveData(address _token) external view returns(uint256, uint128, uint128, uint128, uint128, uint128, uint40, uint16, address, address, address);
}

contract LFWUtils_ETH_LB {
    
    function getAaveV2LendingInfo(
        address _scAddress,
        address _userAddress
    ) public view returns (uint256[] memory lendingInfo, address[] memory lendingData) {
        // Define array to return
        IAaveLendingBorrowingV2Interface scInterface = IAaveLendingBorrowingV2Interface(_scAddress); 
        address[] memory listAddresses = scInterface.getReservesList();
        lendingInfo = new uint256[](listAddresses.length);
        lendingData = new address[](listAddresses.length);

        for (uint i = 0; i < listAddresses.length; i++) {
            address _data = listAddresses[i];
            (uint256 config , , , , , , , address _lendingAddress, , , ,) = scInterface.getReserveData(_data);
            if (config != 0) {
                IAaveTokenInterface aaveInterface = IAaveTokenInterface(_lendingAddress);
                uint256 _userBalance = aaveInterface.balanceOf(_userAddress);
                if (_userBalance > 0) {
                    lendingData[i] = _data;
                    lendingInfo[i] = _userBalance;
                }
            }
        }
    }

    function getAaveV2BorrowingInfo(
        address _scAddress,
        address _userAddress
    ) public view returns (uint256[] memory borrowingInfo, address[] memory borrowingData) {
        // Define array to return
        IAaveLendingBorrowingV2Interface scInterface = IAaveLendingBorrowingV2Interface(_scAddress); 
        address[] memory listAddresses = scInterface.getReservesList();
        borrowingInfo = new uint256[](listAddresses.length);
        borrowingData = new address[](listAddresses.length);

        for (uint i = 0; i < listAddresses.length; i++) {
            address _data = listAddresses[i];
            (uint256 config , , , , , , , , , address _borrowingAddress, ,) = scInterface.getReserveData(_data);
            if (config != 0) {
                IAaveTokenInterface aaveInterface = IAaveTokenInterface(_borrowingAddress);
                uint256 _userBalance = aaveInterface.balanceOf(_userAddress);
                if (_userBalance > 0) {
                    borrowingData[i] = _data;
                    borrowingInfo[i] = _userBalance;
                }
            }
        }
    }

    function getAaveV3LendingInfo(
        address _scAddress,
        address _userAddress
    ) public view returns (uint256[] memory lendingInfo, address[] memory lendingData) {
        // Define array to return
        IAaveLendingBorrowingV3Interface scInterface = IAaveLendingBorrowingV3Interface(_scAddress); 
        address[] memory listAddresses = scInterface.getReservesList();
        lendingInfo = new uint256[](listAddresses.length);
        lendingData = new address[](listAddresses.length);

        for (uint i = 0; i < listAddresses.length; i++) {
            address _data = listAddresses[i];
            (uint256 config , , , , , , , ,address _lendingAddress, ,) = scInterface.getReserveData(_data);
            if (config != 0) {
                IAaveTokenInterface aaveInterface = IAaveTokenInterface(_lendingAddress);
                uint256 _userBalance = aaveInterface.balanceOf(_userAddress);
                if (_userBalance > 0) {
                    lendingData[i] = _data;
                    lendingInfo[i] = _userBalance;
                }
            }
        }
    }
       
    function getAaveV3BorrowingInfo(
        address _scAddress,
        address _userAddress
    ) public view returns (uint256[] memory borrowingInfo, address[] memory borrowingData) {
        // Define array to return
        IAaveLendingBorrowingV3Interface scInterface = IAaveLendingBorrowingV3Interface(_scAddress); 
        address[] memory listAddresses = scInterface.getReservesList();
        borrowingInfo = new uint256[](listAddresses.length);
        borrowingData = new address[](listAddresses.length);

        for (uint i = 0; i < listAddresses.length; i++) {
            address _data = listAddresses[i];
            (uint256 config , , , , , , , , , ,address _borrowingAddress) = scInterface.getReserveData(_data);
            if (config != 0) {
                IAaveTokenInterface aaveInterface = IAaveTokenInterface(_borrowingAddress);
                uint256 _userBalance = aaveInterface.balanceOf(_userAddress);
                if (_userBalance > 0) {
                    borrowingData[i] = _data;
                    borrowingInfo[i] = _userBalance;
                }
            }

        }
    }
}

Please enter a contract address above to load the contract details and source code.

Context size (optional):