Source Code
Overview
S Balance
S Value
$0.00View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Cross-Chain Transactions
Loading...
Loading
Contract Name:
VaultUtils
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/**
*Submitted for verification at SonicScan.org on 2025-07-30
*/
// Sources flattened with hardhat v2.17.3 https://hardhat.org
// SPDX-License-Identifier: MIT
// File contracts/core/interfaces/IVaultUtils.sol
pragma solidity 0.6.12;
interface IVaultUtils {
function updateCumulativeFundingRate(address _collateralToken, address _indexToken) external returns (bool);
function validateIncreasePosition(address _account, address _collateralToken, address _indexToken, uint256 _sizeDelta, bool _isLong) external view;
function validateDecreasePosition(address _account, address _collateralToken, address _indexToken, uint256 _collateralDelta, uint256 _sizeDelta, bool _isLong, address _receiver) external view;
function validateLiquidation(address _account, address _collateralToken, address _indexToken, bool _isLong, bool _raise) external view returns (uint256, uint256);
function getEntryFundingRate(address _collateralToken, address _indexToken, bool _isLong) external view returns (uint256);
function getPositionFee(address _account, address _collateralToken, address _indexToken, bool _isLong, uint256 _sizeDelta) external view returns (uint256);
function getFundingFee(address _account, address _collateralToken, address _indexToken, bool _isLong, uint256 _size, uint256 _entryFundingRate) external view returns (uint256);
function getBuyUsdgFeeBasisPoints(address _token, uint256 _usdgAmount) external view returns (uint256);
function getSellUsdgFeeBasisPoints(address _token, uint256 _usdgAmount) external view returns (uint256);
function getSwapFeeBasisPoints(address _tokenIn, address _tokenOut, uint256 _usdgAmount) external view returns (uint256);
function getFeeBasisPoints(address _token, uint256 _usdgDelta, uint256 _feeBasisPoints, uint256 _taxBasisPoints, bool _increment) external view returns (uint256);
}
// File contracts/core/interfaces/IVault.sol
pragma solidity 0.6.12;
interface IVault {
function isInitialized() external view returns (bool);
function isSwapEnabled() external view returns (bool);
function isLeverageEnabled() external view returns (bool);
function setVaultUtils(IVaultUtils _vaultUtils) external;
function setError(uint256 _errorCode, string calldata _error) external;
function router() external view returns (address);
function usdg() external view returns (address);
function gov() external view returns (address);
function whitelistedTokenCount() external view returns (uint256);
function maxLeverage() external view returns (uint256);
function minProfitTime() external view returns (uint256);
function hasDynamicFees() external view returns (bool);
function fundingInterval() external view returns (uint256);
function totalTokenWeights() external view returns (uint256);
function getTargetUsdgAmount(address _token) external view returns (uint256);
function inManagerMode() external view returns (bool);
function inPrivateLiquidationMode() external view returns (bool);
function maxGasPrice() external view returns (uint256);
function approvedRouters(address _account, address _router) external view returns (bool);
function isLiquidator(address _account) external view returns (bool);
function isManager(address _account) external view returns (bool);
function minProfitBasisPoints(address _token) external view returns (uint256);
function tokenBalances(address _token) external view returns (uint256);
function lastFundingTimes(address _token) external view returns (uint256);
function setMaxLeverage(uint256 _maxLeverage) external;
function setInManagerMode(bool _inManagerMode) external;
function setManager(address _manager, bool _isManager) external;
function setIsSwapEnabled(bool _isSwapEnabled) external;
function setIsLeverageEnabled(bool _isLeverageEnabled) external;
function setMaxGasPrice(uint256 _maxGasPrice) external;
function setUsdgAmount(address _token, uint256 _amount) external;
function setBufferAmount(address _token, uint256 _amount) external;
function setMaxGlobalShortSize(address _token, uint256 _amount) external;
function setInPrivateLiquidationMode(bool _inPrivateLiquidationMode) external;
function setLiquidator(address _liquidator, bool _isActive) external;
function setFundingRate(uint256 _fundingInterval, uint256 _fundingRateFactor, uint256 _stableFundingRateFactor) external;
function setFees(
uint256 _taxBasisPoints,
uint256 _stableTaxBasisPoints,
uint256 _mintBurnFeeBasisPoints,
uint256 _swapFeeBasisPoints,
uint256 _stableSwapFeeBasisPoints,
uint256 _marginFeeBasisPoints,
uint256 _liquidationFeeUsd,
uint256 _minProfitTime,
bool _hasDynamicFees
) external;
function setTokenConfig(
address _token,
uint256 _tokenDecimals,
uint256 _redemptionBps,
uint256 _minProfitBps,
uint256 _maxUsdgAmount,
bool _isStable,
bool _isShortable
) external;
function setPriceFeed(address _priceFeed) external;
function withdrawFees(address _token, address _receiver) external returns (uint256);
function directPoolDeposit(address _token) external;
function buyUSDG(address _token, address _receiver) external returns (uint256);
function sellUSDG(address _token, address _receiver) external returns (uint256);
function swap(address _tokenIn, address _tokenOut, address _receiver) external returns (uint256);
function increasePosition(address _account, address _collateralToken, address _indexToken, uint256 _sizeDelta, bool _isLong) external;
function decreasePosition(address _account, address _collateralToken, address _indexToken, uint256 _collateralDelta, uint256 _sizeDelta, bool _isLong, address _receiver) external returns (uint256);
function validateLiquidation(address _account, address _collateralToken, address _indexToken, bool _isLong, bool _raise) external view returns (uint256, uint256);
function liquidatePosition(address _account, address _collateralToken, address _indexToken, bool _isLong, address _feeReceiver) external;
function tokenToUsdMin(address _token, uint256 _tokenAmount) external view returns (uint256);
function priceFeed() external view returns (address);
function fundingRateFactor() external view returns (uint256);
function stableFundingRateFactor() external view returns (uint256);
function cumulativeFundingRates(address _token) external view returns (uint256);
function getNextFundingRate(address _token) external view returns (uint256);
function getFeeBasisPoints(address _token, uint256 _usdgDelta, uint256 _feeBasisPoints, uint256 _taxBasisPoints, bool _increment) external view returns (uint256);
function liquidationFeeUsd() external view returns (uint256);
function taxBasisPoints() external view returns (uint256);
function stableTaxBasisPoints() external view returns (uint256);
function mintBurnFeeBasisPoints() external view returns (uint256);
function swapFeeBasisPoints() external view returns (uint256);
function stableSwapFeeBasisPoints() external view returns (uint256);
function marginFeeBasisPoints() external view returns (uint256);
function allWhitelistedTokensLength() external view returns (uint256);
function allWhitelistedTokens(uint256) external view returns (address);
function whitelistedTokens(address _token) external view returns (bool);
function stableTokens(address _token) external view returns (bool);
function shortableTokens(address _token) external view returns (bool);
function feeReserves(address _token) external view returns (uint256);
function globalShortSizes(address _token) external view returns (uint256);
function globalShortAveragePrices(address _token) external view returns (uint256);
function maxGlobalShortSizes(address _token) external view returns (uint256);
function tokenDecimals(address _token) external view returns (uint256);
function tokenWeights(address _token) external view returns (uint256);
function guaranteedUsd(address _token) external view returns (uint256);
function poolAmounts(address _token) external view returns (uint256);
function bufferAmounts(address _token) external view returns (uint256);
function reservedAmounts(address _token) external view returns (uint256);
function usdgAmounts(address _token) external view returns (uint256);
function maxUsdgAmounts(address _token) external view returns (uint256);
function getRedemptionAmount(address _token, uint256 _usdgAmount) external view returns (uint256);
function getMaxPrice(address _token) external view returns (uint256);
function getMinPrice(address _token) external view returns (uint256);
function getDelta(address _indexToken, uint256 _size, uint256 _averagePrice, bool _isLong, uint256 _lastIncreasedTime) external view returns (bool, uint256);
function getPosition(address _account, address _collateralToken, address _indexToken, bool _isLong) external view returns (uint256, uint256, uint256, uint256, uint256, uint256, bool, uint256);
}
// File contracts/access/Governable.sol
pragma solidity 0.6.12;
contract Governable {
address public gov;
constructor() public {
gov = msg.sender;
}
modifier onlyGov() {
require(msg.sender == gov, "Governable: forbidden");
_;
}
function setGov(address _gov) external onlyGov {
gov = _gov;
}
}
// File contracts/libraries/math/SafeMath.sol
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;
}
}
// File contracts/libraries/token/IERC20.sol
pragma solidity 0.6.12;
/**
* @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);
}
// File contracts/core/VaultUtils.sol
pragma solidity 0.6.12;
contract VaultUtils is IVaultUtils, Governable {
using SafeMath for uint256;
struct Position {
uint256 size;
uint256 collateral;
uint256 averagePrice;
uint256 entryFundingRate;
uint256 reserveAmount;
int256 realisedPnl;
uint256 lastIncreasedTime;
}
IVault public vault;
uint256 public constant BASIS_POINTS_DIVISOR = 10000;
uint256 public constant FUNDING_RATE_PRECISION = 1000000;
constructor(IVault _vault) public {
vault = _vault;
}
function updateCumulativeFundingRate(address /* _collateralToken */, address /* _indexToken */) public override returns (bool) {
return true;
}
function validateIncreasePosition(address /* _account */, address /* _collateralToken */, address /* _indexToken */, uint256 /* _sizeDelta */, bool /* _isLong */) external override view {
// no additional validations
}
function validateDecreasePosition(address /* _account */, address /* _collateralToken */, address /* _indexToken */ , uint256 /* _collateralDelta */, uint256 /* _sizeDelta */, bool /* _isLong */, address /* _receiver */) external override view {
require(vault.isLeverageEnabled(), "Leverage not enabled");
}
function getPosition(address _account, address _collateralToken, address _indexToken, bool _isLong) internal view returns (Position memory) {
IVault _vault = vault;
Position memory position;
{
(uint256 size, uint256 collateral, uint256 averagePrice, uint256 entryFundingRate, /* reserveAmount */, /* realisedPnl */, /* hasProfit */, uint256 lastIncreasedTime) = _vault.getPosition(_account, _collateralToken, _indexToken, _isLong);
position.size = size;
position.collateral = collateral;
position.averagePrice = averagePrice;
position.entryFundingRate = entryFundingRate;
position.lastIncreasedTime = lastIncreasedTime;
}
return position;
}
function validateLiquidation(address _account, address _collateralToken, address _indexToken, bool _isLong, bool _raise) public view override returns (uint256, uint256) {
Position memory position = getPosition(_account, _collateralToken, _indexToken, _isLong);
IVault _vault = vault;
(bool hasProfit, uint256 delta) = _vault.getDelta(_indexToken, position.size, position.averagePrice, _isLong, position.lastIncreasedTime);
uint256 marginFees = getFundingFee(_account, _collateralToken, _indexToken, _isLong, position.size, position.entryFundingRate);
marginFees = marginFees.add(getPositionFee(_account, _collateralToken, _indexToken, _isLong, position.size));
if (!hasProfit && position.collateral < delta) {
if (_raise) { revert("Vault: losses exceed collateral"); }
return (1, marginFees);
}
uint256 remainingCollateral = position.collateral;
if (!hasProfit) {
remainingCollateral = position.collateral.sub(delta);
}
if (remainingCollateral < marginFees) {
if (_raise) { revert("Vault: fees exceed collateral"); }
// cap the fees to the remainingCollateral
return (1, remainingCollateral);
}
if (remainingCollateral < marginFees.add(_vault.liquidationFeeUsd())) {
if (_raise) { revert("Vault: liquidation fees exceed collateral"); }
return (1, marginFees);
}
if (remainingCollateral.mul(_vault.maxLeverage()) < position.size.mul(BASIS_POINTS_DIVISOR)) {
if (_raise) { revert("Vault: maxLeverage exceeded"); }
return (2, marginFees);
}
return (0, marginFees);
}
function getEntryFundingRate(address _collateralToken, address /* _indexToken */, bool /* _isLong */) public override view returns (uint256) {
return vault.cumulativeFundingRates(_collateralToken);
}
function getPositionFee(address /* _account */, address /* _collateralToken */, address /* _indexToken */, bool /* _isLong */, uint256 _sizeDelta) public override view returns (uint256) {
if (_sizeDelta == 0) { return 0; }
uint256 afterFeeUsd = _sizeDelta.mul(BASIS_POINTS_DIVISOR.sub(vault.marginFeeBasisPoints())).div(BASIS_POINTS_DIVISOR);
return _sizeDelta.sub(afterFeeUsd);
}
function getFundingFee(address /* _account */, address _collateralToken, address /* _indexToken */, bool /* _isLong */, uint256 _size, uint256 _entryFundingRate) public override view returns (uint256) {
if (_size == 0) { return 0; }
uint256 fundingRate = vault.cumulativeFundingRates(_collateralToken).sub(_entryFundingRate);
if (fundingRate == 0) { return 0; }
return _size.mul(fundingRate).div(FUNDING_RATE_PRECISION);
}
function getBuyUsdgFeeBasisPoints(address _token, uint256 _usdgAmount) public override view returns (uint256) {
return getFeeBasisPoints(_token, _usdgAmount, vault.mintBurnFeeBasisPoints(), vault.taxBasisPoints(), true);
}
function getSellUsdgFeeBasisPoints(address _token, uint256 _usdgAmount) public override view returns (uint256) {
return getFeeBasisPoints(_token, _usdgAmount, vault.mintBurnFeeBasisPoints(), vault.taxBasisPoints(), false);
}
function getSwapFeeBasisPoints(address _tokenIn, address _tokenOut, uint256 _usdgAmount) public override view returns (uint256) {
bool isStableSwap = vault.stableTokens(_tokenIn) && vault.stableTokens(_tokenOut);
uint256 baseBps = isStableSwap ? vault.stableSwapFeeBasisPoints() : vault.swapFeeBasisPoints();
uint256 taxBps = isStableSwap ? vault.stableTaxBasisPoints() : vault.taxBasisPoints();
uint256 feesBasisPoints0 = getFeeBasisPoints(_tokenIn, _usdgAmount, baseBps, taxBps, true);
uint256 feesBasisPoints1 = getFeeBasisPoints(_tokenOut, _usdgAmount, baseBps, taxBps, false);
// use the higher of the two fee basis points
return feesBasisPoints0 > feesBasisPoints1 ? feesBasisPoints0 : feesBasisPoints1;
}
// cases to consider
// 1. initialAmount is far from targetAmount, action increases balance slightly => high rebate
// 2. initialAmount is far from targetAmount, action increases balance largely => high rebate
// 3. initialAmount is close to targetAmount, action increases balance slightly => low rebate
// 4. initialAmount is far from targetAmount, action reduces balance slightly => high tax
// 5. initialAmount is far from targetAmount, action reduces balance largely => high tax
// 6. initialAmount is close to targetAmount, action reduces balance largely => low tax
// 7. initialAmount is above targetAmount, nextAmount is below targetAmount and vice versa
// 8. a large swap should have similar fees as the same trade split into multiple smaller swaps
function getFeeBasisPoints(address _token, uint256 _usdgDelta, uint256 _feeBasisPoints, uint256 _taxBasisPoints, bool _increment) public override view returns (uint256) {
if (!vault.hasDynamicFees()) { return _feeBasisPoints; }
uint256 initialAmount = vault.usdgAmounts(_token);
uint256 nextAmount = initialAmount.add(_usdgDelta);
if (!_increment) {
nextAmount = _usdgDelta > initialAmount ? 0 : initialAmount.sub(_usdgDelta);
}
uint256 targetAmount = vault.getTargetUsdgAmount(_token);
if (targetAmount == 0) { return _feeBasisPoints; }
uint256 initialDiff = initialAmount > targetAmount ? initialAmount.sub(targetAmount) : targetAmount.sub(initialAmount);
uint256 nextDiff = nextAmount > targetAmount ? nextAmount.sub(targetAmount) : targetAmount.sub(nextAmount);
// action improves relative asset balance
if (nextDiff < initialDiff) {
uint256 rebateBps = _taxBasisPoints.mul(initialDiff).div(targetAmount);
return rebateBps > _feeBasisPoints ? 0 : _feeBasisPoints.sub(rebateBps);
}
uint256 averageDiff = initialDiff.add(nextDiff).div(2);
if (averageDiff > targetAmount) {
averageDiff = targetAmount;
}
uint256 taxBps = _taxBasisPoints.mul(averageDiff).div(targetAmount);
return _feeBasisPoints.add(taxBps);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"contract IVault","name":"_vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BASIS_POINTS_DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FUNDING_RATE_PRECISION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_usdgAmount","type":"uint256"}],"name":"getBuyUsdgFeeBasisPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_collateralToken","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"getEntryFundingRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_usdgDelta","type":"uint256"},{"internalType":"uint256","name":"_feeBasisPoints","type":"uint256"},{"internalType":"uint256","name":"_taxBasisPoints","type":"uint256"},{"internalType":"bool","name":"_increment","type":"bool"}],"name":"getFeeBasisPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"_collateralToken","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"_size","type":"uint256"},{"internalType":"uint256","name":"_entryFundingRate","type":"uint256"}],"name":"getFundingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"_sizeDelta","type":"uint256"}],"name":"getPositionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_usdgAmount","type":"uint256"}],"name":"getSellUsdgFeeBasisPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenIn","type":"address"},{"internalType":"address","name":"_tokenOut","type":"address"},{"internalType":"uint256","name":"_usdgAmount","type":"uint256"}],"name":"getSwapFeeBasisPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gov","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_gov","type":"address"}],"name":"setGov","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"updateCumulativeFundingRate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"name":"validateDecreasePosition","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"validateIncreasePosition","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_collateralToken","type":"address"},{"internalType":"address","name":"_indexToken","type":"address"},{"internalType":"bool","name":"_isLong","type":"bool"},{"internalType":"bool","name":"_raise","type":"bool"}],"name":"validateLiquidation","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b506040516117a33803806117a38339818101604052602081101561003357600080fd5b5051600080546001600160a01b03199081163317909155600180546001600160a01b0390931692909116919091179055611731806100726000396000f3fe608060405234801561001057600080fd5b50600436106100d05760003560e01c8063126082cf146100d557806312d43a51146100ef5780634adeddc6146101135780636be6026b1461013f57806381d11a23146101475780639d5c28fa1461019d578063b1cc53ab146101e1578063c7e074c314610219578063cfad57a214610259578063d54d5a9f1461027f578063da133816146102de578063da76524c14610314578063eb0835bf1461035e578063fbfa77cf1461038a578063fbfded6d14610392578063fdaf6ac3146103d4575b600080fd5b6100dd610418565b60408051918252519081900360200190f35b6100f761041e565b604080516001600160a01b039092168252519081900360200190f35b6100dd6004803603604081101561012957600080fd5b506001600160a01b03813516906020013561042d565b6100dd61052f565b61019b600480360360e081101561015d57600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359160808201359160a081013515159160c09091013516610536565b005b61019b600480360360a08110156101b357600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001351515610601565b6100dd600480360360608110156101f757600080fd5b506001600160a01b038135811691602081013590911690604001351515610608565b6100dd600480360360a081101561022f57600080fd5b506001600160a01b038135169060208101359060408101359060608101359060800135151561068d565b61019b6004803603602081101561026f57600080fd5b50356001600160a01b0316610921565b6102c5600480360360a081101561029557600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013515159060800135151561099a565b6040805192835260208301919091528051918290030190f35b6100dd600480360360608110156102f457600080fd5b506001600160a01b03813581169160208101359091169060400135610d62565b6100dd600480360360c081101561032a57600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013515159060808101359060a001356110a6565b6100dd6004803603604081101561037457600080fd5b506001600160a01b03813516906020013561116c565b6100f7611265565b6103c0600480360360408110156103a857600080fd5b506001600160a01b0381358116916020013516611274565b604080519115158252519081900360200190f35b6100dd600480360360a08110156103ea57600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101351515906080013561127c565b61271081565b6000546001600160a01b031681565b60006105268383600160009054906101000a90046001600160a01b03166001600160a01b0316634d47b3046040518163ffffffff1660e01b815260040160206040518083038186803b15801561048257600080fd5b505afa158015610496573d6000803e3d6000fd5b505050506040513d60208110156104ac57600080fd5b505160015460408051637a210a2b60e01b815290516001600160a01b0390921691637a210a2b91600480820192602092909190829003018186803b1580156104f357600080fd5b505afa158015610507573d6000803e3d6000fd5b505050506040513d602081101561051d57600080fd5b5051600161068d565b90505b92915050565b620f424081565b600160009054906101000a90046001600160a01b03166001600160a01b0316633e72a2626040518163ffffffff1660e01b815260040160206040518083038186803b15801561058457600080fd5b505afa158015610598573d6000803e3d6000fd5b505050506040513d60208110156105ae57600080fd5b50516105f8576040805162461bcd60e51b815260206004820152601460248201527313195d995c9859d9481b9bdd08195b98589b195960621b604482015290519081900360640190fd5b50505050505050565b5050505050565b6001546040805163c65bc7b160e01b81526001600160a01b0386811660048301529151600093929092169163c65bc7b191602480820192602092909190829003018186803b15801561065957600080fd5b505afa15801561066d573d6000803e3d6000fd5b505050506040513d602081101561068357600080fd5b5051949350505050565b60015460408051639f392eb360e01b815290516000926001600160a01b031691639f392eb3916004808301926020929190829003018186803b1580156106d257600080fd5b505afa1580156106e6573d6000803e3d6000fd5b505050506040513d60208110156106fc57600080fd5b5051610709575082610918565b60015460408051631aa4ace560e01b81526001600160a01b03898116600483015291516000939290921691631aa4ace591602480820192602092909190829003018186803b15801561075a57600080fd5b505afa15801561076e573d6000803e3d6000fd5b505050506040513d602081101561078457600080fd5b505190506000610794828861133a565b9050836107b7578187116107b1576107ac8288611392565b6107b4565b60005b90505b60015460408051633a05dcc160e01b81526001600160a01b038b8116600483015291516000939290921691633a05dcc191602480820192602092909190829003018186803b15801561080857600080fd5b505afa15801561081c573d6000803e3d6000fd5b505050506040513d602081101561083257600080fd5b505190508061084657869350505050610918565b600081841161085e576108598285611392565b610868565b6108688483611392565b905060008284116108825761087d8385611392565b61088c565b61088c8484611392565b9050818110156108d45760006108ac846108a68b866113d4565b9061142d565b90508981116108c4576108bf8a82611392565b6108c7565b60005b9650505050505050610918565b60006108e560026108a6858561133a565b9050838111156108f25750825b6000610902856108a68c856113d4565b905061090e8b8261133a565b9750505050505050505b95945050505050565b6000546001600160a01b03163314610978576040805162461bcd60e51b815260206004820152601560248201527423b7bb32b93730b136329d103337b93134b23232b760591b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806109a5611674565b6109b18888888861146c565b600154815160408084015160c08501518251635c07eaab60e01b81526001600160a01b038d81166004830152602482019590955260448101929092528a1515606483015260848201528151949550919092169260009283928592635c07eaab9260a480840193919291829003018186803b158015610a2e57600080fd5b505afa158015610a42573d6000803e3d6000fd5b505050506040513d6040811015610a5857600080fd5b50805160209091015185516060870151929450909250600091610a83918e918e918e918e91906110a6565b9050610aa0610a998d8d8d8d8a6000015161127c565b829061133a565b905082158015610ab35750818560200151105b15610b1b578715610b0b576040805162461bcd60e51b815260206004820152601f60248201527f5661756c743a206c6f737365732065786365656420636f6c6c61746572616c00604482015290519081900360640190fd5b600196509450610d589350505050565b602085015183610b37576020860151610b349084611392565b90505b81811015610ba3578815610b92576040805162461bcd60e51b815260206004820152601d60248201527f5661756c743a20666565732065786365656420636f6c6c61746572616c000000604482015290519081900360640190fd5b600197509550610d58945050505050565b610c12856001600160a01b031663174d26946040518163ffffffff1660e01b815260040160206040518083038186803b158015610bdf57600080fd5b505afa158015610bf3573d6000803e3d6000fd5b505050506040513d6020811015610c0957600080fd5b5051839061133a565b811015610c67578815610c565760405162461bcd60e51b81526004018080602001828103825260298152602001806116b26029913960400191505060405180910390fd5b50600196509450610d589350505050565b8551610c75906127106113d4565b610ce4866001600160a01b031663ae3302c26040518163ffffffff1660e01b815260040160206040518083038186803b158015610cb157600080fd5b505afa158015610cc5573d6000803e3d6000fd5b505050506040513d6020811015610cdb57600080fd5b505183906113d4565b1015610d4c578815610d3b576040805162461bcd60e51b815260206004820152601b60248201527a15985d5b1d0e881b585e13195d995c9859d948195e18d959591959602a1b604482015290519081900360640190fd5b50600296509450610d589350505050565b50600096509450505050505b9550959350505050565b600154604080516342b60b0360e01b81526001600160a01b0386811660048301529151600093849316916342b60b03916024808301926020929190829003018186803b158015610db157600080fd5b505afa158015610dc5573d6000803e3d6000fd5b505050506040513d6020811015610ddb57600080fd5b50518015610e5e5750600154604080516342b60b0360e01b81526001600160a01b038781166004830152915191909216916342b60b03916024808301926020929190829003018186803b158015610e3157600080fd5b505afa158015610e45573d6000803e3d6000fd5b505050506040513d6020811015610e5b57600080fd5b50515b9050600081610ee657600160009054906101000a90046001600160a01b03166001600160a01b031663a22f23926040518163ffffffff1660e01b815260040160206040518083038186803b158015610eb557600080fd5b505afa158015610ec9573d6000803e3d6000fd5b505050506040513d6020811015610edf57600080fd5b5051610f61565b600160009054906101000a90046001600160a01b03166001600160a01b031663df73a2676040518163ffffffff1660e01b815260040160206040518083038186803b158015610f3457600080fd5b505afa158015610f48573d6000803e3d6000fd5b505050506040513d6020811015610f5e57600080fd5b50515b9050600082610fe957600160009054906101000a90046001600160a01b03166001600160a01b0316637a210a2b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fb857600080fd5b505afa158015610fcc573d6000803e3d6000fd5b505050506040513d6020811015610fe257600080fd5b5051611064565b600160009054906101000a90046001600160a01b03166001600160a01b03166310eb56c26040518163ffffffff1660e01b815260040160206040518083038186803b15801561103757600080fd5b505afa15801561104b573d6000803e3d6000fd5b505050506040513d602081101561106157600080fd5b50515b9050600061107688878585600161068d565b9050600061108888888686600061068d565b90508082116110975780611099565b815b9998505050505050505050565b6000826110b557506000611162565b6001546040805163c65bc7b160e01b81526001600160a01b038981166004830152915160009361113c93879391169163c65bc7b191602480820192602092909190829003018186803b15801561110a57600080fd5b505afa15801561111e573d6000803e3d6000fd5b505050506040513d602081101561113457600080fd5b505190611392565b90508061114d576000915050611162565b61115e620f42406108a686846113d4565b9150505b9695505050505050565b60006105268383600160009054906101000a90046001600160a01b03166001600160a01b0316634d47b3046040518163ffffffff1660e01b815260040160206040518083038186803b1580156111c157600080fd5b505afa1580156111d5573d6000803e3d6000fd5b505050506040513d60208110156111eb57600080fd5b505160015460408051637a210a2b60e01b815290516001600160a01b0390921691637a210a2b91600480820192602092909190829003018186803b15801561123257600080fd5b505afa158015611246573d6000803e3d6000fd5b505050506040513d602081101561125c57600080fd5b5051600061068d565b6001546001600160a01b031681565b600192915050565b60008161128b57506000610918565b60006113236127106108a661131c600160009054906101000a90046001600160a01b03166001600160a01b031663318bc6896040518163ffffffff1660e01b815260040160206040518083038186803b1580156112e757600080fd5b505afa1580156112fb573d6000803e3d6000fd5b505050506040513d602081101561131157600080fd5b505161271090611392565b86906113d4565b905061132f8382611392565b979650505050505050565b600082820183811015610526576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b600061052683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611578565b6000826113e357506000610529565b828202828482816113f057fe5b04146105265760405162461bcd60e51b81526004018080602001828103825260218152602001806116db6021913960400191505060405180910390fd5b600061052683836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b81525061160f565b611474611674565b6001546001600160a01b0316611488611674565b6000806000806000866001600160a01b0316634a3f088d8d8d8d8d6040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b03168152602001836001600160a01b0316815260200182151581526020019450505050506101006040518083038186803b15801561150a57600080fd5b505afa15801561151e573d6000803e3d6000fd5b505050506040513d61010081101561153557600080fd5b50805160208083015160408085015160608087015160e090970151958d52938c01929092528a015288019190915260c087015250939a9950505050505050505050565b600081848411156116075760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156115cc5781810151838201526020016115b4565b50505050905090810190601f1680156115f95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000818361165e5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156115cc5781810151838201526020016115b4565b50600083858161166a57fe5b0495945050505050565b6040518060e0016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152509056fe5661756c743a206c69717569646174696f6e20666565732065786365656420636f6c6c61746572616c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212202c701a41fdb2f7d4fe8d22b186207b907c870b5a233bc1a86514029f94bab42264736f6c634300060c00330000000000000000000000009cc4e8e60a2c9a67ac7d20f54607f98efba38acf
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100d05760003560e01c8063126082cf146100d557806312d43a51146100ef5780634adeddc6146101135780636be6026b1461013f57806381d11a23146101475780639d5c28fa1461019d578063b1cc53ab146101e1578063c7e074c314610219578063cfad57a214610259578063d54d5a9f1461027f578063da133816146102de578063da76524c14610314578063eb0835bf1461035e578063fbfa77cf1461038a578063fbfded6d14610392578063fdaf6ac3146103d4575b600080fd5b6100dd610418565b60408051918252519081900360200190f35b6100f761041e565b604080516001600160a01b039092168252519081900360200190f35b6100dd6004803603604081101561012957600080fd5b506001600160a01b03813516906020013561042d565b6100dd61052f565b61019b600480360360e081101561015d57600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359160808201359160a081013515159160c09091013516610536565b005b61019b600480360360a08110156101b357600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001351515610601565b6100dd600480360360608110156101f757600080fd5b506001600160a01b038135811691602081013590911690604001351515610608565b6100dd600480360360a081101561022f57600080fd5b506001600160a01b038135169060208101359060408101359060608101359060800135151561068d565b61019b6004803603602081101561026f57600080fd5b50356001600160a01b0316610921565b6102c5600480360360a081101561029557600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013515159060800135151561099a565b6040805192835260208301919091528051918290030190f35b6100dd600480360360608110156102f457600080fd5b506001600160a01b03813581169160208101359091169060400135610d62565b6100dd600480360360c081101561032a57600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013515159060808101359060a001356110a6565b6100dd6004803603604081101561037457600080fd5b506001600160a01b03813516906020013561116c565b6100f7611265565b6103c0600480360360408110156103a857600080fd5b506001600160a01b0381358116916020013516611274565b604080519115158252519081900360200190f35b6100dd600480360360a08110156103ea57600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101351515906080013561127c565b61271081565b6000546001600160a01b031681565b60006105268383600160009054906101000a90046001600160a01b03166001600160a01b0316634d47b3046040518163ffffffff1660e01b815260040160206040518083038186803b15801561048257600080fd5b505afa158015610496573d6000803e3d6000fd5b505050506040513d60208110156104ac57600080fd5b505160015460408051637a210a2b60e01b815290516001600160a01b0390921691637a210a2b91600480820192602092909190829003018186803b1580156104f357600080fd5b505afa158015610507573d6000803e3d6000fd5b505050506040513d602081101561051d57600080fd5b5051600161068d565b90505b92915050565b620f424081565b600160009054906101000a90046001600160a01b03166001600160a01b0316633e72a2626040518163ffffffff1660e01b815260040160206040518083038186803b15801561058457600080fd5b505afa158015610598573d6000803e3d6000fd5b505050506040513d60208110156105ae57600080fd5b50516105f8576040805162461bcd60e51b815260206004820152601460248201527313195d995c9859d9481b9bdd08195b98589b195960621b604482015290519081900360640190fd5b50505050505050565b5050505050565b6001546040805163c65bc7b160e01b81526001600160a01b0386811660048301529151600093929092169163c65bc7b191602480820192602092909190829003018186803b15801561065957600080fd5b505afa15801561066d573d6000803e3d6000fd5b505050506040513d602081101561068357600080fd5b5051949350505050565b60015460408051639f392eb360e01b815290516000926001600160a01b031691639f392eb3916004808301926020929190829003018186803b1580156106d257600080fd5b505afa1580156106e6573d6000803e3d6000fd5b505050506040513d60208110156106fc57600080fd5b5051610709575082610918565b60015460408051631aa4ace560e01b81526001600160a01b03898116600483015291516000939290921691631aa4ace591602480820192602092909190829003018186803b15801561075a57600080fd5b505afa15801561076e573d6000803e3d6000fd5b505050506040513d602081101561078457600080fd5b505190506000610794828861133a565b9050836107b7578187116107b1576107ac8288611392565b6107b4565b60005b90505b60015460408051633a05dcc160e01b81526001600160a01b038b8116600483015291516000939290921691633a05dcc191602480820192602092909190829003018186803b15801561080857600080fd5b505afa15801561081c573d6000803e3d6000fd5b505050506040513d602081101561083257600080fd5b505190508061084657869350505050610918565b600081841161085e576108598285611392565b610868565b6108688483611392565b905060008284116108825761087d8385611392565b61088c565b61088c8484611392565b9050818110156108d45760006108ac846108a68b866113d4565b9061142d565b90508981116108c4576108bf8a82611392565b6108c7565b60005b9650505050505050610918565b60006108e560026108a6858561133a565b9050838111156108f25750825b6000610902856108a68c856113d4565b905061090e8b8261133a565b9750505050505050505b95945050505050565b6000546001600160a01b03163314610978576040805162461bcd60e51b815260206004820152601560248201527423b7bb32b93730b136329d103337b93134b23232b760591b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806109a5611674565b6109b18888888861146c565b600154815160408084015160c08501518251635c07eaab60e01b81526001600160a01b038d81166004830152602482019590955260448101929092528a1515606483015260848201528151949550919092169260009283928592635c07eaab9260a480840193919291829003018186803b158015610a2e57600080fd5b505afa158015610a42573d6000803e3d6000fd5b505050506040513d6040811015610a5857600080fd5b50805160209091015185516060870151929450909250600091610a83918e918e918e918e91906110a6565b9050610aa0610a998d8d8d8d8a6000015161127c565b829061133a565b905082158015610ab35750818560200151105b15610b1b578715610b0b576040805162461bcd60e51b815260206004820152601f60248201527f5661756c743a206c6f737365732065786365656420636f6c6c61746572616c00604482015290519081900360640190fd5b600196509450610d589350505050565b602085015183610b37576020860151610b349084611392565b90505b81811015610ba3578815610b92576040805162461bcd60e51b815260206004820152601d60248201527f5661756c743a20666565732065786365656420636f6c6c61746572616c000000604482015290519081900360640190fd5b600197509550610d58945050505050565b610c12856001600160a01b031663174d26946040518163ffffffff1660e01b815260040160206040518083038186803b158015610bdf57600080fd5b505afa158015610bf3573d6000803e3d6000fd5b505050506040513d6020811015610c0957600080fd5b5051839061133a565b811015610c67578815610c565760405162461bcd60e51b81526004018080602001828103825260298152602001806116b26029913960400191505060405180910390fd5b50600196509450610d589350505050565b8551610c75906127106113d4565b610ce4866001600160a01b031663ae3302c26040518163ffffffff1660e01b815260040160206040518083038186803b158015610cb157600080fd5b505afa158015610cc5573d6000803e3d6000fd5b505050506040513d6020811015610cdb57600080fd5b505183906113d4565b1015610d4c578815610d3b576040805162461bcd60e51b815260206004820152601b60248201527a15985d5b1d0e881b585e13195d995c9859d948195e18d959591959602a1b604482015290519081900360640190fd5b50600296509450610d589350505050565b50600096509450505050505b9550959350505050565b600154604080516342b60b0360e01b81526001600160a01b0386811660048301529151600093849316916342b60b03916024808301926020929190829003018186803b158015610db157600080fd5b505afa158015610dc5573d6000803e3d6000fd5b505050506040513d6020811015610ddb57600080fd5b50518015610e5e5750600154604080516342b60b0360e01b81526001600160a01b038781166004830152915191909216916342b60b03916024808301926020929190829003018186803b158015610e3157600080fd5b505afa158015610e45573d6000803e3d6000fd5b505050506040513d6020811015610e5b57600080fd5b50515b9050600081610ee657600160009054906101000a90046001600160a01b03166001600160a01b031663a22f23926040518163ffffffff1660e01b815260040160206040518083038186803b158015610eb557600080fd5b505afa158015610ec9573d6000803e3d6000fd5b505050506040513d6020811015610edf57600080fd5b5051610f61565b600160009054906101000a90046001600160a01b03166001600160a01b031663df73a2676040518163ffffffff1660e01b815260040160206040518083038186803b158015610f3457600080fd5b505afa158015610f48573d6000803e3d6000fd5b505050506040513d6020811015610f5e57600080fd5b50515b9050600082610fe957600160009054906101000a90046001600160a01b03166001600160a01b0316637a210a2b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fb857600080fd5b505afa158015610fcc573d6000803e3d6000fd5b505050506040513d6020811015610fe257600080fd5b5051611064565b600160009054906101000a90046001600160a01b03166001600160a01b03166310eb56c26040518163ffffffff1660e01b815260040160206040518083038186803b15801561103757600080fd5b505afa15801561104b573d6000803e3d6000fd5b505050506040513d602081101561106157600080fd5b50515b9050600061107688878585600161068d565b9050600061108888888686600061068d565b90508082116110975780611099565b815b9998505050505050505050565b6000826110b557506000611162565b6001546040805163c65bc7b160e01b81526001600160a01b038981166004830152915160009361113c93879391169163c65bc7b191602480820192602092909190829003018186803b15801561110a57600080fd5b505afa15801561111e573d6000803e3d6000fd5b505050506040513d602081101561113457600080fd5b505190611392565b90508061114d576000915050611162565b61115e620f42406108a686846113d4565b9150505b9695505050505050565b60006105268383600160009054906101000a90046001600160a01b03166001600160a01b0316634d47b3046040518163ffffffff1660e01b815260040160206040518083038186803b1580156111c157600080fd5b505afa1580156111d5573d6000803e3d6000fd5b505050506040513d60208110156111eb57600080fd5b505160015460408051637a210a2b60e01b815290516001600160a01b0390921691637a210a2b91600480820192602092909190829003018186803b15801561123257600080fd5b505afa158015611246573d6000803e3d6000fd5b505050506040513d602081101561125c57600080fd5b5051600061068d565b6001546001600160a01b031681565b600192915050565b60008161128b57506000610918565b60006113236127106108a661131c600160009054906101000a90046001600160a01b03166001600160a01b031663318bc6896040518163ffffffff1660e01b815260040160206040518083038186803b1580156112e757600080fd5b505afa1580156112fb573d6000803e3d6000fd5b505050506040513d602081101561131157600080fd5b505161271090611392565b86906113d4565b905061132f8382611392565b979650505050505050565b600082820183811015610526576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b600061052683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611578565b6000826113e357506000610529565b828202828482816113f057fe5b04146105265760405162461bcd60e51b81526004018080602001828103825260218152602001806116db6021913960400191505060405180910390fd5b600061052683836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b81525061160f565b611474611674565b6001546001600160a01b0316611488611674565b6000806000806000866001600160a01b0316634a3f088d8d8d8d8d6040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b03168152602001836001600160a01b0316815260200182151581526020019450505050506101006040518083038186803b15801561150a57600080fd5b505afa15801561151e573d6000803e3d6000fd5b505050506040513d61010081101561153557600080fd5b50805160208083015160408085015160608087015160e090970151958d52938c01929092528a015288019190915260c087015250939a9950505050505050505050565b600081848411156116075760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156115cc5781810151838201526020016115b4565b50505050905090810190601f1680156115f95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000818361165e5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156115cc5781810151838201526020016115b4565b50600083858161166a57fe5b0495945050505050565b6040518060e0016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152509056fe5661756c743a206c69717569646174696f6e20666565732065786365656420636f6c6c61746572616c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212202c701a41fdb2f7d4fe8d22b186207b907c870b5a233bc1a86514029f94bab42264736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000009cc4e8e60a2c9a67ac7d20f54607f98efba38acf
-----Decoded View---------------
Arg [0] : _vault (address): 0x9cC4E8e60a2c9a67Ac7D20f54607f98EfBA38AcF
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000009cc4e8e60a2c9a67ac7d20f54607f98efba38acf
Deployed Bytecode Sourcemap
17954:8476:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18318:52;;;:::i;:::-;;;;;;;;;;;;;;;;9423:18;;;:::i;:::-;;;;-1:-1:-1;;;;;9423:18:0;;;;;;;;;;;;;;22916:236;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22916:236:0;;;;;;;;:::i;18377:56::-;;;:::i;18922:321::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18922:321:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18682:232;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18682:232:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;21800:213::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21800:213:0;;;;;;;;;;;;;;;;;;;:::i;24996:1431::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24996:1431:0;;;;;;;;;;;;;;;;;;;;;;;;;:::i;9623:76::-;;;;;;;;;;;;;;;;-1:-1:-1;9623:76:0;-1:-1:-1;;;;;9623:76:0;;:::i;20027:1765::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20027:1765:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;23406:779;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23406:779:0;;;;;;;;;;;;;;;;;:::i;22441:467::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22441:467:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;23160:238::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23160:238:0;;;;;;;;:::i;18290:19::-;;;:::i;18517:157::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18517:157:0;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;22021:412;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22021:412:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18318:52::-;18365:5;18318:52;:::o;9423:18::-;;;-1:-1:-1;;;;;9423:18:0;;:::o;22916:236::-;23017:7;23044:100;23062:6;23070:11;23083:5;;;;;;;;;-1:-1:-1;;;;;23083:5:0;-1:-1:-1;;;;;23083:28:0;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23083:30:0;23115:5;;:22;;;-1:-1:-1;;;23115:22:0;;;;-1:-1:-1;;;;;23115:5:0;;;;:20;;:22;;;;;23083:30;;23115:22;;;;;;;;:5;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23115:22:0;23139:4;23044:17;:100::i;:::-;23037:107;;22916:236;;;;;:::o;18377:56::-;18426:7;18377:56;:::o;18922:321::-;19185:5;;;;;;;;;-1:-1:-1;;;;;19185:5:0;-1:-1:-1;;;;;19185:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19185:25:0;19177:58;;;;;-1:-1:-1;;;19177:58:0;;;;;;;;;;;;-1:-1:-1;;;19177:58:0;;;;;;;;;;;;;;;18922:321;;;;;;;:::o;18682:232::-;;;;;;:::o;21800:213::-;21959:5;;:46;;;-1:-1:-1;;;21959:46:0;;-1:-1:-1;;;;;21959:46:0;;;;;;;;;21932:7;;21959:5;;;;;:28;;:46;;;;;;;;;;;;;;;:5;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21959:46:0;;21800:213;-1:-1:-1;;;;21800:213:0:o;24996:1431::-;25181:5;;:22;;;-1:-1:-1;;;25181:22:0;;;;25156:7;;-1:-1:-1;;;;;25181:5:0;;:20;;:22;;;;;;;;;;;;;;:5;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25181:22:0;25176:56;;-1:-1:-1;25214:15:0;25207:22;;25176:56;25268:5;;:25;;;-1:-1:-1;;;25268:25:0;;-1:-1:-1;;;;;25268:25:0;;;;;;;;;25244:21;;25268:5;;;;;:17;;:25;;;;;;;;;;;;;;;:5;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25268:25:0;;-1:-1:-1;25304:18:0;25325:29;25268:25;25343:10;25325:17;:29::i;:::-;25304:50;;25370:10;25365:119;;25423:13;25410:10;:26;:62;;25443:29;:13;25461:10;25443:17;:29::i;:::-;25410:62;;;25439:1;25410:62;25397:75;;25365:119;25519:5;;:33;;;-1:-1:-1;;;25519:33:0;;-1:-1:-1;;;;;25519:33:0;;;;;;;;;25496:20;;25519:5;;;;;:25;;:33;;;;;;;;;;;;;;;:5;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25519:33:0;;-1:-1:-1;25567:17:0;25563:50;;25595:15;25588:22;;;;;;;25563:50;25625:19;25663:12;25647:13;:28;:96;;25712:31;:12;25729:13;25712:16;:31::i;:::-;25647:96;;;25678:31;:13;25696:12;25678:17;:31::i;:::-;25625:118;;25754:16;25786:12;25773:10;:25;:87;;25832:28;:12;25849:10;25832:16;:28::i;:::-;25773:87;;;25801:28;:10;25816:12;25801:14;:28::i;:::-;25754:106;;25939:11;25928:8;:22;25924:211;;;25967:17;25987:50;26024:12;25987:32;:15;26007:11;25987:19;:32::i;:::-;:36;;:50::i;:::-;25967:70;;26071:15;26059:9;:27;:64;;26093:30;:15;26113:9;26093:19;:30::i;:::-;26059:64;;;26089:1;26059:64;26052:71;;;;;;;;;;25924:211;26147:19;26169:32;26199:1;26169:25;:11;26185:8;26169:15;:25::i;:32::-;26147:54;;26230:12;26216:11;:26;26212:85;;;-1:-1:-1;26273:12:0;26212:85;26307:14;26324:50;26361:12;26324:32;:15;26344:11;26324:19;:32::i;:50::-;26307:67;-1:-1:-1;26392:27:0;:15;26307:67;26392:19;:27::i;:::-;26385:34;;;;;;;;;24996:1431;;;;;;;;:::o;9623:76::-;9566:3;;-1:-1:-1;;;;;9566:3:0;9552:10;:17;9544:51;;;;;-1:-1:-1;;;9544:51:0;;;;;;;;;;;;-1:-1:-1;;;9544:51:0;;;;;;;;;;;;;;;9681:3:::1;:10:::0;;-1:-1:-1;;;;;;9681:10:0::1;-1:-1:-1::0;;;;;9681:10:0;;;::::1;::::0;;;::::1;::::0;;9623:76::o;20027:1765::-;20178:7;20187;20207:24;;:::i;:::-;20234:61;20246:8;20256:16;20274:11;20287:7;20234:11;:61::i;:::-;20322:5;;20403:13;;20418:21;;;;;20450:26;;;;20374:103;;-1:-1:-1;;;20374:103:0;;-1:-1:-1;;;;;20374:103:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20207:88;;-1:-1:-1;20322:5:0;;;;;20306:13;;;;20322:5;;20374:15;;:103;;;;;20418:21;;20374:103;;;;;;20322:5;20374:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20374:103:0;;;;;;;20573:13;;20588:25;;;;20374:103;;-1:-1:-1;20374:103:0;;-1:-1:-1;20488:18:0;;20509:105;;20523:8;;20533:16;;20551:11;;20564:7;;20573:13;20509;:105::i;:::-;20488:126;;20638:95;20653:79;20668:8;20678:16;20696:11;20709:7;20718:8;:13;;;20653:14;:79::i;:::-;20638:10;;:14;:95::i;:::-;20625:108;;20751:9;20750:10;:41;;;;;20786:5;20764:8;:19;;;:27;20750:41;20746:168;;;20812:6;20808:58;;;20822:41;;;-1:-1:-1;;;20822:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;20808:58;20888:1;;-1:-1:-1;20891:10:0;-1:-1:-1;20880:22:0;;-1:-1:-1;;;;20880:22:0;20746:168;20956:19;;;;20991:9;20986:95;;21039:19;;;;:30;;21063:5;21039:23;:30::i;:::-;21017:52;;20986:95;21119:10;21097:19;:32;21093:222;;;21150:6;21146:56;;;21160:39;;;-1:-1:-1;;;21160:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;21146:56;21280:1;;-1:-1:-1;21283:19:0;-1:-1:-1;21272:31:0;;-1:-1:-1;;;;;21272:31:0;21093:222;21353:42;21368:6;-1:-1:-1;;;;;21368:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21368:26:0;21353:10;;:14;:42::i;:::-;21331:19;:64;21327:201;;;21416:6;21412:68;;;21426:51;;-1:-1:-1;;;21426:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21412:68;-1:-1:-1;21502:1:0;;-1:-1:-1;21505:10:0;-1:-1:-1;21494:22:0;;-1:-1:-1;;;;21494:22:0;21327:201;21592:13;;:39;;18365:5;21592:17;:39::i;:::-;21544:45;21568:6;-1:-1:-1;;;;;21568:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21568:20:0;21544:19;;:23;:45::i;:::-;:87;21540:210;;;21652:6;21648:54;;;21662:37;;;-1:-1:-1;;;21662:37:0;;;;;;;;;;;;-1:-1:-1;;;21662:37:0;;;;;;;;;;;;;;21648:54;-1:-1:-1;21724:1:0;;-1:-1:-1;21727:10:0;-1:-1:-1;21716:22:0;;-1:-1:-1;;;;21716:22:0;21540:210;-1:-1:-1;21770:1:0;;-1:-1:-1;21773:10:0;-1:-1:-1;;;;;20027:1765:0;;;;;;;;;:::o;23406:779::-;23565:5;;:28;;;-1:-1:-1;;;23565:28:0;;-1:-1:-1;;;;;23565:28:0;;;;;;;;;23525:7;;;;23565:5;;:18;;:28;;;;;;;;;;;;;;:5;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23565:28:0;:61;;;;-1:-1:-1;23597:5:0;;:29;;;-1:-1:-1;;;23597:29:0;;-1:-1:-1;;;;;23597:29:0;;;;;;;;;:5;;;;;:18;;:29;;;;;;;;;;;;;;:5;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23597:29:0;23565:61;23545:81;;23637:15;23655:12;:76;;23705:5;;;;;;;;;-1:-1:-1;;;;;23705:5:0;-1:-1:-1;;;;;23705:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23705:26:0;23655:76;;;23670:5;;;;;;;;;-1:-1:-1;;;;;23670:5:0;-1:-1:-1;;;;;23670:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23670:32:0;23655:76;23637:94;;23742:14;23759:12;:68;;23805:5;;;;;;;;;-1:-1:-1;;;;;23805:5:0;-1:-1:-1;;;;;23805:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23805:22:0;23759:68;;;23774:5;;;;;;;;;-1:-1:-1;;;;;23774:5:0;-1:-1:-1;;;;;23774:26:0;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23774:28:0;23759:68;23742:85;;23838:24;23865:63;23883:8;23893:11;23906:7;23915:6;23923:4;23865:17;:63::i;:::-;23838:90;;23939:24;23966:65;23984:9;23995:11;24008:7;24017:6;24025:5;23966:17;:65::i;:::-;23939:92;;24123:16;24104;:35;:73;;24161:16;24104:73;;;24142:16;24104:73;24097:80;23406:779;-1:-1:-1;;;;;;;;;23406:779:0:o;22441:467::-;22633:7;22657:10;22653:29;;-1:-1:-1;22678:1:0;22671:8;;22653:29;22716:5;;:46;;;-1:-1:-1;;;22716:46:0;;-1:-1:-1;;;;;22716:46:0;;;;;;;;;22694:19;;22716:69;;22767:17;;22716:5;;;:28;;:46;;;;;;;;;;;;;;;:5;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22716:46:0;;:50;:69::i;:::-;22694:91;-1:-1:-1;22800:16:0;22796:35;;22827:1;22820:8;;;;;22796:35;22850:50;18426:7;22850:22;:5;22860:11;22850:9;:22::i;:50::-;22843:57;;;22441:467;;;;;;;;;:::o;23160:238::-;23262:7;23289:101;23307:6;23315:11;23328:5;;;;;;;;;-1:-1:-1;;;;;23328:5:0;-1:-1:-1;;;;;23328:28:0;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23328:30:0;23360:5;;:22;;;-1:-1:-1;;;23360:22:0;;;;-1:-1:-1;;;;;23360:5:0;;;;:20;;:22;;;;;23328:30;;23360:22;;;;;;;;:5;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23360:22:0;23384:5;23289:17;:101::i;18290:19::-;;;-1:-1:-1;;;;;18290:19:0;;:::o;18517:157::-;18662:4;18517:157;;;;:::o;22021:412::-;22198:7;22222:15;22218:34;;-1:-1:-1;22248:1:0;22241:8;;22218:34;22262:19;22284:96;18365:5;22284:70;22299:54;22324:5;;;;;;;;;-1:-1:-1;;;;;22324:5:0;-1:-1:-1;;;;;22324:26:0;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22324:28:0;18365:5;;22299:24;:54::i;:::-;22284:10;;:14;:70::i;:96::-;22262:118;-1:-1:-1;22398:27:0;:10;22262:118;22398:14;:27::i;:::-;22391:34;22021:412;-1:-1:-1;;;;;;;22021:412:0:o;10628:181::-;10686:7;10718:5;;;10742:6;;;;10734:46;;;;;-1:-1:-1;;;10734:46:0;;;;;;;;;;;;-1:-1:-1;;;10734:46:0;;;;;;;;;;;;;;11092:136;11150:7;11177:43;11181:1;11184;11177:43;;;;;;;;;;;;;;;;;:3;:43::i;11982:471::-;12040:7;12285:6;12281:47;;-1:-1:-1;12315:1:0;12308:8;;12281:47;12352:5;;;12356:1;12352;:5;:1;12376:5;;;;;:10;12368:56;;;;-1:-1:-1;;;12368:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12929:132;12987:7;13014:39;13018:1;13021;13014:39;;;;;;;;;;;;;-1:-1:-1;;;13014:39:0;;;:3;:39::i;19251:768::-;19374:15;;:::i;:::-;19418:5;;-1:-1:-1;;;;;19418:5:0;19434:24;;:::i;:::-;19485:12;19499:18;19519:20;19541:24;19624:25;19653:6;-1:-1:-1;;;;;19653:18:0;;19672:8;19682:16;19700:11;19713:7;19653:68;;;;;;;;;;;;;-1:-1:-1;;;;;19653:68:0;;;;;;-1:-1:-1;;;;;19653:68:0;;;;;;-1:-1:-1;;;;;19653:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19653:68:0;;;;;;;;;;;;;;;;;;;;;;19736:20;;;19771:19;;;:32;;;;19818:21;;:36;19869:25;;:44;;;;19653:68;19928:26;;:46;-1:-1:-1;19736:20:0;;19251:768;-1:-1:-1;;;;;;;;;;19251:768:0:o;11531:192::-;11617:7;11653:12;11645:6;;;;11637:29;;;;-1:-1:-1;;;11637:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11689:5:0;;;11531:192::o;13557:278::-;13643:7;13678:12;13671:5;13663:28;;;;-1:-1:-1;;;13663:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13702:9;13718:1;13714;:5;;;;;;;13557:278;-1:-1:-1;;;;;13557:278:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
ipfs://2c701a41fdb2f7d4fe8d22b186207b907c870b5a233bc1a86514029f94bab422
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in S
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.