Contract 0xe1761578848E774Cad9Ddc21b705dDda0c5B2473

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x4f153bc209c2d430411cc0b1da78a2a35af25399d7df28633e330a265d04f8e80x61012060217368512021-11-11 12:52:17238 days 3 hrs ago0xc29f1facff8c228b38e6b7681a73ca55581c1ff7 IN  Create: CDPViewer0 FTM0.133237889481
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x4f153bc209c2d430411cc0b1da78a2a35af25399d7df28633e330a265d04f8e8217368512021-11-11 12:52:17238 days 3 hrs ago 0xc29f1facff8c228b38e6b7681a73ca55581c1ff7  Contract Creation0 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CDPViewer

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 8 : CDPViewer.sol
// SPDX-License-Identifier: bsl-1.1

/*
  Copyright 2021 Unit Protocol: Artem Zakharov ([email protected]).
*/
pragma solidity 0.7.6;

pragma experimental ABIEncoderV2;

import "../interfaces/IVault.sol";
import "../interfaces/IVaultParameters.sol";
import "../interfaces/vault-managers/parameters/IVaultManagerParameters.sol";
import "../interfaces/vault-managers/parameters/IVaultManagerBorrowFeeParameters.sol";
import "../interfaces/IOracleRegistry.sol";
import "./IUniswapV2PairFull.sol";
import "./ERC20Like.sol";


/**
 * @notice Views collaterals in one request to save node requests and speed up dapps.
 */
contract CDPViewer {

    IVault public immutable vault;
    IVaultParameters public immutable vaultParameters;
    IVaultManagerParameters public immutable vaultManagerParameters;
    IVaultManagerBorrowFeeParameters public immutable vaultManagerBorrowFeeParameters;
    IOracleRegistry public immutable oracleRegistry;

    struct CDP {

        // Collateral amount
        uint128 collateral;

        // Debt amount
        uint128 debt;

        // Debt + accrued stability fee
        uint totalDebt;

        // Percentage with 3 decimals
        uint32 stabilityFee;

        uint32 lastUpdate;

        // Percentage with 0 decimals
        uint16 liquidationFee;

        uint16 oracleType;
    }

    struct CollateralParameters {

        // USDP mint limit
        uint128 tokenDebtLimit;

        // USDP mint limit
        uint128 tokenDebt;

        // Percentage with 3 decimals
        uint32 stabilityFee;

        // Percentage with 3 decimals
        uint32 liquidationDiscount;

        // Devaluation period in blocks
        uint32 devaluationPeriod;

        // Percentage with 0 decimals
        uint16 liquidationRatio;

        // Percentage with 0 decimals
        uint16 initialCollateralRatio;

        // Percentage with 0 decimals
        uint16 liquidationFee;

        // Oracle types enabled for this asset
        uint16 oracleType;

        // Percentage with 2 decimals (basis points)
        uint16 borrowFee;

        CDP cdp;
    }

    struct TokenDetails {
        address[2] lpUnderlyings;
        uint128 balance;
        uint128 totalSupply;
    }


    constructor(address _vaultManagerParameters, address _oracleRegistry, address _vaultManagerBorrowFeeParameters) {
         IVaultManagerParameters vmp = IVaultManagerParameters(_vaultManagerParameters);
         vaultManagerParameters = vmp;
         IVaultParameters vp = IVaultParameters(vmp.vaultParameters());
         vaultParameters = vp;
         vault = IVault(vp.vault());
         oracleRegistry = IOracleRegistry(_oracleRegistry);
         vaultManagerBorrowFeeParameters = IVaultManagerBorrowFeeParameters(_vaultManagerBorrowFeeParameters);
    }

    /**
     * @notice Get parameters of one asset
     * @param asset asset address
     * @param owner owner address
     */
    function getCollateralParameters(address asset, address owner)
        public
        view
        returns (CollateralParameters memory r)
    {
        r.stabilityFee = uint32(vaultParameters.stabilityFee(asset));
        r.liquidationFee = uint16(vaultParameters.liquidationFee(asset));
        r.initialCollateralRatio = uint16(vaultManagerParameters.initialCollateralRatio(asset));
        r.liquidationRatio = uint16(vaultManagerParameters.liquidationRatio(asset));
        r.liquidationDiscount = uint32(vaultManagerParameters.liquidationDiscount(asset));
        r.devaluationPeriod = uint32(vaultManagerParameters.devaluationPeriod(asset));

        r.tokenDebtLimit = uint128(vaultParameters.tokenDebtLimit(asset));
        r.tokenDebt = uint128(vault.tokenDebts(asset));
        r.oracleType = uint16(oracleRegistry.oracleTypeByAsset(asset));

        r.borrowFee = vaultManagerBorrowFeeParameters.getBorrowFee(asset);

        if (owner == address(0)) return r;
        r.cdp.stabilityFee = uint32(vault.stabilityFee(asset, owner));
        r.cdp.liquidationFee = uint16(vault.liquidationFee(asset, owner));
        r.cdp.debt = uint128(vault.debts(asset, owner));
        r.cdp.totalDebt = vault.getTotalDebt(asset, owner);
        r.cdp.collateral = uint128(vault.collaterals(asset, owner));
        r.cdp.lastUpdate = uint32(vault.lastUpdate(asset, owner));
        r.cdp.oracleType = uint16(vault.oracleType(asset, owner));
    }

    /**
     * @notice Get details of one token
     * @param asset token address
     * @param owner owner address
     */
    function getTokenDetails(address asset, address owner)
        public
        view
        returns (TokenDetails memory r)
    {
        try IUniswapV2PairFull(asset).token0() returns(address token0) {
            r.lpUnderlyings[0] = token0;
            r.lpUnderlyings[1] = IUniswapV2PairFull(asset).token1();
            r.totalSupply = uint128(IUniswapV2PairFull(asset).totalSupply());
        } catch (bytes memory) { }

        if (owner == address(0)) return r;
        r.balance = uint128(ERC20Like(asset).balanceOf(owner));
    }

    /**
     * @notice Get parameters of many collaterals
     * @param assets asset addresses
     * @param owner owner address
     */
    function getMultiCollateralParameters(address[] calldata assets, address owner)
        external
        view
        returns (CollateralParameters[] memory r)
    {
        uint length = assets.length;
        r = new CollateralParameters[](length);
        for (uint i = 0; i < length; ++i) {
            r[i] = getCollateralParameters(assets[i], owner);
        }
    }

    /**
     * @notice Get details of many token
     * @param assets token addresses
     * @param owner owner address
     */
    function getMultiTokenDetails(address[] calldata assets, address owner)
        external
        view
        returns (TokenDetails[] memory r)
    {
        uint length = assets.length;
        r = new TokenDetails[](length);
        for (uint i = 0; i < length; ++i) {
            r[i] = getTokenDetails(assets[i], owner);
        }
    }
}

File 2 of 8 : IVault.sol
// SPDX-License-Identifier: bsl-1.1

/*
  Copyright 2020 Unit Protocol: Artem Zakharov ([email protected]).
*/
pragma solidity ^0.7.6;

interface IVault {
    function DENOMINATOR_1E2 (  ) external view returns ( uint256 );
    function DENOMINATOR_1E5 (  ) external view returns ( uint256 );
    function borrow ( address asset, address user, uint256 amount ) external returns ( uint256 );
    function changeOracleType ( address asset, address user, uint256 newOracleType ) external;
    function chargeFee ( address asset, address user, uint256 amount ) external;
    function decreaseFee ( address asset, address user, uint amount ) external;
    function col (  ) external view returns ( address );
    function colToken ( address, address ) external view returns ( uint256 );
    function collaterals ( address, address ) external view returns ( uint256 );
    function debts ( address, address ) external view returns ( uint256 );
    function getFee ( address, address ) external view returns ( uint256 );
    function depositCol ( address asset, address user, uint256 amount ) external;
    function depositEth ( address user ) external payable;
    function depositMain ( address asset, address user, uint256 amount ) external;
    function destroy ( address asset, address user ) external;
    function getTotalDebt ( address asset, address user ) external view returns ( uint256 );
    function lastUpdate ( address, address ) external view returns ( uint256 );
    function liquidate ( address asset, address positionOwner, uint256 mainAssetToLiquidator, uint256 mainAssetToPositionOwner, uint256 repayment, uint256 penalty, address liquidator ) external;
    function liquidationBlock ( address, address ) external view returns ( uint256 );
    function liquidationFee ( address, address ) external view returns ( uint256 );
    function liquidationPrice ( address, address ) external view returns ( uint256 );
    function oracleType ( address, address ) external view returns ( uint256 );
    function repay ( address asset, address user, uint256 amount ) external returns ( uint256 );
    function spawn ( address asset, address user, uint256 _oracleType ) external;
    function stabilityFee ( address, address ) external view returns ( uint256 );
    function tokenDebts ( address ) external view returns ( uint256 );
    function triggerLiquidation ( address asset, address positionOwner, uint256 initialPrice ) external;
    function update ( address asset, address user ) external;
    function usdp (  ) external view returns ( address );
    function vaultParameters (  ) external view returns ( address );
    function weth (  ) external view returns ( address payable );
    function withdrawCol ( address asset, address user, uint256 amount ) external;
    function withdrawEth ( address user, uint256 amount ) external;
    function withdrawMain ( address asset, address user, uint256 amount ) external;
}

File 3 of 8 : IVaultParameters.sol
// SPDX-License-Identifier: bsl-1.1

/*
  Copyright 2020 Unit Protocol: Artem Zakharov ([email protected]).
*/
pragma solidity ^0.7.6;

interface IVaultParameters {
    function canModifyVault ( address ) external view returns ( bool );
    function foundation (  ) external view returns ( address );
    function isManager ( address ) external view returns ( bool );
    function isOracleTypeEnabled ( uint256, address ) external view returns ( bool );
    function liquidationFee ( address ) external view returns ( uint256 );
    function setCollateral ( address asset, uint256 stabilityFeeValue, uint256 liquidationFeeValue, uint256 usdpLimit, uint256[] calldata oracles ) external;
    function setFoundation ( address newFoundation ) external;
    function setLiquidationFee ( address asset, uint256 newValue ) external;
    function setManager ( address who, bool permit ) external;
    function setOracleType ( uint256 _type, address asset, bool enabled ) external;
    function setStabilityFee ( address asset, uint256 newValue ) external;
    function setTokenDebtLimit ( address asset, uint256 limit ) external;
    function setVaultAccess ( address who, bool permit ) external;
    function stabilityFee ( address ) external view returns ( uint256 );
    function tokenDebtLimit ( address ) external view returns ( uint256 );
    function vault (  ) external view returns ( address );
    function vaultParameters (  ) external view returns ( address );
}

File 4 of 8 : IVaultManagerParameters.sol
// SPDX-License-Identifier: bsl-1.1

/*
  Copyright 2020 Unit Protocol: Artem Zakharov ([email protected]).
*/
pragma solidity ^0.7.6;

interface IVaultManagerParameters {
    function devaluationPeriod ( address ) external view returns ( uint256 );
    function initialCollateralRatio ( address ) external view returns ( uint256 );
    function liquidationDiscount ( address ) external view returns ( uint256 );
    function liquidationRatio ( address ) external view returns ( uint256 );
    function maxColPercent ( address ) external view returns ( uint256 );
    function minColPercent ( address ) external view returns ( uint256 );
    function setColPartRange ( address asset, uint256 min, uint256 max ) external;
    function setCollateral (
        address asset,
        uint256 stabilityFeeValue,
        uint256 liquidationFeeValue,
        uint256 initialCollateralRatioValue,
        uint256 liquidationRatioValue,
        uint256 liquidationDiscountValue,
        uint256 devaluationPeriodValue,
        uint256 usdpLimit,
        uint256[] calldata oracles,
        uint256 minColP,
        uint256 maxColP
    ) external;
    function setDevaluationPeriod ( address asset, uint256 newValue ) external;
    function setInitialCollateralRatio ( address asset, uint256 newValue ) external;
    function setLiquidationDiscount ( address asset, uint256 newValue ) external;
    function setLiquidationRatio ( address asset, uint256 newValue ) external;
    function vaultParameters (  ) external view returns ( address );
}

File 5 of 8 : IVaultManagerBorrowFeeParameters.sol
// SPDX-License-Identifier: bsl-1.1

/*
  Copyright 2021 Unit Protocol: Artem Zakharov ([email protected]).
*/
pragma solidity ^0.7.6;

interface IVaultManagerBorrowFeeParameters {

    /**
     * @notice 1 = 100% = 10000 basis points
     **/
    function BASIS_POINTS_IN_1() external view returns (uint);

    /**
     * @notice Borrow fee receiver
     **/
    function feeReceiver() external view returns (address);

    /**
     * @notice Sets the borrow fee receiver. Only manager is able to call this function
     * @param newFeeReceiver The address of fee receiver
     **/
    function setFeeReceiver(address newFeeReceiver) external;

    /**
     * @notice Sets the base borrow fee in basis points (1bp = 0.01% = 0.0001). Only manager is able to call this function
     * @param newBaseBorrowFeeBasisPoints The borrow fee in basis points
     **/
    function setBaseBorrowFee(uint16 newBaseBorrowFeeBasisPoints) external;

    /**
     * @notice Sets the borrow fee for a particular collateral in basis points (1bp = 0.01% = 0.0001). Only manager is able to call this function
     * @param asset The address of the main collateral token
     * @param newEnabled Is custom fee enabled for asset
     * @param newFeeBasisPoints The borrow fee in basis points
     **/
    function setAssetBorrowFee(address asset, bool newEnabled, uint16 newFeeBasisPoints) external;

    /**
     * @notice Returns borrow fee for particular collateral in basis points (1bp = 0.01% = 0.0001)
     * @param asset The address of the main collateral token
     * @return feeBasisPoints The borrow fee in basis points
     **/
    function getBorrowFee(address asset) external view returns (uint16 feeBasisPoints);

    /**
     * @notice Returns borrow fee for usdp amount for particular collateral
     * @param asset The address of the main collateral token
     * @return The borrow fee
     **/
    function calcBorrowFeeAmount(address asset, uint usdpAmount) external view returns (uint);
}

File 6 of 8 : IOracleRegistry.sol
// SPDX-License-Identifier: bsl-1.1

/*
  Copyright 2020 Unit Protocol: Artem Zakharov ([email protected]).
*/
pragma solidity ^0.7.6;
pragma abicoder v2;

interface IOracleRegistry {

    struct Oracle {
        uint oracleType;
        address oracleAddress;
    }

    function WETH (  ) external view returns ( address );
    function getKeydonixOracleTypes (  ) external view returns ( uint256[] memory );
    function getOracles (  ) external view returns ( Oracle[] memory foundOracles );
    function keydonixOracleTypes ( uint256 ) external view returns ( uint256 );
    function maxOracleType (  ) external view returns ( uint256 );
    function oracleByAsset ( address asset ) external view returns ( address );
    function oracleByType ( uint256 ) external view returns ( address );
    function oracleTypeByAsset ( address ) external view returns ( uint256 );
    function oracleTypeByOracle ( address ) external view returns ( uint256 );
    function setKeydonixOracleTypes ( uint256[] memory _keydonixOracleTypes ) external;
    function setOracle ( uint256 oracleType, address oracle ) external;
    function setOracleTypeForAsset ( address asset, uint256 oracleType ) external;
    function setOracleTypeForAssets ( address[] memory assets, uint256 oracleType ) external;
    function unsetOracle ( uint256 oracleType ) external;
    function unsetOracleForAsset ( address asset ) external;
    function unsetOracleForAssets ( address[] memory assets ) external;
    function vaultParameters (  ) external view returns ( address );
}

File 7 of 8 : IUniswapV2PairFull.sol
// SPDX-License-Identifier: bsl-1.1

/*
  Copyright 2020 Unit Protocol: Artem Zakharov ([email protected]).
*/
pragma solidity 0.7.6;

interface IUniswapV2PairFull {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

File 8 of 8 : ERC20Like.sol
// SPDX-License-Identifier: bsl-1.1

/*
  Copyright 2020 Unit Protocol: Artem Zakharov ([email protected]).
*/
pragma solidity 0.7.6;


interface ERC20Like {
    function balanceOf(address) external view returns (uint);
    function decimals() external view returns (uint8);
    function transfer(address, uint256) external returns (bool);
    function transferFrom(address, address, uint256) external returns (bool);
    function totalSupply() external view returns (uint256);
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_vaultManagerParameters","type":"address"},{"internalType":"address","name":"_oracleRegistry","type":"address"},{"internalType":"address","name":"_vaultManagerBorrowFeeParameters","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"getCollateralParameters","outputs":[{"components":[{"internalType":"uint128","name":"tokenDebtLimit","type":"uint128"},{"internalType":"uint128","name":"tokenDebt","type":"uint128"},{"internalType":"uint32","name":"stabilityFee","type":"uint32"},{"internalType":"uint32","name":"liquidationDiscount","type":"uint32"},{"internalType":"uint32","name":"devaluationPeriod","type":"uint32"},{"internalType":"uint16","name":"liquidationRatio","type":"uint16"},{"internalType":"uint16","name":"initialCollateralRatio","type":"uint16"},{"internalType":"uint16","name":"liquidationFee","type":"uint16"},{"internalType":"uint16","name":"oracleType","type":"uint16"},{"internalType":"uint16","name":"borrowFee","type":"uint16"},{"components":[{"internalType":"uint128","name":"collateral","type":"uint128"},{"internalType":"uint128","name":"debt","type":"uint128"},{"internalType":"uint256","name":"totalDebt","type":"uint256"},{"internalType":"uint32","name":"stabilityFee","type":"uint32"},{"internalType":"uint32","name":"lastUpdate","type":"uint32"},{"internalType":"uint16","name":"liquidationFee","type":"uint16"},{"internalType":"uint16","name":"oracleType","type":"uint16"}],"internalType":"struct CDPViewer.CDP","name":"cdp","type":"tuple"}],"internalType":"struct CDPViewer.CollateralParameters","name":"r","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"assets","type":"address[]"},{"internalType":"address","name":"owner","type":"address"}],"name":"getMultiCollateralParameters","outputs":[{"components":[{"internalType":"uint128","name":"tokenDebtLimit","type":"uint128"},{"internalType":"uint128","name":"tokenDebt","type":"uint128"},{"internalType":"uint32","name":"stabilityFee","type":"uint32"},{"internalType":"uint32","name":"liquidationDiscount","type":"uint32"},{"internalType":"uint32","name":"devaluationPeriod","type":"uint32"},{"internalType":"uint16","name":"liquidationRatio","type":"uint16"},{"internalType":"uint16","name":"initialCollateralRatio","type":"uint16"},{"internalType":"uint16","name":"liquidationFee","type":"uint16"},{"internalType":"uint16","name":"oracleType","type":"uint16"},{"internalType":"uint16","name":"borrowFee","type":"uint16"},{"components":[{"internalType":"uint128","name":"collateral","type":"uint128"},{"internalType":"uint128","name":"debt","type":"uint128"},{"internalType":"uint256","name":"totalDebt","type":"uint256"},{"internalType":"uint32","name":"stabilityFee","type":"uint32"},{"internalType":"uint32","name":"lastUpdate","type":"uint32"},{"internalType":"uint16","name":"liquidationFee","type":"uint16"},{"internalType":"uint16","name":"oracleType","type":"uint16"}],"internalType":"struct CDPViewer.CDP","name":"cdp","type":"tuple"}],"internalType":"struct CDPViewer.CollateralParameters[]","name":"r","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"assets","type":"address[]"},{"internalType":"address","name":"owner","type":"address"}],"name":"getMultiTokenDetails","outputs":[{"components":[{"internalType":"address[2]","name":"lpUnderlyings","type":"address[2]"},{"internalType":"uint128","name":"balance","type":"uint128"},{"internalType":"uint128","name":"totalSupply","type":"uint128"}],"internalType":"struct CDPViewer.TokenDetails[]","name":"r","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"getTokenDetails","outputs":[{"components":[{"internalType":"address[2]","name":"lpUnderlyings","type":"address[2]"},{"internalType":"uint128","name":"balance","type":"uint128"},{"internalType":"uint128","name":"totalSupply","type":"uint128"}],"internalType":"struct CDPViewer.TokenDetails","name":"r","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oracleRegistry","outputs":[{"internalType":"contract IOracleRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vaultManagerBorrowFeeParameters","outputs":[{"internalType":"contract IVaultManagerBorrowFeeParameters","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vaultManagerParameters","outputs":[{"internalType":"contract IVaultManagerParameters","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vaultParameters","outputs":[{"internalType":"contract IVaultParameters","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

6101206040523480156200001257600080fd5b50604051620018f4380380620018f48339810160408190526200003591620001d3565b6000839050806001600160a01b031660c0816001600160a01b031660601b815250506000816001600160a01b031663aca345ee6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200009357600080fd5b505afa158015620000a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ce9190620001af565b9050806001600160a01b031660a0816001600160a01b031660601b81525050806001600160a01b031663fbfa77cf6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200012757600080fd5b505afa1580156200013c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001629190620001af565b6001600160601b0319606091821b811660805294811b8516610100529290921b90921660e052506200021c915050565b80516001600160a01b0381168114620001aa57600080fd5b919050565b600060208284031215620001c1578081fd5b620001cc8262000192565b9392505050565b600080600060608486031215620001e8578182fd5b620001f38462000192565b9250620002036020850162000192565b9150620002136040850162000192565b90509250925092565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c611634620002c06000398061017c52806107a7525080610158528061084d5250806103bf5280610464528061050952806105af52806110fe525080610271528061031a528061065652806110da5250806106fd528061090652806109b85280610a685280610b1d5280610bc85280610c795280610d2b528061112252506116346000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063899f04f611610066578063899f04f6146100fe57806392fdb1581461011e578063aca345ee1461013e578063b7ebdc0c14610146578063fbfa77cf1461014e57610093565b806313084e15146100985780634bb93ab1146100b65780634ffd4deb146100be578063841cb35b146100de575b600080fd5b6100a0610156565b6040516100ad919061150a565b60405180910390f35b6100a061017a565b6100d16100cc36600461129f565b61019e565b6040516100ad9190611587565b6100f16100ec366004611267565b610252565b6040516100ad91906115c9565b61011161010c366004611267565b610dcb565b6040516100ad91906115d8565b61013161012c36600461129f565b61102d565b6040516100ad9190611538565b6100a06110d8565b6100a06110fc565b6100a0611120565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060828067ffffffffffffffff811180156101b857600080fd5b506040519080825280602002602001820160405280156101f257816020015b6101df611144565b8152602001906001900390816101d75790505b50915060005b818110156102495761022a86868381811061020f57fe5b90506020020160208101906102249190611228565b85610dcb565b83828151811061023657fe5b60209081029190910101526001016101f8565b50509392505050565b61025a61116b565b604051634cbd12b960e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063997a2572906102a690869060040161150a565b60206040518083038186803b1580156102be57600080fd5b505afa1580156102d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f69190611341565b63ffffffff16604080830191909152516332008ebd60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c8023af49061034f90869060040161150a565b60206040518083038186803b15801561036757600080fd5b505afa15801561037b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039f9190611341565b61ffff1660e0820152604051635c2e224b60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b85c4496906103f490869060040161150a565b60206040518083038186803b15801561040c57600080fd5b505afa158015610420573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104449190611341565b61ffff1660c0820152604051631dffddf160e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633bffbbe29061049990869060040161150a565b60206040518083038186803b1580156104b157600080fd5b505afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190611341565b61ffff1660a0820152604051630ad0275160e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906315a04ea29061053e90869060040161150a565b60206040518083038186803b15801561055657600080fd5b505afa15801561056a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058e9190611341565b63ffffffff16606082015260405162aaddb560e41b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630aaddb50906105e490869060040161150a565b60206040518083038186803b1580156105fc57600080fd5b505afa158015610610573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106349190611341565b63ffffffff16608082015260405163797191dd60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f2e323ba9061068b90869060040161150a565b60206040518083038186803b1580156106a357600080fd5b505afa1580156106b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106db9190611341565b6001600160801b031681526040516378c821cf60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f190439e9061073290869060040161150a565b60206040518083038186803b15801561074a57600080fd5b505afa15801561075e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107829190611341565b6001600160801b0316602082015260405163fbcd553160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fbcd5531906107dc90869060040161150a565b60206040518083038186803b1580156107f457600080fd5b505afa158015610808573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082c9190611341565b61ffff166101008201526040516321d09aa160e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906387426a849061088290869060040161150a565b60206040518083038186803b15801561089a57600080fd5b505afa1580156108ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d2919061131f565b61ffff166101208201526001600160a01b0382166108ef57610dc5565b604051636a5c9edf60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d4b93dbe9061093d908690869060040161151e565b60206040518083038186803b15801561095557600080fd5b505afa158015610969573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098d9190611341565b61014082015163ffffffff90911660609091015260405163554e160b60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aa9c2c16906109ef908690869060040161151e565b60206040518083038186803b158015610a0757600080fd5b505afa158015610a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3f9190611341565b61014082015161ffff90911660a090910152604051634ac1c33d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634ac1c33d90610a9f908690869060040161151e565b60206040518083038186803b158015610ab757600080fd5b505afa158015610acb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aef9190611341565b6101408201516001600160801b0390911660209091015260405163d6446d4360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d6446d4390610b54908690869060040161151e565b60206040518083038186803b158015610b6c57600080fd5b505afa158015610b80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba49190611341565b6101408201516040908101919091525163728f08cf60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e51e119e90610bff908690869060040161151e565b60206040518083038186803b158015610c1757600080fd5b505afa158015610c2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4f9190611341565b6101408201516001600160801b0390911690526040516388ad7a6160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906388ad7a6190610cb0908690869060040161151e565b60206040518083038186803b158015610cc857600080fd5b505afa158015610cdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d009190611341565b61014082015163ffffffff909116608090910152604051631863be3f60e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906330c77c7e90610d62908690869060040161151e565b60206040518083038186803b158015610d7a57600080fd5b505afa158015610d8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db29190611341565b61014082015161ffff90911660c0909101525b92915050565b610dd3611144565b826001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610e0c57600080fd5b505afa925050508015610e3c575060408051601f3d908101601f19168201909252610e399181019061124b565b60015b610e76573d808015610e6a576040519150601f19603f3d011682016040523d82523d6000602084013e610e6f565b606091505b5050610f8a565b81516001600160a01b038083169091526040805163d21220a760e01b815290519186169163d21220a791600480820192602092909190829003018186803b158015610ec057600080fd5b505afa158015610ed4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef8919061124b565b82516001600160a01b03918216602091820152604080516318160ddd60e01b81529051928716926318160ddd92600480840193919291829003018186803b158015610f4257600080fd5b505afa158015610f56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7a9190611341565b6001600160801b03166040830152505b6001600160a01b038216610f9d57610dc5565b6040516370a0823160e01b81526001600160a01b038416906370a0823190610fc990859060040161150a565b60206040518083038186803b158015610fe157600080fd5b505afa158015610ff5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110199190611341565b6001600160801b0316602082015292915050565b6060828067ffffffffffffffff8111801561104757600080fd5b5060405190808252806020026020018201604052801561108157816020015b61106e61116b565b8152602001906001900390816110665790505b50915060005b81811015610249576110b986868381811061109e57fe5b90506020020160208101906110b39190611228565b85610252565b8382815181106110c557fe5b6020908102919091010152600101611087565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60405180606001604052806111576111ce565b815260006020820181905260409091015290565b6040805161016081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081019190915261014081016111c96111ec565b905290565b60405180604001604052806002906020820280368337509192915050565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b600060208284031215611239578081fd5b8135611244816115e6565b9392505050565b60006020828403121561125c578081fd5b8151611244816115e6565b60008060408385031215611279578081fd5b8235611284816115e6565b91506020830135611294816115e6565b809150509250929050565b6000806000604084860312156112b3578081fd5b833567ffffffffffffffff808211156112ca578283fd5b818601915086601f8301126112dd578283fd5b8135818111156112eb578384fd5b87602080830285010111156112fe578384fd5b60209283019550935050840135611314816115e6565b809150509250925092565b600060208284031215611330578081fd5b815161ffff81168114611244578182fd5b600060208284031215611352578081fd5b5051919050565b6001600160801b038082511683528060208301511660208401525060408101516040830152606081015163ffffffff8082166060850152806080840151166080850152505060a081015161ffff80821660a08501528060c08401511660c085015250505050565b6113cb8282516114eb565b60208101516113dd60208401826114eb565b5060408101516113f06040840182611500565b5060608101516114036060840182611500565b5060808101516114166080840182611500565b5060a081015161142960a08401826114f8565b5060c081015161143c60c08401826114f8565b5060e081015161144f60e08401826114f8565b5061010080820151611463828501826114f8565b505061012080820151611478828501826114f8565b50506101408082015161148d82850182611359565b50505050565b80518260005b60028110156114c15782516001600160a01b0316825260209283019290910190600101611499565b50505060208101516001600160801b03808216604085015280604084015116606085015250505050565b6001600160801b03169052565b61ffff169052565b63ffffffff169052565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561157b576115678385516113c0565b928401926102209290920191600101611554565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561157b576115b6838551611493565b92840192608092909201916001016115a3565b6102208101610dc582846113c0565b60808101610dc58284611493565b6001600160a01b03811681146115fb57600080fd5b5056fea26469706673582212207bae33c1dc3f6620951870b04d2fd910aa234d954de030c5c84a97a73ae2310564736f6c634300070600330000000000000000000000001c7aea8b6498f0854d1fce542a27ed6a10d71d2f0000000000000000000000000058ab54d4405d8084e8d71b8ab36b3091b21c7d000000000000000000000000b8b807c1841d38443d9a135f0109cf27dac78af4

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000001c7aea8b6498f0854d1fce542a27ed6a10d71d2f0000000000000000000000000058ab54d4405d8084e8d71b8ab36b3091b21c7d000000000000000000000000b8b807c1841d38443d9a135f0109cf27dac78af4

-----Decoded View---------------
Arg [0] : _vaultManagerParameters (address): 0x1c7aea8b6498f0854d1fce542a27ed6a10d71d2f
Arg [1] : _oracleRegistry (address): 0x0058ab54d4405d8084e8d71b8ab36b3091b21c7d
Arg [2] : _vaultManagerBorrowFeeParameters (address): 0xb8b807c1841d38443d9a135f0109cf27dac78af4

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000001c7aea8b6498f0854d1fce542a27ed6a10d71d2f
Arg [1] : 0000000000000000000000000058ab54d4405d8084e8d71b8ab36b3091b21c7d
Arg [2] : 000000000000000000000000b8b807c1841d38443d9a135f0109cf27dac78af4


Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.