Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
RenERC20LogicV1
Compiler Version
v0.5.16+commit.9c3226ce
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-11-03 */ /** Deployed by Ren Project, https://renproject.io Commit hash: 1e106b3 Repository: https://github.com/renproject/gateway-sol Issues: https://github.com/renproject/gateway-sol/issues Licenses @openzeppelin/contracts: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/LICENSE gateway-sol: https://github.com/renproject/gateway-sol/blob/master/LICENSE */ pragma solidity ^0.5.16; contract Initializable { bool private initialized; bool private initializing; modifier initializer() { require(initializing || isConstructor() || !initialized, "Contract instance has already been initialized"); bool isTopLevelCall = !initializing; if (isTopLevelCall) { initializing = true; initialized = true; } _; if (isTopLevelCall) { initializing = false; } } function isConstructor() private view returns (bool) { address self = address(this); uint256 cs; assembly { cs := extcodesize(self) } return cs == 0; } uint256[50] private ______gap; } contract Context is Initializable { constructor () internal { } function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; return msg.data; } } contract Ownable is Initializable, Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); function initialize(address sender) public initializer { _owner = sender; emit OwnershipTransferred(address(0), _owner); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(isOwner(), "Ownable: caller is not the owner"); _; } function isOwner() public view returns (bool) { return _msgSender() == _owner; } function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } uint256[50] private ______gap; } contract Proxy { function () payable external { _fallback(); } function _implementation() internal view returns (address); function _delegate(address implementation) internal { assembly { calldatacopy(0, 0, calldatasize) let result := delegatecall(gas, implementation, 0, calldatasize, 0, 0) returndatacopy(0, 0, returndatasize) switch result case 0 { revert(0, returndatasize) } default { return(0, returndatasize) } } } function _willFallback() internal { } function _fallback() internal { _willFallback(); _delegate(_implementation()); } } library OpenZeppelinUpgradesAddress { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } } contract BaseUpgradeabilityProxy is Proxy { event Upgraded(address indexed implementation); bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _implementation() internal view returns (address impl) { bytes32 slot = IMPLEMENTATION_SLOT; assembly { impl := sload(slot) } } function _upgradeTo(address newImplementation) internal { _setImplementation(newImplementation); emit Upgraded(newImplementation); } function _setImplementation(address newImplementation) internal { require(OpenZeppelinUpgradesAddress.isContract(newImplementation), "Cannot set a proxy implementation to a non-contract address"); bytes32 slot = IMPLEMENTATION_SLOT; assembly { sstore(slot, newImplementation) } } } contract UpgradeabilityProxy is BaseUpgradeabilityProxy { constructor(address _logic, bytes memory _data) public payable { assert(IMPLEMENTATION_SLOT == bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1)); _setImplementation(_logic); if(_data.length > 0) { (bool success,) = _logic.delegatecall(_data); require(success); } } } contract BaseAdminUpgradeabilityProxy is BaseUpgradeabilityProxy { event AdminChanged(address previousAdmin, address newAdmin); bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103; modifier ifAdmin() { if (msg.sender == _admin()) { _; } else { _fallback(); } } function admin() external ifAdmin returns (address) { return _admin(); } function implementation() external ifAdmin returns (address) { return _implementation(); } function changeAdmin(address newAdmin) external ifAdmin { require(newAdmin != address(0), "Cannot change the admin of a proxy to the zero address"); emit AdminChanged(_admin(), newAdmin); _setAdmin(newAdmin); } function upgradeTo(address newImplementation) external ifAdmin { _upgradeTo(newImplementation); } function upgradeToAndCall(address newImplementation, bytes calldata data) payable external ifAdmin { _upgradeTo(newImplementation); (bool success,) = newImplementation.delegatecall(data); require(success); } function _admin() internal view returns (address adm) { bytes32 slot = ADMIN_SLOT; assembly { adm := sload(slot) } } function _setAdmin(address newAdmin) internal { bytes32 slot = ADMIN_SLOT; assembly { sstore(slot, newAdmin) } } function _willFallback() internal { require(msg.sender != _admin(), "Cannot call fallback function from the proxy admin"); super._willFallback(); } } contract InitializableUpgradeabilityProxy is BaseUpgradeabilityProxy { function initialize(address _logic, bytes memory _data) public payable { require(_implementation() == address(0)); assert(IMPLEMENTATION_SLOT == bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1)); _setImplementation(_logic); if(_data.length > 0) { (bool success,) = _logic.delegatecall(_data); require(success); } } } contract InitializableAdminUpgradeabilityProxy is BaseAdminUpgradeabilityProxy, InitializableUpgradeabilityProxy { function initialize(address _logic, address _admin, bytes memory _data) public payable { require(_implementation() == address(0)); InitializableUpgradeabilityProxy.initialize(_logic, _data); assert(ADMIN_SLOT == bytes32(uint256(keccak256('eip1967.proxy.admin')) - 1)); _setAdmin(_admin); } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract ERC20 is Initializable, Context, IERC20 { using SafeMath for uint256; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; function totalSupply() public view returns (uint256) { return _totalSupply; } function balanceOf(address account) public view returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public returns (bool) { _approve(_msgSender(), spender, amount); return true; } 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; } function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } 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); } 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); } 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); } 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); } function _burnFrom(address account, uint256 amount) internal { _burn(account, amount); _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, "ERC20: burn amount exceeds allowance")); } uint256[50] private ______gap; } contract ERC20Detailed is Initializable, IERC20 { string private _name; string private _symbol; uint8 private _decimals; function initialize(string memory name, string memory symbol, uint8 decimals) public initializer { _name = name; _symbol = symbol; _decimals = decimals; } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } uint256[50] private ______gap; } contract Claimable is Initializable, Ownable { address public pendingOwner; function initialize(address _nextOwner) public initializer { Ownable.initialize(_nextOwner); } modifier onlyPendingOwner() { require( _msgSender() == pendingOwner, "Claimable: caller is not the pending owner" ); _; } function transferOwnership(address newOwner) public onlyOwner { require( newOwner != owner() && newOwner != pendingOwner, "Claimable: invalid new owner" ); pendingOwner = newOwner; } function claimOwnership() public onlyPendingOwner { _transferOwnership(pendingOwner); delete pendingOwner; } } library Address { function isContract(address account) internal view returns (bool) { bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function toPayable(address account) internal pure returns (address payable) { return address(uint160(account)); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call.value(amount)(""); require(success, "Address: unable to send value, recipient may have reverted"); } } 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 { 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)); } function callOptionalReturn(IERC20 token, bytes memory data) private { require(address(token).isContract(), "SafeERC20: call to non-contract"); (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } contract CanReclaimTokens is Claimable { using SafeERC20 for ERC20; mapping(address => bool) private recoverableTokensBlacklist; function initialize(address _nextOwner) public initializer { Claimable.initialize(_nextOwner); } function blacklistRecoverableToken(address _token) public onlyOwner { recoverableTokensBlacklist[_token] = true; } function recoverTokens(address _token) external onlyOwner { require( !recoverableTokensBlacklist[_token], "CanReclaimTokens: token is not recoverable" ); if (_token == address(0x0)) { msg.sender.transfer(address(this).balance); } else { ERC20(_token).safeTransfer( msg.sender, ERC20(_token).balanceOf(address(this)) ); } } } contract ERC20WithRate is Initializable, Ownable, ERC20 { using SafeMath for uint256; uint256 public constant _rateScale = 1e18; uint256 internal _rate; event LogRateChanged(uint256 indexed _rate); function initialize(address _nextOwner, uint256 _initialRate) public initializer { Ownable.initialize(_nextOwner); _setRate(_initialRate); } function setExchangeRate(uint256 _nextRate) public onlyOwner { _setRate(_nextRate); } function exchangeRateCurrent() public view returns (uint256) { require(_rate != 0, "ERC20WithRate: rate has not been initialized"); return _rate; } function _setRate(uint256 _nextRate) internal { require(_nextRate > 0, "ERC20WithRate: rate must be greater than zero"); _rate = _nextRate; } function balanceOfUnderlying(address _account) public view returns (uint256) { return toUnderlying(balanceOf(_account)); } function toUnderlying(uint256 _amount) public view returns (uint256) { return _amount.mul(_rate).div(_rateScale); } function fromUnderlying(uint256 _amountUnderlying) public view returns (uint256) { return _amountUnderlying.mul(_rateScale).div(_rate); } } contract ERC20WithPermit is Initializable, ERC20, ERC20Detailed { using SafeMath for uint256; mapping(address => uint256) public nonces; string public version; bytes32 public DOMAIN_SEPARATOR; bytes32 public constant PERMIT_TYPEHASH = 0xea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb; function initialize( uint256 _chainId, string memory _version, string memory _name, string memory _symbol, uint8 _decimals ) public initializer { ERC20Detailed.initialize(_name, _symbol, _decimals); version = _version; DOMAIN_SEPARATOR = keccak256( abi.encode( keccak256( "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" ), keccak256(bytes(name())), keccak256(bytes(version)), _chainId, address(this) ) ); } function permit( address holder, address spender, uint256 nonce, uint256 expiry, bool allowed, uint8 v, bytes32 r, bytes32 s ) external { bytes32 digest = keccak256( abi.encodePacked( "\x19\x01", DOMAIN_SEPARATOR, keccak256( abi.encode( PERMIT_TYPEHASH, holder, spender, nonce, expiry, allowed ) ) ) ); require(holder != address(0), "ERC20WithRate: address must not be 0x0"); require( holder == ecrecover(digest, v, r, s), "ERC20WithRate: invalid signature" ); require( expiry == 0 || now <= expiry, "ERC20WithRate: permit has expired" ); require(nonce == nonces[holder]++, "ERC20WithRate: invalid nonce"); uint256 amount = allowed ? uint256(-1) : 0; _approve(holder, spender, amount); } } contract RenERC20LogicV1 is Initializable, ERC20, ERC20Detailed, ERC20WithRate, ERC20WithPermit, Claimable, CanReclaimTokens { function initialize( uint256 _chainId, address _nextOwner, uint256 _initialRate, string memory _version, string memory _name, string memory _symbol, uint8 _decimals ) public initializer { ERC20Detailed.initialize(_name, _symbol, _decimals); ERC20WithRate.initialize(_nextOwner, _initialRate); ERC20WithPermit.initialize( _chainId, _version, _name, _symbol, _decimals ); Claimable.initialize(_nextOwner); CanReclaimTokens.initialize(_nextOwner); } function mint(address _to, uint256 _amount) public onlyOwner { _mint(_to, _amount); } function burn(address _from, uint256 _amount) public onlyOwner { _burn(_from, _amount); } function transfer(address recipient, uint256 amount) public returns (bool) { require( recipient != address(this), "RenERC20: can't transfer to token address" ); return super.transfer(recipient, amount); } function transferFrom( address sender, address recipient, uint256 amount ) public returns (bool) { require( recipient != address(this), "RenERC20: can't transfer to token address" ); return super.transferFrom(sender, recipient, amount); } } contract RenERC20Proxy is InitializableAdminUpgradeabilityProxy { }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":"uint256","name":"_rate","type":"uint256"}],"name":"LogRateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_rateScale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"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":true,"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOfUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"blacklistRecoverableToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","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":[],"name":"exchangeRateCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_amountUnderlying","type":"uint256"}],"name":"fromUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":false,"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_chainId","type":"uint256"},{"internalType":"address","name":"_nextOwner","type":"address"},{"internalType":"uint256","name":"_initialRate","type":"uint256"},{"internalType":"string","name":"_version","type":"string"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_chainId","type":"uint256"},{"internalType":"string","name":"_version","type":"string"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_nextOwner","type":"address"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_nextOwner","type":"address"},{"internalType":"uint256","name":"_initialRate","type":"uint256"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"bool","name":"allowed","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"recoverTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_nextRate","type":"uint256"}],"name":"setExchangeRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"toUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052612c4f806100136000396000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c8063715018a611610130578063a9059cbb116100b8578063dd62ed3e1161007c578063dd62ed3e14610ad6578063e30c397814610b04578063eb438fc214610b0c578063f2fde38b14610b29578063f65d901c14610b4f57610227565b8063a9059cbb14610a33578063bd6d894d14610a5f578063c4d66de814610a67578063cd6dc68714610a8d578063db068e0e14610ab957610227565b80638fcbaf0c116100ff5780638fcbaf0c1461095c57806395d89b41146109b65780639dc29fac146109be578063a173b2f6146109ea578063a457c2d714610a0757610227565b8063715018a6146109025780637ecebe001461090a5780638da5cb5b146109305780638f32d59b1461095457610227565b80633644e515116101b35780634e71e0c8116101825780634e71e0c81461054357806353531e391461054b57806354fd4d501461071a5780635dca34521461072257806370a08231146108dc57610227565b80633644e515146104bd57806339509351146104c55780633af9e669146104f157806340c10f191461051757610227565b806318160ddd116101fa57806318160ddd1461043f57806323b872dd1461045957806325e27ed81461048f57806330adf81f14610497578063313ce5671461049f57610227565b806306fdde031461022c578063095ea7b3146102a957806316114acd146102e95780631624f6c614610311575b600080fd5b610234610b75565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561026e578181015183820152602001610256565b50505050905090810190601f16801561029b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102d5600480360360408110156102bf57600080fd5b506001600160a01b038135169060200135610c0c565b604080519115158252519081900360200190f35b61030f600480360360208110156102ff57600080fd5b50356001600160a01b0316610c2a565b005b61030f6004803603606081101561032757600080fd5b810190602081018135600160201b81111561034157600080fd5b82018360208201111561035357600080fd5b803590602001918460018302840111600160201b8311171561037457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156103c657600080fd5b8201836020820111156103d857600080fd5b803590602001918460018302840111600160201b831117156103f957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050903560ff169150610d9b9050565b610447610e77565b60408051918252519081900360200190f35b6102d56004803603606081101561046f57600080fd5b506001600160a01b03813581169160208101359091169060400135610e7d565b610447610eda565b610447610ee6565b6104a7610f0a565b6040805160ff9092168252519081900360200190f35b610447610f13565b6102d5600480360360408110156104db57600080fd5b506001600160a01b038135169060200135610f19565b6104476004803603602081101561050757600080fd5b50356001600160a01b0316610f72565b61030f6004803603604081101561052d57600080fd5b506001600160a01b038135169060200135610f85565b61030f610fda565b61030f600480360360e081101561056157600080fd5b8135916001600160a01b036020820135169160408201359190810190608081016060820135600160201b81111561059757600080fd5b8201836020820111156105a957600080fd5b803590602001918460018302840111600160201b831117156105ca57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561061c57600080fd5b82018360208201111561062e57600080fd5b803590602001918460018302840111600160201b8311171561064f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156106a157600080fd5b8201836020820111156106b357600080fd5b803590602001918460018302840111600160201b831117156106d457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050903560ff16915061105a9050565b610234611137565b61030f600480360360a081101561073857600080fd5b81359190810190604081016020820135600160201b81111561075957600080fd5b82018360208201111561076b57600080fd5b803590602001918460018302840111600160201b8311171561078c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156107de57600080fd5b8201836020820111156107f057600080fd5b803590602001918460018302840111600160201b8311171561081157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561086357600080fd5b82018360208201111561087557600080fd5b803590602001918460018302840111600160201b8311171561089657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050903560ff1691506111c59050565b610447600480360360208110156108f257600080fd5b50356001600160a01b0316611360565b61030f61137b565b6104476004803603602081101561092057600080fd5b50356001600160a01b031661140c565b61093861141e565b604080516001600160a01b039092168252519081900360200190f35b6102d561142d565b61030f600480360361010081101561097357600080fd5b506001600160a01b038135811691602081013590911690604081013590606081013590608081013515159060ff60a0820135169060c08101359060e00135611453565b6102346116f2565b61030f600480360360408110156109d457600080fd5b506001600160a01b038135169060200135611753565b61044760048036036020811015610a0057600080fd5b50356117a4565b6102d560048036036040811015610a1d57600080fd5b506001600160a01b0381351690602001356117d2565b6102d560048036036040811015610a4957600080fd5b506001600160a01b038135169060200135611840565b61044761189b565b61030f60048036036020811015610a7d57600080fd5b50356001600160a01b03166118e6565b61030f60048036036040811015610aa357600080fd5b506001600160a01b038135169060200135611991565b61030f60048036036020811015610acf57600080fd5b5035611a47565b61044760048036036040811015610aec57600080fd5b506001600160a01b0381358116916020013516611a97565b610938611ac2565b61044760048036036020811015610b2257600080fd5b5035611ad1565b61030f60048036036020811015610b3f57600080fd5b50356001600160a01b0316611af4565b61030f60048036036020811015610b6557600080fd5b50356001600160a01b0316611be5565b609b8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610c015780601f10610bd657610100808354040283529160200191610c01565b820191906000526020600020905b815481529060010190602001808311610be457829003601f168201915b505050505090505b90565b6000610c20610c19611c50565b8484611c54565b5060015b92915050565b610c3261142d565b610c71576040805162461bcd60e51b81526020600482018190526024820152600080516020612a6e833981519152604482015290519081900360640190fd5b6001600160a01b038116600090815260d5602052604090205460ff1615610cc95760405162461bcd60e51b815260040180806020018281038252602a815260200180612936602a913960400191505060405180910390fd5b6001600160a01b038116610d095760405133904780156108fc02916000818181858888f19350505050158015610d03573d6000803e3d6000fd5b50610d98565b604080516370a0823160e01b81523060048201529051610d989133916001600160a01b038516916370a08231916024808301926020929190829003018186803b158015610d5557600080fd5b505afa158015610d69573d6000803e3d6000fd5b505050506040513d6020811015610d7f57600080fd5b50516001600160a01b038416919063ffffffff611d4016565b50565b600054610100900460ff1680610db45750610db4611d92565b80610dc2575060005460ff16155b610dfd5760405162461bcd60e51b815260040180806020018281038252602e815260200180612a8e602e913960400191505060405180910390fd5b600054610100900460ff16158015610e28576000805460ff1961ff0019909116610100171660011790555b8351610e3b90609b906020870190612810565b508251610e4f90609c906020860190612810565b50609d805460ff191660ff84161790558015610e71576000805461ff00191690555b50505050565b60685490565b60006001600160a01b038316301415610ec75760405162461bcd60e51b8152600401808060200182810382526029815260200180612b2c6029913960400191505060405180910390fd5b610ed2848484611d98565b949350505050565b670de0b6b3a764000081565b7fea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb81565b609d5460ff1690565b60d35481565b6000610c20610f26611c50565b84610f6d8560676000610f37611c50565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff611e2016565b611c54565b6000610c24610f8083611360565b611ad1565b610f8d61142d565b610fcc576040805162461bcd60e51b81526020600482018190526024820152600080516020612a6e833981519152604482015290519081900360640190fd5b610fd68282611e7a565b5050565b60d4546001600160a01b0316610fee611c50565b6001600160a01b0316146110335760405162461bcd60e51b815260040180806020018281038252602a815260200180612add602a913960400191505060405180910390fd5b60d454611048906001600160a01b0316611f6c565b60d480546001600160a01b0319169055565b600054610100900460ff16806110735750611073611d92565b80611081575060005460ff16155b6110bc5760405162461bcd60e51b815260040180806020018281038252602e815260200180612a8e602e913960400191505060405180910390fd5b600054610100900460ff161580156110e7576000805460ff1961ff0019909116610100171660011790555b6110f2848484610d9b565b6110fc8787611991565b61110988868686866111c5565b6111128761200d565b61111b876118e6565b801561112d576000805461ff00191690555b5050505050505050565b60d2805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156111bd5780601f10611192576101008083540402835291602001916111bd565b820191906000526020600020905b8154815290600101906020018083116111a057829003601f168201915b505050505081565b600054610100900460ff16806111de57506111de611d92565b806111ec575060005460ff16155b6112275760405162461bcd60e51b815260040180806020018281038252602e815260200180612a8e602e913960400191505060405180910390fd5b600054610100900460ff16158015611252576000805460ff1961ff0019909116610100171660011790555b61125d848484610d9b565b84516112709060d2906020880190612810565b506040518060526129d3823960520190506040518091039020611291610b75565b8051906020012060d260405180828054600181600116156101000203166002900480156112f55780601f106112d35761010080835404028352918201916112f5565b820191906000526020600020905b8154815290600101906020018083116112e1575b505060408051918290038220602080840197909752828201959095526060820194909452608081018b90523060a0808301919091528451808303909101815260c09091019093525050805191012060d3558015611358576000805461ff00191690555b505050505050565b6001600160a01b031660009081526066602052604090205490565b61138361142d565b6113c2576040805162461bcd60e51b81526020600482018190526024820152600080516020612a6e833981519152604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319169055565b60d16020526000908152604090205481565b6033546001600160a01b031690565b6033546000906001600160a01b0316611444611c50565b6001600160a01b031614905090565b60d354604080517fea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb6020808301919091526001600160a01b03808d16838501819052908c166060840152608083018b905260a083018a905288151560c0808501919091528451808503909101815260e08401855280519083012061190160f01b610100850152610102840195909552610122808401959095528351808403909501855261014290920190925282519290910191909120906115455760405162461bcd60e51b8152600401808060200182810382526026815260200180612bf56026913960400191505060405180910390fd5b6040805160008152602080820180845284905260ff8716828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa15801561159c573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b03161461160b576040805162461bcd60e51b815260206004820181905260248201527f455243323057697468526174653a20696e76616c6964207369676e6174757265604482015290519081900360640190fd5b8515806116185750854211155b6116535760405162461bcd60e51b81526004018080602001828103825260218152602001806129b26021913960400191505060405180910390fd5b6001600160a01b038916600090815260d16020526040902080546001810190915587146116c7576040805162461bcd60e51b815260206004820152601c60248201527f455243323057697468526174653a20696e76616c6964206e6f6e636500000000604482015290519081900360640190fd5b6000856116d55760006116d9565b6000195b90506116e68a8a83611c54565b50505050505050505050565b609c8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610c015780601f10610bd657610100808354040283529160200191610c01565b61175b61142d565b61179a576040805162461bcd60e51b81526020600482018190526024820152600080516020612a6e833981519152604482015290519081900360640190fd5b610fd682826120a3565b60d054600090610c24906117c684670de0b6b3a764000063ffffffff61219f16565b9063ffffffff6121f816565b6000610c206117df611c50565b84610f6d85604051806060016040528060258152602001612bd06025913960676000611809611c50565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61223a16565b60006001600160a01b03831630141561188a5760405162461bcd60e51b8152600401808060200182810382526029815260200180612b2c6029913960400191505060405180910390fd5b61189483836122d1565b9392505050565b600060d054600014156118df5760405162461bcd60e51b815260040180806020018281038252602c815260200180612960602c913960400191505060405180910390fd5b5060d05490565b600054610100900460ff16806118ff57506118ff611d92565b8061190d575060005460ff16155b6119485760405162461bcd60e51b815260040180806020018281038252602e815260200180612a8e602e913960400191505060405180910390fd5b600054610100900460ff16158015611973576000805460ff1961ff0019909116610100171660011790555b61197c8261200d565b8015610fd6576000805461ff00191690555050565b600054610100900460ff16806119aa57506119aa611d92565b806119b8575060005460ff16155b6119f35760405162461bcd60e51b815260040180806020018281038252602e815260200180612a8e602e913960400191505060405180910390fd5b600054610100900460ff16158015611a1e576000805460ff1961ff0019909116610100171660011790555b611a27836122e5565b611a30826123d6565b8015611a42576000805461ff00191690555b505050565b611a4f61142d565b611a8e576040805162461bcd60e51b81526020600482018190526024820152600080516020612a6e833981519152604482015290519081900360640190fd5b610d98816123d6565b6001600160a01b03918216600090815260676020908152604080832093909416825291909152205490565b60d4546001600160a01b031681565b6000610c24670de0b6b3a76400006117c660d0548561219f90919063ffffffff16565b611afc61142d565b611b3b576040805162461bcd60e51b81526020600482018190526024820152600080516020612a6e833981519152604482015290519081900360640190fd5b611b4361141e565b6001600160a01b0316816001600160a01b031614158015611b72575060d4546001600160a01b03828116911614155b611bc3576040805162461bcd60e51b815260206004820152601c60248201527f436c61696d61626c653a20696e76616c6964206e6577206f776e657200000000604482015290519081900360640190fd5b60d480546001600160a01b0319166001600160a01b0392909216919091179055565b611bed61142d565b611c2c576040805162461bcd60e51b81526020600482018190526024820152600080516020612a6e833981519152604482015290519081900360640190fd5b6001600160a01b0316600090815260d560205260409020805460ff19166001179055565b3390565b6001600160a01b038316611c995760405162461bcd60e51b8152600401808060200182810382526024815260200180612b556024913960400191505060405180910390fd5b6001600160a01b038216611cde5760405162461bcd60e51b81526004018080602001828103825260228152602001806129146022913960400191505060405180910390fd5b6001600160a01b03808416600081815260676020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611a4290849061241a565b303b1590565b6000611da58484846125d2565b611e1684611db1611c50565b610f6d85604051806060016040528060288152602001612a46602891396001600160a01b038a16600090815260676020526040812090611def611c50565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61223a16565b5060019392505050565b600082820183811015611894576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b038216611ed5576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b606854611ee8908263ffffffff611e2016565b6068556001600160a01b038216600090815260666020526040902054611f14908263ffffffff611e2016565b6001600160a01b03831660008181526066602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b038116611fb15760405162461bcd60e51b81526004018080602001828103825260268152602001806128ee6026913960400191505060405180910390fd5b6033546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff16806120265750612026611d92565b80612034575060005460ff16155b61206f5760405162461bcd60e51b815260040180806020018281038252602e815260200180612a8e602e913960400191505060405180910390fd5b600054610100900460ff1615801561209a576000805460ff1961ff0019909116610100171660011790555b61197c826122e5565b6001600160a01b0382166120e85760405162461bcd60e51b8152600401808060200182810382526021815260200180612abc6021913960400191505060405180910390fd5b61212b816040518060600160405280602281526020016128cc602291396001600160a01b038516600090815260666020526040902054919063ffffffff61223a16565b6001600160a01b038316600090815260666020526040902055606854612157908263ffffffff61273016565b6068556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000826121ae57506000610c24565b828202828482816121bb57fe5b04146118945760405162461bcd60e51b8152600401808060200182810382526021815260200180612a256021913960400191505060405180910390fd5b600061189483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612772565b600081848411156122c95760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561228e578181015183820152602001612276565b50505050905090810190601f1680156122bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000610c206122de611c50565b84846125d2565b600054610100900460ff16806122fe57506122fe611d92565b8061230c575060005460ff16155b6123475760405162461bcd60e51b815260040180806020018281038252602e815260200180612a8e602e913960400191505060405180910390fd5b600054610100900460ff16158015612372576000805460ff1961ff0019909116610100171660011790555b603380546001600160a01b0319166001600160a01b0384811691909117918290556040519116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a38015610fd6576000805461ff00191690555050565b600081116124155760405162461bcd60e51b815260040180806020018281038252602d815260200180612b79602d913960400191505060405180910390fd5b60d055565b61242c826001600160a01b03166127d7565b61247d576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106124bb5780518252601f19909201916020918201910161249c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461251d576040519150601f19603f3d011682016040523d82523d6000602084013e612522565b606091505b509150915081612579576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610e715780806020019051602081101561259557600080fd5b5051610e715760405162461bcd60e51b815260040180806020018281038252602a815260200180612ba6602a913960400191505060405180910390fd5b6001600160a01b0383166126175760405162461bcd60e51b8152600401808060200182810382526025815260200180612b076025913960400191505060405180910390fd5b6001600160a01b03821661265c5760405162461bcd60e51b81526004018080602001828103825260238152602001806128a96023913960400191505060405180910390fd5b61269f8160405180606001604052806026815260200161298c602691396001600160a01b038616600090815260666020526040902054919063ffffffff61223a16565b6001600160a01b0380851660009081526066602052604080822093909355908416815220546126d4908263ffffffff611e2016565b6001600160a01b0380841660008181526066602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600061189483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061223a565b600081836127c15760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561228e578181015183820152602001612276565b5060008385816127cd57fe5b0495945050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610ed2575050151592915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061285157805160ff191683800117855561287e565b8280016001018555821561287e579182015b8281111561287e578251825591602001919060010190612863565b5061288a92915061288e565b5090565b610c0991905b8082111561288a576000815560010161289456fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737343616e5265636c61696d546f6b656e733a20746f6b656e206973206e6f74207265636f76657261626c65455243323057697468526174653a207261746520686173206e6f74206265656e20696e697469616c697a656445524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365455243323057697468526174653a207065726d6974206861732065787069726564454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656445524332303a206275726e2066726f6d20746865207a65726f2061646472657373436c61696d61626c653a2063616c6c6572206973206e6f74207468652070656e64696e67206f776e657245524332303a207472616e736665722066726f6d20746865207a65726f206164647265737352656e45524332303a2063616e2774207472616e7366657220746f20746f6b656e206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373455243323057697468526174653a2072617465206d7573742062652067726561746572207468616e207a65726f5361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f455243323057697468526174653a2061646472657373206d757374206e6f7420626520307830a265627a7a72315820b62f18d6695f24f9a3c854289673baf71b37c07f49f6856cab0966383a8a79ee64736f6c63430005100032
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102275760003560e01c8063715018a611610130578063a9059cbb116100b8578063dd62ed3e1161007c578063dd62ed3e14610ad6578063e30c397814610b04578063eb438fc214610b0c578063f2fde38b14610b29578063f65d901c14610b4f57610227565b8063a9059cbb14610a33578063bd6d894d14610a5f578063c4d66de814610a67578063cd6dc68714610a8d578063db068e0e14610ab957610227565b80638fcbaf0c116100ff5780638fcbaf0c1461095c57806395d89b41146109b65780639dc29fac146109be578063a173b2f6146109ea578063a457c2d714610a0757610227565b8063715018a6146109025780637ecebe001461090a5780638da5cb5b146109305780638f32d59b1461095457610227565b80633644e515116101b35780634e71e0c8116101825780634e71e0c81461054357806353531e391461054b57806354fd4d501461071a5780635dca34521461072257806370a08231146108dc57610227565b80633644e515146104bd57806339509351146104c55780633af9e669146104f157806340c10f191461051757610227565b806318160ddd116101fa57806318160ddd1461043f57806323b872dd1461045957806325e27ed81461048f57806330adf81f14610497578063313ce5671461049f57610227565b806306fdde031461022c578063095ea7b3146102a957806316114acd146102e95780631624f6c614610311575b600080fd5b610234610b75565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561026e578181015183820152602001610256565b50505050905090810190601f16801561029b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102d5600480360360408110156102bf57600080fd5b506001600160a01b038135169060200135610c0c565b604080519115158252519081900360200190f35b61030f600480360360208110156102ff57600080fd5b50356001600160a01b0316610c2a565b005b61030f6004803603606081101561032757600080fd5b810190602081018135600160201b81111561034157600080fd5b82018360208201111561035357600080fd5b803590602001918460018302840111600160201b8311171561037457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156103c657600080fd5b8201836020820111156103d857600080fd5b803590602001918460018302840111600160201b831117156103f957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050903560ff169150610d9b9050565b610447610e77565b60408051918252519081900360200190f35b6102d56004803603606081101561046f57600080fd5b506001600160a01b03813581169160208101359091169060400135610e7d565b610447610eda565b610447610ee6565b6104a7610f0a565b6040805160ff9092168252519081900360200190f35b610447610f13565b6102d5600480360360408110156104db57600080fd5b506001600160a01b038135169060200135610f19565b6104476004803603602081101561050757600080fd5b50356001600160a01b0316610f72565b61030f6004803603604081101561052d57600080fd5b506001600160a01b038135169060200135610f85565b61030f610fda565b61030f600480360360e081101561056157600080fd5b8135916001600160a01b036020820135169160408201359190810190608081016060820135600160201b81111561059757600080fd5b8201836020820111156105a957600080fd5b803590602001918460018302840111600160201b831117156105ca57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561061c57600080fd5b82018360208201111561062e57600080fd5b803590602001918460018302840111600160201b8311171561064f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156106a157600080fd5b8201836020820111156106b357600080fd5b803590602001918460018302840111600160201b831117156106d457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050903560ff16915061105a9050565b610234611137565b61030f600480360360a081101561073857600080fd5b81359190810190604081016020820135600160201b81111561075957600080fd5b82018360208201111561076b57600080fd5b803590602001918460018302840111600160201b8311171561078c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156107de57600080fd5b8201836020820111156107f057600080fd5b803590602001918460018302840111600160201b8311171561081157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561086357600080fd5b82018360208201111561087557600080fd5b803590602001918460018302840111600160201b8311171561089657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050903560ff1691506111c59050565b610447600480360360208110156108f257600080fd5b50356001600160a01b0316611360565b61030f61137b565b6104476004803603602081101561092057600080fd5b50356001600160a01b031661140c565b61093861141e565b604080516001600160a01b039092168252519081900360200190f35b6102d561142d565b61030f600480360361010081101561097357600080fd5b506001600160a01b038135811691602081013590911690604081013590606081013590608081013515159060ff60a0820135169060c08101359060e00135611453565b6102346116f2565b61030f600480360360408110156109d457600080fd5b506001600160a01b038135169060200135611753565b61044760048036036020811015610a0057600080fd5b50356117a4565b6102d560048036036040811015610a1d57600080fd5b506001600160a01b0381351690602001356117d2565b6102d560048036036040811015610a4957600080fd5b506001600160a01b038135169060200135611840565b61044761189b565b61030f60048036036020811015610a7d57600080fd5b50356001600160a01b03166118e6565b61030f60048036036040811015610aa357600080fd5b506001600160a01b038135169060200135611991565b61030f60048036036020811015610acf57600080fd5b5035611a47565b61044760048036036040811015610aec57600080fd5b506001600160a01b0381358116916020013516611a97565b610938611ac2565b61044760048036036020811015610b2257600080fd5b5035611ad1565b61030f60048036036020811015610b3f57600080fd5b50356001600160a01b0316611af4565b61030f60048036036020811015610b6557600080fd5b50356001600160a01b0316611be5565b609b8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610c015780601f10610bd657610100808354040283529160200191610c01565b820191906000526020600020905b815481529060010190602001808311610be457829003601f168201915b505050505090505b90565b6000610c20610c19611c50565b8484611c54565b5060015b92915050565b610c3261142d565b610c71576040805162461bcd60e51b81526020600482018190526024820152600080516020612a6e833981519152604482015290519081900360640190fd5b6001600160a01b038116600090815260d5602052604090205460ff1615610cc95760405162461bcd60e51b815260040180806020018281038252602a815260200180612936602a913960400191505060405180910390fd5b6001600160a01b038116610d095760405133904780156108fc02916000818181858888f19350505050158015610d03573d6000803e3d6000fd5b50610d98565b604080516370a0823160e01b81523060048201529051610d989133916001600160a01b038516916370a08231916024808301926020929190829003018186803b158015610d5557600080fd5b505afa158015610d69573d6000803e3d6000fd5b505050506040513d6020811015610d7f57600080fd5b50516001600160a01b038416919063ffffffff611d4016565b50565b600054610100900460ff1680610db45750610db4611d92565b80610dc2575060005460ff16155b610dfd5760405162461bcd60e51b815260040180806020018281038252602e815260200180612a8e602e913960400191505060405180910390fd5b600054610100900460ff16158015610e28576000805460ff1961ff0019909116610100171660011790555b8351610e3b90609b906020870190612810565b508251610e4f90609c906020860190612810565b50609d805460ff191660ff84161790558015610e71576000805461ff00191690555b50505050565b60685490565b60006001600160a01b038316301415610ec75760405162461bcd60e51b8152600401808060200182810382526029815260200180612b2c6029913960400191505060405180910390fd5b610ed2848484611d98565b949350505050565b670de0b6b3a764000081565b7fea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb81565b609d5460ff1690565b60d35481565b6000610c20610f26611c50565b84610f6d8560676000610f37611c50565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff611e2016565b611c54565b6000610c24610f8083611360565b611ad1565b610f8d61142d565b610fcc576040805162461bcd60e51b81526020600482018190526024820152600080516020612a6e833981519152604482015290519081900360640190fd5b610fd68282611e7a565b5050565b60d4546001600160a01b0316610fee611c50565b6001600160a01b0316146110335760405162461bcd60e51b815260040180806020018281038252602a815260200180612add602a913960400191505060405180910390fd5b60d454611048906001600160a01b0316611f6c565b60d480546001600160a01b0319169055565b600054610100900460ff16806110735750611073611d92565b80611081575060005460ff16155b6110bc5760405162461bcd60e51b815260040180806020018281038252602e815260200180612a8e602e913960400191505060405180910390fd5b600054610100900460ff161580156110e7576000805460ff1961ff0019909116610100171660011790555b6110f2848484610d9b565b6110fc8787611991565b61110988868686866111c5565b6111128761200d565b61111b876118e6565b801561112d576000805461ff00191690555b5050505050505050565b60d2805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156111bd5780601f10611192576101008083540402835291602001916111bd565b820191906000526020600020905b8154815290600101906020018083116111a057829003601f168201915b505050505081565b600054610100900460ff16806111de57506111de611d92565b806111ec575060005460ff16155b6112275760405162461bcd60e51b815260040180806020018281038252602e815260200180612a8e602e913960400191505060405180910390fd5b600054610100900460ff16158015611252576000805460ff1961ff0019909116610100171660011790555b61125d848484610d9b565b84516112709060d2906020880190612810565b506040518060526129d3823960520190506040518091039020611291610b75565b8051906020012060d260405180828054600181600116156101000203166002900480156112f55780601f106112d35761010080835404028352918201916112f5565b820191906000526020600020905b8154815290600101906020018083116112e1575b505060408051918290038220602080840197909752828201959095526060820194909452608081018b90523060a0808301919091528451808303909101815260c09091019093525050805191012060d3558015611358576000805461ff00191690555b505050505050565b6001600160a01b031660009081526066602052604090205490565b61138361142d565b6113c2576040805162461bcd60e51b81526020600482018190526024820152600080516020612a6e833981519152604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319169055565b60d16020526000908152604090205481565b6033546001600160a01b031690565b6033546000906001600160a01b0316611444611c50565b6001600160a01b031614905090565b60d354604080517fea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb6020808301919091526001600160a01b03808d16838501819052908c166060840152608083018b905260a083018a905288151560c0808501919091528451808503909101815260e08401855280519083012061190160f01b610100850152610102840195909552610122808401959095528351808403909501855261014290920190925282519290910191909120906115455760405162461bcd60e51b8152600401808060200182810382526026815260200180612bf56026913960400191505060405180910390fd5b6040805160008152602080820180845284905260ff8716828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa15801561159c573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b03161461160b576040805162461bcd60e51b815260206004820181905260248201527f455243323057697468526174653a20696e76616c6964207369676e6174757265604482015290519081900360640190fd5b8515806116185750854211155b6116535760405162461bcd60e51b81526004018080602001828103825260218152602001806129b26021913960400191505060405180910390fd5b6001600160a01b038916600090815260d16020526040902080546001810190915587146116c7576040805162461bcd60e51b815260206004820152601c60248201527f455243323057697468526174653a20696e76616c6964206e6f6e636500000000604482015290519081900360640190fd5b6000856116d55760006116d9565b6000195b90506116e68a8a83611c54565b50505050505050505050565b609c8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610c015780601f10610bd657610100808354040283529160200191610c01565b61175b61142d565b61179a576040805162461bcd60e51b81526020600482018190526024820152600080516020612a6e833981519152604482015290519081900360640190fd5b610fd682826120a3565b60d054600090610c24906117c684670de0b6b3a764000063ffffffff61219f16565b9063ffffffff6121f816565b6000610c206117df611c50565b84610f6d85604051806060016040528060258152602001612bd06025913960676000611809611c50565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61223a16565b60006001600160a01b03831630141561188a5760405162461bcd60e51b8152600401808060200182810382526029815260200180612b2c6029913960400191505060405180910390fd5b61189483836122d1565b9392505050565b600060d054600014156118df5760405162461bcd60e51b815260040180806020018281038252602c815260200180612960602c913960400191505060405180910390fd5b5060d05490565b600054610100900460ff16806118ff57506118ff611d92565b8061190d575060005460ff16155b6119485760405162461bcd60e51b815260040180806020018281038252602e815260200180612a8e602e913960400191505060405180910390fd5b600054610100900460ff16158015611973576000805460ff1961ff0019909116610100171660011790555b61197c8261200d565b8015610fd6576000805461ff00191690555050565b600054610100900460ff16806119aa57506119aa611d92565b806119b8575060005460ff16155b6119f35760405162461bcd60e51b815260040180806020018281038252602e815260200180612a8e602e913960400191505060405180910390fd5b600054610100900460ff16158015611a1e576000805460ff1961ff0019909116610100171660011790555b611a27836122e5565b611a30826123d6565b8015611a42576000805461ff00191690555b505050565b611a4f61142d565b611a8e576040805162461bcd60e51b81526020600482018190526024820152600080516020612a6e833981519152604482015290519081900360640190fd5b610d98816123d6565b6001600160a01b03918216600090815260676020908152604080832093909416825291909152205490565b60d4546001600160a01b031681565b6000610c24670de0b6b3a76400006117c660d0548561219f90919063ffffffff16565b611afc61142d565b611b3b576040805162461bcd60e51b81526020600482018190526024820152600080516020612a6e833981519152604482015290519081900360640190fd5b611b4361141e565b6001600160a01b0316816001600160a01b031614158015611b72575060d4546001600160a01b03828116911614155b611bc3576040805162461bcd60e51b815260206004820152601c60248201527f436c61696d61626c653a20696e76616c6964206e6577206f776e657200000000604482015290519081900360640190fd5b60d480546001600160a01b0319166001600160a01b0392909216919091179055565b611bed61142d565b611c2c576040805162461bcd60e51b81526020600482018190526024820152600080516020612a6e833981519152604482015290519081900360640190fd5b6001600160a01b0316600090815260d560205260409020805460ff19166001179055565b3390565b6001600160a01b038316611c995760405162461bcd60e51b8152600401808060200182810382526024815260200180612b556024913960400191505060405180910390fd5b6001600160a01b038216611cde5760405162461bcd60e51b81526004018080602001828103825260228152602001806129146022913960400191505060405180910390fd5b6001600160a01b03808416600081815260676020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611a4290849061241a565b303b1590565b6000611da58484846125d2565b611e1684611db1611c50565b610f6d85604051806060016040528060288152602001612a46602891396001600160a01b038a16600090815260676020526040812090611def611c50565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61223a16565b5060019392505050565b600082820183811015611894576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b038216611ed5576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b606854611ee8908263ffffffff611e2016565b6068556001600160a01b038216600090815260666020526040902054611f14908263ffffffff611e2016565b6001600160a01b03831660008181526066602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b038116611fb15760405162461bcd60e51b81526004018080602001828103825260268152602001806128ee6026913960400191505060405180910390fd5b6033546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff16806120265750612026611d92565b80612034575060005460ff16155b61206f5760405162461bcd60e51b815260040180806020018281038252602e815260200180612a8e602e913960400191505060405180910390fd5b600054610100900460ff1615801561209a576000805460ff1961ff0019909116610100171660011790555b61197c826122e5565b6001600160a01b0382166120e85760405162461bcd60e51b8152600401808060200182810382526021815260200180612abc6021913960400191505060405180910390fd5b61212b816040518060600160405280602281526020016128cc602291396001600160a01b038516600090815260666020526040902054919063ffffffff61223a16565b6001600160a01b038316600090815260666020526040902055606854612157908263ffffffff61273016565b6068556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000826121ae57506000610c24565b828202828482816121bb57fe5b04146118945760405162461bcd60e51b8152600401808060200182810382526021815260200180612a256021913960400191505060405180910390fd5b600061189483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612772565b600081848411156122c95760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561228e578181015183820152602001612276565b50505050905090810190601f1680156122bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000610c206122de611c50565b84846125d2565b600054610100900460ff16806122fe57506122fe611d92565b8061230c575060005460ff16155b6123475760405162461bcd60e51b815260040180806020018281038252602e815260200180612a8e602e913960400191505060405180910390fd5b600054610100900460ff16158015612372576000805460ff1961ff0019909116610100171660011790555b603380546001600160a01b0319166001600160a01b0384811691909117918290556040519116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a38015610fd6576000805461ff00191690555050565b600081116124155760405162461bcd60e51b815260040180806020018281038252602d815260200180612b79602d913960400191505060405180910390fd5b60d055565b61242c826001600160a01b03166127d7565b61247d576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106124bb5780518252601f19909201916020918201910161249c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461251d576040519150601f19603f3d011682016040523d82523d6000602084013e612522565b606091505b509150915081612579576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610e715780806020019051602081101561259557600080fd5b5051610e715760405162461bcd60e51b815260040180806020018281038252602a815260200180612ba6602a913960400191505060405180910390fd5b6001600160a01b0383166126175760405162461bcd60e51b8152600401808060200182810382526025815260200180612b076025913960400191505060405180910390fd5b6001600160a01b03821661265c5760405162461bcd60e51b81526004018080602001828103825260238152602001806128a96023913960400191505060405180910390fd5b61269f8160405180606001604052806026815260200161298c602691396001600160a01b038616600090815260666020526040902054919063ffffffff61223a16565b6001600160a01b0380851660009081526066602052604080822093909355908416815220546126d4908263ffffffff611e2016565b6001600160a01b0380841660008181526066602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600061189483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061223a565b600081836127c15760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561228e578181015183820152602001612276565b5060008385816127cd57fe5b0495945050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610ed2575050151592915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061285157805160ff191683800117855561287e565b8280016001018555821561287e579182015b8281111561287e578251825591602001919060010190612863565b5061288a92915061288e565b5090565b610c0991905b8082111561288a576000815560010161289456fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737343616e5265636c61696d546f6b656e733a20746f6b656e206973206e6f74207265636f76657261626c65455243323057697468526174653a207261746520686173206e6f74206265656e20696e697469616c697a656445524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365455243323057697468526174653a207065726d6974206861732065787069726564454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656445524332303a206275726e2066726f6d20746865207a65726f2061646472657373436c61696d61626c653a2063616c6c6572206973206e6f74207468652070656e64696e67206f776e657245524332303a207472616e736665722066726f6d20746865207a65726f206164647265737352656e45524332303a2063616e2774207472616e7366657220746f20746f6b656e206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373455243323057697468526174653a2072617465206d7573742062652067726561746572207468616e207a65726f5361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f455243323057697468526174653a2061646472657373206d757374206e6f7420626520307830a265627a7a72315820b62f18d6695f24f9a3c854289673baf71b37c07f49f6856cab0966383a8a79ee64736f6c63430005100032
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.