ETH Price: $3,002.65 (-6.55%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
VaultsDataProvider

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2020-12-04
*/

// SPDX-License-Identifier: MIT

pragma experimental ABIEncoderV2;
pragma solidity 0.6.12;


// 
/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

// 
interface IVaultsCore {
  event Opened(uint256 indexed vaultId, address indexed collateralType, address indexed owner);
  event Deposited(uint256 indexed vaultId, uint256 amount, address indexed sender);
  event Withdrawn(uint256 indexed vaultId, uint256 amount, address indexed sender);
  event Borrowed(uint256 indexed vaultId, uint256 amount, address indexed sender);
  event Repaid(uint256 indexed vaultId, uint256 amount, address indexed sender);
  event Liquidated(
    uint256 indexed vaultId,
    uint256 debtRepaid,
    uint256 collateralLiquidated,
    address indexed owner,
    address indexed sender
  );

  event CumulativeRateUpdated(
    address indexed collateralType,
    uint256 elapsedTime,
    uint256 newCumulativeRate
  ); //cumulative interest rate from deployment time T0

  event InsurancePaid(uint256 indexed vaultId, uint256 insuranceAmount, address indexed sender);

  function a() external view returns (IAddressProvider);

  function deposit(address _collateralType, uint256 _amount) external;

  function withdraw(uint256 _vaultId, uint256 _amount) external;

  function withdrawAll(uint256 _vaultId) external;

  function borrow(uint256 _vaultId, uint256 _amount) external;

  function repayAll(uint256 _vaultId) external;

  function repay(uint256 _vaultId, uint256 _amount) external;

  function liquidate(uint256 _vaultId) external;

  //Read only

  function availableIncome() external view returns (uint256);

  function cumulativeRates(address _collateralType) external view returns (uint256);

  function lastRefresh(address _collateralType) external view returns (uint256);

  //Refresh
  function initializeRates(address _collateralType) external;

  function refresh() external;

  function refreshCollateral(address collateralType) external;

  //upgrade
  function upgrade(address _newVaultsCore) external;
}

// 
interface IAccessController {
  event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
  event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
  event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);

  function MANAGER_ROLE() external view returns (bytes32);

  function MINTER_ROLE() external view returns (bytes32);

  function hasRole(bytes32 role, address account) external view returns (bool);

  function getRoleMemberCount(bytes32 role) external view returns (uint256);

  function getRoleMember(bytes32 role, uint256 index) external view returns (address);

  function getRoleAdmin(bytes32 role) external view returns (bytes32);

  function grantRole(bytes32 role, address account) external;

  function revokeRole(bytes32 role, address account) external;

  function renounceRole(bytes32 role, address account) external;
}

// 
interface IConfigProvider {
  struct CollateralConfig {
    address collateralType;
    uint256 debtLimit;
    uint256 minCollateralRatio;
    uint256 borrowRate;
    uint256 originationFee;
  }

  function a() external view returns (IAddressProvider);

  function collateralConfigs(uint256 _id) external view returns (CollateralConfig memory);

  function collateralIds(address _collateralType) external view returns (uint256);

  function numCollateralConfigs() external view returns (uint256);

  function liquidationBonus() external view returns (uint256);

  event CollateralUpdated(
    address indexed collateralType,
    uint256 debtLimit,
    uint256 minCollateralRatio,
    uint256 borrowRate,
    uint256 originationFee
  );
  event CollateralRemoved(address indexed collateralType);

  function setCollateralConfig(
    address _collateralType,
    uint256 _debtLimit,
    uint256 _minCollateralRatio,
    uint256 _borrowRate,
    uint256 _originationFee
  ) external;

  function removeCollateral(address _collateralType) external;

  function setCollateralDebtLimit(address _collateralType, uint256 _debtLimit) external;

  function setCollateralMinCollateralRatio(address _collateralType, uint256 _minCollateralRatio) external;

  function setCollateralBorrowRate(address _collateralType, uint256 _borrowRate) external;

  function setCollateralOriginationFee(address _collateralType, uint256 _originationFee) external;

  function setLiquidationBonus(uint256 _bonus) external;

  function collateralDebtLimit(address _collateralType) external view returns (uint256);

  function collateralMinCollateralRatio(address _collateralType) external view returns (uint256);

  function collateralBorrowRate(address _collateralType) external view returns (uint256);

  function collateralOriginationFee(address _collateralType) external view returns (uint256);
}

// 
/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

// 
interface ISTABLEX is IERC20 {
  function a() external view returns (IAddressProvider);

  function mint(address account, uint256 amount) external;

  function burn(address account, uint256 amount) external;
}

// 
interface AggregatorV3Interface {
  function decimals() external view returns (uint8);

  function description() external view returns (string memory);

  function version() external view returns (uint256);

  function getRoundData(uint80 _roundId)
    external
    view
    returns (
      uint80 roundId,
      int256 answer,
      uint256 startedAt,
      uint256 updatedAt,
      uint80 answeredInRound
    );

  function latestRoundData()
    external
    view
    returns (
      uint80 roundId,
      int256 answer,
      uint256 startedAt,
      uint256 updatedAt,
      uint80 answeredInRound
    );
}

// 
interface IPriceFeed {
  event OracleUpdated(address indexed asset, address oracle);

  function a() external view returns (IAddressProvider);

  function setAssetOracle(address _asset, address _oracle) external;

  function assetOracles(address _asset) external view returns (AggregatorV3Interface);

  function getAssetPrice(address _asset) external view returns (uint256);

  function convertFrom(address _asset, uint256 _balance) external view returns (uint256);

  function convertTo(address _asset, uint256 _balance) external view returns (uint256);
}

// 
interface IRatesManager {
  function a() external view returns (IAddressProvider);

  //current annualized borrow rate
  function annualizedBorrowRate(uint256 _currentBorrowRate) external pure returns (uint256);

  //uses current cumulative rate to calculate totalDebt based on baseDebt at time T0
  function calculateDebt(uint256 _baseDebt, uint256 _cumulativeRate) external pure returns (uint256);

  //uses current cumulative rate to calculate baseDebt at time T0
  function calculateBaseDebt(uint256 _debt, uint256 _cumulativeRate) external pure returns (uint256);

  //calculate a new cumulative rate
  function calculateCumulativeRate(
    uint256 _borrowRate,
    uint256 _cumulativeRate,
    uint256 _timeElapsed
  ) external view returns (uint256);
}

// 
interface ILiquidationManager {
  function a() external view returns (IAddressProvider);

  function calculateHealthFactor(
    address _collateralType,
    uint256 _collateralValue,
    uint256 _vaultDebt
  ) external view returns (uint256 healthFactor);

  function liquidationBonus(uint256 _amount) external view returns (uint256 bonus);

  function applyLiquidationDiscount(uint256 _amount) external view returns (uint256 discountedAmount);

  function isHealthy(
    address _collateralType,
    uint256 _collateralValue,
    uint256 _vaultDebt
  ) external view returns (bool);
}

// 
interface IFeeDistributor {
  event PayeeAdded(address indexed account, uint256 shares);
  event FeeReleased(uint256 income, uint256 releasedAt);

  function a() external view returns (IAddressProvider);

  function lastReleasedAt() external view returns (uint256);

  function getPayees() external view returns (address[] memory);

  function totalShares() external view returns (uint256);

  function shares(address payee) external view returns (uint256);

  function release() external;

  function changePayees(address[] memory _payees, uint256[] memory _shares) external;
}

// 
interface IAddressProvider {
  function controller() external view returns (IAccessController);

  function config() external view returns (IConfigProvider);

  function core() external view returns (IVaultsCore);

  function stablex() external view returns (ISTABLEX);

  function ratesManager() external view returns (IRatesManager);

  function priceFeed() external view returns (IPriceFeed);

  function liquidationManager() external view returns (ILiquidationManager);

  function vaultsData() external view returns (IVaultsDataProvider);

  function feeDistributor() external view returns (IFeeDistributor);

  function setAccessController(IAccessController _controller) external;

  function setConfigProvider(IConfigProvider _config) external;

  function setVaultsCore(IVaultsCore _core) external;

  function setStableX(ISTABLEX _stablex) external;

  function setRatesManager(IRatesManager _ratesManager) external;

  function setPriceFeed(IPriceFeed _priceFeed) external;

  function setLiquidationManager(ILiquidationManager _liquidationManager) external;

  function setVaultsDataProvider(IVaultsDataProvider _vaultsData) external;

  function setFeeDistributor(IFeeDistributor _feeDistributor) external;
}

// 
interface IVaultsDataProvider {
  struct Vault {
    // borrowedType support USDX / PAR
    address collateralType;
    address owner;
    uint256 collateralBalance;
    uint256 baseDebt;
    uint256 createdAt;
  }

  function a() external view returns (IAddressProvider);

  // Read
  function baseDebt(address _collateralType) external view returns (uint256);

  function vaultCount() external view returns (uint256);

  function vaults(uint256 _id) external view returns (Vault memory);

  function vaultOwner(uint256 _id) external view returns (address);

  function vaultCollateralType(uint256 _id) external view returns (address);

  function vaultCollateralBalance(uint256 _id) external view returns (uint256);

  function vaultBaseDebt(uint256 _id) external view returns (uint256);

  function vaultId(address _collateralType, address _owner) external view returns (uint256);

  function vaultExists(uint256 _id) external view returns (bool);

  function vaultDebt(uint256 _vaultId) external view returns (uint256);

  function debt() external view returns (uint256);

  function collateralDebt(address _collateralType) external view returns (uint256);

  //Write
  function createVault(address _collateralType, address _owner) external returns (uint256);

  function setCollateralBalance(uint256 _id, uint256 _balance) external;

  function setBaseDebt(uint256 _id, uint256 _newBaseDebt) external;
}

// 
contract VaultsDataProvider is IVaultsDataProvider {
  using SafeMath for uint256;

  IAddressProvider public override a;

  uint256 public override vaultCount = 0;

  mapping(address => uint256) public override baseDebt;

  mapping(uint256 => Vault) private _vaults;
  mapping(address => mapping(address => uint256)) private _vaultOwners;

  modifier onlyVaultsCore() {
    require(msg.sender == address(a.core()), "Caller is not VaultsCore");
    _;
  }

  constructor(IAddressProvider _addresses) public {
    require(address(_addresses) != address(0));
    a = _addresses;
  }

  /**
    Opens a new vault.
    @dev only the vaultsCore module can call this function
    @param _collateralType address to the collateral asset e.g. WETH
    @param _owner the owner of the new vault.
  */
  function createVault(address _collateralType, address _owner) public override onlyVaultsCore returns (uint256) {
    require(_collateralType != address(0));
    require(_owner != address(0));
    uint256 newId = ++vaultCount;
    require(_collateralType != address(0), "collateralType unknown");
    Vault memory v = Vault({
      collateralType: _collateralType,
      owner: _owner,
      collateralBalance: 0,
      baseDebt: 0,
      createdAt: block.timestamp
    });
    _vaults[newId] = v;
    _vaultOwners[_owner][_collateralType] = newId;
    return newId;
  }

  /**
    Set the collateral balance of a vault.
    @dev only the vaultsCore module can call this function
    @param _id Vault ID of which the collateral balance will be updated
    @param _balance the new balance of the vault.
  */
  function setCollateralBalance(uint256 _id, uint256 _balance) public override onlyVaultsCore {
    require(vaultExists(_id), "Vault not found.");
    Vault storage v = _vaults[_id];
    v.collateralBalance = _balance;
  }

  /**
    Set the base debt of a vault.
    @dev only the vaultsCore module can call this function
    @param _id Vault ID of which the base debt will be updated
    @param _newBaseDebt the new base debt of the vault.
  */
  function setBaseDebt(uint256 _id, uint256 _newBaseDebt) public override onlyVaultsCore {
    Vault storage _vault = _vaults[_id];
    if (_newBaseDebt > _vault.baseDebt) {
      uint256 increase = _newBaseDebt.sub(_vault.baseDebt);
      baseDebt[_vault.collateralType] = baseDebt[_vault.collateralType].add(increase);
    } else {
      uint256 decrease = _vault.baseDebt.sub(_newBaseDebt);
      baseDebt[_vault.collateralType] = baseDebt[_vault.collateralType].sub(decrease);
    }
    _vault.baseDebt = _newBaseDebt;
  }

  /**
    Get a vault by vault ID.
    @param _id The vault's ID to be retrieved 
  */
  function vaults(uint256 _id) public override view returns (Vault memory) {
    Vault memory v = _vaults[_id];
    return v;
  }

  /**
    Get the owner of a vault.
    @param _id the ID of the vault
    @return owner of the vault
  */
  function vaultOwner(uint256 _id) public override view returns (address) {
    return _vaults[_id].owner;
  }

  /**
    Get the collateral type of a vault.
    @param _id the ID of the vault
    @return address for the collateral type of the vault
  */
  function vaultCollateralType(uint256 _id) public override view returns (address) {
    return _vaults[_id].collateralType;
  }

  /**
    Get the collateral balance of a vault.
    @param _id the ID of the vault
    @return collateral balance of the vault
  */
  function vaultCollateralBalance(uint256 _id) public override view returns (uint256) {
    return _vaults[_id].collateralBalance;
  }

  /**
    Get the base debt of a vault.
    @param _id the ID of the vault
    @return base debt of the vault
  */
  function vaultBaseDebt(uint256 _id) public override view returns (uint256) {
    return _vaults[_id].baseDebt;
  }

  /**
    Retrieve the vault id for a specified owner and collateral type.
    @dev returns 0 for non-existing vaults
    @param _collateralType address of the collateral type (Eg: WETH)
    @param _owner address of the owner of the vault
    @return vault id of the vault or 0
  */
  function vaultId(address _collateralType, address _owner) public override view returns (uint256) {
    return _vaultOwners[_owner][_collateralType];
  }

  /**
    Checks if a specified vault exists.
    @param _id the ID of the vault
    @return boolean if the vault exists
  */
  function vaultExists(uint256 _id) public override view returns (bool) {
    Vault memory v = _vaults[_id];
    return v.collateralType != address(0);
  }

  /**
    Calculated the total outstanding debt for all vaults and all collateral types.
    @dev uses the existing cumulative rate. Call `refresh()` on `VaultsCore`
    to make sure it's up to date.
    @return total debt of the platform
  */
  function debt() public override view returns (uint256) {
    uint256 total = 0;
    for (uint256 i = 1; i <= a.config().numCollateralConfigs(); i++) {
      address collateralType = a.config().collateralConfigs(i).collateralType;
      total = total.add(collateralDebt(collateralType));
    }
    return total;
  }

  /**
    Calculated the total outstanding debt for all vaults of a specific collateral type.
    @dev uses the existing cumulative rate. Call `refreshCollateral()` on `VaultsCore`
    to make sure it's up to date.    
    @param _collateralType address of the collateral type (Eg: WETH)
    @return total debt of the platform of one collateral type
  */
  function collateralDebt(address _collateralType) public override view returns (uint256) {
    return
      a.ratesManager().calculateDebt(
        a.vaultsData().baseDebt(_collateralType),
        a.core().cumulativeRates(_collateralType)
      );
  }

  /**
    Calculated the total outstanding debt for a specific vault.
    @dev uses the existing cumulative rate. Call `refreshCollateral()` on `VaultsCore`
    to make sure it's up to date.    
    @param _vaultId the ID of the vault
    @return total debt of one vault
  */
  function vaultDebt(uint256 _vaultId) public override view returns (uint256) {
    IVaultsDataProvider.Vault memory v = a.vaultsData().vaults(_vaultId);
    return a.ratesManager().calculateDebt(v.baseDebt, a.core().cumulativeRates(v.collateralType));
  }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"contract IAddressProvider","name":"_addresses","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"a","outputs":[{"internalType":"contract IAddressProvider","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"baseDebt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_collateralType","type":"address"}],"name":"collateralDebt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_collateralType","type":"address"},{"internalType":"address","name":"_owner","type":"address"}],"name":"createVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"debt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_newBaseDebt","type":"uint256"}],"name":"setBaseDebt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_balance","type":"uint256"}],"name":"setCollateralBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"vaultBaseDebt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"vaultCollateralBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"vaultCollateralType","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vaultCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_vaultId","type":"uint256"}],"name":"vaultDebt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"vaultExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_collateralType","type":"address"},{"internalType":"address","name":"_owner","type":"address"}],"name":"vaultId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"vaultOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"vaults","outputs":[{"components":[{"internalType":"address","name":"collateralType","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"collateralBalance","type":"uint256"},{"internalType":"uint256","name":"baseDebt","type":"uint256"},{"internalType":"uint256","name":"createdAt","type":"uint256"}],"internalType":"struct IVaultsDataProvider.Vault","name":"","type":"tuple"}],"stateMutability":"view","type":"function"}]

6080604052600060015534801561001557600080fd5b506040516115683803806115688339810160408190526100349161006c565b6001600160a01b03811661004757600080fd5b600080546001600160a01b0319166001600160a01b039290921691909117905561009a565b60006020828403121561007d578081fd5b81516001600160a01b0381168114610093578182fd5b9392505050565b6114bf806100a96000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063b508bc5911610097578063cc92d31c11610066578063cc92d31c146101fa578063d310f49b1461020d578063dcd6812814610220578063ef18fcb41461024057610100565b8063b508bc59146101ac578063bd44815f146101bf578063c7eb222b146101d2578063c8c5c815146101e757610100565b80634e571cb0116100d35780634e571cb01461015e578063828f8def146101715780638c64ea4a14610184578063a7c6a100146101a457610100565b80630dbe671f146101055780630dca59c11461012357806312aa5dc6146101385780633c2ecfe51461014b575b600080fd5b61010d610253565b60405161011a91906112b6565b60405180910390f35b61012b610262565b60405161011a9190611433565b61012b610146366004611134565b61048b565b61010d610159366004611265565b610791565b61012b61016c366004611134565b6107af565b61012b61017f366004611265565b6107c1565b610197610192366004611265565b6107d6565b60405161011a91906113f0565b61012b610841565b61010d6101ba366004611265565b610847565b61012b6101cd366004611150565b610862565b6101e56101e0366004611295565b61088e565b005b61012b6101f5366004611265565b610985565b61012b610208366004611150565b61099b565b61012b61021b366004611265565b610b53565b61023361022e366004611265565b610e6b565b60405161011a91906112ca565b6101e561024e366004611295565b610ed9565b6000546001600160a01b031681565b60008060015b60008054906101000a90046001600160a01b03166001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b1580156102b457600080fd5b505afa1580156102c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ec9190611188565b6001600160a01b031663d47e470d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561032457600080fd5b505afa158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c919061127d565b81116104855760008060009054906101000a90046001600160a01b03166001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b1580156103b157600080fd5b505afa1580156103c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e99190611188565b6001600160a01b0316634a6e0dd0836040518263ffffffff1660e01b81526004016104149190611433565b60a06040518083038186803b15801561042c57600080fd5b505afa158015610440573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046491906111a4565b51905061047a6104738261048b565b8490611065565b925050600101610268565b50905090565b60008060009054906101000a90046001600160a01b03166001600160a01b031663b8091c5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104da57600080fd5b505afa1580156104ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105129190611188565b6001600160a01b0316631c3405e260008054906101000a90046001600160a01b03166001600160a01b03166365d552876040518163ffffffff1660e01b815260040160206040518083038186803b15801561056c57600080fd5b505afa158015610580573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a49190611188565b6001600160a01b0316634e571cb0856040518263ffffffff1660e01b81526004016105cf91906112b6565b60206040518083038186803b1580156105e757600080fd5b505afa1580156105fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061f919061127d565b60008054906101000a90046001600160a01b03166001600160a01b031663f2f4eb266040518163ffffffff1660e01b815260040160206040518083038186803b15801561066b57600080fd5b505afa15801561067f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a39190611188565b6001600160a01b03166385d36cd7866040518263ffffffff1660e01b81526004016106ce91906112b6565b60206040518083038186803b1580156106e657600080fd5b505afa1580156106fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071e919061127d565b6040518363ffffffff1660e01b815260040161073b92919061143c565b60206040518083038186803b15801561075357600080fd5b505afa158015610767573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078b919061127d565b92915050565b6000908152600360205260409020600101546001600160a01b031690565b60026020526000908152604090205481565b60009081526003602052604090206002015490565b6107de6110f3565b6107e66110f3565b5050600090815260036020818152604092839020835160a08101855281546001600160a01b03908116825260018301541692810192909252600281015493820193909352908201546060820152600490910154608082015290565b60015481565b6000908152600360205260409020546001600160a01b031690565b6001600160a01b0380821660009081526004602090815260408083209386168352929052205492915050565b60008054906101000a90046001600160a01b03166001600160a01b031663f2f4eb266040518163ffffffff1660e01b815260040160206040518083038186803b1580156108da57600080fd5b505afa1580156108ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109129190611188565b6001600160a01b0316336001600160a01b03161461094b5760405162461bcd60e51b81526004016109429061135f565b60405180910390fd5b61095482610e6b565b6109705760405162461bcd60e51b8152600401610942906113c6565b60009182526003602052604090912060020155565b6000908152600360208190526040909120015490565b60008060009054906101000a90046001600160a01b03166001600160a01b031663f2f4eb266040518163ffffffff1660e01b815260040160206040518083038186803b1580156109ea57600080fd5b505afa1580156109fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a229190611188565b6001600160a01b0316336001600160a01b031614610a525760405162461bcd60e51b81526004016109429061135f565b6001600160a01b038316610a6557600080fd5b6001600160a01b038216610a7857600080fd5b600180548101908190556001600160a01b038416610aa85760405162461bcd60e51b815260040161094290611396565b610ab06110f3565b506040805160a0810182526001600160a01b0380871680835286821660208085018281526000868801818152606088018281524260808a019081528b845260038087528b85209a518b54908b166001600160a01b0319918216178c55955160018c01805491909b16961695909517909855905160028901555191870191909155935160049586015590835292835283822090825290915220819055905092915050565b6000610b5d6110f3565b60008054906101000a90046001600160a01b03166001600160a01b03166365d552876040518163ffffffff1660e01b815260040160206040518083038186803b158015610ba957600080fd5b505afa158015610bbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be19190611188565b6001600160a01b0316638c64ea4a846040518263ffffffff1660e01b8152600401610c0c9190611433565b60a06040518083038186803b158015610c2457600080fd5b505afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c9190611200565b905060008054906101000a90046001600160a01b03166001600160a01b031663b8091c5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610caa57600080fd5b505afa158015610cbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce29190611188565b6001600160a01b0316631c3405e2826060015160008054906101000a90046001600160a01b03166001600160a01b031663f2f4eb266040518163ffffffff1660e01b815260040160206040518083038186803b158015610d4157600080fd5b505afa158015610d55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d799190611188565b84516040516385d36cd760e01b81526001600160a01b0392909216916385d36cd791610da7916004016112b6565b60206040518083038186803b158015610dbf57600080fd5b505afa158015610dd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df7919061127d565b6040518363ffffffff1660e01b8152600401610e1492919061143c565b60206040518083038186803b158015610e2c57600080fd5b505afa158015610e40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e64919061127d565b9392505050565b6000610e756110f3565b5050600090815260036020818152604092839020835160a08101855281546001600160a01b03908116808352600184015490911693820193909352600282015494810194909452918201546060840152600490910154608090920191909152151590565b60008054906101000a90046001600160a01b03166001600160a01b031663f2f4eb266040518163ffffffff1660e01b815260040160206040518083038186803b158015610f2557600080fd5b505afa158015610f39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5d9190611188565b6001600160a01b0316336001600160a01b031614610f8d5760405162461bcd60e51b81526004016109429061135f565b600082815260036020819052604090912090810154821115611009576000610fc282600301548461108a90919063ffffffff16565b82546001600160a01b0316600090815260026020526040902054909150610fe99082611065565b82546001600160a01b03166000908152600260205260409020555061105e565b600381015460009061101b908461108a565b82546001600160a01b0316600090815260026020526040902054909150611042908261108a565b82546001600160a01b0316600090815260026020526040902055505b6003015550565b600082820183811015610e645760405162461bcd60e51b815260040161094290611328565b6000610e6483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250600081848411156110eb5760405162461bcd60e51b815260040161094291906112d5565b505050900390565b6040518060a0016040528060006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081525090565b600060208284031215611145578081fd5b8135610e6481611471565b60008060408385031215611162578081fd5b823561116d81611471565b9150602083013561117d81611471565b809150509250929050565b600060208284031215611199578081fd5b8151610e6481611471565b600060a082840312156111b5578081fd5b6111bf60a061144a565b82516111ca81611471565b80825250602083015160208201526040830151604082015260608301516060820152608083015160808201528091505092915050565b600060a08284031215611211578081fd5b61121b60a061144a565b825161122681611471565b8152602083015161123681611471565b806020830152506040830151604082015260608301516060820152608083015160808201528091505092915050565b600060208284031215611276578081fd5b5035919050565b60006020828403121561128e578081fd5b5051919050565b600080604083850312156112a7578182fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b901515815260200190565b6000602080835283518082850152825b81811015611301578581018301518582016040015282016112e5565b818111156113125783604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526018908201527f43616c6c6572206973206e6f74205661756c7473436f72650000000000000000604082015260600190565b60208082526016908201527531b7b63630ba32b930b62a3cb832903ab735b737bbb760511b604082015260600190565b60208082526010908201526f2b30bab63a103737ba103337bab7321760811b604082015260600190565b81516001600160a01b0390811682526020808401519091169082015260408083015190820152606080830151908201526080918201519181019190915260a00190565b90815260200190565b918252602082015260400190565b60405181810167ffffffffffffffff8111828210171561146957600080fd5b604052919050565b6001600160a01b038116811461148657600080fd5b5056fea264697066735822122046d12bab37f8473e7222745e52475fe0d8af598fa5e36ddd41c1e0cfad2da04664736f6c634300060c00330000000000000000000000006fae125de41c03fa7d917ccfa17ba54ef4feb014

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101005760003560e01c8063b508bc5911610097578063cc92d31c11610066578063cc92d31c146101fa578063d310f49b1461020d578063dcd6812814610220578063ef18fcb41461024057610100565b8063b508bc59146101ac578063bd44815f146101bf578063c7eb222b146101d2578063c8c5c815146101e757610100565b80634e571cb0116100d35780634e571cb01461015e578063828f8def146101715780638c64ea4a14610184578063a7c6a100146101a457610100565b80630dbe671f146101055780630dca59c11461012357806312aa5dc6146101385780633c2ecfe51461014b575b600080fd5b61010d610253565b60405161011a91906112b6565b60405180910390f35b61012b610262565b60405161011a9190611433565b61012b610146366004611134565b61048b565b61010d610159366004611265565b610791565b61012b61016c366004611134565b6107af565b61012b61017f366004611265565b6107c1565b610197610192366004611265565b6107d6565b60405161011a91906113f0565b61012b610841565b61010d6101ba366004611265565b610847565b61012b6101cd366004611150565b610862565b6101e56101e0366004611295565b61088e565b005b61012b6101f5366004611265565b610985565b61012b610208366004611150565b61099b565b61012b61021b366004611265565b610b53565b61023361022e366004611265565b610e6b565b60405161011a91906112ca565b6101e561024e366004611295565b610ed9565b6000546001600160a01b031681565b60008060015b60008054906101000a90046001600160a01b03166001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b1580156102b457600080fd5b505afa1580156102c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ec9190611188565b6001600160a01b031663d47e470d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561032457600080fd5b505afa158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c919061127d565b81116104855760008060009054906101000a90046001600160a01b03166001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b1580156103b157600080fd5b505afa1580156103c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e99190611188565b6001600160a01b0316634a6e0dd0836040518263ffffffff1660e01b81526004016104149190611433565b60a06040518083038186803b15801561042c57600080fd5b505afa158015610440573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046491906111a4565b51905061047a6104738261048b565b8490611065565b925050600101610268565b50905090565b60008060009054906101000a90046001600160a01b03166001600160a01b031663b8091c5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104da57600080fd5b505afa1580156104ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105129190611188565b6001600160a01b0316631c3405e260008054906101000a90046001600160a01b03166001600160a01b03166365d552876040518163ffffffff1660e01b815260040160206040518083038186803b15801561056c57600080fd5b505afa158015610580573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a49190611188565b6001600160a01b0316634e571cb0856040518263ffffffff1660e01b81526004016105cf91906112b6565b60206040518083038186803b1580156105e757600080fd5b505afa1580156105fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061f919061127d565b60008054906101000a90046001600160a01b03166001600160a01b031663f2f4eb266040518163ffffffff1660e01b815260040160206040518083038186803b15801561066b57600080fd5b505afa15801561067f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a39190611188565b6001600160a01b03166385d36cd7866040518263ffffffff1660e01b81526004016106ce91906112b6565b60206040518083038186803b1580156106e657600080fd5b505afa1580156106fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071e919061127d565b6040518363ffffffff1660e01b815260040161073b92919061143c565b60206040518083038186803b15801561075357600080fd5b505afa158015610767573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078b919061127d565b92915050565b6000908152600360205260409020600101546001600160a01b031690565b60026020526000908152604090205481565b60009081526003602052604090206002015490565b6107de6110f3565b6107e66110f3565b5050600090815260036020818152604092839020835160a08101855281546001600160a01b03908116825260018301541692810192909252600281015493820193909352908201546060820152600490910154608082015290565b60015481565b6000908152600360205260409020546001600160a01b031690565b6001600160a01b0380821660009081526004602090815260408083209386168352929052205492915050565b60008054906101000a90046001600160a01b03166001600160a01b031663f2f4eb266040518163ffffffff1660e01b815260040160206040518083038186803b1580156108da57600080fd5b505afa1580156108ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109129190611188565b6001600160a01b0316336001600160a01b03161461094b5760405162461bcd60e51b81526004016109429061135f565b60405180910390fd5b61095482610e6b565b6109705760405162461bcd60e51b8152600401610942906113c6565b60009182526003602052604090912060020155565b6000908152600360208190526040909120015490565b60008060009054906101000a90046001600160a01b03166001600160a01b031663f2f4eb266040518163ffffffff1660e01b815260040160206040518083038186803b1580156109ea57600080fd5b505afa1580156109fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a229190611188565b6001600160a01b0316336001600160a01b031614610a525760405162461bcd60e51b81526004016109429061135f565b6001600160a01b038316610a6557600080fd5b6001600160a01b038216610a7857600080fd5b600180548101908190556001600160a01b038416610aa85760405162461bcd60e51b815260040161094290611396565b610ab06110f3565b506040805160a0810182526001600160a01b0380871680835286821660208085018281526000868801818152606088018281524260808a019081528b845260038087528b85209a518b54908b166001600160a01b0319918216178c55955160018c01805491909b16961695909517909855905160028901555191870191909155935160049586015590835292835283822090825290915220819055905092915050565b6000610b5d6110f3565b60008054906101000a90046001600160a01b03166001600160a01b03166365d552876040518163ffffffff1660e01b815260040160206040518083038186803b158015610ba957600080fd5b505afa158015610bbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be19190611188565b6001600160a01b0316638c64ea4a846040518263ffffffff1660e01b8152600401610c0c9190611433565b60a06040518083038186803b158015610c2457600080fd5b505afa158015610c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5c9190611200565b905060008054906101000a90046001600160a01b03166001600160a01b031663b8091c5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610caa57600080fd5b505afa158015610cbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce29190611188565b6001600160a01b0316631c3405e2826060015160008054906101000a90046001600160a01b03166001600160a01b031663f2f4eb266040518163ffffffff1660e01b815260040160206040518083038186803b158015610d4157600080fd5b505afa158015610d55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d799190611188565b84516040516385d36cd760e01b81526001600160a01b0392909216916385d36cd791610da7916004016112b6565b60206040518083038186803b158015610dbf57600080fd5b505afa158015610dd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df7919061127d565b6040518363ffffffff1660e01b8152600401610e1492919061143c565b60206040518083038186803b158015610e2c57600080fd5b505afa158015610e40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e64919061127d565b9392505050565b6000610e756110f3565b5050600090815260036020818152604092839020835160a08101855281546001600160a01b03908116808352600184015490911693820193909352600282015494810194909452918201546060840152600490910154608090920191909152151590565b60008054906101000a90046001600160a01b03166001600160a01b031663f2f4eb266040518163ffffffff1660e01b815260040160206040518083038186803b158015610f2557600080fd5b505afa158015610f39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5d9190611188565b6001600160a01b0316336001600160a01b031614610f8d5760405162461bcd60e51b81526004016109429061135f565b600082815260036020819052604090912090810154821115611009576000610fc282600301548461108a90919063ffffffff16565b82546001600160a01b0316600090815260026020526040902054909150610fe99082611065565b82546001600160a01b03166000908152600260205260409020555061105e565b600381015460009061101b908461108a565b82546001600160a01b0316600090815260026020526040902054909150611042908261108a565b82546001600160a01b0316600090815260026020526040902055505b6003015550565b600082820183811015610e645760405162461bcd60e51b815260040161094290611328565b6000610e6483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250600081848411156110eb5760405162461bcd60e51b815260040161094291906112d5565b505050900390565b6040518060a0016040528060006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081525090565b600060208284031215611145578081fd5b8135610e6481611471565b60008060408385031215611162578081fd5b823561116d81611471565b9150602083013561117d81611471565b809150509250929050565b600060208284031215611199578081fd5b8151610e6481611471565b600060a082840312156111b5578081fd5b6111bf60a061144a565b82516111ca81611471565b80825250602083015160208201526040830151604082015260608301516060820152608083015160808201528091505092915050565b600060a08284031215611211578081fd5b61121b60a061144a565b825161122681611471565b8152602083015161123681611471565b806020830152506040830151604082015260608301516060820152608083015160808201528091505092915050565b600060208284031215611276578081fd5b5035919050565b60006020828403121561128e578081fd5b5051919050565b600080604083850312156112a7578182fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b901515815260200190565b6000602080835283518082850152825b81811015611301578581018301518582016040015282016112e5565b818111156113125783604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526018908201527f43616c6c6572206973206e6f74205661756c7473436f72650000000000000000604082015260600190565b60208082526016908201527531b7b63630ba32b930b62a3cb832903ab735b737bbb760511b604082015260600190565b60208082526010908201526f2b30bab63a103737ba103337bab7321760811b604082015260600190565b81516001600160a01b0390811682526020808401519091169082015260408083015190820152606080830151908201526080918201519181019190915260a00190565b90815260200190565b918252602082015260400190565b60405181810167ffffffffffffffff8111828210171561146957600080fd5b604052919050565b6001600160a01b038116811461148657600080fd5b5056fea264697066735822122046d12bab37f8473e7222745e52475fe0d8af598fa5e36ddd41c1e0cfad2da04664736f6c634300060c0033

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

0000000000000000000000006fae125de41c03fa7d917ccfa17ba54ef4feb014

-----Decoded View---------------
Arg [0] : _addresses (address): 0x6fAE125De41C03fa7d917CCfa17Ba54eF4FEb014

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000006fae125de41c03fa7d917ccfa17ba54ef4feb014


Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.