Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 10 from a total of 10 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Register Typed C... | 18436045 | 343 days ago | IN | 0 ETH | 0.00105639 | ||||
Register Typed C... | 12174621 | 1278 days ago | IN | 0 ETH | 0.00344918 | ||||
Register Typed C... | 11451494 | 1389 days ago | IN | 0 ETH | 0.0042088 | ||||
Register Typed C... | 11054739 | 1450 days ago | IN | 0 ETH | 0.00326764 | ||||
Register Typed C... | 11036307 | 1453 days ago | IN | 0 ETH | 0.00084716 | ||||
Register Typed C... | 10994997 | 1459 days ago | IN | 0 ETH | 0.00325843 | ||||
Register Typed C... | 10994994 | 1459 days ago | IN | 0 ETH | 0.00330368 | ||||
Accept Ownership | 10994987 | 1459 days ago | IN | 0 ETH | 0.00160556 | ||||
Transfer Ownersh... | 10994984 | 1459 days ago | IN | 0 ETH | 0.00323623 | ||||
0x60806040 | 10994818 | 1459 days ago | IN | 0 ETH | 0.18826548 |
Latest 25 internal transactions (View All)
Advanced mode:
Loading...
Loading
Contract Name:
ConverterFactory
Compiler Version
v0.6.12+commit.27d51765
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-10-05 */ // File: solidity/contracts/utility/interfaces/IOwned.sol // SPDX-License-Identifier: SEE LICENSE IN LICENSE pragma solidity 0.6.12; /* Owned contract interface */ interface IOwned { // this function isn't since the compiler emits automatically generated getter functions as external function owner() external view returns (address); function transferOwnership(address _newOwner) external; function acceptOwnership() external; } // File: solidity/contracts/converter/interfaces/IConverterAnchor.sol pragma solidity 0.6.12; /* Converter Anchor interface */ interface IConverterAnchor is IOwned { } // File: solidity/contracts/token/interfaces/IERC20Token.sol pragma solidity 0.6.12; /* ERC20 Standard Token interface */ interface IERC20Token { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address _owner) external view returns (uint256); function allowance(address _owner, address _spender) external view returns (uint256); function transfer(address _to, uint256 _value) external returns (bool); function transferFrom(address _from, address _to, uint256 _value) external returns (bool); function approve(address _spender, uint256 _value) external returns (bool); } // File: solidity/contracts/utility/interfaces/IWhitelist.sol pragma solidity 0.6.12; /* Whitelist interface */ interface IWhitelist { function isWhitelisted(address _address) external view returns (bool); } // File: solidity/contracts/converter/interfaces/IConverter.sol pragma solidity 0.6.12; /* Converter interface */ interface IConverter is IOwned { function converterType() external pure returns (uint16); function anchor() external view returns (IConverterAnchor); function isActive() external view returns (bool); function targetAmountAndFee(IERC20Token _sourceToken, IERC20Token _targetToken, uint256 _amount) external view returns (uint256, uint256); function convert(IERC20Token _sourceToken, IERC20Token _targetToken, uint256 _amount, address _trader, address payable _beneficiary) external payable returns (uint256); function conversionWhitelist() external view returns (IWhitelist); function conversionFee() external view returns (uint32); function maxConversionFee() external view returns (uint32); function reserveBalance(IERC20Token _reserveToken) external view returns (uint256); receive() external payable; function transferAnchorOwnership(address _newOwner) external; function acceptAnchorOwnership() external; function setConversionFee(uint32 _conversionFee) external; function setConversionWhitelist(IWhitelist _whitelist) external; function withdrawTokens(IERC20Token _token, address _to, uint256 _amount) external; function withdrawETH(address payable _to) external; function addReserve(IERC20Token _token, uint32 _ratio) external; // deprecated, backward compatibility function token() external view returns (IConverterAnchor); function transferTokenOwnership(address _newOwner) external; function acceptTokenOwnership() external; function connectors(IERC20Token _address) external view returns (uint256, uint32, bool, bool, bool); function getConnectorBalance(IERC20Token _connectorToken) external view returns (uint256); function connectorTokens(uint256 _index) external view returns (IERC20Token); function connectorTokenCount() external view returns (uint16); } // File: solidity/contracts/converter/interfaces/ITypedConverterCustomFactory.sol pragma solidity 0.6.12; /* Typed Converter Custom Factory interface */ interface ITypedConverterCustomFactory { function converterType() external pure returns (uint16); } // File: solidity/contracts/utility/interfaces/IContractRegistry.sol pragma solidity 0.6.12; /* Contract Registry interface */ interface IContractRegistry { function addressOf(bytes32 _contractName) external view returns (address); } // File: solidity/contracts/converter/interfaces/IConverterFactory.sol pragma solidity 0.6.12; /* Converter Factory interface */ interface IConverterFactory { function createAnchor(uint16 _type, string memory _name, string memory _symbol, uint8 _decimals) external returns (IConverterAnchor); function createConverter(uint16 _type, IConverterAnchor _anchor, IContractRegistry _registry, uint32 _maxConversionFee) external returns (IConverter); function customFactories(uint16 _type) external view returns (ITypedConverterCustomFactory); } // File: solidity/contracts/converter/interfaces/ITypedConverterFactory.sol pragma solidity 0.6.12; /* Typed Converter Factory interface */ interface ITypedConverterFactory { function converterType() external pure returns (uint16); function createConverter(IConverterAnchor _anchor, IContractRegistry _registry, uint32 _maxConversionFee) external returns (IConverter); } // File: solidity/contracts/converter/interfaces/ITypedConverterAnchorFactory.sol pragma solidity 0.6.12; /* Typed Converter Anchor Factory interface */ interface ITypedConverterAnchorFactory { function converterType() external pure returns (uint16); function createAnchor(string memory _name, string memory _symbol, uint8 _decimals) external returns (IConverterAnchor); } // File: solidity/contracts/utility/Owned.sol pragma solidity 0.6.12; /** * @dev Provides support and utilities for contract ownership */ contract Owned is IOwned { address public override owner; address public newOwner; /** * @dev triggered when the owner is updated * * @param _prevOwner previous owner * @param _newOwner new owner */ event OwnerUpdate(address indexed _prevOwner, address indexed _newOwner); /** * @dev initializes a new Owned instance */ constructor() public { owner = msg.sender; } // allows execution by the owner only modifier ownerOnly { _ownerOnly(); _; } // error message binary size optimization function _ownerOnly() internal view { require(msg.sender == owner, "ERR_ACCESS_DENIED"); } /** * @dev allows transferring the contract ownership * the new owner still needs to accept the transfer * can only be called by the contract owner * * @param _newOwner new contract owner */ function transferOwnership(address _newOwner) public override ownerOnly { require(_newOwner != owner, "ERR_SAME_OWNER"); newOwner = _newOwner; } /** * @dev used by a new owner to accept an ownership transfer */ function acceptOwnership() override public { require(msg.sender == newOwner, "ERR_ACCESS_DENIED"); emit OwnerUpdate(owner, newOwner); owner = newOwner; newOwner = address(0); } } // File: solidity/contracts/utility/Utils.sol pragma solidity 0.6.12; /** * @dev Utilities & Common Modifiers */ contract Utils { // verifies that a value is greater than zero modifier greaterThanZero(uint256 _value) { _greaterThanZero(_value); _; } // error message binary size optimization function _greaterThanZero(uint256 _value) internal pure { require(_value > 0, "ERR_ZERO_VALUE"); } // validates an address - currently only checks that it isn't null modifier validAddress(address _address) { _validAddress(_address); _; } // error message binary size optimization function _validAddress(address _address) internal pure { require(_address != address(0), "ERR_INVALID_ADDRESS"); } // verifies that the address is different than this contract address modifier notThis(address _address) { _notThis(_address); _; } // error message binary size optimization function _notThis(address _address) internal view { require(_address != address(this), "ERR_ADDRESS_IS_SELF"); } } // File: solidity/contracts/utility/SafeMath.sol pragma solidity 0.6.12; /** * @dev Library for basic math operations with overflow/underflow protection */ library SafeMath { /** * @dev returns the sum of _x and _y, reverts if the calculation overflows * * @param _x value 1 * @param _y value 2 * * @return sum */ function add(uint256 _x, uint256 _y) internal pure returns (uint256) { uint256 z = _x + _y; require(z >= _x, "ERR_OVERFLOW"); return z; } /** * @dev returns the difference of _x minus _y, reverts if the calculation underflows * * @param _x minuend * @param _y subtrahend * * @return difference */ function sub(uint256 _x, uint256 _y) internal pure returns (uint256) { require(_x >= _y, "ERR_UNDERFLOW"); return _x - _y; } /** * @dev returns the product of multiplying _x by _y, reverts if the calculation overflows * * @param _x factor 1 * @param _y factor 2 * * @return product */ function mul(uint256 _x, uint256 _y) internal pure returns (uint256) { // gas optimization if (_x == 0) return 0; uint256 z = _x * _y; require(z / _x == _y, "ERR_OVERFLOW"); return z; } /** * @dev Integer division of two numbers truncating the quotient, reverts on division by zero. * * @param _x dividend * @param _y divisor * * @return quotient */ function div(uint256 _x, uint256 _y) internal pure returns (uint256) { require(_y > 0, "ERR_DIVIDE_BY_ZERO"); uint256 c = _x / _y; return c; } } // File: solidity/contracts/token/ERC20Token.sol pragma solidity 0.6.12; /** * @dev ERC20 Standard Token implementation */ contract ERC20Token is IERC20Token, Utils { using SafeMath for uint256; string public override name; string public override symbol; uint8 public override decimals; uint256 public override totalSupply; mapping (address => uint256) public override balanceOf; mapping (address => mapping (address => uint256)) public override allowance; /** * @dev triggered when tokens are transferred between wallets * * @param _from source address * @param _to target address * @param _value transfer amount */ event Transfer(address indexed _from, address indexed _to, uint256 _value); /** * @dev triggered when a wallet allows another wallet to transfer tokens from on its behalf * * @param _owner wallet that approves the allowance * @param _spender wallet that receives the allowance * @param _value allowance amount */ event Approval(address indexed _owner, address indexed _spender, uint256 _value); /** * @dev initializes a new ERC20Token instance * * @param _name token name * @param _symbol token symbol * @param _decimals decimal points, for display purposes * @param _totalSupply total supply of token units */ constructor(string memory _name, string memory _symbol, uint8 _decimals, uint256 _totalSupply) public { // validate input require(bytes(_name).length > 0, "ERR_INVALID_NAME"); require(bytes(_symbol).length > 0, "ERR_INVALID_SYMBOL"); name = _name; symbol = _symbol; decimals = _decimals; totalSupply = _totalSupply; balanceOf[msg.sender] = _totalSupply; } /** * @dev transfers tokens to a given address * throws on any error rather then return a false flag to minimize user errors * * @param _to target address * @param _value transfer amount * * @return true if the transfer was successful, false if it wasn't */ function transfer(address _to, uint256 _value) public virtual override validAddress(_to) returns (bool) { balanceOf[msg.sender] = balanceOf[msg.sender].sub(_value); balanceOf[_to] = balanceOf[_to].add(_value); emit Transfer(msg.sender, _to, _value); return true; } /** * @dev transfers tokens to a given address on behalf of another address * throws on any error rather then return a false flag to minimize user errors * * @param _from source address * @param _to target address * @param _value transfer amount * * @return true if the transfer was successful, false if it wasn't */ function transferFrom(address _from, address _to, uint256 _value) public virtual override validAddress(_from) validAddress(_to) returns (bool) { allowance[_from][msg.sender] = allowance[_from][msg.sender].sub(_value); balanceOf[_from] = balanceOf[_from].sub(_value); balanceOf[_to] = balanceOf[_to].add(_value); emit Transfer(_from, _to, _value); return true; } /** * @dev allows another account/contract to transfers tokens on behalf of the caller * throws on any error rather then return a false flag to minimize user errors * * @param _spender approved address * @param _value allowance amount * * @return true if the approval was successful, false if it wasn't */ function approve(address _spender, uint256 _value) public virtual override validAddress(_spender) returns (bool) { allowance[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } } // File: solidity/contracts/token/interfaces/IDSToken.sol pragma solidity 0.6.12; /* DSToken interface */ interface IDSToken is IConverterAnchor, IERC20Token { function issue(address _to, uint256 _amount) external; function destroy(address _from, uint256 _amount) external; } // File: solidity/contracts/token/DSToken.sol pragma solidity 0.6.12; /** * @dev DSToken represents a token with dynamic supply. * The owner of the token can mint/burn tokens to/from any account. * */ contract DSToken is IDSToken, ERC20Token, Owned { using SafeMath for uint256; /** * @dev triggered when the total supply is increased * * @param _amount amount that gets added to the supply */ event Issuance(uint256 _amount); /** * @dev triggered when the total supply is decreased * * @param _amount amount that gets removed from the supply */ event Destruction(uint256 _amount); /** * @dev initializes a new DSToken instance * * @param _name token name * @param _symbol token short symbol, minimum 1 character * @param _decimals for display purposes only */ constructor(string memory _name, string memory _symbol, uint8 _decimals) public ERC20Token(_name, _symbol, _decimals, 0) { } /** * @dev increases the token supply and sends the new tokens to the given account * can only be called by the contract owner * * @param _to account to receive the new amount * @param _amount amount to increase the supply by */ function issue(address _to, uint256 _amount) public override ownerOnly validAddress(_to) notThis(_to) { totalSupply = totalSupply.add(_amount); balanceOf[_to] = balanceOf[_to].add(_amount); emit Issuance(_amount); emit Transfer(address(0), _to, _amount); } /** * @dev removes tokens from the given account and decreases the token supply * can only be called by the contract owner * * @param _from account to remove the amount from * @param _amount amount to decrease the supply by */ function destroy(address _from, uint256 _amount) public override ownerOnly { balanceOf[_from] = balanceOf[_from].sub(_amount); totalSupply = totalSupply.sub(_amount); emit Transfer(_from, address(0), _amount); emit Destruction(_amount); } // ERC20 standard method overrides with some extra functionality /** * @dev send coins * throws on any error rather then return a false flag to minimize user errors * in addition to the standard checks, the function throws if transfers are disabled * * @param _to target address * @param _value transfer amount * * @return true if the transfer was successful, false if it wasn't */ function transfer(address _to, uint256 _value) public override(IERC20Token, ERC20Token) returns (bool) { return super.transfer(_to, _value); } /** * @dev an account/contract attempts to get the coins * throws on any error rather then return a false flag to minimize user errors * in addition to the standard checks, the function throws if transfers are disabled * * @param _from source address * @param _to target address * @param _value transfer amount * * @return true if the transfer was successful, false if it wasn't */ function transferFrom(address _from, address _to, uint256 _value) public override(IERC20Token, ERC20Token) returns (bool) { return super.transferFrom(_from, _to, _value); } } // File: solidity/contracts/converter/ConverterFactory.sol pragma solidity 0.6.12; /* Converter Factory */ contract ConverterFactory is IConverterFactory, Owned { /** * @dev triggered when a new converter is created * * @param _type converter type, see ConverterBase contract main doc * @param _converter new converter address * @param _owner converter owner address */ event NewConverter(uint16 indexed _type, IConverter indexed _converter, address indexed _owner); mapping (uint16 => ITypedConverterFactory) public converterFactories; mapping (uint16 => ITypedConverterAnchorFactory) public anchorFactories; mapping (uint16 => ITypedConverterCustomFactory) public override customFactories; /** * @dev initializes the factory with a specific typed converter factory * can only be called by the owner * * @param _factory typed converter factory */ function registerTypedConverterFactory(ITypedConverterFactory _factory) public ownerOnly { converterFactories[_factory.converterType()] = _factory; } /** * @dev initializes the factory with a specific typed converter anchor factory * can only be called by the owner * * @param _factory typed converter anchor factory */ function registerTypedConverterAnchorFactory(ITypedConverterAnchorFactory _factory) public ownerOnly { anchorFactories[_factory.converterType()] = _factory; } /** * @dev initializes the factory with a specific typed converter custom factory * can only be called by the owner * * @param _factory typed converter custom factory */ function registerTypedConverterCustomFactory(ITypedConverterCustomFactory _factory) public ownerOnly { customFactories[_factory.converterType()] = _factory; } /** * @dev creates a new converter anchor with the given arguments and transfers * the ownership to the caller * * @param _converterType converter type, see ConverterBase contract main doc * @param _name name * @param _symbol symbol * @param _decimals decimals * * @return new converter anchor */ function createAnchor(uint16 _converterType, string memory _name, string memory _symbol, uint8 _decimals) public virtual override returns (IConverterAnchor) { IConverterAnchor anchor; ITypedConverterAnchorFactory factory = anchorFactories[_converterType]; if (address(factory) == address(0)) { // create default anchor (DSToken) anchor = new DSToken(_name, _symbol, _decimals); } else { // create custom anchor anchor = factory.createAnchor(_name, _symbol, _decimals); anchor.acceptOwnership(); } anchor.transferOwnership(msg.sender); return anchor; } /** * @dev creates a new converter with the given arguments and transfers * the ownership to the caller * * @param _type converter type, see ConverterBase contract main doc * @param _anchor anchor governed by the converter * @param _registry address of a contract registry contract * @param _maxConversionFee maximum conversion fee, represented in ppm * * @return new converter */ function createConverter(uint16 _type, IConverterAnchor _anchor, IContractRegistry _registry, uint32 _maxConversionFee) public virtual override returns (IConverter) { IConverter converter = converterFactories[_type].createConverter(_anchor, _registry, _maxConversionFee); converter.acceptOwnership(); converter.transferOwnership(msg.sender); emit NewConverter(_type, converter, msg.sender); return converter; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint16","name":"_type","type":"uint16"},{"indexed":true,"internalType":"contract IConverter","name":"_converter","type":"address"},{"indexed":true,"internalType":"address","name":"_owner","type":"address"}],"name":"NewConverter","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_prevOwner","type":"address"},{"indexed":true,"internalType":"address","name":"_newOwner","type":"address"}],"name":"OwnerUpdate","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"anchorFactories","outputs":[{"internalType":"contract ITypedConverterAnchorFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"converterFactories","outputs":[{"internalType":"contract ITypedConverterFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_converterType","type":"uint16"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"}],"name":"createAnchor","outputs":[{"internalType":"contract IConverterAnchor","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_type","type":"uint16"},{"internalType":"contract IConverterAnchor","name":"_anchor","type":"address"},{"internalType":"contract IContractRegistry","name":"_registry","type":"address"},{"internalType":"uint32","name":"_maxConversionFee","type":"uint32"}],"name":"createConverter","outputs":[{"internalType":"contract IConverter","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"customFactories","outputs":[{"internalType":"contract ITypedConverterCustomFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"newOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ITypedConverterAnchorFactory","name":"_factory","type":"address"}],"name":"registerTypedConverterAnchorFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ITypedConverterCustomFactory","name":"_factory","type":"address"}],"name":"registerTypedConverterCustomFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ITypedConverterFactory","name":"_factory","type":"address"}],"name":"registerTypedConverterFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50600080546001600160a01b03191633179055611b13806100326000396000f3fe60806040523480156200001157600080fd5b5060043610620000c45760003560e01c80638cac5e29116200007b5780638cac5e2914620002f25780638da5cb5b146200031b578063c977aed21462000325578063d4ee1d901462000349578063e54b93ef1462000353578063f2fde38b146200037c57620000c4565b806312b4c6c114620000c957806315f64b6a14620000f45780632e9ab7b3146200015a578063327779a714620002a05780633a8fc52014620002c457806379ba509714620002e8575b600080fd5b620000f260048036036020811015620000e157600080fd5b50356001600160a01b0316620003a5565b005b6200013e600480360360808110156200010c57600080fd5b50803561ffff169060208101356001600160a01b03908116916040810135909116906060013563ffffffff1662000451565b604080516001600160a01b039092168252519081900360200190f35b6200013e600480360360808110156200017257600080fd5b61ffff82351691908101906040810160208201356401000000008111156200019957600080fd5b820183602082011115620001ac57600080fd5b80359060200191846001830284011164010000000083111715620001cf57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156200022357600080fd5b8201836020820111156200023657600080fd5b803590602001918460018302840111640100000000831117156200025957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050903560ff169150620005f69050565b6200013e60048036036020811015620002b857600080fd5b503561ffff166200094c565b6200013e60048036036020811015620002dc57600080fd5b503561ffff1662000967565b620000f262000982565b620000f2600480360360208110156200030a57600080fd5b50356001600160a01b031662000a3a565b6200013e62000a83565b6200013e600480360360208110156200033d57600080fd5b503561ffff1662000a92565b6200013e62000aad565b620000f2600480360360208110156200036b57600080fd5b50356001600160a01b031662000abc565b620000f2600480360360208110156200039457600080fd5b50356001600160a01b031662000b05565b620003af62000b86565b8060026000836001600160a01b0316633e8ff43f6040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ee57600080fd5b505afa15801562000403573d6000803e3d6000fd5b505050506040513d60208110156200041a57600080fd5b505161ffff168152602081019190915260400160002080546001600160a01b0319166001600160a01b039290921691909117905550565b61ffff84166000908152600260209081526040808320548151630228272b60e31b81526001600160a01b038881166004830152878116602483015263ffffffff8716604483015292518594939092169263114139589260648084019382900301818787803b158015620004c357600080fd5b505af1158015620004d8573d6000803e3d6000fd5b505050506040513d6020811015620004ef57600080fd5b5051604080516379ba509760e01b815290519192506001600160a01b038316916379ba50979160048082019260009290919082900301818387803b1580156200053757600080fd5b505af11580156200054c573d6000803e3d6000fd5b50506040805163f2fde38b60e01b815233600482015290516001600160a01b038516935063f2fde38b9250602480830192600092919082900301818387803b1580156200059857600080fd5b505af1158015620005ad573d6000803e3d6000fd5b50506040513392506001600160a01b038416915061ffff8916907fbb340bcea68d239ac719bc5cf8c9a1716df04ad3babb8d1e562aa44d19fea3a390600090a495945050505050565b61ffff841660009081526003602052604081205481906001600160a01b03168062000731578585856040516200062c9062000bdc565b60ff82166040820152606080825284519082015283518190602080830191608084019188019080838360005b838110156200067257818101518382015260200162000658565b50505050905090810190601f168015620006a05780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015620006d5578181015183820152602001620006bb565b50505050905090810190601f168015620007035780820380516001836020036101000a031916815260200191505b5095505050505050604051809103906000f08015801562000728573d6000803e3d6000fd5b509150620008e0565b806001600160a01b031663a9fd4a2a8787876040518463ffffffff1660e01b81526004018080602001806020018460ff168152602001838103835286818151815260200191508051906020019080838360005b838110156200079e57818101518382015260200162000784565b50505050905090810190601f168015620007cc5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101562000801578181015183820152602001620007e7565b50505050905090810190601f1680156200082f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156200085257600080fd5b505af115801562000867573d6000803e3d6000fd5b505050506040513d60208110156200087e57600080fd5b5051604080516379ba509760e01b815290519193506001600160a01b038416916379ba50979160048082019260009290919082900301818387803b158015620008c657600080fd5b505af1158015620008db573d6000803e3d6000fd5b505050505b6040805163f2fde38b60e01b815233600482015290516001600160a01b0384169163f2fde38b91602480830192600092919082900301818387803b1580156200092857600080fd5b505af11580156200093d573d6000803e3d6000fd5b50939998505050505050505050565b6002602052600090815260409020546001600160a01b031681565b6003602052600090815260409020546001600160a01b031681565b6001546001600160a01b03163314620009d6576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b62000a4462000b86565b8060046000836001600160a01b0316633e8ff43f6040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ee57600080fd5b6000546001600160a01b031681565b6004602052600090815260409020546001600160a01b031681565b6001546001600160a01b031681565b62000ac662000b86565b8060036000836001600160a01b0316633e8ff43f6040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ee57600080fd5b62000b0f62000b86565b6000546001600160a01b038281169116141562000b64576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331462000bda576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b610ef38062000beb8339019056fe60806040523480156200001157600080fd5b5060405162000ef338038062000ef3833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405260200151845190925084915083908390600090620001f4576040805162461bcd60e51b815260206004820152601060248201526f4552525f494e56414c49445f4e414d4560801b604482015290519081900360640190fd5b600083511162000240576040805162461bcd60e51b815260206004820152601260248201527111549497d253959053125117d4d6535093d360721b604482015290519081900360640190fd5b835162000255906000906020870190620002b8565b5082516200026b906001906020860190620002b8565b506002805460ff191660ff9390931692909217909155600381905533600081815260046020526040902091909155600680546001600160a01b031916909117905550620003549350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002fb57805160ff19168380011785556200032b565b828001600101855582156200032b579182015b828111156200032b5782518255916020019190600101906200030e565b50620003399291506200033d565b5090565b5b808211156200033957600081556001016200033e565b610b8f80620003646000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063867904b411610097578063a9059cbb11610066578063a9059cbb146102d9578063d4ee1d9014610305578063dd62ed3e1461030d578063f2fde38b1461033b576100f5565b8063867904b4146102555780638da5cb5b1461028157806395d89b41146102a5578063a24835d1146102ad576100f5565b806323b872dd116100d357806323b872dd146101d1578063313ce5671461020757806370a082311461022557806379ba50971461024b576100f5565b806306fdde03146100fa578063095ea7b31461017757806318160ddd146101b7575b600080fd5b610102610361565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561013c578181015183820152602001610124565b50505050905090810190601f1680156101695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a36004803603604081101561018d57600080fd5b506001600160a01b0381351690602001356103ef565b604080519115158252519081900360200190f35b6101bf610463565b60408051918252519081900360200190f35b6101a3600480360360608110156101e757600080fd5b506001600160a01b03813581169160208101359091169060400135610469565b61020f61047e565b6040805160ff9092168252519081900360200190f35b6101bf6004803603602081101561023b57600080fd5b50356001600160a01b0316610487565b610253610499565b005b6102536004803603604081101561026b57600080fd5b506001600160a01b038135169060200135610552565b610289610628565b604080516001600160a01b039092168252519081900360200190f35b610102610637565b610253600480360360408110156102c357600080fd5b506001600160a01b038135169060200135610691565b6101a3600480360360408110156102ef57600080fd5b506001600160a01b03813516906020013561074b565b61028961075e565b6101bf6004803603604081101561032357600080fd5b506001600160a01b038135811691602001351661076d565b6102536004803603602081101561035157600080fd5b50356001600160a01b031661078a565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103e75780601f106103bc576101008083540402835291602001916103e7565b820191906000526020600020905b8154815290600101906020018083116103ca57829003601f168201915b505050505081565b6000826103fb81610808565b3360008181526005602090815260408083206001600160a01b03891680855290835292819020879055805187815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b60035481565b600061047684848461085c565b949350505050565b60025460ff1681565b60046020526000908152604090205481565b6007546001600160a01b031633146104ec576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b6007546006546040516001600160a01b0392831692909116907f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a90600090a360078054600680546001600160a01b03199081166001600160a01b03841617909155169055565b61055a61095b565b8161056481610808565b8261056e816109b0565b60035461057b9084610a04565b6003556001600160a01b0384166000908152600460205260409020546105a19084610a04565b6001600160a01b03851660009081526004602090815260409182902092909255805185815290517f9386c90217c323f58030f9dadcbc938f807a940f4ff41cd4cead9562f5da7dc3929181900390910190a16040805184815290516001600160a01b03861691600091600080516020610b3a8339815191529181900360200190a350505050565b6006546001600160a01b031681565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103e75780601f106103bc576101008083540402835291602001916103e7565b61069961095b565b6001600160a01b0382166000908152600460205260409020546106bc9082610a4d565b6001600160a01b0383166000908152600460205260409020556003546106e29082610a4d565b6003556040805182815290516000916001600160a01b03851691600080516020610b3a8339815191529181900360200190a36040805182815290517f9a1b418bc061a5d80270261562e6986a35d995f8051145f277be16103abd34539181900360200190a15050565b60006107578383610a9a565b9392505050565b6007546001600160a01b031681565b600560209081526000928352604080842090915290825290205481565b61079261095b565b6006546001600160a01b03828116911614156107e6576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038116610859576040805162461bcd60e51b81526020600482015260136024820152724552525f494e56414c49445f4144445245535360681b604482015290519081900360640190fd5b50565b60008361086881610808565b8361087281610808565b6001600160a01b03861660009081526005602090815260408083203384529091529020546108a09085610a4d565b6001600160a01b0387166000818152600560209081526040808320338452825280832094909455918152600490915220546108db9085610a4d565b6001600160a01b03808816600090815260046020526040808220939093559087168152205461090a9085610a04565b6001600160a01b0380871660008181526004602090815260409182902094909455805188815290519193928a1692600080516020610b3a83398151915292918290030190a350600195945050505050565b6006546001600160a01b031633146109ae576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b6001600160a01b038116301415610859576040805162461bcd60e51b815260206004820152601360248201527222a9292fa0a2222922a9a9afa4a9afa9a2a62360691b604482015290519081900360640190fd5b600082820183811015610757576040805162461bcd60e51b815260206004820152600c60248201526b4552525f4f564552464c4f5760a01b604482015290519081900360640190fd5b600081831015610a94576040805162461bcd60e51b815260206004820152600d60248201526c4552525f554e444552464c4f5760981b604482015290519081900360640190fd5b50900390565b600082610aa681610808565b33600090815260046020526040902054610ac09084610a4d565b33600090815260046020526040808220929092556001600160a01b03861681522054610aec9084610a04565b6001600160a01b038516600081815260046020908152604091829020939093558051868152905191923392600080516020610b3a8339815191529281900390910190a3506001939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220033a5d632658883143f6fdce2a44d6ed7aff5afcbe162bf54cc8c26fd07e862364736f6c634300060c0033a26469706673582212204c4b63fe2edd07c3da8d12aee935f9c2d0028eb8df9291ba920a51fc2677af2a64736f6c634300060c0033
Deployed Bytecode
0x60806040523480156200001157600080fd5b5060043610620000c45760003560e01c80638cac5e29116200007b5780638cac5e2914620002f25780638da5cb5b146200031b578063c977aed21462000325578063d4ee1d901462000349578063e54b93ef1462000353578063f2fde38b146200037c57620000c4565b806312b4c6c114620000c957806315f64b6a14620000f45780632e9ab7b3146200015a578063327779a714620002a05780633a8fc52014620002c457806379ba509714620002e8575b600080fd5b620000f260048036036020811015620000e157600080fd5b50356001600160a01b0316620003a5565b005b6200013e600480360360808110156200010c57600080fd5b50803561ffff169060208101356001600160a01b03908116916040810135909116906060013563ffffffff1662000451565b604080516001600160a01b039092168252519081900360200190f35b6200013e600480360360808110156200017257600080fd5b61ffff82351691908101906040810160208201356401000000008111156200019957600080fd5b820183602082011115620001ac57600080fd5b80359060200191846001830284011164010000000083111715620001cf57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156200022357600080fd5b8201836020820111156200023657600080fd5b803590602001918460018302840111640100000000831117156200025957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050903560ff169150620005f69050565b6200013e60048036036020811015620002b857600080fd5b503561ffff166200094c565b6200013e60048036036020811015620002dc57600080fd5b503561ffff1662000967565b620000f262000982565b620000f2600480360360208110156200030a57600080fd5b50356001600160a01b031662000a3a565b6200013e62000a83565b6200013e600480360360208110156200033d57600080fd5b503561ffff1662000a92565b6200013e62000aad565b620000f2600480360360208110156200036b57600080fd5b50356001600160a01b031662000abc565b620000f2600480360360208110156200039457600080fd5b50356001600160a01b031662000b05565b620003af62000b86565b8060026000836001600160a01b0316633e8ff43f6040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ee57600080fd5b505afa15801562000403573d6000803e3d6000fd5b505050506040513d60208110156200041a57600080fd5b505161ffff168152602081019190915260400160002080546001600160a01b0319166001600160a01b039290921691909117905550565b61ffff84166000908152600260209081526040808320548151630228272b60e31b81526001600160a01b038881166004830152878116602483015263ffffffff8716604483015292518594939092169263114139589260648084019382900301818787803b158015620004c357600080fd5b505af1158015620004d8573d6000803e3d6000fd5b505050506040513d6020811015620004ef57600080fd5b5051604080516379ba509760e01b815290519192506001600160a01b038316916379ba50979160048082019260009290919082900301818387803b1580156200053757600080fd5b505af11580156200054c573d6000803e3d6000fd5b50506040805163f2fde38b60e01b815233600482015290516001600160a01b038516935063f2fde38b9250602480830192600092919082900301818387803b1580156200059857600080fd5b505af1158015620005ad573d6000803e3d6000fd5b50506040513392506001600160a01b038416915061ffff8916907fbb340bcea68d239ac719bc5cf8c9a1716df04ad3babb8d1e562aa44d19fea3a390600090a495945050505050565b61ffff841660009081526003602052604081205481906001600160a01b03168062000731578585856040516200062c9062000bdc565b60ff82166040820152606080825284519082015283518190602080830191608084019188019080838360005b838110156200067257818101518382015260200162000658565b50505050905090810190601f168015620006a05780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015620006d5578181015183820152602001620006bb565b50505050905090810190601f168015620007035780820380516001836020036101000a031916815260200191505b5095505050505050604051809103906000f08015801562000728573d6000803e3d6000fd5b509150620008e0565b806001600160a01b031663a9fd4a2a8787876040518463ffffffff1660e01b81526004018080602001806020018460ff168152602001838103835286818151815260200191508051906020019080838360005b838110156200079e57818101518382015260200162000784565b50505050905090810190601f168015620007cc5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101562000801578181015183820152602001620007e7565b50505050905090810190601f1680156200082f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156200085257600080fd5b505af115801562000867573d6000803e3d6000fd5b505050506040513d60208110156200087e57600080fd5b5051604080516379ba509760e01b815290519193506001600160a01b038416916379ba50979160048082019260009290919082900301818387803b158015620008c657600080fd5b505af1158015620008db573d6000803e3d6000fd5b505050505b6040805163f2fde38b60e01b815233600482015290516001600160a01b0384169163f2fde38b91602480830192600092919082900301818387803b1580156200092857600080fd5b505af11580156200093d573d6000803e3d6000fd5b50939998505050505050505050565b6002602052600090815260409020546001600160a01b031681565b6003602052600090815260409020546001600160a01b031681565b6001546001600160a01b03163314620009d6576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b62000a4462000b86565b8060046000836001600160a01b0316633e8ff43f6040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ee57600080fd5b6000546001600160a01b031681565b6004602052600090815260409020546001600160a01b031681565b6001546001600160a01b031681565b62000ac662000b86565b8060036000836001600160a01b0316633e8ff43f6040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ee57600080fd5b62000b0f62000b86565b6000546001600160a01b038281169116141562000b64576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331462000bda576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b610ef38062000beb8339019056fe60806040523480156200001157600080fd5b5060405162000ef338038062000ef3833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405260200151845190925084915083908390600090620001f4576040805162461bcd60e51b815260206004820152601060248201526f4552525f494e56414c49445f4e414d4560801b604482015290519081900360640190fd5b600083511162000240576040805162461bcd60e51b815260206004820152601260248201527111549497d253959053125117d4d6535093d360721b604482015290519081900360640190fd5b835162000255906000906020870190620002b8565b5082516200026b906001906020860190620002b8565b506002805460ff191660ff9390931692909217909155600381905533600081815260046020526040902091909155600680546001600160a01b031916909117905550620003549350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002fb57805160ff19168380011785556200032b565b828001600101855582156200032b579182015b828111156200032b5782518255916020019190600101906200030e565b50620003399291506200033d565b5090565b5b808211156200033957600081556001016200033e565b610b8f80620003646000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063867904b411610097578063a9059cbb11610066578063a9059cbb146102d9578063d4ee1d9014610305578063dd62ed3e1461030d578063f2fde38b1461033b576100f5565b8063867904b4146102555780638da5cb5b1461028157806395d89b41146102a5578063a24835d1146102ad576100f5565b806323b872dd116100d357806323b872dd146101d1578063313ce5671461020757806370a082311461022557806379ba50971461024b576100f5565b806306fdde03146100fa578063095ea7b31461017757806318160ddd146101b7575b600080fd5b610102610361565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561013c578181015183820152602001610124565b50505050905090810190601f1680156101695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a36004803603604081101561018d57600080fd5b506001600160a01b0381351690602001356103ef565b604080519115158252519081900360200190f35b6101bf610463565b60408051918252519081900360200190f35b6101a3600480360360608110156101e757600080fd5b506001600160a01b03813581169160208101359091169060400135610469565b61020f61047e565b6040805160ff9092168252519081900360200190f35b6101bf6004803603602081101561023b57600080fd5b50356001600160a01b0316610487565b610253610499565b005b6102536004803603604081101561026b57600080fd5b506001600160a01b038135169060200135610552565b610289610628565b604080516001600160a01b039092168252519081900360200190f35b610102610637565b610253600480360360408110156102c357600080fd5b506001600160a01b038135169060200135610691565b6101a3600480360360408110156102ef57600080fd5b506001600160a01b03813516906020013561074b565b61028961075e565b6101bf6004803603604081101561032357600080fd5b506001600160a01b038135811691602001351661076d565b6102536004803603602081101561035157600080fd5b50356001600160a01b031661078a565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103e75780601f106103bc576101008083540402835291602001916103e7565b820191906000526020600020905b8154815290600101906020018083116103ca57829003601f168201915b505050505081565b6000826103fb81610808565b3360008181526005602090815260408083206001600160a01b03891680855290835292819020879055805187815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b60035481565b600061047684848461085c565b949350505050565b60025460ff1681565b60046020526000908152604090205481565b6007546001600160a01b031633146104ec576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b6007546006546040516001600160a01b0392831692909116907f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a90600090a360078054600680546001600160a01b03199081166001600160a01b03841617909155169055565b61055a61095b565b8161056481610808565b8261056e816109b0565b60035461057b9084610a04565b6003556001600160a01b0384166000908152600460205260409020546105a19084610a04565b6001600160a01b03851660009081526004602090815260409182902092909255805185815290517f9386c90217c323f58030f9dadcbc938f807a940f4ff41cd4cead9562f5da7dc3929181900390910190a16040805184815290516001600160a01b03861691600091600080516020610b3a8339815191529181900360200190a350505050565b6006546001600160a01b031681565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103e75780601f106103bc576101008083540402835291602001916103e7565b61069961095b565b6001600160a01b0382166000908152600460205260409020546106bc9082610a4d565b6001600160a01b0383166000908152600460205260409020556003546106e29082610a4d565b6003556040805182815290516000916001600160a01b03851691600080516020610b3a8339815191529181900360200190a36040805182815290517f9a1b418bc061a5d80270261562e6986a35d995f8051145f277be16103abd34539181900360200190a15050565b60006107578383610a9a565b9392505050565b6007546001600160a01b031681565b600560209081526000928352604080842090915290825290205481565b61079261095b565b6006546001600160a01b03828116911614156107e6576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038116610859576040805162461bcd60e51b81526020600482015260136024820152724552525f494e56414c49445f4144445245535360681b604482015290519081900360640190fd5b50565b60008361086881610808565b8361087281610808565b6001600160a01b03861660009081526005602090815260408083203384529091529020546108a09085610a4d565b6001600160a01b0387166000818152600560209081526040808320338452825280832094909455918152600490915220546108db9085610a4d565b6001600160a01b03808816600090815260046020526040808220939093559087168152205461090a9085610a04565b6001600160a01b0380871660008181526004602090815260409182902094909455805188815290519193928a1692600080516020610b3a83398151915292918290030190a350600195945050505050565b6006546001600160a01b031633146109ae576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b6001600160a01b038116301415610859576040805162461bcd60e51b815260206004820152601360248201527222a9292fa0a2222922a9a9afa4a9afa9a2a62360691b604482015290519081900360640190fd5b600082820183811015610757576040805162461bcd60e51b815260206004820152600c60248201526b4552525f4f564552464c4f5760a01b604482015290519081900360640190fd5b600081831015610a94576040805162461bcd60e51b815260206004820152600d60248201526c4552525f554e444552464c4f5760981b604482015290519081900360640190fd5b50900390565b600082610aa681610808565b33600090815260046020526040902054610ac09084610a4d565b33600090815260046020526040808220929092556001600160a01b03861681522054610aec9084610a04565b6001600160a01b038516600081815260046020908152604091829020939093558051868152905191923392600080516020610b3a8339815191529281900390910190a3506001939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220033a5d632658883143f6fdce2a44d6ed7aff5afcbe162bf54cc8c26fd07e862364736f6c634300060c0033a26469706673582212204c4b63fe2edd07c3da8d12aee935f9c2d0028eb8df9291ba920a51fc2677af2a64736f6c634300060c0033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.