Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 110 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Open Position | 11599270 | 1892 days ago | IN | 0 ETH | 0.08646956 | ||||
| Open Position | 11091991 | 1970 days ago | IN | 0 ETH | 0.08692119 | ||||
| Close Position | 10108977 | 2122 days ago | IN | 0 ETH | 0.08793218 | ||||
| Close Position | 9986090 | 2141 days ago | IN | 0 ETH | 0.00190102 | ||||
| Close Position | 9929631 | 2150 days ago | IN | 0 ETH | 0.02426259 | ||||
| Open Position | 9878459 | 2158 days ago | IN | 0 ETH | 0.00396289 | ||||
| Close Position F... | 9858867 | 2161 days ago | IN | 0 ETH | 0.01217298 | ||||
| Close Position F... | 9858863 | 2161 days ago | IN | 0 ETH | 0.01228741 | ||||
| Close Position | 9834290 | 2164 days ago | IN | 0 ETH | 0.00224314 | ||||
| Open Position | 9826259 | 2166 days ago | IN | 0 ETH | 0.00011302 | ||||
| Open Position | 9826229 | 2166 days ago | IN | 0 ETH | 0.00024885 | ||||
| Open Position | 9826223 | 2166 days ago | IN | 0 ETH | 0.00014133 | ||||
| Open Position | 9810183 | 2168 days ago | IN | 0 ETH | 0.00250578 | ||||
| Close Position | 9810176 | 2168 days ago | IN | 0 ETH | 0.00004513 | ||||
| Close Position | 9810176 | 2168 days ago | IN | 0 ETH | 0.00204215 | ||||
| Open Position | 9790211 | 2171 days ago | IN | 0 ETH | 0.01247701 | ||||
| Close Position | 9790191 | 2171 days ago | IN | 0 ETH | 0.01323248 | ||||
| Open Position | 9790187 | 2171 days ago | IN | 0 ETH | 0.00007472 | ||||
| Open Position | 9790150 | 2171 days ago | IN | 0 ETH | 0.00651089 | ||||
| Close Position | 9788524 | 2171 days ago | IN | 0 ETH | 0.00961319 | ||||
| Open Position | 9767859 | 2175 days ago | IN | 0 ETH | 0.00930859 | ||||
| Close Position | 9767847 | 2175 days ago | IN | 0 ETH | 0.00904624 | ||||
| Open Position | 9750267 | 2177 days ago | IN | 0 ETH | 0.00417257 | ||||
| Close Position F... | 9743377 | 2178 days ago | IN | 0 ETH | 0.0267319 | ||||
| Open Position | 9730291 | 2180 days ago | IN | 0 ETH | 0.02114461 |
Latest 25 internal transactions (View All)
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
OneLeverage
Compiler Version
v0.5.16+commit.9c3226ce
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2020-02-16
*/
// File: @openzeppelin/contracts/GSN/Context.sol
pragma solidity ^0.5.0;
/*
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with GSN meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
contract Context {
// Empty internal constructor, to prevent people from mistakenly deploying
// an instance of this contract, which should be used via inheritance.
constructor () internal { }
// solhint-disable-previous-line no-empty-blocks
function _msgSender() internal view returns (address payable) {
return msg.sender;
}
function _msgData() internal view returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
// File: @openzeppelin/contracts/token/ERC20/IERC20.sol
pragma solidity ^0.5.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP. Does not include
* the optional functions; to access them see {ERC20Detailed}.
*/
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: @openzeppelin/contracts/math/SafeMath.sol
pragma solidity ^0.5.0;
/**
* @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.
*
* _Available since v2.4.0._
*/
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.
*
* _Available since v2.4.0._
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
// Solidity only automatically asserts when dividing by 0
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.
*
* _Available since v2.4.0._
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
// File: @openzeppelin/contracts/token/ERC20/ERC20.sol
pragma solidity ^0.5.0;
/**
* @dev Implementation of the {IERC20} interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using {_mint}.
* For a generic mechanism see {ERC20Mintable}.
*
* TIP: For a detailed writeup see our guide
* https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
* to implement supply mechanisms].
*
* We have followed general OpenZeppelin guidelines: functions revert instead
* of returning `false` on failure. This behavior is nonetheless conventional
* and does not conflict with the expectations of ERC20 applications.
*
* Additionally, an {Approval} event is emitted on calls to {transferFrom}.
* This allows applications to reconstruct the allowance for all accounts just
* by listening to said events. Other implementations of the EIP may not emit
* these events, as it isn't required by the specification.
*
* Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
* functions have been added to mitigate the well-known issues around setting
* allowances. See {IERC20-approve}.
*/
contract ERC20 is Context, IERC20 {
using SafeMath for uint256;
mapping (address => uint256) private _balances;
mapping (address => mapping (address => uint256)) private _allowances;
uint256 private _totalSupply;
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `recipient` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address recipient, uint256 amount) public returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 amount) public returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Emits an {Approval} event indicating the updated allowance. This is not
* required by the EIP. See the note at the beginning of {ERC20};
*
* Requirements:
* - `sender` and `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
* - the caller must have allowance for `sender`'s tokens of at least
* `amount`.
*/
function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
/**
* @dev Atomically increases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
/**
* @dev Atomically decreases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
* - `spender` must have allowance for the caller of at least
* `subtractedValue`.
*/
function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
/**
* @dev Moves tokens `amount` from `sender` to `recipient`.
*
* This is internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* Requirements:
*
* - `sender` cannot be the zero address.
* - `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
*/
function _transfer(address sender, address recipient, uint256 amount) internal {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
}
/** @dev Creates `amount` tokens and assigns them to `account`, increasing
* the total supply.
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* Requirements
*
* - `to` cannot be the zero address.
*/
function _mint(address account, uint256 amount) internal {
require(account != address(0), "ERC20: mint to the zero address");
_totalSupply = _totalSupply.add(amount);
_balances[account] = _balances[account].add(amount);
emit Transfer(address(0), account, amount);
}
/**
* @dev Destroys `amount` tokens from `account`, reducing the
* total supply.
*
* Emits a {Transfer} event with `to` set to the zero address.
*
* Requirements
*
* - `account` cannot be the zero address.
* - `account` must have at least `amount` tokens.
*/
function _burn(address account, uint256 amount) internal {
require(account != address(0), "ERC20: burn from the zero address");
_balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
_totalSupply = _totalSupply.sub(amount);
emit Transfer(account, address(0), amount);
}
/**
* @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
*
* This is internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*/
function _approve(address owner, address spender, uint256 amount) internal {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
/**
* @dev Destroys `amount` tokens from `account`.`amount` is then deducted
* from the caller's allowance.
*
* See {_burn} and {_approve}.
*/
function _burnFrom(address account, uint256 amount) internal {
_burn(account, amount);
_approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, "ERC20: burn amount exceeds allowance"));
}
}
// File: @openzeppelin/contracts/token/ERC20/ERC20Detailed.sol
pragma solidity ^0.5.0;
/**
* @dev Optional functions from the ERC20 standard.
*/
contract ERC20Detailed is IERC20 {
string private _name;
string private _symbol;
uint8 private _decimals;
/**
* @dev Sets the values for `name`, `symbol`, and `decimals`. All three of
* these values are immutable: they can only be set once during
* construction.
*/
constructor (string memory name, string memory symbol, uint8 decimals) public {
_name = name;
_symbol = symbol;
_decimals = decimals;
}
/**
* @dev Returns the name of the token.
*/
function name() public view returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5,05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei.
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view returns (uint8) {
return _decimals;
}
}
// File: contracts/IHolder.sol
pragma solidity ^0.5.0;
contract IHolder {
function stopLoss() public view returns(uint256);
function takeProfit() public view returns(uint256);
function openPosition(
IERC20 collateral,
IERC20 debt,
uint256 amount,
uint256 leverageRatio,
uint256 _stopLoss,
uint256 _takeProfit
)
external
payable
returns(uint256);
function closePosition(
IERC20 collateral,
IERC20 debt,
address user
)
external;
function collateralAmount(IERC20 token) public returns(uint256);
function borrowAmount(IERC20 token) public returns(uint256);
function pnl(IERC20 collateral, IERC20 debt, uint256 leverageRatio) public returns(uint256);
}
// File: contracts/HolderProxy.sol
pragma solidity ^0.5.0;
contract HolderProxy {
address public delegate;
address public owner = msg.sender;
function upgradeDelegate(address newDelegate) public {
require(msg.sender == owner, "Access denied");
if (delegate != newDelegate) {
delegate = newDelegate;
}
}
function() external payable {
address _impl = delegate;
require(_impl != address(0), "Delegate not initialized");
assembly {
let ptr := mload(0x40)
calldatacopy(ptr, 0, calldatasize)
let result := delegatecall(gas, _impl, ptr, calldatasize, 0, 0)
let size := returndatasize
returndatacopy(ptr, 0, size)
switch result
case 0 { revert(ptr, size) }
default { return(ptr, size) }
}
}
}
// File: @openzeppelin/contracts/utils/Address.sol
pragma solidity ^0.5.5;
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*/
function isContract(address account) internal view returns (bool) {
// According to EIP-1052, 0x0 is the value returned for not-yet created accounts
// and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
// for accounts without code, i.e. `keccak256('')`
bytes32 codehash;
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
// solhint-disable-next-line no-inline-assembly
assembly { codehash := extcodehash(account) }
return (codehash != accountHash && codehash != 0x0);
}
/**
* @dev Converts an `address` into `address payable`. Note that this is
* simply a type cast: the actual underlying value is not changed.
*
* _Available since v2.4.0._
*/
function toPayable(address account) internal pure returns (address payable) {
return address(uint160(account));
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*
* _Available since v2.4.0._
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
// solhint-disable-next-line avoid-call-value
(bool success, ) = recipient.call.value(amount)("");
require(success, "Address: unable to send value, recipient may have reverted");
}
}
// File: @openzeppelin/contracts/token/ERC20/SafeERC20.sol
pragma solidity ^0.5.0;
/**
* @title SafeERC20
* @dev Wrappers around ERC20 operations that throw on failure (when the token
* contract returns false). Tokens that return no value (and instead revert or
* throw on failure) are also supported, non-reverting calls are assumed to be
* successful.
* To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
*/
library SafeERC20 {
using SafeMath for uint256;
using Address for address;
function safeTransfer(IERC20 token, address to, uint256 value) internal {
callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
}
function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
}
function safeApprove(IERC20 token, address spender, uint256 value) internal {
// safeApprove should only be called when setting an initial allowance,
// or when resetting it to zero. To increase and decrease it, use
// 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
// solhint-disable-next-line max-line-length
require((value == 0) || (token.allowance(address(this), spender) == 0),
"SafeERC20: approve from non-zero to non-zero allowance"
);
callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
}
function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 newAllowance = token.allowance(address(this), spender).add(value);
callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero");
callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
/**
* @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
* on the return value: the return value is optional (but if data is returned, it must not be false).
* @param token The token targeted by the call.
* @param data The call data (encoded using abi.encode or one of its variants).
*/
function callOptionalReturn(IERC20 token, bytes memory data) private {
// We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
// we're implementing it ourselves.
// A Solidity high level call has three parts:
// 1. The target address is checked to verify it contains contract code
// 2. The call itself is made, and success asserted
// 3. The return value is decoded, which in turn checks the size of the returned data.
// solhint-disable-next-line max-line-length
require(address(token).isContract(), "SafeERC20: call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = address(token).call(data);
require(success, "SafeERC20: low-level call failed");
if (returndata.length > 0) { // Return data is optional
// solhint-disable-next-line max-line-length
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
}
// File: contracts/UniversalERC20.sol
pragma solidity ^0.5.0;
library UniversalERC20 {
using SafeMath for uint256;
using SafeERC20 for IERC20;
IERC20 private constant ZERO_ADDRESS = IERC20(0x0000000000000000000000000000000000000000);
IERC20 private constant ETH_ADDRESS = IERC20(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE);
function universalTransfer(IERC20 token, address to, uint256 amount) internal returns(bool) {
if (amount == 0) {
return true;
}
if (isETH(token)) {
address(uint160(to)).transfer(amount);
} else {
token.safeTransfer(to, amount);
return true;
}
}
function universalTransferFrom(IERC20 token, address from, address to, uint256 amount) internal {
if (amount == 0) {
return;
}
if (isETH(token)) {
require(from == msg.sender && msg.value >= amount, "msg.value is zero");
if (to != address(this)) {
address(uint160(to)).transfer(amount);
}
if (msg.value > amount) {
msg.sender.transfer(msg.value.sub(amount));
}
} else {
token.safeTransferFrom(from, to, amount);
}
}
function universalApprove(IERC20 token, address to, uint256 amount) internal {
if (!isETH(token)) {
if (amount > 0 && token.allowance(address(this), to) > 0) {
token.safeApprove(to, 0);
}
token.safeApprove(to, amount);
}
}
function universalBalanceOf(IERC20 token, address who) internal view returns (uint256) {
if (isETH(token)) {
return who.balance;
} else {
return token.balanceOf(who);
}
}
function universalDecimals(IERC20 token) internal view returns (uint256) {
if (isETH(token)) {
return 18;
}
(bool success, bytes memory data) = address(token).staticcall.gas(5000)(
abi.encodeWithSignature("decimals()")
);
if (!success) {
(success, data) = address(token).staticcall.gas(5000)(
abi.encodeWithSignature("DECIMALS()")
);
}
return success ? abi.decode(data, (uint256)) : 18;
}
function isETH(IERC20 token) internal pure returns(bool) {
return (address(token) == address(ZERO_ADDRESS) || address(token) == address(ETH_ADDRESS));
}
}
// File: contracts/OneLeverage.sol
pragma solidity ^0.5.0;
contract OneLeverage is ERC20, ERC20Detailed {
using UniversalERC20 for IERC20;
IERC20 public collateral;
IERC20 public debt;
uint256 public leverage;
mapping(address => IHolder) public holders;
event OpenPosition(
address indexed owner,
uint256 amount,
uint256 stopLoss,
uint256 takeProfit
);
event ClosePosition(
address indexed owner,
uint256 pnl
);
constructor(
string memory name,
string memory symbol,
IERC20 collateralToken,
IERC20 debtToken,
uint256 leverageRatio
)
public
ERC20Detailed(name, symbol, 18)
{
require(leverageRatio > 1, "Leverage ratio is too small");
require(leverageRatio <= 10, "Leverage ratio is too huge");
collateral = collateralToken;
debt = debtToken;
leverage = leverageRatio;
}
function openPosition(
uint256 amount,
address newDelegate,
uint256 stopLoss,
uint256 takeProfit
) external payable {
require(balanceOf(msg.sender) == 0, "Can't open second position");
debt.universalTransferFrom(msg.sender, address(this), amount);
IHolder holder = getOrCreateHolder(msg.sender);
if (newDelegate != address(0)) {
HolderProxy(address(uint160(address(holder)))).upgradeDelegate(newDelegate);
}
debt.universalApprove(
address(holder),
uint256(- 1)
);
uint256 balance = holder.openPosition.value(msg.value)(collateral, debt, amount, leverage, stopLoss, takeProfit);
_mint(msg.sender, balance);
emit OpenPosition(msg.sender, balance, stopLoss, takeProfit);
}
function closePosition(address newDelegate) external {
closePositionFor(msg.sender, newDelegate);
}
function closePositionFor(address user, address newDelegate) public {
require(balanceOf(user) != 0, "Can't close non-existing position");
IHolder holder = getOrCreateHolder(user);
if (newDelegate != address(0) && msg.sender == user) {
HolderProxy(address(uint160(address(holder)))).upgradeDelegate(newDelegate);
}
uint256 pnl = holder.pnl(collateral, debt, leverage);
require(
msg.sender == user
|| (
holder.stopLoss() != 0 &&
holder.stopLoss() <= pnl
)
|| (
holder.takeProfit() != 0 &&
holder.takeProfit() >= pnl
),
"Can close own position or position available for liquidation"
);
holder.closePosition(collateral, debt, user);
_burn(user, balanceOf(user));
emit ClosePosition(user, pnl);
}
// Internal
function getOrCreateHolder(address user) internal returns (IHolder) {
IHolder holder = holders[user];
if (holder == IHolder(0)) {
holder = IHolder(address(new HolderProxy()));
holders[user] = holder;
}
return holder;
}
function _transfer(address from, address to, uint256 amount) internal {
require(amount == balanceOf(from) && balanceOf(to) == 0, "CDP can't be partially moved");
super._transfer(from, to, amount);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"contract IERC20","name":"collateralToken","type":"address"},{"internalType":"contract IERC20","name":"debtToken","type":"address"},{"internalType":"uint256","name":"leverageRatio","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"pnl","type":"uint256"}],"name":"ClosePosition","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"stopLoss","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"takeProfit","type":"uint256"}],"name":"OpenPosition","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newDelegate","type":"address"}],"name":"closePosition","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"newDelegate","type":"address"}],"name":"closePositionFor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"collateral","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"debt","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"holders","outputs":[{"internalType":"contract IHolder","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"leverage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"newDelegate","type":"address"},{"internalType":"uint256","name":"stopLoss","type":"uint256"},{"internalType":"uint256","name":"takeProfit","type":"uint256"}],"name":"openPosition","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60806040523480156200001157600080fd5b506040516200229b3803806200229b833981810160405260a08110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b50604090815260208281015191830151606090930151875192955092935086918691601291620001cf9160039190860190620002ef565b508151620001e5906004906020850190620002ef565b506005805460ff191660ff9290921691909117905550506001811162000252576040805162461bcd60e51b815260206004820152601b60248201527f4c6576657261676520726174696f20697320746f6f20736d616c6c0000000000604482015290519081900360640190fd5b600a811115620002a9576040805162461bcd60e51b815260206004820152601a60248201527f4c6576657261676520726174696f20697320746f6f2068756765000000000000604482015290519081900360640190fd5b60058054610100600160a81b0319166101006001600160a01b0395861602179055600680546001600160a01b031916929093169190911790915560075550620003949050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200033257805160ff191683800117855562000362565b8280016001018555821562000362579182015b828111156200036257825182559160200191906001019062000345565b506200037092915062000374565b5090565b6200039191905b808211156200037057600081556001016200037b565b90565b611ef780620003a46000396000f3fe6080604052600436106101095760003560e01c80633950935111610095578063a457c2d711610064578063a457c2d7146103e1578063a9059cbb1461041a578063d8dfeb4514610453578063dd62ed3e14610468578063ea1fd323146104a357610109565b806339509351146103285780633e37eb521461036157806370a082311461039957806395d89b41146103cc57610109565b806318a5bbdc116100dc57806318a5bbdc1461023d57806323b872dd146102705780632c86d98e146102b35780632f86e2dd146102c8578063313ce567146102fd57610109565b806306fdde031461010e578063095ea7b3146101985780630dca59c1146101e557806318160ddd14610216575b600080fd5b34801561011a57600080fd5b506101236104de565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015d578181015183820152602001610145565b50505050905090810190601f16801561018a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101a457600080fd5b506101d1600480360360408110156101bb57600080fd5b506001600160a01b038135169060200135610574565b604080519115158252519081900360200190f35b3480156101f157600080fd5b506101fa610591565b604080516001600160a01b039092168252519081900360200190f35b34801561022257600080fd5b5061022b6105a0565b60408051918252519081900360200190f35b34801561024957600080fd5b506101fa6004803603602081101561026057600080fd5b50356001600160a01b03166105a6565b34801561027c57600080fd5b506101d16004803603606081101561029357600080fd5b506001600160a01b038135811691602081013590911690604001356105c1565b3480156102bf57600080fd5b5061022b61064e565b3480156102d457600080fd5b506102fb600480360360208110156102eb57600080fd5b50356001600160a01b0316610654565b005b34801561030957600080fd5b50610312610661565b6040805160ff9092168252519081900360200190f35b34801561033457600080fd5b506101d16004803603604081101561034b57600080fd5b506001600160a01b03813516906020013561066a565b6102fb6004803603608081101561037757600080fd5b508035906001600160a01b0360208201351690604081013590606001356106be565b3480156103a557600080fd5b5061022b600480360360208110156103bc57600080fd5b50356001600160a01b03166108e8565b3480156103d857600080fd5b50610123610903565b3480156103ed57600080fd5b506101d16004803603604081101561040457600080fd5b506001600160a01b038135169060200135610964565b34801561042657600080fd5b506101d16004803603604081101561043d57600080fd5b506001600160a01b0381351690602001356109d2565b34801561045f57600080fd5b506101fa6109e6565b34801561047457600080fd5b5061022b6004803603604081101561048b57600080fd5b506001600160a01b03813581169160200135166109fa565b3480156104af57600080fd5b506102fb600480360360408110156104c657600080fd5b506001600160a01b0381358116916020013516610a25565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561056a5780601f1061053f5761010080835404028352916020019161056a565b820191906000526020600020905b81548152906001019060200180831161054d57829003601f168201915b5050505050905090565b6000610588610581610e78565b8484610e7c565b50600192915050565b6006546001600160a01b031681565b60025490565b6008602052600090815260409020546001600160a01b031681565b60006105ce848484610f68565b610644846105da610e78565b61063f85604051806060016040528060288152602001611dac602891396001600160a01b038a16600090815260016020526040812090610618610e78565b6001600160a01b03168152602081019190915260400160002054919063ffffffff610fe616565b610e7c565b5060019392505050565b60075481565b61065e3382610a25565b50565b60055460ff1690565b6000610588610677610e78565b8461063f8560016000610688610e78565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61107d16565b6106c7336108e8565b15610719576040805162461bcd60e51b815260206004820152601a60248201527f43616e2774206f70656e207365636f6e6420706f736974696f6e000000000000604482015290519081900360640190fd5b600654610737906001600160a01b031633308763ffffffff6110de16565b600061074233611207565b90506001600160a01b038416156107c457806001600160a01b0316632da4e75c856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b1580156107ab57600080fd5b505af11580156107bf573d6000803e3d6000fd5b505050505b6006546107e3906001600160a01b03168260001963ffffffff61128916565b60055460065460075460408051630737594d60e21b81526001600160a01b036101009095048516600482015292841660248401526044830189905260648301919091526084820186905260a4820185905251600092841691631cdd653491349160c48082019260209290919082900301818588803b15801561086457600080fd5b505af1158015610878573d6000803e3d6000fd5b50505050506040513d602081101561088f57600080fd5b5051905061089d338261135a565b6040805182815260208101869052808201859052905133917f55958283558727388509f061e24ea85481ecb9f67ab19ccfe716aefb66aee5e6919081900360600190a2505050505050565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561056a5780601f1061053f5761010080835404028352916020019161056a565b6000610588610971610e78565b8461063f85604051806060016040528060258152602001611e9e602591396001600061099b610e78565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff610fe616565b60006105886109df610e78565b8484610f68565b60055461010090046001600160a01b031681565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610a2e826108e8565b610a695760405162461bcd60e51b8152600401808060200182810382526021815260200180611ce56021913960400191505060405180910390fd5b6000610a7483611207565b90506001600160a01b03821615801590610a965750336001600160a01b038416145b15610b0c57806001600160a01b0316632da4e75c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b158015610af357600080fd5b505af1158015610b07573d6000803e3d6000fd5b505050505b60055460065460075460408051639d1a3a2960e01b81526001600160a01b03610100909504851660048201529284166024840152604483019190915251600092841691639d1a3a2991606480830192602092919082900301818787803b158015610b7557600080fd5b505af1158015610b89573d6000803e3d6000fd5b505050506040513d6020811015610b9f57600080fd5b50519050336001600160a01b0385161480610c8c5750816001600160a01b031663527a15656040518163ffffffff1660e01b815260040160206040518083038186803b158015610bee57600080fd5b505afa158015610c02573d6000803e3d6000fd5b505050506040513d6020811015610c1857600080fd5b505115801590610c8c575080826001600160a01b031663527a15656040518163ffffffff1660e01b815260040160206040518083038186803b158015610c5d57600080fd5b505afa158015610c71573d6000803e3d6000fd5b505050506040513d6020811015610c8757600080fd5b505111155b80610d695750816001600160a01b03166370c105786040518163ffffffff1660e01b815260040160206040518083038186803b158015610ccb57600080fd5b505afa158015610cdf573d6000803e3d6000fd5b505050506040513d6020811015610cf557600080fd5b505115801590610d69575080826001600160a01b03166370c105786040518163ffffffff1660e01b815260040160206040518083038186803b158015610d3a57600080fd5b505afa158015610d4e573d6000803e3d6000fd5b505050506040513d6020811015610d6457600080fd5b505110155b610da45760405162461bcd60e51b815260040180806020018281038252603c815260200180611d70603c913960400191505060405180910390fd5b6005546006546040805163d9a9304f60e01b81526101009093046001600160a01b03908116600485015291821660248401528682166044840152519084169163d9a9304f91606480830192600092919082900301818387803b158015610e0957600080fd5b505af1158015610e1d573d6000803e3d6000fd5b50505050610e3384610e2e866108e8565b61144a565b6040805182815290516001600160a01b038616917ff7c2a3d1045b210b525d6f8529b0e1e43af45cdaf6ad4e2947df9dea2c87f9ad919081900360200190a250505050565b3390565b6001600160a01b038316610ec15760405162461bcd60e51b8152600401808060200182810382526024815260200180611e1a6024913960400191505060405180910390fd5b6001600160a01b038216610f065760405162461bcd60e51b8152600401808060200182810382526022815260200180611d286022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610f71836108e8565b81148015610f855750610f83826108e8565b155b610fd6576040805162461bcd60e51b815260206004820152601c60248201527f4344502063616e2774206265207061727469616c6c79206d6f76656400000000604482015290519081900360640190fd5b610fe1838383611546565b505050565b600081848411156110755760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561103a578181015183820152602001611022565b50505050905090810190601f1680156110675780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156110d7576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b806110e857611201565b6110f1846116a2565b156111e6576001600160a01b0383163314801561110e5750803410155b611153576040805162461bcd60e51b81526020600482015260116024820152706d73672e76616c7565206973207a65726f60781b604482015290519081900360640190fd5b6001600160a01b038216301461119b576040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611199573d6000803e3d6000fd5b505b803411156111e157336108fc6111b7348463ffffffff6116db16565b6040518115909202916000818181858888f193505050501580156111df573d6000803e3d6000fd5b505b611201565b6112016001600160a01b03851684848463ffffffff61171d16565b50505050565b6001600160a01b03808216600090815260086020526040812054909116806112835760405161123590611a7a565b604051809103906000f080158015611251573d6000803e3d6000fd5b506001600160a01b03848116600090815260086020526040902080546001600160a01b03191691831691909117905590505b92915050565b611292836116a2565b610fe157600081118015611320575060408051636eb1769f60e11b81523060048201526001600160a01b038481166024830152915160009286169163dd62ed3e916044808301926020929190829003018186803b1580156112f257600080fd5b505afa158015611306573d6000803e3d6000fd5b505050506040513d602081101561131c57600080fd5b5051115b15611340576113406001600160a01b03841683600063ffffffff61177716565b610fe16001600160a01b038416838363ffffffff61177716565b6001600160a01b0382166113b5576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6002546113c8908263ffffffff61107d16565b6002556001600160a01b0382166000908152602081905260409020546113f4908263ffffffff61107d16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b03821661148f5760405162461bcd60e51b8152600401808060200182810382526021815260200180611dd46021913960400191505060405180910390fd5b6114d281604051806060016040528060228152602001611d06602291396001600160a01b038516600090815260208190526040902054919063ffffffff610fe616565b6001600160a01b0383166000908152602081905260409020556002546114fe908263ffffffff6116db16565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6001600160a01b03831661158b5760405162461bcd60e51b8152600401808060200182810382526025815260200180611df56025913960400191505060405180910390fd5b6001600160a01b0382166115d05760405162461bcd60e51b8152600401808060200182810382526023815260200180611cc26023913960400191505060405180910390fd5b61161381604051806060016040528060268152602001611d4a602691396001600160a01b038616600090815260208190526040902054919063ffffffff610fe616565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611648908263ffffffff61107d16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60006001600160a01b038216158061128357506001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1492915050565b60006110d783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fe6565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611201908590611886565b8015806117fd575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156117cf57600080fd5b505afa1580156117e3573d6000803e3d6000fd5b505050506040513d60208110156117f957600080fd5b5051155b6118385760405162461bcd60e51b8152600401808060200182810382526036815260200180611e686036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052610fe19084905b611898826001600160a01b0316611a3e565b6118e9576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106119275780518252601f199092019160209182019101611908565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611989576040519150601f19603f3d011682016040523d82523d6000602084013e61198e565b606091505b5091509150816119e5576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561120157808060200190516020811015611a0157600080fd5b50516112015760405162461bcd60e51b815260040180806020018281038252602a815260200180611e3e602a913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611a7257508115155b949350505050565b61023a80611a888339019056fe6080604052600180546001600160a01b0319163317905534801561002257600080fd5b50610208806100326000396000f3fe6080604052600436106100345760003560e01c80632da4e75c146100b75780638da5cb5b146100ec578063c89e43611461011d575b6000546001600160a01b031680610092576040805162461bcd60e51b815260206004820152601860248201527f44656c6567617465206e6f7420696e697469616c697a65640000000000000000604482015290519081900360640190fd5b60405136600082376000803683855af43d806000843e8180156100b3578184f35b8184fd5b3480156100c357600080fd5b506100ea600480360360208110156100da57600080fd5b50356001600160a01b0316610132565b005b3480156100f857600080fd5b506101016101b5565b604080516001600160a01b039092168252519081900360200190f35b34801561012957600080fd5b506101016101c4565b6001546001600160a01b03163314610181576040805162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc819195b9a5959609a1b604482015290519081900360640190fd5b6000546001600160a01b038281169116146101b257600080546001600160a01b0319166001600160a01b0383161790555b50565b6001546001600160a01b031681565b6000546001600160a01b03168156fea265627a7a723158200606126945cc27a89b3302420ac0514d8e516500816a92081b9f33d205e348fc64736f6c6343000510003245524332303a207472616e7366657220746f20746865207a65726f206164647265737343616e277420636c6f7365206e6f6e2d6578697374696e6720706f736974696f6e45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636543616e20636c6f7365206f776e20706f736974696f6e206f7220706f736974696f6e20617661696c61626c6520666f72206c69717569646174696f6e45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820e57c2d50b5d9364ca071f015d07ec74353525a633abb8e2fb12d896788d913e564736f6c6343000510003200000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006b175474e89094c44da98b954eedeac495271d0f0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001031782e6167203278204554482d4441490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083278455448444149000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106101095760003560e01c80633950935111610095578063a457c2d711610064578063a457c2d7146103e1578063a9059cbb1461041a578063d8dfeb4514610453578063dd62ed3e14610468578063ea1fd323146104a357610109565b806339509351146103285780633e37eb521461036157806370a082311461039957806395d89b41146103cc57610109565b806318a5bbdc116100dc57806318a5bbdc1461023d57806323b872dd146102705780632c86d98e146102b35780632f86e2dd146102c8578063313ce567146102fd57610109565b806306fdde031461010e578063095ea7b3146101985780630dca59c1146101e557806318160ddd14610216575b600080fd5b34801561011a57600080fd5b506101236104de565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015d578181015183820152602001610145565b50505050905090810190601f16801561018a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101a457600080fd5b506101d1600480360360408110156101bb57600080fd5b506001600160a01b038135169060200135610574565b604080519115158252519081900360200190f35b3480156101f157600080fd5b506101fa610591565b604080516001600160a01b039092168252519081900360200190f35b34801561022257600080fd5b5061022b6105a0565b60408051918252519081900360200190f35b34801561024957600080fd5b506101fa6004803603602081101561026057600080fd5b50356001600160a01b03166105a6565b34801561027c57600080fd5b506101d16004803603606081101561029357600080fd5b506001600160a01b038135811691602081013590911690604001356105c1565b3480156102bf57600080fd5b5061022b61064e565b3480156102d457600080fd5b506102fb600480360360208110156102eb57600080fd5b50356001600160a01b0316610654565b005b34801561030957600080fd5b50610312610661565b6040805160ff9092168252519081900360200190f35b34801561033457600080fd5b506101d16004803603604081101561034b57600080fd5b506001600160a01b03813516906020013561066a565b6102fb6004803603608081101561037757600080fd5b508035906001600160a01b0360208201351690604081013590606001356106be565b3480156103a557600080fd5b5061022b600480360360208110156103bc57600080fd5b50356001600160a01b03166108e8565b3480156103d857600080fd5b50610123610903565b3480156103ed57600080fd5b506101d16004803603604081101561040457600080fd5b506001600160a01b038135169060200135610964565b34801561042657600080fd5b506101d16004803603604081101561043d57600080fd5b506001600160a01b0381351690602001356109d2565b34801561045f57600080fd5b506101fa6109e6565b34801561047457600080fd5b5061022b6004803603604081101561048b57600080fd5b506001600160a01b03813581169160200135166109fa565b3480156104af57600080fd5b506102fb600480360360408110156104c657600080fd5b506001600160a01b0381358116916020013516610a25565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561056a5780601f1061053f5761010080835404028352916020019161056a565b820191906000526020600020905b81548152906001019060200180831161054d57829003601f168201915b5050505050905090565b6000610588610581610e78565b8484610e7c565b50600192915050565b6006546001600160a01b031681565b60025490565b6008602052600090815260409020546001600160a01b031681565b60006105ce848484610f68565b610644846105da610e78565b61063f85604051806060016040528060288152602001611dac602891396001600160a01b038a16600090815260016020526040812090610618610e78565b6001600160a01b03168152602081019190915260400160002054919063ffffffff610fe616565b610e7c565b5060019392505050565b60075481565b61065e3382610a25565b50565b60055460ff1690565b6000610588610677610e78565b8461063f8560016000610688610e78565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61107d16565b6106c7336108e8565b15610719576040805162461bcd60e51b815260206004820152601a60248201527f43616e2774206f70656e207365636f6e6420706f736974696f6e000000000000604482015290519081900360640190fd5b600654610737906001600160a01b031633308763ffffffff6110de16565b600061074233611207565b90506001600160a01b038416156107c457806001600160a01b0316632da4e75c856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b1580156107ab57600080fd5b505af11580156107bf573d6000803e3d6000fd5b505050505b6006546107e3906001600160a01b03168260001963ffffffff61128916565b60055460065460075460408051630737594d60e21b81526001600160a01b036101009095048516600482015292841660248401526044830189905260648301919091526084820186905260a4820185905251600092841691631cdd653491349160c48082019260209290919082900301818588803b15801561086457600080fd5b505af1158015610878573d6000803e3d6000fd5b50505050506040513d602081101561088f57600080fd5b5051905061089d338261135a565b6040805182815260208101869052808201859052905133917f55958283558727388509f061e24ea85481ecb9f67ab19ccfe716aefb66aee5e6919081900360600190a2505050505050565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561056a5780601f1061053f5761010080835404028352916020019161056a565b6000610588610971610e78565b8461063f85604051806060016040528060258152602001611e9e602591396001600061099b610e78565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff610fe616565b60006105886109df610e78565b8484610f68565b60055461010090046001600160a01b031681565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610a2e826108e8565b610a695760405162461bcd60e51b8152600401808060200182810382526021815260200180611ce56021913960400191505060405180910390fd5b6000610a7483611207565b90506001600160a01b03821615801590610a965750336001600160a01b038416145b15610b0c57806001600160a01b0316632da4e75c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b158015610af357600080fd5b505af1158015610b07573d6000803e3d6000fd5b505050505b60055460065460075460408051639d1a3a2960e01b81526001600160a01b03610100909504851660048201529284166024840152604483019190915251600092841691639d1a3a2991606480830192602092919082900301818787803b158015610b7557600080fd5b505af1158015610b89573d6000803e3d6000fd5b505050506040513d6020811015610b9f57600080fd5b50519050336001600160a01b0385161480610c8c5750816001600160a01b031663527a15656040518163ffffffff1660e01b815260040160206040518083038186803b158015610bee57600080fd5b505afa158015610c02573d6000803e3d6000fd5b505050506040513d6020811015610c1857600080fd5b505115801590610c8c575080826001600160a01b031663527a15656040518163ffffffff1660e01b815260040160206040518083038186803b158015610c5d57600080fd5b505afa158015610c71573d6000803e3d6000fd5b505050506040513d6020811015610c8757600080fd5b505111155b80610d695750816001600160a01b03166370c105786040518163ffffffff1660e01b815260040160206040518083038186803b158015610ccb57600080fd5b505afa158015610cdf573d6000803e3d6000fd5b505050506040513d6020811015610cf557600080fd5b505115801590610d69575080826001600160a01b03166370c105786040518163ffffffff1660e01b815260040160206040518083038186803b158015610d3a57600080fd5b505afa158015610d4e573d6000803e3d6000fd5b505050506040513d6020811015610d6457600080fd5b505110155b610da45760405162461bcd60e51b815260040180806020018281038252603c815260200180611d70603c913960400191505060405180910390fd5b6005546006546040805163d9a9304f60e01b81526101009093046001600160a01b03908116600485015291821660248401528682166044840152519084169163d9a9304f91606480830192600092919082900301818387803b158015610e0957600080fd5b505af1158015610e1d573d6000803e3d6000fd5b50505050610e3384610e2e866108e8565b61144a565b6040805182815290516001600160a01b038616917ff7c2a3d1045b210b525d6f8529b0e1e43af45cdaf6ad4e2947df9dea2c87f9ad919081900360200190a250505050565b3390565b6001600160a01b038316610ec15760405162461bcd60e51b8152600401808060200182810382526024815260200180611e1a6024913960400191505060405180910390fd5b6001600160a01b038216610f065760405162461bcd60e51b8152600401808060200182810382526022815260200180611d286022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610f71836108e8565b81148015610f855750610f83826108e8565b155b610fd6576040805162461bcd60e51b815260206004820152601c60248201527f4344502063616e2774206265207061727469616c6c79206d6f76656400000000604482015290519081900360640190fd5b610fe1838383611546565b505050565b600081848411156110755760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561103a578181015183820152602001611022565b50505050905090810190601f1680156110675780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156110d7576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b806110e857611201565b6110f1846116a2565b156111e6576001600160a01b0383163314801561110e5750803410155b611153576040805162461bcd60e51b81526020600482015260116024820152706d73672e76616c7565206973207a65726f60781b604482015290519081900360640190fd5b6001600160a01b038216301461119b576040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611199573d6000803e3d6000fd5b505b803411156111e157336108fc6111b7348463ffffffff6116db16565b6040518115909202916000818181858888f193505050501580156111df573d6000803e3d6000fd5b505b611201565b6112016001600160a01b03851684848463ffffffff61171d16565b50505050565b6001600160a01b03808216600090815260086020526040812054909116806112835760405161123590611a7a565b604051809103906000f080158015611251573d6000803e3d6000fd5b506001600160a01b03848116600090815260086020526040902080546001600160a01b03191691831691909117905590505b92915050565b611292836116a2565b610fe157600081118015611320575060408051636eb1769f60e11b81523060048201526001600160a01b038481166024830152915160009286169163dd62ed3e916044808301926020929190829003018186803b1580156112f257600080fd5b505afa158015611306573d6000803e3d6000fd5b505050506040513d602081101561131c57600080fd5b5051115b15611340576113406001600160a01b03841683600063ffffffff61177716565b610fe16001600160a01b038416838363ffffffff61177716565b6001600160a01b0382166113b5576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6002546113c8908263ffffffff61107d16565b6002556001600160a01b0382166000908152602081905260409020546113f4908263ffffffff61107d16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b03821661148f5760405162461bcd60e51b8152600401808060200182810382526021815260200180611dd46021913960400191505060405180910390fd5b6114d281604051806060016040528060228152602001611d06602291396001600160a01b038516600090815260208190526040902054919063ffffffff610fe616565b6001600160a01b0383166000908152602081905260409020556002546114fe908263ffffffff6116db16565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6001600160a01b03831661158b5760405162461bcd60e51b8152600401808060200182810382526025815260200180611df56025913960400191505060405180910390fd5b6001600160a01b0382166115d05760405162461bcd60e51b8152600401808060200182810382526023815260200180611cc26023913960400191505060405180910390fd5b61161381604051806060016040528060268152602001611d4a602691396001600160a01b038616600090815260208190526040902054919063ffffffff610fe616565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611648908263ffffffff61107d16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60006001600160a01b038216158061128357506001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1492915050565b60006110d783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fe6565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611201908590611886565b8015806117fd575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156117cf57600080fd5b505afa1580156117e3573d6000803e3d6000fd5b505050506040513d60208110156117f957600080fd5b5051155b6118385760405162461bcd60e51b8152600401808060200182810382526036815260200180611e686036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052610fe19084905b611898826001600160a01b0316611a3e565b6118e9576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106119275780518252601f199092019160209182019101611908565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611989576040519150601f19603f3d011682016040523d82523d6000602084013e61198e565b606091505b5091509150816119e5576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561120157808060200190516020811015611a0157600080fd5b50516112015760405162461bcd60e51b815260040180806020018281038252602a815260200180611e3e602a913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611a7257508115155b949350505050565b61023a80611a888339019056fe6080604052600180546001600160a01b0319163317905534801561002257600080fd5b50610208806100326000396000f3fe6080604052600436106100345760003560e01c80632da4e75c146100b75780638da5cb5b146100ec578063c89e43611461011d575b6000546001600160a01b031680610092576040805162461bcd60e51b815260206004820152601860248201527f44656c6567617465206e6f7420696e697469616c697a65640000000000000000604482015290519081900360640190fd5b60405136600082376000803683855af43d806000843e8180156100b3578184f35b8184fd5b3480156100c357600080fd5b506100ea600480360360208110156100da57600080fd5b50356001600160a01b0316610132565b005b3480156100f857600080fd5b506101016101b5565b604080516001600160a01b039092168252519081900360200190f35b34801561012957600080fd5b506101016101c4565b6001546001600160a01b03163314610181576040805162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc819195b9a5959609a1b604482015290519081900360640190fd5b6000546001600160a01b038281169116146101b257600080546001600160a01b0319166001600160a01b0383161790555b50565b6001546001600160a01b031681565b6000546001600160a01b03168156fea265627a7a723158200606126945cc27a89b3302420ac0514d8e516500816a92081b9f33d205e348fc64736f6c6343000510003245524332303a207472616e7366657220746f20746865207a65726f206164647265737343616e277420636c6f7365206e6f6e2d6578697374696e6720706f736974696f6e45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636543616e20636c6f7365206f776e20706f736974696f6e206f7220706f736974696f6e20617661696c61626c6520666f72206c69717569646174696f6e45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820e57c2d50b5d9364ca071f015d07ec74353525a633abb8e2fb12d896788d913e564736f6c63430005100032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006b175474e89094c44da98b954eedeac495271d0f0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001031782e6167203278204554482d4441490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083278455448444149000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name (string): 1x.ag 2x ETH-DAI
Arg [1] : symbol (string): 2xETHDAI
Arg [2] : collateralToken (address): 0x0000000000000000000000000000000000000000
Arg [3] : debtToken (address): 0x6B175474E89094C44Da98b954EedeAC495271d0F
Arg [4] : leverageRatio (uint256): 2
-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [3] : 0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000010
Arg [6] : 31782e6167203278204554482d44414900000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [8] : 3278455448444149000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
30833:3434:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18592:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18592:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;18592:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12136:152;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12136:152:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12136:152:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;30958:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30958:18:0;;;:::i;:::-;;;;-1:-1:-1;;;;;30958:18:0;;;;;;;;;;;;;;11157:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11157:91:0;;;:::i;:::-;;;;;;;;;;;;;;;;31015:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31015:42:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;31015:42:0;-1:-1:-1;;;;;31015:42:0;;:::i;12760:304::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12760:304:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12760:304:0;;;;;;;;;;;;;;;;;:::i;30983:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30983:23:0;;;:::i;32651:113::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32651:113:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;32651:113:0;-1:-1:-1;;;;;32651:113:0;;:::i;:::-;;19444:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19444:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13473:210;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13473:210:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13473:210:0;;;;;;;;:::i;31791:852::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;31791:852:0;;;-1:-1:-1;;;;;31791:852:0;;;;;;;;;;;;;;;:::i;11311:110::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11311:110:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11311:110:0;-1:-1:-1;;;;;11311:110:0;;:::i;18794:87::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18794:87:0;;;:::i;14186:261::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14186:261:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14186:261:0;;;;;;;;:::i;11634:158::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11634:158:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11634:158:0;;;;;;;;:::i;30927:24::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30927:24:0;;;:::i;11855:134::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11855:134:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11855:134:0;;;;;;;;;;:::i;32772:951::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32772:951:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;32772:951:0;;;;;;;;;;:::i;18592:83::-;18662:5;18655:12;;;;;;;;-1:-1:-1;;18655:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18629:13;;18655:12;;18662:5;;18655:12;;18662:5;18655:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18592:83;:::o;12136:152::-;12202:4;12219:39;12228:12;:10;:12::i;:::-;12242:7;12251:6;12219:8;:39::i;:::-;-1:-1:-1;12276:4:0;12136:152;;;;:::o;30958:18::-;;;-1:-1:-1;;;;;30958:18:0;;:::o;11157:91::-;11228:12;;11157:91;:::o;31015:42::-;;;;;;;;;;;;-1:-1:-1;;;;;31015:42:0;;:::o;12760:304::-;12849:4;12866:36;12876:6;12884:9;12895:6;12866:9;:36::i;:::-;12913:121;12922:6;12930:12;:10;:12::i;:::-;12944:89;12982:6;12944:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12944:19:0;;;;;;:11;:19;;;;;;12964:12;:10;:12::i;:::-;-1:-1:-1;;;;;12944:33:0;;;;;;;;;;;;-1:-1:-1;12944:33:0;;;:89;;:37;:89;:::i;:::-;12913:8;:121::i;:::-;-1:-1:-1;13052:4:0;12760:304;;;;;:::o;30983:23::-;;;;:::o;32651:113::-;32715:41;32732:10;32744:11;32715:16;:41::i;:::-;32651:113;:::o;19444:83::-;19510:9;;;;19444:83;:::o;13473:210::-;13553:4;13570:83;13579:12;:10;:12::i;:::-;13593:7;13602:50;13641:10;13602:11;:25;13614:12;:10;:12::i;:::-;-1:-1:-1;;;;;13602:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;13602:25:0;;;:34;;;;;;;;;;;:50;:38;:50;:::i;31791:852::-;31967:21;31977:10;31967:9;:21::i;:::-;:26;31959:65;;;;;-1:-1:-1;;;31959:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;32037:4;;:61;;-1:-1:-1;;;;;32037:4:0;32064:10;32084:4;32091:6;32037:61;:26;:61;:::i;:::-;32111:14;32128:29;32146:10;32128:17;:29::i;:::-;32111:46;-1:-1:-1;;;;;;32172:25:0;;;32168:133;;32250:6;-1:-1:-1;;;;;32214:62:0;;32277:11;32214:75;;;;;;;;;;;;;-1:-1:-1;;;;;32214:75:0;-1:-1:-1;;;;;32214:75:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32214:75:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32214:75:0;;;;32168:133;32313:4;;:89;;-1:-1:-1;;;;;32313:4:0;32357:6;-1:-1:-1;;32313:89:0;:21;:89;:::i;:::-;32470:10;;32482:4;;32496:8;;32433:94;;;-1:-1:-1;;;32433:94:0;;-1:-1:-1;;;;;32470:10:0;;;;;;32433:94;;;;32482:4;;;32433:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;32433:19:0;;;;;32459:9;;32433:94;;;;;;;;;;;;;;;32459:9;32433:19;:94;;;5:2:-1;;;;30:1;27;20:12;5:2;32433:94:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32433:94:0;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;32433:94:0;;-1:-1:-1;32538:26:0;32544:10;32433:94;32538:5;:26::i;:::-;32580:55;;;;;;;;;;;;;;;;;;;;32593:10;;32580:55;;;;;;;;;;31791:852;;;;;;:::o;11311:110::-;-1:-1:-1;;;;;11395:18:0;11368:7;11395:18;;;;;;;;;;;;11311:110::o;18794:87::-;18866:7;18859:14;;;;;;;;-1:-1:-1;;18859:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18833:13;;18859:14;;18866:7;;18859:14;;18866:7;18859:14;;;;;;;;;;;;;;;;;;;;;;;;14186:261;14271:4;14288:129;14297:12;:10;:12::i;:::-;14311:7;14320:96;14359:15;14320:96;;;;;;;;;;;;;;;;;:11;:25;14332:12;:10;:12::i;:::-;-1:-1:-1;;;;;14320:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;14320:25:0;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;11634:158::-;11703:4;11720:42;11730:12;:10;:12::i;:::-;11744:9;11755:6;11720:9;:42::i;30927:24::-;;;;;;-1:-1:-1;;;;;30927:24:0;;:::o;11855:134::-;-1:-1:-1;;;;;11954:18:0;;;11927:7;11954:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11855:134::o;32772:951::-;32859:15;32869:4;32859:9;:15::i;:::-;32851:66;;;;-1:-1:-1;;;32851:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32930:14;32947:23;32965:4;32947:17;:23::i;:::-;32930:40;-1:-1:-1;;;;;;32985:25:0;;;;;;:47;;-1:-1:-1;33014:10:0;-1:-1:-1;;;;;33014:18:0;;;32985:47;32981:155;;;33085:6;-1:-1:-1;;;;;33049:62:0;;33112:11;33049:75;;;;;;;;;;;;;-1:-1:-1;;;;;33049:75:0;-1:-1:-1;;;;;33049:75:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33049:75:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33049:75:0;;;;32981:155;33173:10;;33185:4;;33191:8;;33162:38;;;-1:-1:-1;;;33162:38:0;;-1:-1:-1;;;;;33173:10:0;;;;;;33162:38;;;;33185:4;;;33162:38;;;;;;;;;;;;-1:-1:-1;;33162:10:0;;;;;:38;;;;;;;;;;;;;;-1:-1:-1;33162:10:0;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;33162:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33162:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33162:38:0;;-1:-1:-1;33233:10:0;-1:-1:-1;;;;;33233:18:0;;;;:136;;;33287:6;-1:-1:-1;;;;;33287:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33287:17:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33287:17:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33287:17:0;:22;;;;:67;;;33351:3;33330:6;-1:-1:-1;;;;;33330:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33330:17:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33330:17:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33330:17:0;:24;;33287:67;33233:258;;;;33405:6;-1:-1:-1;;;;;33405:17:0;;:19;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33405:19:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33405:19:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33405:19:0;:24;;;;:71;;;33473:3;33450:6;-1:-1:-1;;;;;33450:17:0;;:19;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33450:19:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33450:19:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33450:19:0;:26;;33405:71;33211:368;;;;-1:-1:-1;;;33211:368:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33613:10;;33625:4;;33592:44;;;-1:-1:-1;;;33592:44:0;;33613:10;;;;-1:-1:-1;;;;;33613:10:0;;;33592:44;;;;33625:4;;;33592:44;;;;;;;;;;;;:20;;;;;;:44;;;;;33625:4;;33592:44;;;;;;;33625:4;33592:20;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;33592:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33592:44:0;;;;33647:28;33653:4;33659:15;33669:4;33659:9;:15::i;:::-;33647:5;:28::i;:::-;33691:24;;;;;;;;-1:-1:-1;;;;;33691:24:0;;;;;;;;;;;;;32772:951;;;;:::o;858:98::-;938:10;858:98;:::o;17117:338::-;-1:-1:-1;;;;;17211:19:0;;17203:68;;;;-1:-1:-1;;;17203:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17290:21:0;;17282:68;;;;-1:-1:-1;;;17282:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17363:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17415:32;;;;;;;;;;;;;;;;;17117:338;;;:::o;34043:221::-;34142:15;34152:4;34142:9;:15::i;:::-;34132:6;:25;:47;;;;;34161:13;34171:2;34161:9;:13::i;:::-;:18;34132:47;34124:88;;;;;-1:-1:-1;;;34124:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;34223:33;34239:4;34245:2;34249:6;34223:15;:33::i;:::-;34043:221;;;:::o;5918:192::-;6004:7;6040:12;6032:6;;;;6024:29;;;;-1:-1:-1;;;6024:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6024:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6076:5:0;;;5918:192::o;4989:181::-;5047:7;5079:5;;;5103:6;;;;5095:46;;;;;-1:-1:-1;;;5095:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;5161:1;4989:181;-1:-1:-1;;;4989:181:0:o;28900:591::-;29011:11;29007:50;;29039:7;;29007:50;29073:12;29079:5;29073;:12::i;:::-;29069:415;;;-1:-1:-1;;;;;29110:18:0;;29118:10;29110:18;:41;;;;;29145:6;29132:9;:19;;29110:41;29102:71;;;;;-1:-1:-1;;;29102:71:0;;;;;;;;;;;;-1:-1:-1;;;29102:71:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;29192:19:0;;29206:4;29192:19;29188:97;;29232:37;;-1:-1:-1;;;;;29232:29:0;;;:37;;;;;29262:6;;29232:37;;;;29262:6;29232:29;:37;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29232:37:0;29188:97;29315:6;29303:9;:18;29299:101;;;29342:10;:42;29362:21;:9;29376:6;29362:21;:13;:21;:::i;:::-;29342:42;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29342:42:0;29299:101;29069:415;;;29432:40;-1:-1:-1;;;;;29432:22:0;;29455:4;29461:2;29465:6;29432:40;:22;:40;:::i;:::-;28900:591;;;;:::o;33750:285::-;-1:-1:-1;;;;;33846:13:0;;;33809:7;33846:13;;;:7;:13;;;;;;33809:7;;33846:13;33874:20;33870:134;;33936:17;;;;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;;;33970:13:0;;;;;;;:7;:13;;;;;:22;;-1:-1:-1;;;;;;33970:22:0;;;;;;;;;;;-1:-1:-1;33870:134:0;34021:6;33750:285;-1:-1:-1;;33750:285:0:o;29499:301::-;29592:12;29598:5;29592;:12::i;:::-;29587:206;;29634:1;29625:6;:10;:52;;;;-1:-1:-1;29639:34:0;;;-1:-1:-1;;;29639:34:0;;29663:4;29639:34;;;;-1:-1:-1;;;;;29639:34:0;;;;;;;;;29676:1;;29639:15;;;;;:34;;;;;;;;;;;;;;:15;:34;;;5:2:-1;;;;30:1;27;20:12;5:2;29639:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29639:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29639:34:0;:38;29625:52;29621:117;;;29698:24;-1:-1:-1;;;;;29698:17:0;;29716:2;29720:1;29698:24;:17;:24;:::i;:::-;29752:29;-1:-1:-1;;;;;29752:17:0;;29770:2;29774:6;29752:29;:17;:29;:::i;15689:308::-;-1:-1:-1;;;;;15765:21:0;;15757:65;;;;;-1:-1:-1;;;15757:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15850:12;;:24;;15867:6;15850:24;:16;:24;:::i;:::-;15835:12;:39;-1:-1:-1;;;;;15906:18:0;;:9;:18;;;;;;;;;;;:30;;15929:6;15906:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;15885:18:0;;:9;:18;;;;;;;;;;;:51;;;;15952:37;;;;;;;15885:18;;:9;;15952:37;;;;;;;;;;15689:308;;:::o;16329:348::-;-1:-1:-1;;;;;16405:21:0;;16397:67;;;;-1:-1:-1;;;16397:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16498:68;16521:6;16498:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16498:18:0;;:9;:18;;;;;;;;;;;;:68;;:22;:68;:::i;:::-;-1:-1:-1;;;;;16477:18:0;;:9;:18;;;;;;;;;;:89;16592:12;;:24;;16609:6;16592:24;:16;:24;:::i;:::-;16577:12;:39;16632:37;;;;;;;;16658:1;;-1:-1:-1;;;;;16632:37:0;;;;;;;;;;;;16329:348;;:::o;14937:471::-;-1:-1:-1;;;;;15035:20:0;;15027:70;;;;-1:-1:-1;;;15027:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15116:23:0;;15108:71;;;;-1:-1:-1;;;15108:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15212;15234:6;15212:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15212:17:0;;:9;:17;;;;;;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;15192:17:0;;;:9;:17;;;;;;;;;;;:91;;;;15317:20;;;;;;;:32;;15342:6;15317:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;15294:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;15365:35;;;;;;;15294:20;;15365:35;;;;;;;;;;;;;14937:471;;;:::o;30583:166::-;30634:4;-1:-1:-1;;;;;30659:39:0;;;;:81;;-1:-1:-1;;;;;;30702:38:0;;28492:42;30702:38;30651:90;30583:166;-1:-1:-1;;30583:166:0:o;5445:136::-;5503:7;5530:43;5534:1;5537;5530:43;;;;;;;;;;;;;;;;;:3;:43::i;25199:204::-;25326:68;;;-1:-1:-1;;;;;25326:68:0;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;25326:68:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;25300:95:0;;25319:5;;25300:18;:95::i;25411:621::-;25781:10;;;25780:62;;-1:-1:-1;25797:39:0;;;-1:-1:-1;;;25797:39:0;;25821:4;25797:39;;;;-1:-1:-1;;;;;25797:39:0;;;;;;;;;:15;;;;;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;25797:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25797:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25797:39:0;:44;25780:62;25772:152;;;;-1:-1:-1;;;25772:152:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25961:62;;;-1:-1:-1;;;;;25961:62:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;25961:62:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;25935:89:0;;25954:5;;27054:1114;27658:27;27666:5;-1:-1:-1;;;;;27658:25:0;;:27::i;:::-;27650:71;;;;;-1:-1:-1;;;27650:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;27795:12;27809:23;27844:5;-1:-1:-1;;;;;27836:19:0;27856:4;27836:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;27836:25:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;27794:67:0;;;;27880:7;27872:52;;;;;-1:-1:-1;;;27872:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27941:17;;:21;27937:224;;28083:10;28072:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28072:30:0;28064:85;;;;-1:-1:-1;;;28064:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22044:619;22104:4;22572:20;;22415:66;22612:23;;;;;;:42;;-1:-1:-1;22639:15:0;;;22612:42;22604:51;22044:619;-1:-1:-1;;;;22044:619:0:o;30833:3434::-;;;;;;;;:::o
Swarm Source
bzzr://e57c2d50b5d9364ca071f015d07ec74353525a633abb8e2fb12d896788d913e5
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
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.